@sapui5/sap.fe.macros 1.141.2 → 1.143.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 (257) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Breadcrumbs.js +4 -10
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
  5. package/src/sap/fe/macros/Chart.js +34 -23
  6. package/src/sap/fe/macros/Chart.tsx +25 -11
  7. package/src/sap/fe/macros/CollaborativeDraftHandler.js +47 -36
  8. package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +50 -31
  9. package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
  10. package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
  11. package/src/sap/fe/macros/CommonHelper.js +14 -24
  12. package/src/sap/fe/macros/CommonHelper.ts +18 -25
  13. package/src/sap/fe/macros/ConditionalSwitch.js +1 -2
  14. package/src/sap/fe/macros/ConditionalSwitch.tsx +0 -1
  15. package/src/sap/fe/macros/ConditionalSwitchProperty.js +1 -3
  16. package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +0 -2
  17. package/src/sap/fe/macros/Field.js +34 -17
  18. package/src/sap/fe/macros/Field.ts +64 -32
  19. package/src/sap/fe/macros/FooterContent.js +7 -3
  20. package/src/sap/fe/macros/FooterContent.tsx +8 -13
  21. package/src/sap/fe/macros/KPITag.js +6 -6
  22. package/src/sap/fe/macros/KPITag.tsx +8 -6
  23. package/src/sap/fe/macros/MacroAPI.js +4 -3
  24. package/src/sap/fe/macros/MacroAPI.ts +3 -3
  25. package/src/sap/fe/macros/MessageButton.js +4 -3
  26. package/src/sap/fe/macros/MessageButton.tsx +7 -3
  27. package/src/sap/fe/macros/MicroChart.js +12 -7
  28. package/src/sap/fe/macros/MicroChart.tsx +9 -3
  29. package/src/sap/fe/macros/MultiValueField.js +22 -36
  30. package/src/sap/fe/macros/MultiValueField.tsx +34 -66
  31. package/src/sap/fe/macros/RichTextEditor.js +3 -4
  32. package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
  33. package/src/sap/fe/macros/Share.js +7 -7
  34. package/src/sap/fe/macros/Share.tsx +9 -6
  35. package/src/sap/fe/macros/Status.js +39 -11
  36. package/src/sap/fe/macros/Status.tsx +25 -5
  37. package/src/sap/fe/macros/ValueHelp.js +5 -2
  38. package/src/sap/fe/macros/ValueHelp.tsx +5 -0
  39. package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
  40. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -0
  41. package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
  42. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
  43. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
  44. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
  45. package/src/sap/fe/macros/ai/SummarizationButton.js +6 -4
  46. package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
  47. package/src/sap/fe/macros/chart/Action.js +25 -2
  48. package/src/sap/fe/macros/chart/Action.ts +13 -0
  49. package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
  50. package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
  51. package/src/sap/fe/macros/chart/ChartDelegate.js +29 -8
  52. package/src/sap/fe/macros/chart/ChartDelegate.ts +46 -14
  53. package/src/sap/fe/macros/chart/MdcChartTemplate.js +58 -12
  54. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +75 -13
  55. package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
  56. package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
  57. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +7 -7
  58. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +3 -2
  59. package/src/sap/fe/macros/controls/FileWrapper.js +11 -5
  60. package/src/sap/fe/macros/controls/FileWrapper.ts +10 -4
  61. package/src/sap/fe/macros/controls/FilterBar.js +39 -3
  62. package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
  63. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +3 -1
  64. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -0
  65. package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
  66. package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
  67. package/src/sap/fe/macros/coreUI/CreateDialog.js +3 -3
  68. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +2 -2
  69. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +40 -12
  70. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -9
  71. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
  72. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
  73. package/src/sap/fe/macros/field/FieldFormatOptions.js +4 -4
  74. package/src/sap/fe/macros/field/FieldFormatOptions.ts +2 -2
  75. package/src/sap/fe/macros/field/FieldHelper.js +4 -3
  76. package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
  77. package/src/sap/fe/macros/field/FieldRuntime.js +44 -9
  78. package/src/sap/fe/macros/field/FieldRuntime.ts +72 -8
  79. package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
  80. package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
  81. package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
  82. package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
  83. package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
  84. package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
  85. package/src/sap/fe/macros/filter/FilterUtils.js +130 -40
  86. package/src/sap/fe/macros/filter/FilterUtils.ts +167 -45
  87. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
  88. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
  89. package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
  90. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
  91. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +15 -9
  92. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +36 -17
  93. package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +21 -10
  94. package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +81 -63
  95. package/src/sap/fe/macros/filterBar/UOMValidationDelegate.js +376 -0
  96. package/src/sap/fe/macros/filterBar/UOMValidationDelegate.ts +463 -0
  97. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
  98. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
  99. package/src/sap/fe/macros/form/Form.block.js +27 -2
  100. package/src/sap/fe/macros/form/Form.block.ts +31 -11
  101. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
  102. package/src/sap/fe/macros/form/FormContainer.block.js +110 -63
  103. package/src/sap/fe/macros/form/FormContainer.block.ts +121 -64
  104. package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
  105. package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
  106. package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
  107. package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
  108. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
  109. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
  110. package/src/sap/fe/macros/insights/InsightsService.js +3 -2
  111. package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
  112. package/src/sap/fe/macros/internal/DataPoint.js +7 -8
  113. package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
  114. package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
  115. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
  116. package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
  117. package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
  118. package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
  119. package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
  120. package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
  121. package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
  122. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
  123. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
  124. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
  125. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
  126. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
  127. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
  128. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
  129. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
  130. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
  131. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +2 -2
  132. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +2 -1
  133. package/src/sap/fe/macros/library.js +5 -6
  134. package/src/sap/fe/macros/{library.ts → library.tsx} +3 -1
  135. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
  136. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
  137. package/src/sap/fe/macros/messagebundle.properties +13 -5
  138. package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
  139. package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
  140. package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
  141. package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
  142. package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
  143. package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
  144. package/src/sap/fe/macros/messagebundle_da.properties +12 -3
  145. package/src/sap/fe/macros/messagebundle_de.properties +16 -7
  146. package/src/sap/fe/macros/messagebundle_el.properties +13 -4
  147. package/src/sap/fe/macros/messagebundle_en.properties +13 -4
  148. package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
  149. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +13 -4
  150. package/src/sap/fe/macros/messagebundle_es.properties +12 -3
  151. package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
  152. package/src/sap/fe/macros/messagebundle_et.properties +12 -3
  153. package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
  154. package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
  155. package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
  156. package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
  157. package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
  158. package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
  159. package/src/sap/fe/macros/messagebundle_id.properties +18 -9
  160. package/src/sap/fe/macros/messagebundle_it.properties +12 -3
  161. package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
  162. package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
  163. package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
  164. package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
  165. package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
  166. package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
  167. package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
  168. package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
  169. package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
  170. package/src/sap/fe/macros/messagebundle_no.properties +12 -3
  171. package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
  172. package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
  173. package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
  174. package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
  175. package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
  176. package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
  177. package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
  178. package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
  179. package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
  180. package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
  181. package/src/sap/fe/macros/messagebundle_th.properties +11 -2
  182. package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
  183. package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
  184. package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
  185. package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
  186. package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
  187. package/src/sap/fe/macros/messages/MessageButton.js +21 -12
  188. package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
  189. package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +7 -3
  190. package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +8 -2
  191. package/src/sap/fe/macros/quickView/QuickView.js +5 -4
  192. package/src/sap/fe/macros/quickView/QuickView.tsx +10 -3
  193. package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
  194. package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
  195. package/src/sap/fe/macros/table/Action.js +21 -5
  196. package/src/sap/fe/macros/table/Action.ts +14 -4
  197. package/src/sap/fe/macros/table/ActionGroup.js +15 -2
  198. package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
  199. package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
  200. package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
  201. package/src/sap/fe/macros/table/ActionOverride.js +14 -2
  202. package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
  203. package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
  204. package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
  205. package/src/sap/fe/macros/table/Column.js +3 -2
  206. package/src/sap/fe/macros/table/Column.ts +1 -1
  207. package/src/sap/fe/macros/table/MdcTableTemplate.js +96 -18
  208. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +136 -17
  209. package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
  210. package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
  211. package/src/sap/fe/macros/table/Table.block.js +74 -30
  212. package/src/sap/fe/macros/table/Table.block.tsx +77 -14
  213. package/src/sap/fe/macros/table/TableAPI.js +175 -132
  214. package/src/sap/fe/macros/table/TableAPI.ts +67 -30
  215. package/src/sap/fe/macros/table/TableDefinition.js +20 -3
  216. package/src/sap/fe/macros/table/TableDefinition.ts +18 -2
  217. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -3
  218. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +12 -9
  219. package/src/sap/fe/macros/table/TableHelper.js +5 -2
  220. package/src/sap/fe/macros/table/TableHelper.ts +5 -2
  221. package/src/sap/fe/macros/table/TableRuntime.js +25 -13
  222. package/src/sap/fe/macros/table/TableRuntime.ts +31 -17
  223. package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
  224. package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
  225. package/src/sap/fe/macros/table/Utils.js +9 -3
  226. package/src/sap/fe/macros/table/Utils.ts +14 -8
  227. package/src/sap/fe/macros/table/delegates/TableDelegate.js +72 -29
  228. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +114 -123
  229. package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
  230. package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
  231. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +15 -6
  232. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +14 -5
  233. package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
  234. package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
  235. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -3
  236. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +3 -2
  237. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +42 -14
  238. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +49 -19
  239. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
  240. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
  241. package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
  242. package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
  243. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +3 -4
  244. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +2 -3
  245. package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.js +5 -4
  246. package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.ts +6 -3
  247. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +17 -10
  248. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +24 -9
  249. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
  250. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
  251. package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
  252. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
  253. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
  254. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
  255. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
  256. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
  257. package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
