@sapui5/sap.fe.macros 1.138.0 → 1.140.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 (240) 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 +269 -0
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +243 -0
  5. package/src/sap/fe/macros/CommonHelper.js +2 -2
  6. package/src/sap/fe/macros/CommonHelper.ts +1 -1
  7. package/src/sap/fe/macros/Field.js +85 -58
  8. package/src/sap/fe/macros/Field.ts +104 -60
  9. package/src/sap/fe/macros/FooterContent.js +44 -11
  10. package/src/sap/fe/macros/FooterContent.tsx +48 -9
  11. package/src/sap/fe/macros/FormElement.js +2 -2
  12. package/src/sap/fe/macros/FormElement.ts +1 -2
  13. package/src/sap/fe/macros/MessageButton.js +1 -2
  14. package/src/sap/fe/macros/MessageButton.tsx +0 -1
  15. package/src/sap/fe/macros/MultiValueField.js +17 -6
  16. package/src/sap/fe/macros/MultiValueField.tsx +7 -4
  17. package/src/sap/fe/macros/RichTextEditor.js +30 -5
  18. package/src/sap/fe/macros/RichTextEditor.tsx +34 -6
  19. package/src/sap/fe/macros/Share.js +85 -40
  20. package/src/sap/fe/macros/Share.tsx +42 -1
  21. package/src/sap/fe/macros/Status.js +226 -0
  22. package/src/sap/fe/macros/Status.tsx +192 -0
  23. package/src/sap/fe/macros/ValueHelp.js +4 -29
  24. package/src/sap/fe/macros/ValueHelp.tsx +2 -43
  25. package/src/sap/fe/macros/ai/EasyFillButton.js +10 -4
  26. package/src/sap/fe/macros/ai/EasyFillButton.tsx +8 -1
  27. package/src/sap/fe/macros/ai/EasyFillDialog.js +25 -10
  28. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +32 -23
  29. package/src/sap/fe/macros/ai/EasyFilterBar.js +123 -114
  30. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +140 -124
  31. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +11 -5
  32. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +14 -5
  33. package/src/sap/fe/macros/ai/SummarizationButton.js +2 -2
  34. package/src/sap/fe/macros/ai/SummarizationButton.tsx +1 -1
  35. package/src/sap/fe/macros/chart/ChartDelegate.js +4 -4
  36. package/src/sap/fe/macros/chart/ChartDelegate.ts +3 -3
  37. package/src/sap/fe/macros/chart/ChartHelper.js +1 -2
  38. package/src/sap/fe/macros/chart/ChartHelper.ts +0 -1
  39. package/src/sap/fe/macros/chart/ChartRuntime.js +1 -2
  40. package/src/sap/fe/macros/chart/ChartRuntime.ts +0 -1
  41. package/src/sap/fe/macros/chart/MdcChartTemplate.js +20 -6
  42. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +16 -8
  43. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +3 -1
  44. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +2 -0
  45. package/src/sap/fe/macros/controls/FieldWrapper.js +9 -3
  46. package/src/sap/fe/macros/controls/FieldWrapper.ts +11 -2
  47. package/src/sap/fe/macros/controls/FilterBar.js +49 -2
  48. package/src/sap/fe/macros/controls/FilterBar.ts +55 -1
  49. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +2 -2
  50. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -2
  51. package/src/sap/fe/macros/controls/RequiredFlexBox.js +62 -0
  52. package/src/sap/fe/macros/controls/RequiredFlexBox.tsx +20 -0
  53. package/src/sap/fe/macros/controls/filterbar/VisualFilter.js +21 -11
  54. package/src/sap/fe/macros/controls/filterbar/VisualFilter.ts +25 -11
  55. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.js +11 -2
  56. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.ts +12 -1
  57. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.js +18 -1
  58. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.ts +20 -0
  59. package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
  60. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
  61. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +43 -4
  62. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -1
  63. package/src/sap/fe/macros/designtime/Designtime.helper.js +39 -2
  64. package/src/sap/fe/macros/designtime/Designtime.helper.ts +39 -0
  65. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +15 -4
  66. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +5 -0
  67. package/src/sap/fe/macros/field/FieldBaseDelegate.js +20 -8
  68. package/src/sap/fe/macros/field/FieldBaseDelegate.ts +34 -9
  69. package/src/sap/fe/macros/field/FieldFormatOptions.js +73 -44
  70. package/src/sap/fe/macros/field/FieldFormatOptions.ts +20 -2
  71. package/src/sap/fe/macros/field/FieldRuntime.js +1 -2
  72. package/src/sap/fe/macros/field/FieldRuntime.ts +0 -1
  73. package/src/sap/fe/macros/filter/FilterUtils.js +3 -5
  74. package/src/sap/fe/macros/filter/FilterUtils.ts +2 -4
  75. package/src/sap/fe/macros/filterBar/FilterBar.block.js +8 -2
  76. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +2 -5
  77. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +8 -8
  78. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +8 -8
  79. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.js +3 -1
  80. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.ts +2 -0
  81. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +1 -1
  82. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +1 -1
  83. package/src/sap/fe/macros/form/Form.js +1 -4
  84. package/src/sap/fe/macros/form/Form.tsx +0 -3
  85. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
  86. package/src/sap/fe/macros/form/FormContainer.block.js +1 -2
  87. package/src/sap/fe/macros/form/FormContainer.block.ts +0 -1
  88. package/src/sap/fe/macros/form/FormContainer.fragment.xml +40 -0
  89. package/src/sap/fe/macros/form/FormContainerAPI.js +14 -16
  90. package/src/sap/fe/macros/form/FormContainerAPI.ts +13 -15
  91. package/src/sap/fe/macros/form/FormDelegate.js +20 -1
  92. package/src/sap/fe/macros/form/FormDelegate.ts +25 -0
  93. package/src/sap/fe/macros/form/FormHelper.js +1 -2
  94. package/src/sap/fe/macros/form/FormHelper.ts +0 -1
  95. package/src/sap/fe/macros/formatters/TableFormatter.js +10 -1
  96. package/src/sap/fe/macros/formatters/TableFormatter.ts +14 -5
  97. package/src/sap/fe/macros/fpm/CustomFragment.block.js +1 -2
  98. package/src/sap/fe/macros/fpm/CustomFragment.block.ts +0 -1
  99. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +15 -3
  100. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +14 -2
  101. package/src/sap/fe/macros/internal/ActionCommand.block.js +1 -2
  102. package/src/sap/fe/macros/internal/ActionCommand.block.ts +0 -1
  103. package/src/sap/fe/macros/internal/DataPoint.js +2 -1
  104. package/src/sap/fe/macros/internal/DataPoint.tsx +1 -0
  105. package/src/sap/fe/macros/internal/DataPointFormatOptions.js +11 -2
  106. package/src/sap/fe/macros/internal/DataPointFormatOptions.ts +3 -0
  107. package/src/sap/fe/macros/internal/FilterField.block.js +10 -2
  108. package/src/sap/fe/macros/internal/FilterField.block.ts +11 -1
  109. package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
  110. package/src/sap/fe/macros/internal/field/DisplayStyle.js +51 -13
  111. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +53 -6
  112. package/src/sap/fe/macros/internal/field/EditStyle.js +5 -1
  113. package/src/sap/fe/macros/internal/field/EditStyle.tsx +4 -0
  114. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +9 -2
  115. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +11 -0
  116. package/src/sap/fe/macros/internal/field/FieldStyles.js +1 -1
  117. package/src/sap/fe/macros/internal/field/FieldStyles.tsx +2 -1
  118. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +46 -8
  119. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +60 -6
  120. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +38 -2
  121. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +37 -2
  122. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +2 -1
  123. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +16 -5
  124. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +21 -9
  125. package/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +1 -0
  126. package/src/sap/fe/macros/library.js +1 -1
  127. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +7 -2
  128. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +7 -3
  129. package/src/sap/fe/macros/messagebundle.properties +42 -32
  130. package/src/sap/fe/macros/messagebundle_ar.properties +12 -4
  131. package/src/sap/fe/macros/messagebundle_bg.properties +11 -3
  132. package/src/sap/fe/macros/messagebundle_ca.properties +15 -7
  133. package/src/sap/fe/macros/messagebundle_cnr.properties +12 -4
  134. package/src/sap/fe/macros/messagebundle_cs.properties +10 -2
  135. package/src/sap/fe/macros/messagebundle_cy.properties +12 -4
  136. package/src/sap/fe/macros/messagebundle_da.properties +11 -3
  137. package/src/sap/fe/macros/messagebundle_de.properties +18 -10
  138. package/src/sap/fe/macros/messagebundle_el.properties +13 -5
  139. package/src/sap/fe/macros/messagebundle_en.properties +16 -8
  140. package/src/sap/fe/macros/messagebundle_en_GB.properties +16 -8
  141. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +16 -8
  142. package/src/sap/fe/macros/messagebundle_es.properties +13 -5
  143. package/src/sap/fe/macros/messagebundle_es_MX.properties +14 -6
  144. package/src/sap/fe/macros/messagebundle_et.properties +13 -5
  145. package/src/sap/fe/macros/messagebundle_fi.properties +14 -6
  146. package/src/sap/fe/macros/messagebundle_fr.properties +14 -6
  147. package/src/sap/fe/macros/messagebundle_fr_CA.properties +15 -7
  148. package/src/sap/fe/macros/messagebundle_hi.properties +11 -3
  149. package/src/sap/fe/macros/messagebundle_hr.properties +11 -3
  150. package/src/sap/fe/macros/messagebundle_hu.properties +10 -2
  151. package/src/sap/fe/macros/messagebundle_id.properties +18 -10
  152. package/src/sap/fe/macros/messagebundle_it.properties +10 -2
  153. package/src/sap/fe/macros/messagebundle_iw.properties +10 -2
  154. package/src/sap/fe/macros/messagebundle_ja.properties +13 -5
  155. package/src/sap/fe/macros/messagebundle_kk.properties +15 -7
  156. package/src/sap/fe/macros/messagebundle_ko.properties +10 -2
  157. package/src/sap/fe/macros/messagebundle_lt.properties +11 -3
  158. package/src/sap/fe/macros/messagebundle_lv.properties +12 -4
  159. package/src/sap/fe/macros/messagebundle_mk.properties +12 -4
  160. package/src/sap/fe/macros/messagebundle_ms.properties +14 -6
  161. package/src/sap/fe/macros/messagebundle_nl.properties +13 -5
  162. package/src/sap/fe/macros/messagebundle_no.properties +12 -4
  163. package/src/sap/fe/macros/messagebundle_pl.properties +12 -4
  164. package/src/sap/fe/macros/messagebundle_pt.properties +13 -5
  165. package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -4
  166. package/src/sap/fe/macros/messagebundle_ro.properties +12 -4
  167. package/src/sap/fe/macros/messagebundle_ru.properties +13 -5
  168. package/src/sap/fe/macros/messagebundle_sh.properties +12 -4
  169. package/src/sap/fe/macros/messagebundle_sk.properties +11 -3
  170. package/src/sap/fe/macros/messagebundle_sl.properties +12 -4
  171. package/src/sap/fe/macros/messagebundle_sr.properties +12 -4
  172. package/src/sap/fe/macros/messagebundle_sv.properties +11 -3
  173. package/src/sap/fe/macros/messagebundle_th.properties +11 -3
  174. package/src/sap/fe/macros/messagebundle_tr.properties +10 -2
  175. package/src/sap/fe/macros/messagebundle_uk.properties +17 -9
  176. package/src/sap/fe/macros/messagebundle_vi.properties +12 -4
  177. package/src/sap/fe/macros/messagebundle_zh_CN.properties +11 -3
  178. package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -4
  179. package/src/sap/fe/macros/messages/MessageButton.js +55 -36
  180. package/src/sap/fe/macros/messages/MessageButton.ts +64 -39
  181. package/src/sap/fe/macros/messages/MessagePopover.js +2 -2
  182. package/src/sap/fe/macros/messages/MessagePopover.ts +4 -4
  183. package/src/sap/fe/macros/microchart/MicroChartContainer.js +1 -2
  184. package/src/sap/fe/macros/microchart/MicroChartContainer.ts +1 -2
  185. package/src/sap/fe/macros/microchart/MicroChartHelper.js +1 -2
  186. package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +0 -1
  187. package/src/sap/fe/macros/share/ShareAPI.js +4 -29
  188. package/src/sap/fe/macros/share/ShareAPI.ts +1 -32
  189. package/src/sap/fe/macros/situations/SituationsPopover.js +3 -1
  190. package/src/sap/fe/macros/situations/SituationsPopover.ts +2 -0
  191. package/src/sap/fe/macros/table/Action.js +24 -2
  192. package/src/sap/fe/macros/table/Action.ts +13 -0
  193. package/src/sap/fe/macros/table/ActionGroup.js +24 -2
  194. package/src/sap/fe/macros/table/ActionGroup.ts +13 -0
  195. package/src/sap/fe/macros/table/ActionGroupOverride.js +24 -2
  196. package/src/sap/fe/macros/table/ActionGroupOverride.ts +13 -0
  197. package/src/sap/fe/macros/table/ActionOverride.js +24 -2
  198. package/src/sap/fe/macros/table/ActionOverride.ts +13 -0
  199. package/src/sap/fe/macros/table/ActionsTemplating.js +73 -12
  200. package/src/sap/fe/macros/table/ActionsTemplating.tsx +69 -13
  201. package/src/sap/fe/macros/table/Column.js +3 -3
  202. package/src/sap/fe/macros/table/Column.ts +2 -2
  203. package/src/sap/fe/macros/table/MdcTableTemplate.js +20 -8
  204. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +36 -7
  205. package/src/sap/fe/macros/table/QuickFilterSelector.js +35 -14
  206. package/src/sap/fe/macros/table/QuickFilterSelector.tsx +22 -3
  207. package/src/sap/fe/macros/table/Table.block.js +137 -108
  208. package/src/sap/fe/macros/table/Table.block.tsx +29 -2
  209. package/src/sap/fe/macros/table/TableAPI.js +143 -133
  210. package/src/sap/fe/macros/table/TableAPI.ts +5 -1
  211. package/src/sap/fe/macros/table/TableDefinition.js +4 -2
  212. package/src/sap/fe/macros/table/TableDefinition.ts +3 -1
  213. package/src/sap/fe/macros/table/TableHelper.js +1 -2
  214. package/src/sap/fe/macros/table/TableHelper.ts +0 -1
  215. package/src/sap/fe/macros/table/TableRuntime.js +26 -7
  216. package/src/sap/fe/macros/table/TableRuntime.ts +33 -5
  217. package/src/sap/fe/macros/table/Utils.js +6 -2
  218. package/src/sap/fe/macros/table/Utils.ts +5 -1
  219. package/src/sap/fe/macros/table/delegates/ALPTableDelegate.js +1 -2
  220. package/src/sap/fe/macros/table/delegates/ALPTableDelegate.ts +0 -1
  221. package/src/sap/fe/macros/table/delegates/TableDelegate.js +25 -20
  222. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +25 -24
  223. package/src/sap/fe/macros/table/delegates/TreeTableDelegate.js +1 -2
  224. package/src/sap/fe/macros/table/delegates/TreeTableDelegate.ts +0 -1
  225. package/src/sap/fe/macros/table/designtime/Table.designtime.js +3 -1
  226. package/src/sap/fe/macros/table/designtime/Table.designtime.ts +2 -0
  227. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.js +3 -1
  228. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.ts +2 -1
  229. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -1
  230. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -0
  231. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +8 -1
  232. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +10 -0
  233. package/src/sap/fe/macros/table/mixin/TableSharing.js +3 -2
  234. package/src/sap/fe/macros/table/mixin/TableSharing.ts +9 -1
  235. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +20 -6
  236. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +36 -14
  237. package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -7
  238. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -3
  239. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +16 -5
  240. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +18 -4
@@ -266,6 +266,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
266
266
  active: this.hasQuickView,
267
267
  press: FieldRuntimeHelper.pressLink,
268
268
  ariaLabelledBy: this.ariaLabelledBy,
269
+ reactiveAreaMode: this.formatOptions?.reactiveAreaMode,
269
270
  children: {
270
271
  dependents: this.createDependents()
271
272
  }
@@ -380,4 +381,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
380
381
  _exports = DataPoint;
381
382
  return _exports;
382
383
  }, false);
