@sapui5/sap.fe.macros 1.141.1 → 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
@@ -32,6 +32,7 @@ import * as MetaModelConverter from "sap/fe/core/converters/MetaModelConverter";
32
32
  import { convertTypes, getInvolvedDataModelObjects } from "sap/fe/core/converters/MetaModelConverter";
33
33
  import {
34
34
  getCustomFunctionInfo,
35
+ type CreateBehavior,
35
36
  type ExternalMethodConfig,
36
37
  type TableType,
37
38
  type TableVisualization
@@ -53,8 +54,9 @@ import {
53
54
  } from "sap/fe/core/templating/DataModelPathHelper";
54
55
  import { type DisplayMode } from "sap/fe/core/templating/DisplayModeFormatter";
55
56
  import * as UIFormatters from "sap/fe/core/templating/UIFormatters";
56
- import type { CollectionBindingInfo, EventHandler } from "sap/fe/macros/CollectionBindingInfo";
57
+ import type { EventHandler, SerializedCollectionBindingInfo } from "sap/fe/macros/CollectionBindingInfo";
57
58
  import MacroAPI from "sap/fe/macros/MacroAPI";
59
+ import type FilterBar from "sap/fe/macros/controls/FilterBar";
58
60
  import type ISingleSectionContributor from "sap/fe/macros/controls/section/ISingleSectionContributor";
59
61
  import type { ConsumerData } from "sap/fe/macros/controls/section/ISingleSectionContributor";
60
62
  import * as FieldTemplating from "sap/fe/macros/field/FieldTemplating";
@@ -67,6 +69,7 @@ import type ActionGroup from "sap/fe/macros/table/ActionGroup";
67
69
  import type BasicSearch from "sap/fe/macros/table/BasicSearch";
68
70
  import type Column from "sap/fe/macros/table/Column";
69
71
  import * as MdcTableTemplate from "sap/fe/macros/table/MdcTableTemplate";
72
+ import type OverflowGroup from "sap/fe/macros/table/OverflowGroups";
70
73
  import type QuickFilterSelector from "sap/fe/macros/table/QuickFilterSelector";
71
74
  import TableCreationOptions from "sap/fe/macros/table/TableCreationOptions";
72
75
  import TableHelper from "sap/fe/macros/table/TableHelper";
@@ -78,6 +81,7 @@ import type { PvProperties } from "sap/fe/navigation/PresentationVariant";
78
81
  import PresentationVariantClass from "sap/fe/navigation/PresentationVariant";
79
82
  import type SelectionVariant from "sap/fe/navigation/SelectionVariant";
80
83
  import type Dialog from "sap/m/Dialog";
84
+ import FlexItemData from "sap/m/FlexItemData";
81
85
  import IllustratedMessage from "sap/m/IllustratedMessage";
82
86
  import IllustratedMessageType from "sap/m/IllustratedMessageType";
83
87
  import type Menu from "sap/m/Menu";
@@ -100,7 +104,6 @@ import { TitleLevel } from "sap/ui/core/library";
100
104
  import Message from "sap/ui/core/message/Message";
101
105
  import type MessageType from "sap/ui/core/message/MessageType";
102
106
  import XMLPreprocessor from "sap/ui/core/util/XMLPreprocessor";
103
- import type FilterBar from "sap/ui/mdc/FilterBar";
104
107
  import type {
105
108
  default as MDCTable,
106
109
  MDCTablePropertyInfo as PropertyInfo,
@@ -254,7 +257,7 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
254
257
  constructor(mSettings?: PropertiesOf<TableAPI> & { id?: string }, ...others: $ControlSettings[]) {
255
258
  super(mSettings, ...others);
256
259
  this.originalTableDefinition = this.tableDefinition;
257
-
260
+ this.setLayoutData(new FlexItemData({ maxWidth: "100%" }));
258
261
  this.attachStateChangeHandler();
259
262
  this.attachManifestEvents();
260
263
  this.overrideRowPress = this.hasListeners("rowPress");
@@ -339,7 +342,7 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
339
342
  if (metaPath) {
340
343
  suffix = metaPath.startsWith("/") ? metaPath.substring(1) : metaPath;
341
344
  }
342
- title = resourceModel.getText("T_ILLUSTRATED_MESSAGE_TITLE_BEFORESEARCH");
345
+ title = resourceModel.getText("T_ILLUSTRATED_MESSAGE_TITLE_BEFORESEARCH", undefined, suffix);
343
346
  description = resourceModel.getText("T_TABLE_AND_CHART_NO_DATA_TEXT", undefined, suffix);
344
347
  }
345
348
  } else {
@@ -474,6 +477,12 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
474
477
  })
475
478
  actions?: (Action | ActionGroup | ActionOverride | ActionGroupOverride)[];
476
479
 
480
+ @aggregation({
481
+ type: "sap.fe.macros.table.OverflowGroup",
482
+ multiple: true
483
+ })
484
+ actionOverflowGroups?: OverflowGroup[];
485
+
477
486
  @aggregation({
478
487
  type: "sap.fe.macros.table.Column",
479
488
  altTypes: ["sap.fe.macros.table.ColumnOverride"],
@@ -551,8 +560,8 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
551
560
  @property({ type: "string" })
552
561
  id!: string;
553
562
 
554
- @property({ type: "string" })
555
- fieldMode?: string;
563
+ @property({ type: "string", defaultValue: "" })
564
+ fieldMode!: string;
556
565
 
557
566
  @property({ type: "sap.ui.core.TitleLevel", defaultValue: TitleLevel.Auto })
558
567
  headerLevel!: TitleLevel;
@@ -607,8 +616,8 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
607
616
  @property({ type: "boolean", isBindingInfo: true })
608
617
  headerVisible?: boolean;
609
618
 
610
- @property({ type: "string" })
611
- tabTitle?: string;
619
+ @property({ type: "string", defaultValue: "" })
620
+ tabTitle!: string;
612
621
 
613
622
  @property({ type: "string" })
614
623
  associatedSelectionVariantPath?: string;
@@ -730,6 +739,10 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
730
739
 
731
740
  overrideRowPress = false;
732
741
 
742
+ init(): void {
743
+ return super.init(true);
744
+ }
745
+
733
746
  getIgnoreContextChangeEvent(): boolean {
734
747
  return this.ignoreContextChangeEvent;
735
748
  }
@@ -784,6 +797,27 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
784
797
  : this.content.getSelectedContexts();
785
798
  }
786
799
 
800
+ /**
801
+ * Returns all contexts that are loaded in the table.
802
+ *
803
+ * See also the {@link sap.ui.model.odata.v4.ODataListBinding#getAllCurrentContexts} method.
804
+ * @returns All contexts of the table's list binding, or undefined if the table data is not yet loaded.
805
+ * @public
806
+ * @since 1.142.0
807
+ */
808
+ getAllCurrentContexts(): Context[] | undefined {
809
+ return this.content?.getRowBinding()?.getAllCurrentContexts();
810
+ }
811
+
812
+ /**
813
+ * Clears the selection.
814
+ * @public
815
+ * @since 1.142.0
816
+ */
817
+ clearSelection(): void {
818
+ this.content?.clearSelection();
819
+ }
820
+
787
821
  /**
788
822
  * Adds a message to the table.
789
823
  *
@@ -1556,6 +1590,7 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
1556
1590
  contexts: Context[];
1557
1591
  applicableContexts: Context[];
1558
1592
  entitySetName: string;
1593
+ disableStrictHandling?: boolean;
1559
1594
  }
1560
1595
  ): Promise<unknown> {
1561
1596
  parameters.model = oEvent.getSource().getModel() as ODataModel;
@@ -1653,24 +1688,11 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
1653
1688
  * @alias sap.fe.macros.TableAPI
1654
1689
  */
1655
1690
  getFilterBarControl(filterBarRefId: string): UI5Element | undefined {
1656
- // 'filterBar' property of macros:Table(passed as customData) might be
1657
- // 1. A localId wrt View(FPM explorer example).
1658
- // 2. Absolute Id(this was not supported in older versions).
1659
- // 3. A localId wrt FragmentId(when an XMLComposite or Fragment is independently processed) instead of ViewId.
1660
- // 'filterBar' was supported earlier as an 'association' to the 'mdc:Table' control inside 'macros:Table' in prior versions.
1661
- // In newer versions 'filterBar' is used like an association to 'macros:TableAPI'.
1662
- // This means that the Id is relative to 'macros:TableAPI'.
1663
- // This scenario happens in case of FilterBar and Table in a custom sections in OP of FEV4.
1664
-
1665
- const tableAPIId = this?.getId();
1666
- const tableAPILocalId = this.data("tableAPILocalId");
1667
- const potentialfilterBarId =
1668
- tableAPILocalId && filterBarRefId && tableAPIId && tableAPIId.replace(new RegExp(tableAPILocalId + "$"), filterBarRefId); // 3
1669
1691
  return (
1670
- this.getPageController()?.byId(filterBarRefId) ||
1671
- UI5Element.getElementById(filterBarRefId) ||
1672
- UI5Element.getElementById(potentialfilterBarId)
1673
- );
1692
+ this.getPageController()?.byId(filterBarRefId) || // Local id wrt View(FPM explorer example)
1693
+ UI5Element.getElementById(filterBarRefId) || // Absolute Id(this was not supported in older versions)
1694
+ UI5Element.getElementById(`${this.getId().substring(0, this.getId().lastIndexOf("--") + 2)}${filterBarRefId}`)
1695
+ ); // Local id wrt FragmentId(when an XMLComposite or Fragment is independently processed) instead of ViewId
1674
1696
  }
