@sapui5/sap.fe.core 1.136.1 → 1.138.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 (154) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +76 -28
  4. package/src/sap/fe/core/ActionRuntime.ts +106 -30
  5. package/src/sap/fe/core/AppComponent.js +11 -1
  6. package/src/sap/fe/core/AppComponent.ts +10 -0
  7. package/src/sap/fe/core/AppStateHandler.js +9 -2
  8. package/src/sap/fe/core/AppStateHandler.ts +8 -2
  9. package/src/sap/fe/core/CommonUtils.js +15 -3
  10. package/src/sap/fe/core/CommonUtils.ts +13 -2
  11. package/src/sap/fe/core/PageController.controller.js +10 -0
  12. package/src/sap/fe/core/PageController.controller.ts +3 -0
  13. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +3 -4
  14. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +2 -2
  15. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +3 -3
  16. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +2 -2
  17. package/src/sap/fe/core/controllerextensions/EditFlow.js +25 -12
  18. package/src/sap/fe/core/controllerextensions/EditFlow.ts +27 -16
  19. package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +27 -41
  20. package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +27 -41
  21. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +2 -1
  22. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +2 -1
  23. package/src/sap/fe/core/controllerextensions/InternalRouting.js +2 -1
  24. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +1 -0
  25. package/src/sap/fe/core/controllerextensions/MessageHandler.js +4 -4
  26. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +22 -15
  27. package/src/sap/fe/core/controllerextensions/Paginator.js +20 -5
  28. package/src/sap/fe/core/controllerextensions/Paginator.ts +19 -0
  29. package/src/sap/fe/core/controllerextensions/SideEffects.js +3 -2
  30. package/src/sap/fe/core/controllerextensions/SideEffects.ts +2 -2
  31. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -1
  32. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +1 -0
  33. package/src/sap/fe/core/controllerextensions/dialog/ODataStrictDialog.js +9 -5
  34. package/src/sap/fe/core/controllerextensions/dialog/ODataStrictDialog.tsx +8 -3
  35. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +4 -2
  36. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +7 -2
  37. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +178 -125
  38. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +222 -174
  39. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +5 -3
  40. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +2 -3
  41. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +39 -5
  42. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +51 -11
  43. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +16 -1
  44. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +17 -2
  45. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +88 -1
  46. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +106 -7
  47. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.js +16 -1
  48. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.ts +15 -0
  49. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +25 -1
  50. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +24 -0
  51. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +11 -8
  52. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +13 -10
  53. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +7 -4
  54. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +7 -3
  55. package/src/sap/fe/core/controls/DataWatcher.js +2 -2
  56. package/src/sap/fe/core/controls/DataWatcher.tsx +1 -1
  57. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.js +11 -6
  58. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.tsx +13 -9
  59. package/src/sap/fe/core/controls/inlineEditFlow/InlineEditExitDialog.js +144 -0
  60. package/src/sap/fe/core/controls/inlineEditFlow/{BeforeNavigationDialog.tsx → InlineEditExitDialog.tsx} +1 -1
  61. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  62. package/src/sap/fe/core/converters/ManifestSettings.ts +4 -0
  63. package/src/sap/fe/core/converters/MetaModelConverter.js +3 -2
  64. package/src/sap/fe/core/converters/MetaModelConverter.ts +12 -4
  65. package/src/sap/fe/core/converters/controls/Common/Action.js +42 -5
  66. package/src/sap/fe/core/converters/controls/Common/Action.ts +42 -5
  67. package/src/sap/fe/core/converters/controls/Common/Chart.js +4 -1
  68. package/src/sap/fe/core/converters/controls/Common/Chart.ts +2 -1
  69. package/src/sap/fe/core/converters/controls/Common/Table.js +46 -13
  70. package/src/sap/fe/core/converters/controls/Common/Table.ts +50 -11
  71. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +11 -10
  72. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +13 -1
  73. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +2 -2
  74. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +2 -1
  75. package/src/sap/fe/core/fpm/manifest.json +1 -1
  76. package/src/sap/fe/core/helpers/DeleteHelper.js +9 -9
  77. package/src/sap/fe/core/helpers/DeleteHelper.ts +8 -9
  78. package/src/sap/fe/core/helpers/FPMHelper.js +2 -2
  79. package/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
  80. package/src/sap/fe/core/helpers/ModelHelper.js +4 -4
  81. package/src/sap/fe/core/helpers/ModelHelper.ts +8 -4
  82. package/src/sap/fe/core/helpers/PasteHelper.js +2 -2
  83. package/src/sap/fe/core/helpers/PasteHelper.ts +1 -1
  84. package/src/sap/fe/core/library.js +33 -4
  85. package/src/sap/fe/core/library.ts +33 -2
  86. package/src/sap/fe/core/messagebundle.properties +18 -2
  87. package/src/sap/fe/core/messagebundle_ar.properties +3 -2
  88. package/src/sap/fe/core/messagebundle_bg.properties +2 -1
  89. package/src/sap/fe/core/messagebundle_ca.properties +2 -1
  90. package/src/sap/fe/core/messagebundle_cnr.properties +2 -1
  91. package/src/sap/fe/core/messagebundle_cs.properties +4 -3
  92. package/src/sap/fe/core/messagebundle_cy.properties +2 -1
  93. package/src/sap/fe/core/messagebundle_da.properties +2 -1
  94. package/src/sap/fe/core/messagebundle_de.properties +8 -7
  95. package/src/sap/fe/core/messagebundle_el.properties +2 -1
  96. package/src/sap/fe/core/messagebundle_en.properties +2 -1
  97. package/src/sap/fe/core/messagebundle_en_GB.properties +2 -1
  98. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +2 -1
  99. package/src/sap/fe/core/messagebundle_es.properties +5 -4
  100. package/src/sap/fe/core/messagebundle_es_MX.properties +2 -1
  101. package/src/sap/fe/core/messagebundle_et.properties +2 -1
  102. package/src/sap/fe/core/messagebundle_fi.properties +2 -1
  103. package/src/sap/fe/core/messagebundle_fr.properties +2 -1
  104. package/src/sap/fe/core/messagebundle_fr_CA.properties +2 -1
  105. package/src/sap/fe/core/messagebundle_hi.properties +2 -1
  106. package/src/sap/fe/core/messagebundle_hr.properties +2 -1
  107. package/src/sap/fe/core/messagebundle_hu.properties +2 -1
  108. package/src/sap/fe/core/messagebundle_id.properties +2 -1
  109. package/src/sap/fe/core/messagebundle_it.properties +2 -1
  110. package/src/sap/fe/core/messagebundle_iw.properties +2 -1
  111. package/src/sap/fe/core/messagebundle_ja.properties +3 -2
  112. package/src/sap/fe/core/messagebundle_kk.properties +2 -1
  113. package/src/sap/fe/core/messagebundle_ko.properties +2 -1
  114. package/src/sap/fe/core/messagebundle_lt.properties +2 -1
  115. package/src/sap/fe/core/messagebundle_lv.properties +2 -1
  116. package/src/sap/fe/core/messagebundle_mk.properties +2 -1
  117. package/src/sap/fe/core/messagebundle_ms.properties +2 -1
  118. package/src/sap/fe/core/messagebundle_nl.properties +2 -1
  119. package/src/sap/fe/core/messagebundle_no.properties +3 -2
  120. package/src/sap/fe/core/messagebundle_pl.properties +2 -1
  121. package/src/sap/fe/core/messagebundle_pt.properties +2 -1
  122. package/src/sap/fe/core/messagebundle_pt_PT.properties +2 -1
  123. package/src/sap/fe/core/messagebundle_ro.properties +2 -1
  124. package/src/sap/fe/core/messagebundle_ru.properties +2 -1
  125. package/src/sap/fe/core/messagebundle_sh.properties +2 -1
  126. package/src/sap/fe/core/messagebundle_sk.properties +2 -1
  127. package/src/sap/fe/core/messagebundle_sl.properties +2 -1
  128. package/src/sap/fe/core/messagebundle_sr.properties +2 -1
  129. package/src/sap/fe/core/messagebundle_sv.properties +2 -1
  130. package/src/sap/fe/core/messagebundle_th.properties +2 -1
  131. package/src/sap/fe/core/messagebundle_tr.properties +2 -1
  132. package/src/sap/fe/core/messagebundle_uk.properties +2 -1
  133. package/src/sap/fe/core/messagebundle_vi.properties +2 -1
  134. package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -1
  135. package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -1
  136. package/src/sap/fe/core/rootView/RootViewBaseController.js +6 -6
  137. package/src/sap/fe/core/rootView/RootViewBaseController.ts +5 -5
  138. package/src/sap/fe/core/services/RoutingServiceFactory.js +3 -3
  139. package/src/sap/fe/core/services/RoutingServiceFactory.ts +2 -2
  140. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -1
  141. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +3 -0
  142. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +8 -2
  143. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +7 -1
  144. package/src/sap/fe/core/templating/EntitySetHelper.js +75 -90
  145. package/src/sap/fe/core/templating/EntitySetHelper.ts +92 -118
  146. package/src/sap/fe/core/templating/UIFormatters.js +3 -3
  147. package/src/sap/fe/core/templating/UIFormatters.ts +1 -2
  148. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +0 -81
  149. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +0 -126
  150. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +0 -10
  151. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +0 -2
  152. package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.js +0 -68
  153. package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.tsx +0 -52
  154. package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.js +0 -144
@@ -282,6 +282,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/conver
282
282
  layout: {
283
283
  position: "bottom"
284
284
  }
285
+ },
286
+ tooltip: {
287
+ formatString: ""
285
288
  }
286
289
  };
287
290
  let autoBindOnInit;
@@ -450,4 +453,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/conver
450
453
  _exports.createBlankChartVisualization = createBlankChartVisualization;
451
454
  return _exports;
452
455
  }, false);