383
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRhUG9pbnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImFzc29jaWF0aW9uIiwidHlwZSIsIl9kZWMzIiwicHJvcGVydHkiLCJyZXF1aXJlZCIsIl9kZWM0IiwiX2RlYzUiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiZGVmYXVsdENsYXNzIiwiRGF0YVBvaW50Rm9ybWF0T3B0aW9ucyIsIl9kZWM2IiwiaXNCaW5kaW5nSW5mbyIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsInByb3BlcnRpZXMiLCJvdGhlcnMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiaGFzUXVpY2tWaWV3IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJnZXRUZW1wbGF0aW5nT2JqZWN0cyIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiaW50ZXJuYWxEYXRhTW9kZWxQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwiaW50ZXJuYWxWYWx1ZURhdGFNb2RlbFBhdGgiLCJ2aXNpYmxlIiwiZ2V0VmlzaWJsZUV4cHJlc3Npb24iLCJ0YXJnZXRPYmplY3QiLCJWYWx1ZSIsInBhdGgiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsImRhdGFNb2RlbFBhdGgiLCJ2YWx1ZURhdGFNb2RlbFBhdGgiLCJnZXREYXRhUG9pbnRWaXN1YWxpemF0aW9uIiwiVmlzdWFsaXphdGlvbiIsInZpc3VhbGl6YXRpb24iLCJ2YWx1ZVByb3BlcnR5IiwiaXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cyIsImdldFByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0IiwiaXNQcm9wZXJ0eSIsImhhc1VuaXQiLCJoYXNDdXJyZW5jeSIsImdldEVuYWJsZWQiLCJpc0EiLCJnZXRBY3RpdmUiLCJzZXRFbmFibGVkIiwiZW5hYmxlZCIsInNldFByb3BlcnR5IiwiY3JlYXRlUmF0aW5nSW5kaWNhdG9yIiwiZGF0YVBvaW50VGFyZ2V0IiwidGFyZ2V0VmFsdWUiLCJnZXRUYXJnZXRWYWx1ZUJpbmRpbmciLCJkYXRhUG9pbnRWYWx1ZSIsInByb3BlcnR5VHlwZSIsIiR0YXJnZXQiLCJudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMiLCJWYWx1ZUZvcm1hdCIsIk51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyIsInZhbHVlIiwiZ2V0VmFsdWVGb3JtYXR0ZWQiLCJfanN4IiwiUmF0aW5nSW5kaWNhdG9yIiwiaWQiLCJpZFByZWZpeCIsImdlbmVyYXRlIiwidW5kZWZpbmVkIiwibWF4VmFsdWUiLCJjb21waWxlRXhwcmVzc2lvbiIsInRvb2x0aXAiLCJnZXRUb29sdGlwVmFsdWUiLCJpY29uU2l6ZSIsImZvcm1hdE9wdGlvbnMiLCJjbGFzcyIsInNob3dMYWJlbHMiLCJlZGl0YWJsZSIsImFyaWFMYWJlbGxlZEJ5IiwiY3JlYXRlUHJvZ3Jlc3NJbmRpY2F0b3IiLCJjcml0aWNhbGl0eUNvbG9yRXhwcmVzc2lvbiIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3IiLCJkaXNwbGF5VmFsdWUiLCJidWlsZEV4cHJlc3Npb25Gb3JQcm9ncmVzc0luZGljYXRvckRpc3BsYXlWYWx1ZSIsInBlcmNlbnRWYWx1ZSIsImJ1aWxkRXhwcmVzc2lvbkZvclByb2dyZXNzSW5kaWNhdG9yUGVyY2VudFZhbHVlIiwiUHJvZ3Jlc3NJbmRpY2F0b3IiLCJzdGF0ZSIsImNyZWF0ZU9iamVjdE51bWJlciIsImVtcHR5SW5kaWNhdG9yTW9kZSIsInNob3dFbXB0eUluZGljYXRvciIsIm9iamVjdFN0YXR1c051bWJlciIsImJ1aWxkRmllbGRCaW5kaW5nRXhwcmVzc2lvbiIsImxpbWl0U2hvd0RlY2ltYWxzIiwiZ2V0TWFuaWZlc3RXcmFwcGVyIiwiZ2V0U2FwRmVNYW5pZmVzdENvbmZpZ3VyYXRpb24iLCJhcHAiLCJzaG93T25seVVuaXREZWNpbWFscyIsInVuaXQiLCJtZWFzdXJlRGlzcGxheU1vZGUiLCJVSUZvcm1hdHRlcnMiLCJnZXRCaW5kaW5nRm9yVW5pdE9yQ3VycmVuY3kiLCJPYmplY3ROdW1iZXIiLCJudW1iZXIiLCJlbXBoYXNpemVkIiwiZGF0YVBvaW50U3R5bGUiLCJjcmVhdGVEZXBlbmRlbnRzIiwiUXVpY2tWaWV3IiwiY3JlYXRlT2JqZWN0U3RhdHVzIiwib2JqZWN0U3RhdHVzVGV4dCIsImljb25FeHByZXNzaW9uIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlJY29uIiwiT2JqZWN0U3RhdHVzIiwiaWNvbiIsInRleHQiLCJhY3RpdmUiLCJwcmVzcyIsIkZpZWxkUnVudGltZUhlbHBlciIsInByZXNzTGluayIsImNoaWxkcmVuIiwiZGVwZW5kZW50cyIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiUXVpY2tJbmZvIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiZ2V0UmVsYXRpdmVQYXRocyIsIlRhcmdldFZhbHVlIiwiZ2V0VmFsdWUiLCJnZXRUZXh0IiwiZ2V0TnVtYmVyIiwiZ2V0RGlzcGxheVZhbHVlIiwidG9TdHJpbmciLCJnZXRQcm9wZXJ0eSIsInNldFZhbHVlIiwic2V0VGV4dCIsInNldE51bWJlciIsIkxvZyIsImVycm9yIiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRGF0YVBvaW50LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBWaXN1YWxpemF0aW9uVHlwZSwgdHlwZSBEYXRhUG9pbnRUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCB0eXBlIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGFzc29jaWF0aW9uLCBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHksIHR5cGUgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2sgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGlzUHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgeyBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yLCBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUljb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Dcml0aWNhbGl0eUZvcm1hdHRlcnNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGVuaGFuY2VEYXRhTW9kZWxQYXRoLCBnZXRSZWxhdGl2ZVBhdGhzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgaGFzQ3VycmVuY3ksIGhhc1VuaXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0UHJvcGVydHlXaXRoU2VtYW50aWNPYmplY3QgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9TZW1hbnRpY09iamVjdEhlbHBlclwiO1xuaW1wb3J0ICogYXMgVUlGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IHsgZ2V0VmlzaWJsZUV4cHJlc3Npb24sIGlzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHMgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZFRlbXBsYXRpbmdcIjtcbmltcG9ydCB7XG5cdGJ1aWxkRXhwcmVzc2lvbkZvclByb2dyZXNzSW5kaWNhdG9yRGlzcGxheVZhbHVlLFxuXHRidWlsZEV4cHJlc3Npb25Gb3JQcm9ncmVzc0luZGljYXRvclBlcmNlbnRWYWx1ZSxcblx0YnVpbGRGaWVsZEJpbmRpbmdFeHByZXNzaW9uLFxuXHRnZXRWYWx1ZUZvcm1hdHRlZFxufSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9oZWxwZXJzL0RhdGFQb2ludFRlbXBsYXRpbmdcIjtcbmltcG9ydCBRdWlja1ZpZXcgZnJvbSBcInNhcC9mZS9tYWNyb3MvcXVpY2tWaWV3L1F1aWNrVmlld1wiO1xuaW1wb3J0IE9iamVjdE51bWJlciBmcm9tIFwic2FwL20vT2JqZWN0TnVtYmVyXCI7XG5pbXBvcnQgdHlwZSB7IE9iamVjdFN0YXR1cyRQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC9tL09iamVjdFN0YXR1c1wiO1xuaW1wb3J0IE9iamVjdFN0YXR1cyBmcm9tIFwic2FwL20vT2JqZWN0U3RhdHVzXCI7XG5pbXBvcnQgUHJvZ3Jlc3NJbmRpY2F0b3IgZnJvbSBcInNhcC9tL1Byb2dyZXNzSW5kaWNhdG9yXCI7XG5pbXBvcnQgUmF0aW5nSW5kaWNhdG9yIGZyb20gXCJzYXAvbS9SYXRpbmdJbmRpY2F0b3JcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBNZGNMaW5rIGZyb20gXCJzYXAvdWkvbWRjL0xpbmtcIjtcbmltcG9ydCBGaWVsZFJ1bnRpbWVIZWxwZXIgZnJvbSBcIi4uL2ZpZWxkL0ZpZWxkUnVudGltZUhlbHBlclwiO1xuaW1wb3J0IERhdGFQb2ludEZvcm1hdE9wdGlvbnMgZnJvbSBcIi4vRGF0YVBvaW50Rm9ybWF0T3B0aW9uc1wiO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLmludGVybmFsLkRhdGFQb2ludFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGF0YVBvaW50IGV4dGVuZHMgQnVpbGRpbmdCbG9jazxDb250cm9sPiB7XG5cdC8qKlxuXHQgKiBQcmVmaXggYWRkZWQgdG8gdGhlIGdlbmVyYXRlZCBJRCBvZiB0aGUgZmllbGRcblx0ICovXG5cdEBhc3NvY2lhdGlvbih7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRwdWJsaWMgaWRQcmVmaXg/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIE1ldGFkYXRhIHBhdGggdG8gdGhlIGRhdGFQb2ludC5cblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KVxuXHRwdWJsaWMgbWV0YVBhdGghOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWwuRGF0YVBvaW50Rm9ybWF0T3B0aW9uc1wiLCBtdWx0aXBsZTogZmFsc2UsIGRlZmF1bHRDbGFzczogRGF0YVBvaW50Rm9ybWF0T3B0aW9ucyB9KVxuXHRmb3JtYXRPcHRpb25zITogRGF0YVBvaW50Rm9ybWF0T3B0aW9ucztcblxuXHQvKipcblx0ICogUHJvcGVydHkgdG8gc2V0IGFuIGV4dGVybmFsIHZhbHVlIHRoYXQgY29tZXMgZnJvbSBhIGRpZmZlcmVudCBtb2RlbCB0aGFuIHRoZSBvRGF0YSBtb2RlbFxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGlzQmluZGluZ0luZm86IHRydWVcblx0fSlcblx0cHVibGljIHZhbHVlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSB0byBzZXQgdGhlIHZpc3VhbGl6YXRpb24gdHlwZVxuXHQgKi9cblx0cHJpdmF0ZSB2aXN1YWxpemF0aW9uPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSB0byBzZXQgdGhlIHZpc2liaWxpdHlcblx0ICovXG5cdHByaXZhdGUgdmlzaWJsZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0LyoqXG5cdCAqIFByb3BlcnR5IHRvIHNldCBwcm9wZXJ0eSBpZiB0aGUgcHJvcGVydHkgaGFzIGEgUXVpY2t2aWV3XG5cdCAqL1xuXHRwcml2YXRlIGhhc1F1aWNrVmlldyA9IGZhbHNlO1xuXG5cdHByaXZhdGUgZGF0YU1vZGVsUGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZT47XG5cblx0cHJpdmF0ZSB2YWx1ZURhdGFNb2RlbFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5PjtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzOiAkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPERhdGFQb2ludD4sIG90aGVycz86ICRDb250cm9sU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wZXJ0aWVzLCBvdGhlcnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIHRoZSBvbk1ldGFkYXRhQXZhaWxhYmxlIGV2ZW50LlxuXHQgKi9cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHR0aGlzLmdldFRlbXBsYXRpbmdPYmplY3RzKCk7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGdW5jdGlvbiB0byBnZXQgdGhlIHRlbXBsYXRpbmcgb2JqZWN0cy5cblx0ICovXG5cdHByaXZhdGUgZ2V0VGVtcGxhdGluZ09iamVjdHMoKTogdm9pZCB7XG5cdFx0Y29uc3QgaW50ZXJuYWxEYXRhTW9kZWxQYXRoID0gdGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aDxEYXRhUG9pbnRUeXBlPih0aGlzLm1ldGFQYXRoLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRpZiAoIWludGVybmFsRGF0YU1vZGVsUGF0aCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRsZXQgaW50ZXJuYWxWYWx1ZURhdGFNb2RlbFBhdGg7XG5cdFx0dGhpcy52aXNpYmxlID0gZ2V0VmlzaWJsZUV4cHJlc3Npb24oaW50ZXJuYWxEYXRhTW9kZWxQYXRoKTtcblx0XHRpZiAoaW50ZXJuYWxEYXRhTW9kZWxQYXRoPy50YXJnZXRPYmplY3Q/LlZhbHVlPy5wYXRoKSB7XG5cdFx0XHRpbnRlcm5hbFZhbHVlRGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5Pihcblx0XHRcdFx0aW50ZXJuYWxEYXRhTW9kZWxQYXRoLFxuXHRcdFx0XHRpbnRlcm5hbERhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0LlZhbHVlLnBhdGhcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5kYXRhTW9kZWxQYXRoID0gaW50ZXJuYWxEYXRhTW9kZWxQYXRoO1xuXHRcdHRoaXMudmFsdWVEYXRhTW9kZWxQYXRoID0gaW50ZXJuYWxWYWx1ZURhdGFNb2RlbFBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogRnVuY3Rpb24gdGhhdCBjYWxjdWxhdGVzIHRoZSB2aXN1YWxpemF0aW9uIHR5cGUgZm9yIHRoaXMgRGF0YVBvaW50LlxuXHQgKiBAcGFyYW0gZGF0YU1vZGVsUGF0aFxuXHQgKi9cblx0cHJpdmF0ZSBnZXREYXRhUG9pbnRWaXN1YWxpemF0aW9uKGRhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZT4pOiB2b2lkIHtcblx0XHRpZiAoZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3Q/LlZpc3VhbGl6YXRpb24gPT09IFZpc3VhbGl6YXRpb25UeXBlLlJhdGluZykge1xuXHRcdFx0dGhpcy52aXN1YWxpemF0aW9uID0gXCJSYXRpbmdcIjtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0Py5WaXN1YWxpemF0aW9uID09PSBWaXN1YWxpemF0aW9uVHlwZS5Qcm9ncmVzcykge1xuXHRcdFx0dGhpcy52aXN1YWxpemF0aW9uID0gXCJQcm9ncmVzc1wiO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCB2YWx1ZVByb3BlcnR5ID0gdGhpcy52YWx1ZURhdGFNb2RlbFBhdGggJiYgdGhpcy52YWx1ZURhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0O1xuXHRcdC8vY2hlY2sgd2hldGhlciB0aGUgdmlzdWFsaXphdGlvbiB0eXBlIHNob3VsZCBiZSBhbiBvYmplY3QgbnVtYmVyIGluIGNhc2Ugb25lIG9mIHRoZSBpZiBjb25kaXRpb25zIG1ldFxuXHRcdHRoaXMuaGFzUXVpY2tWaWV3ID0gKHZhbHVlUHJvcGVydHkgJiYgaXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cyhkYXRhTW9kZWxQYXRoLCB2YWx1ZVByb3BlcnR5KSkgPz8gZmFsc2U7XG5cdFx0aWYgKHRoaXMudmFsdWVEYXRhTW9kZWxQYXRoICYmIGdldFByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0KHRoaXMudmFsdWVEYXRhTW9kZWxQYXRoKSkge1xuXHRcdFx0dGhpcy5oYXNRdWlja1ZpZXcgPSB0cnVlO1xuXHRcdH1cblx0XHRpZiAodGhpcy5oYXNRdWlja1ZpZXcgIT09IHRydWUpIHtcblx0XHRcdGlmIChpc1Byb3BlcnR5KHZhbHVlUHJvcGVydHkpICYmIChoYXNVbml0KHZhbHVlUHJvcGVydHkpIHx8IGhhc0N1cnJlbmN5KHZhbHVlUHJvcGVydHkpKSkge1xuXHRcdFx0XHQvLyB3ZSBvbmx5IHNob3cgYW4gb2JqZWN0TnVtYmVyIGlmIHRoZXJlIGlzIG5vIHF1aWNrdmlldyBhbmQgYSB1bml0IG9yIGEgY3VycmVuY3lcblx0XHRcdFx0dGhpcy52aXN1YWxpemF0aW9uID0gXCJPYmplY3ROdW1iZXJcIjtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vZGVmYXVsdCBjYXNlIHRvIGhhbmRsZSB0aGlzIGFzIG9iamVjdFN0YXR1cyB0eXBlXG5cdFx0dGhpcy52aXN1YWxpemF0aW9uID0gXCJPYmplY3RTdGF0dXNcIjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBjdXJyZW50IGVuYWJsZW1lbnQgc3RhdGUgb2YgdGhlIGRhdGFQb2ludC5cblx0ICogQHJldHVybnMgQm9vbGVhbiB2YWx1ZSB3aXRoIHRoZSBlbmFibGVtZW50IHN0YXRlXG5cdCAqL1xuXHRnZXRFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxPYmplY3RTdGF0dXM+KFwic2FwLm0uT2JqZWN0U3RhdHVzXCIpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb250ZW50LmdldEFjdGl2ZSgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgY3VycmVudCBlbmFibGVtZW50IHN0YXRlIG9mIHRoZSBkYXRhcG9pbnQuXG5cdCAqIEBwYXJhbSBlbmFibGVkXG5cdCAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGRhdGFwb2ludCByZWZlcmVuY2Vcblx0ICovXG5cdHNldEVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IENvbnRyb2wge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxPYmplY3RTdGF0dXM+KFwic2FwLm0uT2JqZWN0U3RhdHVzXCIpKSB7XG5cdFx0XHR0aGlzLmNvbnRlbnQuc2V0UHJvcGVydHkoXCJhY3RpdmVcIiwgZW5hYmxlZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IFwic2V0RW5hYmxlZCBpc24ndCBpbXBsZW1lbnRlZCBmb3IgdGhpcyBmaWVsZCB0eXBlXCI7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBSYXRpbmdJbmRpY2F0b3IgY29udHJvbC5cblx0ICogQHBhcmFtIGRhdGFNb2RlbFBhdGhcblx0ICogQHJldHVybnMgUmF0aW5nSW5kaWNhdG9yXG5cdCAqL1xuXHRjcmVhdGVSYXRpbmdJbmRpY2F0b3IoZGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhUG9pbnRUeXBlPik6IFJhdGluZ0luZGljYXRvciB7XG5cdFx0Y29uc3QgZGF0YVBvaW50VGFyZ2V0ID0gZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3Q7XG5cdFx0Y29uc3QgdGFyZ2V0VmFsdWUgPSB0aGlzLmdldFRhcmdldFZhbHVlQmluZGluZyhkYXRhTW9kZWxQYXRoKTtcblxuXHRcdGNvbnN0IGRhdGFQb2ludFZhbHVlID0gZGF0YVBvaW50VGFyZ2V0Py5WYWx1ZSB8fCBcIlwiO1xuXHRcdGNvbnN0IHByb3BlcnR5VHlwZSA9IGRhdGFQb2ludFZhbHVlPy4kdGFyZ2V0Py50eXBlO1xuXG5cdFx0bGV0IG51bWJlck9mRnJhY3Rpb25hbERpZ2l0cztcblx0XHRpZiAocHJvcGVydHlUeXBlID09PSBcIkVkbS5EZWNpbWFsXCIgJiYgZGF0YVBvaW50VGFyZ2V0Py5WYWx1ZUZvcm1hdCkge1xuXHRcdFx0aWYgKGRhdGFQb2ludFRhcmdldC5WYWx1ZUZvcm1hdC5OdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMpIHtcblx0XHRcdFx0bnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzID0gZGF0YVBvaW50VGFyZ2V0LlZhbHVlRm9ybWF0Lk51bWJlck9mRnJhY3Rpb25hbERpZ2l0cztcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3QgdmFsdWUgPSBnZXRWYWx1ZUZvcm1hdHRlZCh0aGlzLnZhbHVlRGF0YU1vZGVsUGF0aCwgZGF0YVBvaW50VmFsdWUsIHByb3BlcnR5VHlwZSwgbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzKTtcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8UmF0aW5nSW5kaWNhdG9yXG5cdFx0XHRcdGlkPXt0aGlzLmlkUHJlZml4ID8gZ2VuZXJhdGUoW3RoaXMuaWRQcmVmaXgsIFwiUmF0aW5nSW5kaWNhdG9yLUZpZWxkLWRpc3BsYXlcIl0pIDogdW5kZWZpbmVkfVxuXHRcdFx0XHRtYXhWYWx1ZT17dGFyZ2V0VmFsdWV9XG5cdFx0XHRcdHZhbHVlPXt0aGlzLnZhbHVlID8/IGNvbXBpbGVFeHByZXNzaW9uKHZhbHVlKX1cblx0XHRcdFx0dG9vbHRpcD17dGhpcy5nZXRUb29sdGlwVmFsdWUoZGF0YU1vZGVsUGF0aCl9XG5cdFx0XHRcdGljb25TaXplPXt0aGlzLmZvcm1hdE9wdGlvbnM/Lmljb25TaXplfVxuXHRcdFx0XHRjbGFzcz17dGhpcy5mb3JtYXRPcHRpb25zPy5zaG93TGFiZWxzID8/IGZhbHNlID8gXCJzYXBVaVRpbnlNYXJnaW5Ub3BCb3R0b21cIiA6IHVuZGVmaW5lZH1cblx0XHRcdFx0ZWRpdGFibGU9XCJmYWxzZVwiXG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXt0aGlzLmFyaWFMYWJlbGxlZEJ5fVxuXHRcdFx0Lz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBQcm9ncmVzc0luZGljYXRvciBjb250cm9sLlxuXHQgKiBAcGFyYW0gZGF0YU1vZGVsUGF0aFxuXHQgKiBAcmV0dXJucyBQcm9ncmVzc0luZGljYXRvclxuXHQgKi9cblx0Y3JlYXRlUHJvZ3Jlc3NJbmRpY2F0b3IoZGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhUG9pbnRUeXBlPik6IFByb2dyZXNzSW5kaWNhdG9yIHtcblx0XHRjb25zdCBjcml0aWNhbGl0eUNvbG9yRXhwcmVzc2lvbiA9IGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0XG5cdFx0XHQ/IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3IoZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QsIGRhdGFNb2RlbFBhdGgpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBkaXNwbGF5VmFsdWUgPSBidWlsZEV4cHJlc3Npb25Gb3JQcm9ncmVzc0luZGljYXRvckRpc3BsYXlWYWx1ZShkYXRhTW9kZWxQYXRoKTtcblx0XHRjb25zdCBwZXJjZW50VmFsdWUgPSBidWlsZEV4cHJlc3Npb25Gb3JQcm9ncmVzc0luZGljYXRvclBlcmNlbnRWYWx1ZShkYXRhTW9kZWxQYXRoKTtcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8UHJvZ3Jlc3NJbmRpY2F0b3Jcblx0XHRcdFx0aWQ9e3RoaXMuaWRQcmVmaXggPyBnZW5lcmF0ZShbdGhpcy5pZFByZWZpeCwgXCJQcm9ncmVzc0luZGljYXRvci1GaWVsZC1kaXNwbGF5XCJdKSA6IHVuZGVmaW5lZH1cblx0XHRcdFx0ZGlzcGxheVZhbHVlPXtkaXNwbGF5VmFsdWV9XG5cdFx0XHRcdHBlcmNlbnRWYWx1ZT17cGVyY2VudFZhbHVlfVxuXHRcdFx0XHRzdGF0ZT17Y3JpdGljYWxpdHlDb2xvckV4cHJlc3Npb259XG5cdFx0XHRcdHRvb2x0aXA9e3RoaXMuZ2V0VG9vbHRpcFZhbHVlKGRhdGFNb2RlbFBhdGgpfVxuXHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17dGhpcy5hcmlhTGFiZWxsZWRCeX1cblx0XHRcdC8+XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIE9iamVjdE51bWJlciBjb250cm9sLlxuXHQgKiBAcGFyYW0gZGF0YU1vZGVsUGF0aFxuXHQgKiBAcmV0dXJucyBPYmplY3ROdW1iZXJcblx0ICovXG5cdGNyZWF0ZU9iamVjdE51bWJlcihkYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+KTogT2JqZWN0TnVtYmVyIHtcblx0XHRjb25zdCBjcml0aWNhbGl0eUNvbG9yRXhwcmVzc2lvbiA9IGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0XG5cdFx0XHQ/IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3IoZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QsIGRhdGFNb2RlbFBhdGgpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBlbXB0eUluZGljYXRvck1vZGUgPSB0aGlzLmZvcm1hdE9wdGlvbnM/LnNob3dFbXB0eUluZGljYXRvciA/PyBmYWxzZSA/IFwiT25cIiA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBvYmplY3RTdGF0dXNOdW1iZXIgPSBidWlsZEZpZWxkQmluZGluZ0V4cHJlc3Npb24oZGF0YU1vZGVsUGF0aCwgdGhpcy5mb3JtYXRPcHRpb25zLCB0cnVlKTtcblx0XHRjb25zdCBsaW1pdFNob3dEZWNpbWFscyA9IHRoaXMuZ2V0TWFuaWZlc3RXcmFwcGVyKCk/LmdldFNhcEZlTWFuaWZlc3RDb25maWd1cmF0aW9uKCk/LmFwcD8uc2hvd09ubHlVbml0RGVjaW1hbHMgPT09IHRydWU7XG5cdFx0Y29uc3QgdW5pdCA9XG5cdFx0XHR0aGlzLmZvcm1hdE9wdGlvbnM/Lm1lYXN1cmVEaXNwbGF5TW9kZSA9PT0gXCJIaWRkZW5cIlxuXHRcdFx0XHQ/IHVuZGVmaW5lZFxuXHRcdFx0XHQ6IGNvbXBpbGVFeHByZXNzaW9uKFVJRm9ybWF0dGVycy5nZXRCaW5kaW5nRm9yVW5pdE9yQ3VycmVuY3kodGhpcy52YWx1ZURhdGFNb2RlbFBhdGgsIHRydWUsIGxpbWl0U2hvd0RlY2ltYWxzKSk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PE9iamVjdE51bWJlclxuXHRcdFx0XHRpZD17dGhpcy5pZFByZWZpeCA/IGdlbmVyYXRlKFt0aGlzLmlkUHJlZml4LCBcIk9iamVjdE51bWJlci1GaWVsZC1kaXNwbGF5XCJdKSA6IHVuZGVmaW5lZH1cblx0XHRcdFx0c3RhdGU9e2NyaXRpY2FsaXR5Q29sb3JFeHByZXNzaW9ufVxuXHRcdFx0XHRudW1iZXI9e3RoaXMudmFsdWUgPz8gb2JqZWN0U3RhdHVzTnVtYmVyfVxuXHRcdFx0XHR1bml0PXt1bml0fVxuXHRcdFx0XHR2aXNpYmxlPXt0aGlzLnZpc2libGV9XG5cdFx0XHRcdGVtcGhhc2l6ZWQ9XCJmYWxzZVwiXG5cdFx0XHRcdGNsYXNzPXt0aGlzLmZvcm1hdE9wdGlvbnM/LmRhdGFQb2ludFN0eWxlID09PSBcImxhcmdlXCIgPyBcInNhcE1PYmplY3ROdW1iZXJMYXJnZVwiIDogdW5kZWZpbmVkfVxuXHRcdFx0XHR0b29sdGlwPXt0aGlzLmdldFRvb2x0aXBWYWx1ZShkYXRhTW9kZWxQYXRoKX1cblx0XHRcdFx0ZW1wdHlJbmRpY2F0b3JNb2RlPXtlbXB0eUluZGljYXRvck1vZGV9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgZGVwZW5kZW50LlxuXHQgKiBAcmV0dXJucyBEZXBlbmRlbnQgZWl0aGVyIHdpdGggdGhlIFF1aWNrVmlldyBvciBhbiBlbXB0eSBzdHJpbmcuXG5cdCAqL1xuXHRwcml2YXRlIGNyZWF0ZURlcGVuZGVudHMoKTogTWRjTGluayB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRoaXMuaGFzUXVpY2tWaWV3KSB7XG5cdFx0XHRyZXR1cm4gbmV3IFF1aWNrVmlldyhcblx0XHRcdFx0dGhpcy52YWx1ZURhdGFNb2RlbFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4sXG5cdFx0XHRcdHRoaXMubWV0YVBhdGgsXG5cdFx0XHRcdHRoaXMuY29udGV4dFBhdGggPz8gXCJcIlxuXHRcdFx0KS5jcmVhdGVDb250ZW50KCkgYXMgTWRjTGluaztcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIE9iamVjdFN0YXR1cyBjb250cm9sLlxuXHQgKiBAcGFyYW0gZGF0YU1vZGVsUGF0aFxuXHQgKiBAcmV0dXJucyBPYmplY3RTdGF0dXNcblx0ICovXG5cdGNyZWF0ZU9iamVjdFN0YXR1cyhkYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+KTogT2JqZWN0U3RhdHVzIHtcblx0XHRsZXQgY3JpdGljYWxpdHlDb2xvckV4cHJlc3Npb24gPSBkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdFxuXHRcdFx0PyBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yKGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0LCBkYXRhTW9kZWxQYXRoKVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0aWYgKGNyaXRpY2FsaXR5Q29sb3JFeHByZXNzaW9uID09PSBcIk5vbmVcIiAmJiB0aGlzLnZhbHVlRGF0YU1vZGVsUGF0aCkge1xuXHRcdFx0Y3JpdGljYWxpdHlDb2xvckV4cHJlc3Npb24gPSB0aGlzLmhhc1F1aWNrVmlldyA/IFwiSW5mb3JtYXRpb25cIiA6IFwiTm9uZVwiO1xuXHRcdH1cblx0XHRjb25zdCBlbXB0eUluZGljYXRvck1vZGUgPSB0aGlzLmZvcm1hdE9wdGlvbnM/LnNob3dFbXB0eUluZGljYXRvciA/PyBmYWxzZSA/IFwiT25cIiA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBvYmplY3RTdGF0dXNUZXh0ID0gYnVpbGRGaWVsZEJpbmRpbmdFeHByZXNzaW9uKGRhdGFNb2RlbFBhdGgsIHRoaXMuZm9ybWF0T3B0aW9ucywgZmFsc2UpO1xuXHRcdGNvbnN0IGljb25FeHByZXNzaW9uID1cblx0XHRcdHRoaXMuZm9ybWF0T3B0aW9ucz8uZGF0YVBvaW50U3R5bGUgPT09IFwibGFyZ2VcIiB8fCAhZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdFx0PyB1bmRlZmluZWRcblx0XHRcdFx0OiBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUljb24oZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QsIGRhdGFNb2RlbFBhdGgpO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxPYmplY3RTdGF0dXNcblx0XHRcdFx0aWQ9e3RoaXMuaWRQcmVmaXggPyBnZW5lcmF0ZShbdGhpcy5pZFByZWZpeCwgXCJPYmplY3RTdGF0dXMtRmllbGQtZGlzcGxheVwiXSkgOiB1bmRlZmluZWR9XG5cdFx0XHRcdGNsYXNzPXt0aGlzLmZvcm1hdE9wdGlvbnM/LmRhdGFQb2ludFN0eWxlID09PSBcImxhcmdlXCIgPyBcInNhcE1PYmplY3RTdGF0dXNMYXJnZSBzYXBNT2JqZWN0U3RhdHVzTG9uZ1RleHRcIiA6IHVuZGVmaW5lZH1cblx0XHRcdFx0aWNvbj17aWNvbkV4cHJlc3Npb259XG5cdFx0XHRcdHRvb2x0aXA9e3RoaXMuZ2V0VG9vbHRpcFZhbHVlKGRhdGFNb2RlbFBhdGgpfVxuXHRcdFx0XHRzdGF0ZT17Y3JpdGljYWxpdHlDb2xvckV4cHJlc3Npb259XG5cdFx0XHRcdHRleHQ9e3RoaXMudmFsdWUgPz8gb2JqZWN0U3RhdHVzVGV4dH1cblx0XHRcdFx0ZW1wdHlJbmRpY2F0b3JNb2RlPXtlbXB0eUluZGljYXRvck1vZGV9XG5cdFx0XHRcdGFjdGl2ZT17dGhpcy5oYXNRdWlja1ZpZXd9XG5cdFx0XHRcdHByZXNzPXtGaWVsZFJ1bnRpbWVIZWxwZXIucHJlc3NMaW5rIGFzIHVua25vd24gYXMgKG9FdmVudDogT2JqZWN0U3RhdHVzJFByZXNzRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXt0aGlzLmFyaWFMYWJlbGxlZEJ5fVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGRlcGVuZGVudHM6IHRoaXMuY3JlYXRlRGVwZW5kZW50cygpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L09iamVjdFN0YXR1cz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBoZWxwZXIgbWV0aG9kIHRvIGdldCBhIHBvc3NpYmxlIHRvb2x0aXAgdGV4dC5cblx0ICogQHBhcmFtIGRhdGFNb2RlbFBhdGhcblx0ICogQHJldHVybnMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uXG5cdCAqL1xuXHRwcml2YXRlIGdldFRvb2x0aXBWYWx1ZShkYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+KTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiBkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uUXVpY2tJbmZvXG5cdFx0XHQ/IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uUXVpY2tJbmZvLCBnZXRSZWxhdGl2ZVBhdGhzKGRhdGFNb2RlbFBhdGgpKVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGhlbHBlciBtZXRob2QgdG8gZ2V0IGEgcG9zc2libGUgdGFyZ2V0IHZhbHVlIGJpbmRpbmcuXG5cdCAqIEBwYXJhbSBkYXRhTW9kZWxQYXRoXG5cdCAqIEByZXR1cm5zIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvblxuXHQgKi9cblx0cHJpdmF0ZSBnZXRUYXJnZXRWYWx1ZUJpbmRpbmcoXG5cdFx0ZGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhUG9pbnRUeXBlPlxuXHQpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nIHwgbnVtYmVyPiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0Py5UYXJnZXRWYWx1ZVxuXHRcdFx0PyBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3Q/LlRhcmdldFZhbHVlLCBnZXRSZWxhdGl2ZVBhdGhzKGRhdGFNb2RlbFBhdGgpKVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KCk6IE9iamVjdFN0YXR1cyB8IE9iamVjdE51bWJlciB8IFJhdGluZ0luZGljYXRvciB8IFByb2dyZXNzSW5kaWNhdG9yIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoIXRoaXMuZGF0YU1vZGVsUGF0aCkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0dGhpcy5nZXREYXRhUG9pbnRWaXN1YWxpemF0aW9uKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cdFx0c3dpdGNoICh0aGlzLnZpc3VhbGl6YXRpb24pIHtcblx0XHRcdGNhc2UgXCJSYXRpbmdcIjoge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5jcmVhdGVSYXRpbmdJbmRpY2F0b3IodGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJQcm9ncmVzc1wiOiB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNyZWF0ZVByb2dyZXNzSW5kaWNhdG9yKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiT2JqZWN0TnVtYmVyXCI6IHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuY3JlYXRlT2JqZWN0TnVtYmVyKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cdFx0XHR9XG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNyZWF0ZU9iamVjdFN0YXR1cyh0aGlzLmRhdGFNb2RlbFBhdGgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRhdGFwb2ludC5cblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRhdGFwb2ludFxuXHQgKi9cblx0Z2V0VmFsdWUoKTogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRoaXMuY29udGVudD8uaXNBPE9iamVjdFN0YXR1cz4oXCJzYXAubS5PYmplY3RTdGF0dXNcIikpIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0VGV4dCgpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5jb250ZW50Py5pc0E8T2JqZWN0TnVtYmVyPihcInNhcC5tLk9iamVjdE51bWJlclwiKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuY29udGVudC5nZXROdW1iZXIoKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuY29udGVudD8uaXNBPFByb2dyZXNzSW5kaWNhdG9yPihcInNhcC5tLlByb2dyZXNzSW5kaWNhdG9yXCIpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb250ZW50LmdldERpc3BsYXlWYWx1ZSgpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5jb250ZW50Py5pc0E8UmF0aW5nSW5kaWNhdG9yPihcInNhcC5tLlJhdGluZ0luZGljYXRvclwiKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuY29udGVudC5nZXRWYWx1ZSgpLnRvU3RyaW5nKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZ2V0UHJvcGVydHkoXCJ2YWx1ZVwiKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZmllbGQuXG5cdCAqIEBwYXJhbSB2YWx1ZVxuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCBmaWVsZCByZWZlcmVuY2Vcblx0ICovXG5cdHNldFZhbHVlKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkKTogQ29udHJvbCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcInZhbHVlXCIsIHZhbHVlKTtcblx0XHRpZiAodGhpcy5jb250ZW50Py5pc0E8T2JqZWN0U3RhdHVzPihcInNhcC5tLk9iamVjdFN0YXR1c1wiKSkge1xuXHRcdFx0dGhpcy5jb250ZW50LnNldFRleHQodmFsdWUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuY29udGVudD8uaXNBPE9iamVjdE51bWJlcj4oXCJzYXAubS5PYmplY3ROdW1iZXJcIikpIHtcblx0XHRcdHRoaXMuY29udGVudC5zZXROdW1iZXIodmFsdWUgYXMgc3RyaW5nKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuY29udGVudD8uaXNBPFByb2dyZXNzSW5kaWNhdG9yPihcInNhcC5tLlByb2dyZXNzSW5kaWNhdG9yXCIpKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJzZXRWYWx1ZSBpc24ndCBpbXBsZW1lbnRlZCBmb3IgdGhpcyBmaWVsZCB0eXBlIHlldFwiKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuY29udGVudD8uaXNBPFJhdGluZ0luZGljYXRvcj4oXCJzYXAubS5SYXRpbmdJbmRpY2F0b3JcIikpIHtcblx0XHRcdHRoaXMuY29udGVudC5zZXRWYWx1ZSh2YWx1ZSBhcyBudW1iZXIpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQW1DcUJBLFNBQVMsSUFBQUMsSUFBQSxHQUQ3QkMsY0FBYyxDQUFDLGtDQUFrQyxDQUFDLEVBQUFDLEtBQUEsR0FLakRDLFdBQVcsQ0FBQztJQUNaQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU1EQyxRQUFRLENBQUM7SUFDVEYsSUFBSSxFQUFFLFFBQVE7SUFDZEcsUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHREYsUUFBUSxDQUFDO0lBQ1RGLElBQUksRUFBRTtFQUNQ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MkIsQ0FBQztNQUNsRCxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUN4QyxPQUFPLEVBQUV5QixHQUFHLENBQWUsb0JBQW9CLENBQUMsRUFBRTtRQUNqRSxJQUFJLENBQUN6QixPQUFPLENBQUNrSCxTQUFTLENBQUMxRSxLQUFlLENBQUM7TUFDeEMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDeEMsT0FBTyxFQUFFeUIsR0FBRyxDQUFvQix5QkFBeUIsQ0FBQyxFQUFFO1FBQzNFMEYsR0FBRyxDQUFDQyxLQUFLLENBQUMsb0RBQW9ELENBQUM7TUFDaEUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDcEgsT0FBTyxFQUFFeUIsR0FBRyxDQUFrQix1QkFBdUIsQ0FBQyxFQUFFO1FBQ3ZFLElBQUksQ0FBQ3pCLE9BQU8sQ0FBQ2dILFFBQVEsQ0FBQ3hFLEtBQWUsQ0FBQztNQUN2QztNQUNBLE9BQU8sSUFBSTtJQUNaLENBQUM7SUFBQSxPQUFBN0UsU0FBQTtFQUFBLEVBbFhxQzBKLGFBQWEsR0FBQWpJLFdBQUEsR0FBQWtJLHlCQUFBLENBQUF6SSxPQUFBLENBQUFnQixTQUFBLGVBQUEvQixLQUFBO0lBQUF5SixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXJJLFlBQUEsR0FBQWlJLHlCQUFBLENBQUF6SSxPQUFBLENBQUFnQixTQUFBLGVBQUE1QixLQUFBO0lBQUFzSixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXBJLFlBQUEsR0FBQWdJLHlCQUFBLENBQUF6SSxPQUFBLENBQUFnQixTQUFBLGtCQUFBekIsS0FBQTtJQUFBbUosWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFuSSxZQUFBLEdBQUErSCx5QkFBQSxDQUFBekksT0FBQSxDQUFBZ0IsU0FBQSxvQkFBQXhCLEtBQUE7SUFBQWtKLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBbEksWUFBQSxHQUFBOEgseUJBQUEsQ0FBQXpJLE9BQUEsQ0FBQWdCLFNBQUEsWUFBQW5CLEtBQUE7SUFBQTZJLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBN0ksT0FBQSxNQUFBRCxNQUFBO0VBQUFjLFFBQUEsR0FBQS9CLFNBQUE7RUFBQSxPQUFBK0IsUUFBQTtBQUFBIiwiaWdub3JlTGlzdCI6W119
384
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRhUG9pbnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImFzc29jaWF0aW9uIiwidHlwZSIsIl9kZWMzIiwicHJvcGVydHkiLCJyZXF1aXJlZCIsIl9kZWM0IiwiX2RlYzUiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiZGVmYXVsdENsYXNzIiwiRGF0YVBvaW50Rm9ybWF0T3B0aW9ucyIsIl9kZWM2IiwiaXNCaW5kaW5nSW5mbyIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsInByb3BlcnRpZXMiLCJvdGhlcnMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiaGFzUXVpY2tWaWV3IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJnZXRUZW1wbGF0aW5nT2JqZWN0cyIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiaW50ZXJuYWxEYXRhTW9kZWxQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwiaW50ZXJuYWxWYWx1ZURhdGFNb2RlbFBhdGgiLCJ2aXNpYmxlIiwiZ2V0VmlzaWJsZUV4cHJlc3Npb24iLCJ0YXJnZXRPYmplY3QiLCJWYWx1ZSIsInBhdGgiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsImRhdGFNb2RlbFBhdGgiLCJ2YWx1ZURhdGFNb2RlbFBhdGgiLCJnZXREYXRhUG9pbnRWaXN1YWxpemF0aW9uIiwiVmlzdWFsaXphdGlvbiIsInZpc3VhbGl6YXRpb24iLCJ2YWx1ZVByb3BlcnR5IiwiaXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cyIsImdldFByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0IiwiaXNQcm9wZXJ0eSIsImhhc1VuaXQiLCJoYXNDdXJyZW5jeSIsImdldEVuYWJsZWQiLCJpc0EiLCJnZXRBY3RpdmUiLCJzZXRFbmFibGVkIiwiZW5hYmxlZCIsInNldFByb3BlcnR5IiwiY3JlYXRlUmF0aW5nSW5kaWNhdG9yIiwiZGF0YVBvaW50VGFyZ2V0IiwidGFyZ2V0VmFsdWUiLCJnZXRUYXJnZXRWYWx1ZUJpbmRpbmciLCJkYXRhUG9pbnRWYWx1ZSIsInByb3BlcnR5VHlwZSIsIiR0YXJnZXQiLCJudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMiLCJWYWx1ZUZvcm1hdCIsIk51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyIsInZhbHVlIiwiZ2V0VmFsdWVGb3JtYXR0ZWQiLCJfanN4IiwiUmF0aW5nSW5kaWNhdG9yIiwiaWQiLCJpZFByZWZpeCIsImdlbmVyYXRlIiwidW5kZWZpbmVkIiwibWF4VmFsdWUiLCJjb21waWxlRXhwcmVzc2lvbiIsInRvb2x0aXAiLCJnZXRUb29sdGlwVmFsdWUiLCJpY29uU2l6ZSIsImZvcm1hdE9wdGlvbnMiLCJjbGFzcyIsInNob3dMYWJlbHMiLCJlZGl0YWJsZSIsImFyaWFMYWJlbGxlZEJ5IiwiY3JlYXRlUHJvZ3Jlc3NJbmRpY2F0b3IiLCJjcml0aWNhbGl0eUNvbG9yRXhwcmVzc2lvbiIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3IiLCJkaXNwbGF5VmFsdWUiLCJidWlsZEV4cHJlc3Npb25Gb3JQcm9ncmVzc0luZGljYXRvckRpc3BsYXlWYWx1ZSIsInBlcmNlbnRWYWx1ZSIsImJ1aWxkRXhwcmVzc2lvbkZvclByb2dyZXNzSW5kaWNhdG9yUGVyY2VudFZhbHVlIiwiUHJvZ3Jlc3NJbmRpY2F0b3IiLCJzdGF0ZSIsImNyZWF0ZU9iamVjdE51bWJlciIsImVtcHR5SW5kaWNhdG9yTW9kZSIsInNob3dFbXB0eUluZGljYXRvciIsIm9iamVjdFN0YXR1c051bWJlciIsImJ1aWxkRmllbGRCaW5kaW5nRXhwcmVzc2lvbiIsImxpbWl0U2hvd0RlY2ltYWxzIiwiZ2V0TWFuaWZlc3RXcmFwcGVyIiwiZ2V0U2FwRmVNYW5pZmVzdENvbmZpZ3VyYXRpb24iLCJhcHAiLCJzaG93T25seVVuaXREZWNpbWFscyIsInVuaXQiLCJtZWFzdXJlRGlzcGxheU1vZGUiLCJVSUZvcm1hdHRlcnMiLCJnZXRCaW5kaW5nRm9yVW5pdE9yQ3VycmVuY3kiLCJPYmplY3ROdW1iZXIiLCJudW1iZXIiLCJlbXBoYXNpemVkIiwiZGF0YVBvaW50U3R5bGUiLCJjcmVhdGVEZXBlbmRlbnRzIiwiUXVpY2tWaWV3IiwiY3JlYXRlT2JqZWN0U3RhdHVzIiwib2JqZWN0U3RhdHVzVGV4dCIsImljb25FeHByZXNzaW9uIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlJY29uIiwiT2JqZWN0U3RhdHVzIiwiaWNvbiIsInRleHQiLCJhY3RpdmUiLCJwcmVzcyIsIkZpZWxkUnVudGltZUhlbHBlciIsInByZXNzTGluayIsInJlYWN0aXZlQXJlYU1vZGUiLCJjaGlsZHJlbiIsImRlcGVuZGVudHMiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIlF1aWNrSW5mbyIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsImdldFJlbGF0aXZlUGF0aHMiLCJUYXJnZXRWYWx1ZSIsImdldFZhbHVlIiwiZ2V0VGV4dCIsImdldE51bWJlciIsImdldERpc3BsYXlWYWx1ZSIsInRvU3RyaW5nIiwiZ2V0UHJvcGVydHkiLCJzZXRWYWx1ZSIsInNldFRleHQiLCJzZXROdW1iZXIiLCJMb2ciLCJlcnJvciIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRhdGFQb2ludC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgVmlzdWFsaXphdGlvblR5cGUsIHR5cGUgRGF0YVBvaW50VHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgdHlwZSBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBhc3NvY2lhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5LCB0eXBlIFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgeyBpc1Byb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHsgYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvciwgYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlJY29uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBlbmhhbmNlRGF0YU1vZGVsUGF0aCwgZ2V0UmVsYXRpdmVQYXRocyB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGhhc0N1cnJlbmN5LCBoYXNVbml0IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB7IGdldFByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvU2VtYW50aWNPYmplY3RIZWxwZXJcIjtcbmltcG9ydCAqIGFzIFVJRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB7IGdldFZpc2libGVFeHByZXNzaW9uLCBpc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQge1xuXHRidWlsZEV4cHJlc3Npb25Gb3JQcm9ncmVzc0luZGljYXRvckRpc3BsYXlWYWx1ZSxcblx0YnVpbGRFeHByZXNzaW9uRm9yUHJvZ3Jlc3NJbmRpY2F0b3JQZXJjZW50VmFsdWUsXG5cdGJ1aWxkRmllbGRCaW5kaW5nRXhwcmVzc2lvbixcblx0Z2V0VmFsdWVGb3JtYXR0ZWRcbn0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvaGVscGVycy9EYXRhUG9pbnRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgUXVpY2tWaWV3IGZyb20gXCJzYXAvZmUvbWFjcm9zL3F1aWNrVmlldy9RdWlja1ZpZXdcIjtcbmltcG9ydCBPYmplY3ROdW1iZXIgZnJvbSBcInNhcC9tL09iamVjdE51bWJlclwiO1xuaW1wb3J0IHR5cGUgeyBPYmplY3RTdGF0dXMkUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvbS9PYmplY3RTdGF0dXNcIjtcbmltcG9ydCBPYmplY3RTdGF0dXMgZnJvbSBcInNhcC9tL09iamVjdFN0YXR1c1wiO1xuaW1wb3J0IFByb2dyZXNzSW5kaWNhdG9yIGZyb20gXCJzYXAvbS9Qcm9ncmVzc0luZGljYXRvclwiO1xuaW1wb3J0IFJhdGluZ0luZGljYXRvciBmcm9tIFwic2FwL20vUmF0aW5nSW5kaWNhdG9yXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgTWRjTGluayBmcm9tIFwic2FwL3VpL21kYy9MaW5rXCI7XG5pbXBvcnQgRmllbGRSdW50aW1lSGVscGVyIGZyb20gXCIuLi9maWVsZC9GaWVsZFJ1bnRpbWVIZWxwZXJcIjtcbmltcG9ydCBEYXRhUG9pbnRGb3JtYXRPcHRpb25zIGZyb20gXCIuL0RhdGFQb2ludEZvcm1hdE9wdGlvbnNcIjtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbC5EYXRhUG9pbnRcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERhdGFQb2ludCBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8Q29udHJvbD4ge1xuXHQvKipcblx0ICogUHJlZml4IGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgSUQgb2YgdGhlIGZpZWxkXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIGlkUHJlZml4Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBNZXRhZGF0YSBwYXRoIHRvIHRoZSBkYXRhUG9pbnQuXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0cHVibGljIG1ldGFQYXRoITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRwdWJsaWMgY29udGV4dFBhdGg/OiBzdHJpbmc7XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLmludGVybmFsLkRhdGFQb2ludEZvcm1hdE9wdGlvbnNcIiwgbXVsdGlwbGU6IGZhbHNlLCBkZWZhdWx0Q2xhc3M6IERhdGFQb2ludEZvcm1hdE9wdGlvbnMgfSlcblx0Zm9ybWF0T3B0aW9ucyE6IERhdGFQb2ludEZvcm1hdE9wdGlvbnM7XG5cblx0LyoqXG5cdCAqIFByb3BlcnR5IHRvIHNldCBhbiBleHRlcm5hbCB2YWx1ZSB0aGF0IGNvbWVzIGZyb20gYSBkaWZmZXJlbnQgbW9kZWwgdGhhbiB0aGUgb0RhdGEgbW9kZWxcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRpc0JpbmRpbmdJbmZvOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyB2YWx1ZT86IHN0cmluZztcblxuXHQvKipcblx0ICogUHJvcGVydHkgdG8gc2V0IHRoZSB2aXN1YWxpemF0aW9uIHR5cGVcblx0ICovXG5cdHByaXZhdGUgdmlzdWFsaXphdGlvbj86IHN0cmluZztcblxuXHQvKipcblx0ICogUHJvcGVydHkgdG8gc2V0IHRoZSB2aXNpYmlsaXR5XG5cdCAqL1xuXHRwcml2YXRlIHZpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSB0byBzZXQgcHJvcGVydHkgaWYgdGhlIHByb3BlcnR5IGhhcyBhIFF1aWNrdmlld1xuXHQgKi9cblx0cHJpdmF0ZSBoYXNRdWlja1ZpZXcgPSBmYWxzZTtcblxuXHRwcml2YXRlIGRhdGFNb2RlbFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+O1xuXG5cdHByaXZhdGUgdmFsdWVEYXRhTW9kZWxQYXRoPzogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT47XG5cblx0Y29uc3RydWN0b3IocHJvcGVydGllczogJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxEYXRhUG9pbnQ+LCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcywgb3RoZXJzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25NZXRhZGF0YUF2YWlsYWJsZSBldmVudC5cblx0ICovXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0dGhpcy5nZXRUZW1wbGF0aW5nT2JqZWN0cygpO1xuXHRcdGlmICghdGhpcy5jb250ZW50KSB7XG5cdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRnVuY3Rpb24gdG8gZ2V0IHRoZSB0ZW1wbGF0aW5nIG9iamVjdHMuXG5cdCAqL1xuXHRwcml2YXRlIGdldFRlbXBsYXRpbmdPYmplY3RzKCk6IHZvaWQge1xuXHRcdGNvbnN0IGludGVybmFsRGF0YU1vZGVsUGF0aCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8RGF0YVBvaW50VHlwZT4odGhpcy5tZXRhUGF0aCwgdGhpcy5jb250ZXh0UGF0aCk7XG5cdFx0aWYgKCFpbnRlcm5hbERhdGFNb2RlbFBhdGgpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0bGV0IGludGVybmFsVmFsdWVEYXRhTW9kZWxQYXRoO1xuXHRcdHRoaXMudmlzaWJsZSA9IGdldFZpc2libGVFeHByZXNzaW9uKGludGVybmFsRGF0YU1vZGVsUGF0aCk7XG5cdFx0aWYgKGludGVybmFsRGF0YU1vZGVsUGF0aD8udGFyZ2V0T2JqZWN0Py5WYWx1ZT8ucGF0aCkge1xuXHRcdFx0aW50ZXJuYWxWYWx1ZURhdGFNb2RlbFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aDxQcm9wZXJ0eT4oXG5cdFx0XHRcdGludGVybmFsRGF0YU1vZGVsUGF0aCxcblx0XHRcdFx0aW50ZXJuYWxEYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdC5WYWx1ZS5wYXRoXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHRoaXMuZGF0YU1vZGVsUGF0aCA9IGludGVybmFsRGF0YU1vZGVsUGF0aDtcblx0XHR0aGlzLnZhbHVlRGF0YU1vZGVsUGF0aCA9IGludGVybmFsVmFsdWVEYXRhTW9kZWxQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIHRoYXQgY2FsY3VsYXRlcyB0aGUgdmlzdWFsaXphdGlvbiB0eXBlIGZvciB0aGlzIERhdGFQb2ludC5cblx0ICogQHBhcmFtIGRhdGFNb2RlbFBhdGhcblx0ICovXG5cdHByaXZhdGUgZ2V0RGF0YVBvaW50VmlzdWFsaXphdGlvbihkYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+KTogdm9pZCB7XG5cdFx0aWYgKGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0Py5WaXN1YWxpemF0aW9uID09PSBWaXN1YWxpemF0aW9uVHlwZS5SYXRpbmcpIHtcblx0XHRcdHRoaXMudmlzdWFsaXphdGlvbiA9IFwiUmF0aW5nXCI7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmIChkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdD8uVmlzdWFsaXphdGlvbiA9PT0gVmlzdWFsaXphdGlvblR5cGUuUHJvZ3Jlc3MpIHtcblx0XHRcdHRoaXMudmlzdWFsaXphdGlvbiA9IFwiUHJvZ3Jlc3NcIjtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgdmFsdWVQcm9wZXJ0eSA9IHRoaXMudmFsdWVEYXRhTW9kZWxQYXRoICYmIHRoaXMudmFsdWVEYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdDtcblx0XHQvL2NoZWNrIHdoZXRoZXIgdGhlIHZpc3VhbGl6YXRpb24gdHlwZSBzaG91bGQgYmUgYW4gb2JqZWN0IG51bWJlciBpbiBjYXNlIG9uZSBvZiB0aGUgaWYgY29uZGl0aW9ucyBtZXRcblx0XHR0aGlzLmhhc1F1aWNrVmlldyA9ICh2YWx1ZVByb3BlcnR5ICYmIGlzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHMoZGF0YU1vZGVsUGF0aCwgdmFsdWVQcm9wZXJ0eSkpID8/IGZhbHNlO1xuXHRcdGlmICh0aGlzLnZhbHVlRGF0YU1vZGVsUGF0aCAmJiBnZXRQcm9wZXJ0eVdpdGhTZW1hbnRpY09iamVjdCh0aGlzLnZhbHVlRGF0YU1vZGVsUGF0aCkpIHtcblx0XHRcdHRoaXMuaGFzUXVpY2tWaWV3ID0gdHJ1ZTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuaGFzUXVpY2tWaWV3ICE9PSB0cnVlKSB7XG5cdFx0XHRpZiAoaXNQcm9wZXJ0eSh2YWx1ZVByb3BlcnR5KSAmJiAoaGFzVW5pdCh2YWx1ZVByb3BlcnR5KSB8fCBoYXNDdXJyZW5jeSh2YWx1ZVByb3BlcnR5KSkpIHtcblx0XHRcdFx0Ly8gd2Ugb25seSBzaG93IGFuIG9iamVjdE51bWJlciBpZiB0aGVyZSBpcyBubyBxdWlja3ZpZXcgYW5kIGEgdW5pdCBvciBhIGN1cnJlbmN5XG5cdFx0XHRcdHRoaXMudmlzdWFsaXphdGlvbiA9IFwiT2JqZWN0TnVtYmVyXCI7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvL2RlZmF1bHQgY2FzZSB0byBoYW5kbGUgdGhpcyBhcyBvYmplY3RTdGF0dXMgdHlwZVxuXHRcdHRoaXMudmlzdWFsaXphdGlvbiA9IFwiT2JqZWN0U3RhdHVzXCI7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY3VycmVudCBlbmFibGVtZW50IHN0YXRlIG9mIHRoZSBkYXRhUG9pbnQuXG5cdCAqIEByZXR1cm5zIEJvb2xlYW4gdmFsdWUgd2l0aCB0aGUgZW5hYmxlbWVudCBzdGF0ZVxuXHQgKi9cblx0Z2V0RW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRpZiAodGhpcy5jb250ZW50Py5pc0E8T2JqZWN0U3RhdHVzPihcInNhcC5tLk9iamVjdFN0YXR1c1wiKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuY29udGVudC5nZXRBY3RpdmUoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGN1cnJlbnQgZW5hYmxlbWVudCBzdGF0ZSBvZiB0aGUgZGF0YXBvaW50LlxuXHQgKiBAcGFyYW0gZW5hYmxlZFxuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCBkYXRhcG9pbnQgcmVmZXJlbmNlXG5cdCAqL1xuXHRzZXRFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pOiBDb250cm9sIHtcblx0XHRpZiAodGhpcy5jb250ZW50Py5pc0E8T2JqZWN0U3RhdHVzPihcInNhcC5tLk9iamVjdFN0YXR1c1wiKSkge1xuXHRcdFx0dGhpcy5jb250ZW50LnNldFByb3BlcnR5KFwiYWN0aXZlXCIsIGVuYWJsZWQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBcInNldEVuYWJsZWQgaXNuJ3QgaW1wbGVtZW50ZWQgZm9yIHRoaXMgZmllbGQgdHlwZVwiO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgUmF0aW5nSW5kaWNhdG9yIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBkYXRhTW9kZWxQYXRoXG5cdCAqIEByZXR1cm5zIFJhdGluZ0luZGljYXRvclxuXHQgKi9cblx0Y3JlYXRlUmF0aW5nSW5kaWNhdG9yKGRhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZT4pOiBSYXRpbmdJbmRpY2F0b3Ige1xuXHRcdGNvbnN0IGRhdGFQb2ludFRhcmdldCA9IGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0O1xuXHRcdGNvbnN0IHRhcmdldFZhbHVlID0gdGhpcy5nZXRUYXJnZXRWYWx1ZUJpbmRpbmcoZGF0YU1vZGVsUGF0aCk7XG5cblx0XHRjb25zdCBkYXRhUG9pbnRWYWx1ZSA9IGRhdGFQb2ludFRhcmdldD8uVmFsdWUgfHwgXCJcIjtcblx0XHRjb25zdCBwcm9wZXJ0eVR5cGUgPSBkYXRhUG9pbnRWYWx1ZT8uJHRhcmdldD8udHlwZTtcblxuXHRcdGxldCBudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHM7XG5cdFx0aWYgKHByb3BlcnR5VHlwZSA9PT0gXCJFZG0uRGVjaW1hbFwiICYmIGRhdGFQb2ludFRhcmdldD8uVmFsdWVGb3JtYXQpIHtcblx0XHRcdGlmIChkYXRhUG9pbnRUYXJnZXQuVmFsdWVGb3JtYXQuTnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzKSB7XG5cdFx0XHRcdG51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyA9IGRhdGFQb2ludFRhcmdldC5WYWx1ZUZvcm1hdC5OdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHM7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNvbnN0IHZhbHVlID0gZ2V0VmFsdWVGb3JtYXR0ZWQodGhpcy52YWx1ZURhdGFNb2RlbFBhdGgsIGRhdGFQb2ludFZhbHVlLCBwcm9wZXJ0eVR5cGUsIG51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PFJhdGluZ0luZGljYXRvclxuXHRcdFx0XHRpZD17dGhpcy5pZFByZWZpeCA/IGdlbmVyYXRlKFt0aGlzLmlkUHJlZml4LCBcIlJhdGluZ0luZGljYXRvci1GaWVsZC1kaXNwbGF5XCJdKSA6IHVuZGVmaW5lZH1cblx0XHRcdFx0bWF4VmFsdWU9e3RhcmdldFZhbHVlfVxuXHRcdFx0XHR2YWx1ZT17dGhpcy52YWx1ZSA/PyBjb21waWxlRXhwcmVzc2lvbih2YWx1ZSl9XG5cdFx0XHRcdHRvb2x0aXA9e3RoaXMuZ2V0VG9vbHRpcFZhbHVlKGRhdGFNb2RlbFBhdGgpfVxuXHRcdFx0XHRpY29uU2l6ZT17dGhpcy5mb3JtYXRPcHRpb25zPy5pY29uU2l6ZX1cblx0XHRcdFx0Y2xhc3M9e3RoaXMuZm9ybWF0T3B0aW9ucz8uc2hvd0xhYmVscyA/PyBmYWxzZSA/IFwic2FwVWlUaW55TWFyZ2luVG9wQm90dG9tXCIgOiB1bmRlZmluZWR9XG5cdFx0XHRcdGVkaXRhYmxlPVwiZmFsc2VcIlxuXHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17dGhpcy5hcmlhTGFiZWxsZWRCeX1cblx0XHRcdC8+XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgUHJvZ3Jlc3NJbmRpY2F0b3IgY29udHJvbC5cblx0ICogQHBhcmFtIGRhdGFNb2RlbFBhdGhcblx0ICogQHJldHVybnMgUHJvZ3Jlc3NJbmRpY2F0b3Jcblx0ICovXG5cdGNyZWF0ZVByb2dyZXNzSW5kaWNhdG9yKGRhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZT4pOiBQcm9ncmVzc0luZGljYXRvciB7XG5cdFx0Y29uc3QgY3JpdGljYWxpdHlDb2xvckV4cHJlc3Npb24gPSBkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdFxuXHRcdFx0PyBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yKGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0LCBkYXRhTW9kZWxQYXRoKVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgZGlzcGxheVZhbHVlID0gYnVpbGRFeHByZXNzaW9uRm9yUHJvZ3Jlc3NJbmRpY2F0b3JEaXNwbGF5VmFsdWUoZGF0YU1vZGVsUGF0aCk7XG5cdFx0Y29uc3QgcGVyY2VudFZhbHVlID0gYnVpbGRFeHByZXNzaW9uRm9yUHJvZ3Jlc3NJbmRpY2F0b3JQZXJjZW50VmFsdWUoZGF0YU1vZGVsUGF0aCk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PFByb2dyZXNzSW5kaWNhdG9yXG5cdFx0XHRcdGlkPXt0aGlzLmlkUHJlZml4ID8gZ2VuZXJhdGUoW3RoaXMuaWRQcmVmaXgsIFwiUHJvZ3Jlc3NJbmRpY2F0b3ItRmllbGQtZGlzcGxheVwiXSkgOiB1bmRlZmluZWR9XG5cdFx0XHRcdGRpc3BsYXlWYWx1ZT17ZGlzcGxheVZhbHVlfVxuXHRcdFx0XHRwZXJjZW50VmFsdWU9e3BlcmNlbnRWYWx1ZX1cblx0XHRcdFx0c3RhdGU9e2NyaXRpY2FsaXR5Q29sb3JFeHByZXNzaW9ufVxuXHRcdFx0XHR0b29sdGlwPXt0aGlzLmdldFRvb2x0aXBWYWx1ZShkYXRhTW9kZWxQYXRoKX1cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e3RoaXMuYXJpYUxhYmVsbGVkQnl9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBPYmplY3ROdW1iZXIgY29udHJvbC5cblx0ICogQHBhcmFtIGRhdGFNb2RlbFBhdGhcblx0ICogQHJldHVybnMgT2JqZWN0TnVtYmVyXG5cdCAqL1xuXHRjcmVhdGVPYmplY3ROdW1iZXIoZGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhUG9pbnRUeXBlPik6IE9iamVjdE51bWJlciB7XG5cdFx0Y29uc3QgY3JpdGljYWxpdHlDb2xvckV4cHJlc3Npb24gPSBkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdFxuXHRcdFx0PyBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yKGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0LCBkYXRhTW9kZWxQYXRoKVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgZW1wdHlJbmRpY2F0b3JNb2RlID0gdGhpcy5mb3JtYXRPcHRpb25zPy5zaG93RW1wdHlJbmRpY2F0b3IgPz8gZmFsc2UgPyBcIk9uXCIgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3Qgb2JqZWN0U3RhdHVzTnVtYmVyID0gYnVpbGRGaWVsZEJpbmRpbmdFeHByZXNzaW9uKGRhdGFNb2RlbFBhdGgsIHRoaXMuZm9ybWF0T3B0aW9ucywgdHJ1ZSk7XG5cdFx0Y29uc3QgbGltaXRTaG93RGVjaW1hbHMgPSB0aGlzLmdldE1hbmlmZXN0V3JhcHBlcigpPy5nZXRTYXBGZU1hbmlmZXN0Q29uZmlndXJhdGlvbigpPy5hcHA/LnNob3dPbmx5VW5pdERlY2ltYWxzID09PSB0cnVlO1xuXHRcdGNvbnN0IHVuaXQgPVxuXHRcdFx0dGhpcy5mb3JtYXRPcHRpb25zPy5tZWFzdXJlRGlzcGxheU1vZGUgPT09IFwiSGlkZGVuXCJcblx0XHRcdFx0PyB1bmRlZmluZWRcblx0XHRcdFx0OiBjb21waWxlRXhwcmVzc2lvbihVSUZvcm1hdHRlcnMuZ2V0QmluZGluZ0ZvclVuaXRPckN1cnJlbmN5KHRoaXMudmFsdWVEYXRhTW9kZWxQYXRoLCB0cnVlLCBsaW1pdFNob3dEZWNpbWFscykpO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxPYmplY3ROdW1iZXJcblx0XHRcdFx0aWQ9e3RoaXMuaWRQcmVmaXggPyBnZW5lcmF0ZShbdGhpcy5pZFByZWZpeCwgXCJPYmplY3ROdW1iZXItRmllbGQtZGlzcGxheVwiXSkgOiB1bmRlZmluZWR9XG5cdFx0XHRcdHN0YXRlPXtjcml0aWNhbGl0eUNvbG9yRXhwcmVzc2lvbn1cblx0XHRcdFx0bnVtYmVyPXt0aGlzLnZhbHVlID8/IG9iamVjdFN0YXR1c051bWJlcn1cblx0XHRcdFx0dW5pdD17dW5pdH1cblx0XHRcdFx0dmlzaWJsZT17dGhpcy52aXNpYmxlfVxuXHRcdFx0XHRlbXBoYXNpemVkPVwiZmFsc2VcIlxuXHRcdFx0XHRjbGFzcz17dGhpcy5mb3JtYXRPcHRpb25zPy5kYXRhUG9pbnRTdHlsZSA9PT0gXCJsYXJnZVwiID8gXCJzYXBNT2JqZWN0TnVtYmVyTGFyZ2VcIiA6IHVuZGVmaW5lZH1cblx0XHRcdFx0dG9vbHRpcD17dGhpcy5nZXRUb29sdGlwVmFsdWUoZGF0YU1vZGVsUGF0aCl9XG5cdFx0XHRcdGVtcHR5SW5kaWNhdG9yTW9kZT17ZW1wdHlJbmRpY2F0b3JNb2RlfVxuXHRcdFx0Lz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGRlcGVuZGVudC5cblx0ICogQHJldHVybnMgRGVwZW5kZW50IGVpdGhlciB3aXRoIHRoZSBRdWlja1ZpZXcgb3IgYW4gZW1wdHkgc3RyaW5nLlxuXHQgKi9cblx0cHJpdmF0ZSBjcmVhdGVEZXBlbmRlbnRzKCk6IE1kY0xpbmsgfCB1bmRlZmluZWQge1xuXHRcdGlmICh0aGlzLmhhc1F1aWNrVmlldykge1xuXHRcdFx0cmV0dXJuIG5ldyBRdWlja1ZpZXcoXG5cdFx0XHRcdHRoaXMudmFsdWVEYXRhTW9kZWxQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+LFxuXHRcdFx0XHR0aGlzLm1ldGFQYXRoLFxuXHRcdFx0XHR0aGlzLmNvbnRleHRQYXRoID8/IFwiXCJcblx0XHRcdCkuY3JlYXRlQ29udGVudCgpIGFzIE1kY0xpbms7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBPYmplY3RTdGF0dXMgY29udHJvbC5cblx0ICogQHBhcmFtIGRhdGFNb2RlbFBhdGhcblx0ICogQHJldHVybnMgT2JqZWN0U3RhdHVzXG5cdCAqL1xuXHRjcmVhdGVPYmplY3RTdGF0dXMoZGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhUG9pbnRUeXBlPik6IE9iamVjdFN0YXR1cyB7XG5cdFx0bGV0IGNyaXRpY2FsaXR5Q29sb3JFeHByZXNzaW9uID0gZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdD8gYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvcihkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCwgZGF0YU1vZGVsUGF0aClcblx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdGlmIChjcml0aWNhbGl0eUNvbG9yRXhwcmVzc2lvbiA9PT0gXCJOb25lXCIgJiYgdGhpcy52YWx1ZURhdGFNb2RlbFBhdGgpIHtcblx0XHRcdGNyaXRpY2FsaXR5Q29sb3JFeHByZXNzaW9uID0gdGhpcy5oYXNRdWlja1ZpZXcgPyBcIkluZm9ybWF0aW9uXCIgOiBcIk5vbmVcIjtcblx0XHR9XG5cdFx0Y29uc3QgZW1wdHlJbmRpY2F0b3JNb2RlID0gdGhpcy5mb3JtYXRPcHRpb25zPy5zaG93RW1wdHlJbmRpY2F0b3IgPz8gZmFsc2UgPyBcIk9uXCIgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3Qgb2JqZWN0U3RhdHVzVGV4dCA9IGJ1aWxkRmllbGRCaW5kaW5nRXhwcmVzc2lvbihkYXRhTW9kZWxQYXRoLCB0aGlzLmZvcm1hdE9wdGlvbnMsIGZhbHNlKTtcblx0XHRjb25zdCBpY29uRXhwcmVzc2lvbiA9XG5cdFx0XHR0aGlzLmZvcm1hdE9wdGlvbnM/LmRhdGFQb2ludFN0eWxlID09PSBcImxhcmdlXCIgfHwgIWRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0XG5cdFx0XHRcdD8gdW5kZWZpbmVkXG5cdFx0XHRcdDogYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlJY29uKGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0LCBkYXRhTW9kZWxQYXRoKTtcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8T2JqZWN0U3RhdHVzXG5cdFx0XHRcdGlkPXt0aGlzLmlkUHJlZml4ID8gZ2VuZXJhdGUoW3RoaXMuaWRQcmVmaXgsIFwiT2JqZWN0U3RhdHVzLUZpZWxkLWRpc3BsYXlcIl0pIDogdW5kZWZpbmVkfVxuXHRcdFx0XHRjbGFzcz17dGhpcy5mb3JtYXRPcHRpb25zPy5kYXRhUG9pbnRTdHlsZSA9PT0gXCJsYXJnZVwiID8gXCJzYXBNT2JqZWN0U3RhdHVzTGFyZ2Ugc2FwTU9iamVjdFN0YXR1c0xvbmdUZXh0XCIgOiB1bmRlZmluZWR9XG5cdFx0XHRcdGljb249e2ljb25FeHByZXNzaW9ufVxuXHRcdFx0XHR0b29sdGlwPXt0aGlzLmdldFRvb2x0aXBWYWx1ZShkYXRhTW9kZWxQYXRoKX1cblx0XHRcdFx0c3RhdGU9e2NyaXRpY2FsaXR5Q29sb3JFeHByZXNzaW9ufVxuXHRcdFx0XHR0ZXh0PXt0aGlzLnZhbHVlID8/IG9iamVjdFN0YXR1c1RleHR9XG5cdFx0XHRcdGVtcHR5SW5kaWNhdG9yTW9kZT17ZW1wdHlJbmRpY2F0b3JNb2RlfVxuXHRcdFx0XHRhY3RpdmU9e3RoaXMuaGFzUXVpY2tWaWV3fVxuXHRcdFx0XHRwcmVzcz17RmllbGRSdW50aW1lSGVscGVyLnByZXNzTGluayBhcyB1bmtub3duIGFzIChvRXZlbnQ6IE9iamVjdFN0YXR1cyRQcmVzc0V2ZW50KSA9PiB2b2lkfVxuXHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17dGhpcy5hcmlhTGFiZWxsZWRCeX1cblx0XHRcdFx0cmVhY3RpdmVBcmVhTW9kZT17dGhpcy5mb3JtYXRPcHRpb25zPy5yZWFjdGl2ZUFyZWFNb2RlfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGRlcGVuZGVudHM6IHRoaXMuY3JlYXRlRGVwZW5kZW50cygpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L09iamVjdFN0YXR1cz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBoZWxwZXIgbWV0aG9kIHRvIGdldCBhIHBvc3NpYmxlIHRvb2x0aXAgdGV4dC5cblx0ICogQHBhcmFtIGRhdGFNb2RlbFBhdGhcblx0ICogQHJldHVybnMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uXG5cdCAqL1xuXHRwcml2YXRlIGdldFRvb2x0aXBWYWx1ZShkYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+KTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiBkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uUXVpY2tJbmZvXG5cdFx0XHQ/IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uUXVpY2tJbmZvLCBnZXRSZWxhdGl2ZVBhdGhzKGRhdGFNb2RlbFBhdGgpKVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGhlbHBlciBtZXRob2QgdG8gZ2V0IGEgcG9zc2libGUgdGFyZ2V0IHZhbHVlIGJpbmRpbmcuXG5cdCAqIEBwYXJhbSBkYXRhTW9kZWxQYXRoXG5cdCAqIEByZXR1cm5zIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvblxuXHQgKi9cblx0cHJpdmF0ZSBnZXRUYXJnZXRWYWx1ZUJpbmRpbmcoXG5cdFx0ZGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhUG9pbnRUeXBlPlxuXHQpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nIHwgbnVtYmVyPiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0Py5UYXJnZXRWYWx1ZVxuXHRcdFx0PyBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3Q/LlRhcmdldFZhbHVlLCBnZXRSZWxhdGl2ZVBhdGhzKGRhdGFNb2RlbFBhdGgpKVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KCk6IE9iamVjdFN0YXR1cyB8IE9iamVjdE51bWJlciB8IFJhdGluZ0luZGljYXRvciB8IFByb2dyZXNzSW5kaWNhdG9yIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoIXRoaXMuZGF0YU1vZGVsUGF0aCkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0dGhpcy5nZXREYXRhUG9pbnRWaXN1YWxpemF0aW9uKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cdFx0c3dpdGNoICh0aGlzLnZpc3VhbGl6YXRpb24pIHtcblx0XHRcdGNhc2UgXCJSYXRpbmdcIjoge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5jcmVhdGVSYXRpbmdJbmRpY2F0b3IodGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJQcm9ncmVzc1wiOiB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNyZWF0ZVByb2dyZXNzSW5kaWNhdG9yKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiT2JqZWN0TnVtYmVyXCI6IHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuY3JlYXRlT2JqZWN0TnVtYmVyKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cdFx0XHR9XG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNyZWF0ZU9iamVjdFN0YXR1cyh0aGlzLmRhdGFNb2RlbFBhdGgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRhdGFwb2ludC5cblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRhdGFwb2ludFxuXHQgKi9cblx0Z2V0VmFsdWUoKTogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRoaXMuY29udGVudD8uaXNBPE9iamVjdFN0YXR1cz4oXCJzYXAubS5PYmplY3RTdGF0dXNcIikpIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0VGV4dCgpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5jb250ZW50Py5pc0E8T2JqZWN0TnVtYmVyPihcInNhcC5tLk9iamVjdE51bWJlclwiKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuY29udGVudC5nZXROdW1iZXIoKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuY29udGVudD8uaXNBPFByb2dyZXNzSW5kaWNhdG9yPihcInNhcC5tLlByb2dyZXNzSW5kaWNhdG9yXCIpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb250ZW50LmdldERpc3BsYXlWYWx1ZSgpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5jb250ZW50Py5pc0E8UmF0aW5nSW5kaWNhdG9yPihcInNhcC5tLlJhdGluZ0luZGljYXRvclwiKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuY29udGVudC5nZXRWYWx1ZSgpLnRvU3RyaW5nKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZ2V0UHJvcGVydHkoXCJ2YWx1ZVwiKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZmllbGQuXG5cdCAqIEBwYXJhbSB2YWx1ZVxuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCBmaWVsZCByZWZlcmVuY2Vcblx0ICovXG5cdHNldFZhbHVlKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkKTogQ29udHJvbCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcInZhbHVlXCIsIHZhbHVlKTtcblx0XHRpZiAodGhpcy5jb250ZW50Py5pc0E8T2JqZWN0U3RhdHVzPihcInNhcC5tLk9iamVjdFN0YXR1c1wiKSkge1xuXHRcdFx0dGhpcy5jb250ZW50LnNldFRleHQodmFsdWUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuY29udGVudD8uaXNBPE9iamVjdE51bWJlcj4oXCJzYXAubS5PYmplY3ROdW1iZXJcIikpIHtcblx0XHRcdHRoaXMuY29udGVudC5zZXROdW1iZXIodmFsdWUgYXMgc3RyaW5nKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuY29udGVudD8uaXNBPFByb2dyZXNzSW5kaWNhdG9yPihcInNhcC5tLlByb2dyZXNzSW5kaWNhdG9yXCIpKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJzZXRWYWx1ZSBpc24ndCBpbXBsZW1lbnRlZCBmb3IgdGhpcyBmaWVsZCB0eXBlIHlldFwiKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuY29udGVudD8uaXNBPFJhdGluZ0luZGljYXRvcj4oXCJzYXAubS5SYXRpbmdJbmRpY2F0b3JcIikpIHtcblx0XHRcdHRoaXMuY29udGVudC5zZXRWYWx1ZSh2YWx1ZSBhcyBudW1iZXIpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQW1DcUJBLFNBQVMsSUFBQUMsSUFBQSxHQUQ3QkMsY0FBYyxDQUFDLGtDQUFrQyxDQUFDLEVBQUFDLEtBQUEsR0FLakRDLFdBQVcsQ0FBQztJQUNaQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU1EQyxRQUFRLENBQUM7SUFDVEYsSUFBSSxFQUFF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
@@ -315,6 +315,7 @@ export default class DataPoint extends BuildingBlock<Control> {
315
315
  active={this.hasQuickView}
316
316
  press={FieldRuntimeHelper.pressLink as unknown as (oEvent: ObjectStatus$PressEvent) => void}
317
317
  ariaLabelledBy={this.ariaLabelledBy}
318
+ reactiveAreaMode={this.formatOptions?.reactiveAreaMode}
318
319
  >
319
320
  {{
320
321
  dependents: this.createDependents()
@@ -5,7 +5,7 @@
5
5
  sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/macros/controls/BuildingBlockObjectProperty"], function (ClassSupport, BuildingBlockObjectProperty) {
6
6
  "use strict";
7
7
 
8
- var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;
9
9
  var _exports = {};
10
10
  var property = ClassSupport.property;
11
11
  var defineUI5Class = ClassSupport.defineUI5Class;
@@ -30,6 +30,9 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/macros/controls/BuildingBlock
30
30
  type: "boolean"
31
31
  }), _dec7 = property({
32
32
  type: "boolean"
33
+ }), _dec8 = property({
34
+ type: "string",
35
+ allowedValues: ["Inline", "Overlay"]
33
36
  }), _dec(_class = (_class2 = /*#__PURE__*/function (_BuildingBlockObjectP) {
34
37
  function DataPointFormatOptions(props, others) {
35
38
  var _this;
@@ -40,6 +43,7 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/macros/controls/BuildingBlock
40
43
  _initializerDefineProperty(_this, "measureDisplayMode", _descriptor4, _this);
41
44
  _initializerDefineProperty(_this, "showEmptyIndicator", _descriptor5, _this);
42
45
  _initializerDefineProperty(_this, "showLabels", _descriptor6, _this);
46
+ _initializerDefineProperty(_this, "reactiveAreaMode", _descriptor7, _this);
43
47
  return _this;
44
48
  }
45
49
  _exports = DataPointFormatOptions;
@@ -79,8 +83,13 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/macros/controls/BuildingBlock
79
83
  initializer: function () {
80
84
  return false;
81
85
  }
86
+ }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, "reactiveAreaMode", [_dec8], {
87
+ configurable: true,
88
+ enumerable: true,
89
+ writable: true,
90
+ initializer: null
82
91
  }), _class2)) || _class);
