@sapui5/sap.fe.core 1.102.3 → 1.105.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 +6 -6
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime.js +120 -0
- package/src/sap/fe/core/ActionRuntime.ts +108 -0
- package/src/sap/fe/core/AppComponent.js +81 -35
- package/src/sap/fe/core/AppComponent.ts +68 -44
- package/src/sap/fe/core/AppStateHandler.js +82 -70
- package/src/sap/fe/core/AppStateHandler.ts +32 -37
- package/src/sap/fe/core/BaseController.js +12 -10
- package/src/sap/fe/core/BaseController.ts +15 -13
- package/src/sap/fe/core/CommonUtils.js +291 -218
- package/src/sap/fe/core/CommonUtils.ts +315 -251
- package/src/sap/fe/core/ExtensionAPI.js +25 -28
- package/src/sap/fe/core/ExtensionAPI.ts +36 -38
- package/src/sap/fe/core/PageController.js +5 -5
- package/src/sap/fe/core/PageController.ts +4 -5
- package/src/sap/fe/core/TemplateComponent.js +21 -10
- package/src/sap/fe/core/TemplateComponent.ts +9 -6
- package/src/sap/fe/core/TemplateModel.js +2 -2
- package/src/sap/fe/core/TemplateModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +11 -3
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +8 -2
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +197 -43
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +164 -24
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +14 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.ts +5 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +609 -230
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +275 -128
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +30 -30
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +32 -29
- package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js +761 -700
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +478 -514
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +10 -10
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +104 -75
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +71 -79
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +68 -68
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +76 -76
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +162 -102
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +177 -121
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +67 -69
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
- package/src/sap/fe/core/controllerextensions/MassEdit.js +10 -10
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +20 -27
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +21 -13
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +21 -14
- package/src/sap/fe/core/controllerextensions/PageReady.js +98 -26
- package/src/sap/fe/core/controllerextensions/PageReady.ts +98 -34
- package/src/sap/fe/core/controllerextensions/Paginator.js +31 -32
- package/src/sap/fe/core/controllerextensions/Paginator.ts +33 -34
- package/src/sap/fe/core/controllerextensions/Placeholder.js +5 -7
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
- package/src/sap/fe/core/controllerextensions/Routing.js +11 -12
- package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +171 -140
- package/src/sap/fe/core/controllerextensions/Share.ts +117 -118
- package/src/sap/fe/core/controllerextensions/SideEffects.js +47 -51
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
- package/src/sap/fe/core/controllerextensions/ViewState.js +201 -132
- package/src/sap/fe/core/controllerextensions/ViewState.ts +141 -148
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +13 -12
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +17 -20
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +13 -12
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +15 -15
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +57 -18
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +60 -28
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +29 -21
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1424 -940
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +799 -836
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +410 -377
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +275 -358
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +309 -0
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +320 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +752 -579
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +631 -599
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +92 -74
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +49 -52
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +78 -41
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +110 -84
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +69 -81
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +64 -73
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +18 -2
- package/src/sap/fe/core/controls/ActionParameterDialogFieldValueHelp.fragment.xml +35 -0
- package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +25 -24
- package/src/sap/fe/core/controls/Any.js +9 -5
- package/src/sap/fe/core/controls/Any.ts +10 -4
- package/src/sap/fe/core/controls/CommandExecution.js +12 -26
- package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
- package/src/sap/fe/core/controls/ConditionalWrapper.js +3 -3
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +26 -26
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +3 -3
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
- package/src/sap/fe/core/controls/FieldWrapper.js +3 -3
- package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
- package/src/sap/fe/core/controls/FileWrapper.js +9 -4
- package/src/sap/fe/core/controls/FileWrapper.ts +16 -12
- package/src/sap/fe/core/controls/FilterBar.js +7 -3
- package/src/sap/fe/core/controls/FilterBar.ts +13 -9
- package/src/sap/fe/core/controls/FormElementWrapper.js +2 -2
- package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -1
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +44 -19
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +2 -2
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +17 -13
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +4 -4
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +49 -49
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +54 -54
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
- package/src/sap/fe/core/converters/ConverterContext.js +48 -34
- package/src/sap/fe/core/converters/ConverterContext.ts +81 -67
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +18 -15
- package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
- package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
- package/src/sap/fe/core/converters/MetaModelConverter.js +74 -40
- package/src/sap/fe/core/converters/MetaModelConverter.ts +176 -140
- package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
- package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
- package/src/sap/fe/core/converters/annotations/DataField.js +58 -35
- package/src/sap/fe/core/converters/annotations/DataField.ts +102 -76
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +1956 -1494
- package/src/sap/fe/core/converters/controls/Common/Action.js +78 -51
- package/src/sap/fe/core/converters/controls/Common/Action.ts +87 -52
- package/src/sap/fe/core/converters/controls/Common/Chart.js +22 -16
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +42 -43
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
- package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +65 -29
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +93 -62
- package/src/sap/fe/core/converters/controls/Common/Form.js +31 -31
- package/src/sap/fe/core/converters/controls/Common/Form.ts +46 -57
- package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +49 -52
- package/src/sap/fe/core/converters/controls/Common/Table.js +251 -264
- package/src/sap/fe/core/converters/controls/Common/Table.ts +344 -370
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +147 -144
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +89 -59
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +118 -71
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +131 -95
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +123 -87
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +98 -87
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +121 -117
- package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +12 -15
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +8 -6
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +18 -10
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +136 -0
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +139 -0
- package/src/sap/fe/core/converters/helpers/ID.js +48 -46
- package/src/sap/fe/core/converters/helpers/ID.ts +26 -25
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
- package/src/sap/fe/core/converters/helpers/Key.js +7 -7
- package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -5
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +53 -75
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +59 -90
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +58 -57
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +93 -86
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +58 -44
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +87 -80
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
- package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
- package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
- package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/StandardFormatter.js +96 -0
- package/src/sap/fe/core/formatters/StandardFormatter.ts +70 -0
- package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
- package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
- package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
- package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
- package/src/sap/fe/core/fpm/Component.js +33 -7
- package/src/sap/fe/core/fpm/Component.ts +14 -0
- package/src/sap/fe/core/helpers/AnnotationEnum.js +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +19 -18
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +41 -43
- package/src/sap/fe/core/helpers/BindingToolkit.js +1836 -0
- package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +397 -270
- package/src/sap/fe/core/helpers/ClassSupport.js +49 -12
- package/src/sap/fe/core/helpers/ClassSupport.ts +37 -10
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -6
- package/src/sap/fe/core/helpers/EditState.ts +5 -10
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
- package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
- package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.js +306 -280
- package/src/sap/fe/core/helpers/MassEditHelper.ts +380 -360
- package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
- package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
- package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
- package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
- package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
- package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
- package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
- package/src/sap/fe/core/helpers/Synchronization.js +1 -1
- package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
- package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js +109 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +47 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +110 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +92 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
- package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
- package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
- package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +179 -0
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +150 -0
- package/src/sap/fe/core/library.js +42 -3
- package/src/sap/fe/core/library.support.js +1 -1
- package/src/sap/fe/core/library.ts +38 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
- package/src/sap/fe/core/messagebundle.properties +39 -67
- package/src/sap/fe/core/messagebundle_ar.properties +27 -44
- package/src/sap/fe/core/messagebundle_bg.properties +27 -44
- package/src/sap/fe/core/messagebundle_ca.properties +27 -44
- package/src/sap/fe/core/messagebundle_cs.properties +27 -44
- package/src/sap/fe/core/messagebundle_cy.properties +26 -43
- package/src/sap/fe/core/messagebundle_da.properties +27 -44
- package/src/sap/fe/core/messagebundle_de.properties +25 -42
- package/src/sap/fe/core/messagebundle_el.properties +28 -45
- package/src/sap/fe/core/messagebundle_en.properties +27 -44
- package/src/sap/fe/core/messagebundle_en_GB.properties +27 -44
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +25 -42
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +26 -40
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +25 -42
- package/src/sap/fe/core/messagebundle_es.properties +27 -44
- package/src/sap/fe/core/messagebundle_es_MX.properties +27 -44
- package/src/sap/fe/core/messagebundle_et.properties +27 -44
- package/src/sap/fe/core/messagebundle_fi.properties +27 -44
- package/src/sap/fe/core/messagebundle_fr.properties +26 -43
- package/src/sap/fe/core/messagebundle_fr_CA.properties +25 -42
- package/src/sap/fe/core/messagebundle_hi.properties +27 -44
- package/src/sap/fe/core/messagebundle_hr.properties +27 -44
- package/src/sap/fe/core/messagebundle_hu.properties +27 -44
- package/src/sap/fe/core/messagebundle_id.properties +27 -44
- package/src/sap/fe/core/messagebundle_it.properties +43 -60
- package/src/sap/fe/core/messagebundle_iw.properties +27 -44
- package/src/sap/fe/core/messagebundle_ja.properties +27 -44
- package/src/sap/fe/core/messagebundle_kk.properties +27 -44
- package/src/sap/fe/core/messagebundle_ko.properties +30 -47
- package/src/sap/fe/core/messagebundle_lt.properties +27 -44
- package/src/sap/fe/core/messagebundle_lv.properties +27 -44
- package/src/sap/fe/core/messagebundle_ms.properties +27 -44
- package/src/sap/fe/core/messagebundle_nl.properties +29 -46
- package/src/sap/fe/core/messagebundle_no.properties +27 -44
- package/src/sap/fe/core/messagebundle_pl.properties +28 -45
- package/src/sap/fe/core/messagebundle_pt.properties +28 -45
- package/src/sap/fe/core/messagebundle_pt_PT.properties +27 -44
- package/src/sap/fe/core/messagebundle_ro.properties +27 -44
- package/src/sap/fe/core/messagebundle_ru.properties +27 -44
- package/src/sap/fe/core/messagebundle_sh.properties +27 -44
- package/src/sap/fe/core/messagebundle_sk.properties +27 -44
- package/src/sap/fe/core/messagebundle_sl.properties +27 -44
- package/src/sap/fe/core/messagebundle_sv.properties +27 -44
- package/src/sap/fe/core/messagebundle_th.properties +25 -42
- package/src/sap/fe/core/messagebundle_tr.properties +27 -44
- package/src/sap/fe/core/messagebundle_uk.properties +27 -44
- package/src/sap/fe/core/messagebundle_vi.properties +27 -44
- package/src/sap/fe/core/messagebundle_zh_CN.properties +27 -44
- package/src/sap/fe/core/messagebundle_zh_TW.properties +27 -44
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +3 -3
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +103 -75
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +72 -73
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.js +62 -50
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +63 -52
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +3 -3
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
- package/src/sap/fe/core/services/RoutingServiceFactory.js +56 -56
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
- package/src/sap/fe/core/services/ShellServicesFactory.js +93 -77
- package/src/sap/fe/core/services/ShellServicesFactory.ts +95 -82
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +64 -64
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +232 -200
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +145 -142
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -2
- 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 +3 -2
- package/src/sap/fe/core/support/CommonHelper.ts +9 -13
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.ts +5 -5
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.js +85 -0
- package/src/sap/fe/core/templating/CommonFormatters.ts +90 -0
- package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
- package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
- package/src/sap/fe/core/templating/DataModelPathHelper.js +23 -15
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +47 -34
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
- package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
- package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
- package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
- package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
- package/src/sap/fe/core/templating/FilterHelper.js +18 -17
- package/src/sap/fe/core/templating/FilterHelper.ts +18 -18
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
- package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
- package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
- package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
- package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
- package/src/sap/fe/core/templating/UIFormatters.js +152 -95
- package/src/sap/fe/core/templating/UIFormatters.ts +202 -128
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +2 -2
- package/src/sap/fe/core/type/Email.js +3 -3
- package/src/sap/fe/core/type/Email.ts +2 -2
- package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IssueCategory, IssueSeverity } from "sap/fe/core/converters/helpers/IssueManager";
|
|
1
|
+
import type { IssueCategory, IssueSeverity } from "sap/fe/core/converters/helpers/IssueManager";
|
|
2
2
|
|
|
3
3
|
export type IssueDefinition = {
|
|
4
4
|
category: IssueCategory;
|
|
@@ -33,9 +33,9 @@ class Diagnostics {
|
|
|
33
33
|
}
|
|
34
34
|
getIssuesByCategory(inCategory: IssueCategory, subCategory?: string): IssueDefinition[] {
|
|
35
35
|
if (subCategory) {
|
|
36
|
-
return this._issues.filter(issue => issue.category === inCategory && issue.subCategory === subCategory);
|
|
36
|
+
return this._issues.filter((issue) => issue.category === inCategory && issue.subCategory === subCategory);
|
|
37
37
|
} else {
|
|
38
|
-
return this._issues.filter(issue => issue.category === inCategory);
|
|
38
|
+
return this._issues.filter((issue) => issue.category === inCategory);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
checkIfIssueExists(
|
|
@@ -47,7 +47,7 @@ class Diagnostics {
|
|
|
47
47
|
): boolean {
|
|
48
48
|
if (issueCategoryType && issueCategoryType[inCategory] && issueSubCategory) {
|
|
49
49
|
return this._issues.some(
|
|
50
|
-
issue =>
|
|
50
|
+
(issue) =>
|
|
51
51
|
issue.category === inCategory &&
|
|
52
52
|
issue.severity === severity &&
|
|
53
53
|
issue.details.replace(/\n/g, "") === details.replace(/\n/g, "") &&
|
|
@@ -55,7 +55,7 @@ class Diagnostics {
|
|
|
55
55
|
);
|
|
56
56
|
}
|
|
57
57
|
return this._issues.some(
|
|
58
|
-
issue =>
|
|
58
|
+
(issue) =>
|
|
59
59
|
issue.category === inCategory &&
|
|
60
60
|
issue.severity === severity &&
|
|
61
61
|
issue.details.replace(/\n/g, "") === details.replace(/\n/g, "")
|
|
@@ -35,4 +35,4 @@ sap.ui.define(["sap/fe/core/support/CommonHelper", "sap/fe/core/converters/helpe
|
|
|
35
35
|
_exports.getRules = getRules;
|
|
36
36
|
return _exports;
|
|
37
37
|
}, false);
|
|
38
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvSW52YWxpZEFubm90YXRpb25Db2x1bW5LZXkiLCJpZCIsInRpdGxlIiwibWludmVyc2lvbiIsImF1ZGllbmNlcyIsIkF1ZGllbmNlcyIsIkFwcGxpY2F0aW9uIiwiY2F0ZWdvcmllcyIsIkNhdGVnb3JpZXMiLCJVc2FnZSIsImRlc2NyaXB0aW9uIiwicmVzb2x1dGlvbiIsInJlc29sdXRpb251cmxzIiwiY2hlY2siLCJvSXNzdWVNYW5hZ2VyIiwib0NvcmVGYWNhZGUiLCJnZXRJc3N1ZUJ5Q2F0ZWdvcnkiLCJJc3N1ZUNhdGVnb3J5IiwiTWFuaWZlc3QiLCJnZXRSdWxlcyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSW52YWxpZEFubm90YXRpb25Db2x1bW5LZXkuc3VwcG9ydC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYXRlZ29yaWVzLCBnZXRJc3N1ZUJ5Q2F0ZWdvcnksIEF1ZGllbmNlcyB9IGZyb20gXCJzYXAvZmUvY29yZS9zdXBwb3J0L0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IHsgSXNzdWVDYXRlZ29yeSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSXNzdWVNYW5hZ2VyXCI7XG5jb25zdCBvSW52YWxpZEFubm90YXRpb25Db2x1bW5LZXkgPSB7XG5cdGlkOiBcImludmFsaWRBbm5vdGF0aW9uQ29sdW1uS2V5XCIsXG5cdHRpdGxlOiBcIkFubm90YXRpb25Db2x1bW5LZXk6IEludmFsaWQgS2V5XCIsXG5cdG1pbnZlcnNpb246IFwiMS45OFwiLFxuXHRhdWRpZW5jZXM6IFtBdWRpZW5jZXMuQXBwbGljYXRpb25dLFxuXHRjYXRlZ29yaWVzOiBbQ2F0ZWdvcmllcy5Vc2FnZV0sXG5cdGRlc2NyaXB0aW9uOiBcIlRoZSBrZXkgb2YgdGhlIGFubm90YXRpb24gY29sdW1uIGlzIG5lZWRlZCBhcyBhIHZhbGlkIGlkZW50aWZpZXIgaW4gdGhlIGFwcGxpY2F0aW9uIG1hbmlmZXN0LlwiLFxuXHRyZXNvbHV0aW9uOiBcIkEgY29sdW1uIGtleSBzZXQgaW4gdGhlIGFwcGxpY2F0aW9uIG1hbmlmZXN0IG11c3QgY29ycmVzcG9uZCB0byBhbiBleGlzdGluZyBhbm5vdGF0aW9uIGNvbHVtbi5cIixcblx0cmVzb2x1dGlvbnVybHM6IFt7IFwidGV4dFwiOiBcIkludmFsaWRBbm5vdGF0aW9uQ29sdW1uS2V5XCIsIFwiaHJlZlwiOiBcImh0dHBzOi8vdWk1LnNhcC5jb20vIy90b3BpYy9kNTI1NTIyYzFiZjU0NjcyYWU0ZTAyZDY2YjM4ZTYwY1wiIH1dLFxuXHRjaGVjazogZnVuY3Rpb24ob0lzc3VlTWFuYWdlcjogYW55LCBvQ29yZUZhY2FkZTogYW55IC8qb1Njb3BlOiBhbnkqLykge1xuXHRcdGdldElzc3VlQnlDYXRlZ29yeShvSXNzdWVNYW5hZ2VyLCBvQ29yZUZhY2FkZSwgSXNzdWVDYXRlZ29yeS5NYW5pZmVzdCwgXCJJbnZhbGlkS2V5XCIpO1xuXHR9XG59O1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJ1bGVzKCkge1xuXHRyZXR1cm4gW29JbnZhbGlkQW5ub3RhdGlvbkNvbHVtbktleV07XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7RUFFQSxJQUFNQSwyQkFBMkIsR0FBRztJQUNuQ0MsRUFBRSxFQUFFLDRCQUQrQjtJQUVuQ0MsS0FBSyxFQUFFLGtDQUY0QjtJQUduQ0MsVUFBVSxFQUFFLE1BSHVCO0lBSW5DQyxTQUFTLEVBQUUsQ0FBQ0MsU0FBUyxDQUFDQyxXQUFYLENBSndCO0lBS25DQyxVQUFVLEVBQUUsQ0FBQ0MsVUFBVSxDQUFDQyxLQUFaLENBTHVCO0lBTW5DQyxXQUFXLEVBQUUsK0ZBTnNCO0lBT25DQyxVQUFVLEVBQUUsZ0dBUHVCO0lBUW5DQyxjQUFjLEVBQUUsQ0FBQztNQUFFLFFBQVEsNEJBQVY7TUFBd0MsUUFBUTtJQUFoRCxDQUFELENBUm1CO0lBU25DQyxLQUFLLEVBQUUsVUFBU0MsYUFBVCxFQUE2QkMsV0FBN0IsRUFBK0Q7TUFDckVDLGtCQUFrQixDQUFDRixhQUFELEVBQWdCQyxXQUFoQixFQUE2QkUsYUFBYSxDQUFDQyxRQUEzQyxFQUFxRCxZQUFyRCxDQUFsQjtJQUNBO0VBWGtDLENBQXBDOztFQWFPLFNBQVNDLFFBQVQsR0FBb0I7SUFDMUIsT0FBTyxDQUFDbkIsMkJBQUQsQ0FBUDtFQUNBIn0=
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define(["sap/fe/core/formatters/ValueFormatter", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/PropertyHelper", "sap/fe/core/templating/UIFormatters", "../converters/helpers/DataFieldHelper"], function (valueFormatters, BindingToolkit, DataModelPathHelper, PropertyHelper, UIFormatters, DataFieldHelper) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var _exports = {};
|
|
9
|
+
var isReferencePropertyStaticallyHidden = DataFieldHelper.isReferencePropertyStaticallyHidden;
|
|
10
|
+
var getPathRelativeLocation = DataModelPathHelper.getPathRelativeLocation;
|
|
11
|
+
var getContextRelativeTargetObjectPath = DataModelPathHelper.getContextRelativeTargetObjectPath;
|
|
12
|
+
var enhanceDataModelPath = DataModelPathHelper.enhanceDataModelPath;
|
|
13
|
+
var pathInModel = BindingToolkit.pathInModel;
|
|
14
|
+
var getExpressionFromAnnotation = BindingToolkit.getExpressionFromAnnotation;
|
|
15
|
+
var formatResult = BindingToolkit.formatResult;
|
|
16
|
+
var compileExpression = BindingToolkit.compileExpression;
|
|
17
|
+
|
|
18
|
+
// Import-export methods related to the common annotations used by the converter to use them in the templating through the Common Formatters.
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Retrieves the expressionBinding created out of a binding expression.
|
|
22
|
+
*
|
|
23
|
+
* @param expression The expression which needs to be compiled
|
|
24
|
+
* @returns The expression-binding string
|
|
25
|
+
*/
|
|
26
|
+
var getExpressionBinding = function (expression) {
|
|
27
|
+
return compileExpression(expression);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
_exports.getExpressionBinding = getExpressionBinding;
|
|
31
|
+
|
|
32
|
+
var getBindingWithTextArrangement = function (oPropertyDataModelPath, propertyBindingExpression, fieldFormatOptions) {
|
|
33
|
+
var _oPropertyDefinition$, _oPropertyDefinition$2;
|
|
34
|
+
|
|
35
|
+
var targetDisplayModeOverride = fieldFormatOptions === null || fieldFormatOptions === void 0 ? void 0 : fieldFormatOptions.displayMode;
|
|
36
|
+
var outExpression = propertyBindingExpression;
|
|
37
|
+
var oPropertyDefinition = oPropertyDataModelPath.targetObject.type === "PropertyPath" ? oPropertyDataModelPath.targetObject.$target : oPropertyDataModelPath.targetObject;
|
|
38
|
+
var targetDisplayMode = targetDisplayModeOverride || UIFormatters.getDisplayMode(oPropertyDataModelPath);
|
|
39
|
+
var commonText = (_oPropertyDefinition$ = oPropertyDefinition.annotations) === null || _oPropertyDefinition$ === void 0 ? void 0 : (_oPropertyDefinition$2 = _oPropertyDefinition$.Common) === null || _oPropertyDefinition$2 === void 0 ? void 0 : _oPropertyDefinition$2.Text;
|
|
40
|
+
var relativeLocation = getPathRelativeLocation(oPropertyDataModelPath.contextLocation, oPropertyDataModelPath.navigationProperties).map(function (np) {
|
|
41
|
+
return np.name;
|
|
42
|
+
});
|
|
43
|
+
propertyBindingExpression = UIFormatters.formatWithTypeInformation(oPropertyDefinition, propertyBindingExpression);
|
|
44
|
+
|
|
45
|
+
if (targetDisplayMode !== "Value" && commonText) {
|
|
46
|
+
switch (targetDisplayMode) {
|
|
47
|
+
case "Description":
|
|
48
|
+
outExpression = getExpressionFromAnnotation(commonText, relativeLocation);
|
|
49
|
+
break;
|
|
50
|
+
|
|
51
|
+
case "DescriptionValue":
|
|
52
|
+
outExpression = formatResult([getExpressionFromAnnotation(commonText, relativeLocation), propertyBindingExpression], valueFormatters.formatWithBrackets);
|
|
53
|
+
break;
|
|
54
|
+
|
|
55
|
+
case "ValueDescription":
|
|
56
|
+
outExpression = formatResult([propertyBindingExpression, getExpressionFromAnnotation(commonText, relativeLocation)], valueFormatters.formatWithBrackets);
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return outExpression;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
_exports.getBindingWithTextArrangement = getBindingWithTextArrangement;
|
|
65
|
+
|
|
66
|
+
var getBindingWithText = function (targetDataModelPath) {
|
|
67
|
+
var propertyDataModelPath = targetDataModelPath;
|
|
68
|
+
|
|
69
|
+
if (PropertyHelper.isPathExpression(targetDataModelPath === null || targetDataModelPath === void 0 ? void 0 : targetDataModelPath.targetObject)) {
|
|
70
|
+
var _targetDataModelPath$;
|
|
71
|
+
|
|
72
|
+
propertyDataModelPath = enhanceDataModelPath(targetDataModelPath, (_targetDataModelPath$ = targetDataModelPath.targetObject) === null || _targetDataModelPath$ === void 0 ? void 0 : _targetDataModelPath$.path);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
var propertyDefinition = propertyDataModelPath.targetObject;
|
|
76
|
+
var propertyBindingExpression = pathInModel(getContextRelativeTargetObjectPath(propertyDataModelPath));
|
|
77
|
+
propertyBindingExpression = UIFormatters.formatWithTypeInformation(propertyDefinition, propertyBindingExpression, true);
|
|
78
|
+
var textArrangementBinding = getBindingWithTextArrangement(propertyDataModelPath, propertyBindingExpression);
|
|
79
|
+
return propertyDefinition.annotations.UI && !isReferencePropertyStaticallyHidden(propertyDefinition.annotations.UI.DataFieldDefault) && compileExpression(textArrangementBinding) || undefined;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
_exports.getBindingWithText = getBindingWithText;
|
|
83
|
+
return _exports;
|
|
84
|
+
}, false);
|
|
85
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRFeHByZXNzaW9uQmluZGluZyIsImV4cHJlc3Npb24iLCJjb21waWxlRXhwcmVzc2lvbiIsImdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50Iiwib1Byb3BlcnR5RGF0YU1vZGVsUGF0aCIsInByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24iLCJmaWVsZEZvcm1hdE9wdGlvbnMiLCJ0YXJnZXREaXNwbGF5TW9kZU92ZXJyaWRlIiwiZGlzcGxheU1vZGUiLCJvdXRFeHByZXNzaW9uIiwib1Byb3BlcnR5RGVmaW5pdGlvbiIsInRhcmdldE9iamVjdCIsInR5cGUiLCIkdGFyZ2V0IiwidGFyZ2V0RGlzcGxheU1vZGUiLCJVSUZvcm1hdHRlcnMiLCJnZXREaXNwbGF5TW9kZSIsImNvbW1vblRleHQiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIlRleHQiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24iLCJjb250ZXh0TG9jYXRpb24iLCJuYXZpZ2F0aW9uUHJvcGVydGllcyIsIm1hcCIsIm5wIiwibmFtZSIsImZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24iLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJmb3JtYXRSZXN1bHQiLCJ2YWx1ZUZvcm1hdHRlcnMiLCJmb3JtYXRXaXRoQnJhY2tldHMiLCJnZXRCaW5kaW5nV2l0aFRleHQiLCJ0YXJnZXREYXRhTW9kZWxQYXRoIiwicHJvcGVydHlEYXRhTW9kZWxQYXRoIiwiUHJvcGVydHlIZWxwZXIiLCJpc1BhdGhFeHByZXNzaW9uIiwiZW5oYW5jZURhdGFNb2RlbFBhdGgiLCJwYXRoIiwicHJvcGVydHlEZWZpbml0aW9uIiwicGF0aEluTW9kZWwiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwidGV4dEFycmFuZ2VtZW50QmluZGluZyIsIlVJIiwiaXNSZWZlcmVuY2VQcm9wZXJ0eVN0YXRpY2FsbHlIaWRkZW4iLCJEYXRhRmllbGREZWZhdWx0IiwidW5kZWZpbmVkIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDb21tb25Gb3JtYXR0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB2YWx1ZUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvVmFsdWVGb3JtYXR0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgZm9ybWF0UmVzdWx0LCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sIHBhdGhJbk1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7XG5cdGVuaGFuY2VEYXRhTW9kZWxQYXRoLFxuXHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoLFxuXHRnZXRQYXRoUmVsYXRpdmVMb2NhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSAqIGFzIERpc3BsYXlNb2RlRm9ybWF0dGVyIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0Rpc3BsYXlNb2RlRm9ybWF0dGVyXCI7XG5pbXBvcnQgKiBhcyBQcm9wZXJ0eUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0ICogYXMgVUlGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IHsgaXNSZWZlcmVuY2VQcm9wZXJ0eVN0YXRpY2FsbHlIaWRkZW4gfSBmcm9tIFwiLi4vY29udmVydGVycy9oZWxwZXJzL0RhdGFGaWVsZEhlbHBlclwiO1xuZXhwb3J0IHR5cGUgRGlzcGxheU1vZGUgPSBEaXNwbGF5TW9kZUZvcm1hdHRlci5EaXNwbGF5TW9kZTtcblxuLy8gSW1wb3J0LWV4cG9ydCBtZXRob2RzIHJlbGF0ZWQgdG8gdGhlIGNvbW1vbiBhbm5vdGF0aW9ucyB1c2VkIGJ5IHRoZSBjb252ZXJ0ZXIgdG8gdXNlIHRoZW0gaW4gdGhlIHRlbXBsYXRpbmcgdGhyb3VnaCB0aGUgQ29tbW9uIEZvcm1hdHRlcnMuXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBleHByZXNzaW9uQmluZGluZyBjcmVhdGVkIG91dCBvZiBhIGJpbmRpbmcgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBUaGUgZXhwcmVzc2lvbiB3aGljaCBuZWVkcyB0byBiZSBjb21waWxlZFxuICogQHJldHVybnMgVGhlIGV4cHJlc3Npb24tYmluZGluZyBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEV4cHJlc3Npb25CaW5kaW5nID0gZnVuY3Rpb24gKGV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxhbnk+KTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG59O1xuZXhwb3J0IGNvbnN0IGdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50ID0gZnVuY3Rpb24gKFxuXHRvUHJvcGVydHlEYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPixcblx0ZmllbGRGb3JtYXRPcHRpb25zPzogeyBkaXNwbGF5TW9kZT86IERpc3BsYXlNb2RlIH1cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0Y29uc3QgdGFyZ2V0RGlzcGxheU1vZGVPdmVycmlkZSA9IGZpZWxkRm9ybWF0T3B0aW9ucz8uZGlzcGxheU1vZGU7XG5cdGxldCBvdXRFeHByZXNzaW9uID0gcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbjtcblx0Y29uc3Qgb1Byb3BlcnR5RGVmaW5pdGlvbiA9XG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QudHlwZSA9PT0gXCJQcm9wZXJ0eVBhdGhcIlxuXHRcdFx0PyAob1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QuJHRhcmdldCBhcyBQcm9wZXJ0eSlcblx0XHRcdDogKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5KTtcblx0Y29uc3QgdGFyZ2V0RGlzcGxheU1vZGUgPSB0YXJnZXREaXNwbGF5TW9kZU92ZXJyaWRlIHx8IFVJRm9ybWF0dGVycy5nZXREaXNwbGF5TW9kZShvUHJvcGVydHlEYXRhTW9kZWxQYXRoKTtcblx0Y29uc3QgY29tbW9uVGV4dCA9IG9Qcm9wZXJ0eURlZmluaXRpb24uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dDtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uLFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXNcblx0KS5tYXAoKG5wKSA9PiBucC5uYW1lKTtcblx0cHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbiA9IFVJRm9ybWF0dGVycy5mb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKG9Qcm9wZXJ0eURlZmluaXRpb24sIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24pO1xuXHRpZiAodGFyZ2V0RGlzcGxheU1vZGUgIT09IFwiVmFsdWVcIiAmJiBjb21tb25UZXh0KSB7XG5cdFx0c3dpdGNoICh0YXJnZXREaXNwbGF5TW9kZSkge1xuXHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdG91dEV4cHJlc3Npb24gPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz47XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uVmFsdWVcIjpcblx0XHRcdFx0b3V0RXhwcmVzc2lvbiA9IGZvcm1hdFJlc3VsdChcblx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0XHR2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aEJyYWNrZXRzXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlZhbHVlRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0b3V0RXhwcmVzc2lvbiA9IGZvcm1hdFJlc3VsdChcblx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLFxuXHRcdFx0XHRcdFx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+XG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0XHR2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aEJyYWNrZXRzXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gb3V0RXhwcmVzc2lvbjtcbn07XG5leHBvcnQgY29uc3QgZ2V0QmluZGluZ1dpdGhUZXh0ID0gZnVuY3Rpb24gKHRhcmdldERhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdGxldCBwcm9wZXJ0eURhdGFNb2RlbFBhdGggPSB0YXJnZXREYXRhTW9kZWxQYXRoO1xuXHRpZiAoUHJvcGVydHlIZWxwZXIuaXNQYXRoRXhwcmVzc2lvbih0YXJnZXREYXRhTW9kZWxQYXRoPy50YXJnZXRPYmplY3QpKSB7XG5cdFx0cHJvcGVydHlEYXRhTW9kZWxQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGgodGFyZ2V0RGF0YU1vZGVsUGF0aCwgdGFyZ2V0RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3Q/LnBhdGgpO1xuXHR9XG5cdGNvbnN0IHByb3BlcnR5RGVmaW5pdGlvbiA9IHByb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cblx0bGV0IHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBwYXRoSW5Nb2RlbChcblx0XHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKHByb3BlcnR5RGF0YU1vZGVsUGF0aClcblx0KSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPjtcblxuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uID0gVUlGb3JtYXR0ZXJzLmZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24ocHJvcGVydHlEZWZpbml0aW9uLCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCB0cnVlKTtcblx0Y29uc3QgdGV4dEFycmFuZ2VtZW50QmluZGluZyA9IGdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50KHByb3BlcnR5RGF0YU1vZGVsUGF0aCwgcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbik7XG5cdHJldHVybiAoKHByb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucy5VSSAmJlxuXHRcdCFpc1JlZmVyZW5jZVByb3BlcnR5U3RhdGljYWxseUhpZGRlbihwcm9wZXJ0eURlZmluaXRpb24uYW5ub3RhdGlvbnMuVUkuRGF0YUZpZWxkRGVmYXVsdCkgJiZcblx0XHRjb21waWxlRXhwcmVzc2lvbih0ZXh0QXJyYW5nZW1lbnRCaW5kaW5nKSkgfHxcblx0XHR1bmRlZmluZWQpIGFzIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xufTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFnQkE7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sSUFBTUEsb0JBQW9CLEdBQUcsVUFBVUMsVUFBVixFQUF1RjtJQUMxSCxPQUFPQyxpQkFBaUIsQ0FBQ0QsVUFBRCxDQUF4QjtFQUNBLENBRk07Ozs7RUFHQSxJQUFNRSw2QkFBNkIsR0FBRyxVQUM1Q0Msc0JBRDRDLEVBRTVDQyx5QkFGNEMsRUFHNUNDLGtCQUg0QyxFQUlUO0lBQUE7O0lBQ25DLElBQU1DLHlCQUF5QixHQUFHRCxrQkFBSCxhQUFHQSxrQkFBSCx1QkFBR0Esa0JBQWtCLENBQUVFLFdBQXREO0lBQ0EsSUFBSUMsYUFBYSxHQUFHSix5QkFBcEI7SUFDQSxJQUFNSyxtQkFBbUIsR0FDeEJOLHNCQUFzQixDQUFDTyxZQUF2QixDQUFvQ0MsSUFBcEMsS0FBNkMsY0FBN0MsR0FDSVIsc0JBQXNCLENBQUNPLFlBQXZCLENBQW9DRSxPQUR4QyxHQUVJVCxzQkFBc0IsQ0FBQ08sWUFINUI7SUFJQSxJQUFNRyxpQkFBaUIsR0FBR1AseUJBQXlCLElBQUlRLFlBQVksQ0FBQ0MsY0FBYixDQUE0Qlosc0JBQTVCLENBQXZEO0lBQ0EsSUFBTWEsVUFBVSw0QkFBR1AsbUJBQW1CLENBQUNRLFdBQXZCLG9GQUFHLHNCQUFpQ0MsTUFBcEMsMkRBQUcsdUJBQXlDQyxJQUE1RDtJQUNBLElBQU1DLGdCQUFnQixHQUFHQyx1QkFBdUIsQ0FDL0NsQixzQkFBc0IsQ0FBQ21CLGVBRHdCLEVBRS9DbkIsc0JBQXNCLENBQUNvQixvQkFGd0IsQ0FBdkIsQ0FHdkJDLEdBSHVCLENBR25CLFVBQUNDLEVBQUQ7TUFBQSxPQUFRQSxFQUFFLENBQUNDLElBQVg7SUFBQSxDQUhtQixDQUF6QjtJQUlBdEIseUJBQXlCLEdBQUdVLFlBQVksQ0FBQ2EseUJBQWIsQ0FBdUNsQixtQkFBdkMsRUFBNERMLHlCQUE1RCxDQUE1Qjs7SUFDQSxJQUFJUyxpQkFBaUIsS0FBSyxPQUF0QixJQUFpQ0csVUFBckMsRUFBaUQ7TUFDaEQsUUFBUUgsaUJBQVI7UUFDQyxLQUFLLGFBQUw7VUFDQ0wsYUFBYSxHQUFHb0IsMkJBQTJCLENBQUNaLFVBQUQsRUFBYUksZ0JBQWIsQ0FBM0M7VUFDQTs7UUFDRCxLQUFLLGtCQUFMO1VBQ0NaLGFBQWEsR0FBR3FCLFlBQVksQ0FDM0IsQ0FDQ0QsMkJBQTJCLENBQUNaLFVBQUQsRUFBYUksZ0JBQWIsQ0FENUIsRUFFQ2hCLHlCQUZELENBRDJCLEVBSzNCMEIsZUFBZSxDQUFDQyxrQkFMVyxDQUE1QjtVQU9BOztRQUNELEtBQUssa0JBQUw7VUFDQ3ZCLGFBQWEsR0FBR3FCLFlBQVksQ0FDM0IsQ0FDQ3pCLHlCQURELEVBRUN3QiwyQkFBMkIsQ0FBQ1osVUFBRCxFQUFhSSxnQkFBYixDQUY1QixDQUQyQixFQUszQlUsZUFBZSxDQUFDQyxrQkFMVyxDQUE1QjtVQU9BO01BckJGO0lBdUJBOztJQUNELE9BQU92QixhQUFQO0VBQ0EsQ0E1Q007Ozs7RUE2Q0EsSUFBTXdCLGtCQUFrQixHQUFHLFVBQVVDLG1CQUFWLEVBQXNGO0lBQ3ZILElBQUlDLHFCQUFxQixHQUFHRCxtQkFBNUI7O0lBQ0EsSUFBSUUsY0FBYyxDQUFDQyxnQkFBZixDQUFnQ0gsbUJBQWhDLGFBQWdDQSxtQkFBaEMsdUJBQWdDQSxtQkFBbUIsQ0FBRXZCLFlBQXJELENBQUosRUFBd0U7TUFBQTs7TUFDdkV3QixxQkFBcUIsR0FBR0csb0JBQW9CLENBQUNKLG1CQUFELDJCQUFzQkEsbUJBQW1CLENBQUN2QixZQUExQywwREFBc0Isc0JBQWtDNEIsSUFBeEQsQ0FBNUM7SUFDQTs7SUFDRCxJQUFNQyxrQkFBa0IsR0FBR0wscUJBQXFCLENBQUN4QixZQUFqRDtJQUVBLElBQUlOLHlCQUF5QixHQUFHb0MsV0FBVyxDQUMxQ0Msa0NBQWtDLENBQUNQLHFCQUFELENBRFEsQ0FBM0M7SUFJQTlCLHlCQUF5QixHQUFHVSxZQUFZLENBQUNhLHlCQUFiLENBQXVDWSxrQkFBdkMsRUFBMkRuQyx5QkFBM0QsRUFBc0YsSUFBdEYsQ0FBNUI7SUFDQSxJQUFNc0Msc0JBQXNCLEdBQUd4Qyw2QkFBNkIsQ0FBQ2dDLHFCQUFELEVBQXdCOUIseUJBQXhCLENBQTVEO0lBQ0EsT0FBU21DLGtCQUFrQixDQUFDdEIsV0FBbkIsQ0FBK0IwQixFQUEvQixJQUNSLENBQUNDLG1DQUFtQyxDQUFDTCxrQkFBa0IsQ0FBQ3RCLFdBQW5CLENBQStCMEIsRUFBL0IsQ0FBa0NFLGdCQUFuQyxDQUQ1QixJQUVSNUMsaUJBQWlCLENBQUN5QyxzQkFBRCxDQUZWLElBR1BJLFNBSEQ7RUFJQSxDQWpCTSJ9
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { Property } from "@sap-ux/vocabularies-types";
|
|
2
|
+
import valueFormatters from "sap/fe/core/formatters/ValueFormatter";
|
|
3
|
+
import type { BindingToolkitExpression, CompiledBindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
|
|
4
|
+
import { compileExpression, formatResult, getExpressionFromAnnotation, pathInModel } from "sap/fe/core/helpers/BindingToolkit";
|
|
5
|
+
import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
6
|
+
import {
|
|
7
|
+
enhanceDataModelPath,
|
|
8
|
+
getContextRelativeTargetObjectPath,
|
|
9
|
+
getPathRelativeLocation
|
|
10
|
+
} from "sap/fe/core/templating/DataModelPathHelper";
|
|
11
|
+
import type * as DisplayModeFormatter from "sap/fe/core/templating/DisplayModeFormatter";
|
|
12
|
+
import * as PropertyHelper from "sap/fe/core/templating/PropertyHelper";
|
|
13
|
+
import * as UIFormatters from "sap/fe/core/templating/UIFormatters";
|
|
14
|
+
import { isReferencePropertyStaticallyHidden } from "../converters/helpers/DataFieldHelper";
|
|
15
|
+
export type DisplayMode = DisplayModeFormatter.DisplayMode;
|
|
16
|
+
|
|
17
|
+
// Import-export methods related to the common annotations used by the converter to use them in the templating through the Common Formatters.
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Retrieves the expressionBinding created out of a binding expression.
|
|
21
|
+
*
|
|
22
|
+
* @param expression The expression which needs to be compiled
|
|
23
|
+
* @returns The expression-binding string
|
|
24
|
+
*/
|
|
25
|
+
export const getExpressionBinding = function (expression: BindingToolkitExpression<any>): CompiledBindingToolkitExpression {
|
|
26
|
+
return compileExpression(expression);
|
|
27
|
+
};
|
|
28
|
+
export const getBindingWithTextArrangement = function (
|
|
29
|
+
oPropertyDataModelPath: DataModelObjectPath,
|
|
30
|
+
propertyBindingExpression: BindingToolkitExpression<string>,
|
|
31
|
+
fieldFormatOptions?: { displayMode?: DisplayMode }
|
|
32
|
+
): BindingToolkitExpression<string> {
|
|
33
|
+
const targetDisplayModeOverride = fieldFormatOptions?.displayMode;
|
|
34
|
+
let outExpression = propertyBindingExpression;
|
|
35
|
+
const oPropertyDefinition =
|
|
36
|
+
oPropertyDataModelPath.targetObject.type === "PropertyPath"
|
|
37
|
+
? (oPropertyDataModelPath.targetObject.$target as Property)
|
|
38
|
+
: (oPropertyDataModelPath.targetObject as Property);
|
|
39
|
+
const targetDisplayMode = targetDisplayModeOverride || UIFormatters.getDisplayMode(oPropertyDataModelPath);
|
|
40
|
+
const commonText = oPropertyDefinition.annotations?.Common?.Text;
|
|
41
|
+
const relativeLocation = getPathRelativeLocation(
|
|
42
|
+
oPropertyDataModelPath.contextLocation,
|
|
43
|
+
oPropertyDataModelPath.navigationProperties
|
|
44
|
+
).map((np) => np.name);
|
|
45
|
+
propertyBindingExpression = UIFormatters.formatWithTypeInformation(oPropertyDefinition, propertyBindingExpression);
|
|
46
|
+
if (targetDisplayMode !== "Value" && commonText) {
|
|
47
|
+
switch (targetDisplayMode) {
|
|
48
|
+
case "Description":
|
|
49
|
+
outExpression = getExpressionFromAnnotation(commonText, relativeLocation) as BindingToolkitExpression<string>;
|
|
50
|
+
break;
|
|
51
|
+
case "DescriptionValue":
|
|
52
|
+
outExpression = formatResult(
|
|
53
|
+
[
|
|
54
|
+
getExpressionFromAnnotation(commonText, relativeLocation) as BindingToolkitExpression<string>,
|
|
55
|
+
propertyBindingExpression
|
|
56
|
+
],
|
|
57
|
+
valueFormatters.formatWithBrackets
|
|
58
|
+
);
|
|
59
|
+
break;
|
|
60
|
+
case "ValueDescription":
|
|
61
|
+
outExpression = formatResult(
|
|
62
|
+
[
|
|
63
|
+
propertyBindingExpression,
|
|
64
|
+
getExpressionFromAnnotation(commonText, relativeLocation) as BindingToolkitExpression<string>
|
|
65
|
+
],
|
|
66
|
+
valueFormatters.formatWithBrackets
|
|
67
|
+
);
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return outExpression;
|
|
72
|
+
};
|
|
73
|
+
export const getBindingWithText = function (targetDataModelPath: DataModelObjectPath): CompiledBindingToolkitExpression {
|
|
74
|
+
let propertyDataModelPath = targetDataModelPath;
|
|
75
|
+
if (PropertyHelper.isPathExpression(targetDataModelPath?.targetObject)) {
|
|
76
|
+
propertyDataModelPath = enhanceDataModelPath(targetDataModelPath, targetDataModelPath.targetObject?.path);
|
|
77
|
+
}
|
|
78
|
+
const propertyDefinition = propertyDataModelPath.targetObject as Property;
|
|
79
|
+
|
|
80
|
+
let propertyBindingExpression = pathInModel(
|
|
81
|
+
getContextRelativeTargetObjectPath(propertyDataModelPath)
|
|
82
|
+
) as BindingToolkitExpression<string>;
|
|
83
|
+
|
|
84
|
+
propertyBindingExpression = UIFormatters.formatWithTypeInformation(propertyDefinition, propertyBindingExpression, true);
|
|
85
|
+
const textArrangementBinding = getBindingWithTextArrangement(propertyDataModelPath, propertyBindingExpression);
|
|
86
|
+
return ((propertyDefinition.annotations.UI &&
|
|
87
|
+
!isReferencePropertyStaticallyHidden(propertyDefinition.annotations.UI.DataFieldDefault) &&
|
|
88
|
+
compileExpression(textArrangementBinding)) ||
|
|
89
|
+
undefined) as CompiledBindingToolkitExpression;
|
|
90
|
+
};
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/fe/core/helpers/
|
|
5
|
+
sap.ui.define(["sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/DataModelPathHelper"], function (BindingToolkit, DataModelPathHelper) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
9
9
|
var getPathRelativeLocation = DataModelPathHelper.getPathRelativeLocation;
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var constant =
|
|
15
|
-
var
|
|
10
|
+
var or = BindingToolkit.or;
|
|
11
|
+
var ifElse = BindingToolkit.ifElse;
|
|
12
|
+
var getExpressionFromAnnotation = BindingToolkit.getExpressionFromAnnotation;
|
|
13
|
+
var equal = BindingToolkit.equal;
|
|
14
|
+
var constant = BindingToolkit.constant;
|
|
15
|
+
var compileExpression = BindingToolkit.compileExpression;
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Returns an expression to set button type based on Criticality
|
|
@@ -22,29 +22,29 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
|
|
|
22
22
|
* @static
|
|
23
23
|
* @name sap.fe.core.CriticalityFormatters.buildExpressionForCriticalityColor
|
|
24
24
|
* @memberof sap.fe.core.CriticalityFormatters
|
|
25
|
-
* @param
|
|
26
|
-
* @param
|
|
27
|
-
* @returns
|
|
25
|
+
* @param oTarget A DataField a DataPoint or a DataModelObjectPath.
|
|
26
|
+
* @param [oPropertyDataModelPath] DataModelObjectPath.
|
|
27
|
+
* @returns An expression to deduce the state of an objectStatus.
|
|
28
28
|
* @private
|
|
29
29
|
* @ui5-restricted
|
|
30
|
-
|
|
30
|
+
*/
|
|
31
31
|
var buildExpressionForCriticalityColor = function (oTarget, oPropertyDataModelPath) {
|
|
32
32
|
var oAnnotationTarget = oTarget.targetObject ? oTarget.targetObject : oTarget;
|
|
33
33
|
var oCriticalityProperty = oAnnotationTarget === null || oAnnotationTarget === void 0 ? void 0 : oAnnotationTarget.Criticality;
|
|
34
34
|
var relativeLocation = oPropertyDataModelPath ? getPathRelativeLocation(oPropertyDataModelPath.contextLocation, oPropertyDataModelPath.navigationProperties).map(function (np) {
|
|
35
35
|
return np.name;
|
|
36
36
|
}) : undefined;
|
|
37
|
-
var oCriticalityExpression =
|
|
37
|
+
var oCriticalityExpression = getExpressionFromAnnotation(oCriticalityProperty, relativeLocation);
|
|
38
38
|
var sValueStateExpression;
|
|
39
39
|
|
|
40
40
|
if (oCriticalityProperty) {
|
|
41
|
-
sValueStateExpression = ifElse(or(equal(oCriticalityExpression, constant("UI.CriticalityType/Negative")), equal(oCriticalityExpression, constant(1)), equal(oCriticalityExpression, constant("1"))), constant("Error"), ifElse(or(equal(oCriticalityExpression, constant("UI.CriticalityType/Critical")), equal(oCriticalityExpression, constant(2)), equal(oCriticalityExpression, constant("2"))), constant("Warning"), ifElse(or(equal(oCriticalityExpression, constant("UI.CriticalityType/Positive")), equal(oCriticalityExpression, constant(3)), equal(oCriticalityExpression, constant("3"))), constant("Success"), ifElse(or(equal(oCriticalityExpression, constant("UI.CriticalityType/Information")), equal(oCriticalityExpression, constant(5)), equal(oCriticalityExpression, constant("5"))), constant("
|
|
41
|
+
sValueStateExpression = ifElse(or(equal(oCriticalityExpression, constant("UI.CriticalityType/Negative")), equal(oCriticalityExpression, constant(1)), equal(oCriticalityExpression, constant("1"))), constant("Error"), ifElse(or(equal(oCriticalityExpression, constant("UI.CriticalityType/Critical")), equal(oCriticalityExpression, constant(2)), equal(oCriticalityExpression, constant("2"))), constant("Warning"), ifElse(or(equal(oCriticalityExpression, constant("UI.CriticalityType/Positive")), equal(oCriticalityExpression, constant(3)), equal(oCriticalityExpression, constant("3"))), constant("Success"), ifElse(or(equal(oCriticalityExpression, constant("UI.CriticalityType/Information")), equal(oCriticalityExpression, constant(5)), equal(oCriticalityExpression, constant("5"))), constant("Information"), constant("None")))));
|
|
42
42
|
} else {
|
|
43
43
|
// Any other cases are not valid, the default value of 'None' will be returned
|
|
44
44
|
sValueStateExpression = constant("None");
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
return
|
|
47
|
+
return compileExpression(sValueStateExpression);
|
|
48
48
|
};
|
|
49
49
|
/**
|
|
50
50
|
* Returns an expression to set icon type based on Criticality
|
|
@@ -54,12 +54,12 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
|
|
|
54
54
|
* @static
|
|
55
55
|
* @name sap.fe.core.CriticalityFormatters.buildExpressionForCriticalityIcon
|
|
56
56
|
* @memberof sap.fe.core.CriticalityFormatters
|
|
57
|
-
* @param
|
|
58
|
-
* @param
|
|
59
|
-
* @returns
|
|
57
|
+
* @param oTarget A DataField a DataPoint or a DataModelObjectPath.
|
|
58
|
+
* @param [oPropertyDataModelPath] DataModelObjectPath.
|
|
59
|
+
* @returns An expression to deduce the icon of an objectStatus.
|
|
60
60
|
* @private
|
|
61
61
|
* @ui5-restricted
|
|
62
|
-
|
|
62
|
+
*/
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
_exports.buildExpressionForCriticalityColor = buildExpressionForCriticalityColor;
|
|
@@ -70,7 +70,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
|
|
|
70
70
|
var relativeLocation = oPropertyDataModelPath ? getPathRelativeLocation(oPropertyDataModelPath.contextLocation, oPropertyDataModelPath.navigationProperties).map(function (np) {
|
|
71
71
|
return np.name;
|
|
72
72
|
}) : undefined;
|
|
73
|
-
var oCriticalityExpression =
|
|
73
|
+
var oCriticalityExpression = getExpressionFromAnnotation(oCriticalityProperty, relativeLocation);
|
|
74
74
|
var bCondition = (oAnnotationTarget === null || oAnnotationTarget === void 0 ? void 0 : oAnnotationTarget.CriticalityRepresentation) && (oAnnotationTarget === null || oAnnotationTarget === void 0 ? void 0 : oAnnotationTarget.CriticalityRepresentation) === "UI.CriticalityRepresentationType/WithoutIcon";
|
|
75
75
|
var sIconPath;
|
|
76
76
|
|
|
@@ -84,7 +84,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
|
|
|
84
84
|
sIconPath = constant("");
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
return
|
|
87
|
+
return compileExpression(sIconPath);
|
|
88
88
|
};
|
|
89
89
|
/**
|
|
90
90
|
* Returns an expression to set button type based on Criticality
|
|
@@ -94,11 +94,11 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
|
|
|
94
94
|
* @static
|
|
95
95
|
* @name sap.fe.core.CriticalityFormatters.buildExpressionForCriticalityButtonType
|
|
96
96
|
* @memberof sap.fe.core.CriticalityFormatters
|
|
97
|
-
* @param
|
|
98
|
-
* @returns
|
|
97
|
+
* @param oTarget A DataField, DataPoint, DataModelObjectPath.
|
|
98
|
+
* @returns An expression to deduce button type.
|
|
99
99
|
* @private
|
|
100
100
|
* @ui5-restricted
|
|
101
|
-
|
|
101
|
+
*/
|
|
102
102
|
|
|
103
103
|
|
|
104
104
|
_exports.buildExpressionForCriticalityIcon = buildExpressionForCriticalityIcon;
|
|
@@ -106,7 +106,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
|
|
|
106
106
|
var buildExpressionForCriticalityButtonType = function (oTarget) {
|
|
107
107
|
var oAnnotationTarget = oTarget !== null && oTarget !== void 0 && oTarget.targetObject ? oTarget.targetObject : oTarget;
|
|
108
108
|
var oCriticalityProperty = oAnnotationTarget === null || oAnnotationTarget === void 0 ? void 0 : oAnnotationTarget.Criticality;
|
|
109
|
-
var oCriticalityExpression =
|
|
109
|
+
var oCriticalityExpression = getExpressionFromAnnotation(oCriticalityProperty);
|
|
110
110
|
var sButtonTypeExpression;
|
|
111
111
|
|
|
112
112
|
if (oCriticalityProperty) {
|
|
@@ -116,7 +116,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
|
|
|
116
116
|
sButtonTypeExpression = constant("Default");
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
return
|
|
119
|
+
return compileExpression(sButtonTypeExpression);
|
|
120
120
|
};
|
|
121
121
|
/**
|
|
122
122
|
* Returns an expression to set color in MicroCharts based on Criticality
|
|
@@ -126,11 +126,11 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
|
|
|
126
126
|
* @static
|
|
127
127
|
* @name sap.fe.core.CriticalityFormatters.buildExpressionForCriticalityColorMicroChart
|
|
128
128
|
* @memberof sap.fe.core.CriticalityFormatters
|
|
129
|
-
* @param
|
|
130
|
-
* @returns
|
|
129
|
+
* @param oTarget A DataField, DataPoint, DataModelObjectPath
|
|
130
|
+
* @returns An expression to deduce colors in Microcharts
|
|
131
131
|
* @private
|
|
132
132
|
* @ui5-restricted
|
|
133
|
-
|
|
133
|
+
*/
|
|
134
134
|
|
|
135
135
|
|
|
136
136
|
_exports.buildExpressionForCriticalityButtonType = buildExpressionForCriticalityButtonType;
|
|
@@ -138,7 +138,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
|
|
|
138
138
|
var buildExpressionForCriticalityColorMicroChart = function (oTarget) {
|
|
139
139
|
var oAnnotationTarget = oTarget !== null && oTarget !== void 0 && oTarget.targetObject ? oTarget.targetObject : oTarget;
|
|
140
140
|
var oCriticalityProperty = oAnnotationTarget === null || oAnnotationTarget === void 0 ? void 0 : oAnnotationTarget.Criticality;
|
|
141
|
-
var oCriticalityExpression =
|
|
141
|
+
var oCriticalityExpression = getExpressionFromAnnotation(oCriticalityProperty);
|
|
142
142
|
var sColorExpression;
|
|
143
143
|
|
|
144
144
|
if (oCriticalityProperty) {
|
|
@@ -147,10 +147,10 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
|
|
|
147
147
|
sColorExpression = constant("Neutral");
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
-
return
|
|
150
|
+
return compileExpression(sColorExpression);
|
|
151
151
|
};
|
|
152
152
|
|
|
153
153
|
_exports.buildExpressionForCriticalityColorMicroChart = buildExpressionForCriticalityColorMicroChart;
|
|
154
154
|
return _exports;
|
|
155
155
|
}, false);
|
|
156
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNyaXRpY2FsaXR5Rm9ybWF0dGVycy50cyJdLCJuYW1lcyI6WyJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yIiwib1RhcmdldCIsIm9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgiLCJvQW5ub3RhdGlvblRhcmdldCIsInRhcmdldE9iamVjdCIsIm9Dcml0aWNhbGl0eVByb3BlcnR5IiwiQ3JpdGljYWxpdHkiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24iLCJjb250ZXh0TG9jYXRpb24iLCJuYXZpZ2F0aW9uUHJvcGVydGllcyIsIm1hcCIsIm5wIiwibmFtZSIsInVuZGVmaW5lZCIsIm9Dcml0aWNhbGl0eUV4cHJlc3Npb24iLCJhbm5vdGF0aW9uRXhwcmVzc2lvbiIsInNWYWx1ZVN0YXRlRXhwcmVzc2lvbiIsImlmRWxzZSIsIm9yIiwiZXF1YWwiLCJjb25zdGFudCIsImNvbXBpbGVCaW5kaW5nIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlJY29uIiwiYkNvbmRpdGlvbiIsIkNyaXRpY2FsaXR5UmVwcmVzZW50YXRpb24iLCJzSWNvblBhdGgiLCJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUJ1dHRvblR5cGUiLCJzQnV0dG9uVHlwZUV4cHJlc3Npb24iLCJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydCIsInNDb2xvckV4cHJlc3Npb24iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUEsa0NBQWtDLEdBQUcsVUFBQ0MsT0FBRCxFQUFlQyxzQkFBZixFQUFtRjtBQUNwSSxRQUFNQyxpQkFBaUIsR0FBR0YsT0FBTyxDQUFDRyxZQUFSLEdBQXVCSCxPQUFPLENBQUNHLFlBQS9CLEdBQThDSCxP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QUQsRUFBeUJNLFFBQVEsQ0FBQyxHQUFELENBQWpDLENBSEosQ0FERyxFQU1MQSxRQUFRLENBQUMsTUFBRCxDQU5ILEVBT0xBLFFBQVEsQ0FBQyxTQUFELENBUEgsQ0FQRCxDQVBrQixDQUF6QjtBQXlCQSxLQTFCRCxNQTBCTztBQUNOUyxNQUFBQSxnQkFBZ0IsR0FBR1QsUUFBUSxDQUFDLFNBQUQsQ0FBM0I7QUFDQTs7QUFDRCxXQUFPQyxjQUFjLENBQUNRLGdCQUFELENBQXJCO0FBQ0EsR0FuQ00iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBpbGVCaW5kaW5nLCBjb25zdGFudCwgRXhwcmVzc2lvbiwgYW5ub3RhdGlvbkV4cHJlc3Npb24sIG9yLCBlcXVhbCwgaWZFbHNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcbmltcG9ydCB7IERhdGFNb2RlbE9iamVjdFBhdGgsIGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuLyoqXG4gKiBSZXR1cm5zIGFuIGV4cHJlc3Npb24gdG8gc2V0IGJ1dHRvbiB0eXBlIGJhc2VkIG9uIENyaXRpY2FsaXR5XG4gKiBTdXBwb3J0ZWQgQ3JpdGljYWxpdHk6IFBvc2l0aXZlLCBOZWdhdGl2ZSwgQ3JpdGljYWwgYW5kIEluZm9ybWF0aW9uIGxlYWRpbmcgdG8gU3VjY2VzcywgRXJyb3IsIFdhcm5pbmcgYW5kIE5vbmUgc3RhdGUgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBmdW5jdGlvblxuICogQHN0YXRpY1xuICogQG5hbWUgc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzLmJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JcbiAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5Dcml0aWNhbGl0eUZvcm1hdHRlcnNcbiAqIEBwYXJhbSB7b2JqZWN0fSBvVGFyZ2V0IEEgRGF0YUZpZWxkIGEgRGF0YVBvaW50IG9yIGEgRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBbb1Byb3BlcnR5RGF0YU1vZGVsUGF0aF0gRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIHRoZSBzdGF0ZSBvZiBhbiBvYmplY3RTdGF0dXMuXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKiovXG5leHBvcnQgY29uc3QgYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvciA9IChvVGFyZ2V0OiBhbnksIG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBvQW5ub3RhdGlvblRhcmdldCA9IG9UYXJnZXQudGFyZ2V0T2JqZWN0ID8gb1RhcmdldC50YXJnZXRPYmplY3QgOiBvVGFyZ2V0O1xuXHRjb25zdCBvQ3JpdGljYWxpdHlQcm9wZXJ0eSA9IG9Bbm5vdGF0aW9uVGFyZ2V0Py5Dcml0aWNhbGl0eTtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGhcblx0XHQ/IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uLCBvUHJvcGVydHlEYXRhTW9kZWxQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzKS5tYXAobnAgPT4gbnAubmFtZSlcblx0XHQ6IHVuZGVmaW5lZDtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5RXhwcmVzc2lvbjogRXhwcmVzc2lvbjxzdHJpbmc+ID0gYW5ub3RhdGlvbkV4cHJlc3Npb24ob0NyaXRpY2FsaXR5UHJvcGVydHksIHJlbGF0aXZlTG9jYXRpb24pO1xuXHRsZXQgc1ZhbHVlU3RhdGVFeHByZXNzaW9uO1xuXHRpZiAob0NyaXRpY2FsaXR5UHJvcGVydHkpIHtcblx0XHRzVmFsdWVTdGF0ZUV4cHJlc3Npb24gPSBpZkVsc2UoXG5cdFx0XHRvcihcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIikpLFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoMSkpLFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjFcIikpXG5cdFx0XHQpLFxuXHRcdFx0Y29uc3RhbnQoXCJFcnJvclwiKSxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvQ3JpdGljYWxcIikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgyKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIyXCIpKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRjb25zdGFudChcIldhcm5pbmdcIiksXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRvcihcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL1Bvc2l0aXZlXCIpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgzKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjNcIikpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjb25zdGFudChcIlN1Y2Nlc3NcIiksXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0luZm9ybWF0aW9uXCIpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDUpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCI1XCIpKVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGNvbnN0YW50KFwiSW5kaWNhdGlvbjA1XCIpLFxuXHRcdFx0XHRcdFx0Y29uc3RhbnQoXCJOb25lXCIpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KTtcblx0fSBlbHNlIHtcblx0XHQvLyBBbnkgb3RoZXIgY2FzZXMgYXJlIG5vdCB2YWxpZCwgdGhlIGRlZmF1bHQgdmFsdWUgb2YgJ05vbmUnIHdpbGwgYmUgcmV0dXJuZWRcblx0XHRzVmFsdWVTdGF0ZUV4cHJlc3Npb24gPSBjb25zdGFudChcIk5vbmVcIik7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKHNWYWx1ZVN0YXRlRXhwcmVzc2lvbik7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gZXhwcmVzc2lvbiB0byBzZXQgaWNvbiB0eXBlIGJhc2VkIG9uIENyaXRpY2FsaXR5XG4gKiBTdXBwb3J0ZWQgQ3JpdGljYWxpdHk6IFBvc2l0aXZlLCBOZWdhdGl2ZSwgQ3JpdGljYWwgYW5kIEluZm9ybWF0aW9uLlxuICpcbiAqIEBmdW5jdGlvblxuICogQHN0YXRpY1xuICogQG5hbWUgc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzLmJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5SWNvblxuICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLkNyaXRpY2FsaXR5Rm9ybWF0dGVyc1xuICogQHBhcmFtIHtvYmplY3R9IG9UYXJnZXQgQSBEYXRhRmllbGQgYSBEYXRhUG9pbnQgb3IgYSBEYXRhTW9kZWxPYmplY3RQYXRoLlxuICogQHBhcmFtIHtvYmplY3R9IFtvUHJvcGVydHlEYXRhTW9kZWxQYXRoXSBEYXRhTW9kZWxPYmplY3RQYXRoLlxuICogQHJldHVybnMge3N0cmluZ30gQW4gZXhwcmVzc2lvbiB0byBkZWR1Y2UgdGhlIGljb24gb2YgYW4gb2JqZWN0U3RhdHVzLlxuICogQHByaXZhdGVcbiAqIEB1aTUtcmVzdHJpY3RlZFxuICoqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5SWNvbiA9IChvVGFyZ2V0OiBhbnksIG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBvQW5ub3RhdGlvblRhcmdldCA9IG9UYXJnZXQ/LnRhcmdldE9iamVjdCA/IG9UYXJnZXQudGFyZ2V0T2JqZWN0IDogb1RhcmdldDtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5UHJvcGVydHkgPSBvQW5ub3RhdGlvblRhcmdldD8uQ3JpdGljYWxpdHk7XG5cdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBvUHJvcGVydHlEYXRhTW9kZWxQYXRoXG5cdFx0PyBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbihvUHJvcGVydHlEYXRhTW9kZWxQYXRoLmNvbnRleHRMb2NhdGlvbiwgb1Byb3BlcnR5RGF0YU1vZGVsUGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcykubWFwKG5wID0+IG5wLm5hbWUpXG5cdFx0OiB1bmRlZmluZWQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eUV4cHJlc3Npb246IEV4cHJlc3Npb248c3RyaW5nPiA9IGFubm90YXRpb25FeHByZXNzaW9uKG9Dcml0aWNhbGl0eVByb3BlcnR5LCByZWxhdGl2ZUxvY2F0aW9uKTtcblx0Y29uc3QgYkNvbmRpdGlvbiA9XG5cdFx0b0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5UmVwcmVzZW50YXRpb24gJiZcblx0XHRvQW5ub3RhdGlvblRhcmdldD8uQ3JpdGljYWxpdHlSZXByZXNlbnRhdGlvbiA9PT0gXCJVSS5Dcml0aWNhbGl0eVJlcHJlc2VudGF0aW9uVHlwZS9XaXRob3V0SWNvblwiO1xuXHRsZXQgc0ljb25QYXRoO1xuXHRpZiAoIWJDb25kaXRpb24pIHtcblx0XHRpZiAob0NyaXRpY2FsaXR5UHJvcGVydHkpIHtcblx0XHRcdHNJY29uUGF0aCA9IGlmRWxzZShcblx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgxKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIxXCIpKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRjb25zdGFudChcInNhcC1pY29uOi8vbWVzc2FnZS1lcnJvclwiKSxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvQ3JpdGljYWxcIikpLFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDIpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiMlwiKSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnN0YW50KFwic2FwLWljb246Ly9tZXNzYWdlLXdhcm5pbmdcIiksXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL1Bvc2l0aXZlXCIpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDMpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIzXCIpKVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGNvbnN0YW50KFwic2FwLWljb246Ly9tZXNzYWdlLXN1Y2Nlc3NcIiksXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0luZm9ybWF0aW9uXCIpKSxcblx0XHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoNSkpLFxuXHRcdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiNVwiKSlcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0Y29uc3RhbnQoXCJzYXAtaWNvbjovL21lc3NhZ2UtaW5mb3JtYXRpb25cIiksXG5cdFx0XHRcdFx0XHRcdGNvbnN0YW50KFwiXCIpXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzSWNvblBhdGggPSBjb25zdGFudChcIlwiKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0c0ljb25QYXRoID0gY29uc3RhbnQoXCJcIik7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKHNJY29uUGF0aCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gZXhwcmVzc2lvbiB0byBzZXQgYnV0dG9uIHR5cGUgYmFzZWQgb24gQ3JpdGljYWxpdHlcbiAqIFN1cHBvcnRlZCBDcml0aWNhbGl0eTogUG9zaXRpdmUgYW5kIE5lZ2F0aXZlIGxlYWRpbmcgdG8gQWNjZXB0IGFuZCBSZWplY3QgYnV0dG9uIHR5cGUgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBmdW5jdGlvblxuICogQHN0YXRpY1xuICogQG5hbWUgc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzLmJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5QnV0dG9uVHlwZVxuICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLkNyaXRpY2FsaXR5Rm9ybWF0dGVyc1xuICogQHBhcmFtIHtvYmplY3R9IG9UYXJnZXQgQSBEYXRhRmllbGQsIERhdGFQb2ludCwgRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIGJ1dHRvbiB0eXBlLlxuICogQHByaXZhdGVcbiAqIEB1aTUtcmVzdHJpY3RlZFxuICoqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5QnV0dG9uVHlwZSA9IChvVGFyZ2V0OiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBvQW5ub3RhdGlvblRhcmdldCA9IG9UYXJnZXQ/LnRhcmdldE9iamVjdCA/IG9UYXJnZXQudGFyZ2V0T2JqZWN0IDogb1RhcmdldDtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5UHJvcGVydHkgPSBvQW5ub3RhdGlvblRhcmdldD8uQ3JpdGljYWxpdHk7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eUV4cHJlc3Npb246IEV4cHJlc3Npb248c3RyaW5nPiA9IGFubm90YXRpb25FeHByZXNzaW9uKG9Dcml0aWNhbGl0eVByb3BlcnR5KTtcblx0bGV0IHNCdXR0b25UeXBlRXhwcmVzc2lvbjtcblx0aWYgKG9Dcml0aWNhbGl0eVByb3BlcnR5KSB7XG5cdFx0c0J1dHRvblR5cGVFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdFx0b3IoXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDEpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIxXCIpKVxuXHRcdFx0KSxcblx0XHRcdGNvbnN0YW50KFwiUmVqZWN0XCIpLFxuXHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRvcihcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDMpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjNcIikpXG5cdFx0XHRcdCksXG5cdFx0XHRcdGNvbnN0YW50KFwiQWNjZXB0XCIpLFxuXHRcdFx0XHRjb25zdGFudChcIkRlZmF1bHRcIilcblx0XHRcdClcblx0XHQpO1xuXHR9IGVsc2Uge1xuXHRcdC8vIEFueSBvdGhlciBjYXNlcyBhcmUgbm90IHZhbGlkLCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiAnRGVmYXVsdCcgd2lsbCBiZSByZXR1cm5lZFxuXHRcdHNCdXR0b25UeXBlRXhwcmVzc2lvbiA9IGNvbnN0YW50KFwiRGVmYXVsdFwiKTtcblx0fVxuXHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoc0J1dHRvblR5cGVFeHByZXNzaW9uKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBleHByZXNzaW9uIHRvIHNldCBjb2xvciBpbiBNaWNyb0NoYXJ0cyBiYXNlZCBvbiBDcml0aWNhbGl0eVxuICogU3VwcG9ydGVkIENyaXRpY2FsaXR5OiBQb3NpdGl2ZSwgTmVnYXRpdmUgYW5kIENyaXRpY2FsIGxlYWRpbmcgdG8gR29vZCwgRXJyb3IgYW5kIENyaXRpY2FsIGNvbG9yIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBzdGF0aWNcbiAqIEBuYW1lIHNhcC5mZS5jb3JlLkNyaXRpY2FsaXR5Rm9ybWF0dGVycy5idWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydFxuICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLkNyaXRpY2FsaXR5Rm9ybWF0dGVyc1xuICogQHBhcmFtIHtvYmplY3R9IG9UYXJnZXQgQSBEYXRhRmllbGQsIERhdGFQb2ludCwgRGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHJldHVybnMge3N0cmluZ30gQW4gZXhwcmVzc2lvbiB0byBkZWR1Y2UgY29sb3JzIGluIE1pY3JvY2hhcnRzXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKiovXG5leHBvcnQgY29uc3QgYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQgPSAob1RhcmdldDogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3Qgb0Fubm90YXRpb25UYXJnZXQgPSBvVGFyZ2V0Py50YXJnZXRPYmplY3QgPyBvVGFyZ2V0LnRhcmdldE9iamVjdCA6IG9UYXJnZXQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eVByb3BlcnR5ID0gb0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5O1xuXHRjb25zdCBvQ3JpdGljYWxpdHlFeHByZXNzaW9uOiBFeHByZXNzaW9uPHN0cmluZz4gPSBhbm5vdGF0aW9uRXhwcmVzc2lvbihvQ3JpdGljYWxpdHlQcm9wZXJ0eSk7XG5cdGxldCBzQ29sb3JFeHByZXNzaW9uO1xuXHRpZiAob0NyaXRpY2FsaXR5UHJvcGVydHkpIHtcblx0XHRzQ29sb3JFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdFx0b3IoXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDEpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIxXCIpKVxuXHRcdFx0KSxcblx0XHRcdGNvbnN0YW50KFwiRXJyb3JcIiksXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdG9yKFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0NyaXRpY2FsXCIpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoMikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiMlwiKSlcblx0XHRcdFx0KSxcblx0XHRcdFx0Y29uc3RhbnQoXCJDcml0aWNhbFwiKSxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvUG9zaXRpdmVcIikpLFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDMpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiM1wiKSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnN0YW50KFwiR29vZFwiKSxcblx0XHRcdFx0XHRjb25zdGFudChcIk5ldXRyYWxcIilcblx0XHRcdFx0KVxuXHRcdFx0KVxuXHRcdCk7XG5cdH0gZWxzZSB7XG5cdFx0c0NvbG9yRXhwcmVzc2lvbiA9IGNvbnN0YW50KFwiTmV1dHJhbFwiKTtcblx0fVxuXHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoc0NvbG9yRXhwcmVzc2lvbik7XG59O1xuIl19
|
|
156
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yIiwib1RhcmdldCIsIm9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgiLCJvQW5ub3RhdGlvblRhcmdldCIsInRhcmdldE9iamVjdCIsIm9Dcml0aWNhbGl0eVByb3BlcnR5IiwiQ3JpdGljYWxpdHkiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24iLCJjb250ZXh0TG9jYXRpb24iLCJuYXZpZ2F0aW9uUHJvcGVydGllcyIsIm1hcCIsIm5wIiwibmFtZSIsInVuZGVmaW5lZCIsIm9Dcml0aWNhbGl0eUV4cHJlc3Npb24iLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJzVmFsdWVTdGF0ZUV4cHJlc3Npb24iLCJpZkVsc2UiLCJvciIsImVxdWFsIiwiY29uc3RhbnQiLCJjb21waWxlRXhwcmVzc2lvbiIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5SWNvbiIsImJDb25kaXRpb24iLCJDcml0aWNhbGl0eVJlcHJlc2VudGF0aW9uIiwic0ljb25QYXRoIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlCdXR0b25UeXBlIiwic0J1dHRvblR5cGVFeHByZXNzaW9uIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQiLCJzQ29sb3JFeHByZXNzaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDcml0aWNhbGl0eUZvcm1hdHRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIGNvbnN0YW50LCBlcXVhbCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCBpZkVsc2UsIG9yIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuLyoqXG4gKiBSZXR1cm5zIGFuIGV4cHJlc3Npb24gdG8gc2V0IGJ1dHRvbiB0eXBlIGJhc2VkIG9uIENyaXRpY2FsaXR5XG4gKiBTdXBwb3J0ZWQgQ3JpdGljYWxpdHk6IFBvc2l0aXZlLCBOZWdhdGl2ZSwgQ3JpdGljYWwgYW5kIEluZm9ybWF0aW9uIGxlYWRpbmcgdG8gU3VjY2VzcywgRXJyb3IsIFdhcm5pbmcgYW5kIE5vbmUgc3RhdGUgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBmdW5jdGlvblxuICogQHN0YXRpY1xuICogQG5hbWUgc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzLmJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JcbiAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5Dcml0aWNhbGl0eUZvcm1hdHRlcnNcbiAqIEBwYXJhbSBvVGFyZ2V0IEEgRGF0YUZpZWxkIGEgRGF0YVBvaW50IG9yIGEgRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEBwYXJhbSBbb1Byb3BlcnR5RGF0YU1vZGVsUGF0aF0gRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEByZXR1cm5zIEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIHRoZSBzdGF0ZSBvZiBhbiBvYmplY3RTdGF0dXMuXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yID0gKG9UYXJnZXQ6IGFueSwgb1Byb3BlcnR5RGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IG9Bbm5vdGF0aW9uVGFyZ2V0ID0gb1RhcmdldC50YXJnZXRPYmplY3QgPyBvVGFyZ2V0LnRhcmdldE9iamVjdCA6IG9UYXJnZXQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eVByb3BlcnR5ID0gb0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5O1xuXHRjb25zdCByZWxhdGl2ZUxvY2F0aW9uID0gb1Byb3BlcnR5RGF0YU1vZGVsUGF0aFxuXHRcdD8gZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24ob1Byb3BlcnR5RGF0YU1vZGVsUGF0aC5jb250ZXh0TG9jYXRpb24sIG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMpLm1hcCgobnApID0+IG5wLm5hbWUpXG5cdFx0OiB1bmRlZmluZWQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eUV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+ID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9Dcml0aWNhbGl0eVByb3BlcnR5LCByZWxhdGl2ZUxvY2F0aW9uKTtcblx0bGV0IHNWYWx1ZVN0YXRlRXhwcmVzc2lvbjtcblx0aWYgKG9Dcml0aWNhbGl0eVByb3BlcnR5KSB7XG5cdFx0c1ZhbHVlU3RhdGVFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdFx0b3IoXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoMSkpLFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjFcIikpXG5cdFx0XHQpLFxuXHRcdFx0Y29uc3RhbnQoXCJFcnJvclwiKSxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvQ3JpdGljYWxcIikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDIpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjJcIikpXG5cdFx0XHRcdCksXG5cdFx0XHRcdGNvbnN0YW50KFwiV2FybmluZ1wiKSxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvUG9zaXRpdmVcIikpLFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoMykpLFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIzXCIpKVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0Y29uc3RhbnQoXCJTdWNjZXNzXCIpLFxuXHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9JbmZvcm1hdGlvblwiKSksXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDUpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCI1XCIpKVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGNvbnN0YW50KFwiSW5mb3JtYXRpb25cIiksXG5cdFx0XHRcdFx0XHRjb25zdGFudChcIk5vbmVcIilcblx0XHRcdFx0XHQpXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpO1xuXHR9IGVsc2Uge1xuXHRcdC8vIEFueSBvdGhlciBjYXNlcyBhcmUgbm90IHZhbGlkLCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiAnTm9uZScgd2lsbCBiZSByZXR1cm5lZFxuXHRcdHNWYWx1ZVN0YXRlRXhwcmVzc2lvbiA9IGNvbnN0YW50KFwiTm9uZVwiKTtcblx0fVxuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oc1ZhbHVlU3RhdGVFeHByZXNzaW9uKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBleHByZXNzaW9uIHRvIHNldCBpY29uIHR5cGUgYmFzZWQgb24gQ3JpdGljYWxpdHlcbiAqIFN1cHBvcnRlZCBDcml0aWNhbGl0eTogUG9zaXRpdmUsIE5lZ2F0aXZlLCBDcml0aWNhbCBhbmQgSW5mb3JtYXRpb24uXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAc3RhdGljXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5Dcml0aWNhbGl0eUZvcm1hdHRlcnMuYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlJY29uXG4gKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXG4gKiBAcGFyYW0gb1RhcmdldCBBIERhdGFGaWVsZCBhIERhdGFQb2ludCBvciBhIERhdGFNb2RlbE9iamVjdFBhdGguXG4gKiBAcGFyYW0gW29Qcm9wZXJ0eURhdGFNb2RlbFBhdGhdIERhdGFNb2RlbE9iamVjdFBhdGguXG4gKiBAcmV0dXJucyBBbiBleHByZXNzaW9uIHRvIGRlZHVjZSB0aGUgaWNvbiBvZiBhbiBvYmplY3RTdGF0dXMuXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUljb24gPSAob1RhcmdldDogYW55LCBvUHJvcGVydHlEYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3Qgb0Fubm90YXRpb25UYXJnZXQgPSBvVGFyZ2V0Py50YXJnZXRPYmplY3QgPyBvVGFyZ2V0LnRhcmdldE9iamVjdCA6IG9UYXJnZXQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eVByb3BlcnR5ID0gb0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5O1xuXHRjb25zdCByZWxhdGl2ZUxvY2F0aW9uID0gb1Byb3BlcnR5RGF0YU1vZGVsUGF0aFxuXHRcdD8gZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24ob1Byb3BlcnR5RGF0YU1vZGVsUGF0aC5jb250ZXh0TG9jYXRpb24sIG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMpLm1hcCgobnApID0+IG5wLm5hbWUpXG5cdFx0OiB1bmRlZmluZWQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eUV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+ID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9Dcml0aWNhbGl0eVByb3BlcnR5LCByZWxhdGl2ZUxvY2F0aW9uKTtcblx0Y29uc3QgYkNvbmRpdGlvbiA9XG5cdFx0b0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5UmVwcmVzZW50YXRpb24gJiZcblx0XHRvQW5ub3RhdGlvblRhcmdldD8uQ3JpdGljYWxpdHlSZXByZXNlbnRhdGlvbiA9PT0gXCJVSS5Dcml0aWNhbGl0eVJlcHJlc2VudGF0aW9uVHlwZS9XaXRob3V0SWNvblwiO1xuXHRsZXQgc0ljb25QYXRoO1xuXHRpZiAoIWJDb25kaXRpb24pIHtcblx0XHRpZiAob0NyaXRpY2FsaXR5UHJvcGVydHkpIHtcblx0XHRcdHNJY29uUGF0aCA9IGlmRWxzZShcblx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDEpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjFcIikpXG5cdFx0XHRcdCksXG5cdFx0XHRcdGNvbnN0YW50KFwic2FwLWljb246Ly9tZXNzYWdlLWVycm9yXCIpLFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Dcml0aWNhbFwiKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgyKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjJcIikpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjb25zdGFudChcInNhcC1pY29uOi8vbWVzc2FnZS13YXJuaW5nXCIpLFxuXHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiKSksXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDMpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIzXCIpKVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGNvbnN0YW50KFwic2FwLWljb246Ly9tZXNzYWdlLXN1Y2Nlc3NcIiksXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0luZm9ybWF0aW9uXCIpKSxcblx0XHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCg1KSksXG5cdFx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCI1XCIpKVxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRjb25zdGFudChcInNhcC1pY29uOi8vbWVzc2FnZS1pbmZvcm1hdGlvblwiKSxcblx0XHRcdFx0XHRcdFx0Y29uc3RhbnQoXCJcIilcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNJY29uUGF0aCA9IGNvbnN0YW50KFwiXCIpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRzSWNvblBhdGggPSBjb25zdGFudChcIlwiKTtcblx0fVxuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oc0ljb25QYXRoKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBleHByZXNzaW9uIHRvIHNldCBidXR0b24gdHlwZSBiYXNlZCBvbiBDcml0aWNhbGl0eVxuICogU3VwcG9ydGVkIENyaXRpY2FsaXR5OiBQb3NpdGl2ZSBhbmQgTmVnYXRpdmUgbGVhZGluZyB0byBBY2NlcHQgYW5kIFJlamVjdCBidXR0b24gdHlwZSByZXNwZWN0aXZlbHkuXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAc3RhdGljXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5Dcml0aWNhbGl0eUZvcm1hdHRlcnMuYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlCdXR0b25UeXBlXG4gKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXG4gKiBAcGFyYW0gb1RhcmdldCBBIERhdGFGaWVsZCwgRGF0YVBvaW50LCBEYXRhTW9kZWxPYmplY3RQYXRoLlxuICogQHJldHVybnMgQW4gZXhwcmVzc2lvbiB0byBkZWR1Y2UgYnV0dG9uIHR5cGUuXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUJ1dHRvblR5cGUgPSAob1RhcmdldDogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3Qgb0Fubm90YXRpb25UYXJnZXQgPSBvVGFyZ2V0Py50YXJnZXRPYmplY3QgPyBvVGFyZ2V0LnRhcmdldE9iamVjdCA6IG9UYXJnZXQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eVByb3BlcnR5ID0gb0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5O1xuXHRjb25zdCBvQ3JpdGljYWxpdHlFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihvQ3JpdGljYWxpdHlQcm9wZXJ0eSk7XG5cdGxldCBzQnV0dG9uVHlwZUV4cHJlc3Npb247XG5cdGlmIChvQ3JpdGljYWxpdHlQcm9wZXJ0eSkge1xuXHRcdHNCdXR0b25UeXBlRXhwcmVzc2lvbiA9IGlmRWxzZShcblx0XHRcdG9yKFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9OZWdhdGl2ZVwiKSksXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDEpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIxXCIpKVxuXHRcdFx0KSxcblx0XHRcdGNvbnN0YW50KFwiUmVqZWN0XCIpLFxuXHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRvcihcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoMykpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiM1wiKSlcblx0XHRcdFx0KSxcblx0XHRcdFx0Y29uc3RhbnQoXCJBY2NlcHRcIiksXG5cdFx0XHRcdGNvbnN0YW50KFwiRGVmYXVsdFwiKVxuXHRcdFx0KVxuXHRcdCk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gQW55IG90aGVyIGNhc2VzIGFyZSBub3QgdmFsaWQsIHRoZSBkZWZhdWx0IHZhbHVlIG9mICdEZWZhdWx0JyB3aWxsIGJlIHJldHVybmVkXG5cdFx0c0J1dHRvblR5cGVFeHByZXNzaW9uID0gY29uc3RhbnQoXCJEZWZhdWx0XCIpO1xuXHR9XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihzQnV0dG9uVHlwZUV4cHJlc3Npb24pO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFuIGV4cHJlc3Npb24gdG8gc2V0IGNvbG9yIGluIE1pY3JvQ2hhcnRzIGJhc2VkIG9uIENyaXRpY2FsaXR5XG4gKiBTdXBwb3J0ZWQgQ3JpdGljYWxpdHk6IFBvc2l0aXZlLCBOZWdhdGl2ZSBhbmQgQ3JpdGljYWwgbGVhZGluZyB0byBHb29kLCBFcnJvciBhbmQgQ3JpdGljYWwgY29sb3IgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBmdW5jdGlvblxuICogQHN0YXRpY1xuICogQG5hbWUgc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzLmJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0XG4gKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXG4gKiBAcGFyYW0gb1RhcmdldCBBIERhdGFGaWVsZCwgRGF0YVBvaW50LCBEYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcmV0dXJucyBBbiBleHByZXNzaW9uIHRvIGRlZHVjZSBjb2xvcnMgaW4gTWljcm9jaGFydHNcbiAqIEBwcml2YXRlXG4gKiBAdWk1LXJlc3RyaWN0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0ID0gKG9UYXJnZXQ6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IG9Bbm5vdGF0aW9uVGFyZ2V0ID0gb1RhcmdldD8udGFyZ2V0T2JqZWN0ID8gb1RhcmdldC50YXJnZXRPYmplY3QgOiBvVGFyZ2V0O1xuXHRjb25zdCBvQ3JpdGljYWxpdHlQcm9wZXJ0eSA9IG9Bbm5vdGF0aW9uVGFyZ2V0Py5Dcml0aWNhbGl0eTtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5RXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24ob0NyaXRpY2FsaXR5UHJvcGVydHkpO1xuXHRsZXQgc0NvbG9yRXhwcmVzc2lvbjtcblx0aWYgKG9Dcml0aWNhbGl0eVByb3BlcnR5KSB7XG5cdFx0c0NvbG9yRXhwcmVzc2lvbiA9IGlmRWxzZShcblx0XHRcdG9yKFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9OZWdhdGl2ZVwiKSksXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDEpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIxXCIpKVxuXHRcdFx0KSxcblx0XHRcdGNvbnN0YW50KFwiRXJyb3JcIiksXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdG9yKFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0NyaXRpY2FsXCIpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgyKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIyXCIpKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRjb25zdGFudChcIkNyaXRpY2FsXCIpLFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgzKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjNcIikpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjb25zdGFudChcIkdvb2RcIiksXG5cdFx0XHRcdFx0Y29uc3RhbnQoXCJOZXV0cmFsXCIpXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpO1xuXHR9IGVsc2Uge1xuXHRcdHNDb2xvckV4cHJlc3Npb24gPSBjb25zdGFudChcIk5ldXRyYWxcIik7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKHNDb2xvckV4cHJlc3Npb24pO1xufTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7OztFQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxJQUFNQSxrQ0FBa0MsR0FBRyxVQUFDQyxPQUFELEVBQWVDLHNCQUFmLEVBQW1GO0lBQ3BJLElBQU1DLGlCQUFpQixHQUFHRixPQUFPLENBQUNHLFlBQVIsR0FBdUJILE9BQU8sQ0FBQ0csWUFBL0IsR0FBOENILE9BQXhFO0lBQ0EsSUFBTUksb0JBQW9CLEdBQUdGLGlCQUFILGFBQUdBLGlCQUFILHVCQUFHQSxpQkFBaUIsQ0FBRUcsV0FBaEQ7SUFDQSxJQUFNQyxnQkFBZ0IsR0FBR0wsc0JBQXNCLEdBQzVDTSx1QkFBdUIsQ0FBQ04sc0JBQXNCLENBQUNPLGVBQXhCLEVBQXlDUCxzQkFBc0IsQ0FBQ1Esb0JBQWhFLENBQXZCLENBQTZHQyxHQUE3RyxDQUFpSCxVQUFDQyxFQUFEO01BQUEsT0FBUUEsRUFBRSxDQUFDQyxJQUFYO0lBQUEsQ0FBakgsQ0FENEMsR0FFNUNDLFNBRkg7SUFHQSxJQUFNQyxzQkFBd0QsR0FBR0MsMkJBQTJCLENBQUNYLG9CQUFELEVBQXVCRSxnQkFBdkIsQ0FBNUY7SUFDQSxJQUFJVSxxQkFBSjs7SUFDQSxJQUFJWixvQkFBSixFQUEwQjtNQUN6QlkscUJBQXFCLEdBQUdDLE1BQU0sQ0FDN0JDLEVBQUUsQ0FDREMsS0FBSyxDQUFDTCxzQkFBRCxFQUF5Qk0sUUFBUSxDQUFDLDZCQUFELENBQWpDLENBREosRUFFREQsS0FBSyxDQUFDTCxzQkFBRCxFQUE2RE0sUUFBUSxDQUFDLENBQUQsQ0FBckUsQ0FGSixFQUdERCxLQUFLLENBQUNMLHNCQUFELEVBQXlCTSxRQUFRLENBQUMsR0FBRCxDQUFqQyxDQUhKLENBRDJCLEVBTTdCQSxRQUFRLENBQUMsT0FBRCxDQU5xQixFQU83QkgsTUFBTSxDQUNMQyxFQUFFLENBQ0RDLEtBQUssQ0FBQ0wsc0JBQUQsRUFBeUJNLFFBQVEsQ0FBQyw2QkFBRCxDQUFqQyxDQURKLEVBRURELEtBQUssQ0FBQ0wsc0JBQUQsRUFBNkRNLFFBQVEsQ0FBQyxDQUFELENBQXJFLENBRkosRUFHREQsS0FBSyxDQUFDTCxzQkFBRCxFQUF5Qk0sUUFBUSxDQUFDLEdBQUQsQ0FBakMsQ0FISixDQURHLEVBTUxBLFFBQVEsQ0FBQyxTQUFELENBTkgsRUFPTEgsTUFBTSxDQUNMQyxFQUFFLENBQ0RDLEtBQUssQ0FBQ0wsc0JBQUQsRUFBeUJNLFFBQVEsQ0FBQyw2QkFBRCxDQUFqQyxDQURKLEVBRURELEtBQUssQ0FBQ0wsc0JBQUQsRUFBNkRNLFFBQVEsQ0FBQyxDQUFELENBQXJFLENBRkosRUFHREQsS0FBSyxDQUFDTCxzQkFBRCxFQUF5Qk0sUUFBUSxDQUFDLEdBQUQsQ0FBakMsQ0FISixDQURHLEVBTUxBLFFBQVEsQ0FBQyxTQUFELENBTkgsRUFPTEgsTUFBTSxDQUNMQyxFQUFFLENBQ0RDLEtBQUssQ0FBQ0wsc0JBQUQsRUFBeUJNLFFBQVEsQ0FBQyxnQ0FBRCxDQUFqQyxDQURKLEVBRURELEtBQUssQ0FBQ0wsc0JBQUQsRUFBNkRNLFFBQVEsQ0FBQyxDQUFELENBQXJFLENBRkosRUFHREQsS0FBSyxDQUFDTCxzQkFBRCxFQUF5Qk0sUUFBUSxDQUFDLEdBQUQsQ0FBakMsQ0FISixDQURHLEVBTUxBLFFBQVEsQ0FBQyxhQUFELENBTkgsRUFPTEEsUUFBUSxDQUFDLE1BQUQsQ0FQSCxDQVBELENBUEQsQ0FQdUIsQ0FBOUI7SUFpQ0EsQ0FsQ0QsTUFrQ087TUFDTjtNQUNBSixxQkFBcUIsR0FBR0ksUUFBUSxDQUFDLE1BQUQsQ0FBaEM7SUFDQTs7SUFDRCxPQUFPQyxpQkFBaUIsQ0FBQ0wscUJBQUQsQ0FBeEI7RUFDQSxDQS9DTTtFQWlEUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztFQUNPLElBQU1NLGlDQUFpQyxHQUFHLFVBQUN0QixPQUFELEVBQWVDLHNCQUFmLEVBQW1GO0lBQ25JLElBQU1DLGlCQUFpQixHQUFHRixPQUFPLFNBQVAsSUFBQUEsT0FBTyxXQUFQLElBQUFBLE9BQU8sQ0FBRUcsWUFBVCxHQUF3QkgsT0FBTyxDQUFDRyxZQUFoQyxHQUErQ0gsT0FBekU7SUFDQSxJQUFNSSxvQkFBb0IsR0FBR0YsaUJBQUgsYUFBR0EsaUJBQUgsdUJBQUdBLGlCQUFpQixDQUFFRyxXQUFoRDtJQUNBLElBQU1DLGdCQUFnQixHQUFHTCxzQkFBc0IsR0FDNUNNLHVCQUF1QixDQUFDTixzQkFBc0IsQ0FBQ08sZUFBeEIsRUFBeUNQLHNCQUFzQixDQUFDUSxvQkFBaEUsQ0FBdkIsQ0FBNkdDLEdBQTdHLENBQWlILFVBQUNDLEVBQUQ7TUFBQSxPQUFRQSxFQUFFLENBQUNDLElBQVg7SUFBQSxDQUFqSCxDQUQ0QyxHQUU1Q0MsU0FGSDtJQUdBLElBQU1DLHNCQUF3RCxHQUFHQywyQkFBMkIsQ0FBQ1gsb0JBQUQsRUFBdUJFLGdCQUF2QixDQUE1RjtJQUNBLElBQU1pQixVQUFVLEdBQ2YsQ0FBQXJCLGlCQUFpQixTQUFqQixJQUFBQSxpQkFBaUIsV0FBakIsWUFBQUEsaUJBQWlCLENBQUVzQix5QkFBbkIsS0FDQSxDQUFBdEIsaUJBQWlCLFNBQWpCLElBQUFBLGlCQUFpQixXQUFqQixZQUFBQSxpQkFBaUIsQ0FBRXNCLHlCQUFuQixNQUFpRCw4Q0FGbEQ7SUFHQSxJQUFJQyxTQUFKOztJQUNBLElBQUksQ0FBQ0YsVUFBTCxFQUFpQjtNQUNoQixJQUFJbkIsb0JBQUosRUFBMEI7UUFDekJxQixTQUFTLEdBQUdSLE1BQU0sQ0FDakJDLEVBQUUsQ0FDREMsS0FBSyxDQUFDTCxzQkFBRCxFQUF5Qk0sUUFBUSxDQUFDLDZCQUFELENBQWpDLENBREosRUFFREQsS0FBSyxDQUFDTCxzQkFBRCxFQUE2RE0sUUFBUSxDQUFDLENBQUQsQ0FBckUsQ0FGSixFQUdERCxLQUFLLENBQUNMLHNCQUFELEVBQXlCTSxRQUFRLENBQUMsR0FBRCxDQUFqQyxDQUhKLENBRGUsRUFNakJBLFFBQVEsQ0FBQywwQkFBRCxDQU5TLEVBT2pCSCxNQUFNLENBQ0xDLEVBQUUsQ0FDREMsS0FBSyxDQUFDTCxzQkFBRCxFQUF5Qk0sUUFBUSxDQUFDLDZCQUFELENBQWpDLENBREosRUFFREQsS0FBSyxDQUFDTCxzQkFBRCxFQUE2RE0sUUFBUSxDQUFDLENBQUQsQ0FBckUsQ0FGSixFQUdERCxLQUFLLENBQUNMLHNCQUFELEVBQXlCTSxRQUFRLENBQUMsR0FBRCxDQUFqQyxDQUhKLENBREcsRUFNTEEsUUFBUSxDQUFDLDRCQUFELENBTkgsRUFPTEgsTUFBTSxDQUNMQyxFQUFFLENBQ0RDLEtBQUssQ0FBQ0wsc0JBQUQsRUFBeUJNLFFBQVEsQ0FBQyw2QkFBRCxDQUFqQyxDQURKLEVBRURELEtBQUssQ0FBQ0wsc0JBQUQsRUFBNkRNLFFBQVEsQ0FBQyxDQUFELENBQXJFLENBRkosRUFHREQsS0FBSyxDQUFDTCxzQkFBRCxFQUF5Qk0sUUFBUSxDQUFDLEdBQUQsQ0FBakMsQ0FISixDQURHLEVBTUxBLFFBQVEsQ0FBQyw0QkFBRCxDQU5ILEVBT0xILE1BQU0sQ0FDTEMsRUFBRSxDQUNEQyxLQUFLLENBQUNMLHNCQUFELEVBQXlCTSxRQUFRLENBQUMsZ0NBQUQsQ0FBakMsQ0FESixFQUVERCxLQUFLLENBQUNMLHNCQUFELEVBQTZETSxRQUFRLENBQUMsQ0FBRCxDQUFyRSxDQUZKLEVBR0RELEtBQUssQ0FBQ0wsc0JBQUQsRUFBeUJNLFFBQVEsQ0FBQyxHQUFELENBQWpDLENBSEosQ0FERyxFQU1MQSxRQUFRLENBQUMsZ0NBQUQsQ0FOSCxFQU9MQSxRQUFRLENBQUMsRUFBRCxDQVBILENBUEQsQ0FQRCxDQVBXLENBQWxCO01BaUNBLENBbENELE1Ba0NPO1FBQ05LLFNBQVMsR0FBR0wsUUFBUSxDQUFDLEVBQUQsQ0FBcEI7TUFDQTtJQUNELENBdENELE1Bc0NPO01BQ05LLFNBQVMsR0FBR0wsUUFBUSxDQUFDLEVBQUQsQ0FBcEI7SUFDQTs7SUFDRCxPQUFPQyxpQkFBaUIsQ0FBQ0ksU0FBRCxDQUF4QjtFQUNBLENBckRNO0VBdURQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztFQUNPLElBQU1DLHVDQUF1QyxHQUFHLFVBQUMxQixPQUFELEVBQXNDO0lBQzVGLElBQU1FLGlCQUFpQixHQUFHRixPQUFPLFNBQVAsSUFBQUEsT0FBTyxXQUFQLElBQUFBLE9BQU8sQ0FBRUcsWUFBVCxHQUF3QkgsT0FBTyxDQUFDRyxZQUFoQyxHQUErQ0gsT0FBekU7SUFDQSxJQUFNSSxvQkFBb0IsR0FBR0YsaUJBQUgsYUFBR0EsaUJBQUgsdUJBQUdBLGlCQUFpQixDQUFFRyxXQUFoRDtJQUNBLElBQU1TLHNCQUF3RCxHQUFHQywyQkFBMkIsQ0FBQ1gsb0JBQUQsQ0FBNUY7SUFDQSxJQUFJdUIscUJBQUo7O0lBQ0EsSUFBSXZCLG9CQUFKLEVBQTBCO01BQ3pCdUIscUJBQXFCLEdBQUdWLE1BQU0sQ0FDN0JDLEVBQUUsQ0FDREMsS0FBSyxDQUFDTCxzQkFBRCxFQUF5Qk0sUUFBUSxDQUFDLDZCQUFELENBQWpDLENBREosRUFFREQsS0FBSyxDQUFDTCxzQkFBRCxFQUE2RE0sUUFBUSxDQUFDLENBQUQsQ0FBckUsQ0FGSixFQUdERCxLQUFLLENBQUNMLHNCQUFELEVBQXlCTSxRQUFRLENBQUMsR0FBRCxDQUFqQyxDQUhKLENBRDJCLEVBTTdCQSxRQUFRLENBQUMsUUFBRCxDQU5xQixFQU83QkgsTUFBTSxDQUNMQyxFQUFFLENBQ0RDLEtBQUssQ0FBQ0wsc0JBQUQsRUFBeUJNLFFBQVEsQ0FBQyw2QkFBRCxDQUFqQyxDQURKLEVBRURELEtBQUssQ0FBQ0wsc0JBQUQsRUFBNkRNLFFBQVEsQ0FBQyxDQUFELENBQXJFLENBRkosRUFHREQsS0FBSyxDQUFDTCxzQkFBRCxFQUF5Qk0sUUFBUSxDQUFDLEdBQUQsQ0FBakMsQ0FISixDQURHLEVBTUxBLFFBQVEsQ0FBQyxRQUFELENBTkgsRUFPTEEsUUFBUSxDQUFDLFNBQUQsQ0FQSCxDQVB1QixDQUE5QjtJQWlCQSxDQWxCRCxNQWtCTztNQUNOO01BQ0FPLHFCQUFxQixHQUFHUCxRQUFRLENBQUMsU0FBRCxDQUFoQztJQUNBOztJQUNELE9BQU9DLGlCQUFpQixDQUFDTSxxQkFBRCxDQUF4QjtFQUNBLENBNUJNO0VBOEJQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztFQUNPLElBQU1DLDRDQUE0QyxHQUFHLFVBQUM1QixPQUFELEVBQXNDO0lBQ2pHLElBQU1FLGlCQUFpQixHQUFHRixPQUFPLFNBQVAsSUFBQUEsT0FBTyxXQUFQLElBQUFBLE9BQU8sQ0FBRUcsWUFBVCxHQUF3QkgsT0FBTyxDQUFDRyxZQUFoQyxHQUErQ0gsT0FBekU7SUFDQSxJQUFNSSxvQkFBb0IsR0FBR0YsaUJBQUgsYUFBR0EsaUJBQUgsdUJBQUdBLGlCQUFpQixDQUFFRyxXQUFoRDtJQUNBLElBQU1TLHNCQUF3RCxHQUFHQywyQkFBMkIsQ0FBQ1gsb0JBQUQsQ0FBNUY7SUFDQSxJQUFJeUIsZ0JBQUo7O0lBQ0EsSUFBSXpCLG9CQUFKLEVBQTBCO01BQ3pCeUIsZ0JBQWdCLEdBQUdaLE1BQU0sQ0FDeEJDLEVBQUUsQ0FDREMsS0FBSyxDQUFDTCxzQkFBRCxFQUF5Qk0sUUFBUSxDQUFDLDZCQUFELENBQWpDLENBREosRUFFREQsS0FBSyxDQUFDTCxzQkFBRCxFQUE2RE0sUUFBUSxDQUFDLENBQUQsQ0FBckUsQ0FGSixFQUdERCxLQUFLLENBQUNMLHNCQUFELEVBQXlCTSxRQUFRLENBQUMsR0FBRCxDQUFqQyxDQUhKLENBRHNCLEVBTXhCQSxRQUFRLENBQUMsT0FBRCxDQU5nQixFQU94QkgsTUFBTSxDQUNMQyxFQUFFLENBQ0RDLEtBQUssQ0FBQ0wsc0JBQUQsRUFBeUJNLFFBQVEsQ0FBQyw2QkFBRCxDQUFqQyxDQURKLEVBRURELEtBQUssQ0FBQ0wsc0JBQUQsRUFBNkRNLFFBQVEsQ0FBQyxDQUFELENBQXJFLENBRkosRUFHREQsS0FBSyxDQUFDTCxzQkFBRCxFQUF5Qk0sUUFBUSxDQUFDLEdBQUQsQ0FBakMsQ0FISixDQURHLEVBTUxBLFFBQVEsQ0FBQyxVQUFELENBTkgsRUFPTEgsTUFBTSxDQUNMQyxFQUFFLENBQ0RDLEtBQUssQ0FBQ0wsc0JBQUQsRUFBeUJNLFFBQVEsQ0FBQyw2QkFBRCxDQUFqQyxDQURKLEVBRURELEtBQUssQ0FBQ0wsc0JBQUQsRUFBNkRNLFFBQVEsQ0FBQyxDQUFELENBQXJFLENBRkosRUFHREQsS0FBSyxDQUFDTCxzQkFBRCxFQUF5Qk0sUUFBUSxDQUFDLEdBQUQsQ0FBakMsQ0FISixDQURHLEVBTUxBLFFBQVEsQ0FBQyxNQUFELENBTkgsRUFPTEEsUUFBUSxDQUFDLFNBQUQsQ0FQSCxDQVBELENBUGtCLENBQXpCO0lBeUJBLENBMUJELE1BMEJPO01BQ05TLGdCQUFnQixHQUFHVCxRQUFRLENBQUMsU0FBRCxDQUEzQjtJQUNBOztJQUNELE9BQU9DLGlCQUFpQixDQUFDUSxnQkFBRCxDQUF4QjtFQUNBLENBbkNNIn0=
|