1675
1697
 
1676
1698
  /**
@@ -2080,7 +2102,7 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
2080
2102
 
2081
2103
  destroy(suppressInvalidate?: boolean): void {
2082
2104
  // We release hold on messageHandler by the control if there is one.
2083
- this.getPageController(false)?.messageHandler?.releaseHoldByControl(this);
2105
+ this.getPageController()?.messageHandler?.releaseHoldByControl(this);
2084
2106
  super.destroy(suppressInvalidate);
2085
2107
  }
2086
2108
 
@@ -2198,10 +2220,10 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
2198
2220
  * Gets the binding info used when creating the list binding for the MDC table.
2199
2221
  * @returns The table binding info
2200
2222
  */
2201
- getTableTemplateBindingInfo(): CollectionBindingInfo {
2223
+ getTableTemplateBindingInfo(): SerializedCollectionBindingInfo {
2202
2224
  const controller = this.getPageController()!;
2203
2225
  const path = this.getRowCollectionPath();
2204
- const rowBindingInfo: CollectionBindingInfo = {
2226
+ const rowBindingInfo: SerializedCollectionBindingInfo = {
2205
2227
  suspended: false,
2206
2228
  path,
2207
2229
  parameters: {
@@ -2378,8 +2400,16 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
2378
2400
  const metaPathContext = metaModel.createBindingContext(fullMetaPath)!;
2379
2401
 
2380
2402
  this.tableDefinition = createTableDefinition(this);
2403
+ // Set Default values for properties based on table definition
2404
+ this.threshold ??= this.tableDefinition.annotation.threshold ?? this.tableDefinition.control.threshold;
2381
2405
  this.updatePropertiesFromTableDefinition();
2382
2406
 
2407
+ // default creation mode
2408
+ this.creationMode ??= new TableCreationOptions({
2409
+ name: this.tableDefinition.annotation.create.mode as TableCreationOptions["name"],
2410
+ createAtEnd: (this.tableDefinition.annotation.create as CreateBehavior).append
2411
+ });
2412
+
2383
2413
  this.updateColumnsVisibility(this.tableDefinition.control.ignoredFields, this.tableDefinition);
2384
2414
 
2385
2415
  const collectionEntity = this.contextObjectPath.convertedTypes.resolvePath(this.tableDefinition.annotation.collection)
@@ -33,6 +33,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/ManifestSettings", "sap/f
33
33
  const visualizationPath = getVisualizationPath(tableAPI.contextObjectPath, initialConverterContext);
34
34
  const tableSettings = tableAPI.getSettingsForManifest();
35
35
  const extraManifestSettings = {
36
+ overflowGroups: {},
36
37
  actions: {},
37
38
  columns: {},
38
39
  tableSettings
@@ -41,6 +42,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/ManifestSettings", "sap/f
41
42
  // Process custom actions and columns
42
43
  addSlotColumnsToExtraManifest(tableAPI, extraManifestSettings);
43
44
  addSlotActionsToExtraManifest(tableAPI, extraManifestSettings);
45
+ addSlotOverflowGroupsToExtraManifest(tableAPI, extraManifestSettings);
44
46
  const extraParams = {};
45
47
  extraParams[visualizationPath] = extraManifestSettings;
46
48
  const converterContext = MacroAPI.getConverterContext(tableAPI.contextObjectPath, tableAPI.contextPath, {
@@ -182,7 +184,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/ManifestSettings", "sap/f
182
184
  enabled: action.enabled,
183
185
  isAIOperation: action.isAIOperation,
184
186
  priority: action.priority,
185
- group: action.group ?? 0 // Default group to 0 if not defined
187
+ group: action.group ?? 0,
188
+ // Default group to 0 if not defined
189
+ overflowGroup: action.overflowGroup
186
190
  };
187
191
  if (action.isA("sap.fe.macros.table.Action")) {
188
192
  actions[key] = {
@@ -234,6 +238,19 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/ManifestSettings", "sap/f
234
238
  }
235
239
  });
236
240
  }
241
+
242
+ /**
243
+ * Adds the slot actionOverflowGroups to the extra manifest settings.
244
+ * @param tableAPI
245
+ * @param extraManifestSettings
246
+ */
247
+ function addSlotOverflowGroupsToExtraManifest(tableAPI, extraManifestSettings) {
248
+ tableAPI.actionOverflowGroups?.forEach(overflowGroup => {
249
+ extraManifestSettings.overflowGroups[overflowGroup.overflowGroup] = {
250
+ showSeparator: overflowGroup.showSeparator ?? true
251
+ };
252
+ });
253
+ }
237
254
  return _exports;
238
255
  }, false);
239
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVUYWJsZURlZmluaXRpb24iLCJ0YWJsZUFQSSIsIm93bmVyIiwiX2dldE93bmVyIiwibWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiTG9nIiwiZXJyb3IiLCJFcnJvciIsIm1ldGFQYXRoQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0RnVsbE1ldGFQYXRoIiwiY29udGV4dFBhdGhDb250ZXh0IiwiY29udGV4dFBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiaW5pdGlhbENvbnZlcnRlckNvbnRleHQiLCJNYWNyb0FQSSIsImdldENvbnZlcnRlckNvbnRleHQiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJtb2RlbHMiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwidmlzdWFsaXphdGlvblBhdGgiLCJnZXRWaXN1YWxpemF0aW9uUGF0aCIsInRhYmxlU2V0dGluZ3MiLCJnZXRTZXR0aW5nc0Zvck1hbmlmZXN0IiwiZXh0cmFNYW5pZmVzdFNldHRpbmdzIiwiYWN0aW9ucyIsImNvbHVtbnMiLCJhZGRTbG90Q29sdW1uc1RvRXh0cmFNYW5pZmVzdCIsImFkZFNsb3RBY3Rpb25zVG9FeHRyYU1hbmlmZXN0IiwiZXh0cmFQYXJhbXMiLCJjb252ZXJ0ZXJDb250ZXh0IiwiYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgiLCJzdk9iamVjdFBhdGgiLCJ0YXJnZXRPYmplY3QiLCJ2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiIsImdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbiIsImluTXVsdGlWaWV3IiwiZ2V0UmVsYXRpdmVBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImdldEVudGl0eVR5cGUiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiaXNDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFudCIsInVzZUNvbmRlbnNlZExheW91dCIsImlzTWFjcm9Pck11bHRpcGxlVmlldyIsInZpc3VhbGl6YXRpb25zIiwiZmluZCIsInZpeiIsInR5cGUiLCJWaXN1YWxpemF0aW9uVHlwZSIsIlRhYmxlIiwiX2V4cG9ydHMiLCJpc0Fubm90YXRpb25PZlRlcm0iLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiZ2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbiIsInRlcm0iLCJsaW5lSXRlbVZpeiIsInZpc3VhbGl6YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsInJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInVuZGVmaW5lZCIsImN1c3RvbUNvbHVtbkRlZmluaXRpb24iLCJjb2x1bW4iLCJpc0NvbHVtbiIsImlzQSIsImhlYWRlciIsIndpZHRoIiwiaW1wb3J0YW5jZSIsImhvcml6b250YWxBbGlnbiIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwiZXhwb3J0U2V0dGluZ3MiLCJwcm9wZXJ0aWVzIiwidG9vbHRpcCIsInRlbXBsYXRlIiwiYXZhaWxhYmlsaXR5IiwicmVxdWlyZWQiLCJhbmNob3IiLCJwbGFjZW1lbnQiLCJwb3NpdGlvbiIsImFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCIsImFjdGlvbiIsImNvbW1hbmQiLCJlbmFibGVPblNlbGVjdCIsInZpc2libGUiLCJlbmFibGVkIiwiaXNBSU9wZXJhdGlvbiIsInByaW9yaXR5IiwiZ3JvdXAiLCJ0ZXh0IiwiX19ub1dyYXAiLCJwcmVzcyIsInJlcXVpcmVzU2VsZWN0aW9uIiwiYWZ0ZXJFeGVjdXRpb24iLCJlbmFibGVBdXRvU2Nyb2xsIiwibmF2aWdhdGVUb0luc3RhbmNlIiwiZW50cmllcyIsImxlbmd0aCIsImRlZmF1bHRWYWx1ZXNGdW5jdGlvbiIsImFjdGlvbnNTZXR0aW5ncyIsIm1lbnUiLCJtYXAiLCJzdWJBY3Rpb24iLCJkZWZhdWx0QWN0aW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUYWJsZURlZmluaXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0VUlBbm5vdGF0aW9uVGVybXMsXG5cdHR5cGUgTGluZUl0ZW0sXG5cdHR5cGUgUHJlc2VudGF0aW9uVmFyaWFudCxcblx0dHlwZSBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50LFxuXHR0eXBlIFNlbGVjdGlvblZhcmlhbnQsXG5cdHR5cGUgU2VsZWN0aW9uVmFyaWFudFR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyB0eXBlIFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHtcblx0VmlzdWFsaXphdGlvblR5cGUsXG5cdHR5cGUgQXZhaWxhYmlsaXR5VHlwZSxcblx0dHlwZSBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4sXG5cdHR5cGUgQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUsXG5cdHR5cGUgSW1wb3J0YW5jZSxcblx0dHlwZSBUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IHR5cGUgUGFnZUNvbnRleHRQYXRoVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IHR5cGUgQ2hhcnRWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0NoYXJ0XCI7XG5pbXBvcnQge1xuXHRnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24sXG5cdGdldFZpc3VhbGl6YXRpb25zRnJvbUFubm90YXRpb24sXG5cdHR5cGUgVmlzdWFsaXphdGlvbkFuZFBhdGhcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0RhdGFWaXN1YWxpemF0aW9uXCI7XG5pbXBvcnQgeyB0eXBlIFRhYmxlVmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9UYWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBQbGFjZW1lbnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgaXNBbm5vdGF0aW9uT2ZUZXJtIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHsgZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCwgdHlwZSBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IE1hY3JvQVBJIGZyb20gXCIuLi9NYWNyb0FQSVwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uIGZyb20gXCIuL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uR3JvdXAgZnJvbSBcIi4vQWN0aW9uR3JvdXBcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW4gZnJvbSBcIi4vQ29sdW1uXCI7XG5pbXBvcnQgdHlwZSBUYWJsZUFQSSBmcm9tIFwiLi9UYWJsZUFQSVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFibGVEZWZpbml0aW9uKHRhYmxlQVBJOiBUYWJsZUFQSSk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdGNvbnN0IG93bmVyID0gdGFibGVBUEkuX2dldE93bmVyKCk7XG5cdGNvbnN0IG1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwoKTtcblx0aWYgKCFvd25lciB8fCAhbWV0YU1vZGVsKSB7XG5cdFx0TG9nLmVycm9yKFwiQ2Fubm90IGNyZWF0ZSBhIHRhYmxlIGRlZmluaXRpb24gZm9yIGEgVGFibGVBUEkgd2l0aG91dCBhbiBvd25lciBvciBhIG1ldGFtb2RlbFwiKTtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY3JlYXRlIGEgdGFibGUgZGVmaW5pdGlvbiBmb3IgYSBUYWJsZUFQSSB3aXRob3V0IGFuIG93bmVyIG9yIGEgbWV0YW1vZGVsXCIpO1xuXHR9XG5cdGNvbnN0IG1ldGFQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0YWJsZUFQSS5nZXRGdWxsTWV0YVBhdGgoKSk7XG5cdGNvbnN0IGNvbnRleHRQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0YWJsZUFQSS5jb250ZXh0UGF0aCk7XG5cdGlmICghbWV0YVBhdGhDb250ZXh0IHx8ICFjb250ZXh0UGF0aENvbnRleHQpIHtcblx0XHRMb2cuZXJyb3IoYEluY29ycmVjdCBtZXRhUGF0aCAoJHt0YWJsZUFQSS5tZXRhUGF0aH0pIG9yIGNvbnRleHRQYXRoICgke3RhYmxlQVBJLmNvbnRleHRQYXRofSkgZm9yIHRhYmxlQVBJYCk7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiSW5jb3JyZWN0IG1ldGFQYXRoIG9yIGNvbnRleHRQYXRoIGZvciB0YWJsZUFQSVwiKTtcblx0fVxuXG5cdHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdG1ldGFQYXRoQ29udGV4dCxcblx0XHRjb250ZXh0UGF0aENvbnRleHRcblx0KTtcblxuXHRjb25zdCBpbml0aWFsQ29udmVydGVyQ29udGV4dCA9IE1hY3JvQVBJLmdldENvbnZlcnRlckNvbnRleHQodGFibGVBUEkuY29udGV4dE9iamVjdFBhdGgsIHRhYmxlQVBJLmNvbnRleHRQYXRoLCB7XG5cdFx0YXBwQ29tcG9uZW50OiBvd25lci5nZXRBcHBDb21wb25lbnQoKSxcblx0XHRtb2RlbHM6IG93bmVyLnByZXByb2Nlc3NvckNvbnRleHQ/Lm1vZGVsc1xuXHR9IGFzIFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpO1xuXHRjb25zdCB2aXN1YWxpemF0aW9uUGF0aCA9IGdldFZpc3VhbGl6YXRpb25QYXRoKHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoLCBpbml0aWFsQ29udmVydGVyQ29udGV4dCk7XG5cblx0Y29uc3QgdGFibGVTZXR0aW5ncyA9IHRhYmxlQVBJLmdldFNldHRpbmdzRm9yTWFuaWZlc3QoKTtcblxuXHRjb25zdCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uID0ge1xuXHRcdGFjdGlvbnM6IHt9LFxuXHRcdGNvbHVtbnM6IHt9LFxuXHRcdHRhYmxlU2V0dGluZ3Ncblx0fTtcblxuXHQvLyBQcm9jZXNzIGN1c3RvbSBhY3Rpb25zIGFuZCBjb2x1bW5zXG5cdGFkZFNsb3RDb2x1bW5zVG9FeHRyYU1hbmlmZXN0KHRhYmxlQVBJLCBleHRyYU1hbmlmZXN0U2V0dGluZ3MpO1xuXHRhZGRTbG90QWN0aW9uc1RvRXh0cmFNYW5pZmVzdCh0YWJsZUFQSSwgZXh0cmFNYW5pZmVzdFNldHRpbmdzKTtcblxuXHRjb25zdCBleHRyYVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0ZXh0cmFQYXJhbXNbdmlzdWFsaXphdGlvblBhdGhdID0gZXh0cmFNYW5pZmVzdFNldHRpbmdzO1xuXHRjb25zdCBjb252ZXJ0ZXJDb250ZXh0ID0gTWFjcm9BUEkuZ2V0Q29udmVydGVyQ29udGV4dChcblx0XHR0YWJsZUFQSS5jb250ZXh0T2JqZWN0UGF0aCxcblx0XHR0YWJsZUFQSS5jb250ZXh0UGF0aCxcblx0XHR7XG5cdFx0XHRhcHBDb21wb25lbnQ6IG93bmVyPy5nZXRBcHBDb21wb25lbnQoKSxcblx0XHRcdG1vZGVsczogb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ/Lm1vZGVsc1xuXHRcdH0gYXMgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyxcblx0XHRleHRyYVBhcmFtc1xuXHQpO1xuXG5cdGxldCBhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudFR5cGUgfCB1bmRlZmluZWQ7XG5cdGlmICh0YWJsZUFQSS5hc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgpIHtcblx0XHRjb25zdCBzdk9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8U2VsZWN0aW9uVmFyaWFudD4oXG5cdFx0XHRtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodGFibGVBUEkuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoKSEsXG5cdFx0XHRjb250ZXh0UGF0aENvbnRleHRcblx0XHQpO1xuXHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50ID0gc3ZPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0fVxuXG5cdGNvbnN0IHZpc3VhbGl6YXRpb25EZWZpbml0aW9uID0gZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uKFxuXHRcdCh0YWJsZUFQSS5pbk11bHRpVmlldyAmJiB0YWJsZUFQSS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdD8gY29udmVydGVyQ29udGV4dC5nZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoKFxuXHRcdFx0XHRcdHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdC5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHRcdCAgKVxuXHRcdFx0OiBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoKSkgYXMgc3RyaW5nLFxuXHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0e1xuXHRcdFx0aXNDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFudDogdGFibGVBUEkudXNlQ29uZGVuc2VkTGF5b3V0LFxuXHRcdFx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRpc01hY3JvT3JNdWx0aXBsZVZpZXc6IHRhYmxlQVBJLmluTXVsdGlWaWV3ID8/IHRydWVcblx0XHR9XG5cdCk7XG5cblx0Ly8gdGFrZSB0aGUgKGZpcnN0KSBUYWJsZSB2aXN1YWxpemF0aW9uXG5cdHJldHVybiB2aXN1YWxpemF0aW9uRGVmaW5pdGlvbi52aXN1YWxpemF0aW9ucy5maW5kKFxuXHRcdCh2aXo6IFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbikgPT4gdml6LnR5cGUgPT09IFZpc3VhbGl6YXRpb25UeXBlLlRhYmxlXG5cdCkgYXMgVGFibGVWaXN1YWxpemF0aW9uO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGFubm90YXRpb24gcGF0aCBwb2ludGluZyB0byB0aGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uIChMaW5lSXRlbSkuXG4gKiBAcGFyYW0gY29udGV4dE9iamVjdFBhdGggVGhlIGRhdGFtb2RlbCBvYmplY3QgcGF0aCBmb3IgdGhlIHRhYmxlXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBhbm5vdGF0aW9uIHBhdGhcbiAqL1xuZnVuY3Rpb24gZ2V0VmlzdWFsaXphdGlvblBhdGgoXG5cdGNvbnRleHRPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+LFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IHN0cmluZyB7XG5cdGNvbnN0IG1ldGFQYXRoID0gZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChjb250ZXh0T2JqZWN0UGF0aCkgYXMgc3RyaW5nO1xuXG5cdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgbWV0YXBhdGggaXMgbm90IHNldFxuXHRpZiAoIW1ldGFQYXRoKSB7XG5cdFx0TG9nLmVycm9yKGBNaXNzaW5nIG1ldGEgcGF0aCBwYXJhbWV0ZXIgZm9yIExpbmVJdGVtYCk7XG5cdFx0cmV0dXJuIGBAJHtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbX1gO1xuXHR9XG5cblx0aWYgKGlzQW5ub3RhdGlvbk9mVGVybTxMaW5lSXRlbT4oY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LCBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbSkpIHtcblx0XHRyZXR1cm4gbWV0YVBhdGg7IC8vIE1ldGFQYXRoIGlzIGFscmVhZHkgcG9pbnRpbmcgdG8gYSBMaW5lSXRlbVxuXHR9XG5cdC8vTmVlZCB0byBzd2l0Y2ggdG8gdGhlIGNvbnRleHQgcmVsYXRlZCB0aGUgUFYgb3IgU1BWXG5cdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihtZXRhUGF0aCk7XG5cblx0bGV0IHZpc3VhbGl6YXRpb25zOiBWaXN1YWxpemF0aW9uQW5kUGF0aFtdID0gW107XG5cdGlmIChcblx0XHRpc0Fubm90YXRpb25PZlRlcm08U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4oY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LCBVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50KSB8fFxuXHRcdGlzQW5ub3RhdGlvbk9mVGVybTxQcmVzZW50YXRpb25WYXJpYW50Pihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQpXG5cdCkge1xuXHRcdHZpc3VhbGl6YXRpb25zID0gZ2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIG1ldGFQYXRoLCByZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LCB0cnVlKTtcblx0fSBlbHNlIHtcblx0XHRMb2cuZXJyb3IoYEJhZCBtZXRhcGF0aCBwYXJhbWV0ZXIgZm9yIHRhYmxlIDogJHtjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QhLnRlcm19YCk7XG5cdH1cblxuXHRjb25zdCBsaW5lSXRlbVZpeiA9IHZpc3VhbGl6YXRpb25zLmZpbmQoKHZpeikgPT4ge1xuXHRcdHJldHVybiB2aXoudmlzdWFsaXphdGlvbi50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbTtcblx0fSk7XG5cblx0aWYgKGxpbmVJdGVtVml6KSB7XG5cdFx0cmV0dXJuIGxpbmVJdGVtVml6LmFubm90YXRpb25QYXRoO1xuXHR9IGVsc2Uge1xuXHRcdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgYW5ub3RhdGlvbiBtaXNzaW5nIGluIFBWXG5cdFx0TG9nLmVycm9yKGBCYWQgbWV0YSBwYXRoIHBhcmFtZXRlciBmb3IgTGluZUl0ZW06ICR7Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IS50ZXJtfWApO1xuXHRcdHJldHVybiBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDsgLy8gRmFsbGJhY2tcblx0fVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgd2l0aCB0aGUgdmFsdWUgb2YgdW5kZWZpbmVkIGZyb20gdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byByZW1vdmUgdGhlIHVuZGVmaW5lZCBwcm9wZXJ0aWVzIGZyb21cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG5cdE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0aWYgKG9ialtrZXldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRlbGV0ZSBvYmpba2V5XTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIEFkZHMgdGhlIHNsb3QgY29sdW1ucyB0byB0aGUgZXh0cmEgbWFuaWZlc3Qgc2V0dGluZ3MuXG4gKiBAcGFyYW0gdGFibGVBUElcbiAqIEBwYXJhbSBleHRyYU1hbmlmZXN0U2V0dGluZ3NcbiAqL1xuZnVuY3Rpb24gYWRkU2xvdENvbHVtbnNUb0V4dHJhTWFuaWZlc3QodGFibGVBUEk6IFRhYmxlQVBJLCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uKTogdm9pZCB7XG5cdGxldCBjdXN0b21Db2x1bW5EZWZpbml0aW9uOiBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCAoQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUgJiB7IGtleTogc3RyaW5nIH0pO1xuXG5cdHRhYmxlQVBJLmNvbHVtbnM/LmZvckVhY2goKGNvbHVtbikgPT4ge1xuXHRcdGNvbnN0IGlzQ29sdW1uID0gY29sdW1uLmlzQTxDb2x1bW4+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5cIik7XG5cdFx0aWYgKGlzQ29sdW1uKSB7XG5cdFx0XHRjdXN0b21Db2x1bW5EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRoZWFkZXI6IGNvbHVtbi5oZWFkZXIsXG5cdFx0XHRcdHdpZHRoOiBjb2x1bW4ud2lkdGgsXG5cdFx0XHRcdGltcG9ydGFuY2U6IGNvbHVtbi5pbXBvcnRhbmNlIGFzIEltcG9ydGFuY2UsXG5cdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNvbHVtbi53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcixcblx0XHRcdFx0ZXhwb3J0U2V0dGluZ3M6IGNvbHVtbi5leHBvcnRTZXR0aW5ncyxcblx0XHRcdFx0cHJvcGVydGllczogY29sdW1uLnByb3BlcnRpZXMsXG5cdFx0XHRcdHRvb2x0aXA6IGNvbHVtbi50b29sdGlwLFxuXHRcdFx0XHR0ZW1wbGF0ZTogY29sdW1uLnRlbXBsYXRlISxcblx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdHJlcXVpcmVkOiBjb2x1bW4ucmVxdWlyZWQsXG5cdFx0XHRcdHR5cGU6IFwiU2xvdFwiXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjdXN0b21Db2x1bW5EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRrZXk6IGNvbHVtbi5rZXksXG5cdFx0XHRcdHdpZHRoOiBjb2x1bW4ud2lkdGgsXG5cdFx0XHRcdGltcG9ydGFuY2U6IGNvbHVtbi5pbXBvcnRhbmNlIGFzIEltcG9ydGFuY2UsXG5cdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNvbHVtbi53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcixcblx0XHRcdFx0ZXhwb3J0U2V0dGluZ3M6IGNvbHVtbi5leHBvcnRTZXR0aW5ncyxcblx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGVcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIGFsbCB1bmRlZmluZWQgcHJvcGVydGllcywgc28gdGhhdCB0aGV5IGRvbid0IGVyYXNlIHdoYXQgaXMgc2V0IGluIHRoZSBtYW5pZmVzdFxuXHRcdC8vIChuZWNlc3NhcnkgYmVjYXVzZSBtYW5pZmVzdC1iYXNlZCBjb2x1bW5zIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIHNsb3QgY29sdW1ucyBhbmQgd2UgZG9uJ3QgY29weVxuXHRcdC8vIGFsbCB0aGVpciBwcm9wZXJ0aWVzIGluIHRoZSBYTUwpXG5cdFx0cmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhjdXN0b21Db2x1bW5EZWZpbml0aW9uKTtcblxuXHRcdGlmIChpc0NvbHVtbiAmJiAoY29sdW1uLmFuY2hvciB8fCBjb2x1bW4ucGxhY2VtZW50KSkge1xuXHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbi5wb3NpdGlvbiA9IHtcblx0XHRcdFx0YW5jaG9yOiBjb2x1bW4uYW5jaG9yLFxuXHRcdFx0XHRwbGFjZW1lbnQ6IChjb2x1bW4ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGV4dHJhTWFuaWZlc3RTZXR0aW5ncy5jb2x1bW5zIVtjb2x1bW4ua2V5XSA9IGN1c3RvbUNvbHVtbkRlZmluaXRpb247XG5cdH0pO1xufVxuXG4vKipcbiAqIEFkZHMgdGhlIHNsb3QgYWN0aW9ucyB0byB0aGUgZXh0cmEgbWFuaWZlc3Qgc2V0dGluZ3MuXG4gKiBAcGFyYW0gdGFibGVBUElcbiAqIEBwYXJhbSBleHRyYU1hbmlmZXN0U2V0dGluZ3NcbiAqL1xuZnVuY3Rpb24gYWRkU2xvdEFjdGlvbnNUb0V4dHJhTWFuaWZlc3QodGFibGVBUEk6IFRhYmxlQVBJLCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uKTogdm9pZCB7XG5cdGZ1bmN0aW9uIGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdChhY3Rpb246IEFjdGlvbiB8IEFjdGlvbk92ZXJyaWRlKTogdm9pZCB7XG5cdFx0Y29uc3QgYWN0aW9ucyA9IGV4dHJhTWFuaWZlc3RTZXR0aW5ncy5hY3Rpb25zITtcblx0XHRjb25zdCBrZXkgPSBhY3Rpb24ua2V5O1xuXHRcdGFjdGlvbnNba2V5XSA9IHtcblx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdHBsYWNlbWVudDogKGFjdGlvbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnQsXG5cdFx0XHRcdGFuY2hvcjogYWN0aW9uLmFuY2hvclxuXHRcdFx0fSxcblx0XHRcdGNvbW1hbmQ6IGFjdGlvbi5jb21tYW5kLFxuXHRcdFx0ZW5hYmxlT25TZWxlY3Q6IGFjdGlvbi5lbmFibGVPblNlbGVjdCxcblx0XHRcdHZpc2libGU6IGFjdGlvbi52aXNpYmxlLFxuXHRcdFx0ZW5hYmxlZDogYWN0aW9uLmVuYWJsZWQsXG5cdFx0XHRpc0FJT3BlcmF0aW9uOiBhY3Rpb24uaXNBSU9wZXJhdGlvbixcblx0XHRcdHByaW9yaXR5OiBhY3Rpb24ucHJpb3JpdHksXG5cdFx0XHRncm91cDogYWN0aW9uLmdyb3VwID8/IDAgLy8gRGVmYXVsdCBncm91cCB0byAwIGlmIG5vdCBkZWZpbmVkXG5cdFx0fTtcblx0XHRpZiAoYWN0aW9uLmlzQTxBY3Rpb24+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25cIikpIHtcblx0XHRcdGFjdGlvbnNba2V5XSA9IHtcblx0XHRcdFx0Li4uYWN0aW9uc1trZXldLFxuXHRcdFx0XHR0ZXh0OiBhY3Rpb24udGV4dCxcblx0XHRcdFx0X19ub1dyYXA6IHRydWUsXG5cdFx0XHRcdHByZXNzOiBcInNvbWUgaGFuZGxlclwiLCAvLyBUaGUgcmVhbCBoYW5kbGVyIHdpbGwgYmUgdHJpZ2dlcmVkIGJ5IGZpcmluZyB0aGUgZXZlbnQgb24gdGhlIEFjdGlvbiBvYmplY3Rcblx0XHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IGFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvblxuXHRcdFx0fTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgYWZ0ZXJFeGVjdXRpb24gPSB7XG5cdFx0XHRlbmFibGVBdXRvU2Nyb2xsOiBhY3Rpb25bXCJlbmFibGVBdXRvU2Nyb2xsXCJdLFxuXHRcdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBhY3Rpb25bXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIl1cblx0XHR9O1xuXHRcdHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMoYWZ0ZXJFeGVjdXRpb24pO1xuXHRcdGFjdGlvbnNba2V5XSA9IHtcblx0XHRcdC4uLmFjdGlvbnNba2V5XSxcblx0XHRcdGFmdGVyRXhlY3V0aW9uOiBPYmplY3QuZW50cmllcyhhZnRlckV4ZWN1dGlvbikubGVuZ3RoID8gYWZ0ZXJFeGVjdXRpb24gOiB1bmRlZmluZWQsXG5cdFx0XHRkZWZhdWx0VmFsdWVzRnVuY3Rpb246IGFjdGlvbi5kZWZhdWx0VmFsdWVzRnVuY3Rpb25cblx0XHR9O1xuXHR9XG5cblx0dGFibGVBUEkuYWN0aW9ucz8uZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG5cdFx0aWYgKGFjdGlvbi5pc0E8QWN0aW9uPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uXCIpIHx8IGFjdGlvbi5pc0E8QWN0aW9uT3ZlcnJpZGU+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25PdmVycmlkZVwiKSkge1xuXHRcdFx0Ly8gQWN0aW9uIG9yIEFjdGlvbk92ZXJyaWRlXG5cdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoYWN0aW9uKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYWN0aW9uc1NldHRpbmdzID0gZXh0cmFNYW5pZmVzdFNldHRpbmdzLmFjdGlvbnMhO1xuXHRcdFx0Y29uc3Qga2V5ID0gYWN0aW9uLmtleTtcblx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRwb3NpdGlvbjoge1xuXHRcdFx0XHRcdHBsYWNlbWVudDogKGFjdGlvbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnQsXG5cdFx0XHRcdFx0YW5jaG9yOiBhY3Rpb24uYW5jaG9yXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1lbnU6IGFjdGlvbi5hY3Rpb25zLm1hcCgoc3ViQWN0aW9uKSA9PiBzdWJBY3Rpb24ua2V5KVxuXHRcdFx0fTtcblx0XHRcdGlmIChhY3Rpb24uaXNBPEFjdGlvbkdyb3VwPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBcIikpIHtcblx0XHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdFx0Li4uYWN0aW9uc1NldHRpbmdzW2tleV0sXG5cdFx0XHRcdFx0dGV4dDogYWN0aW9uLnRleHQsXG5cdFx0XHRcdFx0ZGVmYXVsdEFjdGlvbjogYWN0aW9uLmRlZmF1bHRBY3Rpb24sXG5cdFx0XHRcdFx0X19ub1dyYXA6IHRydWVcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdGFjdGlvbi5hY3Rpb25zLmZvckVhY2goKHN1YkFjdGlvbikgPT4ge1xuXHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3Qoc3ViQWN0aW9uKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0VBc0NPLFNBQVNBLHFCQUFxQkEsQ0FBQ0MsUUFBa0IsRUFBc0I7SUFDN0UsTUFBTUMsS0FBSyxHQUFHRCxRQUFRLENBQUNFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLE1BQU1DLFNBQVMsR0FBR0YsS0FBSyxFQUFFRyxZQUFZLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUNILEtBQUssSUFBSSxDQUFDRSxTQUFTLEVBQUU7TUFDekJFLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLGlGQUFpRixDQUFDO01BQzVGLE1BQU0sSUFBSUMsS0FBSyxDQUFDLGlGQUFpRixDQUFDO0lB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
256
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVUYWJsZURlZmluaXRpb24iLCJ0YWJsZUFQSSIsIm93bmVyIiwiX2dldE93bmVyIiwibWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiTG9nIiwiZXJyb3IiLCJFcnJvciIsIm1ldGFQYXRoQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0RnVsbE1ldGFQYXRoIiwiY29udGV4dFBhdGhDb250ZXh0IiwiY29udGV4dFBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiaW5pdGlhbENvbnZlcnRlckNvbnRleHQiLCJNYWNyb0FQSSIsImdldENvbnZlcnRlckNvbnRleHQiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJtb2RlbHMiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwidmlzdWFsaXphdGlvblBhdGgiLCJnZXRWaXN1YWxpemF0aW9uUGF0aCIsInRhYmxlU2V0dGluZ3MiLCJnZXRTZXR0aW5nc0Zvck1hbmlmZXN0IiwiZXh0cmFNYW5pZmVzdFNldHRpbmdzIiwib3ZlcmZsb3dHcm91cHMiLCJhY3Rpb25zIiwiY29sdW1ucyIsImFkZFNsb3RDb2x1bW5zVG9FeHRyYU1hbmlmZXN0IiwiYWRkU2xvdEFjdGlvbnNUb0V4dHJhTWFuaWZlc3QiLCJhZGRTbG90T3ZlcmZsb3dHcm91cHNUb0V4dHJhTWFuaWZlc3QiLCJleHRyYVBhcmFtcyIsImNvbnZlcnRlckNvbnRleHQiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudCIsImFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCIsInN2T2JqZWN0UGF0aCIsInRhcmdldE9iamVjdCIsInZpc3VhbGl6YXRpb25EZWZpbml0aW9uIiwiZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uIiwiaW5NdWx0aVZpZXciLCJnZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZ2V0RW50aXR5VHlwZSIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50IiwidXNlQ29uZGVuc2VkTGF5b3V0IiwiaXNNYWNyb09yTXVsdGlwbGVWaWV3IiwidmlzdWFsaXphdGlvbnMiLCJmaW5kIiwidml6IiwidHlwZSIsIlZpc3VhbGl6YXRpb25UeXBlIiwiVGFibGUiLCJfZXhwb3J0cyIsImlzQW5ub3RhdGlvbk9mVGVybSIsInJlc29sdmVkVGFyZ2V0IiwiZ2V0RW50aXR5VHlwZUFubm90YXRpb24iLCJnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uIiwidGVybSIsImxpbmVJdGVtVml6IiwidmlzdWFsaXphdGlvbiIsImFubm90YXRpb25QYXRoIiwicmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyIsIm9iaiIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwidW5kZWZpbmVkIiwiY3VzdG9tQ29sdW1uRGVmaW5pdGlvbiIsImNvbHVtbiIsImlzQ29sdW1uIiwiaXNBIiwiaGVhZGVyIiwid2lkdGgiLCJpbXBvcnRhbmNlIiwiaG9yaXpvbnRhbEFsaWduIiwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIiLCJleHBvcnRTZXR0aW5ncyIsInByb3BlcnRpZXMiLCJ0b29sdGlwIiwidGVtcGxhdGUiLCJhdmFpbGFiaWxpdHkiLCJyZXF1aXJlZCIsImFuY2hvciIsInBsYWNlbWVudCIsInBvc2l0aW9uIiwiYWRkQWN0aW9uVG9FeHRyYU1hbmlmZXN0IiwiYWN0aW9uIiwiY29tbWFuZCIsImVuYWJsZU9uU2VsZWN0IiwidmlzaWJsZSIsImVuYWJsZWQiLCJpc0FJT3BlcmF0aW9uIiwicHJpb3JpdHkiLCJncm91cCIsIm92ZXJmbG93R3JvdXAiLCJ0ZXh0IiwiX19ub1dyYXAiLCJwcmVzcyIsInJlcXVpcmVzU2VsZWN0aW9uIiwiYWZ0ZXJFeGVjdXRpb24iLCJlbmFibGVBdXRvU2Nyb2xsIiwibmF2aWdhdGVUb0luc3RhbmNlIiwiZW50cmllcyIsImxlbmd0aCIsImRlZmF1bHRWYWx1ZXNGdW5jdGlvbiIsImFjdGlvbnNTZXR0aW5ncyIsIm1lbnUiLCJtYXAiLCJzdWJBY3Rpb24iLCJkZWZhdWx0QWN0aW9uIiwiYWN0aW9uT3ZlcmZsb3dHcm91cHMiLCJzaG93U2VwYXJhdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUYWJsZURlZmluaXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0VUlBbm5vdGF0aW9uVGVybXMsXG5cdHR5cGUgTGluZUl0ZW0sXG5cdHR5cGUgUHJlc2VudGF0aW9uVmFyaWFudCxcblx0dHlwZSBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50LFxuXHR0eXBlIFNlbGVjdGlvblZhcmlhbnQsXG5cdHR5cGUgU2VsZWN0aW9uVmFyaWFudFR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyB0eXBlIFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHtcblx0VmlzdWFsaXphdGlvblR5cGUsXG5cdHR5cGUgQXZhaWxhYmlsaXR5VHlwZSxcblx0dHlwZSBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4sXG5cdHR5cGUgQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUsXG5cdHR5cGUgSW1wb3J0YW5jZSxcblx0dHlwZSBUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IHR5cGUgUGFnZUNvbnRleHRQYXRoVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IHR5cGUgQ2hhcnRWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0NoYXJ0XCI7XG5pbXBvcnQge1xuXHRnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24sXG5cdGdldFZpc3VhbGl6YXRpb25zRnJvbUFubm90YXRpb24sXG5cdHR5cGUgVmlzdWFsaXphdGlvbkFuZFBhdGhcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0RhdGFWaXN1YWxpemF0aW9uXCI7XG5pbXBvcnQgeyB0eXBlIFRhYmxlVmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9UYWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBQbGFjZW1lbnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgaXNBbm5vdGF0aW9uT2ZUZXJtIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHsgZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCwgdHlwZSBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IE1hY3JvQVBJIGZyb20gXCIuLi9NYWNyb0FQSVwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uIGZyb20gXCIuL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uR3JvdXAgZnJvbSBcIi4vQWN0aW9uR3JvdXBcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW4gZnJvbSBcIi4vQ29sdW1uXCI7XG5pbXBvcnQgdHlwZSBUYWJsZUFQSSBmcm9tIFwiLi9UYWJsZUFQSVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFibGVEZWZpbml0aW9uKHRhYmxlQVBJOiBUYWJsZUFQSSk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdGNvbnN0IG93bmVyID0gdGFibGVBUEkuX2dldE93bmVyKCk7XG5cdGNvbnN0IG1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwoKTtcblx0aWYgKCFvd25lciB8fCAhbWV0YU1vZGVsKSB7XG5cdFx0TG9nLmVycm9yKFwiQ2Fubm90IGNyZWF0ZSBhIHRhYmxlIGRlZmluaXRpb24gZm9yIGEgVGFibGVBUEkgd2l0aG91dCBhbiBvd25lciBvciBhIG1ldGFtb2RlbFwiKTtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY3JlYXRlIGEgdGFibGUgZGVmaW5pdGlvbiBmb3IgYSBUYWJsZUFQSSB3aXRob3V0IGFuIG93bmVyIG9yIGEgbWV0YW1vZGVsXCIpO1xuXHR9XG5cdGNvbnN0IG1ldGFQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0YWJsZUFQSS5nZXRGdWxsTWV0YVBhdGgoKSk7XG5cdGNvbnN0IGNvbnRleHRQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0YWJsZUFQSS5jb250ZXh0UGF0aCk7XG5cdGlmICghbWV0YVBhdGhDb250ZXh0IHx8ICFjb250ZXh0UGF0aENvbnRleHQpIHtcblx0XHRMb2cuZXJyb3IoYEluY29ycmVjdCBtZXRhUGF0aCAoJHt0YWJsZUFQSS5tZXRhUGF0aH0pIG9yIGNvbnRleHRQYXRoICgke3RhYmxlQVBJLmNvbnRleHRQYXRofSkgZm9yIHRhYmxlQVBJYCk7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiSW5jb3JyZWN0IG1ldGFQYXRoIG9yIGNvbnRleHRQYXRoIGZvciB0YWJsZUFQSVwiKTtcblx0fVxuXG5cdHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdG1ldGFQYXRoQ29udGV4dCxcblx0XHRjb250ZXh0UGF0aENvbnRleHRcblx0KTtcblxuXHRjb25zdCBpbml0aWFsQ29udmVydGVyQ29udGV4dCA9IE1hY3JvQVBJLmdldENvbnZlcnRlckNvbnRleHQodGFibGVBUEkuY29udGV4dE9iamVjdFBhdGgsIHRhYmxlQVBJLmNvbnRleHRQYXRoLCB7XG5cdFx0YXBwQ29tcG9uZW50OiBvd25lci5nZXRBcHBDb21wb25lbnQoKSxcblx0XHRtb2RlbHM6IG93bmVyLnByZXByb2Nlc3NvckNvbnRleHQ/Lm1vZGVsc1xuXHR9IGFzIFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpO1xuXHRjb25zdCB2aXN1YWxpemF0aW9uUGF0aCA9IGdldFZpc3VhbGl6YXRpb25QYXRoKHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoLCBpbml0aWFsQ29udmVydGVyQ29udGV4dCk7XG5cblx0Y29uc3QgdGFibGVTZXR0aW5ncyA9IHRhYmxlQVBJLmdldFNldHRpbmdzRm9yTWFuaWZlc3QoKTtcblxuXHRjb25zdCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uID0ge1xuXHRcdG92ZXJmbG93R3JvdXBzOiB7fSxcblx0XHRhY3Rpb25zOiB7fSxcblx0XHRjb2x1bW5zOiB7fSxcblx0XHR0YWJsZVNldHRpbmdzXG5cdH07XG5cblx0Ly8gUHJvY2VzcyBjdXN0b20gYWN0aW9ucyBhbmQgY29sdW1uc1xuXHRhZGRTbG90Q29sdW1uc1RvRXh0cmFNYW5pZmVzdCh0YWJsZUFQSSwgZXh0cmFNYW5pZmVzdFNldHRpbmdzKTtcblx0YWRkU2xvdEFjdGlvbnNUb0V4dHJhTWFuaWZlc3QodGFibGVBUEksIGV4dHJhTWFuaWZlc3RTZXR0aW5ncyk7XG5cdGFkZFNsb3RPdmVyZmxvd0dyb3Vwc1RvRXh0cmFNYW5pZmVzdCh0YWJsZUFQSSwgZXh0cmFNYW5pZmVzdFNldHRpbmdzKTtcblxuXHRjb25zdCBleHRyYVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0ZXh0cmFQYXJhbXNbdmlzdWFsaXphdGlvblBhdGhdID0gZXh0cmFNYW5pZmVzdFNldHRpbmdzO1xuXHRjb25zdCBjb252ZXJ0ZXJDb250ZXh0ID0gTWFjcm9BUEkuZ2V0Q29udmVydGVyQ29udGV4dChcblx0XHR0YWJsZUFQSS5jb250ZXh0T2JqZWN0UGF0aCxcblx0XHR0YWJsZUFQSS5jb250ZXh0UGF0aCxcblx0XHR7XG5cdFx0XHRhcHBDb21wb25lbnQ6IG93bmVyPy5nZXRBcHBDb21wb25lbnQoKSxcblx0XHRcdG1vZGVsczogb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ/Lm1vZGVsc1xuXHRcdH0gYXMgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyxcblx0XHRleHRyYVBhcmFtc1xuXHQpO1xuXG5cdGxldCBhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudFR5cGUgfCB1bmRlZmluZWQ7XG5cdGlmICh0YWJsZUFQSS5hc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgpIHtcblx0XHRjb25zdCBzdk9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8U2VsZWN0aW9uVmFyaWFudD4oXG5cdFx0XHRtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodGFibGVBUEkuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoKSEsXG5cdFx0XHRjb250ZXh0UGF0aENvbnRleHRcblx0XHQpO1xuXHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50ID0gc3ZPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0fVxuXG5cdGNvbnN0IHZpc3VhbGl6YXRpb25EZWZpbml0aW9uID0gZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uKFxuXHRcdCh0YWJsZUFQSS5pbk11bHRpVmlldyAmJiB0YWJsZUFQSS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdD8gY29udmVydGVyQ29udGV4dC5nZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoKFxuXHRcdFx0XHRcdHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdC5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHRcdCAgKVxuXHRcdFx0OiBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoKSkgYXMgc3RyaW5nLFxuXHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0e1xuXHRcdFx0aXNDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFudDogdGFibGVBUEkudXNlQ29uZGVuc2VkTGF5b3V0LFxuXHRcdFx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRpc01hY3JvT3JNdWx0aXBsZVZpZXc6IHRhYmxlQVBJLmluTXVsdGlWaWV3ID8/IHRydWVcblx0XHR9XG5cdCk7XG5cblx0Ly8gdGFrZSB0aGUgKGZpcnN0KSBUYWJsZSB2aXN1YWxpemF0aW9uXG5cdHJldHVybiB2aXN1YWxpemF0aW9uRGVmaW5pdGlvbi52aXN1YWxpemF0aW9ucy5maW5kKFxuXHRcdCh2aXo6IFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbikgPT4gdml6LnR5cGUgPT09IFZpc3VhbGl6YXRpb25UeXBlLlRhYmxlXG5cdCkgYXMgVGFibGVWaXN1YWxpemF0aW9uO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGFubm90YXRpb24gcGF0aCBwb2ludGluZyB0byB0aGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uIChMaW5lSXRlbSkuXG4gKiBAcGFyYW0gY29udGV4dE9iamVjdFBhdGggVGhlIGRhdGFtb2RlbCBvYmplY3QgcGF0aCBmb3IgdGhlIHRhYmxlXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBhbm5vdGF0aW9uIHBhdGhcbiAqL1xuZnVuY3Rpb24gZ2V0VmlzdWFsaXphdGlvblBhdGgoXG5cdGNvbnRleHRPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+LFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IHN0cmluZyB7XG5cdGNvbnN0IG1ldGFQYXRoID0gZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChjb250ZXh0T2JqZWN0UGF0aCkgYXMgc3RyaW5nO1xuXG5cdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgbWV0YXBhdGggaXMgbm90IHNldFxuXHRpZiAoIW1ldGFQYXRoKSB7XG5cdFx0TG9nLmVycm9yKGBNaXNzaW5nIG1ldGEgcGF0aCBwYXJhbWV0ZXIgZm9yIExpbmVJdGVtYCk7XG5cdFx0cmV0dXJuIGBAJHtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbX1gO1xuXHR9XG5cblx0aWYgKGlzQW5ub3RhdGlvbk9mVGVybTxMaW5lSXRlbT4oY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LCBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbSkpIHtcblx0XHRyZXR1cm4gbWV0YVBhdGg7IC8vIE1ldGFQYXRoIGlzIGFscmVhZHkgcG9pbnRpbmcgdG8gYSBMaW5lSXRlbVxuXHR9XG5cdC8vTmVlZCB0byBzd2l0Y2ggdG8gdGhlIGNvbnRleHQgcmVsYXRlZCB0aGUgUFYgb3IgU1BWXG5cdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihtZXRhUGF0aCk7XG5cblx0bGV0IHZpc3VhbGl6YXRpb25zOiBWaXN1YWxpemF0aW9uQW5kUGF0aFtdID0gW107XG5cdGlmIChcblx0XHRpc0Fubm90YXRpb25PZlRlcm08U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4oY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LCBVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50KSB8fFxuXHRcdGlzQW5ub3RhdGlvbk9mVGVybTxQcmVzZW50YXRpb25WYXJpYW50Pihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQpXG5cdCkge1xuXHRcdHZpc3VhbGl6YXRpb25zID0gZ2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIG1ldGFQYXRoLCByZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LCB0cnVlKTtcblx0fSBlbHNlIHtcblx0XHRMb2cuZXJyb3IoYEJhZCBtZXRhcGF0aCBwYXJhbWV0ZXIgZm9yIHRhYmxlIDogJHtjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QhLnRlcm19YCk7XG5cdH1cblxuXHRjb25zdCBsaW5lSXRlbVZpeiA9IHZpc3VhbGl6YXRpb25zLmZpbmQoKHZpeikgPT4ge1xuXHRcdHJldHVybiB2aXoudmlzdWFsaXphdGlvbi50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbTtcblx0fSk7XG5cblx0aWYgKGxpbmVJdGVtVml6KSB7XG5cdFx0cmV0dXJuIGxpbmVJdGVtVml6LmFubm90YXRpb25QYXRoO1xuXHR9IGVsc2Uge1xuXHRcdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgYW5ub3RhdGlvbiBtaXNzaW5nIGluIFBWXG5cdFx0TG9nLmVycm9yKGBCYWQgbWV0YSBwYXRoIHBhcmFtZXRlciBmb3IgTGluZUl0ZW06ICR7Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IS50ZXJtfWApO1xuXHRcdHJldHVybiBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDsgLy8gRmFsbGJhY2tcblx0fVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgd2l0aCB0aGUgdmFsdWUgb2YgdW5kZWZpbmVkIGZyb20gdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byByZW1vdmUgdGhlIHVuZGVmaW5lZCBwcm9wZXJ0aWVzIGZyb21cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG5cdE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0aWYgKG9ialtrZXldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRlbGV0ZSBvYmpba2V5XTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIEFkZHMgdGhlIHNsb3QgY29sdW1ucyB0byB0aGUgZXh0cmEgbWFuaWZlc3Qgc2V0dGluZ3MuXG4gKiBAcGFyYW0gdGFibGVBUElcbiAqIEBwYXJhbSBleHRyYU1hbmlmZXN0U2V0dGluZ3NcbiAqL1xuZnVuY3Rpb24gYWRkU2xvdENvbHVtbnNUb0V4dHJhTWFuaWZlc3QodGFibGVBUEk6IFRhYmxlQVBJLCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uKTogdm9pZCB7XG5cdGxldCBjdXN0b21Db2x1bW5EZWZpbml0aW9uOiBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCAoQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUgJiB7IGtleTogc3RyaW5nIH0pO1xuXG5cdHRhYmxlQVBJLmNvbHVtbnM/LmZvckVhY2goKGNvbHVtbikgPT4ge1xuXHRcdGNvbnN0IGlzQ29sdW1uID0gY29sdW1uLmlzQTxDb2x1bW4+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5cIik7XG5cdFx0aWYgKGlzQ29sdW1uKSB7XG5cdFx0XHRjdXN0b21Db2x1bW5EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRoZWFkZXI6IGNvbHVtbi5oZWFkZXIsXG5cdFx0XHRcdHdpZHRoOiBjb2x1bW4ud2lkdGgsXG5cdFx0XHRcdGltcG9ydGFuY2U6IGNvbHVtbi5pbXBvcnRhbmNlIGFzIEltcG9ydGFuY2UsXG5cdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNvbHVtbi53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcixcblx0XHRcdFx0ZXhwb3J0U2V0dGluZ3M6IGNvbHVtbi5leHBvcnRTZXR0aW5ncyxcblx0XHRcdFx0cHJvcGVydGllczogY29sdW1uLnByb3BlcnRpZXMsXG5cdFx0XHRcdHRvb2x0aXA6IGNvbHVtbi50b29sdGlwLFxuXHRcdFx0XHR0ZW1wbGF0ZTogY29sdW1uLnRlbXBsYXRlISxcblx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdHJlcXVpcmVkOiBjb2x1bW4ucmVxdWlyZWQsXG5cdFx0XHRcdHR5cGU6IFwiU2xvdFwiXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjdXN0b21Db2x1bW5EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRrZXk6IGNvbHVtbi5rZXksXG5cdFx0XHRcdHdpZHRoOiBjb2x1bW4ud2lkdGgsXG5cdFx0XHRcdGltcG9ydGFuY2U6IGNvbHVtbi5pbXBvcnRhbmNlIGFzIEltcG9ydGFuY2UsXG5cdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNvbHVtbi53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcixcblx0XHRcdFx0ZXhwb3J0U2V0dGluZ3M6IGNvbHVtbi5leHBvcnRTZXR0aW5ncyxcblx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGVcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIGFsbCB1bmRlZmluZWQgcHJvcGVydGllcywgc28gdGhhdCB0aGV5IGRvbid0IGVyYXNlIHdoYXQgaXMgc2V0IGluIHRoZSBtYW5pZmVzdFxuXHRcdC8vIChuZWNlc3NhcnkgYmVjYXVzZSBtYW5pZmVzdC1iYXNlZCBjb2x1bW5zIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIHNsb3QgY29sdW1ucyBhbmQgd2UgZG9uJ3QgY29weVxuXHRcdC8vIGFsbCB0aGVpciBwcm9wZXJ0aWVzIGluIHRoZSBYTUwpXG5cdFx0cmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhjdXN0b21Db2x1bW5EZWZpbml0aW9uKTtcblxuXHRcdGlmIChpc0NvbHVtbiAmJiAoY29sdW1uLmFuY2hvciB8fCBjb2x1bW4ucGxhY2VtZW50KSkge1xuXHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbi5wb3NpdGlvbiA9IHtcblx0XHRcdFx0YW5jaG9yOiBjb2x1bW4uYW5jaG9yLFxuXHRcdFx0XHRwbGFjZW1lbnQ6IChjb2x1bW4ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGV4dHJhTWFuaWZlc3RTZXR0aW5ncy5jb2x1bW5zIVtjb2x1bW4ua2V5XSA9IGN1c3RvbUNvbHVtbkRlZmluaXRpb247XG5cdH0pO1xufVxuXG4vKipcbiAqIEFkZHMgdGhlIHNsb3QgYWN0aW9ucyB0byB0aGUgZXh0cmEgbWFuaWZlc3Qgc2V0dGluZ3MuXG4gKiBAcGFyYW0gdGFibGVBUElcbiAqIEBwYXJhbSBleHRyYU1hbmlmZXN0U2V0dGluZ3NcbiAqL1xuZnVuY3Rpb24gYWRkU2xvdEFjdGlvbnNUb0V4dHJhTWFuaWZlc3QodGFibGVBUEk6IFRhYmxlQVBJLCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uKTogdm9pZCB7XG5cdGZ1bmN0aW9uIGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdChhY3Rpb246IEFjdGlvbiB8IEFjdGlvbk92ZXJyaWRlKTogdm9pZCB7XG5cdFx0Y29uc3QgYWN0aW9ucyA9IGV4dHJhTWFuaWZlc3RTZXR0aW5ncy5hY3Rpb25zITtcblx0XHRjb25zdCBrZXkgPSBhY3Rpb24ua2V5O1xuXHRcdGFjdGlvbnNba2V5XSA9IHtcblx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdHBsYWNlbWVudDogKGFjdGlvbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnQsXG5cdFx0XHRcdGFuY2hvcjogYWN0aW9uLmFuY2hvclxuXHRcdFx0fSxcblx0XHRcdGNvbW1hbmQ6IGFjdGlvbi5jb21tYW5kLFxuXHRcdFx0ZW5hYmxlT25TZWxlY3Q6IGFjdGlvbi5lbmFibGVPblNlbGVjdCxcblx0XHRcdHZpc2libGU6IGFjdGlvbi52aXNpYmxlLFxuXHRcdFx0ZW5hYmxlZDogYWN0aW9uLmVuYWJsZWQsXG5cdFx0XHRpc0FJT3BlcmF0aW9uOiBhY3Rpb24uaXNBSU9wZXJhdGlvbixcblx0XHRcdHByaW9yaXR5OiBhY3Rpb24ucHJpb3JpdHksXG5cdFx0XHRncm91cDogYWN0aW9uLmdyb3VwID8/IDAsIC8vIERlZmF1bHQgZ3JvdXAgdG8gMCBpZiBub3QgZGVmaW5lZFxuXHRcdFx0b3ZlcmZsb3dHcm91cDogYWN0aW9uLm92ZXJmbG93R3JvdXBcblx0XHR9O1xuXHRcdGlmIChhY3Rpb24uaXNBPEFjdGlvbj4oXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvblwiKSkge1xuXHRcdFx0YWN0aW9uc1trZXldID0ge1xuXHRcdFx0XHQuLi5hY3Rpb25zW2tleV0sXG5cdFx0XHRcdHRleHQ6IGFjdGlvbi50ZXh0LFxuXHRcdFx0XHRfX25vV3JhcDogdHJ1ZSxcblx0XHRcdFx0cHJlc3M6IFwic29tZSBoYW5kbGVyXCIsIC8vIFRoZSByZWFsIGhhbmRsZXIgd2lsbCBiZSB0cmlnZ2VyZWQgYnkgZmlyaW5nIHRoZSBldmVudCBvbiB0aGUgQWN0aW9uIG9iamVjdFxuXHRcdFx0XHRyZXF1aXJlc1NlbGVjdGlvbjogYWN0aW9uLnJlcXVpcmVzU2VsZWN0aW9uXG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBhZnRlckV4ZWN1dGlvbiA9IHtcblx0XHRcdGVuYWJsZUF1dG9TY3JvbGw6IGFjdGlvbltcImVuYWJsZUF1dG9TY3JvbGxcIl0sXG5cdFx0XHRuYXZpZ2F0ZVRvSW5zdGFuY2U6IGFjdGlvbltcIm5hdmlnYXRlVG9JbnN0YW5jZVwiXVxuXHRcdH07XG5cdFx0cmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhhZnRlckV4ZWN1dGlvbik7XG5cdFx0YWN0aW9uc1trZXldID0ge1xuXHRcdFx0Li4uYWN0aW9uc1trZXldLFxuXHRcdFx0YWZ0ZXJFeGVjdXRpb246IE9iamVjdC5lbnRyaWVzKGFmdGVyRXhlY3V0aW9uKS5sZW5ndGggPyBhZnRlckV4ZWN1dGlvbiA6IHVuZGVmaW5lZCxcblx0XHRcdGRlZmF1bHRWYWx1ZXNGdW5jdGlvbjogYWN0aW9uLmRlZmF1bHRWYWx1ZXNGdW5jdGlvblxuXHRcdH07XG5cdH1cblxuXHR0YWJsZUFQSS5hY3Rpb25zPy5mb3JFYWNoKChhY3Rpb24pID0+IHtcblx0XHRpZiAoYWN0aW9uLmlzQTxBY3Rpb24+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25cIikgfHwgYWN0aW9uLmlzQTxBY3Rpb25PdmVycmlkZT4oXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbk92ZXJyaWRlXCIpKSB7XG5cdFx0XHQvLyBBY3Rpb24gb3IgQWN0aW9uT3ZlcnJpZGVcblx0XHRcdGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdChhY3Rpb24pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBhY3Rpb25zU2V0dGluZ3MgPSBleHRyYU1hbmlmZXN0U2V0dGluZ3MuYWN0aW9ucyE7XG5cdFx0XHRjb25zdCBrZXkgPSBhY3Rpb24ua2V5O1xuXHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdFx0cGxhY2VtZW50OiAoYWN0aW9uLnBsYWNlbWVudCA/PyBcIkFmdGVyXCIpIGFzIFBsYWNlbWVudCxcblx0XHRcdFx0XHRhbmNob3I6IGFjdGlvbi5hbmNob3Jcblx0XHRcdFx0fSxcblx0XHRcdFx0bWVudTogYWN0aW9uLmFjdGlvbnMubWFwKChzdWJBY3Rpb24pID0+IHN1YkFjdGlvbi5rZXkpXG5cdFx0XHR9O1xuXHRcdFx0aWYgKGFjdGlvbi5pc0E8QWN0aW9uR3JvdXA+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cFwiKSkge1xuXHRcdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0XHR0ZXh0OiBhY3Rpb24udGV4dCxcblx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBhY3Rpb24uZGVmYXVsdEFjdGlvbixcblx0XHRcdFx0XHRfX25vV3JhcDogdHJ1ZVxuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdFx0YWN0aW9uLmFjdGlvbnMuZm9yRWFjaCgoc3ViQWN0aW9uKSA9PiB7XG5cdFx0XHRcdGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdChzdWJBY3Rpb24pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9KTtcbn1cblxuLyoqXG4gKiBBZGRzIHRoZSBzbG90IGFjdGlvbk92ZXJmbG93R3JvdXBzIHRvIHRoZSBleHRyYSBtYW5pZmVzdCBzZXR0aW5ncy5cbiAqIEBwYXJhbSB0YWJsZUFQSVxuICogQHBhcmFtIGV4dHJhTWFuaWZlc3RTZXR0aW5nc1xuICovXG5mdW5jdGlvbiBhZGRTbG90T3ZlcmZsb3dHcm91cHNUb0V4dHJhTWFuaWZlc3QodGFibGVBUEk6IFRhYmxlQVBJLCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uKTogdm9pZCB7XG5cdHRhYmxlQVBJLmFjdGlvbk92ZXJmbG93R3JvdXBzPy5mb3JFYWNoKChvdmVyZmxvd0dyb3VwKSA9PiB7XG5cdFx0ZXh0cmFNYW5pZmVzdFNldHRpbmdzLm92ZXJmbG93R3JvdXBzIVtvdmVyZmxvd0dyb3VwLm92ZXJmbG93R3JvdXBdID0ge1xuXHRcdFx0c2hvd1NlcGFyYXRvcjogb3ZlcmZsb3dHcm91cC5zaG93U2VwYXJhdG9yID8/IHRydWVcblx0XHR9O1xuXHR9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7RUFzQ08sU0FBU0EscUJBQXFCQSxDQUFDQyxRQUFrQixFQUFzQjtJQUM3RSxNQUFNQyxLQUFLLEdBQUdELFFBQVEsQ0FBQ0UsU0FBUyxDQUFDLENBQUM7SUFDbEMsTUFBTUMsU0FBUyxHQUFHRixLQUFLLEVBQUVHLFlBQVksQ0FBQyxDQUFDO0lBQ3ZDLElBQUksQ0FBQ0gsS0FBSyxJQUFJLENBQUNFLFNBQVMsRUFBRTtNQUN6QkUsR0FBRyxDQUFDQyxLQUFLLENBQUMsaUZBQWlGLENBQUM7TUFDNUYsTUFBTSxJQUFJQyxLQUFLLENBQUMsaUZBQWlGLENBQUM7SUFDbkc7SUFDQSxNQUFNQyxlQUFlLEdBQUdMLFNBQVMsQ0FBQ00sb0JBQW9CLENBQUNULFFBQVEsQ0FBQ1UsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNsRixNQUFNQyxrQkFBa0IsR0FBR1IsU0FBUyxDQUFDTSxvQkFBb0IsQ0FBQ1QsUUFBUSxDQUFDWSxXQUFXLENBQUM7SUFDL0UsSUFBSSxDQUFDSixl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
@@ -64,6 +64,7 @@ export function createTableDefinition(tableAPI: TableAPI): TableVisualization {
64
64
  const tableSettings = tableAPI.getSettingsForManifest();
65
65
 
66
66
  const extraManifestSettings: TableManifestConfiguration = {
67
+ overflowGroups: {},
67
68
  actions: {},
68
69
  columns: {},
69
70
  tableSettings
@@ -72,6 +73,7 @@ export function createTableDefinition(tableAPI: TableAPI): TableVisualization {
72
73
  // Process custom actions and columns
73
74
  addSlotColumnsToExtraManifest(tableAPI, extraManifestSettings);
74
75
  addSlotActionsToExtraManifest(tableAPI, extraManifestSettings);
76
+ addSlotOverflowGroupsToExtraManifest(tableAPI, extraManifestSettings);
75
77
 
76
78
  const extraParams: Record<string, unknown> = {};
77
79
  extraParams[visualizationPath] = extraManifestSettings;
@@ -247,7 +249,8 @@ function addSlotActionsToExtraManifest(tableAPI: TableAPI, extraManifestSettings
247
249
  enabled: action.enabled,
248
250
  isAIOperation: action.isAIOperation,
249
251
  priority: action.priority,
250
- group: action.group ?? 0 // Default group to 0 if not defined
252
+ group: action.group ?? 0, // Default group to 0 if not defined
253
+ overflowGroup: action.overflowGroup
251
254
  };
252
255
  if (action.isA<Action>("sap.fe.macros.table.Action")) {
253
256
  actions[key] = {
@@ -299,3 +302,16 @@ function addSlotActionsToExtraManifest(tableAPI: TableAPI, extraManifestSettings
299
302
  }
300
303
  });
301
304
  }
305
+
306
+ /**
307
+ * Adds the slot actionOverflowGroups to the extra manifest settings.
308
+ * @param tableAPI
309
+ * @param extraManifestSettings
310
+ */
311
+ function addSlotOverflowGroupsToExtraManifest(tableAPI: TableAPI, extraManifestSettings: TableManifestConfiguration): void {
312
+ tableAPI.actionOverflowGroups?.forEach((overflowGroup) => {
313
+ extraManifestSettings.overflowGroups![overflowGroup.overflowGroup] = {
314
+ showSeparator: overflowGroup.showSeparator ?? true
315
+ };
316
+ });
317
+ }