@sapui5/sap.fe.macros 1.139.0 → 1.140.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Field.js +65 -55
  4. package/src/sap/fe/macros/Field.ts +83 -57
  5. package/src/sap/fe/macros/FooterContent.js +5 -2
  6. package/src/sap/fe/macros/FooterContent.tsx +4 -1
  7. package/src/sap/fe/macros/MessageButton.js +1 -2
  8. package/src/sap/fe/macros/MessageButton.tsx +0 -1
  9. package/src/sap/fe/macros/MultiValueField.js +1 -3
  10. package/src/sap/fe/macros/MultiValueField.tsx +0 -2
  11. package/src/sap/fe/macros/Share.js +14 -2
  12. package/src/sap/fe/macros/Share.tsx +13 -0
  13. package/src/sap/fe/macros/Status.js +226 -0
  14. package/src/sap/fe/macros/Status.tsx +192 -0
  15. package/src/sap/fe/macros/ValueHelp.js +4 -28
  16. package/src/sap/fe/macros/ValueHelp.tsx +2 -42
  17. package/src/sap/fe/macros/ai/EasyFilterBar.js +105 -96
  18. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +122 -103
  19. package/src/sap/fe/macros/ai/SummarizationButton.js +2 -2
  20. package/src/sap/fe/macros/ai/SummarizationButton.tsx +1 -1
  21. package/src/sap/fe/macros/chart/ChartHelper.js +1 -2
  22. package/src/sap/fe/macros/chart/ChartHelper.ts +0 -1
  23. package/src/sap/fe/macros/chart/ChartRuntime.js +1 -2
  24. package/src/sap/fe/macros/chart/ChartRuntime.ts +0 -1
  25. package/src/sap/fe/macros/chart/MdcChartTemplate.js +2 -4
  26. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +1 -4
  27. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +3 -1
  28. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +2 -0
  29. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +2 -2
  30. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -2
  31. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +43 -4
  32. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -1
  33. package/src/sap/fe/macros/designtime/Designtime.helper.js +28 -1
  34. package/src/sap/fe/macros/designtime/Designtime.helper.ts +27 -0
  35. package/src/sap/fe/macros/field/FieldBaseDelegate.js +13 -7
  36. package/src/sap/fe/macros/field/FieldBaseDelegate.ts +12 -8
  37. package/src/sap/fe/macros/field/FieldRuntime.js +1 -2
  38. package/src/sap/fe/macros/field/FieldRuntime.ts +0 -1
  39. package/src/sap/fe/macros/filter/FilterUtils.js +3 -5
  40. package/src/sap/fe/macros/filter/FilterUtils.ts +2 -4
  41. package/src/sap/fe/macros/form/Form.js +1 -4
  42. package/src/sap/fe/macros/form/Form.tsx +0 -3
  43. package/src/sap/fe/macros/form/FormContainer.block.js +1 -2
  44. package/src/sap/fe/macros/form/FormContainer.block.ts +0 -1
  45. package/src/sap/fe/macros/form/FormDelegate.js +20 -1
  46. package/src/sap/fe/macros/form/FormDelegate.ts +25 -0
  47. package/src/sap/fe/macros/form/FormHelper.js +1 -2
  48. package/src/sap/fe/macros/form/FormHelper.ts +0 -1
  49. package/src/sap/fe/macros/fpm/CustomFragment.block.js +1 -2
  50. package/src/sap/fe/macros/fpm/CustomFragment.block.ts +0 -1
  51. package/src/sap/fe/macros/internal/ActionCommand.block.js +1 -2
  52. package/src/sap/fe/macros/internal/ActionCommand.block.ts +0 -1
  53. package/src/sap/fe/macros/internal/FilterField.block.js +7 -1
  54. package/src/sap/fe/macros/internal/FilterField.block.ts +8 -0
  55. package/src/sap/fe/macros/internal/field/DisplayStyle.js +3 -3
  56. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +2 -2
  57. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +1 -1
  58. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +1 -0
  59. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +46 -8
  60. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +60 -6
  61. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +38 -2
  62. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +37 -2
  63. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -1
  64. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +10 -3
  65. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +13 -2
  66. package/src/sap/fe/macros/library.js +1 -1
  67. package/src/sap/fe/macros/messagebundle.properties +5 -3
  68. package/src/sap/fe/macros/messagebundle_ar.properties +7 -1
  69. package/src/sap/fe/macros/messagebundle_bg.properties +7 -1
  70. package/src/sap/fe/macros/messagebundle_ca.properties +10 -4
  71. package/src/sap/fe/macros/messagebundle_cnr.properties +7 -1
  72. package/src/sap/fe/macros/messagebundle_cs.properties +6 -0
  73. package/src/sap/fe/macros/messagebundle_cy.properties +8 -2
  74. package/src/sap/fe/macros/messagebundle_da.properties +7 -1
  75. package/src/sap/fe/macros/messagebundle_de.properties +13 -7
  76. package/src/sap/fe/macros/messagebundle_el.properties +6 -0
  77. package/src/sap/fe/macros/messagebundle_en.properties +10 -4
  78. package/src/sap/fe/macros/messagebundle_en_GB.properties +8 -2
  79. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +10 -4
  80. package/src/sap/fe/macros/messagebundle_es.properties +8 -2
  81. package/src/sap/fe/macros/messagebundle_es_MX.properties +10 -4
  82. package/src/sap/fe/macros/messagebundle_et.properties +8 -2
  83. package/src/sap/fe/macros/messagebundle_fi.properties +6 -0
  84. package/src/sap/fe/macros/messagebundle_fr.properties +8 -2
  85. package/src/sap/fe/macros/messagebundle_fr_CA.properties +7 -1
  86. package/src/sap/fe/macros/messagebundle_hi.properties +7 -1
  87. package/src/sap/fe/macros/messagebundle_hr.properties +7 -1
  88. package/src/sap/fe/macros/messagebundle_hu.properties +6 -0
  89. package/src/sap/fe/macros/messagebundle_id.properties +10 -4
  90. package/src/sap/fe/macros/messagebundle_it.properties +6 -0
  91. package/src/sap/fe/macros/messagebundle_iw.properties +7 -1
  92. package/src/sap/fe/macros/messagebundle_ja.properties +8 -2
  93. package/src/sap/fe/macros/messagebundle_kk.properties +10 -4
  94. package/src/sap/fe/macros/messagebundle_ko.properties +6 -0
  95. package/src/sap/fe/macros/messagebundle_lt.properties +7 -1
  96. package/src/sap/fe/macros/messagebundle_lv.properties +7 -1
  97. package/src/sap/fe/macros/messagebundle_mk.properties +7 -1
  98. package/src/sap/fe/macros/messagebundle_ms.properties +6 -0
  99. package/src/sap/fe/macros/messagebundle_nl.properties +6 -0
  100. package/src/sap/fe/macros/messagebundle_no.properties +6 -0
  101. package/src/sap/fe/macros/messagebundle_pl.properties +7 -1
  102. package/src/sap/fe/macros/messagebundle_pt.properties +6 -0
  103. package/src/sap/fe/macros/messagebundle_pt_PT.properties +6 -0
  104. package/src/sap/fe/macros/messagebundle_ro.properties +7 -1
  105. package/src/sap/fe/macros/messagebundle_ru.properties +9 -3
  106. package/src/sap/fe/macros/messagebundle_sh.properties +7 -1
  107. package/src/sap/fe/macros/messagebundle_sk.properties +6 -0
  108. package/src/sap/fe/macros/messagebundle_sl.properties +6 -0
  109. package/src/sap/fe/macros/messagebundle_sr.properties +7 -1
  110. package/src/sap/fe/macros/messagebundle_sv.properties +6 -0
  111. package/src/sap/fe/macros/messagebundle_th.properties +7 -1
  112. package/src/sap/fe/macros/messagebundle_tr.properties +6 -0
  113. package/src/sap/fe/macros/messagebundle_uk.properties +9 -3
  114. package/src/sap/fe/macros/messagebundle_vi.properties +8 -2
  115. package/src/sap/fe/macros/messagebundle_zh_CN.properties +6 -0
  116. package/src/sap/fe/macros/messagebundle_zh_TW.properties +7 -1
  117. package/src/sap/fe/macros/messages/MessageButton.js +39 -18
  118. package/src/sap/fe/macros/messages/MessageButton.ts +40 -17
  119. package/src/sap/fe/macros/messages/MessagePopover.js +2 -2
  120. package/src/sap/fe/macros/messages/MessagePopover.ts +4 -4
  121. package/src/sap/fe/macros/microchart/MicroChartContainer.js +1 -2
  122. package/src/sap/fe/macros/microchart/MicroChartContainer.ts +1 -2
  123. package/src/sap/fe/macros/microchart/MicroChartHelper.js +1 -2
  124. package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +0 -1
  125. package/src/sap/fe/macros/share/ShareAPI.js +4 -29
  126. package/src/sap/fe/macros/share/ShareAPI.ts +1 -32
  127. package/src/sap/fe/macros/situations/SituationsPopover.js +3 -1
  128. package/src/sap/fe/macros/situations/SituationsPopover.ts +2 -0
  129. package/src/sap/fe/macros/table/MdcTableTemplate.js +3 -1
  130. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +6 -2
  131. package/src/sap/fe/macros/table/TableHelper.js +1 -2
  132. package/src/sap/fe/macros/table/TableHelper.ts +0 -1
  133. package/src/sap/fe/macros/table/TableRuntime.js +24 -5
  134. package/src/sap/fe/macros/table/TableRuntime.ts +31 -3
  135. package/src/sap/fe/macros/table/Utils.js +6 -2
  136. package/src/sap/fe/macros/table/Utils.ts +5 -1
  137. package/src/sap/fe/macros/table/delegates/ALPTableDelegate.js +1 -2
  138. package/src/sap/fe/macros/table/delegates/ALPTableDelegate.ts +0 -1
  139. package/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -2
  140. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +0 -1
  141. package/src/sap/fe/macros/table/delegates/TreeTableDelegate.js +1 -2
  142. package/src/sap/fe/macros/table/delegates/TreeTableDelegate.ts +0 -1
  143. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +5 -1
  144. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +7 -0
  145. package/src/sap/fe/macros/table/mixin/TableSharing.js +3 -2
  146. package/src/sap/fe/macros/table/mixin/TableSharing.ts +9 -1
  147. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +10 -1
  148. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +17 -0
  149. package/src/sap/fe/macros/visualfilters/VisualFilter.js +1 -2
  150. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +0 -1
  151. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +2 -3
  152. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +1 -2
@@ -26,7 +26,6 @@ import type MessageModel from "sap/ui/model/message/MessageModel";
26
26
  * <macros:MessageButton visibilityChange=".handler.onMessageButtonVisibilityChange" />
27
27
  * </pre>
28
28
  * @public
29
- * @experimental
30
29
  */
31
30
  @defineUI5Class("sap.fe.macros.MessageButton")