83
92
  _exports = DataPointFormatOptions;
84
93
  return _exports;
85
94
  }, false);
86
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRhUG9pbnRGb3JtYXRPcHRpb25zIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjMyIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrT2JqZWN0UCIsInByb3BzIiwib3RoZXJzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHkiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwicHJvdG90eXBlIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRhdGFQb2ludEZvcm1hdE9wdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IERpc3BsYXlNb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5IGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL0J1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eVwiO1xuXG4vKipcbiAqIERlZmluaXRpb24gb2YgZGF0YXBvaW50IGZvcm1hdE9wdGlvbnNcbiAqIEBwcml2YXRlXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWwuRGF0YVBvaW50Rm9ybWF0T3B0aW9uc1wiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGF0YVBvaW50Rm9ybWF0T3B0aW9ucyBleHRlbmRzIEJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eSB7XG5cdGNvbnN0cnVjdG9yKHByb3BzPzogc3RyaW5nIHwgUHJvcGVydGllc09mPERhdGFQb2ludEZvcm1hdE9wdGlvbnM+LCBvdGhlcnM/OiBQcm9wZXJ0aWVzT2Y8RGF0YVBvaW50Rm9ybWF0T3B0aW9ucz4pIHtcblx0XHRzdXBlcihwcm9wcyBhcyBzdHJpbmcsIG90aGVycyk7XG5cdH1cblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGRhdGFQb2ludFN0eWxlPzogXCJcIiB8IFwibGFyZ2VcIjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGRpc3BsYXlNb2RlPzogRGlzcGxheU1vZGU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRpY29uU2l6ZT86IFwiMXJlbVwiIHwgXCIxLjM3NXJlbVwiIHwgXCIycmVtXCI7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRtZWFzdXJlRGlzcGxheU1vZGU/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0c2hvd0VtcHR5SW5kaWNhdG9yID0gZmFsc2U7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0c2hvd0xhYmVscyA9IGZhbHNlO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0VBS0E7QUFDQTtBQUNBO0FBQ0E7RUFIQSxJQUtxQkEsc0JBQXNCLElBQUFDLElBQUEsR0FEMUNDLGNBQWMsQ0FBQywrQ0FBK0MsQ0FBQyxFQUFBQyxLQUFBLEdB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
95
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRhUG9pbnRGb3JtYXRPcHRpb25zIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjMyIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJhbGxvd2VkVmFsdWVzIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrT2JqZWN0UCIsInByb3BzIiwib3RoZXJzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHkiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwicHJvdG90eXBlIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRhdGFQb2ludEZvcm1hdE9wdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IERpc3BsYXlNb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5IGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL0J1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eVwiO1xuXG4vKipcbiAqIERlZmluaXRpb24gb2YgZGF0YXBvaW50IGZvcm1hdE9wdGlvbnNcbiAqIEBwcml2YXRlXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWwuRGF0YVBvaW50Rm9ybWF0T3B0aW9uc1wiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGF0YVBvaW50Rm9ybWF0T3B0aW9ucyBleHRlbmRzIEJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eSB7XG5cdGNvbnN0cnVjdG9yKHByb3BzPzogc3RyaW5nIHwgUHJvcGVydGllc09mPERhdGFQb2ludEZvcm1hdE9wdGlvbnM+LCBvdGhlcnM/OiBQcm9wZXJ0aWVzT2Y8RGF0YVBvaW50Rm9ybWF0T3B0aW9ucz4pIHtcblx0XHRzdXBlcihwcm9wcyBhcyBzdHJpbmcsIG90aGVycyk7XG5cdH1cblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGRhdGFQb2ludFN0eWxlPzogXCJcIiB8IFwibGFyZ2VcIjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGRpc3BsYXlNb2RlPzogRGlzcGxheU1vZGU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRpY29uU2l6ZT86IFwiMXJlbVwiIHwgXCIxLjM3NXJlbVwiIHwgXCIycmVtXCI7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRtZWFzdXJlRGlzcGxheU1vZGU/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0c2hvd0VtcHR5SW5kaWNhdG9yID0gZmFsc2U7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0c2hvd0xhYmVscyA9IGZhbHNlO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIklubGluZVwiLCBcIk92ZXJsYXlcIl0gfSlcblx0cmVhY3Rp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
@@ -30,4 +30,7 @@ export default class DataPointFormatOptions extends BuildingBlockObjectProperty
30
30
 