453
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDaGFydEFjdGlvbnNGcm9tQW5ub3RhdGlvbnMiLCJjaGFydEFubm90YXRpb24iLCJ2aXN1YWxpemF0aW9uUGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJjaGFydEFjdGlvbnMiLCJBY3Rpb25zIiwiZm9yRWFjaCIsImRhdGFGaWVsZCIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsImlzRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3QiLCJJbmxpbmUiLCJEZXRlcm1pbmluZyIsIiRUeXBlIiwiQWN0aW9uVGFyZ2V0IiwiaXNCb3VuZCIsInB1c2giLCJ0eXBlIiwiQWN0aW9uVHlwZSIsIkRhdGFGaWVsZEZvckFjdGlvbiIsImFubm90YXRpb25QYXRoIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInZpc2libGUiLCJnZXRDb21waWxlRXhwcmVzc2lvbkZvckFjdGlvbiIsImlzQUlPcGVyYXRpb24iLCJpc0FjdGlvbkFJT3BlcmF0aW9uIiwidW5kZWZpbmVkIiwiRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiaXNOYXZpZ2FibGUiLCJpc0Fubm90YXRpb25BY3Rpb25Hcm91cCIsIk1lbnUiLCJ0ZXh0IiwiTGFiZWwiLCJ0b1N0cmluZyIsIm1lbnUiLCJtYXAiLCJhY3Rpb24iLCJnZXREYXRhRmllbGRBbm5vdGF0aW9uQWN0aW9uIiwiaXNNZW51QUlPcGVyYXRpb24iLCJnZXRDaGFydEFjdGlvbnMiLCJhQW5ub3RhdGlvbkFjdGlvbnMiLCJtYW5pZmVzdEFjdGlvbnMiLCJnZXRBY3Rpb25zRnJvbU1hbmlmZXN0IiwiZ2V0TWFuaWZlc3RDb250cm9sQ29uZmlndXJhdGlvbiIsImFjdGlvbnMiLCJhY3Rpb25PdmVyd3JpdGVDb25maWciLCJlbmFibGVkIiwiT3ZlcnJpZGVUeXBlIiwib3ZlcndyaXRlIiwiZW5hYmxlT25TZWxlY3QiLCJjb21tYW5kIiwicG9zaXRpb24iLCJpbnNlcnRDdXN0b21FbGVtZW50cyIsImNvbW1hbmRBY3Rpb25zIiwiX2V4cG9ydHMiLCJnZXRQMTNuTW9kZSIsIm1hbmlmZXN0V3JhcHBlciIsImdldE1hbmlmZXN0V3JhcHBlciIsImNoYXJ0TWFuaWZlc3RTZXR0aW5ncyIsInZhcmlhbnRNYW5hZ2VtZW50IiwiZ2V0VmFyaWFudE1hbmFnZW1lbnQiLCJhUGVyc29uYWxpemF0aW9uIiwicGVyc29uYWxpemF0aW9uIiwiY2hhcnRTZXR0aW5ncyIsImlzQ29udHJvbFZhcmlhbnQiLCJWYXJpYW50TWFuYWdlbWVudFR5cGUiLCJDb250cm9sIiwiaXRlbSIsInNvcnQiLCJmaWx0ZXIiLCJqb2luIiwiZ2V0SGVhZGVySW5mbyIsImhlYWRlciIsImhlYWRlclZpc2libGUiLCJnZXRTZWxlY3Rpb25Nb2RlIiwic2VsZWN0aW9uTW9kZSIsImdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXNPYmplY3QiLCJhZ2dQcm9wIiwib2JqIiwiUHJvcGVydHkiLCIkUHJvcGVydHlQYXRoIiwidmFsdWUiLCJuYW1lIiwiY3JlYXRlQ2hhcnRWaXN1YWxpemF0aW9uIiwiZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkIiwic2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFBhdGgiLCJhZ2dyZWdhdGlvbkhlbHBlciIsIkFnZ3JlZ2F0aW9uSGVscGVyIiwiZ2V0RW50aXR5VHlwZSIsImlzQW5hbHl0aWNzU3VwcG9ydGVkIiwiRXJyb3IiLCJhVHJhbnNBZ2dyZWdhdGlvbnMiLCJnZXRUcmFuc0FnZ3JlZ2F0aW9ucyIsImFDdXN0b21BZ2dyZWdhdGVzIiwiZ2V0Q3VzdG9tQWdncmVnYXRlRGVmaW5pdGlvbnMiLCJwYWdlTWFuaWZlc3RTZXR0aW5ncyIsInAxM25Nb2RlIiwiTG9nIiwid2FybmluZyIsIm1DdXN0b21BZ2dyZWdhdGVzIiwiZW50aXR5VHlwZSIsImN1c3RvbUFnZ3JlZ2F0ZSIsImFDb250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzIiwiYW5ub3RhdGlvbnMiLCJBZ2dyZWdhdGlvbiIsIkNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXMiLCJxdWFsaWZpZXIiLCJyZWxhdGVkQ3VzdG9tQWdncmVnYXRlUHJvcGVydHkiLCJlbnRpdHlQcm9wZXJ0aWVzIiwiZmluZCIsInByb3BlcnR5IiwibGFiZWwiLCJDb21tb24iLCJzb3J0YWJsZSIsInNvcnRPcmRlciIsImNvbnRleHREZWZpbmluZ1Byb3BlcnR5Iiwib0N0eERlZlByb3BlcnR5IiwibVRyYW5zQWdncmVnYXRpb25zIiwib1Jlc291cmNlQnVuZGxlQ29yZSIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImVsZW1lbnQiLCJOYW1lIiwicHJvcGVydHlQYXRoIiwiQWdncmVnYXRhYmxlUHJvcGVydHkiLCJhZ2dyZWdhdGlvbk1ldGhvZCIsIkFnZ3JlZ2F0aW9uTWV0aG9kIiwiZ2V0VGV4dCIsImN1c3RvbSIsImFBZ2dQcm9wcyIsImdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMiLCJhR3JwUHJvcHMiLCJnZXRHcm91cGFibGVQcm9wZXJ0aWVzIiwibUFwcGx5U3VwcG9ydGVkIiwiQWdncmVnYXRhYmxlUHJvcGVydGllcyIsIkdyb3VwYWJsZVByb3BlcnRpZXMiLCJwcm9wIiwibmF2aWdhdGlvblByb3BlcnR5UGF0aCIsInNwbGl0IiwibGFzdEluZGV4T2YiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJ0aXRsZSIsIlRpdGxlIiwiZGF0YU1vZGVsUGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJpc0VudGl0eVNldCIsImVudGl0eU5hbWUiLCJ0YXJnZXRFbnRpdHlTZXQiLCJzdGFydGluZ0VudGl0eVNldCIsInNGaWx0ZXJiYXJJZCIsImdldEZpbHRlckJhcklEIiwiZ2V0Q29udGV4dFBhdGgiLCJvVml6UHJvcGVydGllcyIsInBsb3RBcmVhIiwid2luZG93Iiwic3RhcnQiLCJlbmQiLCJsZWdlbmRHcm91cCIsImxheW91dCIsImF1dG9CaW5kT25Jbml0IiwiZ2V0VGVtcGxhdGVUeXBlIiwiVGVtcGxhdGVUeXBlIiwiT2JqZWN0UGFnZSIsIkxpc3RSZXBvcnQiLCJBbmFseXRpY2FsTGlzdFBhZ2UiLCJoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zIiwib25TZWdtZW50ZWRCdXR0b25QcmVzc2VkIiwiYWxsb3dlZFRyYW5zZm9ybWF0aW9ucyIsImdldEFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMiLCJlbmFibGVTZWFyY2giLCJpbmNsdWRlcyIsImlzSW5zaWdodHNWaXNpYmxlIiwiZ2V0SW5zaWdodHNWaXNpYmlsaXR5IiwiaXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0IiwiZ2V0UGFyYW1ldGVyRW50aXR5VHlwZSIsImlzSW5zaWdodHNFbmFibGVkIiwiYW5kIiwiZ2V0SW5zaWdodHNFbmFibGVtZW50IiwiY2hhcnREaW1lbnNpb25LZXlBbmRSb2xlIiwiRGltZW5zaW9uQXR0cmlidXRlcyIsImRpbWVuc2lvbkF0dHJpYnV0ZSIsIkRpbWVuc2lvbiIsIlJvbGUiLCJjaGFydE1lYXN1cmVLZXlBbmRSb2xlIiwiTWVhc3VyZUF0dHJpYnV0ZXMiLCJtZWFzdXJlQXR0cmlidXRlIiwiTWVhc3VyZSIsImNvbnRhaW5zVHJhbnNBZ2dJbk1lYXN1cmVzIiwiZ2V0QWdncmVnYXRlZFByb3BlcnRpZXMiLCJNZWFzdXJlcyIsInNvbWUiLCJtZWFzdXJlIiwiVmlzdWFsaXphdGlvblR5cGUiLCJDaGFydCIsImlkIiwiZ2V0Q2hhcnRJRCIsImNvbGxlY3Rpb24iLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiYXBpSWQiLCJnZW5lcmF0ZSIsIm5hdmlnYXRpb25QYXRoIiwiZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aCIsImZpbHRlcklkIiwidml6UHJvcGVydGllcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjdXN0b21BZ2ciLCJ0cmFuc0FnZyIsImFwcGx5U3VwcG9ydGVkIiwiZmluZFZhcmlhbnRNYW5hZ2VtZW50IiwiY29udGFpbnNBZ2dyZWdhdGVkUHJvcGVydHkiLCJnZXRBZ2dyZWdhdGVkUHJvcGVydHkiLCJOb25lIiwiY3JlYXRlQ2hhcnRWaXN1YWxpemF0aW9uRm9yVGVtcGxhdGluZyIsInZpc3VhbGl6YXRpb24iLCJjb21waWxlRXhwcmVzc2lvbiIsIm5vdCIsImVxdWFsIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiVUkiLCJIaWRkZW4iLCJnZXRSZWxhdGl2ZU1vZGVsUGF0aEZ1bmN0aW9uIiwiY3JlYXRlQmxhbmtDaGFydFZpc3VhbGl6YXRpb24iLCJtdWx0aVZpZXdzIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDaGFydC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnR5LCBQcm9wZXJ0eVBhdGggfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgQWdncmVnYXRhYmxlUHJvcGVydHlUeXBlLCBBZ2dyZWdhdGlvbk1ldGhvZCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQWdncmVnYXRpb25cIjtcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9BZ2dyZWdhdGlvblwiO1xuaW1wb3J0IHR5cGUge1xuXHRDaGFydCxcblx0RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0RGF0YUZpZWxkRm9yQWN0aW9uR3JvdXAsXG5cdERhdGFGaWVsZEZvckFjdGlvbkdyb3VwVHlwZXMsXG5cdERhdGFGaWVsZEZvckFjdGlvblR5cGVzXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBhbmQsIGNvbXBpbGVFeHByZXNzaW9uLCBlcXVhbCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCBub3QsIHR5cGUgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgeyBpc0RhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvYW5ub3RhdGlvbnMvRGF0YUZpZWxkXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEFubm90YXRpb25BY3Rpb24sXG5cdEFubm90YXRpb25BY3Rpb25BY3Rpb25Hcm91cCxcblx0QmFzZUFjdGlvbixcblx0Q29tYmluZWRBY3Rpb24sXG5cdEN1c3RvbUFjdGlvbixcblx0T3ZlcnJpZGVUeXBlQWN0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCB7IGdldEFjdGlvbnNGcm9tTWFuaWZlc3QsIGlzQWN0aW9uQUlPcGVyYXRpb24sIGlzTWVudUFJT3BlcmF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHsgT3ZlcnJpZGVUeXBlLCBpbnNlcnRDdXN0b21FbGVtZW50cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBLZXlIZWxwZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0tleVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0VGFyZ2V0T2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIHsgRXhwYW5kUGF0aFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvbWV0YW1vZGVsX3R5cGVzXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi8uLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IENoYXJ0TWFuaWZlc3RDb25maWd1cmF0aW9uLCBNYW5pZmVzdEFjdGlvbiB9IGZyb20gXCIuLi8uLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBBY3Rpb25UeXBlLCBUZW1wbGF0ZVR5cGUsIFZhcmlhbnRNYW5hZ2VtZW50VHlwZSwgVmlzdWFsaXphdGlvblR5cGUgfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgTWFuaWZlc3RXcmFwcGVyIGZyb20gXCIuLi8uLi9NYW5pZmVzdFdyYXBwZXJcIjtcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uSGVscGVyIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvQWdncmVnYXRpb25cIjtcbmltcG9ydCB7IGdldENoYXJ0SUQsIGdldEZpbHRlckJhcklEIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvSURcIjtcbmltcG9ydCB7IGdldEluc2lnaHRzRW5hYmxlbWVudCwgZ2V0SW5zaWdodHNWaXNpYmlsaXR5IH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvSW5zaWdodHNIZWxwZXJzXCI7XG5pbXBvcnQgdHlwZSB7IEFjdHVhbFZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucyB9IGZyb20gXCIuL0RhdGFWaXN1YWxpemF0aW9uXCI7XG5cbmV4cG9ydCB0eXBlIENoYXJ0QXBwbHlTdXBwb3J0ZWQgPSB7XG5cdCRUeXBlOiBzdHJpbmc7XG5cdGVuYWJsZVNlYXJjaD86IGJvb2xlYW47XG5cdEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXM/OiAoRXhwYW5kUGF0aFR5cGU8UHJvcGVydHlQYXRoPiAmIHsgUHJvcGVydHk6IEV4cGFuZFBhdGhUeXBlPFByb3BlcnR5UGF0aD4gfSlbXTtcblx0R3JvdXBhYmxlUHJvcGVydGllcz86IChFeHBhbmRQYXRoVHlwZTxQcm9wZXJ0eVBhdGg+ICYgeyBQcm9wZXJ0eTogRXhwYW5kUGF0aFR5cGU8UHJvcGVydHlQYXRoPiB9KVtdO1xufTtcbmV4cG9ydCB0eXBlIENoYXJ0VGVtcGxhdGVWaXN1YWxpemF0aW9uID0ge1xuXHR0eXBlOiBWaXN1YWxpemF0aW9uVHlwZS5DaGFydDtcblx0aWQ6IHN0cmluZztcblx0YXBpSWQ6IHN0cmluZztcblx0ZW50aXR5TmFtZTogc3RyaW5nO1xuXHRjb2xsZWN0aW9uOiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoOiBzdHJpbmc7XG5cdGFwcGx5U3VwcG9ydGVkOiBDaGFydEFwcGx5U3VwcG9ydGVkO1xuXHRpc1BhcmFtZXRlcml6ZWRFbnRpdHlTZXQ/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiBDaGFydFZpc3VhbGl6YXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgQ2hhcnRWaXN1YWxpemF0aW9uID0gQ2hhcnRUZW1wbGF0ZVZpc3VhbGl6YXRpb24gJiB7XG5cdGVudGl0eU5hbWU6IHN0cmluZztcblx0cGVyc29uYWxpemF0aW9uPzogc3RyaW5nIHwgYm9vbGVhbjtcblx0bmF2aWdhdGlvblBhdGg6IHN0cmluZztcblx0ZmlsdGVySWQ/OiBzdHJpbmc7XG5cdHZpelByb3BlcnRpZXM6IHN0cmluZztcblx0YWN0aW9uczogQmFzZUFjdGlvbltdO1xuXHRjb21tYW5kQWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPjtcblx0dGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0YXV0b0JpbmRPbkluaXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cdG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZDogc3RyaW5nO1xuXHR2aXNpYmxlOiBzdHJpbmc7XG5cdGN1c3RvbUFnZzogb2JqZWN0O1xuXHR0cmFuc0FnZzogb2JqZWN0O1xuXHRtdWx0aVZpZXdzPzogYm9vbGVhbjtcblx0dmFyaWFudE1hbmFnZW1lbnQ6IFZhcmlhbnRNYW5hZ2VtZW50VHlwZTtcblx0c2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFBhdGg/OiBzdHJpbmc7XG5cdGlzSW5zaWdodHNFbmFibGVkPzogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRpc0luc2lnaHRzVmlzaWJsZT86IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblx0aGVhZGVyPzogc3RyaW5nO1xuXHRoZWFkZXJWaXNpYmxlPzogYm9vbGVhbjtcblx0c2VsZWN0aW9uTW9kZT86IHN0cmluZztcblx0Y2hhcnREaW1lbnNpb25LZXlBbmRSb2xlPzogb2JqZWN0O1xuXHRjaGFydE1lYXN1cmVLZXlBbmRSb2xlPzogb2JqZWN0O1xuXHRjb250YWluc0FnZ3JlZ2F0ZWRQcm9wZXJ0eT86IGJvb2xlYW47XG5cdGNvbnRhaW5zVHJhbnNBZ2dJbk1lYXN1cmVzPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIENoYXJ0UDEzblR5cGUgPSBzdHJpbmcgfCBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIE1ldGhvZCB0byByZXRyaWV2ZSBhbGwgY2hhcnQgYWN0aW9ucyBmcm9tIGFubm90YXRpb25zLlxuICogQHBhcmFtIGNoYXJ0QW5ub3RhdGlvblxuICogQHBhcmFtIHZpc3VhbGl6YXRpb25QYXRoXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMgVGhlIGNoYXJ0IGFjdGlvbnMgZnJvbSB0aGUgYW5ub3RhdGlvblxuICovXG5mdW5jdGlvbiBnZXRDaGFydEFjdGlvbnNGcm9tQW5ub3RhdGlvbnMoXG5cdGNoYXJ0QW5ub3RhdGlvbjogQ2hhcnQsXG5cdHZpc3VhbGl6YXRpb25QYXRoOiBzdHJpbmcsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogQXJyYXk8QW5ub3RhdGlvbkFjdGlvbiB8IEFubm90YXRpb25BY3Rpb25BY3Rpb25Hcm91cD4ge1xuXHRjb25zdCBjaGFydEFjdGlvbnM6IEFycmF5PEFubm90YXRpb25BY3Rpb24gfCBBbm5vdGF0aW9uQWN0aW9uQWN0aW9uR3JvdXA+ID0gW107XG5cdGlmIChjaGFydEFubm90YXRpb24/LkFjdGlvbnMpIHtcblx0XHRjaGFydEFubm90YXRpb24uQWN0aW9ucy5mb3JFYWNoKChkYXRhRmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhRmllbGRGb3JBY3Rpb25Hcm91cFR5cGVzKSA9PiB7XG5cdFx0XHRjb25zdCBrZXkgPSBLZXlIZWxwZXIuZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKGRhdGFGaWVsZCk7XG5cdFx0XHRpZiAoaXNEYXRhRmllbGRGb3JBY3Rpb25BYnN0cmFjdChkYXRhRmllbGQpICYmICFkYXRhRmllbGQuSW5saW5lICYmICFkYXRhRmllbGQuRGV0ZXJtaW5pbmcpIHtcblx0XHRcdFx0c3dpdGNoIChkYXRhRmllbGQuJFR5cGUpIHtcblx0XHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFjdGlvbjpcblx0XHRcdFx0XHRcdGlmIChkYXRhRmllbGQuQWN0aW9uVGFyZ2V0ICYmICFkYXRhRmllbGQuQWN0aW9uVGFyZ2V0LmlzQm91bmQpIHtcblx0XHRcdFx0XHRcdFx0Y2hhcnRBY3Rpb25zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9yQWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0XHRcdFx0XHRcdFx0a2V5LFxuXHRcdFx0XHRcdFx0XHRcdHZpc2libGU6IGdldENvbXBpbGVFeHByZXNzaW9uRm9yQWN0aW9uKGRhdGFGaWVsZCwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRcdFx0XHRcdFx0aXNBSU9wZXJhdGlvbjogaXNBY3Rpb25BSU9wZXJhdGlvbihkYXRhRmllbGQpID09PSB0cnVlIHx8IHVuZGVmaW5lZFxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0XHRcdFx0XHRjaGFydEFjdGlvbnMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdHR5cGU6IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uLFxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGRhdGFGaWVsZC5mdWxseVF1YWxpZmllZE5hbWUpLFxuXHRcdFx0XHRcdFx0XHRrZXksXG5cdFx0XHRcdFx0XHRcdHZpc2libGU6IGdldENvbXBpbGVFeHByZXNzaW9uRm9yQWN0aW9uKGRhdGFGaWVsZCwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRcdFx0XHRcdGlzTmF2aWdhYmxlOiB0cnVlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpc0Fubm90YXRpb25BY3Rpb25Hcm91cChkYXRhRmllbGQpKSB7XG5cdFx0XHRcdGNoYXJ0QWN0aW9ucy5wdXNoKHtcblx0XHRcdFx0XHR0eXBlOiBBY3Rpb25UeXBlLk1lbnUsXG5cdFx0XHRcdFx0dGV4dDogZGF0YUZpZWxkLkxhYmVsPy50b1N0cmluZygpLFxuXHRcdFx0XHRcdHZpc2libGU6IGdldENvbXBpbGVFeHByZXNzaW9uRm9yQWN0aW9uKGRhdGFGaWVsZCwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRcdFx0bWVudTogZGF0YUZpZWxkLkFjdGlvbnMubWFwKChhY3Rpb24pID0+XG5cdFx0XHRcdFx0XHRnZXREYXRhRmllbGRBbm5vdGF0aW9uQWN0aW9uKGFjdGlvbiBhcyBEYXRhRmllbGRGb3JBY3Rpb25UeXBlcywgY29udmVydGVyQ29udGV4dClcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpLFxuXHRcdFx0XHRcdGlzQUlPcGVyYXRpb246IGlzTWVudUFJT3BlcmF0aW9uKGRhdGFGaWVsZC5BY3Rpb25zKSA9PT0gdHJ1ZSB8fCB1bmRlZmluZWRcblx0XHRcdFx0fSBhcyBBbm5vdGF0aW9uQWN0aW9uQWN0aW9uR3JvdXApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBjaGFydEFjdGlvbnM7XG59XG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZGF0YUZpZWxkIGlzIGEgRGF0YUZpZWxkRm9yQWN0aW9uR3JvdXAuXG4gKiBAcGFyYW0gZGF0YUZpZWxkIFRoZSBkYXRhRmllbGQgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBUaGUgZGF0YUZpZWxkIGlmIGl0IG1hdGNoZXMgRGF0YUZpZWxkRm9yQWN0aW9uR3JvdXAuXG4gKi9cbmZ1bmN0aW9uIGlzQW5ub3RhdGlvbkFjdGlvbkdyb3VwKGRhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyk6IGRhdGFGaWVsZCBpcyBEYXRhRmllbGRGb3JBY3Rpb25Hcm91cCB7XG5cdHJldHVybiBkYXRhRmllbGQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFjdGlvbkdyb3VwO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW5kIHJldHVybnMgRGF0YUZpZWxkRm9yQWN0aW9uIGZvciBtZW51IG9mIERhdGFGaWVsZEZvckFjdGlvbkdyb3VwLlxuICogQHBhcmFtIGRhdGFGaWVsZCBUaGUgZGF0YWZpZWxkIHRvIGdldCB0aGUgYW5ub3RhdGlvbiBhY3Rpb24gZnJvbS5cbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dC5cbiAqIEByZXR1cm5zIEFuIGFubm90YXRpb24gYWN0aW9uLlxuICovXG5mdW5jdGlvbiBnZXREYXRhRmllbGRBbm5vdGF0aW9uQWN0aW9uKFxuXHRkYXRhRmllbGQ6IERhdGFGaWVsZEZvckFjdGlvblR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IEFubm90YXRpb25BY3Rpb24ge1xuXHRyZXR1cm4ge1xuXHRcdHR5cGU6IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9yQWN0aW9uLFxuXHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0a2V5OiBLZXlIZWxwZXIuZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKGRhdGFGaWVsZCksXG5cdFx0dmlzaWJsZTogZ2V0Q29tcGlsZUV4cHJlc3Npb25Gb3JBY3Rpb24oZGF0YUZpZWxkLCBjb252ZXJ0ZXJDb250ZXh0KVxuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hhcnRBY3Rpb25zKFxuXHRjaGFydEFubm90YXRpb246IENoYXJ0LFxuXHR2aXN1YWxpemF0aW9uUGF0aDogc3RyaW5nLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IENvbWJpbmVkQWN0aW9uIHtcblx0Y29uc3QgYUFubm90YXRpb25BY3Rpb25zID0gZ2V0Q2hhcnRBY3Rpb25zRnJvbUFubm90YXRpb25zKGNoYXJ0QW5ub3RhdGlvbiwgdmlzdWFsaXphdGlvblBhdGgsIGNvbnZlcnRlckNvbnRleHQpO1xuXHRjb25zdCBtYW5pZmVzdEFjdGlvbnMgPSBnZXRBY3Rpb25zRnJvbU1hbmlmZXN0KFxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RDb250cm9sQ29uZmlndXJhdGlvbjxDaGFydE1hbmlmZXN0Q29uZmlndXJhdGlvbj4odmlzdWFsaXphdGlvblBhdGgpLmFjdGlvbnMgYXMgUmVjb3JkPFxuXHRcdFx0c3RyaW5nLFxuXHRcdFx0TWFuaWZlc3RBY3Rpb25cblx0XHQ+LFxuXHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0YUFubm90YXRpb25BY3Rpb25zXG5cdCk7XG5cdGNvbnN0IGFjdGlvbk92ZXJ3cml0ZUNvbmZpZzogT3ZlcnJpZGVUeXBlQWN0aW9uID0ge1xuXHRcdGVuYWJsZWQ6IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGUsXG5cdFx0ZW5hYmxlT25TZWxlY3Q6IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGUsXG5cdFx0dmlzaWJsZTogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZSxcblx0XHRjb21tYW5kOiBPdmVycmlkZVR5cGUub3ZlcndyaXRlLFxuXHRcdHBvc2l0aW9uOiBPdmVycmlkZVR5cGUub3ZlcndyaXRlXG5cdH07XG5cdGNvbnN0IGNoYXJ0QWN0aW9ucyA9IGluc2VydEN1c3RvbUVsZW1lbnRzPEJhc2VBY3Rpb24+KGFBbm5vdGF0aW9uQWN0aW9ucywgbWFuaWZlc3RBY3Rpb25zLmFjdGlvbnMsIGFjdGlvbk92ZXJ3cml0ZUNvbmZpZyk7XG5cdHJldHVybiB7XG5cdFx0YWN0aW9uczogY2hhcnRBY3Rpb25zLFxuXHRcdGNvbW1hbmRBY3Rpb25zOiBtYW5pZmVzdEFjdGlvbnMuY29tbWFuZEFjdGlvbnNcblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFAxM25Nb2RlKFxuXHR2aXN1YWxpemF0aW9uUGF0aDogc3RyaW5nLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IHN0cmluZyB8IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXI6IE1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGNvbnN0IGNoYXJ0TWFuaWZlc3RTZXR0aW5nczogQ2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24odmlzdWFsaXphdGlvblBhdGgpO1xuXHRjb25zdCB2YXJpYW50TWFuYWdlbWVudDogVmFyaWFudE1hbmFnZW1lbnRUeXBlID0gbWFuaWZlc3RXcmFwcGVyLmdldFZhcmlhbnRNYW5hZ2VtZW50KCk7XG5cdGNvbnN0IGFQZXJzb25hbGl6YXRpb246IHN0cmluZ1tdID0gW107XG5cdC8vIFBlcnNvbmFsaXphdGlvbiBjb25maWd1cmVkIGluIG1hbmlmZXN0LlxuXHRjb25zdCBwZXJzb25hbGl6YXRpb24gPSBjaGFydE1hbmlmZXN0U2V0dGluZ3M/LmNoYXJ0U2V0dGluZ3M/LnBlcnNvbmFsaXphdGlvbjtcblx0Y29uc3QgaXNDb250cm9sVmFyaWFudCA9IHZhcmlhbnRNYW5hZ2VtZW50ID09PSBWYXJpYW50TWFuYWdlbWVudFR5cGUuQ29udHJvbCA/IHRydWUgOiBmYWxzZTtcblx0Ly8gaWYgcGVyc29uYWxpemF0aW9uIGlzIHNldCB0byBmYWxzZSBkbyBub3Qgc2hvdyBhbnkgb3B0aW9uXG5cdGlmICgocGVyc29uYWxpemF0aW9uICE9PSB1bmRlZmluZWQgJiYgIXBlcnNvbmFsaXphdGlvbikgfHwgcGVyc29uYWxpemF0aW9uID09IFwiZmFsc2VcIikge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRpZiAodHlwZW9mIHBlcnNvbmFsaXphdGlvbiA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIFNwZWNpZmljIHBlcnNvbmFsaXphdGlvbiBvcHRpb25zIGVuYWJsZWQgaW4gbWFuaWZlc3QuIFVzZSB0aGVtIGFzIGlzLlxuXHRcdGlmIChwZXJzb25hbGl6YXRpb24udHlwZSkge1xuXHRcdFx0YVBlcnNvbmFsaXphdGlvbi5wdXNoKFwiVHlwZVwiKTtcblx0XHR9XG5cdFx0aWYgKHBlcnNvbmFsaXphdGlvbi5pdGVtKSB7XG5cdFx0XHRhUGVyc29uYWxpemF0aW9uLnB1c2goXCJJdGVtXCIpO1xuXHRcdH1cblx0XHRpZiAocGVyc29uYWxpemF0aW9uLnNvcnQpIHtcblx0XHRcdGFQZXJzb25hbGl6YXRpb24ucHVzaChcIlNvcnRcIik7XG5cdFx0fVxuXHRcdGlmIChwZXJzb25hbGl6YXRpb24uZmlsdGVyKSB7XG5cdFx0XHRhUGVyc29uYWxpemF0aW9uLnB1c2goXCJGaWx0ZXJcIik7XG5cdFx0fVxuXHRcdHJldHVybiBhUGVyc29uYWxpemF0aW9uLmpvaW4oXCIsXCIpO1xuXHR9IGVsc2UgaWYgKGlzQ29udHJvbFZhcmlhbnQgfHwgISFwZXJzb25hbGl6YXRpb24pIHtcblx0XHQvLyBtYW5pZmVzdCBoYXMgcGVyc29uYWxpemF0aW9uIGNvbmZpZ3VyZWQsIGNoZWNrIGlmIGl0J3MgdHJ1ZVxuXHRcdC8vIGlmIG1hbmlmZXN0IGRvZXNuJ3QgaGF2ZSBwZXJzb25hbGl6YXRpb24sIGNoZWNrIGZvciB2YXJpYW50IG1hbmFnZW1lbnQgaXMgc2V0IHRvIGNvbnRyb2xcblx0XHRyZXR1cm4gXCJTb3J0LFR5cGUsSXRlbSxGaWx0ZXJcIjtcblx0fSBlbHNlIHtcblx0XHQvLyBpZiBtYW5pZmVzdCBkb2Vzbid0IGhhdmUgcGVyc29uYWxpemF0aW9uLCBzaG93IGRlZmF1bHQgb3B0aW9ucyB3aXRob3V0IGZpbHRlclxuXHRcdHJldHVybiBcIlNvcnQsVHlwZSxJdGVtXCI7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhlYWRlckluZm8oXG5cdHZpc3VhbGl6YXRpb25QYXRoOiBzdHJpbmcsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogeyBoZWFkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDsgaGVhZGVyVmlzaWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZCB9IHtcblx0Y29uc3QgY2hhcnRNYW5pZmVzdFNldHRpbmdzOiBDaGFydE1hbmlmZXN0Q29uZmlndXJhdGlvbiA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RDb250cm9sQ29uZmlndXJhdGlvbih2aXN1YWxpemF0aW9uUGF0aCk7XG5cdHJldHVybiB7XG5cdFx0aGVhZGVyOiBjaGFydE1hbmlmZXN0U2V0dGluZ3MuY2hhcnRTZXR0aW5ncz8uaGVhZGVyLFxuXHRcdGhlYWRlclZpc2libGU6IGNoYXJ0TWFuaWZlc3RTZXR0aW5ncz8uY2hhcnRTZXR0aW5ncz8uaGVhZGVyVmlzaWJsZVxuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0aW9uTW9kZShcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBcIk11bHRpcGxlXCIgfCBcIlNpbmdsZVwiIHwgXCJOb25lXCIgfCB1bmRlZmluZWQge1xuXHRjb25zdCBjaGFydE1hbmlmZXN0U2V0dGluZ3M6IENoYXJ0TWFuaWZlc3RDb25maWd1cmF0aW9uID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdENvbnRyb2xDb25maWd1cmF0aW9uKHZpc3VhbGl6YXRpb25QYXRoKTtcblx0cmV0dXJuIGNoYXJ0TWFuaWZlc3RTZXR0aW5ncy5jaGFydFNldHRpbmdzPy5zZWxlY3Rpb25Nb2RlO1xufVxuZXhwb3J0IHR5cGUgQ2hhcnRDdXN0b21BZ2dyZWdhdGUgPSB7XG5cdG5hbWU6IHN0cmluZztcblx0bGFiZWw6IHN0cmluZztcblx0c29ydGFibGU6IGJvb2xlYW47XG5cdHNvcnRPcmRlcjogXCJib3RoXCI7XG5cdGNvbnRleHREZWZpbmluZ1Byb3BlcnR5OiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFRyYW5zQWdnID0ge1xuXHRuYW1lOiBzdHJpbmc7XG5cdHByb3BlcnR5UGF0aDogc3RyaW5nO1xuXHRhZ2dyZWdhdGlvbk1ldGhvZDogQWdncmVnYXRpb25NZXRob2Q7XG5cdGxhYmVsOiBzdHJpbmc7XG5cdHNvcnRhYmxlOiBib29sZWFuO1xuXHRzb3J0T3JkZXI6IFwiYm90aFwiO1xuXHRjdXN0b206IGJvb2xlYW47XG59O1xuZnVuY3Rpb24gZ2V0QWdncmVnYXRhYmxlUHJvcGVydGllc09iamVjdChhZ2dQcm9wOiBBZ2dyZWdhdGFibGVQcm9wZXJ0eVR5cGUgfCBQcm9wZXJ0eSk6IHsgUHJvcGVydHk6IHsgJFByb3BlcnR5UGF0aDogc3RyaW5nIH0gfSB7XG5cdGxldCBvYmo7XG5cdGlmICgoYWdnUHJvcCBhcyBBZ2dyZWdhdGFibGVQcm9wZXJ0eVR5cGUpPy5Qcm9wZXJ0eSkge1xuXHRcdG9iaiA9IHtcblx0XHRcdFByb3BlcnR5OiB7XG5cdFx0XHRcdCRQcm9wZXJ0eVBhdGg6IChhZ2dQcm9wIGFzIEFnZ3JlZ2F0YWJsZVByb3BlcnR5VHlwZSk/LlByb3BlcnR5Py52YWx1ZVxuXHRcdFx0fVxuXHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0b2JqID0ge1xuXHRcdFx0UHJvcGVydHk6IHtcblx0XHRcdFx0JFByb3BlcnR5UGF0aDogKGFnZ1Byb3AgYXMgUHJvcGVydHkpPy5uYW1lXG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXHRyZXR1cm4gb2JqO1xufVxuLyoqXG4gKiBDcmVhdGUgdGhlIENoYXJ0VmlzdWFsaXphdGlvbiBjb25maWd1cmF0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRpc3BsYXkgYSBjaGFydCB1c2luZyB0aGUgQ2hhcnQgYnVpbGRpbmcgYmxvY2suXG4gKiBAcGFyYW0gY2hhcnRBbm5vdGF0aW9uIFRoZSB0YXJnZXRlZCBjaGFydCBhbm5vdGF0aW9uXG4gKiBAcGFyYW0gdmlzdWFsaXphdGlvblBhdGggVGhlIHBhdGggb2YgdGhlIHZpc3VhbGl6YXRpb24gYW5ub3RhdGlvblxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcGFyYW0gZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkIEZsYWcgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBBcHBseVN1cHBvcnRlZCBuZWVkcyB0byBiZSBjaGVja2VkIG9yIG5vdFxuICogQHBhcmFtIHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRQYXRoXG4gKiBAcmV0dXJucyBUaGUgY2hhcnQgdmlzdWFsaXphdGlvbiBiYXNlZCBvbiB0aGUgYW5ub3RhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2hhcnRWaXN1YWxpemF0aW9uKFxuXHRjaGFydEFubm90YXRpb246IENoYXJ0LFxuXHR2aXN1YWxpemF0aW9uUGF0aDogc3RyaW5nLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4sXG5cdGRvTm90Q2hlY2tBcHBseVN1cHBvcnRlZD86IGJvb2xlYW4sXG5cdHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRQYXRoPzogc3RyaW5nXG4pOiBDaGFydFZpc3VhbGl6YXRpb24ge1xuXHRjb25zdCBhZ2dyZWdhdGlvbkhlbHBlciA9IG5ldyBBZ2dyZWdhdGlvbkhlbHBlcihjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKSwgY29udmVydGVyQ29udGV4dCwgdHJ1ZSk7IC8vIHBhc3NpbmcgdGhlIGxhc3QgcGFyYW1ldGVyIGFzIHRydWUgdG8gY29uc2lkZXIgdGhlIG9sZCBhbm5vdGF0aW9ucyBpLmUuIEFnZ3JlZ2F0aW9uLkFnZ3JlZ2F0YWJsZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpbiBjYXNlIG9mIGNoYXJ0XG5cdGlmICghZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkICYmICFhZ2dyZWdhdGlvbkhlbHBlci5pc0FuYWx5dGljc1N1cHBvcnRlZCgpKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiQXBwbHlTdXBwb3J0ZWQgaXMgbm90IGFkZGVkIHRvIHRoZSBhbm5vdGF0aW9uc1wiKTtcblx0fVxuXHRjb25zdCBhVHJhbnNBZ2dyZWdhdGlvbnMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRUcmFuc0FnZ3JlZ2F0aW9ucygpO1xuXHRjb25zdCBhQ3VzdG9tQWdncmVnYXRlcyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEN1c3RvbUFnZ3JlZ2F0ZURlZmluaXRpb25zKCk7XG5cdGNvbnN0IHBhZ2VNYW5pZmVzdFNldHRpbmdzOiBNYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCB2YXJpYW50TWFuYWdlbWVudDogVmFyaWFudE1hbmFnZW1lbnRUeXBlID0gcGFnZU1hbmlmZXN0U2V0dGluZ3MuZ2V0VmFyaWFudE1hbmFnZW1lbnQoKTtcblx0Y29uc3QgcDEzbk1vZGU6IENoYXJ0UDEzblR5cGUgPSBnZXRQMTNuTW9kZSh2aXN1YWxpemF0aW9uUGF0aCwgY29udmVydGVyQ29udGV4dCk7XG5cdGlmIChwMTNuTW9kZSA9PT0gdW5kZWZpbmVkICYmIHZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIkNvbnRyb2xcIikge1xuXHRcdExvZy53YXJuaW5nKFwiVmFyaWFudCBNYW5hZ2VtZW50IGNhbm5vdCBiZSBlbmFibGVkIHdoZW4gcGVyc29uYWxpemF0aW9uIGlzIGRpc2FibGVkXCIpO1xuXHR9XG5cdGNvbnN0IG1DdXN0b21BZ2dyZWdhdGVzOiBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+ID0ge307XG5cdGlmIChhQ3VzdG9tQWdncmVnYXRlcykge1xuXHRcdGNvbnN0IGVudGl0eVR5cGUgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRFbnRpdHlUeXBlKCk7XG5cdFx0Zm9yIChjb25zdCBjdXN0b21BZ2dyZWdhdGUgb2YgYUN1c3RvbUFnZ3JlZ2F0ZXMpIHtcblx0XHRcdGNvbnN0IGFDb250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzID0gY3VzdG9tQWdncmVnYXRlPy5hbm5vdGF0aW9ucz8uQWdncmVnYXRpb24/LkNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXM7XG5cdFx0XHRjb25zdCBxdWFsaWZpZXIgPSBjdXN0b21BZ2dyZWdhdGU/LnF1YWxpZmllcjtcblx0XHRcdGNvbnN0IHJlbGF0ZWRDdXN0b21BZ2dyZWdhdGVQcm9wZXJ0eSA9IHF1YWxpZmllciAmJiBlbnRpdHlUeXBlLmVudGl0eVByb3BlcnRpZXMuZmluZCgocHJvcGVydHkpID0+IHByb3BlcnR5Lm5hbWUgPT09IHF1YWxpZmllcik7XG5cdFx0XHRjb25zdCBsYWJlbCA9IHJlbGF0ZWRDdXN0b21BZ2dyZWdhdGVQcm9wZXJ0eSAmJiByZWxhdGVkQ3VzdG9tQWdncmVnYXRlUHJvcGVydHk/LmFubm90YXRpb25zPy5Db21tb24/LkxhYmVsPy50b1N0cmluZygpO1xuXHRcdFx0bUN1c3RvbUFnZ3JlZ2F0ZXNbcXVhbGlmaWVyXSA9IHtcblx0XHRcdFx0bmFtZTogcXVhbGlmaWVyLFxuXHRcdFx0XHRsYWJlbDogbGFiZWwgfHwgYEN1c3RvbSBBZ2dyZWdhdGUgKCR7cXVhbGlmaWVyfSlgLFxuXHRcdFx0XHRzb3J0YWJsZTogdHJ1ZSxcblx0XHRcdFx0c29ydE9yZGVyOiBcImJvdGhcIixcblx0XHRcdFx0Y29udGV4dERlZmluaW5nUHJvcGVydHk6IGFDb250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzXG5cdFx0XHRcdFx0PyBhQ29udGV4dERlZmluaW5nUHJvcGVydGllcy5tYXAoKG9DdHhEZWZQcm9wZXJ0eSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gb0N0eERlZlByb3BlcnR5LnZhbHVlO1xuXHRcdFx0XHRcdCAgfSlcblx0XHRcdFx0XHQ6IFtdXG5cdFx0XHR9O1xuXHRcdH1cblx0fVxuXG5cdGNvbnN0IG1UcmFuc0FnZ3JlZ2F0aW9uczogUmVjb3JkPHN0cmluZywgVHJhbnNBZ2c+ID0ge307XG5cdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZUNvcmUgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvcmVcIikhO1xuXHRpZiAoYVRyYW5zQWdncmVnYXRpb25zKSB7XG5cdFx0Zm9yIChjb25zdCBlbGVtZW50IG9mIGFUcmFuc0FnZ3JlZ2F0aW9ucykge1xuXHRcdFx0bVRyYW5zQWdncmVnYXRpb25zW2VsZW1lbnQuTmFtZSBhcyBzdHJpbmddID0ge1xuXHRcdFx0XHRuYW1lOiBlbGVtZW50Lk5hbWUgYXMgc3RyaW5nLFxuXHRcdFx0XHRwcm9wZXJ0eVBhdGg6IGVsZW1lbnQuQWdncmVnYXRhYmxlUHJvcGVydHkudmFsdWUsXG5cdFx0XHRcdGFnZ3JlZ2F0aW9uTWV0aG9kOiBlbGVtZW50LkFnZ3JlZ2F0aW9uTWV0aG9kLFxuXHRcdFx0XHRsYWJlbDogZWxlbWVudD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uTGFiZWxcblx0XHRcdFx0XHQ/IGVsZW1lbnQ/LmFubm90YXRpb25zPy5Db21tb24/LkxhYmVsPy50b1N0cmluZygpXG5cdFx0XHRcdFx0OiBgJHtvUmVzb3VyY2VCdW5kbGVDb3JlLmdldFRleHQoXCJBR0dSRUdBVEFCTEVfUFJPUEVSVFlcIil9ICgke2VsZW1lbnQuTmFtZX0pYCxcblx0XHRcdFx0c29ydGFibGU6IHRydWUsXG5cdFx0XHRcdHNvcnRPcmRlcjogXCJib3RoXCIsXG5cdFx0XHRcdGN1c3RvbTogZmFsc2Vcblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgYUFnZ1Byb3BzID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0QWdncmVnYXRhYmxlUHJvcGVydGllcygpO1xuXHRjb25zdCBhR3JwUHJvcHMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRHcm91cGFibGVQcm9wZXJ0aWVzKCk7XG5cdGNvbnN0IG1BcHBseVN1cHBvcnRlZCA9IHt9IGFzIENoYXJ0QXBwbHlTdXBwb3J0ZWQ7XG5cdG1BcHBseVN1cHBvcnRlZC4kVHlwZSA9IEFnZ3JlZ2F0aW9uQW5ub3RhdGlvblR5cGVzLkFwcGx5U3VwcG9ydGVkVHlwZTtcblx0bUFwcGx5U3VwcG9ydGVkLkFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMgPSBbXTtcblx0bUFwcGx5U3VwcG9ydGVkLkdyb3VwYWJsZVByb3BlcnRpZXMgPSBbXTtcblxuXHRpZiAoYUFnZ1Byb3BzKSB7XG5cdFx0bUFwcGx5U3VwcG9ydGVkLkFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMgPSBhQWdnUHJvcHMubWFwKChwcm9wKSA9PlxuXHRcdFx0Z2V0QWdncmVnYXRhYmxlUHJvcGVydGllc09iamVjdChwcm9wKVxuXHRcdCkgYXMgKEV4cGFuZFBhdGhUeXBlPFByb3BlcnR5UGF0aD4gJiB7IFByb3BlcnR5OiBFeHBhbmRQYXRoVHlwZTxQcm9wZXJ0eVBhdGg+IH0pW107XG5cdH1cblxuXHRpZiAoYUdycFByb3BzKSB7XG5cdFx0bUFwcGx5U3VwcG9ydGVkLkdyb3VwYWJsZVByb3BlcnRpZXMgPSBhR3JwUHJvcHMubWFwKChwcm9wKSA9PiAoe1xuXHRcdFx0W1wiJFByb3BlcnR5UGF0aFwiXTogcHJvcC52YWx1ZVxuXHRcdH0pKSBhcyAoRXhwYW5kUGF0aFR5cGU8UHJvcGVydHlQYXRoPiAmIHsgUHJvcGVydHk6IEV4cGFuZFBhdGhUeXBlPFByb3BlcnR5UGF0aD4gfSlbXTtcblx0fVxuXG5cdGNvbnN0IGNoYXJ0QWN0aW9ucyA9IGdldENoYXJ0QWN0aW9ucyhjaGFydEFubm90YXRpb24sIHZpc3VhbGl6YXRpb25QYXRoLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0bGV0IFtuYXZpZ2F0aW9uUHJvcGVydHlQYXRoIC8qLCBhbm5vdGF0aW9uUGF0aCovXSA9IHZpc3VhbGl6YXRpb25QYXRoLnNwbGl0KFwiQFwiKTtcblx0aWYgKG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGFzdEluZGV4T2YoXCIvXCIpID09PSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCAtIDEpIHtcblx0XHQvLyBEcm9wIHRyYWlsaW5nIHNsYXNoXG5cdFx0bmF2aWdhdGlvblByb3BlcnR5UGF0aCA9IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGguc3Vic3RyaW5nKDAsIG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGVuZ3RoIC0gMSk7XG5cdH1cblx0Y29uc3QgdGl0bGUgPSBjaGFydEFubm90YXRpb24uVGl0bGU/LnRvU3RyaW5nKCkgfHwgXCJcIjsgLy8gcmVhZCB0aXRsZSBmcm9tIGNoYXJ0IGFubm90YXRpb25cblx0Y29uc3QgZGF0YU1vZGVsUGF0aCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpO1xuXHRjb25zdCBpc0VudGl0eVNldDogYm9vbGVhbiA9IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGVuZ3RoID09PSAwO1xuXHRjb25zdCBlbnRpdHlOYW1lOiBzdHJpbmcgPSBkYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVNldCA/IGRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0Lm5hbWUgOiBkYXRhTW9kZWxQYXRoLnN0YXJ0aW5nRW50aXR5U2V0Lm5hbWU7XG5cdGNvbnN0IHNGaWx0ZXJiYXJJZCA9IGlzRW50aXR5U2V0ID8gZ2V0RmlsdGVyQmFySUQoY29udmVydGVyQ29udGV4dC5nZXRDb250ZXh0UGF0aCgpKSA6IHVuZGVmaW5lZDtcblx0Y29uc3Qgb1ZpelByb3BlcnRpZXMgPSB7XG5cdFx0cGxvdEFyZWE6IHtcblx0XHRcdHdpbmRvdzoge1xuXHRcdFx0XHRzdGFydDogXCJmaXJzdERhdGFQb2ludFwiLFxuXHRcdFx0XHRlbmQ6IFwibGFzdERhdGFQb2ludFwiXG5cdFx0XHR9XG5cdFx0fSxcblx0XHRsZWdlbmRHcm91cDoge1xuXHRcdFx0bGF5b3V0OiB7XG5cdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiXG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRsZXQgYXV0b0JpbmRPbkluaXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cdGlmIChjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuT2JqZWN0UGFnZSkge1xuXHRcdGF1dG9CaW5kT25Jbml0ID0gdHJ1ZTtcblx0fSBlbHNlIGlmIChcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuTGlzdFJlcG9ydCB8fFxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5BbmFseXRpY2FsTGlzdFBhZ2Vcblx0KSB7XG5cdFx0YXV0b0JpbmRPbkluaXQgPSBmYWxzZTtcblx0fVxuXHRjb25zdCBoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zID1cblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMoKSB8fFxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5BbmFseXRpY2FsTGlzdFBhZ2U7XG5cdGNvbnN0IG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZCA9IGhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMgPyBcIi5oYW5kbGVycy5vblNlZ21lbnRlZEJ1dHRvblByZXNzZWRcIiA6IFwiXCI7XG5cdGNvbnN0IHZpc2libGUgPSBoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zID8gXCJ7PSAke3BhZ2VJbnRlcm5hbD5hbHBDb250ZW50Vmlld30gIT09ICdUYWJsZSd9XCIgOiBcInRydWVcIjtcblx0Y29uc3QgYWxsb3dlZFRyYW5zZm9ybWF0aW9ucyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMoKTtcblx0bUFwcGx5U3VwcG9ydGVkLmVuYWJsZVNlYXJjaCA9IGFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMgPyBhbGxvd2VkVHJhbnNmb3JtYXRpb25zLmluY2x1ZGVzKFwic2VhcmNoXCIpIDogdHJ1ZTtcblx0bGV0IHF1YWxpZmllciA9IFwiXCI7XG5cdGlmIChjaGFydEFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KFwiI1wiKS5sZW5ndGggPiAxKSB7XG5cdFx0cXVhbGlmaWVyID0gY2hhcnRBbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdChcIiNcIilbMV07XG5cdH1cblx0Y29uc3QgaXNJbnNpZ2h0c1Zpc2libGUgPSBnZXRJbnNpZ2h0c1Zpc2liaWxpdHkoXCJBbmFseXRpY2FsXCIsIGNvbnZlcnRlckNvbnRleHQsIHZpc3VhbGl6YXRpb25QYXRoKTtcblx0Y29uc3QgaXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRQYXJhbWV0ZXJFbnRpdHlUeXBlKCkgPyB0cnVlIDogZmFsc2U7XG5cdGNvbnN0IGlzSW5zaWdodHNFbmFibGVkID0gYW5kKGdldEluc2lnaHRzRW5hYmxlbWVudCgpLCBpc0luc2lnaHRzVmlzaWJsZSk7XG5cdGNvbnN0IHsgaGVhZGVyLCBoZWFkZXJWaXNpYmxlIH0gPSBnZXRIZWFkZXJJbmZvKHZpc3VhbGl6YXRpb25QYXRoLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0Y29uc3Qgc2VsZWN0aW9uTW9kZSA9IGdldFNlbGVjdGlvbk1vZGUodmlzdWFsaXphdGlvblBhdGgsIGNvbnZlcnRlckNvbnRleHQpO1xuXHRjb25zdCBjaGFydERpbWVuc2lvbktleUFuZFJvbGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5bXSA9IFtdO1xuXHRjaGFydEFubm90YXRpb24/LkRpbWVuc2lvbkF0dHJpYnV0ZXM/LmZvckVhY2goKGRpbWVuc2lvbkF0dHJpYnV0ZSkgPT4ge1xuXHRcdGNvbnN0IG9iajogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXHRcdG9ialtkaW1lbnNpb25BdHRyaWJ1dGU/LkRpbWVuc2lvbj8udmFsdWUgYXMgc3RyaW5nXSA9IGRpbWVuc2lvbkF0dHJpYnV0ZT8uUm9sZSBhcyBzdHJpbmc7XG5cdFx0Y2hhcnREaW1lbnNpb25LZXlBbmRSb2xlLnB1c2gob2JqKTtcblx0fSk7XG5cblx0Y29uc3QgY2hhcnRNZWFzdXJlS2V5QW5kUm9sZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPltdID0gW107XG5cdGNoYXJ0QW5ub3RhdGlvbj8uTWVhc3VyZUF0dHJpYnV0ZXM/LmZvckVhY2goKG1lYXN1cmVBdHRyaWJ1dGUpID0+IHtcblx0XHRjb25zdCBvYmo6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblx0XHRvYmpbbWVhc3VyZUF0dHJpYnV0ZT8uTWVhc3VyZT8udmFsdWUgYXMgc3RyaW5nXSA9IG1lYXN1cmVBdHRyaWJ1dGU/LlJvbGUgYXMgc3RyaW5nO1xuXHRcdGNoYXJ0TWVhc3VyZUtleUFuZFJvbGUucHVzaCh7fSk7XG5cdH0pO1xuXG5cdC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBtZWFzdXJlcyBwb2ludGluZyB0byBhZ2dyZWdhdGVkIHByb3BlcnRpZXNcblx0Y29uc3QgY29udGFpbnNUcmFuc0FnZ0luTWVhc3VyZXMgPSAhIWFnZ3JlZ2F0aW9uSGVscGVyXG5cdFx0LmdldEFnZ3JlZ2F0ZWRQcm9wZXJ0aWVzKClbMF1cblx0XHQ/LmZpbHRlcigocHJvcGVydHkpID0+IGNoYXJ0QW5ub3RhdGlvbi5NZWFzdXJlcz8uc29tZSgobWVhc3VyZSkgPT4gcHJvcGVydHkuTmFtZSA9PT0gbWVhc3VyZS52YWx1ZSkpPy5sZW5ndGg7XG5cblx0cmV0dXJuIHtcblx0XHR0eXBlOiBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCxcblx0XHRpZDogcXVhbGlmaWVyXG5cdFx0XHQ/IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgcXVhbGlmaWVyLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydClcblx0XHRcdDogZ2V0Q2hhcnRJRChpc0VudGl0eVNldCA/IGVudGl0eU5hbWUgOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCksXG5cdFx0Y29sbGVjdGlvbjogZ2V0VGFyZ2V0T2JqZWN0UGF0aChjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSksXG5cdFx0YXBpSWQ6IGdlbmVyYXRlKFtcblx0XHRcdHF1YWxpZmllclxuXHRcdFx0XHQ/IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgcXVhbGlmaWVyLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydClcblx0XHRcdFx0OiBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0KSxcblx0XHRcdFwiQ2hhcnRcIlxuXHRcdF0pLFxuXHRcdGVudGl0eU5hbWU6IGVudGl0eU5hbWUsXG5cdFx0cGVyc29uYWxpemF0aW9uOiBnZXRQMTNuTW9kZSh2aXN1YWxpemF0aW9uUGF0aCwgY29udmVydGVyQ29udGV4dCksXG5cdFx0bmF2aWdhdGlvblBhdGg6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsXG5cdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aCh2aXN1YWxpemF0aW9uUGF0aCksXG5cdFx0ZmlsdGVySWQ6IHNGaWx0ZXJiYXJJZCxcblx0XHR2aXpQcm9wZXJ0aWVzOiBKU09OLnN0cmluZ2lmeShvVml6UHJvcGVydGllcyksXG5cdFx0YWN0aW9uczogY2hhcnRBY3Rpb25zLmFjdGlvbnMsXG5cdFx0Y29tbWFuZEFjdGlvbnM6IGNoYXJ0QWN0aW9ucy5jb21tYW5kQWN0aW9ucyxcblx0XHR0aXRsZTogdGl0bGUsXG5cdFx0YXV0b0JpbmRPbkluaXQ6IGF1dG9CaW5kT25Jbml0LFxuXHRcdG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZDogb25TZWdtZW50ZWRCdXR0b25QcmVzc2VkLFxuXHRcdHZpc2libGU6IHZpc2libGUsXG5cdFx0Y3VzdG9tQWdnOiBtQ3VzdG9tQWdncmVnYXRlcyxcblx0XHR0cmFuc0FnZzogbVRyYW5zQWdncmVnYXRpb25zLFxuXHRcdGFwcGx5U3VwcG9ydGVkOiBtQXBwbHlTdXBwb3J0ZWQsXG5cdFx0c2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFBhdGgsXG5cdFx0dmFyaWFudE1hbmFnZW1lbnQ6IGZpbmRWYXJpYW50TWFuYWdlbWVudChwMTNuTW9kZSwgdmFyaWFudE1hbmFnZW1lbnQpLFxuXHRcdGlzSW5zaWdodHNFbmFibGVkOiBpc0luc2lnaHRzRW5hYmxlZCxcblx0XHRpc0luc2lnaHRzVmlzaWJsZTogaXNJbnNpZ2h0c1Zpc2libGUsXG5cdFx0aXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0OiBpc1BhcmFtZXRlcml6ZWRFbnRpdHlTZXQsXG5cdFx0aGVhZGVyOiBoZWFkZXIsXG5cdFx0aGVhZGVyVmlzaWJsZTogaGVhZGVyVmlzaWJsZSxcblx0XHRzZWxlY3Rpb25Nb2RlOiBzZWxlY3Rpb25Nb2RlLFxuXHRcdGNoYXJ0RGltZW5zaW9uS2V5QW5kUm9sZTogY2hhcnREaW1lbnNpb25LZXlBbmRSb2xlLFxuXHRcdGNoYXJ0TWVhc3VyZUtleUFuZFJvbGU6IGNoYXJ0TWVhc3VyZUtleUFuZFJvbGUsXG5cdFx0Y29udGFpbnNBZ2dyZWdhdGVkUHJvcGVydHk6IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEFnZ3JlZ2F0ZWRQcm9wZXJ0eSgpLmxlbmd0aCA+IDAsXG5cdFx0Y29udGFpbnNUcmFuc0FnZ0luTWVhc3VyZXNcblx0fTtcbn1cbi8qKlxuICogTWV0aG9kIHRvIGRldGVybWluZSB0aGUgdmFyaWFudCBtYW5hZ2VtZW50LlxuICogQHBhcmFtIHAxM25Nb2RlXG4gKiBAcGFyYW0gdmFyaWFudE1hbmFnZW1lbnRcbiAqIEByZXR1cm5zIFRoZSB2YXJpYW50IG1hbmFnZW1lbnQgZm9yIHRoZSBjaGFydFxuICovXG5mdW5jdGlvbiBmaW5kVmFyaWFudE1hbmFnZW1lbnQocDEzbk1vZGU6IENoYXJ0UDEzblR5cGUsIHZhcmlhbnRNYW5hZ2VtZW50OiBWYXJpYW50TWFuYWdlbWVudFR5cGUpOiBWYXJpYW50TWFuYWdlbWVudFR5cGUge1xuXHRyZXR1cm4gdmFyaWFudE1hbmFnZW1lbnQgPT09IFwiQ29udHJvbFwiICYmICFwMTNuTW9kZSA/IFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5Ob25lIDogdmFyaWFudE1hbmFnZW1lbnQ7XG59XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBDaGFydFZpc3VhbGl6YXRpb24gY29uZmlndXJhdGlvbiB0aGF0IHdpbGwgYmUgdXNlZCB0byBkdXJpbmcgdGVtcGxhdGluZy5cbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIHZpc3VhbGl6YXRpb25QYXRoIFRoZSBwYXRoIG9mIHRoZSB2aXN1YWxpemF0aW9uIGFubm90YXRpb25cbiAqIEBwYXJhbSB2aXN1YWxpemF0aW9uIFRoZSB2aXN1YWxpemF0aW9uIGFubm90YXRpb25cbiAqIEByZXR1cm5zIFRoZSBjaGFydCB2aXN1YWxpemF0aW9uIGJhc2VkIG9uIHRoZSBhbm5vdGF0aW9uIHVzZWQgZm9yIHRlbXBsYXRpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNoYXJ0VmlzdWFsaXphdGlvbkZvclRlbXBsYXRpbmcoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pixcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0dmlzdWFsaXphdGlvbjogQWN0dWFsVmlzdWFsaXphdGlvbkFubm90YXRpb25zXG4pOiBDaGFydFRlbXBsYXRlVmlzdWFsaXphdGlvbiB7XG5cdGNvbnN0IHF1YWxpZmllciA9IHZpc3VhbGl6YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KFwiI1wiKS5sZW5ndGggPiAxID8gdmlzdWFsaXphdGlvbi5mdWxseVF1YWxpZmllZE5hbWUuc3BsaXQoXCIjXCIpWzFdIDogXCJcIjtcblx0Y29uc3QgW25hdmlnYXRpb25Qcm9wZXJ0eVBhdGhdID0gdmlzdWFsaXphdGlvblBhdGguc3BsaXQoXCJAXCIpO1xuXG5cdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKTtcblx0Y29uc3QgaXNFbnRpdHlTZXQ6IGJvb2xlYW4gPSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCA9PT0gMDtcblx0Y29uc3QgZW50aXR5TmFtZTogc3RyaW5nID0gZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQ/Lm5hbWUgPz8gZGF0YU1vZGVsUGF0aC5zdGFydGluZ0VudGl0eVNldC5uYW1lO1xuXHRjb25zdCBhZ2dyZWdhdGlvbkhlbHBlciA9IG5ldyBBZ2dyZWdhdGlvbkhlbHBlcihjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKSwgY29udmVydGVyQ29udGV4dCwgdHJ1ZSk7XG5cdGNvbnN0IGFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRBbGxvd2VkVHJhbnNmb3JtYXRpb25zKCk7XG5cdGNvbnN0IGlzUGFyYW1ldGVyaXplZEVudGl0eVNldCA9ICEhY29udmVydGVyQ29udGV4dC5nZXRQYXJhbWV0ZXJFbnRpdHlUeXBlKCk7XG5cdHJldHVybiB7XG5cdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aCh2aXN1YWxpemF0aW9uUGF0aCksXG5cdFx0aXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0LFxuXHRcdGNvbGxlY3Rpb246IGdldFRhcmdldE9iamVjdFBhdGgoY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkpLFxuXHRcdHR5cGU6IFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0LFxuXHRcdGVudGl0eU5hbWUsXG5cdFx0aWQ6IHF1YWxpZmllclxuXHRcdFx0PyBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIHF1YWxpZmllciwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpXG5cdFx0XHQ6IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpLFxuXHRcdGFwaUlkOiBnZW5lcmF0ZShbXG5cdFx0XHRxdWFsaWZpZXJcblx0XHRcdFx0PyBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIHF1YWxpZmllciwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpXG5cdFx0XHRcdDogZ2V0Q2hhcnRJRChpc0VudGl0eVNldCA/IGVudGl0eU5hbWUgOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCksXG5cdFx0XHRcIkNoYXJ0XCJcblx0XHRdKSxcblx0XHRhcHBseVN1cHBvcnRlZDoge1xuXHRcdFx0JFR5cGU6IFwiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkFwcGx5U3VwcG9ydGVkVHlwZVwiLFxuXHRcdFx0ZW5hYmxlU2VhcmNoOiBhbGxvd2VkVHJhbnNmb3JtYXRpb25zPy5pbmNsdWRlcyhcInNlYXJjaFwiKSA/PyB0cnVlXG5cdFx0fVxuXHR9O1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBnZXQgY29tcGlsZSBleHByZXNzaW9uIGZvciBEYXRhRmllbGRGb3JBY3Rpb24gYW5kIERhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbi5cbiAqIEBwYXJhbSBkYXRhRmllbGRcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBDb21waWxlIGV4cHJlc3Npb24gZm9yIERhdGFGaWVsZEZvckFjdGlvbiBhbmQgRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uXG4gKi9cbmZ1bmN0aW9uIGdldENvbXBpbGVFeHByZXNzaW9uRm9yQWN0aW9uKFxuXHRkYXRhRmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0bm90KFxuXHRcdFx0ZXF1YWwoXG5cdFx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihcblx0XHRcdFx0XHRkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4sXG5cdFx0XHRcdFx0W10sXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0UmVsYXRpdmVNb2RlbFBhdGhGdW5jdGlvbigpXG5cdFx0XHRcdCksXG5cdFx0XHRcdHRydWVcblx0XHRcdClcblx0XHQpXG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCbGFua0NoYXJ0VmlzdWFsaXphdGlvbihjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4pOiBDaGFydFZpc3VhbGl6YXRpb24ge1xuXHRjb25zdCBoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zID1cblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMoKSB8fFxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5BbmFseXRpY2FsTGlzdFBhZ2U7XG5cdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKTtcblx0Y29uc3QgZW50aXR5TmFtZSA9IGRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0ID8gZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQubmFtZSA6IGRhdGFNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQubmFtZTtcblxuXHRjb25zdCB2aXN1YWxpemF0aW9uOiBDaGFydFZpc3VhbGl6YXRpb24gPSB7XG5cdFx0dHlwZTogVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQsXG5cdFx0aWQ6IGdldENoYXJ0SUQoZW50aXR5TmFtZSwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpLFxuXHRcdGFwaUlkOiBnZW5lcmF0ZShbZ2V0Q2hhcnRJRChlbnRpdHlOYW1lLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCksIFwiQ2hhcnRcIl0pLFxuXHRcdGVudGl0eU5hbWU6IGVudGl0eU5hbWUsXG5cdFx0dGl0bGU6IFwiXCIsXG5cdFx0Y29sbGVjdGlvbjogXCJcIixcblx0XHRwZXJzb25hbGl6YXRpb246IHVuZGVmaW5lZCxcblx0XHRuYXZpZ2F0aW9uUGF0aDogXCJcIixcblx0XHRhbm5vdGF0aW9uUGF0aDogXCJcIixcblx0XHR2aXpQcm9wZXJ0aWVzOiBKU09OLnN0cmluZ2lmeSh7XG5cdFx0XHRsZWdlbmRHcm91cDoge1xuXHRcdFx0XHRsYXlvdXQ6IHtcblx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIlxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSksXG5cdFx0YWN0aW9uczogW10sXG5cdFx0Y29tbWFuZEFjdGlvbnM6IHt9LFxuXHRcdGF1dG9CaW5kT25Jbml0OiBmYWxzZSxcblx0XHRvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQ6IFwiXCIsXG5cdFx0dmlzaWJsZTogaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyA/IFwiez0gJHtwYWdlSW50ZXJuYWw+YWxwQ29udGVudFZpZXd9ICE9PSAnVGFibGUnfVwiIDogXCJ0cnVlXCIsXG5cdFx0Y3VzdG9tQWdnOiB7fSxcblx0XHR0cmFuc0FnZzoge30sXG5cdFx0YXBwbHlTdXBwb3J0ZWQ6IHtcblx0XHRcdCRUeXBlOiBcIk9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5BcHBseVN1cHBvcnRlZFR5cGVcIixcblx0XHRcdEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXM6IFtdLFxuXHRcdFx0R3JvdXBhYmxlUHJvcGVydGllczogW10sXG5cdFx0XHRlbmFibGVTZWFyY2g6IGZhbHNlXG5cdFx0fSxcblx0XHRtdWx0aVZpZXdzOiBmYWxzZSxcblx0XHR2YXJpYW50TWFuYWdlbWVudDogVmFyaWFudE1hbmFnZW1lbnRUeXBlLk5vbmVcblx0fTtcblxuXHRyZXR1cm4gdmlzdWFsaXphdGlvbjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlEQTtBQUNBO0FBQ0E7O0VBK0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU0EsOEJBQThCQSxDQUN0Q0MsZUFBc0IsRUFDdEJDLGlCQUF5QixFQUN6QkMsZ0JBQXlELEVBQ0Q7SUFDeEQsTUFBTUMsWUFBbUUsR0FBRyxFQUFFO0lBQzlFLElBQUlILGVBQWUsRUFBRUksT0FBTyxFQUFFO01BQzdCSixlQUFlLENBQUNJLE9BQU8sQ0FBQ0MsT0FBTyxDQUFFQyxTQUFnRSxJQUFLO1FBQ3JHLE1BQU1DLEdBQUcsR0FBR0MsU0FBUyxDQUFDQyx3QkFBd0IsQ0FBQ0gsU0FBUyxDQUFDO1FBQ3pELElBQUlJLDRCQUE0QixDQUFDSixTQUFTLENBQUMsSUFBSSxDQUFDQSxTQUFTLENBQUNLLE1BQU0sSUFBSSxDQUFDTCxTQUFTLENBQUNNLFdBQVcsRUFBRTtVQUMzRixRQUFRTixTQUFTLENBQUNPLEtBQUs7WUFDdEI7Y0FDQyxJQUFJUCxTQUFTLENBQUNRLFlBQVksSUFBSSxDQUFDUixTQUFTLENBQUNRLFlBQVksQ0FBQ0MsT0FBTyxFQUFFO2dCQUM5RFosWUFBWSxDQUFDYSxJQUFJLENBQUM7a0JBQ2pCQyxJQUFJLEVBQUVDLFVBQVUsQ0FBQ0Msa0JBQWtCO2tCQUNuQ0MsY0FBYyxFQUFFbEIsZ0JBQWdCLENBQUNtQiwrQkFBK0IsQ0FBQ2YsU0FBUyxDQUFDZ0Isa0JBQWtCLENBQUM7a0JB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
456
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDaGFydEFjdGlvbnNGcm9tQW5ub3RhdGlvbnMiLCJjaGFydEFubm90YXRpb24iLCJ2aXN1YWxpemF0aW9uUGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJjaGFydEFjdGlvbnMiLCJBY3Rpb25zIiwiZm9yRWFjaCIsImRhdGFGaWVsZCIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsImlzRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3QiLCJJbmxpbmUiLCJEZXRlcm1pbmluZyIsIiRUeXBlIiwiQWN0aW9uVGFyZ2V0IiwiaXNCb3VuZCIsInB1c2giLCJ0eXBlIiwiQWN0aW9uVHlwZSIsIkRhdGFGaWVsZEZvckFjdGlvbiIsImFubm90YXRpb25QYXRoIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInZpc2libGUiLCJnZXRDb21waWxlRXhwcmVzc2lvbkZvckFjdGlvbiIsImlzQUlPcGVyYXRpb24iLCJpc0FjdGlvbkFJT3BlcmF0aW9uIiwidW5kZWZpbmVkIiwiRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiaXNOYXZpZ2FibGUiLCJpc0Fubm90YXRpb25BY3Rpb25Hcm91cCIsIk1lbnUiLCJ0ZXh0IiwiTGFiZWwiLCJ0b1N0cmluZyIsIm1lbnUiLCJtYXAiLCJhY3Rpb24iLCJnZXREYXRhRmllbGRBbm5vdGF0aW9uQWN0aW9uIiwiaXNNZW51QUlPcGVyYXRpb24iLCJnZXRDaGFydEFjdGlvbnMiLCJhQW5ub3RhdGlvbkFjdGlvbnMiLCJtYW5pZmVzdEFjdGlvbnMiLCJnZXRBY3Rpb25zRnJvbU1hbmlmZXN0IiwiZ2V0TWFuaWZlc3RDb250cm9sQ29uZmlndXJhdGlvbiIsImFjdGlvbnMiLCJhY3Rpb25PdmVyd3JpdGVDb25maWciLCJlbmFibGVkIiwiT3ZlcnJpZGVUeXBlIiwib3ZlcndyaXRlIiwiZW5hYmxlT25TZWxlY3QiLCJjb21tYW5kIiwicG9zaXRpb24iLCJpbnNlcnRDdXN0b21FbGVtZW50cyIsImNvbW1hbmRBY3Rpb25zIiwiX2V4cG9ydHMiLCJnZXRQMTNuTW9kZSIsIm1hbmlmZXN0V3JhcHBlciIsImdldE1hbmlmZXN0V3JhcHBlciIsImNoYXJ0TWFuaWZlc3RTZXR0aW5ncyIsInZhcmlhbnRNYW5hZ2VtZW50IiwiZ2V0VmFyaWFudE1hbmFnZW1lbnQiLCJhUGVyc29uYWxpemF0aW9uIiwicGVyc29uYWxpemF0aW9uIiwiY2hhcnRTZXR0aW5ncyIsImlzQ29udHJvbFZhcmlhbnQiLCJWYXJpYW50TWFuYWdlbWVudFR5cGUiLCJDb250cm9sIiwiaXRlbSIsInNvcnQiLCJmaWx0ZXIiLCJqb2luIiwiZ2V0SGVhZGVySW5mbyIsImhlYWRlciIsImhlYWRlclZpc2libGUiLCJnZXRTZWxlY3Rpb25Nb2RlIiwic2VsZWN0aW9uTW9kZSIsImdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXNPYmplY3QiLCJhZ2dQcm9wIiwib2JqIiwiUHJvcGVydHkiLCIkUHJvcGVydHlQYXRoIiwidmFsdWUiLCJuYW1lIiwiY3JlYXRlQ2hhcnRWaXN1YWxpemF0aW9uIiwiZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkIiwic2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFBhdGgiLCJhZ2dyZWdhdGlvbkhlbHBlciIsIkFnZ3JlZ2F0aW9uSGVscGVyIiwiZ2V0RW50aXR5VHlwZSIsImlzQW5hbHl0aWNzU3VwcG9ydGVkIiwiRXJyb3IiLCJhVHJhbnNBZ2dyZWdhdGlvbnMiLCJnZXRUcmFuc0FnZ3JlZ2F0aW9ucyIsImFDdXN0b21BZ2dyZWdhdGVzIiwiZ2V0Q3VzdG9tQWdncmVnYXRlRGVmaW5pdGlvbnMiLCJwYWdlTWFuaWZlc3RTZXR0aW5ncyIsInAxM25Nb2RlIiwiTG9nIiwid2FybmluZyIsIm1DdXN0b21BZ2dyZWdhdGVzIiwiZW50aXR5VHlwZSIsImN1c3RvbUFnZ3JlZ2F0ZSIsImFDb250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzIiwiYW5ub3RhdGlvbnMiLCJBZ2dyZWdhdGlvbiIsIkNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXMiLCJxdWFsaWZpZXIiLCJyZWxhdGVkQ3VzdG9tQWdncmVnYXRlUHJvcGVydHkiLCJlbnRpdHlQcm9wZXJ0aWVzIiwiZmluZCIsInByb3BlcnR5IiwibGFiZWwiLCJDb21tb24iLCJzb3J0YWJsZSIsInNvcnRPcmRlciIsImNvbnRleHREZWZpbmluZ1Byb3BlcnR5Iiwib0N0eERlZlByb3BlcnR5IiwibVRyYW5zQWdncmVnYXRpb25zIiwib1Jlc291cmNlQnVuZGxlQ29yZSIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImVsZW1lbnQiLCJOYW1lIiwicHJvcGVydHlQYXRoIiwiQWdncmVnYXRhYmxlUHJvcGVydHkiLCJhZ2dyZWdhdGlvbk1ldGhvZCIsIkFnZ3JlZ2F0aW9uTWV0aG9kIiwiZ2V0VGV4dCIsImN1c3RvbSIsImFBZ2dQcm9wcyIsImdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMiLCJhR3JwUHJvcHMiLCJnZXRHcm91cGFibGVQcm9wZXJ0aWVzIiwibUFwcGx5U3VwcG9ydGVkIiwiQWdncmVnYXRhYmxlUHJvcGVydGllcyIsIkdyb3VwYWJsZVByb3BlcnRpZXMiLCJwcm9wIiwibmF2aWdhdGlvblByb3BlcnR5UGF0aCIsInNwbGl0IiwibGFzdEluZGV4T2YiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJ0aXRsZSIsIlRpdGxlIiwiZGF0YU1vZGVsUGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJpc0VudGl0eVNldCIsImVudGl0eU5hbWUiLCJ0YXJnZXRFbnRpdHlTZXQiLCJzdGFydGluZ0VudGl0eVNldCIsInNGaWx0ZXJiYXJJZCIsImdldEZpbHRlckJhcklEIiwiZ2V0Q29udGV4dFBhdGgiLCJvVml6UHJvcGVydGllcyIsInBsb3RBcmVhIiwid2luZG93Iiwic3RhcnQiLCJlbmQiLCJsZWdlbmRHcm91cCIsImxheW91dCIsInRvb2x0aXAiLCJmb3JtYXRTdHJpbmciLCJhdXRvQmluZE9uSW5pdCIsImdldFRlbXBsYXRlVHlwZSIsIlRlbXBsYXRlVHlwZSIsIk9iamVjdFBhZ2UiLCJMaXN0UmVwb3J0IiwiQW5hbHl0aWNhbExpc3RQYWdlIiwiaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyIsIm9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZCIsImFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMiLCJnZXRBbGxvd2VkVHJhbnNmb3JtYXRpb25zIiwiZW5hYmxlU2VhcmNoIiwiaW5jbHVkZXMiLCJpc0luc2lnaHRzVmlzaWJsZSIsImdldEluc2lnaHRzVmlzaWJpbGl0eSIsImlzUGFyYW1ldGVyaXplZEVudGl0eVNldCIsImdldFBhcmFtZXRlckVudGl0eVR5cGUiLCJpc0luc2lnaHRzRW5hYmxlZCIsImFuZCIsImdldEluc2lnaHRzRW5hYmxlbWVudCIsImNoYXJ0RGltZW5zaW9uS2V5QW5kUm9sZSIsIkRpbWVuc2lvbkF0dHJpYnV0ZXMiLCJkaW1lbnNpb25BdHRyaWJ1dGUiLCJEaW1lbnNpb24iLCJSb2xlIiwiY2hhcnRNZWFzdXJlS2V5QW5kUm9sZSIsIk1lYXN1cmVBdHRyaWJ1dGVzIiwibWVhc3VyZUF0dHJpYnV0ZSIsIk1lYXN1cmUiLCJjb250YWluc1RyYW5zQWdnSW5NZWFzdXJlcyIsImdldEFnZ3JlZ2F0ZWRQcm9wZXJ0aWVzIiwiTWVhc3VyZXMiLCJzb21lIiwibWVhc3VyZSIsIlZpc3VhbGl6YXRpb25UeXBlIiwiQ2hhcnQiLCJpZCIsImdldENoYXJ0SUQiLCJjb2xsZWN0aW9uIiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsImFwaUlkIiwiZ2VuZXJhdGUiLCJuYXZpZ2F0aW9uUGF0aCIsImdldEFic29sdXRlQW5ub3RhdGlvblBhdGgiLCJmaWx0ZXJJZCIsInZpelByb3BlcnRpZXMiLCJKU09OIiwic3RyaW5naWZ5IiwiY3VzdG9tQWdnIiwidHJhbnNBZ2ciLCJhcHBseVN1cHBvcnRlZCIsImZpbmRWYXJpYW50TWFuYWdlbWVudCIsImNvbnRhaW5zQWdncmVnYXRlZFByb3BlcnR5IiwiZ2V0QWdncmVnYXRlZFByb3BlcnR5IiwiTm9uZSIsImNyZWF0ZUNoYXJ0VmlzdWFsaXphdGlvbkZvclRlbXBsYXRpbmciLCJ2aXN1YWxpemF0aW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJub3QiLCJlcXVhbCIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsIlVJIiwiSGlkZGVuIiwiZ2V0UmVsYXRpdmVNb2RlbFBhdGhGdW5jdGlvbiIsImNyZWF0ZUJsYW5rQ2hhcnRWaXN1YWxpemF0aW9uIiwibXVsdGlWaWV3cyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQ2hhcnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSwgUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IEFnZ3JlZ2F0YWJsZVByb3BlcnR5VHlwZSwgQWdncmVnYXRpb25NZXRob2QgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0FnZ3JlZ2F0aW9uXCI7XG5pbXBvcnQgeyBBZ2dyZWdhdGlvbkFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQWdncmVnYXRpb25cIjtcbmltcG9ydCB0eXBlIHtcblx0Q2hhcnQsXG5cdERhdGFGaWVsZEFic3RyYWN0VHlwZXMsXG5cdERhdGFGaWVsZEZvckFjdGlvbkdyb3VwLFxuXHREYXRhRmllbGRGb3JBY3Rpb25Hcm91cFR5cGVzLFxuXHREYXRhRmllbGRGb3JBY3Rpb25UeXBlc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgYW5kLCBjb21waWxlRXhwcmVzc2lvbiwgZXF1YWwsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgbm90LCB0eXBlIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQYWdlQ29udGV4dFBhdGhUYXJnZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHsgaXNEYXRhRmllbGRGb3JBY3Rpb25BYnN0cmFjdCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2Fubm90YXRpb25zL0RhdGFGaWVsZFwiO1xuaW1wb3J0IHR5cGUge1xuXHRBbm5vdGF0aW9uQWN0aW9uLFxuXHRBbm5vdGF0aW9uQWN0aW9uQWN0aW9uR3JvdXAsXG5cdEJhc2VBY3Rpb24sXG5cdENvbWJpbmVkQWN0aW9uLFxuXHRDdXN0b21BY3Rpb24sXG5cdE92ZXJyaWRlVHlwZUFjdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQgeyBnZXRBY3Rpb25zRnJvbU1hbmlmZXN0LCBpc0FjdGlvbkFJT3BlcmF0aW9uLCBpc01lbnVBSU9wZXJhdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCB7IE92ZXJyaWRlVHlwZSwgaW5zZXJ0Q3VzdG9tRWxlbWVudHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgS2V5SGVscGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9LZXlcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGdldFRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSB7IEV4cGFuZFBhdGhUeXBlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwiLi4vLi4vQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBDaGFydE1hbmlmZXN0Q29uZmlndXJhdGlvbiwgTWFuaWZlc3RBY3Rpb24gfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgQWN0aW9uVHlwZSwgVGVtcGxhdGVUeXBlLCBWYXJpYW50TWFuYWdlbWVudFR5cGUsIFZpc3VhbGl6YXRpb25UeXBlIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIE1hbmlmZXN0V3JhcHBlciBmcm9tIFwiLi4vLi4vTWFuaWZlc3RXcmFwcGVyXCI7XG5pbXBvcnQgeyBBZ2dyZWdhdGlvbkhlbHBlciB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0FnZ3JlZ2F0aW9uXCI7XG5pbXBvcnQgeyBnZXRDaGFydElELCBnZXRGaWx0ZXJCYXJJRCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgeyBnZXRJbnNpZ2h0c0VuYWJsZW1lbnQsIGdldEluc2lnaHRzVmlzaWJpbGl0eSB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0luc2lnaHRzSGVscGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBBY3R1YWxWaXN1YWxpemF0aW9uQW5ub3RhdGlvbnMgfSBmcm9tIFwiLi9EYXRhVmlzdWFsaXphdGlvblwiO1xuXG5leHBvcnQgdHlwZSBDaGFydEFwcGx5U3VwcG9ydGVkID0ge1xuXHQkVHlwZTogc3RyaW5nO1xuXHRlbmFibGVTZWFyY2g/OiBib29sZWFuO1xuXHRBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzPzogKEV4cGFuZFBhdGhUeXBlPFByb3BlcnR5UGF0aD4gJiB7IFByb3BlcnR5OiBFeHBhbmRQYXRoVHlwZTxQcm9wZXJ0eVBhdGg+IH0pW107XG5cdEdyb3VwYWJsZVByb3BlcnRpZXM/OiAoRXhwYW5kUGF0aFR5cGU8UHJvcGVydHlQYXRoPiAmIHsgUHJvcGVydHk6IEV4cGFuZFBhdGhUeXBlPFByb3BlcnR5UGF0aD4gfSlbXTtcbn07XG5leHBvcnQgdHlwZSBDaGFydFRlbXBsYXRlVmlzdWFsaXphdGlvbiA9IHtcblx0dHlwZTogVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQ7XG5cdGlkOiBzdHJpbmc7XG5cdGFwaUlkOiBzdHJpbmc7XG5cdGVudGl0eU5hbWU6IHN0cmluZztcblx0Y29sbGVjdGlvbjogc3RyaW5nO1xuXHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRhcHBseVN1cHBvcnRlZDogQ2hhcnRBcHBseVN1cHBvcnRlZDtcblx0aXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0PzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYgQ2hhcnRWaXN1YWxpemF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIENoYXJ0VmlzdWFsaXphdGlvbiA9IENoYXJ0VGVtcGxhdGVWaXN1YWxpemF0aW9uICYge1xuXHRlbnRpdHlOYW1lOiBzdHJpbmc7XG5cdHBlcnNvbmFsaXphdGlvbj86IHN0cmluZyB8IGJvb2xlYW47XG5cdG5hdmlnYXRpb25QYXRoOiBzdHJpbmc7XG5cdGZpbHRlcklkPzogc3RyaW5nO1xuXHR2aXpQcm9wZXJ0aWVzOiBzdHJpbmc7XG5cdGFjdGlvbnM6IEJhc2VBY3Rpb25bXTtcblx0Y29tbWFuZEFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj47XG5cdHRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGF1dG9CaW5kT25Jbml0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHRvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQ6IHN0cmluZztcblx0dmlzaWJsZTogc3RyaW5nO1xuXHRjdXN0b21BZ2c6IG9iamVjdDtcblx0dHJhbnNBZ2c6IG9iamVjdDtcblx0bXVsdGlWaWV3cz86IGJvb2xlYW47XG5cdHZhcmlhbnRNYW5hZ2VtZW50OiBWYXJpYW50TWFuYWdlbWVudFR5cGU7XG5cdHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRQYXRoPzogc3RyaW5nO1xuXHRpc0luc2lnaHRzRW5hYmxlZD86IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblx0aXNJbnNpZ2h0c1Zpc2libGU/OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdGhlYWRlcj86IHN0cmluZztcblx0aGVhZGVyVmlzaWJsZT86IGJvb2xlYW47XG5cdHNlbGVjdGlvbk1vZGU/OiBzdHJpbmc7XG5cdGNoYXJ0RGltZW5zaW9uS2V5QW5kUm9sZT86IG9iamVjdDtcblx0Y2hhcnRNZWFzdXJlS2V5QW5kUm9sZT86IG9iamVjdDtcblx0Y29udGFpbnNBZ2dyZWdhdGVkUHJvcGVydHk/OiBib29sZWFuO1xuXHRjb250YWluc1RyYW5zQWdnSW5NZWFzdXJlcz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBDaGFydFAxM25UeXBlID0gc3RyaW5nIHwgYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBNZXRob2QgdG8gcmV0cmlldmUgYWxsIGNoYXJ0IGFjdGlvbnMgZnJvbSBhbm5vdGF0aW9ucy5cbiAqIEBwYXJhbSBjaGFydEFubm90YXRpb25cbiAqIEBwYXJhbSB2aXN1YWxpemF0aW9uUGF0aFxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBjaGFydCBhY3Rpb25zIGZyb20gdGhlIGFubm90YXRpb25cbiAqL1xuZnVuY3Rpb24gZ2V0Q2hhcnRBY3Rpb25zRnJvbUFubm90YXRpb25zKFxuXHRjaGFydEFubm90YXRpb246IENoYXJ0LFxuXHR2aXN1YWxpemF0aW9uUGF0aDogc3RyaW5nLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IEFycmF5PEFubm90YXRpb25BY3Rpb24gfCBBbm5vdGF0aW9uQWN0aW9uQWN0aW9uR3JvdXA+IHtcblx0Y29uc3QgY2hhcnRBY3Rpb25zOiBBcnJheTxBbm5vdGF0aW9uQWN0aW9uIHwgQW5ub3RhdGlvbkFjdGlvbkFjdGlvbkdyb3VwPiA9IFtdO1xuXHRpZiAoY2hhcnRBbm5vdGF0aW9uPy5BY3Rpb25zKSB7XG5cdFx0Y2hhcnRBbm5vdGF0aW9uLkFjdGlvbnMuZm9yRWFjaCgoZGF0YUZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YUZpZWxkRm9yQWN0aW9uR3JvdXBUeXBlcykgPT4ge1xuXHRcdFx0Y29uc3Qga2V5ID0gS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpO1xuXHRcdFx0aWYgKGlzRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3QoZGF0YUZpZWxkKSAmJiAhZGF0YUZpZWxkLklubGluZSAmJiAhZGF0YUZpZWxkLkRldGVybWluaW5nKSB7XG5cdFx0XHRcdHN3aXRjaCAoZGF0YUZpZWxkLiRUeXBlKSB7XG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb246XG5cdFx0XHRcdFx0XHRpZiAoZGF0YUZpZWxkLkFjdGlvblRhcmdldCAmJiAhZGF0YUZpZWxkLkFjdGlvblRhcmdldC5pc0JvdW5kKSB7XG5cdFx0XHRcdFx0XHRcdGNoYXJ0QWN0aW9ucy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbixcblx0XHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGRhdGFGaWVsZC5mdWxseVF1YWxpZmllZE5hbWUpLFxuXHRcdFx0XHRcdFx0XHRcdGtleSxcblx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlOiBnZXRDb21waWxlRXhwcmVzc2lvbkZvckFjdGlvbihkYXRhRmllbGQsIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0XHRcdFx0XHRcdGlzQUlPcGVyYXRpb246IGlzQWN0aW9uQUlPcGVyYXRpb24oZGF0YUZpZWxkKSA9PT0gdHJ1ZSB8fCB1bmRlZmluZWRcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uOlxuXHRcdFx0XHRcdFx0Y2hhcnRBY3Rpb25zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbixcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChkYXRhRmllbGQuZnVsbHlRdWFsaWZpZWROYW1lKSxcblx0XHRcdFx0XHRcdFx0a2V5LFxuXHRcdFx0XHRcdFx0XHR2aXNpYmxlOiBnZXRDb21waWxlRXhwcmVzc2lvbkZvckFjdGlvbihkYXRhRmllbGQsIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0XHRcdFx0XHRpc05hdmlnYWJsZTogdHJ1ZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaXNBbm5vdGF0aW9uQWN0aW9uR3JvdXAoZGF0YUZpZWxkKSkge1xuXHRcdFx0XHRjaGFydEFjdGlvbnMucHVzaCh7XG5cdFx0XHRcdFx0dHlwZTogQWN0aW9uVHlwZS5NZW51LFxuXHRcdFx0XHRcdHRleHQ6IGRhdGFGaWVsZC5MYWJlbD8udG9TdHJpbmcoKSxcblx0XHRcdFx0XHR2aXNpYmxlOiBnZXRDb21waWxlRXhwcmVzc2lvbkZvckFjdGlvbihkYXRhRmllbGQsIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0XHRcdG1lbnU6IGRhdGFGaWVsZC5BY3Rpb25zLm1hcCgoYWN0aW9uKSA9PlxuXHRcdFx0XHRcdFx0Z2V0RGF0YUZpZWxkQW5ub3RhdGlvbkFjdGlvbihhY3Rpb24gYXMgRGF0YUZpZWxkRm9yQWN0aW9uVHlwZXMsIGNvbnZlcnRlckNvbnRleHQpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZGF0YUZpZWxkKSxcblx0XHRcdFx0XHRpc0FJT3BlcmF0aW9uOiBpc01lbnVBSU9wZXJhdGlvbihkYXRhRmllbGQuQWN0aW9ucykgPT09IHRydWUgfHwgdW5kZWZpbmVkXG5cdFx0XHRcdH0gYXMgQW5ub3RhdGlvbkFjdGlvbkFjdGlvbkdyb3VwKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gY2hhcnRBY3Rpb25zO1xufVxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGRhdGFGaWVsZCBpcyBhIERhdGFGaWVsZEZvckFjdGlvbkdyb3VwLlxuICogQHBhcmFtIGRhdGFGaWVsZCBUaGUgZGF0YUZpZWxkIHRvIGNoZWNrLlxuICogQHJldHVybnMgVGhlIGRhdGFGaWVsZCBpZiBpdCBtYXRjaGVzIERhdGFGaWVsZEZvckFjdGlvbkdyb3VwLlxuICovXG5mdW5jdGlvbiBpc0Fubm90YXRpb25BY3Rpb25Hcm91cChkYXRhRmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMpOiBkYXRhRmllbGQgaXMgRGF0YUZpZWxkRm9yQWN0aW9uR3JvdXAge1xuXHRyZXR1cm4gZGF0YUZpZWxkLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb25Hcm91cDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuZCByZXR1cm5zIERhdGFGaWVsZEZvckFjdGlvbiBmb3IgbWVudSBvZiBEYXRhRmllbGRGb3JBY3Rpb25Hcm91cC5cbiAqIEBwYXJhbSBkYXRhRmllbGQgVGhlIGRhdGFmaWVsZCB0byBnZXQgdGhlIGFubm90YXRpb24gYWN0aW9uIGZyb20uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHQuXG4gKiBAcmV0dXJucyBBbiBhbm5vdGF0aW9uIGFjdGlvbi5cbiAqL1xuZnVuY3Rpb24gZ2V0RGF0YUZpZWxkQW5ub3RhdGlvbkFjdGlvbihcblx0ZGF0YUZpZWxkOiBEYXRhRmllbGRGb3JBY3Rpb25UeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBBbm5vdGF0aW9uQWN0aW9uIHtcblx0cmV0dXJuIHtcblx0XHR0eXBlOiBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbixcblx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGRhdGFGaWVsZC5mdWxseVF1YWxpZmllZE5hbWUpLFxuXHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpLFxuXHRcdHZpc2libGU6IGdldENvbXBpbGVFeHByZXNzaW9uRm9yQWN0aW9uKGRhdGFGaWVsZCwgY29udmVydGVyQ29udGV4dClcblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoYXJ0QWN0aW9ucyhcblx0Y2hhcnRBbm5vdGF0aW9uOiBDaGFydCxcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBDb21iaW5lZEFjdGlvbiB7XG5cdGNvbnN0IGFBbm5vdGF0aW9uQWN0aW9ucyA9IGdldENoYXJ0QWN0aW9uc0Zyb21Bbm5vdGF0aW9ucyhjaGFydEFubm90YXRpb24sIHZpc3VhbGl6YXRpb25QYXRoLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0Y29uc3QgbWFuaWZlc3RBY3Rpb25zID0gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb248Q2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24+KHZpc3VhbGl6YXRpb25QYXRoKS5hY3Rpb25zIGFzIFJlY29yZDxcblx0XHRcdHN0cmluZyxcblx0XHRcdE1hbmlmZXN0QWN0aW9uXG5cdFx0Pixcblx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdGFBbm5vdGF0aW9uQWN0aW9uc1xuXHQpO1xuXHRjb25zdCBhY3Rpb25PdmVyd3JpdGVDb25maWc6IE92ZXJyaWRlVHlwZUFjdGlvbiA9IHtcblx0XHRlbmFibGVkOiBPdmVycmlkZVR5cGUub3ZlcndyaXRlLFxuXHRcdGVuYWJsZU9uU2VsZWN0OiBPdmVycmlkZVR5cGUub3ZlcndyaXRlLFxuXHRcdHZpc2libGU6IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGUsXG5cdFx0Y29tbWFuZDogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZSxcblx0XHRwb3NpdGlvbjogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZVxuXHR9O1xuXHRjb25zdCBjaGFydEFjdGlvbnMgPSBpbnNlcnRDdXN0b21FbGVtZW50czxCYXNlQWN0aW9uPihhQW5ub3RhdGlvbkFjdGlvbnMsIG1hbmlmZXN0QWN0aW9ucy5hY3Rpb25zLCBhY3Rpb25PdmVyd3JpdGVDb25maWcpO1xuXHRyZXR1cm4ge1xuXHRcdGFjdGlvbnM6IGNoYXJ0QWN0aW9ucyxcblx0XHRjb21tYW5kQWN0aW9uczogbWFuaWZlc3RBY3Rpb25zLmNvbW1hbmRBY3Rpb25zXG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQMTNuTW9kZShcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBzdHJpbmcgfCBib29sZWFuIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgbWFuaWZlc3RXcmFwcGVyOiBNYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCBjaGFydE1hbmlmZXN0U2V0dGluZ3M6IENoYXJ0TWFuaWZlc3RDb25maWd1cmF0aW9uID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdENvbnRyb2xDb25maWd1cmF0aW9uKHZpc3VhbGl6YXRpb25QYXRoKTtcblx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnQ6IFZhcmlhbnRNYW5hZ2VtZW50VHlwZSA9IG1hbmlmZXN0V3JhcHBlci5nZXRWYXJpYW50TWFuYWdlbWVudCgpO1xuXHRjb25zdCBhUGVyc29uYWxpemF0aW9uOiBzdHJpbmdbXSA9IFtdO1xuXHQvLyBQZXJzb25hbGl6YXRpb24gY29uZmlndXJlZCBpbiBtYW5pZmVzdC5cblx0Y29uc3QgcGVyc29uYWxpemF0aW9uID0gY2hhcnRNYW5pZmVzdFNldHRpbmdzPy5jaGFydFNldHRpbmdzPy5wZXJzb25hbGl6YXRpb247XG5cdGNvbnN0IGlzQ29udHJvbFZhcmlhbnQgPSB2YXJpYW50TWFuYWdlbWVudCA9PT0gVmFyaWFudE1hbmFnZW1lbnRUeXBlLkNvbnRyb2wgPyB0cnVlIDogZmFsc2U7XG5cdC8vIGlmIHBlcnNvbmFsaXphdGlvbiBpcyBzZXQgdG8gZmFsc2UgZG8gbm90IHNob3cgYW55IG9wdGlvblxuXHRpZiAoKHBlcnNvbmFsaXphdGlvbiAhPT0gdW5kZWZpbmVkICYmICFwZXJzb25hbGl6YXRpb24pIHx8IHBlcnNvbmFsaXphdGlvbiA9PSBcImZhbHNlXCIpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0aWYgKHR5cGVvZiBwZXJzb25hbGl6YXRpb24gPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBTcGVjaWZpYyBwZXJzb25hbGl6YXRpb24gb3B0aW9ucyBlbmFibGVkIGluIG1hbmlmZXN0LiBVc2UgdGhlbSBhcyBpcy5cblx0XHRpZiAocGVyc29uYWxpemF0aW9uLnR5cGUpIHtcblx0XHRcdGFQZXJzb25hbGl6YXRpb24ucHVzaChcIlR5cGVcIik7XG5cdFx0fVxuXHRcdGlmIChwZXJzb25hbGl6YXRpb24uaXRlbSkge1xuXHRcdFx0YVBlcnNvbmFsaXphdGlvbi5wdXNoKFwiSXRlbVwiKTtcblx0XHR9XG5cdFx0aWYgKHBlcnNvbmFsaXphdGlvbi5zb3J0KSB7XG5cdFx0XHRhUGVyc29uYWxpemF0aW9uLnB1c2goXCJTb3J0XCIpO1xuXHRcdH1cblx0XHRpZiAocGVyc29uYWxpemF0aW9uLmZpbHRlcikge1xuXHRcdFx0YVBlcnNvbmFsaXphdGlvbi5wdXNoKFwiRmlsdGVyXCIpO1xuXHRcdH1cblx0XHRyZXR1cm4gYVBlcnNvbmFsaXphdGlvbi5qb2luKFwiLFwiKTtcblx0fSBlbHNlIGlmIChpc0NvbnRyb2xWYXJpYW50IHx8ICEhcGVyc29uYWxpemF0aW9uKSB7XG5cdFx0Ly8gbWFuaWZlc3QgaGFzIHBlcnNvbmFsaXphdGlvbiBjb25maWd1cmVkLCBjaGVjayBpZiBpdCdzIHRydWVcblx0XHQvLyBpZiBtYW5pZmVzdCBkb2Vzbid0IGhhdmUgcGVyc29uYWxpemF0aW9uLCBjaGVjayBmb3IgdmFyaWFudCBtYW5hZ2VtZW50IGlzIHNldCB0byBjb250cm9sXG5cdFx0cmV0dXJuIFwiU29ydCxUeXBlLEl0ZW0sRmlsdGVyXCI7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gaWYgbWFuaWZlc3QgZG9lc24ndCBoYXZlIHBlcnNvbmFsaXphdGlvbiwgc2hvdyBkZWZhdWx0IG9wdGlvbnMgd2l0aG91dCBmaWx0ZXJcblx0XHRyZXR1cm4gXCJTb3J0LFR5cGUsSXRlbVwiO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWFkZXJJbmZvKFxuXHR2aXN1YWxpemF0aW9uUGF0aDogc3RyaW5nLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IHsgaGVhZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7IGhlYWRlclZpc2libGU6IGJvb2xlYW4gfCB1bmRlZmluZWQgfSB7XG5cdGNvbnN0IGNoYXJ0TWFuaWZlc3RTZXR0aW5nczogQ2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24odmlzdWFsaXphdGlvblBhdGgpO1xuXHRyZXR1cm4ge1xuXHRcdGhlYWRlcjogY2hhcnRNYW5pZmVzdFNldHRpbmdzLmNoYXJ0U2V0dGluZ3M/LmhlYWRlcixcblx0XHRoZWFkZXJWaXNpYmxlOiBjaGFydE1hbmlmZXN0U2V0dGluZ3M/LmNoYXJ0U2V0dGluZ3M/LmhlYWRlclZpc2libGVcblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdGlvbk1vZGUoXG5cdHZpc3VhbGl6YXRpb25QYXRoOiBzdHJpbmcsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogXCJNdWx0aXBsZVwiIHwgXCJTaW5nbGVcIiB8IFwiTm9uZVwiIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgY2hhcnRNYW5pZmVzdFNldHRpbmdzOiBDaGFydE1hbmlmZXN0Q29uZmlndXJhdGlvbiA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RDb250cm9sQ29uZmlndXJhdGlvbih2aXN1YWxpemF0aW9uUGF0aCk7XG5cdHJldHVybiBjaGFydE1hbmlmZXN0U2V0dGluZ3MuY2hhcnRTZXR0aW5ncz8uc2VsZWN0aW9uTW9kZTtcbn1cbmV4cG9ydCB0eXBlIENoYXJ0Q3VzdG9tQWdncmVnYXRlID0ge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGxhYmVsOiBzdHJpbmc7XG5cdHNvcnRhYmxlOiBib29sZWFuO1xuXHRzb3J0T3JkZXI6IFwiYm90aFwiO1xuXHRjb250ZXh0RGVmaW5pbmdQcm9wZXJ0eTogc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBUcmFuc0FnZyA9IHtcblx0bmFtZTogc3RyaW5nO1xuXHRwcm9wZXJ0eVBhdGg6IHN0cmluZztcblx0YWdncmVnYXRpb25NZXRob2Q6IEFnZ3JlZ2F0aW9uTWV0aG9kO1xuXHRsYWJlbDogc3RyaW5nO1xuXHRzb3J0YWJsZTogYm9vbGVhbjtcblx0c29ydE9yZGVyOiBcImJvdGhcIjtcblx0Y3VzdG9tOiBib29sZWFuO1xufTtcbmZ1bmN0aW9uIGdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXNPYmplY3QoYWdnUHJvcDogQWdncmVnYXRhYmxlUHJvcGVydHlUeXBlIHwgUHJvcGVydHkpOiB7IFByb3BlcnR5OiB7ICRQcm9wZXJ0eVBhdGg6IHN0cmluZyB9IH0ge1xuXHRsZXQgb2JqO1xuXHRpZiAoKGFnZ1Byb3AgYXMgQWdncmVnYXRhYmxlUHJvcGVydHlUeXBlKT8uUHJvcGVydHkpIHtcblx0XHRvYmogPSB7XG5cdFx0XHRQcm9wZXJ0eToge1xuXHRcdFx0XHQkUHJvcGVydHlQYXRoOiAoYWdnUHJvcCBhcyBBZ2dyZWdhdGFibGVQcm9wZXJ0eVR5cGUpPy5Qcm9wZXJ0eT8udmFsdWVcblx0XHRcdH1cblx0XHR9O1xuXHR9IGVsc2Uge1xuXHRcdG9iaiA9IHtcblx0XHRcdFByb3BlcnR5OiB7XG5cdFx0XHRcdCRQcm9wZXJ0eVBhdGg6IChhZ2dQcm9wIGFzIFByb3BlcnR5KT8ubmFtZVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cblx0cmV0dXJuIG9iajtcbn1cbi8qKlxuICogQ3JlYXRlIHRoZSBDaGFydFZpc3VhbGl6YXRpb24gY29uZmlndXJhdGlvbiB0aGF0IHdpbGwgYmUgdXNlZCB0byBkaXNwbGF5IGEgY2hhcnQgdXNpbmcgdGhlIENoYXJ0IGJ1aWxkaW5nIGJsb2NrLlxuICogQHBhcmFtIGNoYXJ0QW5ub3RhdGlvbiBUaGUgdGFyZ2V0ZWQgY2hhcnQgYW5ub3RhdGlvblxuICogQHBhcmFtIHZpc3VhbGl6YXRpb25QYXRoIFRoZSBwYXRoIG9mIHRoZSB2aXN1YWxpemF0aW9uIGFubm90YXRpb25cbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIGRvTm90Q2hlY2tBcHBseVN1cHBvcnRlZCBGbGFnIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgQXBwbHlTdXBwb3J0ZWQgbmVlZHMgdG8gYmUgY2hlY2tlZCBvciBub3RcbiAqIEBwYXJhbSBzZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50UGF0aFxuICogQHJldHVybnMgVGhlIGNoYXJ0IHZpc3VhbGl6YXRpb24gYmFzZWQgb24gdGhlIGFubm90YXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNoYXJ0VmlzdWFsaXphdGlvbihcblx0Y2hhcnRBbm5vdGF0aW9uOiBDaGFydCxcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+LFxuXHRkb05vdENoZWNrQXBwbHlTdXBwb3J0ZWQ/OiBib29sZWFuLFxuXHRzZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50UGF0aD86IHN0cmluZ1xuKTogQ2hhcnRWaXN1YWxpemF0aW9uIHtcblx0Y29uc3QgYWdncmVnYXRpb25IZWxwZXIgPSBuZXcgQWdncmVnYXRpb25IZWxwZXIoY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCksIGNvbnZlcnRlckNvbnRleHQsIHRydWUpOyAvLyBwYXNzaW5nIHRoZSBsYXN0IHBhcmFtZXRlciBhcyB0cnVlIHRvIGNvbnNpZGVyIHRoZSBvbGQgYW5ub3RhdGlvbnMgaS5lLiBBZ2dyZWdhdGlvbi5BZ2dyZWdhdGFibGUgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaW4gY2FzZSBvZiBjaGFydFxuXHRpZiAoIWRvTm90Q2hlY2tBcHBseVN1cHBvcnRlZCAmJiAhYWdncmVnYXRpb25IZWxwZXIuaXNBbmFseXRpY3NTdXBwb3J0ZWQoKSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIkFwcGx5U3VwcG9ydGVkIGlzIG5vdCBhZGRlZCB0byB0aGUgYW5ub3RhdGlvbnNcIik7XG5cdH1cblx0Y29uc3QgYVRyYW5zQWdncmVnYXRpb25zID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0VHJhbnNBZ2dyZWdhdGlvbnMoKTtcblx0Y29uc3QgYUN1c3RvbUFnZ3JlZ2F0ZXMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRDdXN0b21BZ2dyZWdhdGVEZWZpbml0aW9ucygpO1xuXHRjb25zdCBwYWdlTWFuaWZlc3RTZXR0aW5nczogTWFuaWZlc3RXcmFwcGVyID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKTtcblx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnQ6IFZhcmlhbnRNYW5hZ2VtZW50VHlwZSA9IHBhZ2VNYW5pZmVzdFNldHRpbmdzLmdldFZhcmlhbnRNYW5hZ2VtZW50KCk7XG5cdGNvbnN0IHAxM25Nb2RlOiBDaGFydFAxM25UeXBlID0gZ2V0UDEzbk1vZGUodmlzdWFsaXphdGlvblBhdGgsIGNvbnZlcnRlckNvbnRleHQpO1xuXHRpZiAocDEzbk1vZGUgPT09IHVuZGVmaW5lZCAmJiB2YXJpYW50TWFuYWdlbWVudCA9PT0gXCJDb250cm9sXCIpIHtcblx0XHRMb2cud2FybmluZyhcIlZhcmlhbnQgTWFuYWdlbWVudCBjYW5ub3QgYmUgZW5hYmxlZCB3aGVuIHBlcnNvbmFsaXphdGlvbiBpcyBkaXNhYmxlZFwiKTtcblx0fVxuXHRjb25zdCBtQ3VzdG9tQWdncmVnYXRlczogUmVjb3JkPHN0cmluZywgb2JqZWN0PiA9IHt9O1xuXHRpZiAoYUN1c3RvbUFnZ3JlZ2F0ZXMpIHtcblx0XHRjb25zdCBlbnRpdHlUeXBlID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0RW50aXR5VHlwZSgpO1xuXHRcdGZvciAoY29uc3QgY3VzdG9tQWdncmVnYXRlIG9mIGFDdXN0b21BZ2dyZWdhdGVzKSB7XG5cdFx0XHRjb25zdCBhQ29udGV4dERlZmluaW5nUHJvcGVydGllcyA9IGN1c3RvbUFnZ3JlZ2F0ZT8uYW5ub3RhdGlvbnM/LkFnZ3JlZ2F0aW9uPy5Db250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzO1xuXHRcdFx0Y29uc3QgcXVhbGlmaWVyID0gY3VzdG9tQWdncmVnYXRlPy5xdWFsaWZpZXI7XG5cdFx0XHRjb25zdCByZWxhdGVkQ3VzdG9tQWdncmVnYXRlUHJvcGVydHkgPSBxdWFsaWZpZXIgJiYgZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLmZpbmQoKHByb3BlcnR5KSA9PiBwcm9wZXJ0eS5uYW1lID09PSBxdWFsaWZpZXIpO1xuXHRcdFx0Y29uc3QgbGFiZWwgPSByZWxhdGVkQ3VzdG9tQWdncmVnYXRlUHJvcGVydHkgJiYgcmVsYXRlZEN1c3RvbUFnZ3JlZ2F0ZVByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbD8udG9TdHJpbmcoKTtcblx0XHRcdG1DdXN0b21BZ2dyZWdhdGVzW3F1YWxpZmllcl0gPSB7XG5cdFx0XHRcdG5hbWU6IHF1YWxpZmllcixcblx0XHRcdFx0bGFiZWw6IGxhYmVsIHx8IGBDdXN0b20gQWdncmVnYXRlICgke3F1YWxpZmllcn0pYCxcblx0XHRcdFx0c29ydGFibGU6IHRydWUsXG5cdFx0XHRcdHNvcnRPcmRlcjogXCJib3RoXCIsXG5cdFx0XHRcdGNvbnRleHREZWZpbmluZ1Byb3BlcnR5OiBhQ29udGV4dERlZmluaW5nUHJvcGVydGllc1xuXHRcdFx0XHRcdD8gYUNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXMubWFwKChvQ3R4RGVmUHJvcGVydHkpID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG9DdHhEZWZQcm9wZXJ0eS52YWx1ZTtcblx0XHRcdFx0XHQgIH0pXG5cdFx0XHRcdFx0OiBbXVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBtVHJhbnNBZ2dyZWdhdGlvbnM6IFJlY29yZDxzdHJpbmcsIFRyYW5zQWdnPiA9IHt9O1xuXHRjb25zdCBvUmVzb3VyY2VCdW5kbGVDb3JlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb3JlXCIpITtcblx0aWYgKGFUcmFuc0FnZ3JlZ2F0aW9ucykge1xuXHRcdGZvciAoY29uc3QgZWxlbWVudCBvZiBhVHJhbnNBZ2dyZWdhdGlvbnMpIHtcblx0XHRcdG1UcmFuc0FnZ3JlZ2F0aW9uc1tlbGVtZW50Lk5hbWUgYXMgc3RyaW5nXSA9IHtcblx0XHRcdFx0bmFtZTogZWxlbWVudC5OYW1lIGFzIHN0cmluZyxcblx0XHRcdFx0cHJvcGVydHlQYXRoOiBlbGVtZW50LkFnZ3JlZ2F0YWJsZVByb3BlcnR5LnZhbHVlLFxuXHRcdFx0XHRhZ2dyZWdhdGlvbk1ldGhvZDogZWxlbWVudC5BZ2dyZWdhdGlvbk1ldGhvZCxcblx0XHRcdFx0bGFiZWw6IGVsZW1lbnQ/LmFubm90YXRpb25zPy5Db21tb24/LkxhYmVsXG5cdFx0XHRcdFx0PyBlbGVtZW50Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbD8udG9TdHJpbmcoKVxuXHRcdFx0XHRcdDogYCR7b1Jlc291cmNlQnVuZGxlQ29yZS5nZXRUZXh0KFwiQUdHUkVHQVRBQkxFX1BST1BFUlRZXCIpfSAoJHtlbGVtZW50Lk5hbWV9KWAsXG5cdFx0XHRcdHNvcnRhYmxlOiB0cnVlLFxuXHRcdFx0XHRzb3J0T3JkZXI6IFwiYm90aFwiLFxuXHRcdFx0XHRjdXN0b206IGZhbHNlXG5cdFx0XHR9O1xuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGFBZ2dQcm9wcyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMoKTtcblx0Y29uc3QgYUdycFByb3BzID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0R3JvdXBhYmxlUHJvcGVydGllcygpO1xuXHRjb25zdCBtQXBwbHlTdXBwb3J0ZWQgPSB7fSBhcyBDaGFydEFwcGx5U3VwcG9ydGVkO1xuXHRtQXBwbHlTdXBwb3J0ZWQuJFR5cGUgPSBBZ2dyZWdhdGlvbkFubm90YXRpb25UeXBlcy5BcHBseVN1cHBvcnRlZFR5cGU7XG5cdG1BcHBseVN1cHBvcnRlZC5BZ2dyZWdhdGFibGVQcm9wZXJ0aWVzID0gW107XG5cdG1BcHBseVN1cHBvcnRlZC5Hcm91cGFibGVQcm9wZXJ0aWVzID0gW107XG5cblx0aWYgKGFBZ2dQcm9wcykge1xuXHRcdG1BcHBseVN1cHBvcnRlZC5BZ2dyZWdhdGFibGVQcm9wZXJ0aWVzID0gYUFnZ1Byb3BzLm1hcCgocHJvcCkgPT5cblx0XHRcdGdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXNPYmplY3QocHJvcClcblx0XHQpIGFzIChFeHBhbmRQYXRoVHlwZTxQcm9wZXJ0eVBhdGg+ICYgeyBQcm9wZXJ0eTogRXhwYW5kUGF0aFR5cGU8UHJvcGVydHlQYXRoPiB9KVtdO1xuXHR9XG5cblx0aWYgKGFHcnBQcm9wcykge1xuXHRcdG1BcHBseVN1cHBvcnRlZC5Hcm91cGFibGVQcm9wZXJ0aWVzID0gYUdycFByb3BzLm1hcCgocHJvcCkgPT4gKHtcblx0XHRcdFtcIiRQcm9wZXJ0eVBhdGhcIl06IHByb3AudmFsdWVcblx0XHR9KSkgYXMgKEV4cGFuZFBhdGhUeXBlPFByb3BlcnR5UGF0aD4gJiB7IFByb3BlcnR5OiBFeHBhbmRQYXRoVHlwZTxQcm9wZXJ0eVBhdGg+IH0pW107XG5cdH1cblxuXHRjb25zdCBjaGFydEFjdGlvbnMgPSBnZXRDaGFydEFjdGlvbnMoY2hhcnRBbm5vdGF0aW9uLCB2aXN1YWxpemF0aW9uUGF0aCwgY29udmVydGVyQ29udGV4dCk7XG5cdGxldCBbbmF2aWdhdGlvblByb3BlcnR5UGF0aCAvKiwgYW5ub3RhdGlvblBhdGgqL10gPSB2aXN1YWxpemF0aW9uUGF0aC5zcGxpdChcIkBcIik7XG5cdGlmIChuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxhc3RJbmRleE9mKFwiL1wiKSA9PT0gbmF2aWdhdGlvblByb3BlcnR5UGF0aC5sZW5ndGggLSAxKSB7XG5cdFx0Ly8gRHJvcCB0cmFpbGluZyBzbGFzaFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGggPSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLnN1YnN0cmluZygwLCBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCAtIDEpO1xuXHR9XG5cdGNvbnN0IHRpdGxlID0gY2hhcnRBbm5vdGF0aW9uLlRpdGxlPy50b1N0cmluZygpIHx8IFwiXCI7IC8vIHJlYWQgdGl0bGUgZnJvbSBjaGFydCBhbm5vdGF0aW9uXG5cdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKTtcblx0Y29uc3QgaXNFbnRpdHlTZXQ6IGJvb2xlYW4gPSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCA9PT0gMDtcblx0Y29uc3QgZW50aXR5TmFtZTogc3RyaW5nID0gZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQgPyBkYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVNldC5uYW1lIDogZGF0YU1vZGVsUGF0aC5zdGFydGluZ0VudGl0eVNldC5uYW1lO1xuXHRjb25zdCBzRmlsdGVyYmFySWQgPSBpc0VudGl0eVNldCA/IGdldEZpbHRlckJhcklEKGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udGV4dFBhdGgoKSkgOiB1bmRlZmluZWQ7XG5cdGNvbnN0IG9WaXpQcm9wZXJ0aWVzID0ge1xuXHRcdHBsb3RBcmVhOiB7XG5cdFx0XHR3aW5kb3c6IHtcblx0XHRcdFx0c3RhcnQ6IFwiZmlyc3REYXRhUG9pbnRcIixcblx0XHRcdFx0ZW5kOiBcImxhc3REYXRhUG9pbnRcIlxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0bGVnZW5kR3JvdXA6IHtcblx0XHRcdGxheW91dDoge1xuXHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIlxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0dG9vbHRpcDogeyBmb3JtYXRTdHJpbmc6IFwiXCIgfVxuXHR9O1xuXHRsZXQgYXV0b0JpbmRPbkluaXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cdGlmIChjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuT2JqZWN0UGFnZSkge1xuXHRcdGF1dG9CaW5kT25Jbml0ID0gdHJ1ZTtcblx0fSBlbHNlIGlmIChcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuTGlzdFJlcG9ydCB8fFxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5BbmFseXRpY2FsTGlzdFBhZ2Vcblx0KSB7XG5cdFx0YXV0b0JpbmRPbkluaXQgPSBmYWxzZTtcblx0fVxuXHRjb25zdCBoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zID1cblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMoKSB8fFxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5BbmFseXRpY2FsTGlzdFBhZ2U7XG5cdGNvbnN0IG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZCA9IGhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMgPyBcIi5oYW5kbGVycy5vblNlZ21lbnRlZEJ1dHRvblByZXNzZWRcIiA6IFwiXCI7XG5cdGNvbnN0IHZpc2libGUgPSBoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zID8gXCJ7PSAke3BhZ2VJbnRlcm5hbD5hbHBDb250ZW50Vmlld30gIT09ICdUYWJsZSd9XCIgOiBcInRydWVcIjtcblx0Y29uc3QgYWxsb3dlZFRyYW5zZm9ybWF0aW9ucyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMoKTtcblx0bUFwcGx5U3VwcG9ydGVkLmVuYWJsZVNlYXJjaCA9IGFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMgPyBhbGxvd2VkVHJhbnNmb3JtYXRpb25zLmluY2x1ZGVzKFwic2VhcmNoXCIpIDogdHJ1ZTtcblx0bGV0IHF1YWxpZmllciA9IFwiXCI7XG5cdGlmIChjaGFydEFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KFwiI1wiKS5sZW5ndGggPiAxKSB7XG5cdFx0cXVhbGlmaWVyID0gY2hhcnRBbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdChcIiNcIilbMV07XG5cdH1cblx0Y29uc3QgaXNJbnNpZ2h0c1Zpc2libGUgPSBnZXRJbnNpZ2h0c1Zpc2liaWxpdHkoXCJBbmFseXRpY2FsXCIsIGNvbnZlcnRlckNvbnRleHQsIHZpc3VhbGl6YXRpb25QYXRoKTtcblx0Y29uc3QgaXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRQYXJhbWV0ZXJFbnRpdHlUeXBlKCkgPyB0cnVlIDogZmFsc2U7XG5cdGNvbnN0IGlzSW5zaWdodHNFbmFibGVkID0gYW5kKGdldEluc2lnaHRzRW5hYmxlbWVudCgpLCBpc0luc2lnaHRzVmlzaWJsZSk7XG5cdGNvbnN0IHsgaGVhZGVyLCBoZWFkZXJWaXNpYmxlIH0gPSBnZXRIZWFkZXJJbmZvKHZpc3VhbGl6YXRpb25QYXRoLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0Y29uc3Qgc2VsZWN0aW9uTW9kZSA9IGdldFNlbGVjdGlvbk1vZGUodmlzdWFsaXphdGlvblBhdGgsIGNvbnZlcnRlckNvbnRleHQpO1xuXHRjb25zdCBjaGFydERpbWVuc2lvbktleUFuZFJvbGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5bXSA9IFtdO1xuXHRjaGFydEFubm90YXRpb24/LkRpbWVuc2lvbkF0dHJpYnV0ZXM/LmZvckVhY2goKGRpbWVuc2lvbkF0dHJpYnV0ZSkgPT4ge1xuXHRcdGNvbnN0IG9iajogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXHRcdG9ialtkaW1lbnNpb25BdHRyaWJ1dGU/LkRpbWVuc2lvbj8udmFsdWUgYXMgc3RyaW5nXSA9IGRpbWVuc2lvbkF0dHJpYnV0ZT8uUm9sZSBhcyBzdHJpbmc7XG5cdFx0Y2hhcnREaW1lbnNpb25LZXlBbmRSb2xlLnB1c2gob2JqKTtcblx0fSk7XG5cblx0Y29uc3QgY2hhcnRNZWFzdXJlS2V5QW5kUm9sZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPltdID0gW107XG5cdGNoYXJ0QW5ub3RhdGlvbj8uTWVhc3VyZUF0dHJpYnV0ZXM/LmZvckVhY2goKG1lYXN1cmVBdHRyaWJ1dGUpID0+IHtcblx0XHRjb25zdCBvYmo6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblx0XHRvYmpbbWVhc3VyZUF0dHJpYnV0ZT8uTWVhc3VyZT8udmFsdWUgYXMgc3RyaW5nXSA9IG1lYXN1cmVBdHRyaWJ1dGU/LlJvbGUgYXMgc3RyaW5nO1xuXHRcdGNoYXJ0TWVhc3VyZUtleUFuZFJvbGUucHVzaCh7fSk7XG5cdH0pO1xuXG5cdC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBtZWFzdXJlcyBwb2ludGluZyB0byBhZ2dyZWdhdGVkIHByb3BlcnRpZXNcblx0Y29uc3QgY29udGFpbnNUcmFuc0FnZ0luTWVhc3VyZXMgPSAhIWFnZ3JlZ2F0aW9uSGVscGVyXG5cdFx0LmdldEFnZ3JlZ2F0ZWRQcm9wZXJ0aWVzKClbMF1cblx0XHQ/LmZpbHRlcigocHJvcGVydHkpID0+IGNoYXJ0QW5ub3RhdGlvbi5NZWFzdXJlcz8uc29tZSgobWVhc3VyZSkgPT4gcHJvcGVydHkuTmFtZSA9PT0gbWVhc3VyZS52YWx1ZSkpPy5sZW5ndGg7XG5cblx0cmV0dXJuIHtcblx0XHR0eXBlOiBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCxcblx0XHRpZDogcXVhbGlmaWVyXG5cdFx0XHQ/IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgcXVhbGlmaWVyLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydClcblx0XHRcdDogZ2V0Q2hhcnRJRChpc0VudGl0eVNldCA/IGVudGl0eU5hbWUgOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCksXG5cdFx0Y29sbGVjdGlvbjogZ2V0VGFyZ2V0T2JqZWN0UGF0aChjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSksXG5cdFx0YXBpSWQ6IGdlbmVyYXRlKFtcblx0XHRcdHF1YWxpZmllclxuXHRcdFx0XHQ/IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgcXVhbGlmaWVyLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydClcblx0XHRcdFx0OiBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0KSxcblx0XHRcdFwiQ2hhcnRcIlxuXHRcdF0pLFxuXHRcdGVudGl0eU5hbWU6IGVudGl0eU5hbWUsXG5cdFx0cGVyc29uYWxpemF0aW9uOiBnZXRQMTNuTW9kZSh2aXN1YWxpemF0aW9uUGF0aCwgY29udmVydGVyQ29udGV4dCksXG5cdFx0bmF2aWdhdGlvblBhdGg6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsXG5cdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aCh2aXN1YWxpemF0aW9uUGF0aCksXG5cdFx0ZmlsdGVySWQ6IHNGaWx0ZXJiYXJJZCxcblx0XHR2aXpQcm9wZXJ0aWVzOiBKU09OLnN0cmluZ2lmeShvVml6UHJvcGVydGllcyksXG5cdFx0YWN0aW9uczogY2hhcnRBY3Rpb25zLmFjdGlvbnMsXG5cdFx0Y29tbWFuZEFjdGlvbnM6IGNoYXJ0QWN0aW9ucy5jb21tYW5kQWN0aW9ucyxcblx0XHR0aXRsZTogdGl0bGUsXG5cdFx0YXV0b0JpbmRPbkluaXQ6IGF1dG9CaW5kT25Jbml0LFxuXHRcdG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZDogb25TZWdtZW50ZWRCdXR0b25QcmVzc2VkLFxuXHRcdHZpc2libGU6IHZpc2libGUsXG5cdFx0Y3VzdG9tQWdnOiBtQ3VzdG9tQWdncmVnYXRlcyxcblx0XHR0cmFuc0FnZzogbVRyYW5zQWdncmVnYXRpb25zLFxuXHRcdGFwcGx5U3VwcG9ydGVkOiBtQXBwbHlTdXBwb3J0ZWQsXG5cdFx0c2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFBhdGgsXG5cdFx0dmFyaWFudE1hbmFnZW1lbnQ6IGZpbmRWYXJpYW50TWFuYWdlbWVudChwMTNuTW9kZSwgdmFyaWFudE1hbmFnZW1lbnQpLFxuXHRcdGlzSW5zaWdodHNFbmFibGVkOiBpc0luc2lnaHRzRW5hYmxlZCxcblx0XHRpc0luc2lnaHRzVmlzaWJsZTogaXNJbnNpZ2h0c1Zpc2libGUsXG5cdFx0aXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0OiBpc1BhcmFtZXRlcml6ZWRFbnRpdHlTZXQsXG5cdFx0aGVhZGVyOiBoZWFkZXIsXG5cdFx0aGVhZGVyVmlzaWJsZTogaGVhZGVyVmlzaWJsZSxcblx0XHRzZWxlY3Rpb25Nb2RlOiBzZWxlY3Rpb25Nb2RlLFxuXHRcdGNoYXJ0RGltZW5zaW9uS2V5QW5kUm9sZTogY2hhcnREaW1lbnNpb25LZXlBbmRSb2xlLFxuXHRcdGNoYXJ0TWVhc3VyZUtleUFuZFJvbGU6IGNoYXJ0TWVhc3VyZUtleUFuZFJvbGUsXG5cdFx0Y29udGFpbnNBZ2dyZWdhdGVkUHJvcGVydHk6IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEFnZ3JlZ2F0ZWRQcm9wZXJ0eSgpLmxlbmd0aCA+IDAsXG5cdFx0Y29udGFpbnNUcmFuc0FnZ0luTWVhc3VyZXNcblx0fTtcbn1cbi8qKlxuICogTWV0aG9kIHRvIGRldGVybWluZSB0aGUgdmFyaWFudCBtYW5hZ2VtZW50LlxuICogQHBhcmFtIHAxM25Nb2RlXG4gKiBAcGFyYW0gdmFyaWFudE1hbmFnZW1lbnRcbiAqIEByZXR1cm5zIFRoZSB2YXJpYW50IG1hbmFnZW1lbnQgZm9yIHRoZSBjaGFydFxuICovXG5mdW5jdGlvbiBmaW5kVmFyaWFudE1hbmFnZW1lbnQocDEzbk1vZGU6IENoYXJ0UDEzblR5cGUsIHZhcmlhbnRNYW5hZ2VtZW50OiBWYXJpYW50TWFuYWdlbWVudFR5cGUpOiBWYXJpYW50TWFuYWdlbWVudFR5cGUge1xuXHRyZXR1cm4gdmFyaWFudE1hbmFnZW1lbnQgPT09IFwiQ29udHJvbFwiICYmICFwMTNuTW9kZSA/IFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5Ob25lIDogdmFyaWFudE1hbmFnZW1lbnQ7XG59XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBDaGFydFZpc3VhbGl6YXRpb24gY29uZmlndXJhdGlvbiB0aGF0IHdpbGwgYmUgdXNlZCB0byBkdXJpbmcgdGVtcGxhdGluZy5cbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIHZpc3VhbGl6YXRpb25QYXRoIFRoZSBwYXRoIG9mIHRoZSB2aXN1YWxpemF0aW9uIGFubm90YXRpb25cbiAqIEBwYXJhbSB2aXN1YWxpemF0aW9uIFRoZSB2aXN1YWxpemF0aW9uIGFubm90YXRpb25cbiAqIEByZXR1cm5zIFRoZSBjaGFydCB2aXN1YWxpemF0aW9uIGJhc2VkIG9uIHRoZSBhbm5vdGF0aW9uIHVzZWQgZm9yIHRlbXBsYXRpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNoYXJ0VmlzdWFsaXphdGlvbkZvclRlbXBsYXRpbmcoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pixcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0dmlzdWFsaXphdGlvbjogQWN0dWFsVmlzdWFsaXphdGlvbkFubm90YXRpb25zXG4pOiBDaGFydFRlbXBsYXRlVmlzdWFsaXphdGlvbiB7XG5cdGNvbnN0IHF1YWxpZmllciA9IHZpc3VhbGl6YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KFwiI1wiKS5sZW5ndGggPiAxID8gdmlzdWFsaXphdGlvbi5mdWxseVF1YWxpZmllZE5hbWUuc3BsaXQoXCIjXCIpWzFdIDogXCJcIjtcblx0Y29uc3QgW25hdmlnYXRpb25Qcm9wZXJ0eVBhdGhdID0gdmlzdWFsaXphdGlvblBhdGguc3BsaXQoXCJAXCIpO1xuXG5cdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKTtcblx0Y29uc3QgaXNFbnRpdHlTZXQ6IGJvb2xlYW4gPSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCA9PT0gMDtcblx0Y29uc3QgZW50aXR5TmFtZTogc3RyaW5nID0gZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQ/Lm5hbWUgPz8gZGF0YU1vZGVsUGF0aC5zdGFydGluZ0VudGl0eVNldC5uYW1lO1xuXHRjb25zdCBhZ2dyZWdhdGlvbkhlbHBlciA9IG5ldyBBZ2dyZWdhdGlvbkhlbHBlcihjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKSwgY29udmVydGVyQ29udGV4dCwgdHJ1ZSk7XG5cdGNvbnN0IGFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRBbGxvd2VkVHJhbnNmb3JtYXRpb25zKCk7XG5cdGNvbnN0IGlzUGFyYW1ldGVyaXplZEVudGl0eVNldCA9ICEhY29udmVydGVyQ29udGV4dC5nZXRQYXJhbWV0ZXJFbnRpdHlUeXBlKCk7XG5cdHJldHVybiB7XG5cdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aCh2aXN1YWxpemF0aW9uUGF0aCksXG5cdFx0aXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0LFxuXHRcdGNvbGxlY3Rpb246IGdldFRhcmdldE9iamVjdFBhdGgoY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkpLFxuXHRcdHR5cGU6IFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0LFxuXHRcdGVudGl0eU5hbWUsXG5cdFx0aWQ6IHF1YWxpZmllclxuXHRcdFx0PyBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIHF1YWxpZmllciwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpXG5cdFx0XHQ6IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpLFxuXHRcdGFwaUlkOiBnZW5lcmF0ZShbXG5cdFx0XHRxdWFsaWZpZXJcblx0XHRcdFx0PyBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIHF1YWxpZmllciwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpXG5cdFx0XHRcdDogZ2V0Q2hhcnRJRChpc0VudGl0eVNldCA/IGVudGl0eU5hbWUgOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCksXG5cdFx0XHRcIkNoYXJ0XCJcblx0XHRdKSxcblx0XHRhcHBseVN1cHBvcnRlZDoge1xuXHRcdFx0JFR5cGU6IFwiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkFwcGx5U3VwcG9ydGVkVHlwZVwiLFxuXHRcdFx0ZW5hYmxlU2VhcmNoOiBhbGxvd2VkVHJhbnNmb3JtYXRpb25zPy5pbmNsdWRlcyhcInNlYXJjaFwiKSA/PyB0cnVlXG5cdFx0fVxuXHR9O1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBnZXQgY29tcGlsZSBleHByZXNzaW9uIGZvciBEYXRhRmllbGRGb3JBY3Rpb24gYW5kIERhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbi5cbiAqIEBwYXJhbSBkYXRhRmllbGRcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBDb21waWxlIGV4cHJlc3Npb24gZm9yIERhdGFGaWVsZEZvckFjdGlvbiBhbmQgRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uXG4gKi9cbmZ1bmN0aW9uIGdldENvbXBpbGVFeHByZXNzaW9uRm9yQWN0aW9uKFxuXHRkYXRhRmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0bm90KFxuXHRcdFx0ZXF1YWwoXG5cdFx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihcblx0XHRcdFx0XHRkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4sXG5cdFx0XHRcdFx0W10sXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0UmVsYXRpdmVNb2RlbFBhdGhGdW5jdGlvbigpXG5cdFx0XHRcdCksXG5cdFx0XHRcdHRydWVcblx0XHRcdClcblx0XHQpXG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCbGFua0NoYXJ0VmlzdWFsaXphdGlvbihjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4pOiBDaGFydFZpc3VhbGl6YXRpb24ge1xuXHRjb25zdCBoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zID1cblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMoKSB8fFxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5BbmFseXRpY2FsTGlzdFBhZ2U7XG5cdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKTtcblx0Y29uc3QgZW50aXR5TmFtZSA9IGRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0ID8gZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQubmFtZSA6IGRhdGFNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQubmFtZTtcblxuXHRjb25zdCB2aXN1YWxpemF0aW9uOiBDaGFydFZpc3VhbGl6YXRpb24gPSB7XG5cdFx0dHlwZTogVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQsXG5cdFx0aWQ6IGdldENoYXJ0SUQoZW50aXR5TmFtZSwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpLFxuXHRcdGFwaUlkOiBnZW5lcmF0ZShbZ2V0Q2hhcnRJRChlbnRpdHlOYW1lLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCksIFwiQ2hhcnRcIl0pLFxuXHRcdGVudGl0eU5hbWU6IGVudGl0eU5hbWUsXG5cdFx0dGl0bGU6IFwiXCIsXG5cdFx0Y29sbGVjdGlvbjogXCJcIixcblx0XHRwZXJzb25hbGl6YXRpb246IHVuZGVmaW5lZCxcblx0XHRuYXZpZ2F0aW9uUGF0aDogXCJcIixcblx0XHRhbm5vdGF0aW9uUGF0aDogXCJcIixcblx0XHR2aXpQcm9wZXJ0aWVzOiBKU09OLnN0cmluZ2lmeSh7XG5cdFx0XHRsZWdlbmRHcm91cDoge1xuXHRcdFx0XHRsYXlvdXQ6IHtcblx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIlxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSksXG5cdFx0YWN0aW9uczogW10sXG5cdFx0Y29tbWFuZEFjdGlvbnM6IHt9LFxuXHRcdGF1dG9CaW5kT25Jbml0OiBmYWxzZSxcblx0XHRvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQ6IFwiXCIsXG5cdFx0dmlzaWJsZTogaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyA/IFwiez0gJHtwYWdlSW50ZXJuYWw+YWxwQ29udGVudFZpZXd9ICE9PSAnVGFibGUnfVwiIDogXCJ0cnVlXCIsXG5cdFx0Y3VzdG9tQWdnOiB7fSxcblx0XHR0cmFuc0FnZzoge30sXG5cdFx0YXBwbHlTdXBwb3J0ZWQ6IHtcblx0XHRcdCRUeXBlOiBcIk9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5BcHBseVN1cHBvcnRlZFR5cGVcIixcblx0XHRcdEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXM6IFtdLFxuXHRcdFx0R3JvdXBhYmxlUHJvcGVydGllczogW10sXG5cdFx0XHRlbmFibGVTZWFyY2g6IGZhbHNlXG5cdFx0fSxcblx0XHRtdWx0aVZpZXdzOiBmYWxzZSxcblx0XHR2YXJpYW50TWFuYWdlbWVudDogVmFyaWFudE1hbmFnZW1lbnRUeXBlLk5vbmVcblx0fTtcblxuXHRyZXR1cm4gdmlzdWFsaXphdGlvbjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlEQTtBQUNBO0FBQ0E7O0VBK0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU0EsOEJBQThCQSxDQUN0Q0MsZUFBc0IsRUFDdEJDLGlCQUF5QixFQUN6QkMsZ0JBQXlELEVBQ0Q7SUFDeEQsTUFBTUMsWUFBbUUsR0FBRyxFQUFFO0lBQzlFLElBQUlILGVBQWUsRUFBRUksT0FBTyxFQUFFO01BQzdCSixlQUFlLENBQUNJLE9BQU8sQ0FBQ0MsT0FBTyxDQUFFQyxTQUFnRSxJQUFLO1FBQ3JHLE1BQU1DLEdBQUcsR0FBR0MsU0FBUyxDQUFDQyx3QkFBd0IsQ0FBQ0gsU0FBUyxDQUFDO1FBQ3pELElBQUlJLDRCQUE0QixDQUFDSixTQUFTLENBQUMsSUFBSSxDQUFDQSxTQUFTLENBQUNLLE1BQU0sSUFBSSxDQUFDTCxTQUFTLENBQUNNLFdBQVcsRUFBRTtVQUMzRixRQUFRTixTQUFTLENBQUNPLEtBQUs7WUFDdEI7Y0FDQyxJQUFJUCxTQUFTLENBQUNRLFlBQVksSUFBSSxDQUFDUixTQUFTLENBQUNRLFlBQVksQ0FBQ0MsT0FBTyxFQUFFO2dCQUM5RFosWUFBWSxDQUFDYSxJQUFJLENBQUM7a0JBQ2pCQyxJQUFJLEVBQUVDLFVBQVUsQ0FBQ0Msa0JBQWtCO2tCQUNuQ0MsY0FB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
@@ -402,7 +402,8 @@ export function createChartVisualization(
402
402
  layout: {
403
403
  position: "bottom"
404
404
  }
405
- }
405
+ },
406
+ tooltip: { formatString: "" }
406
407
  };
407
408
  let autoBindOnInit: boolean | undefined;
408
409
  if (converterContext.getTemplateType() === TemplateType.ObjectPage) {