@sapui5/sap.fe.core 1.102.0 → 1.103.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 +5 -5
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AppComponent.js +62 -26
- package/src/sap/fe/core/AppComponent.ts +56 -40
- package/src/sap/fe/core/AppStateHandler.js +10 -10
- package/src/sap/fe/core/AppStateHandler.ts +9 -9
- package/src/sap/fe/core/BaseController.js +11 -9
- package/src/sap/fe/core/BaseController.ts +15 -13
- package/src/sap/fe/core/CommonUtils.js +236 -109
- package/src/sap/fe/core/CommonUtils.ts +252 -136
- package/src/sap/fe/core/ExtensionAPI.js +24 -27
- package/src/sap/fe/core/ExtensionAPI.ts +36 -38
- package/src/sap/fe/core/PageController.js +4 -4
- package/src/sap/fe/core/PageController.ts +4 -5
- package/src/sap/fe/core/TemplateComponent.js +1 -1
- package/src/sap/fe/core/TemplateComponent.ts +6 -6
- package/src/sap/fe/core/TemplateModel.js +1 -1
- package/src/sap/fe/core/TemplateModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +8 -8
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +11 -10
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +27 -27
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +28 -26
- package/src/sap/fe/core/controllerextensions/EditFlow.js +129 -118
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +154 -141
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +31 -26
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +34 -35
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +70 -70
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +77 -77
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +84 -78
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +105 -101
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
- package/src/sap/fe/core/controllerextensions/MassEdit.js +8 -8
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +19 -26
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +20 -12
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +29 -14
- package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
- package/src/sap/fe/core/controllerextensions/PageReady.ts +94 -34
- package/src/sap/fe/core/controllerextensions/Paginator.js +21 -22
- package/src/sap/fe/core/controllerextensions/Paginator.ts +24 -25
- package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
- package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
- package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
- package/src/sap/fe/core/controllerextensions/Share.js +22 -22
- package/src/sap/fe/core/controllerextensions/Share.ts +30 -29
- package/src/sap/fe/core/controllerextensions/SideEffects.js +46 -50
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
- package/src/sap/fe/core/controllerextensions/ViewState.js +65 -62
- package/src/sap/fe/core/controllerextensions/ViewState.ts +68 -63
- 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 +6 -6
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +12 -17
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +4 -4
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +7 -9
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +18 -19
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +184 -137
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +253 -206
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +113 -121
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +148 -158
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +198 -148
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +223 -159
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +24 -26
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +35 -33
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +78 -44
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +90 -60
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +52 -55
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +55 -58
- 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 +11 -25
- package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
- package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +22 -22
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
- 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 +2 -2
- package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
- package/src/sap/fe/core/controls/FileWrapper.js +2 -2
- package/src/sap/fe/core/controls/FileWrapper.ts +11 -11
- package/src/sap/fe/core/controls/FilterBar.js +6 -2
- package/src/sap/fe/core/controls/FilterBar.ts +13 -9
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
- 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/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +47 -47
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +52 -52
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
- 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 +26 -33
- package/src/sap/fe/core/converters/ConverterContext.ts +51 -60
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +14 -14
- 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 +50 -32
- package/src/sap/fe/core/converters/MetaModelConverter.ts +145 -127
- 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 +54 -34
- package/src/sap/fe/core/converters/annotations/DataField.ts +97 -75
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
- package/src/sap/fe/core/converters/controls/Common/Action.js +50 -41
- package/src/sap/fe/core/converters/controls/Common/Action.ts +56 -46
- package/src/sap/fe/core/converters/controls/Common/Chart.js +14 -14
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +23 -26
- 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 +28 -28
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +40 -36
- package/src/sap/fe/core/converters/controls/Common/Form.js +25 -27
- package/src/sap/fe/core/converters/controls/Common/Form.ts +37 -45
- package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +35 -39
- package/src/sap/fe/core/converters/controls/Common/Table.js +174 -183
- package/src/sap/fe/core/converters/controls/Common/Table.ts +237 -250
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +144 -141
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +45 -41
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +64 -57
- 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 +67 -64
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +73 -72
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +98 -96
- package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +10 -13
- 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 +4 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
- package/src/sap/fe/core/converters/helpers/ID.js +46 -46
- package/src/sap/fe/core/converters/helpers/ID.ts +25 -25
- 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 -4
- 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 +46 -62
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +30 -29
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +40 -40
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +39 -38
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +52 -61
- 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 +89 -0
- package/src/sap/fe/core/formatters/StandardFormatter.ts +64 -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/ValueFormatter.js +8 -8
- package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
- package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
- package/src/sap/fe/core/helpers/BindingToolkit.js +1809 -0
- package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +365 -264
- package/src/sap/fe/core/helpers/ClassSupport.js +20 -11
- package/src/sap/fe/core/helpers/ClassSupport.ts +14 -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/MassEditHelper.js +281 -254
- package/src/sap/fe/core/helpers/MassEditHelper.ts +337 -289
- 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/jsx-runtime/jsx.js +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.ts +8 -8
- package/src/sap/fe/core/library.js +42 -3
- 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 +49 -35
- package/src/sap/fe/core/messagebundle_ar.properties +13 -5
- package/src/sap/fe/core/messagebundle_bg.properties +13 -5
- package/src/sap/fe/core/messagebundle_ca.properties +13 -5
- package/src/sap/fe/core/messagebundle_cs.properties +13 -5
- package/src/sap/fe/core/messagebundle_cy.properties +14 -6
- package/src/sap/fe/core/messagebundle_da.properties +13 -5
- package/src/sap/fe/core/messagebundle_de.properties +15 -7
- package/src/sap/fe/core/messagebundle_el.properties +14 -6
- package/src/sap/fe/core/messagebundle_en.properties +9 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +11 -3
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +7 -1
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +9 -1
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +44 -85
- package/src/sap/fe/core/messagebundle_es.properties +13 -5
- package/src/sap/fe/core/messagebundle_es_MX.properties +13 -5
- package/src/sap/fe/core/messagebundle_et.properties +13 -5
- package/src/sap/fe/core/messagebundle_fi.properties +14 -6
- package/src/sap/fe/core/messagebundle_fr.properties +14 -6
- package/src/sap/fe/core/messagebundle_fr_CA.properties +14 -6
- package/src/sap/fe/core/messagebundle_hi.properties +14 -6
- package/src/sap/fe/core/messagebundle_hr.properties +14 -6
- package/src/sap/fe/core/messagebundle_hu.properties +13 -5
- package/src/sap/fe/core/messagebundle_id.properties +13 -5
- package/src/sap/fe/core/messagebundle_it.properties +33 -25
- package/src/sap/fe/core/messagebundle_iw.properties +13 -5
- package/src/sap/fe/core/messagebundle_ja.properties +14 -6
- package/src/sap/fe/core/messagebundle_kk.properties +13 -5
- package/src/sap/fe/core/messagebundle_ko.properties +13 -5
- package/src/sap/fe/core/messagebundle_lt.properties +13 -5
- package/src/sap/fe/core/messagebundle_lv.properties +14 -6
- package/src/sap/fe/core/messagebundle_ms.properties +13 -5
- package/src/sap/fe/core/messagebundle_nl.properties +13 -5
- package/src/sap/fe/core/messagebundle_no.properties +13 -5
- package/src/sap/fe/core/messagebundle_pl.properties +13 -5
- package/src/sap/fe/core/messagebundle_pt.properties +13 -5
- package/src/sap/fe/core/messagebundle_pt_PT.properties +14 -6
- package/src/sap/fe/core/messagebundle_ro.properties +13 -5
- package/src/sap/fe/core/messagebundle_ru.properties +13 -5
- package/src/sap/fe/core/messagebundle_sh.properties +13 -5
- package/src/sap/fe/core/messagebundle_sk.properties +13 -5
- package/src/sap/fe/core/messagebundle_sl.properties +17 -9
- package/src/sap/fe/core/messagebundle_sv.properties +14 -6
- package/src/sap/fe/core/messagebundle_th.properties +13 -5
- package/src/sap/fe/core/messagebundle_tr.properties +13 -5
- package/src/sap/fe/core/messagebundle_uk.properties +13 -5
- package/src/sap/fe/core/messagebundle_vi.properties +13 -5
- package/src/sap/fe/core/messagebundle_zh_CN.properties +14 -6
- package/src/sap/fe/core/messagebundle_zh_TW.properties +13 -5
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +2 -2
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +14 -14
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.js +53 -44
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +54 -46
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
- package/src/sap/fe/core/services/RoutingServiceFactory.js +55 -55
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
- package/src/sap/fe/core/services/ShellServicesFactory.js +72 -76
- package/src/sap/fe/core/services/ShellServicesFactory.ts +76 -82
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +20 -15
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +26 -21
- 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/templating/CommonFormatters.js +84 -0
- package/src/sap/fe/core/templating/CommonFormatters.ts +86 -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 +16 -15
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
- 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 +10 -9
- package/src/sap/fe/core/templating/FilterHelper.ts +13 -13
- 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 +148 -93
- package/src/sap/fe/core/templating/UIFormatters.ts +196 -124
- package/src/sap/fe/core/type/Email.js +2 -2
- package/src/sap/fe/core/type/Email.ts +2 -2
- package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
|
@@ -12,8 +12,8 @@ sap.ui.define([], function () {
|
|
|
12
12
|
*
|
|
13
13
|
* @function
|
|
14
14
|
* @name isStickySessionSupported
|
|
15
|
-
* @param
|
|
16
|
-
* @returns
|
|
15
|
+
* @param oMetaModel ODataModelMetaModel to check for sticky enabled entity
|
|
16
|
+
* @returns Returns true if sticky, else false
|
|
17
17
|
*/
|
|
18
18
|
isStickySessionSupported: function (oMetaModel) {
|
|
19
19
|
var oEntityContainer = oMetaModel.getObject("/");
|
|
@@ -32,9 +32,9 @@ sap.ui.define([], function () {
|
|
|
32
32
|
*
|
|
33
33
|
* @function
|
|
34
34
|
* @name isDraftSupported
|
|
35
|
-
* @param
|
|
36
|
-
* @param
|
|
37
|
-
* @returns
|
|
35
|
+
* @param oMetaModel ODataModelMetaModel of the context for which draft support shall be checked
|
|
36
|
+
* @param sPath Path for which draft support shall be checked
|
|
37
|
+
* @returns Returns true if draft, else false
|
|
38
38
|
*/
|
|
39
39
|
isDraftSupported: function (oMetaModel, sPath) {
|
|
40
40
|
var oMetaContext = oMetaModel.getMetaContext(sPath);
|
|
@@ -47,7 +47,7 @@ sap.ui.define([], function () {
|
|
|
47
47
|
|
|
48
48
|
if (aParts.length) {
|
|
49
49
|
for (var i = aParts.length - 1; i >= 0; i--) {
|
|
50
|
-
oParentEntitySetContext = oMetaModel.getMetaContext(oMetaModel.getMetaPath("/"
|
|
50
|
+
oParentEntitySetContext = oMetaModel.getMetaContext(oMetaModel.getMetaPath("/".concat(aParts[i])));
|
|
51
51
|
|
|
52
52
|
if (oParentEntitySetContext.getObject("$kind") === "EntitySet") {
|
|
53
53
|
sTargetEntitySet = this.getTargetEntitySet(oParentEntitySetContext);
|
|
@@ -73,9 +73,9 @@ sap.ui.define([], function () {
|
|
|
73
73
|
*
|
|
74
74
|
* @function
|
|
75
75
|
* @name isCollaborationDraftSupported
|
|
76
|
-
* @param
|
|
77
|
-
* @param
|
|
78
|
-
* @returns
|
|
76
|
+
* @param metaObject MetaObject to be used for determination
|
|
77
|
+
* @param templateInterface API provided by UI5 templating if used
|
|
78
|
+
* @returns Returns true if the service supports collaboration draft, else false
|
|
79
79
|
*/
|
|
80
80
|
isCollaborationDraftSupported: function (metaObject, templateInterface) {
|
|
81
81
|
var _templateInterface$co;
|
|
@@ -84,7 +84,7 @@ sap.ui.define([], function () {
|
|
|
84
84
|
var oEntityContainer = oMetaModel.getObject("/");
|
|
85
85
|
|
|
86
86
|
for (var sEntitySet in oEntityContainer) {
|
|
87
|
-
if (oEntityContainer[sEntitySet].$kind === "EntitySet" && oMetaModel.getObject("/"
|
|
87
|
+
if (oEntityContainer[sEntitySet].$kind === "EntitySet" && oMetaModel.getObject("/".concat(sEntitySet, "@com.sap.vocabularies.Common.v1.DraftRoot/ShareAction"))) {
|
|
88
88
|
return true;
|
|
89
89
|
}
|
|
90
90
|
}
|
|
@@ -97,8 +97,8 @@ sap.ui.define([], function () {
|
|
|
97
97
|
*
|
|
98
98
|
* @function
|
|
99
99
|
* @name getTargetEntitySet
|
|
100
|
-
* @param
|
|
101
|
-
* @returns
|
|
100
|
+
* @param oContext Context for which the target entity set shall be determined
|
|
101
|
+
* @returns Returns path to the target entity set
|
|
102
102
|
*/
|
|
103
103
|
getTargetEntitySet: function (oContext) {
|
|
104
104
|
var sPath = oContext.getPath();
|
|
@@ -108,7 +108,7 @@ sap.ui.define([], function () {
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
var sEntitySetPath = ModelHelper.getEntitySetPath(sPath);
|
|
111
|
-
return "/"
|
|
111
|
+
return "/".concat(oContext.getObject(sEntitySetPath));
|
|
112
112
|
},
|
|
113
113
|
|
|
114
114
|
/**
|
|
@@ -116,11 +116,11 @@ sap.ui.define([], function () {
|
|
|
116
116
|
*
|
|
117
117
|
* @function
|
|
118
118
|
* @name getEntitySetPath
|
|
119
|
-
* @param
|
|
120
|
-
* @returns
|
|
119
|
+
* @param sPath Path for which complete entitySet path needs to be determined
|
|
120
|
+
* @returns Returns complete path to the entity set
|
|
121
121
|
*/
|
|
122
122
|
getEntitySetPath: function (sPath) {
|
|
123
|
-
return "/"
|
|
123
|
+
return "/".concat(sPath.split("/").filter(ModelHelper.filterOutNavPropBinding).join("/$NavigationPropertyBinding/"));
|
|
124
124
|
},
|
|
125
125
|
|
|
126
126
|
/**
|
|
@@ -128,8 +128,8 @@ sap.ui.define([], function () {
|
|
|
128
128
|
*
|
|
129
129
|
* @function
|
|
130
130
|
* @name getActionParameterItemsModelPath
|
|
131
|
-
* @param
|
|
132
|
-
* @returns
|
|
131
|
+
* @param oParameter Action Parameter
|
|
132
|
+
* @returns Returns the complete model path for the items property of MultiValueField parameters
|
|
133
133
|
*/
|
|
134
134
|
getActionParameterItemsModelPath: function (oParameter) {
|
|
135
135
|
return oParameter && oParameter.$Name ? "{path: 'mvfview>/".concat(oParameter.$Name, "'}") : undefined;
|
|
@@ -213,7 +213,7 @@ sap.ui.define([], function () {
|
|
|
213
213
|
* Returns whether filtering on the table is case sensitive.
|
|
214
214
|
*
|
|
215
215
|
* @param oMetaModel The instance of the meta model
|
|
216
|
-
* @returns
|
|
216
|
+
* @returns Returns 'false' if FilterFunctions annotation supports 'tolower', else 'true'
|
|
217
217
|
*/
|
|
218
218
|
isFilteringCaseSensitive: function (oMetaModel) {
|
|
219
219
|
if (!oMetaModel) {
|
|
@@ -228,8 +228,8 @@ sap.ui.define([], function () {
|
|
|
228
228
|
/**
|
|
229
229
|
* Get MetaPath for the context.
|
|
230
230
|
*
|
|
231
|
-
* @param
|
|
232
|
-
* @returns
|
|
231
|
+
* @param oContext Context to be used
|
|
232
|
+
* @returns Returns meta path for the context.
|
|
233
233
|
*/
|
|
234
234
|
getMetaPathForContext: function (oContext) {
|
|
235
235
|
var oModel = oContext.getModel(),
|
|
@@ -241,9 +241,9 @@ sap.ui.define([], function () {
|
|
|
241
241
|
/**
|
|
242
242
|
* Get MetaPath for the listbinding.
|
|
243
243
|
*
|
|
244
|
-
* @param
|
|
245
|
-
* @param
|
|
246
|
-
* @returns
|
|
244
|
+
* @param oView View of the control using listBinding
|
|
245
|
+
* @param vListBinding ODataListBinding object or the binding path for a temporary list binding
|
|
246
|
+
* @returns Returns meta path for the listbinding.
|
|
247
247
|
*/
|
|
248
248
|
getAbsoluteMetaPathForListBinding: function (oView, vListBinding) {
|
|
249
249
|
var oMetaModel = oView.getModel().getMetaModel();
|
|
@@ -280,4 +280,4 @@ sap.ui.define([], function () {
|
|
|
280
280
|
};
|
|
281
281
|
return ModelHelper;
|
|
282
282
|
}, false);
|
|
283
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1vZGVsSGVscGVyLnRzIl0sIm5hbWVzIjpbIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwib01ldGFNb2RlbCIsIm9FbnRpdHlDb250YWluZXIiLCJnZXRPYmplY3QiLCJzRW50aXR5U2V0IiwiJGtpbmQiLCJpc0RyYWZ0U3VwcG9ydGVkIiwic1BhdGgiLCJvTWV0YUNvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsInNUYXJnZXRFbnRpdHlTZXQiLCJnZXRUYXJnZXRFbnRpdHlTZXQiLCJvUGFyZW50RW50aXR5U2V0Q29udGV4dCIsImFQYXJ0cyIsImdldFByb3BlcnR5IiwiJENvbnRhaW5zVGFyZ2V0IiwiZ2V0TWV0YVBhdGgiLCJzcGxpdCIsImZpbHRlciIsIkJvb2xlYW4iLCJsZW5ndGgiLCJpIiwib0VudGl0eUNvbnRleHQiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsIm1ldGFPYmplY3QiLCJ0ZW1wbGF0ZUludGVyZmFjZSIsImNvbnRleHQiLCJnZXRNb2RlbCIsIm9Db250ZXh0IiwiZ2V0UGF0aCIsInNFbnRpdHlTZXRQYXRoIiwiZ2V0RW50aXR5U2V0UGF0aCIsImZpbHRlck91dE5hdlByb3BCaW5kaW5nIiwiam9pbiIsImdldEFjdGlvblBhcmFtZXRlckl0ZW1zTW9kZWxQYXRoIiwib1BhcmFtZXRlciIsIiROYW1lIiwidW5kZWZpbmVkIiwic1BhdGhQYXJ0IiwiZW5oYW5jZUludGVybmFsSlNPTk1vZGVsIiwib0ludGVybmFsTW9kZWwiLCJmbkJpbmRDb250ZXh0IiwiYmluZENvbnRleHQiLCJtUGFyYW1ldGVycyIsImFyZ3MiLCJhcHBseSIsImZuR2V0Qm91bmRDb250ZXh0IiwiZ2V0Qm91bmRDb250ZXh0Iiwic3ViQXJncyIsIm9Cb3VuZENvbnRleHQiLCJzZXRQcm9wZXJ0eSIsInNTZXRQcm9wUGF0aCIsInZhbHVlIiwiZW5oYW5jZVVpSlNPTk1vZGVsIiwidWlNb2RlbCIsImxpYnJhcnkiLCJmblNldFByb3BlcnR5IiwiRWRpdE1vZGUiLCJFZGl0YWJsZSIsIkRpc3BsYXkiLCJpc0ZpbHRlcmluZ0Nhc2VTZW5zaXRpdmUiLCJhRmlsdGVyRnVuY3Rpb25zIiwiaW5kZXhPZiIsImdldE1ldGFQYXRoRm9yQ29udGV4dCIsIm9Nb2RlbCIsImdldE1ldGFNb2RlbCIsImdldEFic29sdXRlTWV0YVBhdGhGb3JMaXN0QmluZGluZyIsIm9WaWV3Iiwidkxpc3RCaW5kaW5nIiwic01ldGFQYXRoIiwic3RhcnRzV2l0aCIsIm9CaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwic1Jvb3RDb250ZXh0UGF0aCIsIm9CaW5kaW5nIiwib1Jvb3RCaW5kaW5nIiwiZ2V0Um9vdEJpbmRpbmciLCJzUm9vdEJpbmRpbmdQYXRoIiwic1JlbGF0aXZlUGF0aCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUZBO0FBTUEsTUFBTUEsV0FBVyxHQUFHO0FBQ25CO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ0MsSUFBQUEsd0JBQXdCLEVBQUUsVUFBVUMsVUFBVixFQUFzQztBQUMvRCxVQUFNQyxnQkFBZ0IsR0FBR0QsVUFBVSxDQUFDRSxTQUFYLENBQXFCLEdBQXJCLENBQXpCOztBQUNBLFdBQUssSUFBTUMsVUFBWCxJQUF5QkYsZ0JBQXpCLEVBQTJDO0FBQzFDLFlBQ0NBLGdCQUFnQixDQUFDRSxVQUFELENBQWhCLENBQTZCQyxLQUE3QixLQUF1QyxXQUF2QyxJQUNBSixVQUFVLENBQUNFLFNBQVgsWUFBeUJDLFVBQXpCLDZEQUZELEVBR0U7QUFDRCxpQkFBTyxJQUFQO0FBQ0E7QUFDRDs7QUFDRCxhQUFPLEtBQVA7QUFDQSxLQXBCa0I7O0FBc0JuQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ0UsSUFBQUEsZ0JBQWdCLEVBQUUsVUFBVUwsVUFBVixFQUEyQk0sS0FBM0IsRUFBMEM7QUFDM0QsVUFBTUMsWUFBWSxHQUFHUCxVQUFVLENB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LGNBQThDQyxhQUE5QyxFQUFaO0FBQ0E7QUFDRDs7QUFDRCxhQUFPVCxTQUFQO0FBQ0E7QUF6UGtCLEdBQXBCO1NBZ1FldEUsVyIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiLyogVGhpcyBjbGFzcyBjb250YWlucyBoZWxwZXJzIHRvIGJlIHVzZWQgYXQgcnVudGltZSB0byByZXRyaWV2ZSBmdXJ0aGVyIGluZm9ybWF0aW9uIG9uIHRoZSBtb2RlbCAqL1xuaW1wb3J0IEJhc2VDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5cbmNvbnN0IE1vZGVsSGVscGVyID0ge1xuXHQvKipcblx0ICogTWV0aG9kIHRvIGRldGVybWluZSBpZiB0aGUgcHJvZ3JhbW1pbmcgbW9kZWwgaXMgc3RpY2t5LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTWV0YU1vZGVsfSBvTWV0YU1vZGVsIE9EYXRhTW9kZWxNZXRhTW9kZWwgdG8gY2hlY2sgZm9yIHN0aWNreSBlbmFibGVkIGVudGl0eVxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHN0aWNreSwgZWxzZSBmYWxzZVxuXHQgKi9cblx0aXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkOiBmdW5jdGlvbiAob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwpIHtcblx0XHRjb25zdCBvRW50aXR5Q29udGFpbmVyID0gb01ldGFNb2RlbC5nZXRPYmplY3QoXCIvXCIpO1xuXHRcdGZvciAoY29uc3Qgc0VudGl0eVNldCBpbiBvRW50aXR5Q29udGFpbmVyKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9FbnRpdHlDb250YWluZXJbc0VudGl0eVNldF0uJGtpbmQgPT09IFwiRW50aXR5U2V0XCIgJiZcblx0XHRcdFx0b01ldGFNb2RlbC5nZXRPYmplY3QoYC8ke3NFbnRpdHlTZXR9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLlNlc3Npb24udjEuU3RpY2t5U2Vzc2lvblN1cHBvcnRlZGApXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGRldGVybWluZSBpZiB0aGUgcHJvZ3JhbW1pbmcgbW9kZWwgaXMgZHJhZnQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBpc0RyYWZ0U3VwcG9ydGVkXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk1ldGFNb2RlbH0gb01ldGFNb2RlbCBPRGF0YU1vZGVsTWV0YU1vZGVsIG9mIHRoZSBjb250ZXh0IGZvciB3aGljaCBkcmFmdCBzdXBwb3J0IHNoYWxsIGJlIGNoZWNrZWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNQYXRoIFBhdGggZm9yIHdoaWNoIGRyYWZ0IHN1cHBvcnQgc2hhbGwgYmUgY2hlY2tlZFxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGRyYWZ0LCBlbHNlIGZhbHNlXG5cdCAqL1xuXHRpc0RyYWZ0U3VwcG9ydGVkOiBmdW5jdGlvbiAob01ldGFNb2RlbDogYW55LCBzUGF0aDogc3RyaW5nKSB7XG5cdFx0Y29uc3Qgb01ldGFDb250ZXh0ID0gb01ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChzUGF0aCk7XG5cdFx0bGV0IHNUYXJnZXRFbnRpdHlTZXQgPSB0aGlzLmdldFRhcmdldEVudGl0eVNldChvTWV0YUNvbnRleHQpLFxuXHRcdFx0b1BhcmVudEVudGl0eVNldENvbnRleHQsXG5cdFx0XHRhUGFydHM7XG5cblx0XHRpZiAob01ldGFDb250ZXh0LmdldFByb3BlcnR5ICYmIG9NZXRhQ29udGV4dC5nZXRQcm9wZXJ0eSgpICYmIG9NZXRhQ29udGV4dC5nZXRQcm9wZXJ0eSgpLiRDb250YWluc1RhcmdldCA9PT0gdHJ1ZSkge1xuXHRcdFx0YVBhcnRzID0gb01ldGFNb2RlbC5nZXRNZXRhUGF0aChzUGF0aCkuc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKTtcblx0XHRcdGlmIChhUGFydHMubGVuZ3RoKSB7XG5cdFx0XHRcdGZvciAobGV0IGkgPSBhUGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcblx0XHRcdFx0XHRvUGFyZW50RW50aXR5U2V0Q29udGV4dCA9IG9NZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQob01ldGFNb2RlbC5nZXRNZXRhUGF0aChcIi9cIiArIGFQYXJ0c1tpXSkpO1xuXHRcdFx0XHRcdGlmIChvUGFyZW50RW50aXR5U2V0Q29udGV4dC5nZXRPYmplY3QoXCIka2luZFwiKSA9PT0gXCJFbnRpdHlTZXRcIikge1xuXHRcdFx0XHRcdFx0c1RhcmdldEVudGl0eVNldCA9IHRoaXMuZ2V0VGFyZ2V0RW50aXR5U2V0KG9QYXJlbnRFbnRpdHlTZXRDb250ZXh0KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzVGFyZ2V0RW50aXR5U2V0ID0gdGhpcy5nZXRUYXJnZXRFbnRpdHlTZXQob01ldGFDb250ZXh0KTtcblx0XHR9XG5cdFx0Y29uc3Qgb0VudGl0eUNvbnRleHQgPSBvTWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KHNUYXJnZXRFbnRpdHlTZXQpO1xuXHRcdGlmIChcblx0XHRcdG9FbnRpdHlDb250ZXh0LmdldE9iamVjdChcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290XCIpIHx8XG5cdFx0XHRvRW50aXR5Q29udGV4dC5nZXRPYmplY3QoXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Tm9kZVwiKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGRldGVybWluZSBpZiB0aGUgc2VydmljZSwgc3VwcG9ydHMgY29sbGFib3JhdGlvbiBkcmFmdC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBtZXRhT2JqZWN0IE1ldGFPYmplY3QgdG8gYmUgdXNlZCBmb3IgZGV0ZXJtaW5hdGlvblxuXHQgKiBAcGFyYW0ge29iamVjdH0gdGVtcGxhdGVJbnRlcmZhY2UgQVBJIHByb3ZpZGVkIGJ5IFVJNSB0ZW1wbGF0aW5nIGlmIHVzZWRcblx0ICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGUgc2VydmljZSBzdXBwb3J0cyBjb2xsYWJvcmF0aW9uIGRyYWZ0LCBlbHNlIGZhbHNlXG5cdCAqL1xuXHRpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZDogZnVuY3Rpb24gKG1ldGFPYmplY3Q6IGFueSwgdGVtcGxhdGVJbnRlcmZhY2U/OiBhbnkpIHtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gKHRlbXBsYXRlSW50ZXJmYWNlPy5jb250ZXh0Py5nZXRNb2RlbCgpIHx8IG1ldGFPYmplY3QpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHRcdGNvbnN0IG9FbnRpdHlDb250YWluZXIgPSBvTWV0YU1vZGVsLmdldE9iamVjdChcIi9cIik7XG5cdFx0Zm9yIChjb25zdCBzRW50aXR5U2V0IGluIG9FbnRpdHlDb250YWluZXIpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0b0VudGl0eUNvbnRhaW5lcltzRW50aXR5U2V0XS4ka2luZCA9PT0gXCJFbnRpdHlTZXRcIiAmJlxuXHRcdFx0XHRvTWV0YU1vZGVsLmdldE9iamVjdChcIi9cIiArIHNFbnRpdHlTZXQgKyBcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290L1NoYXJlQWN0aW9uXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSxcblxuXHQvKipcblx0ICogUmV0dXJucyBwYXRoIHRvIHRoZSB0YXJnZXQgZW50aXR5IHNldCB2aWEgdXNpbmcgbmF2aWdhdGlvbiBwcm9wZXJ0eSBiaW5kaW5nLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZ2V0VGFyZ2V0RW50aXR5U2V0XG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1vZGVsLm9kYXRhLnY0LkNvbnRleHR9IG9Db250ZXh0IENvbnRleHQgZm9yIHdoaWNoIHRoZSB0YXJnZXQgZW50aXR5IHNldCBzaGFsbCBiZSBkZXRlcm1pbmVkXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgcGF0aCB0byB0aGUgdGFyZ2V0IGVudGl0eSBzZXRcblx0ICovXG5cdGdldFRhcmdldEVudGl0eVNldDogZnVuY3Rpb24gKG9Db250ZXh0OiBDb250ZXh0KSB7XG5cdFx0Y29uc3Qgc1BhdGggPSBvQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0aWYgKFxuXHRcdFx0b0NvbnRleHQuZ2V0T2JqZWN0KFwiJGtpbmRcIikgPT09IFwiRW50aXR5U2V0XCIgfHxcblx0XHRcdG9Db250ZXh0LmdldE9iamVjdChcIiRraW5kXCIpID09PSBcIkFjdGlvblwiIHx8XG5cdFx0XHRvQ29udGV4dC5nZXRPYmplY3QoXCIwLyRraW5kXCIpID09PSBcIkFjdGlvblwiXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gc1BhdGg7XG5cdFx0fVxuXHRcdGNvbnN0IHNFbnRpdHlTZXRQYXRoID0gTW9kZWxIZWxwZXIuZ2V0RW50aXR5U2V0UGF0aChzUGF0aCk7XG5cdFx0cmV0dXJuIFwiL1wiICsgb0NvbnRleHQuZ2V0T2JqZWN0KHNFbnRpdHlTZXRQYXRoKTtcblx0fSxcblxuXHQvKipcblx0ICogUmV0dXJucyBjb21wbGV0ZSBwYXRoIHRvIHRoZSBlbnRpdHkgc2V0IHZpYSB1c2luZyBuYXZpZ2F0aW9uIHByb3BlcnR5IGJpbmRpbmcuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBnZXRFbnRpdHlTZXRQYXRoXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzUGF0aCBQYXRoIGZvciB3aGljaCBjb21wbGV0ZSBlbnRpdHlTZXQgcGF0aCBuZWVkcyB0byBiZSBkZXRlcm1pbmVkXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgY29tcGxldGUgcGF0aCB0byB0aGUgZW50aXR5IHNldFxuXHQgKi9cblx0Z2V0RW50aXR5U2V0UGF0aDogZnVuY3Rpb24gKHNQYXRoOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gXCIvXCIgKyBzUGF0aC5zcGxpdChcIi9cIikuZmlsdGVyKE1vZGVsSGVscGVyLmZpbHRlck91dE5hdlByb3BCaW5kaW5nKS5qb2luKFwiLyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nL1wiKTtcblx0fSxcblxuXHQvKipcblx0ICogR2V0cyB0aGUgcGF0aCBmb3IgdGhlIGl0ZW1zIHByb3BlcnR5IG9mIE11bHRpVmFsdWVGaWVsZCBwYXJhbWV0ZXJzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZ2V0QWN0aW9uUGFyYW1ldGVySXRlbXNNb2RlbFBhdGhcblx0ICogQHBhcmFtIHtvYmplY3R9IG9QYXJhbWV0ZXIgQWN0aW9uIFBhcmFtZXRlclxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb21wbGV0ZSBtb2RlbCBwYXRoIGZvciB0aGUgaXRlbXMgcHJvcGVydHkgb2YgTXVsdGlWYWx1ZUZpZWxkIHBhcmFtZXRlcnNcblx0ICovXG5cdGdldEFjdGlvblBhcmFtZXRlckl0ZW1zTW9kZWxQYXRoOiBmdW5jdGlvbiAob1BhcmFtZXRlcjogYW55KSB7XG5cdFx0cmV0dXJuIG9QYXJhbWV0ZXIgJiYgb1BhcmFtZXRlci4kTmFtZSA/IGB7cGF0aDogJ212ZnZpZXc+LyR7b1BhcmFtZXRlci4kTmFtZX0nfWAgOiB1bmRlZmluZWQ7XG5cdH0sXG5cblx0ZmlsdGVyT3V0TmF2UHJvcEJpbmRpbmc6IGZ1bmN0aW9uIChzUGF0aFBhcnQ6IGFueSkge1xuXHRcdHJldHVybiBzUGF0aFBhcnQgIT09IFwiXCIgJiYgc1BhdGhQYXJ0ICE9PSBcIiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nXCI7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEFkZHMgYSBzZXRQcm9wZXJ0eSB0byB0aGUgY3JlYXRlZCBiaW5kaW5nIGNvbnRleHRzIG9mIHRoZSBpbnRlcm5hbCBKU09OIG1vZGVsLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZW5oYW5jZUludGVybmFsSlNPTk1vZGVsXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1vZGVsLmpzb24uSlNPTk1vZGVsfSBJbnRlcm5hbCBKU09OIE1vZGVsIHdoaWNoIGlzIGVuaGFuY2VkXG5cdCAqL1xuXG5cdGVuaGFuY2VJbnRlcm5hbEpTT05Nb2RlbDogZnVuY3Rpb24gKG9JbnRlcm5hbE1vZGVsOiBhbnkpIHtcblx0XHRjb25zdCBmbkJpbmRDb250ZXh0ID0gb0ludGVybmFsTW9kZWwuYmluZENvbnRleHQ7XG5cdFx0b0ludGVybmFsTW9kZWwuYmluZENvbnRleHQgPSBmdW5jdGlvbiAoc1BhdGg6IGFueSwgb0NvbnRleHQ6IGFueSwgbVBhcmFtZXRlcnM6IGFueSwgLi4uYXJnczogYW55W10pIHtcblx0XHRcdG9Db250ZXh0ID0gZm5CaW5kQ29udGV4dC5hcHBseSh0aGlzLCBbc1BhdGgsIG9Db250ZXh0LCBtUGFyYW1ldGVycywgLi4uYXJnc10pO1xuXHRcdFx0Y29uc3QgZm5HZXRCb3VuZENvbnRleHQgPSBvQ29udGV4dC5nZXRCb3VuZENvbnRleHQ7XG5cblx0XHRcdG9Db250ZXh0LmdldEJvdW5kQ29udGV4dCA9IGZ1bmN0aW9uICguLi5zdWJBcmdzOiBhbnlbXSkge1xuXHRcdFx0XHRjb25zdCBvQm91bmRDb250ZXh0ID0gZm5HZXRCb3VuZENvbnRleHQuYXBwbHkodGhpcywgLi4uc3ViQXJncyk7XG5cdFx0XHRcdGlmIChvQm91bmRDb250ZXh0ICYmICFvQm91bmRDb250ZXh0LnNldFByb3BlcnR5KSB7XG5cdFx0XHRcdFx0b0JvdW5kQ29udGV4dC5zZXRQcm9wZXJ0eSA9IGZ1bmN0aW9uIChzU2V0UHJvcFBhdGg6IGFueSwgdmFsdWU6IGFueSkge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuZ2V0T2JqZWN0KCkgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0XHQvLyBpbml0aWFsaXplXG5cdFx0XHRcdFx0XHRcdHRoaXMuZ2V0TW9kZWwoKS5zZXRQcm9wZXJ0eSh0aGlzLmdldFBhdGgoKSwge30pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhpcy5nZXRNb2RlbCgpLnNldFByb3BlcnR5KHNTZXRQcm9wUGF0aCwgdmFsdWUsIHRoaXMpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG9Cb3VuZENvbnRleHQ7XG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIG9Db250ZXh0O1xuXHRcdH07XG5cdH0sXG5cblx0LyoqXG5cdCAqIEFkZHMgYW4gaGFuZGxlciBvbiBwcm9wZXJ0eUNoYW5nZS5cblx0ICogVGhlIHByb3BlcnR5IFwiL2VkaXRNb2RlXCIgaXMgY2hhbmdlZCBhY2NvcmRpbmcgdG8gcHJvcGVydHkgJy9pc0VkaXRhYmxlJyB3aGVuIHRoaXMgbGFzdCBvbmUgaXMgc2V0XG5cdCAqIGluIG9yZGVyIHRvIGJlIGNvbXBsaWFudCB3aXRoIGZvcm1lciB2ZXJzaW9ucyB3aGVyZSBidWlsZGluZyBibG9ja3MgdXNlIHRoZSBwcm9wZXJ0eSBcIi9lZGl0TW9kZVwiXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBlbmhhbmNlVWlKU09OTW9kZWxcblx0ICogQHBhcmFtIHtzYXAudWkubW9kZWwuanNvbi5KU09OTW9kZWx9IHVpTW9kZWwgSlNPTiBNb2RlbCB3aGljaCBpcyBlbmhhbmNlZFxuXHQgKiBAcGFyYW0ge29iamVjdH0gbGlicmFyeSBDb3JlIGxpYnJhcnkgb2YgU0FQIEZpb3JpIGVsZW1lbnRzXG5cdCAqL1xuXG5cdGVuaGFuY2VVaUpTT05Nb2RlbDogZnVuY3Rpb24gKHVpTW9kZWw6IEpTT05Nb2RlbCwgbGlicmFyeTogYW55KSB7XG5cdFx0Y29uc3QgZm5TZXRQcm9wZXJ0eSA9IHVpTW9kZWwuc2V0UHJvcGVydHkgYXMgYW55O1xuXHRcdHVpTW9kZWwuc2V0UHJvcGVydHkgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcblx0XHRcdGNvbnN0IHZhbHVlID0gYXJnc1sxXTtcblx0XHRcdGlmIChhcmdzWzBdID09PSBcIi9pc0VkaXRhYmxlXCIpIHtcblx0XHRcdFx0dWlNb2RlbC5zZXRQcm9wZXJ0eShcIi9lZGl0TW9kZVwiLCB2YWx1ZSA/IGxpYnJhcnkuRWRpdE1vZGUuRWRpdGFibGUgOiBsaWJyYXJ5LkVkaXRNb2RlLkRpc3BsYXkpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZuU2V0UHJvcGVydHkuYXBwbHkodGhpcywgWy4uLmFyZ3NdKTtcblx0XHR9O1xuXHR9LFxuXHQvKipcblx0ICogUmV0dXJucyB3aGV0aGVyIGZpbHRlcmluZyBvbiB0aGUgdGFibGUgaXMgY2FzZSBzZW5zaXRpdmUuXG5cdCAqXG5cdCAqIEBwYXJhbSBvTWV0YU1vZGVsIFRoZSBpbnN0YW5jZSBvZiB0aGUgbWV0YSBtb2RlbFxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbnx1bmRlZmluZWR9IFJldHVybnMgJ2ZhbHNlJyBpZiBGaWx0ZXJGdW5jdGlvbnMgYW5ub3RhdGlvbiBzdXBwb3J0cyAndG9sb3dlcicsIGVsc2UgJ3RydWUnXG5cdCAqL1xuXHRpc0ZpbHRlcmluZ0Nhc2VTZW5zaXRpdmU6IGZ1bmN0aW9uIChvTWV0YU1vZGVsOiBhbnkpIHtcblx0XHRpZiAoIW9NZXRhTW9kZWwpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGNvbnN0IGFGaWx0ZXJGdW5jdGlvbnMgPSBvTWV0YU1vZGVsLmdldE9iamVjdChcIi9AT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJGdW5jdGlvbnNcIik7XG5cdFx0Ly8gR2V0IGZpbHRlciBmdW5jdGlvbnMgZGVmaW5lZCBhdCBFbnRpdHlDb250YWluZXIgYW5kIGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgJ3RvbG93ZXInXG5cdFx0cmV0dXJuIGFGaWx0ZXJGdW5jdGlvbnMgPyBhRmlsdGVyRnVuY3Rpb25zLmluZGV4T2YoXCJ0b2xvd2VyXCIpID09PSAtMSA6IHRydWU7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCBNZXRhUGF0aCBmb3IgdGhlIGNvbnRleHQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Q29udGV4dH0gb0NvbnRleHQgQ29udGV4dCB0byBiZSB1c2VkXG5cdCAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IFJldHVybnMgbWV0YSBwYXRoIGZvciB0aGUgY29udGV4dC5cblx0ICovXG5cdGdldE1ldGFQYXRoRm9yQ29udGV4dDogZnVuY3Rpb24gKG9Db250ZXh0OiBhbnkpIHtcblx0XHRjb25zdCBvTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpLFxuXHRcdFx0b01ldGFNb2RlbCA9IG9Nb2RlbC5nZXRNZXRhTW9kZWwoKSxcblx0XHRcdHNQYXRoID0gb0NvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdHJldHVybiBvTWV0YU1vZGVsICYmIHNQYXRoICYmIG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgoc1BhdGgpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgTWV0YVBhdGggZm9yIHRoZSBsaXN0YmluZGluZy5cblx0ICpcblx0ICogQHBhcmFtIHtWaWV3fSBvVmlldyBWaWV3IG9mIHRoZSBjb250cm9sIHVzaW5nIGxpc3RCaW5kaW5nXG5cdCAqIEBwYXJhbSB7T0RhdGFMaXN0QmluZGluZyB8IHN0cmluZ30gdkxpc3RCaW5kaW5nIE9EYXRhTGlzdEJpbmRpbmcgb2JqZWN0IG9yIHRoZSBiaW5kaW5nIHBhdGggZm9yIGEgdGVtcG9yYXJ5IGxpc3QgYmluZGluZ1xuXHQgKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBSZXR1cm5zIG1ldGEgcGF0aCBmb3IgdGhlIGxpc3RiaW5kaW5nLlxuXHQgKi9cblx0Z2V0QWJzb2x1dGVNZXRhUGF0aEZvckxpc3RCaW5kaW5nOiBmdW5jdGlvbiAob1ZpZXc6IGFueSwgdkxpc3RCaW5kaW5nOiBhbnkpIHtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb1ZpZXcuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRsZXQgc01ldGFQYXRoO1xuXG5cdFx0aWYgKHR5cGVvZiB2TGlzdEJpbmRpbmcgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdGlmICh2TGlzdEJpbmRpbmcuc3RhcnRzV2l0aChcIi9cIikpIHtcblx0XHRcdFx0Ly8gYWJzb2x1dGUgcGF0aFxuXHRcdFx0XHRzTWV0YVBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKHZMaXN0QmluZGluZyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyByZWxhdGl2ZSBwYXRoXG5cdFx0XHRcdGNvbnN0IG9CaW5kaW5nQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0XHRcdGNvbnN0IHNSb290Q29udGV4dFBhdGggPSBvQmluZGluZ0NvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdFx0XHRzTWV0YVBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKGAke3NSb290Q29udGV4dFBhdGh9LyR7dkxpc3RCaW5kaW5nfWApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyB3ZSBhbHJlYWR5IGdldCBhIGxpc3QgYmluZGluZyB1c2UgdGhpcyBvbmVcblx0XHRcdGNvbnN0IG9CaW5kaW5nID0gdkxpc3RCaW5kaW5nO1xuXHRcdFx0Y29uc3Qgb1Jvb3RCaW5kaW5nID0gb0JpbmRpbmcuZ2V0Um9vdEJpbmRpbmcoKTtcblx0XHRcdGlmIChvQmluZGluZyA9PT0gb1Jvb3RCaW5kaW5nKSB7XG5cdFx0XHRcdC8vIGFic29sdXRlIHBhdGhcblx0XHRcdFx0c01ldGFQYXRoID0gb01ldGFNb2RlbC5nZXRNZXRhUGF0aChvQmluZGluZy5nZXRQYXRoKCkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gcmVsYXRpdmUgcGF0aFxuXHRcdFx0XHRjb25zdCBzUm9vdEJpbmRpbmdQYXRoID0gb1Jvb3RCaW5kaW5nLmdldFBhdGgoKTtcblx0XHRcdFx0Y29uc3Qgc1JlbGF0aXZlUGF0aCA9IG9CaW5kaW5nLmdldFBhdGgoKTtcblx0XHRcdFx0c01ldGFQYXRoID0gb01ldGFNb2RlbC5nZXRNZXRhUGF0aChgJHtzUm9vdEJpbmRpbmdQYXRofS8ke3NSZWxhdGl2ZVBhdGh9YCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzTWV0YVBhdGg7XG5cdH1cbn07XG5cbmV4cG9ydCB0eXBlIEludGVybmFsTW9kZWxDb250ZXh0ID0gQmFzZUNvbnRleHQgJiB7XG5cdHNldFByb3BlcnR5KHNQYXRoOiBzdHJpbmcsIHZWYWx1ZTogYW55KTogdm9pZDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vZGVsSGVscGVyO1xuIl19
|
|
283
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1vZGVsSGVscGVyLnRzIl0sIm5hbWVzIjpbIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwib01ldGFNb2RlbCIsIm9FbnRpdHlDb250YWluZXIiLCJnZXRPYmplY3QiLCJzRW50aXR5U2V0IiwiJGtpbmQiLCJpc0RyYWZ0U3VwcG9ydGVkIiwic1BhdGgiLCJvTWV0YUNvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsInNUYXJnZXRFbnRpdHlTZXQiLCJnZXRUYXJnZXRFbnRpdHlTZXQiLCJvUGFyZW50RW50aXR5U2V0Q29udGV4dCIsImFQYXJ0cyIsImdldFByb3BlcnR5IiwiJENvbnRhaW5zVGFyZ2V0IiwiZ2V0TWV0YVBhdGgiLCJzcGxpdCIsImZpbHRlciIsIkJvb2xlYW4iLCJsZW5ndGgiLCJpIiwib0VudGl0eUNvbnRleHQiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsIm1ldGFPYmplY3QiLCJ0ZW1wbGF0ZUludGVyZmFjZSIsImNvbnRleHQiLCJnZXRNb2RlbCIsIm9Db250ZXh0IiwiZ2V0UGF0aCIsInNFbnRpdHlTZXRQYXRoIiwiZ2V0RW50aXR5U2V0UGF0aCIsImZpbHRlck91dE5hdlByb3BCaW5kaW5nIiwiam9pbiIsImdldEFjdGlvblBhcmFtZXRlckl0ZW1zTW9kZWxQYXRoIiwib1BhcmFtZXRlciIsIiROYW1lIiwidW5kZWZpbmVkIiwic1BhdGhQYXJ0IiwiZW5oYW5jZUludGVybmFsSlNPTk1vZGVsIiwib0ludGVybmFsTW9kZWwiLCJmbkJpbmRDb250ZXh0IiwiYmluZENvbnRleHQiLCJtUGFyYW1ldGVycyIsImFyZ3MiLCJhcHBseSIsImZuR2V0Qm91bmRDb250ZXh0IiwiZ2V0Qm91bmRDb250ZXh0Iiwic3ViQXJncyIsIm9Cb3VuZENvbnRleHQiLCJzZXRQcm9wZXJ0eSIsInNTZXRQcm9wUGF0aCIsInZhbHVlIiwiZW5oYW5jZVVpSlNPTk1vZGVsIiwidWlNb2RlbCIsImxpYnJhcnkiLCJmblNldFByb3BlcnR5IiwiRWRpdE1vZGUiLCJFZGl0YWJsZSIsIkRpc3BsYXkiLCJpc0ZpbHRlcmluZ0Nhc2VTZW5zaXRpdmUiLCJhRmlsdGVyRnVuY3Rpb25zIiwiaW5kZXhPZiIsImdldE1ldGFQYXRoRm9yQ29udGV4dCIsIm9Nb2RlbCIsImdldE1ldGFNb2RlbCIsImdldEFic29sdXRlTWV0YVBhdGhGb3JMaXN0QmluZGluZyIsIm9WaWV3Iiwidkxpc3RCaW5kaW5nIiwic01ldGFQYXRoIiwic3RhcnRzV2l0aCIsIm9CaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwic1Jvb3RDb250ZXh0UGF0aCIsIm9CaW5kaW5nIiwib1Jvb3RCaW5kaW5nIiwiZ2V0Um9vdEJpbmRpbmciLCJzUm9vdEJpbmRpbmdQYXRoIiwic1JlbGF0aXZlUGF0aCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUZBO0FBUUEsTUFBTUEsV0FBVyxHQUFHO0FBQ25CO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ0MsSUFBQUEsd0JBQXdCLEVBQUUsVUFBVUMsVUFBVixFQUFzQztBQUMvRCxVQUFNQyxnQkFBZ0IsR0FBR0QsVUFBVSxDQUFDRSxTQUFYLENBQXFCLEdBQXJCLENBQXpCOztBQUNBLFdBQUssSUFBTUMsVUFBWCxJQUF5QkYsZ0JBQXpCLEVBQTJDO0FBQzFDLFlBQ0NBLGdCQUFnQixDQUFDRSxVQUFELENBQWhCLENBQTZCQyxLQUE3QixLQUF1QyxXQUF2QyxJQUNBSixVQUFVLENBQUNFLFNBQVgsWUFBeUJDLFVBQXpCLDZEQUZELEVBR0U7QUFDRCxpQkFBTyxJQUFQO0FBQ0E7QUFDRDs7QUFDRCxhQUFPLEtBQVA7QUFDQSxLQXBCa0I7O0FBc0JuQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ0UsSUFBQUEsZ0JBQWdCLEVBQUUsVUFBVUwsVUFBVixFQUEyQk0sS0FBM0IsRUFBMEM7QUFDM0QsVUFBTUMsWUFBWSxHQUFHUCxVQUFVLENB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O0FBQ0QsYUFBT1QsU0FBUDtBQUNBO0FBelBrQixHQUFwQjtTQWdRZXRFLFciLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbIi8qIFRoaXMgY2xhc3MgY29udGFpbnMgaGVscGVycyB0byBiZSB1c2VkIGF0IHJ1bnRpbWUgdG8gcmV0cmlldmUgZnVydGhlciBpbmZvcm1hdGlvbiBvbiB0aGUgbW9kZWwgKi9cbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBCYXNlQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcblxuY29uc3QgTW9kZWxIZWxwZXIgPSB7XG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gZGV0ZXJtaW5lIGlmIHRoZSBwcm9ncmFtbWluZyBtb2RlbCBpcyBzdGlja3kuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBpc1N0aWNreVNlc3Npb25TdXBwb3J0ZWRcblx0ICogQHBhcmFtIG9NZXRhTW9kZWwgT0RhdGFNb2RlbE1ldGFNb2RlbCB0byBjaGVjayBmb3Igc3RpY2t5IGVuYWJsZWQgZW50aXR5XG5cdCAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiBzdGlja3ksIGVsc2UgZmFsc2Vcblx0ICovXG5cdGlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZDogZnVuY3Rpb24gKG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsKSB7XG5cdFx0Y29uc3Qgb0VudGl0eUNvbnRhaW5lciA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KFwiL1wiKTtcblx0XHRmb3IgKGNvbnN0IHNFbnRpdHlTZXQgaW4gb0VudGl0eUNvbnRhaW5lcikge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRvRW50aXR5Q29udGFpbmVyW3NFbnRpdHlTZXRdLiRraW5kID09PSBcIkVudGl0eVNldFwiICYmXG5cdFx0XHRcdG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0fUBjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxLlN0aWNreVNlc3Npb25TdXBwb3J0ZWRgKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0sXG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBkZXRlcm1pbmUgaWYgdGhlIHByb2dyYW1taW5nIG1vZGVsIGlzIGRyYWZ0LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgaXNEcmFmdFN1cHBvcnRlZFxuXHQgKiBAcGFyYW0gb01ldGFNb2RlbCBPRGF0YU1vZGVsTWV0YU1vZGVsIG9mIHRoZSBjb250ZXh0IGZvciB3aGljaCBkcmFmdCBzdXBwb3J0IHNoYWxsIGJlIGNoZWNrZWRcblx0ICogQHBhcmFtIHNQYXRoIFBhdGggZm9yIHdoaWNoIGRyYWZ0IHN1cHBvcnQgc2hhbGwgYmUgY2hlY2tlZFxuXHQgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgZHJhZnQsIGVsc2UgZmFsc2Vcblx0ICovXG5cdGlzRHJhZnRTdXBwb3J0ZWQ6IGZ1bmN0aW9uIChvTWV0YU1vZGVsOiBhbnksIHNQYXRoOiBzdHJpbmcpIHtcblx0XHRjb25zdCBvTWV0YUNvbnRleHQgPSBvTWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KHNQYXRoKTtcblx0XHRsZXQgc1RhcmdldEVudGl0eVNldCA9IHRoaXMuZ2V0VGFyZ2V0RW50aXR5U2V0KG9NZXRhQ29udGV4dCksXG5cdFx0XHRvUGFyZW50RW50aXR5U2V0Q29udGV4dCxcblx0XHRcdGFQYXJ0cztcblxuXHRcdGlmIChvTWV0YUNvbnRleHQuZ2V0UHJvcGVydHkgJiYgb01ldGFDb250ZXh0LmdldFByb3BlcnR5KCkgJiYgb01ldGFDb250ZXh0LmdldFByb3BlcnR5KCkuJENvbnRhaW5zVGFyZ2V0ID09PSB0cnVlKSB7XG5cdFx0XHRhUGFydHMgPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKHNQYXRoKS5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pO1xuXHRcdFx0aWYgKGFQYXJ0cy5sZW5ndGgpIHtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IGFQYXJ0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdFx0XHRcdG9QYXJlbnRFbnRpdHlTZXRDb250ZXh0ID0gb01ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChvTWV0YU1vZGVsLmdldE1ldGFQYXRoKGAvJHthUGFydHNbaV19YCkpO1xuXHRcdFx0XHRcdGlmIChvUGFyZW50RW50aXR5U2V0Q29udGV4dC5nZXRPYmplY3QoXCIka2luZFwiKSA9PT0gXCJFbnRpdHlTZXRcIikge1xuXHRcdFx0XHRcdFx0c1RhcmdldEVudGl0eVNldCA9IHRoaXMuZ2V0VGFyZ2V0RW50aXR5U2V0KG9QYXJlbnRFbnRpdHlTZXRDb250ZXh0KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzVGFyZ2V0RW50aXR5U2V0ID0gdGhpcy5nZXRUYXJnZXRFbnRpdHlTZXQob01ldGFDb250ZXh0KTtcblx0XHR9XG5cdFx0Y29uc3Qgb0VudGl0eUNvbnRleHQgPSBvTWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KHNUYXJnZXRFbnRpdHlTZXQpO1xuXHRcdGlmIChcblx0XHRcdG9FbnRpdHlDb250ZXh0LmdldE9iamVjdChcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290XCIpIHx8XG5cdFx0XHRvRW50aXR5Q29udGV4dC5nZXRPYmplY3QoXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Tm9kZVwiKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGRldGVybWluZSBpZiB0aGUgc2VydmljZSwgc3VwcG9ydHMgY29sbGFib3JhdGlvbiBkcmFmdC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkXG5cdCAqIEBwYXJhbSBtZXRhT2JqZWN0IE1ldGFPYmplY3QgdG8gYmUgdXNlZCBmb3IgZGV0ZXJtaW5hdGlvblxuXHQgKiBAcGFyYW0gdGVtcGxhdGVJbnRlcmZhY2UgQVBJIHByb3ZpZGVkIGJ5IFVJNSB0ZW1wbGF0aW5nIGlmIHVzZWRcblx0ICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBzZXJ2aWNlIHN1cHBvcnRzIGNvbGxhYm9yYXRpb24gZHJhZnQsIGVsc2UgZmFsc2Vcblx0ICovXG5cdGlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkOiBmdW5jdGlvbiAobWV0YU9iamVjdDogYW55LCB0ZW1wbGF0ZUludGVyZmFjZT86IGFueSkge1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSAodGVtcGxhdGVJbnRlcmZhY2U/LmNvbnRleHQ/LmdldE1vZGVsKCkgfHwgbWV0YU9iamVjdCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdFx0Y29uc3Qgb0VudGl0eUNvbnRhaW5lciA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KFwiL1wiKTtcblx0XHRmb3IgKGNvbnN0IHNFbnRpdHlTZXQgaW4gb0VudGl0eUNvbnRhaW5lcikge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRvRW50aXR5Q29udGFpbmVyW3NFbnRpdHlTZXRdLiRraW5kID09PSBcIkVudGl0eVNldFwiICYmXG5cdFx0XHRcdG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0fUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290L1NoYXJlQWN0aW9uYClcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHBhdGggdG8gdGhlIHRhcmdldCBlbnRpdHkgc2V0IHZpYSB1c2luZyBuYXZpZ2F0aW9uIHByb3BlcnR5IGJpbmRpbmcuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBnZXRUYXJnZXRFbnRpdHlTZXRcblx0ICogQHBhcmFtIG9Db250ZXh0IENvbnRleHQgZm9yIHdoaWNoIHRoZSB0YXJnZXQgZW50aXR5IHNldCBzaGFsbCBiZSBkZXRlcm1pbmVkXG5cdCAqIEByZXR1cm5zIFJldHVybnMgcGF0aCB0byB0aGUgdGFyZ2V0IGVudGl0eSBzZXRcblx0ICovXG5cdGdldFRhcmdldEVudGl0eVNldDogZnVuY3Rpb24gKG9Db250ZXh0OiBDb250ZXh0KSB7XG5cdFx0Y29uc3Qgc1BhdGggPSBvQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0aWYgKFxuXHRcdFx0b0NvbnRleHQuZ2V0T2JqZWN0KFwiJGtpbmRcIikgPT09IFwiRW50aXR5U2V0XCIgfHxcblx0XHRcdG9Db250ZXh0LmdldE9iamVjdChcIiRraW5kXCIpID09PSBcIkFjdGlvblwiIHx8XG5cdFx0XHRvQ29udGV4dC5nZXRPYmplY3QoXCIwLyRraW5kXCIpID09PSBcIkFjdGlvblwiXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gc1BhdGg7XG5cdFx0fVxuXHRcdGNvbnN0IHNFbnRpdHlTZXRQYXRoID0gTW9kZWxIZWxwZXIuZ2V0RW50aXR5U2V0UGF0aChzUGF0aCk7XG5cdFx0cmV0dXJuIGAvJHtvQ29udGV4dC5nZXRPYmplY3Qoc0VudGl0eVNldFBhdGgpfWA7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybnMgY29tcGxldGUgcGF0aCB0byB0aGUgZW50aXR5IHNldCB2aWEgdXNpbmcgbmF2aWdhdGlvbiBwcm9wZXJ0eSBiaW5kaW5nLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZ2V0RW50aXR5U2V0UGF0aFxuXHQgKiBAcGFyYW0gc1BhdGggUGF0aCBmb3Igd2hpY2ggY29tcGxldGUgZW50aXR5U2V0IHBhdGggbmVlZHMgdG8gYmUgZGV0ZXJtaW5lZFxuXHQgKiBAcmV0dXJucyBSZXR1cm5zIGNvbXBsZXRlIHBhdGggdG8gdGhlIGVudGl0eSBzZXRcblx0ICovXG5cdGdldEVudGl0eVNldFBhdGg6IGZ1bmN0aW9uIChzUGF0aDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIGAvJHtzUGF0aC5zcGxpdChcIi9cIikuZmlsdGVyKE1vZGVsSGVscGVyLmZpbHRlck91dE5hdlByb3BCaW5kaW5nKS5qb2luKFwiLyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nL1wiKX1gO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwYXRoIGZvciB0aGUgaXRlbXMgcHJvcGVydHkgb2YgTXVsdGlWYWx1ZUZpZWxkIHBhcmFtZXRlcnMuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBnZXRBY3Rpb25QYXJhbWV0ZXJJdGVtc01vZGVsUGF0aFxuXHQgKiBAcGFyYW0gb1BhcmFtZXRlciBBY3Rpb24gUGFyYW1ldGVyXG5cdCAqIEByZXR1cm5zIFJldHVybnMgdGhlIGNvbXBsZXRlIG1vZGVsIHBhdGggZm9yIHRoZSBpdGVtcyBwcm9wZXJ0eSBvZiBNdWx0aVZhbHVlRmllbGQgcGFyYW1ldGVyc1xuXHQgKi9cblx0Z2V0QWN0aW9uUGFyYW1ldGVySXRlbXNNb2RlbFBhdGg6IGZ1bmN0aW9uIChvUGFyYW1ldGVyOiBhbnkpIHtcblx0XHRyZXR1cm4gb1BhcmFtZXRlciAmJiBvUGFyYW1ldGVyLiROYW1lID8gYHtwYXRoOiAnbXZmdmlldz4vJHtvUGFyYW1ldGVyLiROYW1lfSd9YCA6IHVuZGVmaW5lZDtcblx0fSxcblxuXHRmaWx0ZXJPdXROYXZQcm9wQmluZGluZzogZnVuY3Rpb24gKHNQYXRoUGFydDogYW55KSB7XG5cdFx0cmV0dXJuIHNQYXRoUGFydCAhPT0gXCJcIiAmJiBzUGF0aFBhcnQgIT09IFwiJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdcIjtcblx0fSxcblxuXHQvKipcblx0ICogQWRkcyBhIHNldFByb3BlcnR5IHRvIHRoZSBjcmVhdGVkIGJpbmRpbmcgY29udGV4dHMgb2YgdGhlIGludGVybmFsIEpTT04gbW9kZWwuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBlbmhhbmNlSW50ZXJuYWxKU09OTW9kZWxcblx0ICogQHBhcmFtIHtzYXAudWkubW9kZWwuanNvbi5KU09OTW9kZWx9IEludGVybmFsIEpTT04gTW9kZWwgd2hpY2ggaXMgZW5oYW5jZWRcblx0ICovXG5cblx0ZW5oYW5jZUludGVybmFsSlNPTk1vZGVsOiBmdW5jdGlvbiAob0ludGVybmFsTW9kZWw6IGFueSkge1xuXHRcdGNvbnN0IGZuQmluZENvbnRleHQgPSBvSW50ZXJuYWxNb2RlbC5iaW5kQ29udGV4dDtcblx0XHRvSW50ZXJuYWxNb2RlbC5iaW5kQ29udGV4dCA9IGZ1bmN0aW9uIChzUGF0aDogYW55LCBvQ29udGV4dDogYW55LCBtUGFyYW1ldGVyczogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xuXHRcdFx0b0NvbnRleHQgPSBmbkJpbmRDb250ZXh0LmFwcGx5KHRoaXMsIFtzUGF0aCwgb0NvbnRleHQsIG1QYXJhbWV0ZXJzLCAuLi5hcmdzXSk7XG5cdFx0XHRjb25zdCBmbkdldEJvdW5kQ29udGV4dCA9IG9Db250ZXh0LmdldEJvdW5kQ29udGV4dDtcblxuXHRcdFx0b0NvbnRleHQuZ2V0Qm91bmRDb250ZXh0ID0gZnVuY3Rpb24gKC4uLnN1YkFyZ3M6IGFueVtdKSB7XG5cdFx0XHRcdGNvbnN0IG9Cb3VuZENvbnRleHQgPSBmbkdldEJvdW5kQ29udGV4dC5hcHBseSh0aGlzLCAuLi5zdWJBcmdzKTtcblx0XHRcdFx0aWYgKG9Cb3VuZENvbnRleHQgJiYgIW9Cb3VuZENvbnRleHQuc2V0UHJvcGVydHkpIHtcblx0XHRcdFx0XHRvQm91bmRDb250ZXh0LnNldFByb3BlcnR5ID0gZnVuY3Rpb24gKHNTZXRQcm9wUGF0aDogYW55LCB2YWx1ZTogYW55KSB7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5nZXRPYmplY3QoKSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRcdC8vIGluaXRpYWxpemVcblx0XHRcdFx0XHRcdFx0dGhpcy5nZXRNb2RlbCgpLnNldFByb3BlcnR5KHRoaXMuZ2V0UGF0aCgpLCB7fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGlzLmdldE1vZGVsKCkuc2V0UHJvcGVydHkoc1NldFByb3BQYXRoLCB2YWx1ZSwgdGhpcyk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gb0JvdW5kQ29udGV4dDtcblx0XHRcdH07XG5cdFx0XHRyZXR1cm4gb0NvbnRleHQ7XG5cdFx0fTtcblx0fSxcblxuXHQvKipcblx0ICogQWRkcyBhbiBoYW5kbGVyIG9uIHByb3BlcnR5Q2hhbmdlLlxuXHQgKiBUaGUgcHJvcGVydHkgXCIvZWRpdE1vZGVcIiBpcyBjaGFuZ2VkIGFjY29yZGluZyB0byBwcm9wZXJ0eSAnL2lzRWRpdGFibGUnIHdoZW4gdGhpcyBsYXN0IG9uZSBpcyBzZXRcblx0ICogaW4gb3JkZXIgdG8gYmUgY29tcGxpYW50IHdpdGggZm9ybWVyIHZlcnNpb25zIHdoZXJlIGJ1aWxkaW5nIGJsb2NrcyB1c2UgdGhlIHByb3BlcnR5IFwiL2VkaXRNb2RlXCJcblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGVuaGFuY2VVaUpTT05Nb2RlbFxuXHQgKiBAcGFyYW0ge3NhcC51aS5tb2RlbC5qc29uLkpTT05Nb2RlbH0gdWlNb2RlbCBKU09OIE1vZGVsIHdoaWNoIGlzIGVuaGFuY2VkXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBsaWJyYXJ5IENvcmUgbGlicmFyeSBvZiBTQVAgRmlvcmkgZWxlbWVudHNcblx0ICovXG5cblx0ZW5oYW5jZVVpSlNPTk1vZGVsOiBmdW5jdGlvbiAodWlNb2RlbDogSlNPTk1vZGVsLCBsaWJyYXJ5OiBhbnkpIHtcblx0XHRjb25zdCBmblNldFByb3BlcnR5ID0gdWlNb2RlbC5zZXRQcm9wZXJ0eSBhcyBhbnk7XG5cdFx0dWlNb2RlbC5zZXRQcm9wZXJ0eSA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuXHRcdFx0Y29uc3QgdmFsdWUgPSBhcmdzWzFdO1xuXHRcdFx0aWYgKGFyZ3NbMF0gPT09IFwiL2lzRWRpdGFibGVcIikge1xuXHRcdFx0XHR1aU1vZGVsLnNldFByb3BlcnR5KFwiL2VkaXRNb2RlXCIsIHZhbHVlID8gbGlicmFyeS5FZGl0TW9kZS5FZGl0YWJsZSA6IGxpYnJhcnkuRWRpdE1vZGUuRGlzcGxheSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZm5TZXRQcm9wZXJ0eS5hcHBseSh0aGlzLCBbLi4uYXJnc10pO1xuXHRcdH07XG5cdH0sXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHdoZXRoZXIgZmlsdGVyaW5nIG9uIHRoZSB0YWJsZSBpcyBjYXNlIHNlbnNpdGl2ZS5cblx0ICpcblx0ICogQHBhcmFtIG9NZXRhTW9kZWwgVGhlIGluc3RhbmNlIG9mIHRoZSBtZXRhIG1vZGVsXG5cdCAqIEByZXR1cm5zIFJldHVybnMgJ2ZhbHNlJyBpZiBGaWx0ZXJGdW5jdGlvbnMgYW5ub3RhdGlvbiBzdXBwb3J0cyAndG9sb3dlcicsIGVsc2UgJ3RydWUnXG5cdCAqL1xuXHRpc0ZpbHRlcmluZ0Nhc2VTZW5zaXRpdmU6IGZ1bmN0aW9uIChvTWV0YU1vZGVsOiBhbnkpIHtcblx0XHRpZiAoIW9NZXRhTW9kZWwpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGNvbnN0IGFGaWx0ZXJGdW5jdGlvbnMgPSBvTWV0YU1vZGVsLmdldE9iamVjdChcIi9AT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJGdW5jdGlvbnNcIik7XG5cdFx0Ly8gR2V0IGZpbHRlciBmdW5jdGlvbnMgZGVmaW5lZCBhdCBFbnRpdHlDb250YWluZXIgYW5kIGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgJ3RvbG93ZXInXG5cdFx0cmV0dXJuIGFGaWx0ZXJGdW5jdGlvbnMgPyBhRmlsdGVyRnVuY3Rpb25zLmluZGV4T2YoXCJ0b2xvd2VyXCIpID09PSAtMSA6IHRydWU7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCBNZXRhUGF0aCBmb3IgdGhlIGNvbnRleHQuXG5cdCAqXG5cdCAqIEBwYXJhbSBvQ29udGV4dCBDb250ZXh0IHRvIGJlIHVzZWRcblx0ICogQHJldHVybnMgUmV0dXJucyBtZXRhIHBhdGggZm9yIHRoZSBjb250ZXh0LlxuXHQgKi9cblx0Z2V0TWV0YVBhdGhGb3JDb250ZXh0OiBmdW5jdGlvbiAob0NvbnRleHQ6IGFueSkge1xuXHRcdGNvbnN0IG9Nb2RlbCA9IG9Db250ZXh0LmdldE1vZGVsKCksXG5cdFx0XHRvTWV0YU1vZGVsID0gb01vZGVsLmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0c1BhdGggPSBvQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0cmV0dXJuIG9NZXRhTW9kZWwgJiYgc1BhdGggJiYgb01ldGFNb2RlbC5nZXRNZXRhUGF0aChzUGF0aCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCBNZXRhUGF0aCBmb3IgdGhlIGxpc3RiaW5kaW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0gb1ZpZXcgVmlldyBvZiB0aGUgY29udHJvbCB1c2luZyBsaXN0QmluZGluZ1xuXHQgKiBAcGFyYW0gdkxpc3RCaW5kaW5nIE9EYXRhTGlzdEJpbmRpbmcgb2JqZWN0IG9yIHRoZSBiaW5kaW5nIHBhdGggZm9yIGEgdGVtcG9yYXJ5IGxpc3QgYmluZGluZ1xuXHQgKiBAcmV0dXJucyBSZXR1cm5zIG1ldGEgcGF0aCBmb3IgdGhlIGxpc3RiaW5kaW5nLlxuXHQgKi9cblx0Z2V0QWJzb2x1dGVNZXRhUGF0aEZvckxpc3RCaW5kaW5nOiBmdW5jdGlvbiAob1ZpZXc6IFZpZXcsIHZMaXN0QmluZGluZzogT0RhdGFMaXN0QmluZGluZyB8IHN0cmluZykge1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvVmlldy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHRcdGxldCBzTWV0YVBhdGg7XG5cblx0XHRpZiAodHlwZW9mIHZMaXN0QmluZGluZyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0aWYgKHZMaXN0QmluZGluZy5zdGFydHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0XHQvLyBhYnNvbHV0ZSBwYXRoXG5cdFx0XHRcdHNNZXRhUGF0aCA9IG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgodkxpc3RCaW5kaW5nKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHJlbGF0aXZlIHBhdGhcblx0XHRcdFx0Y29uc3Qgb0JpbmRpbmdDb250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRcdFx0Y29uc3Qgc1Jvb3RDb250ZXh0UGF0aCA9IG9CaW5kaW5nQ29udGV4dCEuZ2V0UGF0aCgpO1xuXHRcdFx0XHRzTWV0YVBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKGAke3NSb290Q29udGV4dFBhdGh9LyR7dkxpc3RCaW5kaW5nfWApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyB3ZSBhbHJlYWR5IGdldCBhIGxpc3QgYmluZGluZyB1c2UgdGhpcyBvbmVcblx0XHRcdGNvbnN0IG9CaW5kaW5nID0gdkxpc3RCaW5kaW5nO1xuXHRcdFx0Y29uc3Qgb1Jvb3RCaW5kaW5nID0gb0JpbmRpbmcuZ2V0Um9vdEJpbmRpbmcoKTtcblx0XHRcdGlmIChvQmluZGluZyA9PT0gb1Jvb3RCaW5kaW5nKSB7XG5cdFx0XHRcdC8vIGFic29sdXRlIHBhdGhcblx0XHRcdFx0c01ldGFQYXRoID0gb01ldGFNb2RlbC5nZXRNZXRhUGF0aChvQmluZGluZy5nZXRQYXRoKCkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gcmVsYXRpdmUgcGF0aFxuXHRcdFx0XHRjb25zdCBzUm9vdEJpbmRpbmdQYXRoID0gb1Jvb3RCaW5kaW5nIS5nZXRQYXRoKCk7XG5cdFx0XHRcdGNvbnN0IHNSZWxhdGl2ZVBhdGggPSBvQmluZGluZy5nZXRQYXRoKCk7XG5cdFx0XHRcdHNNZXRhUGF0aCA9IG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgoYCR7c1Jvb3RCaW5kaW5nUGF0aH0vJHtzUmVsYXRpdmVQYXRofWApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc01ldGFQYXRoO1xuXHR9XG59O1xuXG5leHBvcnQgdHlwZSBJbnRlcm5hbE1vZGVsQ29udGV4dCA9IEJhc2VDb250ZXh0ICYge1xuXHRzZXRQcm9wZXJ0eShzUGF0aDogc3RyaW5nLCB2VmFsdWU6IGFueSk6IHZvaWQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb2RlbEhlbHBlcjtcbiJdfQ==
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/* This class contains helpers to be used at runtime to retrieve further information on the model */
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
2
|
+
import type View from "sap/ui/core/mvc/View";
|
|
3
|
+
import type BaseContext from "sap/ui/model/Context";
|
|
4
|
+
import type JSONModel from "sap/ui/model/json/JSONModel";
|
|
5
|
+
import type Context from "sap/ui/model/odata/v4/Context";
|
|
6
|
+
import type ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
|
|
7
|
+
import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
6
8
|
|
|
7
9
|
const ModelHelper = {
|
|
8
10
|
/**
|
|
@@ -10,8 +12,8 @@ const ModelHelper = {
|
|
|
10
12
|
*
|
|
11
13
|
* @function
|
|
12
14
|
* @name isStickySessionSupported
|
|
13
|
-
* @param
|
|
14
|
-
* @returns
|
|
15
|
+
* @param oMetaModel ODataModelMetaModel to check for sticky enabled entity
|
|
16
|
+
* @returns Returns true if sticky, else false
|
|
15
17
|
*/
|
|
16
18
|
isStickySessionSupported: function (oMetaModel: ODataMetaModel) {
|
|
17
19
|
const oEntityContainer = oMetaModel.getObject("/");
|
|
@@ -31,9 +33,9 @@ const ModelHelper = {
|
|
|
31
33
|
*
|
|
32
34
|
* @function
|
|
33
35
|
* @name isDraftSupported
|
|
34
|
-
* @param
|
|
35
|
-
* @param
|
|
36
|
-
* @returns
|
|
36
|
+
* @param oMetaModel ODataModelMetaModel of the context for which draft support shall be checked
|
|
37
|
+
* @param sPath Path for which draft support shall be checked
|
|
38
|
+
* @returns Returns true if draft, else false
|
|
37
39
|
*/
|
|
38
40
|
isDraftSupported: function (oMetaModel: any, sPath: string) {
|
|
39
41
|
const oMetaContext = oMetaModel.getMetaContext(sPath);
|
|
@@ -45,7 +47,7 @@ const ModelHelper = {
|
|
|
45
47
|
aParts = oMetaModel.getMetaPath(sPath).split("/").filter(Boolean);
|
|
46
48
|
if (aParts.length) {
|
|
47
49
|
for (let i = aParts.length - 1; i >= 0; i--) {
|
|
48
|
-
oParentEntitySetContext = oMetaModel.getMetaContext(oMetaModel.getMetaPath(
|
|
50
|
+
oParentEntitySetContext = oMetaModel.getMetaContext(oMetaModel.getMetaPath(`/${aParts[i]}`));
|
|
49
51
|
if (oParentEntitySetContext.getObject("$kind") === "EntitySet") {
|
|
50
52
|
sTargetEntitySet = this.getTargetEntitySet(oParentEntitySetContext);
|
|
51
53
|
break;
|
|
@@ -70,9 +72,9 @@ const ModelHelper = {
|
|
|
70
72
|
*
|
|
71
73
|
* @function
|
|
72
74
|
* @name isCollaborationDraftSupported
|
|
73
|
-
* @param
|
|
74
|
-
* @param
|
|
75
|
-
* @returns
|
|
75
|
+
* @param metaObject MetaObject to be used for determination
|
|
76
|
+
* @param templateInterface API provided by UI5 templating if used
|
|
77
|
+
* @returns Returns true if the service supports collaboration draft, else false
|
|
76
78
|
*/
|
|
77
79
|
isCollaborationDraftSupported: function (metaObject: any, templateInterface?: any) {
|
|
78
80
|
const oMetaModel = (templateInterface?.context?.getModel() || metaObject) as ODataMetaModel;
|
|
@@ -80,7 +82,7 @@ const ModelHelper = {
|
|
|
80
82
|
for (const sEntitySet in oEntityContainer) {
|
|
81
83
|
if (
|
|
82
84
|
oEntityContainer[sEntitySet].$kind === "EntitySet" &&
|
|
83
|
-
oMetaModel.getObject(
|
|
85
|
+
oMetaModel.getObject(`/${sEntitySet}@com.sap.vocabularies.Common.v1.DraftRoot/ShareAction`)
|
|
84
86
|
) {
|
|
85
87
|
return true;
|
|
86
88
|
}
|
|
@@ -93,8 +95,8 @@ const ModelHelper = {
|
|
|
93
95
|
*
|
|
94
96
|
* @function
|
|
95
97
|
* @name getTargetEntitySet
|
|
96
|
-
* @param
|
|
97
|
-
* @returns
|
|
98
|
+
* @param oContext Context for which the target entity set shall be determined
|
|
99
|
+
* @returns Returns path to the target entity set
|
|
98
100
|
*/
|
|
99
101
|
getTargetEntitySet: function (oContext: Context) {
|
|
100
102
|
const sPath = oContext.getPath();
|
|
@@ -106,7 +108,7 @@ const ModelHelper = {
|
|
|
106
108
|
return sPath;
|
|
107
109
|
}
|
|
108
110
|
const sEntitySetPath = ModelHelper.getEntitySetPath(sPath);
|
|
109
|
-
return
|
|
111
|
+
return `/${oContext.getObject(sEntitySetPath)}`;
|
|
110
112
|
},
|
|
111
113
|
|
|
112
114
|
/**
|
|
@@ -114,11 +116,11 @@ const ModelHelper = {
|
|
|
114
116
|
*
|
|
115
117
|
* @function
|
|
116
118
|
* @name getEntitySetPath
|
|
117
|
-
* @param
|
|
118
|
-
* @returns
|
|
119
|
+
* @param sPath Path for which complete entitySet path needs to be determined
|
|
120
|
+
* @returns Returns complete path to the entity set
|
|
119
121
|
*/
|
|
120
122
|
getEntitySetPath: function (sPath: string) {
|
|
121
|
-
return
|
|
123
|
+
return `/${sPath.split("/").filter(ModelHelper.filterOutNavPropBinding).join("/$NavigationPropertyBinding/")}`;
|
|
122
124
|
},
|
|
123
125
|
|
|
124
126
|
/**
|
|
@@ -126,8 +128,8 @@ const ModelHelper = {
|
|
|
126
128
|
*
|
|
127
129
|
* @function
|
|
128
130
|
* @name getActionParameterItemsModelPath
|
|
129
|
-
* @param
|
|
130
|
-
* @returns
|
|
131
|
+
* @param oParameter Action Parameter
|
|
132
|
+
* @returns Returns the complete model path for the items property of MultiValueField parameters
|
|
131
133
|
*/
|
|
132
134
|
getActionParameterItemsModelPath: function (oParameter: any) {
|
|
133
135
|
return oParameter && oParameter.$Name ? `{path: 'mvfview>/${oParameter.$Name}'}` : undefined;
|
|
@@ -193,7 +195,7 @@ const ModelHelper = {
|
|
|
193
195
|
* Returns whether filtering on the table is case sensitive.
|
|
194
196
|
*
|
|
195
197
|
* @param oMetaModel The instance of the meta model
|
|
196
|
-
* @returns
|
|
198
|
+
* @returns Returns 'false' if FilterFunctions annotation supports 'tolower', else 'true'
|
|
197
199
|
*/
|
|
198
200
|
isFilteringCaseSensitive: function (oMetaModel: any) {
|
|
199
201
|
if (!oMetaModel) {
|
|
@@ -207,8 +209,8 @@ const ModelHelper = {
|
|
|
207
209
|
/**
|
|
208
210
|
* Get MetaPath for the context.
|
|
209
211
|
*
|
|
210
|
-
* @param
|
|
211
|
-
* @returns
|
|
212
|
+
* @param oContext Context to be used
|
|
213
|
+
* @returns Returns meta path for the context.
|
|
212
214
|
*/
|
|
213
215
|
getMetaPathForContext: function (oContext: any) {
|
|
214
216
|
const oModel = oContext.getModel(),
|
|
@@ -220,12 +222,12 @@ const ModelHelper = {
|
|
|
220
222
|
/**
|
|
221
223
|
* Get MetaPath for the listbinding.
|
|
222
224
|
*
|
|
223
|
-
* @param
|
|
224
|
-
* @param
|
|
225
|
-
* @returns
|
|
225
|
+
* @param oView View of the control using listBinding
|
|
226
|
+
* @param vListBinding ODataListBinding object or the binding path for a temporary list binding
|
|
227
|
+
* @returns Returns meta path for the listbinding.
|
|
226
228
|
*/
|
|
227
|
-
getAbsoluteMetaPathForListBinding: function (oView:
|
|
228
|
-
const oMetaModel = oView.getModel().getMetaModel();
|
|
229
|
+
getAbsoluteMetaPathForListBinding: function (oView: View, vListBinding: ODataListBinding | string) {
|
|
230
|
+
const oMetaModel = oView.getModel().getMetaModel() as ODataMetaModel;
|
|
229
231
|
let sMetaPath;
|
|
230
232
|
|
|
231
233
|
if (typeof vListBinding === "string") {
|
|
@@ -235,7 +237,7 @@ const ModelHelper = {
|
|
|
235
237
|
} else {
|
|
236
238
|
// relative path
|
|
237
239
|
const oBindingContext = oView.getBindingContext();
|
|
238
|
-
const sRootContextPath = oBindingContext
|
|
240
|
+
const sRootContextPath = oBindingContext!.getPath();
|
|
239
241
|
sMetaPath = oMetaModel.getMetaPath(`${sRootContextPath}/${vListBinding}`);
|
|
240
242
|
}
|
|
241
243
|
} else {
|
|
@@ -247,7 +249,7 @@ const ModelHelper = {
|
|
|
247
249
|
sMetaPath = oMetaModel.getMetaPath(oBinding.getPath());
|
|
248
250
|
} else {
|
|
249
251
|
// relative path
|
|
250
|
-
const sRootBindingPath = oRootBinding
|
|
252
|
+
const sRootBindingPath = oRootBinding!.getPath();
|
|
251
253
|
const sRelativePath = oBinding.getPath();
|
|
252
254
|
sMetaPath = oMetaModel.getMetaPath(`${sRootBindingPath}/${sRelativePath}`);
|
|
253
255
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
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/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/m/MessageBox", "sap/ui/core/Core", "sap/ui/core/util/PasteHelper"], function (Log, MessageBox, Core, CorePasteHelper) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -25,7 +25,7 @@ sap.ui.define(["sap/ui/core/util/PasteHelper", "sap/m/MessageBox", "sap/base/Log
|
|
|
25
25
|
parseKeepsEmptyString: true
|
|
26
26
|
},
|
|
27
27
|
type = metaModel.getUI5Type("".concat(rowBindingPath, "/").concat(propertyPath), formatOptions),
|
|
28
|
-
isIgnored = !property || metaContext.getProperty(propertyPath
|
|
28
|
+
isIgnored = !property || metaContext.getProperty("".concat(propertyPath, "@Org.OData.Core.V1.Computed"));
|
|
29
29
|
return {
|
|
30
30
|
property: propertyPath,
|
|
31
31
|
ignore: isIgnored,
|
|
@@ -123,13 +123,6 @@ sap.ui.define(["sap/ui/core/util/PasteHelper", "sap/m/MessageBox", "sap/base/Log
|
|
|
123
123
|
});
|
|
124
124
|
},
|
|
125
125
|
getInfoForEntityProperty: getInfoForEntityProperty,
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
*
|
|
129
|
-
* @param rawData
|
|
130
|
-
* @param table
|
|
131
|
-
* @returns {Promise<any>}
|
|
132
|
-
*/
|
|
133
126
|
parsePastedData: function (rawData, table) {
|
|
134
127
|
var _this2 = this;
|
|
135
128
|
|
|
@@ -210,4 +203,4 @@ sap.ui.define(["sap/ui/core/util/PasteHelper", "sap/m/MessageBox", "sap/base/Log
|
|
|
210
203
|
};
|
|
211
204
|
return PasteHelper;
|
|
212
205
|
}, false);
|
|
213
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlBhc3RlSGVscGVyLnRzIl0sIm5hbWVzIjpbImdldEluZm9Gb3JFbnRpdHlQcm9wZXJ0eSIsInByb3BlcnR5UGF0aCIsInJvd0JpbmRpbmdQYXRoIiwibWV0YUNvbnRleHQiLCJtZXRhTW9kZWwiLCJwcm9wZXJ0eSIsImdldFByb3BlcnR5IiwiZm9ybWF0T3B0aW9ucyIsInBhcnNlS2VlcHNFbXB0eVN0cmluZyIsInR5cGUiLCJnZXRVSTVUeXBlIiwiaXNJZ25vcmVkIiwiaWdub3JlIiwiZGlzcGxheUVycm9yTWVzc2FnZXMiLCJlcnJvck1lc3NhZ2VzIiwibWVzc2FnZURldGFpbHMiLCJyZXNvdXJjZUJ1bmRsZSIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJlcnJvckNvcnJlY3Rpb25NZXNzYWdlIiwiZ2V0VGV4dCIsIm5vdGVNZXNzYWdlIiwicGFzdGVFcnJvck1lc3NhZ2UiLCJsZW5ndGgiLCJ1bnNoaWZ0IiwiTWVzc2FnZUJveCIsImVycm9yIiwidGl0bGUiLCJkZXRhaWxzIiwiam9pbiIsIlBhc3RlSGVscGVyIiwiZm9ybWF0Q3VzdG9tTWVzc2FnZSIsInZhbGlkYXRpb25NZXNzYWdlcyIsImlSb3dOdW1iZXIiLCJlcnJvck1lc3NhZ2UiLCJudW1iZXJNZXNzYWdlcyIsImkxOG5Sb3ciLCJmb3JFYWNoIiwibWVzc2FnZSIsImluZGV4TWVzc2FnZSIsIm1lc3NhZ2VUZXh0IiwiZ2V0Q29sdW1uSW5mbyIsInRhYmxlIiwibW9kZWwiLCJnZXRSb3dCaW5kaW5nIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJyZXNvbHZlIiwiZ2V0UGF0aCIsImdldENvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsImdldENvbnRyb2xEZWxlZ2F0ZSIsImZldGNoUHJvcGVydGllcyIsInRoZW4iLCJwcm9wZXJ0eUluZm8iLCJQcm9wZXJ0eUluZm9EaWN0IiwiT2JqZWN0IiwiYXNzaWduIiwibWFwIiwibmFtZSIsImNvbHVtbkluZm9zIiwiZ2V0Q29sdW1ucyIsImNvbHVtbiIsImluZm9Qcm9wZXJ0eSIsImdldERhdGFQcm9wZXJ0eSIsInByb3BlcnR5SW5mb3MiLCJkYXRhUHJvcGVydHkiLCJwYXRoIiwiaW5kZXhPZiIsInB1c2giLCJwYXJzZVBhc3RlZERhdGEiLCJyYXdEYXRhIiwicGFzdGVJbmZvcyIsInBhc3RlZENvbHVtbkNvdW50IiwiZmlyc3RFZGl0YWJsZUNvbHVtbkluZGV4IiwiSSIsIlByb21pc2UiLCJDb3JlUGFzdGVIZWxwZXIiLCJwYXJzZSIsInBhcnNlUmVzdWx0IiwiZXJyb3JzIiwib0VsZW1lbnQiLCJwYXJzZWREYXRhIiwicGFzdGVEYXRhIiwiY29udHJvbGxlciIsIm9JbnRlcm5hbEVkaXRGbG93IiwiX2VkaXRGbG93IiwidGFibGVEZWZpbml0aW9uIiwiZ2V0UGFyZW50IiwiZ2V0VGFibGVEZWZpbml0aW9uIiwiYURhdGEiLCJhUGFyc2VkRGF0YSIsImFsbCIsIm1EYXRhIiwiZ2V0VHJhbnNhY3Rpb25IZWxwZXIiLCJ2YWxpZGF0ZURvY3VtZW50IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJkYXRhIiwiY3VzdG9tVmFsaWRhdGlvbkZ1bmN0aW9uIiwiY29udHJvbCIsImdldFZpZXciLCJhVmFsaWRhdGlvbk1lc3NhZ2VzIiwiYUVycm9yTWVzc2FnZXMiLCJyZWR1Y2UiLCJhTWVzc2FnZXMiLCJhQ3VzdG9tTWVzc2FnZXMiLCJpbmRleCIsIm1lc3NhZ2VzIiwicm93IiwiYVJvd01lc3NhZ2VzIiwibUVycm9yIiwiYVZhbGlkYXRlZERhdGEiLCJjcmVhdGVNdWx0aXBsZURvY3VtZW50cyIsImNyZWF0ZUF0RW5kIiwiZWRpdEZsb3ciLCJvbkJlZm9yZUNyZWF0ZSIsInVuZGVmaW5lZCIsImNhdGNoIiwib0Vycm9yIiwiTG9nIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVQSxNQUFNQSx3QkFBd0IsR0FBRyxVQUFTQyxZQUFULEVBQTRCQyxjQUE1QixFQUFpREMsV0FBakQsRUFBbUVDLFNBQW5FLEVBQXdGO0FBQ3hILFFBQU1DLFFBQVEsR0FBR0YsV0FBVyxDQUFDRyxXQUFaLENBQXdCTCxZQUF4QixDQUFqQjtBQUFBLFFBQ0NNLGFBQWEsR0FBRztBQUFFQyxNQUFBQSxxQkFBcUIsRUFBRTtBQUF6QixLQURqQjtBQUFBLFFBRUNDLElBQUksR0FBR0wsU0FBUyxDQUFDTSxVQUFWLFdBQXdCUixjQUF4QixjQUEwQ0QsWUFBMUMsR0FBMERNLGFBQTFELENBRlI7QUFBQSxRQUdDSSxTQUFTLEdBQUcsQ0FBQ04sUUFBRCxJQUFhRixXQUFXLENBQUNHLFdBQVosQ0FBd0JMLFlBQVksR0FBRyw2QkFBdkMsQ0FIMUI7QUFJQSxXQUFPO0FBQ05JLE1BQUFBLFFBQVEsRUFBRUosWUFESjtBQUVOVyxNQUFBQSxNQUFNLEVBQUVELFNBRkY7QUFHTkYsTUFBQUEsSUFBSSxFQUFFQTtBQUhBLEtBQVA7QUFLQSxHQVZEOztBQVlBLE1BQU1JLG9CQUFvQixHQUFHLFVBQVNDLGFBQVQsRUFBd0M7QUFDcEUsUUFBTUMsY0FBYyxzQkFBT0QsYUFBUCxDQUFwQjs7QUFDQSxRQUFNRSxjQUFjLEdBQUlDLElBQUQsQ0FBaUJDLHdCQUFqQixDQUEwQyxhQUExQyxDQUF2QjtBQUFBLFFBQ0NDLHNCQUFzQixHQUFHSCxjQUFjLENBQUNJLE9BQWYsQ0FBdUIscURBQXZCLENBRDFCO0FBQUEsUUFFQ0MsV0FBVyxHQUFHTCxjQUFjLENBQUNJLE9BQWYsQ0FBdUIsa0RBQXZCLENBRmY7QUFHQSxRQUFJRSxpQkFBSjs7QUFFQSxRQUFJUCxjQUFjLENBQUNRLE1BQWYsR0FBd0IsQ0FBNUIsRUFBK0I7QUFDOUJELE1BQUFBLGlCQUFpQixHQUFHTixjQUFjLENBQUNJLE9BQWYsQ0FBdUIsaURBQXZCLEVBQTBFLENBQUNMLGNBQWMsQ0FBQ1EsTUFBaEIsQ0FBMUUsQ0FBcEI7QUFDQSxLQUZELE1BRU87QUFDTkQsTUFBQUEsaUJBQWlCLEdBQUdOLGNBQWMsQ0FBQ0ksT0FBZixDQUF1QixtREFBdkIsQ0FBcEI7QUFDQTs7QUFDREwsSUFBQUEsY0FBYyxDQUFDUyxPQUFmLENBQXVCLEVBQXZCLEVBWm9FLENBWXhDOztBQUM1QlQsSUFBQUEsY0FBYyxDQUFDUyxPQUFmLENBQXVCSCxXQUF2QjtBQUNBTixJQUFBQSxjQUFjLENBQUNTLE9BQWYsQ0FBdUJMLHNCQUF2QjtBQUNBTSxJQUFBQSxVQUFVLENBQUNDLEtBQVgsQ0FBaUJKLGlCQUFqQixFQUFvQztBQUNuQ0ssTUFBQUEsS0FBSyxFQUFFWCxjQUFjLENBQUNJLE9BQWYsQ0FBdUIsZ0RBQXZCLENBRDRCO0FBRW5DUSxNQUFBQSxPQUFPLEVBQUViLGNBQWMsQ0FBQ2MsSUFBZixDQUFvQixNQUFwQjtBQUYwQixLQUFwQztBQUlBLEdBbkJEOztBQXFCQSxNQUFNQyxXQUFXLEdBQUc7QUFDbkJqQixJQUFBQSxvQkFBb0IsRUFBRUEsb0JBREg7QUFFbkJrQixJQUFBQSxtQkFBbUIsRUFBRSxVQUFTQyxrQkFBVCxFQUF3REMsVUFBeEQsRUFBb0Y7QUFDeEcsVUFBSUMsWUFBWSxHQUFHLEVBQW5CO0FBQ0EsVUFBTUMsY0FBYyxHQUFHSCxrQkFBa0IsQ0FBQ1QsTUFBMUM7QUFDQSxVQUFNUCxjQUFjLEdBQUlDLElBQUQsQ0FBaUJDLHdCQUFqQixDQUEwQyxhQUExQyxDQUF2QjtBQUFBLFVBQ0NrQixPQUFPLEdBQUdwQixjQUFjLENBQUNJLE9BQWYsQ0FBdUIsdUNBQXZCLENBRFg7O0FBRUEsVUFBSWUsY0FBYyxHQUFHLENBQXJCLEVBQXdCO0FBQ3ZCRCxRQUFBQSxZQUFZLGNBQU9FLE9BQVAsY0FBa0JILFVBQWxCLE9BQVo7QUFDQUQsUUFBQUEsa0JBQWtCLENBQUNLLE9BQW5CLENBQTJCLFVBQUNDLE9BQUQsRUFBVUMsWUFBVixFQUEyQjtBQUNyRCxjQUFJRCxPQUFPLENBQUNFLFdBQVosRUFBeUI7QUFDeEJOLFlBQUFBLFlBQVksSUFBSUksT0FBTyxDQUFDRSxXQUFSLElBQXVCRCxZQUFZLEdBQUcsQ0FBZixLQUFxQkosY0FBckIsR0FBc0MsR0FBdEMsR0FBNEMsRUFBbkUsQ0FBaEI7QUFDQTtBQUNELFNBSkQ7QUFLQTs7QUFDRCxhQUFPRCxZQUFQO0FBQ0EsS0FoQmtCO0FBaUJuQk8sSUFBQUEsYUFBYSxFQUFFLFVBQVNDLEtBQVQsRUFBcUM7QUFBQTs7QUFDbkQsVUFBTUMsS0FBSyxHQUFHRCxLQUFLLENBQUNFLGFBQU4sR0FBc0JDLFFBQXRCLEVBQWQ7QUFBQSxVQUNDekMsU0FBUyxHQUFHdUMsS0FBSyxDQUFDRyxZQUFOLEVBRGI7QUFBQSxVQUVDNUMsY0FBYyxHQUFHeUMsS0FBSyxDQUFDSSxPQUFOLENBQWNMLEtBQUssQ0FBQ0UsYUFBTixHQUFzQkksT0FBdEIsRUFBZCxFQUErQ04sS0FBSyxDQUFDRSxhQUFOLEdBQXNCSyxVQUF0QixFQUEvQyxDQUZsQjtBQUFBLFVBR0M5QyxXQUFXLEdBQUdDLFNBQVMsQ0FBQzhDLGNBQVYsQ0FBeUJoRCxjQUF6QixDQUhmO0FBSUEsYUFBT3dDLEtBQUssQ0FDVlMsa0JBREssR0FFTEMsZUFGSyxDQUVXVixLQUZYLEVBR0xXLElBSEssQ0FHQSxVQUFDQyxZQUFELEVBQXVCO0FBQzVCLFlBQU1DLGdCQUFnQixHQUFHQyxNQUFNLENBQUNDLE1BQVAsT0FBQUQsTUFBTSxHQUFRLEVBQVIsNEJBQWVGLFlBQVksQ0FBQ0ksR0FBYixDQUFpQixVQUFDckQsUUFBRDtBQUFBLHFDQUF1QkEsUUFBUSxDQUFDc0QsSUFBaEMsRUFBdUN0RCxRQUF2QztBQUFBLFNBQWpCLENBQWYsR0FBL0I7QUFDQSxZQUFNdUQsV0FBa0IsR0FBRyxFQUEzQjtBQUNBbEIsUUFBQUEsS0FBSyxDQUFDbUIsVUFBTixHQUFtQnhCLE9BQW5CLENBQTJCLFVBQUN5QixNQUFELEVBQWlCO0FBQzNDLGNBQU1DLFlBQVksR0FBR1IsZ0JBQWdCLENBQUNPLE1BQU0sQ0FBQ0UsZUFBUCxFQUFELENBQXJDLENBRDJDLENBRTNDOztBQUNBLGNBQUlELFlBQVksQ0FBQ0UsYUFBakIsRUFBZ0M7QUFDL0I7QUFDQUYsWUFBQUEsWUFBWSxDQUFDRSxhQUFiLENBQTJCNUIsT0FBM0IsQ0FBbUMsVUFBQ2hDLFFBQUQsRUFBbUI7QUFDckQsa0JBQU02RCxZQUFZLEdBQUdYLGdCQUFnQixDQUFDbEQsUUFBRCxDQUFyQyxDQURxRCxDQUdyRDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxrQkFDRTZELFlBQVksSUFBSUEsWUFBWSxDQUFDQyxJQUFiLENBQWtCQyxPQUFsQixDQUEwQix1Q0FBMUIsSUFBcUUsQ0FBQyxDQUF2RixJQUNBL0QsUUFBUSxDQUFDK0QsT0FBVCxDQUFpQixHQUFqQixJQUF3QixDQUFDLENBRjFCLEVBR0U7QUFDRFIsZ0JBQUFBLFdBQVcsQ0FBQ1MsSUFBWixDQUFpQjtBQUNoQmhFLGtCQUFBQSxRQUFRLEVBQUU2RCxZQUFZLENBQUNDLElBRFA7QUFFaEJ2RCxrQkFBQUEsTUFBTSxFQUFFO0FBRlEsaUJBQWpCO0FBSUEsZUFSRCxNQVFPO0FBQ05nRCxnQkFBQUEsV0FBVyxDQUFDUyxJQUFaLENBQWlCLEtBQUksQ0FBQ3JFLHdCQUFMLENBQThCa0UsWUFBWSxDQUFDQyxJQUEzQyxFQUFpRGpFLGNBQWpELEVBQWlFQyxXQUFqRSxFQUE4RUMsU0FBOUUsQ0FBakI7QUFDQTtBQUNELGFBbEJEO0FBbUJBLFdBckJELE1BcUJPLElBQUkyRCxZQUFZLENBQUNJLElBQWpCLEVBQXVCO0FBQzdCUCxZQUFBQSxXQUFXLENBQUNTLElBQVosQ0FBaUIsS0FBSSxDQUFDckUsd0JBQUwsQ0FBOEIrRCxZQUFZLENBQUNJLElBQTNDLEVBQWlEakUsY0FBakQsRUFBaUVDLFdBQWpFLEVBQThFQyxTQUE5RSxDQUFqQjtBQUNBLFdBRk0sTUFFQTtBQUNOO0FBQ0F3RCxZQUFBQSxXQUFXLENBQUNTLElBQVosQ0FBaUI7QUFDaEJoRSxjQUFBQSxRQUFRLEVBQUUsUUFETTtBQUVoQkksY0FBQUEsSUFBSSxFQUFFLElBRlU7QUFHaEJHLGNBQUFBLE1BQU0sRUFBRTtBQUhRLGFBQWpCO0FBS0E7QUFDRCxTQWxDRDtBQW1DQSxlQUFPZ0QsV0FBUDtBQUNBLE9BMUNLLENBQVA7QUEyQ0EsS0FqRWtCO0FBa0VuQjVELElBQUFBLHdCQUF3QixFQUFFQSx3QkFsRVA7O0FBbUVuQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ3NFLElBQUFBLGVBQWUsRUFBRSxVQUFTQyxPQUFULEVBQXVCN0IsS0FBdkIsRUFBbUQ7QUFBQTs7QUFDbkUsYUFBTyxLQUFLRCxhQUFMLENBQW1CQyxLQUFuQixFQUNMVyxJQURLLENBQ0EsVUFBU21CLFVBQVQsRUFBNEI7QUFDakM7QUFDQSxZQUFNQyxpQkFBaUIsR0FBR0YsT0FBTyxDQUFDaEQsTUFBUixHQUFpQmdELE9BQU8sQ0FBQyxDQUFELENBQVAsQ0FBV2hELE1BQTVCLEdBQXFDLENBQS9EO0FBQ0EsWUFBSW1ELHdCQUF3QixHQUFHLENBQUMsQ0FBaEM7O0FBQ0EsYUFBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHSCxVQUFVLENBQUNqRCxNQUFmLElBQXlCbUQsd0JBQXdCLEdBQUcsQ0FBcEUsRUFBdUVDLENBQUMsRUFBeEUsRUFBNEU7QUFDM0UsY0FBSSxDQUFDSCxVQUFVLENBQUNHLENBQUQsQ0FBVixDQUFjL0QsTUFBbkIsRUFBMkI7QUFDMUI4RCxZQUFBQSx3QkFBd0IsR0FBR0MsQ0FBM0I7QUFDQTtBQUNEOztBQUNELGVBQU9ELHdCQUF3QixHQUFHLENBQTNCLElBQWdDQSx3QkFBd0IsR0FBR0QsaUJBQWlCLEdBQUcsQ0FBL0UsR0FDSkcsT0FBTyxDQUFDN0IsT0FBUixDQUFnQixFQUFoQixDQURJLENBQ2dCO0FBRGhCLFVBRUg4QixlQUFELENBQXlCQyxLQUF6QixDQUErQlAsT0FBL0IsRUFBd0NDLFVBQXhDLENBRkg7QUFHQSxPQWJLLEVBY0xuQixJQWRLLENBY0EsVUFBQzBCLFdBQUQsRUFBc0I7QUFDM0IsWUFBSUEsV0FBVyxDQUFDQyxNQUFoQixFQUF3QjtBQUN2QixjQUFNbEUsYUFBYSxHQUFHaUUsV0FBVyxDQUFDQyxNQUFaLENBQW1CdEIsR0FBbkIsQ0FBdUIsVUFBU3VCLFFBQVQsRUFBd0I7QUFDcEUsbUJBQU9BLFFBQVEsQ0FBQzNDLE9BQWhCO0FBQ0EsV0FGcUIsQ0FBdEI7O0FBR0EsVUFBQSxNQUFJLENBQUN6QixvQkFBTCxDQUEwQkMsYUFBMUI7O0FBQ0EsaUJBQU8sRUFBUCxDQUx1QixDQUtaO0FBQ1gsU0FORCxNQU1PO0FBQ04saUJBQU9pRSxXQUFXLENBQUNHLFVBQVosR0FBeUJILFdBQVcsQ0FBQ0csVUFBckMsR0FBa0QsRUFBekQ7QUFDQTtBQUNELE9BeEJLLENBQVA7QUF5QkEsS0FuR2tCO0FBb0duQkMsSUFBQUEsU0FBUyxFQUFFLFVBQVNaLE9BQVQsRUFBdUI3QixLQUF2QixFQUFtQzBDLFVBQW5DLEVBQTZFO0FBQUE7O0FBQ3ZGLFVBQU1DLGlCQUFpQixHQUFJRCxVQUFELENBQW9CRSxTQUE5QztBQUNBLFVBQU1DLGVBQWUsR0FBRzdDLEtBQUssQ0FBQzhDLFNBQU4sR0FBa0JDLGtCQUFsQixFQUF4QjtBQUNBLFVBQUlDLEtBQVksR0FBRyxFQUFuQjtBQUNBLGFBQU8sS0FBS3BCLGVBQUwsQ0FBcUJDLE9BQXJCLEVBQThCN0IsS0FBOUIsRUFDTFcsSUFESyxDQUNBLFVBQUFzQyxXQUFXLEVBQUk7QUFDcEJELFFBQUFBLEtBQUssR0FBR0MsV0FBVyxJQUFJLEVBQXZCO0FBQ0EsZUFBT2YsT0FBTyxDQUFDZ0IsR0FBUixDQUNORixLQUFLLENBQUNoQyxHQUFOLENBQVUsVUFBQW1DLEtBQUs7QUFBQTs7QUFBQSxpQkFDZFIsaUJBQWlCLENBQUNTLG9CQUFsQixHQUF5Q0MsZ0JBQXpDLENBQ0NyRCxLQUFLLENBQUNzRCxpQkFBTixFQURELEVBRUM7QUFDQ0MsWUFBQUEsSUFBSSxFQUFFSixLQURQO0FBRUNLLFlBQUFBLHdCQUF3QixFQUFFWCxlQUFGLGFBQUVBLGVBQUYsZ0RBQUVBLGVBQWUsQ0FBRVksT0FBbkIsMERBQUUsc0JBQTBCRDtBQUZyRCxXQUZELEVBTUNkLFVBQVUsQ0FBQ2dCLE9BQVgsRUFORCxDQURjO0FBQUEsU0FBZixDQURNLENBQVA7QUFZQSxPQWZLLEVBZ0JML0MsSUFoQkssQ0FnQkEsVUFBQWdELG1CQUFtQixFQUFJO0FBQzVCLFlBQU1DLGNBQWMsR0FBR0QsbUJBQW1CLENBQUNFLE1BQXBCLENBQTJCLFVBQVNDLFNBQVQsRUFBb0JDLGVBQXBCLEVBQXFDQyxLQUFyQyxFQUE0QztBQUM3RixjQUFJRCxlQUFlLENBQUNsRixNQUFoQixHQUF5QixDQUE3QixFQUFnQztBQUMvQmlGLFlBQUFBLFNBQVMsQ0FBQ25DLElBQVYsQ0FBZTtBQUFFc0MsY0FBQUEsUUFBUSxFQUFFRixlQUFaO0FBQTZCRyxjQUFBQSxHQUFHLEVBQUVGLEtBQUssR0FBRztBQUExQyxhQUFmO0FBQ0E7O0FBQ0QsaUJBQU9GLFNBQVA7QUFDQSxTQUxzQixFQUtwQixFQUxvQixDQUF2Qjs7QUFNQSxZQUFJRixjQUFjLENBQUMvRSxNQUFmLEdBQXdCLENBQTVCLEVBQStCO0FBQzlCLGNBQU1zRixZQUFZLEdBQUdQLGNBQWMsQ0FBQzVDLEdBQWYsQ0FBbUIsVUFBQ29ELE1BQUQ7QUFBQSxtQkFBaUIsTUFBSSxDQUFDL0UsbUJBQUwsQ0FBeUIrRSxNQUFNLENBQUNILFFBQWhDLEVBQTBDRyxNQUFNLENBQUNGLEdBQWpELENBQWpCO0FBQUEsV0FBbkIsQ0FBckI7O0FBQ0EsVUFBQSxNQUFJLENBQUMvRixvQkFBTCxDQUEwQmdHLFlBQTFCOztBQUNBLGlCQUFPLEVBQVA7QUFDQTs7QUFDRCxlQUFPbkIsS0FBUDtBQUNBLE9BN0JLLEVBOEJMckMsSUE5QkssQ0E4QkEsVUFBQTBELGNBQWMsRUFBSTtBQUFBOztBQUN2QixlQUFPQSxjQUFjLENBQUN4RixNQUFmLEdBQXdCLENBQXhCLEdBQ0o4RCxpQkFBaUIsQ0FBQzJCLHVCQUFsQixDQUNBdEUsS0FBSyxDQUFDRSxhQUFOLEVBREEsRUFFQW1FLGNBRkEsRUFHQXhCLGVBSEEsYUFHQUEsZUFIQSxpREFHQUEsZUFBZSxDQUFFWSxPQUhqQiwyREFHQSx1QkFBMEJjLFdBSDFCLEVBSUEsSUFKQSxFQUtDN0IsVUFBRCxDQUFvQjhCLFFBQXBCLENBQTZCQyxjQUw3QixDQURJLEdBUUpDLFNBUkg7QUFTQSxPQXhDSyxFQXlDTEMsS0F6Q0ssQ0F5Q0MsVUFBQUMsTUFBTSxFQUFJO0FBQ2hCQyxRQUFBQSxHQUFHLENBQUM3RixLQUFKLENBQVUsMEJBQVYsRUFBc0M0RixNQUF0QztBQUNBLE9BM0NLLENBQVA7QUE0Q0E7QUFwSmtCLEdBQXBCO1NBdUpleEYsVyIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQ29yZVBhc3RlSGVscGVyIGZyb20gXCJzYXAvdWkvY29yZS91dGlsL1Bhc3RlSGVscGVyXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IHsgQ29yZUV4IH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuXG5leHBvcnQgdHlwZSBjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSA9IHtcblx0bWVzc2FnZVRleHQ/OiBzdHJpbmc7XG5cdG1lc3NhZ2VUYXJnZXQ/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBnZXRJbmZvRm9yRW50aXR5UHJvcGVydHkgPSBmdW5jdGlvbihwcm9wZXJ0eVBhdGg6IGFueSwgcm93QmluZGluZ1BhdGg6IGFueSwgbWV0YUNvbnRleHQ6IGFueSwgbWV0YU1vZGVsOiBhbnkpOiBhbnkge1xuXHRjb25zdCBwcm9wZXJ0eSA9IG1ldGFDb250ZXh0LmdldFByb3BlcnR5KHByb3BlcnR5UGF0aCksXG5cdFx0Zm9ybWF0T3B0aW9ucyA9IHsgcGFyc2VLZWVwc0VtcHR5U3RyaW5nOiB0cnVlIH0sXG5cdFx0dHlwZSA9IG1ldGFNb2RlbC5nZXRVSTVUeXBlKGAke3Jvd0JpbmRpbmdQYXRofS8ke3Byb3BlcnR5UGF0aH1gLCBmb3JtYXRPcHRpb25zKSxcblx0XHRpc0lnbm9yZWQgPSAhcHJvcGVydHkgfHwgbWV0YUNvbnRleHQuZ2V0UHJvcGVydHkocHJvcGVydHlQYXRoICsgXCJAT3JnLk9EYXRhLkNvcmUuVjEuQ29tcHV0ZWRcIik7XG5cdHJldHVybiB7XG5cdFx0cHJvcGVydHk6IHByb3BlcnR5UGF0aCxcblx0XHRpZ25vcmU6IGlzSWdub3JlZCxcblx0XHR0eXBlOiB0eXBlXG5cdH07XG59O1xuXG5jb25zdCBkaXNwbGF5RXJyb3JNZXNzYWdlcyA9IGZ1bmN0aW9uKGVycm9yTWVzc2FnZXM6IHN0cmluZ1tdKTogdm9pZCB7XG5cdGNvbnN0IG1lc3NhZ2VEZXRhaWxzID0gWy4uLmVycm9yTWVzc2FnZXNdO1xuXHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IChDb3JlIGFzIENvcmVFeCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIiksXG5cdFx0ZXJyb3JDb3JyZWN0aW9uTWVzc2FnZSA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1BBU1RFX0hFTFBFUl9TQVBGRV9QQVNURV9FUlJPUl9DT1JSRUNUSU9OX01FU1NBR0VcIiksXG5cdFx0bm90ZU1lc3NhZ2UgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19QQVNURV9IRUxQRVJfU0FQRkVfUEFTVEVfRVJST1JfQ09SUkVDVElPTl9OT1RFXCIpO1xuXHRsZXQgcGFzdGVFcnJvck1lc3NhZ2U7XG5cblx0aWYgKG1lc3NhZ2VEZXRhaWxzLmxlbmd0aCA+IDEpIHtcblx0XHRwYXN0ZUVycm9yTWVzc2FnZSA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1BBU1RFX0hFTFBFUl9TQVBGRV9QQVNURV9FUlJPUl9NRVNTQUdFX1BMVVJBTFwiLCBbbWVzc2FnZURldGFpbHMubGVuZ3RoXSk7XG5cdH0gZWxzZSB7XG5cdFx0cGFzdGVFcnJvck1lc3NhZ2UgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19QQVNURV9IRUxQRVJfU0FQRkVfUEFTVEVfRVJST1JfTUVTU0FHRV9TSU5HVUxBUlwiKTtcblx0fVxuXHRtZXNzYWdlRGV0YWlscy51bnNoaWZ0KFwiXCIpOyAvLyBUbyBzaG93IHNwYWNlIGJldHdlZW4gdGhlIHNob3J0IHRleHQgYW5kIHRoZSBsaXN0IG9mIGVycm9yc1xuXHRtZXNzYWdlRGV0YWlscy51bnNoaWZ0KG5vdGVNZXNzYWdlKTtcblx0bWVzc2FnZURldGFpbHMudW5zaGlmdChlcnJvckNvcnJlY3Rpb25NZXNzYWdlKTtcblx0TWVzc2FnZUJveC5lcnJvcihwYXN0ZUVycm9yTWVzc2FnZSwge1xuXHRcdHRpdGxlOiByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19DT01NT05fU0FQRkVfRVJST1JfTUVTU0FHRVNfUEFHRV9USVRMRV9FUlJPUlwiKSxcblx0XHRkZXRhaWxzOiBtZXNzYWdlRGV0YWlscy5qb2luKFwiPGJyPlwiKVxuXHR9KTtcbn07XG5cbmNvbnN0IFBhc3RlSGVscGVyID0ge1xuXHRkaXNwbGF5RXJyb3JNZXNzYWdlczogZGlzcGxheUVycm9yTWVzc2FnZXMsXG5cdGZvcm1hdEN1c3RvbU1lc3NhZ2U6IGZ1bmN0aW9uKHZhbGlkYXRpb25NZXNzYWdlczogY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2VbXSwgaVJvd051bWJlcjogbnVtYmVyKTogc3RyaW5nIHtcblx0XHRsZXQgZXJyb3JNZXNzYWdlID0gXCJcIjtcblx0XHRjb25zdCBudW1iZXJNZXNzYWdlcyA9IHZhbGlkYXRpb25NZXNzYWdlcy5sZW5ndGg7XG5cdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpLFxuXHRcdFx0aTE4blJvdyA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJUX01FU1NBR0VfR1JPVVBfREVTQ1JJUFRJT05fVEFCTEVfUk9XXCIpO1xuXHRcdGlmIChudW1iZXJNZXNzYWdlcyA+IDApIHtcblx0XHRcdGVycm9yTWVzc2FnZSArPSBgJHtpMThuUm93fSAke2lSb3dOdW1iZXJ9OiBgO1xuXHRcdFx0dmFsaWRhdGlvbk1lc3NhZ2VzLmZvckVhY2goKG1lc3NhZ2UsIGluZGV4TWVzc2FnZSkgPT4ge1xuXHRcdFx0XHRpZiAobWVzc2FnZS5tZXNzYWdlVGV4dCkge1xuXHRcdFx0XHRcdGVycm9yTWVzc2FnZSArPSBtZXNzYWdlLm1lc3NhZ2VUZXh0ICsgKGluZGV4TWVzc2FnZSArIDEgIT09IG51bWJlck1lc3NhZ2VzID8gXCIgXCIgOiBcIlwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBlcnJvck1lc3NhZ2U7XG5cdH0sXG5cdGdldENvbHVtbkluZm86IGZ1bmN0aW9uKHRhYmxlOiBhbnkpOiBQcm9taXNlPGFueVtdPiB7XG5cdFx0Y29uc3QgbW9kZWwgPSB0YWJsZS5nZXRSb3dCaW5kaW5nKCkuZ2V0TW9kZWwoKSxcblx0XHRcdG1ldGFNb2RlbCA9IG1vZGVsLmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0cm93QmluZGluZ1BhdGggPSBtb2RlbC5yZXNvbHZlKHRhYmxlLmdldFJvd0JpbmRpbmcoKS5nZXRQYXRoKCksIHRhYmxlLmdldFJvd0JpbmRpbmcoKS5nZXRDb250ZXh0KCkpLFxuXHRcdFx0bWV0YUNvbnRleHQgPSBtZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQocm93QmluZGluZ1BhdGgpO1xuXHRcdHJldHVybiB0YWJsZVxuXHRcdFx0LmdldENvbnRyb2xEZWxlZ2F0ZSgpXG5cdFx0XHQuZmV0Y2hQcm9wZXJ0aWVzKHRhYmxlKVxuXHRcdFx0LnRoZW4oKHByb3BlcnR5SW5mbzogYW55KSA9PiB7XG5cdFx0XHRcdGNvbnN0IFByb3BlcnR5SW5mb0RpY3QgPSBPYmplY3QuYXNzaWduKHt9LCAuLi5wcm9wZXJ0eUluZm8ubWFwKChwcm9wZXJ0eTogYW55KSA9PiAoeyBbcHJvcGVydHkubmFtZV06IHByb3BlcnR5IH0pKSk7XG5cdFx0XHRcdGNvbnN0IGNvbHVtbkluZm9zOiBhbnlbXSA9IFtdO1xuXHRcdFx0XHR0YWJsZS5nZXRDb2x1bW5zKCkuZm9yRWFjaCgoY29sdW1uOiBhbnkpID0+IHtcblx0XHRcdFx0XHRjb25zdCBpbmZvUHJvcGVydHkgPSBQcm9wZXJ0eUluZm9EaWN0W2NvbHVtbi5nZXREYXRhUHJvcGVydHkoKV07XG5cdFx0XHRcdFx0Ly8gQ2hlY2sgaWYgaXQncyBhIGNvbXBsZXggcHJvcGVydHkgKHByb3BlcnR5IGFzc29jaWF0ZWQgdG8gbXVsdGlwbGUgc2ltcGxlIHByb3BlcnRpZXMpXG5cdFx0XHRcdFx0aWYgKGluZm9Qcm9wZXJ0eS5wcm9wZXJ0eUluZm9zKSB7XG5cdFx0XHRcdFx0XHQvLyBHZXQgZGF0YSBmcm9tIHNpbXBsZSBwcm9wZXJ0eVxuXHRcdFx0XHRcdFx0aW5mb1Byb3BlcnR5LnByb3BlcnR5SW5mb3MuZm9yRWFjaCgocHJvcGVydHk6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBkYXRhUHJvcGVydHkgPSBQcm9wZXJ0eUluZm9EaWN0W3Byb3BlcnR5XTtcblxuXHRcdFx0XHRcdFx0XHQvLyBDaGVjayBpZiB0aGVyZSBpcyBhIHNpbXBsZSBwcm9wZXJ0eSBhc3NvY2lhdGVkIHRvIGEgUmF0aW5nIG9yIFByb2dyZXNzIENvbXBsZXhQcm9wZXJ0eSAtLT4gaWdub3JlXG5cdFx0XHRcdFx0XHRcdC8vIE9yIGNoZWNrIGEgbmF2aWdhdGlvbiBwcm9wZXJ0eSB3aXRoaW4gdGhlIGN1cnJlbnQgQ29tcGxleCBwcm9wZXJ0eSAtLT4gaWdub3JlXG5cdFx0XHRcdFx0XHRcdC8vIEEgZmFrZSBwcm9wZXJ0eSB3YXMgY3JlYXRlZCBpbnRvIHRoZSBwcm9wZXJ0eUluZm9zIHRvIGluY2x1ZGUgdGhlIFRhcmdldCBWYWx1ZVxuXHRcdFx0XHRcdFx0XHQvLyBmcm9tIHRoZSBEYXRhUG9pbnQgKHBhdGggaW5jbHVkZXMgdGhlIEBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnQgYW5ub3RhdGlvbilcblx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdChkYXRhUHJvcGVydHkgJiYgZGF0YVByb3BlcnR5LnBhdGguaW5kZXhPZihcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRcIikgPiAtMSkgfHxcblx0XHRcdFx0XHRcdFx0XHRwcm9wZXJ0eS5pbmRleE9mKFwiL1wiKSA+IC0xXG5cdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbHVtbkluZm9zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0cHJvcGVydHk6IGRhdGFQcm9wZXJ0eS5wYXRoLFxuXHRcdFx0XHRcdFx0XHRcdFx0aWdub3JlOiB0cnVlXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29sdW1uSW5mb3MucHVzaCh0aGlzLmdldEluZm9Gb3JFbnRpdHlQcm9wZXJ0eShkYXRhUHJvcGVydHkucGF0aCwgcm93QmluZGluZ1BhdGgsIG1ldGFDb250ZXh0LCBtZXRhTW9kZWwpKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChpbmZvUHJvcGVydHkucGF0aCkge1xuXHRcdFx0XHRcdFx0Y29sdW1uSW5mb3MucHVzaCh0aGlzLmdldEluZm9Gb3JFbnRpdHlQcm9wZXJ0eShpbmZvUHJvcGVydHkucGF0aCwgcm93QmluZGluZ1BhdGgsIG1ldGFDb250ZXh0LCBtZXRhTW9kZWwpKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gRW1wdHkgY29sdW1uIC0tPiBpZ25vcmVcblx0XHRcdFx0XHRcdGNvbHVtbkluZm9zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eTogXCJ1bnVzZWRcIixcblx0XHRcdFx0XHRcdFx0dHlwZTogbnVsbCxcblx0XHRcdFx0XHRcdFx0aWdub3JlOiB0cnVlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gY29sdW1uSW5mb3M7XG5cdFx0XHR9KTtcblx0fSxcblx0Z2V0SW5mb0ZvckVudGl0eVByb3BlcnR5OiBnZXRJbmZvRm9yRW50aXR5UHJvcGVydHksXG5cdC8qKlxuXHQgKlxuXHQgKiBAcGFyYW0gcmF3RGF0YVxuXHQgKiBAcGFyYW0gdGFibGVcblx0ICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cblx0ICovXG5cdHBhcnNlUGFzdGVkRGF0YTogZnVuY3Rpb24ocmF3RGF0YTogYW55LCB0YWJsZTogYW55KTogUHJvbWlzZTxhbnlbXT4ge1xuXHRcdHJldHVybiB0aGlzLmdldENvbHVtbkluZm8odGFibGUpXG5cdFx0XHQudGhlbihmdW5jdGlvbihwYXN0ZUluZm9zOiBhbnlbXSkge1xuXHRcdFx0XHQvLyBDaGVjayBpZiB3ZSBoYXZlIGRhdGEgZm9yIGF0IGxlYXN0IHRoZSBmaXJzdCBlZGl0YWJsZSBjb2x1bW5cblx0XHRcdFx0Y29uc3QgcGFzdGVkQ29sdW1uQ291bnQgPSByYXdEYXRhLmxlbmd0aCA/IHJhd0RhdGFbMF0ubGVuZ3RoIDogMDtcblx0XHRcdFx0bGV0IGZpcnN0RWRpdGFibGVDb2x1bW5JbmRleCA9IC0xO1xuXHRcdFx0XHRmb3IgKGxldCBJID0gMDsgSSA8IHBhc3RlSW5mb3MubGVuZ3RoICYmIGZpcnN0RWRpdGFibGVDb2x1bW5JbmRleCA8IDA7IEkrKykge1xuXHRcdFx0XHRcdGlmICghcGFzdGVJbmZvc1tJXS5pZ25vcmUpIHtcblx0XHRcdFx0XHRcdGZpcnN0RWRpdGFibGVDb2x1bW5JbmRleCA9IEk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPCAwIHx8IGZpcnN0RWRpdGFibGVDb2x1bW5JbmRleCA+IHBhc3RlZENvbHVtbkNvdW50IC0gMVxuXHRcdFx0XHRcdD8gUHJvbWlzZS5yZXNvbHZlKHt9KSAvLyBXZSBkb24ndCBoYXZlIGRhdGEgZm9yIGFuIGVkaXRhYmxlIGNvbHVtbiAtLT4gcmV0dXJuIGVtcHR5IHBhcnNlZCBkYXRhXG5cdFx0XHRcdFx0OiAoQ29yZVBhc3RlSGVscGVyIGFzIGFueSkucGFyc2UocmF3RGF0YSwgcGFzdGVJbmZvcyk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKHBhcnNlUmVzdWx0OiBhbnkpID0+IHtcblx0XHRcdFx0aWYgKHBhcnNlUmVzdWx0LmVycm9ycykge1xuXHRcdFx0XHRcdGNvbnN0IGVycm9yTWVzc2FnZXMgPSBwYXJzZVJlc3VsdC5lcnJvcnMubWFwKGZ1bmN0aW9uKG9FbGVtZW50OiBhbnkpIHtcblx0XHRcdFx0XHRcdHJldHVybiBvRWxlbWVudC5tZXNzYWdlO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHRoaXMuZGlzcGxheUVycm9yTWVzc2FnZXMoZXJyb3JNZXNzYWdlcyk7XG5cdFx0XHRcdFx0cmV0dXJuIFtdOyAvLyBFcnJvcnMgLS0+IHJldHVybiBub3RoaW5nXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcnNlUmVzdWx0LnBhcnNlZERhdGEgPyBwYXJzZVJlc3VsdC5wYXJzZWREYXRhIDogW107XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHR9LFxuXHRwYXN0ZURhdGE6IGZ1bmN0aW9uKHJhd0RhdGE6IGFueSwgdGFibGU6IGFueSwgY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpOiBQcm9taXNlPGFueT4ge1xuXHRcdGNvbnN0IG9JbnRlcm5hbEVkaXRGbG93ID0gKGNvbnRyb2xsZXIgYXMgYW55KS5fZWRpdEZsb3c7XG5cdFx0Y29uc3QgdGFibGVEZWZpbml0aW9uID0gdGFibGUuZ2V0UGFyZW50KCkuZ2V0VGFibGVEZWZpbml0aW9uKCk7XG5cdFx0bGV0IGFEYXRhOiBhbnlbXSA9IFtdO1xuXHRcdHJldHVybiB0aGlzLnBhcnNlUGFzdGVkRGF0YShyYXdEYXRhLCB0YWJsZSlcblx0XHRcdC50aGVuKGFQYXJzZWREYXRhID0+IHtcblx0XHRcdFx0YURhdGEgPSBhUGFyc2VkRGF0YSB8fCBbXTtcblx0XHRcdFx0cmV0dXJuIFByb21pc2UuYWxsKFxuXHRcdFx0XHRcdGFEYXRhLm1hcChtRGF0YSA9PlxuXHRcdFx0XHRcdFx0b0ludGVybmFsRWRpdEZsb3cuZ2V0VHJhbnNhY3Rpb25IZWxwZXIoKS52YWxpZGF0ZURvY3VtZW50KFxuXHRcdFx0XHRcdFx0XHR0YWJsZS5nZXRCaW5kaW5nQ29udGV4dCgpLFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0ZGF0YTogbURhdGEsXG5cdFx0XHRcdFx0XHRcdFx0Y3VzdG9tVmFsaWRhdGlvbkZ1bmN0aW9uOiB0YWJsZURlZmluaXRpb24/LmNvbnRyb2w/LmN1c3RvbVZhbGlkYXRpb25GdW5jdGlvblxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRjb250cm9sbGVyLmdldFZpZXcoKVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbihhVmFsaWRhdGlvbk1lc3NhZ2VzID0+IHtcblx0XHRcdFx0Y29uc3QgYUVycm9yTWVzc2FnZXMgPSBhVmFsaWRhdGlvbk1lc3NhZ2VzLnJlZHVjZShmdW5jdGlvbihhTWVzc2FnZXMsIGFDdXN0b21NZXNzYWdlcywgaW5kZXgpIHtcblx0XHRcdFx0XHRpZiAoYUN1c3RvbU1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdGFNZXNzYWdlcy5wdXNoKHsgbWVzc2FnZXM6IGFDdXN0b21NZXNzYWdlcywgcm93OiBpbmRleCArIDEgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBhTWVzc2FnZXM7XG5cdFx0XHRcdH0sIFtdKTtcblx0XHRcdFx0aWYgKGFFcnJvck1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRjb25zdCBhUm93TWVzc2FnZXMgPSBhRXJyb3JNZXNzYWdlcy5tYXAoKG1FcnJvcjogYW55KSA9PiB0aGlzLmZvcm1hdEN1c3RvbU1lc3NhZ2UobUVycm9yLm1lc3NhZ2VzLCBtRXJyb3Iucm93KSk7XG5cdFx0XHRcdFx0dGhpcy5kaXNwbGF5RXJyb3JNZXNzYWdlcyhhUm93TWVzc2FnZXMpO1xuXHRcdFx0XHRcdHJldHVybiBbXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYURhdGE7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oYVZhbGlkYXRlZERhdGEgPT4ge1xuXHRcdFx0XHRyZXR1cm4gYVZhbGlkYXRlZERhdGEubGVuZ3RoID4gMFxuXHRcdFx0XHRcdD8gb0ludGVybmFsRWRpdEZsb3cuY3JlYXRlTXVsdGlwbGVEb2N1bWVudHMoXG5cdFx0XHRcdFx0XHRcdHRhYmxlLmdldFJvd0JpbmRpbmcoKSxcblx0XHRcdFx0XHRcdFx0YVZhbGlkYXRlZERhdGEsXG5cdFx0XHRcdFx0XHRcdHRhYmxlRGVmaW5pdGlvbj8uY29udHJvbD8uY3JlYXRlQXRFbmQsXG5cdFx0XHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0XHRcdChjb250cm9sbGVyIGFzIGFueSkuZWRpdEZsb3cub25CZWZvcmVDcmVhdGVcblx0XHRcdFx0XHQgIClcblx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2gob0Vycm9yID0+IHtcblx0XHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgcGFzdGluZyBkYXRhXCIsIG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgUGFzdGVIZWxwZXI7XG4iXX0=
|
|
206
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlBhc3RlSGVscGVyLnRzIl0sIm5hbWVzIjpbImdldEluZm9Gb3JFbnRpdHlQcm9wZXJ0eSIsInByb3BlcnR5UGF0aCIsInJvd0JpbmRpbmdQYXRoIiwibWV0YUNvbnRleHQiLCJtZXRhTW9kZWwiLCJwcm9wZXJ0eSIsImdldFByb3BlcnR5IiwiZm9ybWF0T3B0aW9ucyIsInBhcnNlS2VlcHNFbXB0eVN0cmluZyIsInR5cGUiLCJnZXRVSTVUeXBlIiwiaXNJZ25vcmVkIiwiaWdub3JlIiwiZGlzcGxheUVycm9yTWVzc2FnZXMiLCJlcnJvck1lc3NhZ2VzIiwibWVzc2FnZURldGFpbHMiLCJyZXNvdXJjZUJ1bmRsZSIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJlcnJvckNvcnJlY3Rpb25NZXNzYWdlIiwiZ2V0VGV4dCIsIm5vdGVNZXNzYWdlIiwicGFzdGVFcnJvck1lc3NhZ2UiLCJsZW5ndGgiLCJ1bnNoaWZ0IiwiTWVzc2FnZUJveCIsImVycm9yIiwidGl0bGUiLCJkZXRhaWxzIiwiam9pbiIsIlBhc3RlSGVscGVyIiwiZm9ybWF0Q3VzdG9tTWVzc2FnZSIsInZhbGlkYXRpb25NZXNzYWdlcyIsImlSb3dOdW1iZXIiLCJlcnJvck1lc3NhZ2UiLCJudW1iZXJNZXNzYWdlcyIsImkxOG5Sb3ciLCJmb3JFYWNoIiwibWVzc2FnZSIsImluZGV4TWVzc2FnZSIsIm1lc3NhZ2VUZXh0IiwiZ2V0Q29sdW1uSW5mbyIsInRhYmxlIiwibW9kZWwiLCJnZXRSb3dCaW5kaW5nIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJyZXNvbHZlIiwiZ2V0UGF0aCIsImdldENvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsImdldENvbnRyb2xEZWxlZ2F0ZSIsImZldGNoUHJvcGVydGllcyIsInRoZW4iLCJwcm9wZXJ0eUluZm8iLCJQcm9wZXJ0eUluZm9EaWN0IiwiT2JqZWN0IiwiYXNzaWduIiwibWFwIiwibmFtZSIsImNvbHVtbkluZm9zIiwiZ2V0Q29sdW1ucyIsImNvbHVtbiIsImluZm9Qcm9wZXJ0eSIsImdldERhdGFQcm9wZXJ0eSIsInByb3BlcnR5SW5mb3MiLCJkYXRhUHJvcGVydHkiLCJwYXRoIiwiaW5kZXhPZiIsInB1c2giLCJwYXJzZVBhc3RlZERhdGEiLCJyYXdEYXRhIiwicGFzdGVJbmZvcyIsInBhc3RlZENvbHVtbkNvdW50IiwiZmlyc3RFZGl0YWJsZUNvbHVtbkluZGV4IiwiSSIsIlByb21pc2UiLCJDb3JlUGFzdGVIZWxwZXIiLCJwYXJzZSIsInBhcnNlUmVzdWx0IiwiZXJyb3JzIiwib0VsZW1lbnQiLCJwYXJzZWREYXRhIiwicGFzdGVEYXRhIiwiY29udHJvbGxlciIsIm9JbnRlcm5hbEVkaXRGbG93IiwiX2VkaXRGbG93IiwidGFibGVEZWZpbml0aW9uIiwiZ2V0UGFyZW50IiwiZ2V0VGFibGVEZWZpbml0aW9uIiwiYURhdGEiLCJhUGFyc2VkRGF0YSIsImFsbCIsIm1EYXRhIiwiZ2V0VHJhbnNhY3Rpb25IZWxwZXIiLCJ2YWxpZGF0ZURvY3VtZW50IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJkYXRhIiwiY3VzdG9tVmFsaWRhdGlvbkZ1bmN0aW9uIiwiY29udHJvbCIsImdldFZpZXciLCJhVmFsaWRhdGlvbk1lc3NhZ2VzIiwiYUVycm9yTWVzc2FnZXMiLCJyZWR1Y2UiLCJhTWVzc2FnZXMiLCJhQ3VzdG9tTWVzc2FnZXMiLCJpbmRleCIsIm1lc3NhZ2VzIiwicm93IiwiYVJvd01lc3NhZ2VzIiwibUVycm9yIiwiYVZhbGlkYXRlZERhdGEiLCJjcmVhdGVNdWx0aXBsZURvY3VtZW50cyIsImNyZWF0ZUF0RW5kIiwiZWRpdEZsb3ciLCJvbkJlZm9yZUNyZWF0ZSIsInVuZGVmaW5lZCIsImNhdGNoIiwib0Vycm9yIiwiTG9nIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVQSxNQUFNQSx3QkFBd0IsR0FBRyxVQUFVQyxZQUFWLEVBQTZCQyxjQUE3QixFQUFrREMsV0FBbEQsRUFBb0VDLFNB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QyxRQUFBQSxHQUFHLENBQUM3RixLQUFKLENBQVUsMEJBQVYsRUFBc0M0RixNQUF0QztBQUNBLE9BM0NLLENBQVA7QUE0Q0E7QUEvSWtCLEdBQXBCO1NBa0pleEYsVyIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBNZXNzYWdlQm94IGZyb20gXCJzYXAvbS9NZXNzYWdlQm94XCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0ICogYXMgQ29yZVBhc3RlSGVscGVyIGZyb20gXCJzYXAvdWkvY29yZS91dGlsL1Bhc3RlSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IENvcmVFeCB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UgPSB7XG5cdG1lc3NhZ2VUZXh0Pzogc3RyaW5nO1xuXHRtZXNzYWdlVGFyZ2V0Pzogc3RyaW5nO1xufTtcblxuY29uc3QgZ2V0SW5mb0ZvckVudGl0eVByb3BlcnR5ID0gZnVuY3Rpb24gKHByb3BlcnR5UGF0aDogYW55LCByb3dCaW5kaW5nUGF0aDogYW55LCBtZXRhQ29udGV4dDogYW55LCBtZXRhTW9kZWw6IGFueSk6IGFueSB7XG5cdGNvbnN0IHByb3BlcnR5ID0gbWV0YUNvbnRleHQuZ2V0UHJvcGVydHkocHJvcGVydHlQYXRoKSxcblx0XHRmb3JtYXRPcHRpb25zID0geyBwYXJzZUtlZXBzRW1wdHlTdHJpbmc6IHRydWUgfSxcblx0XHR0eXBlID0gbWV0YU1vZGVsLmdldFVJNVR5cGUoYCR7cm93QmluZGluZ1BhdGh9LyR7cHJvcGVydHlQYXRofWAsIGZvcm1hdE9wdGlvbnMpLFxuXHRcdGlzSWdub3JlZCA9ICFwcm9wZXJ0eSB8fCBtZXRhQ29udGV4dC5nZXRQcm9wZXJ0eShgJHtwcm9wZXJ0eVBhdGh9QE9yZy5PRGF0YS5Db3JlLlYxLkNvbXB1dGVkYCk7XG5cdHJldHVybiB7XG5cdFx0cHJvcGVydHk6IHByb3BlcnR5UGF0aCxcblx0XHRpZ25vcmU6IGlzSWdub3JlZCxcblx0XHR0eXBlOiB0eXBlXG5cdH07XG59O1xuXG5jb25zdCBkaXNwbGF5RXJyb3JNZXNzYWdlcyA9IGZ1bmN0aW9uIChlcnJvck1lc3NhZ2VzOiBzdHJpbmdbXSk6IHZvaWQge1xuXHRjb25zdCBtZXNzYWdlRGV0YWlscyA9IFsuLi5lcnJvck1lc3NhZ2VzXTtcblx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpLFxuXHRcdGVycm9yQ29ycmVjdGlvbk1lc3NhZ2UgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19QQVNURV9IRUxQRVJfU0FQRkVfUEFTVEVfRVJST1JfQ09SUkVDVElPTl9NRVNTQUdFXCIpLFxuXHRcdG5vdGVNZXNzYWdlID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfUEFTVEVfSEVMUEVSX1NBUEZFX1BBU1RFX0VSUk9SX0NPUlJFQ1RJT05fTk9URVwiKTtcblx0bGV0IHBhc3RlRXJyb3JNZXNzYWdlO1xuXG5cdGlmIChtZXNzYWdlRGV0YWlscy5sZW5ndGggPiAxKSB7XG5cdFx0cGFzdGVFcnJvck1lc3NhZ2UgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19QQVNURV9IRUxQRVJfU0FQRkVfUEFTVEVfRVJST1JfTUVTU0FHRV9QTFVSQUxcIiwgW21lc3NhZ2VEZXRhaWxzLmxlbmd0aF0pO1xuXHR9IGVsc2Uge1xuXHRcdHBhc3RlRXJyb3JNZXNzYWdlID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfUEFTVEVfSEVMUEVSX1NBUEZFX1BBU1RFX0VSUk9SX01FU1NBR0VfU0lOR1VMQVJcIik7XG5cdH1cblx0bWVzc2FnZURldGFpbHMudW5zaGlmdChcIlwiKTsgLy8gVG8gc2hvdyBzcGFjZSBiZXR3ZWVuIHRoZSBzaG9ydCB0ZXh0IGFuZCB0aGUgbGlzdCBvZiBlcnJvcnNcblx0bWVzc2FnZURldGFpbHMudW5zaGlmdChub3RlTWVzc2FnZSk7XG5cdG1lc3NhZ2VEZXRhaWxzLnVuc2hpZnQoZXJyb3JDb3JyZWN0aW9uTWVzc2FnZSk7XG5cdE1lc3NhZ2VCb3guZXJyb3IocGFzdGVFcnJvck1lc3NhZ2UsIHtcblx0XHR0aXRsZTogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfVElUTEVfRVJST1JcIiksXG5cdFx0ZGV0YWlsczogbWVzc2FnZURldGFpbHMuam9pbihcIjxicj5cIilcblx0fSk7XG59O1xuXG5jb25zdCBQYXN0ZUhlbHBlciA9IHtcblx0ZGlzcGxheUVycm9yTWVzc2FnZXM6IGRpc3BsYXlFcnJvck1lc3NhZ2VzLFxuXHRmb3JtYXRDdXN0b21NZXNzYWdlOiBmdW5jdGlvbiAodmFsaWRhdGlvbk1lc3NhZ2VzOiBjdXN0b21WYWxpZGF0aW9uTWVzc2FnZVtdLCBpUm93TnVtYmVyOiBudW1iZXIpOiBzdHJpbmcge1xuXHRcdGxldCBlcnJvck1lc3NhZ2UgPSBcIlwiO1xuXHRcdGNvbnN0IG51bWJlck1lc3NhZ2VzID0gdmFsaWRhdGlvbk1lc3NhZ2VzLmxlbmd0aDtcblx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IChDb3JlIGFzIENvcmVFeCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIiksXG5cdFx0XHRpMThuUm93ID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIlRfTUVTU0FHRV9HUk9VUF9ERVNDUklQVElPTl9UQUJMRV9ST1dcIik7XG5cdFx0aWYgKG51bWJlck1lc3NhZ2VzID4gMCkge1xuXHRcdFx0ZXJyb3JNZXNzYWdlICs9IGAke2kxOG5Sb3d9ICR7aVJvd051bWJlcn06IGA7XG5cdFx0XHR2YWxpZGF0aW9uTWVzc2FnZXMuZm9yRWFjaCgobWVzc2FnZSwgaW5kZXhNZXNzYWdlKSA9PiB7XG5cdFx0XHRcdGlmIChtZXNzYWdlLm1lc3NhZ2VUZXh0KSB7XG5cdFx0XHRcdFx0ZXJyb3JNZXNzYWdlICs9IG1lc3NhZ2UubWVzc2FnZVRleHQgKyAoaW5kZXhNZXNzYWdlICsgMSAhPT0gbnVtYmVyTWVzc2FnZXMgPyBcIiBcIiA6IFwiXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIGVycm9yTWVzc2FnZTtcblx0fSxcblx0Z2V0Q29sdW1uSW5mbzogZnVuY3Rpb24gKHRhYmxlOiBhbnkpOiBQcm9taXNlPGFueVtdPiB7XG5cdFx0Y29uc3QgbW9kZWwgPSB0YWJsZS5nZXRSb3dCaW5kaW5nKCkuZ2V0TW9kZWwoKSxcblx0XHRcdG1ldGFNb2RlbCA9IG1vZGVsLmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0cm93QmluZGluZ1BhdGggPSBtb2RlbC5yZXNvbHZlKHRhYmxlLmdldFJvd0JpbmRpbmcoKS5nZXRQYXRoKCksIHRhYmxlLmdldFJvd0JpbmRpbmcoKS5nZXRDb250ZXh0KCkpLFxuXHRcdFx0bWV0YUNvbnRleHQgPSBtZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQocm93QmluZGluZ1BhdGgpO1xuXHRcdHJldHVybiB0YWJsZVxuXHRcdFx0LmdldENvbnRyb2xEZWxlZ2F0ZSgpXG5cdFx0XHQuZmV0Y2hQcm9wZXJ0aWVzKHRhYmxlKVxuXHRcdFx0LnRoZW4oKHByb3BlcnR5SW5mbzogYW55KSA9PiB7XG5cdFx0XHRcdGNvbnN0IFByb3BlcnR5SW5mb0RpY3QgPSBPYmplY3QuYXNzaWduKHt9LCAuLi5wcm9wZXJ0eUluZm8ubWFwKChwcm9wZXJ0eTogYW55KSA9PiAoeyBbcHJvcGVydHkubmFtZV06IHByb3BlcnR5IH0pKSk7XG5cdFx0XHRcdGNvbnN0IGNvbHVtbkluZm9zOiBhbnlbXSA9IFtdO1xuXHRcdFx0XHR0YWJsZS5nZXRDb2x1bW5zKCkuZm9yRWFjaCgoY29sdW1uOiBhbnkpID0+IHtcblx0XHRcdFx0XHRjb25zdCBpbmZvUHJvcGVydHkgPSBQcm9wZXJ0eUluZm9EaWN0W2NvbHVtbi5nZXREYXRhUHJvcGVydHkoKV07XG5cdFx0XHRcdFx0Ly8gQ2hlY2sgaWYgaXQncyBhIGNvbXBsZXggcHJvcGVydHkgKHByb3BlcnR5IGFzc29jaWF0ZWQgdG8gbXVsdGlwbGUgc2ltcGxlIHByb3BlcnRpZXMpXG5cdFx0XHRcdFx0aWYgKGluZm9Qcm9wZXJ0eS5wcm9wZXJ0eUluZm9zKSB7XG5cdFx0XHRcdFx0XHQvLyBHZXQgZGF0YSBmcm9tIHNpbXBsZSBwcm9wZXJ0eVxuXHRcdFx0XHRcdFx0aW5mb1Byb3BlcnR5LnByb3BlcnR5SW5mb3MuZm9yRWFjaCgocHJvcGVydHk6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBkYXRhUHJvcGVydHkgPSBQcm9wZXJ0eUluZm9EaWN0W3Byb3BlcnR5XTtcblxuXHRcdFx0XHRcdFx0XHQvLyBDaGVjayBpZiB0aGVyZSBpcyBhIHNpbXBsZSBwcm9wZXJ0eSBhc3NvY2lhdGVkIHRvIGEgUmF0aW5nIG9yIFByb2dyZXNzIENvbXBsZXhQcm9wZXJ0eSAtLT4gaWdub3JlXG5cdFx0XHRcdFx0XHRcdC8vIE9yIGNoZWNrIGEgbmF2aWdhdGlvbiBwcm9wZXJ0eSB3aXRoaW4gdGhlIGN1cnJlbnQgQ29tcGxleCBwcm9wZXJ0eSAtLT4gaWdub3JlXG5cdFx0XHRcdFx0XHRcdC8vIEEgZmFrZSBwcm9wZXJ0eSB3YXMgY3JlYXRlZCBpbnRvIHRoZSBwcm9wZXJ0eUluZm9zIHRvIGluY2x1ZGUgdGhlIFRhcmdldCBWYWx1ZVxuXHRcdFx0XHRcdFx0XHQvLyBmcm9tIHRoZSBEYXRhUG9pbnQgKHBhdGggaW5jbHVkZXMgdGhlIEBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnQgYW5ub3RhdGlvbilcblx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdChkYXRhUHJvcGVydHkgJiYgZGF0YVByb3BlcnR5LnBhdGguaW5kZXhPZihcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRcIikgPiAtMSkgfHxcblx0XHRcdFx0XHRcdFx0XHRwcm9wZXJ0eS5pbmRleE9mKFwiL1wiKSA+IC0xXG5cdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbHVtbkluZm9zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0cHJvcGVydHk6IGRhdGFQcm9wZXJ0eS5wYXRoLFxuXHRcdFx0XHRcdFx0XHRcdFx0aWdub3JlOiB0cnVlXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29sdW1uSW5mb3MucHVzaCh0aGlzLmdldEluZm9Gb3JFbnRpdHlQcm9wZXJ0eShkYXRhUHJvcGVydHkucGF0aCwgcm93QmluZGluZ1BhdGgsIG1ldGFDb250ZXh0LCBtZXRhTW9kZWwpKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChpbmZvUHJvcGVydHkucGF0aCkge1xuXHRcdFx0XHRcdFx0Y29sdW1uSW5mb3MucHVzaCh0aGlzLmdldEluZm9Gb3JFbnRpdHlQcm9wZXJ0eShpbmZvUHJvcGVydHkucGF0aCwgcm93QmluZGluZ1BhdGgsIG1ldGFDb250ZXh0LCBtZXRhTW9kZWwpKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gRW1wdHkgY29sdW1uIC0tPiBpZ25vcmVcblx0XHRcdFx0XHRcdGNvbHVtbkluZm9zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eTogXCJ1bnVzZWRcIixcblx0XHRcdFx0XHRcdFx0dHlwZTogbnVsbCxcblx0XHRcdFx0XHRcdFx0aWdub3JlOiB0cnVlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gY29sdW1uSW5mb3M7XG5cdFx0XHR9KTtcblx0fSxcblx0Z2V0SW5mb0ZvckVudGl0eVByb3BlcnR5OiBnZXRJbmZvRm9yRW50aXR5UHJvcGVydHksXG5cblx0cGFyc2VQYXN0ZWREYXRhOiBmdW5jdGlvbiAocmF3RGF0YTogYW55LCB0YWJsZTogYW55KTogUHJvbWlzZTxhbnlbXT4ge1xuXHRcdHJldHVybiB0aGlzLmdldENvbHVtbkluZm8odGFibGUpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAocGFzdGVJbmZvczogYW55W10pIHtcblx0XHRcdFx0Ly8gQ2hlY2sgaWYgd2UgaGF2ZSBkYXRhIGZvciBhdCBsZWFzdCB0aGUgZmlyc3QgZWRpdGFibGUgY29sdW1uXG5cdFx0XHRcdGNvbnN0IHBhc3RlZENvbHVtbkNvdW50ID0gcmF3RGF0YS5sZW5ndGggPyByYXdEYXRhWzBdLmxlbmd0aCA6IDA7XG5cdFx0XHRcdGxldCBmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPSAtMTtcblx0XHRcdFx0Zm9yIChsZXQgSSA9IDA7IEkgPCBwYXN0ZUluZm9zLmxlbmd0aCAmJiBmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPCAwOyBJKyspIHtcblx0XHRcdFx0XHRpZiAoIXBhc3RlSW5mb3NbSV0uaWdub3JlKSB7XG5cdFx0XHRcdFx0XHRmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPSBJO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmlyc3RFZGl0YWJsZUNvbHVtbkluZGV4IDwgMCB8fCBmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPiBwYXN0ZWRDb2x1bW5Db3VudCAtIDFcblx0XHRcdFx0XHQ/IFByb21pc2UucmVzb2x2ZSh7fSkgLy8gV2UgZG9uJ3QgaGF2ZSBkYXRhIGZvciBhbiBlZGl0YWJsZSBjb2x1bW4gLS0+IHJldHVybiBlbXB0eSBwYXJzZWQgZGF0YVxuXHRcdFx0XHRcdDogKENvcmVQYXN0ZUhlbHBlciBhcyBhbnkpLnBhcnNlKHJhd0RhdGEsIHBhc3RlSW5mb3MpO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKChwYXJzZVJlc3VsdDogYW55KSA9PiB7XG5cdFx0XHRcdGlmIChwYXJzZVJlc3VsdC5lcnJvcnMpIHtcblx0XHRcdFx0XHRjb25zdCBlcnJvck1lc3NhZ2VzID0gcGFyc2VSZXN1bHQuZXJyb3JzLm1hcChmdW5jdGlvbiAob0VsZW1lbnQ6IGFueSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9FbGVtZW50Lm1lc3NhZ2U7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dGhpcy5kaXNwbGF5RXJyb3JNZXNzYWdlcyhlcnJvck1lc3NhZ2VzKTtcblx0XHRcdFx0XHRyZXR1cm4gW107IC8vIEVycm9ycyAtLT4gcmV0dXJuIG5vdGhpbmdcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gcGFyc2VSZXN1bHQucGFyc2VkRGF0YSA/IHBhcnNlUmVzdWx0LnBhcnNlZERhdGEgOiBbXTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdH0sXG5cdHBhc3RlRGF0YTogZnVuY3Rpb24gKHJhd0RhdGE6IGFueSwgdGFibGU6IGFueSwgY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpOiBQcm9taXNlPGFueT4ge1xuXHRcdGNvbnN0IG9JbnRlcm5hbEVkaXRGbG93ID0gKGNvbnRyb2xsZXIgYXMgYW55KS5fZWRpdEZsb3c7XG5cdFx0Y29uc3QgdGFibGVEZWZpbml0aW9uID0gdGFibGUuZ2V0UGFyZW50KCkuZ2V0VGFibGVEZWZpbml0aW9uKCk7XG5cdFx0bGV0IGFEYXRhOiBhbnlbXSA9IFtdO1xuXHRcdHJldHVybiB0aGlzLnBhcnNlUGFzdGVkRGF0YShyYXdEYXRhLCB0YWJsZSlcblx0XHRcdC50aGVuKChhUGFyc2VkRGF0YSkgPT4ge1xuXHRcdFx0XHRhRGF0YSA9IGFQYXJzZWREYXRhIHx8IFtdO1xuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoXG5cdFx0XHRcdFx0YURhdGEubWFwKChtRGF0YSkgPT5cblx0XHRcdFx0XHRcdG9JbnRlcm5hbEVkaXRGbG93LmdldFRyYW5zYWN0aW9uSGVscGVyKCkudmFsaWRhdGVEb2N1bWVudChcblx0XHRcdFx0XHRcdFx0dGFibGUuZ2V0QmluZGluZ0NvbnRleHQoKSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGRhdGE6IG1EYXRhLFxuXHRcdFx0XHRcdFx0XHRcdGN1c3RvbVZhbGlkYXRpb25GdW5jdGlvbjogdGFibGVEZWZpbml0aW9uPy5jb250cm9sPy5jdXN0b21WYWxpZGF0aW9uRnVuY3Rpb25cblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0Y29udHJvbGxlci5nZXRWaWV3KClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKGFWYWxpZGF0aW9uTWVzc2FnZXMpID0+IHtcblx0XHRcdFx0Y29uc3QgYUVycm9yTWVzc2FnZXMgPSBhVmFsaWRhdGlvbk1lc3NhZ2VzLnJlZHVjZShmdW5jdGlvbiAoYU1lc3NhZ2VzLCBhQ3VzdG9tTWVzc2FnZXMsIGluZGV4KSB7XG5cdFx0XHRcdFx0aWYgKGFDdXN0b21NZXNzYWdlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRhTWVzc2FnZXMucHVzaCh7IG1lc3NhZ2VzOiBhQ3VzdG9tTWVzc2FnZXMsIHJvdzogaW5kZXggKyAxIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gYU1lc3NhZ2VzO1xuXHRcdFx0XHR9LCBbXSk7XG5cdFx0XHRcdGlmIChhRXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0Y29uc3QgYVJvd01lc3NhZ2VzID0gYUVycm9yTWVzc2FnZXMubWFwKChtRXJyb3I6IGFueSkgPT4gdGhpcy5mb3JtYXRDdXN0b21NZXNzYWdlKG1FcnJvci5tZXNzYWdlcywgbUVycm9yLnJvdykpO1xuXHRcdFx0XHRcdHRoaXMuZGlzcGxheUVycm9yTWVzc2FnZXMoYVJvd01lc3NhZ2VzKTtcblx0XHRcdFx0XHRyZXR1cm4gW107XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGFEYXRhO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKChhVmFsaWRhdGVkRGF0YSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gYVZhbGlkYXRlZERhdGEubGVuZ3RoID4gMFxuXHRcdFx0XHRcdD8gb0ludGVybmFsRWRpdEZsb3cuY3JlYXRlTXVsdGlwbGVEb2N1bWVudHMoXG5cdFx0XHRcdFx0XHRcdHRhYmxlLmdldFJvd0JpbmRpbmcoKSxcblx0XHRcdFx0XHRcdFx0YVZhbGlkYXRlZERhdGEsXG5cdFx0XHRcdFx0XHRcdHRhYmxlRGVmaW5pdGlvbj8uY29udHJvbD8uY3JlYXRlQXRFbmQsXG5cdFx0XHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0XHRcdChjb250cm9sbGVyIGFzIGFueSkuZWRpdEZsb3cub25CZWZvcmVDcmVhdGVcblx0XHRcdFx0XHQgIClcblx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKG9FcnJvcikgPT4ge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBwYXN0aW5nIGRhdGFcIiwgb0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQYXN0ZUhlbHBlcjtcbiJdfQ==
|