@sapui5/sap.fe.macros 1.141.0 → 1.142.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Breadcrumbs.js +4 -10
- package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
- package/src/sap/fe/macros/Chart.js +34 -23
- package/src/sap/fe/macros/Chart.tsx +25 -11
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +48 -31
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +51 -26
- package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
- package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
- package/src/sap/fe/macros/CommonHelper.js +14 -24
- package/src/sap/fe/macros/CommonHelper.ts +18 -25
- package/src/sap/fe/macros/Field.js +30 -13
- package/src/sap/fe/macros/Field.ts +60 -30
- package/src/sap/fe/macros/FooterContent.js +5 -2
- package/src/sap/fe/macros/FooterContent.tsx +6 -3
- package/src/sap/fe/macros/KPITag.js +1 -1
- package/src/sap/fe/macros/KPITag.tsx +3 -1
- package/src/sap/fe/macros/MacroAPI.js +3 -2
- package/src/sap/fe/macros/MacroAPI.ts +2 -2
- package/src/sap/fe/macros/MessageButton.js +3 -2
- package/src/sap/fe/macros/MessageButton.tsx +5 -2
- package/src/sap/fe/macros/MicroChart.js +10 -6
- package/src/sap/fe/macros/MicroChart.tsx +8 -2
- package/src/sap/fe/macros/MultiValueField.js +22 -36
- package/src/sap/fe/macros/MultiValueField.tsx +34 -66
- package/src/sap/fe/macros/RichTextEditor.js +3 -4
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
- package/src/sap/fe/macros/Status.js +35 -8
- package/src/sap/fe/macros/Status.tsx +23 -2
- package/src/sap/fe/macros/ValueHelp.js +5 -2
- package/src/sap/fe/macros/ValueHelp.tsx +5 -0
- package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
- package/src/sap/fe/macros/chart/Action.js +25 -2
- package/src/sap/fe/macros/chart/Action.ts +13 -0
- package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
- package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/chart/ChartDelegate.js +8 -8
- package/src/sap/fe/macros/chart/ChartDelegate.ts +17 -12
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +54 -11
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +70 -11
- package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
- package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
- package/src/sap/fe/macros/controls/FilterBar.js +39 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
- package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
- package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +37 -9
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +45 -6
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +3 -3
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
- package/src/sap/fe/macros/field/FieldHelper.js +4 -3
- package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
- package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
- package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
- package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
- package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
- package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
- package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +100 -36
- package/src/sap/fe/macros/filter/FilterUtils.ts +127 -39
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +10 -7
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +31 -16
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
- package/src/sap/fe/macros/form/Form.block.js +27 -2
- package/src/sap/fe/macros/form/Form.block.ts +31 -11
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
- package/src/sap/fe/macros/form/FormContainer.block.js +96 -65
- package/src/sap/fe/macros/form/FormContainer.block.ts +104 -65
- package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
- package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
- package/src/sap/fe/macros/insights/InsightsService.js +3 -2
- package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
- package/src/sap/fe/macros/internal/DataPoint.js +7 -8
- package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
- package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
- package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
- package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
- package/src/sap/fe/macros/library.js +3 -3
- package/src/sap/fe/macros/library.ts +2 -0
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
- package/src/sap/fe/macros/messagebundle.properties +7 -5
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
- package/src/sap/fe/macros/messagebundle_da.properties +12 -3
- package/src/sap/fe/macros/messagebundle_de.properties +16 -7
- package/src/sap/fe/macros/messagebundle_el.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
- package/src/sap/fe/macros/messagebundle_et.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
- package/src/sap/fe/macros/messagebundle_id.properties +18 -9
- package/src/sap/fe/macros/messagebundle_it.properties +12 -3
- package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
- package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
- package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
- package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_no.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
- package/src/sap/fe/macros/table/Action.js +15 -2
- package/src/sap/fe/macros/table/Action.ts +11 -1
- package/src/sap/fe/macros/table/ActionGroup.js +15 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
- package/src/sap/fe/macros/table/MdcTableTemplate.js +91 -10
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +131 -10
- package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
- package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
- package/src/sap/fe/macros/table/Table.block.js +70 -29
- package/src/sap/fe/macros/table/Table.block.tsx +65 -12
- package/src/sap/fe/macros/table/TableAPI.js +169 -131
- package/src/sap/fe/macros/table/TableAPI.ts +58 -28
- package/src/sap/fe/macros/table/TableDefinition.js +19 -2
- package/src/sap/fe/macros/table/TableDefinition.ts +17 -1
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +4 -3
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +8 -9
- package/src/sap/fe/macros/table/TableHelper.js +5 -2
- package/src/sap/fe/macros/table/TableHelper.ts +5 -2
- package/src/sap/fe/macros/table/TableRuntime.js +2 -2
- package/src/sap/fe/macros/table/TableRuntime.ts +4 -6
- package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
- package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +67 -26
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +108 -118
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +2 -2
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +6 -5
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +10 -4
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
- package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
- package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EntityType,Property } from "@sap-ux/vocabularies-types";
|
|
1
|
+
import type { EntityType, Property } from "@sap-ux/vocabularies-types";
|
|
2
2
|
import type { PropertyPath } from "@sap-ux/vocabularies-types/Edm";
|
|
3
3
|
import { CommonAnnotationTypes } from "@sap-ux/vocabularies-types/vocabularies/Common";
|
|
4
4
|
import type { SelectionFields } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
@@ -8,13 +8,13 @@ import type AppComponent from "sap/fe/core/AppComponent";
|
|
|
8
8
|
import type { BaseTreeModifier } from "sap/fe/core/CommonUtils";
|
|
9
9
|
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
10
10
|
import ConverterContext from "sap/fe/core/converters/ConverterContext";
|
|
11
|
-
import type { BaseManifestSettings,HiddenDraft } from "sap/fe/core/converters/ManifestSettings";
|
|
11
|
+
import type { BaseManifestSettings, HiddenDraft } from "sap/fe/core/converters/ManifestSettings";
|
|
12
12
|
import ManifestWrapper from "sap/fe/core/converters/ManifestWrapper";
|
|
13
13
|
import * as MetaModelConverter from "sap/fe/core/converters/MetaModelConverter";
|
|
14
14
|
import type { IDiagnostics } from "sap/fe/core/converters/TemplateConverter";
|
|
15
15
|
import type { TableVisualization } from "sap/fe/core/converters/controls/Common/Table";
|
|
16
16
|
import type { PropertyTypeConfig } from "sap/fe/core/converters/controls/Common/table/Columns";
|
|
17
|
-
import type { FilterField,PropertyInfo,PropertyInfoExternal } from "sap/fe/core/converters/controls/ListReport/FilterBar";
|
|
17
|
+
import type { FilterField, PropertyInfo, PropertyInfoExternal } from "sap/fe/core/converters/controls/ListReport/FilterBar";
|
|
18
18
|
import * as FilterBarConverter from "sap/fe/core/converters/controls/ListReport/FilterBar";
|
|
19
19
|
import { getAllCustomAggregates } from "sap/fe/core/helpers/MetaModelFunction";
|
|
20
20
|
import ModelHelper from "sap/fe/core/helpers/ModelHelper";
|
|
@@ -23,6 +23,7 @@ import { getContextRelativeTargetObjectPath } from "sap/fe/core/templating/DataM
|
|
|
23
23
|
import { ODATA_TYPE_MAPPING } from "sap/fe/core/templating/DisplayModeFormatter";
|
|
24
24
|
import CommonHelper from "sap/fe/macros/CommonHelper";
|
|
25
25
|
import DelegateUtil from "sap/fe/macros/DelegateUtil";
|
|
26
|
+
import { type default as FEFilterBar } from "sap/fe/macros/controls/FilterBar";
|
|
26
27
|
import SemanticDateOperators from "sap/fe/macros/filterBar/SemanticDateOperators";
|
|
27
28
|
import type { AnnotationValueListType } from "sap/fe/macros/internal/valuehelp/ValueListHelper";
|
|
28
29
|
import type TableAPI from "sap/fe/macros/table/TableAPI";
|
|
@@ -37,6 +38,7 @@ import type { ConditionObject } from "sap/ui/mdc/condition/Condition";
|
|
|
37
38
|
import Condition from "sap/ui/mdc/condition/Condition";
|
|
38
39
|
import ConditionConverter from "sap/ui/mdc/condition/ConditionConverter";
|
|
39
40
|
import ConditionValidated from "sap/ui/mdc/enums/ConditionValidated";
|
|
41
|
+
import OperatorName from "sap/ui/mdc/enums/OperatorName";
|
|
40
42
|
import type { IFilter } from "sap/ui/mdc/library";
|
|
41
43
|
import TypeMap from "sap/ui/mdc/odata/v4/TypeMap";
|
|
42
44
|
import StateUtil from "sap/ui/mdc/p13n/StateUtil";
|
|
@@ -372,8 +374,8 @@ const oFilterUtils = {
|
|
|
372
374
|
},
|
|
373
375
|
|
|
374
376
|
/**
|
|
375
|
-
* Transforms DateTimeOffset
|
|
376
|
-
* with
|
|
377
|
+
* Transforms DateTimeOffset filters by converting EQ operators to BT operators
|
|
378
|
+
* with precision-based range from .000... to .999... based on property precision.
|
|
377
379
|
* @param aFilters Array of filter objects to transform
|
|
378
380
|
* @param mConditions Filter conditions from the filter bar
|
|
379
381
|
* @param oFilterBar The filter bar instance to access property information
|
|
@@ -401,8 +403,8 @@ const oFilterUtils = {
|
|
|
401
403
|
return;
|
|
402
404
|
}
|
|
403
405
|
|
|
404
|
-
// Create a
|
|
405
|
-
const dateTimeOffsetPaths:
|
|
406
|
+
// Create a map of condition paths to their precision levels
|
|
407
|
+
const dateTimeOffsetPaths: Map<string, number> = new Map<string, number>();
|
|
406
408
|
|
|
407
409
|
Object.keys(mConditions).forEach(function (sConditionPath: string): void {
|
|
408
410
|
if (mConditions[sConditionPath] && mConditions[sConditionPath].length > 0) {
|
|
@@ -420,15 +422,16 @@ const oFilterUtils = {
|
|
|
420
422
|
}
|
|
421
423
|
| undefined;
|
|
422
424
|
|
|
423
|
-
// Check if property is DateTimeOffset
|
|
425
|
+
// Check if property is DateTimeOffset
|
|
424
426
|
const isDateTimeOffset: boolean =
|
|
425
427
|
(propertyInfo?.dataType?.includes("DateTimeOffset") ?? false) ||
|
|
426
428
|
(propertyInfo?.typeConfig?.typeInstance?.getName().includes("DateTimeOffset") ?? false);
|
|
427
429
|
const precision: number | undefined =
|
|
428
430
|
propertyInfo?.constraints?.precision ?? propertyInfo?.typeConfig?.typeInstance?.constraints?.precision;
|
|
429
431
|
|
|
430
|
-
|
|
431
|
-
|
|
432
|
+
// Only process DateTimeOffset properties with defined precision
|
|
433
|
+
if (isDateTimeOffset && precision !== undefined && precision > 0) {
|
|
434
|
+
dateTimeOffsetPaths.set(sConditionPath, precision);
|
|
432
435
|
}
|
|
433
436
|
}
|
|
434
437
|
});
|
|
@@ -440,9 +443,9 @@ const oFilterUtils = {
|
|
|
440
443
|
/**
|
|
441
444
|
* Recursively transforms filters to handle all possible nested aFilters structures.
|
|
442
445
|
* @param aFilters Array of filter objects to transform
|
|
443
|
-
* @param dateTimeOffsetPaths
|
|
446
|
+
* @param dateTimeOffsetPaths Map of condition paths to their precision levels
|
|
444
447
|
*/
|
|
445
|
-
_transformDateTimeOffSetFilterValueRecursively: function (aFilters: Filter[], dateTimeOffsetPaths:
|
|
448
|
+
_transformDateTimeOffSetFilterValueRecursively: function (aFilters: Filter[], dateTimeOffsetPaths: Map<string, number>): void {
|
|
446
449
|
for (let i = 0; i < aFilters.length; i++) {
|
|
447
450
|
const filter: Filter = aFilters[i];
|
|
448
451
|
|
|
@@ -457,6 +460,7 @@ const oFilterUtils = {
|
|
|
457
460
|
const filterPath: string | undefined = filter.getPath();
|
|
458
461
|
const filterOperator: FilterOperator | undefined = filter.getOperator() as FilterOperator | undefined;
|
|
459
462
|
const filterValue1: unknown = filter.getValue1();
|
|
463
|
+
const filterValue2: unknown = filter.getValue2?.();
|
|
460
464
|
|
|
461
465
|
// Handle undefined filterOperator gracefully
|
|
462
466
|
if (filterOperator === undefined) {
|
|
@@ -467,15 +471,24 @@ const oFilterUtils = {
|
|
|
467
471
|
continue; // Skip this filter and continue with next one
|
|
468
472
|
}
|
|
469
473
|
|
|
470
|
-
|
|
474
|
+
// Check for transformation conditions:
|
|
475
|
+
// 1. EQ operator with valid first value
|
|
476
|
+
// 2. Any operator with two values (irrespective of operator type)
|
|
477
|
+
const shouldTransform: boolean =
|
|
478
|
+
(filterOperator === "EQ" && filterValue1 !== undefined && filterValue1 !== null) ||
|
|
479
|
+
(filterValue1 !== undefined && filterValue1 !== null && filterValue2 !== undefined && filterValue2 !== null);
|
|
480
|
+
|
|
481
|
+
if (shouldTransform) {
|
|
471
482
|
// For direct properties - check if the path matches any condition path
|
|
472
483
|
if (filterPath && dateTimeOffsetPaths.has(filterPath)) {
|
|
473
|
-
const
|
|
484
|
+
const precision: number = dateTimeOffsetPaths.get(filterPath)!;
|
|
485
|
+
const transformedFilter: Filter | null = this._transformDateTimeOffSetFilterValue(filter, precision);
|
|
474
486
|
if (transformedFilter) {
|
|
475
487
|
aFilters[i] = transformedFilter;
|
|
476
488
|
}
|
|
477
489
|
}
|
|
478
490
|
} else if (filterOperator === "Any") {
|
|
491
|
+
// Handle navigation property filters
|
|
479
492
|
const nestedFilter = filter.getCondition();
|
|
480
493
|
if (!nestedFilter) {
|
|
481
494
|
continue;
|
|
@@ -501,6 +514,7 @@ const oFilterUtils = {
|
|
|
501
514
|
const subFilterPath: string | undefined = subFilter.getPath();
|
|
502
515
|
const subFilterOperator: FilterOperator | undefined = subFilter.getOperator() as FilterOperator | undefined;
|
|
503
516
|
const subFilterValue1: unknown = subFilter.getValue1();
|
|
517
|
+
const subFilterValue2: unknown = subFilter.getValue2?.();
|
|
504
518
|
|
|
505
519
|
// Handle undefined subFilterOperator gracefully
|
|
506
520
|
if (subFilterOperator === undefined) {
|
|
@@ -511,9 +525,17 @@ const oFilterUtils = {
|
|
|
511
525
|
continue; // Skip this sub-filter
|
|
512
526
|
}
|
|
513
527
|
|
|
514
|
-
|
|
528
|
+
// Check for transformation conditions for sub-filters
|
|
529
|
+
const shouldTransformSubFilter: boolean =
|
|
530
|
+
(subFilterOperator === "EQ" && subFilterValue1 !== undefined && subFilterValue1 !== null) ||
|
|
531
|
+
(subFilterValue1 !== undefined &&
|
|
532
|
+
subFilterValue1 !== null &&
|
|
533
|
+
subFilterValue2 !== undefined &&
|
|
534
|
+
subFilterValue2 !== null);
|
|
535
|
+
|
|
536
|
+
if (shouldTransformSubFilter) {
|
|
515
537
|
// Check if any condition path matches the navigation pattern
|
|
516
|
-
const matchingConditionPath: string | undefined = Array.from(dateTimeOffsetPaths).find(function (
|
|
538
|
+
const matchingConditionPath: string | undefined = Array.from(dateTimeOffsetPaths.keys()).find(function (
|
|
517
539
|
sConditionPath: string
|
|
518
540
|
): boolean {
|
|
519
541
|
// Extract navigation and property parts from condition path
|
|
@@ -529,7 +551,8 @@ const oFilterUtils = {
|
|
|
529
551
|
});
|
|
530
552
|
|
|
531
553
|
if (matchingConditionPath) {
|
|
532
|
-
const
|
|
554
|
+
const precision: number = dateTimeOffsetPaths.get(matchingConditionPath)!;
|
|
555
|
+
const transformedSubFilter: Filter | null = this._transformDateTimeOffSetFilterValue(subFilter, precision);
|
|
533
556
|
if (transformedSubFilter) {
|
|
534
557
|
nestedFilterWithMultipleConditions.aFilters[j] = transformedSubFilter;
|
|
535
558
|
hasTransformation = true;
|
|
@@ -554,11 +577,10 @@ const oFilterUtils = {
|
|
|
554
577
|
// Handle single condition within navigation property
|
|
555
578
|
const nestedFilterPath: string | undefined = nestedFilter.getPath();
|
|
556
579
|
const nestedFilterOperator: FilterOperator | undefined = nestedFilter.getOperator() as FilterOperator | undefined;
|
|
557
|
-
|
|
558
580
|
const nestedFilterValue1: unknown = nestedFilter.getValue1();
|
|
581
|
+
const nestedFilterValue2: unknown = nestedFilter.getValue2?.();
|
|
559
582
|
|
|
560
583
|
// Handle undefined nestedFilterOperator gracefully
|
|
561
|
-
|
|
562
584
|
if (nestedFilterOperator === undefined) {
|
|
563
585
|
Log.warning(
|
|
564
586
|
"FilterUtils._transformDateTimeOffsetFilters: Filter operator is undefined, skipping filter transformation",
|
|
@@ -567,9 +589,17 @@ const oFilterUtils = {
|
|
|
567
589
|
continue; // Skip this nested filter
|
|
568
590
|
}
|
|
569
591
|
|
|
570
|
-
|
|
592
|
+
// Check for transformation conditions for nested filters
|
|
593
|
+
const shouldTransformNested: boolean =
|
|
594
|
+
(nestedFilterOperator === "EQ" && nestedFilterValue1 !== undefined && nestedFilterValue1 !== null) ||
|
|
595
|
+
(nestedFilterValue1 !== undefined &&
|
|
596
|
+
nestedFilterValue1 !== null &&
|
|
597
|
+
nestedFilterValue2 !== undefined &&
|
|
598
|
+
nestedFilterValue2 !== null);
|
|
599
|
+
|
|
600
|
+
if (shouldTransformNested) {
|
|
571
601
|
// Check if any condition path matches the navigation pattern
|
|
572
|
-
const matchingConditionPath: string | undefined = Array.from(dateTimeOffsetPaths).find(function (
|
|
602
|
+
const matchingConditionPath: string | undefined = Array.from(dateTimeOffsetPaths.keys()).find(function (
|
|
573
603
|
sConditionPath: string
|
|
574
604
|
): boolean {
|
|
575
605
|
// Extract navigation and property parts from condition path
|
|
@@ -585,7 +615,11 @@ const oFilterUtils = {
|
|
|
585
615
|
});
|
|
586
616
|
|
|
587
617
|
if (matchingConditionPath) {
|
|
588
|
-
const
|
|
618
|
+
const precision: number = dateTimeOffsetPaths.get(matchingConditionPath)!;
|
|
619
|
+
const transformedNestedFilter: Filter | null = this._transformDateTimeOffSetFilterValue(
|
|
620
|
+
nestedFilter,
|
|
621
|
+
precision
|
|
622
|
+
);
|
|
589
623
|
if (transformedNestedFilter) {
|
|
590
624
|
// Create new Any filter with transformed nested filter
|
|
591
625
|
aFilters[i] = new Filter({
|
|
@@ -603,31 +637,53 @@ const oFilterUtils = {
|
|
|
603
637
|
},
|
|
604
638
|
|
|
605
639
|
/**
|
|
606
|
-
* Transforms a single filter value
|
|
607
|
-
*
|
|
608
|
-
*
|
|
640
|
+
* Transforms a single filter value for DateTimeOffset precision properties.
|
|
641
|
+
* Handles EQ operator by converting to BT range, and adjusts second value for any filter with two values.
|
|
642
|
+
* Precision determines the number of decimal places: precision 3 = .999, precision 7 = .9999999.
|
|
643
|
+
* @param filter The filter to transform
|
|
644
|
+
* @param precision The precision level for the DateTimeOffset property
|
|
645
|
+
* @returns Transformed filter with microsecond precision or null if no transformation needed
|
|
609
646
|
*/
|
|
610
|
-
_transformDateTimeOffSetFilterValue: function (filter: Filter): Filter | null {
|
|
611
|
-
const
|
|
647
|
+
_transformDateTimeOffSetFilterValue: function (filter: Filter, precision: number): Filter | null {
|
|
648
|
+
const operator: string | undefined = filter.getOperator();
|
|
649
|
+
const value1: unknown = filter.getValue1();
|
|
650
|
+
const value2: unknown = filter.getValue2?.();
|
|
651
|
+
|
|
652
|
+
if (operator === undefined) {
|
|
653
|
+
Log.warning(
|
|
654
|
+
"FilterUtils._transformDateTimeOffsetFilters: Filter operator is undefined, skipping filter transformation",
|
|
655
|
+
`filterPath: ${filter.getPath()}, filterValue1: ${value1}`
|
|
656
|
+
);
|
|
657
|
+
return null;
|
|
658
|
+
}
|
|
612
659
|
|
|
613
|
-
|
|
660
|
+
// Only process filters with valid first value
|
|
661
|
+
if (value1 === null || value1 === undefined) {
|
|
614
662
|
return null;
|
|
615
663
|
}
|
|
616
664
|
|
|
617
|
-
|
|
618
|
-
|
|
665
|
+
const originalValue1: string = value1 as string;
|
|
666
|
+
|
|
667
|
+
// Parse datetime: 2025-08-13T15:19:15.0000000+02:00 or Z
|
|
668
|
+
const dateTimeMatch1: RegExpMatchArray | null = originalValue1.match(
|
|
619
669
|
/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(?:\.(\d{0,7}))?([+-]\d{2}:\d{2}|Z)$/
|
|
620
670
|
);
|
|
621
671
|
|
|
622
|
-
if (
|
|
623
|
-
|
|
624
|
-
|
|
672
|
+
if (!dateTimeMatch1) {
|
|
673
|
+
return null;
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
const dateTimePart1: string = dateTimeMatch1[1];
|
|
677
|
+
const timezone1: string = dateTimeMatch1[3];
|
|
678
|
+
|
|
679
|
+
// Generate precision-based decimal suffix (e.g., .999 for precision 3, .9999999 for precision 7)
|
|
680
|
+
const maxDecimalValue: string = "9".repeat(precision);
|
|
625
681
|
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
const
|
|
682
|
+
// Handle EQ operator - convert to BT with full precision range
|
|
683
|
+
if (operator === "EQ") {
|
|
684
|
+
const startValue = `${dateTimePart1}.${"0".repeat(precision)}${timezone1}`;
|
|
685
|
+
const endValue = `${dateTimePart1}.${maxDecimalValue}${timezone1}`;
|
|
629
686
|
|
|
630
|
-
// Return new BT filter with microsecond range
|
|
631
687
|
return new Filter({
|
|
632
688
|
path: filter.getPath(),
|
|
633
689
|
operator: FilterOperator.BT,
|
|
@@ -636,6 +692,32 @@ const oFilterUtils = {
|
|
|
636
692
|
});
|
|
637
693
|
}
|
|
638
694
|
|
|
695
|
+
// For any operator with two values, adjust the second value to max precision
|
|
696
|
+
if (value2 !== null && value2 !== undefined) {
|
|
697
|
+
const originalValue2: string = value2 as string;
|
|
698
|
+
const dateTimeMatch2: RegExpMatchArray | null = originalValue2.match(
|
|
699
|
+
/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(?:\.(\d{0,7}))?([+-]\d{2}:\d{2}|Z)$/
|
|
700
|
+
);
|
|
701
|
+
|
|
702
|
+
if (!dateTimeMatch2) {
|
|
703
|
+
return null;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
const dateTimePart2: string = dateTimeMatch2[1];
|
|
707
|
+
const timezone2: string = dateTimeMatch2[3];
|
|
708
|
+
|
|
709
|
+
// Keep first value unchanged, modify second value to max precision
|
|
710
|
+
const adjustedValue2 = `${dateTimePart2}.${maxDecimalValue}${timezone2}`;
|
|
711
|
+
|
|
712
|
+
return new Filter({
|
|
713
|
+
path: filter.getPath(),
|
|
714
|
+
operator: filter.getOperator(),
|
|
715
|
+
value1: originalValue1, // Keep original first value unchanged
|
|
716
|
+
value2: adjustedValue2 // Transform second value to max precision
|
|
717
|
+
});
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
// No transformation needed for single-value non-EQ operators
|
|
639
721
|
return null;
|
|
640
722
|
},
|
|
641
723
|
hasEditStateFilterRecursively: function (filters: Filter[]): boolean {
|
|
@@ -939,6 +1021,12 @@ const oFilterUtils = {
|
|
|
939
1021
|
return;
|
|
940
1022
|
}
|
|
941
1023
|
|
|
1024
|
+
// We wait for filter bar to be ready.
|
|
1025
|
+
if (oFilterBar.isA<FEFilterBar>("sap.fe.macros.controls.FilterBar")) {
|
|
1026
|
+
// _setFilterValues could be called in case of adaptation filter bar, so we explicitly check for FE filter bar control.
|
|
1027
|
+
await oFilterBar.whenInitialized();
|
|
1028
|
+
}
|
|
1029
|
+
|
|
942
1030
|
// common filter Operators need a value. Do nothing if this value is undefined
|
|
943
1031
|
// BCP: 2270135274
|
|
944
1032
|
if (
|
|
@@ -998,8 +1086,8 @@ const oFilterUtils = {
|
|
|
998
1086
|
// Get the value list info of the property to later check whether the values exist
|
|
999
1087
|
const valueListInfo = await this._getValueListInfo(mainFilterBarControl, propertyPath);
|
|
1000
1088
|
if (values && values.length) {
|
|
1001
|
-
if (sOperator ===
|
|
1002
|
-
// The operator BT
|
|
1089
|
+
if (sOperator === OperatorName.BT || sOperator === OperatorName.NOTBT) {
|
|
1090
|
+
// The operator BT and NOTBT require one condition with both thresholds
|
|
1003
1091
|
filter[sConditionPath] = [Condition.createCondition(sOperator, values, null, null, ConditionValidated.NotValidated)];
|
|
1004
1092
|
} else {
|
|
1005
1093
|
// Regular single and multi value conditions, if there are no values, we do not want any conditions
|
|
@@ -102,7 +102,7 @@ sap.ui.define(["sap/fe/macros/filterBar/DefaultSemanticDateOperators", "sap/ui/c
|
|
|
102
102
|
filterOperator,
|
|
103
103
|
group: {
|
|
104
104
|
id: 3,
|
|
105
|
-
text: resourceBundle.getText(`M_EXTENDED_OPERATOR_GRP_TEXT
|
|
105
|
+
text: resourceBundle.getText(`M_EXTENDED_OPERATOR_GRP_TEXT`)
|
|
106
106
|
},
|
|
107
107
|
calcRange: function () {
|
|
108
108
|
const [fromPick, toPick] = operatorsToExtend[primitiveOperator].fnRanges();
|
|
@@ -217,4 +217,4 @@ sap.ui.define(["sap/fe/macros/filterBar/DefaultSemanticDateOperators", "sap/ui/c
|
|
|
217
217
|
};
|
|
218
218
|
return ExtendedSemanticDateOperators;
|
|
219
219
|
}, false);
|
|
220
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcGVyYXRvcnNUb0V4dGVuZCIsImdldEZpeGVkRGF0ZVNpbmdsZVZhbHVlT3BlcmF0aW9ucyIsInNpbmdsZVZhbHVlRGF0ZU9wZXJhdG9yTmFtZXMiLCJPYmplY3QiLCJrZXlzIiwiRlJPTV9PUCIsIlRPX09QIiwiZXh0ZW5kZWRGcm9tT3BlcmF0b3JzIiwicmVkdWNlIiwib3BlcmF0aW9ucyIsInNpbmdsZURhdGVPcGVyYXRvcktleSIsImtleSIsImNhdGVnb3J5IiwiRFlOQU1JQ19EQVRFX0NBVEVHT1JZIiwicHJpbWl0aXZlT3BlcmF0b3IiLCJleHRlbmRlZFRvT3BlcmF0b3JzIiwiZXh0ZW5kZWRPcGVyYXRvcnMiLCJleHRlbmRlZE9wZXJhdG9yTmFtZXMiLCJpc0Zyb21FeHRlbmRlZE9wZXJhdG9yIiwib3BlcmF0b3JOYW1lIiwiaW5jbHVkZXMiLCJpc1RvRXh0ZW5kZWRPcGVyYXRvciIsImdldEV4dGVuZGVkT3BlcmF0b3IiLCJyZXNvdXJjZUJ1bmRsZSIsImZpbHRlck9wZXJhdG9yIiwiRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJnZXRGaWx0ZXJPcGVyYXRvciIsInRva2VuVGV4dEtleSIsImNyZWF0ZVJhbmdlT3BlcmF0b3IiLCJuYW1lIiwibG9uZ1RleHQiLCJnZXRUZXh0IiwidG9rZW5UZXh0IiwidmFsdWVUeXBlcyIsIk9wZXJhdG9yVmFsdWVUeXBlIiwiU3RhdGljIiwiZ3JvdXAiLCJpZCIsInRleHQiLCJjYWxjUmFuZ2UiLCJmcm9tUGljayIsInRvUGljayIsImZuUmFuZ2VzIiwiY29uZmlnIiwiUmFuZ2VPcGVyYXRvciIsImdldE9wZXJhdG9yc0luZm8iLCJnZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiZ2V0Q29ycmVzcG9uZGluZ1NpbmdsZURhdGVPcGVyYXRvciIsImlzRXh0ZW5kZWRPcGVyYXRvciIsIk1vZGVsT3BlcmF0b3IiLCJFUSIsIkdFIiwiTEUiLCJhZGRFeHRlbmRlZEZpbHRlck9wZXJhdG9ycyIsIm9wZXJhdG9yTmFtZXMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJvcGVyYXRvcnMiLCJGaWx0ZXJPcGVyYXRvclV0aWwiLCJnZXRPcGVyYXRvciIsIm9wZXJhdG9yIiwicHVzaCIsImFkZE9wZXJhdG9ycyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCB7IERZTkFNSUNfREFURV9DQVRFR09SWSwgZ2V0Rml4ZWREYXRlU2luZ2xlVmFsdWVPcGVyYXRpb25zIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0RlZmF1bHRTZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIFVuaXZlcnNhbERhdGUgZnJvbSBcInNhcC91aS9jb3JlL2RhdGUvVW5pdmVyc2FsRGF0ZVwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yVXRpbCBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vRmlsdGVyT3BlcmF0b3JVdGlsXCI7XG5pbXBvcnQgUmFuZ2VPcGVyYXRvciwgeyB0eXBlIENvbmZpZ3VyYXRpb24gfSBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vUmFuZ2VPcGVyYXRvclwiO1xuaW1wb3J0IE9wZXJhdG9yVmFsdWVUeXBlIGZyb20gXCJzYXAvdWkvbWRjL2VudW1zL09wZXJhdG9yVmFsdWVUeXBlXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgRmlsdGVyT3BlcmF0b3IgfSBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIE1vZGVsT3BlcmF0b3IgfSBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5cbi8qKlxuICogU2luZ2xlIHZhbHVlIGRhdGUgb3BlcmF0b3JzIHdpdGggcmFuZ2VzLlxuICogV2Ugc2hhbGwgdXNlIHRoZXNlIHNpbmdsZSB2YWx1ZSBkYXRlIG9wZXJhdG9yIGFuZCBjb21iaW5lIHdpdGggXCJGUk9NXCIgYW5kIFwiVE9cIiBvcGVyYXRvcnMuXG4gKiBUaGUgcmVzdWx0YW50IG9wZXJhdG9yIGlzIGV4cGVjdGVkIHRvIGJlIGEgcmFuZ2Ugb3BlcmF0b3IuIEhlbmNlIHdlIHdvdWxkIG5lZWQgdGhlIHJhbmdlcy5cbiAqIExpa2U6XG4gKiB7XG4gKiBcdDxvcGVyYXRvciBuYW1lPjoge1xuICogXHRcdGtleTogPGlkZW50aWZpZXI+LFxuICogXHRcdGZuUmFuZ2VzOiA8QVBJIHRvIGdldCB0aGUgcmFuZ2U+XG4gKiBcdH0sXG4gKiBcdDxtb3JlIG9wZXJhdG9ycz4uLi5cbiAqIH1cbiAqL1xuY29uc3Qgb3BlcmF0b3JzVG9FeHRlbmQgPSBnZXRGaXhlZERhdGVTaW5nbGVWYWx1ZU9wZXJhdGlvbnMoKTtcblxuLy8gU2luZ2xlIFZhbHVlIGRhdGUgb3BlcmF0b3JzOiBMaWtlIFwiVE9EQVlcIiwgXCJUT01PUlJPV1wiLCBcIkxBU1REQVlZRUFSXCIsIGV0Yy5cbnR5cGUgU2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lID0ga2V5b2YgdHlwZW9mIG9wZXJhdG9yc1RvRXh0ZW5kO1xuY29uc3Qgc2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lcyA9IE9iamVjdC5rZXlzKG9wZXJhdG9yc1RvRXh0ZW5kKSBhcyBTaW5nbGVWYWx1ZURhdGVPcGVyYXRvck5hbWVbXTtcblxuY29uc3QgRlJPTV9PUCA9IFwiRlJPTVwiO1xuY29uc3QgVE9fT1AgPSBcIlRPXCI7XG50eXBlIEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSA9IGAke3R5cGVvZiBGUk9NX09QfSR7U2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lfWA7XG50eXBlIEV4dGVuZGVkVE9PcGVyYXRvcnNOYW1lID0gYCR7dHlwZW9mIFRPX09QfSR7U2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lfWA7XG5cbi8qKlxuICogT3BlcmF0aW9ucyBpbmZvIHRvIGlkZW50aWZ5IHdoaWNoIG9wZXJhdG9ycyB0aGUgdXNlciB3YW50cyB0byBzdXBwb3J0LlxuICogTGlrZTpcbiAqIHtcbiAqIFx0PG9wZXJhdG9yIG5hbWU+OiB7XG4gKiBcdFx0a2V5OiA8aWRlbnRpZmllcj4sXG4gKiBcdFx0Y2F0ZWdvcnk6IDx0eXBlIG9mIG9wZXJhdG9yPlxuICogXHR9LFxuICogXHQ8bW9yZSBvcGVyYXRvcnM+Li4uXG4gKiB9XG4gKi9cbnR5cGUgT3BlcmF0aW9uID0ge1xuXHRrZXk6IHN0cmluZztcblx0Y2F0ZWdvcnk6IHN0cmluZztcbn07XG50eXBlIEV4dGVuZGVkT3BlcmF0aW9uID0gT3BlcmF0aW9uICYge1xuXHRwcmltaXRpdmVPcGVyYXRvcjogU2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lO1xufTtcbmNvbnN0IGV4dGVuZGVkRnJvbU9wZXJhdG9yczogUmVjb3JkPEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSwgRXh0ZW5kZWRPcGVyYXRpb24+ID0gc2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lcy5yZWR1Y2UoXG5cdChvcGVyYXRpb25zLCBzaW5nbGVEYXRlT3BlcmF0b3JLZXkpID0+IHtcblx0XHRvcGVyYXRpb25zW2Ake0ZST01fT1B9JHtzaW5nbGVEYXRlT3BlcmF0b3JLZXl9YF0gPSB7XG5cdFx0XHRrZXk6IGAke0ZST01fT1B9JHtzaW5nbGVEYXRlT3BlcmF0b3JLZXl9YCxcblx0XHRcdGNhdGVnb3J5OiBEWU5BTUlDX0RBVEVfQ0FURUdPUlksXG5cdFx0XHRwcmltaXRpdmVPcGVyYXRvcjogc2luZ2xlRGF0ZU9wZXJhdG9yS2V5XG5cdFx0fTtcblx0XHRyZXR1cm4gb3BlcmF0aW9ucztcblx0fSxcblx0e30gYXMgUmVjb3JkPEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSwgRXh0ZW5kZWRPcGVyYXRpb24+XG4pO1xuY29uc3QgZXh0ZW5kZWRUb09wZXJhdG9yczogUmVjb3JkPEV4dGVuZGVkVE9PcGVyYXRvcnNOYW1lLCBFeHRlbmRlZE9wZXJhdGlvbj4gPSBzaW5nbGVWYWx1ZURhdGVPcGVyYXRvck5hbWVzLnJlZHVjZShcblx0KG9wZXJhdGlvbnMsIHNpbmdsZURhdGVPcGVyYXRvcktleSkgPT4ge1xuXHRcdG9wZXJhdGlvbnNbYCR7VE9fT1B9JHtzaW5nbGVEYXRlT3BlcmF0b3JLZXl9YF0gPSB7XG5cdFx0XHRrZXk6IGAke1RPX09QfSR7c2luZ2xlRGF0ZU9wZXJhdG9yS2V5fWAsXG5cdFx0XHRjYXRlZ29yeTogRFlOQU1JQ19EQVRFX0NBVEVHT1JZLFxuXHRcdFx0cHJpbWl0aXZlT3BlcmF0b3I6IHNpbmdsZURhdGVPcGVyYXRvcktleVxuXHRcdH07XG5cdFx0cmV0dXJuIG9wZXJhdGlvbnM7XG5cdH0sXG5cdHt9IGFzIFJlY29yZDxFeHRlbmRlZFRPT3BlcmF0b3JzTmFtZSwgRXh0ZW5kZWRPcGVyYXRpb24+XG4pO1xuXG4vLyBFeHRlbmQgT3BlcmF0b3JzIGxpa2UgXCJGUk9NVE9EQVlcIiwgXCJUT1RPREFZXCIsIFwiRlJPTVlFU1RFUkRBWVwiLCBldGMuXG5jb25zdCBleHRlbmRlZE9wZXJhdG9ycyA9IHsgLi4uZXh0ZW5kZWRGcm9tT3BlcmF0b3JzLCAuLi5leHRlbmRlZFRvT3BlcmF0b3JzIH07XG5leHBvcnQgdHlwZSBFeHRlbmRlZE9wZXJhdG9yTmFtZSA9IEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSB8IEV4dGVuZGVkVE9PcGVyYXRvcnNOYW1lO1xuY29uc3QgZXh0ZW5kZWRPcGVyYXRvck5hbWVzID0gT2JqZWN0LmtleXMoZXh0ZW5kZWRPcGVyYXRvcnMpIGFzIEV4dGVuZGVkT3BlcmF0b3JOYW1lW107XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIG9wZXJhdG9yIGlzIGEgRlJPTSBleHRlbmRlZCBvcGVyYXRvciBsaWtlIFwiRlJPTVRPREFZXCIsIFwiRlJPTVRPTU9SUk9XXCIuXG4gKiBAcGFyYW0gb3BlcmF0b3JOYW1lIE9wZXJhdG9yIG5hbWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIEJvb2xlYW4uIElmICdmcm9tJyBleHRlbmRlZCBvcGVyYXRvci5cbiAqL1xuZnVuY3Rpb24gaXNGcm9tRXh0ZW5kZWRPcGVyYXRvcihvcGVyYXRvck5hbWU6IHN0cmluZyk6IG9wZXJhdG9yTmFtZSBpcyBFeHRlbmRlZEZST01PcGVyYXRvck5hbWUge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMoZXh0ZW5kZWRGcm9tT3BlcmF0b3JzKS5pbmNsdWRlcyhvcGVyYXRvck5hbWUpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBvcGVyYXRvciBpcyBhIFRPIGV4dGVuZGVkIG9wZXJhdG9yIGxpa2UgXCJUT1RPREFZXCIsIFwiVE9UT01PUlJPV1wiLlxuICogQHBhcmFtIG9wZXJhdG9yTmFtZSBPcGVyYXRvciBuYW1lIHRvIGNoZWNrXG4gKiBAcmV0dXJucyBCb29sZWFuLiBJZiAndG8nIGV4dGVuZGVkIG9wZXJhdG9yLlxuICovXG5mdW5jdGlvbiBpc1RvRXh0ZW5kZWRPcGVyYXRvcihvcGVyYXRvck5hbWU6IHN0cmluZyk6IG9wZXJhdG9yTmFtZSBpcyBFeHRlbmRlZFRPT3BlcmF0b3JzTmFtZSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhleHRlbmRlZFRvT3BlcmF0b3JzKS5pbmNsdWRlcyhvcGVyYXRvck5hbWUpO1xufVxuXG4vKipcbiAqIEdldCBleHRlbmRlZCBvcGVyYXRvciBieSBjb21iaW5pbmcgXCJGUk9NXCIgYW5kIFwiVE9cIiBvcGVyYXRpb25zIHdpdGggc2luZ2xlIHZhbHVlIGRhdGVzLlxuICogQHBhcmFtIG9wZXJhdG9yTmFtZSBPcGVyYXRvciBuYW1lXG4gKiBAcGFyYW0gcmVzb3VyY2VCdW5kbGUgUmVzb3VyY2UgdG8gY29sbGVjdCB0cmFuc2xhdGVkIHRleHRzIGZvciB0aGUgb3BlcmF0b3JzIHRvIGJlIHNob3duIGluIFVJLlxuICogQHJldHVybnMgUmFuZ2VPcGVyYXRvclxuICovXG5mdW5jdGlvbiBnZXRFeHRlbmRlZE9wZXJhdG9yKG9wZXJhdG9yTmFtZTogRXh0ZW5kZWRPcGVyYXRvck5hbWUsIHJlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSk6IFJhbmdlT3BlcmF0b3Ige1xuXHRjb25zdCB7IHByaW1pdGl2ZU9wZXJhdG9yIH0gPSBleHRlbmRlZE9wZXJhdG9yc1tvcGVyYXRvck5hbWVdO1xuXHRjb25zdCBmaWx0ZXJPcGVyYXRvciA9IEV4dGVuZGVkU2VtYW50aWNEYXRlT3BlcmF0b3JzLmdldEZpbHRlck9wZXJhdG9yKG9wZXJhdG9yTmFtZSkgYXMgTW9kZWxPcGVyYXRvci5HRSB8IE1vZGVsT3BlcmF0b3IuTEU7XG5cdGNvbnN0IHRva2VuVGV4dEtleSA9IGBNX0VYVEVOREVEX09QRVJBVE9SXyR7b3BlcmF0b3JOYW1lfV9UT0tFTl9URVhUYDtcblx0cmV0dXJuIEV4dGVuZGVkU2VtYW50aWNEYXRlT3BlcmF0b3JzLmNyZWF0ZVJhbmdlT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IG9wZXJhdG9yTmFtZSxcblx0XHRsb25nVGV4dDogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dCh0b2tlblRleHRLZXksIFtdKSxcblx0XHR0b2tlblRleHQ6IGAke3Jlc291cmNlQnVuZGxlLmdldFRleHQodG9rZW5UZXh0S2V5LCBbXSl9ICh7MH0pYCxcblx0XHR2YWx1ZVR5cGVzOiBbT3BlcmF0b3JWYWx1ZVR5cGUuU3RhdGljXSxcblx0XHRmaWx0ZXJPcGVyYXRvcixcblx0XHRncm91cDogeyBpZDogMywgdGV4dDogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChgTV9FWFRFTkRFRF9PUEVSQVRPUl9HUlBfVEVYVGAsIFtdKSB9LFxuXHRcdGNhbGNSYW5nZTogZnVuY3Rpb24gKCk6IFVuaXZlcnNhbERhdGVbXSB7XG5cdFx0XHRjb25zdCBbZnJvbVBpY2ssIHRvUGlja10gPSBvcGVyYXRvcnNUb0V4dGVuZFtwcmltaXRpdmVPcGVyYXRvcl0uZm5SYW5nZXMoKTtcblx0XHRcdHJldHVybiBbaXNGcm9tRXh0ZW5kZWRPcGVyYXRvcihvcGVyYXRvck5hbWUpID8gZnJvbVBpY2sgOiB0b1BpY2tdO1xuXHRcdH1cblx0fSk7XG59XG5cbmNvbnN0IEV4dGVuZGVkU2VtYW50aWNEYXRlT3BlcmF0b3JzID0ge1xuXHQvKipcblx0ICogQ3JlYXRpb24gb2YgUmFuZ2VPcGVyYXRvciBmcm9tIGNvbmZpZ3VyYXRpb24uXG5cdCAqIEBwYXJhbSBjb25maWcgUmFuZ2UgT3BlcmF0b3IgY29uZmlndXJhdGlvbnNcblx0ICogQHJldHVybnMgUmFuZ2UgT3BlcmF0b3Jcblx0ICovXG5cdGNyZWF0ZVJhbmdlT3BlcmF0b3IoY29uZmlnOiBDb25maWd1cmF0aW9uKTogUmFuZ2VPcGVyYXRvciB7XG5cdFx0cmV0dXJuIG5ldyBSYW5nZU9wZXJhdG9yKHsgLi4uY29uZmlnIH0pO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBPcGVyYXRvcnMgSW5mbyB0byBoZWxwIGRlY2lkZSB3aGljaCBvcGVyYXRpb25zIHRoZSB1c2VyIHdhbnRzIHRvIGVuYWJsZS5cblx0ICogQHJldHVybnMgT3BlcmF0b3JzIEluZm9cblx0ICovXG5cdGdldE9wZXJhdG9yc0luZm8oKTogUmVjb3JkPEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSwgRXh0ZW5kZWRPcGVyYXRpb24+IHtcblx0XHRyZXR1cm4gZXh0ZW5kZWRPcGVyYXRvcnM7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEV4dGVuZGVkIFNlbWFudGljIERhdGUgb3BlcmF0aW9ucyB0aGF0IGNhbiBiZSB1c2VkLlxuXHQgKiBAcmV0dXJucyBFeHRlbmRlZCBPcGVyYXRvciBuYW1lc1xuXHQgKi9cblx0Z2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucygpOiBzdHJpbmdbXSB7XG5cdFx0cmV0dXJuIFsuLi5leHRlbmRlZE9wZXJhdG9yTmFtZXNdO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHNpbmdsZSBkYXRlIG9wZXJhdG9yIHVzZWQgdG8gY3JlYXRlIHRoZSBleHRlbmRlZCBvcGVyYXRvci5cblx0ICogQHBhcmFtIG9wZXJhdG9yTmFtZSBFeHRlbmRlZCBvcGVyYXRvciBuYW1lXG5cdCAqIEByZXR1cm5zIFNpbmdsZSBkYXRlIG9wZXJhdG9yIG5hbWVcblx0ICovXG5cdGdldENvcnJlc3BvbmRpbmdTaW5nbGVEYXRlT3BlcmF0b3Iob3BlcmF0b3JOYW1lOiBFeHRlbmRlZE9wZXJhdG9yTmFtZSk6IFNpbmdsZVZhbHVlRGF0ZU9wZXJhdG9yTmFtZSB7XG5cdFx0Y29uc3QgeyBwcmltaXRpdmVPcGVyYXRvciB9ID0gZXh0ZW5kZWRPcGVyYXRvcnNbb3BlcmF0b3JOYW1lXTtcblx0XHRyZXR1cm4gcHJpbWl0aXZlT3BlcmF0b3I7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiBpdCBpcyBhbiBleHRlbmRlZCBvcGVyYXRvci5cblx0ICogQHBhcmFtIG9wZXJhdG9yTmFtZSBPcGVyYXRvciBuYW1lIHRvIGNoZWNrXG5cdCAqIEByZXR1cm5zIEV4dGVuZGVkIE9wZXJhdG9yIG5hbWVzXG5cdCAqL1xuXHRpc0V4dGVuZGVkT3BlcmF0b3Iob3BlcmF0b3JOYW1lOiBzdHJpbmcpOiBvcGVyYXRvck5hbWUgaXMgRXh0ZW5kZWRPcGVyYXRvck5hbWUge1xuXHRcdHJldHVybiAoZXh0ZW5kZWRPcGVyYXRvck5hbWVzIGFzIHN0cmluZ1tdKS5pbmNsdWRlcyhvcGVyYXRvck5hbWUpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiB0aGUgb3BlcmF0b3IgaXMgYSBUTyBleHRlbmRlZCBvcGVyYXRvciBsaWtlIFwiVE9UT0RBWVwiLCBcIlRPVE9NT1JST1dcIi5cblx0ICogQHBhcmFtIG9wZXJhdG9yTmFtZSBPcGVyYXRvciBuYW1lIHRvIGNoZWNrXG5cdCAqIEByZXR1cm5zIEJvb2xlYW4uIElmICd0bycgZXh0ZW5kZWQgb3BlcmF0b3IuXG5cdCAqL1xuXHRnZXRGaWx0ZXJPcGVyYXRvcihvcGVyYXRvck5hbWU6IEV4dGVuZGVkT3BlcmF0b3JOYW1lKTogRmlsdGVyT3BlcmF0b3Ige1xuXHRcdGxldCBmaWx0ZXJPcGVyYXRvciA9IE1vZGVsT3BlcmF0b3IuRVE7XG5cdFx0aWYgKGlzRnJvbUV4dGVuZGVkT3BlcmF0b3Iob3BlcmF0b3JOYW1lKSkge1xuXHRcdFx0ZmlsdGVyT3BlcmF0b3IgPSBNb2RlbE9wZXJhdG9yLkdFO1xuXHRcdH0gZWxzZSBpZiAoaXNUb0V4dGVuZGVkT3BlcmF0b3Iob3BlcmF0b3JOYW1lKSkge1xuXHRcdFx0ZmlsdGVyT3BlcmF0b3IgPSBNb2RlbE9wZXJhdG9yLkxFO1xuXHRcdH1cblx0XHRyZXR1cm4gZmlsdGVyT3BlcmF0b3I7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEFkZCBleHRlbmRlZCBvcGVyYXRpb25zIHRvIE1EQyBmaWx0ZXJpbmcgZW52aXJvbm1lbnQuXG5cdCAqXG5cdCAqIFByZXNlbnRseSBvbmx5IHNpbmdsZSB2YWx1ZSBkYXRlIG9wZXJhdG9ycyBleHRlbmRlZCB2aWEgVE8vRlJPTSBvcGVyYXRpb25zIGNhbiBiZSBhZGRlZC5cblx0ICogVGhlc2UgaW5jbHVkZS4uLlxuXHQgKiAxLiBcIkZST01ZRVNURVJEQVlcIi5cblx0ICogMi4gXCJGUk9NVE9EQVlcIi5cblx0ICogMy4gXCJGUk9NVE9NT1JST1dcIi5cblx0ICogNC4gXCJGUk9NRklSU1REQVlXRUVLXCIuXG5cdCAqIDUuIFwiRlJPTUxBU1REQVlXRUVLXCIuXG5cdCAqIDYuIFwiRlJPTUZJUlNUREFZTU9OVEhcIi5cblx0ICogNy4gXCJGUk9NTEFTVERBWU1PTlRIXCIuXG5cdCAqIDguIFwiRlJPTUZJUlNUREFZUVVBUlRFUlwiLlxuXHQgKiA5LiBcIkZST01MQVNUREFZUVVBUlRFUlwiLlxuXHQgKiAxMC4gXCJGUk9NRklSU1REQVlZRUFSXCIuXG5cdCAqIDExLiBcIkZST01MQVNUREFZWUVBUlwiLlxuXHQgKiAxMi4gXCJUT1lFU1RFUkRBWVwiLlxuXHQgKiAxMy4gXCJUT1RPREFZXCIuXG5cdCAqIDE0LiBcIlRPVE9NT1JST1dcIi5cblx0ICogMTUuIFwiVE9GSVJTVERBWVdFRUtcIi5cblx0ICogMTYuIFwiVE9MQVNUREFZV0VFS1wiLlxuXHQgKiAxNy4gXCJUT0ZJUlNUREFZTU9OVEhcIi5cblx0ICogMTguIFwiVE9MQVNUREFZTU9OVEhcIi5cblx0ICogMTkuIFwiVE9GSVJTVERBWVFVQVJURVJcIi5cblx0ICogMjAuIFwiVE9MQVNUREFZUVVBUlRFUlwiLlxuXHQgKiAyMS4gXCJUT0ZJUlNUREFZWUVBUlwiLlxuXHQgKiAyMi4gXCJUT0xBU1REQVlZRUFSXCIuXG5cdCAqXG5cdCAqIFRoZXNlIGN1c3RvbSBvcGVyYXRvcnMgY3JlYXRlZCBieSBGRSBhcmUgbm90IGF2YWlsYWJsZSBieSBkZWZhdWx0IHdpdGggTURDIGZpbHRlcmluZyBlbnZpcm9ubWVudC5cblx0ICogVGhlIG5lZWQgdG8gYmUgYWRkZWQgb24tZGVtYW5kIHZpYSBNREMgQVBJcyBsaWtlICdGaWx0ZXJPcGVyYXRvclV0aWxzLmFkZE9wZXJhdG9yJy5cblx0ICpcblx0ICogSWYgb3BlcmF0b3JOYW1lcyBpcyB1bmRlZmluZWQsIHRoZW4gd2UgYWRkIGFsbCBleHRlbmRlZCBzZW1hbnRpYyBkYXRlIG9wZXJhdG9ycy5cblx0ICogQHBhcmFtIG9wZXJhdG9yTmFtZXMgT3BlcmF0aW9uIG5hbWVzIHRvIGJlIGFkZGVkIG9yIHVuZGVmaW5lZC5cblx0ICovXG5cdGFkZEV4dGVuZGVkRmlsdGVyT3BlcmF0b3JzKG9wZXJhdG9yTmFtZXM6IHN0cmluZ1tdID0gZXh0ZW5kZWRPcGVyYXRvck5hbWVzKTogdm9pZCB7XG5cdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKSE7XG5cdFx0Y29uc3Qgb3BlcmF0b3JzOiBSYW5nZU9wZXJhdG9yW10gPSBvcGVyYXRvck5hbWVzLnJlZHVjZSgob3BlcmF0b3JzLCBvcGVyYXRvck5hbWUpID0+IHtcblx0XHRcdGlmICghRmlsdGVyT3BlcmF0b3JVdGlsLmdldE9wZXJhdG9yKG9wZXJhdG9yTmFtZSkgJiYgRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnMuaXNFeHRlbmRlZE9wZXJhdG9yKG9wZXJhdG9yTmFtZSkpIHtcblx0XHRcdFx0Y29uc3Qgb3BlcmF0b3IgPSBnZXRFeHRlbmRlZE9wZXJhdG9yKG9wZXJhdG9yTmFtZSwgcmVzb3VyY2VCdW5kbGUpO1xuXHRcdFx0XHRvcGVyYXRvcnMucHVzaChvcGVyYXRvcik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gb3BlcmF0b3JzO1xuXHRcdH0sIFtdIGFzIFJhbmdlT3BlcmF0b3JbXSk7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9ycyhvcGVyYXRvcnMpO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRlbmRlZFNlbWFudGljRGF0ZU9wZXJhdG9ycztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0VBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxNQUFNQSxpQkFBaUIsR0FBR0MsaUNBQWlDLENBQUMsQ0FBQzs7RUFFN0Q7O0VBRUEsTUFBTUMsNEJBQTRCLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDSixpQkFBaUIsQ0FBa0M7RUFFcEcsTUFBTUssT0FBTyxHQUFHLE1BQU07RUFDdEIsTUFBTUMsS0FBSyxHQUFHLElBQUk7O0VBSWxCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0VBUUEsTUFBTUMscUJBQTBFLEdBQUdMLDRCQUE0QixDQUFDTSxNQUFNLENBQ3JILENBQUNDLFVBQVUsRUFBRUMscUJBQXFCLEtBQUs7SUFDdENELFVBQVUsQ0FBQyxHQUFHSixPQUFPLEdBQUdLLHFCQUFxQixFQUFFLENBQUMsR0FBRztNQUNsREMsR0FBRyxFQUFFLEdBQUdOLE9BQU8sR0FBR0sscUJBQXFCLEVBQUU7TUFDekNFLFFBQVEsRUFBRUMscUJBQXFCO01B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
|
|
220
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcGVyYXRvcnNUb0V4dGVuZCIsImdldEZpeGVkRGF0ZVNpbmdsZVZhbHVlT3BlcmF0aW9ucyIsInNpbmdsZVZhbHVlRGF0ZU9wZXJhdG9yTmFtZXMiLCJPYmplY3QiLCJrZXlzIiwiRlJPTV9PUCIsIlRPX09QIiwiZXh0ZW5kZWRGcm9tT3BlcmF0b3JzIiwicmVkdWNlIiwib3BlcmF0aW9ucyIsInNpbmdsZURhdGVPcGVyYXRvcktleSIsImtleSIsImNhdGVnb3J5IiwiRFlOQU1JQ19EQVRFX0NBVEVHT1JZIiwicHJpbWl0aXZlT3BlcmF0b3IiLCJleHRlbmRlZFRvT3BlcmF0b3JzIiwiZXh0ZW5kZWRPcGVyYXRvcnMiLCJleHRlbmRlZE9wZXJhdG9yTmFtZXMiLCJpc0Zyb21FeHRlbmRlZE9wZXJhdG9yIiwib3BlcmF0b3JOYW1lIiwiaW5jbHVkZXMiLCJpc1RvRXh0ZW5kZWRPcGVyYXRvciIsImdldEV4dGVuZGVkT3BlcmF0b3IiLCJyZXNvdXJjZUJ1bmRsZSIsImZpbHRlck9wZXJhdG9yIiwiRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJnZXRGaWx0ZXJPcGVyYXRvciIsInRva2VuVGV4dEtleSIsImNyZWF0ZVJhbmdlT3BlcmF0b3IiLCJuYW1lIiwibG9uZ1RleHQiLCJnZXRUZXh0IiwidG9rZW5UZXh0IiwidmFsdWVUeXBlcyIsIk9wZXJhdG9yVmFsdWVUeXBlIiwiU3RhdGljIiwiZ3JvdXAiLCJpZCIsInRleHQiLCJjYWxjUmFuZ2UiLCJmcm9tUGljayIsInRvUGljayIsImZuUmFuZ2VzIiwiY29uZmlnIiwiUmFuZ2VPcGVyYXRvciIsImdldE9wZXJhdG9yc0luZm8iLCJnZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiZ2V0Q29ycmVzcG9uZGluZ1NpbmdsZURhdGVPcGVyYXRvciIsImlzRXh0ZW5kZWRPcGVyYXRvciIsIk1vZGVsT3BlcmF0b3IiLCJFUSIsIkdFIiwiTEUiLCJhZGRFeHRlbmRlZEZpbHRlck9wZXJhdG9ycyIsIm9wZXJhdG9yTmFtZXMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJvcGVyYXRvcnMiLCJGaWx0ZXJPcGVyYXRvclV0aWwiLCJnZXRPcGVyYXRvciIsIm9wZXJhdG9yIiwicHVzaCIsImFkZE9wZXJhdG9ycyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCB7IERZTkFNSUNfREFURV9DQVRFR09SWSwgZ2V0Rml4ZWREYXRlU2luZ2xlVmFsdWVPcGVyYXRpb25zIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0RlZmF1bHRTZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIFVuaXZlcnNhbERhdGUgZnJvbSBcInNhcC91aS9jb3JlL2RhdGUvVW5pdmVyc2FsRGF0ZVwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yVXRpbCBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vRmlsdGVyT3BlcmF0b3JVdGlsXCI7XG5pbXBvcnQgUmFuZ2VPcGVyYXRvciwgeyB0eXBlIENvbmZpZ3VyYXRpb24gfSBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vUmFuZ2VPcGVyYXRvclwiO1xuaW1wb3J0IE9wZXJhdG9yVmFsdWVUeXBlIGZyb20gXCJzYXAvdWkvbWRjL2VudW1zL09wZXJhdG9yVmFsdWVUeXBlXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgRmlsdGVyT3BlcmF0b3IgfSBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIE1vZGVsT3BlcmF0b3IgfSBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5cbi8qKlxuICogU2luZ2xlIHZhbHVlIGRhdGUgb3BlcmF0b3JzIHdpdGggcmFuZ2VzLlxuICogV2Ugc2hhbGwgdXNlIHRoZXNlIHNpbmdsZSB2YWx1ZSBkYXRlIG9wZXJhdG9yIGFuZCBjb21iaW5lIHdpdGggXCJGUk9NXCIgYW5kIFwiVE9cIiBvcGVyYXRvcnMuXG4gKiBUaGUgcmVzdWx0YW50IG9wZXJhdG9yIGlzIGV4cGVjdGVkIHRvIGJlIGEgcmFuZ2Ugb3BlcmF0b3IuIEhlbmNlIHdlIHdvdWxkIG5lZWQgdGhlIHJhbmdlcy5cbiAqIExpa2U6XG4gKiB7XG4gKiBcdDxvcGVyYXRvciBuYW1lPjoge1xuICogXHRcdGtleTogPGlkZW50aWZpZXI+LFxuICogXHRcdGZuUmFuZ2VzOiA8QVBJIHRvIGdldCB0aGUgcmFuZ2U+XG4gKiBcdH0sXG4gKiBcdDxtb3JlIG9wZXJhdG9ycz4uLi5cbiAqIH1cbiAqL1xuY29uc3Qgb3BlcmF0b3JzVG9FeHRlbmQgPSBnZXRGaXhlZERhdGVTaW5nbGVWYWx1ZU9wZXJhdGlvbnMoKTtcblxuLy8gU2luZ2xlIFZhbHVlIGRhdGUgb3BlcmF0b3JzOiBMaWtlIFwiVE9EQVlcIiwgXCJUT01PUlJPV1wiLCBcIkxBU1REQVlZRUFSXCIsIGV0Yy5cbnR5cGUgU2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lID0ga2V5b2YgdHlwZW9mIG9wZXJhdG9yc1RvRXh0ZW5kO1xuY29uc3Qgc2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lcyA9IE9iamVjdC5rZXlzKG9wZXJhdG9yc1RvRXh0ZW5kKSBhcyBTaW5nbGVWYWx1ZURhdGVPcGVyYXRvck5hbWVbXTtcblxuY29uc3QgRlJPTV9PUCA9IFwiRlJPTVwiO1xuY29uc3QgVE9fT1AgPSBcIlRPXCI7XG50eXBlIEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSA9IGAke3R5cGVvZiBGUk9NX09QfSR7U2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lfWA7XG50eXBlIEV4dGVuZGVkVE9PcGVyYXRvcnNOYW1lID0gYCR7dHlwZW9mIFRPX09QfSR7U2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lfWA7XG5cbi8qKlxuICogT3BlcmF0aW9ucyBpbmZvIHRvIGlkZW50aWZ5IHdoaWNoIG9wZXJhdG9ycyB0aGUgdXNlciB3YW50cyB0byBzdXBwb3J0LlxuICogTGlrZTpcbiAqIHtcbiAqIFx0PG9wZXJhdG9yIG5hbWU+OiB7XG4gKiBcdFx0a2V5OiA8aWRlbnRpZmllcj4sXG4gKiBcdFx0Y2F0ZWdvcnk6IDx0eXBlIG9mIG9wZXJhdG9yPlxuICogXHR9LFxuICogXHQ8bW9yZSBvcGVyYXRvcnM+Li4uXG4gKiB9XG4gKi9cbnR5cGUgT3BlcmF0aW9uID0ge1xuXHRrZXk6IHN0cmluZztcblx0Y2F0ZWdvcnk6IHN0cmluZztcbn07XG50eXBlIEV4dGVuZGVkT3BlcmF0aW9uID0gT3BlcmF0aW9uICYge1xuXHRwcmltaXRpdmVPcGVyYXRvcjogU2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lO1xufTtcbmNvbnN0IGV4dGVuZGVkRnJvbU9wZXJhdG9yczogUmVjb3JkPEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSwgRXh0ZW5kZWRPcGVyYXRpb24+ID0gc2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lcy5yZWR1Y2UoXG5cdChvcGVyYXRpb25zLCBzaW5nbGVEYXRlT3BlcmF0b3JLZXkpID0+IHtcblx0XHRvcGVyYXRpb25zW2Ake0ZST01fT1B9JHtzaW5nbGVEYXRlT3BlcmF0b3JLZXl9YF0gPSB7XG5cdFx0XHRrZXk6IGAke0ZST01fT1B9JHtzaW5nbGVEYXRlT3BlcmF0b3JLZXl9YCxcblx0XHRcdGNhdGVnb3J5OiBEWU5BTUlDX0RBVEVfQ0FURUdPUlksXG5cdFx0XHRwcmltaXRpdmVPcGVyYXRvcjogc2luZ2xlRGF0ZU9wZXJhdG9yS2V5XG5cdFx0fTtcblx0XHRyZXR1cm4gb3BlcmF0aW9ucztcblx0fSxcblx0e30gYXMgUmVjb3JkPEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSwgRXh0ZW5kZWRPcGVyYXRpb24+XG4pO1xuY29uc3QgZXh0ZW5kZWRUb09wZXJhdG9yczogUmVjb3JkPEV4dGVuZGVkVE9PcGVyYXRvcnNOYW1lLCBFeHRlbmRlZE9wZXJhdGlvbj4gPSBzaW5nbGVWYWx1ZURhdGVPcGVyYXRvck5hbWVzLnJlZHVjZShcblx0KG9wZXJhdGlvbnMsIHNpbmdsZURhdGVPcGVyYXRvcktleSkgPT4ge1xuXHRcdG9wZXJhdGlvbnNbYCR7VE9fT1B9JHtzaW5nbGVEYXRlT3BlcmF0b3JLZXl9YF0gPSB7XG5cdFx0XHRrZXk6IGAke1RPX09QfSR7c2luZ2xlRGF0ZU9wZXJhdG9yS2V5fWAsXG5cdFx0XHRjYXRlZ29yeTogRFlOQU1JQ19EQVRFX0NBVEVHT1JZLFxuXHRcdFx0cHJpbWl0aXZlT3BlcmF0b3I6IHNpbmdsZURhdGVPcGVyYXRvcktleVxuXHRcdH07XG5cdFx0cmV0dXJuIG9wZXJhdGlvbnM7XG5cdH0sXG5cdHt9IGFzIFJlY29yZDxFeHRlbmRlZFRPT3BlcmF0b3JzTmFtZSwgRXh0ZW5kZWRPcGVyYXRpb24+XG4pO1xuXG4vLyBFeHRlbmQgT3BlcmF0b3JzIGxpa2UgXCJGUk9NVE9EQVlcIiwgXCJUT1RPREFZXCIsIFwiRlJPTVlFU1RFUkRBWVwiLCBldGMuXG5jb25zdCBleHRlbmRlZE9wZXJhdG9ycyA9IHsgLi4uZXh0ZW5kZWRGcm9tT3BlcmF0b3JzLCAuLi5leHRlbmRlZFRvT3BlcmF0b3JzIH07XG5leHBvcnQgdHlwZSBFeHRlbmRlZE9wZXJhdG9yTmFtZSA9IEV4dGVuZGVkRlJPTU9wZXJhdG9yTmFtZSB8IEV4dGVuZGVkVE9PcGVyYXRvcnNOYW1lO1xuY29uc3QgZXh0ZW5kZWRPcGVyYXRvck5hbWVzID0gT2JqZWN0LmtleXMoZXh0ZW5kZWRPcGVyYXRvcnMpIGFzIEV4dGVuZGVkT3BlcmF0b3JOYW1lW107XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIG9wZXJhdG9yIGlzIGEgRlJPTSBleHRlbmRlZCBvcGVyYXRvciBsaWtlIFwiRlJPTVRPREFZXCIsIFwiRlJPTVRPTU9SUk9XXCIuXG4gKiBAcGFyYW0gb3BlcmF0b3JOYW1lIE9wZXJhdG9yIG5hbWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIEJvb2xlYW4uIElmICdmcm9tJyBleHRlbmRlZCBvcGVyYXRvci5cbiAqL1xuZnVuY3Rpb24gaXNGcm9tRXh0ZW5kZWRPcGVyYXRvcihvcGVyYXRvck5hbWU6IHN0cmluZyk6IG9wZXJhdG9yTmFtZSBpcyBFeHRlbmRlZEZST01PcGVyYXRvck5hbWUge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMoZXh0ZW5kZWRGcm9tT3BlcmF0b3JzKS5pbmNsdWRlcyhvcGVyYXRvck5hbWUpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBvcGVyYXRvciBpcyBhIFRPIGV4dGVuZGVkIG9wZXJhdG9yIGxpa2UgXCJUT1RPREFZXCIsIFwiVE9UT01PUlJPV1wiLlxuICogQHBhcmFtIG9wZXJhdG9yTmFtZSBPcGVyYXRvciBuYW1lIHRvIGNoZWNrXG4gKiBAcmV0dXJucyBCb29sZWFuLiBJZiAndG8nIGV4dGVuZGVkIG9wZXJhdG9yLlxuICovXG5mdW5jdGlvbiBpc1RvRXh0ZW5kZWRPcGVyYXRvcihvcGVyYXRvck5hbWU6IHN0cmluZyk6IG9wZXJhdG9yTmFtZSBpcyBFeHRlbmRlZFRPT3BlcmF0b3JzTmFtZSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhleHRlbmRlZFRvT3BlcmF0b3JzKS5pbmNsdWRlcyhvcGVyYXRvck5hbWUpO1xufVxuXG4vKipcbiAqIEdldCBleHRlbmRlZCBvcGVyYXRvciBieSBjb21iaW5pbmcgXCJGUk9NXCIgYW5kIFwiVE9cIiBvcGVyYXRpb25zIHdpdGggc2luZ2xlIHZhbHVlIGRhdGVzLlxuICogQHBhcmFtIG9wZXJhdG9yTmFtZSBPcGVyYXRvciBuYW1lXG4gKiBAcGFyYW0gcmVzb3VyY2VCdW5kbGUgUmVzb3VyY2UgdG8gY29sbGVjdCB0cmFuc2xhdGVkIHRleHRzIGZvciB0aGUgb3BlcmF0b3JzIHRvIGJlIHNob3duIGluIFVJLlxuICogQHJldHVybnMgUmFuZ2VPcGVyYXRvclxuICovXG5mdW5jdGlvbiBnZXRFeHRlbmRlZE9wZXJhdG9yKG9wZXJhdG9yTmFtZTogRXh0ZW5kZWRPcGVyYXRvck5hbWUsIHJlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSk6IFJhbmdlT3BlcmF0b3Ige1xuXHRjb25zdCB7IHByaW1pdGl2ZU9wZXJhdG9yIH0gPSBleHRlbmRlZE9wZXJhdG9yc1tvcGVyYXRvck5hbWVdO1xuXHRjb25zdCBmaWx0ZXJPcGVyYXRvciA9IEV4dGVuZGVkU2VtYW50aWNEYXRlT3BlcmF0b3JzLmdldEZpbHRlck9wZXJhdG9yKG9wZXJhdG9yTmFtZSkgYXMgTW9kZWxPcGVyYXRvci5HRSB8IE1vZGVsT3BlcmF0b3IuTEU7XG5cdGNvbnN0IHRva2VuVGV4dEtleSA9IGBNX0VYVEVOREVEX09QRVJBVE9SXyR7b3BlcmF0b3JOYW1lfV9UT0tFTl9URVhUYDtcblx0cmV0dXJuIEV4dGVuZGVkU2VtYW50aWNEYXRlT3BlcmF0b3JzLmNyZWF0ZVJhbmdlT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IG9wZXJhdG9yTmFtZSxcblx0XHRsb25nVGV4dDogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dCh0b2tlblRleHRLZXksIFtdKSxcblx0XHR0b2tlblRleHQ6IGAke3Jlc291cmNlQnVuZGxlLmdldFRleHQodG9rZW5UZXh0S2V5LCBbXSl9ICh7MH0pYCxcblx0XHR2YWx1ZVR5cGVzOiBbT3BlcmF0b3JWYWx1ZVR5cGUuU3RhdGljXSxcblx0XHRmaWx0ZXJPcGVyYXRvcixcblx0XHRncm91cDogeyBpZDogMywgdGV4dDogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChgTV9FWFRFTkRFRF9PUEVSQVRPUl9HUlBfVEVYVGApIH0sXG5cdFx0Y2FsY1JhbmdlOiBmdW5jdGlvbiAoKTogVW5pdmVyc2FsRGF0ZVtdIHtcblx0XHRcdGNvbnN0IFtmcm9tUGljaywgdG9QaWNrXSA9IG9wZXJhdG9yc1RvRXh0ZW5kW3ByaW1pdGl2ZU9wZXJhdG9yXS5mblJhbmdlcygpO1xuXHRcdFx0cmV0dXJuIFtpc0Zyb21FeHRlbmRlZE9wZXJhdG9yKG9wZXJhdG9yTmFtZSkgPyBmcm9tUGljayA6IHRvUGlja107XG5cdFx0fVxuXHR9KTtcbn1cblxuY29uc3QgRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnMgPSB7XG5cdC8qKlxuXHQgKiBDcmVhdGlvbiBvZiBSYW5nZU9wZXJhdG9yIGZyb20gY29uZmlndXJhdGlvbi5cblx0ICogQHBhcmFtIGNvbmZpZyBSYW5nZSBPcGVyYXRvciBjb25maWd1cmF0aW9uc1xuXHQgKiBAcmV0dXJucyBSYW5nZSBPcGVyYXRvclxuXHQgKi9cblx0Y3JlYXRlUmFuZ2VPcGVyYXRvcihjb25maWc6IENvbmZpZ3VyYXRpb24pOiBSYW5nZU9wZXJhdG9yIHtcblx0XHRyZXR1cm4gbmV3IFJhbmdlT3BlcmF0b3IoeyAuLi5jb25maWcgfSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIE9wZXJhdG9ycyBJbmZvIHRvIGhlbHAgZGVjaWRlIHdoaWNoIG9wZXJhdGlvbnMgdGhlIHVzZXIgd2FudHMgdG8gZW5hYmxlLlxuXHQgKiBAcmV0dXJucyBPcGVyYXRvcnMgSW5mb1xuXHQgKi9cblx0Z2V0T3BlcmF0b3JzSW5mbygpOiBSZWNvcmQ8RXh0ZW5kZWRGUk9NT3BlcmF0b3JOYW1lLCBFeHRlbmRlZE9wZXJhdGlvbj4ge1xuXHRcdHJldHVybiBleHRlbmRlZE9wZXJhdG9ycztcblx0fSxcblxuXHQvKipcblx0ICogRXh0ZW5kZWQgU2VtYW50aWMgRGF0ZSBvcGVyYXRpb25zIHRoYXQgY2FuIGJlIHVzZWQuXG5cdCAqIEByZXR1cm5zIEV4dGVuZGVkIE9wZXJhdG9yIG5hbWVzXG5cdCAqL1xuXHRnZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zKCk6IHN0cmluZ1tdIHtcblx0XHRyZXR1cm4gWy4uLmV4dGVuZGVkT3BlcmF0b3JOYW1lc107XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCB0aGUgc2luZ2xlIGRhdGUgb3BlcmF0b3IgdXNlZCB0byBjcmVhdGUgdGhlIGV4dGVuZGVkIG9wZXJhdG9yLlxuXHQgKiBAcGFyYW0gb3BlcmF0b3JOYW1lIEV4dGVuZGVkIG9wZXJhdG9yIG5hbWVcblx0ICogQHJldHVybnMgU2luZ2xlIGRhdGUgb3BlcmF0b3IgbmFtZVxuXHQgKi9cblx0Z2V0Q29ycmVzcG9uZGluZ1NpbmdsZURhdGVPcGVyYXRvcihvcGVyYXRvck5hbWU6IEV4dGVuZGVkT3BlcmF0b3JOYW1lKTogU2luZ2xlVmFsdWVEYXRlT3BlcmF0b3JOYW1lIHtcblx0XHRjb25zdCB7IHByaW1pdGl2ZU9wZXJhdG9yIH0gPSBleHRlbmRlZE9wZXJhdG9yc1tvcGVyYXRvck5hbWVdO1xuXHRcdHJldHVybiBwcmltaXRpdmVPcGVyYXRvcjtcblx0fSxcblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIGl0IGlzIGFuIGV4dGVuZGVkIG9wZXJhdG9yLlxuXHQgKiBAcGFyYW0gb3BlcmF0b3JOYW1lIE9wZXJhdG9yIG5hbWUgdG8gY2hlY2tcblx0ICogQHJldHVybnMgRXh0ZW5kZWQgT3BlcmF0b3IgbmFtZXNcblx0ICovXG5cdGlzRXh0ZW5kZWRPcGVyYXRvcihvcGVyYXRvck5hbWU6IHN0cmluZyk6IG9wZXJhdG9yTmFtZSBpcyBFeHRlbmRlZE9wZXJhdG9yTmFtZSB7XG5cdFx0cmV0dXJuIChleHRlbmRlZE9wZXJhdG9yTmFtZXMgYXMgc3RyaW5nW10pLmluY2x1ZGVzKG9wZXJhdG9yTmFtZSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENoZWNrIGlmIHRoZSBvcGVyYXRvciBpcyBhIFRPIGV4dGVuZGVkIG9wZXJhdG9yIGxpa2UgXCJUT1RPREFZXCIsIFwiVE9UT01PUlJPV1wiLlxuXHQgKiBAcGFyYW0gb3BlcmF0b3JOYW1lIE9wZXJhdG9yIG5hbWUgdG8gY2hlY2tcblx0ICogQHJldHVybnMgQm9vbGVhbi4gSWYgJ3RvJyBleHRlbmRlZCBvcGVyYXRvci5cblx0ICovXG5cdGdldEZpbHRlck9wZXJhdG9yKG9wZXJhdG9yTmFtZTogRXh0ZW5kZWRPcGVyYXRvck5hbWUpOiBGaWx0ZXJPcGVyYXRvciB7XG5cdFx0bGV0IGZpbHRlck9wZXJhdG9yID0gTW9kZWxPcGVyYXRvci5FUTtcblx0XHRpZiAoaXNGcm9tRXh0ZW5kZWRPcGVyYXRvcihvcGVyYXRvck5hbWUpKSB7XG5cdFx0XHRmaWx0ZXJPcGVyYXRvciA9IE1vZGVsT3BlcmF0b3IuR0U7XG5cdFx0fSBlbHNlIGlmIChpc1RvRXh0ZW5kZWRPcGVyYXRvcihvcGVyYXRvck5hbWUpKSB7XG5cdFx0XHRmaWx0ZXJPcGVyYXRvciA9IE1vZGVsT3BlcmF0b3IuTEU7XG5cdFx0fVxuXHRcdHJldHVybiBmaWx0ZXJPcGVyYXRvcjtcblx0fSxcblxuXHQvKipcblx0ICogQWRkIGV4dGVuZGVkIG9wZXJhdGlvbnMgdG8gTURDIGZpbHRlcmluZyBlbnZpcm9ubWVudC5cblx0ICpcblx0ICogUHJlc2VudGx5IG9ubHkgc2luZ2xlIHZhbHVlIGRhdGUgb3BlcmF0b3JzIGV4dGVuZGVkIHZpYSBUTy9GUk9NIG9wZXJhdGlvbnMgY2FuIGJlIGFkZGVkLlxuXHQgKiBUaGVzZSBpbmNsdWRlLi4uXG5cdCAqIDEuIFwiRlJPTVlFU1RFUkRBWVwiLlxuXHQgKiAyLiBcIkZST01UT0RBWVwiLlxuXHQgKiAzLiBcIkZST01UT01PUlJPV1wiLlxuXHQgKiA0LiBcIkZST01GSVJTVERBWVdFRUtcIi5cblx0ICogNS4gXCJGUk9NTEFTVERBWVdFRUtcIi5cblx0ICogNi4gXCJGUk9NRklSU1REQVlNT05USFwiLlxuXHQgKiA3LiBcIkZST01MQVNUREFZTU9OVEhcIi5cblx0ICogOC4gXCJGUk9NRklSU1REQVlRVUFSVEVSXCIuXG5cdCAqIDkuIFwiRlJPTUxBU1REQVlRVUFSVEVSXCIuXG5cdCAqIDEwLiBcIkZST01GSVJTVERBWVlFQVJcIi5cblx0ICogMTEuIFwiRlJPTUxBU1REQVlZRUFSXCIuXG5cdCAqIDEyLiBcIlRPWUVTVEVSREFZXCIuXG5cdCAqIDEzLiBcIlRPVE9EQVlcIi5cblx0ICogMTQuIFwiVE9UT01PUlJPV1wiLlxuXHQgKiAxNS4gXCJUT0ZJUlNUREFZV0VFS1wiLlxuXHQgKiAxNi4gXCJUT0xBU1REQVlXRUVLXCIuXG5cdCAqIDE3LiBcIlRPRklSU1REQVlNT05USFwiLlxuXHQgKiAxOC4gXCJUT0xBU1REQVlNT05USFwiLlxuXHQgKiAxOS4gXCJUT0ZJUlNUREFZUVVBUlRFUlwiLlxuXHQgKiAyMC4gXCJUT0xBU1REQVlRVUFSVEVSXCIuXG5cdCAqIDIxLiBcIlRPRklSU1REQVlZRUFSXCIuXG5cdCAqIDIyLiBcIlRPTEFTVERBWVlFQVJcIi5cblx0ICpcblx0ICogVGhlc2UgY3VzdG9tIG9wZXJhdG9ycyBjcmVhdGVkIGJ5IEZFIGFyZSBub3QgYXZhaWxhYmxlIGJ5IGRlZmF1bHQgd2l0aCBNREMgZmlsdGVyaW5nIGVudmlyb25tZW50LlxuXHQgKiBUaGUgbmVlZCB0byBiZSBhZGRlZCBvbi1kZW1hbmQgdmlhIE1EQyBBUElzIGxpa2UgJ0ZpbHRlck9wZXJhdG9yVXRpbHMuYWRkT3BlcmF0b3InLlxuXHQgKlxuXHQgKiBJZiBvcGVyYXRvck5hbWVzIGlzIHVuZGVmaW5lZCwgdGhlbiB3ZSBhZGQgYWxsIGV4dGVuZGVkIHNlbWFudGljIGRhdGUgb3BlcmF0b3JzLlxuXHQgKiBAcGFyYW0gb3BlcmF0b3JOYW1lcyBPcGVyYXRpb24gbmFtZXMgdG8gYmUgYWRkZWQgb3IgdW5kZWZpbmVkLlxuXHQgKi9cblx0YWRkRXh0ZW5kZWRGaWx0ZXJPcGVyYXRvcnMob3BlcmF0b3JOYW1lczogc3RyaW5nW10gPSBleHRlbmRlZE9wZXJhdG9yTmFtZXMpOiB2b2lkIHtcblx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpITtcblx0XHRjb25zdCBvcGVyYXRvcnM6IFJhbmdlT3BlcmF0b3JbXSA9IG9wZXJhdG9yTmFtZXMucmVkdWNlKChvcGVyYXRvcnMsIG9wZXJhdG9yTmFtZSkgPT4ge1xuXHRcdFx0aWYgKCFGaWx0ZXJPcGVyYXRvclV0aWwuZ2V0T3BlcmF0b3Iob3BlcmF0b3JOYW1lKSAmJiBFeHRlbmRlZFNlbWFudGljRGF0ZU9wZXJhdG9ycy5pc0V4dGVuZGVkT3BlcmF0b3Iob3BlcmF0b3JOYW1lKSkge1xuXHRcdFx0XHRjb25zdCBvcGVyYXRvciA9IGdldEV4dGVuZGVkT3BlcmF0b3Iob3BlcmF0b3JOYW1lLCByZXNvdXJjZUJ1bmRsZSk7XG5cdFx0XHRcdG9wZXJhdG9ycy5wdXNoKG9wZXJhdG9yKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBvcGVyYXRvcnM7XG5cdFx0fSwgW10gYXMgUmFuZ2VPcGVyYXRvcltdKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3JzKG9wZXJhdG9ycyk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEV4dGVuZGVkU2VtYW50aWNEYXRlT3BlcmF0b3JzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7RUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLE1BQU1BLGlCQUFpQixHQUFHQyxpQ0FBaUMsQ0FBQyxDQUFDOztFQUU3RDs7RUFFQSxNQUFNQyw0QkFBNEIsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUNKLGlCQUFpQixDQUFrQztFQUVwRyxNQUFNSyxPQUFPLEdBQUcsTUFBTTtFQUN0QixNQUFNQyxLQUFLLEdBQUcsSUFBSTs7RUFJbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7RUFRQSxNQUFNQyxxQkFBMEUsR0FBR0wsNEJBQTRCLENBQUNNLE1BQU0sQ0FDckgsQ0FBQ0MsVUFBVSxFQUFFQyxxQkFBcUIsS0FBSztJQUN0Q0QsVUFBVSxDQUFDLEdBQUdKLE9BQU8sR0FBR0sscUJBQXFCLEVBQUUsQ0FBQyxHQUFHO01BQ2xEQyxHQUFHLEVBQUUsR0FBR04sT0FBTyxHQUFHSyxxQkFBcUIsRUFBRTtNQUN6Q0UsUUFBUSxFQUFFQyxxQkFBcUI7TUFDL0JD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
|
|
@@ -112,7 +112,7 @@ function getExtendedOperator(operatorName: ExtendedOperatorName, resourceBundle:
|
|
|
112
112
|
tokenText: `${resourceBundle.getText(tokenTextKey, [])} ({0})`,
|
|
113
113
|
valueTypes: [OperatorValueType.Static],
|
|
114
114
|
filterOperator,
|
|
115
|
-
group: { id: 3, text: resourceBundle.getText(`M_EXTENDED_OPERATOR_GRP_TEXT
|
|
115
|
+
group: { id: 3, text: resourceBundle.getText(`M_EXTENDED_OPERATOR_GRP_TEXT`) },
|
|
116
116
|
calcRange: function (): UniversalDate[] {
|
|
117
117
|
const [fromPick, toPick] = operatorsToExtend[primitiveOperator].fnRanges();
|
|
118
118
|
return [isFromExtendedOperator(operatorName) ? fromPick : toPick];
|