@sapui5/sap.fe.core 1.124.2 → 1.126.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 +5 -1
- package/src/sap/fe/core/ActionRuntime.js +2 -2
- package/src/sap/fe/core/ActionRuntime.ts +4 -4
- package/src/sap/fe/core/AppComponent.js +2 -2
- package/src/sap/fe/core/AppComponent.ts +1 -1
- package/src/sap/fe/core/AppStateHandler.js +2 -2
- package/src/sap/fe/core/AppStateHandler.ts +1 -1
- package/src/sap/fe/core/BaseController.js +2 -2
- package/src/sap/fe/core/BaseController.ts +1 -1
- package/src/sap/fe/core/CommonUtils.js +3 -3
- package/src/sap/fe/core/CommonUtils.ts +12 -15
- package/src/sap/fe/core/ExtensionAPI.js +2 -2
- package/src/sap/fe/core/ExtensionAPI.ts +4 -3
- package/src/sap/fe/core/PageController.js +2 -2
- package/src/sap/fe/core/PageController.ts +1 -1
- package/src/sap/fe/core/ResourceModel.js +2 -2
- package/src/sap/fe/core/ResourceModel.ts +1 -1
- package/src/sap/fe/core/ReuseComponent.js +172 -0
- package/src/sap/fe/core/ReuseComponent.ts +165 -0
- package/src/sap/fe/core/TemplateComponent.js +2 -2
- package/src/sap/fe/core/TemplateComponent.ts +5 -1
- package/src/sap/fe/core/TemplateModel.js +2 -2
- package/src/sap/fe/core/TemplateModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +92 -6
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +90 -10
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +30 -3
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +28 -4
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +10 -16
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +19 -16
- package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.js +3 -3
- package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.ts +5 -5
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +2 -2
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +1 -1
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +17 -5
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +14 -6
- package/src/sap/fe/core/controllerextensions/ContextSharing.js +2 -2
- package/src/sap/fe/core/controllerextensions/ContextSharing.ts +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js +57 -43
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +61 -46
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +2 -2
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +8 -11
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +8 -16
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +10 -7
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +5 -5
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +22 -18
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +28 -23
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +4 -4
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +4 -1
- package/src/sap/fe/core/controllerextensions/PageReady.js +21 -15
- package/src/sap/fe/core/controllerextensions/PageReady.ts +29 -20
- package/src/sap/fe/core/controllerextensions/Paginator.js +2 -2
- package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.js +12 -6
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +15 -1
- package/src/sap/fe/core/controllerextensions/Recommendations.js +26 -8
- package/src/sap/fe/core/controllerextensions/Recommendations.ts +29 -3
- package/src/sap/fe/core/controllerextensions/Routing.js +5 -7
- package/src/sap/fe/core/controllerextensions/Routing.ts +4 -4
- package/src/sap/fe/core/controllerextensions/Share.js +4 -4
- package/src/sap/fe/core/controllerextensions/Share.ts +10 -6
- package/src/sap/fe/core/controllerextensions/SideEffects.js +20 -5
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +22 -2
- package/src/sap/fe/core/controllerextensions/Telemetry.js +2 -2
- package/src/sap/fe/core/controllerextensions/Telemetry.ts +1 -1
- package/src/sap/fe/core/controllerextensions/ViewState.js +79 -81
- package/src/sap/fe/core/controllerextensions/ViewState.ts +117 -105
- package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.js +3 -3
- package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.ts +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +2 -2
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +17 -8
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +8 -2
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +10 -9
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +15 -10
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +2 -2
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +130 -158
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +240 -275
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +2 -2
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +1 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +46 -28
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +60 -32
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +2 -2
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +1 -1
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.js +2 -2
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.ts +27 -3
- package/src/sap/fe/core/controls/CommandExecution.js +2 -2
- package/src/sap/fe/core/controls/CommandExecution.ts +2 -2
- package/src/sap/fe/core/controls/ComponentLoader.js +3 -3
- package/src/sap/fe/core/controls/ComponentLoader.ts +2 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +3 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +2 -2
- package/src/sap/fe/core/controls/EventDelegateHook.js +2 -2
- package/src/sap/fe/core/controls/EventDelegateHook.ts +2 -2
- package/src/sap/fe/core/controls/FormElementWrapper.js +51 -6
- package/src/sap/fe/core/controls/FormElementWrapper.ts +43 -2
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +3 -3
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +3 -3
- package/src/sap/fe/core/converters/ConverterContext.js +4 -2
- package/src/sap/fe/core/converters/ConverterContext.ts +5 -2
- package/src/sap/fe/core/converters/ManifestSettings.js +8 -2
- package/src/sap/fe/core/converters/ManifestSettings.ts +25 -3
- package/src/sap/fe/core/converters/ManifestWrapper.js +12 -3
- package/src/sap/fe/core/converters/ManifestWrapper.ts +11 -1
- package/src/sap/fe/core/converters/MetaModelConverter.js +7 -6
- package/src/sap/fe/core/converters/MetaModelConverter.ts +6 -2
- package/src/sap/fe/core/converters/annotations/DataField.js +56 -16
- package/src/sap/fe/core/converters/annotations/DataField.ts +74 -25
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +19 -18
- package/src/sap/fe/core/converters/controls/Common/Action.js +5 -5
- package/src/sap/fe/core/converters/controls/Common/Action.ts +14 -14
- package/src/sap/fe/core/converters/controls/Common/Chart.js +40 -7
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +56 -20
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +8 -11
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +23 -27
- package/src/sap/fe/core/converters/controls/Common/Form.js +10 -3
- package/src/sap/fe/core/converters/controls/Common/Form.ts +13 -4
- package/src/sap/fe/core/converters/controls/Common/KPI.js +3 -2
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +6 -2
- package/src/sap/fe/core/converters/controls/Common/Table.js +137 -48
- package/src/sap/fe/core/converters/controls/Common/Table.ts +174 -52
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +73 -21
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +91 -20
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +4 -4
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +2 -2
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +2 -2
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +2 -2
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +3 -3
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +17 -16
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +18 -17
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +2 -2
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +9 -9
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +12 -12
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +13 -7
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +12 -5
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +9 -73
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +4 -74
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +5 -10
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +3 -12
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +4 -7
- package/src/sap/fe/core/formatters/CriticalityFormatter.ts +3 -3
- package/src/sap/fe/core/formatters/FiscalFormat.js +5 -3
- package/src/sap/fe/core/formatters/FiscalFormat.ts +4 -2
- package/src/sap/fe/core/formatters/StandardFormatter.js +2 -2
- package/src/sap/fe/core/formatters/StandardFormatter.ts +3 -3
- package/src/sap/fe/core/fpm/Component.js +3 -3
- package/src/sap/fe/core/fpm/Component.ts +3 -3
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.js +2 -2
- package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.ts +1 -1
- package/src/sap/fe/core/helpers/BindingHelper.js +2 -2
- package/src/sap/fe/core/helpers/BindingHelper.ts +2 -2
- package/src/sap/fe/core/helpers/BindingToolkitEvaluator.js +2 -2
- package/src/sap/fe/core/helpers/BindingToolkitEvaluator.ts +2 -2
- package/src/sap/fe/core/helpers/DeleteHelper.js +7 -4
- package/src/sap/fe/core/helpers/DeleteHelper.ts +9 -3
- package/src/sap/fe/core/helpers/MetaModelFunction.js +5 -5
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +2 -2
- package/src/sap/fe/core/helpers/MetaPath.js +9 -3
- package/src/sap/fe/core/helpers/MetaPath.ts +8 -2
- package/src/sap/fe/core/helpers/ModelHelper.js +149 -3
- package/src/sap/fe/core/helpers/ModelHelper.ts +202 -6
- package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +3 -3
- package/src/sap/fe/core/helpers/StandardRecommendationHelper.ts +2 -2
- package/src/sap/fe/core/helpers/TitleHelper.js +4 -4
- package/src/sap/fe/core/helpers/TitleHelper.ts +4 -4
- package/src/sap/fe/core/library.js +4 -4
- package/src/sap/fe/core/library.ts +2 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +11 -3
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +10 -2
- package/src/sap/fe/core/messagebundle.properties +8 -57
- package/src/sap/fe/core/messagebundle_ar.properties +2 -0
- package/src/sap/fe/core/messagebundle_bg.properties +2 -0
- package/src/sap/fe/core/messagebundle_ca.properties +2 -0
- package/src/sap/fe/core/messagebundle_cnr.properties +2 -0
- package/src/sap/fe/core/messagebundle_cs.properties +2 -0
- package/src/sap/fe/core/messagebundle_cy.properties +4 -2
- package/src/sap/fe/core/messagebundle_da.properties +2 -0
- package/src/sap/fe/core/messagebundle_de.properties +2 -0
- package/src/sap/fe/core/messagebundle_el.properties +2 -0
- package/src/sap/fe/core/messagebundle_en.properties +6 -57
- package/src/sap/fe/core/messagebundle_en_GB.properties +2 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +3 -36
- package/src/sap/fe/core/messagebundle_es.properties +2 -0
- package/src/sap/fe/core/messagebundle_es_MX.properties +2 -0
- package/src/sap/fe/core/messagebundle_et.properties +2 -0
- package/src/sap/fe/core/messagebundle_fi.properties +2 -0
- package/src/sap/fe/core/messagebundle_fr.properties +2 -0
- package/src/sap/fe/core/messagebundle_fr_CA.properties +3 -1
- package/src/sap/fe/core/messagebundle_hi.properties +2 -0
- package/src/sap/fe/core/messagebundle_hr.properties +2 -0
- package/src/sap/fe/core/messagebundle_hu.properties +3 -1
- package/src/sap/fe/core/messagebundle_id.properties +2 -0
- package/src/sap/fe/core/messagebundle_it.properties +2 -0
- package/src/sap/fe/core/messagebundle_iw.properties +3 -1
- package/src/sap/fe/core/messagebundle_ja.properties +2 -0
- package/src/sap/fe/core/messagebundle_kk.properties +2 -0
- package/src/sap/fe/core/messagebundle_ko.properties +2 -0
- package/src/sap/fe/core/messagebundle_lt.properties +2 -0
- package/src/sap/fe/core/messagebundle_lv.properties +2 -0
- package/src/sap/fe/core/messagebundle_mk.properties +2 -0
- package/src/sap/fe/core/messagebundle_ms.properties +2 -0
- package/src/sap/fe/core/messagebundle_nl.properties +2 -0
- package/src/sap/fe/core/messagebundle_no.properties +2 -0
- package/src/sap/fe/core/messagebundle_pl.properties +2 -0
- package/src/sap/fe/core/messagebundle_pt.properties +2 -0
- package/src/sap/fe/core/messagebundle_pt_PT.properties +2 -0
- package/src/sap/fe/core/messagebundle_ro.properties +2 -0
- package/src/sap/fe/core/messagebundle_ru.properties +2 -0
- package/src/sap/fe/core/messagebundle_sh.properties +64 -62
- package/src/sap/fe/core/messagebundle_sk.properties +2 -0
- package/src/sap/fe/core/messagebundle_sl.properties +2 -0
- package/src/sap/fe/core/messagebundle_sr.properties +2 -0
- package/src/sap/fe/core/messagebundle_sv.properties +2 -0
- package/src/sap/fe/core/messagebundle_th.properties +2 -0
- package/src/sap/fe/core/messagebundle_tr.properties +2 -0
- package/src/sap/fe/core/messagebundle_uk.properties +3 -1
- package/src/sap/fe/core/messagebundle_vi.properties +2 -0
- package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -0
- package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -0
- package/src/sap/fe/core/operationsHelper.js +3 -3
- package/src/sap/fe/core/operationsHelper.ts +2 -2
- package/src/sap/fe/core/rootView/Fcl.controller.js +3 -3
- package/src/sap/fe/core/rootView/Fcl.controller.ts +2 -2
- package/src/sap/fe/core/rootView/NavContainer.controller.js +2 -2
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.js +114 -92
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +120 -106
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.js +2 -2
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.js +6 -4
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +4 -3
- package/src/sap/fe/core/services/RoutingServiceFactory.js +2 -2
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/ShellServicesFactory.js +1 -1
- package/src/sap/fe/core/services/ShellServicesFactory.ts +12 -2
- package/src/sap/fe/core/services/TelemetryServiceFactory.js +8 -2
- package/src/sap/fe/core/services/TelemetryServiceFactory.ts +7 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +16 -9
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +22 -11
- package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +2 -2
- package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -2
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
- package/src/sap/fe/core/templating/ActionHelper.js +2 -2
- package/src/sap/fe/core/templating/ActionHelper.ts +2 -2
- package/src/sap/fe/core/templating/CommonFormatters.js +2 -2
- package/src/sap/fe/core/templating/CommonFormatters.ts +3 -3
- package/src/sap/fe/core/templating/CriticalityFormatters.js +2 -2
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +2 -2
- package/src/sap/fe/core/templating/DataFieldFormatters.js +4 -4
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +2 -2
- package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -2
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +2 -2
- package/src/sap/fe/core/templating/EntityTypeHelper.js +2 -2
- package/src/sap/fe/core/templating/EntityTypeHelper.ts +2 -2
- package/src/sap/fe/core/templating/FieldControlHelper.js +2 -2
- package/src/sap/fe/core/templating/FieldControlHelper.ts +2 -2
- package/src/sap/fe/core/templating/SemanticObjectHelper.js +2 -2
- package/src/sap/fe/core/templating/SemanticObjectHelper.ts +2 -2
- package/src/sap/fe/core/templating/UIFormatters.js +7 -7
- package/src/sap/fe/core/templating/UIFormatters.ts +6 -6
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +2 -2
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +1 -1
- package/src/sap/fe/core/type/Email.js +2 -2
- package/src/sap/fe/core/type/Email.ts +1 -1
- package/src/sap/fe/core/type/FiscalDate.js +2 -2
- package/src/sap/fe/core/type/FiscalDate.ts +1 -1
- package/src/sap/fe/core/type/InputMask.js +124 -0
- package/src/sap/fe/core/type/InputMask.ts +131 -0
- package/ui5.yaml +19 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js +0 -81
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.ts +0 -117
- package/src/sap/fe/core/helpers/AnnotationEnum.js +0 -33
- package/src/sap/fe/core/helpers/AnnotationEnum.ts +0 -21
- package/src/sap/fe/core/helpers/BindingToolkit.js +0 -1813
- package/src/sap/fe/core/helpers/BindingToolkit.ts +0 -2450
- package/src/sap/fe/core/helpers/ClassSupport.js +0 -584
- package/src/sap/fe/core/helpers/ClassSupport.ts +0 -697
- package/src/sap/fe/core/jsx-runtime/Fragment.js +0 -14
- package/src/sap/fe/core/jsx-runtime/Fragment.ts +0 -3
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js +0 -93
- package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +0 -86
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +0 -177
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +0 -197
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +0 -237
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +0 -246
- package/src/sap/fe/core/jsx-runtime/jsx.js +0 -47
- package/src/sap/fe/core/jsx-runtime/jsx.ts +0 -71
- package/src/sap/fe/core/jsx-runtime/jsxs.js +0 -10
- package/src/sap/fe/core/jsx-runtime/jsxs.ts +0 -3
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +0 -172
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +0 -194
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2024 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/core/converters/controls/Common/Action", "sap/fe/core/converters/controls/ObjectPage/HeaderFacet", "sap/fe/core/converters/helpers/IssueManager", "sap/fe/core/converters/helpers/Key", "sap/fe/core/helpers/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/converters/controls/Common/Action", "sap/fe/core/converters/controls/ObjectPage/HeaderFacet", "sap/fe/core/converters/helpers/IssueManager", "sap/fe/core/converters/helpers/Key", "sap/fe/core/helpers/TypeGuards", "../../ManifestSettings", "../../annotations/DataField", "../../helpers/ConfigurableObject", "../../helpers/ID", "../../objectPage/FormMenuActions", "../Common/DataVisualization", "../Common/Form"], function (Log, BindingToolkit, Action, HeaderFacet, IssueManager, Key, TypeGuards, ManifestSettings, DataField, ConfigurableObject, ID, FormMenuActions, DataVisualization, Form) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
@@ -22,19 +22,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/controls/Common/Action",
|
|
|
22
22
|
var isActionWithDialog = DataField.isActionWithDialog;
|
|
23
23
|
var ActionType = ManifestSettings.ActionType;
|
|
24
24
|
var isPathAnnotationExpression = TypeGuards.isPathAnnotationExpression;
|
|
25
|
-
var resolveBindingString = BindingToolkit.resolveBindingString;
|
|
26
|
-
var ref = BindingToolkit.ref;
|
|
27
|
-
var pathInModel = BindingToolkit.pathInModel;
|
|
28
|
-
var or = BindingToolkit.or;
|
|
29
|
-
var notEqual = BindingToolkit.notEqual;
|
|
30
|
-
var not = BindingToolkit.not;
|
|
31
|
-
var isConstant = BindingToolkit.isConstant;
|
|
32
|
-
var ifElse = BindingToolkit.ifElse;
|
|
33
|
-
var getExpressionFromAnnotation = BindingToolkit.getExpressionFromAnnotation;
|
|
34
|
-
var fn = BindingToolkit.fn;
|
|
35
|
-
var equal = BindingToolkit.equal;
|
|
36
|
-
var compileExpression = BindingToolkit.compileExpression;
|
|
37
|
-
var and = BindingToolkit.and;
|
|
38
25
|
var KeyHelper = Key.KeyHelper;
|
|
39
26
|
var IssueType = IssueManager.IssueType;
|
|
40
27
|
var IssueSeverity = IssueManager.IssueSeverity;
|
|
@@ -48,6 +35,19 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/controls/Common/Action",
|
|
|
48
35
|
var getEnabledForAnnotationAction = Action.getEnabledForAnnotationAction;
|
|
49
36
|
var getActionsFromManifest = Action.getActionsFromManifest;
|
|
50
37
|
var ButtonType = Action.ButtonType;
|
|
38
|
+
var resolveBindingString = BindingToolkit.resolveBindingString;
|
|
39
|
+
var ref = BindingToolkit.ref;
|
|
40
|
+
var pathInModel = BindingToolkit.pathInModel;
|
|
41
|
+
var or = BindingToolkit.or;
|
|
42
|
+
var notEqual = BindingToolkit.notEqual;
|
|
43
|
+
var not = BindingToolkit.not;
|
|
44
|
+
var isConstant = BindingToolkit.isConstant;
|
|
45
|
+
var ifElse = BindingToolkit.ifElse;
|
|
46
|
+
var getExpressionFromAnnotation = BindingToolkit.getExpressionFromAnnotation;
|
|
47
|
+
var fn = BindingToolkit.fn;
|
|
48
|
+
var equal = BindingToolkit.equal;
|
|
49
|
+
var compileExpression = BindingToolkit.compileExpression;
|
|
50
|
+
var and = BindingToolkit.and;
|
|
51
51
|
let SubSectionType;
|
|
52
52
|
(function (SubSectionType) {
|
|
53
53
|
SubSectionType["Unknown"] = "Unknown";
|
|
@@ -339,7 +339,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/controls/Common/Action",
|
|
|
339
339
|
case "com.sap.vocabularies.UI.v1.SelectionPresentationVariant":
|
|
340
340
|
const presentation = getDataVisualizationConfiguration(facetDefinition.Target.value, converterContext, {
|
|
341
341
|
isCondensedTableLayoutCompliant: getCondensedTableLayoutCompliance(facetDefinition, facetsToCreate, converterContext),
|
|
342
|
-
doNotCheckApplySupported: isHeaderSection
|
|
342
|
+
doNotCheckApplySupported: isHeaderSection,
|
|
343
|
+
shouldCreateTemplateChartVisualization: true
|
|
343
344
|
});
|
|
344
345
|
const subSectionTitle = subSection.title ? subSection.title : "";
|
|
345
346
|
const controlTitle = ((_presentation$visuali = presentation.visualizations[0]) === null || _presentation$visuali === void 0 ? void 0 : (_presentation$visuali2 = _presentation$visuali.annotation) === null || _presentation$visuali2 === void 0 ? void 0 : _presentation$visuali2.title) || ((_presentation$visuali3 = presentation.visualizations[0]) === null || _presentation$visuali3 === void 0 ? void 0 : _presentation$visuali3.title);
|
|
@@ -636,4 +637,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/controls/Common/Action",
|
|
|
636
637
|
}
|
|
637
638
|
return _exports;
|
|
638
639
|
}, false);
|
|
639
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdWJTZWN0aW9uVHlwZSIsInZpc3VhbGl6YXRpb25UZXJtcyIsImNyZWF0ZVN1YlNlY3Rpb25zIiwiZmFjZXRDb2xsZWN0aW9uIiwiY29udmVydGVyQ29udGV4dCIsImlzSGVhZGVyU2VjdGlvbiIsInVzZVNpbmdsZVRleHRBcmVhRmllbGRBc05vdGVzIiwiZmFjZXRzVG9DcmVhdGUiLCJyZWR1Y2UiLCJmYWNldERlZmluaXRpb24iLCIkVHlwZSIsInB1c2giLCJGYWNldHMiLCJmaW5kIiwiZmFjZXRUeXBlIiwic3BsaWNlIiwibGVuZ3RoIiwibWFwIiwiZmFjZXQiLCJjcmVhdGVTdWJTZWN0aW9uIiwiY3JlYXRlQ3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9ucyIsImN1c3RvbUhlYWRlckZhY2V0cyIsImdldEhlYWRlckZhY2V0c0Zyb21NYW5pZmVzdCIsImdldE1hbmlmZXN0V3JhcHBlciIsImdldEhlYWRlckZhY2V0cyIsImFDdXN0b21IZWFkZXJGYWNldHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImN1c3RvbUhlYWRlckZhY2V0IiwidGVtcGxhdGVFZGl0IiwiY3JlYXRlQ3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9uIiwic3ViU2VjdGlvbklEIiwiZ2V0Q3VzdG9tU3ViU2VjdGlvbklEIiwic3ViU2VjdGlvbiIsImlkIiwidGl0bGUiLCJ0eXBlIiwiWE1MRnJhZ21lbnQiLCJ0ZW1wbGF0ZSIsInZpc2libGUiLCJsZXZlbCIsInNpZGVDb250ZW50IiwidW5kZWZpbmVkIiwic3Rhc2hlZCIsImZsZXhTZXR0aW5ncyIsImFjdGlvbnMiLCJvYmplY3RQYWdlTGF6eUxvYWRlckVuYWJsZWQiLCJnZXRTdWJTZWN0aW9uS2V5IiwiZmFsbGJhY2siLCJJRCIsInRvU3RyaW5nIiwiTGFiZWwiLCJhZGRGb3JtTWVudUFjdGlvbnMiLCJoaWRkZW5BY3Rpb25zIiwiZ2V0Rm9ybUhpZGRlbkFjdGlvbnMiLCJmb3JtQWN0aW9ucyIsImdldEZvcm1BY3Rpb25zIiwibWFuaWZlc3RBY3Rpb25zIiwiZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCIsImFjdGlvbk92ZXJ3cml0ZUNvbmZpZyIsImVuYWJsZWQiLCJPdmVycmlkZVR5cGUiLCJvdmVyd3JpdGUiLCJjb21tYW5kIiwicG9zaXRpb24iLCJmb3JtQWxsQWN0aW9ucyIsImluc2VydEN1c3RvbUVsZW1lbnRzIiwiZ2V0VmlzaWJpbGl0eUVuYWJsZW1lbnRGb3JtTWVudUFjdGlvbnMiLCJyZW1vdmVEdXBsaWNhdGVBY3Rpb25zIiwiY29tbWFuZEFjdGlvbnMiLCJnZXRGYWNldEFjdGlvbnMiLCJmaWx0ZXIiLCJzdWJGYWNldERlZmluaXRpb24iLCJpc1JlZmVyZW5jZUZhY2V0IiwiYWN0aW9uUmVkdWNlciIsInJlZmVyZW5jZUZhY2V0IiwiY3JlYXRlRm9ybUFjdGlvblJlZHVjZXIiLCJnZXRCdXR0b25UeXBlIiwiZW1waGFzaXplZCIsImJ1dHRvblR5cGVDb25kaXRpb24iLCJlcXVhbCIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsImNvbXBpbGVFeHByZXNzaW9uIiwiaWZFbHNlIiwiQnV0dG9uVHlwZSIsIkdob3N0IiwiVHJhbnNwYXJlbnQiLCJoYXNTaW5nbGVDb250ZW50IiwiZ2V0U3ViU2VjdGlvbklEIiwib0hpZGRlbkFubm90YXRpb24iLCJhbm5vdGF0aW9ucyIsIlVJIiwiSGlkZGVuIiwiaXNWaXNpYmxlRXhwcmVzc2lvbiIsIm5vdCIsImlzVmlzaWJpbGl0eUR5bmFtaWMiLCJpc0NvbnN0YW50IiwiaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24iLCJVbmtub3duIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZ2V0RW5hYmxlTGF6eUxvYWRpbmciLCJnZXRTdGFzaGVkU2V0dGluZ3NGb3JIZWFkZXJGYWNldCIsImRlc2lnbnRpbWUiLCJnZXREZXNpZ25UaW1lTWV0YWRhdGFTZXR0aW5nc0ZvckhlYWRlckZhY2V0IiwidW5zdXBwb3J0ZWRUZXh0IiwiZmFjZXRzIiwidmlzdWFsaXphdGlvbkZhY2V0cyIsImluZGV4IiwiVGFyZ2V0IiwiJHRhcmdldCIsImluY2x1ZGVzIiwidGVybSIsIm5vblZpc3VhbGl6YXRpb25GYWNldHMiLCJ2aXN1YWxpemF0aW9uIiwidmlzdWFsaXphdGlvbkNvbnRlbnQiLCJmb3JtQ29udGVudCIsIm1peGVkQ29udGVudCIsIkxvZyIsIndhcm5pbmciLCJmYWtlRm9ybUZhY2V0IiwibWl4ZWRTdWJTZWN0aW9uIiwiTWl4ZWQiLCJjb250ZW50IiwiZmFjZXRBY3Rpb25zIiwiZm9ybUNvbGxlY3Rpb25TdWJTZWN0aW9uIiwiRm9ybSIsImZvcm1EZWZpbml0aW9uIiwiY3JlYXRlRm9ybURlZmluaXRpb24iLCJhY3Rpb24iLCJmYWNldE5hbWUiLCJ2YWx1ZSIsInByZXNlbnRhdGlvbiIsImdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbiIsImlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQiLCJnZXRDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFuY2UiLCJkb05vdENoZWNrQXBwbHlTdXBwb3J0ZWQiLCJzdWJTZWN0aW9uVGl0bGUiLCJjb250cm9sVGl0bGUiLCJ2aXN1YWxpemF0aW9ucyIsImFubm90YXRpb24iLCJpc1BhcnRPZlByZXZpZXciLCJQYXJ0T2ZQcmV2aWV3IiwidmFsdWVPZiIsInNob3dTdWJTZWN0aW9uVGl0bGUiLCJnZXRTaG93U3ViU2VjdGlvblRpdGxlIiwiZGF0YVZpc3VhbGl6YXRpb25UaXRsZVZpc2libGUiLCJhbmQiLCJkYXRhVmlzdWFsaXphdGlvblN1YlNlY3Rpb24iLCJEYXRhVmlzdWFsaXphdGlvbiIsImZvcm1FbGVtZW50U3ViU2VjdGlvbiIsIk5vdGVzIiwidW5zdXBwb3J0ZWRTdWJTZWN0aW9uIiwidGV4dCIsIm9yIiwibm90RXF1YWwiLCJyZXNvbHZlQmluZGluZ1N0cmluZyIsInJlZmVyZW5jZVRhcmdldCIsInRhcmdldFZhbHVlIiwiZGF0YUZpZWxkQ29sbGVjdGlvbiIsIm5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJzcGxpdCIsImxhc3RJbmRleE9mIiwic3Vic3RyaW5nIiwiRGF0YSIsImdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24iLCJxdWFsaWZpZXIiLCJkYXRhRmllbGQiLCJSZXF1aXJlc0NvbnRleHQiLCJnZXREaWFnbm9zdGljcyIsImFkZElzc3VlIiwiSXNzdWVDYXRlZ29yeSIsIkFubm90YXRpb24iLCJJc3N1ZVNldmVyaXR5IiwiTG93IiwiSXNzdWVUeXBlIiwiTUFMRk9STUVEX0RBVEFGSUVMRF9GT1JfSUJOIiwiUkVRVUlSRVNDT05URVhUIiwiSW5saW5lIiwiSU5MSU5FIiwiRGV0ZXJtaW5pbmciLCJERVRFUk1JTklORyIsIm1OYXZpZ2F0aW9uUGFyYW1ldGVycyIsIk1hcHBpbmciLCJzZW1hbnRpY09iamVjdE1hcHBpbmciLCJnZXRTZW1hbnRpY09iamVjdE1hcHBpbmciLCJBY3Rpb25UeXBlIiwiRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiZ2V0Rm9ybUlEIiwiS2V5SGVscGVyIiwiZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkIiwiTmF2aWdhdGlvbkF2YWlsYWJsZSIsImJ1dHRvblR5cGUiLCJFbXBoYXNpemVkIiwicHJlc3MiLCJmbiIsIlNlbWFudGljT2JqZWN0IiwiQWN0aW9uIiwiY3VzdG9tRGF0YSIsInNlbWFudGljT2JqZWN0IiwiZm9ybU1hbmlmZXN0QWN0aW9uc0NvbmZpZ3VyYXRpb24iLCJEYXRhRmllbGRGb3JBY3Rpb24iLCJnZXRFbmFibGVkRm9yQW5ub3RhdGlvbkFjdGlvbiIsIkFjdGlvblRhcmdldCIsImJpbmRpbmciLCJyZXF1aXJlc0RpYWxvZyIsImlzQWN0aW9uV2l0aERpYWxvZyIsImNvbnRleHRzIiwicGF0aEluTW9kZWwiLCJpbnZvY2F0aW9uR3JvdXBpbmciLCJJbnZvY2F0aW9uR3JvdXBpbmciLCJsYWJlbCIsIm1vZGVsIiwiaXNOYXZpZ2FibGUiLCJpc0FjdGlvbk5hdmlnYWJsZSIsInJlZiIsImlzRGlhbG9nIiwiYWN0aW9uRGVmaW5pdGlvbiIsImJDcml0aWNhbCIsIkNvbW1vbiIsIklzQWN0aW9uQ3JpdGljYWwiLCJwYXJhbWV0ZXJzIiwiY3JlYXRlQ3VzdG9tU3ViU2VjdGlvbnMiLCJtYW5pZmVzdFN1YlNlY3Rpb25zIiwic3ViU2VjdGlvbnMiLCJzdWJTZWN0aW9uS2V5IiwiY3JlYXRlQ3VzdG9tU3ViU2VjdGlvbiIsIm1hbmlmZXN0U3ViU2VjdGlvbiIsImdldFNpZGVDb250ZW50SUQiLCJlcXVhbFNwbGl0IiwicGxhY2VtZW50IiwiUGxhY2VtZW50IiwiQWZ0ZXIiLCJpc1Zpc2libGUiLCJpc0R5bmFtaWNFeHByZXNzaW9uIiwiaW5kZXhPZiIsInN1YlNlY3Rpb25EZWZpbml0aW9uIiwiZW5hYmxlTGF6eUxvYWRpbmciLCJjb21wb25lbnROYW1lIiwic2V0dGluZ3MiLCJuYW1lIiwiZW1iZWRkZWRDb21wb25lbnQiLCJFbWJlZGRlZENvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJQbGFjZWhvbGRlciIsImN1cnJlbnRGYWNldCIsImZhY2V0c1RvQ3JlYXRlSW5TZWN0aW9uIiwibWFuaWZlc3RXcmFwcGVyIiwidXNlSWNvblRhYkJhciIsImhhc05vT3RoZXJWaXNpYmxlVGFibGVJblRhcmdldHMiLCJlbnRpdHlUeXBlIiwiZ2V0RW50aXR5VHlwZSIsImV2ZXJ5Iiwic3ViRmFjZXQiLCJyZWZGYWNldCIsInN1YkNvbGxlY3Rpb25GYWNldCIsInN1YlJlZkZhY2V0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTdWJTZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9uIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL0VkbVwiO1xuaW1wb3J0IHsgQ29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbXVuaWNhdGlvblwiO1xuaW1wb3J0IHR5cGUge1xuXHRDb2xsZWN0aW9uRmFjZXQsXG5cdENvbGxlY3Rpb25GYWNldFR5cGVzLFxuXHREYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHRFbXBoYXNpemVkLFxuXHRGYWNldFR5cGVzLFxuXHRGaWVsZEdyb3VwLFxuXHRPcGVyYXRpb25Hcm91cGluZ1R5cGUsXG5cdFJlZmVyZW5jZUZhY2V0VHlwZXNcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMsIFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25QYXJhbWV0ZXJzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEFubm90YXRpb25BY3Rpb24sXG5cdEJhc2VBY3Rpb24sXG5cdENvbWJpbmVkQWN0aW9uLFxuXHRDdXN0b21BY3Rpb24sXG5cdE92ZXJyaWRlVHlwZUFjdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQge1xuXHRCdXR0b25UeXBlLFxuXHRnZXRBY3Rpb25zRnJvbU1hbmlmZXN0LFxuXHRnZXRFbmFibGVkRm9yQW5ub3RhdGlvbkFjdGlvbixcblx0Z2V0U2VtYW50aWNPYmplY3RNYXBwaW5nLFxuXHRpc0FjdGlvbk5hdmlnYWJsZSxcblx0cmVtb3ZlRHVwbGljYXRlQWN0aW9uc1xufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IENoYXJ0VmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyBUYWJsZVZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQ3VzdG9tT2JqZWN0UGFnZUhlYWRlckZhY2V0LCBGbGV4U2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9PYmplY3RQYWdlL0hlYWRlckZhY2V0XCI7XG5pbXBvcnQge1xuXHRnZXREZXNpZ25UaW1lTWV0YWRhdGFTZXR0aW5nc0ZvckhlYWRlckZhY2V0LFxuXHRnZXRIZWFkZXJGYWNldHNGcm9tTWFuaWZlc3QsXG5cdGdldFN0YXNoZWRTZXR0aW5nc0ZvckhlYWRlckZhY2V0XG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL09iamVjdFBhZ2UvSGVhZGVyRmFjZXRcIjtcbmltcG9ydCB7IElzc3VlQ2F0ZWdvcnksIElzc3VlU2V2ZXJpdHksIElzc3VlVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSXNzdWVNYW5hZ2VyXCI7XG5pbXBvcnQgeyBLZXlIZWxwZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0tleVwiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7XG5cdGFuZCxcblx0Y29tcGlsZUV4cHJlc3Npb24sXG5cdGVxdWFsLFxuXHRmbixcblx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLFxuXHRpZkVsc2UsXG5cdGlzQ29uc3RhbnQsXG5cdG5vdCxcblx0bm90RXF1YWwsXG5cdG9yLFxuXHRwYXRoSW5Nb2RlbCxcblx0cmVmLFxuXHRyZXNvbHZlQmluZGluZ1N0cmluZ1xufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi8uLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24sIE1hbmlmZXN0QWN0aW9uLCBNYW5pZmVzdFN1YlNlY3Rpb24gfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgQWN0aW9uVHlwZSB9IGZyb20gXCIuLi8uLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBpc0FjdGlvbldpdGhEaWFsb2cgfSBmcm9tIFwiLi4vLi4vYW5ub3RhdGlvbnMvRGF0YUZpZWxkXCI7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ3VyYWJsZU9iamVjdCwgQ29uZmlndXJhYmxlUmVjb3JkLCBDdXN0b21FbGVtZW50IH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBPdmVycmlkZVR5cGUsIFBsYWNlbWVudCwgaW5zZXJ0Q3VzdG9tRWxlbWVudHMgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IGdldEN1c3RvbVN1YlNlY3Rpb25JRCwgZ2V0Rm9ybUlELCBnZXRTaWRlQ29udGVudElELCBnZXRTdWJTZWN0aW9uSUQgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9JRFwiO1xuaW1wb3J0IHsgZ2V0Rm9ybUFjdGlvbnMsIGdldEZvcm1IaWRkZW5BY3Rpb25zLCBnZXRWaXNpYmlsaXR5RW5hYmxlbWVudEZvcm1NZW51QWN0aW9ucyB9IGZyb20gXCIuLi8uLi9vYmplY3RQYWdlL0Zvcm1NZW51QWN0aW9uc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhVmlzdWFsaXphdGlvbkRlZmluaXRpb24gfSBmcm9tIFwiLi4vQ29tbW9uL0RhdGFWaXN1YWxpemF0aW9uXCI7XG5pbXBvcnQgeyBnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vQ29tbW9uL0RhdGFWaXN1YWxpemF0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEZvcm1EZWZpbml0aW9uIH0gZnJvbSBcIi4uL0NvbW1vbi9Gb3JtXCI7XG5pbXBvcnQgeyBjcmVhdGVGb3JtRGVmaW5pdGlvbiwgaXNSZWZlcmVuY2VGYWNldCB9IGZyb20gXCIuLi9Db21tb24vRm9ybVwiO1xuXG5leHBvcnQgZW51bSBTdWJTZWN0aW9uVHlwZSB7XG5cdFVua25vd24gPSBcIlVua25vd25cIiwgLy8gRGVmYXVsdCBUeXBlXG5cdEZvcm0gPSBcIkZvcm1cIixcblx0Tm90ZXMgPSBcIk5vdGVzXCIsXG5cdERhdGFWaXN1YWxpemF0aW9uID0gXCJEYXRhVmlzdWFsaXphdGlvblwiLFxuXHRYTUxGcmFnbWVudCA9IFwiWE1MRnJhZ21lbnRcIixcblx0UGxhY2Vob2xkZXIgPSBcIlBsYWNlaG9sZGVyXCIsXG5cdE1peGVkID0gXCJNaXhlZFwiLFxuXHRFbWJlZGRlZENvbXBvbmVudCA9IFwiRW1iZWRkZWRDb21wb25lbnRcIlxufVxuXG5leHBvcnQgdHlwZSBPYmplY3RQYWdlU3ViU2VjdGlvbiA9XG5cdHwgVW5zdXBwb3J0ZWRTdWJTZWN0aW9uXG5cdHwgRm9ybVN1YlNlY3Rpb25cblx0fCBEYXRhVmlzdWFsaXphdGlvblN1YlNlY3Rpb25cblx0fCBDb250YWN0U3ViU2VjdGlvblxuXHR8IFhNTEZyYWdtZW50U3ViU2VjdGlvblxuXHR8IFBsYWNlaG9sZGVyRnJhZ21lbnRTdWJTZWN0aW9uXG5cdHwgTWl4ZWRTdWJTZWN0aW9uXG5cdHwgUmV1c2VDb21wb25lbnRTdWJTZWN0aW9uXG5cdHwgTm90ZVN1YlNlY3Rpb247XG5cbnR5cGUgQmFzZVN1YlNlY3Rpb24gPSB7XG5cdGlkOiBzdHJpbmc7XG5cdGtleTogc3RyaW5nO1xuXHR0aXRsZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGFubm90YXRpb25QYXRoOiBzdHJpbmc7XG5cdHR5cGU6IFN1YlNlY3Rpb25UeXBlO1xuXHR2aXNpYmxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0aXNWaXNpYmlsaXR5RHluYW1pYz86IGJvb2xlYW4gfCBcIlwiO1xuXHRmbGV4U2V0dGluZ3M/OiBGbGV4U2V0dGluZ3M7XG5cdHN0YXNoZWQ/OiBib29sZWFuO1xuXHRsZXZlbDogbnVtYmVyO1xuXHRjb250ZW50PzogQXJyYXk8T2JqZWN0UGFnZVN1YlNlY3Rpb24+O1xuXHRzaWRlQ29udGVudD86IFNpZGVDb250ZW50RGVmO1xuXHRvYmplY3RQYWdlTGF6eUxvYWRlckVuYWJsZWQ6IGJvb2xlYW47XG5cdGNsYXNzPzogc3RyaW5nO1xufTtcblxudHlwZSBVbnN1cHBvcnRlZFN1YlNlY3Rpb24gPSBCYXNlU3ViU2VjdGlvbiAmIHtcblx0dHlwZTogU3ViU2VjdGlvblR5cGUuVW5rbm93bjtcblx0dGV4dDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0YVZpc3VhbGl6YXRpb25TdWJTZWN0aW9uID0gQmFzZVN1YlNlY3Rpb24gJiB7XG5cdHR5cGU6IFN1YlNlY3Rpb25UeXBlLkRhdGFWaXN1YWxpemF0aW9uO1xuXHRwcmVzZW50YXRpb246IERhdGFWaXN1YWxpemF0aW9uRGVmaW5pdGlvbjtcblx0aXNQYXJ0T2ZQcmV2aWV3PzogYm9vbGVhbjtcblx0c2hvd1N1YlNlY3Rpb25UaXRsZTogYm9vbGVhbiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRkYXRhVmlzdWFsaXphdGlvblRpdGxlVmlzaWJsZT86IHN0cmluZyB8IGJvb2xlYW47XG5cdGRhdGFWaXN1YWxpemF0aW9uT3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufTtcblxudHlwZSBDb250YWN0U3ViU2VjdGlvbiA9IFVuc3VwcG9ydGVkU3ViU2VjdGlvbjtcbnR5cGUgTm90ZVN1YlNlY3Rpb24gPSBCYXNlU3ViU2VjdGlvbiAmIHtcblx0dHlwZTogU3ViU2VjdGlvblR5cGUuTm90ZXM7XG59O1xudHlwZSBYTUxGcmFnbWVudFN1YlNlY3Rpb24gPSBPbWl0PEJhc2VTdWJTZWN0aW9uLCBcImFubm90YXRpb25QYXRoXCI+ICYge1xuXHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5YTUxGcmFnbWVudDtcblx0dGVtcGxhdGU6IHN0cmluZztcblx0YWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPjtcbn07XG5cbnR5cGUgUmV1c2VDb21wb25lbnRTdWJTZWN0aW9uID0gQmFzZVN1YlNlY3Rpb24gJiB7XG5cdHR5cGU6IFN1YlNlY3Rpb25UeXBlLkVtYmVkZGVkQ29tcG9uZW50O1xuXHRjb21wb25lbnROYW1lOiBzdHJpbmc7XG5cdHNldHRpbmdzOiBzdHJpbmc7XG59O1xuXG50eXBlIFBsYWNlaG9sZGVyRnJhZ21lbnRTdWJTZWN0aW9uID0gT21pdDxCYXNlU3ViU2VjdGlvbiwgXCJhbm5vdGF0aW9uUGF0aFwiPiAmIHtcblx0dHlwZTogU3ViU2VjdGlvblR5cGUuUGxhY2Vob2xkZXI7XG5cdGFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj47XG59O1xuXG5leHBvcnQgdHlwZSBNaXhlZFN1YlNlY3Rpb24gPSBCYXNlU3ViU2VjdGlvbiAmIHtcblx0dHlwZTogU3ViU2VjdGlvblR5cGUuTWl4ZWQ7XG5cdGNvbnRlbnQ6IEFycmF5PE9iamVjdFBhZ2VTdWJTZWN0aW9uPjtcbn07XG5cbmV4cG9ydCB0eXBlIEZvcm1TdWJTZWN0aW9uID0gQmFzZVN1YlNlY3Rpb24gJiB7XG5cdHR5cGU6IFN1YlNlY3Rpb25UeXBlLkZvcm07XG5cdGZvcm1EZWZpbml0aW9uOiBGb3JtRGVmaW5pdGlvbjtcblx0YWN0aW9uczogQmFzZUFjdGlvbltdO1xuXHRjb21tYW5kQWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPjtcbn07XG5cbmV4cG9ydCB0eXBlIE9iamVjdFBhZ2VTZWN0aW9uID0gQ29uZmlndXJhYmxlT2JqZWN0ICYge1xuXHRpZDogc3RyaW5nO1xuXHR0aXRsZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdHNob3dUaXRsZT86IGJvb2xlYW47XG5cdHZpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRzdWJTZWN0aW9uczogT2JqZWN0UGFnZVN1YlNlY3Rpb25bXTtcbn07XG5cbnR5cGUgU2lkZUNvbnRlbnREZWYgPSB7XG5cdHRlbXBsYXRlPzogc3RyaW5nO1xuXHRpZD86IHN0cmluZztcblx0c2lkZUNvbnRlbnRGYWxsRG93bj86IHN0cmluZztcblx0Y29udGFpbmVyUXVlcnk/OiBzdHJpbmc7XG5cdHZpc2libGU/OiBib29sZWFuO1xuXHRlcXVhbFNwbGl0PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbU9iamVjdFBhZ2VTZWN0aW9uID0gQ3VzdG9tRWxlbWVudDxPYmplY3RQYWdlU2VjdGlvbj4gJiB7XG5cdG9uU2VjdGlvbkxvYWRlZD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbU9iamVjdFBhZ2VTdWJTZWN0aW9uID0gQ3VzdG9tRWxlbWVudDxPYmplY3RQYWdlU3ViU2VjdGlvbj47XG5cbmNvbnN0IHZpc3VhbGl6YXRpb25UZXJtczogc3RyaW5nW10gPSBbXG5cdFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtLFxuXHRVSUFubm90YXRpb25UZXJtcy5DaGFydCxcblx0VUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudCxcblx0VUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXTtcblxuLyoqXG4gKiBDcmVhdGUgc3Vic2VjdGlvbnMgYmFzZWQgb24gZmFjZXQgZGVmaW5pdGlvbi5cbiAqXG4gKiBAcGFyYW0gZmFjZXRDb2xsZWN0aW9uIENvbGxlY3Rpb24gb2YgZmFjZXRzXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSBpc0hlYWRlclNlY3Rpb24gVHJ1ZSBpZiBoZWFkZXIgc2VjdGlvbiBpcyBnZW5lcmF0ZWQgaW4gdGhpcyBpdGVyYXRpb25cbiAqIEBwYXJhbSB1c2VTaW5nbGVUZXh0QXJlYUZpZWxkQXNOb3RlcyBJZiB0aGUgb25seSBmaWVsZCB3aXRoaW4gYSBmb3JtIGNvbnRhaW5lciBpcyBhIHRleHQtYXJlYSBmaWVsZCwgdGhlIGxhYmVsIGlzIGhpZGRlblxuICogQHJldHVybnMgVGhlIGN1cnJlbnQgc3Vic2VjdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN1YlNlY3Rpb25zKFxuXHRmYWNldENvbGxlY3Rpb246IEZhY2V0VHlwZXNbXSxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+LFxuXHRpc0hlYWRlclNlY3Rpb24/OiBib29sZWFuLFxuXHR1c2VTaW5nbGVUZXh0QXJlYUZpZWxkQXNOb3Rlcz86IGJvb2xlYW5cbik6IE9iamVjdFBhZ2VTdWJTZWN0aW9uW10ge1xuXHQvLyBGaXJzdCB3ZSBkZXRlcm1pbmUgd2hpY2ggc3ViIHNlY3Rpb24gd2UgbmVlZCB0byBjcmVhdGVcblx0Y29uc3QgZmFjZXRzVG9DcmVhdGUgPSBmYWNldENvbGxlY3Rpb24ucmVkdWNlKChmYWNldHNUb0NyZWF0ZTogRmFjZXRUeXBlc1tdLCBmYWNldERlZmluaXRpb24pID0+IHtcblx0XHRzd2l0Y2ggKGZhY2V0RGVmaW5pdGlvbi4kVHlwZSkge1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldDpcblx0XHRcdFx0ZmFjZXRzVG9DcmVhdGUucHVzaChmYWNldERlZmluaXRpb24pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0OlxuXHRcdFx0XHQvLyBUT0RPIElmIHRoZSBDb2xsZWN0aW9uIEZhY2V0IGhhcyBhIGNoaWxkIG9mIHR5cGUgQ29sbGVjdGlvbiBGYWNldCB3ZSBicmluZyB0aGVtIHVwIG9uZSBsZXZlbCAoRm9ybSArIFRhYmxlIHVzZSBjYXNlKSA/XG5cdFx0XHRcdC8vIGZpcnN0IGNhc2UgZmFjZXQgQ29sbGVjdGlvbiBpcyBjb21iaW5hdGlvbiBvZiBjb2xsZWN0aW9uIGFuZCByZWZlcmVuY2UgZmFjZXQgb3Igbm90IGFsbCBmYWNldHMgYXJlIHJlZmVyZW5jZSBmYWNldHMuXG5cdFx0XHRcdGlmIChmYWNldERlZmluaXRpb24uRmFjZXRzLmZpbmQoKGZhY2V0VHlwZSkgPT4gZmFjZXRUeXBlLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXQpKSB7XG5cdFx0XHRcdFx0ZmFjZXRzVG9DcmVhdGUuc3BsaWNlKGZhY2V0c1RvQ3JlYXRlLmxlbmd0aCwgMCwgLi4uZmFjZXREZWZpbml0aW9uLkZhY2V0cyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZmFjZXRzVG9DcmVhdGUucHVzaChmYWNldERlZmluaXRpb24pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VVUkxGYWNldDpcblx0XHRcdFx0Ly8gTm90IHN1cHBvcnRlZFxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0cmV0dXJuIGZhY2V0c1RvQ3JlYXRlO1xuXHR9LCBbXSk7XG5cblx0Ly8gVGhlbiB3ZSBjcmVhdGUgdGhlIGFjdHVhbCBzdWJzZWN0aW9uc1xuXHRyZXR1cm4gZmFjZXRzVG9DcmVhdGUubWFwKChmYWNldCkgPT5cblx0XHRjcmVhdGVTdWJTZWN0aW9uKFxuXHRcdFx0ZmFjZXQsXG5cdFx0XHRmYWNldHNUb0NyZWF0ZSxcblx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHQwLFxuXHRcdFx0IShmYWNldCBhcyBDb2xsZWN0aW9uRmFjZXQpPy5GYWNldHM/Lmxlbmd0aCxcblx0XHRcdGlzSGVhZGVyU2VjdGlvbixcblx0XHRcdHVzZVNpbmdsZVRleHRBcmVhRmllbGRBc05vdGVzXG5cdFx0KVxuXHQpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgc3Vic2VjdGlvbnMgYmFzZWQgb24gdGhlIGRlZmluaXRpb24gb2YgdGhlIGN1c3RvbSBoZWFkZXIgZmFjZXQuXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgY3VycmVudCBzdWJzZWN0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9ucyhjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4pOiBPYmplY3RQYWdlU3ViU2VjdGlvbltdIHtcblx0Y29uc3QgY3VzdG9tSGVhZGVyRmFjZXRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlSGVhZGVyRmFjZXQ+ID0gZ2V0SGVhZGVyRmFjZXRzRnJvbU1hbmlmZXN0KFxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuZ2V0SGVhZGVyRmFjZXRzKClcblx0KTtcblx0Y29uc3QgYUN1c3RvbUhlYWRlckZhY2V0czogQ3VzdG9tT2JqZWN0UGFnZUhlYWRlckZhY2V0W10gPSBbXTtcblx0T2JqZWN0LmtleXMoY3VzdG9tSGVhZGVyRmFjZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcblx0XHRhQ3VzdG9tSGVhZGVyRmFjZXRzLnB1c2goY3VzdG9tSGVhZGVyRmFjZXRzW2tleV0pO1xuXHRcdHJldHVybiBhQ3VzdG9tSGVhZGVyRmFjZXRzO1xuXHR9KTtcblx0Y29uc3QgZmFjZXRzVG9DcmVhdGUgPSBhQ3VzdG9tSGVhZGVyRmFjZXRzLnJlZHVjZSgoZmFjZXRzVG9DcmVhdGU6IEN1c3RvbU9iamVjdFBhZ2VIZWFkZXJGYWNldFtdLCBjdXN0b21IZWFkZXJGYWNldCkgPT4ge1xuXHRcdGlmIChjdXN0b21IZWFkZXJGYWNldC50ZW1wbGF0ZUVkaXQpIHtcblx0XHRcdGZhY2V0c1RvQ3JlYXRlLnB1c2goY3VzdG9tSGVhZGVyRmFjZXQpO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFjZXRzVG9DcmVhdGU7XG5cdH0sIFtdKTtcblxuXHRyZXR1cm4gZmFjZXRzVG9DcmVhdGUubWFwKChjdXN0b21IZWFkZXJGYWNldCkgPT4gY3JlYXRlQ3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9uKGN1c3RvbUhlYWRlckZhY2V0KSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN1YnNlY3Rpb24gYmFzZWQgb24gYSBjdXN0b20gaGVhZGVyIGZhY2V0LlxuICpcbiAqIEBwYXJhbSBjdXN0b21IZWFkZXJGYWNldCBBIGN1c3RvbSBoZWFkZXIgZmFjZXRcbiAqIEByZXR1cm5zIEEgZGVmaW5pdGlvbiBmb3IgYSBzdWJzZWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbihjdXN0b21IZWFkZXJGYWNldDogQ3VzdG9tT2JqZWN0UGFnZUhlYWRlckZhY2V0KTogT2JqZWN0UGFnZVN1YlNlY3Rpb24ge1xuXHRjb25zdCBzdWJTZWN0aW9uSUQgPSBnZXRDdXN0b21TdWJTZWN0aW9uSUQoY3VzdG9tSGVhZGVyRmFjZXQua2V5KTtcblx0Y29uc3Qgc3ViU2VjdGlvbjogWE1MRnJhZ21lbnRTdWJTZWN0aW9uID0ge1xuXHRcdGlkOiBzdWJTZWN0aW9uSUQsXG5cdFx0a2V5OiBjdXN0b21IZWFkZXJGYWNldC5rZXksXG5cdFx0dGl0bGU6IGN1c3RvbUhlYWRlckZhY2V0LnRpdGxlLFxuXHRcdHR5cGU6IFN1YlNlY3Rpb25UeXBlLlhNTEZyYWdtZW50LFxuXHRcdHRlbXBsYXRlOiBjdXN0b21IZWFkZXJGYWNldC50ZW1wbGF0ZUVkaXQgfHwgXCJcIixcblx0XHR2aXNpYmxlOiBjdXN0b21IZWFkZXJGYWNldC52aXNpYmxlLFxuXHRcdGxldmVsOiAxLFxuXHRcdHNpZGVDb250ZW50OiB1bmRlZmluZWQsXG5cdFx0c3Rhc2hlZDogY3VzdG9tSGVhZGVyRmFjZXQuc3Rhc2hlZCxcblx0XHRmbGV4U2V0dGluZ3M6IGN1c3RvbUhlYWRlckZhY2V0LmZsZXhTZXR0aW5ncyxcblx0XHRhY3Rpb25zOiB7fSxcblx0XHRvYmplY3RQYWdlTGF6eUxvYWRlckVuYWJsZWQ6IGZhbHNlXG5cdH07XG5cdHJldHVybiBzdWJTZWN0aW9uO1xufVxuXG5jb25zdCBnZXRTdWJTZWN0aW9uS2V5ID0gKGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcywgZmFsbGJhY2s6IHN0cmluZyk6IHN0cmluZyA9PiB7XG5cdHJldHVybiBmYWNldERlZmluaXRpb24uSUQ/LnRvU3RyaW5nKCkgfHwgZmFjZXREZWZpbml0aW9uLkxhYmVsPy50b1N0cmluZygpIHx8IGZhbGxiYWNrO1xufTtcbi8qKlxuICogQWRkcyBGb3JtIG1lbnUgYWN0aW9uIHRvIGFsbCBmb3JtIGFjdGlvbnMsIHJlbW92ZXMgZHVwbGljYXRlIGFjdGlvbnMgYW5kIGhpZGRlbiBhY3Rpb25zLlxuICpcbiAqIEBwYXJhbSBhY3Rpb25zIFRoZSBhY3Rpb25zIGludm9sdmVkXG4gKiBAcGFyYW0gZmFjZXREZWZpbml0aW9uIFRoZSBkZWZpbml0aW9uIGZvciB0aGUgZmFjZXRcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHJldHVybnMgVGhlIGZvcm0gbWVudSBhY3Rpb25zXG4gKi9cbmZ1bmN0aW9uIGFkZEZvcm1NZW51QWN0aW9ucyhcblx0YWN0aW9uczogQmFzZUFjdGlvbltdLFxuXHRmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogQ29tYmluZWRBY3Rpb24ge1xuXHRjb25zdCBoaWRkZW5BY3Rpb25zOiBCYXNlQWN0aW9uW10gPSBnZXRGb3JtSGlkZGVuQWN0aW9ucyhmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpIHx8IFtdLFxuXHRcdGZvcm1BY3Rpb25zOiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RBY3Rpb24+ID0gZ2V0Rm9ybUFjdGlvbnMoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRtYW5pZmVzdEFjdGlvbnMgPSBnZXRBY3Rpb25zRnJvbU1hbmlmZXN0KGZvcm1BY3Rpb25zLCBjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25zLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgaGlkZGVuQWN0aW9ucyksXG5cdFx0YWN0aW9uT3ZlcndyaXRlQ29uZmlnOiBPdmVycmlkZVR5cGVBY3Rpb24gPSB7XG5cdFx0XHRlbmFibGVkOiBPdmVycmlkZVR5cGUub3ZlcndyaXRlLFxuXHRcdFx0dmlzaWJsZTogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZSxcblx0XHRcdGNvbW1hbmQ6IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGUsXG5cdFx0XHRwb3NpdGlvbjogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZVxuXHRcdH0sXG5cdFx0Zm9ybUFsbEFjdGlvbnMgPSBpbnNlcnRDdXN0b21FbGVtZW50cyhhY3Rpb25zLCBtYW5pZmVzdEFjdGlvbnMuYWN0aW9ucywgYWN0aW9uT3ZlcndyaXRlQ29uZmlnKTtcblx0cmV0dXJuIHtcblx0XHRhY3Rpb25zOiBmb3JtQWxsQWN0aW9ucyA/IGdldFZpc2liaWxpdHlFbmFibGVtZW50Rm9ybU1lbnVBY3Rpb25zKHJlbW92ZUR1cGxpY2F0ZUFjdGlvbnMoZm9ybUFsbEFjdGlvbnMpKSA6IGFjdGlvbnMsXG5cdFx0Y29tbWFuZEFjdGlvbnM6IG1hbmlmZXN0QWN0aW9ucy5jb21tYW5kQWN0aW9uc1xuXHR9O1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgYWN0aW9uIGZvcm0gYSBmYWNldC5cbiAqXG4gKiBAcGFyYW0gZmFjZXREZWZpbml0aW9uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMgVGhlIGN1cnJlbnQgZmFjZXQgYWN0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRGYWNldEFjdGlvbnMoZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4pOiBDb21iaW5lZEFjdGlvbiB7XG5cdGxldCBhY3Rpb25zOiBCYXNlQWN0aW9uW10gPSBbXTtcblx0c3dpdGNoIChmYWNldERlZmluaXRpb24uJFR5cGUpIHtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldDpcblx0XHRcdGFjdGlvbnMgPSAoXG5cdFx0XHRcdGZhY2V0RGVmaW5pdGlvbi5GYWNldHMuZmlsdGVyKChzdWJGYWNldERlZmluaXRpb24pID0+IGlzUmVmZXJlbmNlRmFjZXQoc3ViRmFjZXREZWZpbml0aW9uKSkgYXMgUmVmZXJlbmNlRmFjZXRUeXBlc1tdXG5cdFx0XHQpLnJlZHVjZShcblx0XHRcdFx0KGFjdGlvblJlZHVjZXI6IEJhc2VBY3Rpb25bXSwgcmVmZXJlbmNlRmFjZXQpID0+IGNyZWF0ZUZvcm1BY3Rpb25SZWR1Y2VyKGFjdGlvblJlZHVjZXIsIHJlZmVyZW5jZUZhY2V0LCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdFx0W11cblx0XHRcdCk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0OlxuXHRcdFx0YWN0aW9ucyA9IGNyZWF0ZUZvcm1BY3Rpb25SZWR1Y2VyKFtdLCBmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGJyZWFrO1xuXHR9XG5cdHJldHVybiBhZGRGb3JtTWVudUFjdGlvbnMoYWN0aW9ucywgZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgYnV0dG9uIHR5cGUgYmFzZWQgb24gQFVJLkVtcGhhc2l6ZWQgYW5ub3RhdGlvbi5cbiAqXG4gKiBAcGFyYW0gZW1waGFzaXplZCBFbXBoYXNpemVkIGFubm90YXRpb24gdmFsdWUuXG4gKiBAcmV0dXJucyBUaGUgYnV0dG9uIHR5cGUgb3IgcGF0aCBiYXNlZCBleHByZXNzaW9uLlxuICovXG5mdW5jdGlvbiBnZXRCdXR0b25UeXBlKGVtcGhhc2l6ZWQ6IEVtcGhhc2l6ZWQgfCB1bmRlZmluZWQpOiBCdXR0b25UeXBlIHtcblx0Ly8gRW1waGFzaXplZCBpcyBhIGJvb2xlYW4gc28gaWYgaXQncyBlcXVhbCB0byB0cnVlIHdlIHNob3cgdGhlIGJ1dHRvbiBhcyBHaG9zdCwgb3RoZXJ3aXNlIGFzIFRyYW5zcGFyZW50XG5cdGNvbnN0IGJ1dHRvblR5cGVDb25kaXRpb24gPSBlcXVhbChnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZW1waGFzaXplZCksIHRydWUpO1xuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oaWZFbHNlKGJ1dHRvblR5cGVDb25kaXRpb24sIEJ1dHRvblR5cGUuR2hvc3QsIEJ1dHRvblR5cGUuVHJhbnNwYXJlbnQpKSBhcyBCdXR0b25UeXBlO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHN1YnNlY3Rpb24gYmFzZWQgb24gRmFjZXRUeXBlcy5cbiAqXG4gKiBAcGFyYW0gZmFjZXREZWZpbml0aW9uXG4gKiBAcGFyYW0gZmFjZXRzVG9DcmVhdGVcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0gbGV2ZWxcbiAqIEBwYXJhbSBoYXNTaW5nbGVDb250ZW50XG4gKiBAcGFyYW0gaXNIZWFkZXJTZWN0aW9uXG4gKiBAcGFyYW0gdXNlU2luZ2xlVGV4dEFyZWFGaWVsZEFzTm90ZXMgSWYgdGhlIG9ubHkgZmllbGQgd2l0aGluIGEgZm9ybSBjb250YWluZXIgaXMgYSB0ZXh0LWFyZWEgZmllbGQsIHRoZSBsYWJlbCBpcyBoaWRkZW5cbiAqIEByZXR1cm5zIEEgc3Vic2VjdGlvbiBkZWZpbml0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdWJTZWN0aW9uKFxuXHRmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsXG5cdGZhY2V0c1RvQ3JlYXRlOiBGYWNldFR5cGVzW10sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pixcblx0bGV2ZWw6IG51bWJlcixcblx0aGFzU2luZ2xlQ29udGVudDogYm9vbGVhbixcblx0aXNIZWFkZXJTZWN0aW9uPzogYm9vbGVhbixcblx0dXNlU2luZ2xlVGV4dEFyZWFGaWVsZEFzTm90ZXM/OiBib29sZWFuXG4pOiBPYmplY3RQYWdlU3ViU2VjdGlvbiB7XG5cdGNvbnN0IHN1YlNlY3Rpb25JRCA9IGdldFN1YlNlY3Rpb25JRChmYWNldERlZmluaXRpb24pO1xuXHRjb25zdCBvSGlkZGVuQW5ub3RhdGlvbiA9IGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbjtcblx0Y29uc3QgaXNWaXNpYmxlRXhwcmVzc2lvbiA9IG5vdChlcXVhbCh0cnVlLCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24ob0hpZGRlbkFubm90YXRpb24pKSk7XG5cdGNvbnN0IGlzVmlzaWJpbGl0eUR5bmFtaWMgPSAhaXNDb25zdGFudChpc1Zpc2libGVFeHByZXNzaW9uKSAmJiAhaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24ob0hpZGRlbkFubm90YXRpb24pO1xuXHRjb25zdCB0aXRsZSA9IGZhY2V0RGVmaW5pdGlvbi5MYWJlbCAhPT0gdW5kZWZpbmVkID8gY29tcGlsZUV4cHJlc3Npb24oZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbi5MYWJlbCkpIDogdW5kZWZpbmVkO1xuXHRjb25zdCBzdWJTZWN0aW9uOiBCYXNlU3ViU2VjdGlvbiA9IHtcblx0XHRpZDogc3ViU2VjdGlvbklELFxuXHRcdGtleTogZ2V0U3ViU2VjdGlvbktleShmYWNldERlZmluaXRpb24sIHN1YlNlY3Rpb25JRCksXG5cdFx0dGl0bGU6IHRpdGxlLFxuXHRcdHR5cGU6IFN1YlNlY3Rpb25UeXBlLlVua25vd24sXG5cdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChmYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKSxcblx0XHR2aXNpYmxlOiBjb21waWxlRXhwcmVzc2lvbihpc1Zpc2libGVFeHByZXNzaW9uKSxcblx0XHRpc1Zpc2liaWxpdHlEeW5hbWljOiBpc1Zpc2liaWxpdHlEeW5hbWljLFxuXHRcdGxldmVsOiBsZXZlbCxcblx0XHRzaWRlQ29udGVudDogdW5kZWZpbmVkLFxuXHRcdG9iamVjdFBhZ2VMYXp5TG9hZGVyRW5hYmxlZDogY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKS5nZXRFbmFibGVMYXp5TG9hZGluZygpXG5cdH07XG5cdGlmIChpc0hlYWRlclNlY3Rpb24pIHtcblx0XHRzdWJTZWN0aW9uLnN0YXNoZWQgPSBnZXRTdGFzaGVkU2V0dGluZ3NGb3JIZWFkZXJGYWNldChmYWNldERlZmluaXRpb24sIGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCk7XG5cdFx0c3ViU2VjdGlvbi5mbGV4U2V0dGluZ3MgPSB7XG5cdFx0XHRkZXNpZ250aW1lOiBnZXREZXNpZ25UaW1lTWV0YWRhdGFTZXR0aW5nc0ZvckhlYWRlckZhY2V0KGZhY2V0RGVmaW5pdGlvbiwgZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KVxuXHRcdH07XG5cdH1cblx0bGV0IHVuc3VwcG9ydGVkVGV4dCA9IFwiXCI7XG5cdGxldmVsKys7XG5cdHN3aXRjaCAoZmFjZXREZWZpbml0aW9uLiRUeXBlKSB7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXQ6XG5cdFx0XHRjb25zdCBmYWNldHMgPSBmYWNldERlZmluaXRpb24uRmFjZXRzO1xuXG5cdFx0XHQvLyBGaWx0ZXIgZm9yIGFsbCBmYWNldHMgb2YgdGhpcyBzdWJzZWN0aW9uIHRoYXQgYXJlIHJlZmVycmluZyB0byBhbiBhbm5vdGF0aW9uIGRlc2NyaWJpbmcgYSB2aXN1YWxpemF0aW9uIChlLmcuIHRhYmxlIG9yIGNoYXJ0KVxuXHRcdFx0Y29uc3QgdmlzdWFsaXphdGlvbkZhY2V0cyA9IGZhY2V0c1xuXHRcdFx0XHQubWFwKChmYWNldCwgaW5kZXgpID0+ICh7IGluZGV4LCBmYWNldCB9KSkgLy8gUmVtZW1iZXIgdGhlIGluZGV4IGFzc2lnbmVkIHRvIGVhY2ggZmFjZXRcblx0XHRcdFx0LmZpbHRlcigoeyBmYWNldCB9KSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGlzUmVmZXJlbmNlRmFjZXQoZmFjZXQpICYmIGZhY2V0LlRhcmdldC4kdGFyZ2V0ICYmIHZpc3VhbGl6YXRpb25UZXJtcy5pbmNsdWRlcyhmYWNldC5UYXJnZXQuJHRhcmdldC50ZXJtKTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdC8vIEZpbHRlciBvdXQgYWxsIHZpc3VhbGl6YXRpb24gZmFjZXRzOyBcInZpc3VhbGl6YXRpb25GYWNldHNcIiBhbmQgXCJub25WaXN1YWxpemF0aW9uRmFjZXRzXCIgYXJlIGRpc2pvaW50XG5cdFx0XHRjb25zdCBub25WaXN1YWxpemF0aW9uRmFjZXRzID0gZmFjZXRzLmZpbHRlcihcblx0XHRcdFx0KGZhY2V0KSA9PiAhdmlzdWFsaXphdGlvbkZhY2V0cy5maW5kKCh2aXN1YWxpemF0aW9uKSA9PiB2aXN1YWxpemF0aW9uLmZhY2V0ID09PSBmYWNldClcblx0XHRcdCk7XG5cblx0XHRcdGlmICh2aXN1YWxpemF0aW9uRmFjZXRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Ly8gQ29sbGVjdGlvbkZhY2V0cyB3aXRoIHZpc3VhbGl6YXRpb25zIG11c3QgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5IGFzIHRoZXkgY2Fubm90IGJlIGluY2x1ZGVkIGluIGZvcm1zXG5cdFx0XHRcdGNvbnN0IHZpc3VhbGl6YXRpb25Db250ZW50OiBPYmplY3RQYWdlU3ViU2VjdGlvbltdID0gW107XG5cdFx0XHRcdGNvbnN0IGZvcm1Db250ZW50OiBPYmplY3RQYWdlU3ViU2VjdGlvbltdID0gW107XG5cdFx0XHRcdGNvbnN0IG1peGVkQ29udGVudDogT2JqZWN0UGFnZVN1YlNlY3Rpb25bXSA9IFtdO1xuXG5cdFx0XHRcdC8vIENyZWF0ZSBlYWNoIHZpc3VhbGl6YXRpb24gZmFjZXQgYXMgaWYgaXQgd2FzIGl0cyBvd24gc3Vic2VjdGlvbiAodmlhIHJlY3Vyc2lvbiksIGFuZCBrZWVwIHRoZWlyIHJlbGF0aXZlIG9yZGVyaW5nXG5cdFx0XHRcdGZvciAoY29uc3QgeyBmYWNldCB9IG9mIHZpc3VhbGl6YXRpb25GYWNldHMpIHtcblx0XHRcdFx0XHR2aXN1YWxpemF0aW9uQ29udGVudC5wdXNoKGNyZWF0ZVN1YlNlY3Rpb24oZmFjZXQsIFtdLCBjb252ZXJ0ZXJDb250ZXh0LCBsZXZlbCwgdHJ1ZSwgaXNIZWFkZXJTZWN0aW9uKSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAobm9uVmlzdWFsaXphdGlvbkZhY2V0cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0Ly8gVGhpcyBzdWJzZWN0aW9uIGluY2x1ZGVzIHZpc3VhbGl6YXRpb25zIGFuZCBvdGhlciBjb250ZW50LCBzbyBpdCBpcyBhIFwiTWl4ZWRcIiBzdWJzZWN0aW9uXG5cdFx0XHRcdFx0TG9nLndhcm5pbmcoXG5cdFx0XHRcdFx0XHRgV2FybmluZzogQ29sbGVjdGlvbkZhY2V0ICcke2ZhY2V0RGVmaW5pdGlvbi5JRH0nIGluY2x1ZGVzIGEgY29tYmluYXRpb24gb2YgZWl0aGVyIGEgY2hhcnQgb3IgYSB0YWJsZSBhbmQgb3RoZXIgY29udGVudC4gVGhpcyBjYW4gbGVhZCB0byByZW5kZXJpbmcgaXNzdWVzLiBDb25zaWRlciBtb3ZpbmcgdGhlIGNoYXJ0IG9yIHRhYmxlIGludG8gYSBzZXBhcmF0ZSBDb2xsZWN0aW9uRmFjZXQuYFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRjb25zdCBmYWtlRm9ybUZhY2V0ID0geyAuLi5mYWNldERlZmluaXRpb24gfTtcblx0XHRcdFx0XHRmYWtlRm9ybUZhY2V0LkZhY2V0cyA9IG5vblZpc3VhbGl6YXRpb25GYWNldHM7XG5cdFx0XHRcdFx0Ly8gQ3JlYXRlIGEgam9pbmVkIGZvcm0gb2YgYWxsIGZhY2V0cyB0aGF0IGFyZSBub3QgcmVmZXJyaW5nIHRvIHZpc3VhbGl6YXRpb25zXG5cdFx0XHRcdFx0Zm9ybUNvbnRlbnQucHVzaChjcmVhdGVTdWJTZWN0aW9uKGZha2VGb3JtRmFjZXQsIFtdLCBjb252ZXJ0ZXJDb250ZXh0LCBsZXZlbCwgaGFzU2luZ2xlQ29udGVudCwgaXNIZWFkZXJTZWN0aW9uKSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBNZXJnZSB0aGUgdmlzdWFsaXphdGlvbiBjb250ZW50IHdpdGggdGhlIGZvcm0gY29udGVudFxuXHRcdFx0XHRpZiAodmlzdWFsaXphdGlvbkZhY2V0cy5maW5kKCh7IGluZGV4IH0pID0+IGluZGV4ID09PSAwKSkge1xuXHRcdFx0XHRcdC8vIElmIHRoZSBmaXJzdCBmYWNldCBpcyBhIHZpc3VhbGl6YXRpb24sIGRpc3BsYXkgdGhlIHZpc3VhbGl6YXRpb25zIGZpcnN0XG5cdFx0XHRcdFx0bWl4ZWRDb250ZW50LnB1c2goLi4udmlzdWFsaXphdGlvbkNvbnRlbnQpO1xuXHRcdFx0XHRcdG1peGVkQ29udGVudC5wdXNoKC4uLmZvcm1Db250ZW50KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIGRpc3BsYXkgdGhlIGZvcm0gZmlyc3Rcblx0XHRcdFx0XHRtaXhlZENvbnRlbnQucHVzaCguLi5mb3JtQ29udGVudCk7XG5cdFx0XHRcdFx0bWl4ZWRDb250ZW50LnB1c2goLi4udmlzdWFsaXphdGlvbkNvbnRlbnQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgbWl4ZWRTdWJTZWN0aW9uOiBNaXhlZFN1YlNlY3Rpb24gPSB7XG5cdFx0XHRcdFx0Li4uc3ViU2VjdGlvbixcblx0XHRcdFx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5NaXhlZCxcblx0XHRcdFx0XHRsZXZlbDogbGV2ZWwsXG5cdFx0XHRcdFx0Y29udGVudDogbWl4ZWRDb250ZW50XG5cdFx0XHRcdH07XG5cdFx0XHRcdHJldHVybiBtaXhlZFN1YlNlY3Rpb247XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBUaGlzIENvbGxlY3Rpb25GYWNldCBvbmx5IGluY2x1ZGVzIGNvbnRlbnQgdGhhdCBjYW4gYmUgcmVuZGVyZWQgaW4gYSBtZXJnZWQgZm9ybVxuXHRcdFx0XHRjb25zdCBmYWNldEFjdGlvbnMgPSBnZXRGYWNldEFjdGlvbnMoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdFx0XHRmb3JtQ29sbGVjdGlvblN1YlNlY3Rpb246IEZvcm1TdWJTZWN0aW9uID0ge1xuXHRcdFx0XHRcdFx0Li4uc3ViU2VjdGlvbixcblx0XHRcdFx0XHRcdHR5cGU6IFN1YlNlY3Rpb25UeXBlLkZvcm0sXG5cdFx0XHRcdFx0XHRmb3JtRGVmaW5pdGlvbjogY3JlYXRlRm9ybURlZmluaXRpb24oXG5cdFx0XHRcdFx0XHRcdGZhY2V0RGVmaW5pdGlvbixcblx0XHRcdFx0XHRcdFx0Y29tcGlsZUV4cHJlc3Npb24oaXNWaXNpYmxlRXhwcmVzc2lvbiksXG5cdFx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHRcdFx0XHRcdGZhY2V0QWN0aW9ucy5hY3Rpb25zLFxuXHRcdFx0XHRcdFx0XHR7IHVzZVNpbmdsZVRleHRBcmVhRmllbGRBc05vdGVzIH1cblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRsZXZlbDogbGV2ZWwsXG5cdFx0XHRcdFx0XHRhY3Rpb25zOiBmYWNldEFjdGlvbnMuYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLmZhY2V0TmFtZSA9PT0gdW5kZWZpbmVkKSxcblx0XHRcdFx0XHRcdGNvbW1hbmRBY3Rpb25zOiBmYWNldEFjdGlvbnMuY29tbWFuZEFjdGlvbnNcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRyZXR1cm4gZm9ybUNvbGxlY3Rpb25TdWJTZWN0aW9uO1xuXHRcdFx0fVxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQ6XG5cdFx0XHRpZiAoIWZhY2V0RGVmaW5pdGlvbi5UYXJnZXQuJHRhcmdldCkge1xuXHRcdFx0XHR1bnN1cHBvcnRlZFRleHQgPSBgVW5hYmxlIHRvIGZpbmQgYW5ub3RhdGlvblBhdGggJHtmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlfWA7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzd2l0Y2ggKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQuJHRhcmdldC50ZXJtKSB7XG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbTpcblx0XHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkNoYXJ0OlxuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudDpcblx0XHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ6XG5cdFx0XHRcdFx0XHRjb25zdCBwcmVzZW50YXRpb24gPSBnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24oZmFjZXREZWZpbml0aW9uLlRhcmdldC52YWx1ZSwgY29udmVydGVyQ29udGV4dCwge1xuXHRcdFx0XHRcdFx0XHRpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50OiBnZXRDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFuY2UoXG5cdFx0XHRcdFx0XHRcdFx0ZmFjZXREZWZpbml0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdGZhY2V0c1RvQ3JlYXRlLFxuXHRcdFx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0ZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkOiBpc0hlYWRlclNlY3Rpb25cblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0Y29uc3Qgc3ViU2VjdGlvblRpdGxlOiBzdHJpbmcgPSBzdWJTZWN0aW9uLnRpdGxlID8gc3ViU2VjdGlvbi50aXRsZSA6IFwiXCI7XG5cdFx0XHRcdFx0XHRjb25zdCBjb250cm9sVGl0bGUgPVxuXHRcdFx0XHRcdFx0XHQocHJlc2VudGF0aW9uLnZpc3VhbGl6YXRpb25zWzBdIGFzIFRhYmxlVmlzdWFsaXphdGlvbik/LmFubm90YXRpb24/LnRpdGxlIHx8XG5cdFx0XHRcdFx0XHRcdChwcmVzZW50YXRpb24udmlzdWFsaXphdGlvbnNbMF0gYXMgQ2hhcnRWaXN1YWxpemF0aW9uKT8udGl0bGU7XG5cdFx0XHRcdFx0XHRjb25zdCBpc1BhcnRPZlByZXZpZXcgPSBmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgIT09IGZhbHNlO1xuXHRcdFx0XHRcdFx0Y29uc3Qgc2hvd1N1YlNlY3Rpb25UaXRsZSA9IGdldFNob3dTdWJTZWN0aW9uVGl0bGUoY29udHJvbFRpdGxlID8/IFwiXCIsIHN1YlNlY3Rpb25UaXRsZSwgaGFzU2luZ2xlQ29udGVudCk7XG5cblx0XHRcdFx0XHRcdC8vIEVpdGhlciBjYWxjdWxhdGUgdGhlIHRpdGxlIHZpc2liaWxpdHkgc3RhdGljYWxseSBvciBkeW5hbWljYWxseVxuXHRcdFx0XHRcdFx0Ly8gQWRkaXRpb25hbGx5IHRvIGNoZWNraW5nIHdoZXRoZXIgYSB0aXRsZSBleGlzdHMsXG5cdFx0XHRcdFx0XHQvLyB3ZSBhbHNvIG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUgZmFjZXQgdGl0bGUgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBjb250cm9sIChpLmUuIHZpc3VhbGl6YXRpb24pIHRpdGxlO1xuXHRcdFx0XHRcdFx0Ly8gdGhpcyBpcyBkb25lIGJ5IGluY2x1ZGluZyBcInNob3dTdWJTZWN0aW9uVGl0bGVcIiBpbiB0aGUgYW5kIGV4cHJlc3Npb25cblx0XHRcdFx0XHRcdGNvbnN0IGRhdGFWaXN1YWxpemF0aW9uVGl0bGVWaXNpYmxlID0gaWZFbHNlKFxuXHRcdFx0XHRcdFx0XHRpc1Zpc2liaWxpdHlEeW5hbWljLFxuXHRcdFx0XHRcdFx0XHRhbmQoaXNWaXNpYmxlRXhwcmVzc2lvbiwgbm90KGVxdWFsKHRpdGxlLCBcInVuZGVmaW5lZFwiKSksIHNob3dTdWJTZWN0aW9uVGl0bGUpLFxuXHRcdFx0XHRcdFx0XHRhbmQoXG5cdFx0XHRcdFx0XHRcdFx0Y29tcGlsZUV4cHJlc3Npb24oaXNWaXNpYmxlRXhwcmVzc2lvbikgIT09IHVuZGVmaW5lZCxcblx0XHRcdFx0XHRcdFx0XHR0aXRsZSAhPT0gXCJ1bmRlZmluZWRcIixcblx0XHRcdFx0XHRcdFx0XHR0aXRsZSAhPT0gdW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0XHRcdGlzVmlzaWJsZUV4cHJlc3Npb24sXG5cdFx0XHRcdFx0XHRcdFx0c2hvd1N1YlNlY3Rpb25UaXRsZVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHRjb25zdCBkYXRhVmlzdWFsaXphdGlvblN1YlNlY3Rpb246IERhdGFWaXN1YWxpemF0aW9uU3ViU2VjdGlvbiA9IHtcblx0XHRcdFx0XHRcdFx0Li4uc3ViU2VjdGlvbixcblx0XHRcdFx0XHRcdFx0dHlwZTogU3ViU2VjdGlvblR5cGUuRGF0YVZpc3VhbGl6YXRpb24sXG5cdFx0XHRcdFx0XHRcdGxldmVsOiBsZXZlbCxcblx0XHRcdFx0XHRcdFx0cHJlc2VudGF0aW9uOiBwcmVzZW50YXRpb24sXG5cdFx0XHRcdFx0XHRcdGlzUGFydE9mUHJldmlldyxcblx0XHRcdFx0XHRcdFx0c2hvd1N1YlNlY3Rpb25UaXRsZTogY29tcGlsZUV4cHJlc3Npb24oc2hvd1N1YlNlY3Rpb25UaXRsZSksIC8vIFRoaXMgaXMgdXNlZCBvbiB0aGUgT2JqZWN0UGFnZVN1YlNlY3Rpb25cblx0XHRcdFx0XHRcdFx0ZGF0YVZpc3VhbGl6YXRpb25UaXRsZVZpc2libGU6IGNvbXBpbGVFeHByZXNzaW9uKGRhdGFWaXN1YWxpemF0aW9uVGl0bGVWaXNpYmxlKSAvLyBUaGlzIGlzIHVzZWQgdG8gaGlkZSB0aGUgVGl0bGUgY29udHJvbCBhYm92ZSBkYXRhIHZpc3VhbGl6YXRpb25zXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0cmV0dXJuIGRhdGFWaXN1YWxpemF0aW9uU3ViU2VjdGlvbjtcblxuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuRmllbGRHcm91cDpcblx0XHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLklkZW50aWZpY2F0aW9uOlxuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuRGF0YVBvaW50OlxuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuU3RhdHVzSW5mbzpcblx0XHRcdFx0XHRjYXNlIENvbW11bmljYXRpb25Bbm5vdGF0aW9uVGVybXMuQ29udGFjdDpcblx0XHRcdFx0XHRcdC8vIEFsbCB0aG9zZSBlbGVtZW50IGJlbG9uZyB0byBhIGZyb20gZmFjZXRcblx0XHRcdFx0XHRcdGNvbnN0IGZhY2V0QWN0aW9ucyA9IGdldEZhY2V0QWN0aW9ucyhmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0XHRcdFx0XHRmb3JtRWxlbWVudFN1YlNlY3Rpb246IEZvcm1TdWJTZWN0aW9uID0ge1xuXHRcdFx0XHRcdFx0XHRcdC4uLnN1YlNlY3Rpb24sXG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogU3ViU2VjdGlvblR5cGUuRm9ybSxcblx0XHRcdFx0XHRcdFx0XHRsZXZlbDogbGV2ZWwsXG5cdFx0XHRcdFx0XHRcdFx0Zm9ybURlZmluaXRpb246IGNyZWF0ZUZvcm1EZWZpbml0aW9uKFxuXHRcdFx0XHRcdFx0XHRcdFx0ZmFjZXREZWZpbml0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcGlsZUV4cHJlc3Npb24oaXNWaXNpYmxlRXhwcmVzc2lvbiksXG5cdFx0XHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRcdFx0XHRcdFx0ZmFjZXRBY3Rpb25zLmFjdGlvbnMsXG5cdFx0XHRcdFx0XHRcdFx0XHR7IHVzZVNpbmdsZVRleHRBcmVhRmllbGRBc05vdGVzIH1cblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdGFjdGlvbnM6IGZhY2V0QWN0aW9ucy5hY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24uZmFjZXROYW1lID09PSB1bmRlZmluZWQpLFxuXHRcdFx0XHRcdFx0XHRcdGNvbW1hbmRBY3Rpb25zOiBmYWNldEFjdGlvbnMuY29tbWFuZEFjdGlvbnNcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdHJldHVybiBmb3JtRWxlbWVudFN1YlNlY3Rpb247XG5cblx0XHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLk5vdGU6XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHQuLi5zdWJTZWN0aW9uLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5Ob3Rlc1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0dW5zdXBwb3J0ZWRUZXh0ID0gYEZvciAke2ZhY2V0RGVmaW5pdGlvbi5UYXJnZXQuJHRhcmdldC50ZXJtfSBGcmFnbWVudGA7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VVUkxGYWNldDpcblx0XHRcdHVuc3VwcG9ydGVkVGV4dCA9IFwiRm9yIFJlZmVyZW5jZSBVUkwgRmFjZXRcIjtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRicmVhaztcblx0fVxuXHQvLyBJZiB3ZSByZWFjaCBoZXJlIHdlIGVuZGVkIHVwIHdpdGggYW4gdW5zdXBwb3J0ZWQgU3ViU2VjdGlvbiB0eXBlXG5cdGNvbnN0IHVuc3VwcG9ydGVkU3ViU2VjdGlvbjogVW5zdXBwb3J0ZWRTdWJTZWN0aW9uID0ge1xuXHRcdC4uLnN1YlNlY3Rpb24sXG5cdFx0dHlwZTogU3ViU2VjdGlvblR5cGUuVW5rbm93bixcblx0XHR0ZXh0OiB1bnN1cHBvcnRlZFRleHRcblx0fTtcblx0cmV0dXJuIHVuc3VwcG9ydGVkU3ViU2VjdGlvbjtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0byBoaWRlIG9yIHNob3cgdGhlIHN1YnNlY3Rpb24gdGl0bGUuXG4gKlxuICogQHBhcmFtIGNvbnRyb2xUaXRsZVxuICogQHBhcmFtIHN1YlNlY3Rpb25UaXRsZVxuICogQHBhcmFtIGhhc1NpbmdsZUNvbnRlbnRcbiAqIEByZXR1cm5zIEJvb2xlYW4gdmFsdWUgb3IgZXhwcmVzc2lvbiBmb3Igc2hvd1N1YlNlY3Rpb25UaXRsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hvd1N1YlNlY3Rpb25UaXRsZShcblx0Y29udHJvbFRpdGxlOiBzdHJpbmcsXG5cdHN1YlNlY3Rpb25UaXRsZTogc3RyaW5nLFxuXHRoYXNTaW5nbGVDb250ZW50OiBib29sZWFuXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHQvLyB2aXNpYmxlIHNoYWxsIGJlIHRydWUgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGNvbnRlbnQgb3IgaWYgdGhlIGNvbnRyb2wgYW5kIHN1YnNlY3Rpb24gdGl0bGUgYXJlIGRpZmZlcmVudFxuXHRyZXR1cm4gb3Iobm90KGhhc1NpbmdsZUNvbnRlbnQpLCBub3RFcXVhbChyZXNvbHZlQmluZGluZ1N0cmluZyhjb250cm9sVGl0bGUpLCByZXNvbHZlQmluZGluZ1N0cmluZyhzdWJTZWN0aW9uVGl0bGUpKSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUZvcm1BY3Rpb25SZWR1Y2VyKFxuXHRhY3Rpb25zOiBCYXNlQWN0aW9uW10sXG5cdGZhY2V0RGVmaW5pdGlvbjogUmVmZXJlbmNlRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBCYXNlQWN0aW9uW10ge1xuXHRjb25zdCByZWZlcmVuY2VUYXJnZXQgPSBmYWNldERlZmluaXRpb24uVGFyZ2V0LiR0YXJnZXQ7XG5cdGNvbnN0IHRhcmdldFZhbHVlID0gZmFjZXREZWZpbml0aW9uLlRhcmdldC52YWx1ZTtcblx0bGV0IG1hbmlmZXN0QWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPiA9IHt9O1xuXHRsZXQgZGF0YUZpZWxkQ29sbGVjdGlvbjogRGF0YUZpZWxkQWJzdHJhY3RUeXBlc1tdID0gW107XG5cdGxldCBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFtuYXZpZ2F0aW9uUHJvcGVydHlQYXRoXSA9IHRhcmdldFZhbHVlLnNwbGl0KFwiQFwiKTtcblx0aWYgKG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGVuZ3RoID4gMCkge1xuXHRcdGlmIChuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxhc3RJbmRleE9mKFwiL1wiKSA9PT0gbmF2aWdhdGlvblByb3BlcnR5UGF0aC5sZW5ndGggLSAxKSB7XG5cdFx0XHRuYXZpZ2F0aW9uUHJvcGVydHlQYXRoID0gbmF2aWdhdGlvblByb3BlcnR5UGF0aC5zdWJzdHJpbmcoMCwgbmF2aWdhdGlvblByb3BlcnR5UGF0aC5sZW5ndGggLSAxKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0bmF2aWdhdGlvblByb3BlcnR5UGF0aCA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdGlmIChyZWZlcmVuY2VUYXJnZXQpIHtcblx0XHRzd2l0Y2ggKHJlZmVyZW5jZVRhcmdldC50ZXJtKSB7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkZpZWxkR3JvdXA6XG5cdFx0XHRcdGRhdGFGaWVsZENvbGxlY3Rpb24gPSAocmVmZXJlbmNlVGFyZ2V0IGFzIEZpZWxkR3JvdXApLkRhdGE7XG5cdFx0XHRcdG1hbmlmZXN0QWN0aW9ucyA9IGdldEFjdGlvbnNGcm9tTWFuaWZlc3QoXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdENvbnRyb2xDb25maWd1cmF0aW9uPEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24+KHJlZmVyZW5jZVRhcmdldCkuYWN0aW9ucyBhc1xuXHRcdFx0XHRcdFx0fCBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdEFjdGlvbj5cblx0XHRcdFx0XHRcdHwgdW5kZWZpbmVkLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdGZhY2V0RGVmaW5pdGlvbi5mdWxseVF1YWxpZmllZE5hbWVcblx0XHRcdFx0KS5hY3Rpb25zO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuSWRlbnRpZmljYXRpb246XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLlN0YXR1c0luZm86XG5cdFx0XHRcdGlmIChyZWZlcmVuY2VUYXJnZXQucXVhbGlmaWVyKSB7XG5cdFx0XHRcdFx0ZGF0YUZpZWxkQ29sbGVjdGlvbiA9IHJlZmVyZW5jZVRhcmdldDtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRhY3Rpb25zID0gZGF0YUZpZWxkQ29sbGVjdGlvbi5yZWR1Y2UoKGFjdGlvblJlZHVjZXIsIGRhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcykgPT4ge1xuXHRcdFx0c3dpdGNoIChkYXRhRmllbGQuJFR5cGUpIHtcblx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0XHRcdFx0aWYgKGRhdGFGaWVsZC5SZXF1aXJlc0NvbnRleHQ/LnZhbHVlT2YoKSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHRcdFx0XHQuZ2V0RGlhZ25vc3RpY3MoKVxuXHRcdFx0XHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5LkxvdywgSXNzdWVUeXBlLk1BTEZPUk1FRF9EQVRBRklFTERfRk9SX0lCTi5SRVFVSVJFU0NPTlRFWFQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoZGF0YUZpZWxkLklubGluZT8udmFsdWVPZigpID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdFx0XHRcdC5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuTG93LCBJc3N1ZVR5cGUuTUFMRk9STUVEX0RBVEFGSUVMRF9GT1JfSUJOLklOTElORSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChkYXRhRmllbGQuRGV0ZXJtaW5pbmc/LnZhbHVlT2YoKSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHRcdFx0XHQuZ2V0RGlhZ25vc3RpY3MoKVxuXHRcdFx0XHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5LkxvdywgSXNzdWVUeXBlLk1BTEZPUk1FRF9EQVRBRklFTERfRk9SX0lCTi5ERVRFUk1JTklORyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IG1OYXZpZ2F0aW9uUGFyYW1ldGVyczogTmF2aWdhdGlvblBhcmFtZXRlcnMgPSB7fTtcblx0XHRcdFx0XHRpZiAoZGF0YUZpZWxkLk1hcHBpbmcpIHtcblx0XHRcdFx0XHRcdG1OYXZpZ2F0aW9uUGFyYW1ldGVycy5zZW1hbnRpY09iamVjdE1hcHBpbmcgPSBnZXRTZW1hbnRpY09iamVjdE1hcHBpbmcoZGF0YUZpZWxkLk1hcHBpbmcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRhY3Rpb25SZWR1Y2VyLnB1c2goe1xuXHRcdFx0XHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24sXG5cdFx0XHRcdFx0XHRpZDogZ2V0Rm9ybUlEKGZhY2V0RGVmaW5pdGlvbiwgZGF0YUZpZWxkKSxcblx0XHRcdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpLFxuXHRcdFx0XHRcdFx0dGV4dDogZGF0YUZpZWxkLkxhYmVsPy50b1N0cmluZygpLFxuXHRcdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IFwiXCIsXG5cdFx0XHRcdFx0XHRlbmFibGVkOlxuXHRcdFx0XHRcdFx0XHRkYXRhRmllbGQuTmF2aWdhdGlvbkF2YWlsYWJsZSAhPT0gdW5kZWZpbmVkXG5cdFx0XHRcdFx0XHRcdFx0PyBjb21waWxlRXhwcmVzc2lvbihlcXVhbChnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YUZpZWxkLk5hdmlnYXRpb25BdmFpbGFibGUpLCB0cnVlKSlcblx0XHRcdFx0XHRcdFx0XHQ6IFwidHJ1ZVwiLFxuXHRcdFx0XHRcdFx0dmlzaWJsZTogY29tcGlsZUV4cHJlc3Npb24obm90KGVxdWFsKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4pLCB0cnVlKSkpLFxuXHRcdFx0XHRcdFx0YnV0dG9uVHlwZTogZ2V0QnV0dG9uVHlwZShkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5FbXBoYXNpemVkKSxcblx0XHRcdFx0XHRcdHByZXNzOiBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0XHRcdFx0Zm4oXCIuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5uYXZpZ2F0ZVwiLCBbXG5cdFx0XHRcdFx0XHRcdFx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGRhdGFGaWVsZC5TZW1hbnRpY09iamVjdCksXG5cdFx0XHRcdFx0XHRcdFx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGRhdGFGaWVsZC5BY3Rpb24pLFxuXHRcdFx0XHRcdFx0XHRcdG1OYXZpZ2F0aW9uUGFyYW1ldGVyc1xuXHRcdFx0XHRcdFx0XHRdKVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IGNvbXBpbGVFeHByZXNzaW9uKHtcblx0XHRcdFx0XHRcdFx0c2VtYW50aWNPYmplY3Q6IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihkYXRhRmllbGQuU2VtYW50aWNPYmplY3QpLFxuXHRcdFx0XHRcdFx0XHRhY3Rpb246IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihkYXRhRmllbGQuQWN0aW9uKVxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHR9IGFzIEFubm90YXRpb25BY3Rpb24pO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFjdGlvbjpcblx0XHRcdFx0XHRjb25zdCBmb3JtTWFuaWZlc3RBY3Rpb25zQ29uZmlndXJhdGlvbiA9XG5cdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb248Rm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvbj4ocmVmZXJlbmNlVGFyZ2V0KS5hY3Rpb25zO1xuXHRcdFx0XHRcdGNvbnN0IGtleTogc3RyaW5nID0gS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpO1xuXHRcdFx0XHRcdGFjdGlvblJlZHVjZXIucHVzaCh7XG5cdFx0XHRcdFx0XHR0eXBlOiBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbixcblx0XHRcdFx0XHRcdGlkOiBnZXRGb3JtSUQoZmFjZXREZWZpbml0aW9uLCBkYXRhRmllbGQpLFxuXHRcdFx0XHRcdFx0a2V5OiBrZXksXG5cdFx0XHRcdFx0XHR0ZXh0OiBkYXRhRmllbGQuTGFiZWw/LnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogXCJcIixcblx0XHRcdFx0XHRcdGVuYWJsZWQ6IGdldEVuYWJsZWRGb3JBbm5vdGF0aW9uQWN0aW9uKGNvbnZlcnRlckNvbnRleHQsIGRhdGFGaWVsZC5BY3Rpb25UYXJnZXQpLFxuXHRcdFx0XHRcdFx0YmluZGluZzogbmF2aWdhdGlvblByb3BlcnR5UGF0aCA/IGB7ICdwYXRoJyA6ICcke25hdmlnYXRpb25Qcm9wZXJ0eVBhdGh9J31gIDogdW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0dmlzaWJsZTogY29tcGlsZUV4cHJlc3Npb24obm90KGVxdWFsKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4pLCB0cnVlKSkpLFxuXHRcdFx0XHRcdFx0cmVxdWlyZXNEaWFsb2c6IGlzQWN0aW9uV2l0aERpYWxvZyhkYXRhRmllbGQpLFxuXHRcdFx0XHRcdFx0YnV0dG9uVHlwZTogZ2V0QnV0dG9uVHlwZShkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5FbXBoYXNpemVkKSxcblx0XHRcdFx0XHRcdHByZXNzOiBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0XHRcdFx0Zm4oXG5cdFx0XHRcdFx0XHRcdFx0XCJpbnZva2VBY3Rpb25cIixcblx0XHRcdFx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQuQWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb250ZXh0czogZm4oXCJnZXRCaW5kaW5nQ29udGV4dFwiLCBbXSwgcGF0aEluTW9kZWwoXCJcIiwgXCIkc291cmNlXCIpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW52b2NhdGlvbkdyb3VwaW5nOiAoZGF0YUZpZWxkLkludm9jYXRpb25Hcm91cGluZyA9PT0gXCJVSS5PcGVyYXRpb25Hcm91cGluZ1R5cGUvQ2hhbmdlU2V0XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IFwiQ2hhbmdlU2V0XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IFwiSXNvbGF0ZWRcIikgYXMgT3BlcmF0aW9uR3JvdXBpbmdUeXBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbDogZGF0YUZpZWxkLkxhYmVsPy50b1N0cmluZygpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRtb2RlbDogZm4oXCJnZXRNb2RlbFwiLCBbXSwgcGF0aEluTW9kZWwoXCIvXCIsIFwiJHNvdXJjZVwiKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlzTmF2aWdhYmxlOiBpc0FjdGlvbk5hdmlnYWJsZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3JtTWFuaWZlc3RBY3Rpb25zQ29uZmlndXJhdGlvbiAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGZvcm1NYW5pZmVzdEFjdGlvbnNDb25maWd1cmF0aW9uIGFzIFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPilba2V5XVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0XHRyZWYoXCIuZWRpdEZsb3dcIilcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGZhY2V0TmFtZTogZGF0YUZpZWxkLklubGluZSA/IGZhY2V0RGVmaW5pdGlvbi5mdWxseVF1YWxpZmllZE5hbWUgOiB1bmRlZmluZWRcblx0XHRcdFx0XHR9IGFzIEFubm90YXRpb25BY3Rpb24pO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGFjdGlvblJlZHVjZXI7XG5cdFx0fSwgYWN0aW9ucyk7XG5cdH1cblxuXHQvLyBPdmVyd3JpdGluZyBvZiBhY3Rpb25zIGhhcHBlbnMgaW4gYWRkRm9ybU1lbnVBY3Rpb25zXG5cdHJldHVybiBpbnNlcnRDdXN0b21FbGVtZW50cyhhY3Rpb25zLCBtYW5pZmVzdEFjdGlvbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEaWFsb2coYWN0aW9uRGVmaW5pdGlvbjogQWN0aW9uIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcblx0aWYgKGFjdGlvbkRlZmluaXRpb24pIHtcblx0XHRjb25zdCBiQ3JpdGljYWwgPSBhY3Rpb25EZWZpbml0aW9uLmFubm90YXRpb25zPy5Db21tb24/LklzQWN0aW9uQ3JpdGljYWw7XG5cdFx0aWYgKGFjdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycy5sZW5ndGggPiAxIHx8IGJDcml0aWNhbCkge1xuXHRcdFx0cmV0dXJuIFwiRGlhbG9nXCI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBcIk5vbmVcIjtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFwiTm9uZVwiO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDdXN0b21TdWJTZWN0aW9ucyhcblx0bWFuaWZlc3RTdWJTZWN0aW9uczogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RTdWJTZWN0aW9uPixcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlU3ViU2VjdGlvbj4ge1xuXHRjb25zdCBzdWJTZWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tT2JqZWN0UGFnZVN1YlNlY3Rpb24+ID0ge307XG5cdE9iamVjdC5rZXlzKG1hbmlmZXN0U3ViU2VjdGlvbnMpLmZvckVhY2goXG5cdFx0KHN1YlNlY3Rpb25LZXkpID0+XG5cdFx0XHQoc3ViU2VjdGlvbnNbc3ViU2VjdGlvbktleV0gPSBjcmVhdGVDdXN0b21TdWJTZWN0aW9uKG1hbmlmZXN0U3ViU2VjdGlvbnNbc3ViU2VjdGlvbktleV0sIHN1YlNlY3Rpb25LZXksIGNvbnZlcnRlckNvbnRleHQpKVxuXHQpO1xuXHRyZXR1cm4gc3ViU2VjdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDdXN0b21TdWJTZWN0aW9uKFxuXHRtYW5pZmVzdFN1YlNlY3Rpb246IE1hbmlmZXN0U3ViU2VjdGlvbixcblx0c3ViU2VjdGlvbktleTogc3RyaW5nLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IEN1c3RvbU9iamVjdFBhZ2VTdWJTZWN0aW9uIHtcblx0Y29uc3Qgc2lkZUNvbnRlbnQ6IFNpZGVDb250ZW50RGVmIHwgdW5kZWZpbmVkID0gbWFuaWZlc3RTdWJTZWN0aW9uLnNpZGVDb250ZW50XG5cdFx0PyB7XG5cdFx0XHRcdHRlbXBsYXRlOiBtYW5pZmVzdFN1YlNlY3Rpb24uc2lkZUNvbnRlbnQudGVtcGxhdGUsXG5cdFx0XHRcdGlkOiBnZXRTaWRlQ29udGVudElEKHN1YlNlY3Rpb25LZXkpLFxuXHRcdFx0XHR2aXNpYmxlOiBmYWxzZSxcblx0XHRcdFx0ZXF1YWxTcGxpdDogbWFuaWZlc3RTdWJTZWN0aW9uLnNpZGVDb250ZW50LmVxdWFsU3BsaXRcblx0XHQgIH1cblx0XHQ6IHVuZGVmaW5lZDtcblx0bGV0IHBvc2l0aW9uID0gbWFuaWZlc3RTdWJTZWN0aW9uLnBvc2l0aW9uO1xuXHRpZiAoIXBvc2l0aW9uKSB7XG5cdFx0cG9zaXRpb24gPSB7XG5cdFx0XHRwbGFjZW1lbnQ6IFBsYWNlbWVudC5BZnRlclxuXHRcdH07XG5cdH1cblx0Y29uc3QgaXNWaXNpYmxlID0gbWFuaWZlc3RTdWJTZWN0aW9uLnZpc2libGUgIT09IHVuZGVmaW5lZCA/IG1hbmlmZXN0U3ViU2VjdGlvbi52aXNpYmxlIDogdHJ1ZTtcblx0Y29uc3QgaXNEeW5hbWljRXhwcmVzc2lvbiA9IGlzVmlzaWJsZSAmJiB0eXBlb2YgaXNWaXNpYmxlID09PSBcInN0cmluZ1wiICYmIGlzVmlzaWJsZS5pbmRleE9mKFwiez1cIikgPT09IDA7XG5cdGNvbnN0IG1hbmlmZXN0QWN0aW9ucyA9IGdldEFjdGlvbnNGcm9tTWFuaWZlc3QobWFuaWZlc3RTdWJTZWN0aW9uLmFjdGlvbnMsIGNvbnZlcnRlckNvbnRleHQpO1xuXHRjb25zdCBzdWJTZWN0aW9uRGVmaW5pdGlvbiA9IHtcblx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5Vbmtub3duLFxuXHRcdGlkOiBtYW5pZmVzdFN1YlNlY3Rpb24uaWQgfHwgZ2V0Q3VzdG9tU3ViU2VjdGlvbklEKHN1YlNlY3Rpb25LZXkpLFxuXHRcdGFjdGlvbnM6IG1hbmlmZXN0QWN0aW9ucy5hY3Rpb25zLFxuXHRcdGtleTogc3ViU2VjdGlvbktleSxcblx0XHR0aXRsZTogbWFuaWZlc3RTdWJTZWN0aW9uLnRpdGxlLFxuXHRcdGxldmVsOiAxLFxuXHRcdHBvc2l0aW9uOiBwb3NpdGlvbixcblx0XHR2aXNpYmxlOiBtYW5pZmVzdFN1YlNlY3Rpb24udmlzaWJsZSAhPT0gdW5kZWZpbmVkID8gbWFuaWZlc3RTdWJTZWN0aW9uLnZpc2libGUgOiBcInRydWVcIixcblx0XHRzaWRlQ29udGVudDogc2lkZUNvbnRlbnQsXG5cdFx0aXNWaXNpYmlsaXR5RHluYW1pYzogaXNEeW5hbWljRXhwcmVzc2lvbixcblx0XHRvYmplY3RQYWdlTGF6eUxvYWRlckVuYWJsZWQ6IG1hbmlmZXN0U3ViU2VjdGlvbi5lbmFibGVMYXp5TG9hZGluZyA/PyBmYWxzZSxcblx0XHRjb21wb25lbnROYW1lOiBcIlwiLFxuXHRcdHNldHRpbmdzOiBcIlwiXG5cdH07XG5cdGlmIChtYW5pZmVzdFN1YlNlY3Rpb24udGVtcGxhdGUgfHwgbWFuaWZlc3RTdWJTZWN0aW9uLm5hbWUpIHtcblx0XHRzdWJTZWN0aW9uRGVmaW5pdGlvbi50eXBlID0gU3ViU2VjdGlvblR5cGUuWE1MRnJhZ21lbnQ7XG5cdFx0KHN1YlNlY3Rpb25EZWZpbml0aW9uIGFzIHVua25vd24gYXMgWE1MRnJhZ21lbnRTdWJTZWN0aW9uKS50ZW1wbGF0ZSA9IG1hbmlmZXN0U3ViU2VjdGlvbi50ZW1wbGF0ZSB8fCBtYW5pZmVzdFN1YlNlY3Rpb24ubmFtZSB8fCBcIlwiO1xuXHR9IGVsc2UgaWYgKG1hbmlmZXN0U3ViU2VjdGlvbi5lbWJlZGRlZENvbXBvbmVudCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0c3ViU2VjdGlvbkRlZmluaXRpb24udHlwZSA9IFN1YlNlY3Rpb25UeXBlLkVtYmVkZGVkQ29tcG9uZW50O1xuXHRcdHN1YlNlY3Rpb25EZWZpbml0aW9uLmNvbXBvbmVudE5hbWUgPSBtYW5pZmVzdFN1YlNlY3Rpb24uZW1iZWRkZWRDb21wb25lbnQubmFtZTtcblx0XHRpZiAobWFuaWZlc3RTdWJTZWN0aW9uLmVtYmVkZGVkQ29tcG9uZW50LnNldHRpbmdzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHN1YlNlY3Rpb25EZWZpbml0aW9uLnNldHRpbmdzID0gSlNPTi5zdHJpbmdpZnkobWFuaWZlc3RTdWJTZWN0aW9uLmVtYmVkZGVkQ29tcG9uZW50LnNldHRpbmdzKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0c3ViU2VjdGlvbkRlZmluaXRpb24udHlwZSA9IFN1YlNlY3Rpb25UeXBlLlBsYWNlaG9sZGVyO1xuXHR9XG5cdHJldHVybiBzdWJTZWN0aW9uRGVmaW5pdGlvbiBhcyBDdXN0b21PYmplY3RQYWdlU3ViU2VjdGlvbjtcbn1cblxuLyoqXG4gKiBFdmFsdWF0ZSBpZiB0aGUgY29uZGVuc2VkIG1vZGUgY2FuIGJlIGFwcGxpZWQgb24gdGhlIHRhYmxlLlxuICpcbiAqIEBwYXJhbSBjdXJyZW50RmFjZXRcbiAqIEBwYXJhbSBmYWNldHNUb0NyZWF0ZUluU2VjdGlvblxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIGB0cnVlYCBmb3IgY29tcGxpYW50LCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZnVuY3Rpb24gZ2V0Q29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbmNlKFxuXHRjdXJyZW50RmFjZXQ6IEZhY2V0VHlwZXMsXG5cdGZhY2V0c1RvQ3JlYXRlSW5TZWN0aW9uOiBGYWNldFR5cGVzW10sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogYm9vbGVhbiB7XG5cdGNvbnN0IG1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGlmIChtYW5pZmVzdFdyYXBwZXIudXNlSWNvblRhYkJhcigpKSB7XG5cdFx0Ly8gSWYgdGhlIE9QIHVzZSB0aGUgdGFiIGJhc2VkIHdlIGNoZWNrIGlmIHRoZSBmYWNldHMgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgZm9yIHRoaXMgc2VjdGlvbiBhcmUgYWxsIG5vbiB2aXNpYmxlXG5cdFx0cmV0dXJuIGhhc05vT3RoZXJWaXNpYmxlVGFibGVJblRhcmdldHMoY3VycmVudEZhY2V0LCBmYWNldHNUb0NyZWF0ZUluU2VjdGlvbik7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgZW50aXR5VHlwZSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpO1xuXHRcdGlmIChlbnRpdHlUeXBlLmFubm90YXRpb25zPy5VST8uRmFjZXRzPy5sZW5ndGggJiYgZW50aXR5VHlwZS5hbm5vdGF0aW9ucz8uVUk/LkZhY2V0cz8ubGVuZ3RoID4gMSkge1xuXHRcdFx0cmV0dXJuIGhhc05vT3RoZXJWaXNpYmxlVGFibGVJblRhcmdldHMoY3VycmVudEZhY2V0LCBmYWNldHNUb0NyZWF0ZUluU2VjdGlvbik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBoYXNOb090aGVyVmlzaWJsZVRhYmxlSW5UYXJnZXRzKGN1cnJlbnRGYWNldDogRmFjZXRUeXBlcywgZmFjZXRzVG9DcmVhdGVJblNlY3Rpb246IEZhY2V0VHlwZXNbXSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gZmFjZXRzVG9DcmVhdGVJblNlY3Rpb24uZXZlcnkoZnVuY3Rpb24gKHN1YkZhY2V0KSB7XG5cdFx0aWYgKHN1YkZhY2V0ICE9PSBjdXJyZW50RmFjZXQpIHtcblx0XHRcdGlmIChzdWJGYWNldC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQpIHtcblx0XHRcdFx0Y29uc3QgcmVmRmFjZXQgPSBzdWJGYWNldDtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHJlZkZhY2V0LlRhcmdldD8uJHRhcmdldD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0gfHxcblx0XHRcdFx0XHRyZWZGYWNldC5UYXJnZXQ/LiR0YXJnZXQ/LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQgfHxcblx0XHRcdFx0XHRyZWZGYWNldC5UYXJnZXQuJHRhcmdldD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gcmVmRmFjZXQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4gIT09IHVuZGVmaW5lZCA/IHJlZkZhY2V0LmFubm90YXRpb25zPy5VST8uSGlkZGVuIDogZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBzdWJDb2xsZWN0aW9uRmFjZXQgPSBzdWJGYWNldCBhcyBDb2xsZWN0aW9uRmFjZXRUeXBlcztcblx0XHRcdFx0cmV0dXJuIHN1YkNvbGxlY3Rpb25GYWNldC5GYWNldHMuZXZlcnkoZnVuY3Rpb24gKGZhY2V0KSB7XG5cdFx0XHRcdFx0Y29uc3Qgc3ViUmVmRmFjZXQgPSBmYWNldCBhcyBSZWZlcmVuY2VGYWNldFR5cGVzO1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdHN1YlJlZkZhY2V0LlRhcmdldD8uJHRhcmdldD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0gfHxcblx0XHRcdFx0XHRcdHN1YlJlZkZhY2V0LlRhcmdldD8uJHRhcmdldD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudCB8fFxuXHRcdFx0XHRcdFx0c3ViUmVmRmFjZXQuVGFyZ2V0Py4kdGFyZ2V0Py50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc3ViUmVmRmFjZXQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4gIT09IHVuZGVmaW5lZCA/IHN1YlJlZkZhY2V0LmFubm90YXRpb25zPy5VST8uSGlkZGVuIDogZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQXVFWUEsY0FBYztFQUFBLFdBQWRBLGNBQWM7SUFBZEEsY0FBYztJQUFkQSxjQUFjO0lBQWRBLGNBQWM7SUFBZEEsY0FBYztJQUFkQSxjQUFjO0lBQWRBLGNBQWM7SUFBZEEsY0FBYztJQUFkQSxjQUFjO0VBQUEsR0FB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
|
|
640
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdWJTZWN0aW9uVHlwZSIsInZpc3VhbGl6YXRpb25UZXJtcyIsImNyZWF0ZVN1YlNlY3Rpb25zIiwiZmFjZXRDb2xsZWN0aW9uIiwiY29udmVydGVyQ29udGV4dCIsImlzSGVhZGVyU2VjdGlvbiIsInVzZVNpbmdsZVRleHRBcmVhRmllbGRBc05vdGVzIiwiZmFjZXRzVG9DcmVhdGUiLCJyZWR1Y2UiLCJmYWNldERlZmluaXRpb24iLCIkVHlwZSIsInB1c2giLCJGYWNldHMiLCJmaW5kIiwiZmFjZXRUeXBlIiwic3BsaWNlIiwibGVuZ3RoIiwibWFwIiwiZmFjZXQiLCJjcmVhdGVTdWJTZWN0aW9uIiwiY3JlYXRlQ3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9ucyIsImN1c3RvbUhlYWRlckZhY2V0cyIsImdldEhlYWRlckZhY2V0c0Zyb21NYW5pZmVzdCIsImdldE1hbmlmZXN0V3JhcHBlciIsImdldEhlYWRlckZhY2V0cyIsImFDdXN0b21IZWFkZXJGYWNldHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImN1c3RvbUhlYWRlckZhY2V0IiwidGVtcGxhdGVFZGl0IiwiY3JlYXRlQ3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9uIiwic3ViU2VjdGlvbklEIiwiZ2V0Q3VzdG9tU3ViU2VjdGlvbklEIiwic3ViU2VjdGlvbiIsImlkIiwidGl0bGUiLCJ0eXBlIiwiWE1MRnJhZ21lbnQiLCJ0ZW1wbGF0ZSIsInZpc2libGUiLCJsZXZlbCIsInNpZGVDb250ZW50IiwidW5kZWZpbmVkIiwic3Rhc2hlZCIsImZsZXhTZXR0aW5ncyIsImFjdGlvbnMiLCJvYmplY3RQYWdlTGF6eUxvYWRlckVuYWJsZWQiLCJnZXRTdWJTZWN0aW9uS2V5IiwiZmFsbGJhY2siLCJJRCIsInRvU3RyaW5nIiwiTGFiZWwiLCJhZGRGb3JtTWVudUFjdGlvbnMiLCJoaWRkZW5BY3Rpb25zIiwiZ2V0Rm9ybUhpZGRlbkFjdGlvbnMiLCJmb3JtQWN0aW9ucyIsImdldEZvcm1BY3Rpb25zIiwibWFuaWZlc3RBY3Rpb25zIiwiZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCIsImFjdGlvbk92ZXJ3cml0ZUNvbmZpZyIsImVuYWJsZWQiLCJPdmVycmlkZVR5cGUiLCJvdmVyd3JpdGUiLCJjb21tYW5kIiwicG9zaXRpb24iLCJmb3JtQWxsQWN0aW9ucyIsImluc2VydEN1c3RvbUVsZW1lbnRzIiwiZ2V0VmlzaWJpbGl0eUVuYWJsZW1lbnRGb3JtTWVudUFjdGlvbnMiLCJyZW1vdmVEdXBsaWNhdGVBY3Rpb25zIiwiY29tbWFuZEFjdGlvbnMiLCJnZXRGYWNldEFjdGlvbnMiLCJmaWx0ZXIiLCJzdWJGYWNldERlZmluaXRpb24iLCJpc1JlZmVyZW5jZUZhY2V0IiwiYWN0aW9uUmVkdWNlciIsInJlZmVyZW5jZUZhY2V0IiwiY3JlYXRlRm9ybUFjdGlvblJlZHVjZXIiLCJnZXRCdXR0b25UeXBlIiwiZW1waGFzaXplZCIsImJ1dHRvblR5cGVDb25kaXRpb24iLCJlcXVhbCIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsImNvbXBpbGVFeHByZXNzaW9uIiwiaWZFbHNlIiwiQnV0dG9uVHlwZSIsIkdob3N0IiwiVHJhbnNwYXJlbnQiLCJoYXNTaW5nbGVDb250ZW50IiwiZ2V0U3ViU2VjdGlvbklEIiwib0hpZGRlbkFubm90YXRpb24iLCJhbm5vdGF0aW9ucyIsIlVJIiwiSGlkZGVuIiwiaXNWaXNpYmxlRXhwcmVzc2lvbiIsIm5vdCIsImlzVmlzaWJpbGl0eUR5bmFtaWMiLCJpc0NvbnN0YW50IiwiaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24iLCJVbmtub3duIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZ2V0RW5hYmxlTGF6eUxvYWRpbmciLCJnZXRTdGFzaGVkU2V0dGluZ3NGb3JIZWFkZXJGYWNldCIsImRlc2lnbnRpbWUiLCJnZXREZXNpZ25UaW1lTWV0YWRhdGFTZXR0aW5nc0ZvckhlYWRlckZhY2V0IiwidW5zdXBwb3J0ZWRUZXh0IiwiZmFjZXRzIiwidmlzdWFsaXphdGlvbkZhY2V0cyIsImluZGV4IiwiVGFyZ2V0IiwiJHRhcmdldCIsImluY2x1ZGVzIiwidGVybSIsIm5vblZpc3VhbGl6YXRpb25GYWNldHMiLCJ2aXN1YWxpemF0aW9uIiwidmlzdWFsaXphdGlvbkNvbnRlbnQiLCJmb3JtQ29udGVudCIsIm1peGVkQ29udGVudCIsIkxvZyIsIndhcm5pbmciLCJmYWtlRm9ybUZhY2V0IiwibWl4ZWRTdWJTZWN0aW9uIiwiTWl4ZWQiLCJjb250ZW50IiwiZmFjZXRBY3Rpb25zIiwiZm9ybUNvbGxlY3Rpb25TdWJTZWN0aW9uIiwiRm9ybSIsImZvcm1EZWZpbml0aW9uIiwiY3JlYXRlRm9ybURlZmluaXRpb24iLCJhY3Rpb24iLCJmYWNldE5hbWUiLCJ2YWx1ZSIsInByZXNlbnRhdGlvbiIsImdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbiIsImlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQiLCJnZXRDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFuY2UiLCJkb05vdENoZWNrQXBwbHlTdXBwb3J0ZWQiLCJzaG91bGRDcmVhdGVUZW1wbGF0ZUNoYXJ0VmlzdWFsaXphdGlvbiIsInN1YlNlY3Rpb25UaXRsZSIsImNvbnRyb2xUaXRsZSIsInZpc3VhbGl6YXRpb25zIiwiYW5ub3RhdGlvbiIsImlzUGFydE9mUHJldmlldyIsIlBhcnRPZlByZXZpZXciLCJ2YWx1ZU9mIiwic2hvd1N1YlNlY3Rpb25UaXRsZSIsImdldFNob3dTdWJTZWN0aW9uVGl0bGUiLCJkYXRhVmlzdWFsaXphdGlvblRpdGxlVmlzaWJsZSIsImFuZCIsImRhdGFWaXN1YWxpemF0aW9uU3ViU2VjdGlvbiIsIkRhdGFWaXN1YWxpemF0aW9uIiwiZm9ybUVsZW1lbnRTdWJTZWN0aW9uIiwiTm90ZXMiLCJ1bnN1cHBvcnRlZFN1YlNlY3Rpb24iLCJ0ZXh0Iiwib3IiLCJub3RFcXVhbCIsInJlc29sdmVCaW5kaW5nU3RyaW5nIiwicmVmZXJlbmNlVGFyZ2V0IiwidGFyZ2V0VmFsdWUiLCJkYXRhRmllbGRDb2xsZWN0aW9uIiwibmF2aWdhdGlvblByb3BlcnR5UGF0aCIsInNwbGl0IiwibGFzdEluZGV4T2YiLCJzdWJzdHJpbmciLCJEYXRhIiwiZ2V0TWFuaWZlc3RDb250cm9sQ29uZmlndXJhdGlvbiIsInF1YWxpZmllciIsImRhdGFGaWVsZCIsIlJlcXVpcmVzQ29udGV4dCIsImdldERpYWdub3N0aWNzIiwiYWRkSXNzdWUiLCJJc3N1ZUNhdGVnb3J5IiwiQW5ub3RhdGlvbiIsIklzc3VlU2V2ZXJpdHkiLCJMb3ciLCJJc3N1ZVR5cGUiLCJNQUxGT1JNRURfREFUQUZJRUxEX0ZPUl9JQk4iLCJSRVFVSVJFU0NPTlRFWFQiLCJJbmxpbmUiLCJJTkxJTkUiLCJEZXRlcm1pbmluZyIsIkRFVEVSTUlOSU5HIiwibU5hdmlnYXRpb25QYXJhbWV0ZXJzIiwiTWFwcGluZyIsInNlbWFudGljT2JqZWN0TWFwcGluZyIsImdldFNlbWFudGljT2JqZWN0TWFwcGluZyIsIkFjdGlvblR5cGUiLCJEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJnZXRGb3JtSUQiLCJLZXlIZWxwZXIiLCJnZW5lcmF0ZUtleUZyb21EYXRhRmllbGQiLCJOYXZpZ2F0aW9uQXZhaWxhYmxlIiwiYnV0dG9uVHlwZSIsIkVtcGhhc2l6ZWQiLCJwcmVzcyIsImZuIiwiU2VtYW50aWNPYmplY3QiLCJBY3Rpb24iLCJjdXN0b21EYXRhIiwic2VtYW50aWNPYmplY3QiLCJmb3JtTWFuaWZlc3RBY3Rpb25zQ29uZmlndXJhdGlvbiIsIkRhdGFGaWVsZEZvckFjdGlvbiIsImdldEVuYWJsZWRGb3JBbm5vdGF0aW9uQWN0aW9uIiwiQWN0aW9uVGFyZ2V0IiwiYmluZGluZyIsInJlcXVpcmVzRGlhbG9nIiwiaXNBY3Rpb25XaXRoRGlhbG9nIiwiY29udGV4dHMiLCJwYXRoSW5Nb2RlbCIsImludm9jYXRpb25Hcm91cGluZyIsIkludm9jYXRpb25Hcm91cGluZyIsImxhYmVsIiwibW9kZWwiLCJpc05hdmlnYWJsZSIsImlzQWN0aW9uTmF2aWdhYmxlIiwicmVmIiwiaXNEaWFsb2ciLCJhY3Rpb25EZWZpbml0aW9uIiwiYkNyaXRpY2FsIiwiQ29tbW9uIiwiSXNBY3Rpb25Dcml0aWNhbCIsInBhcmFtZXRlcnMiLCJjcmVhdGVDdXN0b21TdWJTZWN0aW9ucyIsIm1hbmlmZXN0U3ViU2VjdGlvbnMiLCJzdWJTZWN0aW9ucyIsInN1YlNlY3Rpb25LZXkiLCJjcmVhdGVDdXN0b21TdWJTZWN0aW9uIiwibWFuaWZlc3RTdWJTZWN0aW9uIiwiZ2V0U2lkZUNvbnRlbnRJRCIsImVxdWFsU3BsaXQiLCJwbGFjZW1lbnQiLCJQbGFjZW1lbnQiLCJBZnRlciIsImlzVmlzaWJsZSIsImlzRHluYW1pY0V4cHJlc3Npb24iLCJpbmRleE9mIiwic3ViU2VjdGlvbkRlZmluaXRpb24iLCJlbmFibGVMYXp5TG9hZGluZyIsImNvbXBvbmVudE5hbWUiLCJzZXR0aW5ncyIsIm5hbWUiLCJlbWJlZGRlZENvbXBvbmVudCIsIkVtYmVkZGVkQ29tcG9uZW50IiwiSlNPTiIsInN0cmluZ2lmeSIsIlBsYWNlaG9sZGVyIiwiY3VycmVudEZhY2V0IiwiZmFjZXRzVG9DcmVhdGVJblNlY3Rpb24iLCJtYW5pZmVzdFdyYXBwZXIiLCJ1c2VJY29uVGFiQmFyIiwiaGFzTm9PdGhlclZpc2libGVUYWJsZUluVGFyZ2V0cyIsImVudGl0eVR5cGUiLCJnZXRFbnRpdHlUeXBlIiwiZXZlcnkiLCJzdWJGYWNldCIsInJlZkZhY2V0Iiwic3ViQ29sbGVjdGlvbkZhY2V0Iiwic3ViUmVmRmFjZXQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlN1YlNlY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBY3Rpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvRWRtXCI7XG5pbXBvcnQgeyBDb21tdW5pY2F0aW9uQW5ub3RhdGlvblRlcm1zIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tdW5pY2F0aW9uXCI7XG5pbXBvcnQgdHlwZSB7XG5cdENvbGxlY3Rpb25GYWNldCxcblx0Q29sbGVjdGlvbkZhY2V0VHlwZXMsXG5cdERhdGFGaWVsZEFic3RyYWN0VHlwZXMsXG5cdEVtcGhhc2l6ZWQsXG5cdEZhY2V0VHlwZXMsXG5cdEZpZWxkR3JvdXAsXG5cdE9wZXJhdGlvbkdyb3VwaW5nVHlwZSxcblx0UmVmZXJlbmNlRmFjZXRUeXBlc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UZXJtcywgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHtcblx0YW5kLFxuXHRjb21waWxlRXhwcmVzc2lvbixcblx0ZXF1YWwsXG5cdGZuLFxuXHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sXG5cdGlmRWxzZSxcblx0aXNDb25zdGFudCxcblx0bm90LFxuXHRub3RFcXVhbCxcblx0b3IsXG5cdHBhdGhJbk1vZGVsLFxuXHRyZWYsXG5cdHJlc29sdmVCaW5kaW5nU3RyaW5nXG59IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBOYXZpZ2F0aW9uUGFyYW1ldGVycyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBQYWdlQ29udGV4dFBhdGhUYXJnZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUge1xuXHRBbm5vdGF0aW9uQWN0aW9uLFxuXHRCYXNlQWN0aW9uLFxuXHRDb21iaW5lZEFjdGlvbixcblx0Q3VzdG9tQWN0aW9uLFxuXHRPdmVycmlkZVR5cGVBY3Rpb25cbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHtcblx0QnV0dG9uVHlwZSxcblx0Z2V0QWN0aW9uc0Zyb21NYW5pZmVzdCxcblx0Z2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24sXG5cdGdldFNlbWFudGljT2JqZWN0TWFwcGluZyxcblx0aXNBY3Rpb25OYXZpZ2FibGUsXG5cdHJlbW92ZUR1cGxpY2F0ZUFjdGlvbnNcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDaGFydFZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgVGFibGVWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IEN1c3RvbU9iamVjdFBhZ2VIZWFkZXJGYWNldCwgRmxleFNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvT2JqZWN0UGFnZS9IZWFkZXJGYWNldFwiO1xuaW1wb3J0IHtcblx0Z2V0RGVzaWduVGltZU1ldGFkYXRhU2V0dGluZ3NGb3JIZWFkZXJGYWNldCxcblx0Z2V0SGVhZGVyRmFjZXRzRnJvbU1hbmlmZXN0LFxuXHRnZXRTdGFzaGVkU2V0dGluZ3NGb3JIZWFkZXJGYWNldFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9PYmplY3RQYWdlL0hlYWRlckZhY2V0XCI7XG5pbXBvcnQgeyBJc3N1ZUNhdGVnb3J5LCBJc3N1ZVNldmVyaXR5LCBJc3N1ZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0lzc3VlTWFuYWdlclwiO1xuaW1wb3J0IHsgS2V5SGVscGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9LZXlcIjtcbmltcG9ydCB7IGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwiLi4vLi4vQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9uLCBNYW5pZmVzdEFjdGlvbiwgTWFuaWZlc3RTdWJTZWN0aW9uIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IEFjdGlvblR5cGUgfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgaXNBY3Rpb25XaXRoRGlhbG9nIH0gZnJvbSBcIi4uLy4uL2Fubm90YXRpb25zL0RhdGFGaWVsZFwiO1xuaW1wb3J0IHR5cGUgeyBDb25maWd1cmFibGVPYmplY3QsIENvbmZpZ3VyYWJsZVJlY29yZCwgQ3VzdG9tRWxlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgT3ZlcnJpZGVUeXBlLCBQbGFjZW1lbnQsIGluc2VydEN1c3RvbUVsZW1lbnRzIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBnZXRDdXN0b21TdWJTZWN0aW9uSUQsIGdldEZvcm1JRCwgZ2V0U2lkZUNvbnRlbnRJRCwgZ2V0U3ViU2VjdGlvbklEIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvSURcIjtcbmltcG9ydCB7IGdldEZvcm1BY3Rpb25zLCBnZXRGb3JtSGlkZGVuQWN0aW9ucywgZ2V0VmlzaWJpbGl0eUVuYWJsZW1lbnRGb3JtTWVudUFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vb2JqZWN0UGFnZS9Gb3JtTWVudUFjdGlvbnNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YVZpc3VhbGl6YXRpb25EZWZpbml0aW9uIH0gZnJvbSBcIi4uL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHsgZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uIH0gZnJvbSBcIi4uL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtRGVmaW5pdGlvbiB9IGZyb20gXCIuLi9Db21tb24vRm9ybVwiO1xuaW1wb3J0IHsgY3JlYXRlRm9ybURlZmluaXRpb24sIGlzUmVmZXJlbmNlRmFjZXQgfSBmcm9tIFwiLi4vQ29tbW9uL0Zvcm1cIjtcblxuZXhwb3J0IGVudW0gU3ViU2VjdGlvblR5cGUge1xuXHRVbmtub3duID0gXCJVbmtub3duXCIsIC8vIERlZmF1bHQgVHlwZVxuXHRGb3JtID0gXCJGb3JtXCIsXG5cdE5vdGVzID0gXCJOb3Rlc1wiLFxuXHREYXRhVmlzdWFsaXphdGlvbiA9IFwiRGF0YVZpc3VhbGl6YXRpb25cIixcblx0WE1MRnJhZ21lbnQgPSBcIlhNTEZyYWdtZW50XCIsXG5cdFBsYWNlaG9sZGVyID0gXCJQbGFjZWhvbGRlclwiLFxuXHRNaXhlZCA9IFwiTWl4ZWRcIixcblx0RW1iZWRkZWRDb21wb25lbnQgPSBcIkVtYmVkZGVkQ29tcG9uZW50XCJcbn1cblxuZXhwb3J0IHR5cGUgT2JqZWN0UGFnZVN1YlNlY3Rpb24gPVxuXHR8IFVuc3VwcG9ydGVkU3ViU2VjdGlvblxuXHR8IEZvcm1TdWJTZWN0aW9uXG5cdHwgRGF0YVZpc3VhbGl6YXRpb25TdWJTZWN0aW9uXG5cdHwgQ29udGFjdFN1YlNlY3Rpb25cblx0fCBYTUxGcmFnbWVudFN1YlNlY3Rpb25cblx0fCBQbGFjZWhvbGRlckZyYWdtZW50U3ViU2VjdGlvblxuXHR8IE1peGVkU3ViU2VjdGlvblxuXHR8IFJldXNlQ29tcG9uZW50U3ViU2VjdGlvblxuXHR8IE5vdGVTdWJTZWN0aW9uO1xuXG50eXBlIEJhc2VTdWJTZWN0aW9uID0ge1xuXHRpZDogc3RyaW5nO1xuXHRrZXk6IHN0cmluZztcblx0dGl0bGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHR0eXBlOiBTdWJTZWN0aW9uVHlwZTtcblx0dmlzaWJsZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGlzVmlzaWJpbGl0eUR5bmFtaWM/OiBib29sZWFuIHwgXCJcIjtcblx0ZmxleFNldHRpbmdzPzogRmxleFNldHRpbmdzO1xuXHRzdGFzaGVkPzogYm9vbGVhbjtcblx0bGV2ZWw6IG51bWJlcjtcblx0Y29udGVudD86IEFycmF5PE9iamVjdFBhZ2VTdWJTZWN0aW9uPjtcblx0c2lkZUNvbnRlbnQ/OiBTaWRlQ29udGVudERlZjtcblx0b2JqZWN0UGFnZUxhenlMb2FkZXJFbmFibGVkOiBib29sZWFuO1xuXHRjbGFzcz86IHN0cmluZztcbn07XG5cbnR5cGUgVW5zdXBwb3J0ZWRTdWJTZWN0aW9uID0gQmFzZVN1YlNlY3Rpb24gJiB7XG5cdHR5cGU6IFN1YlNlY3Rpb25UeXBlLlVua25vd247XG5cdHRleHQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFWaXN1YWxpemF0aW9uU3ViU2VjdGlvbiA9IEJhc2VTdWJTZWN0aW9uICYge1xuXHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5EYXRhVmlzdWFsaXphdGlvbjtcblx0cHJlc2VudGF0aW9uOiBEYXRhVmlzdWFsaXphdGlvbkRlZmluaXRpb247XG5cdGlzUGFydE9mUHJldmlldz86IGJvb2xlYW47XG5cdHNob3dTdWJTZWN0aW9uVGl0bGU6IGJvb2xlYW4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0ZGF0YVZpc3VhbGl6YXRpb25UaXRsZVZpc2libGU/OiBzdHJpbmcgfCBib29sZWFuO1xuXHRkYXRhVmlzdWFsaXphdGlvbk9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn07XG5cbnR5cGUgQ29udGFjdFN1YlNlY3Rpb24gPSBVbnN1cHBvcnRlZFN1YlNlY3Rpb247XG50eXBlIE5vdGVTdWJTZWN0aW9uID0gQmFzZVN1YlNlY3Rpb24gJiB7XG5cdHR5cGU6IFN1YlNlY3Rpb25UeXBlLk5vdGVzO1xufTtcbnR5cGUgWE1MRnJhZ21lbnRTdWJTZWN0aW9uID0gT21pdDxCYXNlU3ViU2VjdGlvbiwgXCJhbm5vdGF0aW9uUGF0aFwiPiAmIHtcblx0dHlwZTogU3ViU2VjdGlvblR5cGUuWE1MRnJhZ21lbnQ7XG5cdHRlbXBsYXRlOiBzdHJpbmc7XG5cdGFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj47XG59O1xuXG50eXBlIFJldXNlQ29tcG9uZW50U3ViU2VjdGlvbiA9IEJhc2VTdWJTZWN0aW9uICYge1xuXHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5FbWJlZGRlZENvbXBvbmVudDtcblx0Y29tcG9uZW50TmFtZTogc3RyaW5nO1xuXHRzZXR0aW5nczogc3RyaW5nO1xufTtcblxudHlwZSBQbGFjZWhvbGRlckZyYWdtZW50U3ViU2VjdGlvbiA9IE9taXQ8QmFzZVN1YlNlY3Rpb24sIFwiYW5ub3RhdGlvblBhdGhcIj4gJiB7XG5cdHR5cGU6IFN1YlNlY3Rpb25UeXBlLlBsYWNlaG9sZGVyO1xuXHRhY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+O1xufTtcblxuZXhwb3J0IHR5cGUgTWl4ZWRTdWJTZWN0aW9uID0gQmFzZVN1YlNlY3Rpb24gJiB7XG5cdHR5cGU6IFN1YlNlY3Rpb25UeXBlLk1peGVkO1xuXHRjb250ZW50OiBBcnJheTxPYmplY3RQYWdlU3ViU2VjdGlvbj47XG59O1xuXG5leHBvcnQgdHlwZSBGb3JtU3ViU2VjdGlvbiA9IEJhc2VTdWJTZWN0aW9uICYge1xuXHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5Gb3JtO1xuXHRmb3JtRGVmaW5pdGlvbjogRm9ybURlZmluaXRpb247XG5cdGFjdGlvbnM6IEJhc2VBY3Rpb25bXTtcblx0Y29tbWFuZEFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj47XG59O1xuXG5leHBvcnQgdHlwZSBPYmplY3RQYWdlU2VjdGlvbiA9IENvbmZpZ3VyYWJsZU9iamVjdCAmIHtcblx0aWQ6IHN0cmluZztcblx0dGl0bGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRzaG93VGl0bGU/OiBib29sZWFuO1xuXHR2aXNpYmxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0c3ViU2VjdGlvbnM6IE9iamVjdFBhZ2VTdWJTZWN0aW9uW107XG59O1xuXG50eXBlIFNpZGVDb250ZW50RGVmID0ge1xuXHR0ZW1wbGF0ZT86IHN0cmluZztcblx0aWQ/OiBzdHJpbmc7XG5cdHNpZGVDb250ZW50RmFsbERvd24/OiBzdHJpbmc7XG5cdGNvbnRhaW5lclF1ZXJ5Pzogc3RyaW5nO1xuXHR2aXNpYmxlPzogYm9vbGVhbjtcblx0ZXF1YWxTcGxpdD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBDdXN0b21PYmplY3RQYWdlU2VjdGlvbiA9IEN1c3RvbUVsZW1lbnQ8T2JqZWN0UGFnZVNlY3Rpb24+ICYge1xuXHRvblNlY3Rpb25Mb2FkZWQ/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDdXN0b21PYmplY3RQYWdlU3ViU2VjdGlvbiA9IEN1c3RvbUVsZW1lbnQ8T2JqZWN0UGFnZVN1YlNlY3Rpb24+O1xuXG5jb25zdCB2aXN1YWxpemF0aW9uVGVybXM6IHN0cmluZ1tdID0gW1xuXHRVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbSxcblx0VUlBbm5vdGF0aW9uVGVybXMuQ2hhcnQsXG5cdFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQsXG5cdFVJQW5ub3RhdGlvblRlcm1zLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcbl07XG5cbi8qKlxuICogQ3JlYXRlIHN1YnNlY3Rpb25zIGJhc2VkIG9uIGZhY2V0IGRlZmluaXRpb24uXG4gKlxuICogQHBhcmFtIGZhY2V0Q29sbGVjdGlvbiBDb2xsZWN0aW9uIG9mIGZhY2V0c1xuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcGFyYW0gaXNIZWFkZXJTZWN0aW9uIFRydWUgaWYgaGVhZGVyIHNlY3Rpb24gaXMgZ2VuZXJhdGVkIGluIHRoaXMgaXRlcmF0aW9uXG4gKiBAcGFyYW0gdXNlU2luZ2xlVGV4dEFyZWFGaWVsZEFzTm90ZXMgSWYgdGhlIG9ubHkgZmllbGQgd2l0aGluIGEgZm9ybSBjb250YWluZXIgaXMgYSB0ZXh0LWFyZWEgZmllbGQsIHRoZSBsYWJlbCBpcyBoaWRkZW5cbiAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHN1YnNlY3Rpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdWJTZWN0aW9ucyhcblx0ZmFjZXRDb2xsZWN0aW9uOiBGYWNldFR5cGVzW10sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pixcblx0aXNIZWFkZXJTZWN0aW9uPzogYm9vbGVhbixcblx0dXNlU2luZ2xlVGV4dEFyZWFGaWVsZEFzTm90ZXM/OiBib29sZWFuXG4pOiBPYmplY3RQYWdlU3ViU2VjdGlvbltdIHtcblx0Ly8gRmlyc3Qgd2UgZGV0ZXJtaW5lIHdoaWNoIHN1YiBzZWN0aW9uIHdlIG5lZWQgdG8gY3JlYXRlXG5cdGNvbnN0IGZhY2V0c1RvQ3JlYXRlID0gZmFjZXRDb2xsZWN0aW9uLnJlZHVjZSgoZmFjZXRzVG9DcmVhdGU6IEZhY2V0VHlwZXNbXSwgZmFjZXREZWZpbml0aW9uKSA9PiB7XG5cdFx0c3dpdGNoIChmYWNldERlZmluaXRpb24uJFR5cGUpIHtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQ6XG5cdFx0XHRcdGZhY2V0c1RvQ3JlYXRlLnB1c2goZmFjZXREZWZpbml0aW9uKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldDpcblx0XHRcdFx0Ly8gVE9ETyBJZiB0aGUgQ29sbGVjdGlvbiBGYWNldCBoYXMgYSBjaGlsZCBvZiB0eXBlIENvbGxlY3Rpb24gRmFjZXQgd2UgYnJpbmcgdGhlbSB1cCBvbmUgbGV2ZWwgKEZvcm0gKyBUYWJsZSB1c2UgY2FzZSkgP1xuXHRcdFx0XHQvLyBmaXJzdCBjYXNlIGZhY2V0IENvbGxlY3Rpb24gaXMgY29tYmluYXRpb24gb2YgY29sbGVjdGlvbiBhbmQgcmVmZXJlbmNlIGZhY2V0IG9yIG5vdCBhbGwgZmFjZXRzIGFyZSByZWZlcmVuY2UgZmFjZXRzLlxuXHRcdFx0XHRpZiAoZmFjZXREZWZpbml0aW9uLkZhY2V0cy5maW5kKChmYWNldFR5cGUpID0+IGZhY2V0VHlwZS4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0KSkge1xuXHRcdFx0XHRcdGZhY2V0c1RvQ3JlYXRlLnNwbGljZShmYWNldHNUb0NyZWF0ZS5sZW5ndGgsIDAsIC4uLmZhY2V0RGVmaW5pdGlvbi5GYWNldHMpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGZhY2V0c1RvQ3JlYXRlLnB1c2goZmFjZXREZWZpbml0aW9uKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlVVJMRmFjZXQ6XG5cdFx0XHRcdC8vIE5vdCBzdXBwb3J0ZWRcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdHJldHVybiBmYWNldHNUb0NyZWF0ZTtcblx0fSwgW10pO1xuXG5cdC8vIFRoZW4gd2UgY3JlYXRlIHRoZSBhY3R1YWwgc3Vic2VjdGlvbnNcblx0cmV0dXJuIGZhY2V0c1RvQ3JlYXRlLm1hcCgoZmFjZXQpID0+XG5cdFx0Y3JlYXRlU3ViU2VjdGlvbihcblx0XHRcdGZhY2V0LFxuXHRcdFx0ZmFjZXRzVG9DcmVhdGUsXG5cdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0MCxcblx0XHRcdCEoZmFjZXQgYXMgQ29sbGVjdGlvbkZhY2V0KT8uRmFjZXRzPy5sZW5ndGgsXG5cdFx0XHRpc0hlYWRlclNlY3Rpb24sXG5cdFx0XHR1c2VTaW5nbGVUZXh0QXJlYUZpZWxkQXNOb3Rlc1xuXHRcdClcblx0KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHN1YnNlY3Rpb25zIGJhc2VkIG9uIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBjdXN0b20gaGVhZGVyIGZhY2V0LlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHJldHVybnMgVGhlIGN1cnJlbnQgc3Vic2VjdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbnMoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+KTogT2JqZWN0UGFnZVN1YlNlY3Rpb25bXSB7XG5cdGNvbnN0IGN1c3RvbUhlYWRlckZhY2V0czogUmVjb3JkPHN0cmluZywgQ3VzdG9tT2JqZWN0UGFnZUhlYWRlckZhY2V0PiA9IGdldEhlYWRlckZhY2V0c0Zyb21NYW5pZmVzdChcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmdldEhlYWRlckZhY2V0cygpXG5cdCk7XG5cdGNvbnN0IGFDdXN0b21IZWFkZXJGYWNldHM6IEN1c3RvbU9iamVjdFBhZ2VIZWFkZXJGYWNldFtdID0gW107XG5cdE9iamVjdC5rZXlzKGN1c3RvbUhlYWRlckZhY2V0cykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0YUN1c3RvbUhlYWRlckZhY2V0cy5wdXNoKGN1c3RvbUhlYWRlckZhY2V0c1trZXldKTtcblx0XHRyZXR1cm4gYUN1c3RvbUhlYWRlckZhY2V0cztcblx0fSk7XG5cdGNvbnN0IGZhY2V0c1RvQ3JlYXRlID0gYUN1c3RvbUhlYWRlckZhY2V0cy5yZWR1Y2UoKGZhY2V0c1RvQ3JlYXRlOiBDdXN0b21PYmplY3RQYWdlSGVhZGVyRmFjZXRbXSwgY3VzdG9tSGVhZGVyRmFjZXQpID0+IHtcblx0XHRpZiAoY3VzdG9tSGVhZGVyRmFjZXQudGVtcGxhdGVFZGl0KSB7XG5cdFx0XHRmYWNldHNUb0NyZWF0ZS5wdXNoKGN1c3RvbUhlYWRlckZhY2V0KTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhY2V0c1RvQ3JlYXRlO1xuXHR9LCBbXSk7XG5cblx0cmV0dXJuIGZhY2V0c1RvQ3JlYXRlLm1hcCgoY3VzdG9tSGVhZGVyRmFjZXQpID0+IGNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbihjdXN0b21IZWFkZXJGYWNldCkpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzdWJzZWN0aW9uIGJhc2VkIG9uIGEgY3VzdG9tIGhlYWRlciBmYWNldC5cbiAqXG4gKiBAcGFyYW0gY3VzdG9tSGVhZGVyRmFjZXQgQSBjdXN0b20gaGVhZGVyIGZhY2V0XG4gKiBAcmV0dXJucyBBIGRlZmluaXRpb24gZm9yIGEgc3Vic2VjdGlvblxuICovXG5mdW5jdGlvbiBjcmVhdGVDdXN0b21IZWFkZXJGYWNldFN1YlNlY3Rpb24oY3VzdG9tSGVhZGVyRmFjZXQ6IEN1c3RvbU9iamVjdFBhZ2VIZWFkZXJGYWNldCk6IE9iamVjdFBhZ2VTdWJTZWN0aW9uIHtcblx0Y29uc3Qgc3ViU2VjdGlvbklEID0gZ2V0Q3VzdG9tU3ViU2VjdGlvbklEKGN1c3RvbUhlYWRlckZhY2V0LmtleSk7XG5cdGNvbnN0IHN1YlNlY3Rpb246IFhNTEZyYWdtZW50U3ViU2VjdGlvbiA9IHtcblx0XHRpZDogc3ViU2VjdGlvbklELFxuXHRcdGtleTogY3VzdG9tSGVhZGVyRmFjZXQua2V5LFxuXHRcdHRpdGxlOiBjdXN0b21IZWFkZXJGYWNldC50aXRsZSxcblx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5YTUxGcmFnbWVudCxcblx0XHR0ZW1wbGF0ZTogY3VzdG9tSGVhZGVyRmFjZXQudGVtcGxhdGVFZGl0IHx8IFwiXCIsXG5cdFx0dmlzaWJsZTogY3VzdG9tSGVhZGVyRmFjZXQudmlzaWJsZSxcblx0XHRsZXZlbDogMSxcblx0XHRzaWRlQ29udGVudDogdW5kZWZpbmVkLFxuXHRcdHN0YXNoZWQ6IGN1c3RvbUhlYWRlckZhY2V0LnN0YXNoZWQsXG5cdFx0ZmxleFNldHRpbmdzOiBjdXN0b21IZWFkZXJGYWNldC5mbGV4U2V0dGluZ3MsXG5cdFx0YWN0aW9uczoge30sXG5cdFx0b2JqZWN0UGFnZUxhenlMb2FkZXJFbmFibGVkOiBmYWxzZVxuXHR9O1xuXHRyZXR1cm4gc3ViU2VjdGlvbjtcbn1cblxuY29uc3QgZ2V0U3ViU2VjdGlvbktleSA9IChmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsIGZhbGxiYWNrOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRyZXR1cm4gZmFjZXREZWZpbml0aW9uLklEPy50b1N0cmluZygpIHx8IGZhY2V0RGVmaW5pdGlvbi5MYWJlbD8udG9TdHJpbmcoKSB8fCBmYWxsYmFjaztcbn07XG4vKipcbiAqIEFkZHMgRm9ybSBtZW51IGFjdGlvbiB0byBhbGwgZm9ybSBhY3Rpb25zLCByZW1vdmVzIGR1cGxpY2F0ZSBhY3Rpb25zIGFuZCBoaWRkZW4gYWN0aW9ucy5cbiAqXG4gKiBAcGFyYW0gYWN0aW9ucyBUaGUgYWN0aW9ucyBpbnZvbHZlZFxuICogQHBhcmFtIGZhY2V0RGVmaW5pdGlvbiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZhY2V0XG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBmb3JtIG1lbnUgYWN0aW9uc1xuICovXG5mdW5jdGlvbiBhZGRGb3JtTWVudUFjdGlvbnMoXG5cdGFjdGlvbnM6IEJhc2VBY3Rpb25bXSxcblx0ZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IENvbWJpbmVkQWN0aW9uIHtcblx0Y29uc3QgaGlkZGVuQWN0aW9uczogQmFzZUFjdGlvbltdID0gZ2V0Rm9ybUhpZGRlbkFjdGlvbnMoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSB8fCBbXSxcblx0XHRmb3JtQWN0aW9uczogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPiA9IGdldEZvcm1BY3Rpb25zKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0bWFuaWZlc3RBY3Rpb25zID0gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChmb3JtQWN0aW9ucywgY29udmVydGVyQ29udGV4dCwgYWN0aW9ucywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGhpZGRlbkFjdGlvbnMpLFxuXHRcdGFjdGlvbk92ZXJ3cml0ZUNvbmZpZzogT3ZlcnJpZGVUeXBlQWN0aW9uID0ge1xuXHRcdFx0ZW5hYmxlZDogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZSxcblx0XHRcdHZpc2libGU6IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGUsXG5cdFx0XHRjb21tYW5kOiBPdmVycmlkZVR5cGUub3ZlcndyaXRlLFxuXHRcdFx0cG9zaXRpb246IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGVcblx0XHR9LFxuXHRcdGZvcm1BbGxBY3Rpb25zID0gaW5zZXJ0Q3VzdG9tRWxlbWVudHMoYWN0aW9ucywgbWFuaWZlc3RBY3Rpb25zLmFjdGlvbnMsIGFjdGlvbk92ZXJ3cml0ZUNvbmZpZyk7XG5cdHJldHVybiB7XG5cdFx0YWN0aW9uczogZm9ybUFsbEFjdGlvbnMgPyBnZXRWaXNpYmlsaXR5RW5hYmxlbWVudEZvcm1NZW51QWN0aW9ucyhyZW1vdmVEdXBsaWNhdGVBY3Rpb25zKGZvcm1BbGxBY3Rpb25zKSkgOiBhY3Rpb25zLFxuXHRcdGNvbW1hbmRBY3Rpb25zOiBtYW5pZmVzdEFjdGlvbnMuY29tbWFuZEFjdGlvbnNcblx0fTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGFjdGlvbiBmb3JtIGEgZmFjZXQuXG4gKlxuICogQHBhcmFtIGZhY2V0RGVmaW5pdGlvblxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGZhY2V0IGFjdGlvbnNcbiAqL1xuZnVuY3Rpb24gZ2V0RmFjZXRBY3Rpb25zKGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcywgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+KTogQ29tYmluZWRBY3Rpb24ge1xuXHRsZXQgYWN0aW9uczogQmFzZUFjdGlvbltdID0gW107XG5cdHN3aXRjaCAoZmFjZXREZWZpbml0aW9uLiRUeXBlKSB7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXQ6XG5cdFx0XHRhY3Rpb25zID0gKFxuXHRcdFx0XHRmYWNldERlZmluaXRpb24uRmFjZXRzLmZpbHRlcigoc3ViRmFjZXREZWZpbml0aW9uKSA9PiBpc1JlZmVyZW5jZUZhY2V0KHN1YkZhY2V0RGVmaW5pdGlvbikpIGFzIFJlZmVyZW5jZUZhY2V0VHlwZXNbXVxuXHRcdFx0KS5yZWR1Y2UoXG5cdFx0XHRcdChhY3Rpb25SZWR1Y2VyOiBCYXNlQWN0aW9uW10sIHJlZmVyZW5jZUZhY2V0KSA9PiBjcmVhdGVGb3JtQWN0aW9uUmVkdWNlcihhY3Rpb25SZWR1Y2VyLCByZWZlcmVuY2VGYWNldCwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRcdFtdXG5cdFx0XHQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldDpcblx0XHRcdGFjdGlvbnMgPSBjcmVhdGVGb3JtQWN0aW9uUmVkdWNlcihbXSwgZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRicmVhaztcblx0fVxuXHRyZXR1cm4gYWRkRm9ybU1lbnVBY3Rpb25zKGFjdGlvbnMsIGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCk7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGJ1dHRvbiB0eXBlIGJhc2VkIG9uIEBVSS5FbXBoYXNpemVkIGFubm90YXRpb24uXG4gKlxuICogQHBhcmFtIGVtcGhhc2l6ZWQgRW1waGFzaXplZCBhbm5vdGF0aW9uIHZhbHVlLlxuICogQHJldHVybnMgVGhlIGJ1dHRvbiB0eXBlIG9yIHBhdGggYmFzZWQgZXhwcmVzc2lvbi5cbiAqL1xuZnVuY3Rpb24gZ2V0QnV0dG9uVHlwZShlbXBoYXNpemVkOiBFbXBoYXNpemVkIHwgdW5kZWZpbmVkKTogQnV0dG9uVHlwZSB7XG5cdC8vIEVtcGhhc2l6ZWQgaXMgYSBib29sZWFuIHNvIGlmIGl0J3MgZXF1YWwgdG8gdHJ1ZSB3ZSBzaG93IHRoZSBidXR0b24gYXMgR2hvc3QsIG90aGVyd2lzZSBhcyBUcmFuc3BhcmVudFxuXHRjb25zdCBidXR0b25UeXBlQ29uZGl0aW9uID0gZXF1YWwoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGVtcGhhc2l6ZWQpLCB0cnVlKTtcblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGlmRWxzZShidXR0b25UeXBlQ29uZGl0aW9uLCBCdXR0b25UeXBlLkdob3N0LCBCdXR0b25UeXBlLlRyYW5zcGFyZW50KSkgYXMgQnV0dG9uVHlwZTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBzdWJzZWN0aW9uIGJhc2VkIG9uIEZhY2V0VHlwZXMuXG4gKlxuICogQHBhcmFtIGZhY2V0RGVmaW5pdGlvblxuICogQHBhcmFtIGZhY2V0c1RvQ3JlYXRlXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIGxldmVsXG4gKiBAcGFyYW0gaGFzU2luZ2xlQ29udGVudFxuICogQHBhcmFtIGlzSGVhZGVyU2VjdGlvblxuICogQHBhcmFtIHVzZVNpbmdsZVRleHRBcmVhRmllbGRBc05vdGVzIElmIHRoZSBvbmx5IGZpZWxkIHdpdGhpbiBhIGZvcm0gY29udGFpbmVyIGlzIGEgdGV4dC1hcmVhIGZpZWxkLCB0aGUgbGFiZWwgaXMgaGlkZGVuXG4gKiBAcmV0dXJucyBBIHN1YnNlY3Rpb24gZGVmaW5pdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3ViU2VjdGlvbihcblx0ZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzLFxuXHRmYWNldHNUb0NyZWF0ZTogRmFjZXRUeXBlc1tdLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4sXG5cdGxldmVsOiBudW1iZXIsXG5cdGhhc1NpbmdsZUNvbnRlbnQ6IGJvb2xlYW4sXG5cdGlzSGVhZGVyU2VjdGlvbj86IGJvb2xlYW4sXG5cdHVzZVNpbmdsZVRleHRBcmVhRmllbGRBc05vdGVzPzogYm9vbGVhblxuKTogT2JqZWN0UGFnZVN1YlNlY3Rpb24ge1xuXHRjb25zdCBzdWJTZWN0aW9uSUQgPSBnZXRTdWJTZWN0aW9uSUQoZmFjZXREZWZpbml0aW9uKTtcblx0Y29uc3Qgb0hpZGRlbkFubm90YXRpb24gPSBmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW47XG5cdGNvbnN0IGlzVmlzaWJsZUV4cHJlc3Npb24gPSBub3QoZXF1YWwodHJ1ZSwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9IaWRkZW5Bbm5vdGF0aW9uKSkpO1xuXHRjb25zdCBpc1Zpc2liaWxpdHlEeW5hbWljID0gIWlzQ29uc3RhbnQoaXNWaXNpYmxlRXhwcmVzc2lvbikgJiYgIWlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uKG9IaWRkZW5Bbm5vdGF0aW9uKTtcblx0Y29uc3QgdGl0bGUgPSBmYWNldERlZmluaXRpb24uTGFiZWwgIT09IHVuZGVmaW5lZCA/IGNvbXBpbGVFeHByZXNzaW9uKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihmYWNldERlZmluaXRpb24uTGFiZWwpKSA6IHVuZGVmaW5lZDtcblx0Y29uc3Qgc3ViU2VjdGlvbjogQmFzZVN1YlNlY3Rpb24gPSB7XG5cdFx0aWQ6IHN1YlNlY3Rpb25JRCxcblx0XHRrZXk6IGdldFN1YlNlY3Rpb25LZXkoZmFjZXREZWZpbml0aW9uLCBzdWJTZWN0aW9uSUQpLFxuXHRcdHRpdGxlOiB0aXRsZSxcblx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5Vbmtub3duLFxuXHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0dmlzaWJsZTogY29tcGlsZUV4cHJlc3Npb24oaXNWaXNpYmxlRXhwcmVzc2lvbiksXG5cdFx0aXNWaXNpYmlsaXR5RHluYW1pYzogaXNWaXNpYmlsaXR5RHluYW1pYyxcblx0XHRsZXZlbDogbGV2ZWwsXG5cdFx0c2lkZUNvbnRlbnQ6IHVuZGVmaW5lZCxcblx0XHRvYmplY3RQYWdlTGF6eUxvYWRlckVuYWJsZWQ6IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuZ2V0RW5hYmxlTGF6eUxvYWRpbmcoKVxuXHR9O1xuXHRpZiAoaXNIZWFkZXJTZWN0aW9uKSB7XG5cdFx0c3ViU2VjdGlvbi5zdGFzaGVkID0gZ2V0U3Rhc2hlZFNldHRpbmdzRm9ySGVhZGVyRmFjZXQoZmFjZXREZWZpbml0aW9uLCBmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdHN1YlNlY3Rpb24uZmxleFNldHRpbmdzID0ge1xuXHRcdFx0ZGVzaWdudGltZTogZ2V0RGVzaWduVGltZU1ldGFkYXRhU2V0dGluZ3NGb3JIZWFkZXJGYWNldChmYWNldERlZmluaXRpb24sIGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dClcblx0XHR9O1xuXHR9XG5cdGxldCB1bnN1cHBvcnRlZFRleHQgPSBcIlwiO1xuXHRsZXZlbCsrO1xuXHRzd2l0Y2ggKGZhY2V0RGVmaW5pdGlvbi4kVHlwZSkge1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0OlxuXHRcdFx0Y29uc3QgZmFjZXRzID0gZmFjZXREZWZpbml0aW9uLkZhY2V0cztcblxuXHRcdFx0Ly8gRmlsdGVyIGZvciBhbGwgZmFjZXRzIG9mIHRoaXMgc3Vic2VjdGlvbiB0aGF0IGFyZSByZWZlcnJpbmcgdG8gYW4gYW5ub3RhdGlvbiBkZXNjcmliaW5nIGEgdmlzdWFsaXphdGlvbiAoZS5nLiB0YWJsZSBvciBjaGFydClcblx0XHRcdGNvbnN0IHZpc3VhbGl6YXRpb25GYWNldHMgPSBmYWNldHNcblx0XHRcdFx0Lm1hcCgoZmFjZXQsIGluZGV4KSA9PiAoeyBpbmRleCwgZmFjZXQgfSkpIC8vIFJlbWVtYmVyIHRoZSBpbmRleCBhc3NpZ25lZCB0byBlYWNoIGZhY2V0XG5cdFx0XHRcdC5maWx0ZXIoKHsgZmFjZXQgfSkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBpc1JlZmVyZW5jZUZhY2V0KGZhY2V0KSAmJiBmYWNldC5UYXJnZXQuJHRhcmdldCAmJiB2aXN1YWxpemF0aW9uVGVybXMuaW5jbHVkZXMoZmFjZXQuVGFyZ2V0LiR0YXJnZXQudGVybSk7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHQvLyBGaWx0ZXIgb3V0IGFsbCB2aXN1YWxpemF0aW9uIGZhY2V0czsgXCJ2aXN1YWxpemF0aW9uRmFjZXRzXCIgYW5kIFwibm9uVmlzdWFsaXphdGlvbkZhY2V0c1wiIGFyZSBkaXNqb2ludFxuXHRcdFx0Y29uc3Qgbm9uVmlzdWFsaXphdGlvbkZhY2V0cyA9IGZhY2V0cy5maWx0ZXIoXG5cdFx0XHRcdChmYWNldCkgPT4gIXZpc3VhbGl6YXRpb25GYWNldHMuZmluZCgodmlzdWFsaXphdGlvbikgPT4gdmlzdWFsaXphdGlvbi5mYWNldCA9PT0gZmFjZXQpXG5cdFx0XHQpO1xuXG5cdFx0XHRpZiAodmlzdWFsaXphdGlvbkZhY2V0cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdC8vIENvbGxlY3Rpb25GYWNldHMgd2l0aCB2aXN1YWxpemF0aW9ucyBtdXN0IGJlIGhhbmRsZWQgc2VwYXJhdGVseSBhcyB0aGV5IGNhbm5vdCBiZSBpbmNsdWRlZCBpbiBmb3Jtc1xuXHRcdFx0XHRjb25zdCB2aXN1YWxpemF0aW9uQ29udGVudDogT2JqZWN0UGFnZVN1YlNlY3Rpb25bXSA9IFtdO1xuXHRcdFx0XHRjb25zdCBmb3JtQ29udGVudDogT2JqZWN0UGFnZVN1YlNlY3Rpb25bXSA9IFtdO1xuXHRcdFx0XHRjb25zdCBtaXhlZENvbnRlbnQ6IE9iamVjdFBhZ2VTdWJTZWN0aW9uW10gPSBbXTtcblxuXHRcdFx0XHQvLyBDcmVhdGUgZWFjaCB2aXN1YWxpemF0aW9uIGZhY2V0IGFzIGlmIGl0IHdhcyBpdHMgb3duIHN1YnNlY3Rpb24gKHZpYSByZWN1cnNpb24pLCBhbmQga2VlcCB0aGVpciByZWxhdGl2ZSBvcmRlcmluZ1xuXHRcdFx0XHRmb3IgKGNvbnN0IHsgZmFjZXQgfSBvZiB2aXN1YWxpemF0aW9uRmFjZXRzKSB7XG5cdFx0XHRcdFx0dmlzdWFsaXphdGlvbkNvbnRlbnQucHVzaChjcmVhdGVTdWJTZWN0aW9uKGZhY2V0LCBbXSwgY29udmVydGVyQ29udGV4dCwgbGV2ZWwsIHRydWUsIGlzSGVhZGVyU2VjdGlvbikpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKG5vblZpc3VhbGl6YXRpb25GYWNldHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdC8vIFRoaXMgc3Vic2VjdGlvbiBpbmNsdWRlcyB2aXN1YWxpemF0aW9ucyBhbmQgb3RoZXIgY29udGVudCwgc28gaXQgaXMgYSBcIk1peGVkXCIgc3Vic2VjdGlvblxuXHRcdFx0XHRcdExvZy53YXJuaW5nKFxuXHRcdFx0XHRcdFx0YFdhcm5pbmc6IENvbGxlY3Rpb25GYWNldCAnJHtmYWNldERlZmluaXRpb24uSUR9JyBpbmNsdWRlcyBhIGNvbWJpbmF0aW9uIG9mIGVpdGhlciBhIGNoYXJ0IG9yIGEgdGFibGUgYW5kIG90aGVyIGNvbnRlbnQuIFRoaXMgY2FuIGxlYWQgdG8gcmVuZGVyaW5nIGlzc3Vlcy4gQ29uc2lkZXIgbW92aW5nIHRoZSBjaGFydCBvciB0YWJsZSBpbnRvIGEgc2VwYXJhdGUgQ29sbGVjdGlvbkZhY2V0LmBcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0Y29uc3QgZmFrZUZvcm1GYWNldCA9IHsgLi4uZmFjZXREZWZpbml0aW9uIH07XG5cdFx0XHRcdFx0ZmFrZUZvcm1GYWNldC5GYWNldHMgPSBub25WaXN1YWxpemF0aW9uRmFjZXRzO1xuXHRcdFx0XHRcdC8vIENyZWF0ZSBhIGpvaW5lZCBmb3JtIG9mIGFsbCBmYWNldHMgdGhhdCBhcmUgbm90IHJlZmVycmluZyB0byB2aXN1YWxpemF0aW9uc1xuXHRcdFx0XHRcdGZvcm1Db250ZW50LnB1c2goY3JlYXRlU3ViU2VjdGlvbihmYWtlRm9ybUZhY2V0LCBbXSwgY29udmVydGVyQ29udGV4dCwgbGV2ZWwsIGhhc1NpbmdsZUNvbnRlbnQsIGlzSGVhZGVyU2VjdGlvbikpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gTWVyZ2UgdGhlIHZpc3VhbGl6YXRpb24gY29udGVudCB3aXRoIHRoZSBmb3JtIGNvbnRlbnRcblx0XHRcdFx0aWYgKHZpc3VhbGl6YXRpb25GYWNldHMuZmluZCgoeyBpbmRleCB9KSA9PiBpbmRleCA9PT0gMCkpIHtcblx0XHRcdFx0XHQvLyBJZiB0aGUgZmlyc3QgZmFjZXQgaXMgYSB2aXN1YWxpemF0aW9uLCBkaXNwbGF5IHRoZSB2aXN1YWxpemF0aW9ucyBmaXJzdFxuXHRcdFx0XHRcdG1peGVkQ29udGVudC5wdXNoKC4uLnZpc3VhbGl6YXRpb25Db250ZW50KTtcblx0XHRcdFx0XHRtaXhlZENvbnRlbnQucHVzaCguLi5mb3JtQ29udGVudCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gT3RoZXJ3aXNlLCBkaXNwbGF5IHRoZSBmb3JtIGZpcnN0XG5cdFx0XHRcdFx0bWl4ZWRDb250ZW50LnB1c2goLi4uZm9ybUNvbnRlbnQpO1xuXHRcdFx0XHRcdG1peGVkQ29udGVudC5wdXNoKC4uLnZpc3VhbGl6YXRpb25Db250ZW50KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IG1peGVkU3ViU2VjdGlvbjogTWl4ZWRTdWJTZWN0aW9uID0ge1xuXHRcdFx0XHRcdC4uLnN1YlNlY3Rpb24sXG5cdFx0XHRcdFx0dHlwZTogU3ViU2VjdGlvblR5cGUuTWl4ZWQsXG5cdFx0XHRcdFx0bGV2ZWw6IGxldmVsLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IG1peGVkQ29udGVudFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRyZXR1cm4gbWl4ZWRTdWJTZWN0aW9uO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gVGhpcyBDb2xsZWN0aW9uRmFjZXQgb25seSBpbmNsdWRlcyBjb250ZW50IHRoYXQgY2FuIGJlIHJlbmRlcmVkIGluIGEgbWVyZ2VkIGZvcm1cblx0XHRcdFx0Y29uc3QgZmFjZXRBY3Rpb25zID0gZ2V0RmFjZXRBY3Rpb25zKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRcdFx0Zm9ybUNvbGxlY3Rpb25TdWJTZWN0aW9uOiBGb3JtU3ViU2VjdGlvbiA9IHtcblx0XHRcdFx0XHRcdC4uLnN1YlNlY3Rpb24sXG5cdFx0XHRcdFx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5Gb3JtLFxuXHRcdFx0XHRcdFx0Zm9ybURlZmluaXRpb246IGNyZWF0ZUZvcm1EZWZpbml0aW9uKFxuXHRcdFx0XHRcdFx0XHRmYWNldERlZmluaXRpb24sXG5cdFx0XHRcdFx0XHRcdGNvbXBpbGVFeHByZXNzaW9uKGlzVmlzaWJsZUV4cHJlc3Npb24pLFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRcdFx0XHRmYWNldEFjdGlvbnMuYWN0aW9ucyxcblx0XHRcdFx0XHRcdFx0eyB1c2VTaW5nbGVUZXh0QXJlYUZpZWxkQXNOb3RlcyB9XG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0bGV2ZWw6IGxldmVsLFxuXHRcdFx0XHRcdFx0YWN0aW9uczogZmFjZXRBY3Rpb25zLmFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5mYWNldE5hbWUgPT09IHVuZGVmaW5lZCksXG5cdFx0XHRcdFx0XHRjb21tYW5kQWN0aW9uczogZmFjZXRBY3Rpb25zLmNvbW1hbmRBY3Rpb25zXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0cmV0dXJuIGZvcm1Db2xsZWN0aW9uU3ViU2VjdGlvbjtcblx0XHRcdH1cblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0OlxuXHRcdFx0aWYgKCFmYWNldERlZmluaXRpb24uVGFyZ2V0LiR0YXJnZXQpIHtcblx0XHRcdFx0dW5zdXBwb3J0ZWRUZXh0ID0gYFVuYWJsZSB0byBmaW5kIGFubm90YXRpb25QYXRoICR7ZmFjZXREZWZpbml0aW9uLlRhcmdldC52YWx1ZX1gO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c3dpdGNoIChmYWNldERlZmluaXRpb24uVGFyZ2V0LiR0YXJnZXQudGVybSkge1xuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW06XG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5DaGFydDpcblx0XHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQ6XG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50OlxuXHRcdFx0XHRcdFx0Y29uc3QgcHJlc2VudGF0aW9uID0gZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWUsIGNvbnZlcnRlckNvbnRleHQsIHtcblx0XHRcdFx0XHRcdFx0aXNDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFudDogZ2V0Q29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbmNlKFxuXHRcdFx0XHRcdFx0XHRcdGZhY2V0RGVmaW5pdGlvbixcblx0XHRcdFx0XHRcdFx0XHRmYWNldHNUb0NyZWF0ZSxcblx0XHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdGRvTm90Q2hlY2tBcHBseVN1cHBvcnRlZDogaXNIZWFkZXJTZWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRzaG91bGRDcmVhdGVUZW1wbGF0ZUNoYXJ0VmlzdWFsaXphdGlvbjogdHJ1ZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRjb25zdCBzdWJTZWN0aW9uVGl0bGU6IHN0cmluZyA9IHN1YlNlY3Rpb24udGl0bGUgPyBzdWJTZWN0aW9uLnRpdGxlIDogXCJcIjtcblx0XHRcdFx0XHRcdGNvbnN0IGNvbnRyb2xUaXRsZSA9XG5cdFx0XHRcdFx0XHRcdChwcmVzZW50YXRpb24udmlzdWFsaXphdGlvbnNbMF0gYXMgVGFibGVWaXN1YWxpemF0aW9uKT8uYW5ub3RhdGlvbj8udGl0bGUgfHxcblx0XHRcdFx0XHRcdFx0KHByZXNlbnRhdGlvbi52aXN1YWxpemF0aW9uc1swXSBhcyBDaGFydFZpc3VhbGl6YXRpb24pPy50aXRsZTtcblx0XHRcdFx0XHRcdGNvbnN0IGlzUGFydE9mUHJldmlldyA9IGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXc/LnZhbHVlT2YoKSAhPT0gZmFsc2U7XG5cdFx0XHRcdFx0XHRjb25zdCBzaG93U3ViU2VjdGlvblRpdGxlID0gZ2V0U2hvd1N1YlNlY3Rpb25UaXRsZShjb250cm9sVGl0bGUgPz8gXCJcIiwgc3ViU2VjdGlvblRpdGxlLCBoYXNTaW5nbGVDb250ZW50KTtcblxuXHRcdFx0XHRcdFx0Ly8gRWl0aGVyIGNhbGN1bGF0ZSB0aGUgdGl0bGUgdmlzaWJpbGl0eSBzdGF0aWNhbGx5IG9yIGR5bmFtaWNhbGx5XG5cdFx0XHRcdFx0XHQvLyBBZGRpdGlvbmFsbHkgdG8gY2hlY2tpbmcgd2hldGhlciBhIHRpdGxlIGV4aXN0cyxcblx0XHRcdFx0XHRcdC8vIHdlIGFsc28gbmVlZCB0byBjaGVjayB0aGF0IHRoZSBmYWNldCB0aXRsZSBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGNvbnRyb2wgKGkuZS4gdmlzdWFsaXphdGlvbikgdGl0bGU7XG5cdFx0XHRcdFx0XHQvLyB0aGlzIGlzIGRvbmUgYnkgaW5jbHVkaW5nIFwic2hvd1N1YlNlY3Rpb25UaXRsZVwiIGluIHRoZSBhbmQgZXhwcmVzc2lvblxuXHRcdFx0XHRcdFx0Y29uc3QgZGF0YVZpc3VhbGl6YXRpb25UaXRsZVZpc2libGUgPSBpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdGlzVmlzaWJpbGl0eUR5bmFtaWMsXG5cdFx0XHRcdFx0XHRcdGFuZChpc1Zpc2libGVFeHByZXNzaW9uLCBub3QoZXF1YWwodGl0bGUsIFwidW5kZWZpbmVkXCIpKSwgc2hvd1N1YlNlY3Rpb25UaXRsZSksXG5cdFx0XHRcdFx0XHRcdGFuZChcblx0XHRcdFx0XHRcdFx0XHRjb21waWxlRXhwcmVzc2lvbihpc1Zpc2libGVFeHByZXNzaW9uKSAhPT0gdW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlICE9PSBcInVuZGVmaW5lZFwiLFxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlICE9PSB1bmRlZmluZWQsXG5cdFx0XHRcdFx0XHRcdFx0aXNWaXNpYmxlRXhwcmVzc2lvbixcblx0XHRcdFx0XHRcdFx0XHRzaG93U3ViU2VjdGlvblRpdGxlXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdGNvbnN0IGRhdGFWaXN1YWxpemF0aW9uU3ViU2VjdGlvbjogRGF0YVZpc3VhbGl6YXRpb25TdWJTZWN0aW9uID0ge1xuXHRcdFx0XHRcdFx0XHQuLi5zdWJTZWN0aW9uLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5EYXRhVmlzdWFsaXphdGlvbixcblx0XHRcdFx0XHRcdFx0bGV2ZWw6IGxldmVsLFxuXHRcdFx0XHRcdFx0XHRwcmVzZW50YXRpb246IHByZXNlbnRhdGlvbixcblx0XHRcdFx0XHRcdFx0aXNQYXJ0T2ZQcmV2aWV3LFxuXHRcdFx0XHRcdFx0XHRzaG93U3ViU2VjdGlvblRpdGxlOiBjb21waWxlRXhwcmVzc2lvbihzaG93U3ViU2VjdGlvblRpdGxlKSwgLy8gVGhpcyBpcyB1c2VkIG9uIHRoZSBPYmplY3RQYWdlU3ViU2VjdGlvblxuXHRcdFx0XHRcdFx0XHRkYXRhVmlzdWFsaXphdGlvblRpdGxlVmlzaWJsZTogY29tcGlsZUV4cHJlc3Npb24oZGF0YVZpc3VhbGl6YXRpb25UaXRsZVZpc2libGUpIC8vIFRoaXMgaXMgdXNlZCB0byBoaWRlIHRoZSBUaXRsZSBjb250cm9sIGFib3ZlIGRhdGEgdmlzdWFsaXphdGlvbnNcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRyZXR1cm4gZGF0YVZpc3VhbGl6YXRpb25TdWJTZWN0aW9uO1xuXG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5GaWVsZEdyb3VwOlxuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuSWRlbnRpZmljYXRpb246XG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5EYXRhUG9pbnQ6XG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5TdGF0dXNJbmZvOlxuXHRcdFx0XHRcdGNhc2UgQ29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcy5Db250YWN0OlxuXHRcdFx0XHRcdFx0Ly8gQWxsIHRob3NlIGVsZW1lbnQgYmVsb25nIHRvIGEgZnJvbSBmYWNldFxuXHRcdFx0XHRcdFx0Y29uc3QgZmFjZXRBY3Rpb25zID0gZ2V0RmFjZXRBY3Rpb25zKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRcdFx0XHRcdGZvcm1FbGVtZW50U3ViU2VjdGlvbjogRm9ybVN1YlNlY3Rpb24gPSB7XG5cdFx0XHRcdFx0XHRcdFx0Li4uc3ViU2VjdGlvbixcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5Gb3JtLFxuXHRcdFx0XHRcdFx0XHRcdGxldmVsOiBsZXZlbCxcblx0XHRcdFx0XHRcdFx0XHRmb3JtRGVmaW5pdGlvbjogY3JlYXRlRm9ybURlZmluaXRpb24oXG5cdFx0XHRcdFx0XHRcdFx0XHRmYWNldERlZmluaXRpb24sXG5cdFx0XHRcdFx0XHRcdFx0XHRjb21waWxlRXhwcmVzc2lvbihpc1Zpc2libGVFeHByZXNzaW9uKSxcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRmYWNldEFjdGlvbnMuYWN0aW9ucyxcblx0XHRcdFx0XHRcdFx0XHRcdHsgdXNlU2luZ2xlVGV4dEFyZWFGaWVsZEFzTm90ZXMgfVxuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0YWN0aW9uczogZmFjZXRBY3Rpb25zLmFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5mYWNldE5hbWUgPT09IHVuZGVmaW5lZCksXG5cdFx0XHRcdFx0XHRcdFx0Y29tbWFuZEFjdGlvbnM6IGZhY2V0QWN0aW9ucy5jb21tYW5kQWN0aW9uc1xuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZvcm1FbGVtZW50U3ViU2VjdGlvbjtcblxuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuTm90ZTpcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdC4uLnN1YlNlY3Rpb24sXG5cdFx0XHRcdFx0XHRcdHR5cGU6IFN1YlNlY3Rpb25UeXBlLk5vdGVzXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHR1bnN1cHBvcnRlZFRleHQgPSBgRm9yICR7ZmFjZXREZWZpbml0aW9uLlRhcmdldC4kdGFyZ2V0LnRlcm19IEZyYWdtZW50YDtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZVVSTEZhY2V0OlxuXHRcdFx0dW5zdXBwb3J0ZWRUZXh0ID0gXCJGb3IgUmVmZXJlbmNlIFVSTCBGYWNldFwiO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGJyZWFrO1xuXHR9XG5cdC8vIElmIHdlIHJlYWNoIGhlcmUgd2UgZW5kZWQgdXAgd2l0aCBhbiB1bnN1cHBvcnRlZCBTdWJTZWN0aW9uIHR5cGVcblx0Y29uc3QgdW5zdXBwb3J0ZWRTdWJTZWN0aW9uOiBVbnN1cHBvcnRlZFN1YlNlY3Rpb24gPSB7XG5cdFx0Li4uc3ViU2VjdGlvbixcblx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5Vbmtub3duLFxuXHRcdHRleHQ6IHVuc3VwcG9ydGVkVGV4dFxuXHR9O1xuXHRyZXR1cm4gdW5zdXBwb3J0ZWRTdWJTZWN0aW9uO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRvIGhpZGUgb3Igc2hvdyB0aGUgc3Vic2VjdGlvbiB0aXRsZS5cbiAqXG4gKiBAcGFyYW0gY29udHJvbFRpdGxlXG4gKiBAcGFyYW0gc3ViU2VjdGlvblRpdGxlXG4gKiBAcGFyYW0gaGFzU2luZ2xlQ29udGVudFxuICogQHJldHVybnMgQm9vbGVhbiB2YWx1ZSBvciBleHByZXNzaW9uIGZvciBzaG93U3ViU2VjdGlvblRpdGxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaG93U3ViU2VjdGlvblRpdGxlKFxuXHRjb250cm9sVGl0bGU6IHN0cmluZyxcblx0c3ViU2VjdGlvblRpdGxlOiBzdHJpbmcsXG5cdGhhc1NpbmdsZUNvbnRlbnQ6IGJvb2xlYW5cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdC8vIHZpc2libGUgc2hhbGwgYmUgdHJ1ZSBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgY29udGVudCBvciBpZiB0aGUgY29udHJvbCBhbmQgc3Vic2VjdGlvbiB0aXRsZSBhcmUgZGlmZmVyZW50XG5cdHJldHVybiBvcihub3QoaGFzU2luZ2xlQ29udGVudCksIG5vdEVxdWFsKHJlc29sdmVCaW5kaW5nU3RyaW5nKGNvbnRyb2xUaXRsZSksIHJlc29sdmVCaW5kaW5nU3RyaW5nKHN1YlNlY3Rpb25UaXRsZSkpKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRm9ybUFjdGlvblJlZHVjZXIoXG5cdGFjdGlvbnM6IEJhc2VBY3Rpb25bXSxcblx0ZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IEJhc2VBY3Rpb25bXSB7XG5cdGNvbnN0IHJlZmVyZW5jZVRhcmdldCA9IGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQuJHRhcmdldDtcblx0Y29uc3QgdGFyZ2V0VmFsdWUgPSBmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlO1xuXHRsZXQgbWFuaWZlc3RBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+ID0ge307XG5cdGxldCBkYXRhRmllbGRDb2xsZWN0aW9uOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzW10gPSBbXTtcblx0bGV0IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0W25hdmlnYXRpb25Qcm9wZXJ0eVBhdGhdID0gdGFyZ2V0VmFsdWUuc3BsaXQoXCJAXCIpO1xuXHRpZiAobmF2aWdhdGlvblByb3BlcnR5UGF0aC5sZW5ndGggPiAwKSB7XG5cdFx0aWYgKG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGFzdEluZGV4T2YoXCIvXCIpID09PSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCAtIDEpIHtcblx0XHRcdG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGggPSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLnN1YnN0cmluZygwLCBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCAtIDEpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRuYXZpZ2F0aW9uUHJvcGVydHlQYXRoID0gdW5kZWZpbmVkO1xuXHR9XG5cblx0aWYgKHJlZmVyZW5jZVRhcmdldCkge1xuXHRcdHN3aXRjaCAocmVmZXJlbmNlVGFyZ2V0LnRlcm0pIHtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuRmllbGRHcm91cDpcblx0XHRcdFx0ZGF0YUZpZWxkQ29sbGVjdGlvbiA9IChyZWZlcmVuY2VUYXJnZXQgYXMgRmllbGRHcm91cCkuRGF0YTtcblx0XHRcdFx0bWFuaWZlc3RBY3Rpb25zID0gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb248Rm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvbj4ocmVmZXJlbmNlVGFyZ2V0KS5hY3Rpb25zIGFzXG5cdFx0XHRcdFx0XHR8IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPlxuXHRcdFx0XHRcdFx0fCB1bmRlZmluZWQsXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdFx0ZmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdFx0XHQpLmFjdGlvbnM7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5JZGVudGlmaWNhdGlvbjpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuU3RhdHVzSW5mbzpcblx0XHRcdFx0aWYgKHJlZmVyZW5jZVRhcmdldC5xdWFsaWZpZXIpIHtcblx0XHRcdFx0XHRkYXRhRmllbGRDb2xsZWN0aW9uID0gcmVmZXJlbmNlVGFyZ2V0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGFjdGlvbnMgPSBkYXRhRmllbGRDb2xsZWN0aW9uLnJlZHVjZSgoYWN0aW9uUmVkdWNlciwgZGF0YUZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzKSA9PiB7XG5cdFx0XHRzd2l0Y2ggKGRhdGFGaWVsZC4kVHlwZSkge1xuXHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbjpcblx0XHRcdFx0XHRpZiAoZGF0YUZpZWxkLlJlcXVpcmVzQ29udGV4dD8udmFsdWVPZigpID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdFx0XHRcdC5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuTG93LCBJc3N1ZVR5cGUuTUFMRk9STUVEX0RBVEFGSUVMRF9GT1JfSUJOLlJFUVVJUkVTQ09OVEVYVCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChkYXRhRmllbGQuSW5saW5lPy52YWx1ZU9mKCkgPT09IHRydWUpIHtcblx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdFx0LmdldERpYWdub3N0aWNzKClcblx0XHRcdFx0XHRcdFx0LmFkZElzc3VlKElzc3VlQ2F0ZWdvcnkuQW5ub3RhdGlvbiwgSXNzdWVTZXZlcml0eS5Mb3csIElzc3VlVHlwZS5NQUxGT1JNRURfREFUQUZJRUxEX0ZPUl9JQk4uSU5MSU5FKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGRhdGFGaWVsZC5EZXRlcm1pbmluZz8udmFsdWVPZigpID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdFx0XHRcdC5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuTG93LCBJc3N1ZVR5cGUuTUFMRk9STUVEX0RBVEFGSUVMRF9GT1JfSUJOLkRFVEVSTUlOSU5HKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgbU5hdmlnYXRpb25QYXJhbWV0ZXJzOiBOYXZpZ2F0aW9uUGFyYW1ldGVycyA9IHt9O1xuXHRcdFx0XHRcdGlmIChkYXRhRmllbGQuTWFwcGluZykge1xuXHRcdFx0XHRcdFx0bU5hdmlnYXRpb25QYXJhbWV0ZXJzLnNlbWFudGljT2JqZWN0TWFwcGluZyA9IGdldFNlbWFudGljT2JqZWN0TWFwcGluZyhkYXRhRmllbGQuTWFwcGluZyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGFjdGlvblJlZHVjZXIucHVzaCh7XG5cdFx0XHRcdFx0XHR0eXBlOiBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbixcblx0XHRcdFx0XHRcdGlkOiBnZXRGb3JtSUQoZmFjZXREZWZpbml0aW9uLCBkYXRhRmllbGQpLFxuXHRcdFx0XHRcdFx0a2V5OiBLZXlIZWxwZXIuZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKGRhdGFGaWVsZCksXG5cdFx0XHRcdFx0XHR0ZXh0OiBkYXRhRmllbGQuTGFiZWw/LnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogXCJcIixcblx0XHRcdFx0XHRcdGVuYWJsZWQ6XG5cdFx0XHRcdFx0XHRcdGRhdGFGaWVsZC5OYXZpZ2F0aW9uQXZhaWxhYmxlICE9PSB1bmRlZmluZWRcblx0XHRcdFx0XHRcdFx0XHQ/IGNvbXBpbGVFeHByZXNzaW9uKGVxdWFsKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihkYXRhRmllbGQuTmF2aWdhdGlvbkF2YWlsYWJsZSksIHRydWUpKVxuXHRcdFx0XHRcdFx0XHRcdDogXCJ0cnVlXCIsXG5cdFx0XHRcdFx0XHR2aXNpYmxlOiBjb21waWxlRXhwcmVzc2lvbihub3QoZXF1YWwoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGRhdGFGaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbiksIHRydWUpKSksXG5cdFx0XHRcdFx0XHRidXR0b25UeXBlOiBnZXRCdXR0b25UeXBlKGRhdGFGaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkVtcGhhc2l6ZWQpLFxuXHRcdFx0XHRcdFx0cHJlc3M6IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRcdFx0XHRmbihcIi5faW50ZW50QmFzZWROYXZpZ2F0aW9uLm5hdmlnYXRlXCIsIFtcblx0XHRcdFx0XHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YUZpZWxkLlNlbWFudGljT2JqZWN0KSxcblx0XHRcdFx0XHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YUZpZWxkLkFjdGlvbiksXG5cdFx0XHRcdFx0XHRcdFx0bU5hdmlnYXRpb25QYXJhbWV0ZXJzXG5cdFx0XHRcdFx0XHRcdF0pXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0Y3VzdG9tRGF0YTogY29tcGlsZUV4cHJlc3Npb24oe1xuXHRcdFx0XHRcdFx0XHRzZW1hbnRpY09iamVjdDogZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGRhdGFGaWVsZC5TZW1hbnRpY09iamVjdCksXG5cdFx0XHRcdFx0XHRcdGFjdGlvbjogZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGRhdGFGaWVsZC5BY3Rpb24pXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdH0gYXMgQW5ub3RhdGlvbkFjdGlvbik7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uOlxuXHRcdFx0XHRcdGNvbnN0IGZvcm1NYW5pZmVzdEFjdGlvbnNDb25maWd1cmF0aW9uID1cblx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RDb250cm9sQ29uZmlndXJhdGlvbjxGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9uPihyZWZlcmVuY2VUYXJnZXQpLmFjdGlvbnM7XG5cdFx0XHRcdFx0Y29uc3Qga2V5OiBzdHJpbmcgPSBLZXlIZWxwZXIuZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKGRhdGFGaWVsZCk7XG5cdFx0XHRcdFx0YWN0aW9uUmVkdWNlci5wdXNoKHtcblx0XHRcdFx0XHRcdHR5cGU6IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9yQWN0aW9uLFxuXHRcdFx0XHRcdFx0aWQ6IGdldEZvcm1JRChmYWNldERlZmluaXRpb24sIGRhdGFGaWVsZCksXG5cdFx0XHRcdFx0XHRrZXk6IGtleSxcblx0XHRcdFx0XHRcdHRleHQ6IGRhdGFGaWVsZC5MYWJlbD8udG9TdHJpbmcoKSxcblx0XHRcdFx0XHRcdGFubm90YXRpb25QYXRoOiBcIlwiLFxuXHRcdFx0XHRcdFx0ZW5hYmxlZDogZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24oY29udmVydGVyQ29udGV4dCwgZGF0YUZpZWxkLkFjdGlvblRhcmdldCksXG5cdFx0XHRcdFx0XHRiaW5kaW5nOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoID8gYHsgJ3BhdGgnIDogJyR7bmF2aWdhdGlvblByb3BlcnR5UGF0aH0nfWAgOiB1bmRlZmluZWQsXG5cdFx0XHRcdFx0XHR2aXNpYmxlOiBjb21waWxlRXhwcmVzc2lvbihub3QoZXF1YWwoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGRhdGFGaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbiksIHRydWUpKSksXG5cdFx0XHRcdFx0XHRyZXF1aXJlc0RpYWxvZzogaXNBY3Rpb25XaXRoRGlhbG9nKGRhdGFGaWVsZCksXG5cdFx0XHRcdFx0XHRidXR0b25UeXBlOiBnZXRCdXR0b25UeXBlKGRhdGFGaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkVtcGhhc2l6ZWQpLFxuXHRcdFx0XHRcdFx0cHJlc3M6IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRcdFx0XHRmbihcblx0XHRcdFx0XHRcdFx0XHRcImludm9rZUFjdGlvblwiLFxuXHRcdFx0XHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZC5BY3Rpb24sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRleHRzOiBmbihcImdldEJpbmRpbmdDb250ZXh0XCIsIFtdLCBwYXRoSW5Nb2RlbChcIlwiLCBcIiRzb3VyY2VcIikpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpbnZvY2F0aW9uR3JvdXBpbmc6IChkYXRhRmllbGQuSW52b2NhdGlvbkdyb3VwaW5nID09PSBcIlVJLk9wZXJhdGlvbkdyb3VwaW5nVHlwZS9DaGFuZ2VTZXRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gXCJDaGFuZ2VTZXRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogXCJJc29sYXRlZFwiKSBhcyBPcGVyYXRpb25Hcm91cGluZ1R5cGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBkYXRhRmllbGQuTGFiZWw/LnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG1vZGVsOiBmbihcImdldE1vZGVsXCIsIFtdLCBwYXRoSW5Nb2RlbChcIi9cIiwgXCIkc291cmNlXCIpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aXNOYXZpZ2FibGU6IGlzQWN0aW9uTmF2aWdhYmxlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcm1NYW5pZmVzdEFjdGlvbnNDb25maWd1cmF0aW9uICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZm9ybU1hbmlmZXN0QWN0aW9uc0NvbmZpZ3VyYXRpb24gYXMgUmVjb3JkPHN0cmluZywgTWFuaWZlc3RBY3Rpb24+KVtrZXldXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0XHRcdHJlZihcIi5lZGl0Rmxvd1wiKVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0ZmFjZXROYW1lOiBkYXRhRmllbGQuSW5saW5lID8gZmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSA6IHVuZGVmaW5lZFxuXHRcdFx0XHRcdH0gYXMgQW5ub3RhdGlvbkFjdGlvbik7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYWN0aW9uUmVkdWNlcjtcblx0XHR9LCBhY3Rpb25zKTtcblx0fVxuXG5cdC8vIE92ZXJ3cml0aW5nIG9mIGFjdGlvbnMgaGFwcGVucyBpbiBhZGRGb3JtTWVudUFjdGlvbnNcblx0cmV0dXJuIGluc2VydEN1c3RvbUVsZW1lbnRzKGFjdGlvbnMsIG1hbmlmZXN0QWN0aW9ucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RpYWxvZyhhY3Rpb25EZWZpbml0aW9uOiBBY3Rpb24gfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuXHRpZiAoYWN0aW9uRGVmaW5pdGlvbikge1xuXHRcdGNvbnN0IGJDcml0aWNhbCA9IGFjdGlvbkRlZmluaXRpb24uYW5ub3RhdGlvbnM/LkNvbW1vbj8uSXNBY3Rpb25Dcml0aWNhbDtcblx0XHRpZiAoYWN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzLmxlbmd0aCA+IDEgfHwgYkNyaXRpY2FsKSB7XG5cdFx0XHRyZXR1cm4gXCJEaWFsb2dcIjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFwiTm9uZVwiO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gXCJOb25lXCI7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUN1c3RvbVN1YlNlY3Rpb25zKFxuXHRtYW5pZmVzdFN1YlNlY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdFN1YlNlY3Rpb24+LFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IFJlY29yZDxzdHJpbmcsIEN1c3RvbU9iamVjdFBhZ2VTdWJTZWN0aW9uPiB7XG5cdGNvbnN0IHN1YlNlY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlU3ViU2VjdGlvbj4gPSB7fTtcblx0T2JqZWN0LmtleXMobWFuaWZlc3RTdWJTZWN0aW9ucykuZm9yRWFjaChcblx0XHQoc3ViU2VjdGlvbktleSkgPT5cblx0XHRcdChzdWJTZWN0aW9uc1tzdWJTZWN0aW9uS2V5XSA9IGNyZWF0ZUN1c3RvbVN1YlNlY3Rpb24obWFuaWZlc3RTdWJTZWN0aW9uc1tzdWJTZWN0aW9uS2V5XSwgc3ViU2VjdGlvbktleSwgY29udmVydGVyQ29udGV4dCkpXG5cdCk7XG5cdHJldHVybiBzdWJTZWN0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUN1c3RvbVN1YlNlY3Rpb24oXG5cdG1hbmlmZXN0U3ViU2VjdGlvbjogTWFuaWZlc3RTdWJTZWN0aW9uLFxuXHRzdWJTZWN0aW9uS2V5OiBzdHJpbmcsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogQ3VzdG9tT2JqZWN0UGFnZVN1YlNlY3Rpb24ge1xuXHRjb25zdCBzaWRlQ29udGVudDogU2lkZUNvbnRlbnREZWYgfCB1bmRlZmluZWQgPSBtYW5pZmVzdFN1YlNlY3Rpb24uc2lkZUNvbnRlbnRcblx0XHQ/IHtcblx0XHRcdFx0dGVtcGxhdGU6IG1hbmlmZXN0U3ViU2VjdGlvbi5zaWRlQ29udGVudC50ZW1wbGF0ZSxcblx0XHRcdFx0aWQ6IGdldFNpZGVDb250ZW50SUQoc3ViU2VjdGlvbktleSksXG5cdFx0XHRcdHZpc2libGU6IGZhbHNlLFxuXHRcdFx0XHRlcXVhbFNwbGl0OiBtYW5pZmVzdFN1YlNlY3Rpb24uc2lkZUNvbnRlbnQuZXF1YWxTcGxpdFxuXHRcdCAgfVxuXHRcdDogdW5kZWZpbmVkO1xuXHRsZXQgcG9zaXRpb24gPSBtYW5pZmVzdFN1YlNlY3Rpb24ucG9zaXRpb247XG5cdGlmICghcG9zaXRpb24pIHtcblx0XHRwb3NpdGlvbiA9IHtcblx0XHRcdHBsYWNlbWVudDogUGxhY2VtZW50LkFmdGVyXG5cdFx0fTtcblx0fVxuXHRjb25zdCBpc1Zpc2libGUgPSBtYW5pZmVzdFN1YlNlY3Rpb24udmlzaWJsZSAhPT0gdW5kZWZpbmVkID8gbWFuaWZlc3RTdWJTZWN0aW9uLnZpc2libGUgOiB0cnVlO1xuXHRjb25zdCBpc0R5bmFtaWNFeHByZXNzaW9uID0gaXNWaXNpYmxlICYmIHR5cGVvZiBpc1Zpc2libGUgPT09IFwic3RyaW5nXCIgJiYgaXNWaXNpYmxlLmluZGV4T2YoXCJ7PVwiKSA9PT0gMDtcblx0Y29uc3QgbWFuaWZlc3RBY3Rpb25zID0gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChtYW5pZmVzdFN1YlNlY3Rpb24uYWN0aW9ucywgY29udmVydGVyQ29udGV4dCk7XG5cdGNvbnN0IHN1YlNlY3Rpb25EZWZpbml0aW9uID0ge1xuXHRcdHR5cGU6IFN1YlNlY3Rpb25UeXBlLlVua25vd24sXG5cdFx0aWQ6IG1hbmlmZXN0U3ViU2VjdGlvbi5pZCB8fCBnZXRDdXN0b21TdWJTZWN0aW9uSUQoc3ViU2VjdGlvbktleSksXG5cdFx0YWN0aW9uczogbWFuaWZlc3RBY3Rpb25zLmFjdGlvbnMsXG5cdFx0a2V5OiBzdWJTZWN0aW9uS2V5LFxuXHRcdHRpdGxlOiBtYW5pZmVzdFN1YlNlY3Rpb24udGl0bGUsXG5cdFx0bGV2ZWw6IDEsXG5cdFx0cG9zaXRpb246IHBvc2l0aW9uLFxuXHRcdHZpc2libGU6IG1hbmlmZXN0U3ViU2VjdGlvbi52aXNpYmxlICE9PSB1bmRlZmluZWQgPyBtYW5pZmVzdFN1YlNlY3Rpb24udmlzaWJsZSA6IFwidHJ1ZVwiLFxuXHRcdHNpZGVDb250ZW50OiBzaWRlQ29udGVudCxcblx0XHRpc1Zpc2liaWxpdHlEeW5hbWljOiBpc0R5bmFtaWNFeHByZXNzaW9uLFxuXHRcdG9iamVjdFBhZ2VMYXp5TG9hZGVyRW5hYmxlZDogbWFuaWZlc3RTdWJTZWN0aW9uLmVuYWJsZUxhenlMb2FkaW5nID8/IGZhbHNlLFxuXHRcdGNvbXBvbmVudE5hbWU6IFwiXCIsXG5cdFx0c2V0dGluZ3M6IFwiXCJcblx0fTtcblx0aWYgKG1hbmlmZXN0U3ViU2VjdGlvbi50ZW1wbGF0ZSB8fCBtYW5pZmVzdFN1YlNlY3Rpb24ubmFtZSkge1xuXHRcdHN1YlNlY3Rpb25EZWZpbml0aW9uLnR5cGUgPSBTdWJTZWN0aW9uVHlwZS5YTUxGcmFnbWVudDtcblx0XHQoc3ViU2VjdGlvbkRlZmluaXRpb24gYXMgdW5rbm93biBhcyBYTUxGcmFnbWVudFN1YlNlY3Rpb24pLnRlbXBsYXRlID0gbWFuaWZlc3RTdWJTZWN0aW9uLnRlbXBsYXRlIHx8IG1hbmlmZXN0U3ViU2VjdGlvbi5uYW1lIHx8IFwiXCI7XG5cdH0gZWxzZSBpZiAobWFuaWZlc3RTdWJTZWN0aW9uLmVtYmVkZGVkQ29tcG9uZW50ICE9PSB1bmRlZmluZWQpIHtcblx0XHRzdWJTZWN0aW9uRGVmaW5pdGlvbi50eXBlID0gU3ViU2VjdGlvblR5cGUuRW1iZWRkZWRDb21wb25lbnQ7XG5cdFx0c3ViU2VjdGlvbkRlZmluaXRpb24uY29tcG9uZW50TmFtZSA9IG1hbmlmZXN0U3ViU2VjdGlvbi5lbWJlZGRlZENvbXBvbmVudC5uYW1lO1xuXHRcdGlmIChtYW5pZmVzdFN1YlNlY3Rpb24uZW1iZWRkZWRDb21wb25lbnQuc2V0dGluZ3MgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0c3ViU2VjdGlvbkRlZmluaXRpb24uc2V0dGluZ3MgPSBKU09OLnN0cmluZ2lmeShtYW5pZmVzdFN1YlNlY3Rpb24uZW1iZWRkZWRDb21wb25lbnQuc2V0dGluZ3MpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRzdWJTZWN0aW9uRGVmaW5pdGlvbi50eXBlID0gU3ViU2VjdGlvblR5cGUuUGxhY2Vob2xkZXI7XG5cdH1cblx0cmV0dXJuIHN1YlNlY3Rpb25EZWZpbml0aW9uIGFzIEN1c3RvbU9iamVjdFBhZ2VTdWJTZWN0aW9uO1xufVxuXG4vKipcbiAqIEV2YWx1YXRlIGlmIHRoZSBjb25kZW5zZWQgbW9kZSBjYW4gYmUgYXBwbGllZCBvbiB0aGUgdGFibGUuXG4gKlxuICogQHBhcmFtIGN1cnJlbnRGYWNldFxuICogQHBhcmFtIGZhY2V0c1RvQ3JlYXRlSW5TZWN0aW9uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMgYHRydWVgIGZvciBjb21wbGlhbnQsIGZhbHNlIG90aGVyd2lzZVxuICovXG5mdW5jdGlvbiBnZXRDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFuY2UoXG5cdGN1cnJlbnRGYWNldDogRmFjZXRUeXBlcyxcblx0ZmFjZXRzVG9DcmVhdGVJblNlY3Rpb246IEZhY2V0VHlwZXNbXSxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBib29sZWFuIHtcblx0Y29uc3QgbWFuaWZlc3RXcmFwcGVyID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKTtcblx0aWYgKG1hbmlmZXN0V3JhcHBlci51c2VJY29uVGFiQmFyKCkpIHtcblx0XHQvLyBJZiB0aGUgT1AgdXNlIHRoZSB0YWIgYmFzZWQgd2UgY2hlY2sgaWYgdGhlIGZhY2V0cyB0aGF0IHdpbGwgYmUgY3JlYXRlZCBmb3IgdGhpcyBzZWN0aW9uIGFyZSBhbGwgbm9uIHZpc2libGVcblx0XHRyZXR1cm4gaGFzTm9PdGhlclZpc2libGVUYWJsZUluVGFyZ2V0cyhjdXJyZW50RmFjZXQsIGZhY2V0c1RvQ3JlYXRlSW5TZWN0aW9uKTtcblx0fSBlbHNlIHtcblx0XHRjb25zdCBlbnRpdHlUeXBlID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCk7XG5cdFx0aWYgKGVudGl0eVR5cGUuYW5ub3RhdGlvbnM/LlVJPy5GYWNldHM/Lmxlbmd0aCAmJiBlbnRpdHlUeXBlLmFubm90YXRpb25zPy5VST8uRmFjZXRzPy5sZW5ndGggPiAxKSB7XG5cdFx0XHRyZXR1cm4gaGFzTm9PdGhlclZpc2libGVUYWJsZUluVGFyZ2V0cyhjdXJyZW50RmFjZXQsIGZhY2V0c1RvQ3JlYXRlSW5TZWN0aW9uKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGhhc05vT3RoZXJWaXNpYmxlVGFibGVJblRhcmdldHMoY3VycmVudEZhY2V0OiBGYWNldFR5cGVzLCBmYWNldHNUb0NyZWF0ZUluU2VjdGlvbjogRmFjZXRUeXBlc1tdKTogYm9vbGVhbiB7XG5cdHJldHVybiBmYWNldHNUb0NyZWF0ZUluU2VjdGlvbi5ldmVyeShmdW5jdGlvbiAoc3ViRmFjZXQpIHtcblx0XHRpZiAoc3ViRmFjZXQgIT09IGN1cnJlbnRGYWNldCkge1xuXHRcdFx0aWYgKHN1YkZhY2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldCkge1xuXHRcdFx0XHRjb25zdCByZWZGYWNldCA9IHN1YkZhY2V0O1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0cmVmRmFjZXQuVGFyZ2V0Py4kdGFyZ2V0Py50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbSB8fFxuXHRcdFx0XHRcdHJlZkZhY2V0LlRhcmdldD8uJHRhcmdldD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudCB8fFxuXHRcdFx0XHRcdHJlZkZhY2V0LlRhcmdldC4kdGFyZ2V0Py50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybiByZWZGYWNldC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbiAhPT0gdW5kZWZpbmVkID8gcmVmRmFjZXQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4gOiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHN1YkNvbGxlY3Rpb25GYWNldCA9IHN1YkZhY2V0IGFzIENvbGxlY3Rpb25GYWNldFR5cGVzO1xuXHRcdFx0XHRyZXR1cm4gc3ViQ29sbGVjdGlvbkZhY2V0LkZhY2V0cy5ldmVyeShmdW5jdGlvbiAoZmFjZXQpIHtcblx0XHRcdFx0XHRjb25zdCBzdWJSZWZGYWNldCA9IGZhY2V0IGFzIFJlZmVyZW5jZUZhY2V0VHlwZXM7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0c3ViUmVmRmFjZXQuVGFyZ2V0Py4kdGFyZ2V0Py50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbSB8fFxuXHRcdFx0XHRcdFx0c3ViUmVmRmFjZXQuVGFyZ2V0Py4kdGFyZ2V0Py50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5QcmVzZW50YXRpb25WYXJpYW50IHx8XG5cdFx0XHRcdFx0XHRzdWJSZWZGYWNldC5UYXJnZXQ/LiR0YXJnZXQ/LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzdWJSZWZGYWNldC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbiAhPT0gdW5kZWZpbmVkID8gc3ViUmVmRmFjZXQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4gOiBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSk7XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BdUVZQSxjQUFjO0VBQUEsV0FBZEEsY0FBYztJQUFkQSxjQUFj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
|
|
@@ -12,6 +12,22 @@ import type {
|
|
|
12
12
|
} from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
13
13
|
import { UIAnnotationTerms, UIAnnotationTypes } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
14
14
|
import Log from "sap/base/Log";
|
|
15
|
+
import type { BindingToolkitExpression, CompiledBindingToolkitExpression } from "sap/fe/base/BindingToolkit";
|
|
16
|
+
import {
|
|
17
|
+
and,
|
|
18
|
+
compileExpression,
|
|
19
|
+
equal,
|
|
20
|
+
fn,
|
|
21
|
+
getExpressionFromAnnotation,
|
|
22
|
+
ifElse,
|
|
23
|
+
isConstant,
|
|
24
|
+
not,
|
|
25
|
+
notEqual,
|
|
26
|
+
or,
|
|
27
|
+
pathInModel,
|
|
28
|
+
ref,
|
|
29
|
+
resolveBindingString
|
|
30
|
+
} from "sap/fe/base/BindingToolkit";
|
|
15
31
|
import type { NavigationParameters } from "sap/fe/core/controllerextensions/InternalIntentBasedNavigation";
|
|
16
32
|
import type { PageContextPathTarget } from "sap/fe/core/converters/TemplateConverter";
|
|
17
33
|
import type {
|
|
@@ -39,22 +55,6 @@ import {
|
|
|
39
55
|
} from "sap/fe/core/converters/controls/ObjectPage/HeaderFacet";
|
|
40
56
|
import { IssueCategory, IssueSeverity, IssueType } from "sap/fe/core/converters/helpers/IssueManager";
|
|
41
57
|
import { KeyHelper } from "sap/fe/core/converters/helpers/Key";
|
|
42
|
-
import type { BindingToolkitExpression, CompiledBindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
|
|
43
|
-
import {
|
|
44
|
-
and,
|
|
45
|
-
compileExpression,
|
|
46
|
-
equal,
|
|
47
|
-
fn,
|
|
48
|
-
getExpressionFromAnnotation,
|
|
49
|
-
ifElse,
|
|
50
|
-
isConstant,
|
|
51
|
-
not,
|
|
52
|
-
notEqual,
|
|
53
|
-
or,
|
|
54
|
-
pathInModel,
|
|
55
|
-
ref,
|
|
56
|
-
resolveBindingString
|
|
57
|
-
} from "sap/fe/core/helpers/BindingToolkit";
|
|
58
58
|
import { isPathAnnotationExpression } from "sap/fe/core/helpers/TypeGuards";
|
|
59
59
|
import type ConverterContext from "../../ConverterContext";
|
|
60
60
|
import type { FormManifestConfiguration, ManifestAction, ManifestSubSection } from "../../ManifestSettings";
|
|
@@ -493,7 +493,8 @@ export function createSubSection(
|
|
|
493
493
|
facetsToCreate,
|
|
494
494
|
converterContext
|
|
495
495
|
),
|
|
496
|
-
doNotCheckApplySupported: isHeaderSection
|
|
496
|
+
doNotCheckApplySupported: isHeaderSection,
|
|
497
|
+
shouldCreateTemplateChartVisualization: true
|
|
497
498
|
});
|
|
498
499
|
const subSectionTitle: string = subSection.title ? subSection.title : "";
|
|
499
500
|
const controlTitle =
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2024 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["
|
|
5
|
+
sap.ui.define(["sap/fe/base/BindingToolkit", "../ManifestSettings"], function (BindingToolkit, ManifestSettings) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
@@ -44,4 +44,4 @@ sap.ui.define(["../../helpers/BindingToolkit", "../ManifestSettings"], function
|
|
|
44
44
|
_exports.getInsightsEnablement = getInsightsEnablement;
|
|
45
45
|
return _exports;
|
|
46
46
|
}, false);
|
|
47
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRJbnNpZ2h0c1Zpc2liaWxpdHkiLCJjYXJkVHlwZSIsImNvbnZlcnRlckNvbnRleHQiLCJ2aXN1YWxpemF0aW9uUGF0aCIsInN0YW5kYXJkQWN0aW9uc0NvbnRleHQiLCJ0YWJsZU1hbmlmZXN0Q29uZmlnIiwiaXNSZXNwb25zaXZlVGFibGUiLCJpc011bHRpRW50aXR5IiwiZ2V0TWFuaWZlc3RXcmFwcGVyIiwiaGFzTXVsdGlwbGVFbnRpdHlTZXRzIiwiaXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zIiwiaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyIsInZpZXdDb25maWciLCJnZXRWaWV3Q29uZmlndXJhdGlvbiIsImlzTXVsdGlUYWJzIiwidW5kZWZpbmVkIiwicGF0aHMiLCJsZW5ndGgiLCJ0ZW1wbGF0ZUJpbmRpbmdFeHByZXNzaW9uIiwiZ2V0VGVtcGxhdGVUeXBlIiwiVGVtcGxhdGVUeXBlIiwiTGlzdFJlcG9ydCIsInZpelBhdGhDb25maWd1cmF0aW9uIiwiZ2V0TWFuaWZlc3RDb250cm9sQ29uZmlndXJhdGlvbiIsImVuYWJsZUFkZENhcmRUb0luc2lnaHRzIiwidGFibGVTZXR0aW5ncyIsInRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uIiwidHlwZSIsImFuZCIsImNvbnN0YW50IiwiZXF1YWwiLCJwYXRoSW5Nb2RlbCIsImdldEluc2lnaHRzRW5hYmxlbWVudCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSW5zaWdodHNIZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuZCwgY29uc3RhbnQsIGVxdWFsLCBwYXRoSW5Nb2RlbCwgdHlwZSBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUGFnZUNvbnRleHRQYXRoVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQ2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24sIFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IFRlbXBsYXRlVHlwZSB9IGZyb20gXCIuLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IFN0YW5kYXJkQWN0aW9uc0NvbnRleHQgfSBmcm9tIFwiLi4vY29udHJvbHMvQ29tbW9uL3RhYmxlL1N0YW5kYXJkQWN0aW9uc1wiO1xuXG4vKipcbiAqIEdldHMgdGhlIGJvb2xlYW4gdmFsdWUgZm9yIHRoZSAndmlzaWJsZScgcHJvcGVydHkgb2YgdGhlICdBZGRDYXJkVG9JbnNpZ2h0cycgYWN0aW9uLlxuICpcbiAqIEBwYXJhbSBjYXJkVHlwZVxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSB2aXN1YWxpemF0aW9uUGF0aFxuICogQHBhcmFtIHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEByZXR1cm5zIEJvb2xlYW4gdmFsdWUgZm9yIHRoZSAndmlzaWJsZScgcHJvcGVydHkgb2YgdGhlICdBZGRDYXJkVG9JbnNpZ2h0cycgYWN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5zaWdodHNWaXNpYmlsaXR5KFxuXHRjYXJkVHlwZTogXCJBbmFseXRpY2FsXCIgfCBcIlRhYmxlXCIsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pixcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dD86IFN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGxldCB0YWJsZU1hbmlmZXN0Q29uZmlnLCBpc1Jlc3BvbnNpdmVUYWJsZTtcblxuXHRjb25zdCBpc011bHRpRW50aXR5ID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKS5oYXNNdWx0aXBsZUVudGl0eVNldHMoKTtcblx0Y29uc3QgaXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKS5oYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zKCk7XG5cdGNvbnN0IHZpZXdDb25maWcgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmdldFZpZXdDb25maWd1cmF0aW9uKCk7XG5cdGNvbnN0IGlzTXVsdGlUYWJzID0gdmlld0NvbmZpZyAhPT0gdW5kZWZpbmVkICYmIHZpZXdDb25maWcucGF0aHMubGVuZ3RoID4gMSA/IHRydWUgOiBmYWxzZTtcblx0Y29uc3QgdGVtcGxhdGVCaW5kaW5nRXhwcmVzc2lvbiA9IGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5MaXN0UmVwb3J0O1xuXHRjb25zdCB2aXpQYXRoQ29uZmlndXJhdGlvbiA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RDb250cm9sQ29uZmlndXJhdGlvbjxUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbiB8IENoYXJ0TWFuaWZlc3RDb25maWd1cmF0aW9uPihcblx0XHR2aXN1YWxpemF0aW9uUGF0aFxuXHQpO1xuXHRjb25zdCBlbmFibGVBZGRDYXJkVG9JbnNpZ2h0cyA9XG5cdFx0Y2FyZFR5cGUgPT09IFwiQW5hbHl0aWNhbFwiXG5cdFx0XHQ/ICh2aXpQYXRoQ29uZmlndXJhdGlvbiBhcyBDaGFydE1hbmlmZXN0Q29uZmlndXJhdGlvbik/LmVuYWJsZUFkZENhcmRUb0luc2lnaHRzID8/IHRydWVcblx0XHRcdDogKHZpelBhdGhDb25maWd1cmF0aW9uIGFzIFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uKT8udGFibGVTZXR0aW5ncz8uZW5hYmxlQWRkQ2FyZFRvSW5zaWdodHMgPz8gdHJ1ZTtcblxuXHRpZiAoY2FyZFR5cGUgPT09IFwiVGFibGVcIikge1xuXHRcdHRhYmxlTWFuaWZlc3RDb25maWcgPSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0Py50YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbjtcblx0XHRpc1Jlc3BvbnNpdmVUYWJsZSA9IHRhYmxlTWFuaWZlc3RDb25maWc/LnR5cGUgPT09IFwiUmVzcG9uc2l2ZVRhYmxlXCI7XG5cdH1cblxuXHRyZXR1cm4gYW5kKFxuXHRcdGNvbnN0YW50KGVuYWJsZUFkZENhcmRUb0luc2lnaHRzKSxcblx0XHRjb25zdGFudCh0ZW1wbGF0ZUJpbmRpbmdFeHByZXNzaW9uKSxcblx0XHRjb25zdGFudCghaXNNdWx0aUVudGl0eSksXG5cdFx0Y29uc3RhbnQoIWlzTXVsdGlUYWJzKSxcblx0XHRjb25zdGFudChjYXJkVHlwZSA9PT0gXCJUYWJsZVwiID8gKGlzUmVzcG9uc2l2ZVRhYmxlID8/IGZhbHNlKSAmJiAhaXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zIDogdHJ1ZSksXG5cdFx0ZXF1YWwocGF0aEluTW9kZWwoXCJpc0luc2lnaHRzU3VwcG9ydGVkXCIsIFwicGFnZUludGVybmFsXCIpLCB0cnVlKVxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5zaWdodHNFbmFibGVtZW50KCk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBlcXVhbChwYXRoSW5Nb2RlbChcImlzSW5zaWdodHNFbmFibGVkXCIsIFwiaW50ZXJuYWxcIiksIHRydWUpO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7O0VBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU0EscUJBQXFCLENBQ3BDQyxRQUFnQyxFQUNoQ0MsZ0JBQXlELEVBQ3pEQyxpQkFBeUIsRUFDekJDLHNCQUErQyxFQUNYO0lBQUE7SUFDcEMsSUFBSUMsbUJBQW1CLEVBQUVDLGlCQUFpQjtJQUUxQyxNQUFNQyxhQUFhLEdBQUdMLGdCQUFnQixDQUFDTSxrQkFBa0IsRUFBRSxDQUFDQyxxQkFBcUIsRUFBRTtJQUNuRixNQUFNQyx3QkFBd0IsR0FBR1IsZ0JBQWdCLENBQUNNLGtCQUFrQixFQUFFLENBQUNHLHlCQUF5QixFQUFFO0lBQ2xHLE1BQU1DLFVBQVUsR0FBR1YsZ0JBQWdCLENBQUNNLGtCQUFrQixFQUFFLENBQUNLLG9CQUFvQixFQUFFO0lBQy9FLE1BQU1DLFdBQVcsR0FBR0YsVUFBVSxLQUFLRyxTQUFTLElBQUlILFVBQVUsQ0FBQ0ksS0FBSyxDQUFDQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxLQUFLO0lBQzFGLE1BQU1DLHlCQUF5QixHQUFHaEIsZ0JBQWdCLENBQUNpQixlQUFlLEVBQUUsS0FBS0MsWUFBWSxDQUFDQyxVQUFVO0lBQ2hHLE1BQU1DLG9CQUFvQixHQUFHcEIsZ0JBQWdCLENBQUNxQiwrQkFBK0IsQ0FDNUVwQixpQkFBaUIsQ0FDakI7SUFDRCxNQUFNcUIsdUJBQXVCLEdBQzVCdkIsUUFBUSxLQUFLLFlBQVksR0FDdEIsQ0FBQ3FCLG9CQUFvQixhQUFwQkEsb0JBQW9CLHVCQUFwQkEsb0JBQW9CLENBQWlDRSx1QkFBdUIsS0FBSSxJQUFJLEdBQ3JGLENBQUNGLG9CQUFvQixhQUFwQkEsb0JBQW9CLHlDQUFwQkEsb0JBQW9CLENBQWlDRyxhQUFhLG1EQUFuRSxlQUFxRUQsdUJBQXVCLEtBQUksSUFBSTtJQUV4RyxJQUFJdkIsUUFBUSxLQUFLLE9BQU8sRUFBRTtNQUFBO01BQ3pCSSxtQkFBbUIsR0FBR0Qsc0JBQXNCLGFBQXRCQSxzQkFBc0IsdUJBQXRCQSxzQkFBc0IsQ0FBRXNCLDBCQUEwQjtNQUN4RXBCLGlCQUFpQixHQUFHLHlCQUFBRCxtQkFBbUIseURBQW5CLHFCQUFxQnNCLElBQUksTUFBSyxpQkFBaUI7SUFDcEU7SUFFQSxPQUFPQyxHQUFHLENBQ1RDLFFBQVEsQ0FBQ0wsdUJBQXVCLENBQUMsRUFDakNLLFFBQVEsQ0FBQ1gseUJBQXlCLENBQUMsRUFDbkNXLFFBQVEsQ0FBQyxDQUFDdEIsYUFBYSxDQUFDLEVBQ3hCc0IsUUFBUSxDQUFDLENBQUNmLFdBQVcsQ0FBQyxFQUN0QmUsUUFBUSxDQUFDNUIsUUFBUSxLQUFLLE9BQU8sR0FBRyxDQUFDSyxpQkFBaUIsSUFBSSxLQUFLLEtBQUssQ0FBQ0ksd0JBQXdCLEdBQUcsSUFBSSxDQUFDLEVBQ2pHb0IsS0FBSyxDQUFDQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsY0FBYyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQy9EO0VBQ0Y7RUFBQztFQUVNLFNBQVNDLHFCQUFxQixHQUFzQztJQUMxRSxPQUFPRixLQUFLLENBQUNDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUM7RUFDakU7RUFBQztFQUFBO0FBQUEifQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { and, constant, equal, pathInModel, type BindingToolkitExpression } from "sap/fe/base/BindingToolkit";
|
|
1
2
|
import type { PageContextPathTarget } from "sap/fe/core/converters/TemplateConverter";
|
|
2
|
-
import { and, constant, equal, pathInModel, type BindingToolkitExpression } from "../../helpers/BindingToolkit";
|
|
3
3
|
import type ConverterContext from "../ConverterContext";
|
|
4
4
|
import type { ChartManifestConfiguration, TableManifestConfiguration } from "../ManifestSettings";
|
|
5
5
|
import { TemplateType } from "../ManifestSettings";
|