31
31
  @property({ type: "boolean" })
32
32
  showLabels = false;
33
+
34
+ @property({ type: "string", allowedValues: ["Inline", "Overlay"] })
35
+ reactiveAreaMode?: "Inline" | "Overlay";
33
36
  }
@@ -96,6 +96,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/buildi
96
96
  * Source annotation path of the property.
97
97
  */
98
98
 
99
+ /**
100
+ * Tooltip content from @Common.QuickInfo annotation
101
+ */
102
+
99
103
  /**
100
104
  * Label for filterfield.
101
105
  */
@@ -206,6 +210,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/buildi
206
210
  _this.controlId = _this.idPrefix && generate([_this.idPrefix, originalPropertyName]);
207
211
  _this.sourcePath = getTargetObjectPath(dataModelPath);
208
212
  _this.documentRefText = dataModelPath.targetObject?.annotations.Common?.DocumentationRef?.toString();
213
+ _this.tooltip = propertyConverted?.annotations?.Common?.QuickInfo?.toString();
209
214
  _this.dataType = getDataType(propertyConvertedExternalId || propertyConverted); // data type for LR-FilterBar condition of the value help
210
215
  const labelTerm = propertyConverted?.annotations?.Common?.Label;
211
216
  const labelExpression = labelTerm?.toString() ?? constant(propertyName);
