@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.
Files changed (217) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Breadcrumbs.js +4 -10
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
  5. package/src/sap/fe/macros/Chart.js +34 -23
  6. package/src/sap/fe/macros/Chart.tsx +25 -11
  7. package/src/sap/fe/macros/CollaborativeDraftHandler.js +48 -31
  8. package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +51 -26
  9. package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
  10. package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
  11. package/src/sap/fe/macros/CommonHelper.js +14 -24
  12. package/src/sap/fe/macros/CommonHelper.ts +18 -25
  13. package/src/sap/fe/macros/Field.js +30 -13
  14. package/src/sap/fe/macros/Field.ts +60 -30
  15. package/src/sap/fe/macros/FooterContent.js +5 -2
  16. package/src/sap/fe/macros/FooterContent.tsx +6 -3
  17. package/src/sap/fe/macros/KPITag.js +1 -1
  18. package/src/sap/fe/macros/KPITag.tsx +3 -1
  19. package/src/sap/fe/macros/MacroAPI.js +3 -2
  20. package/src/sap/fe/macros/MacroAPI.ts +2 -2
  21. package/src/sap/fe/macros/MessageButton.js +3 -2
  22. package/src/sap/fe/macros/MessageButton.tsx +5 -2
  23. package/src/sap/fe/macros/MicroChart.js +10 -6
  24. package/src/sap/fe/macros/MicroChart.tsx +8 -2
  25. package/src/sap/fe/macros/MultiValueField.js +22 -36
  26. package/src/sap/fe/macros/MultiValueField.tsx +34 -66
  27. package/src/sap/fe/macros/RichTextEditor.js +3 -4
  28. package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
  29. package/src/sap/fe/macros/Status.js +35 -8
  30. package/src/sap/fe/macros/Status.tsx +23 -2
  31. package/src/sap/fe/macros/ValueHelp.js +5 -2
  32. package/src/sap/fe/macros/ValueHelp.tsx +5 -0
  33. package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
  34. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
  35. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
  36. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
  37. package/src/sap/fe/macros/chart/Action.js +25 -2
  38. package/src/sap/fe/macros/chart/Action.ts +13 -0
  39. package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
  40. package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
  41. package/src/sap/fe/macros/chart/ChartDelegate.js +8 -8
  42. package/src/sap/fe/macros/chart/ChartDelegate.ts +17 -12
  43. package/src/sap/fe/macros/chart/MdcChartTemplate.js +54 -11
  44. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +70 -11
  45. package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
  46. package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
  47. package/src/sap/fe/macros/controls/FilterBar.js +39 -3
  48. package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
  49. package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
  50. package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
  51. package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
  52. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
  53. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +37 -9
  54. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +45 -6
  55. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
  56. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
  57. package/src/sap/fe/macros/field/FieldFormatOptions.js +3 -3
  58. package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
  59. package/src/sap/fe/macros/field/FieldHelper.js +4 -3
  60. package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
  61. package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
  62. package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
  63. package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
  64. package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
  65. package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
  66. package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
  67. package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
  68. package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
  69. package/src/sap/fe/macros/filter/FilterUtils.js +100 -36
  70. package/src/sap/fe/macros/filter/FilterUtils.ts +127 -39
  71. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
  72. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
  73. package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
  74. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
  75. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +10 -7
  76. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +31 -16
  77. package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +4 -3
  78. package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
  79. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
  80. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
  81. package/src/sap/fe/macros/form/Form.block.js +27 -2
  82. package/src/sap/fe/macros/form/Form.block.ts +31 -11
  83. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
  84. package/src/sap/fe/macros/form/FormContainer.block.js +96 -65
  85. package/src/sap/fe/macros/form/FormContainer.block.ts +104 -65
  86. package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
  87. package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
  88. package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
  89. package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
  90. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
  91. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
  92. package/src/sap/fe/macros/insights/InsightsService.js +3 -2
  93. package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
  94. package/src/sap/fe/macros/internal/DataPoint.js +7 -8
  95. package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
  96. package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
  97. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
  98. package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
  99. package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
  100. package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
  101. package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
  102. package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
  103. package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
  104. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
  105. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
  106. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
  107. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
  108. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
  109. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
  110. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
  111. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
  112. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
  113. package/src/sap/fe/macros/library.js +3 -3
  114. package/src/sap/fe/macros/library.ts +2 -0
  115. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
  116. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
  117. package/src/sap/fe/macros/messagebundle.properties +7 -5
  118. package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
  119. package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
  120. package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
  121. package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
  122. package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
  123. package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
  124. package/src/sap/fe/macros/messagebundle_da.properties +12 -3
  125. package/src/sap/fe/macros/messagebundle_de.properties +16 -7
  126. package/src/sap/fe/macros/messagebundle_el.properties +13 -4
  127. package/src/sap/fe/macros/messagebundle_en.properties +13 -4
  128. package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
  129. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +12 -3
  130. package/src/sap/fe/macros/messagebundle_es.properties +12 -3
  131. package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
  132. package/src/sap/fe/macros/messagebundle_et.properties +12 -3
  133. package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
  134. package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
  135. package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
  136. package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
  137. package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
  138. package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
  139. package/src/sap/fe/macros/messagebundle_id.properties +18 -9
  140. package/src/sap/fe/macros/messagebundle_it.properties +12 -3
  141. package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
  142. package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
  143. package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
  144. package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
  145. package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
  146. package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
  147. package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
  148. package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
  149. package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
  150. package/src/sap/fe/macros/messagebundle_no.properties +12 -3
  151. package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
  152. package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
  153. package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
  154. package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
  155. package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
  156. package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
  157. package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
  158. package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
  159. package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
  160. package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
  161. package/src/sap/fe/macros/messagebundle_th.properties +11 -2
  162. package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
  163. package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
  164. package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
  165. package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
  166. package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
  167. package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
  168. package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
  169. package/src/sap/fe/macros/table/Action.js +15 -2
  170. package/src/sap/fe/macros/table/Action.ts +11 -1
  171. package/src/sap/fe/macros/table/ActionGroup.js +15 -2
  172. package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
  173. package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
  174. package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
  175. package/src/sap/fe/macros/table/ActionOverride.js +14 -2
  176. package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
  177. package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
  178. package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
  179. package/src/sap/fe/macros/table/MdcTableTemplate.js +91 -10
  180. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +131 -10
  181. package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
  182. package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
  183. package/src/sap/fe/macros/table/Table.block.js +70 -29
  184. package/src/sap/fe/macros/table/Table.block.tsx +65 -12
  185. package/src/sap/fe/macros/table/TableAPI.js +169 -131
  186. package/src/sap/fe/macros/table/TableAPI.ts +58 -28
  187. package/src/sap/fe/macros/table/TableDefinition.js +19 -2
  188. package/src/sap/fe/macros/table/TableDefinition.ts +17 -1
  189. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +4 -3
  190. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +8 -9
  191. package/src/sap/fe/macros/table/TableHelper.js +5 -2
  192. package/src/sap/fe/macros/table/TableHelper.ts +5 -2
  193. package/src/sap/fe/macros/table/TableRuntime.js +2 -2
  194. package/src/sap/fe/macros/table/TableRuntime.ts +4 -6
  195. package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
  196. package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
  197. package/src/sap/fe/macros/table/delegates/TableDelegate.js +67 -26
  198. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +108 -118
  199. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +2 -2
  200. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +1 -1
  201. package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
  202. package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
  203. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +6 -5
  204. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +10 -4
  205. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
  206. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
  207. package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
  208. package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
  209. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
  210. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
  211. package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
  212. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
  213. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
  214. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
  215. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
  216. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
  217. package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/util/JSTokenizer", "sap/fe/base/BindingToolkit", "sap/fe/core/CommonUtils", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/PropertyFormatters", "sap/fe/core/type/FiscalDate", "sap/fe/macros/CommonHelper", "sap/ui/model/odata/v4/AnnotationHelper"], function (JSTokenizer, BindingToolkit, CommonUtils, DataModelPathHelper, PropertyFormatters, FiscalDate, CommonHelper, AnnotationHelper) {
5
+ sap.ui.define(["sap/base/util/JSTokenizer", "sap/fe/base/BindingToolkit", "sap/fe/core/CommonUtils", "sap/fe/core/converters/controls/Common/filter/FilterRestrictions", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/PropertyFormatters", "sap/fe/core/type/FiscalDate", "sap/fe/macros/CommonHelper", "sap/ui/model/odata/v4/AnnotationHelper"], function (JSTokenizer, BindingToolkit, CommonUtils, FilterRestrictions, MetaModelConverter, DataModelPathHelper, PropertyFormatters, FiscalDate, CommonHelper, AnnotationHelper) {
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
@@ -30,7 +30,8 @@ sap.ui.define(["sap/base/util/JSTokenizer", "sap/fe/base/BindingToolkit", "sap/f
30
30
  } else {
31
31
  property = model.getObject(`${propertyPath}@sapui.name`);
32
32
  }
33
- const oFR = CommonUtils.getFilterRestrictionsByPath(propertyLocationPath, model);
33
+ const dataModel = MetaModelConverter.getInvolvedDataModelObjects(model.getContext(propertyLocationPath));
34
+ const oFR = FilterRestrictions.getFilterRestrictionsByDataModel(dataModel);
34
35
  required = oFR?.RequiredProperties?.includes(property);
35
36
  }
36
37
  return required;
@@ -57,7 +58,8 @@ sap.ui.define(["sap/base/util/JSTokenizer", "sap/fe/base/BindingToolkit", "sap/f
57
58
  } else {
58
59
  property = model.getObject(`${propertyPath}@sapui.name`);
59
60
  }
60
- const filterRestrictions = CommonUtils.getFilterRestrictionsByPath(propertyLocationPath, model);
61
+ const dataModel = MetaModelConverter.getInvolvedDataModelObjects(model.getContext(propertyLocationPath));
62
+ const filterRestrictions = FilterRestrictions.getFilterRestrictionsByDataModel(dataModel);
61
63
  let propertyInfo = model.getObject(`${propertyLocationPath}/${property}`);
62
64
  if (!propertyInfo) {
63
65
  propertyInfo = model.getObject(propertyPath);
@@ -177,4 +179,4 @@ sap.ui.define(["sap/base/util/JSTokenizer", "sap/fe/base/BindingToolkit", "sap/f
177
179
  _exports.getPlaceholder = getPlaceholder;
178
180
  return _exports;
179
181
  }, false);
180
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1JlcXVpcmVkSW5GaWx0ZXIiLCJwYXRoIiwiYW5ub3RhdGlvbkludGVyZmFjZSIsIm1vZGVsIiwiY29udGV4dCIsImdldE1vZGVsIiwicHJvcGVydHlQYXRoIiwiZ2V0UGF0aCIsInByb3BlcnR5TG9jYXRpb25QYXRoIiwiQ29tbW9uSGVscGVyIiwiZ2V0TG9jYXRpb25Gb3JQcm9wZXJ0eVBhdGgiLCJwcm9wZXJ0eSIsInJlcXVpcmVkIiwiZ2V0T2JqZWN0Iiwib0ZSIiwiQ29tbW9uVXRpbHMiLCJnZXRGaWx0ZXJSZXN0cmljdGlvbnNCeVBhdGgiLCJSZXF1aXJlZFByb3BlcnRpZXMiLCJpbmNsdWRlcyIsIl9leHBvcnRzIiwibWF4Q29uZGl0aW9ucyIsIm1heCIsImZpbHRlclJlc3RyaWN0aW9ucyIsInByb3BlcnR5SW5mbyIsIiRUeXBlIiwiRmlsdGVyQWxsb3dlZEV4cHJlc3Npb25zIiwiYWxsb3dlZEV4cHJlc3Npb24iLCJnZXRTcGVjaWZpY0FsbG93ZWRFeHByZXNzaW9uIiwiZ2V0Q29uZGl0aW9uc0JpbmRpbmciLCJkYXRhTW9kZWxPYmplY3RQYXRoIiwicmVsYXRpdmVQcm9wZXJ0eVBhdGgiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiY29tcGlsZUV4cHJlc3Npb24iLCJwYXRoSW5Nb2RlbCIsImNvbnN0cmFpbnRzIiwidmFsdWUiLCJBbm5vdGF0aW9uSGVscGVyIiwiZm9ybWF0IiwibWF0Y2hlcyIsIm1hdGNoIiwicHJvcGVydHlDb25zdHJhaW50cyIsIkpTVG9rZW5pemVyIiwicGFyc2VKUyIsIlY0IiwibnVsbGFibGUiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiSlNPTiIsInN0cmluZ2lmeSIsInJlcGxhY2VBbGwiLCJmb3JtYXRPcHRpb25zIiwiaGFzT3duUHJvcGVydHkiLCIkTnVsbGFibGUiLCJhcmd1bWVudHMiLCJwYXJzZUtlZXBzRW1wdHlTdHJpbmciLCJmaXNjYWxUeXBlIiwiZ2V0RmlzY2FsVHlwZSIsImdldFByb3BlcnR5IiwiZ2V0RGF0YVR5cGUiLCJ0eXBlIiwidHlwZU1hcHBpbmciLCJFRE1fVFlQRV9NQVBQSU5HIiwiZ2V0UGxhY2Vob2xkZXIiLCJGaXNjYWxEYXRlIiwiZ2V0UGF0dGVybiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmlsdGVyRmllbGRIZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IEpTVG9rZW5pemVyIGZyb20gXCJzYXAvYmFzZS91dGlsL0pTVG9rZW5pemVyXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgRURNX1RZUEVfTUFQUElORywgZ2V0RmlzY2FsVHlwZSwgcGF0aEluTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRQcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5Rm9ybWF0dGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBDb21wdXRlZEFubm90YXRpb25JbnRlcmZhY2UsIE1ldGFNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCBGaXNjYWxEYXRlIGZyb20gXCJzYXAvZmUvY29yZS90eXBlL0Zpc2NhbERhdGVcIjtcbmltcG9ydCBDb21tb25IZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29tbW9uSGVscGVyXCI7XG5pbXBvcnQgQW5ub3RhdGlvbkhlbHBlciBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0Fubm90YXRpb25IZWxwZXJcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvcGVydHkgd2l0aCB0aGUgZ2l2ZW4gcGF0aCBpcyByZXF1aXJlZCBpbiB0aGUgZmlsdGVyIGZvciB0aGUgZ2l2ZW4gYW5ub3RhdGlvbiBpbnRlcmZhY2UuXG4gKiBAcGFyYW0gcGF0aCBQcm9wZXJ0eSBwYXRoIC0gaWdub3JlZCB3aGVuIHByb3ZpZGVkIGFzIHN0cmluZ1xuICogQHBhcmFtIGFubm90YXRpb25JbnRlcmZhY2UgU3RydWN0dXJlIHJldHVybmVkIGJ5IHRoZSBPRGF0YU1ldGFNb2RlbCB3aGVuIHVzaW5nIHRoZSBAQCBvcGVyYXRvciBpbiBYTUwgdGVtcGxhdGVzXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgdHJ1ZSBpZiB0aGUgZ2l2ZW4gaW5wdXQgaXMgcmVxdWlyZCBmb3IgZmlsdGVyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JlcXVpcmVkSW5GaWx0ZXIocGF0aDogc3RyaW5nIHwgdW5rbm93biwgYW5ub3RhdGlvbkludGVyZmFjZTogQ29tcHV0ZWRBbm5vdGF0aW9uSW50ZXJmYWNlKTogYm9vbGVhbiB7XG5cdGNvbnN0IG1vZGVsID0gYW5ub3RhdGlvbkludGVyZmFjZS5jb250ZXh0LmdldE1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdGNvbnN0IHByb3BlcnR5UGF0aCA9IGFubm90YXRpb25JbnRlcmZhY2UuY29udGV4dC5nZXRQYXRoKCk7XG5cdGNvbnN0IHByb3BlcnR5TG9jYXRpb25QYXRoID0gQ29tbW9uSGVscGVyLmdldExvY2F0aW9uRm9yUHJvcGVydHlQYXRoKG1vZGVsLCBwcm9wZXJ0eVBhdGgpO1xuXG5cdGxldCBwcm9wZXJ0eTogc3RyaW5nO1xuXHRsZXQgcmVxdWlyZWQgPSBtb2RlbC5nZXRPYmplY3QoYCR7cHJvcGVydHlMb2NhdGlvblBhdGh9L0Bjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuUmVzdWx0Q29udGV4dGApO1xuXG5cdGlmICghcmVxdWlyZWQpIHtcblx0XHRpZiAodHlwZW9mIHBhdGggPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdHByb3BlcnR5ID0gcGF0aDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cHJvcGVydHkgPSBtb2RlbC5nZXRPYmplY3QoYCR7cHJvcGVydHlQYXRofUBzYXB1aS5uYW1lYCk7XG5cdFx0fVxuXHRcdGNvbnN0IG9GUiA9IENvbW1vblV0aWxzLmdldEZpbHRlclJlc3RyaWN0aW9uc0J5UGF0aChwcm9wZXJ0eUxvY2F0aW9uUGF0aCwgbW9kZWwpO1xuXHRcdHJlcXVpcmVkID0gb0ZSPy5SZXF1aXJlZFByb3BlcnRpZXM/LmluY2x1ZGVzKHByb3BlcnR5KTtcblx0fVxuXHRyZXR1cm4gcmVxdWlyZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25kaXRpb25zIGZvciB0aGUgZ2l2ZW4gcGF0aCBhbmQgZ2l2ZW4gYW5ub3RhdGlvbiBpbnRlcmZhY2UuXG4gKiBAcGFyYW0gcGF0aCBQcm9wZXJ0eSBwYXRoIC0gaWdub3JlZCB3aGVuIHByb3ZpZGVkIGFzIHN0cmluZ1xuICogQHBhcmFtIGFubm90YXRpb25JbnRlcmZhY2UgU3RydWN0dXJlIHJldHVybmVkIGJ5IHRoZSBPRGF0YU1ldGFNb2RlbCB3aGVuIHVzaW5nIHRoZSBAQCBvcGVyYXRvciBpbiBYTUwgdGVtcGxhdGVzXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIG1heGltdW0gYWxsb3dlZCBjb25kaXRpb25zIG9yIC0xIGlmIHRoZXJlIGlzIG5vIGxpbWl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWF4Q29uZGl0aW9ucyhwYXRoOiBzdHJpbmcgfCB1bmtub3duLCBhbm5vdGF0aW9uSW50ZXJmYWNlOiBDb21wdXRlZEFubm90YXRpb25JbnRlcmZhY2UpOiBudW1iZXIge1xuXHRjb25zdCBtb2RlbCA9IGFubm90YXRpb25JbnRlcmZhY2UuY29udGV4dC5nZXRNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHRjb25zdCBwcm9wZXJ0eVBhdGggPSBhbm5vdGF0aW9uSW50ZXJmYWNlLmNvbnRleHQuZ2V0UGF0aCgpO1xuXHRjb25zdCBwcm9wZXJ0eUxvY2F0aW9uUGF0aCA9IENvbW1vbkhlbHBlci5nZXRMb2NhdGlvbkZvclByb3BlcnR5UGF0aChtb2RlbCwgcHJvcGVydHlQYXRoKTtcblxuXHRsZXQgcHJvcGVydHk6IHN0cmluZztcblx0bGV0IG1heCA9IC0xO1xuXG5cdGlmIChtb2RlbC5nZXRPYmplY3QoYCR7cHJvcGVydHlMb2NhdGlvblBhdGh9L0Bjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuUmVzdWx0Q29udGV4dGApID09PSB0cnVlKSB7XG5cdFx0cmV0dXJuIDE7XG5cdH1cblxuXHRpZiAodHlwZW9mIHBhdGggPT09IFwic3RyaW5nXCIpIHtcblx0XHRwcm9wZXJ0eSA9IHBhdGg7XG5cdH0gZWxzZSB7XG5cdFx0cHJvcGVydHkgPSBtb2RlbC5nZXRPYmplY3QoYCR7cHJvcGVydHlQYXRofUBzYXB1aS5uYW1lYCk7XG5cdH1cblx0Y29uc3QgZmlsdGVyUmVzdHJpY3Rpb25zID0gQ29tbW9uVXRpbHMuZ2V0RmlsdGVyUmVzdHJpY3Rpb25zQnlQYXRoKHByb3BlcnR5TG9jYXRpb25QYXRoLCBtb2RlbCk7XG5cdGxldCBwcm9wZXJ0eUluZm8gPSBtb2RlbC5nZXRPYmplY3QoYCR7cHJvcGVydHlMb2NhdGlvblBhdGh9LyR7cHJvcGVydHl9YCk7XG5cdGlmICghcHJvcGVydHlJbmZvKSB7XG5cdFx0cHJvcGVydHlJbmZvID0gbW9kZWwuZ2V0T2JqZWN0KHByb3BlcnR5UGF0aCk7XG5cdH1cblx0aWYgKHByb3BlcnR5SW5mby4kVHlwZSA9PT0gXCJFZG0uQm9vbGVhblwiKSB7XG5cdFx0bWF4ID0gMTtcblx0fSBlbHNlIGlmIChmaWx0ZXJSZXN0cmljdGlvbnM/LkZpbHRlckFsbG93ZWRFeHByZXNzaW9ucz8uW3Byb3BlcnR5XSkge1xuXHRcdGNvbnN0IGFsbG93ZWRFeHByZXNzaW9uID0gQ29tbW9uVXRpbHMuZ2V0U3BlY2lmaWNBbGxvd2VkRXhwcmVzc2lvbihmaWx0ZXJSZXN0cmljdGlvbnMuRmlsdGVyQWxsb3dlZEV4cHJlc3Npb25zW3Byb3BlcnR5XSk7XG5cdFx0aWYgKGFsbG93ZWRFeHByZXNzaW9uID09PSBcIlNpbmdsZVZhbHVlXCIgfHwgYWxsb3dlZEV4cHJlc3Npb24gPT09IFwiU2luZ2xlUmFuZ2VcIikge1xuXHRcdFx0bWF4ID0gMTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG1heDtcbn1cblxuLyoqXG4gKiBUbyBDcmVhdGUgYmluZGluZyBmb3IgbWRjOmZpbHRlcmZpZWxkIGNvbmRpdGlvbnMuXG4gKiBAcGFyYW0gZGF0YU1vZGVsT2JqZWN0UGF0aCBEYXRhIE1vZGVsIE9iamVjdCBwYXRoIHRvIGZpbHRlciBmaWVsZCBwcm9wZXJ0eVxuICogQHJldHVybnMgRXhwcmVzc2lvbiBiaW5kaW5nIGZvciBjb25kaXRpb25zIGZvciB0aGUgZmllbGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmRpdGlvbnNCaW5kaW5nKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRjb25zdCByZWxhdGl2ZVByb3BlcnR5UGF0aCA9IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsT2JqZWN0UGF0aCwgZmFsc2UsIHRydWUpO1xuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24ocGF0aEluTW9kZWwoYC9jb25kaXRpb25zLyR7cmVsYXRpdmVQcm9wZXJ0eVBhdGh9YCwgXCIkZmlsdGVyc1wiKSk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBjb250cmFpbnRzIHN0cmluZyBmb3IgdGhlIGdpdmVuIHByb3BlcnR5IGFuZCBpbnRlcmZhY2UuXG4gKiBAcGFyYW0gY29udGV4dFxuICogQHBhcmFtIGFubm90YXRpb25JbnRlcmZhY2UgU3RydWN0dXJlIHJldHVybmVkIGJ5IHRoZSBPRGF0YU1ldGFNb2RlbCB3aGVuIHVzaW5nIHRoZSBAQCBvcGVyYXRvciBpbiBYTUwgdGVtcGxhdGVzXG4gKiBAcmV0dXJucyBDb25zdHJhaW50cyBhcyBzdHJpbmcgaWYgYXZhaWxhYmxlIG90aGVyd2lzZSB1bmRlZmluZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cmFpbnRzKGNvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsIGFubm90YXRpb25JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IHZhbHVlID0gKEFubm90YXRpb25IZWxwZXIuZm9ybWF0KGNvbnRleHQsIGFubm90YXRpb25JbnRlcmZhY2UpIGFzIHN0cmluZykgfHwgXCJcIjtcblx0Y29uc3QgbWF0Y2hlcyA9IHZhbHVlLm1hdGNoKC9jb25zdHJhaW50czouKj8oey4qP30pLyk7XG5cdGNvbnN0IHByb3BlcnR5Q29uc3RyYWludHMgPSBKU1Rva2VuaXplci5wYXJzZUpTKG1hdGNoZXM/LlsxXSB8fCBcInt9XCIpO1xuXHQvLyBXb3JrYXJvdW5kLiBBZGQgXCJWNDogdHJ1ZVwiIHRvIERhdGVUaW1lT2Zmc2V0IGNvbnN0cmFpbnRzLiBBbm5vdGF0aW9uSGVscGVyIGlzIG5vdCBhd2FyZSBvZiB0aGlzIGZsYWcuXG5cdGlmICh2YWx1ZS5pbmNsdWRlcyhcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkRhdGVUaW1lT2Zmc2V0XCIpKSB7XG5cdFx0Ly8gRW5zdXJlIHRoYXQgVjQ6dHJ1ZSBpcyAgdGhlcmUuIFdpdGggdGhlIG9wZW5VSTUgQkxJOiBDUE9VSTVPREFUQVY0LTIxMzEgdGhlIGNvbnN0cmFpbnRzIGFyZSBhbHJlYWR5IGluY2x1ZGUgJ1Y0Jzp0cnVlXG5cdFx0cHJvcGVydHlDb25zdHJhaW50cy5WNCA9IHRydWU7XG5cdH1cblx0Ly8gUmVtb3ZlIHtudWxsYWJsZTpmYWxzZX0gZnJvbSB0aGUgY29uc3RyYWludHMgYXMgaXQgcHJldmVudHMgZnJvbSBoYXZpbmcgYW4gZW1wdHkgZmlsdGVyIGZpZWxkXG5cdC8vIGluIHRoZSBjYXNlIG9mIGEgc2luZ2xlLXZhbHVlIGZpbHRlclxuXHRpZiAocHJvcGVydHlDb25zdHJhaW50cy5udWxsYWJsZSA9PT0gZmFsc2UpIHtcblx0XHRkZWxldGUgcHJvcGVydHlDb25zdHJhaW50cy5udWxsYWJsZTtcblx0fVxuXHQvLyBVbmZvcnR1bmF0ZWx5LCBKU1Rva2VuaXplciBkb2VzIG5vdCBwcm92aWRlIGEgbWV0aG9kIHRvIHN0cmluZ2lmeSAocmV2ZXJzaW5nIHBhcnNlSlMpLlxuXHQvLyBVc2luZyBKU09OLnN0cmluZ2lmeSBhbmQgcmVwbGFjaW5nIGRvdWJsZSBxdW90ZXMgd2l0aCBzaW5nbGUgcXVvdGVzIHdvcmtzIGF0IGxlYXN0IGluIHRoZSBrbm93biBzaW1wbGUgY2FzZXMgKGZsYXQgb2JqZWN0cyBub3QgY29udGFpbmluZyBxdW90ZXMgaW4gcHJvcGVydHkgbmFtZXMgb3IgdmFsdWVzKS5cblx0Ly8gSWYgc3BlY2lhbCBjYXNlcyBzaG91bGQgb2NjdXIgaW4gZnV0dXJlLCB0aGlzIG1pZ2h0IG5lZWQgc29tZSBhZG9wdGlvbiAoZGVwZW5kaW5nIG9uIHRoZSByZXF1aXJlZCBzdHJpbmcgZm9ybWF0IGluIHRoYXQgY2FzZSkuXG5cdHJldHVybiBPYmplY3Qua2V5cyhwcm9wZXJ0eUNvbnN0cmFpbnRzKS5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiBKU09OLnN0cmluZ2lmeShwcm9wZXJ0eUNvbnN0cmFpbnRzKS5yZXBsYWNlQWxsKCdcIicsIFwiJ1wiKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGZvcm1hdCBvcHRpb25zIGFzIHN0cmluZyBmb3IgdGhlIGdpdmVuIHBhdGggYW5kIGdpdmVuIGFubm90YXRpb24gaW50ZXJmYWNlLlxuICogQHBhcmFtIGNvbnRleHRcbiAqIEBwYXJhbSBhbm5vdGF0aW9uSW50ZXJmYWNlIFN0cnVjdHVyZSByZXR1cm5lZCBieSB0aGUgT0RhdGFNZXRhTW9kZWwgd2hlbiB1c2luZyB0aGUgQEAgb3BlcmF0b3IgaW4gWE1MIHRlbXBsYXRlc1xuICogQHJldHVybnMgRm9ybWF0IG9wdGlvbnMgYXMgc3RyaW5nIGlmIGF2YWlsYWJsZSBvdGhlcndpc2UgdW5kZWZpbmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRPcHRpb25zKGNvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsIGFubm90YXRpb25JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdC8vIGFzIHRoZSBBbm5vdGF0aW9uIGhlbHBlciBhbHdheXMgcmV0dXJucyBcInBhcnNlS2VlcHNFbXB0eVN0cmluZzogdHJ1ZVwiIHdlIG5lZWQgdG8gcHJldmVudCB0aGlzIGluIGNhc2UgYSBwcm9wZXJ0eSAob2YgdHlwZSBzdHJpbmcpIGlzIG51bGxhYmxlXG5cdC8vIEZpbGxpbmcgYW5ub3RhdGlvbkludGVyZmFjZS5hcmd1bWVudHMgd2l0aCBhbiBhcnJheSB3aGVyZSB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIG51bGwsIGFuZCB0aGUgc2Vjb25kIGNvbnRhaW5zIHRoZSBcImV4cGVjdGVkXCJcblx0Ly8gcGFyc2VLZWVwc0VtcHR5U3RyaW5nIHZhbHVlIGZvbGxvd3MgYSBwcm9wb3NhbCBmcm9tIHRoZSBtb2RlbCBjb2xsZWFndWVzIHRvIFwib3ZlcnJ1bGVcIiB0aGUgYmVoYXZpb3Igb2YgdGhlIEFubm90YXRpb25IZWxwZXJcblx0aWYgKGNvbnRleHQuJFR5cGUgPT09IFwiRWRtLlN0cmluZ1wiKSB7XG5cdFx0aWYgKCFjb250ZXh0Lmhhc093blByb3BlcnR5KFwiJE51bGxhYmxlXCIpIHx8IGNvbnRleHQuJE51bGxhYmxlID09PSB0cnVlKSB7XG5cdFx0XHRhbm5vdGF0aW9uSW50ZXJmYWNlLmFyZ3VtZW50cyA9IFtudWxsLCB7IHBhcnNlS2VlcHNFbXB0eVN0cmluZzogZmFsc2UgfV07XG5cdFx0fVxuXHRcdGNvbnN0IGZpc2NhbFR5cGUgPSBnZXRGaXNjYWxUeXBlKGdldFByb3BlcnR5KGNvbnRleHQsIGFubm90YXRpb25JbnRlcmZhY2UpKTtcblx0XHRpZiAoZmlzY2FsVHlwZSkge1xuXHRcdFx0aWYgKCFhbm5vdGF0aW9uSW50ZXJmYWNlLmFyZ3VtZW50cykge1xuXHRcdFx0XHRhbm5vdGF0aW9uSW50ZXJmYWNlLmFyZ3VtZW50cyA9IFtudWxsLCB7fV07XG5cdFx0XHR9XG5cdFx0XHQoYW5ub3RhdGlvbkludGVyZmFjZS5hcmd1bWVudHNbMV0gYXMgeyBmaXNjYWxUeXBlPzogc3RyaW5nIH0pLmZpc2NhbFR5cGUgPSBmaXNjYWxUeXBlO1xuXHRcdH1cblx0fVxuXHRjb25zdCB2YWx1ZSA9IChBbm5vdGF0aW9uSGVscGVyLmZvcm1hdChjb250ZXh0LCBhbm5vdGF0aW9uSW50ZXJmYWNlKSBhcyBzdHJpbmcpIHx8IFwiXCI7XG5cdHJldHVybiB2YWx1ZS5tYXRjaCgvZm9ybWF0T3B0aW9uczouKj8oey4qP30pLyk/LlsxXSB8fCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2V0IHRoZSBkYXRhIHR5cGUgZm9yIGEgZ2l2ZW4gcHJvcGVydHkuXG4gKiBAcGFyYW0gcHJvcGVydHkgUHJvcGVydHkgaW5mb3JtYXRpb25cbiAqIEByZXR1cm5zIFR5cGUgYXMgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhVHlwZShwcm9wZXJ0eTogUHJvcGVydHkpOiBzdHJpbmcge1xuXHRpZiAocHJvcGVydHkudHlwZSA9PT0gXCJFZG0uU3RyaW5nXCIpIHtcblx0XHRjb25zdCBmaXNjYWxUeXBlID0gZ2V0RmlzY2FsVHlwZShwcm9wZXJ0eSk7XG5cdFx0aWYgKGZpc2NhbFR5cGUpIHtcblx0XHRcdHJldHVybiBcInNhcC5mZS5jb3JlLnR5cGUuRmlzY2FsRGF0ZVwiO1xuXHRcdH1cblx0fVxuXHRjb25zdCB0eXBlTWFwcGluZyA9IEVETV9UWVBFX01BUFBJTkdbcHJvcGVydHkudHlwZV07XG5cdHJldHVybiB0eXBlTWFwcGluZyA/IHR5cGVNYXBwaW5nLnR5cGUgOiBwcm9wZXJ0eS50eXBlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgcGxhY2Vob2xkZXIgb2YgcHJvcGVydGllcyBvZiB0eXBlIEVkbS5TdHJpbmcuXG4gKiBAcGFyYW0gcHJvcGVydHkgUHJvcGVydHkgaW5mb3JtYXRpb25cbiAqIEByZXR1cm5zIFBsYWNlaG9sZGVyIGFzIHN0cmluZyBpZiBhdmFpbGFibGUgb3RoZXJ3aXNlIHVuZGVmaW5lZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGxhY2Vob2xkZXIocHJvcGVydHk6IFByb3BlcnR5KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKHByb3BlcnR5LnR5cGUgPT09IFwiRWRtLlN0cmluZ1wiKSB7XG5cdFx0Y29uc3QgZmlzY2FsVHlwZSA9IGdldEZpc2NhbFR5cGUocHJvcGVydHkpO1xuXHRcdGlmIChmaXNjYWxUeXBlKSB7XG5cdFx0XHRyZXR1cm4gbmV3IEZpc2NhbERhdGUoeyBmaXNjYWxUeXBlIH0sIHt9KS5nZXRQYXR0ZXJuKCk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0VBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU0Esa0JBQWtCQSxDQUFDQyxJQUFzQixFQUFFQyxtQkFBZ0QsRUFB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
182
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1JlcXVpcmVkSW5GaWx0ZXIiLCJwYXRoIiwiYW5ub3RhdGlvbkludGVyZmFjZSIsIm1vZGVsIiwiY29udGV4dCIsImdldE1vZGVsIiwicHJvcGVydHlQYXRoIiwiZ2V0UGF0aCIsInByb3BlcnR5TG9jYXRpb25QYXRoIiwiQ29tbW9uSGVscGVyIiwiZ2V0TG9jYXRpb25Gb3JQcm9wZXJ0eVBhdGgiLCJwcm9wZXJ0eSIsInJlcXVpcmVkIiwiZ2V0T2JqZWN0IiwiZGF0YU1vZGVsIiwiTWV0YU1vZGVsQ29udmVydGVyIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZ2V0Q29udGV4dCIsIm9GUiIsIkZpbHRlclJlc3RyaWN0aW9ucyIsImdldEZpbHRlclJlc3RyaWN0aW9uc0J5RGF0YU1vZGVsIiwiUmVxdWlyZWRQcm9wZXJ0aWVzIiwiaW5jbHVkZXMiLCJfZXhwb3J0cyIsIm1heENvbmRpdGlvbnMiLCJtYXgiLCJmaWx0ZXJSZXN0cmljdGlvbnMiLCJwcm9wZXJ0eUluZm8iLCIkVHlwZSIsIkZpbHRlckFsbG93ZWRFeHByZXNzaW9ucyIsImFsbG93ZWRFeHByZXNzaW9uIiwiQ29tbW9uVXRpbHMiLCJnZXRTcGVjaWZpY0FsbG93ZWRFeHByZXNzaW9uIiwiZ2V0Q29uZGl0aW9uc0JpbmRpbmciLCJkYXRhTW9kZWxPYmplY3RQYXRoIiwicmVsYXRpdmVQcm9wZXJ0eVBhdGgiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiY29tcGlsZUV4cHJlc3Npb24iLCJwYXRoSW5Nb2RlbCIsImNvbnN0cmFpbnRzIiwidmFsdWUiLCJBbm5vdGF0aW9uSGVscGVyIiwiZm9ybWF0IiwibWF0Y2hlcyIsIm1hdGNoIiwicHJvcGVydHlDb25zdHJhaW50cyIsIkpTVG9rZW5pemVyIiwicGFyc2VKUyIsIlY0IiwibnVsbGFibGUiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiSlNPTiIsInN0cmluZ2lmeSIsInJlcGxhY2VBbGwiLCJmb3JtYXRPcHRpb25zIiwiaGFzT3duUHJvcGVydHkiLCIkTnVsbGFibGUiLCJhcmd1bWVudHMiLCJwYXJzZUtlZXBzRW1wdHlTdHJpbmciLCJmaXNjYWxUeXBlIiwiZ2V0RmlzY2FsVHlwZSIsImdldFByb3BlcnR5IiwiZ2V0RGF0YVR5cGUiLCJ0eXBlIiwidHlwZU1hcHBpbmciLCJFRE1fVFlQRV9NQVBQSU5HIiwiZ2V0UGxhY2Vob2xkZXIiLCJGaXNjYWxEYXRlIiwiZ2V0UGF0dGVybiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmlsdGVyRmllbGRIZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IEpTVG9rZW5pemVyIGZyb20gXCJzYXAvYmFzZS91dGlsL0pTVG9rZW5pemVyXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgRURNX1RZUEVfTUFQUElORywgZ2V0RmlzY2FsVHlwZSwgcGF0aEluTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBGaWx0ZXJSZXN0cmljdGlvbnMgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL2ZpbHRlci9GaWx0ZXJSZXN0cmljdGlvbnNcIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgUGFnZUNvbnRleHRQYXRoVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRQcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5Rm9ybWF0dGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBDb21wdXRlZEFubm90YXRpb25JbnRlcmZhY2UsIE1ldGFNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCBGaXNjYWxEYXRlIGZyb20gXCJzYXAvZmUvY29yZS90eXBlL0Zpc2NhbERhdGVcIjtcbmltcG9ydCBDb21tb25IZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29tbW9uSGVscGVyXCI7XG5pbXBvcnQgQW5ub3RhdGlvbkhlbHBlciBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0Fubm90YXRpb25IZWxwZXJcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvcGVydHkgd2l0aCB0aGUgZ2l2ZW4gcGF0aCBpcyByZXF1aXJlZCBpbiB0aGUgZmlsdGVyIGZvciB0aGUgZ2l2ZW4gYW5ub3RhdGlvbiBpbnRlcmZhY2UuXG4gKiBAcGFyYW0gcGF0aCBQcm9wZXJ0eSBwYXRoIC0gaWdub3JlZCB3aGVuIHByb3ZpZGVkIGFzIHN0cmluZ1xuICogQHBhcmFtIGFubm90YXRpb25JbnRlcmZhY2UgU3RydWN0dXJlIHJldHVybmVkIGJ5IHRoZSBPRGF0YU1ldGFNb2RlbCB3aGVuIHVzaW5nIHRoZSBAQCBvcGVyYXRvciBpbiBYTUwgdGVtcGxhdGVzXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgdHJ1ZSBpZiB0aGUgZ2l2ZW4gaW5wdXQgaXMgcmVxdWlyZCBmb3IgZmlsdGVyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JlcXVpcmVkSW5GaWx0ZXIocGF0aDogc3RyaW5nIHwgdW5rbm93biwgYW5ub3RhdGlvbkludGVyZmFjZTogQ29tcHV0ZWRBbm5vdGF0aW9uSW50ZXJmYWNlKTogYm9vbGVhbiB7XG5cdGNvbnN0IG1vZGVsID0gYW5ub3RhdGlvbkludGVyZmFjZS5jb250ZXh0LmdldE1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdGNvbnN0IHByb3BlcnR5UGF0aCA9IGFubm90YXRpb25JbnRlcmZhY2UuY29udGV4dC5nZXRQYXRoKCk7XG5cdGNvbnN0IHByb3BlcnR5TG9jYXRpb25QYXRoID0gQ29tbW9uSGVscGVyLmdldExvY2F0aW9uRm9yUHJvcGVydHlQYXRoKG1vZGVsLCBwcm9wZXJ0eVBhdGgpO1xuXG5cdGxldCBwcm9wZXJ0eTogc3RyaW5nO1xuXHRsZXQgcmVxdWlyZWQgPSBtb2RlbC5nZXRPYmplY3QoYCR7cHJvcGVydHlMb2NhdGlvblBhdGh9L0Bjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuUmVzdWx0Q29udGV4dGApO1xuXG5cdGlmICghcmVxdWlyZWQpIHtcblx0XHRpZiAodHlwZW9mIHBhdGggPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdHByb3BlcnR5ID0gcGF0aDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cHJvcGVydHkgPSBtb2RlbC5nZXRPYmplY3QoYCR7cHJvcGVydHlQYXRofUBzYXB1aS5uYW1lYCk7XG5cdFx0fVxuXHRcdGNvbnN0IGRhdGFNb2RlbCA9IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMobW9kZWwuZ2V0Q29udGV4dChwcm9wZXJ0eUxvY2F0aW9uUGF0aCkpO1xuXHRcdGNvbnN0IG9GUiA9IEZpbHRlclJlc3RyaWN0aW9ucy5nZXRGaWx0ZXJSZXN0cmljdGlvbnNCeURhdGFNb2RlbChkYXRhTW9kZWwgYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+KTtcblx0XHRyZXF1aXJlZCA9IG9GUj8uUmVxdWlyZWRQcm9wZXJ0aWVzPy5pbmNsdWRlcyhwcm9wZXJ0eSk7XG5cdH1cblx0cmV0dXJuIHJlcXVpcmVkO1xufVxuXG4vKipcbiAqIENoZWNrcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uZGl0aW9ucyBmb3IgdGhlIGdpdmVuIHBhdGggYW5kIGdpdmVuIGFubm90YXRpb24gaW50ZXJmYWNlLlxuICogQHBhcmFtIHBhdGggUHJvcGVydHkgcGF0aCAtIGlnbm9yZWQgd2hlbiBwcm92aWRlZCBhcyBzdHJpbmdcbiAqIEBwYXJhbSBhbm5vdGF0aW9uSW50ZXJmYWNlIFN0cnVjdHVyZSByZXR1cm5lZCBieSB0aGUgT0RhdGFNZXRhTW9kZWwgd2hlbiB1c2luZyB0aGUgQEAgb3BlcmF0b3IgaW4gWE1MIHRlbXBsYXRlc1xuICogQHJldHVybnMgVGhlIG51bWJlciBvZiBtYXhpbXVtIGFsbG93ZWQgY29uZGl0aW9ucyBvciAtMSBpZiB0aGVyZSBpcyBubyBsaW1pdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1heENvbmRpdGlvbnMocGF0aDogc3RyaW5nIHwgdW5rbm93biwgYW5ub3RhdGlvbkludGVyZmFjZTogQ29tcHV0ZWRBbm5vdGF0aW9uSW50ZXJmYWNlKTogbnVtYmVyIHtcblx0Y29uc3QgbW9kZWwgPSBhbm5vdGF0aW9uSW50ZXJmYWNlLmNvbnRleHQuZ2V0TW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0Y29uc3QgcHJvcGVydHlQYXRoID0gYW5ub3RhdGlvbkludGVyZmFjZS5jb250ZXh0LmdldFBhdGgoKTtcblx0Y29uc3QgcHJvcGVydHlMb2NhdGlvblBhdGggPSBDb21tb25IZWxwZXIuZ2V0TG9jYXRpb25Gb3JQcm9wZXJ0eVBhdGgobW9kZWwsIHByb3BlcnR5UGF0aCk7XG5cblx0bGV0IHByb3BlcnR5OiBzdHJpbmc7XG5cdGxldCBtYXggPSAtMTtcblxuXHRpZiAobW9kZWwuZ2V0T2JqZWN0KGAke3Byb3BlcnR5TG9jYXRpb25QYXRofS9AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlJlc3VsdENvbnRleHRgKSA9PT0gdHJ1ZSkge1xuXHRcdHJldHVybiAxO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBwYXRoID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cHJvcGVydHkgPSBwYXRoO1xuXHR9IGVsc2Uge1xuXHRcdHByb3BlcnR5ID0gbW9kZWwuZ2V0T2JqZWN0KGAke3Byb3BlcnR5UGF0aH1Ac2FwdWkubmFtZWApO1xuXHR9XG5cdGNvbnN0IGRhdGFNb2RlbCA9IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMobW9kZWwuZ2V0Q29udGV4dChwcm9wZXJ0eUxvY2F0aW9uUGF0aCkpO1xuXHRjb25zdCBmaWx0ZXJSZXN0cmljdGlvbnMgPSBGaWx0ZXJSZXN0cmljdGlvbnMuZ2V0RmlsdGVyUmVzdHJpY3Rpb25zQnlEYXRhTW9kZWwoZGF0YU1vZGVsIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pik7XG5cdGxldCBwcm9wZXJ0eUluZm8gPSBtb2RlbC5nZXRPYmplY3QoYCR7cHJvcGVydHlMb2NhdGlvblBhdGh9LyR7cHJvcGVydHl9YCk7XG5cdGlmICghcHJvcGVydHlJbmZvKSB7XG5cdFx0cHJvcGVydHlJbmZvID0gbW9kZWwuZ2V0T2JqZWN0KHByb3BlcnR5UGF0aCk7XG5cdH1cblx0aWYgKHByb3BlcnR5SW5mby4kVHlwZSA9PT0gXCJFZG0uQm9vbGVhblwiKSB7XG5cdFx0bWF4ID0gMTtcblx0fSBlbHNlIGlmIChmaWx0ZXJSZXN0cmljdGlvbnM/LkZpbHRlckFsbG93ZWRFeHByZXNzaW9ucz8uW3Byb3BlcnR5XSkge1xuXHRcdGNvbnN0IGFsbG93ZWRFeHByZXNzaW9uID0gQ29tbW9uVXRpbHMuZ2V0U3BlY2lmaWNBbGxvd2VkRXhwcmVzc2lvbihmaWx0ZXJSZXN0cmljdGlvbnMuRmlsdGVyQWxsb3dlZEV4cHJlc3Npb25zW3Byb3BlcnR5XSk7XG5cdFx0aWYgKGFsbG93ZWRFeHByZXNzaW9uID09PSBcIlNpbmdsZVZhbHVlXCIgfHwgYWxsb3dlZEV4cHJlc3Npb24gPT09IFwiU2luZ2xlUmFuZ2VcIikge1xuXHRcdFx0bWF4ID0gMTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG1heDtcbn1cblxuLyoqXG4gKiBUbyBDcmVhdGUgYmluZGluZyBmb3IgbWRjOmZpbHRlcmZpZWxkIGNvbmRpdGlvbnMuXG4gKiBAcGFyYW0gZGF0YU1vZGVsT2JqZWN0UGF0aCBEYXRhIE1vZGVsIE9iamVjdCBwYXRoIHRvIGZpbHRlciBmaWVsZCBwcm9wZXJ0eVxuICogQHJldHVybnMgRXhwcmVzc2lvbiBiaW5kaW5nIGZvciBjb25kaXRpb25zIGZvciB0aGUgZmllbGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmRpdGlvbnNCaW5kaW5nKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRjb25zdCByZWxhdGl2ZVByb3BlcnR5UGF0aCA9IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsT2JqZWN0UGF0aCwgZmFsc2UsIHRydWUpO1xuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24ocGF0aEluTW9kZWwoYC9jb25kaXRpb25zLyR7cmVsYXRpdmVQcm9wZXJ0eVBhdGh9YCwgXCIkZmlsdGVyc1wiKSk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBjb250cmFpbnRzIHN0cmluZyBmb3IgdGhlIGdpdmVuIHByb3BlcnR5IGFuZCBpbnRlcmZhY2UuXG4gKiBAcGFyYW0gY29udGV4dFxuICogQHBhcmFtIGFubm90YXRpb25JbnRlcmZhY2UgU3RydWN0dXJlIHJldHVybmVkIGJ5IHRoZSBPRGF0YU1ldGFNb2RlbCB3aGVuIHVzaW5nIHRoZSBAQCBvcGVyYXRvciBpbiBYTUwgdGVtcGxhdGVzXG4gKiBAcmV0dXJucyBDb25zdHJhaW50cyBhcyBzdHJpbmcgaWYgYXZhaWxhYmxlIG90aGVyd2lzZSB1bmRlZmluZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cmFpbnRzKGNvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsIGFubm90YXRpb25JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IHZhbHVlID0gKEFubm90YXRpb25IZWxwZXIuZm9ybWF0KGNvbnRleHQsIGFubm90YXRpb25JbnRlcmZhY2UpIGFzIHN0cmluZykgfHwgXCJcIjtcblx0Y29uc3QgbWF0Y2hlcyA9IHZhbHVlLm1hdGNoKC9jb25zdHJhaW50czouKj8oey4qP30pLyk7XG5cdGNvbnN0IHByb3BlcnR5Q29uc3RyYWludHMgPSBKU1Rva2VuaXplci5wYXJzZUpTKG1hdGNoZXM/LlsxXSB8fCBcInt9XCIpO1xuXHQvLyBXb3JrYXJvdW5kLiBBZGQgXCJWNDogdHJ1ZVwiIHRvIERhdGVUaW1lT2Zmc2V0IGNvbnN0cmFpbnRzLiBBbm5vdGF0aW9uSGVscGVyIGlzIG5vdCBhd2FyZSBvZiB0aGlzIGZsYWcuXG5cdGlmICh2YWx1ZS5pbmNsdWRlcyhcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkRhdGVUaW1lT2Zmc2V0XCIpKSB7XG5cdFx0Ly8gRW5zdXJlIHRoYXQgVjQ6dHJ1ZSBpcyAgdGhlcmUuIFdpdGggdGhlIG9wZW5VSTUgQkxJOiBDUE9VSTVPREFUQVY0LTIxMzEgdGhlIGNvbnN0cmFpbnRzIGFyZSBhbHJlYWR5IGluY2x1ZGUgJ1Y0Jzp0cnVlXG5cdFx0cHJvcGVydHlDb25zdHJhaW50cy5WNCA9IHRydWU7XG5cdH1cblx0Ly8gUmVtb3ZlIHtudWxsYWJsZTpmYWxzZX0gZnJvbSB0aGUgY29uc3RyYWludHMgYXMgaXQgcHJldmVudHMgZnJvbSBoYXZpbmcgYW4gZW1wdHkgZmlsdGVyIGZpZWxkXG5cdC8vIGluIHRoZSBjYXNlIG9mIGEgc2luZ2xlLXZhbHVlIGZpbHRlclxuXHRpZiAocHJvcGVydHlDb25zdHJhaW50cy5udWxsYWJsZSA9PT0gZmFsc2UpIHtcblx0XHRkZWxldGUgcHJvcGVydHlDb25zdHJhaW50cy5udWxsYWJsZTtcblx0fVxuXHQvLyBVbmZvcnR1bmF0ZWx5LCBKU1Rva2VuaXplciBkb2VzIG5vdCBwcm92aWRlIGEgbWV0aG9kIHRvIHN0cmluZ2lmeSAocmV2ZXJzaW5nIHBhcnNlSlMpLlxuXHQvLyBVc2luZyBKU09OLnN0cmluZ2lmeSBhbmQgcmVwbGFjaW5nIGRvdWJsZSBxdW90ZXMgd2l0aCBzaW5nbGUgcXVvdGVzIHdvcmtzIGF0IGxlYXN0IGluIHRoZSBrbm93biBzaW1wbGUgY2FzZXMgKGZsYXQgb2JqZWN0cyBub3QgY29udGFpbmluZyBxdW90ZXMgaW4gcHJvcGVydHkgbmFtZXMgb3IgdmFsdWVzKS5cblx0Ly8gSWYgc3BlY2lhbCBjYXNlcyBzaG91bGQgb2NjdXIgaW4gZnV0dXJlLCB0aGlzIG1pZ2h0IG5lZWQgc29tZSBhZG9wdGlvbiAoZGVwZW5kaW5nIG9uIHRoZSByZXF1aXJlZCBzdHJpbmcgZm9ybWF0IGluIHRoYXQgY2FzZSkuXG5cdHJldHVybiBPYmplY3Qua2V5cyhwcm9wZXJ0eUNvbnN0cmFpbnRzKS5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiBKU09OLnN0cmluZ2lmeShwcm9wZXJ0eUNvbnN0cmFpbnRzKS5yZXBsYWNlQWxsKCdcIicsIFwiJ1wiKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGZvcm1hdCBvcHRpb25zIGFzIHN0cmluZyBmb3IgdGhlIGdpdmVuIHBhdGggYW5kIGdpdmVuIGFubm90YXRpb24gaW50ZXJmYWNlLlxuICogQHBhcmFtIGNvbnRleHRcbiAqIEBwYXJhbSBhbm5vdGF0aW9uSW50ZXJmYWNlIFN0cnVjdHVyZSByZXR1cm5lZCBieSB0aGUgT0RhdGFNZXRhTW9kZWwgd2hlbiB1c2luZyB0aGUgQEAgb3BlcmF0b3IgaW4gWE1MIHRlbXBsYXRlc1xuICogQHJldHVybnMgRm9ybWF0IG9wdGlvbnMgYXMgc3RyaW5nIGlmIGF2YWlsYWJsZSBvdGhlcndpc2UgdW5kZWZpbmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRPcHRpb25zKGNvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsIGFubm90YXRpb25JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdC8vIGFzIHRoZSBBbm5vdGF0aW9uIGhlbHBlciBhbHdheXMgcmV0dXJucyBcInBhcnNlS2VlcHNFbXB0eVN0cmluZzogdHJ1ZVwiIHdlIG5lZWQgdG8gcHJldmVudCB0aGlzIGluIGNhc2UgYSBwcm9wZXJ0eSAob2YgdHlwZSBzdHJpbmcpIGlzIG51bGxhYmxlXG5cdC8vIEZpbGxpbmcgYW5ub3RhdGlvbkludGVyZmFjZS5hcmd1bWVudHMgd2l0aCBhbiBhcnJheSB3aGVyZSB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIG51bGwsIGFuZCB0aGUgc2Vjb25kIGNvbnRhaW5zIHRoZSBcImV4cGVjdGVkXCJcblx0Ly8gcGFyc2VLZWVwc0VtcHR5U3RyaW5nIHZhbHVlIGZvbGxvd3MgYSBwcm9wb3NhbCBmcm9tIHRoZSBtb2RlbCBjb2xsZWFndWVzIHRvIFwib3ZlcnJ1bGVcIiB0aGUgYmVoYXZpb3Igb2YgdGhlIEFubm90YXRpb25IZWxwZXJcblx0aWYgKGNvbnRleHQuJFR5cGUgPT09IFwiRWRtLlN0cmluZ1wiKSB7XG5cdFx0aWYgKCFjb250ZXh0Lmhhc093blByb3BlcnR5KFwiJE51bGxhYmxlXCIpIHx8IGNvbnRleHQuJE51bGxhYmxlID09PSB0cnVlKSB7XG5cdFx0XHRhbm5vdGF0aW9uSW50ZXJmYWNlLmFyZ3VtZW50cyA9IFtudWxsLCB7IHBhcnNlS2VlcHNFbXB0eVN0cmluZzogZmFsc2UgfV07XG5cdFx0fVxuXHRcdGNvbnN0IGZpc2NhbFR5cGUgPSBnZXRGaXNjYWxUeXBlKGdldFByb3BlcnR5KGNvbnRleHQsIGFubm90YXRpb25JbnRlcmZhY2UpKTtcblx0XHRpZiAoZmlzY2FsVHlwZSkge1xuXHRcdFx0aWYgKCFhbm5vdGF0aW9uSW50ZXJmYWNlLmFyZ3VtZW50cykge1xuXHRcdFx0XHRhbm5vdGF0aW9uSW50ZXJmYWNlLmFyZ3VtZW50cyA9IFtudWxsLCB7fV07XG5cdFx0XHR9XG5cdFx0XHQoYW5ub3RhdGlvbkludGVyZmFjZS5hcmd1bWVudHNbMV0gYXMgeyBmaXNjYWxUeXBlPzogc3RyaW5nIH0pLmZpc2NhbFR5cGUgPSBmaXNjYWxUeXBlO1xuXHRcdH1cblx0fVxuXHRjb25zdCB2YWx1ZSA9IChBbm5vdGF0aW9uSGVscGVyLmZvcm1hdChjb250ZXh0LCBhbm5vdGF0aW9uSW50ZXJmYWNlKSBhcyBzdHJpbmcpIHx8IFwiXCI7XG5cdHJldHVybiB2YWx1ZS5tYXRjaCgvZm9ybWF0T3B0aW9uczouKj8oey4qP30pLyk/LlsxXSB8fCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2V0IHRoZSBkYXRhIHR5cGUgZm9yIGEgZ2l2ZW4gcHJvcGVydHkuXG4gKiBAcGFyYW0gcHJvcGVydHkgUHJvcGVydHkgaW5mb3JtYXRpb25cbiAqIEByZXR1cm5zIFR5cGUgYXMgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhVHlwZShwcm9wZXJ0eTogUHJvcGVydHkpOiBzdHJpbmcge1xuXHRpZiAocHJvcGVydHkudHlwZSA9PT0gXCJFZG0uU3RyaW5nXCIpIHtcblx0XHRjb25zdCBmaXNjYWxUeXBlID0gZ2V0RmlzY2FsVHlwZShwcm9wZXJ0eSk7XG5cdFx0aWYgKGZpc2NhbFR5cGUpIHtcblx0XHRcdHJldHVybiBcInNhcC5mZS5jb3JlLnR5cGUuRmlzY2FsRGF0ZVwiO1xuXHRcdH1cblx0fVxuXHRjb25zdCB0eXBlTWFwcGluZyA9IEVETV9UWVBFX01BUFBJTkdbcHJvcGVydHkudHlwZV07XG5cdHJldHVybiB0eXBlTWFwcGluZyA/IHR5cGVNYXBwaW5nLnR5cGUgOiBwcm9wZXJ0eS50eXBlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgcGxhY2Vob2xkZXIgb2YgcHJvcGVydGllcyBvZiB0eXBlIEVkbS5TdHJpbmcuXG4gKiBAcGFyYW0gcHJvcGVydHkgUHJvcGVydHkgaW5mb3JtYXRpb25cbiAqIEByZXR1cm5zIFBsYWNlaG9sZGVyIGFzIHN0cmluZyBpZiBhdmFpbGFibGUgb3RoZXJ3aXNlIHVuZGVmaW5lZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGxhY2Vob2xkZXIocHJvcGVydHk6IFByb3BlcnR5KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKHByb3BlcnR5LnR5cGUgPT09IFwiRWRtLlN0cmluZ1wiKSB7XG5cdFx0Y29uc3QgZmlzY2FsVHlwZSA9IGdldEZpc2NhbFR5cGUocHJvcGVydHkpO1xuXHRcdGlmIChmaXNjYWxUeXBlKSB7XG5cdFx0XHRyZXR1cm4gbmV3IEZpc2NhbERhdGUoeyBmaXNjYWxUeXBlIH0sIHt9KS5nZXRQYXR0ZXJuKCk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0VBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNBLGtCQUFrQkEsQ0FBQ0MsSUFBc0IsRUFBRUMsbUJBQWdELEVBQVc7SUFDckgsTUFBTUMsS0FBSyxHQUFHRCxtQkFBbUIsQ0FBQ0UsT0FBTyxDQUFDQyxRQUFRLENBQUMsQ0FBbUI7SUFDdEUsTUFBTUMsWUFBWSxHQUFHSixtQkFBbUIsQ0FBQ0UsT0FBTyxDQUFDRyxPQUFPLENBQUMsQ0FBQztJQUMxRCxNQUFNQyxvQkFBb0IsR0FBR0MsWUFBWSxDQUFDQywwQkFBMEIsQ0FBQ1AsS0FBSyxFQUFFRyxZQUFZLENBQUM7SUFFekYsSUFBSUssUUFBZ0I7SUFDcEIs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
@@ -3,6 +3,9 @@ import JSTokenizer from "sap/base/util/JSTokenizer";
3
3
  import type { CompiledBindingToolkitExpression } from "sap/fe/base/BindingToolkit";
4
4
  import { compileExpression, EDM_TYPE_MAPPING, getFiscalType, pathInModel } from "sap/fe/base/BindingToolkit";
5
5
  import CommonUtils from "sap/fe/core/CommonUtils";
6
+ import FilterRestrictions from "sap/fe/core/converters/controls/Common/filter/FilterRestrictions";
7
+ import * as MetaModelConverter from "sap/fe/core/converters/MetaModelConverter";
8
+ import type { PageContextPathTarget } from "sap/fe/core/converters/TemplateConverter";
6
9
  import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
7
10
  import { getContextRelativeTargetObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
8
11
  import { getProperty } from "sap/fe/core/templating/PropertyFormatters";
@@ -32,7 +35,8 @@ export function isRequiredInFilter(path: string | unknown, annotationInterface:
32
35
  } else {
33
36
  property = model.getObject(`${propertyPath}@sapui.name`);
34
37
  }
35
- const oFR = CommonUtils.getFilterRestrictionsByPath(propertyLocationPath, model);
38
+ const dataModel = MetaModelConverter.getInvolvedDataModelObjects(model.getContext(propertyLocationPath));
39
+ const oFR = FilterRestrictions.getFilterRestrictionsByDataModel(dataModel as DataModelObjectPath<PageContextPathTarget>);
36
40
  required = oFR?.RequiredProperties?.includes(property);
37
41
  }
38
42
  return required;
@@ -61,7 +65,8 @@ export function maxConditions(path: string | unknown, annotationInterface: Compu
61
65
  } else {
62
66
  property = model.getObject(`${propertyPath}@sapui.name`);
63
67
  }
64
- const filterRestrictions = CommonUtils.getFilterRestrictionsByPath(propertyLocationPath, model);
68
+ const dataModel = MetaModelConverter.getInvolvedDataModelObjects(model.getContext(propertyLocationPath));
69
+ const filterRestrictions = FilterRestrictions.getFilterRestrictionsByDataModel(dataModel as DataModelObjectPath<PageContextPathTarget>);
65
70
  let propertyInfo = model.getObject(`${propertyLocationPath}/${property}`);
66
71
  if (!propertyInfo) {
67
72
  propertyInfo = model.getObject(propertyPath);