@@ -5,7 +5,7 @@
5
5
  sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/fe/core/CommonUtils", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers/StableIdHelper", "sap/fe/macros/chart/Action", "sap/fe/macros/chart/ChartRuntime", "sap/fe/macros/chart/ChartUtils", "sap/fe/macros/filter/FilterUtils", "sap/fe/navigation/PresentationVariant", "sap/ui/core/library", "sap/ui/mdc/p13n/StateUtil", "sap/ui/model/Filter", "./MacroAPI", "./chart/MdcChartTemplate", "./chart/adapter/ChartPvToStateUtils", "./insights/AnalyticalInsightsHelper", "./insights/CommonInsightsHelper", "./insights/InsightsService", "./mdc/adapter/StateHelper"], function (Log, merge, ClassSupport, HookSupport, CommonUtils, MetaModelConverter, StableIdHelper, Action, ChartRuntime, ChartUtils, FilterUtils, PresentationVariant, library, StateUtil, Filter, MacroAPI, MdcChartTemplate, PresentationVariantToStateUtilsPV, AnalyticalInsightsHelper, CommonInsightsHelper, InsightsService, StateHelper) {
6
6
  "use strict";
7
7
 
8
- var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22;
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23;
9
9
  function __ui5_require_async(path) {
10
10
  return new Promise((resolve, reject) => {
11
11
  sap.ui.require([path], module => {
@@ -109,7 +109,10 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/ClassSupport"
109
109
  altTypes: ["sap.fe.macros.chart.ActionGroup"],
110
110
  multiple: true,
111
111
  defaultClass: Action
112
- }), _dec19 = event(), _dec20 = event(), _dec21 = event(), _dec22 = event(), _dec23 = event(), _dec24 = xmlEventHandler(), _dec25 = xmlEventHandler(), _dec26 = controllerExtensionHandler("collaborationManager", "collectAvailableCards"), _dec(_class = (_class2 = /*#__PURE__*/function (_MacroAPI) {
112
+ }), _dec19 = aggregation({
113
+ type: "sap.fe.macros.chart.OverflowGroup",
114
+ multiple: true
115
+ }), _dec20 = event(), _dec21 = event(), _dec22 = event(), _dec23 = event(), _dec24 = event(), _dec25 = xmlEventHandler(), _dec26 = xmlEventHandler(), _dec27 = controllerExtensionHandler("collaborationManager", "collectAvailableCards"), _dec(_class = (_class2 = /*#__PURE__*/function (_MacroAPI) {
113
116
  function Chart(settings, others) {
114
117
  var _this;
115
118
  if (settings?._applyIdToContent) {
@@ -212,31 +215,36 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/ClassSupport"
212
215
  * @public
213
216
  */
214
217
  _initializerDefineProperty(_this, "actions", _descriptor17, _this);
218
+ /**
219
+ * Aggregate overflowGroups of the chart.
220
+ * @public
221
+ */
222
+ _initializerDefineProperty(_this, "actionOverflowGroups", _descriptor18, _this);
215
223
  /**
216
224
  * An event triggered when chart selections are changed. The event contains information about the data selected/deselected and the Boolean flag that indicates whether data is selected or deselected.
217
225
  * @public
218
226
  */
219
- _initializerDefineProperty(_this, "selectionChange", _descriptor18, _this);
227
+ _initializerDefineProperty(_this, "selectionChange", _descriptor19, _this);
220
228
  /**
221
229
  * An event triggered when the chart requests data.
222
230
  * @private
223
231
  */
224
- _initializerDefineProperty(_this, "internalDataRequested", _descriptor19, _this);
232
+ _initializerDefineProperty(_this, "internalDataRequested", _descriptor20, _this);
225
233
  /**
226
234
  * Event triggered when chart's variant is selected.
227
235
  * @private
228
236
  */
229
- _initializerDefineProperty(_this, "variantSelected", _descriptor20, _this);
237
+ _initializerDefineProperty(_this, "variantSelected", _descriptor21, _this);
230
238
  /**
231
239
  * Event triggered when chart's variant is saved.
232
240
  * @private
233
241
  */
234
- _initializerDefineProperty(_this, "variantSaved", _descriptor21, _this);
242
+ _initializerDefineProperty(_this, "variantSaved", _descriptor22, _this);
235
243
  /**
236
244
  * Event triggered when chart's segmented button i.e., mode between table, chart and chart with table view is selected
237
245
  * @private
238
246
  */
239
- _initializerDefineProperty(_this, "segmentedButtonPressed", _descriptor22, _this);
247
+ _initializerDefineProperty(_this, "segmentedButtonPressed", _descriptor23, _this);
240
248
  return _this;
241
249
  }
242
250
 
@@ -706,13 +714,13 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/ClassSupport"
706
714
  * @returns A promise that resolves when the variant has been applied.
707
715
  */;
708
716
  _proto.handleVariantIdPassedViaURLParams = async function handleVariantIdPassedViaURLParams() {
709
- const urlParams = this.getStartupParameters();
710
- const chartVariantId = urlParams?.["sap-ui-fe-chart-variant-id"]?.[0];
717
+ const urlParams = await this.getStartupParameters();
718
+ const chartVariantId = urlParams["sap-ui-fe-chart-variant-id"]?.[0];
711
719
  const view = CommonUtils.getTargetView(this);
712
720
  const viewData = view.getViewData();
713
721
  const vmType = viewData.variantManagement;
714
722
  const vm = this.getContent()?.getVariant();
715
- if (vm && chartVariantId && vmType === "Control") {
723
+ if (vm && chartVariantId && typeof chartVariantId === "string" && vmType === "Control") {
716
724
  const variantToApply = vm.getVariants().find(variant => variant.getKey() === chartVariantId);
717
725
  const ControlVariantApplyAPI = (await __ui5_require_async("sap/ui/fl/apply/api/ControlVariantApplyAPI")).default;
718
726
  return ControlVariantApplyAPI.activateVariant({
@@ -725,14 +733,12 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/ClassSupport"
725
733
  /**
726
734
  * Retrieves the startup parameters from the application component data.
727
735
  * These parameters contain URL query parameters that were passed when the application was started.
728
- * @returns The startup parameters as a key-value mapping where each key can have multiple values,
729
- * or undefined if no parameters are available or if the component chain is not accessible.
736
+ * @returns The startup parameters.
730
737
  */;
731
- _proto.getStartupParameters = function getStartupParameters() {
738
+ _proto.getStartupParameters = async function getStartupParameters() {
732
739
  const controller = this.getPageController();
733
- const appComponent = controller?.getAppComponent();
734
- const componentData = appComponent?.getComponentData();
735
- return componentData?.startupParameters;
740
+ const appComponent = controller.getAppComponent();
741
+ return appComponent.getStartupParameters();
736
742
  }
737
743
 
738
744
  /**
@@ -951,33 +957,38 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/ClassSupport"
951
957
  enumerable: true,
952
958
  writable: true,
953
959
  initializer: null
954
- }), _descriptor18 = _applyDecoratedDescriptor(_class2.prototype, "selectionChange", [_dec19], {
960
+ }), _descriptor18 = _applyDecoratedDescriptor(_class2.prototype, "actionOverflowGroups", [_dec19], {
961
+ configurable: true,
962
+ enumerable: true,
963
+ writable: true,
964
+ initializer: null
965
+ }), _descriptor19 = _applyDecoratedDescriptor(_class2.prototype, "selectionChange", [_dec20], {
955
966
  configurable: true,
956
967
  enumerable: true,
957
968
  writable: true,
958
969
  initializer: null
959
- }), _descriptor19 = _applyDecoratedDescriptor(_class2.prototype, "internalDataRequested", [_dec20], {
970
+ }), _descriptor20 = _applyDecoratedDescriptor(_class2.prototype, "internalDataRequested", [_dec21], {
960
971
  configurable: true,
961
972
  enumerable: true,
962
973
  writable: true,
963
974
  initializer: null
964
- }), _descriptor20 = _applyDecoratedDescriptor(_class2.prototype, "variantSelected", [_dec21], {
975
+ }), _descriptor21 = _applyDecoratedDescriptor(_class2.prototype, "variantSelected", [_dec22], {
965
976
  configurable: true,
966
977
  enumerable: true,
967
978
  writable: true,
968
979
  initializer: null
969
- }), _descriptor21 = _applyDecoratedDescriptor(_class2.prototype, "variantSaved", [_dec22], {
980
+ }), _descriptor22 = _applyDecoratedDescriptor(_class2.prototype, "variantSaved", [_dec23], {
970
981
  configurable: true,
971
982
  enumerable: true,
972
983
  writable: true,
973
984
  initializer: null
974
- }), _descriptor22 = _applyDecoratedDescriptor(_class2.prototype, "segmentedButtonPressed", [_dec23], {
985
+ }), _descriptor23 = _applyDecoratedDescriptor(_class2.prototype, "segmentedButtonPressed", [_dec24], {
975
986
  configurable: true,
976
987
  enumerable: true,
977
988
  writable: true,
978
989
  initializer: null
979
- }), _applyDecoratedDescriptor(_class2.prototype, "handleSelectionChange", [_dec24], Object.getOwnPropertyDescriptor(_class2.prototype, "handleSelectionChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalDataRequested", [_dec25], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalDataRequested"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "collectAvailableCards", [_dec26], Object.getOwnPropertyDescriptor(_class2.prototype, "collectAvailableCards"), _class2.prototype), _class2)) || _class);
990
+ }), _applyDecoratedDescriptor(_class2.prototype, "handleSelectionChange", [_dec25], Object.getOwnPropertyDescriptor(_class2.prototype, "handleSelectionChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalDataRequested", [_dec26], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalDataRequested"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "collectAvailableCards", [_dec27], Object.getOwnPropertyDescriptor(_class2.prototype, "collectAvailableCards"), _class2.prototype), _class2)) || _class);
980
991
  _exports = Chart;
981
992
  return _exports;
982
993
  }, false);
983
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGFydCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJpbXBsZW1lbnRJbnRlcmZhY2UiLCJfZGVjMyIsIl9kZWM0IiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzUiLCJyZXF1aXJlZCIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25zIiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiZGVmYXVsdFZhbHVlIiwiX2RlYzkiLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzEwIiwiX2RlYzExIiwiX2RlYzEyIiwiX2RlYzEzIiwiX2RlYzE0IiwiX2RlYzE1IiwiX2RlYzE2IiwiYXNzb2NpYXRpb24iLCJfZGVjMTciLCJhZ2dyZWdhdGlvbiIsIl9kZWMxOCIsImFsdFR5cGVzIiwibXVsdGlwbGUiLCJkZWZhdWx0Q2xhc3MiLCJBY3Rpb24iLCJfZGVjMTkiLCJldmVudCIsIl9kZWMyMCIsIl9kZWMyMSIsIl9kZWMyMiIsIl9kZWMyMyIsIl9kZWMyNCIsInhtbEV2ZW50SGFuZGxlciIsIl9kZWMyNSIsIl9kZWMyNiIsImNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9NYWNyb0FQSSIsInNldHRpbmdzIiwib3RoZXJzIiwiX3RoaXMiLCJfYXBwbHlJZFRvQ29udGVudCIsImlkIiwiZ2VuZXJhdGUiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwicHJldkRyaWxsU3RhY2siLCJpbml0aWFsQ29udHJvbFN0YXRlIiwiY2hhcnRBY3Rpb25zIiwiX2NvbW1hbmRBY3Rpb25zIiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9kZXNjcmlwdG9yMTkiLCJfZGVzY3JpcHRvcjIwIiwiX2Rlc2NyaXB0b3IyMSIsIl9kZXNjcmlwdG9yMjIiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0U2VjdGlvbkNvbnRlbnRSb2xlIiwic2VuZERhdGFUb0NvbnN1bWVyIiwiY29uc3VtZXJEYXRhIiwiY29udGVudCIsInNldEhlYWRlciIsInRpdGxlIiwic2V0SGVhZGVyU3R5bGUiLCJzZXRIZWFkZXJMZXZlbCIsInRpdGxlTGV2ZWwiLCJnZXRTZWxlY3RlZENvbnRleHRzIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsImlzQSIsInR5cGVOYW1lIiwib2xkVmFsaWRUeXBlIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5jbHVkZXMiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiY3JlYXRlQ29udGVudCIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJhZnRlclJlbmRlcmluZ0V2ZW50IiwidmlldyIsImdldFBhZ2VDb250cm9sbGVyIiwiZ2V0VmlldyIsImludGVybmFsTW9kZWxDb250ZXh0IiwiY2hhcnQiLCJnZXRDb250ZW50Iiwic2hvd01lc3NhZ2VTdHJpcCIsInNDaGFydEVudGl0eVBhdGgiLCJkYXRhIiwic0NhY2hlS2V5Iiwib0JpbmRpbmdDb250ZXh0IiwiZ2V0T2JqZWN0Iiwic2V0UHJvcGVydHkiLCJhdHRhY2hTdGF0ZUNoYW5nZUhhbmRsZXIiLCJTdGF0ZVV0aWwiLCJkZXRhY2hTdGF0ZUNoYW5nZSIsInN0YXRlQ2hhbmdlSGFuZGxlciIsImF0dGFjaFN0YXRlQ2hhbmdlIiwib0V2ZW50IiwiY29udHJvbCIsImdldFBhcmFtZXRlciIsImNoYXJ0QmxvY2siLCJnZXRQYXJlbnQiLCJoYW5kbGVTdGF0ZUNoYW5nZSIsInJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzIiwib0ZpbHRlckNvbnRyb2wiLCJvQ2hhcnQiLCJGaWx0ZXJVdGlscyIsImdldE5vdEFwcGxpY2FibGVGaWx0ZXJzIiwiaGFuZGxlU2VsZWN0aW9uQ2hhbmdlIiwiYURhdGEiLCJiU2VsZWN0ZWQiLCJDaGFydFJ1bnRpbWUiLCJmblVwZGF0ZUNoYXJ0IiwiZmlyZUV2ZW50IiwibWVyZ2UiLCJzZWxlY3RlZCIsIm9uSW50ZXJuYWxEYXRhUmVxdWVzdGVkIiwiY29sbGVjdEF2YWlsYWJsZUNhcmRzIiwiY2FyZHMiLCJhY3Rpb25Ub29sYmFySXRlbXMiLCJnZXRBY3Rpb25zIiwiaGFzSW5zaWdodEFjdGlvbkVuYWJsZWQiLCJnZXRGaWx0ZXIiLCJjYXJkIiwiZ2V0Q2FyZE1hbmlmZXN0Q2hhcnQiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwicHVzaCIsImdldENoYXJ0Q29udHJvbCIsImdldEhlYWRlciIsImNhbGxiYWNrIiwib25BZGRDYXJkVG9Db2xsYWJvcmF0aW9uTWFuYWdlckNhbGxiYWNrIiwiYmluZCIsImhhc1NlbGVjdGlvbnMiLCJtZGNDaGFydCIsImdldENvbnRyb2xEZWxlZ2F0ZSIsImdldElubmVyQ2hhcnQiLCJhRGltZW5zaW9ucyIsIkNoYXJ0VXRpbHMiLCJnZXREaW1lbnNpb25zRnJvbURyaWxsU3RhY2siLCJiSXNEcmlsbERvd24iLCJiSXNEcmlsbFVwIiwiYk5vQ2hhbmdlIiwidG9TdHJpbmciLCJhRmlsdGVycyIsImdldENoYXJ0U2VsZWN0aW9ucyIsImVyciIsIkxvZyIsImVycm9yIiwib25BZGRDYXJkVG9JbnNpZ2h0c1ByZXNzZWQiLCJpbnNpZ2h0c1BhcmFtcyIsImNyZWF0ZUNoYXJ0Q2FyZFBhcmFtcyIsInNob3dJbnNpZ2h0c0NhcmRQcmV2aWV3IiwiZSIsInNob3dHZW5lcmljRXJyb3JNZXNzYWdlIiwiZ2V0Q2FyZE1hbmlmZXN0Iiwic2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FyZFByZXZpZXciLCJjb2xsYWJvcmF0aW9uTWFuYWdlciIsImdldFNlcnZpY2UiLCJjaGFydEZpbHRlckluZm8iLCJnZXRBbGxGaWx0ZXJJbmZvIiwiZmlsdGVycyIsImZvckVhY2giLCJmaWx0ZXIiLCJnZXRQYXRoIiwic1BhdGgiLCJnZXRDaGFydFByb3BlcnRpZXNXaXRob3V0UHJlZml4ZXMiLCJGaWx0ZXIiLCJhbmQiLCJ1bmRlZmluZWQiLCJnZXRQcm9wZXJ0eURhdGFNb2RlbCIsInByb3BlcnR5TmFtZSIsIm1ldGFQYXRoIiwibWV0YU1vZGVsIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJkaW1lbnNpb25Db250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJjaGFydFByb3BlcnR5IiwiZ2V0SW50ZXJuYWxDaGFydE5hbWVGcm9tUHJvcGVydHlOYW1lQW5kS2luZCIsIm5hbWUiLCJraW5kIiwicmVwbGFjZSIsIl9jb252ZXJ0U3RhdGVVdGlsVG9QcmVzZW50YXRpb25WYXJpYW50IiwiY2hhcnRTdGF0ZSIsInNvcnRPcmRlciIsInNvcnRlcnMiLCJtYXAiLCJzb3J0ZXIiLCJQcm9wZXJ0eSIsIkRlc2NlbmRpbmciLCJkZXNjZW5kaW5nIiwic3VwcGxlbWVudGFyeUNvbmZpZyIsInByb3BlcnRpZXMiLCJjaGFydFR5cGUiLCJjaGFydFR5cGVJblJlcXVpcmVkRm9ybWF0IiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsImRpbWVuc2lvbnMiLCJtZWFzdXJlcyIsImRpbWVuc2lvbkF0dHJpYnV0ZXMiLCJtZWFzdXJlQXR0cmlidXRlcyIsIml0ZW1zIiwiaXRlbSIsInJvbGUiLCJzdWJzdHJpbmciLCJEaW1lbnNpb24iLCJSb2xlIiwiTWVhc3VyZSIsImNoYXJ0Vml6IiwiQ29udGVudCIsIkNoYXJ0VHlwZSIsIkRpbWVuc2lvbkF0dHJpYnV0ZXMiLCJEaW1lbnNpb25zIiwiTWVhc3VyZUF0dHJpYnV0ZXMiLCJNZWFzdXJlcyIsIlR5cGUiLCJjaGFydFBWIiwiUHJlc2VudGF0aW9uVmFyaWFudCIsInNldENoYXJ0VmlzdWFsaXphdGlvbiIsInNldFByb3BlcnRpZXMiLCJTb3J0T3JkZXIiLCJnZXRQcmVzZW50YXRpb25WYXJpYW50IiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwiZ2V0SWQiLCJtZXNzYWdlIiwiRXJyb3IiLCJTdHJpbmciLCJzZXRQcmVzZW50YXRpb25WYXJpYW50IiwicHJlc2VudGF0aW9uVmFyaWFudCIsImV4aXN0aW5nUHJlc2VudGF0aW9uVmFyaWFudCIsInByb3BlcnRpZXNJbmZvIiwiZmV0Y2hQcm9wZXJ0aWVzIiwic3RhdGVVdGlsUHYiLCJQcmVzZW50YXRpb25WYXJpYW50VG9TdGF0ZVV0aWxzUFYiLCJjb252ZXJ0UHZUb1N0YXRlVXRpbFB2IiwiYXBwbHlFeHRlcm5hbFN0YXRlIiwiZ2V0Q3VycmVudFZhcmlhbnRLZXkiLCJnZXRWYXJpYW50Iiwic2V0Q3VycmVudFZhcmlhbnRLZXkiLCJrZXkiLCJ2YXJpYW50TWFuYWdlbWVudCIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJTdGF0ZUhlbHBlciIsInNldFNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50IiwicHJlZmlsbERlc2NyaXB0aW9ucyIsImFyZ3VtZW50cyIsInNldFNlbGVjdGlvblZhcmlhbnRUb01kY0NvbnRyb2wiLCJnZXRDb250cm9sU3RhdGUiLCJjb250cm9sU3RhdGUiLCJmdWxsU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJzZXRJbml0aWFsU3RhdGUiLCJyZXRyaWV2ZVN0YXRlIiwiaW5uZXJDaGFydCIsInZhcmlhbnRUb1JldHJpZXZlIiwidmFyaWFudE1hbmFnZW1lbnRDb250cm9sIiwidmFyaWFudElkIiwiYXBwbHlMZWdhY3lTdGF0ZSIsIl9uYXZQYXJhbWV0ZXJzIiwic2hvdWxkQXBwbHlEaWZmU3RhdGUiLCJ2bSIsInZtU3RhdGUiLCJhcHBseVN0YXRlIiwiaGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zIiwidXJsUGFyYW1zIiwiZ2V0U3RhcnR1cFBhcmFtZXRlcnMiLCJjaGFydFZhcmlhbnRJZCIsIkNvbW1vblV0aWxzIiwiZ2V0VGFyZ2V0VmlldyIsInZpZXdEYXRhIiwiZ2V0Vmlld0RhdGEiLCJ2bVR5cGUiLCJ2YXJpYW50VG9BcHBseSIsImdldFZhcmlhbnRzIiwiZmluZCIsInZhcmlhbnQiLCJnZXRLZXkiLCJDb250cm9sVmFyaWFudEFwcGx5QVBJIiwiX191aTVfcmVxdWlyZV9hc3luYyIsImRlZmF1bHQiLCJhY3RpdmF0ZVZhcmlhbnQiLCJlbGVtZW50IiwidmFyaWFudFJlZmVyZW5jZSIsImNvbnRyb2xsZXIiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJjb21wb25lbnREYXRhIiwiZ2V0Q29tcG9uZW50RGF0YSIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwiYXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVycyIsIm5hdmlnYXRpb25QYXJhbWV0ZXIiLCJhcHBseVZhcmlhbnRGcm9tVVJMUGFyYW1zIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjdXJyZW50VmFyaWFudCIsIm92TSIsImFWYXJpYW50cyIsInNWYXJpYW50UmVmZXJlbmNlIiwic29tZSIsIm9WYXJpYW50IiwiZ2V0U3RhbmRhcmRWYXJpYW50S2V5IiwiaW5uZXJDaGFydFN0YXRlIiwiZmluYWxTdGF0ZSIsImRpZmZTdGF0ZSIsImdldEV4dGVuc2lvbkFQSSIsInVwZGF0ZUFwcFN0YXRlIiwiX2NyZWF0ZUNvbnRlbnQiLCJvd25lciIsIl9nZXRPd25lciIsInNldEZpbHRlciIsImRlc3Ryb3kiLCJ2YWx1ZSIsInN1cHByZXNzSW52YWxpZGF0ZSIsIl9hcHBseWluZ1NldHRpbmdzIiwiZ2V0UHJvcGVydGllcyIsInJlbW92ZUFnZ3JlZ2F0aW9uIiwicmVtb3ZlZCIsImdldEFnZ3JlZ2F0aW9ucyIsImFkZEFnZ3JlZ2F0aW9uIiwiaW5zZXJ0QWdncmVnYXRpb24iLCJpbmRleCIsImNvbnRleHRQYXRoIiwiX3Jlc29sdmVkQ29udGV4dFBhdGgiLCJlbmRzV2l0aCIsImdldE1kY0NoYXJ0VGVtcGxhdGUiLCJnZXRSb290Q29udHJvbGxlciIsImdldERpYWdub3N0aWNzIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJNYWNyb0FQSSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciIsIlRpdGxlTGV2ZWwiLCJBdXRvIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDaGFydC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBDaGFydCBhcyBWb2NhYnVsYXJ5Q2hhcnQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBtZXJnZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9tZXJnZVwiO1xuaW1wb3J0IHR5cGUgQ2hhcnRDaGFydCBmcm9tIFwic2FwL2NoYXJ0L0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBhc3NvY2lhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5LCB4bWxFdmVudEhhbmRsZXIgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlciB9IGZyb20gXCJzYXAvZmUvYmFzZS9Ib29rU3VwcG9ydFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25QYXJhbWV0ZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVmlld1N0YXRlXCI7XG5pbXBvcnQgdHlwZSBJVmlld1N0YXRlQ29udHJpYnV0b3IgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL3ZpZXdTdGF0ZS9JVmlld1N0YXRlQ29udHJpYnV0b3JcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBCYXNlQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDaGFydFZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2UsIFdyYXBwZWRDYXJkIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0NvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgVmlld0RhdGEgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSBEaWFnbm9zdGljcyBmcm9tIFwic2FwL2ZlL2NvcmUvc3VwcG9ydC9EaWFnbm9zdGljc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IEFjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jaGFydC9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0FjdGlvbkdyb3VwXCI7XG5pbXBvcnQgQ2hhcnRSdW50aW1lIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0NoYXJ0UnVudGltZVwiO1xuaW1wb3J0IENoYXJ0VXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvY2hhcnQvQ2hhcnRVdGlsc1wiO1xuaW1wb3J0IHR5cGUgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9zZWN0aW9uL0lTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcIjtcbmltcG9ydCB0eXBlIHsgQ29uc3VtZXJEYXRhIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvc2VjdGlvbi9JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IERpbWVuc2lvblR5cGUsIE1lYXN1cmVUeXBlLCBWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1ByZXNlbnRhdGlvblZhcmlhbnRcIjtcbmltcG9ydCBQcmVzZW50YXRpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9QcmVzZW50YXRpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSB7IENhcmRNYW5pZmVzdCB9IGZyb20gXCJzYXAvaW5zaWdodHMvQ2FyZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWVudUl0ZW0gZnJvbSBcInNhcC9tL01lbnVJdGVtXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgRXZlbnQsIGRlZmF1bHQgYXMgVUk1RXZlbnQgfSBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIEJhc2VPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL09iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIExheW91dERhdGEgZnJvbSBcInNhcC91aS9jb3JlL0xheW91dERhdGFcIjtcbmltcG9ydCB7IFRpdGxlTGV2ZWwgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgTURDQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIENoYXJ0RGVsZWdhdGUgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnREZWxlZ2F0ZVwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uVG9vbGJhckFjdGlvbiBmcm9tIFwic2FwL3VpL21kYy9hY3Rpb250b29sYmFyL0FjdGlvblRvb2xiYXJBY3Rpb25cIjtcbmltcG9ydCB0eXBlIHsgQXBwU3RhdGUsIEl0ZW1zLCBTb3J0ZXJzIH0gZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIE1vZGVsQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUluZm8gfSBmcm9tIFwiLi9EZWxlZ2F0ZVV0aWxcIjtcbmltcG9ydCBNYWNyb0FQSSBmcm9tIFwiLi9NYWNyb0FQSVwiO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25PckFjdGlvbkdyb3VwLCBDaGFydENvbnRleHRPYmplY3RQYXRoLCBDaGFydEN1c3RvbURhdGEsIENvbW1hbmRBY3Rpb24gfSBmcm9tIFwiLi9jaGFydC9NZGNDaGFydFRlbXBsYXRlXCI7XG5pbXBvcnQgeyBnZXRNZGNDaGFydFRlbXBsYXRlIH0gZnJvbSBcIi4vY2hhcnQvTWRjQ2hhcnRUZW1wbGF0ZVwiO1xuaW1wb3J0IFByZXNlbnRhdGlvblZhcmlhbnRUb1N0YXRlVXRpbHNQViBmcm9tIFwiLi9jaGFydC9hZGFwdGVyL0NoYXJ0UHZUb1N0YXRlVXRpbHNcIjtcbmltcG9ydCB7IGNyZWF0ZUNoYXJ0Q2FyZFBhcmFtcyB9IGZyb20gXCIuL2luc2lnaHRzL0FuYWx5dGljYWxJbnNpZ2h0c0hlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sU3RhdGUgfSBmcm9tIFwiLi9pbnNpZ2h0cy9Db21tb25JbnNpZ2h0c0hlbHBlclwiO1xuaW1wb3J0IHsgaGFzSW5zaWdodEFjdGlvbkVuYWJsZWQsIHNob3dHZW5lcmljRXJyb3JNZXNzYWdlIH0gZnJvbSBcIi4vaW5zaWdodHMvQ29tbW9uSW5zaWdodHNIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgQ2hhcnRDb250ZW50LCBJbnNpZ2h0c1BhcmFtcyB9IGZyb20gXCIuL2luc2lnaHRzL0luc2lnaHRzU2VydmljZVwiO1xuaW1wb3J0IHsgZ2V0Q2FyZE1hbmlmZXN0LCBzaG93Q29sbGFib3JhdGlvbk1hbmFnZXJDYXJkUHJldmlldywgc2hvd0luc2lnaHRzQ2FyZFByZXZpZXcgfSBmcm9tIFwiLi9pbnNpZ2h0cy9JbnNpZ2h0c1NlcnZpY2VcIjtcbmltcG9ydCBTdGF0ZUhlbHBlciBmcm9tIFwiLi9tZGMvYWRhcHRlci9TdGF0ZUhlbHBlclwiO1xuXG5leHBvcnQgdHlwZSBDaGFydFN0YXRlID0ge1xuXHRpbm5lckNoYXJ0Pzoge1xuXHRcdGluaXRpYWxTdGF0ZT86IHtcblx0XHRcdGl0ZW1zPzogeyBuYW1lOiBzdHJpbmcgfVtdO1xuXHRcdH07XG5cdFx0ZnVsbFN0YXRlPzoge1xuXHRcdFx0aXRlbXM/OiB7IG5hbWU6IHN0cmluZyB9W107XG5cdFx0XHRmaWx0ZXI/OiBvYmplY3Q7XG5cdFx0fTtcblx0fTtcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiB7XG5cdFx0dmFyaWFudElkPzogc3RyaW5nIHwgbnVsbDtcblx0fTtcbn0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgYSBjaGFydCBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9idWlsZGluZ0Jsb2Nrcy9jaGFydC9jaGFydERlZmF1bHQgT3ZlcnZpZXcgb2YgQnVpbGRpbmcgQmxvY2tzfVxuICogPGJyPlxuICogVXN1YWxseSwgYSBjb250ZXh0UGF0aCBhbmQgbWV0YVBhdGggaXMgZXhwZWN0ZWQuXG4gKlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpDaGFydCBpZD1cIk15Q2hhcnRcIiBjb250ZXh0UGF0aD1cIi9Sb290RW50aXR5XCIgbWV0YVBhdGg9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRcIiAvJmd0O1xuICogPC9wcmU+XG4gKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy5DaGFydFxuICogQGlnbm9yZUludGVyZmFjZSBzYXAuZmUubWFjcm9zLmNvbnRyb2xzLnNlY3Rpb24uSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclxuICogQHVpNS1tZXRhbW9kZWxcbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5DaGFydFwiLCB7IHJldHVyblR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCJdIH0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFydCBleHRlbmRzIE1hY3JvQVBJIGltcGxlbWVudHMgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciwgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPENoYXJ0U3RhdGU+IHtcblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLnZpZXdTdGF0ZS5JVmlld1N0YXRlQ29udHJpYnV0b3JcIilcblx0X19pbXBsZW1lbnRzX19zYXBfZmVfY29yZV9jb250cm9sbGVyZXh0ZW5zaW9uc192aWV3U3RhdGVfSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yID0gdHJ1ZTtcblxuXHRjb250ZW50ITogTURDQ2hhcnQ7XG5cblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuc2VjdGlvbi5JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX2ZlX21hY3Jvc19jb250cm9sc19zZWN0aW9uX0lTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3IgPSB0cnVlO1xuXG5cdGdldFNlY3Rpb25Db250ZW50Um9sZSgpOiBcInByb3ZpZGVyXCIgfCBcImNvbnN1bWVyXCIge1xuXHRcdHJldHVybiBcImNvbnN1bWVyXCI7XG5cdH1cblxuXHQvKipcblx0ICogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNlbmREYXRhVG9Db25zdW1lciBtZXRob2Qgd2hpY2ggaXMgYSBwYXJ0IG9mIHRoZSBJU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXG5cdCAqXG5cdCAqIFdpbGwgYmUgY2FsbGVkIGZyb20gdGhlIHNhcC5mZS5tYWNyb3MuY29udHJvbHMuU2VjdGlvbiBjb250cm9sIHdoZW4gdGhlcmUgaXMgYSBDaGFydCBidWlsZGluZyBibG9jayByZW5kZXJlZCB3aXRoaW4gYSBzZWN0aW9uXG5cdCAqIGFsb25nIHdpdGggdGhlIGNvbnN1bWVyRGF0YSBpLmUuIHNlY3Rpb24ncyBkYXRhIHN1Y2ggYXMgdGl0bGUgYW5kIHRpdGxlIGxldmVsIHdoaWNoIGlzIHRoZW4gYXBwbGllZCB0byB0aGUgY2hhcnQgdXNpbmcgdGhlIGltcGxlbWVudGF0aW9uIGJlbG93IGFjY29yZGluZ2x5LlxuXHQgKlxuXHQgKi9cblxuXHRzZW5kRGF0YVRvQ29uc3VtZXIoY29uc3VtZXJEYXRhOiBDb25zdW1lckRhdGEpOiB2b2lkIHtcblx0XHR0aGlzLmNvbnRlbnQ/LnNldEhlYWRlcihjb25zdW1lckRhdGEudGl0bGUpO1xuXHRcdHRoaXMuY29udGVudD8uc2V0SGVhZGVyU3R5bGUoXCJINFwiKTtcblx0XHR0aGlzLmNvbnRlbnQ/LnNldEhlYWRlckxldmVsKGNvbnN1bWVyRGF0YS50aXRsZUxldmVsIGFzIFRpdGxlTGV2ZWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBjaGFydFxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZWFkb25seSBpZCE6IHN0cmluZztcblxuXHQvKipcblx0ICogTWV0YWRhdGEgcGF0aCB0byB0aGUgcHJlc2VudGF0aW9uIGNvbnRleHQgKFVJLkNoYXJ0IHdpdGggb3Igd2l0aG91dCBhIHF1YWxpZmllcilcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW1xuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QcmVzZW50YXRpb25WYXJpYW50XCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcIlxuXHRcdF1cblx0fSlcblx0cmVhZG9ubHkgbWV0YVBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIE1ldGFkYXRhIHBhdGggdG8gdGhlIGVudGl0eVNldCBvciBuYXZpZ2F0aW9uUHJvcGVydHlcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW11cblx0fSlcblx0cmVhZG9ubHkgY29udGV4dFBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgaGVhZGVyIHRleHQgdGhhdCBpcyBzaG93biBpbiB0aGUgY2hhcnRcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZWFkb25seSBoZWFkZXIhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBoZWFkZXIgdGV4dCBzaG91bGQgYmUgc2hvd24gb3Igbm90XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSlcblx0cmVhZG9ubHkgaGVhZGVyVmlzaWJsZSE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHNlbGVjdGlvbiBtb2RlIHRvIGJlIHVzZWQgYnkgdGhlIGNoYXJ0LlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYE5vbmVgLCBgU2luZ2xlYCBvciBgTXVsdGlwbGVgXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogXCJNdWx0aXBsZVwiLCBhbGxvd2VkVmFsdWVzOiBbXCJOb25lXCIsIFwiU2luZ2xlXCIsIFwiTXVsdGlwbGVcIl0gfSlcblx0cmVhZG9ubHkgc2VsZWN0aW9uTW9kZSE6IHN0cmluZztcblxuXHQvKipcblx0ICogQ29udHJvbHMgdGhlIGtpbmQgb2YgdmFyaWFudCBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSBjaGFydC5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZSBpcyBgQ29udHJvbGAuPGJyLz5cblx0ICogSWYgc2V0IHdpdGggdmFsdWUgYENvbnRyb2xgLCBhIHZhcmlhbnQgbWFuYWdlbWVudCBjb250cm9sIGlzIHNlZW4gd2l0aGluIHRoZSBjaGFydCBhbmQgdGhlIGNoYXJ0IGlzIGxpbmtlZCB0byB0aGlzLjxici8+XG5cdCAqIElmIG5vdCBzZXQgd2l0aCBhbnkgdmFsdWUsIHZhcmlhbnQgbWFuYWdlbWVudCBjb250cm9sIGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgY2hhcnQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkNvbnRyb2xcIl0gfSlcblx0cmVhZG9ubHkgdmFyaWFudE1hbmFnZW1lbnQhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoaWNoIG9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSBjaGFydCBwZXJzb25hbGl6YXRpb24gZGlhbG9nLlxuXHQgKlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYHRydWVgLCBhbGwgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhpcyBraW5kIG9mIGNoYXJ0IGFyZSBlbmFibGVkLjxici8+XG5cdCAqIElmIGl0IGlzIHNldCB0byBgZmFsc2VgLCBwZXJzb25hbGl6YXRpb24gaXMgZGlzYWJsZWQuPGJyLz5cblx0ICogPGJyLz5cblx0ICogWW91IGNhbiBhbHNvIHByb3ZpZGUgYSBtb3JlIGdyYW51bGFyIGNvbnRyb2wgZm9yIHRoZSBwZXJzb25hbGl6YXRpb24gYnkgcHJvdmlkaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgd2l0aCB0aGUgb3B0aW9ucyB5b3Ugd2FudCB0byBiZSBhdmFpbGFibGUuPGJyLz5cblx0ICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOjxici8+XG5cdCAqIC0gU29ydDxici8+XG5cdCAqIC0gVHlwZTxici8+XG5cdCAqIC0gSXRlbTxici8+XG5cdCAqIC0gRmlsdGVyPGJyLz5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0pXG5cdHJlYWRvbmx5IHBlcnNvbmFsaXphdGlvbiE6IHN0cmluZyB8IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEhlYWRlciBsZXZlbCBvZiBjaGFydFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZWFkb25seSBoZWFkZXJMZXZlbDogVGl0bGVMZXZlbCA9IFRpdGxlTGV2ZWwuQXV0bztcblxuXHQvKipcblx0ICogQ2hhcnQgZGVsZWdhdGVcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0cmVhZG9ubHkgY2hhcnREZWxlZ2F0ZT86IG9iamVjdDtcblxuXHQvKipcblx0ICogVXNlZCBpbnRlcm5hbGx5IGZvciBMUiBhbmQgT1Bcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHJlYWRvbmx5IF9hcHBseUlkVG9Db250ZW50ID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIE5vIGRhdGEgdGV4dFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZWFkb25seSBub0RhdGFUZXh0Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQYXJhbWV0ZXIgd2l0aCBkcmlsbHN0YWNrIG9uIGEgZHJpbGwgdXAvIGRyaWxsIGRvd24gb2YgdGhlIE1EQ19DaGFydFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cHJldkRyaWxsU3RhY2s6IHN0cmluZ1tdID0gW107XG5cblx0X2NvbnRlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdF9jb250ZXh0ITogTW9kZWxDb250ZXh0O1xuXG5cdGJsb2NrQWN0aW9ucz86IEFjdGlvbk9yQWN0aW9uR3JvdXA7XG5cblx0X2Jsb2NrSWQ/OiBzdHJpbmc7XG5cblx0X3BlcnNvbmFsaXphdGlvbj86IHN0cmluZyB8IGJvb2xlYW47XG5cblx0aW5pdGlhbENvbnRyb2xTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuXHRfYmxvY2tBY3Rpb25zITogKE1lbnVJdGVtIHwgQWN0aW9uVG9vbGJhckFjdGlvbiB8IHVuZGVmaW5lZClbXTtcblxuXHRjaGFydERlZmluaXRpb24hOiBDaGFydFZpc3VhbGl6YXRpb247XG5cblx0bmF2aWdhdGlvblBhdGg/OiBzdHJpbmc7XG5cblx0YXV0b0JpbmRPbkluaXQ/OiBib29sZWFuO1xuXG5cdHZpelByb3BlcnRpZXM/OiBzdHJpbmc7XG5cblx0Y2hhcnRBY3Rpb25zPzogQmFzZUFjdGlvbltdID0gW107XG5cblx0ZmlsdGVyPzogc3RyaW5nO1xuXG5cdHZpc2libGU/OiBzdHJpbmc7XG5cblx0ZHJhZnRTdXBwb3J0ZWQ/OiBib29sZWFuO1xuXG5cdGhlYWRlclN0eWxlPzogVGl0bGVMZXZlbDtcblxuXHR1c2VDb25kZW5zZWRMYXlvdXQhOiBib29sZWFuO1xuXG5cdF9tZXRhUGF0aENvbnRleHQhOiBNb2RlbENvbnRleHQ7XG5cblx0X2N1c3RvbURhdGEhOiBDaGFydEN1c3RvbURhdGE7XG5cblx0X2NoYXJ0Q29udGV4dCE6IE1vZGVsQ29udGV4dDtcblxuXHRfY2hhcnRUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0X2NoYXJ0ITogVm9jYWJ1bGFyeUNoYXJ0O1xuXG5cdF9tZXRhTW9kZWwhOiBPRGF0YU1ldGFNb2RlbDtcblxuXHRtZWFzdXJlcz86IE1vZGVsQ29udGV4dDtcblxuXHRfc29ydENvbmRpdGlvbnM6IG9iamVjdCB8IHVuZGVmaW5lZDtcblxuXHRfY29tbWFuZEFjdGlvbnM6IENvbW1hbmRBY3Rpb25bXSA9IFtdO1xuXG5cdGZpcmVWYXJpYW50U2VsZWN0ZWQ/OiBGdW5jdGlvbjtcblxuXHRmaXJlVmFyaWFudFNhdmVkPzogRnVuY3Rpb247XG5cblx0ZmlyZVNlZ21lbnRlZEJ1dHRvblByZXNzZWQ/OiBGdW5jdGlvbjtcblxuXHRfcmVzb2x2ZWRDb250ZXh0UGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogSWQgb2YgdGhlIEZpbHRlckJhciBidWlsZGluZyBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIGNoYXJ0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiB9KVxuXHRmaWx0ZXJCYXI/OiBzdHJpbmc7XG5cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC51aS5jb3JlLkxheW91dERhdGFcIlxuXHR9KVxuXHRsYXlvdXREYXRhITogTGF5b3V0RGF0YTtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIGFjdGlvbnMgb2YgdGhlIGNoYXJ0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5jaGFydC5BY3Rpb25cIixcblx0XHRhbHRUeXBlczogW1wic2FwLmZlLm1hY3Jvcy5jaGFydC5BY3Rpb25Hcm91cFwiXSxcblx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRkZWZhdWx0Q2xhc3M6IEFjdGlvblxuXHR9KVxuXHRhY3Rpb25zITogQWN0aW9uW10gfCBBY3Rpb25Hcm91cFtdO1xuXG5cdC8qKlxuXHQgKiBHZXRzIGNvbnRleHRzIGZyb20gdGhlIGNoYXJ0IHRoYXQgaGF2ZSBiZWVuIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLlxuXHQgKiBAcmV0dXJucyBDb250ZXh0cyBvZiB0aGUgcm93cyBzZWxlY3RlZCBieSB0aGUgdXNlclxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRTZWxlY3RlZENvbnRleHRzKCk6IENvbnRleHRbXSB7XG5cdFx0cmV0dXJuIHRoaXMuY29udGVudD8uZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCJzZWxlY3RlZENvbnRleHRzXCIpIHx8IFtdO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IHRyaWdnZXJlZCB3aGVuIGNoYXJ0IHNlbGVjdGlvbnMgYXJlIGNoYW5nZWQuIFRoZSBldmVudCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGF0YSBzZWxlY3RlZC9kZXNlbGVjdGVkIGFuZCB0aGUgQm9vbGVhbiBmbGFnIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgZGF0YSBpcyBzZWxlY3RlZCBvciBkZXNlbGVjdGVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRzZWxlY3Rpb25DaGFuZ2UhOiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIGNoYXJ0IHJlcXVlc3RzIGRhdGEuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRpbnRlcm5hbERhdGFSZXF1ZXN0ZWQhOiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogRXZlbnQgdHJpZ2dlcmVkIHdoZW4gY2hhcnQncyB2YXJpYW50IGlzIHNlbGVjdGVkLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QGV2ZW50KClcblx0dmFyaWFudFNlbGVjdGVkPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEV2ZW50IHRyaWdnZXJlZCB3aGVuIGNoYXJ0J3MgdmFyaWFudCBpcyBzYXZlZC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBldmVudCgpXG5cdHZhcmlhbnRTYXZlZD86IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBFdmVudCB0cmlnZ2VyZWQgd2hlbiBjaGFydCdzIHNlZ21lbnRlZCBidXR0b24gaS5lLiwgbW9kZSBiZXR3ZWVuIHRhYmxlLCBjaGFydCBhbmQgY2hhcnQgd2l0aCB0YWJsZSB2aWV3IGlzIHNlbGVjdGVkXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRzZWdtZW50ZWRCdXR0b25QcmVzc2VkITogRnVuY3Rpb247XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiBQcm9wZXJ0aWVzT2Y8Q2hhcnQ+LCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0aWYgKHNldHRpbmdzPy5fYXBwbHlJZFRvQ29udGVudCkge1xuXHRcdFx0c2V0dGluZ3MuaWQgPSBnZW5lcmF0ZShbc2V0dGluZ3MuaWQsIFwiOjpDaGFydFwiXSk7XG5cdFx0fVxuXHRcdHN1cGVyKHNldHRpbmdzLCBvdGhlcnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIGlzIG92ZXJyaWRkZW4gdG8gZW5zdXJlIGJhY2t3YXJkIGluY29tcGF0aWJpbGl0eVxuXHQgKiBAb3ZlcnJpZGVcblx0ICovXG5cdGlzQTxUIGV4dGVuZHMgQmFzZU9iamVjdCA9IEJhc2VPYmplY3Q+KHR5cGVOYW1lOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHRoaXMgaXMgVDtcblxuXHRpc0E8VD4odHlwZU5hbWU/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IHRoaXMgaXMgVDtcblxuXHRpc0EodHlwZU5hbWU6IHN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgb2xkVmFsaWRUeXBlID0gXCJzYXAuZmUubWFjcm9zLmNoYXJ0LkNoYXJ0QVBJXCI7XG5cdFx0aWYgKChBcnJheS5pc0FycmF5KHR5cGVOYW1lKSAmJiB0eXBlTmFtZS5pbmNsdWRlcyhvbGRWYWxpZFR5cGUpKSB8fCB0eXBlTmFtZSA9PT0gb2xkVmFsaWRUeXBlKSByZXR1cm4gdHJ1ZTtcblxuXHRcdHJldHVybiBzdXBlci5pc0EodHlwZU5hbWUpO1xuXHR9XG5cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0b25BZnRlclJlbmRlcmluZyhhZnRlclJlbmRlcmluZ0V2ZW50OiBKUXVlcnkuRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5nZXRWaWV3KCk7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQ6IEludGVybmFsTW9kZWxDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCBjaGFydCA9IHRoaXMuZ2V0Q29udGVudCgpIGFzIENoYXJ0O1xuXHRcdGNvbnN0IHNob3dNZXNzYWdlU3RyaXA6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0gaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiY29udHJvbHMvc2hvd01lc3NhZ2VTdHJpcFwiKSB8fCB7fTtcblx0XHRjb25zdCBzQ2hhcnRFbnRpdHlQYXRoID0gY2hhcnQuZGF0YShcImVudGl0eVNldFwiKSxcblx0XHRcdHNDYWNoZUtleSA9IGAke3NDaGFydEVudGl0eVBhdGh9Q2hhcnRgLFxuXHRcdFx0b0JpbmRpbmdDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRzaG93TWVzc2FnZVN0cmlwW3NDYWNoZUtleV0gPVxuXHRcdFx0Y2hhcnQuZGF0YShcImRyYWZ0U3VwcG9ydGVkXCIpID09PSBcInRydWVcIiAmJiAhIW9CaW5kaW5nQ29udGV4dCAmJiAhb0JpbmRpbmdDb250ZXh0LmdldE9iamVjdChcIklzQWN0aXZlRW50aXR5XCIpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY29udHJvbHMvc2hvd01lc3NhZ2VTdHJpcFwiLCBzaG93TWVzc2FnZVN0cmlwKTtcblx0XHR0aGlzLmF0dGFjaFN0YXRlQ2hhbmdlSGFuZGxlcigpO1xuXG5cdFx0c3VwZXIub25BZnRlclJlbmRlcmluZyhhZnRlclJlbmRlcmluZ0V2ZW50KTtcblx0fVxuXG5cdHByaXZhdGUgYXR0YWNoU3RhdGVDaGFuZ2VIYW5kbGVyKCk6IHZvaWQge1xuXHRcdFN0YXRlVXRpbC5kZXRhY2hTdGF0ZUNoYW5nZSh0aGlzLnN0YXRlQ2hhbmdlSGFuZGxlcik7XG5cdFx0U3RhdGVVdGlsLmF0dGFjaFN0YXRlQ2hhbmdlKHRoaXMuc3RhdGVDaGFuZ2VIYW5kbGVyKTtcblx0fVxuXG5cdHN0YXRlQ2hhbmdlSGFuZGxlcihvRXZlbnQ6IEV2ZW50PHsgY29udHJvbDogQ29udHJvbCB9Pik6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2wgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29udHJvbFwiKTtcblx0XHRpZiAoY29udHJvbC5pc0E8Q2hhcnQ+KFwic2FwLnVpLm1kYy5DaGFydFwiKSkge1xuXHRcdFx0Y29uc3QgY2hhcnRCbG9jayA9IGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgdW5rbm93biBhcyB7IGhhbmRsZVN0YXRlQ2hhbmdlPzogRnVuY3Rpb24gfTtcblx0XHRcdGlmIChjaGFydEJsb2NrPy5oYW5kbGVTdGF0ZUNoYW5nZSkge1xuXHRcdFx0XHRjaGFydEJsb2NrLmhhbmRsZVN0YXRlQ2hhbmdlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHMob0ZpbHRlckNvbnRyb2w6IENvbnRyb2wpOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3Qgb0NoYXJ0ID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIEZpbHRlclV0aWxzLmdldE5vdEFwcGxpY2FibGVGaWx0ZXJzKG9GaWx0ZXJDb250cm9sIGFzIEZpbHRlckJhciwgb0NoYXJ0ISk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0aGFuZGxlU2VsZWN0aW9uQ2hhbmdlKG9FdmVudDogVUk1RXZlbnQ8eyBkYXRhOiB1bmtub3duW107IG5hbWU6IHN0cmluZyB9Pik6IHZvaWQge1xuXHRcdGNvbnN0IGFEYXRhID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImRhdGFcIik7XG5cdFx0Y29uc3QgYlNlbGVjdGVkID0gb0V2ZW50LmdldFBhcmFtZXRlcihcIm5hbWVcIikgPT09IFwic2VsZWN0RGF0YVwiO1xuXHRcdENoYXJ0UnVudGltZS5mblVwZGF0ZUNoYXJ0KG9FdmVudCk7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJzZWxlY3Rpb25DaGFuZ2VcIiwgbWVyZ2Uoe30sIHsgZGF0YTogYURhdGEsIHNlbGVjdGVkOiBiU2VsZWN0ZWQgfSkpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uSW50ZXJuYWxEYXRhUmVxdWVzdGVkKCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwiaW50ZXJuYWxEYXRhUmVxdWVzdGVkXCIpO1xuXHR9XG5cblx0QGNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyKFwiY29sbGFib3JhdGlvbk1hbmFnZXJcIiwgXCJjb2xsZWN0QXZhaWxhYmxlQ2FyZHNcIilcblx0YXN5bmMgY29sbGVjdEF2YWlsYWJsZUNhcmRzKGNhcmRzOiBXcmFwcGVkQ2FyZFtdKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgYWN0aW9uVG9vbGJhckl0ZW1zID0gdGhpcy5jb250ZW50LmdldEFjdGlvbnMoKSBhcyBBY3Rpb25Ub29sYmFyQWN0aW9uW107XG5cdFx0aWYgKGhhc0luc2lnaHRBY3Rpb25FbmFibGVkKGFjdGlvblRvb2xiYXJJdGVtcywgdGhpcy5jb250ZW50LmdldEZpbHRlcigpKSkge1xuXHRcdFx0Y29uc3QgY2FyZCA9IGF3YWl0IHRoaXMuZ2V0Q2FyZE1hbmlmZXN0Q2hhcnQoKTtcblx0XHRcdGlmIChPYmplY3Qua2V5cyhjYXJkKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGNhcmRzLnB1c2goe1xuXHRcdFx0XHRcdGNhcmQ6IGNhcmQsXG5cdFx0XHRcdFx0dGl0bGU6IHRoaXMuZ2V0Q2hhcnRDb250cm9sKCkuZ2V0SGVhZGVyKCksXG5cdFx0XHRcdFx0Y2FsbGJhY2s6IHRoaXMub25BZGRDYXJkVG9Db2xsYWJvcmF0aW9uTWFuYWdlckNhbGxiYWNrLmJpbmQodGhpcylcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aGFzU2VsZWN0aW9ucygpOiBib29sZWFuIHtcblx0XHQvLyBjb25zaWRlciBjaGFydCBzZWxlY3Rpb25zIGluIHRoZSBjdXJyZW50IGRyaWxsIHN0YWNrIG9yIG9uIGFueSBmdXJ0aGVyIGRyaWxsIGRvd25zXG5cdFx0Y29uc3QgbWRjQ2hhcnQgPSB0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBNRENDaGFydDtcblx0XHRpZiAobWRjQ2hhcnQpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IGNoYXJ0ID0gKG1kY0NoYXJ0LmdldENvbnRyb2xEZWxlZ2F0ZSgpIGFzIHVua25vd24gYXMgQ2hhcnREZWxlZ2F0ZSk/LmdldElubmVyQ2hhcnQobWRjQ2hhcnQpIGFzIENoYXJ0Q2hhcnQ7XG5cdFx0XHRcdGlmIChjaGFydCkge1xuXHRcdFx0XHRcdGNvbnN0IGFEaW1lbnNpb25zID0gQ2hhcnRVdGlscy5nZXREaW1lbnNpb25zRnJvbURyaWxsU3RhY2soY2hhcnQpO1xuXHRcdFx0XHRcdGNvbnN0IGJJc0RyaWxsRG93biA9IGFEaW1lbnNpb25zLmxlbmd0aCA+IHRoaXMucHJldkRyaWxsU3RhY2subGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IGJJc0RyaWxsVXAgPSBhRGltZW5zaW9ucy5sZW5ndGggPCB0aGlzLnByZXZEcmlsbFN0YWNrLmxlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBiTm9DaGFuZ2UgPSBhRGltZW5zaW9ucy50b1N0cmluZygpID09PSB0aGlzLnByZXZEcmlsbFN0YWNrLnRvU3RyaW5nKCk7XG5cdFx0XHRcdFx0bGV0IGFGaWx0ZXJzOiBGaWx0ZXJbXTtcblx0XHRcdFx0XHRpZiAoYklzRHJpbGxVcCAmJiBhRGltZW5zaW9ucy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0XHRcdC8vIGRyaWxsaW5nIHVwIHRvIGxldmVsMCB3b3VsZCBjbGVhciBhbGwgc2VsZWN0aW9uc1xuXHRcdFx0XHRcdFx0YUZpbHRlcnMgPSBDaGFydFV0aWxzLmdldENoYXJ0U2VsZWN0aW9ucyhtZGNDaGFydCwgdHJ1ZSkgYXMgRmlsdGVyW107XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIGFwcGx5IGZpbHRlcnMgb2Ygc2VsZWN0aW9ucyBvZiBwcmV2aW91cyBkcmlsbHN0YWNrIHdoZW4gZHJpbGxpbmcgdXAvZG93blxuXHRcdFx0XHRcdFx0Ly8gdG8gdGhlIGNoYXJ0IGFuZCB0YWJsZVxuXHRcdFx0XHRcdFx0YUZpbHRlcnMgPSBDaGFydFV0aWxzLmdldENoYXJ0U2VsZWN0aW9ucyhtZGNDaGFydCkgYXMgRmlsdGVyW107XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChiSXNEcmlsbERvd24gfHwgYklzRHJpbGxVcCkge1xuXHRcdFx0XHRcdFx0Ly8gdXBkYXRlIHRoZSBkcmlsbHN0YWNrIG9uIGEgZHJpbGwgdXAvIGRyaWxsIGRvd25cblx0XHRcdFx0XHRcdHRoaXMucHJldkRyaWxsU3RhY2sgPSBhRGltZW5zaW9ucztcblx0XHRcdFx0XHRcdHJldHVybiBhRmlsdGVycy5sZW5ndGggPiAwO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoYk5vQ2hhbmdlKSB7XG5cdFx0XHRcdFx0XHQvLyBiTm9DaGFuZ2UgaXMgdHJ1ZSB3aGVuIGNoYXJ0IGlzIHNlbGVjdGVkXG5cdFx0XHRcdFx0XHRyZXR1cm4gYUZpbHRlcnMubGVuZ3RoID4gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3IoYEVycm9yIHdoaWxlIGNoZWNraW5nIGZvciBzZWxlY3Rpb25zIGluIENoYXJ0OiAke2Vycn1gKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gY3JlYXRlIGluc2lnaHRzUGFyYW1zIGFuZCBjYWxsIHRoZSBBUEkgdG8gc2hvdyBpbnNpZ2h0cyBjYXJkIHByZXZpZXcgZm9yIGNoYXJ0cy5cblx0ICogQHJldHVybnMgVW5kZWZpbmVkIGlmIGNhcmQgcHJldmlldyBpcyByZW5kZXJlZC5cblx0ICovXG5cdGFzeW5jIG9uQWRkQ2FyZFRvSW5zaWdodHNQcmVzc2VkKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBpbnNpZ2h0c1BhcmFtcyA9IGF3YWl0IGNyZWF0ZUNoYXJ0Q2FyZFBhcmFtcyh0aGlzKTtcblx0XHRcdGlmIChpbnNpZ2h0c1BhcmFtcykge1xuXHRcdFx0XHRzaG93SW5zaWdodHNDYXJkUHJldmlldyhpbnNpZ2h0c1BhcmFtcyk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRzaG93R2VuZXJpY0Vycm9yTWVzc2FnZSh0aGlzLmNvbnRlbnQpO1xuXHRcdFx0TG9nLmVycm9yKGUgYXMgc3RyaW5nKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY2FyZCBtYW5pZmVzdCBvcHRpbWl6ZWQgZm9yIHRoZSBjaGFydCBjYXNlLlxuXHQgKiBAcmV0dXJucyBQcm9taXNlIG9mIENhcmRNYW5pZmVzdFxuXHQgKi9cblx0cHJpdmF0ZSBhc3luYyBnZXRDYXJkTWFuaWZlc3RDaGFydCgpOiBQcm9taXNlPENhcmRNYW5pZmVzdD4ge1xuXHRcdGNvbnN0IGluc2lnaHRzUGFyYW1zID0gYXdhaXQgY3JlYXRlQ2hhcnRDYXJkUGFyYW1zKHRoaXMpO1xuXHRcdHJldHVybiBnZXRDYXJkTWFuaWZlc3QoaW5zaWdodHNQYXJhbXMgYXMgSW5zaWdodHNQYXJhbXM8Q2hhcnRDb250ZW50Pik7XG5cdH1cblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byBjcmVhdGUgaW5zaWdodHNQYXJhbXMgYW5kIGNhbGwgdGhlIEFQSSB0byBzaG93IGluc2lnaHRzIGNhcmQgcHJldmlldyBmb3IgdGFibGUuXG5cdCAqIEBwYXJhbSBjYXJkIFRoZSBjYXJkIG1hbmlmZXN0IHRvIGJlIHVzZWQgZm9yIHRoZSBjYWxsYmFja1xuXHQgKiBAcmV0dXJucyBVbmRlZmluZWQgaWYgY2FyZCBwcmV2aWV3IGlzIHJlbmRlcmVkLlxuXHQgKi9cblx0YXN5bmMgb25BZGRDYXJkVG9Db2xsYWJvcmF0aW9uTWFuYWdlckNhbGxiYWNrKGNhcmQ6IENhcmRNYW5pZmVzdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoY2FyZCkge1xuXHRcdFx0XHRhd2FpdCBzaG93Q29sbGFib3JhdGlvbk1hbmFnZXJDYXJkUHJldmlldyhcblx0XHRcdFx0XHRjYXJkLFxuXHRcdFx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKT8uY29sbGFib3JhdGlvbk1hbmFnZXIuZ2V0U2VydmljZSgpIGFzIENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0c2hvd0dlbmVyaWNFcnJvck1lc3NhZ2UodGhpcy5jb250ZW50KTtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGZpbHRlcnMgcmVsYXRlZCB0byB0aGUgY2hhcnQuXG5cdCAqIEByZXR1cm5zICBUaGUgZmlsdGVyIGNvbmZpZ3VyZWQgb24gdGhlIGNoYXJ0IG9yIHVuZGVmaW5lZCBpZiBub25lXG5cdCAqL1xuXHRnZXRGaWx0ZXIoKTogRmlsdGVyIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBjaGFydEZpbHRlckluZm8gPSBDaGFydFV0aWxzLmdldEFsbEZpbHRlckluZm8odGhpcy5jb250ZW50IGFzIHVua25vd24gYXMgTURDQ2hhcnQpO1xuXHRcdGlmIChjaGFydEZpbHRlckluZm8uZmlsdGVycy5sZW5ndGgpIHtcblx0XHRcdGNoYXJ0RmlsdGVySW5mby5maWx0ZXJzLmZvckVhY2goKGZpbHRlcikgPT4ge1xuXHRcdFx0XHRpZiAoZmlsdGVyLmdldFBhdGgoKSkge1xuXHRcdFx0XHRcdChmaWx0ZXIgYXMgdW5rbm93biBhcyB7IHNQYXRoOiBzdHJpbmcgfSkuc1BhdGggPSB0aGlzLmdldENoYXJ0UHJvcGVydGllc1dpdGhvdXRQcmVmaXhlcyhmaWx0ZXIuZ2V0UGF0aCgpISk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIG5ldyBGaWx0ZXIoeyBmaWx0ZXJzOiBjaGFydEZpbHRlckluZm8uZmlsdGVycywgYW5kOiB0cnVlIH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGNoYXJ0IGNvbnRyb2wgZnJvbSB0aGUgQ2hhcnQgQVBJLlxuXHQgKiBAcmV0dXJucyBUaGUgQ2hhcnQgY29udHJvbCBpbnNpZGUgdGhlIENoYXJ0IEFQSVxuXHQgKi9cblx0Z2V0Q2hhcnRDb250cm9sKCk6IE1EQ0NoYXJ0IHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGRhdGFtb2RlbCBvYmplY3QgcGF0aCBmb3IgdGhlIGRpbWVuc2lvbi5cblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZSAgTmFtZSBvZiB0aGUgZGltZW5zaW9uXG5cdCAqIEByZXR1cm5zIFRoZSBkYXRhbW9kZWwgb2JqZWN0IHBhdGggZm9yIHRoZSBkaW1lbnNpb25cblx0ICovXG5cblx0Z2V0UHJvcGVydHlEYXRhTW9kZWwocHJvcGVydHlOYW1lOiBzdHJpbmcpOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5PiB8IG51bGwge1xuXHRcdGNvbnN0IG1ldGFQYXRoID0gdGhpcy5jb250ZW50LmRhdGEoXCJ0YXJnZXRDb2xsZWN0aW9uUGF0aFwiKSBhcyBzdHJpbmc7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gKHRoaXMuY29udGVudC5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWwpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IGRpbWVuc2lvbkNvbnRleHQgPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoYCR7bWV0YVBhdGh9LyR7cHJvcGVydHlOYW1lfWApIGFzIENvbnRleHQ7XG5cdFx0cmV0dXJuIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxQcm9wZXJ0eT4oZGltZW5zaW9uQ29udGV4dCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IG9mIGNoYXJ0IHByb3BlcnRpZXMgYnkgcmVtb3ZpbmcgX2ZlX2dyb3VwYWJsZSBhbmQgX2ZlX2FnZ3JlZ2F0YWJsZSBwcmVmaXguXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGFQcm9wZXJ0aWVzIENoYXJ0IGZpbHRlciBwcm9wZXJ0aWVzXG5cdCAqIEByZXR1cm5zIENoYXJ0IHByb3BlcnRpZXMgd2l0aG91dCBwcmVmaXhlc1xuXHQgKi9cblxuXHRnZXRDaGFydFByb3BlcnRpZXNXaXRob3V0UHJlZml4ZXMoY2hhcnRQcm9wZXJ0eTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRpZiAoY2hhcnRQcm9wZXJ0eSAmJiBjaGFydFByb3BlcnR5LmluY2x1ZGVzKFwiZmVfZ3JvdXBhYmxlXCIpKSB7XG5cdFx0XHRjaGFydFByb3BlcnR5ID0gdGhpcy5nZXRJbnRlcm5hbENoYXJ0TmFtZUZyb21Qcm9wZXJ0eU5hbWVBbmRLaW5kKGNoYXJ0UHJvcGVydHksIFwiZ3JvdXBhYmxlXCIpO1xuXHRcdH0gZWxzZSBpZiAoY2hhcnRQcm9wZXJ0eSAmJiBjaGFydFByb3BlcnR5LmluY2x1ZGVzKFwiZmVfYWdncmVnYXRhYmxlXCIpKSB7XG5cdFx0XHRjaGFydFByb3BlcnR5ID0gdGhpcy5nZXRJbnRlcm5hbENoYXJ0TmFtZUZyb21Qcm9wZXJ0eU5hbWVBbmRLaW5kKGNoYXJ0UHJvcGVydHksIFwiYWdncmVnYXRhYmxlXCIpO1xuXHRcdH1cblx0XHRyZXR1cm4gY2hhcnRQcm9wZXJ0eTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gSUQgd2hpY2ggc2hvdWxkIGJlIHVzZWQgaW4gdGhlIGludGVybmFsIGNoYXJ0IGZvciB0aGUgbWVhc3VyZSBvciBkaW1lbnNpb24uXG5cdCAqIEBwYXJhbSBuYW1lIElEIG9mIHRoZSBwcm9wZXJ0eVxuXHQgKiBAcGFyYW0ga2luZCBUeXBlIG9mIHRoZSBwcm9wZXJ0eSAobWVhc3VyZSBvciBkaW1lbnNpb24pXG5cdCAqIEByZXR1cm5zIEludGVybmFsIElEIGZvciB0aGUgc2FwLmNoYXJ0LkNoYXJ0XG5cdCAqL1xuXG5cdGdldEludGVybmFsQ2hhcnROYW1lRnJvbVByb3BlcnR5TmFtZUFuZEtpbmQobmFtZTogc3RyaW5nLCBraW5kOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiBuYW1lLnJlcGxhY2UoXCJfZmVfXCIgKyBraW5kICsgXCJfXCIsIFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gY29udmVydHMgdGhlIGNoYXJ0J3Mgc3RhdGVVdGlsICB0byBDaGFydCBQcmVzZW50YXRpb24gVmFyaWFudC5cblx0ICogQHBhcmFtIGNoYXJ0U3RhdGUgQ2hhcnQgQXBwU3RhdGUgdXRpbCBQVlxuXHQgKiBAcmV0dXJucyBQcmVzZW50YXRpb24gVmFyaWFudCBzdHJ1Y3R1cmUgZm9yIHRoZSBjaGFydFxuXHQgKi9cblx0X2NvbnZlcnRTdGF0ZVV0aWxUb1ByZXNlbnRhdGlvblZhcmlhbnQoY2hhcnRTdGF0ZTogQXBwU3RhdGUpOiBQcmVzZW50YXRpb25WYXJpYW50IHtcblx0XHRjb25zdCBzb3J0T3JkZXIgPSBjaGFydFN0YXRlLnNvcnRlcnM/Lm1hcCgoc29ydGVyOiBTb3J0ZXJzKSA9PiB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRQcm9wZXJ0eTogdGhpcy5nZXRDaGFydFByb3BlcnRpZXNXaXRob3V0UHJlZml4ZXMoc29ydGVyLm5hbWUpLFxuXHRcdFx0XHREZXNjZW5kaW5nOiBzb3J0ZXIuZGVzY2VuZGluZ1xuXHRcdFx0fTtcblx0XHR9KTtcblx0XHRjb25zdCB0eXBlID0gY2hhcnRTdGF0ZS5zdXBwbGVtZW50YXJ5Q29uZmlnPy5wcm9wZXJ0aWVzPy5jaGFydFR5cGU7XG5cdFx0Y29uc3QgY2hhcnRUeXBlSW5SZXF1aXJlZEZvcm1hdCA9IHR5cGUgPyB0eXBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdHlwZS5zbGljZSgxKSA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBjaGFydFR5cGUgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0VHlwZS9cIiArIGNoYXJ0VHlwZUluUmVxdWlyZWRGb3JtYXQ7XG5cdFx0Y29uc3QgZGltZW5zaW9uczogc3RyaW5nW10gPSBbXSxcblx0XHRcdG1lYXN1cmVzOiBzdHJpbmdbXSA9IFtdLFxuXHRcdFx0ZGltZW5zaW9uQXR0cmlidXRlczogRGltZW5zaW9uVHlwZVtdID0gW10sXG5cdFx0XHRtZWFzdXJlQXR0cmlidXRlczogTWVhc3VyZVR5cGVbXSA9IFtdO1xuXHRcdChjaGFydFN0YXRlLml0ZW1zID8/IFtdKS5mb3JFYWNoKChpdGVtOiBJdGVtcykgPT4ge1xuXHRcdFx0aXRlbS5uYW1lID0gdGhpcy5nZXRDaGFydFByb3BlcnRpZXNXaXRob3V0UHJlZml4ZXMoaXRlbS5uYW1lKTtcblx0XHRcdGNvbnN0IHJvbGUgPSBpdGVtLnJvbGU/Lmxlbmd0aFxuXHRcdFx0XHQ/IGl0ZW0ucm9sZS5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKSArIGl0ZW0ucm9sZT8uc3Vic3RyaW5nKDEsIGl0ZW0ucm9sZS5sZW5ndGgpXG5cdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdFx0aWYgKGl0ZW0ucm9sZSA9PT0gXCJjYXRlZ29yeVwiIHx8IGl0ZW0ucm9sZSA9PT0gXCJzZXJpZXNcIiB8fCBpdGVtLnJvbGUgPT09IFwiY2F0ZWdvcnkyXCIpIHtcblx0XHRcdFx0ZGltZW5zaW9ucy5wdXNoKGl0ZW0ubmFtZSk7XG5cdFx0XHRcdGRpbWVuc2lvbkF0dHJpYnV0ZXMucHVzaCh7XG5cdFx0XHRcdFx0RGltZW5zaW9uOiBpdGVtLm5hbWUsXG5cdFx0XHRcdFx0Um9sZTogYGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0RGltZW5zaW9uUm9sZVR5cGUvJHtyb2xlfWBcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRtZWFzdXJlcy5wdXNoKGl0ZW0ubmFtZSk7XG5cdFx0XHRcdG1lYXN1cmVBdHRyaWJ1dGVzLnB1c2goeyBNZWFzdXJlOiBpdGVtLm5hbWUsIFJvbGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnREaW1lbnNpb25Sb2xlVHlwZS9cIiArIHJvbGUgfSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRjb25zdCBjaGFydFZpejogVmlzdWFsaXphdGlvbiA9IHtcblx0XHRcdENvbnRlbnQ6IHtcblx0XHRcdFx0Q2hhcnRUeXBlOiBjaGFydFR5cGUsXG5cdFx0XHRcdERpbWVuc2lvbkF0dHJpYnV0ZXM6IGRpbWVuc2lvbkF0dHJpYnV0ZXMsXG5cdFx0XHRcdERpbWVuc2lvbnM6IGRpbWVuc2lvbnMsXG5cdFx0XHRcdE1lYXN1cmVBdHRyaWJ1dGVzOiBtZWFzdXJlQXR0cmlidXRlcyxcblx0XHRcdFx0TWVhc3VyZXM6IG1lYXN1cmVzXG5cdFx0XHR9LFxuXHRcdFx0VHlwZTogXCJDaGFydFwiXG5cdFx0fTtcblx0XHRjb25zdCBjaGFydFBWID0gbmV3IFByZXNlbnRhdGlvblZhcmlhbnQoKTtcblx0XHRjaGFydFBWLnNldENoYXJ0VmlzdWFsaXphdGlvbihjaGFydFZpeik7XG5cdFx0Y2hhcnRQVi5zZXRQcm9wZXJ0aWVzKHtcblx0XHRcdFNvcnRPcmRlcjogc29ydE9yZGVyID8/IFtdXG5cdFx0fSk7XG5cdFx0cmV0dXJuIGNoYXJ0UFY7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBwcmVzZW50YXRpb24gdmFyaWFudCB0aGF0IGlzIGN1cnJlbnRseSBhcHBsaWVkIG9uIHRoZSBjaGFydC5cblx0ICogQHJldHVybnMgVGhlIHByZXNlbnRhdGlvbiB2YXJpYW50IHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5QcmVzZW50YXRpb25WYXJpYW50fSBhcHBsaWVkIHRvIHRoZSBjaGFydFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXG5cdGFzeW5jIGdldFByZXNlbnRhdGlvblZhcmlhbnQoKTogUHJvbWlzZTxQcmVzZW50YXRpb25WYXJpYW50PiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGNoYXJ0U3RhdGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKHRoaXMuY29udGVudCk7XG5cdFx0XHRyZXR1cm4gdGhpcy5fY29udmVydFN0YXRlVXRpbFRvUHJlc2VudGF0aW9uVmFyaWFudChjaGFydFN0YXRlKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0Y29uc3QgaWQ6IHN0cmluZyA9IHRoaXMuZ2V0SWQoKTtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG5cdFx0XHRMb2cuZXJyb3IoYENoYXJ0IEJ1aWxkaW5nIEJsb2NrICgke2lkfSkgLSBnZXQgcHJlc2VudGF0aW9uIHZhcmlhbnQgZmFpbGVkIDogJHttZXNzYWdlfWApO1xuXHRcdFx0dGhyb3cgRXJyb3IobWVzc2FnZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB0aGUgcHJlc2VudGF0aW9uIHZhcmlhbnQgZm9yIHRoZSBtZGMgY2hhcnQuXG5cdCAqXG5cdCAqIFRoZSBqc29uIGZvcm1hdCByZXRyaWV2ZWQgYnkgdXNpbmcgdGhlIGdldCBQcmVzZW50YXRpb25WYXJpYW50IGJ1dHRvbiBpbiB0aGUgbGlua2VkIEZQTSBzYW1wbGUgc2hvdWxkIGJlIGZvbGxvd2VkIHdoaWxlIHRyeWluZyB0byBzZXQgdGhlIFByZXNlbnRhdGlvblZhcmlhbnQgYXMgbmVlZGVkLlxuXHQgKiBUaGUgdmFsdWVzIGRpbWVuc2lvbnMsIG1lYXN1cmVzIGFuZCBvdGhlciBwcm9wZXJ0aWVzIHNob3VsZCBhbHNvIGJlIGdpdmVuIGluIHRoZSB2YWxpZCBmb3JtYXQgYW5kIG51bGwgb3IgZW1wdHkgdmFsdWVzIHNob3VsZCBiZSBhdm9pZGVkLlxuXHQgKiBPbmUgZGltZW5zaW9uIGF0dHJpYnV0ZSBzaG91bGQgaGF2ZSBvbmx5IG9uZSByb2xlIGFzc29jaWF0ZWQgd2l0aCBpdCBvbiBhIGdpdmVuIGNoYXJ0LlxuXHQgKiBAcGFyYW0gcHJlc2VudGF0aW9uVmFyaWFudCB0aGUgcHJlc2VudGF0aW9uIHZhcmlhbnQge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlByZXNlbnRhdGlvblZhcmlhbnR9IHRvIGJlIHNldFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXG5cdGFzeW5jIHNldFByZXNlbnRhdGlvblZhcmlhbnQocHJlc2VudGF0aW9uVmFyaWFudDogUHJlc2VudGF0aW9uVmFyaWFudCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjaGFydCA9IHRoaXMuY29udGVudDtcblx0XHRcdGNvbnN0IGV4aXN0aW5nUHJlc2VudGF0aW9uVmFyaWFudCA9IGF3YWl0IHRoaXMuZ2V0UHJlc2VudGF0aW9uVmFyaWFudCgpO1xuXHRcdFx0Y29uc3QgcHJvcGVydGllc0luZm8gPSAoYXdhaXQgKGNoYXJ0LmdldENvbnRyb2xEZWxlZ2F0ZSgpIGFzIENoYXJ0RGVsZWdhdGUpPy5mZXRjaFByb3BlcnRpZXMoXG5cdFx0XHRcdGNoYXJ0XG5cdFx0XHQpKSBhcyB1bmtub3duIGFzIFByb3BlcnR5SW5mb1tdO1xuXG5cdFx0XHRjb25zdCBzdGF0ZVV0aWxQdiA9IFByZXNlbnRhdGlvblZhcmlhbnRUb1N0YXRlVXRpbHNQVi5jb252ZXJ0UHZUb1N0YXRlVXRpbFB2KFxuXHRcdFx0XHRwcmVzZW50YXRpb25WYXJpYW50LFxuXHRcdFx0XHRleGlzdGluZ1ByZXNlbnRhdGlvblZhcmlhbnQsXG5cdFx0XHRcdHByb3BlcnRpZXNJbmZvXG5cdFx0XHQpO1xuXG5cdFx0XHRhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKGNoYXJ0LCBzdGF0ZVV0aWxQdik7XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpO1xuXHRcdFx0TG9nLmVycm9yKGBGRTogQ2hhcnQgQnVpbGRpbmcgQmxvY2sgc2V0UHJlc2VudGF0aW9uVmFyaWFudCBBUEkgZmFpbGVkIHdpdGggZXJyb3I6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBrZXkgb2YgdGhlIGN1cnJlbnQgdmFyaWFudCBpbiB0aGUgYXNzb2NpYXRlZCB2YXJpYW50IG1hbmFnZW1lbnQuXG5cdCAqIEByZXR1cm5zIFZhcmlhbnQga2V5IG9mIHtAbGluayBzYXAudWkuZmwudmFyaWFudHMuVmFyaWFudE1hbmFnZW1lbnR9IGFwcGxpZWQgdG8gdGhlIGNoYXJ0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldEN1cnJlbnRWYXJpYW50S2V5KCk6IHN0cmluZyB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpLmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFyaWFudCBvZiB0aGUgcHJvdmlkZWQga2V5IGluIHRoZSBhc3NvY2lhdGVkIHZhcmlhbnQgbWFuYWdlbWVudC5cblx0ICogQHBhcmFtIGtleSBUaGUgdmFyaWFudCBrZXkgb2Yge0BsaW5rIHNhcC51aS5mbC52YXJpYW50cy5WYXJpYW50TWFuYWdlbWVudH0gdG8gYmUgc2V0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHNldEN1cnJlbnRWYXJpYW50S2V5KGtleTogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnQgPSB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpO1xuXHRcdHZhcmlhbnRNYW5hZ2VtZW50LnNldEN1cnJlbnRWYXJpYW50S2V5KGtleSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBzZWxlY3Rpb24gdmFyaWFudCBmcm9tIHRoZSBjaGFydC4gVGhpcyBmdW5jdGlvbiBjb25zaWRlcnMgb25seSB0aGUgc2VsZWN0aW9uIHZhcmlhbnQgYXBwbGllZCBhdCB0aGUgY29udHJvbCBsZXZlbC5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH0uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGdldFNlbGVjdGlvblZhcmlhbnQoKTogUHJvbWlzZTxTZWxlY3Rpb25WYXJpYW50PiB7XG5cdFx0cmV0dXJuIFN0YXRlSGVscGVyLmdldFNlbGVjdGlvblZhcmlhbnQodGhpcy5jb250ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50fSB0byB0aGUgY2hhcnQuIE5vdGU6IHNldFNlbGVjdGlvblZhcmlhbnQgd2lsbCBjbGVhciBleGlzdGluZyBmaWx0ZXJzIGFuZCB0aGVuIGFwcGx5IHRoZSBTZWxlY3Rpb25WYXJpYW50IHZhbHVlcy5cblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQgVGhlIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50fSB0byBhcHBseSB0byB0aGUgY2hhcnRcblx0ICogQHBhcmFtIHByZWZpbGxEZXNjcmlwdGlvbnMgT3B0aW9uYWwuIElmIHRydWUsIHdlIHdpbGwgdXNlIHRoZSBhc3NvY2lhdGVkIHRleHQgcHJvcGVydHkgdmFsdWVzIChpZiB0aGV5J3JlIGF2YWlsYWJsZSBpbiB0aGUgU2VsZWN0aW9uVmFyaWFudCkgdG8gZGlzcGxheSB0aGUgZmlsdGVyIHZhbHVlIGRlc2NyaXB0aW9ucywgaW5zdGVhZCBvZiBsb2FkaW5nIHRoZW0gZnJvbSB0aGUgYmFja2VuZFxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgZm9yIGFzeW5jaHJvbm91cyBoYW5kbGluZ1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBzZXRTZWxlY3Rpb25WYXJpYW50KHNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQsIHByZWZpbGxEZXNjcmlwdGlvbnMgPSBmYWxzZSk6IFByb21pc2U8dW5rbm93bj4ge1xuXHRcdHJldHVybiBTdGF0ZUhlbHBlci5zZXRTZWxlY3Rpb25WYXJpYW50VG9NZGNDb250cm9sKHRoaXMuZ2V0Q29udGVudCgpLCBzZWxlY3Rpb25WYXJpYW50LCBwcmVmaWxsRGVzY3JpcHRpb25zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRyb2wgc3RhdGUgYmFzZWQgb24gdGhlIGdpdmVuIGNvbnRyb2wgc3RhdGUga2V5LlxuXHQgKiBAcGFyYW0gY29udHJvbFN0YXRlIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBjb250cm9sLlxuXHQgKiBAcmV0dXJucyAtIFRoZSBmdWxsIHN0YXRlIG9mIHRoZSBjb250cm9sIGFsb25nIHdpdGggdGhlIGluaXRpYWwgc3RhdGUgaWYgYXZhaWxhYmxlLlxuXHQgKi9cblx0Z2V0Q29udHJvbFN0YXRlKGNvbnRyb2xTdGF0ZTogQ29udHJvbFN0YXRlKTogQ29udHJvbFN0YXRlIHtcblx0XHRjb25zdCBpbml0aWFsQ29udHJvbFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHRoaXMuaW5pdGlhbENvbnRyb2xTdGF0ZTtcblx0XHRpZiAoY29udHJvbFN0YXRlKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRmdWxsU3RhdGU6IGNvbnRyb2xTdGF0ZSBhcyBvYmplY3QsXG5cdFx0XHRcdGluaXRpYWxTdGF0ZTogaW5pdGlhbENvbnRyb2xTdGF0ZSBhcyBvYmplY3Rcblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiBjb250cm9sU3RhdGU7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgY29udHJvbCBieSByZXRyaWV2aW5nIHRoZSBleHRlcm5hbCBzdGF0ZS5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgaW5pdGlhbCBzdGF0ZSBpcyBzZXQuXG5cdCAqL1xuXHRhc3luYyBzZXRJbml0aWFsU3RhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGluaXRpYWxDb250cm9sU3RhdGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKHRoaXMuY29udGVudCk7XG5cdFx0XHR0aGlzLmluaXRpYWxDb250cm9sU3RhdGUgPSBpbml0aWFsQ29udHJvbFN0YXRlO1xuXHRcdH0gY2F0Y2ggKGU6IHVua25vd24pIHtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFzeW5jaHJvbm91c2x5IHJldHJpZXZlcyB0aGUgc3RhdGUgb2YgdGhlIGNoYXJ0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCB2aWV3c3RhdGUuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjaGFydCBzdGF0ZSBvciBudWxsIGlmIG5vdCBmb3VuZC5cblx0ICovXG5cdGFzeW5jIHJldHJpZXZlU3RhdGUoKTogUHJvbWlzZTxDaGFydFN0YXRlIHwgbnVsbD4ge1xuXHRcdGNvbnN0IGNoYXJ0U3RhdGU6IENoYXJ0U3RhdGUgPSB7fTtcblx0XHRjaGFydFN0YXRlLmlubmVyQ2hhcnQgPSB0aGlzLmdldENvbnRyb2xTdGF0ZShhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKHRoaXMuY29udGVudCkpIGFzIG9iamVjdDtcblx0XHRjb25zdCB2YXJpYW50VG9SZXRyaWV2ZSA9IHRoaXMuY29udGVudC5nZXRWYXJpYW50KCk/LmdldElkKCk7XG5cdFx0aWYgKHZhcmlhbnRUb1JldHJpZXZlKSB7XG5cdFx0XHRjb25zdCB2YXJpYW50TWFuYWdlbWVudENvbnRyb2wgPSB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpO1xuXHRcdFx0aWYgKCFjaGFydFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50KSB7XG5cdFx0XHRcdGNoYXJ0U3RhdGUudmFyaWFudE1hbmFnZW1lbnQgPSB7IHZhcmlhbnRJZDogdmFyaWFudE1hbmFnZW1lbnRDb250cm9sPy5nZXRDdXJyZW50VmFyaWFudEtleSgpIH07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjaGFydFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50LnZhcmlhbnRJZCA9IHZhcmlhbnRNYW5hZ2VtZW50Q29udHJvbD8uZ2V0Q3VycmVudFZhcmlhbnRLZXkoKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGNoYXJ0U3RhdGU7XG5cdH1cblxuXHQvKipcblx0ICogQXBwbGllcyB0aGUgbGVnYWN5IHN0YXRlIHRvIHRoZSBjaGFydCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29udHJvbCBzdGF0ZSByZXRyaWV2YWwgZnVuY3Rpb24uXG5cdCAqIEBwYXJhbSBnZXRDb250cm9sU3RhdGUgRnVuY3Rpb24gdG8gcmV0cmlldmUgdGhlIGNvbnRyb2wgc3RhdGUuXG5cdCAqIEBwYXJhbSBbX25hdlBhcmFtZXRlcnNdIE9wdGlvbmFsIG5hdmlnYXRpb24gcGFyYW1ldGVycy5cblx0ICogQHBhcmFtIFtzaG91bGRBcHBseURpZmZTdGF0ZV0gRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGRpZmYgc3RhdGUuXG5cdCAqIEByZXR1cm5zIC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc3RhdGUgaGFzIGJlZW4gYXBwbGllZC5cblx0ICovXG5cdGFzeW5jIGFwcGx5TGVnYWN5U3RhdGUoXG5cdFx0Z2V0Q29udHJvbFN0YXRlOiAoY29udHJvbDogTWFuYWdlZE9iamVjdCkgPT4gQ29udHJvbFN0YXRlLFxuXHRcdF9uYXZQYXJhbWV0ZXJzPzogTmF2aWdhdGlvblBhcmFtZXRlcixcblx0XHRzaG91bGRBcHBseURpZmZTdGF0ZT86IGJvb2xlYW5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgY2hhcnQgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0Y29uc3Qgdm0gPSBjaGFydC5nZXRWYXJpYW50KCk7XG5cblx0XHRjb25zdCBjaGFydFN0YXRlID0gZ2V0Q29udHJvbFN0YXRlKGNoYXJ0KSBhcyB7IGluaXRpYWxTdGF0ZT86IENoYXJ0U3RhdGU7IGZ1bGxTdGF0ZT86IENoYXJ0U3RhdGUgfTtcblx0XHRjb25zdCB2bVN0YXRlID0gdm0gPyBnZXRDb250cm9sU3RhdGUodm0pIDogbnVsbDtcblxuXHRcdGNvbnN0IGNvbnRyb2xTdGF0ZTogQ2hhcnRTdGF0ZSA9IHt9O1xuXG5cdFx0aWYgKGNoYXJ0U3RhdGUpIHtcblx0XHRcdGNvbnRyb2xTdGF0ZS5pbm5lckNoYXJ0ID0ge1xuXHRcdFx0XHQuLi5jb250cm9sU3RhdGUuaW5uZXJDaGFydCxcblx0XHRcdFx0Li4uY2hhcnRTdGF0ZSxcblx0XHRcdFx0ZnVsbFN0YXRlOiB7XG5cdFx0XHRcdFx0Li4uY29udHJvbFN0YXRlLmlubmVyQ2hhcnQ/LmZ1bGxTdGF0ZSxcblx0XHRcdFx0XHQuLi5jaGFydFN0YXRlLmZ1bGxTdGF0ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRpbml0aWFsU3RhdGU6IHtcblx0XHRcdFx0XHQuLi5jb250cm9sU3RhdGUuaW5uZXJDaGFydD8uaW5pdGlhbFN0YXRlLFxuXHRcdFx0XHRcdC4uLmNoYXJ0U3RhdGUuaW5pdGlhbFN0YXRlXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0aWYgKHZtU3RhdGU/LnZhcmlhbnRJZCkge1xuXHRcdFx0Y29udHJvbFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50ID0ge1xuXHRcdFx0XHQuLi5jb250cm9sU3RhdGUudmFyaWFudE1hbmFnZW1lbnQsXG5cdFx0XHRcdHZhcmlhbnRJZDogdm1TdGF0ZS52YXJpYW50SWQudG9TdHJpbmcoKVxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRpZiAoY29udHJvbFN0YXRlICYmIE9iamVjdC5rZXlzKGNvbnRyb2xTdGF0ZSkubGVuZ3RoID4gMCkge1xuXHRcdFx0YXdhaXQgdGhpcy5hcHBseVN0YXRlKGNvbnRyb2xTdGF0ZSBhcyBDb250cm9sU3RhdGUsIF9uYXZQYXJhbWV0ZXJzLCBzaG91bGRBcHBseURpZmZTdGF0ZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIGFwcGxpY2F0aW9uIG9mIGEgdmFyaWFudCBJRCBwYXNzZWQgdmlhIFVSTCBwYXJhbWV0ZXJzLlxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB2YXJpYW50IGhhcyBiZWVuIGFwcGxpZWQuXG5cdCAqL1xuXHRhc3luYyBoYW5kbGVWYXJpYW50SWRQYXNzZWRWaWFVUkxQYXJhbXMoKTogUHJvbWlzZTx1bmtub3duPiB7XG5cdFx0Y29uc3QgdXJsUGFyYW1zID0gdGhpcy5nZXRTdGFydHVwUGFyYW1ldGVycygpO1xuXHRcdGNvbnN0IGNoYXJ0VmFyaWFudElkID0gdXJsUGFyYW1zPy5bXCJzYXAtdWktZmUtY2hhcnQtdmFyaWFudC1pZFwiXT8uWzBdO1xuXHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMpO1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpO1xuXHRcdGNvbnN0IHZtVHlwZSA9IHZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50O1xuXHRcdGNvbnN0IHZtID0gKHRoaXMuZ2V0Q29udGVudCgpIGFzIE1EQ0NoYXJ0KT8uZ2V0VmFyaWFudCgpO1xuXHRcdGlmICh2bSAmJiBjaGFydFZhcmlhbnRJZCAmJiB2bVR5cGUgPT09IFwiQ29udHJvbFwiKSB7XG5cdFx0XHRjb25zdCB2YXJpYW50VG9BcHBseSA9IHZtLmdldFZhcmlhbnRzKCkuZmluZCgodmFyaWFudCkgPT4gdmFyaWFudC5nZXRLZXkoKSA9PT0gY2hhcnRWYXJpYW50SWQpO1xuXHRcdFx0Y29uc3QgQ29udHJvbFZhcmlhbnRBcHBseUFQSSA9IChhd2FpdCBpbXBvcnQoXCJzYXAvdWkvZmwvYXBwbHkvYXBpL0NvbnRyb2xWYXJpYW50QXBwbHlBUElcIikpLmRlZmF1bHQ7XG5cdFx0XHRyZXR1cm4gQ29udHJvbFZhcmlhbnRBcHBseUFQSS5hY3RpdmF0ZVZhcmlhbnQoe1xuXHRcdFx0XHRlbGVtZW50OiB2bSxcblx0XHRcdFx0dmFyaWFudFJlZmVyZW5jZTogdmFyaWFudFRvQXBwbHk/LmdldEtleSgpXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBzdGFydHVwIHBhcmFtZXRlcnMgZnJvbSB0aGUgYXBwbGljYXRpb24gY29tcG9uZW50IGRhdGEuXG5cdCAqIFRoZXNlIHBhcmFtZXRlcnMgY29udGFpbiBVUkwgcXVlcnkgcGFyYW1ldGVycyB0aGF0IHdlcmUgcGFzc2VkIHdoZW4gdGhlIGFwcGxpY2F0aW9uIHdhcyBzdGFydGVkLlxuXHQgKiBAcmV0dXJucyBUaGUgc3RhcnR1cCBwYXJhbWV0ZXJzIGFzIGEga2V5LXZhbHVlIG1hcHBpbmcgd2hlcmUgZWFjaCBrZXkgY2FuIGhhdmUgbXVsdGlwbGUgdmFsdWVzLFxuXHQgKiAgICAgICAgICBvciB1bmRlZmluZWQgaWYgbm8gcGFyYW1ldGVycyBhcmUgYXZhaWxhYmxlIG9yIGlmIHRoZSBjb21wb25lbnQgY2hhaW4gaXMgbm90IGFjY2Vzc2libGUuXG5cdCAqL1xuXHRnZXRTdGFydHVwUGFyYW1ldGVycygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gY29udHJvbGxlcj8uZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0Y29uc3QgY29tcG9uZW50RGF0YSA9IGFwcENvbXBvbmVudD8uZ2V0Q29tcG9uZW50RGF0YSgpO1xuXHRcdHJldHVybiBjb21wb25lbnREYXRhPy5zdGFydHVwUGFyYW1ldGVycyBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcblx0fVxuXG5cdC8qKlxuXHQgKiBBc3luY2hyb25vdXNseSBhcHBsaWVzIG5hdmlnYXRpb24gcGFyYW1ldGVycyB0byB0aGUgY2hhcnQuXG5cdCAqIEBwYXJhbSBuYXZpZ2F0aW9uUGFyYW1ldGVyIFRoZSBuYXZpZ2F0aW9uIHBhcmFtZXRlcnMgdG8gYmUgYXBwbGllZC5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcGFyYW1ldGVycyBoYXZlIGJlZW4gYXBwbGllZC5cblx0ICovXG5cdGFzeW5jIGFwcGx5TmF2aWdhdGlvblBhcmFtZXRlcnMobmF2aWdhdGlvblBhcmFtZXRlcjogTmF2aWdhdGlvblBhcmFtZXRlcik6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHQvLyBPbmx5IGhhbmRsZSB2YXJpYW50IElEIGZyb20gVVJMIHBhcmFtZXRlcnMgaWYgYXBwbHlWYXJpYW50RnJvbVVSTFBhcmFtcyBpcyB0cnVlXG5cdFx0XHRpZiAobmF2aWdhdGlvblBhcmFtZXRlci5hcHBseVZhcmlhbnRGcm9tVVJMUGFyYW1zID8/IGZhbHNlKSB7XG5cdFx0XHRcdGF3YWl0IHRoaXMuaGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zKCk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdExvZy5lcnJvcihcblx0XHRcdFx0YEVycm9yIHRyeWluZyB0byBhcHBseSBuYXZpZ2F0aW9uIHBhcmFtZXRlcnMgdG8gJHt0aGlzLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpfSBjb250cm9sIHdpdGggSUQ6ICR7dGhpcy5nZXRJZCgpfWAsXG5cdFx0XHRcdGVycm9yIGFzIEVycm9yXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdH1cblxuXHQvKipcblx0ICogQXN5bmNocm9ub3VzbHkgYXBwbGllcyB0aGUgcHJvdmlkZWQgY29udHJvbCBzdGF0ZSB0byB0aGUgdmlld3N0YXRlLlxuXHQgKiBAcGFyYW0gY29udHJvbFN0YXRlIFRoZSBzdGF0ZSB0byBiZSBhcHBsaWVkIHRvIHRoZSBjb250cm9sLlxuXHQgKiBAcGFyYW0gW19uYXZQYXJhbWV0ZXJzXSBPcHRpb25hbCBuYXZpZ2F0aW9uIHBhcmFtZXRlcnMuXG5cdCAqIEBwYXJhbSBbc2hvdWxkQXBwbHlEaWZmU3RhdGVdIE9wdGlvbmFsIGZsYWcgdG8gc2tpcCBtZXJnaW5nIHN0YXRlcy5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc3RhdGUgaGFzIGJlZW4gYXBwbGllZC5cblx0ICovXG5cdGFzeW5jIGFwcGx5U3RhdGUoY29udHJvbFN0YXRlOiBDaGFydFN0YXRlLCBfbmF2UGFyYW1ldGVycz86IE5hdmlnYXRpb25QYXJhbWV0ZXIsIHNob3VsZEFwcGx5RGlmZlN0YXRlPzogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICghY29udHJvbFN0YXRlKSByZXR1cm47XG5cblx0XHRjb25zdCB2YXJpYW50SWQgPSBjb250cm9sU3RhdGUudmFyaWFudE1hbmFnZW1lbnQ/LnZhcmlhbnRJZDtcblx0XHRjb25zdCBjdXJyZW50VmFyaWFudCA9IHRoaXMuY29udGVudD8uZ2V0VmFyaWFudCgpO1xuXG5cdFx0Ly8gSGFuZGxlIFZhcmlhbnQgTWFuYWdlbWVudFxuXHRcdGlmICh2YXJpYW50SWQgIT09IHVuZGVmaW5lZCAmJiB2YXJpYW50SWQgIT09IGN1cnJlbnRWYXJpYW50LmdldEN1cnJlbnRWYXJpYW50S2V5KCkpIHtcblx0XHRcdGNvbnN0IG92TSA9IHRoaXMuY29udGVudD8uZ2V0VmFyaWFudCgpO1xuXHRcdFx0Y29uc3QgYVZhcmlhbnRzID0gb3ZNPy5nZXRWYXJpYW50cygpO1xuXHRcdFx0Y29uc3Qgc1ZhcmlhbnRSZWZlcmVuY2UgPSBhVmFyaWFudHM/LnNvbWUoKG9WYXJpYW50KSA9PiBvVmFyaWFudC5nZXRLZXkoKSA9PT0gdmFyaWFudElkKVxuXHRcdFx0XHQ/IHZhcmlhbnRJZFxuXHRcdFx0XHQ6IG92TT8uZ2V0U3RhbmRhcmRWYXJpYW50S2V5O1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgQ29udHJvbFZhcmlhbnRBcHBseUFQSSA9IChhd2FpdCBpbXBvcnQoXCJzYXAvdWkvZmwvYXBwbHkvYXBpL0NvbnRyb2xWYXJpYW50QXBwbHlBUElcIikpLmRlZmF1bHQ7XG5cdFx0XHRcdGF3YWl0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkuYWN0aXZhdGVWYXJpYW50KHtcblx0XHRcdFx0XHRlbGVtZW50OiBvdk0sXG5cdFx0XHRcdFx0dmFyaWFudFJlZmVyZW5jZTogc1ZhcmlhbnRSZWZlcmVuY2UgYXMgc3RyaW5nXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhd2FpdCB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdFx0TG9nLmVycm9yKGVycm9yIGFzIHN0cmluZyk7XG5cdFx0XHRcdGF3YWl0IHRoaXMuc2V0SW5pdGlhbFN0YXRlKCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIHdlIG5lZWQgdG8gdXBkYXRlIGluaXRpYWwgc3RhdGUgZXZlbiBpZiBhYm92ZSBjb25kaXRpb24gbm90IHNhdGlzZmllZFxuXHRcdFx0YXdhaXQgdGhpcy5zZXRJbml0aWFsU3RhdGUoKTtcblx0XHR9XG5cblx0XHQvLyBIYW5kbGUgSW5uZXIgQ2hhcnQgU3RhdGVcblx0XHRjb25zdCBpbm5lckNoYXJ0U3RhdGUgPSBjb250cm9sU3RhdGUuaW5uZXJDaGFydDtcblx0XHRsZXQgZmluYWxTdGF0ZTtcblxuXHRcdGlmIChpbm5lckNoYXJ0U3RhdGUpIHtcblx0XHRcdGlmIChzaG91bGRBcHBseURpZmZTdGF0ZSAmJiBpbm5lckNoYXJ0U3RhdGUuaW5pdGlhbFN0YXRlKSB7XG5cdFx0XHRcdGZpbmFsU3RhdGUgPSBhd2FpdCBTdGF0ZVV0aWwuZGlmZlN0YXRlKFxuXHRcdFx0XHRcdHRoaXMuY29udGVudCxcblx0XHRcdFx0XHRpbm5lckNoYXJ0U3RhdGUuaW5pdGlhbFN0YXRlIGFzIG9iamVjdCxcblx0XHRcdFx0XHRpbm5lckNoYXJ0U3RhdGUuZnVsbFN0YXRlIGFzIG9iamVjdFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZmluYWxTdGF0ZSA9IGlubmVyQ2hhcnRTdGF0ZS5mdWxsU3RhdGU7XG5cdFx0XHR9XG5cdFx0XHRhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKHRoaXMuY29udGVudCwgZmluYWxTdGF0ZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENhbGxlZCBieSB0aGUgTURDIHN0YXRlIHV0aWwgd2hlbiB0aGUgc3RhdGUgZm9yIHRoaXMgY29udHJvbCdzIGNoaWxkIGhhcyBjaGFuZ2VkLlxuXHQgKi9cblx0aGFuZGxlU3RhdGVDaGFuZ2UoKTogdm9pZCB7XG5cdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5nZXRFeHRlbnNpb25BUEkoKS51cGRhdGVBcHBTdGF0ZSgpO1xuXHR9XG5cblx0X2NyZWF0ZUNvbnRlbnQoKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcj8uaXNBPFRlbXBsYXRlQ29tcG9uZW50PihcInNhcC5mZS5jb3JlLlRlbXBsYXRlQ29tcG9uZW50XCIpKSB7XG5cdFx0XHQvLyBXZSBuZWVkIHRvIHJlbW92ZSB0aGUgY3VycmVudCBmaWx0ZXIgZnJvbSB0aGUgb2xkICh0byBiZSBkZXN0cm95ZWQpIENoYXJ0IGluc3RhbmNlIGJlY2F1c2UgaWYgd2UgZG9uJ3QgdGhlbiBmb3Igc29tZSBzdHJhbmdlIHJlYXNvbiwgdGhlIG9sZCBDaGFydCBpbnN0YW5jZSB1c2VkIHRvXG5cdFx0XHQvLyByZWFjdCBmb3IgZmlsdGVyIGJhciBhY3Rpb24sIGZvciBleGFtcGxlLCBvbiBDbGljayBvZiBHby5cblx0XHRcdHRoaXMuY29udGVudC5zZXRGaWx0ZXIoXCJcIik7XG5cdFx0XHR0aGlzLmNvbnRlbnQuZGVzdHJveSgpO1xuXHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0c2V0UHJvcGVydHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB0aGlzIHtcblx0XHRpZiAoIXRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiBPYmplY3Qua2V5cyh0aGlzLmdldE1ldGFkYXRhKCkuZ2V0UHJvcGVydGllcygpKS5pbmNsdWRlcyhrZXkpKSB7XG5cdFx0XHRzdXBlci5zZXRQcm9wZXJ0eShrZXksIHZhbHVlLCB0cnVlKTtcblx0XHRcdHRoaXMuX2NyZWF0ZUNvbnRlbnQoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXIuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSwgc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRyZW1vdmVBZ2dyZWdhdGlvbihuYW1lOiBzdHJpbmcsIHZhbHVlOiBNYW5hZ2VkT2JqZWN0IHwgbnVtYmVyIHwgc3RyaW5nLCBzdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogTWFuYWdlZE9iamVjdCB8IG51bGwge1xuXHRcdGxldCByZW1vdmVkOiBNYW5hZ2VkT2JqZWN0IHwgbnVsbDtcblx0XHRpZiAoIXRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiBPYmplY3Qua2V5cyh0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWdncmVnYXRpb25zKCkpLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0XHRyZW1vdmVkID0gc3VwZXIucmVtb3ZlQWdncmVnYXRpb24obmFtZSwgdmFsdWUsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0XHR0aGlzLl9jcmVhdGVDb250ZW50KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlbW92ZWQgPSBzdXBlci5yZW1vdmVBZ2dyZWdhdGlvbihuYW1lLCB2YWx1ZSwgc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlbW92ZWQ7XG5cdH1cblxuXHRhZGRBZ2dyZWdhdGlvbihuYW1lOiBzdHJpbmcsIHZhbHVlOiBNYW5hZ2VkT2JqZWN0LCBzdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdGhpcyB7XG5cdFx0aWYgKCF0aGlzLl9hcHBseWluZ1NldHRpbmdzICYmIE9iamVjdC5rZXlzKHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRBZ2dyZWdhdGlvbnMoKSkuaW5jbHVkZXMobmFtZSkpIHtcblx0XHRcdHN1cGVyLmFkZEFnZ3JlZ2F0aW9uKG5hbWUsIHZhbHVlLCBzdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdFx0dGhpcy5fY3JlYXRlQ29udGVudCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdXBlci5hZGRBZ2dyZWdhdGlvbihuYW1lLCB2YWx1ZSwgc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRpbnNlcnRBZ2dyZWdhdGlvbihuYW1lOiBzdHJpbmcsIHZhbHVlOiBNYW5hZ2VkT2JqZWN0LCBpbmRleDogbnVtYmVyLCBzdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdGhpcyB7XG5cdFx0aWYgKCF0aGlzLl9hcHBseWluZ1NldHRpbmdzICYmIE9iamVjdC5rZXlzKHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRBZ2dyZWdhdGlvbnMoKSkuaW5jbHVkZXMobmFtZSkpIHtcblx0XHRcdHN1cGVyLmluc2VydEFnZ3JlZ2F0aW9uKG5hbWUsIHZhbHVlLCBpbmRleCwgc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHRcdHRoaXMuX2NyZWF0ZUNvbnRlbnQoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXIuaW5zZXJ0QWdncmVnYXRpb24obmFtZSwgdmFsdWUsIGluZGV4LCBzdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdGNyZWF0ZUNvbnRlbnQoKTogTURDQ2hhcnQge1xuXHRcdGlmICh0aGlzLmNvbnRleHRQYXRoKSB7XG5cdFx0XHR0aGlzLl9yZXNvbHZlZENvbnRleHRQYXRoID0gdGhpcy5jb250ZXh0UGF0aC5lbmRzV2l0aChcIi9cIikgPyB0aGlzLmNvbnRleHRQYXRoIDogdGhpcy5jb250ZXh0UGF0aCArIFwiL1wiO1xuXHRcdH1cblxuXHRcdHJldHVybiBnZXRNZGNDaGFydFRlbXBsYXRlKFxuXHRcdFx0dGhpcyxcblx0XHRcdHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyKCk/LmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpID8/ICh0aGlzLl9nZXRPd25lcigpPy5nZXRWaWV3RGF0YSgpIGFzIHVua25vd24gYXMgVmlld0RhdGEpLFxuXHRcdFx0dGhpcy5nZXRBcHBDb21wb25lbnQoKT8uZ2V0RGlhZ25vc3RpY3MoKSA/PyAoe30gYXMgRGlhZ25vc3RpY3MpLFxuXHRcdFx0dGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aDxDaGFydENvbnRleHRPYmplY3RQYXRoPih0aGlzLm1ldGFQYXRoLCB0aGlzLl9yZXNvbHZlZENvbnRleHRQYXRoKSFcblx0XHQpO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFmQSxJQWlCcUJBLEtBQUssSUFBQUMsSUFBQSxHQUR6QkMsY0FBYyxDQUFDLHFCQUFxQixFQUFFO0lBQUVDLFdBQVcsRUFBRSxDQUFDLHdCQUF3QjtFQUFFLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBRWpGQyxrQkFBa0IsQ0FBQyxrRUFBa0UsQ0FBQyxFQUFBQyxLQUFBLEdBS3RGRCxrQkFBa0IsQ0FBQywwREFBMEQsQ0FBQyxFQUFBRSxLQUFBLEdBd0I5RUMsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBTzVCRixRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFLFFBQVE7SUFDZEUs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
994
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGFydCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJpbXBsZW1lbnRJbnRlcmZhY2UiLCJfZGVjMyIsIl9kZWM0IiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzUiLCJyZXF1aXJlZCIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25zIiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiZGVmYXVsdFZhbHVlIiwiX2RlYzkiLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzEwIiwiX2RlYzExIiwiX2RlYzEyIiwiX2RlYzEzIiwiX2RlYzE0IiwiX2RlYzE1IiwiX2RlYzE2IiwiYXNzb2NpYXRpb24iLCJfZGVjMTciLCJhZ2dyZWdhdGlvbiIsIl9kZWMxOCIsImFsdFR5cGVzIiwibXVsdGlwbGUiLCJkZWZhdWx0Q2xhc3MiLCJBY3Rpb24iLCJfZGVjMTkiLCJfZGVjMjAiLCJldmVudCIsIl9kZWMyMSIsIl9kZWMyMiIsIl9kZWMyMyIsIl9kZWMyNCIsIl9kZWMyNSIsInhtbEV2ZW50SGFuZGxlciIsIl9kZWMyNiIsIl9kZWMyNyIsImNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9NYWNyb0FQSSIsInNldHRpbmdzIiwib3RoZXJzIiwiX3RoaXMiLCJfYXBwbHlJZFRvQ29udGVudCIsImlkIiwiZ2VuZXJhdGUiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwicHJldkRyaWxsU3RhY2siLCJpbml0aWFsQ29udHJvbFN0YXRlIiwiY2hhcnRBY3Rpb25zIiwiX2NvbW1hbmRBY3Rpb25zIiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9kZXNjcmlwdG9yMTkiLCJfZGVzY3JpcHRvcjIwIiwiX2Rlc2NyaXB0b3IyMSIsIl9kZXNjcmlwdG9yMjIiLCJfZGVzY3JpcHRvcjIzIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFNlY3Rpb25Db250ZW50Um9sZSIsInNlbmREYXRhVG9Db25zdW1lciIsImNvbnN1bWVyRGF0YSIsImNvbnRlbnQiLCJzZXRIZWFkZXIiLCJ0aXRsZSIsInNldEhlYWRlclN0eWxlIiwic2V0SGVhZGVyTGV2ZWwiLCJ0aXRsZUxldmVsIiwiZ2V0U2VsZWN0ZWRDb250ZXh0cyIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJpc0EiLCJ0eXBlTmFtZSIsIm9sZFZhbGlkVHlwZSIsIkFycmF5IiwiaXNBcnJheSIsImluY2x1ZGVzIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNyZWF0ZUNvbnRlbnQiLCJvbkFmdGVyUmVuZGVyaW5nIiwiYWZ0ZXJSZW5kZXJpbmdFdmVudCIsInZpZXciLCJnZXRQYWdlQ29udHJvbGxlciIsImdldFZpZXciLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsImNoYXJ0IiwiZ2V0Q29udGVudCIsInNob3dNZXNzYWdlU3RyaXAiLCJzQ2hhcnRFbnRpdHlQYXRoIiwiZGF0YSIsInNDYWNoZUtleSIsIm9CaW5kaW5nQ29udGV4dCIsImdldE9iamVjdCIsInNldFByb3BlcnR5IiwiYXR0YWNoU3RhdGVDaGFuZ2VIYW5kbGVyIiwiU3RhdGVVdGlsIiwiZGV0YWNoU3RhdGVDaGFuZ2UiLCJzdGF0ZUNoYW5nZUhhbmRsZXIiLCJhdHRhY2hTdGF0ZUNoYW5nZSIsIm9FdmVudCIsImNvbnRyb2wiLCJnZXRQYXJhbWV0ZXIiLCJjaGFydEJsb2NrIiwiZ2V0UGFyZW50IiwiaGFuZGxlU3RhdGVDaGFuZ2UiLCJyZWZyZXNoTm90QXBwbGljYWJsZUZpZWxkcyIsIm9GaWx0ZXJDb250cm9sIiwib0NoYXJ0IiwiRmlsdGVyVXRpbHMiLCJnZXROb3RBcHBsaWNhYmxlRmlsdGVycyIsImhhbmRsZVNlbGVjdGlvbkNoYW5nZSIsImFEYXRhIiwiYlNlbGVjdGVkIiwiQ2hhcnRSdW50aW1lIiwiZm5VcGRhdGVDaGFydCIsImZpcmVFdmVudCIsIm1lcmdlIiwic2VsZWN0ZWQiLCJvbkludGVybmFsRGF0YVJlcXVlc3RlZCIsImNvbGxlY3RBdmFpbGFibGVDYXJkcyIsImNhcmRzIiwiYWN0aW9uVG9vbGJhckl0ZW1zIiwiZ2V0QWN0aW9ucyIsImhhc0luc2lnaHRBY3Rpb25FbmFibGVkIiwiZ2V0RmlsdGVyIiwiY2FyZCIsImdldENhcmRNYW5pZmVzdENoYXJ0IiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsInB1c2giLCJnZXRDaGFydENvbnRyb2wiLCJnZXRIZWFkZXIiLCJjYWxsYmFjayIsIm9uQWRkQ2FyZFRvQ29sbGFib3JhdGlvbk1hbmFnZXJDYWxsYmFjayIsImJpbmQiLCJoYXNTZWxlY3Rpb25zIiwibWRjQ2hhcnQiLCJnZXRDb250cm9sRGVsZWdhdGUiLCJnZXRJbm5lckNoYXJ0IiwiYURpbWVuc2lvbnMiLCJDaGFydFV0aWxzIiwiZ2V0RGltZW5zaW9uc0Zyb21EcmlsbFN0YWNrIiwiYklzRHJpbGxEb3duIiwiYklzRHJpbGxVcCIsImJOb0NoYW5nZSIsInRvU3RyaW5nIiwiYUZpbHRlcnMiLCJnZXRDaGFydFNlbGVjdGlvbnMiLCJlcnIiLCJMb2ciLCJlcnJvciIsIm9uQWRkQ2FyZFRvSW5zaWdodHNQcmVzc2VkIiwiaW5zaWdodHNQYXJhbXMiLCJjcmVhdGVDaGFydENhcmRQYXJhbXMiLCJzaG93SW5zaWdodHNDYXJkUHJldmlldyIsImUiLCJzaG93R2VuZXJpY0Vycm9yTWVzc2FnZSIsImdldENhcmRNYW5pZmVzdCIsInNob3dDb2xsYWJvcmF0aW9uTWFuYWdlckNhcmRQcmV2aWV3IiwiY29sbGFib3JhdGlvbk1hbmFnZXIiLCJnZXRTZXJ2aWNlIiwiY2hhcnRGaWx0ZXJJbmZvIiwiZ2V0QWxsRmlsdGVySW5mbyIsImZpbHRlcnMiLCJmb3JFYWNoIiwiZmlsdGVyIiwiZ2V0UGF0aCIsInNQYXRoIiwiZ2V0Q2hhcnRQcm9wZXJ0aWVzV2l0aG91dFByZWZpeGVzIiwiRmlsdGVyIiwiYW5kIiwidW5kZWZpbmVkIiwiZ2V0UHJvcGVydHlEYXRhTW9kZWwiLCJwcm9wZXJ0eU5hbWUiLCJtZXRhUGF0aCIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiZGltZW5zaW9uQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiY2hhcnRQcm9wZXJ0eSIsImdldEludGVybmFsQ2hhcnROYW1lRnJvbVByb3BlcnR5TmFtZUFuZEtpbmQiLCJuYW1lIiwia2luZCIsInJlcGxhY2UiLCJfY29udmVydFN0YXRlVXRpbFRvUHJlc2VudGF0aW9uVmFyaWFudCIsImNoYXJ0U3RhdGUiLCJzb3J0T3JkZXIiLCJzb3J0ZXJzIiwibWFwIiwic29ydGVyIiwiUHJvcGVydHkiLCJEZXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsInN1cHBsZW1lbnRhcnlDb25maWciLCJwcm9wZXJ0aWVzIiwiY2hhcnRUeXBlIiwiY2hhcnRUeXBlSW5SZXF1aXJlZEZvcm1hdCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJkaW1lbnNpb25zIiwibWVhc3VyZXMiLCJkaW1lbnNpb25BdHRyaWJ1dGVzIiwibWVhc3VyZUF0dHJpYnV0ZXMiLCJpdGVtcyIsIml0ZW0iLCJyb2xlIiwic3Vic3RyaW5nIiwiRGltZW5zaW9uIiwiUm9sZSIsIk1lYXN1cmUiLCJjaGFydFZpeiIsIkNvbnRlbnQiLCJDaGFydFR5cGUiLCJEaW1lbnNpb25BdHRyaWJ1dGVzIiwiRGltZW5zaW9ucyIsIk1lYXN1cmVBdHRyaWJ1dGVzIiwiTWVhc3VyZXMiLCJUeXBlIiwiY2hhcnRQViIsIlByZXNlbnRhdGlvblZhcmlhbnQiLCJzZXRDaGFydFZpc3VhbGl6YXRpb24iLCJzZXRQcm9wZXJ0aWVzIiwiU29ydE9yZGVyIiwiZ2V0UHJlc2VudGF0aW9uVmFyaWFudCIsInJldHJpZXZlRXh0ZXJuYWxTdGF0ZSIsImdldElkIiwibWVzc2FnZSIsIkVycm9yIiwiU3RyaW5nIiwic2V0UHJlc2VudGF0aW9uVmFyaWFudCIsInByZXNlbnRhdGlvblZhcmlhbnQiLCJleGlzdGluZ1ByZXNlbnRhdGlvblZhcmlhbnQiLCJwcm9wZXJ0aWVzSW5mbyIsImZldGNoUHJvcGVydGllcyIsInN0YXRlVXRpbFB2IiwiUHJlc2VudGF0aW9uVmFyaWFudFRvU3RhdGVVdGlsc1BWIiwiY29udmVydFB2VG9TdGF0ZVV0aWxQdiIsImFwcGx5RXh0ZXJuYWxTdGF0ZSIsImdldEN1cnJlbnRWYXJpYW50S2V5IiwiZ2V0VmFyaWFudCIsInNldEN1cnJlbnRWYXJpYW50S2V5Iiwia2V5IiwidmFyaWFudE1hbmFnZW1lbnQiLCJnZXRTZWxlY3Rpb25WYXJpYW50IiwiU3RhdGVIZWxwZXIiLCJzZXRTZWxlY3Rpb25WYXJpYW50Iiwic2VsZWN0aW9uVmFyaWFudCIsInByZWZpbGxEZXNjcmlwdGlvbnMiLCJhcmd1bWVudHMiLCJzZXRTZWxlY3Rpb25WYXJpYW50VG9NZGNDb250cm9sIiwiZ2V0Q29udHJvbFN0YXRlIiwiY29udHJvbFN0YXRlIiwiZnVsbFN0YXRlIiwiaW5pdGlhbFN0YXRlIiwic2V0SW5pdGlhbFN0YXRlIiwicmV0cmlldmVTdGF0ZSIsImlubmVyQ2hhcnQiLCJ2YXJpYW50VG9SZXRyaWV2ZSIsInZhcmlhbnRNYW5hZ2VtZW50Q29udHJvbCIsInZhcmlhbnRJZCIsImFwcGx5TGVnYWN5U3RhdGUiLCJfbmF2UGFyYW1ldGVycyIsInNob3VsZEFwcGx5RGlmZlN0YXRlIiwidm0iLCJ2bVN0YXRlIiwiYXBwbHlTdGF0ZSIsImhhbmRsZVZhcmlhbnRJZFBhc3NlZFZpYVVSTFBhcmFtcyIsInVybFBhcmFtcyIsImdldFN0YXJ0dXBQYXJhbWV0ZXJzIiwiY2hhcnRWYXJpYW50SWQiLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJ2aWV3RGF0YSIsImdldFZpZXdEYXRhIiwidm1UeXBlIiwidmFyaWFudFRvQXBwbHkiLCJnZXRWYXJpYW50cyIsImZpbmQiLCJ2YXJpYW50IiwiZ2V0S2V5IiwiQ29udHJvbFZhcmlhbnRBcHBseUFQSSIsIl9fdWk1X3JlcXVpcmVfYXN5bmMiLCJkZWZhdWx0IiwiYWN0aXZhdGVWYXJpYW50IiwiZWxlbWVudCIsInZhcmlhbnRSZWZlcmVuY2UiLCJjb250cm9sbGVyIiwiYXBwQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiYXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVycyIsIm5hdmlnYXRpb25QYXJhbWV0ZXIiLCJhcHBseVZhcmlhbnRGcm9tVVJMUGFyYW1zIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjdXJyZW50VmFyaWFudCIsIm92TSIsImFWYXJpYW50cyIsInNWYXJpYW50UmVmZXJlbmNlIiwic29tZSIsIm9WYXJpYW50IiwiZ2V0U3RhbmRhcmRWYXJpYW50S2V5IiwiaW5uZXJDaGFydFN0YXRlIiwiZmluYWxTdGF0ZSIsImRpZmZTdGF0ZSIsImdldEV4dGVuc2lvbkFQSSIsInVwZGF0ZUFwcFN0YXRlIiwiX2NyZWF0ZUNvbnRlbnQiLCJvd25lciIsIl9nZXRPd25lciIsInNldEZpbHRlciIsImRlc3Ryb3kiLCJ2YWx1ZSIsInN1cHByZXNzSW52YWxpZGF0ZSIsIl9hcHBseWluZ1NldHRpbmdzIiwiZ2V0UHJvcGVydGllcyIsInJlbW92ZUFnZ3JlZ2F0aW9uIiwicmVtb3ZlZCIsImdldEFnZ3JlZ2F0aW9ucyIsImFkZEFnZ3JlZ2F0aW9uIiwiaW5zZXJ0QWdncmVnYXRpb24iLCJpbmRleCIsImNvbnRleHRQYXRoIiwiX3Jlc29sdmVkQ29udGV4dFBhdGgiLCJlbmRzV2l0aCIsImdldE1kY0NoYXJ0VGVtcGxhdGUiLCJnZXRSb290Q29udHJvbGxlciIsImdldERpYWdub3N0aWNzIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJNYWNyb0FQSSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciIsIlRpdGxlTGV2ZWwiLCJBdXRvIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDaGFydC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBDaGFydCBhcyBWb2NhYnVsYXJ5Q2hhcnQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBtZXJnZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9tZXJnZVwiO1xuaW1wb3J0IHR5cGUgQ2hhcnRDaGFydCBmcm9tIFwic2FwL2NoYXJ0L0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBhc3NvY2lhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5LCB4bWxFdmVudEhhbmRsZXIgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlciB9IGZyb20gXCJzYXAvZmUvYmFzZS9Ib29rU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBTdGFydHVwUGFyYW1ldGVycyB9IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBOYXZpZ2F0aW9uUGFyYW1ldGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZVwiO1xuaW1wb3J0IHR5cGUgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy92aWV3U3RhdGUvSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgdHlwZSB7IE92ZXJmbG93R3JvdXBzQ29uZmlndXJhdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBCYXNlQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDaGFydFZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2UsIFdyYXBwZWRDYXJkIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0NvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgVmlld0RhdGEgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSBEaWFnbm9zdGljcyBmcm9tIFwic2FwL2ZlL2NvcmUvc3VwcG9ydC9EaWFnbm9zdGljc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IEFjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jaGFydC9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0FjdGlvbkdyb3VwXCI7XG5pbXBvcnQgQ2hhcnRSdW50aW1lIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0NoYXJ0UnVudGltZVwiO1xuaW1wb3J0IENoYXJ0VXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvY2hhcnQvQ2hhcnRVdGlsc1wiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9zZWN0aW9uL0lTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcIjtcbmltcG9ydCB0eXBlIHsgQ29uc3VtZXJEYXRhIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvc2VjdGlvbi9JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IERpbWVuc2lvblR5cGUsIE1lYXN1cmVUeXBlLCBWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1ByZXNlbnRhdGlvblZhcmlhbnRcIjtcbmltcG9ydCBQcmVzZW50YXRpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9QcmVzZW50YXRpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSB7IENhcmRNYW5pZmVzdCB9IGZyb20gXCJzYXAvaW5zaWdodHMvQ2FyZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWVudUl0ZW0gZnJvbSBcInNhcC9tL01lbnVJdGVtXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgRXZlbnQsIGRlZmF1bHQgYXMgVUk1RXZlbnQgfSBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIEJhc2VPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL09iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIExheW91dERhdGEgZnJvbSBcInNhcC91aS9jb3JlL0xheW91dERhdGFcIjtcbmltcG9ydCB7IFRpdGxlTGV2ZWwgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgTURDQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIENoYXJ0RGVsZWdhdGUgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnREZWxlZ2F0ZVwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uVG9vbGJhckFjdGlvbiBmcm9tIFwic2FwL3VpL21kYy9hY3Rpb250b29sYmFyL0FjdGlvblRvb2xiYXJBY3Rpb25cIjtcbmltcG9ydCB0eXBlIHsgQXBwU3RhdGUsIEl0ZW1zLCBTb3J0ZXJzIH0gZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIE1vZGVsQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5SW5mbyB9IGZyb20gXCIuL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IE1hY3JvQVBJIGZyb20gXCIuL01hY3JvQVBJXCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvbk9yQWN0aW9uR3JvdXAsIENoYXJ0Q29udGV4dE9iamVjdFBhdGgsIENoYXJ0Q3VzdG9tRGF0YSwgQ29tbWFuZEFjdGlvbiB9IGZyb20gXCIuL2NoYXJ0L01kY0NoYXJ0VGVtcGxhdGVcIjtcbmltcG9ydCB7IGdldE1kY0NoYXJ0VGVtcGxhdGUgfSBmcm9tIFwiLi9jaGFydC9NZGNDaGFydFRlbXBsYXRlXCI7XG5pbXBvcnQgdHlwZSBPdmVyZmxvd0dyb3VwIGZyb20gXCIuL2NoYXJ0L092ZXJmbG93R3JvdXBcIjtcbmltcG9ydCBQcmVzZW50YXRpb25WYXJpYW50VG9TdGF0ZVV0aWxzUFYgZnJvbSBcIi4vY2hhcnQvYWRhcHRlci9DaGFydFB2VG9TdGF0ZVV0aWxzXCI7XG5pbXBvcnQgeyBjcmVhdGVDaGFydENhcmRQYXJhbXMgfSBmcm9tIFwiLi9pbnNpZ2h0cy9BbmFseXRpY2FsSW5zaWdodHNIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgQ29udHJvbFN0YXRlIH0gZnJvbSBcIi4vaW5zaWdodHMvQ29tbW9uSW5zaWdodHNIZWxwZXJcIjtcbmltcG9ydCB7IGhhc0luc2lnaHRBY3Rpb25FbmFibGVkLCBzaG93R2VuZXJpY0Vycm9yTWVzc2FnZSB9IGZyb20gXCIuL2luc2lnaHRzL0NvbW1vbkluc2lnaHRzSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IENoYXJ0Q29udGVudCwgSW5zaWdodHNQYXJhbXMgfSBmcm9tIFwiLi9pbnNpZ2h0cy9JbnNpZ2h0c1NlcnZpY2VcIjtcbmltcG9ydCB7IGdldENhcmRNYW5pZmVzdCwgc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FyZFByZXZpZXcsIHNob3dJbnNpZ2h0c0NhcmRQcmV2aWV3IH0gZnJvbSBcIi4vaW5zaWdodHMvSW5zaWdodHNTZXJ2aWNlXCI7XG5pbXBvcnQgU3RhdGVIZWxwZXIgZnJvbSBcIi4vbWRjL2FkYXB0ZXIvU3RhdGVIZWxwZXJcIjtcblxuZXhwb3J0IHR5cGUgQ2hhcnRTdGF0ZSA9IHtcblx0aW5uZXJDaGFydD86IHtcblx0XHRpbml0aWFsU3RhdGU/OiB7XG5cdFx0XHRpdGVtcz86IHsgbmFtZTogc3RyaW5nIH1bXTtcblx0XHR9O1xuXHRcdGZ1bGxTdGF0ZT86IHtcblx0XHRcdGl0ZW1zPzogeyBuYW1lOiBzdHJpbmcgfVtdO1xuXHRcdFx0ZmlsdGVyPzogb2JqZWN0O1xuXHRcdH07XG5cdH07XG5cdHZhcmlhbnRNYW5hZ2VtZW50Pzoge1xuXHRcdHZhcmlhbnRJZD86IHN0cmluZyB8IG51bGw7XG5cdH07XG59ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gY3JlYXRlIGEgY2hhcnQgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICoge0BsaW5rIGRlbW86c2FwL2ZlL2NvcmUvZnBtRXhwbG9yZXIvaW5kZXguaHRtbCMvYnVpbGRpbmdCbG9ja3MvY2hhcnQvY2hhcnREZWZhdWx0IE92ZXJ2aWV3IG9mIEJ1aWxkaW5nIEJsb2Nrc31cbiAqIDxicj5cbiAqIFVzdWFsbHksIGEgY29udGV4dFBhdGggYW5kIG1ldGFQYXRoIGlzIGV4cGVjdGVkLlxuICpcbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6Q2hhcnQgaWQ9XCJNeUNoYXJ0XCIgY29udGV4dFBhdGg9XCIvUm9vdEVudGl0eVwiIG1ldGFQYXRoPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCIgLyZndDtcbiAqIDwvcHJlPlxuICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuQ2hhcnRcbiAqIEBpZ25vcmVJbnRlcmZhY2Ugc2FwLmZlLm1hY3Jvcy5jb250cm9scy5zZWN0aW9uLklTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcbiAqIEB1aTUtbWV0YW1vZGVsXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuQ2hhcnRcIiwgeyByZXR1cm5UeXBlczogW1wic2FwLmZlLm1hY3Jvcy5NYWNyb0FQSVwiXSB9KVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhcnQgZXh0ZW5kcyBNYWNyb0FQSSBpbXBsZW1lbnRzIElTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3IsIElWaWV3U3RhdGVDb250cmlidXRvcjxDaGFydFN0YXRlPiB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX2ZlX2NvcmVfY29udHJvbGxlcmV4dGVuc2lvbnNfdmlld1N0YXRlX0lWaWV3U3RhdGVDb250cmlidXRvciA9IHRydWU7XG5cblx0Y29udGVudCE6IE1EQ0NoYXJ0O1xuXG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLnNlY3Rpb24uSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF9mZV9tYWNyb3NfY29udHJvbHNfc2VjdGlvbl9JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yID0gdHJ1ZTtcblxuXHRnZXRTZWN0aW9uQ29udGVudFJvbGUoKTogXCJwcm92aWRlclwiIHwgXCJjb25zdW1lclwiIHtcblx0XHRyZXR1cm4gXCJjb25zdW1lclwiO1xuXHR9XG5cblx0LyoqXG5cdCAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZW5kRGF0YVRvQ29uc3VtZXIgbWV0aG9kIHdoaWNoIGlzIGEgcGFydCBvZiB0aGUgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclxuXHQgKlxuXHQgKiBXaWxsIGJlIGNhbGxlZCBmcm9tIHRoZSBzYXAuZmUubWFjcm9zLmNvbnRyb2xzLlNlY3Rpb24gY29udHJvbCB3aGVuIHRoZXJlIGlzIGEgQ2hhcnQgYnVpbGRpbmcgYmxvY2sgcmVuZGVyZWQgd2l0aGluIGEgc2VjdGlvblxuXHQgKiBhbG9uZyB3aXRoIHRoZSBjb25zdW1lckRhdGEgaS5lLiBzZWN0aW9uJ3MgZGF0YSBzdWNoIGFzIHRpdGxlIGFuZCB0aXRsZSBsZXZlbCB3aGljaCBpcyB0aGVuIGFwcGxpZWQgdG8gdGhlIGNoYXJ0IHVzaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBiZWxvdyBhY2NvcmRpbmdseS5cblx0ICpcblx0ICovXG5cblx0c2VuZERhdGFUb0NvbnN1bWVyKGNvbnN1bWVyRGF0YTogQ29uc3VtZXJEYXRhKTogdm9pZCB7XG5cdFx0dGhpcy5jb250ZW50Py5zZXRIZWFkZXIoY29uc3VtZXJEYXRhLnRpdGxlKTtcblx0XHR0aGlzLmNvbnRlbnQ/LnNldEhlYWRlclN0eWxlKFwiSDRcIik7XG5cdFx0dGhpcy5jb250ZW50Py5zZXRIZWFkZXJMZXZlbChjb25zdW1lckRhdGEudGl0bGVMZXZlbCBhcyBUaXRsZUxldmVsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJRCBvZiB0aGUgY2hhcnRcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0cmVhZG9ubHkgaWQhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIE1ldGFkYXRhIHBhdGggdG8gdGhlIHByZXNlbnRhdGlvbiBjb250ZXh0IChVSS5DaGFydCB3aXRoIG9yIHdpdGhvdXQgYSBxdWFsaWZpZXIpXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdLFxuXHRcdGV4cGVjdGVkQW5ub3RhdGlvbnM6IFtcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRcIixcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUHJlc2VudGF0aW9uVmFyaWFudFwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XCJcblx0XHRdXG5cdH0pXG5cdHJlYWRvbmx5IG1ldGFQYXRoITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBNZXRhZGF0YSBwYXRoIHRvIHRoZSBlbnRpdHlTZXQgb3IgbmF2aWdhdGlvblByb3BlcnR5XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdLFxuXHRcdGV4cGVjdGVkQW5ub3RhdGlvbnM6IFtdXG5cdH0pXG5cdHJlYWRvbmx5IGNvbnRleHRQYXRoITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIGhlYWRlciB0ZXh0IHRoYXQgaXMgc2hvd24gaW4gdGhlIGNoYXJ0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0cmVhZG9ubHkgaGVhZGVyITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgaGVhZGVyIHRleHQgc2hvdWxkIGJlIHNob3duIG9yIG5vdFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0pXG5cdHJlYWRvbmx5IGhlYWRlclZpc2libGUhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBzZWxlY3Rpb24gbW9kZSB0byBiZSB1c2VkIGJ5IHRoZSBjaGFydC5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBOb25lYCwgYFNpbmdsZWAgb3IgYE11bHRpcGxlYFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBkZWZhdWx0VmFsdWU6IFwiTXVsdGlwbGVcIiwgYWxsb3dlZFZhbHVlczogW1wiTm9uZVwiLCBcIlNpbmdsZVwiLCBcIk11bHRpcGxlXCJdIH0pXG5cdHJlYWRvbmx5IHNlbGVjdGlvbk1vZGUhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHRoZSBraW5kIG9mIHZhcmlhbnQgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBlbmFibGVkIGZvciB0aGUgY2hhcnQuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWUgaXMgYENvbnRyb2xgLjxici8+XG5cdCAqIElmIHNldCB3aXRoIHZhbHVlIGBDb250cm9sYCwgYSB2YXJpYW50IG1hbmFnZW1lbnQgY29udHJvbCBpcyBzZWVuIHdpdGhpbiB0aGUgY2hhcnQgYW5kIHRoZSBjaGFydCBpcyBsaW5rZWQgdG8gdGhpcy48YnIvPlxuXHQgKiBJZiBub3Qgc2V0IHdpdGggYW55IHZhbHVlLCB2YXJpYW50IG1hbmFnZW1lbnQgY29udHJvbCBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIGNoYXJ0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBhbGxvd2VkVmFsdWVzOiBbXCJDb250cm9sXCJdIH0pXG5cdHJlYWRvbmx5IHZhcmlhbnRNYW5hZ2VtZW50ITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB3aGljaCBvcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIGZvciB0aGUgY2hhcnQgcGVyc29uYWxpemF0aW9uIGRpYWxvZy5cblx0ICpcblx0ICogSWYgaXQgaXMgc2V0IHRvIGB0cnVlYCwgYWxsIHBvc3NpYmxlIG9wdGlvbnMgZm9yIHRoaXMga2luZCBvZiBjaGFydCBhcmUgZW5hYmxlZC48YnIvPlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYGZhbHNlYCwgcGVyc29uYWxpemF0aW9uIGlzIGRpc2FibGVkLjxici8+XG5cdCAqIDxici8+XG5cdCAqIFlvdSBjYW4gYWxzbyBwcm92aWRlIGEgbW9yZSBncmFudWxhciBjb250cm9sIGZvciB0aGUgcGVyc29uYWxpemF0aW9uIGJ5IHByb3ZpZGluZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGggdGhlIG9wdGlvbnMgeW91IHdhbnQgdG8gYmUgYXZhaWxhYmxlLjxici8+XG5cdCAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTo8YnIvPlxuXHQgKiAtIFNvcnQ8YnIvPlxuXHQgKiAtIFR5cGU8YnIvPlxuXHQgKiAtIEl0ZW08YnIvPlxuXHQgKiAtIEZpbHRlcjxici8+XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9KVxuXHRyZWFkb25seSBwZXJzb25hbGl6YXRpb24hOiBzdHJpbmcgfCBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBIZWFkZXIgbGV2ZWwgb2YgY2hhcnRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0cmVhZG9ubHkgaGVhZGVyTGV2ZWw6IFRpdGxlTGV2ZWwgPSBUaXRsZUxldmVsLkF1dG87XG5cblx0LyoqXG5cdCAqIENoYXJ0IGRlbGVnYXRlXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdHJlYWRvbmx5IGNoYXJ0RGVsZWdhdGU/OiBvYmplY3Q7XG5cblx0LyoqXG5cdCAqIFVzZWQgaW50ZXJuYWxseSBmb3IgTFIgYW5kIE9QXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRyZWFkb25seSBfYXBwbHlJZFRvQ29udGVudCA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBObyBkYXRhIHRleHRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0cmVhZG9ubHkgbm9EYXRhVGV4dD86IHN0cmluZztcblxuXHQvKipcblx0ICogUGFyYW1ldGVyIHdpdGggZHJpbGxzdGFjayBvbiBhIGRyaWxsIHVwLyBkcmlsbCBkb3duIG9mIHRoZSBNRENfQ2hhcnRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHByZXZEcmlsbFN0YWNrOiBzdHJpbmdbXSA9IFtdO1xuXG5cdF9jb250ZW50SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRfY29udGV4dCE6IE1vZGVsQ29udGV4dDtcblxuXHRibG9ja0FjdGlvbnM/OiBBY3Rpb25PckFjdGlvbkdyb3VwO1xuXG5cdF9ibG9ja0lkPzogc3RyaW5nO1xuXG5cdF9wZXJzb25hbGl6YXRpb24/OiBzdHJpbmcgfCBib29sZWFuO1xuXG5cdGluaXRpYWxDb250cm9sU3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cblx0X2Jsb2NrQWN0aW9ucyE6IChNZW51SXRlbSB8IEFjdGlvblRvb2xiYXJBY3Rpb24gfCB1bmRlZmluZWQpW107XG5cblx0Y2hhcnREZWZpbml0aW9uITogQ2hhcnRWaXN1YWxpemF0aW9uO1xuXG5cdG5hdmlnYXRpb25QYXRoPzogc3RyaW5nO1xuXG5cdGF1dG9CaW5kT25Jbml0PzogYm9vbGVhbjtcblxuXHR2aXpQcm9wZXJ0aWVzPzogc3RyaW5nO1xuXG5cdGNoYXJ0QWN0aW9ucz86IEJhc2VBY3Rpb25bXSA9IFtdO1xuXG5cdG92ZXJmbG93R3JvdXBzPzogT3ZlcmZsb3dHcm91cHNDb25maWd1cmF0aW9uO1xuXG5cdGZpbHRlcj86IHN0cmluZztcblxuXHR2aXNpYmxlPzogc3RyaW5nO1xuXG5cdGRyYWZ0U3VwcG9ydGVkPzogYm9vbGVhbjtcblxuXHRoZWFkZXJTdHlsZT86IFRpdGxlTGV2ZWw7XG5cblx0dXNlQ29uZGVuc2VkTGF5b3V0ITogYm9vbGVhbjtcblxuXHRfbWV0YVBhdGhDb250ZXh0ITogTW9kZWxDb250ZXh0O1xuXG5cdF9jdXN0b21EYXRhITogQ2hhcnRDdXN0b21EYXRhO1xuXG5cdF9jaGFydENvbnRleHQhOiBNb2RlbENvbnRleHQ7XG5cblx0X2NoYXJ0VHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdF9jaGFydCE6IFZvY2FidWxhcnlDaGFydDtcblxuXHRfbWV0YU1vZGVsITogT0RhdGFNZXRhTW9kZWw7XG5cblx0bWVhc3VyZXM/OiBNb2RlbENvbnRleHQ7XG5cblx0X3NvcnRDb25kaXRpb25zOiBvYmplY3QgfCB1bmRlZmluZWQ7XG5cblx0X2NvbW1hbmRBY3Rpb25zOiBDb21tYW5kQWN0aW9uW10gPSBbXTtcblxuXHRmaXJlVmFyaWFudFNlbGVjdGVkPzogRnVuY3Rpb247XG5cblx0ZmlyZVZhcmlhbnRTYXZlZD86IEZ1bmN0aW9uO1xuXG5cdGZpcmVTZWdtZW50ZWRCdXR0b25QcmVzc2VkPzogRnVuY3Rpb247XG5cblx0X3Jlc29sdmVkQ29udGV4dFBhdGg/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIElkIG9mIHRoZSBGaWx0ZXJCYXIgYnVpbGRpbmcgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBjaGFydC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIgfSlcblx0ZmlsdGVyQmFyPzogc3RyaW5nO1xuXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAudWkuY29yZS5MYXlvdXREYXRhXCJcblx0fSlcblx0bGF5b3V0RGF0YSE6IExheW91dERhdGE7XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBhY3Rpb25zIG9mIHRoZSBjaGFydC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MuY2hhcnQuQWN0aW9uXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5mZS5tYWNyb3MuY2hhcnQuQWN0aW9uR3JvdXBcIl0sXG5cdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0ZGVmYXVsdENsYXNzOiBBY3Rpb25cblx0fSlcblx0YWN0aW9ucyE6IEFjdGlvbltdIHwgQWN0aW9uR3JvdXBbXTtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIG92ZXJmbG93R3JvdXBzIG9mIHRoZSBjaGFydC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MuY2hhcnQuT3ZlcmZsb3dHcm91cFwiLFxuXHRcdG11bHRpcGxlOiB0cnVlXG5cdH0pXG5cdGFjdGlvbk92ZXJmbG93R3JvdXBzPzogT3ZlcmZsb3dHcm91cFtdO1xuXG5cdC8qKlxuXHQgKiBHZXRzIGNvbnRleHRzIGZyb20gdGhlIGNoYXJ0IHRoYXQgaGF2ZSBiZWVuIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLlxuXHQgKiBAcmV0dXJucyBDb250ZXh0cyBvZiB0aGUgcm93cyBzZWxlY3RlZCBieSB0aGUgdXNlclxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRTZWxlY3RlZENvbnRleHRzKCk6IENvbnRleHRbXSB7XG5cdFx0cmV0dXJuIHRoaXMuY29udGVudD8uZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCJzZWxlY3RlZENvbnRleHRzXCIpIHx8IFtdO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IHRyaWdnZXJlZCB3aGVuIGNoYXJ0IHNlbGVjdGlvbnMgYXJlIGNoYW5nZWQuIFRoZSBldmVudCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGF0YSBzZWxlY3RlZC9kZXNlbGVjdGVkIGFuZCB0aGUgQm9vbGVhbiBmbGFnIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgZGF0YSBpcyBzZWxlY3RlZCBvciBkZXNlbGVjdGVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRzZWxlY3Rpb25DaGFuZ2UhOiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyBkYXRhOiB1bmtub3duW107IHNlbGVjdGVkOiBib29sZWFuIH0sIENoYXJ0Pj47XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IHRyaWdnZXJlZCB3aGVuIHRoZSBjaGFydCByZXF1ZXN0cyBkYXRhLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QGV2ZW50KClcblx0aW50ZXJuYWxEYXRhUmVxdWVzdGVkITogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEV2ZW50IHRyaWdnZXJlZCB3aGVuIGNoYXJ0J3MgdmFyaWFudCBpcyBzZWxlY3RlZC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBldmVudCgpXG5cdHZhcmlhbnRTZWxlY3RlZD86IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBFdmVudCB0cmlnZ2VyZWQgd2hlbiBjaGFydCdzIHZhcmlhbnQgaXMgc2F2ZWQuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHR2YXJpYW50U2F2ZWQ/OiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogRXZlbnQgdHJpZ2dlcmVkIHdoZW4gY2hhcnQncyBzZWdtZW50ZWQgYnV0dG9uIGkuZS4sIG1vZGUgYmV0d2VlbiB0YWJsZSwgY2hhcnQgYW5kIGNoYXJ0IHdpdGggdGFibGUgdmlldyBpcyBzZWxlY3RlZFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QGV2ZW50KClcblx0c2VnbWVudGVkQnV0dG9uUHJlc3NlZCE6IEZ1bmN0aW9uO1xuXG5cdGNvbnN0cnVjdG9yKHNldHRpbmdzPzogUHJvcGVydGllc09mPENoYXJ0Piwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdGlmIChzZXR0aW5ncz8uX2FwcGx5SWRUb0NvbnRlbnQpIHtcblx0XHRcdHNldHRpbmdzLmlkID0gZ2VuZXJhdGUoW3NldHRpbmdzLmlkLCBcIjo6Q2hhcnRcIl0pO1xuXHRcdH1cblx0XHRzdXBlcihzZXR0aW5ncywgb3RoZXJzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGdW5jdGlvbiBpcyBvdmVycmlkZGVuIHRvIGVuc3VyZSBiYWNrd2FyZCBpbmNvbXBhdGliaWxpdHlcblx0ICogQG92ZXJyaWRlXG5cdCAqL1xuXHRpc0E8VCBleHRlbmRzIEJhc2VPYmplY3QgPSBCYXNlT2JqZWN0Pih0eXBlTmFtZTogc3RyaW5nIHwgc3RyaW5nW10pOiB0aGlzIGlzIFQ7XG5cblx0aXNBPFQ+KHR5cGVOYW1lPzogc3RyaW5nIHwgc3RyaW5nW10pOiB0aGlzIGlzIFQ7XG5cblx0aXNBKHR5cGVOYW1lOiBzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG9sZFZhbGlkVHlwZSA9IFwic2FwLmZlLm1hY3Jvcy5jaGFydC5DaGFydEFQSVwiO1xuXHRcdGlmICgoQXJyYXkuaXNBcnJheSh0eXBlTmFtZSkgJiYgdHlwZU5hbWUuaW5jbHVkZXMob2xkVmFsaWRUeXBlKSkgfHwgdHlwZU5hbWUgPT09IG9sZFZhbGlkVHlwZSkgcmV0dXJuIHRydWU7XG5cblx0XHRyZXR1cm4gc3VwZXIuaXNBKHR5cGVOYW1lKTtcblx0fVxuXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0fVxuXG5cdG9uQWZ0ZXJSZW5kZXJpbmcoYWZ0ZXJSZW5kZXJpbmdFdmVudDogSlF1ZXJ5LkV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgdmlldyA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKT8uZ2V0VmlldygpO1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0OiBJbnRlcm5hbE1vZGVsQ29udGV4dCA9IHZpZXc/LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0Y29uc3QgY2hhcnQgPSB0aGlzLmdldENvbnRlbnQoKSBhcyBDaGFydDtcblx0XHRjb25zdCBzaG93TWVzc2FnZVN0cmlwOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IGludGVybmFsTW9kZWxDb250ZXh0Py5nZXRQcm9wZXJ0eShcImNvbnRyb2xzL3Nob3dNZXNzYWdlU3RyaXBcIikgfHwge307XG5cdFx0Y29uc3Qgc0NoYXJ0RW50aXR5UGF0aCA9IGNoYXJ0LmRhdGEoXCJlbnRpdHlTZXRcIiksXG5cdFx0XHRzQ2FjaGVLZXkgPSBgJHtzQ2hhcnRFbnRpdHlQYXRofUNoYXJ0YCxcblx0XHRcdG9CaW5kaW5nQ29udGV4dCA9IHZpZXc/LmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0c2hvd01lc3NhZ2VTdHJpcFtzQ2FjaGVLZXldID1cblx0XHRcdGNoYXJ0LmRhdGEoXCJkcmFmdFN1cHBvcnRlZFwiKSA9PT0gXCJ0cnVlXCIgJiYgISFvQmluZGluZ0NvbnRleHQgJiYgIW9CaW5kaW5nQ29udGV4dC5nZXRPYmplY3QoXCJJc0FjdGl2ZUVudGl0eVwiKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImNvbnRyb2xzL3Nob3dNZXNzYWdlU3RyaXBcIiwgc2hvd01lc3NhZ2VTdHJpcCk7XG5cdFx0dGhpcy5hdHRhY2hTdGF0ZUNoYW5nZUhhbmRsZXIoKTtcblxuXHRcdHN1cGVyLm9uQWZ0ZXJSZW5kZXJpbmcoYWZ0ZXJSZW5kZXJpbmdFdmVudCk7XG5cdH1cblxuXHRwcml2YXRlIGF0dGFjaFN0YXRlQ2hhbmdlSGFuZGxlcigpOiB2b2lkIHtcblx0XHRTdGF0ZVV0aWwuZGV0YWNoU3RhdGVDaGFuZ2UodGhpcy5zdGF0ZUNoYW5nZUhhbmRsZXIpO1xuXHRcdFN0YXRlVXRpbC5hdHRhY2hTdGF0ZUNoYW5nZSh0aGlzLnN0YXRlQ2hhbmdlSGFuZGxlcik7XG5cdH1cblxuXHRzdGF0ZUNoYW5nZUhhbmRsZXIob0V2ZW50OiBFdmVudDx7IGNvbnRyb2w6IENvbnRyb2wgfT4pOiB2b2lkIHtcblx0XHRjb25zdCBjb250cm9sID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImNvbnRyb2xcIik7XG5cdFx0aWYgKGNvbnRyb2wuaXNBPENoYXJ0PihcInNhcC51aS5tZGMuQ2hhcnRcIikpIHtcblx0XHRcdGNvbnN0IGNoYXJ0QmxvY2sgPSBjb250cm9sLmdldFBhcmVudCgpIGFzIHVua25vd24gYXMgeyBoYW5kbGVTdGF0ZUNoYW5nZT86IEZ1bmN0aW9uIH07XG5cdFx0XHRpZiAoY2hhcnRCbG9jaz8uaGFuZGxlU3RhdGVDaGFuZ2UpIHtcblx0XHRcdFx0Y2hhcnRCbG9jay5oYW5kbGVTdGF0ZUNoYW5nZSgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzKG9GaWx0ZXJDb250cm9sOiBDb250cm9sKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IG9DaGFydCA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdHJldHVybiBGaWx0ZXJVdGlscy5nZXROb3RBcHBsaWNhYmxlRmlsdGVycyhvRmlsdGVyQ29udHJvbCBhcyBGaWx0ZXJCYXIsIG9DaGFydCEpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGhhbmRsZVNlbGVjdGlvbkNoYW5nZShvRXZlbnQ6IFVJNUV2ZW50PHsgZGF0YTogdW5rbm93bltdOyBuYW1lOiBzdHJpbmcgfT4pOiB2b2lkIHtcblx0XHRjb25zdCBhRGF0YSA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJkYXRhXCIpO1xuXHRcdGNvbnN0IGJTZWxlY3RlZCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJuYW1lXCIpID09PSBcInNlbGVjdERhdGFcIjtcblx0XHRDaGFydFJ1bnRpbWUuZm5VcGRhdGVDaGFydChvRXZlbnQpO1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwic2VsZWN0aW9uQ2hhbmdlXCIsIG1lcmdlKHt9LCB7IGRhdGE6IGFEYXRhLCBzZWxlY3RlZDogYlNlbGVjdGVkIH0pKTtcblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkludGVybmFsRGF0YVJlcXVlc3RlZCgpOiB2b2lkIHtcblx0XHR0aGlzLmZpcmVFdmVudChcImludGVybmFsRGF0YVJlcXVlc3RlZFwiKTtcblx0fVxuXG5cdEBjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlcihcImNvbGxhYm9yYXRpb25NYW5hZ2VyXCIsIFwiY29sbGVjdEF2YWlsYWJsZUNhcmRzXCIpXG5cdGFzeW5jIGNvbGxlY3RBdmFpbGFibGVDYXJkcyhjYXJkczogV3JhcHBlZENhcmRbXSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGFjdGlvblRvb2xiYXJJdGVtcyA9IHRoaXMuY29udGVudC5nZXRBY3Rpb25zKCkgYXMgQWN0aW9uVG9vbGJhckFjdGlvbltdO1xuXHRcdGlmIChoYXNJbnNpZ2h0QWN0aW9uRW5hYmxlZChhY3Rpb25Ub29sYmFySXRlbXMsIHRoaXMuY29udGVudC5nZXRGaWx0ZXIoKSkpIHtcblx0XHRcdGNvbnN0IGNhcmQgPSBhd2FpdCB0aGlzLmdldENhcmRNYW5pZmVzdENoYXJ0KCk7XG5cdFx0XHRpZiAoT2JqZWN0LmtleXMoY2FyZCkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRjYXJkcy5wdXNoKHtcblx0XHRcdFx0XHRjYXJkOiBjYXJkLFxuXHRcdFx0XHRcdHRpdGxlOiB0aGlzLmdldENoYXJ0Q29udHJvbCgpLmdldEhlYWRlcigpLFxuXHRcdFx0XHRcdGNhbGxiYWNrOiB0aGlzLm9uQWRkQ2FyZFRvQ29sbGFib3JhdGlvbk1hbmFnZXJDYWxsYmFjay5iaW5kKHRoaXMpXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGhhc1NlbGVjdGlvbnMoKTogYm9vbGVhbiB7XG5cdFx0Ly8gY29uc2lkZXIgY2hhcnQgc2VsZWN0aW9ucyBpbiB0aGUgY3VycmVudCBkcmlsbCBzdGFjayBvciBvbiBhbnkgZnVydGhlciBkcmlsbCBkb3duc1xuXHRcdGNvbnN0IG1kY0NoYXJ0ID0gdGhpcy5jb250ZW50IGFzIHVua25vd24gYXMgTURDQ2hhcnQ7XG5cdFx0aWYgKG1kY0NoYXJ0KSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBjaGFydCA9IChtZGNDaGFydC5nZXRDb250cm9sRGVsZWdhdGUoKSBhcyB1bmtub3duIGFzIENoYXJ0RGVsZWdhdGUpPy5nZXRJbm5lckNoYXJ0KG1kY0NoYXJ0KSBhcyBDaGFydENoYXJ0O1xuXHRcdFx0XHRpZiAoY2hhcnQpIHtcblx0XHRcdFx0XHRjb25zdCBhRGltZW5zaW9ucyA9IENoYXJ0VXRpbHMuZ2V0RGltZW5zaW9uc0Zyb21EcmlsbFN0YWNrKGNoYXJ0KTtcblx0XHRcdFx0XHRjb25zdCBiSXNEcmlsbERvd24gPSBhRGltZW5zaW9ucy5sZW5ndGggPiB0aGlzLnByZXZEcmlsbFN0YWNrLmxlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBiSXNEcmlsbFVwID0gYURpbWVuc2lvbnMubGVuZ3RoIDwgdGhpcy5wcmV2RHJpbGxTdGFjay5sZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgYk5vQ2hhbmdlID0gYURpbWVuc2lvbnMudG9TdHJpbmcoKSA9PT0gdGhpcy5wcmV2RHJpbGxTdGFjay50b1N0cmluZygpO1xuXHRcdFx0XHRcdGxldCBhRmlsdGVyczogRmlsdGVyW107XG5cdFx0XHRcdFx0aWYgKGJJc0RyaWxsVXAgJiYgYURpbWVuc2lvbnMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdFx0XHQvLyBkcmlsbGluZyB1cCB0byBsZXZlbDAgd291bGQgY2xlYXIgYWxsIHNlbGVjdGlvbnNcblx0XHRcdFx0XHRcdGFGaWx0ZXJzID0gQ2hhcnRVdGlscy5nZXRDaGFydFNlbGVjdGlvbnMobWRjQ2hhcnQsIHRydWUpIGFzIEZpbHRlcltdO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyBhcHBseSBmaWx0ZXJzIG9mIHNlbGVjdGlvbnMgb2YgcHJldmlvdXMgZHJpbGxzdGFjayB3aGVuIGRyaWxsaW5nIHVwL2Rvd25cblx0XHRcdFx0XHRcdC8vIHRvIHRoZSBjaGFydCBhbmQgdGFibGVcblx0XHRcdFx0XHRcdGFGaWx0ZXJzID0gQ2hhcnRVdGlscy5nZXRDaGFydFNlbGVjdGlvbnMobWRjQ2hhcnQpIGFzIEZpbHRlcltdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoYklzRHJpbGxEb3duIHx8IGJJc0RyaWxsVXApIHtcblx0XHRcdFx0XHRcdC8vIHVwZGF0ZSB0aGUgZHJpbGxzdGFjayBvbiBhIGRyaWxsIHVwLyBkcmlsbCBkb3duXG5cdFx0XHRcdFx0XHR0aGlzLnByZXZEcmlsbFN0YWNrID0gYURpbWVuc2lvbnM7XG5cdFx0XHRcdFx0XHRyZXR1cm4gYUZpbHRlcnMubGVuZ3RoID4gMDtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGJOb0NoYW5nZSkge1xuXHRcdFx0XHRcdFx0Ly8gYk5vQ2hhbmdlIGlzIHRydWUgd2hlbiBjaGFydCBpcyBzZWxlY3RlZFxuXHRcdFx0XHRcdFx0cmV0dXJuIGFGaWx0ZXJzLmxlbmd0aCA+IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlcnI6IHVua25vd24pIHtcblx0XHRcdFx0TG9nLmVycm9yKGBFcnJvciB3aGlsZSBjaGVja2luZyBmb3Igc2VsZWN0aW9ucyBpbiBDaGFydDogJHtlcnJ9YCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBpbnNpZ2h0c1BhcmFtcyBhbmQgY2FsbCB0aGUgQVBJIHRvIHNob3cgaW5zaWdodHMgY2FyZCBwcmV2aWV3IGZvciBjaGFydHMuXG5cdCAqIEByZXR1cm5zIFVuZGVmaW5lZCBpZiBjYXJkIHByZXZpZXcgaXMgcmVuZGVyZWQuXG5cdCAqL1xuXHRhc3luYyBvbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgaW5zaWdodHNQYXJhbXMgPSBhd2FpdCBjcmVhdGVDaGFydENhcmRQYXJhbXModGhpcyk7XG5cdFx0XHRpZiAoaW5zaWdodHNQYXJhbXMpIHtcblx0XHRcdFx0c2hvd0luc2lnaHRzQ2FyZFByZXZpZXcoaW5zaWdodHNQYXJhbXMpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0c2hvd0dlbmVyaWNFcnJvck1lc3NhZ2UodGhpcy5jb250ZW50KTtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGNhcmQgbWFuaWZlc3Qgb3B0aW1pemVkIGZvciB0aGUgY2hhcnQgY2FzZS5cblx0ICogQHJldHVybnMgUHJvbWlzZSBvZiBDYXJkTWFuaWZlc3Rcblx0ICovXG5cdHByaXZhdGUgYXN5bmMgZ2V0Q2FyZE1hbmlmZXN0Q2hhcnQoKTogUHJvbWlzZTxDYXJkTWFuaWZlc3Q+IHtcblx0XHRjb25zdCBpbnNpZ2h0c1BhcmFtcyA9IGF3YWl0IGNyZWF0ZUNoYXJ0Q2FyZFBhcmFtcyh0aGlzKTtcblx0XHRyZXR1cm4gZ2V0Q2FyZE1hbmlmZXN0KGluc2lnaHRzUGFyYW1zIGFzIEluc2lnaHRzUGFyYW1zPENoYXJ0Q29udGVudD4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gY3JlYXRlIGluc2lnaHRzUGFyYW1zIGFuZCBjYWxsIHRoZSBBUEkgdG8gc2hvdyBpbnNpZ2h0cyBjYXJkIHByZXZpZXcgZm9yIHRhYmxlLlxuXHQgKiBAcGFyYW0gY2FyZCBUaGUgY2FyZCBtYW5pZmVzdCB0byBiZSB1c2VkIGZvciB0aGUgY2FsbGJhY2tcblx0ICogQHJldHVybnMgVW5kZWZpbmVkIGlmIGNhcmQgcHJldmlldyBpcyByZW5kZXJlZC5cblx0ICovXG5cdGFzeW5jIG9uQWRkQ2FyZFRvQ29sbGFib3JhdGlvbk1hbmFnZXJDYWxsYmFjayhjYXJkOiBDYXJkTWFuaWZlc3QpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0aWYgKGNhcmQpIHtcblx0XHRcdFx0YXdhaXQgc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FyZFByZXZpZXcoXG5cdFx0XHRcdFx0Y2FyZCxcblx0XHRcdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LmNvbGxhYm9yYXRpb25NYW5hZ2VyLmdldFNlcnZpY2UoKSBhcyBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2Vcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdHNob3dHZW5lcmljRXJyb3JNZXNzYWdlKHRoaXMuY29udGVudCk7XG5cdFx0XHRMb2cuZXJyb3IoZSBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBmaWx0ZXJzIHJlbGF0ZWQgdG8gdGhlIGNoYXJ0LlxuXHQgKiBAcmV0dXJucyAgVGhlIGZpbHRlciBjb25maWd1cmVkIG9uIHRoZSBjaGFydCBvciB1bmRlZmluZWQgaWYgbm9uZVxuXHQgKi9cblx0Z2V0RmlsdGVyKCk6IEZpbHRlciB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgY2hhcnRGaWx0ZXJJbmZvID0gQ2hhcnRVdGlscy5nZXRBbGxGaWx0ZXJJbmZvKHRoaXMuY29udGVudCBhcyB1bmtub3duIGFzIE1EQ0NoYXJ0KTtcblx0XHRpZiAoY2hhcnRGaWx0ZXJJbmZvLmZpbHRlcnMubGVuZ3RoKSB7XG5cdFx0XHRjaGFydEZpbHRlckluZm8uZmlsdGVycy5mb3JFYWNoKChmaWx0ZXIpID0+IHtcblx0XHRcdFx0aWYgKGZpbHRlci5nZXRQYXRoKCkpIHtcblx0XHRcdFx0XHQoZmlsdGVyIGFzIHVua25vd24gYXMgeyBzUGF0aDogc3RyaW5nIH0pLnNQYXRoID0gdGhpcy5nZXRDaGFydFByb3BlcnRpZXNXaXRob3V0UHJlZml4ZXMoZmlsdGVyLmdldFBhdGgoKSEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBuZXcgRmlsdGVyKHsgZmlsdGVyczogY2hhcnRGaWx0ZXJJbmZvLmZpbHRlcnMsIGFuZDogdHJ1ZSB9KTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBjaGFydCBjb250cm9sIGZyb20gdGhlIENoYXJ0IEFQSS5cblx0ICogQHJldHVybnMgVGhlIENoYXJ0IGNvbnRyb2wgaW5zaWRlIHRoZSBDaGFydCBBUElcblx0ICovXG5cdGdldENoYXJ0Q29udHJvbCgpOiBNRENDaGFydCB7XG5cdFx0cmV0dXJuIHRoaXMuY29udGVudDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBkYXRhbW9kZWwgb2JqZWN0IHBhdGggZm9yIHRoZSBkaW1lbnNpb24uXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgIE5hbWUgb2YgdGhlIGRpbWVuc2lvblxuXHQgKiBAcmV0dXJucyBUaGUgZGF0YW1vZGVsIG9iamVjdCBwYXRoIGZvciB0aGUgZGltZW5zaW9uXG5cdCAqL1xuXG5cdGdldFByb3BlcnR5RGF0YU1vZGVsKHByb3BlcnR5TmFtZTogc3RyaW5nKTogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4gfCBudWxsIHtcblx0XHRjb25zdCBtZXRhUGF0aCA9IHRoaXMuY29udGVudC5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIikgYXMgc3RyaW5nO1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9ICh0aGlzLmNvbnRlbnQuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBkaW1lbnNpb25Db250ZXh0ID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KGAke21ldGFQYXRofS8ke3Byb3BlcnR5TmFtZX1gKSBhcyBDb250ZXh0O1xuXHRcdHJldHVybiBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8UHJvcGVydHk+KGRpbWVuc2lvbkNvbnRleHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBhcnJheSBvZiBjaGFydCBwcm9wZXJ0aWVzIGJ5IHJlbW92aW5nIF9mZV9ncm91cGFibGUgYW5kIF9mZV9hZ2dyZWdhdGFibGUgcHJlZml4LlxuXHQgKiBAcGFyYW0ge0FycmF5fSBhUHJvcGVydGllcyBDaGFydCBmaWx0ZXIgcHJvcGVydGllc1xuXHQgKiBAcmV0dXJucyBDaGFydCBwcm9wZXJ0aWVzIHdpdGhvdXQgcHJlZml4ZXNcblx0ICovXG5cblx0Z2V0Q2hhcnRQcm9wZXJ0aWVzV2l0aG91dFByZWZpeGVzKGNoYXJ0UHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0aWYgKGNoYXJ0UHJvcGVydHkgJiYgY2hhcnRQcm9wZXJ0eS5pbmNsdWRlcyhcImZlX2dyb3VwYWJsZVwiKSkge1xuXHRcdFx0Y2hhcnRQcm9wZXJ0eSA9IHRoaXMuZ2V0SW50ZXJuYWxDaGFydE5hbWVGcm9tUHJvcGVydHlOYW1lQW5kS2luZChjaGFydFByb3BlcnR5LCBcImdyb3VwYWJsZVwiKTtcblx0XHR9IGVsc2UgaWYgKGNoYXJ0UHJvcGVydHkgJiYgY2hhcnRQcm9wZXJ0eS5pbmNsdWRlcyhcImZlX2FnZ3JlZ2F0YWJsZVwiKSkge1xuXHRcdFx0Y2hhcnRQcm9wZXJ0eSA9IHRoaXMuZ2V0SW50ZXJuYWxDaGFydE5hbWVGcm9tUHJvcGVydHlOYW1lQW5kS2luZChjaGFydFByb3BlcnR5LCBcImFnZ3JlZ2F0YWJsZVwiKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNoYXJ0UHJvcGVydHk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIElEIHdoaWNoIHNob3VsZCBiZSB1c2VkIGluIHRoZSBpbnRlcm5hbCBjaGFydCBmb3IgdGhlIG1lYXN1cmUgb3IgZGltZW5zaW9uLlxuXHQgKiBAcGFyYW0gbmFtZSBJRCBvZiB0aGUgcHJvcGVydHlcblx0ICogQHBhcmFtIGtpbmQgVHlwZSBvZiB0aGUgcHJvcGVydHkgKG1lYXN1cmUgb3IgZGltZW5zaW9uKVxuXHQgKiBAcmV0dXJucyBJbnRlcm5hbCBJRCBmb3IgdGhlIHNhcC5jaGFydC5DaGFydFxuXHQgKi9cblxuXHRnZXRJbnRlcm5hbENoYXJ0TmFtZUZyb21Qcm9wZXJ0eU5hbWVBbmRLaW5kKG5hbWU6IHN0cmluZywga2luZDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gbmFtZS5yZXBsYWNlKFwiX2ZlX1wiICsga2luZCArIFwiX1wiLCBcIlwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIHRoZSBjaGFydCdzIHN0YXRlVXRpbCAgdG8gQ2hhcnQgUHJlc2VudGF0aW9uIFZhcmlhbnQuXG5cdCAqIEBwYXJhbSBjaGFydFN0YXRlIENoYXJ0IEFwcFN0YXRlIHV0aWwgUFZcblx0ICogQHJldHVybnMgUHJlc2VudGF0aW9uIFZhcmlhbnQgc3RydWN0dXJlIGZvciB0aGUgY2hhcnRcblx0ICovXG5cdF9jb252ZXJ0U3RhdGVVdGlsVG9QcmVzZW50YXRpb25WYXJpYW50KGNoYXJ0U3RhdGU6IEFwcFN0YXRlKTogUHJlc2VudGF0aW9uVmFyaWFudCB7XG5cdFx0Y29uc3Qgc29ydE9yZGVyID0gY2hhcnRTdGF0ZS5zb3J0ZXJzPy5tYXAoKHNvcnRlcjogU29ydGVycykgPT4ge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0UHJvcGVydHk6IHRoaXMuZ2V0Q2hhcnRQcm9wZXJ0aWVzV2l0aG91dFByZWZpeGVzKHNvcnRlci5uYW1lKSxcblx0XHRcdFx0RGVzY2VuZGluZzogc29ydGVyLmRlc2NlbmRpbmdcblx0XHRcdH07XG5cdFx0fSk7XG5cdFx0Y29uc3QgdHlwZSA9IGNoYXJ0U3RhdGUuc3VwcGxlbWVudGFyeUNvbmZpZz8ucHJvcGVydGllcz8uY2hhcnRUeXBlO1xuXHRcdGNvbnN0IGNoYXJ0VHlwZUluUmVxdWlyZWRGb3JtYXQgPSB0eXBlID8gdHlwZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHR5cGUuc2xpY2UoMSkgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgY2hhcnRUeXBlID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFR5cGUvXCIgKyBjaGFydFR5cGVJblJlcXVpcmVkRm9ybWF0O1xuXHRcdGNvbnN0IGRpbWVuc2lvbnM6IHN0cmluZ1tdID0gW10sXG5cdFx0XHRtZWFzdXJlczogc3RyaW5nW10gPSBbXSxcblx0XHRcdGRpbWVuc2lvbkF0dHJpYnV0ZXM6IERpbWVuc2lvblR5cGVbXSA9IFtdLFxuXHRcdFx0bWVhc3VyZUF0dHJpYnV0ZXM6IE1lYXN1cmVUeXBlW10gPSBbXTtcblx0XHQoY2hhcnRTdGF0ZS5pdGVtcyA/PyBbXSkuZm9yRWFjaCgoaXRlbTogSXRlbXMpID0+IHtcblx0XHRcdGl0ZW0ubmFtZSA9IHRoaXMuZ2V0Q2hhcnRQcm9wZXJ0aWVzV2l0aG91dFByZWZpeGVzKGl0ZW0ubmFtZSk7XG5cdFx0XHRjb25zdCByb2xlID0gaXRlbS5yb2xlPy5sZW5ndGhcblx0XHRcdFx0PyBpdGVtLnJvbGUuc3Vic3RyaW5nKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBpdGVtLnJvbGU/LnN1YnN0cmluZygxLCBpdGVtLnJvbGUubGVuZ3RoKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdGlmIChpdGVtLnJvbGUgPT09IFwiY2F0ZWdvcnlcIiB8fCBpdGVtLnJvbGUgPT09IFwic2VyaWVzXCIgfHwgaXRlbS5yb2xlID09PSBcImNhdGVnb3J5MlwiKSB7XG5cdFx0XHRcdGRpbWVuc2lvbnMucHVzaChpdGVtLm5hbWUpO1xuXHRcdFx0XHRkaW1lbnNpb25BdHRyaWJ1dGVzLnB1c2goe1xuXHRcdFx0XHRcdERpbWVuc2lvbjogaXRlbS5uYW1lLFxuXHRcdFx0XHRcdFJvbGU6IGBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydERpbWVuc2lvblJvbGVUeXBlLyR7cm9sZX1gXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bWVhc3VyZXMucHVzaChpdGVtLm5hbWUpO1xuXHRcdFx0XHRtZWFzdXJlQXR0cmlidXRlcy5wdXNoKHsgTWVhc3VyZTogaXRlbS5uYW1lLCBSb2xlOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0RGltZW5zaW9uUm9sZVR5cGUvXCIgKyByb2xlIH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgY2hhcnRWaXo6IFZpc3VhbGl6YXRpb24gPSB7XG5cdFx0XHRDb250ZW50OiB7XG5cdFx0XHRcdENoYXJ0VHlwZTogY2hhcnRUeXBlLFxuXHRcdFx0XHREaW1lbnNpb25BdHRyaWJ1dGVzOiBkaW1lbnNpb25BdHRyaWJ1dGVzLFxuXHRcdFx0XHREaW1lbnNpb25zOiBkaW1lbnNpb25zLFxuXHRcdFx0XHRNZWFzdXJlQXR0cmlidXRlczogbWVhc3VyZUF0dHJpYnV0ZXMsXG5cdFx0XHRcdE1lYXN1cmVzOiBtZWFzdXJlc1xuXHRcdFx0fSxcblx0XHRcdFR5cGU6IFwiQ2hhcnRcIlxuXHRcdH07XG5cdFx0Y29uc3QgY2hhcnRQViA9IG5ldyBQcmVzZW50YXRpb25WYXJpYW50KCk7XG5cdFx0Y2hhcnRQVi5zZXRDaGFydFZpc3VhbGl6YXRpb24oY2hhcnRWaXopO1xuXHRcdGNoYXJ0UFYuc2V0UHJvcGVydGllcyh7XG5cdFx0XHRTb3J0T3JkZXI6IHNvcnRPcmRlciA/PyBbXVxuXHRcdH0pO1xuXHRcdHJldHVybiBjaGFydFBWO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgcHJlc2VudGF0aW9uIHZhcmlhbnQgdGhhdCBpcyBjdXJyZW50bHkgYXBwbGllZCBvbiB0aGUgY2hhcnQuXG5cdCAqIEByZXR1cm5zIFRoZSBwcmVzZW50YXRpb24gdmFyaWFudCB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uUHJlc2VudGF0aW9uVmFyaWFudH0gYXBwbGllZCB0byB0aGUgY2hhcnRcblx0ICogQHB1YmxpY1xuXHQgKi9cblxuXHRhc3luYyBnZXRQcmVzZW50YXRpb25WYXJpYW50KCk6IFByb21pc2U8UHJlc2VudGF0aW9uVmFyaWFudD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjaGFydFN0YXRlID0gYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQpO1xuXHRcdFx0cmV0dXJuIHRoaXMuX2NvbnZlcnRTdGF0ZVV0aWxUb1ByZXNlbnRhdGlvblZhcmlhbnQoY2hhcnRTdGF0ZSk7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGNvbnN0IGlkOiBzdHJpbmcgPSB0aGlzLmdldElkKCk7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuXHRcdFx0TG9nLmVycm9yKGBDaGFydCBCdWlsZGluZyBCbG9jayAoJHtpZH0pIC0gZ2V0IHByZXNlbnRhdGlvbiB2YXJpYW50IGZhaWxlZCA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIHByZXNlbnRhdGlvbiB2YXJpYW50IGZvciB0aGUgbWRjIGNoYXJ0LlxuXHQgKlxuXHQgKiBUaGUganNvbiBmb3JtYXQgcmV0cmlldmVkIGJ5IHVzaW5nIHRoZSBnZXQgUHJlc2VudGF0aW9uVmFyaWFudCBidXR0b24gaW4gdGhlIGxpbmtlZCBGUE0gc2FtcGxlIHNob3VsZCBiZSBmb2xsb3dlZCB3aGlsZSB0cnlpbmcgdG8gc2V0IHRoZSBQcmVzZW50YXRpb25WYXJpYW50IGFzIG5lZWRlZC5cblx0ICogVGhlIHZhbHVlcyBkaW1lbnNpb25zLCBtZWFzdXJlcyBhbmQgb3RoZXIgcHJvcGVydGllcyBzaG91bGQgYWxzbyBiZSBnaXZlbiBpbiB0aGUgdmFsaWQgZm9ybWF0IGFuZCBudWxsIG9yIGVtcHR5IHZhbHVlcyBzaG91bGQgYmUgYXZvaWRlZC5cblx0ICogT25lIGRpbWVuc2lvbiBhdHRyaWJ1dGUgc2hvdWxkIGhhdmUgb25seSBvbmUgcm9sZSBhc3NvY2lhdGVkIHdpdGggaXQgb24gYSBnaXZlbiBjaGFydC5cblx0ICogQHBhcmFtIHByZXNlbnRhdGlvblZhcmlhbnQgdGhlIHByZXNlbnRhdGlvbiB2YXJpYW50IHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5QcmVzZW50YXRpb25WYXJpYW50fSB0byBiZSBzZXRcblx0ICogQHB1YmxpY1xuXHQgKi9cblxuXHRhc3luYyBzZXRQcmVzZW50YXRpb25WYXJpYW50KHByZXNlbnRhdGlvblZhcmlhbnQ6IFByZXNlbnRhdGlvblZhcmlhbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgY2hhcnQgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0XHRjb25zdCBleGlzdGluZ1ByZXNlbnRhdGlvblZhcmlhbnQgPSBhd2FpdCB0aGlzLmdldFByZXNlbnRhdGlvblZhcmlhbnQoKTtcblx0XHRcdGNvbnN0IHByb3BlcnRpZXNJbmZvID0gKGF3YWl0IChjaGFydC5nZXRDb250cm9sRGVsZWdhdGUoKSBhcyBDaGFydERlbGVnYXRlKT8uZmV0Y2hQcm9wZXJ0aWVzKFxuXHRcdFx0XHRjaGFydFxuXHRcdFx0KSkgYXMgdW5rbm93biBhcyBQcm9wZXJ0eUluZm9bXTtcblxuXHRcdFx0Y29uc3Qgc3RhdGVVdGlsUHYgPSBQcmVzZW50YXRpb25WYXJpYW50VG9TdGF0ZVV0aWxzUFYuY29udmVydFB2VG9TdGF0ZVV0aWxQdihcblx0XHRcdFx0cHJlc2VudGF0aW9uVmFyaWFudCxcblx0XHRcdFx0ZXhpc3RpbmdQcmVzZW50YXRpb25WYXJpYW50LFxuXHRcdFx0XHRwcm9wZXJ0aWVzSW5mb1xuXHRcdFx0KTtcblxuXHRcdFx0YXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZShjaGFydCwgc3RhdGVVdGlsUHYpO1xuXHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblx0XHRcdExvZy5lcnJvcihgRkU6IENoYXJ0IEJ1aWxkaW5nIEJsb2NrIHNldFByZXNlbnRhdGlvblZhcmlhbnQgQVBJIGZhaWxlZCB3aXRoIGVycm9yOiAke21lc3NhZ2V9YCk7XG5cdFx0XHR0aHJvdyBFcnJvcihtZXNzYWdlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUga2V5IG9mIHRoZSBjdXJyZW50IHZhcmlhbnQgaW4gdGhlIGFzc29jaWF0ZWQgdmFyaWFudCBtYW5hZ2VtZW50LlxuXHQgKiBAcmV0dXJucyBWYXJpYW50IGtleSBvZiB7QGxpbmsgc2FwLnVpLmZsLnZhcmlhbnRzLlZhcmlhbnRNYW5hZ2VtZW50fSBhcHBsaWVkIHRvIHRoZSBjaGFydFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRDdXJyZW50VmFyaWFudEtleSgpOiBzdHJpbmcgfCBudWxsIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50LmdldFZhcmlhbnQoKS5nZXRDdXJyZW50VmFyaWFudEtleSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHZhcmlhbnQgb2YgdGhlIHByb3ZpZGVkIGtleSBpbiB0aGUgYXNzb2NpYXRlZCB2YXJpYW50IG1hbmFnZW1lbnQuXG5cdCAqIEBwYXJhbSBrZXkgVGhlIHZhcmlhbnQga2V5IG9mIHtAbGluayBzYXAudWkuZmwudmFyaWFudHMuVmFyaWFudE1hbmFnZW1lbnR9IHRvIGJlIHNldFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRzZXRDdXJyZW50VmFyaWFudEtleShrZXk6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IHZhcmlhbnRNYW5hZ2VtZW50ID0gdGhpcy5jb250ZW50LmdldFZhcmlhbnQoKTtcblx0XHR2YXJpYW50TWFuYWdlbWVudC5zZXRDdXJyZW50VmFyaWFudEtleShrZXkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgc2VsZWN0aW9uIHZhcmlhbnQgZnJvbSB0aGUgY2hhcnQuIFRoaXMgZnVuY3Rpb24gY29uc2lkZXJzIG9ubHkgdGhlIHNlbGVjdGlvbiB2YXJpYW50IGFwcGxpZWQgYXQgdGhlIGNvbnRyb2wgbGV2ZWwuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGgge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlNlbGVjdGlvblZhcmlhbnR9LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBnZXRTZWxlY3Rpb25WYXJpYW50KCk6IFByb21pc2U8U2VsZWN0aW9uVmFyaWFudD4ge1xuXHRcdHJldHVybiBTdGF0ZUhlbHBlci5nZXRTZWxlY3Rpb25WYXJpYW50KHRoaXMuY29udGVudCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH0gdG8gdGhlIGNoYXJ0LiBOb3RlOiBzZXRTZWxlY3Rpb25WYXJpYW50IHdpbGwgY2xlYXIgZXhpc3RpbmcgZmlsdGVycyBhbmQgdGhlbiBhcHBseSB0aGUgU2VsZWN0aW9uVmFyaWFudCB2YWx1ZXMuXG5cdCAqIEBwYXJhbSBzZWxlY3Rpb25WYXJpYW50IFRoZSB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH0gdG8gYXBwbHkgdG8gdGhlIGNoYXJ0XG5cdCAqIEBwYXJhbSBwcmVmaWxsRGVzY3JpcHRpb25zIE9wdGlvbmFsLiBJZiB0cnVlLCB3ZSB3aWxsIHVzZSB0aGUgYXNzb2NpYXRlZCB0ZXh0IHByb3BlcnR5IHZhbHVlcyAoaWYgdGhleSdyZSBhdmFpbGFibGUgaW4gdGhlIFNlbGVjdGlvblZhcmlhbnQpIHRvIGRpc3BsYXkgdGhlIGZpbHRlciB2YWx1ZSBkZXNjcmlwdGlvbnMsIGluc3RlYWQgb2YgbG9hZGluZyB0aGVtIGZyb20gdGhlIGJhY2tlbmRcblx0ICogQHJldHVybnMgQSBwcm9taXNlIGZvciBhc3luY2hyb25vdXMgaGFuZGxpbmdcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgc2V0U2VsZWN0aW9uVmFyaWFudChzZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50LCBwcmVmaWxsRGVzY3JpcHRpb25zID0gZmFsc2UpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRyZXR1cm4gU3RhdGVIZWxwZXIuc2V0U2VsZWN0aW9uVmFyaWFudFRvTWRjQ29udHJvbCh0aGlzLmdldENvbnRlbnQoKSwgc2VsZWN0aW9uVmFyaWFudCwgcHJlZmlsbERlc2NyaXB0aW9ucyk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBjb250cm9sIHN0YXRlIGJhc2VkIG9uIHRoZSBnaXZlbiBjb250cm9sIHN0YXRlIGtleS5cblx0ICogQHBhcmFtIGNvbnRyb2xTdGF0ZSBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgY29udHJvbC5cblx0ICogQHJldHVybnMgLSBUaGUgZnVsbCBzdGF0ZSBvZiB0aGUgY29udHJvbCBhbG9uZyB3aXRoIHRoZSBpbml0aWFsIHN0YXRlIGlmIGF2YWlsYWJsZS5cblx0ICovXG5cdGdldENvbnRyb2xTdGF0ZShjb250cm9sU3RhdGU6IENvbnRyb2xTdGF0ZSk6IENvbnRyb2xTdGF0ZSB7XG5cdFx0Y29uc3QgaW5pdGlhbENvbnRyb2xTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB0aGlzLmluaXRpYWxDb250cm9sU3RhdGU7XG5cdFx0aWYgKGNvbnRyb2xTdGF0ZSkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0ZnVsbFN0YXRlOiBjb250cm9sU3RhdGUgYXMgb2JqZWN0LFxuXHRcdFx0XHRpbml0aWFsU3RhdGU6IGluaXRpYWxDb250cm9sU3RhdGUgYXMgb2JqZWN0XG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4gY29udHJvbFN0YXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGNvbnRyb2wgYnkgcmV0cmlldmluZyB0aGUgZXh0ZXJuYWwgc3RhdGUuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGluaXRpYWwgc3RhdGUgaXMgc2V0LlxuXHQgKi9cblx0YXN5bmMgc2V0SW5pdGlhbFN0YXRlKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBpbml0aWFsQ29udHJvbFN0YXRlID0gYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQpO1xuXHRcdFx0dGhpcy5pbml0aWFsQ29udHJvbFN0YXRlID0gaW5pdGlhbENvbnRyb2xTdGF0ZTtcblx0XHR9IGNhdGNoIChlOiB1bmtub3duKSB7XG5cdFx0XHRMb2cuZXJyb3IoZSBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBc3luY2hyb25vdXNseSByZXRyaWV2ZXMgdGhlIHN0YXRlIG9mIHRoZSBjaGFydCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmlld3N0YXRlLlxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY2hhcnQgc3RhdGUgb3IgbnVsbCBpZiBub3QgZm91bmQuXG5cdCAqL1xuXHRhc3luYyByZXRyaWV2ZVN0YXRlKCk6IFByb21pc2U8Q2hhcnRTdGF0ZSB8IG51bGw+IHtcblx0XHRjb25zdCBjaGFydFN0YXRlOiBDaGFydFN0YXRlID0ge307XG5cdFx0Y2hhcnRTdGF0ZS5pbm5lckNoYXJ0ID0gdGhpcy5nZXRDb250cm9sU3RhdGUoYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQpKSBhcyBvYmplY3Q7XG5cdFx0Y29uc3QgdmFyaWFudFRvUmV0cmlldmUgPSB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpPy5nZXRJZCgpO1xuXHRcdGlmICh2YXJpYW50VG9SZXRyaWV2ZSkge1xuXHRcdFx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnRDb250cm9sID0gdGhpcy5jb250ZW50LmdldFZhcmlhbnQoKTtcblx0XHRcdGlmICghY2hhcnRTdGF0ZS52YXJpYW50TWFuYWdlbWVudCkge1xuXHRcdFx0XHRjaGFydFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50ID0geyB2YXJpYW50SWQ6IHZhcmlhbnRNYW5hZ2VtZW50Q29udHJvbD8uZ2V0Q3VycmVudFZhcmlhbnRLZXkoKSB9O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2hhcnRTdGF0ZS52YXJpYW50TWFuYWdlbWVudC52YXJpYW50SWQgPSB2YXJpYW50TWFuYWdlbWVudENvbnRyb2w/LmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBjaGFydFN0YXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFwcGxpZXMgdGhlIGxlZ2FjeSBzdGF0ZSB0byB0aGUgY2hhcnQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbnRyb2wgc3RhdGUgcmV0cmlldmFsIGZ1bmN0aW9uLlxuXHQgKiBAcGFyYW0gZ2V0Q29udHJvbFN0YXRlIEZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZSBjb250cm9sIHN0YXRlLlxuXHQgKiBAcGFyYW0gW19uYXZQYXJhbWV0ZXJzXSBPcHRpb25hbCBuYXZpZ2F0aW9uIHBhcmFtZXRlcnMuXG5cdCAqIEBwYXJhbSBbc2hvdWxkQXBwbHlEaWZmU3RhdGVdIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRvIGFwcGx5IHRoZSBkaWZmIHN0YXRlLlxuXHQgKiBAcmV0dXJucyAtIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHN0YXRlIGhhcyBiZWVuIGFwcGxpZWQuXG5cdCAqL1xuXHRhc3luYyBhcHBseUxlZ2FjeVN0YXRlKFxuXHRcdGdldENvbnRyb2xTdGF0ZTogKGNvbnRyb2w6IE1hbmFnZWRPYmplY3QpID0+IENvbnRyb2xTdGF0ZSxcblx0XHRfbmF2UGFyYW1ldGVycz86IE5hdmlnYXRpb25QYXJhbWV0ZXIsXG5cdFx0c2hvdWxkQXBwbHlEaWZmU3RhdGU/OiBib29sZWFuXG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGNoYXJ0ID0gdGhpcy5jb250ZW50O1xuXHRcdGNvbnN0IHZtID0gY2hhcnQuZ2V0VmFyaWFudCgpO1xuXG5cdFx0Y29uc3QgY2hhcnRTdGF0ZSA9IGdldENvbnRyb2xTdGF0ZShjaGFydCkgYXMgeyBpbml0aWFsU3RhdGU/OiBDaGFydFN0YXRlOyBmdWxsU3RhdGU/OiBDaGFydFN0YXRlIH07XG5cdFx0Y29uc3Qgdm1TdGF0ZSA9IHZtID8gZ2V0Q29udHJvbFN0YXRlKHZtKSA6IG51bGw7XG5cblx0XHRjb25zdCBjb250cm9sU3RhdGU6IENoYXJ0U3RhdGUgPSB7fTtcblxuXHRcdGlmIChjaGFydFN0YXRlKSB7XG5cdFx0XHRjb250cm9sU3RhdGUuaW5uZXJDaGFydCA9IHtcblx0XHRcdFx0Li4uY29udHJvbFN0YXRlLmlubmVyQ2hhcnQsXG5cdFx0XHRcdC4uLmNoYXJ0U3RhdGUsXG5cdFx0XHRcdGZ1bGxTdGF0ZToge1xuXHRcdFx0XHRcdC4uLmNvbnRyb2xTdGF0ZS5pbm5lckNoYXJ0Py5mdWxsU3RhdGUsXG5cdFx0XHRcdFx0Li4uY2hhcnRTdGF0ZS5mdWxsU3RhdGVcblx0XHRcdFx0fSxcblx0XHRcdFx0aW5pdGlhbFN0YXRlOiB7XG5cdFx0XHRcdFx0Li4uY29udHJvbFN0YXRlLmlubmVyQ2hhcnQ/LmluaXRpYWxTdGF0ZSxcblx0XHRcdFx0XHQuLi5jaGFydFN0YXRlLmluaXRpYWxTdGF0ZVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGlmICh2bVN0YXRlPy52YXJpYW50SWQpIHtcblx0XHRcdGNvbnRyb2xTdGF0ZS52YXJpYW50TWFuYWdlbWVudCA9IHtcblx0XHRcdFx0Li4uY29udHJvbFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50LFxuXHRcdFx0XHR2YXJpYW50SWQ6IHZtU3RhdGUudmFyaWFudElkLnRvU3RyaW5nKClcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0aWYgKGNvbnRyb2xTdGF0ZSAmJiBPYmplY3Qua2V5cyhjb250cm9sU3RhdGUpLmxlbmd0aCA+IDApIHtcblx0XHRcdGF3YWl0IHRoaXMuYXBwbHlTdGF0ZShjb250cm9sU3RhdGUgYXMgQ29udHJvbFN0YXRlLCBfbmF2UGFyYW1ldGVycywgc2hvdWxkQXBwbHlEaWZmU3RhdGUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBhcHBsaWNhdGlvbiBvZiBhIHZhcmlhbnQgSUQgcGFzc2VkIHZpYSBVUkwgcGFyYW1ldGVycy5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdmFyaWFudCBoYXMgYmVlbiBhcHBsaWVkLlxuXHQgKi9cblx0YXN5bmMgaGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zKCk6IFByb21pc2U8dW5rbm93bj4ge1xuXHRcdGNvbnN0IHVybFBhcmFtcyA9IGF3YWl0IHRoaXMuZ2V0U3RhcnR1cFBhcmFtZXRlcnMoKTtcblx0XHRjb25zdCBjaGFydFZhcmlhbnRJZCA9IHVybFBhcmFtc1tcInNhcC11aS1mZS1jaGFydC12YXJpYW50LWlkXCJdPy5bMF07XG5cdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGhpcyk7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSB2aWV3LmdldFZpZXdEYXRhKCk7XG5cdFx0Y29uc3Qgdm1UeXBlID0gdmlld0RhdGEudmFyaWFudE1hbmFnZW1lbnQ7XG5cdFx0Y29uc3Qgdm0gPSAodGhpcy5nZXRDb250ZW50KCkgYXMgTURDQ2hhcnQpPy5nZXRWYXJpYW50KCk7XG5cdFx0aWYgKHZtICYmIGNoYXJ0VmFyaWFudElkICYmIHR5cGVvZiBjaGFydFZhcmlhbnRJZCA9PT0gXCJzdHJpbmdcIiAmJiB2bVR5cGUgPT09IFwiQ29udHJvbFwiKSB7XG5cdFx0XHRjb25zdCB2YXJpYW50VG9BcHBseSA9IHZtLmdldFZhcmlhbnRzKCkuZmluZCgodmFyaWFudCkgPT4gdmFyaWFudC5nZXRLZXkoKSA9PT0gY2hhcnRWYXJpYW50SWQpO1xuXHRcdFx0Y29uc3QgQ29udHJvbFZhcmlhbnRBcHBseUFQSSA9IChhd2FpdCBpbXBvcnQoXCJzYXAvdWkvZmwvYXBwbHkvYXBpL0NvbnRyb2xWYXJpYW50QXBwbHlBUElcIikpLmRlZmF1bHQ7XG5cdFx0XHRyZXR1cm4gQ29udHJvbFZhcmlhbnRBcHBseUFQSS5hY3RpdmF0ZVZhcmlhbnQoe1xuXHRcdFx0XHRlbGVtZW50OiB2bSxcblx0XHRcdFx0dmFyaWFudFJlZmVyZW5jZTogdmFyaWFudFRvQXBwbHk/LmdldEtleSgpXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBzdGFydHVwIHBhcmFtZXRlcnMgZnJvbSB0aGUgYXBwbGljYXRpb24gY29tcG9uZW50IGRhdGEuXG5cdCAqIFRoZXNlIHBhcmFtZXRlcnMgY29udGFpbiBVUkwgcXVlcnkgcGFyYW1ldGVycyB0aGF0IHdlcmUgcGFzc2VkIHdoZW4gdGhlIGFwcGxpY2F0aW9uIHdhcyBzdGFydGVkLlxuXHQgKiBAcmV0dXJucyBUaGUgc3RhcnR1cCBwYXJhbWV0ZXJzLlxuXHQgKi9cblx0YXN5bmMgZ2V0U3RhcnR1cFBhcmFtZXRlcnMoKTogUHJvbWlzZTxTdGFydHVwUGFyYW1ldGVycz4ge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKTtcblx0XHRyZXR1cm4gYXBwQ29tcG9uZW50LmdldFN0YXJ0dXBQYXJhbWV0ZXJzKCk7XG5cdH1cblxuXHQvKipcblx0ICogQXN5bmNocm9ub3VzbHkgYXBwbGllcyBuYXZpZ2F0aW9uIHBhcmFtZXRlcnMgdG8gdGhlIGNoYXJ0LlxuXHQgKiBAcGFyYW0gbmF2aWdhdGlvblBhcmFtZXRlciBUaGUgbmF2aWdhdGlvbiBwYXJhbWV0ZXJzIHRvIGJlIGFwcGxpZWQuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHBhcmFtZXRlcnMgaGF2ZSBiZWVuIGFwcGxpZWQuXG5cdCAqL1xuXHRhc3luYyBhcHBseU5hdmlnYXRpb25QYXJhbWV0ZXJzKG5hdmlnYXRpb25QYXJhbWV0ZXI6IE5hdmlnYXRpb25QYXJhbWV0ZXIpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Ly8gT25seSBoYW5kbGUgdmFyaWFudCBJRCBmcm9tIFVSTCBwYXJhbWV0ZXJzIGlmIGFwcGx5VmFyaWFudEZyb21VUkxQYXJhbXMgaXMgdHJ1ZVxuXHRcdFx0aWYgKG5hdmlnYXRpb25QYXJhbWV0ZXIuYXBwbHlWYXJpYW50RnJvbVVSTFBhcmFtcyA/PyBmYWxzZSkge1xuXHRcdFx0XHRhd2FpdCB0aGlzLmhhbmRsZVZhcmlhbnRJZFBhc3NlZFZpYVVSTFBhcmFtcygpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG5cdFx0XHRMb2cuZXJyb3IoXG5cdFx0XHRcdGBFcnJvciB0cnlpbmcgdG8gYXBwbHkgbmF2aWdhdGlvbiBwYXJhbWV0ZXJzIHRvICR7dGhpcy5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKX0gY29udHJvbCB3aXRoIElEOiAke3RoaXMuZ2V0SWQoKX1gLFxuXHRcdFx0XHRlcnJvciBhcyBFcnJvclxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFzeW5jaHJvbm91c2x5IGFwcGxpZXMgdGhlIHByb3ZpZGVkIGNvbnRyb2wgc3RhdGUgdG8gdGhlIHZpZXdzdGF0ZS5cblx0ICogQHBhcmFtIGNvbnRyb2xTdGF0ZSBUaGUgc3RhdGUgdG8gYmUgYXBwbGllZCB0byB0aGUgY29udHJvbC5cblx0ICogQHBhcmFtIFtfbmF2UGFyYW1ldGVyc10gT3B0aW9uYWwgbmF2aWdhdGlvbiBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0gW3Nob3VsZEFwcGx5RGlmZlN0YXRlXSBPcHRpb25hbCBmbGFnIHRvIHNraXAgbWVyZ2luZyBzdGF0ZXMuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHN0YXRlIGhhcyBiZWVuIGFwcGxpZWQuXG5cdCAqL1xuXHRhc3luYyBhcHBseVN0YXRlKGNvbnRyb2xTdGF0ZTogQ2hhcnRTdGF0ZSwgX25hdlBhcmFtZXRlcnM/OiBOYXZpZ2F0aW9uUGFyYW1ldGVyLCBzaG91bGRBcHBseURpZmZTdGF0ZT86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIWNvbnRyb2xTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgdmFyaWFudElkID0gY29udHJvbFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50Py52YXJpYW50SWQ7XG5cdFx0Y29uc3QgY3VycmVudFZhcmlhbnQgPSB0aGlzLmNvbnRlbnQ/LmdldFZhcmlhbnQoKTtcblxuXHRcdC8vIEhhbmRsZSBWYXJpYW50IE1hbmFnZW1lbnRcblx0XHRpZiAodmFyaWFudElkICE9PSB1bmRlZmluZWQgJiYgdmFyaWFudElkICE9PSBjdXJyZW50VmFyaWFudC5nZXRDdXJyZW50VmFyaWFudEtleSgpKSB7XG5cdFx0XHRjb25zdCBvdk0gPSB0aGlzLmNvbnRlbnQ/LmdldFZhcmlhbnQoKTtcblx0XHRcdGNvbnN0IGFWYXJpYW50cyA9IG92TT8uZ2V0VmFyaWFudHMoKTtcblx0XHRcdGNvbnN0IHNWYXJpYW50UmVmZXJlbmNlID0gYVZhcmlhbnRzPy5zb21lKChvVmFyaWFudCkgPT4gb1ZhcmlhbnQuZ2V0S2V5KCkgPT09IHZhcmlhbnRJZClcblx0XHRcdFx0PyB2YXJpYW50SWRcblx0XHRcdFx0OiBvdk0/LmdldFN0YW5kYXJkVmFyaWFudEtleTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkgPSAoYXdhaXQgaW1wb3J0KFwic2FwL3VpL2ZsL2FwcGx5L2FwaS9Db250cm9sVmFyaWFudEFwcGx5QVBJXCIpKS5kZWZhdWx0O1xuXHRcdFx0XHRhd2FpdCBDb250cm9sVmFyaWFudEFwcGx5QVBJLmFjdGl2YXRlVmFyaWFudCh7XG5cdFx0XHRcdFx0ZWxlbWVudDogb3ZNLFxuXHRcdFx0XHRcdHZhcmlhbnRSZWZlcmVuY2U6IHNWYXJpYW50UmVmZXJlbmNlIGFzIHN0cmluZ1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0YXdhaXQgdGhpcy5zZXRJbml0aWFsU3RhdGUoKTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihlcnJvciBhcyBzdHJpbmcpO1xuXHRcdFx0XHRhd2FpdCB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyB3ZSBuZWVkIHRvIHVwZGF0ZSBpbml0aWFsIHN0YXRlIGV2ZW4gaWYgYWJvdmUgY29uZGl0aW9uIG5vdCBzYXRpc2ZpZWRcblx0XHRcdGF3YWl0IHRoaXMuc2V0SW5pdGlhbFN0YXRlKCk7XG5cdFx0fVxuXG5cdFx0Ly8gSGFuZGxlIElubmVyIENoYXJ0IFN0YXRlXG5cdFx0Y29uc3QgaW5uZXJDaGFydFN0YXRlID0gY29udHJvbFN0YXRlLmlubmVyQ2hhcnQ7XG5cdFx0bGV0IGZpbmFsU3RhdGU7XG5cblx0XHRpZiAoaW5uZXJDaGFydFN0YXRlKSB7XG5cdFx0XHRpZiAoc2hvdWxkQXBwbHlEaWZmU3RhdGUgJiYgaW5uZXJDaGFydFN0YXRlLmluaXRpYWxTdGF0ZSkge1xuXHRcdFx0XHRmaW5hbFN0YXRlID0gYXdhaXQgU3RhdGVVdGlsLmRpZmZTdGF0ZShcblx0XHRcdFx0XHR0aGlzLmNvbnRlbnQsXG5cdFx0XHRcdFx0aW5uZXJDaGFydFN0YXRlLmluaXRpYWxTdGF0ZSBhcyBvYmplY3QsXG5cdFx0XHRcdFx0aW5uZXJDaGFydFN0YXRlLmZ1bGxTdGF0ZSBhcyBvYmplY3Rcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZpbmFsU3RhdGUgPSBpbm5lckNoYXJ0U3RhdGUuZnVsbFN0YXRlO1xuXHRcdFx0fVxuXHRcdFx0YXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQsIGZpbmFsU3RhdGUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsZWQgYnkgdGhlIE1EQyBzdGF0ZSB1dGlsIHdoZW4gdGhlIHN0YXRlIGZvciB0aGlzIGNvbnRyb2wncyBjaGlsZCBoYXMgY2hhbmdlZC5cblx0ICovXG5cdGhhbmRsZVN0YXRlQ2hhbmdlKCk6IHZvaWQge1xuXHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKT8uZ2V0RXh0ZW5zaW9uQVBJKCkudXBkYXRlQXBwU3RhdGUoKTtcblx0fVxuXG5cdF9jcmVhdGVDb250ZW50KCk6IHZvaWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5UZW1wbGF0ZUNvbXBvbmVudFwiKSkge1xuXHRcdFx0Ly8gV2UgbmVlZCB0byByZW1vdmUgdGhlIGN1cnJlbnQgZmlsdGVyIGZyb20gdGhlIG9sZCAodG8gYmUgZGVzdHJveWVkKSBDaGFydCBpbnN0YW5jZSBiZWNhdXNlIGlmIHdlIGRvbid0IHRoZW4gZm9yIHNvbWUgc3RyYW5nZSByZWFzb24sIHRoZSBvbGQgQ2hhcnQgaW5zdGFuY2UgdXNlZCB0b1xuXHRcdFx0Ly8gcmVhY3QgZm9yIGZpbHRlciBiYXIgYWN0aW9uLCBmb3IgZXhhbXBsZSwgb24gQ2xpY2sgb2YgR28uXG5cdFx0XHR0aGlzLmNvbnRlbnQuc2V0RmlsdGVyKFwiXCIpO1xuXHRcdFx0dGhpcy5jb250ZW50LmRlc3Ryb3koKTtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0fVxuXG5cdHNldFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBzdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdGhpcyB7XG5cdFx0aWYgKCF0aGlzLl9hcHBseWluZ1NldHRpbmdzICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgT2JqZWN0LmtleXModGhpcy5nZXRNZXRhZGF0YSgpLmdldFByb3BlcnRpZXMoKSkuaW5jbHVkZXMoa2V5KSkge1xuXHRcdFx0c3VwZXIuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSwgdHJ1ZSk7XG5cdFx0XHR0aGlzLl9jcmVhdGVDb250ZW50KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLnNldFByb3BlcnR5KGtleSwgdmFsdWUsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cmVtb3ZlQWdncmVnYXRpb24obmFtZTogc3RyaW5nLCB2YWx1ZTogTWFuYWdlZE9iamVjdCB8IG51bWJlciB8IHN0cmluZywgc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IE1hbmFnZWRPYmplY3QgfCBudWxsIHtcblx0XHRsZXQgcmVtb3ZlZDogTWFuYWdlZE9iamVjdCB8IG51bGw7XG5cdFx0aWYgKCF0aGlzLl9hcHBseWluZ1NldHRpbmdzICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgT2JqZWN0LmtleXModGhpcy5nZXRNZXRhZGF0YSgpLmdldEFnZ3JlZ2F0aW9ucygpKS5pbmNsdWRlcyhuYW1lKSkge1xuXHRcdFx0cmVtb3ZlZCA9IHN1cGVyLnJlbW92ZUFnZ3JlZ2F0aW9uKG5hbWUsIHZhbHVlLCBzdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdFx0dGhpcy5fY3JlYXRlQ29udGVudCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZW1vdmVkID0gc3VwZXIucmVtb3ZlQWdncmVnYXRpb24obmFtZSwgdmFsdWUsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiByZW1vdmVkO1xuXHR9XG5cblx0YWRkQWdncmVnYXRpb24obmFtZTogc3RyaW5nLCB2YWx1ZTogTWFuYWdlZE9iamVjdCwgc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHRoaXMge1xuXHRcdGlmICghdGhpcy5fYXBwbHlpbmdTZXR0aW5ncyAmJiBPYmplY3Qua2V5cyh0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWdncmVnYXRpb25zKCkpLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0XHRzdXBlci5hZGRBZ2dyZWdhdGlvbihuYW1lLCB2YWx1ZSwgc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHRcdHRoaXMuX2NyZWF0ZUNvbnRlbnQoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXIuYWRkQWdncmVnYXRpb24obmFtZSwgdmFsdWUsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0aW5zZXJ0QWdncmVnYXRpb24obmFtZTogc3RyaW5nLCB2YWx1ZTogTWFuYWdlZE9iamVjdCwgaW5kZXg6IG51bWJlciwgc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHRoaXMge1xuXHRcdGlmICghdGhpcy5fYXBwbHlpbmdTZXR0aW5ncyAmJiBPYmplY3Qua2V5cyh0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWdncmVnYXRpb25zKCkpLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0XHRzdXBlci5pbnNlcnRBZ2dyZWdhdGlvbihuYW1lLCB2YWx1ZSwgaW5kZXgsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0XHR0aGlzLl9jcmVhdGVDb250ZW50KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLmluc2VydEFnZ3JlZ2F0aW9uKG5hbWUsIHZhbHVlLCBpbmRleCwgc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KCk6IE1EQ0NoYXJ0IHtcblx0XHRpZiAodGhpcy5jb250ZXh0UGF0aCkge1xuXHRcdFx0dGhpcy5fcmVzb2x2ZWRDb250ZXh0UGF0aCA9IHRoaXMuY29udGV4dFBhdGguZW5kc1dpdGgoXCIvXCIpID8gdGhpcy5jb250ZXh0UGF0aCA6IHRoaXMuY29udGV4dFBhdGggKyBcIi9cIjtcblx0XHR9XG5cblx0XHRyZXR1cm4gZ2V0TWRjQ2hhcnRUZW1wbGF0ZShcblx0XHRcdHRoaXMsXG5cdFx0XHR0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpPy5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSA/PyAodGhpcy5fZ2V0T3duZXIoKT8uZ2V0Vmlld0RhdGEoKSBhcyB1bmtub3duIGFzIFZpZXdEYXRhKSxcblx0XHRcdHRoaXMuZ2V0QXBwQ29tcG9uZW50KCk/LmdldERpYWdub3N0aWNzKCkgPz8gKHt9IGFzIERpYWdub3N0aWNzKSxcblx0XHRcdHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8Q2hhcnRDb250ZXh0T2JqZWN0UGF0aD4odGhpcy5tZXRhUGF0aCwgdGhpcy5fcmVzb2x2ZWRDb250ZXh0UGF0aCkhXG5cdFx0KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUZBO0FBQ0E7QUFD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QUFBOFIseUJBQUEsQ0FBQTdULE9BQUEsQ0FBQXdDLFNBQUEsMkJBQUFyRCxNQUFBO0lBQUEyVSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWpTLGFBQUEsR0FBQTZSLHlCQUFBLENBQUE3VCxPQUFBLENBQUF3QyxTQUFBLHNCQUFBcEQsTUFBQTtJQUFBMFUsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFoUyxhQUFBLEdBQUE0Uix5QkFBQSxDQUFBN1QsT0FBQSxDQUFBd0MsU0FBQSw0QkFBQWxELE1BQUE7SUFBQXdVLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBL1IsYUFBQSxHQUFBMlIseUJBQUEsQ0FBQTdULE9BQUEsQ0FBQXdDLFNBQUEsc0JBQUFqRCxNQUFBO0lBQUF1VSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTlSLGFBQUEsR0FBQTBSLHlCQUFBLENBQUE3VCxPQUFBLENBQUF3QyxTQUFBLG1CQUFBaEQsTUFBQTtJQUFBc1UsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUE3UixhQUFBLEdBQUF5Uix5QkFBQSxDQUFBN1QsT0FBQSxDQUFBd0MsU0FBQSw2QkFBQS9DLE1BQUE7SUFBQXFVLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBSix5QkFBQSxDQUFBN1QsT0FBQSxDQUFBd0MsU0FBQSw0QkFBQTlDLE1BQUEsR0FBQW1ILE1BQUEsQ0FBQXVOLHdCQUFBLENBQUFwVSxPQUFBLENBQUF3QyxTQUFBLDRCQUFBeEMsT0FBQSxDQUFBd0MsU0FBQSxHQUFBcVIseUJBQUEsQ0FBQTdULE9BQUEsQ0FBQXdDLFNBQUEsOEJBQUE1QyxNQUFBLEdBQUFpSCxNQUFBLENBQUF1Tix3QkFBQSxDQUFBcFUsT0FBQSxDQUFBd0MsU0FBQSw4QkFBQXhDLE9BQUEsQ0FBQXdDLFNBQUEsR0FBQXFSLHlCQUFBLENBQUE3VCxPQUFBLENBQUF3QyxTQUFBLDRCQUFBM0MsTUFBQSxHQUFBZ0gsTUFBQSxDQUFBdU4sd0JBQUEsQ0FBQXBVLE9BQUEsQ0FBQXdDLFNBQUEsNEJBQUF4QyxPQUFBLENBQUF3QyxTQUFBLEdBQUF4QyxPQUFBLE1BQUFELE1BQUE7RUFBQXNDLFFBQUEsR0FBQXJGLEtBQUE7RUFBQSxPQUFBcUYsUUFBQTtBQUFBIiwiaWdub3JlTGlzdCI6W119