@@ -279,7 +284,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/buildi
279
284
  requiredProperties = [],
280
285
  showOverlayInitially,
281
286
  renderLineChart,
282
- isValueListWithFixedValues
287
+ isValueListWithFixedValues,
288
+ initialChartBindingEnabled
283
289
  } = visualFilterObject;
284
290
  vfXML = xml`
285
291
  <visualFilter:VisualFilter
@@ -299,6 +305,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/buildi
299
305
  renderLineChart="${renderLineChart}"
300
306
  isValueListWithFixedValues="${isValueListWithFixedValues}"
301
307
  filterBarEntityType="${contextPath}"
308
+ enableChartBinding="${initialChartBindingEnabled}"
302
309
  />
303
310
  `;
304
311
  return vfXML;
@@ -337,6 +344,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/buildi
337
344
  required="${this.required}"
338
345
  operators="${this.operators}"
339
346
  placeholder="${this.placeholder}"
347
+ ${this.attr("tooltip", this.tooltip)}
340
348
  ${this.attr("editMode", this.editMode)}
341
349
  >
342
350
  ${companionTextAvailable ? xml`
@@ -405,4 +413,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/buildi
405
413
  _exports = FilterFieldBlock;
406
414
  return _exports;
407
415
  }, false);
408
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWx0ZXJGaWVsZEJsb2NrIiwiX2RlYyIsImRlZmluZUJ1aWxkaW5nQmxvY2siLCJuYW1lIiwibmFtZXNwYWNlIiwiX2RlYzIiLCJibG9ja0F0dHJpYnV0ZSIsInR5cGUiLCJyZXF1aXJlZCIsImlzUHVibGljIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2tUZW1wbGF0IiwicHJvcHMiLCJjb25maWd1cmF0aW9uIiwic2V0dGluZ3MiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwicHJvcGVydHlDb252ZXJ0ZWQiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJjb252ZXJ0TWV0YU1vZGVsQ29udGV4dCIsInByb3BlcnR5IiwiZXh0ZXJuYWxJZFByb3BlcnR5UGF0aCIsImdldEFzc29jaWF0ZWRFeHRlcm5hbElkUHJvcGVydHlQYXRoIiwicHJvcGVydHlFeHRlcm5hbElkIiwiZ2V0TW9kZWwiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImdldFBhdGgiLCJyZXBsYWNlIiwicHJvcGVydHlDb252ZXJ0ZWRFeHRlcm5hbElkIiwidW5kZWZpbmVkIiwiZGF0YU1vZGVsUGF0aCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsImNvbnRleHRQYXRoIiwicHJvcGVydHlOYW1lIiwib3JpZ2luYWxQcm9wZXJ0eU5hbWUiLCJmaXhlZFZhbHVlcyIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIiwiY29udHJvbElkIiwiaWRQcmVmaXgiLCJnZW5lcmF0ZSIsInNvdXJjZVBhdGgiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiZG9jdW1lbnRSZWZUZXh0IiwidGFyZ2V0T2JqZWN0IiwiRG9jdW1lbnRhdGlvblJlZiIsInRvU3RyaW5nIiwiZGF0YVR5cGUiLCJnZXREYXRhVHlwZSIsImxhYmVsVGVybSIsIkxhYmVsIiwibGFiZWxFeHByZXNzaW9uIiwiY29uc3RhbnQiLCJsYWJlbCIsImNvbXBpbGVFeHByZXNzaW9uIiwiY29uZGl0aW9uc0JpbmRpbmciLCJnZXRDb25kaXRpb25zQmluZGluZyIsInBsYWNlaG9sZGVyIiwiZ2V0UGxhY2Vob2xkZXIiLCJwcm9wZXJ0eUtleSIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJ2ZkVuYWJsZWQiLCJ2aXN1YWxGaWx0ZXIiLCJpbmNsdWRlcyIsInZmSWQiLCJ2ZlJ1bnRpbWVJZCIsInByb3BlcnR5Q29udGV4dCIsIm1vZGVsIiwidmhQcm9wZXJ0eVBhdGgiLCJGaWVsZEhlbHBlciIsInZhbHVlSGVscFByb3BlcnR5Rm9yRmlsdGVyRmllbGQiLCJmaWx0ZXJhYmxlIiwiQ29tbW9uSGVscGVyIiwiaXNQcm9wZXJ0eUZpbHRlcmFibGUiLCJwcm9wZXJ0eU9iamVjdCIsImdldE9iamVjdCIsInByb3BlcnR5SW50ZXJmYWNlIiwiY29udGV4dCIsImRpc3BsYXkiLCJnZXRGaWx0ZXJGaWVsZERpc3BsYXlGb3JtYXQiLCJpc0ZpbHRlcmFibGUiLCJtYXhDb25kaXRpb25zIiwiZ2V0TWF4Q29uZGl0aW9ucyIsImRhdGFUeXBlQ29uc3RyYWludHMiLCJjb25zdHJhaW50cyIsImRhdGFUeXBlRm9ybWF0T3B0aW9ucyIsImZvcm1hdE9wdGlvbnMiLCJpc1JlcXVpcmVkSW5GaWx0ZXIiLCJvcGVyYXRvcnMiLCJ1c2VTZW1hbnRpY0RhdGVSYW5nZSIsIkV4dGVuZGVkU2VtYW50aWNEYXRlT3BlcmF0b3JzIiwiYWRkRXh0ZW5kZWRGaWx0ZXJPcGVyYXRvcnMiLCJzcGxpdCIsInZoUHJvcGVydHkiLCJ2aFByb3BlcnR5T2JqZWN0IiwidmhQcm9wZXJ0eUludGVyZmFjZSIsInJlbGF0aXZlVmhQcm9wZXJ0eVBhdGgiLCJnZXRSZWxhdGl2ZVByb3BlcnR5UGF0aCIsInJlbGF0aXZlUHJvcGVydHlQYXRoIiwidmFsdWVIZWxwUHJvcGVydHkiLCJnZXRWYWx1ZUhlbHBQcm9wZXJ0eUZvckZpbHRlckZpZWxkIiwiJFR5cGUiLCJ2aElkUHJlZml4IiwidGFyZ2V0RW50aXR5VHlwZSIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRWaXN1YWxGaWx0ZXJDb250ZW50IiwidmlzdWFsRmlsdGVyT2JqZWN0IiwidmZYTUwiLCJpc0EiLCJTQVBfVUlfTU9ERUxfQ09OVEVYVCIsInByZXNlbnRhdGlvbkFubm90YXRpb24iLCJvdXRQYXJhbWV0ZXIiLCJpblBhcmFtZXRlcnMiLCJ2YWx1ZWxpc3RQcm9wZXJ0eSIsInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uIiwibXVsdGlwbGVTZWxlY3Rpb25BbGxvd2VkIiwicmVxdWlyZWRQcm9wZXJ0aWVzIiwic2hvd092ZXJsYXlJbml0aWFsbHkiLCJyZW5kZXJMaW5lQ2hhcnQiLCJpc1ZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcyIsInhtbCIsInN0cmluZ2lmeUN1c3RvbURhdGEiLCJnZXRUZW1wbGF0ZSIsInhtbFJldCIsImNvbXBhbmlvblRleHRBdmFpbGFibGUiLCJmb3JtYXR0ZWRSZXN1bHQiLCJmb3JtYXRSZXN1bHQiLCJkYXRhTW9kZWxQYXRoRXh0ZXJuYWxJZCIsImdldERpc3BsYXlNb2RlIiwiZXJyIiwiTG9nIiwiZXJyb3IiLCJhdHRyIiwiZWRpdE1vZGUiLCJCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpbHRlckZpZWxkLmJsb2NrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlBbm5vdGF0aW9uc19Db21tb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vbl9FZG1cIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIGNvbnN0YW50LCBmb3JtYXRSZXN1bHQgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYmxvY2tBdHRyaWJ1dGUsIGRlZmluZUJ1aWxkaW5nQmxvY2sgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgeyBTQVBfVUlfTU9ERUxfQ09OVEVYVCwgeG1sIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZVwiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgZ2V0TWF4Q29uZGl0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0xpc3RSZXBvcnQvRmlsdGVyRmllbGRcIjtcbmltcG9ydCB0eXBlIHsgVmlzdWFsRmlsdGVycyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0xpc3RSZXBvcnQvVmlzdWFsRmlsdGVyc1wiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHtcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCxcblx0Z2V0VGFyZ2V0T2JqZWN0UGF0aCxcblx0dHlwZSBEYXRhTW9kZWxPYmplY3RQYXRoXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldFJlbGF0aXZlUHJvcGVydHlQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgeyBnZXRBc3NvY2lhdGVkRXh0ZXJuYWxJZFByb3BlcnR5UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgeyBnZXREaXNwbGF5TW9kZSwgdHlwZSBDb21wdXRlZEFubm90YXRpb25JbnRlcmZhY2UsIHR5cGUgTWV0YU1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCBGaWVsZEhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZEhlbHBlclwiO1xuaW1wb3J0IHtcblx0Y29uc3RyYWludHMsXG5cdGZvcm1hdE9wdGlvbnMsXG5cdGdldENvbmRpdGlvbnNCaW5kaW5nLFxuXHRnZXREYXRhVHlwZSxcblx0Z2V0UGxhY2Vob2xkZXIsXG5cdGlzUmVxdWlyZWRJbkZpbHRlclxufSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyRmllbGRIZWxwZXJcIjtcbmltcG9ydCB7IGdldEZpbHRlckZpZWxkRGlzcGxheUZvcm1hdCB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJGaWVsZFRlbXBsYXRpbmdcIjtcbmltcG9ydCBFeHRlbmRlZFNlbWFudGljRGF0ZU9wZXJhdG9ycyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9NZXRhTW9kZWxcIjtcblxuLyoqXG4gKiBCdWlsZGluZyBibG9jayBmb3IgY3JlYXRpbmcgYSBGaWx0ZXIgRmllbGQgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogSXQgaXMgZGVzaWduZWQgdG8gd29yayBiYXNlZCBvbiBhIHByb3BlcnR5IGNvbnRleHQocHJvcGVydHkpIHBvaW50aW5nIHRvIGFuIGVudGl0eSB0eXBlIHByb3BlcnR5XG4gKiBuZWVkZWQgdG8gYmUgdXNlZCBhcyBmaWx0ZXJmaWVsZCBhbmQgZW50aXR5VHlwZSBjb250ZXh0KGNvbnRleHRQYXRoKSB0byBjb25zaWRlciB0aGUgcmVsYXRpdml0eSBvZlxuICogdGhlIHByb3BlcnR5UGF0aCBvZiB0aGUgcHJvcGVydHkgd3J0IGVudGl0eVR5cGUuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOkZpbHRlckZpZWxkIGlkPVwiTXlGaWx0ZXJGaWVsZFwiIHByb3BlcnR5PVwiQ29tcGFueU5hbWVcIiAvJmd0O1xuICogPC9wcmU+XG4gKiBAcHJpdmF0ZVxuICovXG5AZGVmaW5lQnVpbGRpbmdCbG9jayh7XG5cdG5hbWU6IFwiRmlsdGVyRmllbGRcIixcblx0bmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxufSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbHRlckZpZWxkQmxvY2sgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2Uge1xuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgbWV0YWRhdGEgcGF0aCB0byB0aGUgcHJvcGVydHkuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRwcm9wZXJ0eSE6IENvbnRleHQ7XG5cblx0LyoqXG5cdCAqIE1ldGFkYXRhIHBhdGggdG8gdGhlIGVudGl0eVNldCBvciBuYXZpZ2F0aW9uUHJvcGVydHlcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGNvbnRleHRQYXRoITogQ29udGV4dDtcblxuXHQvKipcblx0ICogVmlzdWFsIGZpbHRlciBzZXR0aW5ncyBmb3IgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0dmlzdWFsRmlsdGVyPzogQ29udGV4dCB8IFZpc3VhbEZpbHRlcnM7XG5cblx0LyoqXG5cdCAqIEEgcHJlZml4IHRoYXQgaXMgYWRkZWQgdG8gdGhlIGdlbmVyYXRlZCBJRCBvZiB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGlkUHJlZml4ID0gXCJGaWx0ZXJGaWVsZFwiO1xuXG5cdC8qKlxuXHQgKiBBIHByZWZpeCB0aGF0IGlzIGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgSUQgb2YgdGhlIHZhbHVlIGhlbHAgdXNlZCBmb3IgdGhlIGZpbHRlciBmaWVsZC5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHR2aElkUHJlZml4ID0gXCJGaWx0ZXJGaWVsZFZhbHVlSGVscFwiO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIFNlbWF0aWMgRGF0ZSBSYW5nZSBvcHRpb24gZm9yIHRoZSBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdHVzZVNlbWFudGljRGF0ZVJhbmdlID0gdHJ1ZTtcblxuXHQvKipcblx0ICogU2V0dGluZ3MgZnJvbSB0aGUgbWFuaWZlc3QuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0c2V0dGluZ3MgPSBcIlwiO1xuXG5cdC8qKlxuXHQgKiBTcGVmaWNpZXMgdGhlIGVuYWJsZW1lbnQgb2YgdGhlIGZpbHRlciBmaWVsZC5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRpc1B1YmxpYzogZmFsc2Vcblx0fSlcblx0ZWRpdE1vZGU/OiBzdHJpbmc7XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdCAqICAgICAgICAgICAgSU5URVJOQUwgQVRUUklCVVRFUyAgICAgICAgICAgICAgKlxuXHQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHQvKipcblx0ICogQ29udHJvbCBJZCBmb3IgTURDIGZpbHRlciBmaWVsZCB1c2VkIGluc2lkZS5cblx0ICovXG5cdGNvbnRyb2xJZCE6IHN0cmluZztcblxuXHQvKipcblx0ICogUHJvcGVydHkga2V5IGZvciBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRwcm9wZXJ0eUtleSE6IHN0cmluZztcblxuXHQvKipcblx0ICogU291cmNlIGFubm90YXRpb24gcGF0aCBvZiB0aGUgcHJvcGVydHkuXG5cdCAqL1xuXHRzb3VyY2VQYXRoITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTb3VyY2UgYW5ub3RhdGlvbiBwYXRoIG9mIHRoZSBwcm9wZXJ0eS5cblx0ICovXG5cdGRvY3VtZW50UmVmVGV4dD86IHN0cmluZztcblxuXHQvKipcblx0ICogTGFiZWwgZm9yIGZpbHRlcmZpZWxkLlxuXHQgKi9cblx0bGFiZWwhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERhdGEgVHlwZSBvZiB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0ZGF0YVR5cGUhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIE1heGltdW0gY29uZGl0aW9ucyB0aGF0IGNhbiBiZSBhZGRlZCB0byB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0bWF4Q29uZGl0aW9ucyE6IG51bWJlcjtcblxuXHQvKipcblx0ICogVmFsdWUgSGVscCBpZCBhcyBhc3NvY2lhdGlvbiBmb3IgdGhlIGZpbHRlciBmaWVsZC5cblx0ICovXG5cdHZhbHVlSGVscFByb3BlcnR5Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBCaW5kaW5nIHBhdGggZm9yIGNvbmRpdGlvbnMgYWRkZWQgdG8gZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0Y29uZGl0aW9uc0JpbmRpbmchOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERhdGF0eXBlIGNvbnN0cmFpbnRzIG9mIHRoZSBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRkYXRhVHlwZUNvbnN0cmFpbnRzPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEYXRhdHlwZSBmb3JtYXQgb3B0aW9ucyBvZiB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0ZGF0YVR5cGVGb3JtYXRPcHRpb25zPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUbyBzcGVjaWZ5IGZpbHRlciBmaWVsZCBpcyBtYW5kYXRvcnkgZm9yIGZpbHRlcmluZy5cblx0ICovXG5cdHJlcXVpcmVkITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogVmFsaWQgb3BlcmF0b3JzIGZvciB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0b3BlcmF0b3JzPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBWaXN1YWwgRmlsdGVyIGlkIHRvIGJlIHVzZWQuXG5cdCAqL1xuXHR2ZklkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBWaXN1YWwgRmlsdGVyIGJ1aWxkaW5nIGJsb2NrIGlkIHRvIGJlIHVzZWQuXG5cdCAqL1xuXHR2ZlJ1bnRpbWVJZD86IHN0cmluZztcblxuXHQvKipcblx0ICogVmlzdWFsIEZpbHRlciBpcyBleHBlY3RlZC5cblx0ICovXG5cdHZmRW5hYmxlZCE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIFByb3BlcnR5IHVzZWQgaXMgZmlsdGVyYWJsZVxuXHQgKi9cblx0aXNGaWx0ZXJhYmxlITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogUHJvcGVydHkgZm9yIHBsYWNlaG9sZGVyXG5cdCAqL1xuXHRwbGFjZWhvbGRlcj86IHN0cmluZztcblxuXHQvKipcblx0ICogUHJvcGVydHkgdG8gaG9sZCBwcm9taXNlIGZvciBkaXNwbGF5XG5cdCAqL1xuXHRkaXNwbGF5PzogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuXG5cdHByb3BlcnR5RXh0ZXJuYWxJZD86IENvbnRleHQ7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6IFByb3BlcnRpZXNPZjxGaWx0ZXJGaWVsZEJsb2NrPiwgY29uZmlndXJhdGlvbjogdW5rbm93biwgc2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgY29uZmlndXJhdGlvbiwgc2V0dGluZ3MpO1xuXG5cdFx0Y29uc3QgcHJvcGVydHlDb252ZXJ0ZWQgPSBNZXRhTW9kZWxDb252ZXJ0ZXIuY29udmVydE1ldGFNb2RlbENvbnRleHQodGhpcy5wcm9wZXJ0eSkgYXMgUHJvcGVydHk7XG5cblx0XHRjb25zdCBleHRlcm5hbElkUHJvcGVydHlQYXRoID0gZ2V0QXNzb2NpYXRlZEV4dGVybmFsSWRQcm9wZXJ0eVBhdGgocHJvcGVydHlDb252ZXJ0ZWQpIGFzIHN0cmluZztcblx0XHRpZiAoZXh0ZXJuYWxJZFByb3BlcnR5UGF0aCkge1xuXHRcdFx0dGhpcy5wcm9wZXJ0eUV4dGVybmFsSWQgPSB0aGlzLnByb3BlcnR5XG5cdFx0XHRcdC5nZXRNb2RlbCgpXG5cdFx0XHRcdC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0aGlzLnByb3BlcnR5LmdldFBhdGgoKS5yZXBsYWNlKHByb3BlcnR5Q29udmVydGVkLm5hbWUsIGV4dGVybmFsSWRQcm9wZXJ0eVBhdGgpLCB0aGlzLnByb3BlcnR5KTtcblx0XHR9XG5cblx0XHRjb25zdCBwcm9wZXJ0eUNvbnZlcnRlZEV4dGVybmFsSWQgPSB0aGlzLnByb3BlcnR5RXh0ZXJuYWxJZFxuXHRcdFx0PyAoTWV0YU1vZGVsQ29udmVydGVyLmNvbnZlcnRNZXRhTW9kZWxDb250ZXh0KHRoaXMucHJvcGVydHlFeHRlcm5hbElkKSBhcyBQcm9wZXJ0eSlcblx0XHRcdDogdW5kZWZpbmVkO1xuXG5cdFx0Y29uc3QgZGF0YU1vZGVsUGF0aCA9IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8UHJvcGVydHk+KHRoaXMucHJvcGVydHksIHRoaXMuY29udGV4dFBhdGgpO1xuXG5cdFx0Ly8gUHJvcGVydHkgc2V0dGluZ3Ncblx0XHRjb25zdCBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eUNvbnZlcnRlZC5uYW1lLFxuXHRcdFx0b3JpZ2luYWxQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eUNvbnZlcnRlZC5uYW1lLFxuXHRcdFx0Zml4ZWRWYWx1ZXMgPVxuXHRcdFx0XHQhIXByb3BlcnR5Q29udmVydGVkRXh0ZXJuYWxJZD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIHx8XG5cdFx0XHRcdCEhcHJvcGVydHlDb252ZXJ0ZWQuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzO1xuXG5cdFx0dGhpcy5jb250cm9sSWQgPSB0aGlzLmlkUHJlZml4ICYmIGdlbmVyYXRlKFt0aGlzLmlkUHJlZml4LCBvcmlnaW5hbFByb3BlcnR5TmFtZV0pO1xuXHRcdHRoaXMuc291cmNlUGF0aCA9IGdldFRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsUGF0aCk7XG5cblx0XHR0eXBlIFByb3BlcnR5QW5ub3RhdGlvbnNfQ29tbW9uX2V4dGVuZGVkID0gUHJvcGVydHlBbm5vdGF0aW9uc19Db21tb24gJiB7IERvY3VtZW50YXRpb25SZWY/OiBzdHJpbmcgfTtcblx0XHR0aGlzLmRvY3VtZW50UmVmVGV4dCA9IChcblx0XHRcdGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucy5Db21tb24gYXMgUHJvcGVydHlBbm5vdGF0aW9uc19Db21tb25fZXh0ZW5kZWRcblx0XHQpPy5Eb2N1bWVudGF0aW9uUmVmPy50b1N0cmluZygpO1xuXG5cdFx0dGhpcy5kYXRhVHlwZSA9IGdldERhdGFUeXBlKHByb3BlcnR5Q29udmVydGVkRXh0ZXJuYWxJZCB8fCBwcm9wZXJ0eUNvbnZlcnRlZCk7IC8vIGRhdGEgdHlwZSBmb3IgTFItRmlsdGVyQmFyIGNvbmRpdGlvbiBvZiB0aGUgdmFsdWUgaGVscFxuXHRcdGNvbnN0IGxhYmVsVGVybSA9IHByb3BlcnR5Q29udmVydGVkPy5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbDtcblx0XHRjb25zdCBsYWJlbEV4cHJlc3Npb24gPSBsYWJlbFRlcm0/LnRvU3RyaW5nKCkgPz8gY29uc3RhbnQocHJvcGVydHlOYW1lKTtcblx0XHR0aGlzLmxhYmVsID0gY29tcGlsZUV4cHJlc3Npb24obGFiZWxFeHByZXNzaW9uKSB8fCBwcm9wZXJ0eU5hbWU7XG5cdFx0dGhpcy5jb25kaXRpb25zQmluZGluZyA9IGdldENvbmRpdGlvbnNCaW5kaW5nKGRhdGFNb2RlbFBhdGgpIHx8IFwiXCI7XG5cdFx0dGhpcy5wbGFjZWhvbGRlciA9IGdldFBsYWNlaG9sZGVyKHByb3BlcnR5Q29udmVydGVkKTtcblx0XHR0aGlzLnByb3BlcnR5S2V5ID0gZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChkYXRhTW9kZWxQYXRoLCBmYWxzZSwgdHJ1ZSkgfHwgcHJvcGVydHlOYW1lO1xuXHRcdC8vIFZpc3VhbCBGaWx0ZXIgc2V0dGluZ3Ncblx0XHR0aGlzLnZmRW5hYmxlZCA9ICEhdGhpcy52aXN1YWxGaWx0ZXIgJiYgISh0aGlzLmlkUHJlZml4ICYmIHRoaXMuaWRQcmVmaXguaW5jbHVkZXMoXCJBZGFwdGF0aW9uXCIpKTtcblx0XHR0aGlzLnZmSWQgPSB0aGlzLnZmRW5hYmxlZCA/IGdlbmVyYXRlKFt0aGlzLmlkUHJlZml4LCBwcm9wZXJ0eU5hbWUsIFwiVmlzdWFsRmlsdGVyXCJdKSA6IHVuZGVmaW5lZDtcblx0XHR0aGlzLnZmUnVudGltZUlkID0gdGhpcy52ZkVuYWJsZWQgPyBnZW5lcmF0ZShbdGhpcy5pZFByZWZpeCwgcHJvcGVydHlOYW1lLCBcIlZpc3VhbEZpbHRlckNvbnRhaW5lclwiXSkgOiB1bmRlZmluZWQ7XG5cblx0XHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy9cblx0XHQvLyBUT0RPOiBuZWVkIHRvIGNoYW5nZSBvcGVyYXRpb25zIGZyb20gTWV0YU1vZGVsIHRvIENvbnZlcnRlcnMuXG5cdFx0Ly8gVGhpcyBtYWlubHkgaW5jbHVkZWQgY2hhbmdpbmcgY2hhbmdpbmcgZ2V0RmlsdGVyUmVzdHJpY3Rpb25zIG9wZXJhdGlvbnMgZnJvbSBtZXRhTW9kZWwgdG8gY29udmVydGVyc1xuXHRcdGNvbnN0IHByb3BlcnR5Q29udGV4dCA9IHRoaXMucHJvcGVydHksXG5cdFx0XHRtb2RlbDogTWV0YU1vZGVsID0gcHJvcGVydHlDb250ZXh0LmdldE1vZGVsKCksXG5cdFx0XHR2aFByb3BlcnR5UGF0aDogc3RyaW5nID0gRmllbGRIZWxwZXIudmFsdWVIZWxwUHJvcGVydHlGb3JGaWx0ZXJGaWVsZChwcm9wZXJ0eUNvbnRleHQpLFxuXHRcdFx0ZmlsdGVyYWJsZSA9IENvbW1vbkhlbHBlci5pc1Byb3BlcnR5RmlsdGVyYWJsZShwcm9wZXJ0eUNvbnRleHQpLFxuXHRcdFx0cHJvcGVydHlPYmplY3QgPSBwcm9wZXJ0eUNvbnRleHQuZ2V0T2JqZWN0KCksXG5cdFx0XHRwcm9wZXJ0eUludGVyZmFjZSA9IHsgY29udGV4dDogcHJvcGVydHlDb250ZXh0IH0gYXMgQ29tcHV0ZWRBbm5vdGF0aW9uSW50ZXJmYWNlO1xuXG5cdFx0dGhpcy5kaXNwbGF5ID0gZ2V0RmlsdGVyRmllbGREaXNwbGF5Rm9ybWF0KGRhdGFNb2RlbFBhdGgsIHByb3BlcnR5Q29udmVydGVkLCBwcm9wZXJ0eUludGVyZmFjZSk7XG5cdFx0dGhpcy5pc0ZpbHRlcmFibGUgPSAhKGZpbHRlcmFibGUgPT09IGZhbHNlIHx8IGZpbHRlcmFibGUgPT09IFwiZmFsc2VcIik7XG5cdFx0dGhpcy5tYXhDb25kaXRpb25zID0gZ2V0TWF4Q29uZGl0aW9ucyhkYXRhTW9kZWxQYXRoKTtcblx0XHR0aGlzLmRhdGFUeXBlQ29uc3RyYWludHMgPSBjb25zdHJhaW50cyhwcm9wZXJ0eU9iamVjdCwgcHJvcGVydHlJbnRlcmZhY2UpO1xuXHRcdHRoaXMuZGF0YVR5cGVGb3JtYXRPcHRpb25zID0gZm9ybWF0T3B0aW9ucyhwcm9wZXJ0eU9iamVjdCwgcHJvcGVydHlJbnRlcmZhY2UpO1xuXHRcdHRoaXMucmVxdWlyZWQgPSBpc1JlcXVpcmVkSW5GaWx0ZXIocHJvcGVydHlPYmplY3QsIHByb3BlcnR5SW50ZXJmYWNlKTtcblx0XHR0aGlzLm9wZXJhdG9ycyA9IEZpZWxkSGVscGVyLm9wZXJhdG9ycyhcblx0XHRcdHByb3BlcnR5Q29udGV4dCxcblx0XHRcdHByb3BlcnR5T2JqZWN0LFxuXHRcdFx0dGhpcy51c2VTZW1hbnRpY0RhdGVSYW5nZSxcblx0XHRcdHRoaXMuc2V0dGluZ3MgfHwgXCJcIixcblx0XHRcdHRoaXMuY29udGV4dFBhdGguZ2V0UGF0aCgpXG5cdFx0KTtcblx0XHRpZiAodGhpcy5vcGVyYXRvcnMpIHtcblx0XHRcdC8vIEV4dGVuZGVkIG9wZXJhdG9ycyBhcmUgbm90IGFkZGVkIGJ5IGRlZmF1bHQuXG5cdFx0XHQvLyBXZSBhZGQgdGhlbSB0byBNREMgZmlsdGVyIGVudmlyb25tZW50LlxuXHRcdFx0RXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnMuYWRkRXh0ZW5kZWRGaWx0ZXJPcGVyYXRvcnModGhpcy5vcGVyYXRvcnMuc3BsaXQoXCIsXCIpKTtcblx0XHR9XG5cdFx0Ly8gVmFsdWUgSGVscCBzZXR0aW5nc1xuXHRcdC8vIFRPRE86IFRoaXMgbmVlZHMgdG8gYmUgdXBkYXRlZCB3aGVuIFZIIG1hY3JvIGlzIGNvbnZlcnRlZCB0byAyLjBcblx0XHRjb25zdCB2aFByb3BlcnR5ID0gbW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodmhQcm9wZXJ0eVBhdGgpIGFzIENvbnRleHQ7XG5cdFx0Y29uc3QgdmhQcm9wZXJ0eU9iamVjdCA9IHZoUHJvcGVydHkuZ2V0T2JqZWN0KCkgYXMgTWV0YU1vZGVsQ29udGV4dCxcblx0XHRcdHZoUHJvcGVydHlJbnRlcmZhY2UgPSB7IGNvbnRleHQ6IHZoUHJvcGVydHkgfSxcblx0XHRcdHJlbGF0aXZlVmhQcm9wZXJ0eVBhdGggPSBnZXRSZWxhdGl2ZVByb3BlcnR5UGF0aCh2aFByb3BlcnR5T2JqZWN0LCB2aFByb3BlcnR5SW50ZXJmYWNlKSxcblx0XHRcdHJlbGF0aXZlUHJvcGVydHlQYXRoID0gZ2V0UmVsYXRpdmVQcm9wZXJ0eVBhdGgocHJvcGVydHlPYmplY3QsIHByb3BlcnR5SW50ZXJmYWNlKTtcblx0XHR0aGlzLnZhbHVlSGVscFByb3BlcnR5ID0gRmllbGRIZWxwZXIuZ2V0VmFsdWVIZWxwUHJvcGVydHlGb3JGaWx0ZXJGaWVsZChcblx0XHRcdHByb3BlcnR5Q29udGV4dCxcblx0XHRcdHByb3BlcnR5T2JqZWN0LFxuXHRcdFx0cHJvcGVydHlPYmplY3QuJFR5cGUsXG5cdFx0XHR0aGlzLnZoSWRQcmVmaXgsXG5cdFx0XHRkYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUubmFtZSxcblx0XHRcdHJlbGF0aXZlUHJvcGVydHlQYXRoLFxuXHRcdFx0cmVsYXRpdmVWaFByb3BlcnR5UGF0aCxcblx0XHRcdGZpeGVkVmFsdWVzLFxuXHRcdFx0dGhpcy51c2VTZW1hbnRpY0RhdGVSYW5nZVxuXHRcdCk7XG5cblx0XHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy9cblx0fVxuXG5cdGdldFZpc3VhbEZpbHRlckNvbnRlbnQoKTogc3RyaW5nIHtcblx0XHRsZXQgdmlzdWFsRmlsdGVyT2JqZWN0ID0gdGhpcy52aXN1YWxGaWx0ZXIsXG5cdFx0XHR2ZlhNTCA9IFwiXCI7XG5cdFx0aWYgKCF0aGlzLnZmRW5hYmxlZCB8fCAhdmlzdWFsRmlsdGVyT2JqZWN0KSB7XG5cdFx0XHRyZXR1cm4gdmZYTUw7XG5cdFx0fVxuXHRcdGlmICgodmlzdWFsRmlsdGVyT2JqZWN0IGFzIENvbnRleHQpPy5pc0E/LihTQVBfVUlfTU9ERUxfQ09OVEVYVCkpIHtcblx0XHRcdHZpc3VhbEZpbHRlck9iamVjdCA9ICh2aXN1YWxGaWx0ZXJPYmplY3QgYXMgQ29udGV4dCkuZ2V0T2JqZWN0KCkgYXMgVmlzdWFsRmlsdGVycztcblx0XHR9XG5cblx0XHRjb25zdCB7XG5cdFx0XHRjb250ZXh0UGF0aCxcblx0XHRcdHByZXNlbnRhdGlvbkFubm90YXRpb24sXG5cdFx0XHRvdXRQYXJhbWV0ZXIsXG5cdFx0XHRpblBhcmFtZXRlcnMsXG5cdFx0XHR2YWx1ZWxpc3RQcm9wZXJ0eSxcblx0XHRcdHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uLFxuXHRcdFx0bXVsdGlwbGVTZWxlY3Rpb25BbGxvd2VkLFxuXHRcdFx0cmVxdWlyZWQsXG5cdFx0XHRyZXF1aXJlZFByb3BlcnRpZXMgPSBbXSxcblx0XHRcdHNob3dPdmVybGF5SW5pdGlhbGx5LFxuXHRcdFx0cmVuZGVyTGluZUNoYXJ0LFxuXHRcdFx0aXNWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXNcblx0XHR9ID0gdmlzdWFsRmlsdGVyT2JqZWN0IGFzIFZpc3VhbEZpbHRlcnM7XG5cdFx0dmZYTUwgPSB4bWxgXG5cdFx0XHRcdDx2aXN1YWxGaWx0ZXI6VmlzdWFsRmlsdGVyXG5cdFx0XHRcdCAgICB4bWxuczp2aXN1YWxGaWx0ZXI9IFwic2FwLmZlLm1hY3Jvcy52aXN1YWxmaWx0ZXJzXCJcblx0XHRcdFx0XHRpZD1cIiR7dGhpcy52ZlJ1bnRpbWVJZH1cIlxuXHRcdFx0XHRcdF9jb250ZW50SWQ9XCIke3RoaXMudmZJZH1cIlxuXHRcdFx0XHRcdGNvbnRleHRQYXRoPVwiJHtjb250ZXh0UGF0aH1cIlxuXHRcdFx0XHRcdG1ldGFQYXRoPVwiJHtwcmVzZW50YXRpb25Bbm5vdGF0aW9ufVwiXG5cdFx0XHRcdFx0b3V0UGFyYW1ldGVyPVwiJHtvdXRQYXJhbWV0ZXJ9XCJcblx0XHRcdFx0XHRpblBhcmFtZXRlcnM9XCIke0NvbW1vbkhlbHBlci5zdHJpbmdpZnlDdXN0b21EYXRhKGluUGFyYW1ldGVycyl9XCJcblx0XHRcdFx0XHR2YWx1ZWxpc3RQcm9wZXJ0eT1cIiR7dmFsdWVsaXN0UHJvcGVydHl9XCJcblx0XHRcdFx0XHRzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbj1cIiR7c2VsZWN0aW9uVmFyaWFudEFubm90YXRpb259XCJcblx0XHRcdFx0XHRtdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWQ9XCIke211bHRpcGxlU2VsZWN0aW9uQWxsb3dlZH1cIlxuXHRcdFx0XHRcdHJlcXVpcmVkPVwiJHtyZXF1aXJlZH1cIlxuXHRcdFx0XHRcdHJlcXVpcmVkUHJvcGVydGllcz1cIiR7Q29tbW9uSGVscGVyLnN0cmluZ2lmeUN1c3RvbURhdGEocmVxdWlyZWRQcm9wZXJ0aWVzKX1cIlxuXHRcdFx0XHRcdHNob3dPdmVybGF5SW5pdGlhbGx5PVwiJHtzaG93T3ZlcmxheUluaXRpYWxseX1cIlxuXHRcdFx0XHRcdHJlbmRlckxpbmVDaGFydD1cIiR7cmVuZGVyTGluZUNoYXJ0fVwiXG5cdFx0XHRcdFx0aXNWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXM9XCIke2lzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzfVwiXG5cdFx0XHRcdFx0ZmlsdGVyQmFyRW50aXR5VHlwZT1cIiR7Y29udGV4dFBhdGh9XCJcblx0XHRcdFx0Lz5cblx0XHRcdGA7XG5cblx0XHRyZXR1cm4gdmZYTUw7XG5cdH1cblxuXHRhc3luYyBnZXRUZW1wbGF0ZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRcdGxldCB4bWxSZXQgPSBgYDtcblx0XHRpZiAodGhpcy5pc0ZpbHRlcmFibGUpIHtcblx0XHRcdGxldCBkaXNwbGF5O1xuXHRcdFx0Y29uc3QgY29tcGFuaW9uVGV4dEF2YWlsYWJsZSA9IHRoaXMuZG9jdW1lbnRSZWZUZXh0ID09PSB1bmRlZmluZWQgfHwgbnVsbCA/IGZhbHNlIDogdHJ1ZTtcblx0XHRcdGNvbnN0IGZvcm1hdHRlZFJlc3VsdDogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0Zm9ybWF0UmVzdWx0KFt0aGlzLmRvY3VtZW50UmVmVGV4dF0sIFwic2FwLmZlLmNvcmUuZm9ybWF0dGVycy5TdGFuZGFyZEZvcm1hdHRlciNhc0FycmF5XCIpXG5cdFx0XHQpO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgZGF0YU1vZGVsUGF0aEV4dGVybmFsSWQgPVxuXHRcdFx0XHRcdHRoaXMucHJvcGVydHlFeHRlcm5hbElkICYmIE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHModGhpcy5wcm9wZXJ0eUV4dGVybmFsSWQsIHRoaXMuY29udGV4dFBhdGgpO1xuXHRcdFx0XHRkaXNwbGF5ID0gZGF0YU1vZGVsUGF0aEV4dGVybmFsSWRcblx0XHRcdFx0XHQ/IGdldERpc3BsYXlNb2RlKGRhdGFNb2RlbFBhdGhFeHRlcm5hbElkIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KVxuXHRcdFx0XHRcdDogYXdhaXQgdGhpcy5kaXNwbGF5O1xuXHRcdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihgRkUgOiBGaWx0ZXJGaWVsZCBCdWlsZGluZ0Jsb2NrIDogRXJyb3IgZmV0Y2hpbmcgZGlzcGxheSBwcm9wZXJ0eSBmb3IgJHt0aGlzLnNvdXJjZVBhdGh9IDogJHtlcnJ9YCk7XG5cdFx0XHR9XG5cdFx0XHR4bWxSZXQgPSB4bWxgXG5cdFx0XHRcdDxtZGM6RmlsdGVyRmllbGRcblx0XHRcdFx0XHR4bWxuczptZGM9XCJzYXAudWkubWRjXCJcblx0XHRcdFx0XHR4bWxuczp0ZW1wbGF0ZT1cImh0dHA6Ly9zY2hlbWFzLnNhcC5jb20vc2FwdWk1L2V4dGVuc2lvbi9zYXAudWkuY29yZS50ZW1wbGF0ZS8xXCJcblx0XHRcdFx0XHR4bWxuczptYWNybz1cInNhcC5mZS5tYWNyb3NcIlxuXHRcdFx0XHRcdHhtbG5zOmN1c3RvbURhdGE9XCJodHRwOi8vc2NoZW1hcy5zYXAuY29tL3NhcHVpNS9leHRlbnNpb24vc2FwLnVpLmNvcmUuQ3VzdG9tRGF0YS8xXCJcblx0XHRcdFx0XHR4bWxuczpmaWVsZGhlbHA9XCJzYXAudWkuY29yZS5maWVsZGhlbHBcIlxuXHRcdFx0XHRcdGN1c3RvbURhdGE6c291cmNlUGF0aD1cIiR7dGhpcy5zb3VyY2VQYXRofVwiXG5cdFx0XHRcdFx0aWQ9XCIke3RoaXMuY29udHJvbElkfVwiXG5cdFx0XHRcdFx0ZGVsZWdhdGU9XCJ7bmFtZTogJ3NhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRCYXNlRGVsZWdhdGUnLCBwYXlsb2FkOntpc0ZpbHRlckZpZWxkOnRydWV9fVwiXG5cdFx0XHRcdFx0cHJvcGVydHlLZXk9XCIke3RoaXMucHJvcGVydHlLZXl9XCJcblx0XHRcdFx0XHRsYWJlbD1cIiR7dGhpcy5sYWJlbH1cIlxuXHRcdFx0XHRcdGRhdGFUeXBlPVwiJHt0aGlzLmRhdGFUeXBlfVwiXG5cdFx0XHRcdFx0ZGlzcGxheT1cIiR7ZGlzcGxheX1cIlxuXHRcdFx0XHRcdG1heENvbmRpdGlvbnM9XCIke3RoaXMubWF4Q29uZGl0aW9uc31cIlxuXHRcdFx0XHRcdHZhbHVlSGVscD1cIiR7dGhpcy52YWx1ZUhlbHBQcm9wZXJ0eX1cIlxuXHRcdFx0XHRcdGNvbmRpdGlvbnM9XCIke3RoaXMuY29uZGl0aW9uc0JpbmRpbmd9XCJcblx0XHRcdFx0XHRkYXRhVHlwZUNvbnN0cmFpbnRzPVwiJHt0aGlzLmRhdGFUeXBlQ29uc3RyYWludHN9XCJcblx0XHRcdFx0XHRkYXRhVHlwZUZvcm1hdE9wdGlvbnM9XCIke3RoaXMuZGF0YVR5cGVGb3JtYXRPcHRpb25zfVwiXG5cdFx0XHRcdFx0cmVxdWlyZWQ9XCIke3RoaXMucmVxdWlyZWR9XCJcblx0XHRcdFx0XHRvcGVyYXRvcnM9XCIke3RoaXMub3BlcmF0b3JzfVwiXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCIke3RoaXMucGxhY2Vob2xkZXJ9XCJcblx0XHRcdFx0XHQke3RoaXMuYXR0cihcImVkaXRNb2RlXCIsIHRoaXMuZWRpdE1vZGUpfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0JHtcblx0XHRcdFx0XHRcdGNvbXBhbmlvblRleHRBdmFpbGFibGVcblx0XHRcdFx0XHRcdFx0PyB4bWxgXG5cdFx0XHRcdFx0XHQ8bWRjOmN1c3RvbURhdGE+XG5cdFx0XHRcdFx0XHRcdDxmaWVsZGhlbHA6RmllbGRIZWxwQ3VzdG9tRGF0YVxuXHRcdFx0XHRcdFx0XHRcdCR7dGhpcy5hdHRyKFwidmFsdWVcIiwgZm9ybWF0dGVkUmVzdWx0KX1cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDwvbWRjOmN1c3RvbURhdGE+XG5cdFx0XHRcdFx0YFxuXHRcdFx0XHRcdFx0XHQ6IFwiXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0JHt0aGlzLnZmRW5hYmxlZCA/IHRoaXMuZ2V0VmlzdWFsRmlsdGVyQ29udGVudCgpIDogXCJcIn1cblx0XHRcdFx0PC9tZGM6RmlsdGVyRmllbGQ+XG5cdFx0XHRgO1xuXHRcdH1cblxuXHRcdHJldHVybiB4bWxSZXQ7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFxQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFaQSxJQWlCcUJBLGdCQUFnQixJQUFBQyxJQUFBLEdBSnBDQyxtQkFBbUIsQ0FBQztJQUNwQkMsSUFBSSxFQUFFLGFBQWE7SUFDbkJDLFNBQVMsRUFBRTtFQUNaLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBS0FDLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUUsc0JBQXNCO0lBQzVCQyxRQUFRLEVBQUUsSUFBSTtJQUNkQyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU1ESixjQUFjLENBQUM7SUFDZkMs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
416
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWx0ZXJGaWVsZEJsb2NrIiwiX2RlYyIsImRlZmluZUJ1aWxkaW5nQmxvY2siLCJuYW1lIiwibmFtZXNwYWNlIiwiX2RlYzIiLCJibG9ja0F0dHJpYnV0ZSIsInR5cGUiLCJyZXF1aXJlZCIsImlzUHVibGljIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2tUZW1wbGF0IiwicHJvcHMiLCJjb25maWd1cmF0aW9uIiwic2V0dGluZ3MiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwicHJvcGVydHlDb252ZXJ0ZWQiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJjb252ZXJ0TWV0YU1vZGVsQ29udGV4dCIsInByb3BlcnR5IiwiZXh0ZXJuYWxJZFByb3BlcnR5UGF0aCIsImdldEFzc29jaWF0ZWRFeHRlcm5hbElkUHJvcGVydHlQYXRoIiwicHJvcGVydHlFeHRlcm5hbElkIiwiZ2V0TW9kZWwiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImdldFBhdGgiLCJyZXBsYWNlIiwicHJvcGVydHlDb252ZXJ0ZWRFeHRlcm5hbElkIiwidW5kZWZpbmVkIiwiZGF0YU1vZGVsUGF0aCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsImNvbnRleHRQYXRoIiwicHJvcGVydHlOYW1lIiwib3JpZ2luYWxQcm9wZXJ0eU5hbWUiLCJmaXhlZFZhbHVlcyIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIiwiY29udHJvbElkIiwiaWRQcmVmaXgiLCJnZW5lcmF0ZSIsInNvdXJjZVBhdGgiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiZG9jdW1lbnRSZWZUZXh0IiwidGFyZ2V0T2JqZWN0IiwiRG9jdW1lbnRhdGlvblJlZiIsInRvU3RyaW5nIiwidG9vbHRpcCIsIlF1aWNrSW5mbyIsImRhdGFUeXBlIiwiZ2V0RGF0YVR5cGUiLCJsYWJlbFRlcm0iLCJMYWJlbCIsImxhYmVsRXhwcmVzc2lvbiIsImNvbnN0YW50IiwibGFiZWwiLCJjb21waWxlRXhwcmVzc2lvbiIsImNvbmRpdGlvbnNCaW5kaW5nIiwiZ2V0Q29uZGl0aW9uc0JpbmRpbmciLCJwbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwicHJvcGVydHlLZXkiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwidmZFbmFibGVkIiwidmlzdWFsRmlsdGVyIiwiaW5jbHVkZXMiLCJ2ZklkIiwidmZSdW50aW1lSWQiLCJwcm9wZXJ0eUNvbnRleHQiLCJtb2RlbCIsInZoUHJvcGVydHlQYXRoIiwiRmllbGRIZWxwZXIiLCJ2YWx1ZUhlbHBQcm9wZXJ0eUZvckZpbHRlckZpZWxkIiwiZmlsdGVyYWJsZSIsIkNvbW1vbkhlbHBlciIsImlzUHJvcGVydHlGaWx0ZXJhYmxlIiwicHJvcGVydHlPYmplY3QiLCJnZXRPYmplY3QiLCJwcm9wZXJ0eUludGVyZmFjZSIsImNvbnRleHQiLCJkaXNwbGF5IiwiZ2V0RmlsdGVyRmllbGREaXNwbGF5Rm9ybWF0IiwiaXNGaWx0ZXJhYmxlIiwibWF4Q29uZGl0aW9ucyIsImdldE1heENvbmRpdGlvbnMiLCJkYXRhVHlwZUNvbnN0cmFpbnRzIiwiY29uc3RyYWludHMiLCJkYXRhVHlwZUZvcm1hdE9wdGlvbnMiLCJmb3JtYXRPcHRpb25zIiwiaXNSZXF1aXJlZEluRmlsdGVyIiwib3BlcmF0b3JzIiwidXNlU2VtYW50aWNEYXRlUmFuZ2UiLCJFeHRlbmRlZFNlbWFudGljRGF0ZU9wZXJhdG9ycyIsImFkZEV4dGVuZGVkRmlsdGVyT3BlcmF0b3JzIiwic3BsaXQiLCJ2aFByb3BlcnR5IiwidmhQcm9wZXJ0eU9iamVjdCIsInZoUHJvcGVydHlJbnRlcmZhY2UiLCJyZWxhdGl2ZVZoUHJvcGVydHlQYXRoIiwiZ2V0UmVsYXRpdmVQcm9wZXJ0eVBhdGgiLCJyZWxhdGl2ZVByb3BlcnR5UGF0aCIsInZhbHVlSGVscFByb3BlcnR5IiwiZ2V0VmFsdWVIZWxwUHJvcGVydHlGb3JGaWx0ZXJGaWVsZCIsIiRUeXBlIiwidmhJZFByZWZpeCIsInRhcmdldEVudGl0eVR5cGUiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0VmlzdWFsRmlsdGVyQ29udGVudCIsInZpc3VhbEZpbHRlck9iamVjdCIsInZmWE1MIiwiaXNBIiwiU0FQX1VJX01PREVMX0NPTlRFWFQiLCJwcmVzZW50YXRpb25Bbm5vdGF0aW9uIiwib3V0UGFyYW1ldGVyIiwiaW5QYXJhbWV0ZXJzIiwidmFsdWVsaXN0UHJvcGVydHkiLCJzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbiIsIm11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCIsInJlcXVpcmVkUHJvcGVydGllcyIsInNob3dPdmVybGF5SW5pdGlhbGx5IiwicmVuZGVyTGluZUNoYXJ0IiwiaXNWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMiLCJpbml0aWFsQ2hhcnRCaW5kaW5nRW5hYmxlZCIsInhtbCIsInN0cmluZ2lmeUN1c3RvbURhdGEiLCJnZXRUZW1wbGF0ZSIsInhtbFJldCIsImNvbXBhbmlvblRleHRBdmFpbGFibGUiLCJmb3JtYXR0ZWRSZXN1bHQiLCJmb3JtYXRSZXN1bHQiLCJkYXRhTW9kZWxQYXRoRXh0ZXJuYWxJZCIsImdldERpc3BsYXlNb2RlIiwiZXJyIiwiTG9nIiwiZXJyb3IiLCJhdHRyIiwiZWRpdE1vZGUiLCJCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpbHRlckZpZWxkLmJsb2NrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlBbm5vdGF0aW9uc19Db21tb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vbl9FZG1cIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIGNvbnN0YW50LCBmb3JtYXRSZXN1bHQgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYmxvY2tBdHRyaWJ1dGUsIGRlZmluZUJ1aWxkaW5nQmxvY2sgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgeyBTQVBfVUlfTU9ERUxfQ09OVEVYVCwgeG1sIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZVwiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgZ2V0TWF4Q29uZGl0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0xpc3RSZXBvcnQvRmlsdGVyRmllbGRcIjtcbmltcG9ydCB0eXBlIHsgVmlzdWFsRmlsdGVycyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0xpc3RSZXBvcnQvVmlzdWFsRmlsdGVyc1wiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHtcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCxcblx0Z2V0VGFyZ2V0T2JqZWN0UGF0aCxcblx0dHlwZSBEYXRhTW9kZWxPYmplY3RQYXRoXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldFJlbGF0aXZlUHJvcGVydHlQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgeyBnZXRBc3NvY2lhdGVkRXh0ZXJuYWxJZFByb3BlcnR5UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgeyBnZXREaXNwbGF5TW9kZSwgdHlwZSBDb21wdXRlZEFubm90YXRpb25JbnRlcmZhY2UsIHR5cGUgTWV0YU1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCBGaWVsZEhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZEhlbHBlclwiO1xuaW1wb3J0IHtcblx0Y29uc3RyYWludHMsXG5cdGZvcm1hdE9wdGlvbnMsXG5cdGdldENvbmRpdGlvbnNCaW5kaW5nLFxuXHRnZXREYXRhVHlwZSxcblx0Z2V0UGxhY2Vob2xkZXIsXG5cdGlzUmVxdWlyZWRJbkZpbHRlclxufSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyRmllbGRIZWxwZXJcIjtcbmltcG9ydCB7IGdldEZpbHRlckZpZWxkRGlzcGxheUZvcm1hdCB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJGaWVsZFRlbXBsYXRpbmdcIjtcbmltcG9ydCBFeHRlbmRlZFNlbWFudGljRGF0ZU9wZXJhdG9ycyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9NZXRhTW9kZWxcIjtcblxuLyoqXG4gKiBCdWlsZGluZyBibG9jayBmb3IgY3JlYXRpbmcgYSBGaWx0ZXIgRmllbGQgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogSXQgaXMgZGVzaWduZWQgdG8gd29yayBiYXNlZCBvbiBhIHByb3BlcnR5IGNvbnRleHQocHJvcGVydHkpIHBvaW50aW5nIHRvIGFuIGVudGl0eSB0eXBlIHByb3BlcnR5XG4gKiBuZWVkZWQgdG8gYmUgdXNlZCBhcyBmaWx0ZXJmaWVsZCBhbmQgZW50aXR5VHlwZSBjb250ZXh0KGNvbnRleHRQYXRoKSB0byBjb25zaWRlciB0aGUgcmVsYXRpdml0eSBvZlxuICogdGhlIHByb3BlcnR5UGF0aCBvZiB0aGUgcHJvcGVydHkgd3J0IGVudGl0eVR5cGUuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOkZpbHRlckZpZWxkIGlkPVwiTXlGaWx0ZXJGaWVsZFwiIHByb3BlcnR5PVwiQ29tcGFueU5hbWVcIiAvJmd0O1xuICogPC9wcmU+XG4gKiBAcHJpdmF0ZVxuICovXG5AZGVmaW5lQnVpbGRpbmdCbG9jayh7XG5cdG5hbWU6IFwiRmlsdGVyRmllbGRcIixcblx0bmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxufSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbHRlckZpZWxkQmxvY2sgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2Uge1xuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgbWV0YWRhdGEgcGF0aCB0byB0aGUgcHJvcGVydHkuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRwcm9wZXJ0eSE6IENvbnRleHQ7XG5cblx0LyoqXG5cdCAqIE1ldGFkYXRhIHBhdGggdG8gdGhlIGVudGl0eVNldCBvciBuYXZpZ2F0aW9uUHJvcGVydHlcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGNvbnRleHRQYXRoITogQ29udGV4dDtcblxuXHQvKipcblx0ICogVmlzdWFsIGZpbHRlciBzZXR0aW5ncyBmb3IgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0dmlzdWFsRmlsdGVyPzogQ29udGV4dCB8IFZpc3VhbEZpbHRlcnM7XG5cblx0LyoqXG5cdCAqIEEgcHJlZml4IHRoYXQgaXMgYWRkZWQgdG8gdGhlIGdlbmVyYXRlZCBJRCBvZiB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGlkUHJlZml4ID0gXCJGaWx0ZXJGaWVsZFwiO1xuXG5cdC8qKlxuXHQgKiBBIHByZWZpeCB0aGF0IGlzIGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgSUQgb2YgdGhlIHZhbHVlIGhlbHAgdXNlZCBmb3IgdGhlIGZpbHRlciBmaWVsZC5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHR2aElkUHJlZml4ID0gXCJGaWx0ZXJGaWVsZFZhbHVlSGVscFwiO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIFNlbWF0aWMgRGF0ZSBSYW5nZSBvcHRpb24gZm9yIHRoZSBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdHVzZVNlbWFudGljRGF0ZVJhbmdlID0gdHJ1ZTtcblxuXHQvKipcblx0ICogU2V0dGluZ3MgZnJvbSB0aGUgbWFuaWZlc3QuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0c2V0dGluZ3MgPSBcIlwiO1xuXG5cdC8qKlxuXHQgKiBTcGVmaWNpZXMgdGhlIGVuYWJsZW1lbnQgb2YgdGhlIGZpbHRlciBmaWVsZC5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRpc1B1YmxpYzogZmFsc2Vcblx0fSlcblx0ZWRpdE1vZGU/OiBzdHJpbmc7XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdCAqICAgICAgICAgICAgSU5URVJOQUwgQVRUUklCVVRFUyAgICAgICAgICAgICAgKlxuXHQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHQvKipcblx0ICogQ29udHJvbCBJZCBmb3IgTURDIGZpbHRlciBmaWVsZCB1c2VkIGluc2lkZS5cblx0ICovXG5cdGNvbnRyb2xJZCE6IHN0cmluZztcblxuXHQvKipcblx0ICogUHJvcGVydHkga2V5IGZvciBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRwcm9wZXJ0eUtleSE6IHN0cmluZztcblxuXHQvKipcblx0ICogU291cmNlIGFubm90YXRpb24gcGF0aCBvZiB0aGUgcHJvcGVydHkuXG5cdCAqL1xuXHRzb3VyY2VQYXRoITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTb3VyY2UgYW5ub3RhdGlvbiBwYXRoIG9mIHRoZSBwcm9wZXJ0eS5cblx0ICovXG5cdGRvY3VtZW50UmVmVGV4dD86IHN0cmluZztcblxuXHQvKipcblx0ICogVG9vbHRpcCBjb250ZW50IGZyb20gQENvbW1vbi5RdWlja0luZm8gYW5ub3RhdGlvblxuXHQgKi9cblx0dG9vbHRpcD86IHN0cmluZztcblxuXHQvKipcblx0ICogTGFiZWwgZm9yIGZpbHRlcmZpZWxkLlxuXHQgKi9cblx0bGFiZWwhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERhdGEgVHlwZSBvZiB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0ZGF0YVR5cGUhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIE1heGltdW0gY29uZGl0aW9ucyB0aGF0IGNhbiBiZSBhZGRlZCB0byB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0bWF4Q29uZGl0aW9ucyE6IG51bWJlcjtcblxuXHQvKipcblx0ICogVmFsdWUgSGVscCBpZCBhcyBhc3NvY2lhdGlvbiBmb3IgdGhlIGZpbHRlciBmaWVsZC5cblx0ICovXG5cdHZhbHVlSGVscFByb3BlcnR5Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBCaW5kaW5nIHBhdGggZm9yIGNvbmRpdGlvbnMgYWRkZWQgdG8gZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0Y29uZGl0aW9uc0JpbmRpbmchOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERhdGF0eXBlIGNvbnN0cmFpbnRzIG9mIHRoZSBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRkYXRhVHlwZUNvbnN0cmFpbnRzPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEYXRhdHlwZSBmb3JtYXQgb3B0aW9ucyBvZiB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0ZGF0YVR5cGVGb3JtYXRPcHRpb25zPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUbyBzcGVjaWZ5IGZpbHRlciBmaWVsZCBpcyBtYW5kYXRvcnkgZm9yIGZpbHRlcmluZy5cblx0ICovXG5cdHJlcXVpcmVkITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogVmFsaWQgb3BlcmF0b3JzIGZvciB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0b3BlcmF0b3JzPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBWaXN1YWwgRmlsdGVyIGlkIHRvIGJlIHVzZWQuXG5cdCAqL1xuXHR2ZklkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBWaXN1YWwgRmlsdGVyIGJ1aWxkaW5nIGJsb2NrIGlkIHRvIGJlIHVzZWQuXG5cdCAqL1xuXHR2ZlJ1bnRpbWVJZD86IHN0cmluZztcblxuXHQvKipcblx0ICogVmlzdWFsIEZpbHRlciBpcyBleHBlY3RlZC5cblx0ICovXG5cdHZmRW5hYmxlZCE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIFByb3BlcnR5IHVzZWQgaXMgZmlsdGVyYWJsZVxuXHQgKi9cblx0aXNGaWx0ZXJhYmxlITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogUHJvcGVydHkgZm9yIHBsYWNlaG9sZGVyXG5cdCAqL1xuXHRwbGFjZWhvbGRlcj86IHN0cmluZztcblxuXHQvKipcblx0ICogUHJvcGVydHkgdG8gaG9sZCBwcm9taXNlIGZvciBkaXNwbGF5XG5cdCAqL1xuXHRkaXNwbGF5PzogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuXG5cdHByb3BlcnR5RXh0ZXJuYWxJZD86IENvbnRleHQ7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6IFByb3BlcnRpZXNPZjxGaWx0ZXJGaWVsZEJsb2NrPiwgY29uZmlndXJhdGlvbjogdW5rbm93biwgc2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgY29uZmlndXJhdGlvbiwgc2V0dGluZ3MpO1xuXG5cdFx0Y29uc3QgcHJvcGVydHlDb252ZXJ0ZWQgPSBNZXRhTW9kZWxDb252ZXJ0ZXIuY29udmVydE1ldGFNb2RlbENvbnRleHQodGhpcy5wcm9wZXJ0eSkgYXMgUHJvcGVydHk7XG5cblx0XHRjb25zdCBleHRlcm5hbElkUHJvcGVydHlQYXRoID0gZ2V0QXNzb2NpYXRlZEV4dGVybmFsSWRQcm9wZXJ0eVBhdGgocHJvcGVydHlDb252ZXJ0ZWQpIGFzIHN0cmluZztcblx0XHRpZiAoZXh0ZXJuYWxJZFByb3BlcnR5UGF0aCkge1xuXHRcdFx0dGhpcy5wcm9wZXJ0eUV4dGVybmFsSWQgPSB0aGlzLnByb3BlcnR5XG5cdFx0XHRcdC5nZXRNb2RlbCgpXG5cdFx0XHRcdC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0aGlzLnByb3BlcnR5LmdldFBhdGgoKS5yZXBsYWNlKHByb3BlcnR5Q29udmVydGVkLm5hbWUsIGV4dGVybmFsSWRQcm9wZXJ0eVBhdGgpLCB0aGlzLnByb3BlcnR5KTtcblx0XHR9XG5cblx0XHRjb25zdCBwcm9wZXJ0eUNvbnZlcnRlZEV4dGVybmFsSWQgPSB0aGlzLnByb3BlcnR5RXh0ZXJuYWxJZFxuXHRcdFx0PyAoTWV0YU1vZGVsQ29udmVydGVyLmNvbnZlcnRNZXRhTW9kZWxDb250ZXh0KHRoaXMucHJvcGVydHlFeHRlcm5hbElkKSBhcyBQcm9wZXJ0eSlcblx0XHRcdDogdW5kZWZpbmVkO1xuXG5cdFx0Y29uc3QgZGF0YU1vZGVsUGF0aCA9IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8UHJvcGVydHk+KHRoaXMucHJvcGVydHksIHRoaXMuY29udGV4dFBhdGgpO1xuXG5cdFx0Ly8gUHJvcGVydHkgc2V0dGluZ3Ncblx0XHRjb25zdCBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eUNvbnZlcnRlZC5uYW1lLFxuXHRcdFx0b3JpZ2luYWxQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eUNvbnZlcnRlZC5uYW1lLFxuXHRcdFx0Zml4ZWRWYWx1ZXMgPVxuXHRcdFx0XHQhIXByb3BlcnR5Q29udmVydGVkRXh0ZXJuYWxJZD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIHx8XG5cdFx0XHRcdCEhcHJvcGVydHlDb252ZXJ0ZWQuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzO1xuXG5cdFx0dGhpcy5jb250cm9sSWQgPSB0aGlzLmlkUHJlZml4ICYmIGdlbmVyYXRlKFt0aGlzLmlkUHJlZml4LCBvcmlnaW5hbFByb3BlcnR5TmFtZV0pO1xuXHRcdHRoaXMuc291cmNlUGF0aCA9IGdldFRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsUGF0aCk7XG5cblx0XHR0eXBlIFByb3BlcnR5QW5ub3RhdGlvbnNfQ29tbW9uX2V4dGVuZGVkID0gUHJvcGVydHlBbm5vdGF0aW9uc19Db21tb24gJiB7IERvY3VtZW50YXRpb25SZWY/OiBzdHJpbmcgfTtcblx0XHR0aGlzLmRvY3VtZW50UmVmVGV4dCA9IChcblx0XHRcdGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucy5Db21tb24gYXMgUHJvcGVydHlBbm5vdGF0aW9uc19Db21tb25fZXh0ZW5kZWRcblx0XHQpPy5Eb2N1bWVudGF0aW9uUmVmPy50b1N0cmluZygpO1xuXG5cdFx0dGhpcy50b29sdGlwID0gcHJvcGVydHlDb252ZXJ0ZWQ/LmFubm90YXRpb25zPy5Db21tb24/LlF1aWNrSW5mbz8udG9TdHJpbmcoKTtcblxuXHRcdHRoaXMuZGF0YVR5cGUgPSBnZXREYXRhVHlwZShwcm9wZXJ0eUNvbnZlcnRlZEV4dGVybmFsSWQgfHwgcHJvcGVydHlDb252ZXJ0ZWQpOyAvLyBkYXRhIHR5cGUgZm9yIExSLUZpbHRlckJhciBjb25kaXRpb24gb2YgdGhlIHZhbHVlIGhlbHBcblx0XHRjb25zdCBsYWJlbFRlcm0gPSBwcm9wZXJ0eUNvbnZlcnRlZD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uTGFiZWw7XG5cdFx0Y29uc3QgbGFiZWxFeHByZXNzaW9uID0gbGFiZWxUZXJtPy50b1N0cmluZygpID8/IGNvbnN0YW50KHByb3BlcnR5TmFtZSk7XG5cdFx0dGhpcy5sYWJlbCA9IGNvbXBpbGVFeHByZXNzaW9uKGxhYmVsRXhwcmVzc2lvbikgfHwgcHJvcGVydHlOYW1lO1xuXHRcdHRoaXMuY29uZGl0aW9uc0JpbmRpbmcgPSBnZXRDb25kaXRpb25zQmluZGluZyhkYXRhTW9kZWxQYXRoKSB8fCBcIlwiO1xuXHRcdHRoaXMucGxhY2Vob2xkZXIgPSBnZXRQbGFjZWhvbGRlcihwcm9wZXJ0eUNvbnZlcnRlZCk7XG5cdFx0dGhpcy5wcm9wZXJ0eUtleSA9IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsUGF0aCwgZmFsc2UsIHRydWUpIHx8IHByb3BlcnR5TmFtZTtcblx0XHQvLyBWaXN1YWwgRmlsdGVyIHNldHRpbmdzXG5cdFx0dGhpcy52ZkVuYWJsZWQgPSAhIXRoaXMudmlzdWFsRmlsdGVyICYmICEodGhpcy5pZFByZWZpeCAmJiB0aGlzLmlkUHJlZml4LmluY2x1ZGVzKFwiQWRhcHRhdGlvblwiKSk7XG5cdFx0dGhpcy52ZklkID0gdGhpcy52ZkVuYWJsZWQgPyBnZW5lcmF0ZShbdGhpcy5pZFByZWZpeCwgcHJvcGVydHlOYW1lLCBcIlZpc3VhbEZpbHRlclwiXSkgOiB1bmRlZmluZWQ7XG5cdFx0dGhpcy52ZlJ1bnRpbWVJZCA9IHRoaXMudmZFbmFibGVkID8gZ2VuZXJhdGUoW3RoaXMuaWRQcmVmaXgsIHByb3BlcnR5TmFtZSwgXCJWaXN1YWxGaWx0ZXJDb250YWluZXJcIl0pIDogdW5kZWZpbmVkO1xuXG5cdFx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vXG5cdFx0Ly8gVE9ETzogbmVlZCB0byBjaGFuZ2Ugb3BlcmF0aW9ucyBmcm9tIE1ldGFNb2RlbCB0byBDb252ZXJ0ZXJzLlxuXHRcdC8vIFRoaXMgbWFpbmx5IGluY2x1ZGVkIGNoYW5naW5nIGNoYW5naW5nIGdldEZpbHRlclJlc3RyaWN0aW9ucyBvcGVyYXRpb25zIGZyb20gbWV0YU1vZGVsIHRvIGNvbnZlcnRlcnNcblx0XHRjb25zdCBwcm9wZXJ0eUNvbnRleHQgPSB0aGlzLnByb3BlcnR5LFxuXHRcdFx0bW9kZWw6IE1ldGFNb2RlbCA9IHByb3BlcnR5Q29udGV4dC5nZXRNb2RlbCgpLFxuXHRcdFx0dmhQcm9wZXJ0eVBhdGg6IHN0cmluZyA9IEZpZWxkSGVscGVyLnZhbHVlSGVscFByb3BlcnR5Rm9yRmlsdGVyRmllbGQocHJvcGVydHlDb250ZXh0KSxcblx0XHRcdGZpbHRlcmFibGUgPSBDb21tb25IZWxwZXIuaXNQcm9wZXJ0eUZpbHRlcmFibGUocHJvcGVydHlDb250ZXh0KSxcblx0XHRcdHByb3BlcnR5T2JqZWN0ID0gcHJvcGVydHlDb250ZXh0LmdldE9iamVjdCgpLFxuXHRcdFx0cHJvcGVydHlJbnRlcmZhY2UgPSB7IGNvbnRleHQ6IHByb3BlcnR5Q29udGV4dCB9IGFzIENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZTtcblxuXHRcdHRoaXMuZGlzcGxheSA9IGdldEZpbHRlckZpZWxkRGlzcGxheUZvcm1hdChkYXRhTW9kZWxQYXRoLCBwcm9wZXJ0eUNvbnZlcnRlZCwgcHJvcGVydHlJbnRlcmZhY2UpO1xuXHRcdHRoaXMuaXNGaWx0ZXJhYmxlID0gIShmaWx0ZXJhYmxlID09PSBmYWxzZSB8fCBmaWx0ZXJhYmxlID09PSBcImZhbHNlXCIpO1xuXHRcdHRoaXMubWF4Q29uZGl0aW9ucyA9IGdldE1heENvbmRpdGlvbnMoZGF0YU1vZGVsUGF0aCk7XG5cdFx0dGhpcy5kYXRhVHlwZUNvbnN0cmFpbnRzID0gY29uc3RyYWludHMocHJvcGVydHlPYmplY3QsIHByb3BlcnR5SW50ZXJmYWNlKTtcblx0XHR0aGlzLmRhdGFUeXBlRm9ybWF0T3B0aW9ucyA9IGZvcm1hdE9wdGlvbnMocHJvcGVydHlPYmplY3QsIHByb3BlcnR5SW50ZXJmYWNlKTtcblx0XHR0aGlzLnJlcXVpcmVkID0gaXNSZXF1aXJlZEluRmlsdGVyKHByb3BlcnR5T2JqZWN0LCBwcm9wZXJ0eUludGVyZmFjZSk7XG5cdFx0dGhpcy5vcGVyYXRvcnMgPSBGaWVsZEhlbHBlci5vcGVyYXRvcnMoXG5cdFx0XHRwcm9wZXJ0eUNvbnRleHQsXG5cdFx0XHRwcm9wZXJ0eU9iamVjdCxcblx0XHRcdHRoaXMudXNlU2VtYW50aWNEYXRlUmFuZ2UsXG5cdFx0XHR0aGlzLnNldHRpbmdzIHx8IFwiXCIsXG5cdFx0XHR0aGlzLmNvbnRleHRQYXRoLmdldFBhdGgoKVxuXHRcdCk7XG5cdFx0aWYgKHRoaXMub3BlcmF0b3JzKSB7XG5cdFx0XHQvLyBFeHRlbmRlZCBvcGVyYXRvcnMgYXJlIG5vdCBhZGRlZCBieSBkZWZhdWx0LlxuXHRcdFx0Ly8gV2UgYWRkIHRoZW0gdG8gTURDIGZpbHRlciBlbnZpcm9ubWVudC5cblx0XHRcdEV4dGVuZGVkU2VtYW50aWNEYXRlT3BlcmF0b3JzLmFkZEV4dGVuZGVkRmlsdGVyT3BlcmF0b3JzKHRoaXMub3BlcmF0b3JzLnNwbGl0KFwiLFwiKSk7XG5cdFx0fVxuXHRcdC8vIFZhbHVlIEhlbHAgc2V0dGluZ3Ncblx0XHQvLyBUT0RPOiBUaGlzIG5lZWRzIHRvIGJlIHVwZGF0ZWQgd2hlbiBWSCBtYWNybyBpcyBjb252ZXJ0ZWQgdG8gMi4wXG5cdFx0Y29uc3QgdmhQcm9wZXJ0eSA9IG1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHZoUHJvcGVydHlQYXRoKSBhcyBDb250ZXh0O1xuXHRcdGNvbnN0IHZoUHJvcGVydHlPYmplY3QgPSB2aFByb3BlcnR5LmdldE9iamVjdCgpIGFzIE1ldGFNb2RlbENvbnRleHQsXG5cdFx0XHR2aFByb3BlcnR5SW50ZXJmYWNlID0geyBjb250ZXh0OiB2aFByb3BlcnR5IH0sXG5cdFx0XHRyZWxhdGl2ZVZoUHJvcGVydHlQYXRoID0gZ2V0UmVsYXRpdmVQcm9wZXJ0eVBhdGgodmhQcm9wZXJ0eU9iamVjdCwgdmhQcm9wZXJ0eUludGVyZmFjZSksXG5cdFx0XHRyZWxhdGl2ZVByb3BlcnR5UGF0aCA9IGdldFJlbGF0aXZlUHJvcGVydHlQYXRoKHByb3BlcnR5T2JqZWN0LCBwcm9wZXJ0eUludGVyZmFjZSk7XG5cdFx0dGhpcy52YWx1ZUhlbHBQcm9wZXJ0eSA9IEZpZWxkSGVscGVyLmdldFZhbHVlSGVscFByb3BlcnR5Rm9yRmlsdGVyRmllbGQoXG5cdFx0XHRwcm9wZXJ0eUNvbnRleHQsXG5cdFx0XHRwcm9wZXJ0eU9iamVjdCxcblx0XHRcdHByb3BlcnR5T2JqZWN0LiRUeXBlLFxuXHRcdFx0dGhpcy52aElkUHJlZml4LFxuXHRcdFx0ZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlUeXBlLm5hbWUsXG5cdFx0XHRyZWxhdGl2ZVByb3BlcnR5UGF0aCxcblx0XHRcdHJlbGF0aXZlVmhQcm9wZXJ0eVBhdGgsXG5cdFx0XHRmaXhlZFZhbHVlcyxcblx0XHRcdHRoaXMudXNlU2VtYW50aWNEYXRlUmFuZ2Vcblx0XHQpO1xuXG5cdFx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vXG5cdH1cblxuXHRnZXRWaXN1YWxGaWx0ZXJDb250ZW50KCk6IHN0cmluZyB7XG5cdFx0bGV0IHZpc3VhbEZpbHRlck9iamVjdCA9IHRoaXMudmlzdWFsRmlsdGVyLFxuXHRcdFx0dmZYTUwgPSBcIlwiO1xuXHRcdGlmICghdGhpcy52ZkVuYWJsZWQgfHwgIXZpc3VhbEZpbHRlck9iamVjdCkge1xuXHRcdFx0cmV0dXJuIHZmWE1MO1xuXHRcdH1cblx0XHRpZiAoKHZpc3VhbEZpbHRlck9iamVjdCBhcyBDb250ZXh0KT8uaXNBPy4oU0FQX1VJX01PREVMX0NPTlRFWFQpKSB7XG5cdFx0XHR2aXN1YWxGaWx0ZXJPYmplY3QgPSAodmlzdWFsRmlsdGVyT2JqZWN0IGFzIENvbnRleHQpLmdldE9iamVjdCgpIGFzIFZpc3VhbEZpbHRlcnM7XG5cdFx0fVxuXG5cdFx0Y29uc3Qge1xuXHRcdFx0Y29udGV4dFBhdGgsXG5cdFx0XHRwcmVzZW50YXRpb25Bbm5vdGF0aW9uLFxuXHRcdFx0b3V0UGFyYW1ldGVyLFxuXHRcdFx0aW5QYXJhbWV0ZXJzLFxuXHRcdFx0dmFsdWVsaXN0UHJvcGVydHksXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbixcblx0XHRcdG11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCxcblx0XHRcdHJlcXVpcmVkLFxuXHRcdFx0cmVxdWlyZWRQcm9wZXJ0aWVzID0gW10sXG5cdFx0XHRzaG93T3ZlcmxheUluaXRpYWxseSxcblx0XHRcdHJlbmRlckxpbmVDaGFydCxcblx0XHRcdGlzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzLFxuXHRcdFx0aW5pdGlhbENoYXJ0QmluZGluZ0VuYWJsZWRcblx0XHR9ID0gdmlzdWFsRmlsdGVyT2JqZWN0IGFzIFZpc3VhbEZpbHRlcnM7XG5cdFx0dmZYTUwgPSB4bWxgXG5cdFx0XHRcdDx2aXN1YWxGaWx0ZXI6VmlzdWFsRmlsdGVyXG5cdFx0XHRcdCAgICB4bWxuczp2aXN1YWxGaWx0ZXI9IFwic2FwLmZlLm1hY3Jvcy52aXN1YWxmaWx0ZXJzXCJcblx0XHRcdFx0XHRpZD1cIiR7dGhpcy52ZlJ1bnRpbWVJZH1cIlxuXHRcdFx0XHRcdF9jb250ZW50SWQ9XCIke3RoaXMudmZJZH1cIlxuXHRcdFx0XHRcdGNvbnRleHRQYXRoPVwiJHtjb250ZXh0UGF0aH1cIlxuXHRcdFx0XHRcdG1ldGFQYXRoPVwiJHtwcmVzZW50YXRpb25Bbm5vdGF0aW9ufVwiXG5cdFx0XHRcdFx0b3V0UGFyYW1ldGVyPVwiJHtvdXRQYXJhbWV0ZXJ9XCJcblx0XHRcdFx0XHRpblBhcmFtZXRlcnM9XCIke0NvbW1vbkhlbHBlci5zdHJpbmdpZnlDdXN0b21EYXRhKGluUGFyYW1ldGVycyl9XCJcblx0XHRcdFx0XHR2YWx1ZWxpc3RQcm9wZXJ0eT1cIiR7dmFsdWVsaXN0UHJvcGVydHl9XCJcblx0XHRcdFx0XHRzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbj1cIiR7c2VsZWN0aW9uVmFyaWFudEFubm90YXRpb259XCJcblx0XHRcdFx0XHRtdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWQ9XCIke211bHRpcGxlU2VsZWN0aW9uQWxsb3dlZH1cIlxuXHRcdFx0XHRcdHJlcXVpcmVkPVwiJHtyZXF1aXJlZH1cIlxuXHRcdFx0XHRcdHJlcXVpcmVkUHJvcGVydGllcz1cIiR7Q29tbW9uSGVscGVyLnN0cmluZ2lmeUN1c3RvbURhdGEocmVxdWlyZWRQcm9wZXJ0aWVzKX1cIlxuXHRcdFx0XHRcdHNob3dPdmVybGF5SW5pdGlhbGx5PVwiJHtzaG93T3ZlcmxheUluaXRpYWxseX1cIlxuXHRcdFx0XHRcdHJlbmRlckxpbmVDaGFydD1cIiR7cmVuZGVyTGluZUNoYXJ0fVwiXG5cdFx0XHRcdFx0aXNWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXM9XCIke2lzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzfVwiXG5cdFx0XHRcdFx0ZmlsdGVyQmFyRW50aXR5VHlwZT1cIiR7Y29udGV4dFBhdGh9XCJcblx0XHRcdFx0XHRlbmFibGVDaGFydEJpbmRpbmc9XCIke2luaXRpYWxDaGFydEJpbmRpbmdFbmFibGVkfVwiXG5cdFx0XHRcdC8+XG5cdFx0XHRgO1xuXG5cdFx0cmV0dXJuIHZmWE1MO1xuXHR9XG5cblx0YXN5bmMgZ2V0VGVtcGxhdGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRsZXQgeG1sUmV0ID0gYGA7XG5cdFx0aWYgKHRoaXMuaXNGaWx0ZXJhYmxlKSB7XG5cdFx0XHRsZXQgZGlzcGxheTtcblx0XHRcdGNvbnN0IGNvbXBhbmlvblRleHRBdmFpbGFibGUgPSB0aGlzLmRvY3VtZW50UmVmVGV4dCA9PT0gdW5kZWZpbmVkIHx8IG51bGwgPyBmYWxzZSA6IHRydWU7XG5cdFx0XHRjb25zdCBmb3JtYXR0ZWRSZXN1bHQ6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdGZvcm1hdFJlc3VsdChbdGhpcy5kb2N1bWVudFJlZlRleHRdLCBcInNhcC5mZS5jb3JlLmZvcm1hdHRlcnMuU3RhbmRhcmRGb3JtYXR0ZXIjYXNBcnJheVwiKVxuXHRcdFx0KTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IGRhdGFNb2RlbFBhdGhFeHRlcm5hbElkID1cblx0XHRcdFx0XHR0aGlzLnByb3BlcnR5RXh0ZXJuYWxJZCAmJiBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKHRoaXMucHJvcGVydHlFeHRlcm5hbElkLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRcdFx0ZGlzcGxheSA9IGRhdGFNb2RlbFBhdGhFeHRlcm5hbElkXG5cdFx0XHRcdFx0PyBnZXREaXNwbGF5TW9kZShkYXRhTW9kZWxQYXRoRXh0ZXJuYWxJZCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pilcblx0XHRcdFx0XHQ6IGF3YWl0IHRoaXMuZGlzcGxheTtcblx0XHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3IoYEZFIDogRmlsdGVyRmllbGQgQnVpbGRpbmdCbG9jayA6IEVycm9yIGZldGNoaW5nIGRpc3BsYXkgcHJvcGVydHkgZm9yICR7dGhpcy5zb3VyY2VQYXRofSA6ICR7ZXJyfWApO1xuXHRcdFx0fVxuXHRcdFx0eG1sUmV0ID0geG1sYFxuXHRcdFx0XHQ8bWRjOkZpbHRlckZpZWxkXG5cdFx0XHRcdFx0eG1sbnM6bWRjPVwic2FwLnVpLm1kY1wiXG5cdFx0XHRcdFx0eG1sbnM6dGVtcGxhdGU9XCJodHRwOi8vc2NoZW1hcy5zYXAuY29tL3NhcHVpNS9leHRlbnNpb24vc2FwLnVpLmNvcmUudGVtcGxhdGUvMVwiXG5cdFx0XHRcdFx0eG1sbnM6bWFjcm89XCJzYXAuZmUubWFjcm9zXCJcblx0XHRcdFx0XHR4bWxuczpjdXN0b21EYXRhPVwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC51aS5jb3JlLkN1c3RvbURhdGEvMVwiXG5cdFx0XHRcdFx0eG1sbnM6ZmllbGRoZWxwPVwic2FwLnVpLmNvcmUuZmllbGRoZWxwXCJcblx0XHRcdFx0XHRjdXN0b21EYXRhOnNvdXJjZVBhdGg9XCIke3RoaXMuc291cmNlUGF0aH1cIlxuXHRcdFx0XHRcdGlkPVwiJHt0aGlzLmNvbnRyb2xJZH1cIlxuXHRcdFx0XHRcdGRlbGVnYXRlPVwie25hbWU6ICdzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkQmFzZURlbGVnYXRlJywgcGF5bG9hZDp7aXNGaWx0ZXJGaWVsZDp0cnVlfX1cIlxuXHRcdFx0XHRcdHByb3BlcnR5S2V5PVwiJHt0aGlzLnByb3BlcnR5S2V5fVwiXG5cdFx0XHRcdFx0bGFiZWw9XCIke3RoaXMubGFiZWx9XCJcblx0XHRcdFx0XHRkYXRhVHlwZT1cIiR7dGhpcy5kYXRhVHlwZX1cIlxuXHRcdFx0XHRcdGRpc3BsYXk9XCIke2Rpc3BsYXl9XCJcblx0XHRcdFx0XHRtYXhDb25kaXRpb25zPVwiJHt0aGlzLm1heENvbmRpdGlvbnN9XCJcblx0XHRcdFx0XHR2YWx1ZUhlbHA9XCIke3RoaXMudmFsdWVIZWxwUHJvcGVydHl9XCJcblx0XHRcdFx0XHRjb25kaXRpb25zPVwiJHt0aGlzLmNvbmRpdGlvbnNCaW5kaW5nfVwiXG5cdFx0XHRcdFx0ZGF0YVR5cGVDb25zdHJhaW50cz1cIiR7dGhpcy5kYXRhVHlwZUNvbnN0cmFpbnRzfVwiXG5cdFx0XHRcdFx0ZGF0YVR5cGVGb3JtYXRPcHRpb25zPVwiJHt0aGlzLmRhdGFUeXBlRm9ybWF0T3B0aW9uc31cIlxuXHRcdFx0XHRcdHJlcXVpcmVkPVwiJHt0aGlzLnJlcXVpcmVkfVwiXG5cdFx0XHRcdFx0b3BlcmF0b3JzPVwiJHt0aGlzLm9wZXJhdG9yc31cIlxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiJHt0aGlzLnBsYWNlaG9sZGVyfVwiXG5cdFx0XHRcdFx0JHt0aGlzLmF0dHIoXCJ0b29sdGlwXCIsIHRoaXMudG9vbHRpcCl9XG5cdFx0XHRcdFx0JHt0aGlzLmF0dHIoXCJlZGl0TW9kZVwiLCB0aGlzLmVkaXRNb2RlKX1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdCR7XG5cdFx0XHRcdFx0XHRjb21wYW5pb25UZXh0QXZhaWxhYmxlXG5cdFx0XHRcdFx0XHRcdD8geG1sYFxuXHRcdFx0XHRcdFx0PG1kYzpjdXN0b21EYXRhPlxuXHRcdFx0XHRcdFx0XHQ8ZmllbGRoZWxwOkZpZWxkSGVscEN1c3RvbURhdGFcblx0XHRcdFx0XHRcdFx0XHQke3RoaXMuYXR0cihcInZhbHVlXCIsIGZvcm1hdHRlZFJlc3VsdCl9XG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHQ8L21kYzpjdXN0b21EYXRhPlxuXHRcdFx0XHRcdGBcblx0XHRcdFx0XHRcdFx0OiBcIlwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCR7dGhpcy52ZkVuYWJsZWQgPyB0aGlzLmdldFZpc3VhbEZpbHRlckNvbnRlbnQoKSA6IFwiXCJ9XG5cdFx0XHRcdDwvbWRjOkZpbHRlckZpZWxkPlxuXHRcdFx0YDtcblx0XHR9XG5cblx0XHRy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
@@ -151,6 +151,11 @@ export default class FilterFieldBlock extends BuildingBlockTemplatingBase {
151
151
  */
152
152
  documentRefText?: string;
153
153
 
154
+ /**
155
+ * Tooltip content from @Common.QuickInfo annotation
156
+ */
157
+ tooltip?: string;
158
+
154
159
  /**
155
160
  * Label for filterfield.
156
161
  */
@@ -261,6 +266,8 @@ export default class FilterFieldBlock extends BuildingBlockTemplatingBase {
261
266
  dataModelPath.targetObject?.annotations.Common as PropertyAnnotations_Common_extended
262
267
  )?.DocumentationRef?.toString();
263
268
 
269
+ this.tooltip = propertyConverted?.annotations?.Common?.QuickInfo?.toString();
270
+
264
271
  this.dataType = getDataType(propertyConvertedExternalId || propertyConverted); // data type for LR-FilterBar condition of the value help
265
272
  const labelTerm = propertyConverted?.annotations?.Common?.Label;
266
273
  const labelExpression = labelTerm?.toString() ?? constant(propertyName);
@@ -345,7 +352,8 @@ export default class FilterFieldBlock extends BuildingBlockTemplatingBase {
345
352
  requiredProperties = [],
346
353
  showOverlayInitially,
347
354
  renderLineChart,
348
- isValueListWithFixedValues
355
+ isValueListWithFixedValues,
356
+ initialChartBindingEnabled
349
357
  } = visualFilterObject as VisualFilters;
350
358
  vfXML = xml`
351
359
  <visualFilter:VisualFilter
@@ -365,6 +373,7 @@ export default class FilterFieldBlock extends BuildingBlockTemplatingBase {
365
373
  renderLineChart="${renderLineChart}"
366
374
  isValueListWithFixedValues="${isValueListWithFixedValues}"
367
375
  filterBarEntityType="${contextPath}"
376
+ enableChartBinding="${initialChartBindingEnabled}"
368
377
  />
369
378
  `;
370
379
 
@@ -410,6 +419,7 @@ export default class FilterFieldBlock extends BuildingBlockTemplatingBase {
410
419
  required="${this.required}"
411
420
  operators="${this.operators}"
412
421
  placeholder="${this.placeholder}"
422
+ ${this.attr("tooltip", this.tooltip)}
413
423
  ${this.attr("editMode", this.editMode)}
414
424
  >
415
425
  ${
@@ -0,0 +1,25 @@
1
+ <core:FragmentDefinition
2
+ xmlns:template="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1"
3
+ xmlns="sap.m"
4
+ xmlns:core="sap.ui.core"
5
+ xmlns:macro="sap.fe.macros"
6
+ xmlns:macroField="sap.fe.macros.field"
7
+ xmlns:internalMacro="sap.fe.macros.internal"
8
+ template:require="{
9
+ ID: 'sap/fe/core/helpers/StableIdHelper',
10
+ COMMON: 'sap/fe/macros/CommonHelper',
11
+ UI: 'sap/fe/core/templating/UIFormatters'
12
+ }"
13
+ >
14
+ <macro:Field
15
+ idPrefix="{= ${this>id} ? ID.generate([${this>id}, 'CheckBoxGroup', ${annotationDataField>@@UI.getDataModelObjectPath},${element>Value/$Path}]) : '' }"
16
+ contextPath="{entitySet>@@COMMON.getMetaPath}"
17
+ metaPath="{element>@@COMMON.getMetaPath}"
18
+ onChange="{this>onChange}"
19
+ ariaLabelledBy="{= ${this>id} ? ID.generate([${this>id}, 'FieldGroupFormElementLabel', ${annotationDataField>@@UI.getDataModelObjectPath}]) : '' }"
20
+ >
21
+ <macro:formatOptions>
22
+ <macroField:FieldFormatOptions isFieldGroupItem="true" textAlignMode="Form" />
23
+ </macro:formatOptions>
24
+ </macro:Field>
25
+ </core:FragmentDefinition>