32
31
  export default class MessageButton extends BuildingBlock<Button> {
@@ -60,7 +60,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
60
60
  * @alias sap.fe.macros.MultiValueField
61
61
  * @public
62
62
  * @since 1.118.0
63
- * @experimental
64
63
  */
65
64
  let MultiValueFieldBlock = (_dec = defineUI5Class("sap.fe.macros.MultiValueField"), _dec2 = implementInterface("sap.ui.core.IFormContent"), _dec3 = property({
66
65
  type: "string"
@@ -155,7 +154,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
155
154
  _initializerDefineProperty(_this, "contextPath", _descriptor7, _this);
156
155
  /**
157
156
  * Property added to be able to add data / items to the multi-input field using a different model
158
- * @experimental
159
157
  * @public
160
158
  */
161
159
  _initializerDefineProperty(_this, "items", _descriptor8, _this);
@@ -649,4 +647,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
649
647
  _exports = MultiValueFieldBlock;
650
648
  return _exports;
651
649
  }, false);
652
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNdWx0aVZhbHVlRmllbGRCbG9jayIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2RlYzMiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjNCIsImFzc29jaWF0aW9uIiwiX2RlYzUiLCJfZGVjNiIsInJlcXVpcmVkIiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiaXNCaW5kaW5nSW5mbyIsIl9kZWMxMCIsImFnZ3JlZ2F0aW9uIiwibXVsdGlwbGUiLCJkZWZhdWx0Q2xhc3MiLCJGb3JtYXRPcHRpb25zIiwiX2RlYzExIiwiX2RlYzEyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwicHJvcHMiLCJvdGhlcnMiLCJfdGhpcyIsIl9pc0luRWRpdE1vZGUiLCJjb21waWxlRXhwcmVzc2lvbiIsIlVJIiwiSXNFZGl0YWJsZSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiX292ZXJyaWRlVmFsdWUiLCJjb2xsZWN0aW9uQmluZGluZyIsIml0ZW1EYXRhTW9kZWxPYmplY3RQYXRoIiwidGV4dEV4cHJlc3Npb24iLCJrZXkiLCJpdGVtcyIsIm1vZGVsIiwibW9kZWxOYW1lIiwicGF0aCIsImNvbW1vblRhcmdldE9iamVjdFByb3BlcnR5IiwidGFyZ2V0T2JqZWN0IiwiY29tbW9uUHJvcGVydHlQYXRoIiwibmFtZSIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0IiwiZGVzY3JpcHRpb24iLCJfZ2V0TXVsdGlJbnB1dFNldHRpbmdzIiwicHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIiwiZm9ybWF0T3B0aW9ucyIsImNvbGxlY3Rpb25QYXRoIiwiX2dldFBhdGhTdHJ1Y3R1cmUiLCJ1c2VQYXJlbnRCaW5kaW5nQ2FjaGUiLCJ0ZW1wbGF0ZVNoYXJlYWJsZSIsInBhcmFtZXRlcnMiLCIkJG93blJlcXVlc3QiLCJwcm9wZXJ0eVBhdGhPclByb3BlcnR5IiwicHJvcGVydHlEZWZpbml0aW9uIiwiaXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uIiwiJHRhcmdldCIsImNvbW1vblRleHQiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiZ2V0UmVsYXRpdmVQYXRocyIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsImdldFZhbHVlQmluZGluZyIsImRpc3BsYXlPbmx5IiwibGVuZ3RoIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsImZpcnN0Q29sbGVjdGlvblBhdGgiLCJjdXJyZW50RW50aXR5U2V0IiwiY29udGV4dExvY2F0aW9uIiwidGFyZ2V0RW50aXR5U2V0Iiwic3RhcnRpbmdFbnRpdHlTZXQiLCJuYXZpZ2F0ZWRQYXRocyIsImNvbnRleHROYXZzRm9ySXRlbSIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibmF2UHJvcCIsInVuZGVmaW5lZCIsInNvbWUiLCJjb250ZXh0TmF2UHJvcCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInB1c2giLCJuYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIiwiaGFzT3duUHJvcGVydHkiLCJpc011bHRpcGxlTmF2aWdhdGlvblByb3BlcnR5Iiwiam9pbiIsIk9iamVjdCIsImFzc2lnbiIsImNvbXB1dGVGaWVsZEdyb3VwSWRzIiwiYXBwQ29tcG9uZW50Iiwic2lkZUVmZmVjdFNlcnZpY2UiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJmaWVsZEdyb3VwSWRzIiwiZGF0YU1vZGVsUGF0aCIsInRhcmdldEVudGl0eVR5cGUiLCJjb2xsYWJvcmF0aW9uRW5hYmxlZCIsImNvbGxhYm9yYXRpb25GaWVsZEdyb3VwIiwiQ29sbGFib3JhdGlvbkZpZWxkR3JvdXBQcmVmaXgiLCJkYXRhU291cmNlUGF0aCIsInJlc3VsdCIsImluaXRpYWxpemUiLCJtZXRhQ29udGV4dFBhdGgiLCJvd25lciIsIl9nZXRPd25lciIsImNvbnRleHRQYXRoIiwicHJlcHJvY2Vzc29yQ29udGV4dCIsImZ1bGxDb250ZXh0UGF0aCIsIm9kYXRhTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibWV0YUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImdldFBhdGgiLCJtZXRhUGF0aE9iamVjdCIsImdldFRhcmdldCIsImlzUHJvcGVydHkiLCJEYXRhRmllbGREZWZhdWx0IiwiZW5oYW5jZWRNZXRhUGF0aCIsImRhdGFGaWVsZERhdGFNb2RlbFBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCIsImNvbnZlcnRlZERhdGFGaWVsZCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwiVmFsdWUiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiaW5zZXJ0YWJsZSIsImlzUGF0aEluc2VydGFibGUiLCJkZWxldGVOYXZpZ2F0aW9uUmVzdHJpY3Rpb24iLCJpc1BhdGhEZWxldGFibGUiLCJpZ25vcmVUYXJnZXRDb2xsZWN0aW9uIiwiYXV0aG9yaXplVW5yZXNvbHZhYmxlIiwiZGVsZXRlUGF0aCIsImRlbGV0YWJsZSIsImlmRWxzZSIsIl90eXBlIiwib3IiLCJub3QiLCJpc0NvbnN0YW50IiwiY29uc3RhbnQiLCJyZWFkT25seSIsInZpc2libGUiLCJnZXRWaXNpYmxlRXhwcmVzc2lvbiIsImluc2VydGFibGVBbmREZWxldGFibGUiLCJhbmQiLCJjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiIsImNvbXB1dGVDb2xsYWJvcmF0aW9uUHJvcGVydGllcyIsImlzUHJvcGVydHlJbml0aWFsIiwiZWRpdE1vZGUiLCJlcXVhbCIsImlzUmVhZE9ubHlFeHByZXNzaW9uIiwiZGlzcGxheU1vZGUiLCJnZXREaXNwbGF5TW9kZSIsImxvY2FsRGF0YU1vZGVsUGF0aCIsIml0ZW0iLCJjb2xsZWN0aW9uIiwiZ2V0QXBwQ29tcG9uZW50Iiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQiLCJNb2RlbEhlbHBlciIsIlVJRm9ybWF0dGVycyIsImdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMiLCJoYXNDb2xsYWJvcmF0aW9uQWN0aXZpdHkiLCJjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMiLCJjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IiLCJnZXRSZXF1aXJlZCIsImdldE11bHRpVmFsdWVGaWVsZCIsImdldEl0ZW1zIiwiZ2V0TWV0YVBhdGhPYmplY3QiLCJtZXRhUGF0aCIsImlkIiwidmhJZFByZWZpeCIsIklEIiwiZ2VuZXJhdGUiLCJnZXRJZCIsImNyZWF0ZUlkIiwiY29udHJvbGxlciIsImdldFJvb3RDb250cm9sbGVyIiwidmlldyIsImdldFZpZXciLCJjb250ZXh0IiwiZ2V0Q29udGV4dFBhdGgiLCJpdGVtc0FnZ3JlZ2F0aW9uIiwiY3VzdG9tQWdncmVnYXRpb25MZW5ndGgiLCJnZXRNYW5pZmVzdEVudHJ5IiwibWFjcm9zIiwibXVsdGlWYWx1ZUZpZWxkIiwiaXRlbXNTaXplTGltaXQiLCJsYWJlbCIsIkZpZWxkSGVscGVyIiwiY29tcHV0ZUxhYmVsVGV4dCIsInZoQ29udHJvbCIsIlZhbHVlSGVscCIsImdldFZhbHVlSGVscEZvck1ldGFQYXRoIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiZ2V0T3duZXJDb250ZXh0UGF0aCIsInZhbHVlSGVscCIsImdldENvbnRlbnQiLCJfanN4IiwiTXVsdGlWYWx1ZUZpZWxkIiwiZGVsZWdhdGUiLCJkaXNwbGF5Iiwid2lkdGgiLCJhcmlhTGFiZWxsZWRCeSIsInNob3dFbXB0eUluZGljYXRvciIsImlzUmVxdWlyZWRFeHByZXNzaW9uIiwiY2hhbmdlIiwiTXVsdGlWYWx1ZUZpZWxkUnVudGltZSIsImhhbmRsZUNoYW5nZSIsImJpbmQiLCJ2YWxpZGF0ZUZpZWxkR3JvdXAiLCJGaWVsZFJ1bnRpbWUiLCJvblZhbGlkYXRlRmllbGRHcm91cCIsImNoaWxkcmVuIiwiTXVsdGlWYWx1ZUZpZWxkSXRlbSIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwidmFsdWUiLCJmb3Jtd3JhcHBlciIsImF2YXRhciIsIkF2YXRhciIsImluaXRpYWxzIiwiZGlzcGxheVNpemUiLCJjdXN0b21EaXNwbGF5U2l6ZSIsImN1c3RvbUZvbnRTaXplIiwiYmFja2dyb3VuZENvbG9yIiwicHJlc3MiLCJGaWVsZFJ1bnRpbWVIZWxwZXIiLCJzaG93Q29sbGFib3JhdGlvbkVkaXRVc2VyIiwiRm9ybUVsZW1lbnRXcmFwcGVyIiwiSEJveCIsInJlbmRlclR5cGUiLCJhbGlnbkl0ZW1zIiwiYWRkRXZlbnREZWxlZ2F0ZSIsIm9uZm9jdXNpbiIsImV2dCIsImN1cnJlbnRNdWx0aVZhbHVlRmllbGQiLCJzcmNDb250cm9sIiwiZ2V0UGFyZW50IiwiY29sbGFib3JhdGl2ZURyYWZ0IiwiaGFuZGxlQ29udGVudEZvY3VzSW4iLCJ2YWx1ZUhlbHBDb250cm9sIiwiZ2V0RG9tUmVmIiwiYXR0YWNoRXZlbnRPbmNlIiwiZm9jdXMiLCJvbmZvY3Vzb3V0IiwiaXNBIiwiZXZlbnQiLCJVSTVFdmVudCIsImdldEZpZWxkR3JvdXBJZHMiLCJoYW5kbGVDb250ZW50Rm9jdXNPdXQiLCJFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRWYWx1ZUhlbHAiLCJhdHRhY2hPcGVuZWQiLCJnZXRTb3VyY2UiLCJnZXRDb250cm9sIiwiYWRkQ3VzdG9tRGF0YSIsInNldFJlYWRPbmx5Iiwic2V0UHJvcGVydHkiLCJ1cGRhdGVFZGl0TW9kZSIsInNldF9pc0luRWRpdE1vZGUiLCJpbkVkaXRNb2RlIiwibXVsdGl2YWx1ZUZpZWxkIiwiZGF0YSIsInNldEVkaXRNb2RlIiwib25CZWZvcmVSZW5kZXJpbmciLCJhQXJpYUxhYmVsbGVkQnkiLCJnZXRBcmlhTGFiZWxsZWRCeSIsInNJZCIsImFBcmlhTGFiZWxsZWRCeXMiLCJpbmNsdWRlcyIsImFkZEFyaWFMYWJlbGxlZEJ5IiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiTXVsdGlWYWx1ZUZpZWxkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiwgUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL0VkbVwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGQsIERhdGFGaWVsZFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7XG5cdGFuZCxcblx0Y29tcGlsZUV4cHJlc3Npb24sXG5cdGNvbnN0YW50LFxuXHRlcXVhbCxcblx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLFxuXHRpZkVsc2UsXG5cdGlzQ29uc3RhbnQsXG5cdG5vdCxcblx0b3Jcbn0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRhZ2dyZWdhdGlvbixcblx0YXNzb2NpYXRpb24sXG5cdGRlZmluZVVJNUNsYXNzLFxuXHRpbXBsZW1lbnRJbnRlcmZhY2UsXG5cdHByb3BlcnR5LFxuXHR0eXBlIEVuaGFuY2VXaXRoVUk1LFxuXHR0eXBlIFByb3BlcnRpZXNPZlxufSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHsgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgKiBhcyBJRCBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHtcblx0aXNNdWx0aXBsZU5hdmlnYXRpb25Qcm9wZXJ0eSxcblx0aXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sXG5cdGlzUHJvcGVydHksXG5cdGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQge1xuXHRlbmhhbmNlRGF0YU1vZGVsUGF0aCxcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCxcblx0Z2V0UmVsYXRpdmVQYXRocyxcblx0Z2V0VGFyZ2V0T2JqZWN0UGF0aCxcblx0aXNQYXRoRGVsZXRhYmxlLFxuXHRpc1BhdGhJbnNlcnRhYmxlXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgRGlzcGxheU1vZGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB7IGdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uLCBnZXREaXNwbGF5TW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IEZpZWxkSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRWYWx1ZUJpbmRpbmcsIGdldFZpc2libGVFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgdHlwZSBUb2tlbml6ZXIgZnJvbSBcInNhcC9tL1Rva2VuaXplclwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgTXVsdGlWYWx1ZUZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL011bHRpVmFsdWVGaWVsZFwiO1xuaW1wb3J0IHR5cGUgRmllbGRFZGl0TW9kZSBmcm9tIFwic2FwL3VpL21kYy9lbnVtcy9GaWVsZEVkaXRNb2RlXCI7XG5pbXBvcnQgTXVsdGlWYWx1ZUZpZWxkSXRlbSBmcm9tIFwic2FwL3VpL21kYy9maWVsZC9NdWx0aVZhbHVlRmllbGRJdGVtXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuXG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgeyBDb2xsYWJvcmF0aW9uRmllbGRHcm91cFByZWZpeCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCBGb3JtRWxlbWVudFdyYXBwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xzL0Zvcm1FbGVtZW50V3JhcHBlclwiO1xuaW1wb3J0ICogYXMgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvQ29sbGFib3JhdGlvbkZvcm1hdHRlclwiO1xuaW1wb3J0IHR5cGUgTWV0YVBhdGggZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWV0YVBhdGhcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgaXNSZWFkT25seUV4cHJlc3Npb24sIGlzUmVxdWlyZWRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRmllbGRDb250cm9sSGVscGVyXCI7XG5pbXBvcnQgKiBhcyBVSUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgRmllbGRSdW50aW1lIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkUnVudGltZVwiO1xuaW1wb3J0IEZvcm1hdE9wdGlvbnMgZnJvbSBcInNhcC9mZS9tYWNyb3MvbXVsdGl2YWx1ZWZpZWxkL0Zvcm1hdE9wdGlvbnNcIjtcbmltcG9ydCBNdWx0aVZhbHVlRmllbGRSdW50aW1lIGZyb20gXCJzYXAvZmUvbWFjcm9zL211bHRpdmFsdWVmaWVsZC9NdWx0aVZhbHVlRmllbGRSdW50aW1lXCI7XG5pbXBvcnQgQXZhdGFyIGZyb20gXCJzYXAvbS9BdmF0YXJcIjtcbmltcG9ydCBIQm94IGZyb20gXCJzYXAvbS9IQm94XCI7XG5pbXBvcnQgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBNZGNWYWx1ZUhlbHAsIFZhbHVlSGVscCRPcGVuZWRFdmVudCB9IGZyb20gXCJzYXAvdWkvbWRjL1ZhbHVlSGVscFwiO1xuaW1wb3J0IHR5cGUgeyBNZXRhTW9kZWxUeXBlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuaW1wb3J0IFZhbHVlSGVscCBmcm9tIFwiLi9WYWx1ZUhlbHBcIjtcbmltcG9ydCBGaWVsZFJ1bnRpbWVIZWxwZXIgZnJvbSBcIi4vZmllbGQvRmllbGRSdW50aW1lSGVscGVyXCI7XG5cbnR5cGUgTXVsdGlJbnB1dFNldHRpbmdzID0ge1xuXHRkZXNjcmlwdGlvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0Y29sbGVjdGlvbkJpbmRpbmc6IFByb3BlcnR5QmluZGluZ0luZm87XG5cdGtleTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0ZGlzcGxheU9ubHk/OiBib29sZWFuO1xufTtcblxudHlwZSBNdWx0aVZhbHVlRmllbGRQYXRoU3RydWN0dXJlID0ge1xuXHRjb2xsZWN0aW9uUGF0aDogc3RyaW5nO1xuXHRpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT47XG59O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIGZvciBjcmVhdGluZyBhIE11bHRpVmFsdWVGaWVsZCBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBUaGUgTXVsdGlWYWx1ZUZpZWxkIGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgZWl0aGVyIGEgRGF0YUZpZWxkIG9yIFByb3BlcnR5IGRpcmVjdGx5LiBJdCBoYXMgdG8gcG9pbnQgdG8gYSBjb2xsZWN0aW9uIHByb3BlcnR5LlxuICogPGJyPlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm86TXVsdGlWYWx1ZUZpZWxkXG4gKiBpZD1cIlNvbWVVbmlxdWVJZGVudGlmaWVyXCJcbiAqIGNvbnRleHRQYXRoPVwie2VudGl0eVNldCZndDt9XCJcbiAqIG1ldGFQYXRoPVwie2RhdGFGaWVsZCZndDt9XCJcbiAqIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLk11bHRpVmFsdWVGaWVsZFxuICogQHB1YmxpY1xuICogQHNpbmNlIDEuMTE4LjBcbiAqIEBleHBlcmltZW50YWxcbiAqL1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLk11bHRpVmFsdWVGaWVsZFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTXVsdGlWYWx1ZUZpZWxkQmxvY2sgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrPENvbnRyb2w+IHtcblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC51aS5jb3JlLklGb3JtQ29udGVudFwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF91aV9jb3JlX0lGb3JtQ29udGVudCA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFRoZSAnaWQnIHByb3BlcnR5XG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIGlkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQcmVmaXggYWRkZWQgdG8gdGhlIGdlbmVyYXRlZCBJRCBvZiB0aGUgZmllbGQgLSBvbmx5IGlmIG5vIGlkIGlzIHByb3ZpZGVkXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0aWRQcmVmaXg/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFByZWZpeCBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkIElEIG9mIHRoZSB2YWx1ZSBoZWxwIHVzZWQgZm9yIHRoZSBmaWVsZFxuXHQgKi9cblx0QGFzc29jaWF0aW9uKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHZoSWRQcmVmaXghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHJlbGF0aXZlIE1ldGFkYXRhIHBhdGggdG8gdGhlIE11bHRpVmFsdWVGaWVsZC5cblx0ICogVGhlIG1ldGFQYXRoIHNob3VsZCBwb2ludCB0byBhIFByb3BlcnR5IG9yIERhdGFGaWVsZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBtZXRhUGF0aCE6IHN0cmluZztcblxuXHQvKipcblx0ICogVGhlIHJlYWRPbmx5IGZsYWdcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIHJlcXVpcmVkOiBmYWxzZSB9KVxuXHRwdWJsaWMgcmVhZE9ubHk/OiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0LyoqXG5cdCAqIFRoZSBjb250ZXh0IHBhdGggcHJvdmlkZWQgZm9yIHRoZSBNdWx0aVZhbHVlRmllbGRcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogUHJvcGVydHkgYWRkZWQgdG8gYmUgYWJsZSB0byBhZGQgZGF0YSAvIGl0ZW1zIHRvIHRoZSBtdWx0aS1pbnB1dCBmaWVsZCB1c2luZyBhIGRpZmZlcmVudCBtb2RlbFxuXHQgKiBAZXhwZXJpbWVudGFsXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJhbnlcIixcblx0XHRpc0JpbmRpbmdJbmZvOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBpdGVtcz86IFByb3BlcnR5QmluZGluZ0luZm87XG5cblx0LyoqXG5cdCAqIFRoZSBvYmplY3Qgd2l0aCB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG5cdCAqXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5mZS5tYWNyb3MubXVsdGl2YWx1ZWZpZWxkLkZvcm1hdE9wdGlvbnNcIiwgbXVsdGlwbGU6IGZhbHNlLCBkZWZhdWx0Q2xhc3M6IEZvcm1hdE9wdGlvbnMgfSlcblx0Zm9ybWF0T3B0aW9ucz86IEZvcm1hdE9wdGlvbnM7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0X2lzSW5FZGl0TW9kZTogYm9vbGVhbiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uID0gZmFsc2U7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0dXNlUGFyZW50QmluZGluZ0NhY2hlID0gZmFsc2U7XG5cblx0Ly8gQ29tcHV0ZWQgcHJvcGVydGllc1xuXG5cdHByaXZhdGUgaXRlbSE6IE11bHRpSW5wdXRTZXR0aW5ncztcblxuXHQvKipcblx0ICogUG9pbnRlZCBhdCBhIGRhdGFGaWVsZC4gVGhpcyBjYW4gYmUgRGF0YUZpZWxkRGVmYXVsdCBmcm9tIGEgcHJvcGVydHkuXG5cdCAqL1xuXHRwcml2YXRlIGNvbnZlcnRlZERhdGFGaWVsZCE6IERhdGFGaWVsZDtcblxuXHQvKipcblx0ICogRGF0YU1vZGVsUGF0aCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgZGlzcGxheWVkLlxuXHQgKi9cblx0cHJpdmF0ZSBkYXRhTW9kZWxQYXRoITogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT47XG5cblx0LyoqXG5cdCAqIFByb3BlcnR5IHRvIGJlIGRpc3BsYXllZFxuXHQgKi9cblx0cHJpdmF0ZSBwcm9wZXJ0eSE6IFByb3BlcnR5O1xuXG5cdC8qKlxuXHQgKiBFZGl0IE1vZGUgb2YgdGhlIGZpZWxkLlxuXHQgKiBJZiB0aGUgZWRpdE1vZGUgaXMgdW5kZWZpbmVkIHRoZW4gd2UgY29tcHV0ZSBpdCBiYXNlZCBvbiB0aGUgbWV0YWRhdGFcblx0ICogT3RoZXJ3aXNlIHdlIHVzZSB0aGUgdmFsdWUgcHJvdmlkZWQgaGVyZS5cblx0ICovXG5cdHByaXZhdGUgZWRpdE1vZGUhOiBGaWVsZEVkaXRNb2RlIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0LyoqXG5cdCAqIFRoZSBkaXNwbGF5IG1vZGUgYWRkZWQgdG8gdGhlIGNvbGxlY3Rpb24gZmllbGRcblx0ICovXG5cdHByaXZhdGUgZGlzcGxheU1vZGUhOiBEaXNwbGF5TW9kZTtcblxuXHQvKipcblx0ICogVGhlIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHRoYXQgaXMgY2FsY3VsYXRlZCBpbnRlcm5hbGx5XG5cdCAqL1xuXHRwcml2YXRlIGNvbGxlY3Rpb24hOiBQcm9wZXJ0eUJpbmRpbmdJbmZvO1xuXG5cdHByaXZhdGUgdmlzaWJsZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0cHJpdmF0ZSBmaWVsZEdyb3VwSWRzPzogc3RyaW5nO1xuXG5cdHByaXZhdGUgZW5oYW5jZWRNZXRhUGF0aCE6IENvbnRleHQ7XG5cblx0cHJpdmF0ZSBlbmFibGVFeHByZXNzaW9uOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHRwcml2YXRlIGNvbGxhYm9yYXRpb25FeHByZXNzaW9uITogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xuXG5cdHByaXZhdGUgY29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbiE6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdHByaXZhdGUgY29sbGFib3JhdGlvbkNvbG9yRXhwcmVzc2lvbiE6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdHByaXZhdGUgY29sbGFib3JhdGlvbkVuYWJsZWQhOiBib29sZWFuO1xuXG5cdHByaXZhdGUgZGF0YVNvdXJjZVBhdGghOiBzdHJpbmc7XG5cblx0cHJpdmF0ZSBpbnNlcnRhYmxlQW5kRGVsZXRhYmxlITogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiBzdHJpbmcgfCAoJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxNdWx0aVZhbHVlRmllbGRCbG9jaz4pLCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0aWYgKHR5cGVvZiBwcm9wcyAhPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0Ly8gdHlwZSBvZiBwcm9wcyBjYW4gYmUgYSBzdHJpbmcgaWYgd2UgYXJlIGNsb25pbmcgdGhlIE11bHRpVmFsdWVGaWVsZCBpbnNpZGUgYW4gYWdncmVnYXRpb25cblx0XHRcdC8vIGluIHRoYXQgY2FzZSBfaXNJbkVkaXRNb2RlIGhhcyBhbHJlYWR5IGJlZW4gY29tcHV0ZWQgb24gdGhlIG9uZSB3ZSBjbG9uZVxuXHRcdFx0cHJvcHMuX2lzSW5FZGl0TW9kZSA9IGNvbXBpbGVFeHByZXNzaW9uKFVJLklzRWRpdGFibGUpO1xuXHRcdH1cblx0XHRzdXBlcihwcm9wcywgb3RoZXJzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbiBjYXNlIGFuIGV4dGVybmFsIHZhbHVlIGlzIHNldCAoZS5nLiBmb3IgcHJvdmlkaW5nIGRhdGEgaW4gYSBqc29uIG1vZGVsKSB3ZSBuZWVkIHRvIG92ZXJyaWRlIHRoZSBiaW5kaW5nIHN0cmluZ3MgZm9yIHRoZSBpdGVtLlxuXHQgKiBAcGFyYW0gY29sbGVjdGlvbkJpbmRpbmdcblx0ICogQHBhcmFtIGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoXG5cdCAqIEBwYXJhbSB0ZXh0RXhwcmVzc2lvblxuXHQgKiBAcGFyYW0ga2V5XG5cdCAqIEByZXR1cm5zIE11bHRpSW5wdXRTZXR0aW5nc1xuXHQgKi9cblx0cHJpdmF0ZSBfb3ZlcnJpZGVWYWx1ZShcblx0XHRjb2xsZWN0aW9uQmluZGluZzogUHJvcGVydHlCaW5kaW5nSW5mbyAmIHsgcGFyYW1ldGVycz86IG9iamVjdCB9LFxuXHRcdGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5UGF0aCB8IFByb3BlcnR5Pixcblx0XHR0ZXh0RXhwcmVzc2lvbjogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sXG5cdFx0a2V5OiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvblxuXHQpOiBNdWx0aUlucHV0U2V0dGluZ3Mge1xuXHRcdGlmICh0aGlzLml0ZW1zKSB7XG5cdFx0XHRjb25zdCBtb2RlbCA9IHRoaXMuaXRlbXMubW9kZWwgPz8gdGhpcy5pdGVtcy5tb2RlbE5hbWU7XG5cdFx0XHRjb2xsZWN0aW9uQmluZGluZyA9IHsgcGF0aDogYCR7bW9kZWx9PiR7dGhpcy5pdGVtcy5wYXRofWAgfTtcblx0XHRcdGNvbnN0IGNvbW1vblRhcmdldE9iamVjdFByb3BlcnR5ID0gaXRlbURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5O1xuXHRcdFx0Y29uc3QgY29tbW9uUHJvcGVydHlQYXRoID0gYHske21vZGVsfT4ke2NvbW1vblRhcmdldE9iamVjdFByb3BlcnR5Lm5hbWV9fWA7XG5cblx0XHRcdC8vIFRleHQgYXJyYW5nZW1lbnQgdXNlIGNhc2Vcblx0XHRcdGlmIChpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KGNvbW1vblRhcmdldE9iamVjdFByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbj8uVGV4dCkpIHtcblx0XHRcdFx0dGV4dEV4cHJlc3Npb24gPSBgeyR7bW9kZWx9PiR7Y29tbW9uVGFyZ2V0T2JqZWN0UHJvcGVydHkuYW5ub3RhdGlvbnMuQ29tbW9uPy5UZXh0Py5wYXRofX1gO1xuXHRcdFx0XHQvLyBub24gdGV4dCBhcnJhbmdlbWVudCB1c2UgY2FzZVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGV4dEV4cHJlc3Npb24gPSBjb21tb25Qcm9wZXJ0eVBhdGg7XG5cdFx0XHR9XG5cdFx0XHRrZXkgPSBjb21tb25Qcm9wZXJ0eVBhdGg7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRkZXNjcmlwdGlvbjogdGV4dEV4cHJlc3Npb24sXG5cdFx0XHRjb2xsZWN0aW9uQmluZGluZyxcblx0XHRcdGtleToga2V5XG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGdW5jdGlvbiB0byBnZXQgdGhlIGNvcnJlY3Qgc2V0dGluZ3MgZm9yIHRoZSBtdWx0aSBpbnB1dC5cblx0ICogQHBhcmFtIHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCBUaGUgY29ycmVzcG9uZGluZyBEYXRhTW9kZWxPYmplY3RQYXRoLlxuXHQgKiBAcGFyYW0gZm9ybWF0T3B0aW9ucyBUaGUgZm9ybWF0IG9wdGlvbnMgdG8gY2FsY3VsYXRlIHRoZSByZXN1bHRcblx0ICogQHJldHVybnMgTXVsdGlJbnB1dFNldHRpbmdzXG5cdCAqL1xuXHRwcml2YXRlIF9nZXRNdWx0aUlucHV0U2V0dGluZ3MoXG5cdFx0cHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pixcblx0XHRmb3JtYXRPcHRpb25zOiBGb3JtYXRPcHRpb25zIHwgdW5kZWZpbmVkXG5cdCk6IE11bHRpSW5wdXRTZXR0aW5ncyB7XG5cdFx0Y29uc3QgeyBjb2xsZWN0aW9uUGF0aCwgaXRlbURhdGFNb2RlbE9iamVjdFBhdGggfSA9IE11bHRpVmFsdWVGaWVsZEJsb2NrLl9nZXRQYXRoU3RydWN0dXJlKHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdFx0Y29uc3QgY29sbGVjdGlvbkJpbmRpbmcgPSB0aGlzLnVzZVBhcmVudEJpbmRpbmdDYWNoZVxuXHRcdFx0PyB7IHBhdGg6IGNvbGxlY3Rpb25QYXRoLCB0ZW1wbGF0ZVNoYXJlYWJsZTogZmFsc2UgfVxuXHRcdFx0OiB7IHBhdGg6IGNvbGxlY3Rpb25QYXRoLCBwYXJhbWV0ZXJzOiB7ICQkb3duUmVxdWVzdDogdHJ1ZSB9LCB0ZW1wbGF0ZVNoYXJlYWJsZTogZmFsc2UgfTtcblxuXHRcdGNvbnN0IHByb3BlcnR5UGF0aE9yUHJvcGVydHkgPSBwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5UGF0aCB8IFByb3BlcnR5O1xuXHRcdGNvbnN0IHByb3BlcnR5RGVmaW5pdGlvbiA9IGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvbihwcm9wZXJ0eVBhdGhPclByb3BlcnR5KVxuXHRcdFx0PyBwcm9wZXJ0eVBhdGhPclByb3BlcnR5LiR0YXJnZXRcblx0XHRcdDogcHJvcGVydHlQYXRoT3JQcm9wZXJ0eTtcblx0XHRjb25zdCBjb21tb25UZXh0ID0gcHJvcGVydHlEZWZpbml0aW9uPy5hbm5vdGF0aW9ucy5Db21tb24/LlRleHQ7XG5cdFx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFJlbGF0aXZlUGF0aHMocHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoKTtcblxuXHRcdGNvbnN0IHRleHRFeHByZXNzaW9uID0gY29tbW9uVGV4dFxuXHRcdFx0PyBjb21waWxlRXhwcmVzc2lvbihnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbikpXG5cdFx0XHQ6IGdldFZhbHVlQmluZGluZyhpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aCwgZm9ybWF0T3B0aW9ucyA/PyB7fSwgdHJ1ZSk7XG5cblx0XHRjb25zdCBrZXkgPSBnZXRWYWx1ZUJpbmRpbmcoaXRlbURhdGFNb2RlbE9iamVjdFBhdGgsIGZvcm1hdE9wdGlvbnMgPz8ge30sIHRydWUpO1xuXHRcdGxldCBkaXNwbGF5T25seSA9IGZhbHNlO1xuXHRcdGlmIChnZXRSZWxhdGl2ZVBhdGhzKGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoKS5sZW5ndGggPiAwKSB7XG5cdFx0XHQvLyBpZiB0aGUgcmVsYXRpdmUgcGF0aCB0byB0aGUgdmFsdWUgY29udGFpbnMgYSBuYXZpZ2F0aW9uLCBjcmVhdGUgd2lsbCBub3QgYmUgcG9zc2libGUgaW4gdGhlIGRlbGVnYXRlLCBzbyB3ZSBmb3JjZSB0aGUgZGlzcGxheSBNb2RlXG5cdFx0XHRkaXNwbGF5T25seSA9IHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRkaXNwbGF5T25seSxcblx0XHRcdC4uLnRoaXMuX292ZXJyaWRlVmFsdWUoY29sbGVjdGlvbkJpbmRpbmcsIGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoLCB0ZXh0RXhwcmVzc2lvbiwga2V5KVxuXHRcdH07XG5cdH1cblxuXHQvLyBQcm9jZXNzIHRoZSBkYXRhTW9kZWxQYXRoIHRvIGZpbmQgdGhlIGNvbGxlY3Rpb24gYW5kIHRoZSByZWxhdGl2ZSBEYXRhTW9kZWxQYXRoIGZvciB0aGUgaXRlbS5cblx0cHJpdmF0ZSBzdGF0aWMgX2dldFBhdGhTdHJ1Y3R1cmUoZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4pOiBNdWx0aVZhbHVlRmllbGRQYXRoU3RydWN0dXJlIHtcblx0XHRsZXQgZmlyc3RDb2xsZWN0aW9uUGF0aCA9IFwiXCI7XG5cdFx0Y29uc3QgY3VycmVudEVudGl0eVNldCA9IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uPy50YXJnZXRFbnRpdHlTZXRcblx0XHRcdD8gZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24udGFyZ2V0RW50aXR5U2V0XG5cdFx0XHQ6IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQ7XG5cdFx0Y29uc3QgbmF2aWdhdGVkUGF0aHM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3QgY29udGV4dE5hdnNGb3JJdGVtID0gZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24/Lm5hdmlnYXRpb25Qcm9wZXJ0aWVzIHx8IFtdO1xuXHRcdGZvciAoY29uc3QgbmF2UHJvcCBvZiBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uID09PSB1bmRlZmluZWQgfHxcblx0XHRcdFx0IWRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLnNvbWUoXG5cdFx0XHRcdFx0KGNvbnRleHROYXZQcm9wKSA9PiBjb250ZXh0TmF2UHJvcC5mdWxseVF1YWxpZmllZE5hbWUgPT09IG5hdlByb3AuZnVsbHlRdWFsaWZpZWROYW1lXG5cdFx0XHRcdClcblx0XHRcdCkge1xuXHRcdFx0XHQvLyBpbiBjYXNlIG9mIHJlbGF0aXZlIGVudGl0eVNldFBhdGggd2UgZG9uJ3QgY29uc2lkZXIgbmF2aWdhdGlvblBhdGggdGhhdCBhcmUgYWxyZWFkeSBpbiB0aGUgY29udGV4dFxuXHRcdFx0XHRuYXZpZ2F0ZWRQYXRocy5wdXNoKG5hdlByb3AubmFtZSk7XG5cdFx0XHRcdGNvbnRleHROYXZzRm9ySXRlbS5wdXNoKG5hdlByb3ApO1xuXHRcdFx0XHRpZiAoY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KG5hdlByb3AubmFtZSkpIHtcblx0XHRcdFx0XHRpZiAoaXNNdWx0aXBsZU5hdmlnYXRpb25Qcm9wZXJ0eShuYXZQcm9wKSkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGZpcnN0Q29sbGVjdGlvblBhdGggPSBgJHtuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKX1gO1xuXHRcdGNvbnN0IGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5PiA9IE9iamVjdC5hc3NpZ24oe30sIGRhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRcdGlmIChpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24pIHtcblx0XHRcdGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbi5uYXZpZ2F0aW9uUHJvcGVydGllcyA9IGNvbnRleHROYXZzRm9ySXRlbTsgLy8gdGhpcyBjaGFuZ2VzIHRoZSBjcmVhdGlvbiBvZiB0aGUgdmFsdWVIZWxwIElEIC4uLlxuXHRcdH1cblxuXHRcdHJldHVybiB7IGNvbGxlY3Rpb25QYXRoOiBmaXJzdENvbGxlY3Rpb25QYXRoLCBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aDogaXRlbURhdGFNb2RlbE9iamVjdFBhdGggfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxjdWxhdGUgdGhlIGZpZWxkR3JvdXBJZHMgZm9yIHRoZSBNdWx0aVZhbHVlRmllbGQuXG5cdCAqIEBwYXJhbSBhcHBDb21wb25lbnRcblx0ICogQHJldHVybnMgVGhlIHZhbHVlIGZvciB0aGUgZmllbGRHcm91cElkc1xuXHQgKi9cblx0cHJpdmF0ZSBjb21wdXRlRmllbGRHcm91cElkcyhhcHBDb21wb25lbnQ/OiBBcHBDb21wb25lbnQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGlmICghYXBwQ29tcG9uZW50KSB7XG5cdFx0XHQvL2ZvciBWYWx1ZUhlbHAgLyBNYXNzIGVkaXQgVGVtcGxhdGluZyB0aGUgYXBwQ29tcG9uZW50IGlzIG5vdCBwYXNzZWQgdG8gdGhlIHRlbXBsYXRpbmdcblx0XHRcdHJldHVybiBcIlwiO1xuXHRcdH1cblx0XHRjb25zdCBzaWRlRWZmZWN0U2VydmljZSA9IGFwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKTtcblx0XHRjb25zdCBmaWVsZEdyb3VwSWRzID0gc2lkZUVmZmVjdFNlcnZpY2UuY29tcHV0ZUZpZWxkR3JvdXBJZHMoXG5cdFx0XHR0aGlzLmRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHQodGhpcy5kYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eSkuZnVsbHlRdWFsaWZpZWROYW1lXG5cdFx0KTtcblx0XHRpZiAodGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCkge1xuXHRcdFx0Y29uc3QgY29sbGFib3JhdGlvbkZpZWxkR3JvdXAgPSBgJHtDb2xsYWJvcmF0aW9uRmllbGRHcm91cFByZWZpeH0ke3RoaXMuZGF0YVNvdXJjZVBhdGh9YDtcblx0XHRcdGZpZWxkR3JvdXBJZHMucHVzaChjb2xsYWJvcmF0aW9uRmllbGRHcm91cCk7XG5cdFx0fVxuXHRcdHRoaXMuZmllbGRHcm91cElkcyA9IGZpZWxkR3JvdXBJZHMubGVuZ3RoID8gZmllbGRHcm91cElkcy5qb2luKFwiLFwiKSA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCByZXN1bHQgPSBmaWVsZEdyb3VwSWRzLmpvaW4oXCIsXCIpO1xuXHRcdHJldHVybiByZXN1bHQgPT09IFwiXCIgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG5cdH1cblxuXHRpbml0aWFsaXplKG1ldGFDb250ZXh0UGF0aDogTWV0YVBhdGg8dW5rbm93bj4pOiB2b2lkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cblx0XHR0aGlzLmNvbnRleHRQYXRoID0gdGhpcy5jb250ZXh0UGF0aCA/PyBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dD8uZnVsbENvbnRleHRQYXRoO1xuXHRcdGNvbnN0IG9kYXRhTWV0YU1vZGVsID0gb3duZXI/LmdldE1ldGFNb2RlbCgpO1xuXG5cdFx0Y29uc3QgbWV0YUNvbnRleHQgPSBvZGF0YU1ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YUNvbnRleHRQYXRoLmdldFBhdGgoKSkgYXMgQ29udGV4dCB8IHVuZGVmaW5lZDtcblxuXHRcdGNvbnN0IG1ldGFQYXRoT2JqZWN0ID0gbWV0YUNvbnRleHRQYXRoPy5nZXRUYXJnZXQoKTtcblxuXHRcdC8vIElmIHRoZSB0YXJnZXQgaXMgYSBwcm9wZXJ0eSB3aXRoIGEgRGF0YUZpZWxkRGVmYXVsdCwgdXNlIHRoaXMgYXMgZGF0YSBmaWVsZFxuXHRcdGlmIChpc1Byb3BlcnR5KG1ldGFQYXRoT2JqZWN0KSAmJiBtZXRhUGF0aE9iamVjdC5hbm5vdGF0aW9ucy5VST8uRGF0YUZpZWxkRGVmYXVsdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLmVuaGFuY2VkTWV0YVBhdGggPSBvZGF0YU1ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQoYEAke1VJQW5ub3RhdGlvblRlcm1zLkRhdGFGaWVsZERlZmF1bHR9YCwgbWV0YUNvbnRleHQpIGFzIENvbnRleHQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZW5oYW5jZWRNZXRhUGF0aCA9IG1ldGFDb250ZXh0IGFzIENvbnRleHQ7XG5cdFx0fVxuXHRcdGNvbnN0IGRhdGFGaWVsZERhdGFNb2RlbFBhdGggPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoKHRoaXMuZW5oYW5jZWRNZXRhUGF0aC5nZXRQYXRoKCksIHRoaXMuY29udGV4dFBhdGgpITtcblxuXHRcdHRoaXMuY29udmVydGVkRGF0YUZpZWxkID0gZGF0YUZpZWxkRGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgRGF0YUZpZWxkO1xuXG5cdFx0dGhpcy5kYXRhTW9kZWxQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGg8UHJvcGVydHk+KFxuXHRcdFx0ZGF0YUZpZWxkRGF0YU1vZGVsUGF0aCxcblx0XHRcdCh0aGlzLmNvbnZlcnRlZERhdGFGaWVsZC5WYWx1ZSBhcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPikucGF0aFxuXHRcdCk7XG5cdFx0dGhpcy5kYXRhU291cmNlUGF0aCA9IGdldFRhcmdldE9iamVjdFBhdGgodGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0XHR0aGlzLnByb3BlcnR5ID0gdGhpcy5kYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eTtcblxuXHRcdGxldCBpbnNlcnRhYmxlID0gaXNQYXRoSW5zZXJ0YWJsZSh0aGlzLmRhdGFNb2RlbFBhdGgpO1xuXHRcdGNvbnN0IGRlbGV0ZU5hdmlnYXRpb25SZXN0cmljdGlvbiA9IGlzUGF0aERlbGV0YWJsZSh0aGlzLmRhdGFNb2RlbFBhdGgsIHtcblx0XHRcdGlnbm9yZVRhcmdldENvbGxlY3Rpb246IHRydWUsXG5cdFx0XHRhdXRob3JpemVVbnJlc29sdmFibGU6IHRydWVcblx0XHR9KTtcblx0XHRjb25zdCBkZWxldGVQYXRoID0gaXNQYXRoRGVsZXRhYmxlKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cblx0XHQvLyBkZWxldGFibGU6XG5cdFx0Ly9cdFx0aWYgcmVzdHJpY3Rpb25zIGNvbWUgZnJvbSBOYXZpZ2F0aW9uIHdlIGFwcGx5IGl0XG5cdFx0Ly9cdFx0b3RoZXJ3aXNlIHdlIGFwcGx5IHJlc3RyaWN0aW9ucyBkZWZpbmVkIG9uIHRhcmdldCBjb2xsZWN0aW9uIG9ubHkgaWYgaXQncyBhIGNvbnN0YW50XG5cdFx0Ly8gICAgICBvdGhlcndpc2UgaXQncyB0cnVlIVxuXHRcdGxldCBkZWxldGFibGUgPSBpZkVsc2UoXG5cdFx0XHRkZWxldGVOYXZpZ2F0aW9uUmVzdHJpY3Rpb24uX3R5cGUgPT09IFwiVW5yZXNvbHZhYmxlXCIsXG5cdFx0XHRvcihub3QoaXNDb25zdGFudChkZWxldGVQYXRoKSksIGRlbGV0ZVBhdGgpLFxuXHRcdFx0ZGVsZXRlUGF0aFxuXHRcdCk7XG5cblx0XHRpZiAodGhpcy5pdGVtcykge1xuXHRcdFx0aW5zZXJ0YWJsZSA9IGRlbGV0YWJsZSA9IGNvbnN0YW50KCF0aGlzLnJlYWRPbmx5KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy52aXNpYmxlID0gZ2V0VmlzaWJsZUV4cHJlc3Npb24odGhpcy5kYXRhTW9kZWxQYXRoLCB0aGlzLmZvcm1hdE9wdGlvbnMpO1xuXHRcdH1cblxuXHRcdHRoaXMuaW5zZXJ0YWJsZUFuZERlbGV0YWJsZSA9IGFuZChpbnNlcnRhYmxlLCBkZWxldGFibGUpO1xuXHRcdHRoaXMuY29sbGFib3JhdGlvbkV4cHJlc3Npb24gPSBjb25zdGFudChmYWxzZSk7XG5cdFx0dGhpcy5jb21wdXRlQ29sbGFib3JhdGlvblByb3BlcnRpZXMoKTtcblx0XHRjb25zdCByZWFkT25seSA9IHRoaXMuaXNQcm9wZXJ0eUluaXRpYWwoXCJyZWFkT25seVwiKSA/IHVuZGVmaW5lZCA6IHRoaXMucmVhZE9ubHk7XG5cdFx0aWYgKHRoaXMuZm9ybWF0T3B0aW9ucz8uZGlzcGxheU9ubHkgPT09IHRydWUgfHwgcmVhZE9ubHkgPT09IHRydWUpIHtcblx0XHRcdHRoaXMuZWRpdE1vZGUgPSBcIkRpc3BsYXlcIjtcblx0XHR9IGVsc2UgaWYgKHRoaXMucmVhZE9ubHkgPT09IGZhbHNlKSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRhbmQoaW5zZXJ0YWJsZSwgZGVsZXRhYmxlKSxcblx0XHRcdFx0XHRpZkVsc2UodGhpcy5jb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiwgY29uc3RhbnQoXCJSZWFkT25seVwiKSwgY29uc3RhbnQoXCJFZGl0YWJsZVwiKSksXG5cdFx0XHRcdFx0Y29uc3RhbnQoXCJEaXNwbGF5XCIpXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZWRpdE1vZGUgPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdGFuZChpbnNlcnRhYmxlLCBkZWxldGFibGUsIFVJLklzRWRpdGFibGUsIG5vdChlcXVhbCh0cnVlLCBpc1JlYWRPbmx5RXhwcmVzc2lvbih0aGlzLmNvbnZlcnRlZERhdGFGaWVsZCkpKSksXG5cdFx0XHRcdFx0aWZFbHNlKHRoaXMuY29sbGFib3JhdGlvbkV4cHJlc3Npb24sIGNvbnN0YW50KFwiUmVhZE9ubHlcIiksIGNvbnN0YW50KFwiRWRpdGFibGVcIikpLFxuXHRcdFx0XHRcdGNvbnN0YW50KFwiRGlzcGxheVwiKVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHRoaXMuZGlzcGxheU1vZGUgPSBnZXREaXNwbGF5TW9kZSh0aGlzLmRhdGFNb2RlbFBhdGgpO1xuXG5cdFx0Y29uc3QgbG9jYWxEYXRhTW9kZWxQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGg8UHJvcGVydHk+KFxuXHRcdFx0dGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCh0aGlzLmVuaGFuY2VkTWV0YVBhdGguZ2V0UGF0aCgpLCB0aGlzLmNvbnRleHRQYXRoKSEsXG5cdFx0XHQodGhpcy5jb252ZXJ0ZWREYXRhRmllbGQuVmFsdWUgYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPHN0cmluZz4pLnBhdGhcblx0XHQpO1xuXG5cdFx0dGhpcy5pdGVtID0gdGhpcy5fZ2V0TXVsdGlJbnB1dFNldHRpbmdzKGxvY2FsRGF0YU1vZGVsUGF0aCwgdGhpcy5mb3JtYXRPcHRpb25zKTsgLy8gdGhpcyBmdW5jdGlvbiByZXdyaXRlcyBkYXRhTW9kZWxQYXRoLCB0aGVyZWZvcmUsIGZvciBub3cgYSBjbGVhbiBvYmplY3QgaXMgcGFzc2VkXG5cdFx0aWYgKHRoaXMuaXRlbS5kaXNwbGF5T25seSkge1xuXHRcdFx0dGhpcy5lZGl0TW9kZSA9IFwiRGlzcGxheVwiO1xuXHRcdH1cblx0XHR0aGlzLmNvbGxlY3Rpb24gPSB0aGlzLml0ZW0uY29sbGVjdGlvbkJpbmRpbmc7XG5cblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpO1xuXHRcdHRoaXMuZmllbGRHcm91cElkcyA9IHRoaXMuY29tcHV0ZUZpZWxkR3JvdXBJZHMoYXBwQ29tcG9uZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25NZXRhZGF0YUF2YWlsYWJsZSBldmVudC5cblx0ICovXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBjb2xsYWJvcmF0aW9uIGRyYWZ0IGlzIHN1cHBvcnRlZC5cblx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBpcyBzdXBwb3J0ZWQuXG5cdCAqL1xuXHRpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCgpOiBib29sZWFuIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0Y29uc3Qgb2RhdGFNZXRhTW9kZWwgPSBvd25lcj8uZ2V0TWV0YU1vZGVsKCk7XG5cdFx0cmV0dXJuIE1vZGVsSGVscGVyLmlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKG9kYXRhTWV0YU1vZGVsISk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBoZWxwZXIgY29tcHV0ZXMgdGhlIHByb3BlcnRpZXMgdGhhdCBhcmUgbmVlZGVkIGZvciB0aGUgY29sbGFib3JhdGlvbiBhdmF0YXIuXG5cdCAqL1xuXHRjb21wdXRlQ29sbGFib3JhdGlvblByb3BlcnRpZXMoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQoKSAmJiB0aGlzLmVkaXRNb2RlICE9PSBcIkRpc3BsYXlcIikge1xuXHRcdFx0dGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCA9IHRydWU7XG5cdFx0XHR0aGlzLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uID0gVUlGb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKFxuXHRcdFx0XHR0aGlzLmRhdGFNb2RlbFBhdGgsXG5cdFx0XHRcdENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmhhc0NvbGxhYm9yYXRpb25BY3Rpdml0eVxuXHRcdFx0KTtcblxuXHRcdFx0dGhpcy5jb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdGdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKHRoaXMuZGF0YU1vZGVsUGF0aCwgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMpXG5cdFx0XHQpO1xuXHRcdFx0dGhpcy5jb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdGdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKHRoaXMuZGF0YU1vZGVsUGF0aCwgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IpXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdGdldFJlcXVpcmVkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmdldE11bHRpVmFsdWVGaWVsZCgpLmdldFJlcXVpcmVkKCk7XG5cdH1cblxuXHRnZXRJdGVtcygpOiBNdWx0aVZhbHVlRmllbGRJdGVtW10gfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmdldE11bHRpVmFsdWVGaWVsZCgpLmdldEl0ZW1zKCk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgY29udGVudC5cblx0ICogQHJldHVybnMgVGhlIGNvbnRlbnQgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrLlxuXHQgKi9cblx0Y3JlYXRlQ29udGVudCgpOiBDb250cm9sIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBtZXRhQ29udGV4dFBhdGggPSB0aGlzLmdldE1ldGFQYXRoT2JqZWN0KHRoaXMubWV0YVBhdGgsIHRoaXMuY29udGV4dFBhdGgpO1xuXHRcdGlmIChtZXRhQ29udGV4dFBhdGgpIHtcblx0XHRcdHRoaXMuaW5pdGlhbGl6ZShtZXRhQ29udGV4dFBhdGgpO1xuXG5cdFx0XHQvLyBCdWlsZGluZ0Jsb2NrIHdpdGggc2V0IElEIHNjZW5hcmlvXG5cdFx0XHRpZiAodGhpcy5pZCkge1xuXHRcdFx0XHR0aGlzLnZoSWRQcmVmaXggPSBJRC5nZW5lcmF0ZShbdGhpcy5nZXRJZCgpLCB0aGlzLnZoSWRQcmVmaXggPz8gXCJGaWVsZFZhbHVlSGVscFwiXSk7IC8vIFVzZSBnZXRJZCB0byByZXRyaWV2ZSBJRCwgbm90IHRoaXMuaWRcblx0XHRcdH0gZWxzZSBpZiAoIXRoaXMudmhJZFByZWZpeCkge1xuXHRcdFx0XHQvLyBNYXliZSBub3QgZW50ZXJlZFxuXHRcdFx0XHR0aGlzLnZoSWRQcmVmaXggPSB0aGlzLmNyZWF0ZUlkKFwiRmllbGRWYWx1ZUhlbHBcIikhO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0XHRjb25zdCB2aWV3ID0gY29udHJvbGxlci5nZXRWaWV3KCk7XG5cdFx0XHRjb25zdCBvZGF0YU1ldGFNb2RlbCA9IHRoaXMuX2dldE93bmVyKCk/LmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0Y29uc3QgbWV0YUNvbnRleHQgPSBvZGF0YU1ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YUNvbnRleHRQYXRoLmdldFBhdGgoKSk7XG5cdFx0XHRjb25zdCBjb250ZXh0ID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1ldGFDb250ZXh0UGF0aC5nZXRDb250ZXh0UGF0aCgpKTtcblx0XHRcdGlmICghbWV0YUNvbnRleHQgfHwgIWNvbnRleHQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvL2NyZWF0ZSBhIG5ldyBiaW5kaW5nIGNvbnRleHQgZm9yIHRoZSB2YWx1ZSBoZWxwXG5cblx0XHRcdGNvbnN0IGl0ZW1zQWdncmVnYXRpb24gPSB0aGlzLmNvbGxlY3Rpb247XG5cdFx0XHRjb25zdCBjdXN0b21BZ2dyZWdhdGlvbkxlbmd0aCA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCk/LmdldE1hbmlmZXN0RW50cnkoXCJzYXAuZmVcIik/Lm1hY3Jvcz8ubXVsdGlWYWx1ZUZpZWxkPy5pdGVtc1NpemVMaW1pdDtcblx0XHRcdGlmIChjdXN0b21BZ2dyZWdhdGlvbkxlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGl0ZW1zQWdncmVnYXRpb24ubGVuZ3RoID0gY3VzdG9tQWdncmVnYXRpb25MZW5ndGg7XG5cdFx0XHR9XG5cblx0XHRcdC8vY29tcHV0ZSB0aGUgY29ycmVjdCBsYWJlbFxuXHRcdFx0Y29uc3QgbGFiZWwgPSBGaWVsZEhlbHBlci5jb21wdXRlTGFiZWxUZXh0KHRoaXMuY29udmVydGVkRGF0YUZpZWxkLlZhbHVlIGFzIE1ldGFNb2RlbFR5cGU8RGF0YUZpZWxkVHlwZXM+LCB7XG5cdFx0XHRcdGNvbnRleHQ6IG1ldGFDb250ZXh0XG5cdFx0XHR9KSBhcyBzdHJpbmc7XG5cblx0XHRcdGNvbnN0IHZoQ29udHJvbCA9IFZhbHVlSGVscC5nZXRWYWx1ZUhlbHBGb3JNZXRhUGF0aChcblx0XHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLFxuXHRcdFx0XHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKHRoaXMuZGF0YU1vZGVsUGF0aCkhLFxuXHRcdFx0XHR0aGlzLmNvbnRleHRQYXRoID8/IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpISxcblx0XHRcdFx0dGhpcy5fZ2V0T3duZXIoKT8uZ2V0TWV0YU1vZGVsKClcblx0XHRcdCk7XG5cdFx0XHRsZXQgdmFsdWVIZWxwOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0XHRpZiAodmhDb250cm9sICYmIHZoQ29udHJvbC5nZXRDb250ZW50KCkpIHtcblx0XHRcdFx0dmFsdWVIZWxwID0gdmhDb250cm9sLmdldENvbnRlbnQoKSEuZ2V0SWQoKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IG11bHRpVmFsdWVGaWVsZCA9IChcblx0XHRcdFx0PE11bHRpVmFsdWVGaWVsZFxuXHRcdFx0XHRcdGlkPXt0aGlzLmNyZWF0ZUlkKFwiX212ZlwiKX1cblx0XHRcdFx0XHRkZWxlZ2F0ZT17eyBuYW1lOiBcInNhcC9mZS9tYWNyb3MvbXVsdGl2YWx1ZWZpZWxkL011bHRpVmFsdWVGaWVsZERlbGVnYXRlXCIgfX1cblx0XHRcdFx0XHRpdGVtcz17aXRlbXNBZ2dyZWdhdGlvbn1cblx0XHRcdFx0XHRkaXNwbGF5PXt0aGlzLmRpc3BsYXlNb2RlfVxuXHRcdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdFx0ZWRpdE1vZGU9e3RoaXMuZWRpdE1vZGV9XG5cdFx0XHRcdFx0dmFsdWVIZWxwPXt2YWx1ZUhlbHB9XG5cdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e3RoaXMuYXJpYUxhYmVsbGVkQnkgPyB0aGlzLmFyaWFMYWJlbGxlZEJ5IDogW119XG5cdFx0XHRcdFx0c2hvd0VtcHR5SW5kaWNhdG9yPXt0aGlzLmZvcm1hdE9wdGlvbnM/LnNob3dFbXB0eUluZGljYXRvcn1cblx0XHRcdFx0XHRsYWJlbD17bGFiZWx9XG5cdFx0XHRcdFx0cmVxdWlyZWQ9e2NvbXBpbGVFeHByZXNzaW9uKGFuZChVSS5Jc0VkaXRhYmxlLCBpc1JlcXVpcmVkRXhwcmVzc2lvbih0aGlzLmNvbnZlcnRlZERhdGFGaWVsZCkpKX1cblx0XHRcdFx0XHRjaGFuZ2U9eyhNdWx0aVZhbHVlRmllbGRSdW50aW1lLmhhbmRsZUNoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9uKS5iaW5kKE11bHRpVmFsdWVGaWVsZFJ1bnRpbWUsIGNvbnRyb2xsZXIpfVxuXHRcdFx0XHRcdGZpZWxkR3JvdXBJZHM9e3RoaXMuZmllbGRHcm91cElkc31cblx0XHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e0ZpZWxkUnVudGltZS5vblZhbGlkYXRlRmllbGRHcm91cH1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRpdGVtczogPE11bHRpVmFsdWVGaWVsZEl0ZW0ga2V5PXt0aGlzLml0ZW0ua2V5fSBkZXNjcmlwdGlvbj17dGhpcy5pdGVtLmRlc2NyaXB0aW9ufSAvPixcblx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cImluc2VydGFibGVBbmREZWxldGFibGVcIiB2YWx1ZT17dGhpcy5pbnNlcnRhYmxlQW5kRGVsZXRhYmxlfSAvPlxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvTXVsdGlWYWx1ZUZpZWxkPlxuXHRcdFx0KTtcblxuXHRcdFx0bGV0IGZvcm13cmFwcGVyID0gbnVsbDtcblx0XHRcdGlmICh0aGlzLmNvbGxhYm9yYXRpb25FbmFibGVkKSB7XG5cdFx0XHRcdGNvbnN0IGF2YXRhciA9IChcblx0XHRcdFx0XHQ8QXZhdGFyXG5cdFx0XHRcdFx0XHR2aXNpYmxlPXt0aGlzLmNvbGxhYm9yYXRpb25FeHByZXNzaW9ufVxuXHRcdFx0XHRcdFx0aW5pdGlhbHM9e3RoaXMuY29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRcdGRpc3BsYXlTaXplPVwiQ3VzdG9tXCJcblx0XHRcdFx0XHRcdGN1c3RvbURpc3BsYXlTaXplPVwiMS41cmVtXCJcblx0XHRcdFx0XHRcdGN1c3RvbUZvbnRTaXplPVwiMC44cmVtXCJcblx0XHRcdFx0XHRcdGJhY2tncm91bmRDb2xvcj17dGhpcy5jb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9ufVxuXHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0RmllbGRSdW50aW1lSGVscGVyLnNob3dDb2xsYWJvcmF0aW9uRWRpdFVzZXIoYXZhdGFyLCB2aWV3KTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0KTtcblx0XHRcdFx0Zm9ybXdyYXBwZXIgPSAoXG5cdFx0XHRcdFx0PEZvcm1FbGVtZW50V3JhcHBlcj5cblx0XHRcdFx0XHRcdDxIQm94IHdpZHRoPVwiMTAwJVwiIHJlbmRlclR5cGU9XCJCYXJlXCIgYWxpZ25JdGVtcz1cIkVuZFwiPlxuXHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiBbbXVsdGlWYWx1ZUZpZWxkLCBhdmF0YXJdXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHRcdFx0PC9Gb3JtRWxlbWVudFdyYXBwZXI+XG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0bXVsdGlWYWx1ZUZpZWxkPy5hZGRFdmVudERlbGVnYXRlKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG9uZm9jdXNpbjogKGV2dDogalF1ZXJ5LkV2ZW50ICYgeyBzcmNDb250cm9sOiBDb250cm9sIH0pID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgY3VycmVudE11bHRpVmFsdWVGaWVsZCA9IGV2dC5zcmNDb250cm9sLmdldFBhcmVudCgpIGFzIE11bHRpVmFsdWVGaWVsZDtcblx0XHRcdFx0XHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQ/LmhhbmRsZUNvbnRlbnRGb2N1c0luKGN1cnJlbnRNdWx0aVZhbHVlRmllbGQpO1xuXG5cdFx0XHRcdFx0XHRcdGlmICh2YWx1ZUhlbHBDb250cm9sPy5nZXREb21SZWYoKSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlSGVscENvbnRyb2wuYXR0YWNoRXZlbnRPbmNlKFwiY2xvc2VkXCIsICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRNdWx0aVZhbHVlRmllbGQ/LmZvY3VzKCk7XG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRvbmZvY3Vzb3V0OiAoZXZ0OiBqUXVlcnkuRXZlbnQgJiB7IHNyY0NvbnRyb2w6IENvbnRyb2wgfSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRsZXQgY3VycmVudE11bHRpVmFsdWVGaWVsZCA9IGV2dC5zcmNDb250cm9sLmdldFBhcmVudCgpIGFzIE11bHRpVmFsdWVGaWVsZDtcblx0XHRcdFx0XHRcdFx0aWYgKGN1cnJlbnRNdWx0aVZhbHVlRmllbGQ/LmlzQTxUb2tlbml6ZXI+KFwic2FwLm0uVG9rZW5pemVyXCIpKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudE11bHRpVmFsdWVGaWVsZCA9IGN1cnJlbnRNdWx0aVZhbHVlRmllbGQuZ2V0UGFyZW50KCk/LmdldFBhcmVudCgpIGFzIE11bHRpVmFsdWVGaWVsZDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjb25zdCBldmVudCA9IG5ldyBVSTVFdmVudChcIlwiLCBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkLCB7XG5cdFx0XHRcdFx0XHRcdFx0ZmllbGRHcm91cElkczogY3VycmVudE11bHRpVmFsdWVGaWVsZC5nZXRGaWVsZEdyb3VwSWRzKClcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGNvbnRyb2xsZXIuY29sbGFib3JhdGl2ZURyYWZ0LmhhbmRsZUNvbnRlbnRGb2N1c091dChldmVudCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR0aGlzXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Y29uc3QgdmFsdWVIZWxwQ29udHJvbCA9IEVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQobXVsdGlWYWx1ZUZpZWxkLmdldFZhbHVlSGVscCgpKSBhcyBNZGNWYWx1ZUhlbHA7XG5cblx0XHRcdFx0dmFsdWVIZWxwQ29udHJvbD8uYXR0YWNoT3BlbmVkKChldnQ6IFZhbHVlSGVscCRPcGVuZWRFdmVudCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGN1cnJlbnRNdWx0aVZhbHVlRmllbGQgPSBldnQuZ2V0U291cmNlKCkuZ2V0Q29udHJvbCgpITtcblx0XHRcdFx0XHRjb250cm9sbGVyLmNvbGxhYm9yYXRpdmVEcmFmdC5oYW5kbGVDb250ZW50Rm9jdXNJbihjdXJyZW50TXVsdGlWYWx1ZUZpZWxkIGFzIE11bHRpVmFsdWVGaWVsZCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0bXVsdGlWYWx1ZUZpZWxkLmFkZEN1c3RvbURhdGEobmV3IEN1c3RvbURhdGEoeyBrZXk6IFwiZm9yd2FyZGVkSXRlbXNCaW5kaW5nXCIsIHZhbHVlOiB0aGlzLml0ZW1zIH0pKTtcblx0XHRcdHJldHVybiB0aGlzLmNvbGxhYm9yYXRpb25FbmFibGVkID8gZm9ybXdyYXBwZXIgOiBtdWx0aVZhbHVlRmllbGQ7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldHRlciBmb3IgdGhlIHJlYWRPbmx5IHByb3BlcnR5LlxuXHQgKiBAcGFyYW0gcmVhZE9ubHlcblx0ICovXG5cdHNldFJlYWRPbmx5KHJlYWRPbmx5OiBib29sZWFuKTogdm9pZCB7XG5cdFx0c3VwZXIuc2V0UHJvcGVydHkoXCJyZWFkT25seVwiLCByZWFkT25seSk7XG5cdFx0dGhpcy51cGRhdGVFZGl0TW9kZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHRlciBmb3IgdGhlIF9pc0luRWRpdE1vZGUgcHJvcGVydHkuXG5cdCAqIEBwYXJhbSBpbkVkaXRNb2RlXG5cdCAqL1xuXHRzZXRfaXNJbkVkaXRNb2RlKGluRWRpdE1vZGU6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRzdXBlci5zZXRQcm9wZXJ0eShcIl9pc0luRWRpdE1vZGVcIiwgaW5FZGl0TW9kZSk7XG5cdFx0dGhpcy51cGRhdGVFZGl0TW9kZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBNdWx0aVZhbHVlRmllbGQuXG5cdCAqIEByZXR1cm5zIFRoZSBNdWx0aVZhbHVlRmllbGQuXG5cdCAqL1xuXHRnZXRNdWx0aVZhbHVlRmllbGQoKTogTXVsdGlWYWx1ZUZpZWxkIHtcblx0XHRpZiAodGhpcy5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCgpKSB7XG5cdFx0XHRyZXR1cm4gKCh0aGlzLmNvbnRlbnQgYXMgRm9ybUVsZW1lbnRXcmFwcGVyKS5jb250ZW50IGFzIEhCb3gpLmdldEl0ZW1zKClbMF0gYXMgTXVsdGlWYWx1ZUZpZWxkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb250ZW50IGFzIE11bHRpVmFsdWVGaWVsZDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlIHRoZSBlZGl0IG1vZGUgYmFzZWQgb24gdGhlIHJlYWRPbmx5IGFuZCBfaXNJbkVkaXRNb2RlIHByb3BlcnRpZXMuXG5cdCAqL1xuXHR1cGRhdGVFZGl0TW9kZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBtdWx0aXZhbHVlRmllbGQgPSB0aGlzLmdldE11bHRpVmFsdWVGaWVsZCgpO1xuXHRcdGNvbnN0IGluc2VydGFibGVBbmREZWxldGFibGUgPSBtdWx0aXZhbHVlRmllbGQuZGF0YShcImluc2VydGFibGVBbmREZWxldGFibGVcIik7XG5cdFx0aWYgKHRoaXMucmVhZE9ubHkgPT09IHRydWUgfHwgIWluc2VydGFibGVBbmREZWxldGFibGUpIHtcblx0XHRcdHRoaXMuZWRpdE1vZGUgPSBcIkRpc3BsYXlcIjtcblx0XHRcdG11bHRpdmFsdWVGaWVsZC5zZXRFZGl0TW9kZShcIkRpc3BsYXlcIik7XG5cdFx0fSBlbHNlIGlmICh0aGlzLnJlYWRPbmx5ID09PSBmYWxzZSAmJiBpbnNlcnRhYmxlQW5kRGVsZXRhYmxlKSB7XG5cdFx0XHQvL3JlYWRPbmx5IGZhbHNlIGNhbiBvbmx5IGhhdmUgaW1wYWN0IGlmIGl0ZW1zIGFyZSBwcm92aWRlZFxuXHRcdFx0aWYgKHRoaXMuX2lzSW5FZGl0TW9kZSkge1xuXHRcdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJFZGl0YWJsZVwiO1xuXHRcdFx0XHRtdWx0aXZhbHVlRmllbGQuc2V0RWRpdE1vZGUoXCJFZGl0YWJsZVwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuZWRpdE1vZGUgPSBcIkRpc3BsYXlcIjtcblx0XHRcdFx0bXVsdGl2YWx1ZUZpZWxkLnNldEVkaXRNb2RlKFwiRGlzcGxheVwiKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gaWYgcmVhZE9ubHkgaXMgbm90IGV4cGxpY2l0bHkgc2V0IHdlIGtlZXAgdGVoIHN0YW5kYXJkIGJlaGF2aW9yXG5cdH1cblxuXHQvKipcblx0ICogT24gQmVmb3JlIHJlbmRlcmluZyBmcm93YXJkIHRoZSBhcmlhTGFiZWxsZWRCeSB0byB0aGUgbWRjIE11bHRpVmFsdWVGaWVsZC5cblx0ICovXG5cdG9uQmVmb3JlUmVuZGVyaW5nKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQpIHtcblx0XHRcdGNvbnN0IG11bHRpVmFsdWVGaWVsZCA9IHRoaXMuZ2V0TXVsdGlWYWx1ZUZpZWxkKCk7XG5cdFx0XHRjb25zdCBhQXJpYUxhYmVsbGVkQnkgPSAodGhpcyBhcyB1bmtub3duIGFzIEVuaGFuY2VXaXRoVUk1PE11bHRpVmFsdWVGaWVsZEJsb2NrPikuZ2V0QXJpYUxhYmVsbGVkQnkoKTtcblxuXHRcdFx0Zm9yIChjb25zdCBzSWQgb2YgYUFyaWFMYWJlbGxlZEJ5KSB7XG5cdFx0XHRcdGNvbnN0IGFBcmlhTGFiZWxsZWRCeXMgPSBtdWx0aVZhbHVlRmllbGQuZ2V0QXJpYUxhYmVsbGVkQnkoKTtcblx0XHRcdFx0aWYgKCFhQXJpYUxhYmVsbGVkQnlzLmluY2x1ZGVzKHNJZCkpIHtcblx0XHRcdFx0XHRtdWx0aVZhbHVlRmllbGQuYWRkQXJpYUxhYmVsbGVkQnkoc0lkKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
650
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNdWx0aVZhbHVlRmllbGRCbG9jayIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2RlYzMiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjNCIsImFzc29jaWF0aW9uIiwiX2RlYzUiLCJfZGVjNiIsInJlcXVpcmVkIiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiaXNCaW5kaW5nSW5mbyIsIl9kZWMxMCIsImFnZ3JlZ2F0aW9uIiwibXVsdGlwbGUiLCJkZWZhdWx0Q2xhc3MiLCJGb3JtYXRPcHRpb25zIiwiX2RlYzExIiwiX2RlYzEyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwicHJvcHMiLCJvdGhlcnMiLCJfdGhpcyIsIl9pc0luRWRpdE1vZGUiLCJjb21waWxlRXhwcmVzc2lvbiIsIlVJIiwiSXNFZGl0YWJsZSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiX292ZXJyaWRlVmFsdWUiLCJjb2xsZWN0aW9uQmluZGluZyIsIml0ZW1EYXRhTW9kZWxPYmplY3RQYXRoIiwidGV4dEV4cHJlc3Npb24iLCJrZXkiLCJpdGVtcyIsIm1vZGVsIiwibW9kZWxOYW1lIiwicGF0aCIsImNvbW1vblRhcmdldE9iamVjdFByb3BlcnR5IiwidGFyZ2V0T2JqZWN0IiwiY29tbW9uUHJvcGVydHlQYXRoIiwibmFtZSIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0IiwiZGVzY3JpcHRpb24iLCJfZ2V0TXVsdGlJbnB1dFNldHRpbmdzIiwicHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIiwiZm9ybWF0T3B0aW9ucyIsImNvbGxlY3Rpb25QYXRoIiwiX2dldFBhdGhTdHJ1Y3R1cmUiLCJ1c2VQYXJlbnRCaW5kaW5nQ2FjaGUiLCJ0ZW1wbGF0ZVNoYXJlYWJsZSIsInBhcmFtZXRlcnMiLCIkJG93blJlcXVlc3QiLCJwcm9wZXJ0eVBhdGhPclByb3BlcnR5IiwicHJvcGVydHlEZWZpbml0aW9uIiwiaXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uIiwiJHRhcmdldCIsImNvbW1vblRleHQiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiZ2V0UmVsYXRpdmVQYXRocyIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsImdldFZhbHVlQmluZGluZyIsImRpc3BsYXlPbmx5IiwibGVuZ3RoIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsImZpcnN0Q29sbGVjdGlvblBhdGgiLCJjdXJyZW50RW50aXR5U2V0IiwiY29udGV4dExvY2F0aW9uIiwidGFyZ2V0RW50aXR5U2V0Iiwic3RhcnRpbmdFbnRpdHlTZXQiLCJuYXZpZ2F0ZWRQYXRocyIsImNvbnRleHROYXZzRm9ySXRlbSIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibmF2UHJvcCIsInVuZGVmaW5lZCIsInNvbWUiLCJjb250ZXh0TmF2UHJvcCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInB1c2giLCJuYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIiwiaGFzT3duUHJvcGVydHkiLCJpc011bHRpcGxlTmF2aWdhdGlvblByb3BlcnR5Iiwiam9pbiIsIk9iamVjdCIsImFzc2lnbiIsImNvbXB1dGVGaWVsZEdyb3VwSWRzIiwiYXBwQ29tcG9uZW50Iiwic2lkZUVmZmVjdFNlcnZpY2UiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJmaWVsZEdyb3VwSWRzIiwiZGF0YU1vZGVsUGF0aCIsInRhcmdldEVudGl0eVR5cGUiLCJjb2xsYWJvcmF0aW9uRW5hYmxlZCIsImNvbGxhYm9yYXRpb25GaWVsZEdyb3VwIiwiQ29sbGFib3JhdGlvbkZpZWxkR3JvdXBQcmVmaXgiLCJkYXRhU291cmNlUGF0aCIsInJlc3VsdCIsImluaXRpYWxpemUiLCJtZXRhQ29udGV4dFBhdGgiLCJvd25lciIsIl9nZXRPd25lciIsImNvbnRleHRQYXRoIiwicHJlcHJvY2Vzc29yQ29udGV4dCIsImZ1bGxDb250ZXh0UGF0aCIsIm9kYXRhTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibWV0YUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImdldFBhdGgiLCJtZXRhUGF0aE9iamVjdCIsImdldFRhcmdldCIsImlzUHJvcGVydHkiLCJEYXRhRmllbGREZWZhdWx0IiwiZW5oYW5jZWRNZXRhUGF0aCIsImRhdGFGaWVsZERhdGFNb2RlbFBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCIsImNvbnZlcnRlZERhdGFGaWVsZCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwiVmFsdWUiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiaW5zZXJ0YWJsZSIsImlzUGF0aEluc2VydGFibGUiLCJkZWxldGVOYXZpZ2F0aW9uUmVzdHJpY3Rpb24iLCJpc1BhdGhEZWxldGFibGUiLCJpZ25vcmVUYXJnZXRDb2xsZWN0aW9uIiwiYXV0aG9yaXplVW5yZXNvbHZhYmxlIiwiZGVsZXRlUGF0aCIsImRlbGV0YWJsZSIsImlmRWxzZSIsIl90eXBlIiwib3IiLCJub3QiLCJpc0NvbnN0YW50IiwiY29uc3RhbnQiLCJyZWFkT25seSIsInZpc2libGUiLCJnZXRWaXNpYmxlRXhwcmVzc2lvbiIsImluc2VydGFibGVBbmREZWxldGFibGUiLCJhbmQiLCJjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiIsImNvbXB1dGVDb2xsYWJvcmF0aW9uUHJvcGVydGllcyIsImlzUHJvcGVydHlJbml0aWFsIiwiZWRpdE1vZGUiLCJlcXVhbCIsImlzUmVhZE9ubHlFeHByZXNzaW9uIiwiZGlzcGxheU1vZGUiLCJnZXREaXNwbGF5TW9kZSIsImxvY2FsRGF0YU1vZGVsUGF0aCIsIml0ZW0iLCJjb2xsZWN0aW9uIiwiZ2V0QXBwQ29tcG9uZW50Iiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQiLCJNb2RlbEhlbHBlciIsIlVJRm9ybWF0dGVycyIsImdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMiLCJoYXNDb2xsYWJvcmF0aW9uQWN0aXZpdHkiLCJjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMiLCJjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IiLCJnZXRSZXF1aXJlZCIsImdldE11bHRpVmFsdWVGaWVsZCIsImdldEl0ZW1zIiwiZ2V0TWV0YVBhdGhPYmplY3QiLCJtZXRhUGF0aCIsImlkIiwidmhJZFByZWZpeCIsIklEIiwiZ2VuZXJhdGUiLCJnZXRJZCIsImNyZWF0ZUlkIiwiY29udHJvbGxlciIsImdldFJvb3RDb250cm9sbGVyIiwidmlldyIsImdldFZpZXciLCJjb250ZXh0IiwiZ2V0Q29udGV4dFBhdGgiLCJpdGVtc0FnZ3JlZ2F0aW9uIiwiY3VzdG9tQWdncmVnYXRpb25MZW5ndGgiLCJnZXRNYW5pZmVzdEVudHJ5IiwibWFjcm9zIiwibXVsdGlWYWx1ZUZpZWxkIiwiaXRlbXNTaXplTGltaXQiLCJsYWJlbCIsIkZpZWxkSGVscGVyIiwiY29tcHV0ZUxhYmVsVGV4dCIsInZoQ29udHJvbCIsIlZhbHVlSGVscCIsImdldFZhbHVlSGVscEZvck1ldGFQYXRoIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiZ2V0T3duZXJDb250ZXh0UGF0aCIsInZhbHVlSGVscCIsImdldENvbnRlbnQiLCJfanN4IiwiTXVsdGlWYWx1ZUZpZWxkIiwiZGVsZWdhdGUiLCJkaXNwbGF5Iiwid2lkdGgiLCJhcmlhTGFiZWxsZWRCeSIsInNob3dFbXB0eUluZGljYXRvciIsImlzUmVxdWlyZWRFeHByZXNzaW9uIiwiY2hhbmdlIiwiTXVsdGlWYWx1ZUZpZWxkUnVudGltZSIsImhhbmRsZUNoYW5nZSIsImJpbmQiLCJ2YWxpZGF0ZUZpZWxkR3JvdXAiLCJGaWVsZFJ1bnRpbWUiLCJvblZhbGlkYXRlRmllbGRHcm91cCIsImNoaWxkcmVuIiwiTXVsdGlWYWx1ZUZpZWxkSXRlbSIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwidmFsdWUiLCJmb3Jtd3JhcHBlciIsImF2YXRhciIsIkF2YXRhciIsImluaXRpYWxzIiwiZGlzcGxheVNpemUiLCJjdXN0b21EaXNwbGF5U2l6ZSIsImN1c3RvbUZvbnRTaXplIiwiYmFja2dyb3VuZENvbG9yIiwicHJlc3MiLCJGaWVsZFJ1bnRpbWVIZWxwZXIiLCJzaG93Q29sbGFib3JhdGlvbkVkaXRVc2VyIiwiRm9ybUVsZW1lbnRXcmFwcGVyIiwiSEJveCIsInJlbmRlclR5cGUiLCJhbGlnbkl0ZW1zIiwiYWRkRXZlbnREZWxlZ2F0ZSIsIm9uZm9jdXNpbiIsImV2dCIsImN1cnJlbnRNdWx0aVZhbHVlRmllbGQiLCJzcmNDb250cm9sIiwiZ2V0UGFyZW50IiwiY29sbGFib3JhdGl2ZURyYWZ0IiwiaGFuZGxlQ29udGVudEZvY3VzSW4iLCJ2YWx1ZUhlbHBDb250cm9sIiwiZ2V0RG9tUmVmIiwiYXR0YWNoRXZlbnRPbmNlIiwiZm9jdXMiLCJvbmZvY3Vzb3V0IiwiaXNBIiwiZXZlbnQiLCJVSTVFdmVudCIsImdldEZpZWxkR3JvdXBJZHMiLCJoYW5kbGVDb250ZW50Rm9jdXNPdXQiLCJFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRWYWx1ZUhlbHAiLCJhdHRhY2hPcGVuZWQiLCJnZXRTb3VyY2UiLCJnZXRDb250cm9sIiwiYWRkQ3VzdG9tRGF0YSIsInNldFJlYWRPbmx5Iiwic2V0UHJvcGVydHkiLCJ1cGRhdGVFZGl0TW9kZSIsInNldF9pc0luRWRpdE1vZGUiLCJpbkVkaXRNb2RlIiwibXVsdGl2YWx1ZUZpZWxkIiwiZGF0YSIsInNldEVkaXRNb2RlIiwib25CZWZvcmVSZW5kZXJpbmciLCJhQXJpYUxhYmVsbGVkQnkiLCJnZXRBcmlhTGFiZWxsZWRCeSIsInNJZCIsImFBcmlhTGFiZWxsZWRCeXMiLCJpbmNsdWRlcyIsImFkZEFyaWFMYWJlbGxlZEJ5IiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiTXVsdGlWYWx1ZUZpZWxkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiwgUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL0VkbVwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGQsIERhdGFGaWVsZFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7XG5cdGFuZCxcblx0Y29tcGlsZUV4cHJlc3Npb24sXG5cdGNvbnN0YW50LFxuXHRlcXVhbCxcblx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLFxuXHRpZkVsc2UsXG5cdGlzQ29uc3RhbnQsXG5cdG5vdCxcblx0b3Jcbn0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRhZ2dyZWdhdGlvbixcblx0YXNzb2NpYXRpb24sXG5cdGRlZmluZVVJNUNsYXNzLFxuXHRpbXBsZW1lbnRJbnRlcmZhY2UsXG5cdHByb3BlcnR5LFxuXHR0eXBlIEVuaGFuY2VXaXRoVUk1LFxuXHR0eXBlIFByb3BlcnRpZXNPZlxufSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHsgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgKiBhcyBJRCBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHtcblx0aXNNdWx0aXBsZU5hdmlnYXRpb25Qcm9wZXJ0eSxcblx0aXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sXG5cdGlzUHJvcGVydHksXG5cdGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQge1xuXHRlbmhhbmNlRGF0YU1vZGVsUGF0aCxcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCxcblx0Z2V0UmVsYXRpdmVQYXRocyxcblx0Z2V0VGFyZ2V0T2JqZWN0UGF0aCxcblx0aXNQYXRoRGVsZXRhYmxlLFxuXHRpc1BhdGhJbnNlcnRhYmxlXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgRGlzcGxheU1vZGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB7IGdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uLCBnZXREaXNwbGF5TW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IEZpZWxkSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRWYWx1ZUJpbmRpbmcsIGdldFZpc2libGVFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgdHlwZSBUb2tlbml6ZXIgZnJvbSBcInNhcC9tL1Rva2VuaXplclwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgTXVsdGlWYWx1ZUZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL011bHRpVmFsdWVGaWVsZFwiO1xuaW1wb3J0IHR5cGUgRmllbGRFZGl0TW9kZSBmcm9tIFwic2FwL3VpL21kYy9lbnVtcy9GaWVsZEVkaXRNb2RlXCI7XG5pbXBvcnQgTXVsdGlWYWx1ZUZpZWxkSXRlbSBmcm9tIFwic2FwL3VpL21kYy9maWVsZC9NdWx0aVZhbHVlRmllbGRJdGVtXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuXG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgeyBDb2xsYWJvcmF0aW9uRmllbGRHcm91cFByZWZpeCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCBGb3JtRWxlbWVudFdyYXBwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xzL0Zvcm1FbGVtZW50V3JhcHBlclwiO1xuaW1wb3J0ICogYXMgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvQ29sbGFib3JhdGlvbkZvcm1hdHRlclwiO1xuaW1wb3J0IHR5cGUgTWV0YVBhdGggZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWV0YVBhdGhcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgaXNSZWFkT25seUV4cHJlc3Npb24sIGlzUmVxdWlyZWRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRmllbGRDb250cm9sSGVscGVyXCI7XG5pbXBvcnQgKiBhcyBVSUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgRmllbGRSdW50aW1lIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkUnVudGltZVwiO1xuaW1wb3J0IEZvcm1hdE9wdGlvbnMgZnJvbSBcInNhcC9mZS9tYWNyb3MvbXVsdGl2YWx1ZWZpZWxkL0Zvcm1hdE9wdGlvbnNcIjtcbmltcG9ydCBNdWx0aVZhbHVlRmllbGRSdW50aW1lIGZyb20gXCJzYXAvZmUvbWFjcm9zL211bHRpdmFsdWVmaWVsZC9NdWx0aVZhbHVlRmllbGRSdW50aW1lXCI7XG5pbXBvcnQgQXZhdGFyIGZyb20gXCJzYXAvbS9BdmF0YXJcIjtcbmltcG9ydCBIQm94IGZyb20gXCJzYXAvbS9IQm94XCI7XG5pbXBvcnQgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBNZGNWYWx1ZUhlbHAsIFZhbHVlSGVscCRPcGVuZWRFdmVudCB9IGZyb20gXCJzYXAvdWkvbWRjL1ZhbHVlSGVscFwiO1xuaW1wb3J0IHR5cGUgeyBNZXRhTW9kZWxUeXBlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuaW1wb3J0IFZhbHVlSGVscCBmcm9tIFwiLi9WYWx1ZUhlbHBcIjtcbmltcG9ydCBGaWVsZFJ1bnRpbWVIZWxwZXIgZnJvbSBcIi4vZmllbGQvRmllbGRSdW50aW1lSGVscGVyXCI7XG5cbnR5cGUgTXVsdGlJbnB1dFNldHRpbmdzID0ge1xuXHRkZXNjcmlwdGlvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0Y29sbGVjdGlvbkJpbmRpbmc6IFByb3BlcnR5QmluZGluZ0luZm87XG5cdGtleTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0ZGlzcGxheU9ubHk/OiBib29sZWFuO1xufTtcblxudHlwZSBNdWx0aVZhbHVlRmllbGRQYXRoU3RydWN0dXJlID0ge1xuXHRjb2xsZWN0aW9uUGF0aDogc3RyaW5nO1xuXHRpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT47XG59O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIGZvciBjcmVhdGluZyBhIE11bHRpVmFsdWVGaWVsZCBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBUaGUgTXVsdGlWYWx1ZUZpZWxkIGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgZWl0aGVyIGEgRGF0YUZpZWxkIG9yIFByb3BlcnR5IGRpcmVjdGx5LiBJdCBoYXMgdG8gcG9pbnQgdG8gYSBjb2xsZWN0aW9uIHByb3BlcnR5LlxuICogPGJyPlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm86TXVsdGlWYWx1ZUZpZWxkXG4gKiBpZD1cIlNvbWVVbmlxdWVJZGVudGlmaWVyXCJcbiAqIGNvbnRleHRQYXRoPVwie2VudGl0eVNldCZndDt9XCJcbiAqIG1ldGFQYXRoPVwie2RhdGFGaWVsZCZndDt9XCJcbiAqIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLk11bHRpVmFsdWVGaWVsZFxuICogQHB1YmxpY1xuICogQHNpbmNlIDEuMTE4LjBcbiAqL1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLk11bHRpVmFsdWVGaWVsZFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTXVsdGlWYWx1ZUZpZWxkQmxvY2sgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrPENvbnRyb2w+IHtcblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC51aS5jb3JlLklGb3JtQ29udGVudFwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF91aV9jb3JlX0lGb3JtQ29udGVudCA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFRoZSAnaWQnIHByb3BlcnR5XG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIGlkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQcmVmaXggYWRkZWQgdG8gdGhlIGdlbmVyYXRlZCBJRCBvZiB0aGUgZmllbGQgLSBvbmx5IGlmIG5vIGlkIGlzIHByb3ZpZGVkXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0aWRQcmVmaXg/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFByZWZpeCBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkIElEIG9mIHRoZSB2YWx1ZSBoZWxwIHVzZWQgZm9yIHRoZSBmaWVsZFxuXHQgKi9cblx0QGFzc29jaWF0aW9uKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHZoSWRQcmVmaXghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHJlbGF0aXZlIE1ldGFkYXRhIHBhdGggdG8gdGhlIE11bHRpVmFsdWVGaWVsZC5cblx0ICogVGhlIG1ldGFQYXRoIHNob3VsZCBwb2ludCB0byBhIFByb3BlcnR5IG9yIERhdGFGaWVsZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBtZXRhUGF0aCE6IHN0cmluZztcblxuXHQvKipcblx0ICogVGhlIHJlYWRPbmx5IGZsYWdcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIHJlcXVpcmVkOiBmYWxzZSB9KVxuXHRwdWJsaWMgcmVhZE9ubHk/OiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0LyoqXG5cdCAqIFRoZSBjb250ZXh0IHBhdGggcHJvdmlkZWQgZm9yIHRoZSBNdWx0aVZhbHVlRmllbGRcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogUHJvcGVydHkgYWRkZWQgdG8gYmUgYWJsZSB0byBhZGQgZGF0YSAvIGl0ZW1zIHRvIHRoZSBtdWx0aS1pbnB1dCBmaWVsZCB1c2luZyBhIGRpZmZlcmVudCBtb2RlbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYW55XCIsXG5cdFx0aXNCaW5kaW5nSW5mbzogdHJ1ZVxuXHR9KVxuXHRwdWJsaWMgaXRlbXM/OiBQcm9wZXJ0eUJpbmRpbmdJbmZvO1xuXG5cdC8qKlxuXHQgKiBUaGUgb2JqZWN0IHdpdGggdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuXHQgKlxuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLm11bHRpdmFsdWVmaWVsZC5Gb3JtYXRPcHRpb25zXCIsIG11bHRpcGxlOiBmYWxzZSwgZGVmYXVsdENsYXNzOiBGb3JtYXRPcHRpb25zIH0pXG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdF9pc0luRWRpdE1vZGU6IGJvb2xlYW4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiA9IGZhbHNlO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHVzZVBhcmVudEJpbmRpbmdDYWNoZSA9IGZhbHNlO1xuXG5cdC8vIENvbXB1dGVkIHByb3BlcnRpZXNcblxuXHRwcml2YXRlIGl0ZW0hOiBNdWx0aUlucHV0U2V0dGluZ3M7XG5cblx0LyoqXG5cdCAqIFBvaW50ZWQgYXQgYSBkYXRhRmllbGQuIFRoaXMgY2FuIGJlIERhdGFGaWVsZERlZmF1bHQgZnJvbSBhIHByb3BlcnR5LlxuXHQgKi9cblx0cHJpdmF0ZSBjb252ZXJ0ZWREYXRhRmllbGQhOiBEYXRhRmllbGQ7XG5cblx0LyoqXG5cdCAqIERhdGFNb2RlbFBhdGggZm9yIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGRpc3BsYXllZC5cblx0ICovXG5cdHByaXZhdGUgZGF0YU1vZGVsUGF0aCE6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+O1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSB0byBiZSBkaXNwbGF5ZWRcblx0ICovXG5cdHByaXZhdGUgcHJvcGVydHkhOiBQcm9wZXJ0eTtcblxuXHQvKipcblx0ICogRWRpdCBNb2RlIG9mIHRoZSBmaWVsZC5cblx0ICogSWYgdGhlIGVkaXRNb2RlIGlzIHVuZGVmaW5lZCB0aGVuIHdlIGNvbXB1dGUgaXQgYmFzZWQgb24gdGhlIG1ldGFkYXRhXG5cdCAqIE90aGVyd2lzZSB3ZSB1c2UgdGhlIHZhbHVlIHByb3ZpZGVkIGhlcmUuXG5cdCAqL1xuXHRwcml2YXRlIGVkaXRNb2RlITogRmllbGRFZGl0TW9kZSB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdC8qKlxuXHQgKiBUaGUgZGlzcGxheSBtb2RlIGFkZGVkIHRvIHRoZSBjb2xsZWN0aW9uIGZpZWxkXG5cdCAqL1xuXHRwcml2YXRlIGRpc3BsYXlNb2RlITogRGlzcGxheU1vZGU7XG5cblx0LyoqXG5cdCAqIFRoZSBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB0aGF0IGlzIGNhbGN1bGF0ZWQgaW50ZXJuYWxseVxuXHQgKi9cblx0cHJpdmF0ZSBjb2xsZWN0aW9uITogUHJvcGVydHlCaW5kaW5nSW5mbztcblxuXHRwcml2YXRlIHZpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdHByaXZhdGUgZmllbGRHcm91cElkcz86IHN0cmluZztcblxuXHRwcml2YXRlIGVuaGFuY2VkTWV0YVBhdGghOiBDb250ZXh0O1xuXG5cdHByaXZhdGUgZW5hYmxlRXhwcmVzc2lvbjogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0cHJpdmF0ZSBjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiE6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblxuXHRwcml2YXRlIGNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb24hOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHRwcml2YXRlIGNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24hOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHRwcml2YXRlIGNvbGxhYm9yYXRpb25FbmFibGVkITogYm9vbGVhbjtcblxuXHRwcml2YXRlIGRhdGFTb3VyY2VQYXRoITogc3RyaW5nO1xuXG5cdHByaXZhdGUgaW5zZXJ0YWJsZUFuZERlbGV0YWJsZSE6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogc3RyaW5nIHwgKCRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8TXVsdGlWYWx1ZUZpZWxkQmxvY2s+KSwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdGlmICh0eXBlb2YgcHJvcHMgIT09IFwic3RyaW5nXCIpIHtcblx0XHRcdC8vIHR5cGUgb2YgcHJvcHMgY2FuIGJlIGEgc3RyaW5nIGlmIHdlIGFyZSBjbG9uaW5nIHRoZSBNdWx0aVZhbHVlRmllbGQgaW5zaWRlIGFuIGFnZ3JlZ2F0aW9uXG5cdFx0XHQvLyBpbiB0aGF0IGNhc2UgX2lzSW5FZGl0TW9kZSBoYXMgYWxyZWFkeSBiZWVuIGNvbXB1dGVkIG9uIHRoZSBvbmUgd2UgY2xvbmVcblx0XHRcdHByb3BzLl9pc0luRWRpdE1vZGUgPSBjb21waWxlRXhwcmVzc2lvbihVSS5Jc0VkaXRhYmxlKTtcblx0XHR9XG5cdFx0c3VwZXIocHJvcHMsIG90aGVycyk7XG5cdH1cblxuXHQvKipcblx0ICogSW4gY2FzZSBhbiBleHRlcm5hbCB2YWx1ZSBpcyBzZXQgKGUuZy4gZm9yIHByb3ZpZGluZyBkYXRhIGluIGEganNvbiBtb2RlbCkgd2UgbmVlZCB0byBvdmVycmlkZSB0aGUgYmluZGluZyBzdHJpbmdzIGZvciB0aGUgaXRlbS5cblx0ICogQHBhcmFtIGNvbGxlY3Rpb25CaW5kaW5nXG5cdCAqIEBwYXJhbSBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aFxuXHQgKiBAcGFyYW0gdGV4dEV4cHJlc3Npb25cblx0ICogQHBhcmFtIGtleVxuXHQgKiBAcmV0dXJucyBNdWx0aUlucHV0U2V0dGluZ3Ncblx0ICovXG5cdHByaXZhdGUgX292ZXJyaWRlVmFsdWUoXG5cdFx0Y29sbGVjdGlvbkJpbmRpbmc6IFByb3BlcnR5QmluZGluZ0luZm8gJiB7IHBhcmFtZXRlcnM/OiBvYmplY3QgfSxcblx0XHRpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eVBhdGggfCBQcm9wZXJ0eT4sXG5cdFx0dGV4dEV4cHJlc3Npb246IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLFxuXHRcdGtleTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb25cblx0KTogTXVsdGlJbnB1dFNldHRpbmdzIHtcblx0XHRpZiAodGhpcy5pdGVtcykge1xuXHRcdFx0Y29uc3QgbW9kZWwgPSB0aGlzLml0ZW1zLm1vZGVsID8/IHRoaXMuaXRlbXMubW9kZWxOYW1lO1xuXHRcdFx0Y29sbGVjdGlvbkJpbmRpbmcgPSB7IHBhdGg6IGAke21vZGVsfT4ke3RoaXMuaXRlbXMucGF0aH1gIH07XG5cdFx0XHRjb25zdCBjb21tb25UYXJnZXRPYmplY3RQcm9wZXJ0eSA9IGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eTtcblx0XHRcdGNvbnN0IGNvbW1vblByb3BlcnR5UGF0aCA9IGB7JHttb2RlbH0+JHtjb21tb25UYXJnZXRPYmplY3RQcm9wZXJ0eS5uYW1lfX1gO1xuXG5cdFx0XHQvLyBUZXh0IGFycmFuZ2VtZW50IHVzZSBjYXNlXG5cdFx0XHRpZiAoaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPihjb21tb25UYXJnZXRPYmplY3RQcm9wZXJ0eS5hbm5vdGF0aW9ucy5Db21tb24/LlRleHQpKSB7XG5cdFx0XHRcdHRleHRFeHByZXNzaW9uID0gYHske21vZGVsfT4ke2NvbW1vblRhcmdldE9iamVjdFByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbj8uVGV4dD8ucGF0aH19YDtcblx0XHRcdFx0Ly8gbm9uIHRleHQgYXJyYW5nZW1lbnQgdXNlIGNhc2Vcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRleHRFeHByZXNzaW9uID0gY29tbW9uUHJvcGVydHlQYXRoO1xuXHRcdFx0fVxuXHRcdFx0a2V5ID0gY29tbW9uUHJvcGVydHlQYXRoO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0ZGVzY3JpcHRpb246IHRleHRFeHByZXNzaW9uLFxuXHRcdFx0Y29sbGVjdGlvbkJpbmRpbmcsXG5cdFx0XHRrZXk6IGtleVxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogRnVuY3Rpb24gdG8gZ2V0IHRoZSBjb3JyZWN0IHNldHRpbmdzIGZvciB0aGUgbXVsdGkgaW5wdXQuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGggVGhlIGNvcnJlc3BvbmRpbmcgRGF0YU1vZGVsT2JqZWN0UGF0aC5cblx0ICogQHBhcmFtIGZvcm1hdE9wdGlvbnMgVGhlIGZvcm1hdCBvcHRpb25zIHRvIGNhbGN1bGF0ZSB0aGUgcmVzdWx0XG5cdCAqIEByZXR1cm5zIE11bHRpSW5wdXRTZXR0aW5nc1xuXHQgKi9cblx0cHJpdmF0ZSBfZ2V0TXVsdGlJbnB1dFNldHRpbmdzKFxuXHRcdHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4sXG5cdFx0Zm9ybWF0T3B0aW9uczogRm9ybWF0T3B0aW9ucyB8IHVuZGVmaW5lZFxuXHQpOiBNdWx0aUlucHV0U2V0dGluZ3Mge1xuXHRcdGNvbnN0IHsgY29sbGVjdGlvblBhdGgsIGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoIH0gPSBNdWx0aVZhbHVlRmllbGRCbG9jay5fZ2V0UGF0aFN0cnVjdHVyZShwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRcdGNvbnN0IGNvbGxlY3Rpb25CaW5kaW5nID0gdGhpcy51c2VQYXJlbnRCaW5kaW5nQ2FjaGVcblx0XHRcdD8geyBwYXRoOiBjb2xsZWN0aW9uUGF0aCwgdGVtcGxhdGVTaGFyZWFibGU6IGZhbHNlIH1cblx0XHRcdDogeyBwYXRoOiBjb2xsZWN0aW9uUGF0aCwgcGFyYW1ldGVyczogeyAkJG93blJlcXVlc3Q6IHRydWUgfSwgdGVtcGxhdGVTaGFyZWFibGU6IGZhbHNlIH07XG5cblx0XHRjb25zdCBwcm9wZXJ0eVBhdGhPclByb3BlcnR5ID0gcHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eVBhdGggfCBQcm9wZXJ0eTtcblx0XHRjb25zdCBwcm9wZXJ0eURlZmluaXRpb24gPSBpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoT3JQcm9wZXJ0eSlcblx0XHRcdD8gcHJvcGVydHlQYXRoT3JQcm9wZXJ0eS4kdGFyZ2V0XG5cdFx0XHQ6IHByb3BlcnR5UGF0aE9yUHJvcGVydHk7XG5cdFx0Y29uc3QgY29tbW9uVGV4dCA9IHByb3BlcnR5RGVmaW5pdGlvbj8uYW5ub3RhdGlvbnMuQ29tbW9uPy5UZXh0O1xuXHRcdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBnZXRSZWxhdGl2ZVBhdGhzKHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cblx0XHRjb25zdCB0ZXh0RXhwcmVzc2lvbiA9IGNvbW1vblRleHRcblx0XHRcdD8gY29tcGlsZUV4cHJlc3Npb24oZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pKVxuXHRcdFx0OiBnZXRWYWx1ZUJpbmRpbmcoaXRlbURhdGFNb2RlbE9iamVjdFBhdGgsIGZvcm1hdE9wdGlvbnMgPz8ge30sIHRydWUpO1xuXG5cdFx0Y29uc3Qga2V5ID0gZ2V0VmFsdWVCaW5kaW5nKGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoLCBmb3JtYXRPcHRpb25zID8/IHt9LCB0cnVlKTtcblx0XHRsZXQgZGlzcGxheU9ubHkgPSBmYWxzZTtcblx0XHRpZiAoZ2V0UmVsYXRpdmVQYXRocyhpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aCkubGVuZ3RoID4gMCkge1xuXHRcdFx0Ly8gaWYgdGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIHZhbHVlIGNvbnRhaW5zIGEgbmF2aWdhdGlvbiwgY3JlYXRlIHdpbGwgbm90IGJlIHBvc3NpYmxlIGluIHRoZSBkZWxlZ2F0ZSwgc28gd2UgZm9yY2UgdGhlIGRpc3BsYXkgTW9kZVxuXHRcdFx0ZGlzcGxheU9ubHkgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0ZGlzcGxheU9ubHksXG5cdFx0XHQuLi50aGlzLl9vdmVycmlkZVZhbHVlKGNvbGxlY3Rpb25CaW5kaW5nLCBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aCwgdGV4dEV4cHJlc3Npb24sIGtleSlcblx0XHR9O1xuXHR9XG5cblx0Ly8gUHJvY2VzcyB0aGUgZGF0YU1vZGVsUGF0aCB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGFuZCB0aGUgcmVsYXRpdmUgRGF0YU1vZGVsUGF0aCBmb3IgdGhlIGl0ZW0uXG5cdHByaXZhdGUgc3RhdGljIF9nZXRQYXRoU3RydWN0dXJlKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KTogTXVsdGlWYWx1ZUZpZWxkUGF0aFN0cnVjdHVyZSB7XG5cdFx0bGV0IGZpcnN0Q29sbGVjdGlvblBhdGggPSBcIlwiO1xuXHRcdGNvbnN0IGN1cnJlbnRFbnRpdHlTZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbj8udGFyZ2V0RW50aXR5U2V0XG5cdFx0XHQ/IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLnRhcmdldEVudGl0eVNldFxuXHRcdFx0OiBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0O1xuXHRcdGNvbnN0IG5hdmlnYXRlZFBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGNvbnN0IGNvbnRleHROYXZzRm9ySXRlbSA9IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uPy5uYXZpZ2F0aW9uUHJvcGVydGllcyB8fCBbXTtcblx0XHRmb3IgKGNvbnN0IG5hdlByb3Agb2YgZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcykge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbiA9PT0gdW5kZWZpbmVkIHx8XG5cdFx0XHRcdCFkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbi5uYXZpZ2F0aW9uUHJvcGVydGllcy5zb21lKFxuXHRcdFx0XHRcdChjb250ZXh0TmF2UHJvcCkgPT4gY29udGV4dE5hdlByb3AuZnVsbHlRdWFsaWZpZWROYW1lID09PSBuYXZQcm9wLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gaW4gY2FzZSBvZiByZWxhdGl2ZSBlbnRpdHlTZXRQYXRoIHdlIGRvbid0IGNvbnNpZGVyIG5hdmlnYXRpb25QYXRoIHRoYXQgYXJlIGFscmVhZHkgaW4gdGhlIGNvbnRleHRcblx0XHRcdFx0bmF2aWdhdGVkUGF0aHMucHVzaChuYXZQcm9wLm5hbWUpO1xuXHRcdFx0XHRjb250ZXh0TmF2c0Zvckl0ZW0ucHVzaChuYXZQcm9wKTtcblx0XHRcdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShuYXZQcm9wLm5hbWUpKSB7XG5cdFx0XHRcdFx0aWYgKGlzTXVsdGlwbGVOYXZpZ2F0aW9uUHJvcGVydHkobmF2UHJvcCkpIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRmaXJzdENvbGxlY3Rpb25QYXRoID0gYCR7bmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIil9YDtcblx0XHRjb25zdCBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4gPSBPYmplY3QuYXNzaWduKHt9LCBkYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0XHRpZiAoaXRlbURhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uKSB7XG5cdFx0XHRpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24ubmF2aWdhdGlvblByb3BlcnRpZXMgPSBjb250ZXh0TmF2c0Zvckl0ZW07IC8vIHRoaXMgY2hhbmdlcyB0aGUgY3JlYXRpb24gb2YgdGhlIHZhbHVlSGVscCBJRCAuLi5cblx0XHR9XG5cblx0XHRyZXR1cm4geyBjb2xsZWN0aW9uUGF0aDogZmlyc3RDb2xsZWN0aW9uUGF0aCwgaXRlbURhdGFNb2RlbE9iamVjdFBhdGg6IGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoIH07XG5cdH1cblxuXHQvKipcblx0ICogQ2FsY3VsYXRlIHRoZSBmaWVsZEdyb3VwSWRzIGZvciB0aGUgTXVsdGlWYWx1ZUZpZWxkLlxuXHQgKiBAcGFyYW0gYXBwQ29tcG9uZW50XG5cdCAqIEByZXR1cm5zIFRoZSB2YWx1ZSBmb3IgdGhlIGZpZWxkR3JvdXBJZHNcblx0ICovXG5cdHByaXZhdGUgY29tcHV0ZUZpZWxkR3JvdXBJZHMoYXBwQ29tcG9uZW50PzogQXBwQ29tcG9uZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoIWFwcENvbXBvbmVudCkge1xuXHRcdFx0Ly9mb3IgVmFsdWVIZWxwIC8gTWFzcyBlZGl0IFRlbXBsYXRpbmcgdGhlIGFwcENvbXBvbmVudCBpcyBub3QgcGFzc2VkIHRvIHRoZSB0ZW1wbGF0aW5nXG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0XHR9XG5cdFx0Y29uc3Qgc2lkZUVmZmVjdFNlcnZpY2UgPSBhcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cdFx0Y29uc3QgZmllbGRHcm91cElkcyA9IHNpZGVFZmZlY3RTZXJ2aWNlLmNvbXB1dGVGaWVsZEdyb3VwSWRzKFxuXHRcdFx0dGhpcy5kYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0KHRoaXMuZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHkpLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdCk7XG5cdFx0aWYgKHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpb25GaWVsZEdyb3VwID0gYCR7Q29sbGFib3JhdGlvbkZpZWxkR3JvdXBQcmVmaXh9JHt0aGlzLmRhdGFTb3VyY2VQYXRofWA7XG5cdFx0XHRmaWVsZEdyb3VwSWRzLnB1c2goY29sbGFib3JhdGlvbkZpZWxkR3JvdXApO1xuXHRcdH1cblx0XHR0aGlzLmZpZWxkR3JvdXBJZHMgPSBmaWVsZEdyb3VwSWRzLmxlbmd0aCA/IGZpZWxkR3JvdXBJZHMuam9pbihcIixcIikgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZmllbGRHcm91cElkcy5qb2luKFwiLFwiKTtcblx0XHRyZXR1cm4gcmVzdWx0ID09PSBcIlwiID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuXHR9XG5cblx0aW5pdGlhbGl6ZShtZXRhQ29udGV4dFBhdGg6IE1ldGFQYXRoPHVua25vd24+KTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXG5cdFx0dGhpcy5jb250ZXh0UGF0aCA9IHRoaXMuY29udGV4dFBhdGggPz8gb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ/LmZ1bGxDb250ZXh0UGF0aDtcblx0XHRjb25zdCBvZGF0YU1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwoKTtcblxuXHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1ldGFDb250ZXh0UGF0aC5nZXRQYXRoKCkpIGFzIENvbnRleHQgfCB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBtZXRhUGF0aE9iamVjdCA9IG1ldGFDb250ZXh0UGF0aD8uZ2V0VGFyZ2V0KCk7XG5cblx0XHQvLyBJZiB0aGUgdGFyZ2V0IGlzIGEgcHJvcGVydHkgd2l0aCBhIERhdGFGaWVsZERlZmF1bHQsIHVzZSB0aGlzIGFzIGRhdGEgZmllbGRcblx0XHRpZiAoaXNQcm9wZXJ0eShtZXRhUGF0aE9iamVjdCkgJiYgbWV0YVBhdGhPYmplY3QuYW5ub3RhdGlvbnMuVUk/LkRhdGFGaWVsZERlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5lbmhhbmNlZE1ldGFQYXRoID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KGBAJHtVSUFubm90YXRpb25UZXJtcy5EYXRhRmllbGREZWZhdWx0fWAsIG1ldGFDb250ZXh0KSBhcyBDb250ZXh0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVuaGFuY2VkTWV0YVBhdGggPSBtZXRhQ29udGV4dCBhcyBDb250ZXh0O1xuXHRcdH1cblx0XHRjb25zdCBkYXRhRmllbGREYXRhTW9kZWxQYXRoID0gdGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCh0aGlzLmVuaGFuY2VkTWV0YVBhdGguZ2V0UGF0aCgpLCB0aGlzLmNvbnRleHRQYXRoKSE7XG5cblx0XHR0aGlzLmNvbnZlcnRlZERhdGFGaWVsZCA9IGRhdGFGaWVsZERhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIERhdGFGaWVsZDtcblxuXHRcdHRoaXMuZGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5Pihcblx0XHRcdGRhdGFGaWVsZERhdGFNb2RlbFBhdGgsXG5cdFx0XHQodGhpcy5jb252ZXJ0ZWREYXRhRmllbGQuVmFsdWUgYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPHN0cmluZz4pLnBhdGhcblx0XHQpO1xuXHRcdHRoaXMuZGF0YVNvdXJjZVBhdGggPSBnZXRUYXJnZXRPYmplY3RQYXRoKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cdFx0dGhpcy5wcm9wZXJ0eSA9IHRoaXMuZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cblx0XHRsZXQgaW5zZXJ0YWJsZSA9IGlzUGF0aEluc2VydGFibGUodGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0XHRjb25zdCBkZWxldGVOYXZpZ2F0aW9uUmVzdHJpY3Rpb24gPSBpc1BhdGhEZWxldGFibGUodGhpcy5kYXRhTW9kZWxQYXRoLCB7XG5cdFx0XHRpZ25vcmVUYXJnZXRDb2xsZWN0aW9uOiB0cnVlLFxuXHRcdFx0YXV0aG9yaXplVW5yZXNvbHZhYmxlOiB0cnVlXG5cdFx0fSk7XG5cdFx0Y29uc3QgZGVsZXRlUGF0aCA9IGlzUGF0aERlbGV0YWJsZSh0aGlzLmRhdGFNb2RlbFBhdGgpO1xuXG5cdFx0Ly8gZGVsZXRhYmxlOlxuXHRcdC8vXHRcdGlmIHJlc3RyaWN0aW9ucyBjb21lIGZyb20gTmF2aWdhdGlvbiB3ZSBhcHBseSBpdFxuXHRcdC8vXHRcdG90aGVyd2lzZSB3ZSBhcHBseSByZXN0cmljdGlvbnMgZGVmaW5lZCBvbiB0YXJnZXQgY29sbGVjdGlvbiBvbmx5IGlmIGl0J3MgYSBjb25zdGFudFxuXHRcdC8vICAgICAgb3RoZXJ3aXNlIGl0J3MgdHJ1ZSFcblx0XHRsZXQgZGVsZXRhYmxlID0gaWZFbHNlKFxuXHRcdFx0ZGVsZXRlTmF2aWdhdGlvblJlc3RyaWN0aW9uLl90eXBlID09PSBcIlVucmVzb2x2YWJsZVwiLFxuXHRcdFx0b3Iobm90KGlzQ29uc3RhbnQoZGVsZXRlUGF0aCkpLCBkZWxldGVQYXRoKSxcblx0XHRcdGRlbGV0ZVBhdGhcblx0XHQpO1xuXG5cdFx0aWYgKHRoaXMuaXRlbXMpIHtcblx0XHRcdGluc2VydGFibGUgPSBkZWxldGFibGUgPSBjb25zdGFudCghdGhpcy5yZWFkT25seSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMudmlzaWJsZSA9IGdldFZpc2libGVFeHByZXNzaW9uKHRoaXMuZGF0YU1vZGVsUGF0aCwgdGhpcy5mb3JtYXRPcHRpb25zKTtcblx0XHR9XG5cblx0XHR0aGlzLmluc2VydGFibGVBbmREZWxldGFibGUgPSBhbmQoaW5zZXJ0YWJsZSwgZGVsZXRhYmxlKTtcblx0XHR0aGlzLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uID0gY29uc3RhbnQoZmFsc2UpO1xuXHRcdHRoaXMuY29tcHV0ZUNvbGxhYm9yYXRpb25Qcm9wZXJ0aWVzKCk7XG5cdFx0Y29uc3QgcmVhZE9ubHkgPSB0aGlzLmlzUHJvcGVydHlJbml0aWFsKFwicmVhZE9ubHlcIikgPyB1bmRlZmluZWQgOiB0aGlzLnJlYWRPbmx5O1xuXHRcdGlmICh0aGlzLmZvcm1hdE9wdGlvbnM/LmRpc3BsYXlPbmx5ID09PSB0cnVlIHx8IHJlYWRPbmx5ID09PSB0cnVlKSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJEaXNwbGF5XCI7XG5cdFx0fSBlbHNlIGlmICh0aGlzLnJlYWRPbmx5ID09PSBmYWxzZSkge1xuXHRcdFx0dGhpcy5lZGl0TW9kZSA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0YW5kKGluc2VydGFibGUsIGRlbGV0YWJsZSksXG5cdFx0XHRcdFx0aWZFbHNlKHRoaXMuY29sbGFib3JhdGlvbkV4cHJlc3Npb24sIGNvbnN0YW50KFwiUmVhZE9ubHlcIiksIGNvbnN0YW50KFwiRWRpdGFibGVcIikpLFxuXHRcdFx0XHRcdGNvbnN0YW50KFwiRGlzcGxheVwiKVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRhbmQoaW5zZXJ0YWJsZSwgZGVsZXRhYmxlLCBVSS5Jc0VkaXRhYmxlLCBub3QoZXF1YWwodHJ1ZSwgaXNSZWFkT25seUV4cHJlc3Npb24odGhpcy5jb252ZXJ0ZWREYXRhRmllbGQpKSkpLFxuXHRcdFx0XHRcdGlmRWxzZSh0aGlzLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uLCBjb25zdGFudChcIlJlYWRPbmx5XCIpLCBjb25zdGFudChcIkVkaXRhYmxlXCIpKSxcblx0XHRcdFx0XHRjb25zdGFudChcIkRpc3BsYXlcIilcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHR0aGlzLmRpc3BsYXlNb2RlID0gZ2V0RGlzcGxheU1vZGUodGhpcy5kYXRhTW9kZWxQYXRoKTtcblxuXHRcdGNvbnN0IGxvY2FsRGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5Pihcblx0XHRcdHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgodGhpcy5lbmhhbmNlZE1ldGFQYXRoLmdldFBhdGgoKSwgdGhpcy5jb250ZXh0UGF0aCkhLFxuXHRcdFx0KHRoaXMuY29udmVydGVkRGF0YUZpZWxkLlZhbHVlIGFzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KS5wYXRoXG5cdFx0KTtcblxuXHRcdHRoaXMuaXRlbSA9IHRoaXMuX2dldE11bHRpSW5wdXRTZXR0aW5ncyhsb2NhbERhdGFNb2RlbFBhdGgsIHRoaXMuZm9ybWF0T3B0aW9ucyk7IC8vIHRoaXMgZnVuY3Rpb24gcmV3cml0ZXMgZGF0YU1vZGVsUGF0aCwgdGhlcmVmb3JlLCBmb3Igbm93IGEgY2xlYW4gb2JqZWN0IGlzIHBhc3NlZFxuXHRcdGlmICh0aGlzLml0ZW0uZGlzcGxheU9ubHkpIHtcblx0XHRcdHRoaXMuZWRpdE1vZGUgPSBcIkRpc3BsYXlcIjtcblx0XHR9XG5cdFx0dGhpcy5jb2xsZWN0aW9uID0gdGhpcy5pdGVtLmNvbGxlY3Rpb25CaW5kaW5nO1xuXG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKTtcblx0XHR0aGlzLmZpZWxkR3JvdXBJZHMgPSB0aGlzLmNvbXB1dGVGaWVsZEdyb3VwSWRzKGFwcENvbXBvbmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIG9uTWV0YWRhdGFBdmFpbGFibGUgZXZlbnQuXG5cdCAqL1xuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5jb250ZW50KSB7XG5cdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBpcyBzdXBwb3J0ZWQuXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGNvbGxhYm9yYXRpb24gZHJhZnQgaXMgc3VwcG9ydGVkLlxuXHQgKi9cblx0aXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGNvbnN0IG9kYXRhTWV0YU1vZGVsID0gb3duZXI/LmdldE1ldGFNb2RlbCgpO1xuXHRcdHJldHVybiBNb2RlbEhlbHBlci5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZChvZGF0YU1ldGFNb2RlbCEpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgaGVscGVyIGNvbXB1dGVzIHRoZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5lZWRlZCBmb3IgdGhlIGNvbGxhYm9yYXRpb24gYXZhdGFyLlxuXHQgKi9cblx0Y29tcHV0ZUNvbGxhYm9yYXRpb25Qcm9wZXJ0aWVzKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKCkgJiYgdGhpcy5lZGl0TW9kZSAhPT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQgPSB0cnVlO1xuXHRcdFx0dGhpcy5jb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiA9IFVJRm9ybWF0dGVycy5nZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbihcblx0XHRcdFx0dGhpcy5kYXRhTW9kZWxQYXRoLFxuXHRcdFx0XHRDb2xsYWJvcmF0aW9uRm9ybWF0dGVycy5oYXNDb2xsYWJvcmF0aW9uQWN0aXZpdHlcblx0XHRcdCk7XG5cblx0XHRcdHRoaXMuY29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRnZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbih0aGlzLmRhdGFNb2RlbFBhdGgsIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25BY3Rpdml0eUluaXRpYWxzKVxuXHRcdFx0KTtcblx0XHRcdHRoaXMuY29sbGFib3JhdGlvbkNvbG9yRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRnZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbih0aGlzLmRhdGFNb2RlbFBhdGgsIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25BY3Rpdml0eUNvbG9yKVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRnZXRSZXF1aXJlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRNdWx0aVZhbHVlRmllbGQoKS5nZXRSZXF1aXJlZCgpO1xuXHR9XG5cblx0Z2V0SXRlbXMoKTogTXVsdGlWYWx1ZUZpZWxkSXRlbVtdIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRNdWx0aVZhbHVlRmllbGQoKS5nZXRJdGVtcygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIGNvbnRlbnQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZW50IG9mIHRoZSBidWlsZGluZyBibG9jay5cblx0ICovXG5cdGNyZWF0ZUNvbnRlbnQoKTogQ29udHJvbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgbWV0YUNvbnRleHRQYXRoID0gdGhpcy5nZXRNZXRhUGF0aE9iamVjdCh0aGlzLm1ldGFQYXRoLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRpZiAobWV0YUNvbnRleHRQYXRoKSB7XG5cdFx0XHR0aGlzLmluaXRpYWxpemUobWV0YUNvbnRleHRQYXRoKTtcblxuXHRcdFx0Ly8gQnVpbGRpbmdCbG9jayB3aXRoIHNldCBJRCBzY2VuYXJpb1xuXHRcdFx0aWYgKHRoaXMuaWQpIHtcblx0XHRcdFx0dGhpcy52aElkUHJlZml4ID0gSUQuZ2VuZXJhdGUoW3RoaXMuZ2V0SWQoKSwgdGhpcy52aElkUHJlZml4ID8/IFwiRmllbGRWYWx1ZUhlbHBcIl0pOyAvLyBVc2UgZ2V0SWQgdG8gcmV0cmlldmUgSUQsIG5vdCB0aGlzLmlkXG5cdFx0XHR9IGVsc2UgaWYgKCF0aGlzLnZoSWRQcmVmaXgpIHtcblx0XHRcdFx0Ly8gTWF5YmUgbm90IGVudGVyZWRcblx0XHRcdFx0dGhpcy52aElkUHJlZml4ID0gdGhpcy5jcmVhdGVJZChcIkZpZWxkVmFsdWVIZWxwXCIpITtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyO1xuXHRcdFx0Y29uc3QgdmlldyA9IGNvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdFx0Y29uc3Qgb2RhdGFNZXRhTW9kZWwgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1ldGFDb250ZXh0UGF0aC5nZXRQYXRoKCkpO1xuXHRcdFx0Y29uc3QgY29udGV4dCA9IG9kYXRhTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhQ29udGV4dFBhdGguZ2V0Q29udGV4dFBhdGgoKSk7XG5cdFx0XHRpZiAoIW1ldGFDb250ZXh0IHx8ICFjb250ZXh0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly9jcmVhdGUgYSBuZXcgYmluZGluZyBjb250ZXh0IGZvciB0aGUgdmFsdWUgaGVscFxuXG5cdFx0XHRjb25zdCBpdGVtc0FnZ3JlZ2F0aW9uID0gdGhpcy5jb2xsZWN0aW9uO1xuXHRcdFx0Y29uc3QgY3VzdG9tQWdncmVnYXRpb25MZW5ndGggPSB0aGlzLmdldEFwcENvbXBvbmVudCgpPy5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLmZlXCIpPy5tYWNyb3M/Lm11bHRpVmFsdWVGaWVsZD8uaXRlbXNTaXplTGltaXQ7XG5cdFx0XHRpZiAoY3VzdG9tQWdncmVnYXRpb25MZW5ndGggIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRpdGVtc0FnZ3JlZ2F0aW9uLmxlbmd0aCA9IGN1c3RvbUFnZ3JlZ2F0aW9uTGVuZ3RoO1xuXHRcdFx0fVxuXG5cdFx0XHQvL2NvbXB1dGUgdGhlIGNvcnJlY3QgbGFiZWxcblx0XHRcdGNvbnN0IGxhYmVsID0gRmllbGRIZWxwZXIuY29tcHV0ZUxhYmVsVGV4dCh0aGlzLmNvbnZlcnRlZERhdGFGaWVsZC5WYWx1ZSBhcyBNZXRhTW9kZWxUeXBlPERhdGFGaWVsZFR5cGVzPiwge1xuXHRcdFx0XHRjb250ZXh0OiBtZXRhQ29udGV4dFxuXHRcdFx0fSkgYXMgc3RyaW5nO1xuXG5cdFx0XHRjb25zdCB2aENvbnRyb2wgPSBWYWx1ZUhlbHAuZ2V0VmFsdWVIZWxwRm9yTWV0YVBhdGgoXG5cdFx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSxcblx0XHRcdFx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCh0aGlzLmRhdGFNb2RlbFBhdGgpISxcblx0XHRcdFx0dGhpcy5jb250ZXh0UGF0aCA/PyB0aGlzLmdldE93bmVyQ29udGV4dFBhdGgoKSEsXG5cdFx0XHRcdHRoaXMuX2dldE93bmVyKCk/LmdldE1ldGFNb2RlbCgpXG5cdFx0XHQpO1xuXHRcdFx0bGV0IHZhbHVlSGVscDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdFx0aWYgKHZoQ29udHJvbCAmJiB2aENvbnRyb2wuZ2V0Q29udGVudCgpKSB7XG5cdFx0XHRcdHZhbHVlSGVscCA9IHZoQ29udHJvbC5nZXRDb250ZW50KCkhLmdldElkKCk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBtdWx0aVZhbHVlRmllbGQgPSAoXG5cdFx0XHRcdDxNdWx0aVZhbHVlRmllbGRcblx0XHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChcIl9tdmZcIil9XG5cdFx0XHRcdFx0ZGVsZWdhdGU9e3sgbmFtZTogXCJzYXAvZmUvbWFjcm9zL211bHRpdmFsdWVmaWVsZC9NdWx0aVZhbHVlRmllbGREZWxlZ2F0ZVwiIH19XG5cdFx0XHRcdFx0aXRlbXM9e2l0ZW1zQWdncmVnYXRpb259XG5cdFx0XHRcdFx0ZGlzcGxheT17dGhpcy5kaXNwbGF5TW9kZX1cblx0XHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRcdGVkaXRNb2RlPXt0aGlzLmVkaXRNb2RlfVxuXHRcdFx0XHRcdHZhbHVlSGVscD17dmFsdWVIZWxwfVxuXHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXt0aGlzLmFyaWFMYWJlbGxlZEJ5ID8gdGhpcy5hcmlhTGFiZWxsZWRCeSA6IFtdfVxuXHRcdFx0XHRcdHNob3dFbXB0eUluZGljYXRvcj17dGhpcy5mb3JtYXRPcHRpb25zPy5zaG93RW1wdHlJbmRpY2F0b3J9XG5cdFx0XHRcdFx0bGFiZWw9e2xhYmVsfVxuXHRcdFx0XHRcdHJlcXVpcmVkPXtjb21waWxlRXhwcmVzc2lvbihhbmQoVUkuSXNFZGl0YWJsZSwgaXNSZXF1aXJlZEV4cHJlc3Npb24odGhpcy5jb252ZXJ0ZWREYXRhRmllbGQpKSl9XG5cdFx0XHRcdFx0Y2hhbmdlPXsoTXVsdGlWYWx1ZUZpZWxkUnVudGltZS5oYW5kbGVDaGFuZ2UgYXMgdW5rbm93biBhcyBGdW5jdGlvbikuYmluZChNdWx0aVZhbHVlRmllbGRSdW50aW1lLCBjb250cm9sbGVyKX1cblx0XHRcdFx0XHRmaWVsZEdyb3VwSWRzPXt0aGlzLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdFx0dmFsaWRhdGVGaWVsZEdyb3VwPXtGaWVsZFJ1bnRpbWUub25WYWxpZGF0ZUZpZWxkR3JvdXB9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0aXRlbXM6IDxNdWx0aVZhbHVlRmllbGRJdGVtIGtleT17dGhpcy5pdGVtLmtleX0gZGVzY3JpcHRpb249e3RoaXMuaXRlbS5kZXNjcmlwdGlvbn0gLz4sXG5cdFx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJpbnNlcnRhYmxlQW5kRGVsZXRhYmxlXCIgdmFsdWU9e3RoaXMuaW5zZXJ0YWJsZUFuZERlbGV0YWJsZX0gLz5cblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L011bHRpVmFsdWVGaWVsZD5cblx0XHRcdCk7XG5cblx0XHRcdGxldCBmb3Jtd3JhcHBlciA9IG51bGw7XG5cdFx0XHRpZiAodGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCkge1xuXHRcdFx0XHRjb25zdCBhdmF0YXIgPSAoXG5cdFx0XHRcdFx0PEF2YXRhclxuXHRcdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5jb2xsYWJvcmF0aW9uRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRcdGluaXRpYWxzPXt0aGlzLmNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb259XG5cdFx0XHRcdFx0XHRkaXNwbGF5U2l6ZT1cIkN1c3RvbVwiXG5cdFx0XHRcdFx0XHRjdXN0b21EaXNwbGF5U2l6ZT1cIjEuNXJlbVwiXG5cdFx0XHRcdFx0XHRjdXN0b21Gb250U2l6ZT1cIjAuOHJlbVwiXG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I9e3RoaXMuY29sbGFib3JhdGlvbkNvbG9yRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdEZpZWxkUnVudGltZUhlbHBlci5zaG93Q29sbGFib3JhdGlvbkVkaXRVc2VyKGF2YXRhciwgdmlldyk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdCk7XG5cdFx0XHRcdGZvcm13cmFwcGVyID0gKFxuXHRcdFx0XHRcdDxGb3JtRWxlbWVudFdyYXBwZXI+XG5cdFx0XHRcdFx0XHQ8SEJveCB3aWR0aD1cIjEwMCVcIiByZW5kZXJUeXBlPVwiQmFyZVwiIGFsaWduSXRlbXM9XCJFbmRcIj5cblx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRpdGVtczogW211bHRpVmFsdWVGaWVsZCwgYXZhdGFyXVxuXHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdDwvRm9ybUVsZW1lbnRXcmFwcGVyPlxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdG11bHRpVmFsdWVGaWVsZD8uYWRkRXZlbnREZWxlZ2F0ZShcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRvbmZvY3VzaW46IChldnQ6IGpRdWVyeS5FdmVudCAmIHsgc3JjQ29udHJvbDogQ29udHJvbCB9KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGN1cnJlbnRNdWx0aVZhbHVlRmllbGQgPSBldnQuc3JjQ29udHJvbC5nZXRQYXJlbnQoKSBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0XHRcdFx0XHRcdGNvbnRyb2xsZXIuY29sbGFib3JhdGl2ZURyYWZ0Py5oYW5kbGVDb250ZW50Rm9jdXNJbihjdXJyZW50TXVsdGlWYWx1ZUZpZWxkKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAodmFsdWVIZWxwQ29udHJvbD8uZ2V0RG9tUmVmKCkpIHtcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZUhlbHBDb250cm9sLmF0dGFjaEV2ZW50T25jZShcImNsb3NlZFwiLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50TXVsdGlWYWx1ZUZpZWxkPy5mb2N1cygpO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b25mb2N1c291dDogKGV2dDogalF1ZXJ5LkV2ZW50ICYgeyBzcmNDb250cm9sOiBDb250cm9sIH0pID0+IHtcblx0XHRcdFx0XHRcdFx0bGV0IGN1cnJlbnRNdWx0aVZhbHVlRmllbGQgPSBldnQuc3JjQ29udHJvbC5nZXRQYXJlbnQoKSBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJyZW50TXVsdGlWYWx1ZUZpZWxkPy5pc0E8VG9rZW5pemVyPihcInNhcC5tLlRva2VuaXplclwiKSkge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRNdWx0aVZhbHVlRmllbGQgPSBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkLmdldFBhcmVudCgpPy5nZXRQYXJlbnQoKSBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Y29uc3QgZXZlbnQgPSBuZXcgVUk1RXZlbnQoXCJcIiwgY3VycmVudE11bHRpVmFsdWVGaWVsZCwge1xuXHRcdFx0XHRcdFx0XHRcdGZpZWxkR3JvdXBJZHM6IGN1cnJlbnRNdWx0aVZhbHVlRmllbGQuZ2V0RmllbGRHcm91cElkcygpXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRjb250cm9sbGVyLmNvbGxhYm9yYXRpdmVEcmFmdC5oYW5kbGVDb250ZW50Rm9jdXNPdXQoZXZlbnQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dGhpc1xuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGNvbnN0IHZhbHVlSGVscENvbnRyb2wgPSBFbGVtZW50LmdldEVsZW1lbnRCeUlkKG11bHRpVmFsdWVGaWVsZC5nZXRWYWx1ZUhlbHAoKSkgYXMgTWRjVmFsdWVIZWxwO1xuXG5cdFx0XHRcdHZhbHVlSGVscENvbnRyb2w/LmF0dGFjaE9wZW5lZCgoZXZ0OiBWYWx1ZUhlbHAkT3BlbmVkRXZlbnQpID0+IHtcblx0XHRcdFx0XHRjb25zdCBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkID0gZXZ0LmdldFNvdXJjZSgpLmdldENvbnRyb2woKSE7XG5cdFx0XHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuaGFuZGxlQ29udGVudEZvY3VzSW4oY3VycmVudE11bHRpVmFsdWVGaWVsZCBhcyBNdWx0aVZhbHVlRmllbGQpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdG11bHRpVmFsdWVGaWVsZC5hZGRDdXN0b21EYXRhKG5ldyBDdXN0b21EYXRhKHsga2V5OiBcImZvcndhcmRlZEl0ZW1zQmluZGluZ1wiLCB2YWx1ZTogdGhpcy5pdGVtcyB9KSk7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCA/IGZvcm13cmFwcGVyIDogbXVsdGlWYWx1ZUZpZWxkO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXR0ZXIgZm9yIHRoZSByZWFkT25seSBwcm9wZXJ0eS5cblx0ICogQHBhcmFtIHJlYWRPbmx5XG5cdCAqL1xuXHRzZXRSZWFkT25seShyZWFkT25seTogYm9vbGVhbik6IHZvaWQge1xuXHRcdHN1cGVyLnNldFByb3BlcnR5KFwicmVhZE9ubHlcIiwgcmVhZE9ubHkpO1xuXHRcdHRoaXMudXBkYXRlRWRpdE1vZGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXR0ZXIgZm9yIHRoZSBfaXNJbkVkaXRNb2RlIHByb3BlcnR5LlxuXHQgKiBAcGFyYW0gaW5FZGl0TW9kZVxuXHQgKi9cblx0c2V0X2lzSW5FZGl0TW9kZShpbkVkaXRNb2RlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0c3VwZXIuc2V0UHJvcGVydHkoXCJfaXNJbkVkaXRNb2RlXCIsIGluRWRpdE1vZGUpO1xuXHRcdHRoaXMudXBkYXRlRWRpdE1vZGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgTXVsdGlWYWx1ZUZpZWxkLlxuXHQgKiBAcmV0dXJucyBUaGUgTXVsdGlWYWx1ZUZpZWxkLlxuXHQgKi9cblx0Z2V0TXVsdGlWYWx1ZUZpZWxkKCk6IE11bHRpVmFsdWVGaWVsZCB7XG5cdFx0aWYgKHRoaXMuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQoKSkge1xuXHRcdFx0cmV0dXJuICgodGhpcy5jb250ZW50IGFzIEZvcm1FbGVtZW50V3JhcHBlcikuY29udGVudCBhcyBIQm94KS5nZXRJdGVtcygpWzBdIGFzIE11bHRpVmFsdWVGaWVsZDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMuY29udGVudCBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZSB0aGUgZWRpdCBtb2RlIGJhc2VkIG9uIHRoZSByZWFkT25seSBhbmQgX2lzSW5FZGl0TW9kZSBwcm9wZXJ0aWVzLlxuXHQgKi9cblx0dXBkYXRlRWRpdE1vZGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgbXVsdGl2YWx1ZUZpZWxkID0gdGhpcy5nZXRNdWx0aVZhbHVlRmllbGQoKTtcblx0XHRjb25zdCBpbnNlcnRhYmxlQW5kRGVsZXRhYmxlID0gbXVsdGl2YWx1ZUZpZWxkLmRhdGEoXCJpbnNlcnRhYmxlQW5kRGVsZXRhYmxlXCIpO1xuXHRcdGlmICh0aGlzLnJlYWRPbmx5ID09PSB0cnVlIHx8ICFpbnNlcnRhYmxlQW5kRGVsZXRhYmxlKSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJEaXNwbGF5XCI7XG5cdFx0XHRtdWx0aXZhbHVlRmllbGQuc2V0RWRpdE1vZGUoXCJEaXNwbGF5XCIpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5yZWFkT25seSA9PT0gZmFsc2UgJiYgaW5zZXJ0YWJsZUFuZERlbGV0YWJsZSkge1xuXHRcdFx0Ly9yZWFkT25seSBmYWxzZSBjYW4gb25seSBoYXZlIGltcGFjdCBpZiBpdGVtcyBhcmUgcHJvdmlkZWRcblx0XHRcdGlmICh0aGlzLl9pc0luRWRpdE1vZGUpIHtcblx0XHRcdFx0dGhpcy5lZGl0TW9kZSA9IFwiRWRpdGFibGVcIjtcblx0XHRcdFx0bXVsdGl2YWx1ZUZpZWxkLnNldEVkaXRNb2RlKFwiRWRpdGFibGVcIik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJEaXNwbGF5XCI7XG5cdFx0XHRcdG11bHRpdmFsdWVGaWVsZC5zZXRFZGl0TW9kZShcIkRpc3BsYXlcIik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIGlmIHJlYWRPbmx5IGlzIG5vdCBleHBsaWNpdGx5IHNldCB3ZSBrZWVwIHRlaCBzdGFuZGFyZCBiZWhhdmlvclxuXHR9XG5cblx0LyoqXG5cdCAqIE9uIEJlZm9yZSByZW5kZXJpbmcgZnJvd2FyZCB0aGUgYXJpYUxhYmVsbGVkQnkgdG8gdGhlIG1kYyBNdWx0aVZhbHVlRmllbGQuXG5cdCAqL1xuXHRvbkJlZm9yZVJlbmRlcmluZygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5jb250ZW50KSB7XG5cdFx0XHRjb25zdCBtdWx0aVZhbHVlRmllbGQgPSB0aGlzLmdldE11bHRpVmFsdWVGaWVsZCgpO1xuXHRcdFx0Y29uc3QgYUFyaWFMYWJlbGxlZEJ5ID0gKHRoaXMgYXMgdW5rbm93biBhcyBFbmhhbmNlV2l0aFVJNTxNdWx0aVZhbHVlRmllbGRCbG9jaz4pLmdldEFyaWFMYWJlbGxlZEJ5KCk7XG5cblx0XHRcdGZvciAoY29uc3Qgc0lkIG9mIGFBcmlhTGFiZWxsZWRCeSkge1xuXHRcdFx0XHRjb25zdCBhQXJpYUxhYmVsbGVkQnlzID0gbXVsdGlWYWx1ZUZpZWxkLmdldEFyaWFMYWJlbGxlZEJ5KCk7XG5cdFx0XHRcdGlmICghYUFyaWFMYWJlbGxlZEJ5cy5pbmNsdWRlcyhzSWQpKSB7XG5cdFx0XHRcdFx0bXVsdGlWYWx1ZUZpZWxkLmFkZEFyaWFMYWJlbGxlZEJ5KHNJZCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTBGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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
@@ -104,7 +104,6 @@ type MultiValueFieldPathStructure = {
104
104
  * @alias sap.fe.macros.MultiValueField
105
105
  * @public
106
106
  * @since 1.118.0
107
- * @experimental
108
107
  */
109
108
 
110
109
  @defineUI5Class("sap.fe.macros.MultiValueField")
@@ -165,7 +164,6 @@ export default class MultiValueFieldBlock extends BuildingBlock<Control> {
165
164
 
166
165
  /**
167
166
  * Property added to be able to add data / items to the multi-input field using a different model
168
- * @experimental
169
167
  * @public
170
168
  */
171
169
  @property({