@sapui5/sap.fe.core 1.134.0 → 1.136.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime.js +6 -62
- package/src/sap/fe/core/ActionRuntime.ts +14 -65
- package/src/sap/fe/core/AppComponent.js +10 -2
- package/src/sap/fe/core/AppComponent.ts +6 -0
- package/src/sap/fe/core/AppStateHandler.js +9 -7
- package/src/sap/fe/core/AppStateHandler.ts +7 -5
- package/src/sap/fe/core/BaseController.js +1 -1
- package/src/sap/fe/core/CommonUtils.js +8 -4
- package/src/sap/fe/core/CommonUtils.ts +19 -4
- package/src/sap/fe/core/ExtensionAPI.js +7 -5
- package/src/sap/fe/core/ExtensionAPI.ts +5 -3
- package/src/sap/fe/core/IRowBindingInterface.js +1 -1
- package/src/sap/fe/core/InsightsFormattersExtension.js +1 -1
- package/src/sap/fe/core/PageController.js +36 -6
- package/src/sap/fe/core/PageController.ts +30 -0
- package/src/sap/fe/core/ResourceModel.js +1 -1
- package/src/sap/fe/core/ReuseComponent.js +1 -1
- package/src/sap/fe/core/TemplateComponent.js +1 -1
- package/src/sap/fe/core/TemplateModel.js +1 -1
- package/src/sap/fe/core/UIProvider.js +2 -2
- package/src/sap/fe/core/UIProvider.ts +3 -32
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +34 -16
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +39 -18
- package/src/sap/fe/core/buildingBlocks/IBuildingBlockOwnerComponent.js +1 -1
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/AttributeModel.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockFormatter.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +2 -2
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +1 -0
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +7 -7
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +9 -9
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +1 -1
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +5 -3
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +3 -1
- package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +15 -15
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +19 -19
- package/src/sap/fe/core/controllerextensions/ContextSharing.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js +74 -93
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +89 -108
- package/src/sap/fe/core/controllerextensions/Feedback.js +1 -1
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +355 -0
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +387 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +36 -11
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +36 -10
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +1 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +36 -6
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +41 -1
- package/src/sap/fe/core/controllerextensions/PageReady.js +5 -2
- package/src/sap/fe/core/controllerextensions/PageReady.ts +3 -0
- package/src/sap/fe/core/controllerextensions/Paginator.js +1 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.js +1 -1
- package/src/sap/fe/core/controllerextensions/Recommendations.js +1 -1
- package/src/sap/fe/core/controllerextensions/Routing.js +9 -9
- package/src/sap/fe/core/controllerextensions/Routing.ts +4 -4
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.js +13 -6
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +13 -6
- package/src/sap/fe/core/controllerextensions/Telemetry.js +1 -1
- package/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
- package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.js +14 -11
- package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.ts +20 -14
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +4 -12
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +2 -10
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +12 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +12 -0
- package/src/sap/fe/core/controllerextensions/dialog/ODataStrictDialog.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +111 -89
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +140 -105
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +137 -79
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +133 -120
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +3 -3
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +4 -1
- package/src/sap/fe/core/controllerextensions/editFlow/editFlowConstants.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +26 -17
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +32 -23
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +3 -3
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +103 -23
- package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +144 -53
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.js +29 -11
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.ts +39 -15
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +24 -22
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +28 -26
- package/src/sap/fe/core/controllerextensions/editFlow/operations/actionHelper.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +6 -572
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +25 -873
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +98 -56
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +102 -80
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +5 -3
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +7 -4
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +1 -1
- package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.js +1 -1
- package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.js +1 -1
- package/src/sap/fe/core/controllerextensions/routing/NavigationReason.js +1 -1
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +1 -1
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.js +1 -1
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributorMixin.js +1 -1
- package/src/sap/fe/core/controls/Any.js +1 -1
- package/src/sap/fe/core/controls/AnyElement.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js +1 -1
- package/src/sap/fe/core/controls/ComponentLoader.js +1 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +3 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +8 -1
- package/src/sap/fe/core/controls/DataWatcher.js +4 -3
- package/src/sap/fe/core/controls/DataWatcher.tsx +4 -1
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
- package/src/sap/fe/core/controls/HideFormGroupAutomatically.js +10 -4
- package/src/sap/fe/core/controls/HideFormGroupAutomatically.ts +13 -2
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -1
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.js +1 -1
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.js +68 -0
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.tsx +52 -0
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.js +144 -0
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.tsx +128 -0
- package/src/sap/fe/core/controls/inlineEditFlow/DraftExistsDialog.js +53 -0
- package/src/sap/fe/core/controls/inlineEditFlow/DraftExistsDialog.tsx +39 -0
- package/src/sap/fe/core/converters/ConverterContext.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.js +3 -2
- package/src/sap/fe/core/converters/ManifestSettings.ts +42 -20
- package/src/sap/fe/core/converters/ManifestWrapper.js +8 -2
- package/src/sap/fe/core/converters/ManifestWrapper.ts +8 -0
- package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.js +2 -2
- package/src/sap/fe/core/converters/annotations/DataField.ts +2 -1
- package/src/sap/fe/core/converters/controls/Common/Action.js +55 -6
- package/src/sap/fe/core/converters/controls/Common/Action.ts +59 -3
- package/src/sap/fe/core/converters/controls/Common/Chart.js +45 -6
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +60 -9
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Form.js +21 -5
- package/src/sap/fe/core/converters/controls/Common/Form.ts +25 -5
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js +89 -1686
- package/src/sap/fe/core/converters/controls/Common/Table.ts +254 -2513
- package/src/sap/fe/core/converters/controls/Common/table/Columns.js +1701 -0
- package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +2377 -0
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +64 -15
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +76 -14
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +7 -36
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +8 -46
- package/src/sap/fe/core/converters/controls/ListReport/FilterField.js +106 -0
- package/src/sap/fe/core/converters/controls/ListReport/FilterField.ts +129 -0
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +10 -5
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +8 -3
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +5 -3
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +11 -4
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +7 -2
- package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/ID.js +1 -1
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +1 -1
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
- package/src/sap/fe/core/converters/helpers/Key.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +30 -8
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +40 -16
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +5 -3
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +5 -1
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
- package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +184 -0
- package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +240 -0
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
- package/src/sap/fe/core/designtime/messagebundle.properties +11 -0
- package/src/sap/fe/core/designtime/messagebundle_ar.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_bg.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_ca.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_cnr.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_cs.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_cy.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_da.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_de.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_el.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_en.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_en_GB.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_es.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_es_MX.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_et.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_fi.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_fr.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_fr_CA.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_hi.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_hr.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_hu.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_id.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_it.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_iw.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_ja.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_kk.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_ko.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_lt.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_lv.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_mk.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_ms.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_nl.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_no.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_pl.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_pt.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_pt_PT.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_ro.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_ru.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_sh.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_sk.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_sl.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_sr.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_sv.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_th.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_tr.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_uk.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_vi.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_zh_CN.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_zh_TW.properties +7 -0
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +1 -1
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
- package/src/sap/fe/core/formatters/FiscalFormat.js +1 -1
- package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
- package/src/sap/fe/core/formatters/StandardFormatter.js +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.js +27 -12
- package/src/sap/fe/core/formatters/ValueFormatter.ts +25 -11
- package/src/sap/fe/core/fpm/Component.js +1 -1
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.js +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +25 -4
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +28 -2
- package/src/sap/fe/core/helpers/BindingHelper.js +4 -3
- package/src/sap/fe/core/helpers/BindingHelper.ts +2 -1
- package/src/sap/fe/core/helpers/BindingToolkitEvaluator.js +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.js +6 -12
- package/src/sap/fe/core/helpers/DeleteHelper.ts +4 -9
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -1
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.js +9 -3
- package/src/sap/fe/core/helpers/FPMHelper.ts +13 -1
- package/src/sap/fe/core/helpers/HTTP503Handler.js +1 -1
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +1 -1
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -1
- package/src/sap/fe/core/helpers/LoaderUtils.js +1 -1
- package/src/sap/fe/core/helpers/ManifestHelper.js +1 -1
- package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
- package/src/sap/fe/core/helpers/MetaModelFunction.js +1 -1
- package/src/sap/fe/core/helpers/MetaPath.js +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.js +15 -5
- package/src/sap/fe/core/helpers/ModelHelper.ts +15 -4
- package/src/sap/fe/core/helpers/PasteHelper.js +39 -40
- package/src/sap/fe/core/helpers/PasteHelper.ts +49 -51
- package/src/sap/fe/core/helpers/PromiseKeeper.js +1 -1
- package/src/sap/fe/core/helpers/RecommendationHelper.js +1 -1
- package/src/sap/fe/core/helpers/ResourceModelHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SizeHelper.js +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
- package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +1 -1
- package/src/sap/fe/core/helpers/Synchronization.js +1 -1
- package/src/sap/fe/core/helpers/TitleHelper.js +1 -1
- package/src/sap/fe/core/helpers/ToES6Promise.js +1 -1
- package/src/sap/fe/core/helpers/TypeGuards.js +1 -1
- package/src/sap/fe/core/helpers/WebSocket.js +11 -2
- package/src/sap/fe/core/helpers/WebSocket.ts +8 -0
- package/src/sap/fe/core/library.js +16 -4
- package/src/sap/fe/core/library.support.js +1 -1
- package/src/sap/fe/core/library.ts +1 -0
- package/src/sap/fe/core/manifestMerger/AddNewPage.js +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/src/sap/fe/core/messagebundle.properties +41 -2
- package/src/sap/fe/core/messagebundle_ar.properties +25 -4
- package/src/sap/fe/core/messagebundle_bg.properties +25 -4
- package/src/sap/fe/core/messagebundle_ca.properties +24 -3
- package/src/sap/fe/core/messagebundle_cnr.properties +25 -4
- package/src/sap/fe/core/messagebundle_cs.properties +23 -2
- package/src/sap/fe/core/messagebundle_cy.properties +24 -3
- package/src/sap/fe/core/messagebundle_da.properties +25 -4
- package/src/sap/fe/core/messagebundle_de.properties +28 -7
- package/src/sap/fe/core/messagebundle_el.properties +23 -2
- package/src/sap/fe/core/messagebundle_en.properties +25 -4
- package/src/sap/fe/core/messagebundle_en_GB.properties +25 -4
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +26 -5
- package/src/sap/fe/core/messagebundle_es.properties +23 -2
- package/src/sap/fe/core/messagebundle_es_MX.properties +23 -2
- package/src/sap/fe/core/messagebundle_et.properties +23 -2
- package/src/sap/fe/core/messagebundle_fi.properties +23 -2
- package/src/sap/fe/core/messagebundle_fr.properties +26 -5
- package/src/sap/fe/core/messagebundle_fr_CA.properties +23 -2
- package/src/sap/fe/core/messagebundle_hi.properties +24 -3
- package/src/sap/fe/core/messagebundle_hr.properties +27 -6
- package/src/sap/fe/core/messagebundle_hu.properties +23 -2
- package/src/sap/fe/core/messagebundle_id.properties +23 -2
- package/src/sap/fe/core/messagebundle_it.properties +25 -4
- package/src/sap/fe/core/messagebundle_iw.properties +24 -3
- package/src/sap/fe/core/messagebundle_ja.properties +24 -3
- package/src/sap/fe/core/messagebundle_kk.properties +23 -2
- package/src/sap/fe/core/messagebundle_ko.properties +25 -4
- package/src/sap/fe/core/messagebundle_lt.properties +23 -2
- package/src/sap/fe/core/messagebundle_lv.properties +25 -4
- package/src/sap/fe/core/messagebundle_mk.properties +23 -2
- package/src/sap/fe/core/messagebundle_ms.properties +24 -3
- package/src/sap/fe/core/messagebundle_nl.properties +23 -2
- package/src/sap/fe/core/messagebundle_no.properties +23 -2
- package/src/sap/fe/core/messagebundle_pl.properties +25 -4
- package/src/sap/fe/core/messagebundle_pt.properties +25 -4
- package/src/sap/fe/core/messagebundle_pt_PT.properties +24 -3
- package/src/sap/fe/core/messagebundle_ro.properties +25 -4
- package/src/sap/fe/core/messagebundle_ru.properties +24 -3
- package/src/sap/fe/core/messagebundle_sh.properties +25 -4
- package/src/sap/fe/core/messagebundle_sk.properties +24 -3
- package/src/sap/fe/core/messagebundle_sl.properties +28 -7
- package/src/sap/fe/core/messagebundle_sr.properties +25 -4
- package/src/sap/fe/core/messagebundle_sv.properties +23 -2
- package/src/sap/fe/core/messagebundle_th.properties +25 -4
- package/src/sap/fe/core/messagebundle_tr.properties +23 -2
- package/src/sap/fe/core/messagebundle_uk.properties +25 -4
- package/src/sap/fe/core/messagebundle_vi.properties +25 -4
- package/src/sap/fe/core/messagebundle_zh_CN.properties +26 -5
- package/src/sap/fe/core/messagebundle_zh_TW.properties +24 -3
- package/src/sap/fe/core/rootView/Fcl.controller.js +11 -7
- package/src/sap/fe/core/rootView/Fcl.controller.ts +16 -7
- package/src/sap/fe/core/rootView/NavContainer.controller.js +3 -3
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.js +87 -35
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +113 -57
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
- package/src/sap/fe/core/services/CollaborationManagerServiceFactory.js +29 -13
- package/src/sap/fe/core/services/CollaborationManagerServiceFactory.ts +27 -13
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.js +1 -1
- package/src/sap/fe/core/services/ContextSharingServiceFactory.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +8 -2
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +6 -0
- package/src/sap/fe/core/services/InlineEditServiceFactory.js +11 -5
- package/src/sap/fe/core/services/InlineEditServiceFactory.ts +9 -3
- package/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js +14 -7
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +11 -5
- package/src/sap/fe/core/services/ShellServicesFactory.js +5 -4
- package/src/sap/fe/core/services/ShellServicesFactory.ts +5 -3
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +28 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +32 -3
- package/src/sap/fe/core/services/TelemetryServiceFactory.js +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
- package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +1 -1
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +1 -1
- package/src/sap/fe/core/services/valueHelpService/HistoryOptOutProvider.js +1 -1
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
- package/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +1 -1
- package/src/sap/fe/core/support/AnnotationIssue.support.js +1 -1
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +1 -1
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
- package/src/sap/fe/core/templating/ActionHelper.js +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.js +1 -1
- package/src/sap/fe/core/templating/CriticalityFormatters.js +1 -1
- package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js +199 -59
- package/src/sap/fe/core/templating/EntitySetHelper.ts +221 -61
- package/src/sap/fe/core/templating/EntityTypeHelper.js +1 -1
- package/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.js +1 -1
- package/src/sap/fe/core/templating/SemanticObjectHelper.js +8 -10
- package/src/sap/fe/core/templating/SemanticObjectHelper.ts +11 -10
- package/src/sap/fe/core/templating/UIFormatters.js +5 -2
- package/src/sap/fe/core/templating/UIFormatters.ts +3 -0
- package/src/sap/fe/core/type/Date.js +1 -1
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +1 -1
- package/src/sap/fe/core/type/EDM.js +1 -1
- package/src/sap/fe/core/type/Email.js +1 -1
- package/src/sap/fe/core/type/FiscalDate.js +1 -1
- package/src/sap/fe/core/type/InputMask.js +1 -1
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.js +0 -288
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.tsx +0 -208
- package/src/sap/fe/core/controllerextensions/editFlow/ODataOperation.js +0 -404
- package/src/sap/fe/core/controllerextensions/editFlow/ODataOperation.ts +0 -502
- package/src/sap/fe/core/designtime/TextArrangementChangeAction.js +0 -100
- package/src/sap/fe/core/designtime/TextArrangementChangeAction.ts +0 -134
- package/src/sap/fe/core/operationsHelper.js +0 -192
- package/src/sap/fe/core/operationsHelper.ts +0 -277
|
@@ -3,8 +3,11 @@ import type { FormElementType } from "sap/fe/core/converters/controls/Common/For
|
|
|
3
3
|
import type { AnalyticalConfiguration } from "sap/fe/core/converters/controls/Common/Table";
|
|
4
4
|
import type { FlexSettings, HeaderFacetType } from "sap/fe/core/converters/controls/ObjectPage/HeaderFacet";
|
|
5
5
|
import type { FieldEditStyle } from "sap/fe/macros/field/FieldFormatOptions";
|
|
6
|
+
import type Control from "sap/ui/core/Control";
|
|
6
7
|
import type { ManifestContent } from "sap/ui/core/Manifest";
|
|
7
|
-
import type
|
|
8
|
+
import type FormContainer from "sap/ui/layout/form/FormContainer";
|
|
9
|
+
import type { TableRowCountMode, TableType } from "./controls/Common/Table";
|
|
10
|
+
import type { ColumnExportSettings } from "./controls/Common/table/Columns";
|
|
8
11
|
import type { ConfigurableRecord, Position, Positionable } from "./helpers/ConfigurableObject";
|
|
9
12
|
|
|
10
13
|
// ENUMS
|
|
@@ -150,6 +153,10 @@ export type BaseManifestSettings = {
|
|
|
150
153
|
header?: {
|
|
151
154
|
facets?: ConfigurableRecord<ManifestHeaderFacet>;
|
|
152
155
|
actions?: ConfigurableRecord<ManifestAction>;
|
|
156
|
+
customHeader?: {
|
|
157
|
+
expandedHeaderFragment: string;
|
|
158
|
+
collapsedHeaderFragment: string;
|
|
159
|
+
};
|
|
153
160
|
};
|
|
154
161
|
footer?: {
|
|
155
162
|
actions?: ConfigurableRecord<ManifestAction>;
|
|
@@ -212,13 +219,14 @@ type FacetsControlConfiguration = {
|
|
|
212
219
|
sections: ConfigurableRecord<ManifestSection>;
|
|
213
220
|
};
|
|
214
221
|
|
|
215
|
-
type ManifestFormElement = Positionable &
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
+
type ManifestFormElement = Positionable &
|
|
223
|
+
FieldManifestOverrides & {
|
|
224
|
+
type: FormElementType;
|
|
225
|
+
template: string;
|
|
226
|
+
label?: string;
|
|
227
|
+
property?: string;
|
|
228
|
+
formatOptions?: FormatOptionsType;
|
|
229
|
+
};
|
|
222
230
|
|
|
223
231
|
export type FormManifestConfiguration = {
|
|
224
232
|
fields: ConfigurableRecord<ManifestFormElement>;
|
|
@@ -422,7 +430,10 @@ export type ChartPersonalizationManifestSettings =
|
|
|
422
430
|
|
|
423
431
|
export type ChartManifestConfiguration = {
|
|
424
432
|
chartSettings?: {
|
|
425
|
-
personalization
|
|
433
|
+
personalization?: ChartPersonalizationManifestSettings;
|
|
434
|
+
header?: string;
|
|
435
|
+
headerVisible?: boolean;
|
|
436
|
+
selectionMode?: "Multiple" | "None" | "Single";
|
|
426
437
|
};
|
|
427
438
|
actions?: Record<string, ManifestAction>;
|
|
428
439
|
enableAddCardToInsights?: boolean;
|
|
@@ -455,6 +466,7 @@ export type ManifestAction = {
|
|
|
455
466
|
determining?: boolean;
|
|
456
467
|
facetName?: string;
|
|
457
468
|
command?: string | undefined;
|
|
469
|
+
isAIOperation?: boolean | undefined;
|
|
458
470
|
};
|
|
459
471
|
|
|
460
472
|
export type BaseCustomDefinedTableColumn = Positionable & {
|
|
@@ -472,7 +484,7 @@ export type BaseCustomDefinedTableColumn = Positionable & {
|
|
|
472
484
|
export type CustomDefinedTableColumn = BaseCustomDefinedTableColumn & {
|
|
473
485
|
type?: string;
|
|
474
486
|
header: string;
|
|
475
|
-
template: string;
|
|
487
|
+
template: string | Control;
|
|
476
488
|
properties?: string[];
|
|
477
489
|
};
|
|
478
490
|
|
|
@@ -489,6 +501,11 @@ export type TableColumnSettings = {
|
|
|
489
501
|
showMicroChartLabel?: boolean;
|
|
490
502
|
};
|
|
491
503
|
|
|
504
|
+
export type FieldManifestOverrides = {
|
|
505
|
+
readOnly?: boolean;
|
|
506
|
+
semanticObject?: string;
|
|
507
|
+
};
|
|
508
|
+
|
|
492
509
|
/**
|
|
493
510
|
* Collection of format options for multiline text fields on a form or in a table
|
|
494
511
|
*/
|
|
@@ -507,6 +524,12 @@ export type FormatOptionsType = {
|
|
|
507
524
|
radioButtonsHorizontalLayout?: boolean;
|
|
508
525
|
};
|
|
509
526
|
|
|
527
|
+
export type QuickVariantSelectionConfiguration = {
|
|
528
|
+
paths: { annotationPath: string }[];
|
|
529
|
+
hideTableTitle?: boolean;
|
|
530
|
+
showCounts?: boolean;
|
|
531
|
+
};
|
|
532
|
+
|
|
510
533
|
export type TableManifestConfiguration = {
|
|
511
534
|
tableSettings?: TableManifestSettingsConfiguration;
|
|
512
535
|
actions?: Record<string, ManifestAction>;
|
|
@@ -525,10 +548,11 @@ export type TablePersonalizationConfiguration =
|
|
|
525
548
|
export type MassEditConfiguration =
|
|
526
549
|
| boolean
|
|
527
550
|
| Partial<{
|
|
528
|
-
customFragment: string;
|
|
551
|
+
customFragment: string | FormContainer;
|
|
529
552
|
visibleFields: string;
|
|
530
553
|
ignoredFields: string;
|
|
531
554
|
operationGroupingMode: OperationGroupingMode;
|
|
555
|
+
fromInline: boolean;
|
|
532
556
|
}>;
|
|
533
557
|
|
|
534
558
|
export type TableManifestSettingsConfiguration = {
|
|
@@ -549,20 +573,14 @@ export type TableManifestSettingsConfiguration = {
|
|
|
549
573
|
outbound?: string;
|
|
550
574
|
};
|
|
551
575
|
isNodeMovable?: string;
|
|
576
|
+
isNodeCopyable?: string;
|
|
552
577
|
isMoveToPositionAllowed?: string;
|
|
578
|
+
isCopyToPositionAllowed?: string;
|
|
553
579
|
enablePastingOfComputedProperties?: boolean;
|
|
554
580
|
enableExport?: boolean;
|
|
555
581
|
frozenColumnCount?: number;
|
|
556
582
|
widthIncludingColumnHeader?: boolean;
|
|
557
|
-
quickVariantSelection?:
|
|
558
|
-
paths: [
|
|
559
|
-
{
|
|
560
|
-
annotationPath: string;
|
|
561
|
-
}
|
|
562
|
-
];
|
|
563
|
-
hideTableTitle?: boolean;
|
|
564
|
-
showCounts?: boolean;
|
|
565
|
-
};
|
|
583
|
+
quickVariantSelection?: QuickVariantSelectionConfiguration;
|
|
566
584
|
personalization?: TablePersonalizationConfiguration;
|
|
567
585
|
/**
|
|
568
586
|
* Defines how many items in a table can be selected. You have the following options:
|
|
@@ -579,7 +597,11 @@ export type TableManifestSettingsConfiguration = {
|
|
|
579
597
|
condensedTableLayout?: boolean;
|
|
580
598
|
selectAll?: boolean;
|
|
581
599
|
selectionLimit?: number;
|
|
600
|
+
ignoredFields?: string;
|
|
601
|
+
isSearchable?: boolean;
|
|
582
602
|
enablePaste?: boolean;
|
|
603
|
+
rowPress?: string;
|
|
604
|
+
readOnly?: boolean;
|
|
583
605
|
disableCopyToClipboard?: boolean;
|
|
584
606
|
enableFullScreen?: boolean;
|
|
585
607
|
enableMassEdit?: MassEditConfiguration;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
-
* (c) Copyright 2009-
|
|
3
|
+
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
5
|
sap.ui.define(["sap/base/util/merge", "sap/fe/core/converters/ManifestSettings", "sap/ui/Device"], function (merge, ManifestSettings, Device) {
|
|
6
6
|
"use strict";
|
|
@@ -69,6 +69,12 @@ sap.ui.define(["sap/base/util/merge", "sap/fe/core/converters/ManifestSettings",
|
|
|
69
69
|
};
|
|
70
70
|
_proto.useHiddenFilterBar = function useHiddenFilterBar() {
|
|
71
71
|
return !!this.oManifestSettings?.useHiddenFilterBar;
|
|
72
|
+
};
|
|
73
|
+
_proto.getCollapsedHeaderFragment = function getCollapsedHeaderFragment() {
|
|
74
|
+
return this.oManifestSettings?.content?.header?.customHeader?.collapsedHeaderFragment;
|
|
75
|
+
};
|
|
76
|
+
_proto.getExpandedHeaderFragment = function getExpandedHeaderFragment() {
|
|
77
|
+
return this.oManifestSettings?.content?.header?.customHeader?.expandedHeaderFragment;
|
|
72
78
|
}
|
|
73
79
|
|
|
74
80
|
/**
|
|
@@ -430,4 +436,4 @@ sap.ui.define(["sap/base/util/merge", "sap/fe/core/converters/ManifestSettings",
|
|
|
430
436
|
}();
|
|
431
437
|
return ManifestWrapper;
|
|
432
438
|
}, false);
|
|
433
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlbnN1cmVBbm5vdGF0aW9uUGF0aCIsIm9iaiIsInByb3BlcnR5IiwicHJvcGVydHlWYWx1ZSIsIkFycmF5IiwiaXNBcnJheSIsImZvckVhY2giLCJlbnRyeSIsImluY2x1ZGVzIiwiTWFuaWZlc3RXcmFwcGVyIiwib01hbmlmZXN0U2V0dGluZ3MiLCJhcHBDb21wb25lbnQiLCJ2aWV3cyIsInBhdGhzIiwicGF0aCIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwiT2JqZWN0IiwidmFsdWVzIiwicXVpY2tWYXJpYW50U2VsZWN0aW9uIiwidGFibGVTZXR0aW5ncyIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFNhcEZlTWFuaWZlc3RDb25maWd1cmF0aW9uIiwic2FwRmVNYW5pZmVzdENvbmZpZ3VyYXRpb24iLCJnZXRUZW1wbGF0ZVR5cGUiLCJjb252ZXJ0ZXJUeXBlIiwiaXNGaWx0ZXJCYXJIaWRkZW4iLCJoaWRlRmlsdGVyQmFyIiwidXNlSGlkZGVuRmlsdGVyQmFyIiwiaXNEZXNrdG9wIiwiaXNQaG9uZSIsImdldEZvcm1Db250YWluZXIiLCJmYWNldFRhcmdldCIsImdldEhlYWRlckZhY2V0cyIsIm1lcmdlIiwiZmFjZXRzIiwiY29udGVudCIsImhlYWRlciIsImdldEhlYWRlckFjdGlvbnMiLCJhY3Rpb25zIiwiZ2V0Rm9vdGVyQWN0aW9ucyIsImZvb3RlciIsImdldFZhcmlhbnRNYW5hZ2VtZW50IiwidmFyaWFudE1hbmFnZW1lbnQiLCJWYXJpYW50TWFuYWdlbWVudFR5cGUiLCJOb25lIiwiZ2V0RGVmYXVsdFRlbXBsYXRlQW5ub3RhdGlvblBhdGgiLCJkZWZhdWx0VGVtcGxhdGVBbm5vdGF0aW9uUGF0aCIsImdldENvbnRyb2xDb25maWd1cmF0aW9uIiwic0Fubm90YXRpb25QYXRoIiwiZ2V0TmF2aWdhdGlvbkNvbmZpZ3VyYXRpb24iLCJuYXZpZ2F0aW9uT3JDb2xsZWN0aW9uTmFtZSIsIm5hdmlnYXRpb24iLCJnZXRWaWV3TGV2ZWwiLCJ2aWV3TGV2ZWwiLCJnZXRDb250ZW50RGVuc2l0aWVzIiwiY29udGVudERlbnNpdGllcyIsImNvenkiLCJjb21wYWN0IiwiaXNGY2xFbmFibGVkIiwiZmNsRW5hYmxlZCIsImlzQ29uZGVuc2VkTGF5b3V0Q29tcGxpYW50IiwibWFuaWZlc3RDb250ZW50RGVuc2l0eSIsInNoZWxsQ29udGVudERlbnNpdHkiLCJpc1NtYWxsRGV2aWNlIiwiRGV2aWNlIiwic3lzdGVtIiwiZGVza3RvcCIsInJlc2l6ZSIsIndpZHRoIiwiaXNDb21wYWN0VHlwZSIsImdldE91dGJvdW5kTmF2aWdhdGlvbkVudHJpZXMiLCJnZXRNYW5pZmVzdEVudHJ5IiwiY3Jvc3NOYXZpZ2F0aW9uIiwib3V0Ym91bmRzIiwiZ2V0U2VjdGlvbkxheW91dCIsInNlY3Rpb25MYXlvdXQiLCJnZXRTZWN0aW9ucyIsInNlY3Rpb25zIiwiYm9keSIsImlzSGVhZGVyRWRpdGFibGUiLCJnZXRTaG93T2JqZWN0UGFnZUhlYWRlciIsImVkaXRhYmxlSGVhZGVyQ29udGVudCIsImdldFVzZVRleHRGb3JOb0RhdGFNZXNzYWdlcyIsInVzZVRleHRGb3JOb0RhdGFNZXNzYWdlcyIsImdldFNob3dBbmNob3JCYXIiLCJhbmNob3JCYXJWaXNpYmxlIiwidW5kZWZpbmVkIiwidXNlSWNvblRhYkJhciIsInZpc2libGUiLCJnZXRFbmFibGVMYXp5TG9hZGluZyIsImVuYWJsZUxhenlMb2FkaW5nIiwiZ2V0VHJhbnNwb3J0U2VsZWN0aW9uIiwidHJhbnNwb3J0U2VsZWN0aW9uIiwiZ2V0Vmlld0NvbmZpZ3VyYXRpb24iLCJnZXRTdGlja3lNdWx0aVRhYkhlYWRlckNvbmZpZ3VyYXRpb24iLCJiU3RpY2t5TXVsdGlUYWJIZWFkZXIiLCJzdGlja3lNdWx0aVRhYkhlYWRlciIsImdldEtQSUNvbmZpZ3VyYXRpb24iLCJrZXlQZXJmb3JtYW5jZUluZGljYXRvcnMiLCJnZXRGaWx0ZXJDb25maWd1cmF0aW9uIiwiY29uZmlnUGF0aCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImhhc011bHRpcGxlRW50aXR5U2V0cyIsInZpZXdDb25maWciLCJtYW5pZmVzdEVudGl0eVNldCIsImVudGl0eVNldCIsImZpbmQiLCJ0ZW1wbGF0ZSIsImhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMiLCJwcmltYXJ5Iiwic2Vjb25kYXJ5Iiwic29tZSIsInByaW1hcnlQYXRoIiwic2Vjb25kYXJ5UGF0aCIsImdldENvbnRleHRQYXRoIiwiY29udGV4dFBhdGgiLCJpc1ZpZXdQYXRoQ29uZmlndXJhdGlvbiIsImlzQ29tYmluZWRWaWV3Q29uZmlndXJhdGlvbiIsImlzQ3VzdG9tVmlld0NvbmZpZ3VyYXRpb24iLCJtdWx0aXBsZVZpZXdzQ29uZmlndXJhdGlvbiIsImdldEVudGl0eVNldCIsImhhc0lubGluZUVkaXQiLCJpbmxpbmVFZGl0IiwiZGlzYWJsZWRGaWVsZHMiLCJlbmFibGVkRmllbGRzIiwiZ2V0SW5saW5lRWRpdEVuYWJsZWRGaWVsZHMiLCJnZXRJbmxpbmVFZGl0RGlzYWJsZWRGaWVsZHMiLCJnZXRJbmxpbmVDb25uZWN0ZWRGaWVsZHMiLCJjb25uZWN0ZWRGaWVsZHMiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1hbmlmZXN0V3JhcHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWVyZ2UgZnJvbSBcInNhcC9iYXNlL3V0aWwvbWVyZ2VcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7XG5cdEJhc2VNYW5pZmVzdFNldHRpbmdzLFxuXHRDb21iaW5lZFZpZXdQYXRoQ29uZmlndXJhdGlvbixcblx0Q29udGVudERlbnNpdGllc1R5cGUsXG5cdENvbnRyb2xNYW5pZmVzdENvbmZpZ3VyYXRpb24sXG5cdEN1c3RvbVZpZXdUZW1wbGF0ZUNvbmZpZ3VyYXRpb24sXG5cdEZpbHRlck1hbmlmZXN0Q29uZmlndXJhdGlvbixcblx0Rm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvbixcblx0S1BJQ29uZmlndXJhdGlvbixcblx0TGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MsXG5cdE1hbmlmZXN0QWN0aW9uLFxuXHRNYW5pZmVzdEhlYWRlckZhY2V0LFxuXHRNYW5pZmVzdFNlY3Rpb24sXG5cdE11bHRpcGxlVmlld3NDb25maWd1cmF0aW9uLFxuXHROYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9uLFxuXHRPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncyxcblx0U2luZ2xlVmlld1BhdGhDb25maWd1cmF0aW9uLFxuXHRUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbixcblx0VGVtcGxhdGVUeXBlLFxuXHRUcmFuc3BvcnRTZWxlY3Rpb25EZWZpbml0aW9uLFxuXHRWaWV3Q29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBWYXJpYW50TWFuYWdlbWVudFR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ3VyYWJsZVJlY29yZCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgRGV2aWNlIGZyb20gXCJzYXAvdWkvRGV2aWNlXCI7XG5pbXBvcnQgdHlwZSB7IE1hbmlmZXN0Q29udGVudCwgTWFuaWZlc3RPdXRib3VuZEVudHJ5IH0gZnJvbSBcInNhcC91aS9jb3JlL01hbmlmZXN0XCI7XG5cbmZ1bmN0aW9uIGVuc3VyZUFubm90YXRpb25QYXRoPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCB8IHVuZGVmaW5lZCwgcHJvcGVydHk6IGtleW9mIFQpOiB2b2lkIHtcblx0Y29uc3QgcHJvcGVydHlWYWx1ZSA9IG9iaj8uW3Byb3BlcnR5XTtcblx0aWYgKEFycmF5LmlzQXJyYXkocHJvcGVydHlWYWx1ZSkpIHtcblx0XHRwcm9wZXJ0eVZhbHVlLmZvckVhY2goKGVudHJ5KSA9PiBlbnN1cmVBbm5vdGF0aW9uUGF0aChlbnRyeSwgXCJhbm5vdGF0aW9uUGF0aFwiKSk7XG5cdH0gZWxzZSBpZiAocHJvcGVydHlWYWx1ZSAmJiB0eXBlb2YgcHJvcGVydHlWYWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAhcHJvcGVydHlWYWx1ZS5pbmNsdWRlcyhcIkBcIikpIHtcblx0XHRvYmpbcHJvcGVydHldID0gKFwiQFwiICsgcHJvcGVydHlWYWx1ZSkgYXMgVFtrZXlvZiBUXTtcblx0fVxufVxuXG4vKipcbiAqXG4gKi9cbmNsYXNzIE1hbmlmZXN0V3JhcHBlciB7XG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgd3JhcHBlciBvYmplY3QgdG8gZW5zdXJlIHRoZSBkYXRhIHJldHVybmVkIGZyb20gdGhlIG1hbmlmZXN0IGlzIGNvbnNpc3RlbnQgYW5kIGV2ZXJ5dGhpbmcgaXMgbWVyZ2VkIGNvcnJlY3RseS5cblx0ICogQHBhcmFtIG9NYW5pZmVzdFNldHRpbmdzIFRoZSBtYW5pZmVzdCBzZXR0aW5ncyBmb3IgdGhlIGN1cnJlbnQgcGFnZVxuXHQgKiBAcGFyYW0gYXBwQ29tcG9uZW50IFRoZSBhcHAgY29tcG9uZW50XG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCB3cmFwcGVyIG9iamVjdFxuXHQgKi9cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSBvTWFuaWZlc3RTZXR0aW5nczogQmFzZU1hbmlmZXN0U2V0dGluZ3MsXG5cdFx0cHJpdmF0ZSBhcHBDb21wb25lbnQ/OiBBcHBDb21wb25lbnRcblx0KSB7XG5cdFx0Ly8gRW5zdXJlIHRoYXQgcHJvcGVydGllcyB3aGljaCBhcmUgbWVhbnQgdG8gY29udGFpbiBhbiAqYW5ub3RhdGlvbiogcGF0aCBjb250YWluIGEgJ0AnXG5cdFx0ZW5zdXJlQW5ub3RhdGlvblBhdGgodGhpcy5vTWFuaWZlc3RTZXR0aW5ncywgXCJkZWZhdWx0VGVtcGxhdGVBbm5vdGF0aW9uUGF0aFwiKTtcblxuXHRcdCh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIExpc3RSZXBvcnRNYW5pZmVzdFNldHRpbmdzKS52aWV3cz8ucGF0aHMuZm9yRWFjaCgocGF0aCkgPT4ge1xuXHRcdFx0ZW5zdXJlQW5ub3RhdGlvblBhdGgocGF0aCBhcyBTaW5nbGVWaWV3UGF0aENvbmZpZ3VyYXRpb24sIFwiYW5ub3RhdGlvblBhdGhcIik7XG5cdFx0XHRlbnN1cmVBbm5vdGF0aW9uUGF0aChwYXRoIGFzIENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uLCBcInByaW1hcnlcIik7XG5cdFx0XHRlbnN1cmVBbm5vdGF0aW9uUGF0aChwYXRoIGFzIENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uLCBcInNlY29uZGFyeVwiKTtcblx0XHR9KTtcblxuXHRcdGlmICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzLmNvbnRyb2xDb25maWd1cmF0aW9uKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGNvbnRyb2xDb25maWd1cmF0aW9uIG9mIE9iamVjdC52YWx1ZXModGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb250cm9sQ29uZmlndXJhdGlvbikpIHtcblx0XHRcdFx0Y29uc3QgcXVpY2tWYXJpYW50U2VsZWN0aW9uID0gKGNvbnRyb2xDb25maWd1cmF0aW9uIGFzIFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uKS50YWJsZVNldHRpbmdzPy5xdWlja1ZhcmlhbnRTZWxlY3Rpb247XG5cdFx0XHRcdGVuc3VyZUFubm90YXRpb25QYXRoKHF1aWNrVmFyaWFudFNlbGVjdGlvbiwgXCJwYXRoc1wiKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgZ2xvYmFsIG1hbmlmZXN0IGNvbnRlbnQgc2FwLmZlLlxuXHQgKiBAcmV0dXJucyBUaGUgT2JqZWN0IG1hbmlmZXN0IHNhcC5mZVxuXHQgKi9cblx0Z2V0U2FwRmVNYW5pZmVzdENvbmZpZ3VyYXRpb24oKTogTWFuaWZlc3RDb250ZW50W1wic2FwLmZlXCJdIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5zYXBGZU1hbmlmZXN0Q29uZmlndXJhdGlvbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHRlbXBsYXRlIHR5cGUuXG5cdCAqIEByZXR1cm5zIFRoZSB0eXBlIG9mIHRoZSBjdXJyZW50IHRlbXBsYXRlXG5cdCAqL1xuXHRnZXRUZW1wbGF0ZVR5cGUoKTogVGVtcGxhdGVUeXBlIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb252ZXJ0ZXJUeXBlO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyB3aGV0aGVyIHRoZSBjdXJyZW50IHRlbXBsYXRlIHNob3VsZCBkaXNwbGF5IHRoZSBmaWx0ZXIgYmFyLlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGZpbHRlciBiYXIgc2hvdWxkIGJlIGhpZGRlblxuXHQgKi9cblx0aXNGaWx0ZXJCYXJIaWRkZW4oKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgTGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MpPy5oaWRlRmlsdGVyQmFyO1xuXHR9XG5cblx0dXNlSGlkZGVuRmlsdGVyQmFyKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAhISh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIExpc3RSZXBvcnRNYW5pZmVzdFNldHRpbmdzKT8udXNlSGlkZGVuRmlsdGVyQmFyO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyB3aGV0aGVyIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGlzIGEgZGVza3RvcCBvciBub3QuXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB3ZSBhcmUgb24gYSBkZXNrdG9wXG5cdCAqL1xuXHRpc0Rlc2t0b3AoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5pc0Rlc2t0b3A7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgYSBtb2JpbGUgcGhvbmUgb3Igbm90LlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgd2UgYXJlIG9uIGEgbW9iaWxlIHBob25lXG5cdCAqL1xuXHRpc1Bob25lKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAhIXRoaXMub01hbmlmZXN0U2V0dGluZ3MuaXNQaG9uZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGZvcm0gY29udGFpbmVycyAoZmllbGQgZ3JvdXBzIG9yIGlkZW50aWZpY2F0aW9uKSBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICogQHBhcmFtIGZhY2V0VGFyZ2V0IFRoZSB0YXJnZXQgYW5ub3RhdGlvbiBwYXRoIGZvciB0aGlzIGZvcm1cblx0ICogQHJldHVybnMgQSBzZXQgb2YgZm9ybSBjb250YWluZXJzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IGluZGV4ZWQgYnkgYW4gaXRlcmFibGUga2V5XG5cdCAqL1xuXHRnZXRGb3JtQ29udGFpbmVyKGZhY2V0VGFyZ2V0OiBzdHJpbmcpOiBGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9uIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb250cm9sQ29uZmlndXJhdGlvbj8uW2ZhY2V0VGFyZ2V0XSBhcyBGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgaGVhZGVyIGZhY2V0cyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICogQHJldHVybnMgQSBzZXQgb2YgaGVhZGVyIGZhY2V0cyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCBpbmRleGVkIGJ5IGFuIGl0ZXJhYmxlIGtleVxuXHQgKi9cblx0Z2V0SGVhZGVyRmFjZXRzKCk6IENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEhlYWRlckZhY2V0PiB7XG5cdFx0cmV0dXJuIG1lcmdlKFxuXHRcdFx0e30sXG5cdFx0XHR0aGlzLm9NYW5pZmVzdFNldHRpbmdzLmNvbnRyb2xDb25maWd1cmF0aW9uPy5bXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGVhZGVyRmFjZXRzXCJdPy5mYWNldHMgPz8ge30sXG5cdFx0XHQodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uaGVhZGVyPy5mYWNldHMgPz8ge31cblx0XHQpIGFzIHVua25vd24gYXMgQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0SGVhZGVyRmFjZXQ+O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgaGVhZGVyIGFjdGlvbnMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QuXG5cdCAqIEByZXR1cm5zIEEgc2V0IG9mIGFjdGlvbnMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QgaW5kZXhlZCBieSBhbiBpdGVyYWJsZSBrZXlcblx0ICovXG5cdGdldEhlYWRlckFjdGlvbnMoKTogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPiB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3MuY29udGVudD8uaGVhZGVyPy5hY3Rpb25zIHx8IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgZm9vdGVyIGFjdGlvbnMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QuXG5cdCAqIEByZXR1cm5zIEEgc2V0IG9mIGFjdGlvbnMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QgaW5kZXhlZCBieSBhbiBpdGVyYWJsZSBrZXlcblx0ICovXG5cdGdldEZvb3RlckFjdGlvbnMoKTogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPiB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3MuY29udGVudD8uZm9vdGVyPy5hY3Rpb25zIHx8IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgdmFyaWFudCBtYW5hZ2VtZW50IGFzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKiBAcmV0dXJucyBBIHR5cGUgb2YgdmFyaWFudCBtYW5hZ2VtZW50XG5cdCAqL1xuXHRnZXRWYXJpYW50TWFuYWdlbWVudCgpOiBWYXJpYW50TWFuYWdlbWVudFR5cGUge1xuXHRcdHJldHVybiB0aGlzLm9NYW5pZmVzdFNldHRpbmdzLnZhcmlhbnRNYW5hZ2VtZW50IHx8IFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5Ob25lO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgYW5ub3RhdGlvbiBQYXRoIGZvciB0aGUgU1BWIGluIHRoZSBtYW5pZmVzdC5cblx0ICogQHJldHVybnMgVGhlIGFubm90YXRpb24gcGF0aCBmb3IgdGhlIGRlZmF1bHQgU1BWIG9yIHVuZGVmaW5lZC5cblx0ICovXG5cdGdldERlZmF1bHRUZW1wbGF0ZUFubm90YXRpb25QYXRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3MuZGVmYXVsdFRlbXBsYXRlQW5ub3RhdGlvblBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBjb250cm9sIGNvbmZpZ3VyYXRpb24gYXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QgZm9yIGEgc3BlY2lmaWMgYW5ub3RhdGlvbiBwYXRoLlxuXHQgKiBAcGFyYW0gc0Fubm90YXRpb25QYXRoIFRoZSByZWxhdGl2ZSBhbm5vdGF0aW9uIHBhdGhcblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgY29uZmlndXJhdGlvblxuXHQgKi9cblx0Z2V0Q29udHJvbENvbmZpZ3VyYXRpb248VCA9IENvbnRyb2xNYW5pZmVzdENvbmZpZ3VyYXRpb24+KHNBbm5vdGF0aW9uUGF0aDogc3RyaW5nKTogVCB7XG5cdFx0cmV0dXJuICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5jb250cm9sQ29uZmlndXJhdGlvbj8uW3NBbm5vdGF0aW9uUGF0aF0gfHwge30pIGFzIFQ7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBjb25maWd1cmVkIHNldHRpbmdzIGZvciBhIGdpdmVuIG5hdmlnYXRpb24gdGFyZ2V0LlxuXHQgKiBAcGFyYW0gbmF2aWdhdGlvbk9yQ29sbGVjdGlvbk5hbWUgVGhlIG5hbWUgb2YgdGhlIG5hdmlnYXRpb24gdG8gY2hlY2tcblx0ICogQHJldHVybnMgVGhlIG5hdmlnYXRpb24gc2V0dGluZ3MgY29uZmlndXJhdGlvblxuXHQgKi9cblx0Z2V0TmF2aWdhdGlvbkNvbmZpZ3VyYXRpb24obmF2aWdhdGlvbk9yQ29sbGVjdGlvbk5hbWU6IHN0cmluZyk6IE5hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb24ge1xuXHRcdHJldHVybiB0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5uYXZpZ2F0aW9uPy5bbmF2aWdhdGlvbk9yQ29sbGVjdGlvbk5hbWVdIHx8IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgdmlldyBsZXZlbC5cblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgdmlldyBsZXZlbFxuXHQgKi9cblx0Z2V0Vmlld0xldmVsKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3M/LnZpZXdMZXZlbCB8fCAtMTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRlbnREZW5zaXRpZXMgc2V0dGluZyBvZiB0aGUgYXBwbGljYXRpb24uXG5cdCAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGNvbnRlbnQgZGVuc2l0eVxuXHQgKi9cblx0Z2V0Q29udGVudERlbnNpdGllcygpOiBDb250ZW50RGVuc2l0aWVzVHlwZSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdHRoaXMub01hbmlmZXN0U2V0dGluZ3M/LmNvbnRlbnREZW5zaXRpZXMgfHwge1xuXHRcdFx0XHRjb3p5OiBmYWxzZSxcblx0XHRcdFx0Y29tcGFjdDogZmFsc2Vcblx0XHRcdH1cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyB3aGV0aGVyIHdlIGFyZSBpbiBGQ0wgbW9kZSBvciBub3QuXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB3ZSBhcmUgaW4gRkNMXG5cdCAqL1xuXHRpc0ZjbEVuYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8uZmNsRW5hYmxlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3Mgd2hldGhlciB0aGUgY3VycmVudCBzZXR0aW5ncyAoYXBwbGljYXRpb24gLyBzaGVsbCkgYWxsb3dzIHVzIHRvIHVzZSBjb25kZW5zZWQgbGF5b3V0LlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgd2UgY2FuIHVzZSB0aGUgY29uZGVuc2VkIGxheW91dCwgZmFsc2Ugb3RoZXJ3aXNlXG5cdCAqL1xuXHRpc0NvbmRlbnNlZExheW91dENvbXBsaWFudCgpOiBib29sZWFuIHtcblx0XHRjb25zdCBtYW5pZmVzdENvbnRlbnREZW5zaXR5ID0gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8uY29udGVudERlbnNpdGllcyB8fCB7XG5cdFx0XHRjb3p5OiBmYWxzZSxcblx0XHRcdGNvbXBhY3Q6IGZhbHNlXG5cdFx0fTtcblx0XHRjb25zdCBzaGVsbENvbnRlbnREZW5zaXR5ID0gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8uc2hlbGxDb250ZW50RGVuc2l0eSB8fCBcImNvbXBhY3RcIjtcblx0XHRsZXQgaXNDb25kZW5zZWRMYXlvdXRDb21wbGlhbnQgPSB0cnVlO1xuXHRcdGNvbnN0IGlzU21hbGxEZXZpY2UgPSAhRGV2aWNlLnN5c3RlbS5kZXNrdG9wIHx8IERldmljZS5yZXNpemUud2lkdGggPD0gMzIwO1xuXHRcdGlmIChcblx0XHRcdChtYW5pZmVzdENvbnRlbnREZW5zaXR5Py5jb3p5ID09PSB0cnVlICYmIG1hbmlmZXN0Q29udGVudERlbnNpdHk/LmNvbXBhY3QgIT09IHRydWUpIHx8XG5cdFx0XHRzaGVsbENvbnRlbnREZW5zaXR5ID09PSBcImNvenlcIiB8fFxuXHRcdFx0aXNTbWFsbERldmljZVxuXHRcdCkge1xuXHRcdFx0aXNDb25kZW5zZWRMYXlvdXRDb21wbGlhbnQgPSBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGlzQ29uZGVuc2VkTGF5b3V0Q29tcGxpYW50O1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyB3aGV0aGVyIHRoZSBjdXJyZW50IHNldHRpbmdzIChhcHBsaWNhdGlvbiAvIHNoZWxsKSB1c2VzIGNvbXBhY3QgbW9kZSBhcyBjb250ZW50IGRlbnNpdHkuXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiBjb21wYWN0IG1vZGUgaXMgc2V0IGFzIGNvbnRlbnQgZGVuc2l0eSwgZmFsc2Ugb3RoZXJ3aXNlXG5cdCAqL1xuXHRpc0NvbXBhY3RUeXBlKCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG1hbmlmZXN0Q29udGVudERlbnNpdHkgPSB0aGlzLmdldENvbnRlbnREZW5zaXRpZXMoKTtcblx0XHRjb25zdCBzaGVsbENvbnRlbnREZW5zaXR5ID0gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8uc2hlbGxDb250ZW50RGVuc2l0eSB8fCBcImNvbXBhY3RcIjtcblx0XHRyZXR1cm4gbWFuaWZlc3RDb250ZW50RGVuc2l0eS5jb21wYWN0ICE9PSBmYWxzZSB8fCBzaGVsbENvbnRlbnREZW5zaXR5ID09PSBcImNvbXBhY3RcIiA/IHRydWUgOiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIG91dGJvdW5kIG5hdmlnYXRpb24gZW50cmllcyBkZWZpbmVkIGluIHRoZSBjcm9zcy1uYXZpZ2F0aW9uIHNlY3Rpb24gb2YgdGhlIGFwcGxpY2F0aW9uIG1hbmlmZXN0LlxuXHQgKiBAcmV0dXJucyBUaGUgZW50cmllcyBpZiB0aGV5IGV4aXN0LCBvdGhlcndpc2UgdW5kZWZpbmVkXG5cdCAqL1xuXHRnZXRPdXRib3VuZE5hdmlnYXRpb25FbnRyaWVzKCk6IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0T3V0Ym91bmRFbnRyeT4gfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmFwcENvbXBvbmVudD8uZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5hcHBcIik/LmNyb3NzTmF2aWdhdGlvbj8ub3V0Ym91bmRzO1xuXHR9XG5cblx0Ly9yZWdpb24gT1AgU3BlY2lmaWNcblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBzZWN0aW9uIGxheW91dCBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICogQHJldHVybnMgVGhlIHR5cGUgb2Ygc2VjdGlvbiBsYXlvdXQgb2YgdGhlIG9iamVjdCBwYWdlXG5cdCAqL1xuXHRnZXRTZWN0aW9uTGF5b3V0KCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKS5zZWN0aW9uTGF5b3V0ID8/IFwiVGFic1wiO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgc2VjdGlvbnMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QuXG5cdCAqIEByZXR1cm5zIEEgc2V0IG9mIG1hbmlmZXN0IHNlY3Rpb25zIGluZGV4ZWQgYnkgYW4gaXRlcmFibGUga2V5XG5cdCAqL1xuXHRnZXRTZWN0aW9ucygpOiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RTZWN0aW9uPiB7XG5cdFx0cmV0dXJuIG1lcmdlKFxuXHRcdFx0e30sXG5cdFx0XHR0aGlzLm9NYW5pZmVzdFNldHRpbmdzLmNvbnRyb2xDb25maWd1cmF0aW9uPy5bXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmFjZXRzXCJdPy5zZWN0aW9ucyA/PyB7fSxcblx0XHRcdCh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKS5jb250ZW50Py5ib2R5Py5zZWN0aW9ucyA/PyB7fVxuXHRcdCkgYXMgdW5rbm93biBhcyBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RTZWN0aW9uPjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRydWUgb2YgdGhlIGhlYWRlciBvZiB0aGUgYXBwbGljYXRpb24gaXMgZWRpdGFibGUgYW5kIHNob3VsZCBhcHBlYXIgaW4gdGhlIGZhY2V0cy5cblx0ICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBoZWFkZXIgaWYgZWRpdGFibGVcblx0ICovXG5cdGlzSGVhZGVyRWRpdGFibGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0U2hvd09iamVjdFBhZ2VIZWFkZXIoKSAmJiAhISh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKS5lZGl0YWJsZUhlYWRlckNvbnRlbnQ7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHdlIHNob3VsZCB1c2UgdGV4dCBpbnN0ZWFkIG9mIElsbHVzdHJhdGVkTWVzc2FnZSBmb3IgdGhlIG5vRGF0YSBhZ2dyZWdhdGlvbiBpbiB0aGUgd2hvbGUgcGFnZS5cblx0ICogQHJldHVybnMgYHRydWVgIGlmIHdlIHNob3VsZCB1c2UgdGV4dCBmb3Igbm9EYXRhIGFnZ3JlZ2F0aW9uXG5cdCAqL1xuXHRnZXRVc2VUZXh0Rm9yTm9EYXRhTWVzc2FnZXMoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKS51c2VUZXh0Rm9yTm9EYXRhTWVzc2FnZXMgPz8gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHdlIHNob3VsZCBzaG93IHRoZSBvYmplY3QgcGFnZSBoZWFkZXIuXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgaGVhZGVyIHNob3VsZCBiZSBkaXNwbGF5ZWRcblx0ICovXG5cdGdldFNob3dBbmNob3JCYXIoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKS5jb250ZW50Py5oZWFkZXI/LmFuY2hvckJhclZpc2libGUgIT09IHVuZGVmaW5lZFxuXHRcdFx0PyAhISh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKS5jb250ZW50Py5oZWFkZXI/LmFuY2hvckJhclZpc2libGVcblx0XHRcdDogdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBzZWN0aW9uIHdpbGwgYmUgZGlzcGxheWVkIGluIGRpZmZlcmVudCB0YWJzLlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGljb24gdGFiIGJhciBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIHNjcm9sbGluZ1xuXHQgKi9cblx0dXNlSWNvblRhYkJhcigpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRTaG93QW5jaG9yQmFyKCkgJiYgKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLnNlY3Rpb25MYXlvdXQgPT09IFwiVGFic1wiO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgb2JqZWN0IHBhZ2UgaGVhZGVyIGlzIHRvIGJlIHNob3duLlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdCBwYWdlIGhlYWRlciBpcyB0byBiZSBkaXNwbGF5ZWRcblx0ICovXG5cdGdldFNob3dPYmplY3RQYWdlSGVhZGVyKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uaGVhZGVyPy52aXNpYmxlICE9PSB1bmRlZmluZWRcblx0XHRcdD8gISEodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uaGVhZGVyPy52aXNpYmxlXG5cdFx0XHQ6IHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB3aGV0aGVyIHRoZSBsYXp5IGxvYWRlciBzaG91bGQgYmUgZW5hYmxlZCBmb3IgdGhpcyBwYWdlIG9yIG5vdC5cblx0ICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBsYXp5IGxvYWRlciBzaG91bGQgYmUgZW5hYmxlZFxuXHQgKi9cblx0Z2V0RW5hYmxlTGF6eUxvYWRpbmcoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3MuZW5hYmxlTGF6eUxvYWRpbmcgPz8gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgdHJhbnNwb3J0IHNlbGVjdGlvbiBkZWZpbml0aW9uLlxuXHQgKiBAcmV0dXJucyBEZWZpbml0aW9uIHdpdGggdHJhbnNwb3J0IHByb3BlcnR5IGFuZCBzZWxlY3QgYWN0aW9uXG5cdCAqL1xuXHRnZXRUcmFuc3BvcnRTZWxlY3Rpb24oKTogVHJhbnNwb3J0U2VsZWN0aW9uRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKS5jb250ZW50Py50cmFuc3BvcnRTZWxlY3Rpb247XG5cdH1cblxuXHQvL2VuZHJlZ2lvbiBPUCBTcGVjaWZpY1xuXG5cdC8vcmVnaW9uIExSIFNwZWNpZmljXG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgbXVsdGlwbGUgdmlldyBjb25maWd1cmF0aW9uIGZyb20gdGhlIG1hbmlmZXN0LlxuXHQgKiBAcmV0dXJucyBUaGUgdmlld3MgdGhhdCByZXByZXNlbnQgdGhlIG1hbmlmZXN0IG9iamVjdFxuXHQgKi9cblx0Z2V0Vmlld0NvbmZpZ3VyYXRpb24oKTogTXVsdGlwbGVWaWV3c0NvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBMaXN0UmVwb3J0TWFuaWZlc3RTZXR0aW5ncykudmlld3M7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBzdGlja3lNdWx0aVRhYkhlYWRlciBjb25maWd1cmF0aW9uIGZyb20gdGhlIG1hbmlmZXN0LlxuXHQgKiBAcmV0dXJucyBSZXR1cm5zIFRydWUgaWYgc3RpY2t5TXVsdGlUYWJIZWFkZXIgaXMgZW5hYmxlZCBvciB1bmRlZmluZWRcblx0ICovXG5cdGdldFN0aWNreU11bHRpVGFiSGVhZGVyQ29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcblx0XHRjb25zdCBiU3RpY2t5TXVsdGlUYWJIZWFkZXIgPSAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBMaXN0UmVwb3J0TWFuaWZlc3RTZXR0aW5ncykuc3RpY2t5TXVsdGlUYWJIZWFkZXI7XG5cdFx0cmV0dXJuIGJTdGlja3lNdWx0aVRhYkhlYWRlciAhPT0gdW5kZWZpbmVkID8gYlN0aWNreU11bHRpVGFiSGVhZGVyIDogdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIEtQSSBjb25maWd1cmF0aW9uIGZyb20gdGhlIG1hbmlmZXN0LlxuXHQgKiBAcmV0dXJucyBSZXR1cm5zIGEgbWFwIGJldHdlZW4gS1BJIG5hbWVzIGFuZCB0aGVpciByZXNwZWN0aXZlIGNvbmZpZ3VyYXRpb25cblx0ICovXG5cdGdldEtQSUNvbmZpZ3VyYXRpb24oKTogeyBba3BpTmFtZTogc3RyaW5nXTogS1BJQ29uZmlndXJhdGlvbiB9IHtcblx0XHRyZXR1cm4gKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgTGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MpLmtleVBlcmZvcm1hbmNlSW5kaWNhdG9ycyB8fCB7fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGZpbHRlciBjb25maWd1cmF0aW9uIGZyb20gdGhlIG1hbmlmZXN0LlxuXHQgKiBAcGFyYW0gY29uZmlnUGF0aFxuXHQgKiBAcmV0dXJucyBUaGUgZmlsdGVyIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgbWFuaWZlc3Rcblx0ICovXG5cdGdldEZpbHRlckNvbmZpZ3VyYXRpb24oY29uZmlnUGF0aCA9IFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvbkZpZWxkc1wiKTogRmlsdGVyTWFuaWZlc3RDb25maWd1cmF0aW9uIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRDb250cm9sQ29uZmlndXJhdGlvbjxGaWx0ZXJNYW5pZmVzdENvbmZpZ3VyYXRpb24+KGNvbmZpZ1BhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgZW50aXR5IHNldHMgdG8gYmUgZGlzcGxheWVkLlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGVudGl0eSBzZXRzXG5cdCAqL1xuXHRoYXNNdWx0aXBsZUVudGl0eVNldHMoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgdmlld0NvbmZpZyA9IHRoaXMuZ2V0Vmlld0NvbmZpZ3VyYXRpb24oKSB8fCB7IHBhdGhzOiBbXSB9O1xuXHRcdGNvbnN0IG1hbmlmZXN0RW50aXR5U2V0ID0gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5lbnRpdHlTZXQ7XG5cdFx0cmV0dXJuIChcblx0XHRcdHZpZXdDb25maWcucGF0aHMuZmluZCgocGF0aDogVmlld0NvbmZpZ3VyYXRpb24pID0+IHtcblx0XHRcdFx0aWYgKChwYXRoIGFzIEN1c3RvbVZpZXdUZW1wbGF0ZUNvbmZpZ3VyYXRpb24pPy50ZW1wbGF0ZSkge1xuXHRcdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHRcdH0gZWxzZSBpZiAodGhpcy5oYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zKHBhdGggYXMgQ29tYmluZWRWaWV3UGF0aENvbmZpZ3VyYXRpb24pKSB7XG5cdFx0XHRcdFx0Y29uc3QgeyBwcmltYXJ5LCBzZWNvbmRhcnkgfSA9IHBhdGggYXMgQ29tYmluZWRWaWV3UGF0aENvbmZpZ3VyYXRpb247XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdHByaW1hcnkuc29tZSgocHJpbWFyeVBhdGgpID0+IHByaW1hcnlQYXRoLmVudGl0eVNldCAmJiBwcmltYXJ5UGF0aC5lbnRpdHlTZXQgIT09IG1hbmlmZXN0RW50aXR5U2V0KSB8fFxuXHRcdFx0XHRcdFx0c2Vjb25kYXJ5LnNvbWUoKHNlY29uZGFyeVBhdGgpID0+IHNlY29uZGFyeVBhdGguZW50aXR5U2V0ICYmIHNlY29uZGFyeVBhdGguZW50aXR5U2V0ICE9PSBtYW5pZmVzdEVudGl0eVNldClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHBhdGggPSBwYXRoIGFzIFNpbmdsZVZpZXdQYXRoQ29uZmlndXJhdGlvbjtcblx0XHRcdFx0XHRyZXR1cm4gcGF0aC5lbnRpdHlTZXQgJiYgcGF0aC5lbnRpdHlTZXQgIT09IG1hbmlmZXN0RW50aXR5U2V0O1xuXHRcdFx0XHR9XG5cdFx0XHR9KSAhPT0gdW5kZWZpbmVkXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjb250ZXh0IHBhdGggZm9yIHRoZSB0ZW1wbGF0ZSBpZiBpdCBpcyBzcGVjaWZpZWQgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKiBAcmV0dXJucyBUaGUgY29udGV4dCBwYXRoIGZvciB0aGUgdGVtcGxhdGVcblx0ICovXG5cdGdldENvbnRleHRQYXRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3M/LmNvbnRleHRQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyBhIHNpbmdsZSBwYXRoIGNvbmZpZ3VyYXRpb24uXG5cdCAqIEBwYXJhbSB2aWV3Q29uZmlnIFRoZSB2aWV3IGNvbmZpZ3VyYXRpb25cblx0ICogQHJldHVybnMgYHRydWVgIGlmIHRoaXMgaXMgYSBzaW5nbGUgcGF0aCBjb25maWd1cmF0aW9uXG5cdCAqL1xuXHRpc1ZpZXdQYXRoQ29uZmlndXJhdGlvbih2aWV3Q29uZmlnOiBWaWV3Q29uZmlndXJhdGlvbik6IHZpZXdDb25maWcgaXMgU2luZ2xlVmlld1BhdGhDb25maWd1cmF0aW9uIHtcblx0XHRyZXR1cm4gXCJhbm5vdGF0aW9uUGF0aFwiIGluIHZpZXdDb25maWcgJiYgIShcInByaW1hcnlcIiBpbiB2aWV3Q29uZmlnKSAmJiAhKFwic2Vjb25kYXJ5XCIgaW4gdmlld0NvbmZpZyk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHRoZSBjb25maWd1cmF0aW9uIGlzIGEgY29tYmluZWQgY29uZmlndXJhdGlvbi5cblx0ICogQHBhcmFtIHZpZXdDb25maWcgVGhlIHZpZXcgY29uZmlndXJhdGlvblxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhpcyBpcyBhIGNvbWJpbmVkIGNvbmZpZ3VyYXRpb25cblx0ICovXG5cdGlzQ29tYmluZWRWaWV3Q29uZmlndXJhdGlvbih2aWV3Q29uZmlnOiBWaWV3Q29uZmlndXJhdGlvbik6IHZpZXdDb25maWcgaXMgQ29tYmluZWRWaWV3UGF0aENvbmZpZ3VyYXRpb24ge1xuXHRcdHJldHVybiAhdGhpcy5pc0N1c3RvbVZpZXdDb25maWd1cmF0aW9uKHZpZXdDb25maWcpICYmICF0aGlzLmlzVmlld1BhdGhDb25maWd1cmF0aW9uKHZpZXdDb25maWcpXG5cdFx0XHQ/IHZpZXdDb25maWcucHJpbWFyeT8ubGVuZ3RoID4gMCAmJiB2aWV3Q29uZmlnLnNlY29uZGFyeT8ubGVuZ3RoID4gMFxuXHRcdFx0OiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgYSBjdXN0b20gY29uZmlndXJhdGlvbi5cblx0ICogQHBhcmFtIHZpZXdDb25maWcgVGhlIHZpZXcgY29uZmlndXJhdGlvblxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhpcyBpcyBhIGN1c3RvbSBjb25maWd1cmF0aW9uXG5cdCAqL1xuXHRpc0N1c3RvbVZpZXdDb25maWd1cmF0aW9uKHZpZXdDb25maWc6IFZpZXdDb25maWd1cmF0aW9uKTogdmlld0NvbmZpZyBpcyBDdXN0b21WaWV3VGVtcGxhdGVDb25maWd1cmF0aW9uIHtcblx0XHRyZXR1cm4gXCJ0ZW1wbGF0ZVwiIGluIHZpZXdDb25maWc7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSB2aXN1YWxpemF0aW9ucy5cblx0ICogQHBhcmFtIHZpZXdDb25maWcgVGhlIHBhdGggZnJvbSB0aGUgdmlld1xuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlcmUgYXJlIG11bHRpcGxlIHZpc3VhbGl6YXRpb25zXG5cdCAqL1xuXHRoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zKHZpZXdDb25maWc/OiBWaWV3Q29uZmlndXJhdGlvbik6IGJvb2xlYW4ge1xuXHRcdGlmICghdmlld0NvbmZpZykge1xuXHRcdFx0Y29uc3QgbXVsdGlwbGVWaWV3c0NvbmZpZ3VyYXRpb24gPSB0aGlzLmdldFZpZXdDb25maWd1cmF0aW9uKCkgfHwgeyBwYXRoczogW10gfTtcblx0XHRcdHJldHVybiBtdWx0aXBsZVZpZXdzQ29uZmlndXJhdGlvbi5wYXRocy5zb21lKChwYXRoKSA9PiB0aGlzLmlzQ29tYmluZWRWaWV3Q29uZmlndXJhdGlvbihwYXRoKSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmlzQ29tYmluZWRWaWV3Q29uZmlndXJhdGlvbih2aWV3Q29uZmlnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGVudGl0eSBzZXQgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QuXG5cdCAqIEByZXR1cm5zIFRoZSBlbnRpdHkgc2V0IGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0XG5cdCAqL1xuXHRnZXRFbnRpdHlTZXQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5lbnRpdHlTZXQ7XG5cdH1cblxuXHRoYXNJbmxpbmVFZGl0KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAhIXRoaXMub01hbmlmZXN0U2V0dGluZ3MuaW5saW5lRWRpdD8uZGlzYWJsZWRGaWVsZHMgfHwgKHRoaXMub01hbmlmZXN0U2V0dGluZ3M/LmlubGluZUVkaXQ/LmVuYWJsZWRGaWVsZHM/Lmxlbmd0aCA/PyAwKSA+IDA7XG5cdH1cblxuXHRnZXRJbmxpbmVFZGl0RW5hYmxlZEZpZWxkcygpOiBzdHJpbmdbXSB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3M/LmlubGluZUVkaXQ/LmVuYWJsZWRGaWVsZHMgPz8gW107XG5cdH1cblxuXHRnZXRJbmxpbmVFZGl0RGlzYWJsZWRGaWVsZHMoKTogc3RyaW5nW10ge1xuXHRcdHJldHVybiB0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5pbmxpbmVFZGl0Py5kaXNhYmxlZEZpZWxkcyA/PyBbXTtcblx0fVxuXG5cdGdldElubGluZUNvbm5lY3RlZEZpZWxkcygpOiAoc3RyaW5nIHwgc3RyaW5nW10pW10ge1xuXHRcdHJldHVybiB0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5pbmxpbmVFZGl0Py5jb25uZWN0ZWRGaWVsZHMgPz8gW107XG5cdH1cblx0Ly9lbmQgcmVnaW9uIExSIFNwZWNpZmljXG59XG5cbmV4cG9ydCBkZWZhdWx0IE1hbmlmZXN0V3JhcHBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7RUE2QkEsU0FBU0Esb0JBQW9CQSxDQUFtQkMsR0FBa0IsRUFBRUMsUUFBaUIsRUFBUTtJQUM1RixNQUFNQyxhQUFhLEdBQUdGLEdBQUcsR0FBR0MsUUFBUSxDQUFDO0lBQ3JDLElBQUlFLEtBQUssQ0FBQ0MsT0FBTyxDQUFDRixhQUFhLENBQUMsRUFBRTtNQUNqQ0EsYUFBYSxDQUFDRyxPQUFPLENBQUVDLEtBQUssSUFBS1Asb0JBQW9CLENBQUNPLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2hGLENBQUMsTUFBTSxJQUFJSixhQUFhLElBQUksT0FBT0EsYUFBYSxLQUFLLFFBQVEsSUFB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
|
|
439
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlbnN1cmVBbm5vdGF0aW9uUGF0aCIsIm9iaiIsInByb3BlcnR5IiwicHJvcGVydHlWYWx1ZSIsIkFycmF5IiwiaXNBcnJheSIsImZvckVhY2giLCJlbnRyeSIsImluY2x1ZGVzIiwiTWFuaWZlc3RXcmFwcGVyIiwib01hbmlmZXN0U2V0dGluZ3MiLCJhcHBDb21wb25lbnQiLCJ2aWV3cyIsInBhdGhzIiwicGF0aCIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwiT2JqZWN0IiwidmFsdWVzIiwicXVpY2tWYXJpYW50U2VsZWN0aW9uIiwidGFibGVTZXR0aW5ncyIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFNhcEZlTWFuaWZlc3RDb25maWd1cmF0aW9uIiwic2FwRmVNYW5pZmVzdENvbmZpZ3VyYXRpb24iLCJnZXRUZW1wbGF0ZVR5cGUiLCJjb252ZXJ0ZXJUeXBlIiwiaXNGaWx0ZXJCYXJIaWRkZW4iLCJoaWRlRmlsdGVyQmFyIiwidXNlSGlkZGVuRmlsdGVyQmFyIiwiZ2V0Q29sbGFwc2VkSGVhZGVyRnJhZ21lbnQiLCJjb250ZW50IiwiaGVhZGVyIiwiY3VzdG9tSGVhZGVyIiwiY29sbGFwc2VkSGVhZGVyRnJhZ21lbnQiLCJnZXRFeHBhbmRlZEhlYWRlckZyYWdtZW50IiwiZXhwYW5kZWRIZWFkZXJGcmFnbWVudCIsImlzRGVza3RvcCIsImlzUGhvbmUiLCJnZXRGb3JtQ29udGFpbmVyIiwiZmFjZXRUYXJnZXQiLCJnZXRIZWFkZXJGYWNldHMiLCJtZXJnZSIsImZhY2V0cyIsImdldEhlYWRlckFjdGlvbnMiLCJhY3Rpb25zIiwiZ2V0Rm9vdGVyQWN0aW9ucyIsImZvb3RlciIsImdldFZhcmlhbnRNYW5hZ2VtZW50IiwidmFyaWFudE1hbmFnZW1lbnQiLCJWYXJpYW50TWFuYWdlbWVudFR5cGUiLCJOb25lIiwiZ2V0RGVmYXVsdFRlbXBsYXRlQW5ub3RhdGlvblBhdGgiLCJkZWZhdWx0VGVtcGxhdGVBbm5vdGF0aW9uUGF0aCIsImdldENvbnRyb2xDb25maWd1cmF0aW9uIiwic0Fubm90YXRpb25QYXRoIiwiZ2V0TmF2aWdhdGlvbkNvbmZpZ3VyYXRpb24iLCJuYXZpZ2F0aW9uT3JDb2xsZWN0aW9uTmFtZSIsIm5hdmlnYXRpb24iLCJnZXRWaWV3TGV2ZWwiLCJ2aWV3TGV2ZWwiLCJnZXRDb250ZW50RGVuc2l0aWVzIiwiY29udGVudERlbnNpdGllcyIsImNvenkiLCJjb21wYWN0IiwiaXNGY2xFbmFibGVkIiwiZmNsRW5hYmxlZCIsImlzQ29uZGVuc2VkTGF5b3V0Q29tcGxpYW50IiwibWFuaWZlc3RDb250ZW50RGVuc2l0eSIsInNoZWxsQ29udGVudERlbnNpdHkiLCJpc1NtYWxsRGV2aWNlIiwiRGV2aWNlIiwic3lzdGVtIiwiZGVza3RvcCIsInJlc2l6ZSIsIndpZHRoIiwiaXNDb21wYWN0VHlwZSIsImdldE91dGJvdW5kTmF2aWdhdGlvbkVudHJpZXMiLCJnZXRNYW5pZmVzdEVudHJ5IiwiY3Jvc3NOYXZpZ2F0aW9uIiwib3V0Ym91bmRzIiwiZ2V0U2VjdGlvbkxheW91dCIsInNlY3Rpb25MYXlvdXQiLCJnZXRTZWN0aW9ucyIsInNlY3Rpb25zIiwiYm9keSIsImlzSGVhZGVyRWRpdGFibGUiLCJnZXRTaG93T2JqZWN0UGFnZUhlYWRlciIsImVkaXRhYmxlSGVhZGVyQ29udGVudCIsImdldFVzZVRleHRGb3JOb0RhdGFNZXNzYWdlcyIsInVzZVRleHRGb3JOb0RhdGFNZXNzYWdlcyIsImdldFNob3dBbmNob3JCYXIiLCJhbmNob3JCYXJWaXNpYmxlIiwidW5kZWZpbmVkIiwidXNlSWNvblRhYkJhciIsInZpc2libGUiLCJnZXRFbmFibGVMYXp5TG9hZGluZyIsImVuYWJsZUxhenlMb2FkaW5nIiwiZ2V0VHJhbnNwb3J0U2VsZWN0aW9uIiwidHJhbnNwb3J0U2VsZWN0aW9uIiwiZ2V0Vmlld0NvbmZpZ3VyYXRpb24iLCJnZXRTdGlja3lNdWx0aVRhYkhlYWRlckNvbmZpZ3VyYXRpb24iLCJiU3RpY2t5TXVsdGlUYWJIZWFkZXIiLCJzdGlja3lNdWx0aVRhYkhlYWRlciIsImdldEtQSUNvbmZpZ3VyYXRpb24iLCJrZXlQZXJmb3JtYW5jZUluZGljYXRvcnMiLCJnZXRGaWx0ZXJDb25maWd1cmF0aW9uIiwiY29uZmlnUGF0aCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImhhc011bHRpcGxlRW50aXR5U2V0cyIsInZpZXdDb25maWciLCJtYW5pZmVzdEVudGl0eVNldCIsImVudGl0eVNldCIsImZpbmQiLCJ0ZW1wbGF0ZSIsImhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMiLCJwcmltYXJ5Iiwic2Vjb25kYXJ5Iiwic29tZSIsInByaW1hcnlQYXRoIiwic2Vjb25kYXJ5UGF0aCIsImdldENvbnRleHRQYXRoIiwiY29udGV4dFBhdGgiLCJpc1ZpZXdQYXRoQ29uZmlndXJhdGlvbiIsImlzQ29tYmluZWRWaWV3Q29uZmlndXJhdGlvbiIsImlzQ3VzdG9tVmlld0NvbmZpZ3VyYXRpb24iLCJtdWx0aXBsZVZpZXdzQ29uZmlndXJhdGlvbiIsImdldEVudGl0eVNldCIsImhhc0lubGluZUVkaXQiLCJpbmxpbmVFZGl0IiwiZGlzYWJsZWRGaWVsZHMiLCJlbmFibGVkRmllbGRzIiwiZ2V0SW5saW5lRWRpdEVuYWJsZWRGaWVsZHMiLCJnZXRJbmxpbmVFZGl0RGlzYWJsZWRGaWVsZHMiLCJnZXRJbmxpbmVDb25uZWN0ZWRGaWVsZHMiLCJjb25uZWN0ZWRGaWVsZHMiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1hbmlmZXN0V3JhcHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWVyZ2UgZnJvbSBcInNhcC9iYXNlL3V0aWwvbWVyZ2VcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7XG5cdEJhc2VNYW5pZmVzdFNldHRpbmdzLFxuXHRDb21iaW5lZFZpZXdQYXRoQ29uZmlndXJhdGlvbixcblx0Q29udGVudERlbnNpdGllc1R5cGUsXG5cdENvbnRyb2xNYW5pZmVzdENvbmZpZ3VyYXRpb24sXG5cdEN1c3RvbVZpZXdUZW1wbGF0ZUNvbmZpZ3VyYXRpb24sXG5cdEZpbHRlck1hbmlmZXN0Q29uZmlndXJhdGlvbixcblx0Rm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvbixcblx0S1BJQ29uZmlndXJhdGlvbixcblx0TGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MsXG5cdE1hbmlmZXN0QWN0aW9uLFxuXHRNYW5pZmVzdEhlYWRlckZhY2V0LFxuXHRNYW5pZmVzdFNlY3Rpb24sXG5cdE11bHRpcGxlVmlld3NDb25maWd1cmF0aW9uLFxuXHROYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9uLFxuXHRPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncyxcblx0U2luZ2xlVmlld1BhdGhDb25maWd1cmF0aW9uLFxuXHRUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbixcblx0VGVtcGxhdGVUeXBlLFxuXHRUcmFuc3BvcnRTZWxlY3Rpb25EZWZpbml0aW9uLFxuXHRWaWV3Q29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBWYXJpYW50TWFuYWdlbWVudFR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ3VyYWJsZVJlY29yZCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgRGV2aWNlIGZyb20gXCJzYXAvdWkvRGV2aWNlXCI7XG5pbXBvcnQgdHlwZSB7IE1hbmlmZXN0Q29udGVudCwgTWFuaWZlc3RPdXRib3VuZEVudHJ5IH0gZnJvbSBcInNhcC91aS9jb3JlL01hbmlmZXN0XCI7XG5cbmZ1bmN0aW9uIGVuc3VyZUFubm90YXRpb25QYXRoPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCB8IHVuZGVmaW5lZCwgcHJvcGVydHk6IGtleW9mIFQpOiB2b2lkIHtcblx0Y29uc3QgcHJvcGVydHlWYWx1ZSA9IG9iaj8uW3Byb3BlcnR5XTtcblx0aWYgKEFycmF5LmlzQXJyYXkocHJvcGVydHlWYWx1ZSkpIHtcblx0XHRwcm9wZXJ0eVZhbHVlLmZvckVhY2goKGVudHJ5KSA9PiBlbnN1cmVBbm5vdGF0aW9uUGF0aChlbnRyeSwgXCJhbm5vdGF0aW9uUGF0aFwiKSk7XG5cdH0gZWxzZSBpZiAocHJvcGVydHlWYWx1ZSAmJiB0eXBlb2YgcHJvcGVydHlWYWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAhcHJvcGVydHlWYWx1ZS5pbmNsdWRlcyhcIkBcIikpIHtcblx0XHRvYmpbcHJvcGVydHldID0gKFwiQFwiICsgcHJvcGVydHlWYWx1ZSkgYXMgVFtrZXlvZiBUXTtcblx0fVxufVxuXG4vKipcbiAqXG4gKi9cbmNsYXNzIE1hbmlmZXN0V3JhcHBlciB7XG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgd3JhcHBlciBvYmplY3QgdG8gZW5zdXJlIHRoZSBkYXRhIHJldHVybmVkIGZyb20gdGhlIG1hbmlmZXN0IGlzIGNvbnNpc3RlbnQgYW5kIGV2ZXJ5dGhpbmcgaXMgbWVyZ2VkIGNvcnJlY3RseS5cblx0ICogQHBhcmFtIG9NYW5pZmVzdFNldHRpbmdzIFRoZSBtYW5pZmVzdCBzZXR0aW5ncyBmb3IgdGhlIGN1cnJlbnQgcGFnZVxuXHQgKiBAcGFyYW0gYXBwQ29tcG9uZW50IFRoZSBhcHAgY29tcG9uZW50XG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCB3cmFwcGVyIG9iamVjdFxuXHQgKi9cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSBvTWFuaWZlc3RTZXR0aW5nczogQmFzZU1hbmlmZXN0U2V0dGluZ3MsXG5cdFx0cHJpdmF0ZSBhcHBDb21wb25lbnQ/OiBBcHBDb21wb25lbnRcblx0KSB7XG5cdFx0Ly8gRW5zdXJlIHRoYXQgcHJvcGVydGllcyB3aGljaCBhcmUgbWVhbnQgdG8gY29udGFpbiBhbiAqYW5ub3RhdGlvbiogcGF0aCBjb250YWluIGEgJ0AnXG5cdFx0ZW5zdXJlQW5ub3RhdGlvblBhdGgodGhpcy5vTWFuaWZlc3RTZXR0aW5ncywgXCJkZWZhdWx0VGVtcGxhdGVBbm5vdGF0aW9uUGF0aFwiKTtcblxuXHRcdCh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIExpc3RSZXBvcnRNYW5pZmVzdFNldHRpbmdzKS52aWV3cz8ucGF0aHMuZm9yRWFjaCgocGF0aCkgPT4ge1xuXHRcdFx0ZW5zdXJlQW5ub3RhdGlvblBhdGgocGF0aCBhcyBTaW5nbGVWaWV3UGF0aENvbmZpZ3VyYXRpb24sIFwiYW5ub3RhdGlvblBhdGhcIik7XG5cdFx0XHRlbnN1cmVBbm5vdGF0aW9uUGF0aChwYXRoIGFzIENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uLCBcInByaW1hcnlcIik7XG5cdFx0XHRlbnN1cmVBbm5vdGF0aW9uUGF0aChwYXRoIGFzIENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uLCBcInNlY29uZGFyeVwiKTtcblx0XHR9KTtcblxuXHRcdGlmICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzLmNvbnRyb2xDb25maWd1cmF0aW9uKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGNvbnRyb2xDb25maWd1cmF0aW9uIG9mIE9iamVjdC52YWx1ZXModGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb250cm9sQ29uZmlndXJhdGlvbikpIHtcblx0XHRcdFx0Y29uc3QgcXVpY2tWYXJpYW50U2VsZWN0aW9uID0gKGNvbnRyb2xDb25maWd1cmF0aW9uIGFzIFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uKS50YWJsZVNldHRpbmdzPy5xdWlja1ZhcmlhbnRTZWxlY3Rpb247XG5cdFx0XHRcdGVuc3VyZUFubm90YXRpb25QYXRoKHF1aWNrVmFyaWFudFNlbGVjdGlvbiwgXCJwYXRoc1wiKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgZ2xvYmFsIG1hbmlmZXN0IGNvbnRlbnQgc2FwLmZlLlxuXHQgKiBAcmV0dXJucyBUaGUgT2JqZWN0IG1hbmlmZXN0IHNhcC5mZVxuXHQgKi9cblx0Z2V0U2FwRmVNYW5pZmVzdENvbmZpZ3VyYXRpb24oKTogTWFuaWZlc3RDb250ZW50W1wic2FwLmZlXCJdIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5zYXBGZU1hbmlmZXN0Q29uZmlndXJhdGlvbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHRlbXBsYXRlIHR5cGUuXG5cdCAqIEByZXR1cm5zIFRoZSB0eXBlIG9mIHRoZSBjdXJyZW50IHRlbXBsYXRlXG5cdCAqL1xuXHRnZXRUZW1wbGF0ZVR5cGUoKTogVGVtcGxhdGVUeXBlIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb252ZXJ0ZXJUeXBlO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyB3aGV0aGVyIHRoZSBjdXJyZW50IHRlbXBsYXRlIHNob3VsZCBkaXNwbGF5IHRoZSBmaWx0ZXIgYmFyLlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGZpbHRlciBiYXIgc2hvdWxkIGJlIGhpZGRlblxuXHQgKi9cblx0aXNGaWx0ZXJCYXJIaWRkZW4oKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgTGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MpPy5oaWRlRmlsdGVyQmFyO1xuXHR9XG5cblx0dXNlSGlkZGVuRmlsdGVyQmFyKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAhISh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIExpc3RSZXBvcnRNYW5pZmVzdFNldHRpbmdzKT8udXNlSGlkZGVuRmlsdGVyQmFyO1xuXHR9XG5cblx0Z2V0Q29sbGFwc2VkSGVhZGVyRnJhZ21lbnQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgTGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MpPy5jb250ZW50Py5oZWFkZXI/LmN1c3RvbUhlYWRlcj8uY29sbGFwc2VkSGVhZGVyRnJhZ21lbnQ7XG5cdH1cblxuXHRnZXRFeHBhbmRlZEhlYWRlckZyYWdtZW50KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIExpc3RSZXBvcnRNYW5pZmVzdFNldHRpbmdzKT8uY29udGVudD8uaGVhZGVyPy5jdXN0b21IZWFkZXI/LmV4cGFuZGVkSGVhZGVyRnJhZ21lbnQ7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgYSBkZXNrdG9wIG9yIG5vdC5cblx0ICogQHJldHVybnMgYHRydWVgIGlmIHdlIGFyZSBvbiBhIGRlc2t0b3Bcblx0ICovXG5cdGlzRGVza3RvcCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gISF0aGlzLm9NYW5pZmVzdFNldHRpbmdzLmlzRGVza3RvcDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3Mgd2hldGhlciB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpcyBhIG1vYmlsZSBwaG9uZSBvciBub3QuXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB3ZSBhcmUgb24gYSBtb2JpbGUgcGhvbmVcblx0ICovXG5cdGlzUGhvbmUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5pc1Bob25lO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgZm9ybSBjb250YWluZXJzIChmaWVsZCBncm91cHMgb3IgaWRlbnRpZmljYXRpb24pIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKiBAcGFyYW0gZmFjZXRUYXJnZXQgVGhlIHRhcmdldCBhbm5vdGF0aW9uIHBhdGggZm9yIHRoaXMgZm9ybVxuXHQgKiBAcmV0dXJucyBBIHNldCBvZiBmb3JtIGNvbnRhaW5lcnMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QgaW5kZXhlZCBieSBhbiBpdGVyYWJsZSBrZXlcblx0ICovXG5cdGdldEZvcm1Db250YWluZXIoZmFjZXRUYXJnZXQ6IHN0cmluZyk6IEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24ge1xuXHRcdHJldHVybiB0aGlzLm9NYW5pZmVzdFNldHRpbmdzLmNvbnRyb2xDb25maWd1cmF0aW9uPy5bZmFjZXRUYXJnZXRdIGFzIEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb247XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBoZWFkZXIgZmFjZXRzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKiBAcmV0dXJucyBBIHNldCBvZiBoZWFkZXIgZmFjZXRzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IGluZGV4ZWQgYnkgYW4gaXRlcmFibGUga2V5XG5cdCAqL1xuXHRnZXRIZWFkZXJGYWNldHMoKTogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0SGVhZGVyRmFjZXQ+IHtcblx0XHRyZXR1cm4gbWVyZ2UoXG5cdFx0XHR7fSxcblx0XHRcdHRoaXMub01hbmlmZXN0U2V0dGluZ3MuY29udHJvbENvbmZpZ3VyYXRpb24/LltcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IZWFkZXJGYWNldHNcIl0/LmZhY2V0cyA/PyB7fSxcblx0XHRcdCh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKS5jb250ZW50Py5oZWFkZXI/LmZhY2V0cyA/PyB7fVxuXHRcdCkgYXMgdW5rbm93biBhcyBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RIZWFkZXJGYWNldD47XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBoZWFkZXIgYWN0aW9ucyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICogQHJldHVybnMgQSBzZXQgb2YgYWN0aW9ucyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCBpbmRleGVkIGJ5IGFuIGl0ZXJhYmxlIGtleVxuXHQgKi9cblx0Z2V0SGVhZGVyQWN0aW9ucygpOiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RBY3Rpb24+IHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb250ZW50Py5oZWFkZXI/LmFjdGlvbnMgfHwge307XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBmb290ZXIgYWN0aW9ucyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICogQHJldHVybnMgQSBzZXQgb2YgYWN0aW9ucyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCBpbmRleGVkIGJ5IGFuIGl0ZXJhYmxlIGtleVxuXHQgKi9cblx0Z2V0Rm9vdGVyQWN0aW9ucygpOiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RBY3Rpb24+IHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb250ZW50Py5mb290ZXI/LmFjdGlvbnMgfHwge307XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSB2YXJpYW50IG1hbmFnZW1lbnQgYXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QuXG5cdCAqIEByZXR1cm5zIEEgdHlwZSBvZiB2YXJpYW50IG1hbmFnZW1lbnRcblx0ICovXG5cdGdldFZhcmlhbnRNYW5hZ2VtZW50KCk6IFZhcmlhbnRNYW5hZ2VtZW50VHlwZSB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3MudmFyaWFudE1hbmFnZW1lbnQgfHwgVmFyaWFudE1hbmFnZW1lbnRUeXBlLk5vbmU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBhbm5vdGF0aW9uIFBhdGggZm9yIHRoZSBTUFYgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKiBAcmV0dXJucyBUaGUgYW5ub3RhdGlvbiBwYXRoIGZvciB0aGUgZGVmYXVsdCBTUFYgb3IgdW5kZWZpbmVkLlxuXHQgKi9cblx0Z2V0RGVmYXVsdFRlbXBsYXRlQW5ub3RhdGlvblBhdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5kZWZhdWx0VGVtcGxhdGVBbm5vdGF0aW9uUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRyb2wgY29uZmlndXJhdGlvbiBhcyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCBmb3IgYSBzcGVjaWZpYyBhbm5vdGF0aW9uIHBhdGguXG5cdCAqIEBwYXJhbSBzQW5ub3RhdGlvblBhdGggVGhlIHJlbGF0aXZlIGFubm90YXRpb24gcGF0aFxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbCBjb25maWd1cmF0aW9uXG5cdCAqL1xuXHRnZXRDb250cm9sQ29uZmlndXJhdGlvbjxUID0gQ29udHJvbE1hbmlmZXN0Q29uZmlndXJhdGlvbj4oc0Fubm90YXRpb25QYXRoOiBzdHJpbmcpOiBUIHtcblx0XHRyZXR1cm4gKHRoaXMub01hbmlmZXN0U2V0dGluZ3M/LmNvbnRyb2xDb25maWd1cmF0aW9uPy5bc0Fubm90YXRpb25QYXRoXSB8fCB7fSkgYXMgVDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbmZpZ3VyZWQgc2V0dGluZ3MgZm9yIGEgZ2l2ZW4gbmF2aWdhdGlvbiB0YXJnZXQuXG5cdCAqIEBwYXJhbSBuYXZpZ2F0aW9uT3JDb2xsZWN0aW9uTmFtZSBUaGUgbmFtZSBvZiB0aGUgbmF2aWdhdGlvbiB0byBjaGVja1xuXHQgKiBAcmV0dXJucyBUaGUgbmF2aWdhdGlvbiBzZXR0aW5ncyBjb25maWd1cmF0aW9uXG5cdCAqL1xuXHRnZXROYXZpZ2F0aW9uQ29uZmlndXJhdGlvbihuYXZpZ2F0aW9uT3JDb2xsZWN0aW9uTmFtZTogc3RyaW5nKTogTmF2aWdhdGlvblNldHRpbmdzQ29uZmlndXJhdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3M/Lm5hdmlnYXRpb24/LltuYXZpZ2F0aW9uT3JDb2xsZWN0aW9uTmFtZV0gfHwge307XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSB2aWV3IGxldmVsLlxuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCB2aWV3IGxldmVsXG5cdCAqL1xuXHRnZXRWaWV3TGV2ZWwoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8udmlld0xldmVsIHx8IC0xO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29udGVudERlbnNpdGllcyBzZXR0aW5nIG9mIHRoZSBhcHBsaWNhdGlvbi5cblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgY29udGVudCBkZW5zaXR5XG5cdCAqL1xuXHRnZXRDb250ZW50RGVuc2l0aWVzKCk6IENvbnRlbnREZW5zaXRpZXNUeXBlIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8uY29udGVudERlbnNpdGllcyB8fCB7XG5cdFx0XHRcdGNvenk6IGZhbHNlLFxuXHRcdFx0XHRjb21wYWN0OiBmYWxzZVxuXHRcdFx0fVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIHdoZXRoZXIgd2UgYXJlIGluIEZDTCBtb2RlIG9yIG5vdC5cblx0ICogQHJldHVybnMgYHRydWVgIGlmIHdlIGFyZSBpbiBGQ0xcblx0ICovXG5cdGlzRmNsRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gISF0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5mY2xFbmFibGVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyB3aGV0aGVyIHRoZSBjdXJyZW50IHNldHRpbmdzIChhcHBsaWNhdGlvbiAvIHNoZWxsKSBhbGxvd3MgdXMgdG8gdXNlIGNvbmRlbnNlZCBsYXlvdXQuXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB3ZSBjYW4gdXNlIHRoZSBjb25kZW5zZWQgbGF5b3V0LCBmYWxzZSBvdGhlcndpc2Vcblx0ICovXG5cdGlzQ29uZGVuc2VkTGF5b3V0Q29tcGxpYW50KCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG1hbmlmZXN0Q29udGVudERlbnNpdHkgPSB0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5jb250ZW50RGVuc2l0aWVzIHx8IHtcblx0XHRcdGNvenk6IGZhbHNlLFxuXHRcdFx0Y29tcGFjdDogZmFsc2Vcblx0XHR9O1xuXHRcdGNvbnN0IHNoZWxsQ29udGVudERlbnNpdHkgPSB0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5zaGVsbENvbnRlbnREZW5zaXR5IHx8IFwiY29tcGFjdFwiO1xuXHRcdGxldCBpc0NvbmRlbnNlZExheW91dENvbXBsaWFudCA9IHRydWU7XG5cdFx0Y29uc3QgaXNTbWFsbERldmljZSA9ICFEZXZpY2Uuc3lzdGVtLmRlc2t0b3AgfHwgRGV2aWNlLnJlc2l6ZS53aWR0aCA8PSAzMjA7XG5cdFx0aWYgKFxuXHRcdFx0KG1hbmlmZXN0Q29udGVudERlbnNpdHk/LmNvenkgPT09IHRydWUgJiYgbWFuaWZlc3RDb250ZW50RGVuc2l0eT8uY29tcGFjdCAhPT0gdHJ1ZSkgfHxcblx0XHRcdHNoZWxsQ29udGVudERlbnNpdHkgPT09IFwiY296eVwiIHx8XG5cdFx0XHRpc1NtYWxsRGV2aWNlXG5cdFx0KSB7XG5cdFx0XHRpc0NvbmRlbnNlZExheW91dENvbXBsaWFudCA9IGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gaXNDb25kZW5zZWRMYXlvdXRDb21wbGlhbnQ7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgc2V0dGluZ3MgKGFwcGxpY2F0aW9uIC8gc2hlbGwpIHVzZXMgY29tcGFjdCBtb2RlIGFzIGNvbnRlbnQgZGVuc2l0eS5cblx0ICogQHJldHVybnMgYHRydWVgIGlmIGNvbXBhY3QgbW9kZSBpcyBzZXQgYXMgY29udGVudCBkZW5zaXR5LCBmYWxzZSBvdGhlcndpc2Vcblx0ICovXG5cdGlzQ29tcGFjdFR5cGUoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgbWFuaWZlc3RDb250ZW50RGVuc2l0eSA9IHRoaXMuZ2V0Q29udGVudERlbnNpdGllcygpO1xuXHRcdGNvbnN0IHNoZWxsQ29udGVudERlbnNpdHkgPSB0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5zaGVsbENvbnRlbnREZW5zaXR5IHx8IFwiY29tcGFjdFwiO1xuXHRcdHJldHVybiBtYW5pZmVzdENvbnRlbnREZW5zaXR5LmNvbXBhY3QgIT09IGZhbHNlIHx8IHNoZWxsQ29udGVudERlbnNpdHkgPT09IFwiY29tcGFjdFwiID8gdHJ1ZSA6IGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgb3V0Ym91bmQgbmF2aWdhdGlvbiBlbnRyaWVzIGRlZmluZWQgaW4gdGhlIGNyb3NzLW5hdmlnYXRpb24gc2VjdGlvbiBvZiB0aGUgYXBwbGljYXRpb24gbWFuaWZlc3QuXG5cdCAqIEByZXR1cm5zIFRoZSBlbnRyaWVzIGlmIHRoZXkgZXhpc3QsIG90aGVyd2lzZSB1bmRlZmluZWRcblx0ICovXG5cdGdldE91dGJvdW5kTmF2aWdhdGlvbkVudHJpZXMoKTogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RPdXRib3VuZEVudHJ5PiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuYXBwQ29tcG9uZW50Py5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLmFwcFwiKT8uY3Jvc3NOYXZpZ2F0aW9uPy5vdXRib3VuZHM7XG5cdH1cblxuXHQvL3JlZ2lvbiBPUCBTcGVjaWZpY1xuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHNlY3Rpb24gbGF5b3V0IGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKiBAcmV0dXJucyBUaGUgdHlwZSBvZiBzZWN0aW9uIGxheW91dCBvZiB0aGUgb2JqZWN0IHBhZ2Vcblx0ICovXG5cdGdldFNlY3Rpb25MYXlvdXQoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLnNlY3Rpb25MYXlvdXQgPz8gXCJUYWJzXCI7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBzZWN0aW9ucyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICogQHJldHVybnMgQSBzZXQgb2YgbWFuaWZlc3Qgc2VjdGlvbnMgaW5kZXhlZCBieSBhbiBpdGVyYWJsZSBrZXlcblx0ICovXG5cdGdldFNlY3Rpb25zKCk6IENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdFNlY3Rpb24+IHtcblx0XHRyZXR1cm4gbWVyZ2UoXG5cdFx0XHR7fSxcblx0XHRcdHRoaXMub01hbmlmZXN0U2V0dGluZ3MuY29udHJvbENvbmZpZ3VyYXRpb24/LltcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GYWNldHNcIl0/LnNlY3Rpb25zID8/IHt9LFxuXHRcdFx0KHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLmNvbnRlbnQ/LmJvZHk/LnNlY3Rpb25zID8/IHt9XG5cdFx0KSBhcyB1bmtub3duIGFzIENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdFNlY3Rpb24+O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdHJ1ZSBvZiB0aGUgaGVhZGVyIG9mIHRoZSBhcHBsaWNhdGlvbiBpcyBlZGl0YWJsZSBhbmQgc2hvdWxkIGFwcGVhciBpbiB0aGUgZmFjZXRzLlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGhlYWRlciBpZiBlZGl0YWJsZVxuXHQgKi9cblx0aXNIZWFkZXJFZGl0YWJsZSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRTaG93T2JqZWN0UGFnZUhlYWRlcigpICYmICEhKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLmVkaXRhYmxlSGVhZGVyQ29udGVudDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRydWUgaWYgd2Ugc2hvdWxkIHVzZSB0ZXh0IGluc3RlYWQgb2YgSWxsdXN0cmF0ZWRNZXNzYWdlIGZvciB0aGUgbm9EYXRhIGFnZ3JlZ2F0aW9uIGluIHRoZSB3aG9sZSBwYWdlLlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgd2Ugc2hvdWxkIHVzZSB0ZXh0IGZvciBub0RhdGEgYWdncmVnYXRpb25cblx0ICovXG5cdGdldFVzZVRleHRGb3JOb0RhdGFNZXNzYWdlcygpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLnVzZVRleHRGb3JOb0RhdGFNZXNzYWdlcyA/PyBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRydWUgaWYgd2Ugc2hvdWxkIHNob3cgdGhlIG9iamVjdCBwYWdlIGhlYWRlci5cblx0ICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBoZWFkZXIgc2hvdWxkIGJlIGRpc3BsYXllZFxuXHQgKi9cblx0Z2V0U2hvd0FuY2hvckJhcigpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLmNvbnRlbnQ/LmhlYWRlcj8uYW5jaG9yQmFyVmlzaWJsZSAhPT0gdW5kZWZpbmVkXG5cdFx0XHQ/ICEhKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLmNvbnRlbnQ/LmhlYWRlcj8uYW5jaG9yQmFyVmlzaWJsZVxuXHRcdFx0OiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlZmluZXMgd2hldGhlciBvciBub3QgdGhlIHNlY3Rpb24gd2lsbCBiZSBkaXNwbGF5ZWQgaW4gZGlmZmVyZW50IHRhYnMuXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgaWNvbiB0YWIgYmFyIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2Ygc2Nyb2xsaW5nXG5cdCAqL1xuXHR1c2VJY29uVGFiQmFyKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmdldFNob3dBbmNob3JCYXIoKSAmJiAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuc2VjdGlvbkxheW91dCA9PT0gXCJUYWJzXCI7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHRoZSBvYmplY3QgcGFnZSBoZWFkZXIgaXMgdG8gYmUgc2hvd24uXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0IHBhZ2UgaGVhZGVyIGlzIHRvIGJlIGRpc3BsYXllZFxuXHQgKi9cblx0Z2V0U2hvd09iamVjdFBhZ2VIZWFkZXIoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKS5jb250ZW50Py5oZWFkZXI/LnZpc2libGUgIT09IHVuZGVmaW5lZFxuXHRcdFx0PyAhISh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKS5jb250ZW50Py5oZWFkZXI/LnZpc2libGVcblx0XHRcdDogdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGxhenkgbG9hZGVyIHNob3VsZCBiZSBlbmFibGVkIGZvciB0aGlzIHBhZ2Ugb3Igbm90LlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGxhenkgbG9hZGVyIHNob3VsZCBiZSBlbmFibGVkXG5cdCAqL1xuXHRnZXRFbmFibGVMYXp5TG9hZGluZygpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5lbmFibGVMYXp5TG9hZGluZyA/PyBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSB0cmFuc3BvcnQgc2VsZWN0aW9uIGRlZmluaXRpb24uXG5cdCAqIEByZXR1cm5zIERlZmluaXRpb24gd2l0aCB0cmFuc3BvcnQgcHJvcGVydHkgYW5kIHNlbGVjdCBhY3Rpb25cblx0ICovXG5cdGdldFRyYW5zcG9ydFNlbGVjdGlvbigpOiBUcmFuc3BvcnRTZWxlY3Rpb25EZWZpbml0aW9uIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLmNvbnRlbnQ/LnRyYW5zcG9ydFNlbGVjdGlvbjtcblx0fVxuXG5cdC8vZW5kcmVnaW9uIE9QIFNwZWNpZmljXG5cblx0Ly9yZWdpb24gTFIgU3BlY2lmaWNcblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBtdWx0aXBsZSB2aWV3IGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgbWFuaWZlc3QuXG5cdCAqIEByZXR1cm5zIFRoZSB2aWV3cyB0aGF0IHJlcHJlc2VudCB0aGUgbWFuaWZlc3Qgb2JqZWN0XG5cdCAqL1xuXHRnZXRWaWV3Q29uZmlndXJhdGlvbigpOiBNdWx0aXBsZVZpZXdzQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIExpc3RSZXBvcnRNYW5pZmVzdFNldHRpbmdzKS52aWV3cztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHN0aWNreU11bHRpVGFiSGVhZGVyIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgbWFuaWZlc3QuXG5cdCAqIEByZXR1cm5zIFJldHVybnMgVHJ1ZSBpZiBzdGlja3lNdWx0aVRhYkhlYWRlciBpcyBlbmFibGVkIG9yIHVuZGVmaW5lZFxuXHQgKi9cblx0Z2V0U3RpY2t5TXVsdGlUYWJIZWFkZXJDb25maWd1cmF0aW9uKCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IGJTdGlja3lNdWx0aVRhYkhlYWRlciA9ICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIExpc3RSZXBvcnRNYW5pZmVzdFNldHRpbmdzKS5zdGlja3lNdWx0aVRhYkhlYWRlcjtcblx0XHRyZXR1cm4gYlN0aWNreU11bHRpVGFiSGVhZGVyICE9PSB1bmRlZmluZWQgPyBiU3RpY2t5TXVsdGlUYWJIZWFkZXIgOiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgS1BJIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgbWFuaWZlc3QuXG5cdCAqIEByZXR1cm5zIFJldHVybnMgYSBtYXAgYmV0d2VlbiBLUEkgbmFtZXMgYW5kIHRoZWlyIHJlc3BlY3RpdmUgY29uZmlndXJhdGlvblxuXHQgKi9cblx0Z2V0S1BJQ29uZmlndXJhdGlvbigpOiB7IFtrcGlOYW1lOiBzdHJpbmddOiBLUElDb25maWd1cmF0aW9uIH0ge1xuXHRcdHJldHVybiAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBMaXN0UmVwb3J0TWFuaWZlc3RTZXR0aW5ncykua2V5UGVyZm9ybWFuY2VJbmRpY2F0b3JzIHx8IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgZmlsdGVyIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgbWFuaWZlc3QuXG5cdCAqIEBwYXJhbSBjb25maWdQYXRoXG5cdCAqIEByZXR1cm5zIFRoZSBmaWx0ZXIgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBtYW5pZmVzdFxuXHQgKi9cblx0Z2V0RmlsdGVyQ29uZmlndXJhdGlvbihjb25maWdQYXRoID0gXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uRmllbGRzXCIpOiBGaWx0ZXJNYW5pZmVzdENvbmZpZ3VyYXRpb24ge1xuXHRcdHJldHVybiB0aGlzLmdldENvbnRyb2xDb25maWd1cmF0aW9uPEZpbHRlck1hbmlmZXN0Q29uZmlndXJhdGlvbj4oY29uZmlnUGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBlbnRpdHkgc2V0cyB0byBiZSBkaXNwbGF5ZWQuXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgZW50aXR5IHNldHNcblx0ICovXG5cdGhhc011bHRpcGxlRW50aXR5U2V0cygpOiBib29sZWFuIHtcblx0XHRjb25zdCB2aWV3Q29uZmlnID0gdGhpcy5nZXRWaWV3Q29uZmlndXJhdGlvbigpIHx8IHsgcGF0aHM6IFtdIH07XG5cdFx0Y29uc3QgbWFuaWZlc3RFbnRpdHlTZXQgPSB0aGlzLm9NYW5pZmVzdFNldHRpbmdzLmVudGl0eVNldDtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dmlld0NvbmZpZy5wYXRocy5maW5kKChwYXRoOiBWaWV3Q29uZmlndXJhdGlvbikgPT4ge1xuXHRcdFx0XHRpZiAoKHBhdGggYXMgQ3VzdG9tVmlld1RlbXBsYXRlQ29uZmlndXJhdGlvbik/LnRlbXBsYXRlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLmhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMocGF0aCBhcyBDb21iaW5lZFZpZXdQYXRoQ29uZmlndXJhdGlvbikpIHtcblx0XHRcdFx0XHRjb25zdCB7IHByaW1hcnksIHNlY29uZGFyeSB9ID0gcGF0aCBhcyBDb21iaW5lZFZpZXdQYXRoQ29uZmlndXJhdGlvbjtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0cHJpbWFyeS5zb21lKChwcmltYXJ5UGF0aCkgPT4gcHJpbWFyeVBhdGguZW50aXR5U2V0ICYmIHByaW1hcnlQYXRoLmVudGl0eVNldCAhPT0gbWFuaWZlc3RFbnRpdHlTZXQpIHx8XG5cdFx0XHRcdFx0XHRzZWNvbmRhcnkuc29tZSgoc2Vjb25kYXJ5UGF0aCkgPT4gc2Vjb25kYXJ5UGF0aC5lbnRpdHlTZXQgJiYgc2Vjb25kYXJ5UGF0aC5lbnRpdHlTZXQgIT09IG1hbmlmZXN0RW50aXR5U2V0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cGF0aCA9IHBhdGggYXMgU2luZ2xlVmlld1BhdGhDb25maWd1cmF0aW9uO1xuXHRcdFx0XHRcdHJldHVybiBwYXRoLmVudGl0eVNldCAmJiBwYXRoLmVudGl0eVNldCAhPT0gbWFuaWZlc3RFbnRpdHlTZXQ7XG5cdFx0XHRcdH1cblx0XHRcdH0pICE9PSB1bmRlZmluZWRcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGNvbnRleHQgcGF0aCBmb3IgdGhlIHRlbXBsYXRlIGlmIGl0IGlzIHNwZWNpZmllZCBpbiB0aGUgbWFuaWZlc3QuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHBhdGggZm9yIHRoZSB0ZW1wbGF0ZVxuXHQgKi9cblx0Z2V0Q29udGV4dFBhdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8uY29udGV4dFBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHRoZSBjb25maWd1cmF0aW9uIGlzIGEgc2luZ2xlIHBhdGggY29uZmlndXJhdGlvbi5cblx0ICogQHBhcmFtIHZpZXdDb25maWcgVGhlIHZpZXcgY29uZmlndXJhdGlvblxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhpcyBpcyBhIHNpbmdsZSBwYXRoIGNvbmZpZ3VyYXRpb25cblx0ICovXG5cdGlzVmlld1BhdGhDb25maWd1cmF0aW9uKHZpZXdDb25maWc6IFZpZXdDb25maWd1cmF0aW9uKTogdmlld0NvbmZpZyBpcyBTaW5nbGVWaWV3UGF0aENvbmZpZ3VyYXRpb24ge1xuXHRcdHJldHVybiBcImFubm90YXRpb25QYXRoXCIgaW4gdmlld0NvbmZpZyAmJiAhKFwicHJpbWFyeVwiIGluIHZpZXdDb25maWcpICYmICEoXCJzZWNvbmRhcnlcIiBpbiB2aWV3Q29uZmlnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgYSBjb21iaW5lZCBjb25maWd1cmF0aW9uLlxuXHQgKiBAcGFyYW0gdmlld0NvbmZpZyBUaGUgdmlldyBjb25maWd1cmF0aW9uXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGlzIGlzIGEgY29tYmluZWQgY29uZmlndXJhdGlvblxuXHQgKi9cblx0aXNDb21iaW5lZFZpZXdDb25maWd1cmF0aW9uKHZpZXdDb25maWc6IFZpZXdDb25maWd1cmF0aW9uKTogdmlld0NvbmZpZyBpcyBDb21iaW5lZFZpZXdQYXRoQ29uZmlndXJhdGlvbiB7XG5cdFx0cmV0dXJuICF0aGlzLmlzQ3VzdG9tVmlld0NvbmZpZ3VyYXRpb24odmlld0NvbmZpZykgJiYgIXRoaXMuaXNWaWV3UGF0aENvbmZpZ3VyYXRpb24odmlld0NvbmZpZylcblx0XHRcdD8gdmlld0NvbmZpZy5wcmltYXJ5Py5sZW5ndGggPiAwICYmIHZpZXdDb25maWcuc2Vjb25kYXJ5Py5sZW5ndGggPiAwXG5cdFx0XHQ6IGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyBhIGN1c3RvbSBjb25maWd1cmF0aW9uLlxuXHQgKiBAcGFyYW0gdmlld0NvbmZpZyBUaGUgdmlldyBjb25maWd1cmF0aW9uXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGlzIGlzIGEgY3VzdG9tIGNvbmZpZ3VyYXRpb25cblx0ICovXG5cdGlzQ3VzdG9tVmlld0NvbmZpZ3VyYXRpb24odmlld0NvbmZpZzogVmlld0NvbmZpZ3VyYXRpb24pOiB2aWV3Q29uZmlnIGlzIEN1c3RvbVZpZXdUZW1wbGF0ZUNvbmZpZ3VyYXRpb24ge1xuXHRcdHJldHVybiBcInRlbXBsYXRlXCIgaW4gdmlld0NvbmZpZztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIG11bHRpcGxlIHZpc3VhbGl6YXRpb25zLlxuXHQgKiBAcGFyYW0gdmlld0NvbmZpZyBUaGUgcGF0aCBmcm9tIHRoZSB2aWV3XG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgdmlzdWFsaXphdGlvbnNcblx0ICovXG5cdGhhc011bHRpcGxlVmlzdWFsaXphdGlvbnModmlld0NvbmZpZz86IFZpZXdDb25maWd1cmF0aW9uKTogYm9vbGVhbiB7XG5cdFx0aWYgKCF2aWV3Q29uZmlnKSB7XG5cdFx0XHRjb25zdCBtdWx0aXBsZVZpZXdzQ29uZmlndXJhdGlvbiA9IHRoaXMuZ2V0Vmlld0NvbmZpZ3VyYXRpb24oKSB8fCB7IHBhdGhzOiBbXSB9O1xuXHRcdFx0cmV0dXJuIG11bHRpcGxlVmlld3NDb25maWd1cmF0aW9uLnBhdGhzLnNvbWUoKHBhdGgpID0+IHRoaXMuaXNDb21iaW5lZFZpZXdDb25maWd1cmF0aW9uKHBhdGgpKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuaXNDb21iaW5lZFZpZXdDb25maWd1cmF0aW9uKHZpZXdDb25maWcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgZW50aXR5IHNldCBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICogQHJldHVybnMgVGhlIGVudGl0eSBzZXQgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Rcblx0ICovXG5cdGdldEVudGl0eVNldCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLm9NYW5pZmVzdFNldHRpbmdzLmVudGl0eVNldDtcblx0fVxuXG5cdGhhc0lubGluZUVkaXQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5pbmxpbmVFZGl0Py5kaXNhYmxlZEZpZWxkcyB8fCAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8uaW5saW5lRWRpdD8uZW5hYmxlZEZpZWxkcz8ubGVuZ3RoID8/IDApID4gMDtcblx0fVxuXG5cdGdldElubGluZUVkaXRFbmFibGVkRmllbGRzKCk6IHN0cmluZ1tdIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8uaW5saW5lRWRpdD8uZW5hYmxlZEZpZWxkcyA/PyBbXTtcblx0fVxuXG5cdGdldElubGluZUVkaXREaXNhYmxlZEZpZWxkcygpOiBzdHJpbmdbXSB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3M/LmlubGluZUVkaXQ/LmRpc2FibGVkRmllbGRzID8/IFtdO1xuXHR9XG5cblx0Z2V0SW5saW5lQ29ubmVjdGVkRmllbGRzKCk6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3M/LmlubGluZUVkaXQ/LmNvbm5lY3RlZEZpZWxkcyA/PyBbXTtcblx0fVxuXHQvL2VuZCByZWdpb24gTFIgU3BlY2lmaWNcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFuaWZlc3RXcmFwcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztFQTZCQSxTQUFTQSxvQkFBb0JBLENBQW1CQyxHQUFrQixFQUFFQyxRQUFpQixFQUFRO0lBQzVGLE1BQU1DLGFBQWEsR0FBR0YsR0FBRyxHQUFHQyxRQUFRLENBQUM7SUFDckMsSUFBSUUsS0FBSyxDQUFDQyxPQUFPLENBQUNGLGFBQWEsQ0FBQyxFQUFFO01BQ2pDQSxhQUFhLENBQUNHLE9BQU8sQ0FBRUMsS0FBSyxJQUFLUCxvQkFBb0IsQ0FBQ08sS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDaEYsQ0FBQyxNQUFNLElBQUlKLGFBQWEsSUFBSSxPQUFPQSxhQUFhLEtBQUssUUFBUSxJQUFJLENBQUNBLGFBQWEsQ0FBQ0ssUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO01BQzlGUCxHQUFHLENBQUNDLFFBQVEsQ0FBQyxHQUFJLEdBQUcsR0FBR0MsYUFBNEI7SUFDcEQ7RUFDRDs7RUFFQTtBQUNBO0FBQ0E7RUFGQSxJQUdNTSxlQUFlO0lBQ3BCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDLFNBQUFBLGdCQUNTQyxpQkFBdUMsRUFDdkNDLFlBQTJCLEVBQ2xDO01BQUEsS0FGT0QsaUJBQXVDLEdBQXZDQSxpQkFBdUM7TUFBQSxLQUN2Q0MsWUFBMkIsR0FBM0JBLFlBQTJCO01BRW5DO01BQ0FYLG9CQUFvQixDQUFDLElBQUksQ0FBQ1UsaUJBQWlCLEVBQUUsK0JBQStCLENBQUM7TUFFNUUsSUFBSSxDQUFDQSxpQkFBaUIsQ0FBZ0NFLEtBQUssRUFBRUMsS0FBSyxDQUFDUCxPQUFPLENBQUVRLElBQUksSUFBSztR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
|
|
@@ -95,6 +95,14 @@ class ManifestWrapper {
|
|
|
95
95
|
return !!(this.oManifestSettings as ListReportManifestSettings)?.useHiddenFilterBar;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
+
getCollapsedHeaderFragment(): string | undefined {
|
|
99
|
+
return (this.oManifestSettings as ListReportManifestSettings)?.content?.header?.customHeader?.collapsedHeaderFragment;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
getExpandedHeaderFragment(): string | undefined {
|
|
103
|
+
return (this.oManifestSettings as ListReportManifestSettings)?.content?.header?.customHeader?.expandedHeaderFragment;
|
|
104
|
+
}
|
|
105
|
+
|
|
98
106
|
/**
|
|
99
107
|
* Checks whether the current environment is a desktop or not.
|
|
100
108
|
* @returns `true` if we are on a desktop
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
-
* (c) Copyright 2009-
|
|
3
|
+
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
5
|
sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/converters/common/AnnotationConverter", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/services/EnvironmentServiceFactory", "../helpers/StableIdHelper"], function (BindingToolkit, AnnotationConverter, TypeGuards, EnvironmentServiceFactory, StableIdHelper) {
|
|
6
6
|
"use strict";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
-
* (c) Copyright 2009-
|
|
3
|
+
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
5
|
sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "./ConverterContext", "./ManifestSettings", "./MetaModelConverter", "./templates/ListReportConverter", "./templates/ObjectPageConverter"], function (IssueManager, ConverterContext, ManifestSettings, MetaModelConverter, ListReportConverter, ObjectPageConverter) {
|
|
6
6
|
"use strict";
|