primeng 18.0.6-lts → 18.0.7-lts

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 (236) hide show
  1. package/LICENSE.md +3 -3
  2. package/api/translation.d.ts +1 -0
  3. package/confirmdialog/confirmdialog.d.ts +1 -0
  4. package/dialog/dialog.d.ts +1 -0
  5. package/dynamicdialog/dynamicdialog-config.d.ts +1 -1
  6. package/editor/editor.d.ts +25 -4
  7. package/editor/editor.interface.d.ts +67 -9
  8. package/esm2022/api/translation.mjs +1 -1
  9. package/esm2022/autocomplete/autocomplete.mjs +1 -4
  10. package/esm2022/config/primeng.mjs +3 -2
  11. package/esm2022/confirmdialog/confirmdialog.mjs +41 -3
  12. package/esm2022/contextmenu/contextmenu.mjs +3 -3
  13. package/esm2022/datepicker/datepicker.mjs +10 -4
  14. package/esm2022/dialog/dialog.mjs +15 -4
  15. package/esm2022/dock/dock.mjs +2 -2
  16. package/esm2022/dynamicdialog/dynamicdialog-config.mjs +2 -2
  17. package/esm2022/editor/editor.interface.mjs +1 -1
  18. package/esm2022/editor/editor.mjs +61 -3
  19. package/esm2022/listbox/listbox.mjs +85 -10
  20. package/esm2022/listbox/style/listboxstyle.mjs +23 -1
  21. package/esm2022/megamenu/megamenu.mjs +2 -2
  22. package/esm2022/menu/menu.mjs +2 -2
  23. package/esm2022/menubar/menubar.mjs +2 -2
  24. package/esm2022/message/message.mjs +1 -1
  25. package/esm2022/multiselect/multiselect.mjs +6 -3
  26. package/esm2022/picklist/picklist.mjs +105 -32
  27. package/esm2022/radiobutton/radiobutton.mjs +4 -5
  28. package/esm2022/select/select.mjs +29 -14
  29. package/esm2022/table/style/tablestyle.mjs +2 -2
  30. package/esm2022/table/table.mjs +56 -22
  31. package/esm2022/tabs/tablist.mjs +2 -2
  32. package/esm2022/tag/tag.mjs +1 -1
  33. package/esm2022/terminal/terminal.mjs +22 -12
  34. package/esm2022/tieredmenu/tieredmenu.mjs +2 -2
  35. package/esm2022/treetable/treetable.mjs +9 -9
  36. package/fesm2022/primeng-accordion.mjs.map +1 -1
  37. package/fesm2022/primeng-animateonscroll.mjs.map +1 -1
  38. package/fesm2022/primeng-api.mjs.map +1 -1
  39. package/fesm2022/primeng-autocomplete.mjs +0 -3
  40. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  41. package/fesm2022/primeng-autofocus.mjs.map +1 -1
  42. package/fesm2022/primeng-avatar.mjs.map +1 -1
  43. package/fesm2022/primeng-avatargroup.mjs.map +1 -1
  44. package/fesm2022/primeng-badge.mjs.map +1 -1
  45. package/fesm2022/primeng-base.mjs.map +1 -1
  46. package/fesm2022/primeng-basecomponent.mjs.map +1 -1
  47. package/fesm2022/primeng-blockui.mjs.map +1 -1
  48. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  49. package/fesm2022/primeng-button.mjs.map +1 -1
  50. package/fesm2022/primeng-buttongroup.mjs.map +1 -1
  51. package/fesm2022/primeng-calendar.mjs.map +1 -1
  52. package/fesm2022/primeng-card.mjs.map +1 -1
  53. package/fesm2022/primeng-carousel.mjs.map +1 -1
  54. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  55. package/fesm2022/primeng-chart.mjs.map +1 -1
  56. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  57. package/fesm2022/primeng-chip.mjs.map +1 -1
  58. package/fesm2022/primeng-chips.mjs.map +1 -1
  59. package/fesm2022/primeng-colorpicker.mjs.map +1 -1
  60. package/fesm2022/primeng-config.mjs +2 -1
  61. package/fesm2022/primeng-config.mjs.map +1 -1
  62. package/fesm2022/primeng-confirmdialog.mjs +40 -2
  63. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  64. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  65. package/fesm2022/primeng-contextmenu.mjs +2 -2
  66. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  67. package/fesm2022/primeng-dataview.mjs.map +1 -1
  68. package/fesm2022/primeng-datepicker.mjs +9 -3
  69. package/fesm2022/primeng-datepicker.mjs.map +1 -1
  70. package/fesm2022/primeng-defer.mjs.map +1 -1
  71. package/fesm2022/primeng-dialog.mjs +14 -3
  72. package/fesm2022/primeng-dialog.mjs.map +1 -1
  73. package/fesm2022/primeng-divider.mjs.map +1 -1
  74. package/fesm2022/primeng-dock.mjs +1 -1
  75. package/fesm2022/primeng-dock.mjs.map +1 -1
  76. package/fesm2022/primeng-dom.mjs.map +1 -1
  77. package/fesm2022/primeng-dragdrop.mjs.map +1 -1
  78. package/fesm2022/primeng-drawer.mjs.map +1 -1
  79. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  80. package/fesm2022/primeng-dynamicdialog.mjs +1 -1
  81. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  82. package/fesm2022/primeng-editor.mjs +60 -2
  83. package/fesm2022/primeng-editor.mjs.map +1 -1
  84. package/fesm2022/primeng-fieldset.mjs.map +1 -1
  85. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  86. package/fesm2022/primeng-floatlabel.mjs.map +1 -1
  87. package/fesm2022/primeng-fluid.mjs.map +1 -1
  88. package/fesm2022/primeng-focustrap.mjs.map +1 -1
  89. package/fesm2022/primeng-galleria.mjs.map +1 -1
  90. package/fesm2022/primeng-iconfield.mjs.map +1 -1
  91. package/fesm2022/primeng-icons-angledoubledown.mjs.map +1 -1
  92. package/fesm2022/primeng-icons-angledoubleleft.mjs.map +1 -1
  93. package/fesm2022/primeng-icons-angledoubleright.mjs.map +1 -1
  94. package/fesm2022/primeng-icons-angledoubleup.mjs.map +1 -1
  95. package/fesm2022/primeng-icons-angledown.mjs.map +1 -1
  96. package/fesm2022/primeng-icons-angleleft.mjs.map +1 -1
  97. package/fesm2022/primeng-icons-angleright.mjs.map +1 -1
  98. package/fesm2022/primeng-icons-angleup.mjs.map +1 -1
  99. package/fesm2022/primeng-icons-arrowdown.mjs.map +1 -1
  100. package/fesm2022/primeng-icons-arrowdownleft.mjs.map +1 -1
  101. package/fesm2022/primeng-icons-arrowdownright.mjs.map +1 -1
  102. package/fesm2022/primeng-icons-arrowleft.mjs.map +1 -1
  103. package/fesm2022/primeng-icons-arrowright.mjs.map +1 -1
  104. package/fesm2022/primeng-icons-arrowup.mjs.map +1 -1
  105. package/fesm2022/primeng-icons-ban.mjs.map +1 -1
  106. package/fesm2022/primeng-icons-bars.mjs.map +1 -1
  107. package/fesm2022/primeng-icons-baseicon.mjs.map +1 -1
  108. package/fesm2022/primeng-icons-blank.mjs.map +1 -1
  109. package/fesm2022/primeng-icons-calendar.mjs.map +1 -1
  110. package/fesm2022/primeng-icons-caretleft.mjs.map +1 -1
  111. package/fesm2022/primeng-icons-caretright.mjs.map +1 -1
  112. package/fesm2022/primeng-icons-check.mjs.map +1 -1
  113. package/fesm2022/primeng-icons-chevrondown.mjs.map +1 -1
  114. package/fesm2022/primeng-icons-chevronleft.mjs.map +1 -1
  115. package/fesm2022/primeng-icons-chevronright.mjs.map +1 -1
  116. package/fesm2022/primeng-icons-chevronup.mjs.map +1 -1
  117. package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +1 -1
  118. package/fesm2022/primeng-icons-eye.mjs.map +1 -1
  119. package/fesm2022/primeng-icons-eyeslash.mjs.map +1 -1
  120. package/fesm2022/primeng-icons-filter.mjs.map +1 -1
  121. package/fesm2022/primeng-icons-filterslash.mjs.map +1 -1
  122. package/fesm2022/primeng-icons-home.mjs.map +1 -1
  123. package/fesm2022/primeng-icons-infocircle.mjs.map +1 -1
  124. package/fesm2022/primeng-icons-minus.mjs.map +1 -1
  125. package/fesm2022/primeng-icons-pencil.mjs.map +1 -1
  126. package/fesm2022/primeng-icons-plus.mjs.map +1 -1
  127. package/fesm2022/primeng-icons-refresh.mjs.map +1 -1
  128. package/fesm2022/primeng-icons-search.mjs.map +1 -1
  129. package/fesm2022/primeng-icons-searchminus.mjs.map +1 -1
  130. package/fesm2022/primeng-icons-searchplus.mjs.map +1 -1
  131. package/fesm2022/primeng-icons-sortalt.mjs.map +1 -1
  132. package/fesm2022/primeng-icons-sortamountdown.mjs.map +1 -1
  133. package/fesm2022/primeng-icons-sortamountupalt.mjs.map +1 -1
  134. package/fesm2022/primeng-icons-spinner.mjs.map +1 -1
  135. package/fesm2022/primeng-icons-star.mjs.map +1 -1
  136. package/fesm2022/primeng-icons-starfill.mjs.map +1 -1
  137. package/fesm2022/primeng-icons-thlarge.mjs.map +1 -1
  138. package/fesm2022/primeng-icons-times.mjs.map +1 -1
  139. package/fesm2022/primeng-icons-timescircle.mjs.map +1 -1
  140. package/fesm2022/primeng-icons-trash.mjs.map +1 -1
  141. package/fesm2022/primeng-icons-undo.mjs.map +1 -1
  142. package/fesm2022/primeng-icons-upload.mjs.map +1 -1
  143. package/fesm2022/primeng-icons-windowmaximize.mjs.map +1 -1
  144. package/fesm2022/primeng-icons-windowminimize.mjs.map +1 -1
  145. package/fesm2022/primeng-iftalabel.mjs.map +1 -1
  146. package/fesm2022/primeng-image.mjs.map +1 -1
  147. package/fesm2022/primeng-imagecompare.mjs.map +1 -1
  148. package/fesm2022/primeng-inplace.mjs.map +1 -1
  149. package/fesm2022/primeng-inputgroup.mjs.map +1 -1
  150. package/fesm2022/primeng-inputgroupaddon.mjs.map +1 -1
  151. package/fesm2022/primeng-inputicon.mjs.map +1 -1
  152. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  153. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  154. package/fesm2022/primeng-inputotp.mjs.map +1 -1
  155. package/fesm2022/primeng-inputswitch.mjs.map +1 -1
  156. package/fesm2022/primeng-inputtext.mjs.map +1 -1
  157. package/fesm2022/primeng-inputtextarea.mjs.map +1 -1
  158. package/fesm2022/primeng-keyfilter.mjs.map +1 -1
  159. package/fesm2022/primeng-knob.mjs.map +1 -1
  160. package/fesm2022/primeng-listbox.mjs +107 -10
  161. package/fesm2022/primeng-listbox.mjs.map +1 -1
  162. package/fesm2022/primeng-megamenu.mjs +1 -1
  163. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  164. package/fesm2022/primeng-menu.mjs +1 -1
  165. package/fesm2022/primeng-menu.mjs.map +1 -1
  166. package/fesm2022/primeng-menubar.mjs +1 -1
  167. package/fesm2022/primeng-menubar.mjs.map +1 -1
  168. package/fesm2022/primeng-message.mjs.map +1 -1
  169. package/fesm2022/primeng-messages.mjs.map +1 -1
  170. package/fesm2022/primeng-metergroup.mjs.map +1 -1
  171. package/fesm2022/primeng-multiselect.mjs +5 -2
  172. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  173. package/fesm2022/primeng-orderlist.mjs.map +1 -1
  174. package/fesm2022/primeng-organizationchart.mjs.map +1 -1
  175. package/fesm2022/primeng-overlay.mjs.map +1 -1
  176. package/fesm2022/primeng-overlaybadge.mjs.map +1 -1
  177. package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
  178. package/fesm2022/primeng-paginator.mjs.map +1 -1
  179. package/fesm2022/primeng-panel.mjs.map +1 -1
  180. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  181. package/fesm2022/primeng-password.mjs.map +1 -1
  182. package/fesm2022/primeng-picklist.mjs +104 -31
  183. package/fesm2022/primeng-picklist.mjs.map +1 -1
  184. package/fesm2022/primeng-popover.mjs.map +1 -1
  185. package/fesm2022/primeng-progressbar.mjs.map +1 -1
  186. package/fesm2022/primeng-progressspinner.mjs.map +1 -1
  187. package/fesm2022/primeng-radiobutton.mjs +3 -4
  188. package/fesm2022/primeng-radiobutton.mjs.map +1 -1
  189. package/fesm2022/primeng-rating.mjs.map +1 -1
  190. package/fesm2022/primeng-ripple.mjs.map +1 -1
  191. package/fesm2022/primeng-scroller.mjs.map +1 -1
  192. package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
  193. package/fesm2022/primeng-scrolltop.mjs.map +1 -1
  194. package/fesm2022/primeng-select.mjs +28 -13
  195. package/fesm2022/primeng-select.mjs.map +1 -1
  196. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  197. package/fesm2022/primeng-sidebar.mjs.map +1 -1
  198. package/fesm2022/primeng-skeleton.mjs.map +1 -1
  199. package/fesm2022/primeng-slider.mjs.map +1 -1
  200. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  201. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  202. package/fesm2022/primeng-splitter.mjs.map +1 -1
  203. package/fesm2022/primeng-stepper.mjs.map +1 -1
  204. package/fesm2022/primeng-steps.mjs.map +1 -1
  205. package/fesm2022/primeng-styleclass.mjs.map +1 -1
  206. package/fesm2022/primeng-table.mjs +57 -23
  207. package/fesm2022/primeng-table.mjs.map +1 -1
  208. package/fesm2022/primeng-tabmenu.mjs.map +1 -1
  209. package/fesm2022/primeng-tabs.mjs +1 -1
  210. package/fesm2022/primeng-tabs.mjs.map +1 -1
  211. package/fesm2022/primeng-tabview.mjs.map +1 -1
  212. package/fesm2022/primeng-tag.mjs.map +1 -1
  213. package/fesm2022/primeng-terminal.mjs +21 -11
  214. package/fesm2022/primeng-terminal.mjs.map +1 -1
  215. package/fesm2022/primeng-textarea.mjs.map +1 -1
  216. package/fesm2022/primeng-tieredmenu.mjs +1 -1
  217. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  218. package/fesm2022/primeng-timeline.mjs.map +1 -1
  219. package/fesm2022/primeng-toast.mjs.map +1 -1
  220. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  221. package/fesm2022/primeng-toggleswitch.mjs.map +1 -1
  222. package/fesm2022/primeng-toolbar.mjs.map +1 -1
  223. package/fesm2022/primeng-tooltip.mjs.map +1 -1
  224. package/fesm2022/primeng-tree.mjs.map +1 -1
  225. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  226. package/fesm2022/primeng-treetable.mjs +8 -8
  227. package/fesm2022/primeng-treetable.mjs.map +1 -1
  228. package/fesm2022/primeng-usestyle.mjs.map +1 -1
  229. package/fesm2022/primeng-utils.mjs.map +1 -1
  230. package/listbox/listbox.d.ts +27 -1
  231. package/message/message.d.ts +1 -1
  232. package/multiselect/multiselect.d.ts +1 -1
  233. package/package.json +335 -335
  234. package/table/table.d.ts +10 -2
  235. package/tag/tag.d.ts +1 -1
  236. package/terminal/terminal.d.ts +2 -1
@@ -442,4 +442,4 @@ export class MessageModule {
442
442
  }]
443
443
  }], null, null); })();
444
444
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MessageModule, { imports: [Message, SharedModule], exports: [Message, SharedModule] }); })();
445
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZXNzYWdlL21lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQW9CLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWEsTUFBTSxFQUFlLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hPLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7O0lBMkI1Qix3QkFBOEU7OztJQUE5RSxzR0FBK0Q7OztJQUFoRCw2RUFBOEM7OztJQUc3RCx1QkFBK0M7OztJQUFyQixxQ0FBZ0I7OztJQUkxQywwQkFBdUU7OztJQUExQixBQUF2QiwyQ0FBc0IsNkNBQW1COzs7SUFEbkUsMkJBQXFDO0lBQ2pDLDhFQUFnRTtJQUNwRSxpQkFBTTs7O0lBREssY0FBYTtJQUFiLHFDQUFhOzs7SUFJcEIsK0JBQW9EO0lBQUEsWUFBVTtJQUFBLGlCQUFPOzs7SUFBeEMsMkNBQXNCO0lBQUMsY0FBVTtJQUFWLGlDQUFVOzs7SUFBOUQsdUZBQW9EOzs7SUFBN0MsbURB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QjtrQkFBbkUsWUFBWTttQkFBQyxXQUFXLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO1lBRWpCLFNBQVM7a0JBQXhDLGVBQWU7bUJBQUMsYUFBYTs7a0ZBNUdyQixPQUFPO0FBOEpwQixNQUFNLE9BQU8sYUFBYTt1R0FBYixhQUFhOzREQUFiLGFBQWE7Z0VBSFosT0FBTyxFQUFFLFlBQVksRUFDWixZQUFZOztpRkFFdEIsYUFBYTtjQUp6QixRQUFRO2VBQUM7Z0JBQ04sT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQztnQkFDaEMsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQzthQUNuQzs7d0ZBQ1ksYUFBYSxjQTlKYixPQUFPLEVBMkpHLFlBQVksYUEzSnRCLE9BQU8sRUE0SkcsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgYm9vbGVhbkF0dHJpYnV0ZSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgTmdNb2R1bGUsIE91dHB1dCwgUXVlcnlMaXN0LCBzaWduYWwsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJpbWVUZW1wbGF0ZSwgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ3ByaW1lbmcvYmFzZWNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lc0ljb24gfSBmcm9tICdwcmltZW5nL2ljb25zJztcbmltcG9ydCB7IFJpcHBsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7IE1lc3NhZ2VTdHlsZSB9IGZyb20gJy4vc3R5bGUvbWVzc2FnZXN0eWxlJztcblxuLyoqXG4gKiBNZXNzYWdlIGdyb3VwcyBhIGNvbGxlY3Rpb24gb2YgY29udGVudHMgaW4gdGFicy5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1tZXNzYWdlJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRpbWVzSWNvbiwgUmlwcGxlLCBTaGFyZWRNb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIEBpZiAodmlzaWJsZSgpKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwLW1lc3NhZ2UgcC1jb21wb25lbnRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCIncG9saXRlJ1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiJ2FsZXJ0J1wiXG4gICAgICAgICAgICAgICAgW0BtZXNzYWdlQW5pbWF0aW9uXT1cIntcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICd2aXNpYmxlKCknLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUcmFuc2l0aW9uUGFyYW1zOiBzaG93VHJhbnNpdGlvbk9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWRlVHJhbnNpdGlvblBhcmFtczogaGlkZVRyYW5zaXRpb25PcHRpb25zXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1tZXNzYWdlLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChpY29uVGVtcGxhdGUgfHwgX2ljb25UZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZSB8fCBpY29uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicC1tZXNzYWdlLWljb25cIiBbbmdDbGFzc109XCJpY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFlc2NhcGU7IGVsc2UgZXNjYXBlT3V0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFlc2NhcGVcIiBbbmdDbGFzc109XCJjeCgndGV4dCcpXCIgW2lubmVySFRNTF09XCJ0ZXh0XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2VzY2FwZU91dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZXNjYXBlICYmIHRleHRcIiBbbmdDbGFzc109XCJjeCgndGV4dCcpXCI+e3sgdGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbnRhaW5lclRlbXBsYXRlIHx8IF9jb250YWluZXJUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRhaW5lclRlbXBsYXRlIHx8IGNvbnRhaW5lclRlbXBsYXRlOyBjb250ZXh0OiB7IGNsb3NlQ2FsbGJhY2s6IGNsb3NlLmJpbmQodGhpcykgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cImN4KCd0ZXh0JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChjbG9zYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInAtbWVzc2FnZS1jbG9zZS1idXR0b25cIiAoY2xpY2spPVwiY2xvc2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2xvc2VJY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicC1tZXNzYWdlLWNsb3NlLWljb25cIiBbbmdDbGFzc109XCJjbG9zZUljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2xvc2VJY29uVGVtcGxhdGUgfHwgX2Nsb3NlSWNvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbG9zZUljb25UZW1wbGF0ZSB8fCBfY2xvc2VJY29uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghY2xvc2VJY29uVGVtcGxhdGUgJiYgIV9jbG9zZUljb25UZW1wbGF0ZSAmJiAhY2xvc2VJY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUaW1lc0ljb24gc3R5bGVDbGFzcz1cInAtbWVzc2FnZS1jbG9zZS1pY29uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbTWVzc2FnZVN0eWxlXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ21lc3NhZ2VBbmltYXRpb24nLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0yNSUpJyB9KSwgYW5pbWF0ZSgne3tzaG93VHJhbnNpdGlvblBhcmFtc319JyldKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICAgICAgICAgICAne3toaWRlVHJhbnNpdGlvblBhcmFtc319JyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlIGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIFNldmVyaXR5IGxldmVsIG9mIHRoZSBtZXNzYWdlLlxuICAgICAqIEBkZWZhdWx0VmFsdWUgJ2luZm8nXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2V2ZXJpdHk6IHN0cmluZyB8ICdzdWNjZXNzJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicgfCAnc2Vjb25kYXJ5JyB8ICdjb250cmFzdCcgfCB1bmRlZmluZWQgfCBudWxsID0gJ2luZm8nO1xuICAgIC8qKlxuICAgICAqIFRleHQgY29udGVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0ZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBkaXNwbGF5aW5nIG1lc3NhZ2VzIHdvdWxkIGJlIGVzY2FwZWQgb3Igbm90LlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBjb250ZW50IHByb2plY3Rpb24gaW5zdGVhZCAnPHAtbWVzc2FnZT5Db250ZW50PC9wLW1lc3NhZ2U+Jy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZXNjYXBlOiBib29sZWFuID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBtZXNzYWdlIGNhbiBiZSBjbG9zZWQgbWFudWFsbHkgdXNpbmcgdGhlIGNsb3NlIGljb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjbG9zYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEljb24gdG8gZGlzcGxheSBpbiB0aGUgbWVzc2FnZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKiBAZGVmYXVsdFZhbHVlIHVuZGVmaW5lZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGljb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJY29uIHRvIGRpc3BsYXkgaW4gdGhlIG1lc3NhZ2UgY2xvc2UgYnV0dG9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqIEBkZWZhdWx0VmFsdWUgdW5kZWZpbmVkXG4gICAgICovXG4gICAgQElucHV0KCkgY2xvc2VJY29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVsYXkgaW4gbWlsbGlzZWNvbmRzIHRvIGNsb3NlIHRoZSBtZXNzYWdlIGF1dG9tYXRpY2FsbHkuXG4gICAgICogQGRlZmF1bHRWYWx1ZSB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBsaWZlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVHJhbnNpdGlvbiBvcHRpb25zIG9mIHRoZSBzaG93IGFuaW1hdGlvbi5cbiAgICAgKiBAZGVmYXVsdFZhbHVlICczMDBtcyBlYXNlLW91dCdcbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG93VHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICczMDBtcyBlYXNlLW91dCc7XG4gICAgLyoqXG4gICAgICogVHJhbnNpdGlvbiBvcHRpb25zIG9mIHRoZSBoaWRlIGFuaW1hdGlvbi5cbiAgICAgKiBAZGVmYXVsdFZhbHVlICcyMDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaGlkZVRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnMjAwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpJztcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoZSBzaXplIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2l6ZTogJ2xhcmdlJyB8ICdzbWFsbCcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBpbnB1dCB2YXJpYW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdmFyaWFudDogJ291dGxpbmVkJyB8ICd0ZXh0JyB8ICdzaW1wbGUnIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gdGhlIG1lc3NhZ2UgaXMgY2xvc2VkLlxuICAgICAqIEBwYXJhbSB7eyBvcmlnaW5hbEV2ZW50OiBFdmVudCB9fSBldmVudCAtIFRoZSBldmVudCBvYmplY3QgY29udGFpbmluZyB0aGUgb3JpZ2luYWwgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjx7IG9yaWdpbmFsRXZlbnQ6IEV2ZW50IH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IG9yaWdpbmFsRXZlbnQ6IEV2ZW50IH0+KCk7XG5cbiAgICBnZXQgY29udGFpbmVyQ2xhc3MoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdmFyaWFudENsYXNzID0gdGhpcy52YXJpYW50ID09PSAnb3V0bGluZWQnID8gJ3AtbWVzc2FnZS1vdXRsaW5lZCcgOiB0aGlzLnZhcmlhbnQgPT09ICdzaW1wbGUnID8gJ3AtbWVzc2FnZS1zaW1wbGUnIDogJyc7XG4gICAgICAgIGNvbnN0IHNpemVDbGFzcyA9IHRoaXMuc2l6ZSA9PT0gJ3NtYWxsJyA/ICdwLW1lc3NhZ2Utc20nIDogdGhpcy5zaXplID09PSAnbGFyZ2UnID8gJ3AtbWVzc2FnZS1sZycgOiAnJztcblxuICAgICAgICByZXR1cm4gYHAtbWVzc2FnZS0ke3RoaXMuc2V2ZXJpdHl9ICR7dmFyaWFudENsYXNzfSAke3NpemVDbGFzc31gLnRyaW0oKSArICh0aGlzLnN0eWxlQ2xhc3MgPyAnICcgKyB0aGlzLnN0eWxlQ2xhc3MgOiAnJyk7XG4gICAgfVxuICAgIHZpc2libGUgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgICBfY29tcG9uZW50U3R5bGUgPSBpbmplY3QoTWVzc2FnZVN0eWxlKTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSB0ZW1wbGF0ZSBvZiB0aGUgbWVzc2FnZSBjb250YWluZXIuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2NvbnRhaW5lcicsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIGNvbnRhaW5lclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIHRlbXBsYXRlIG9mIHRoZSBtZXNzYWdlIGljb24uXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2ljb24nLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBpY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gdGVtcGxhdGUgb2YgdGhlIGNsb3NlIGljb24uXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2Nsb3NlaWNvbicsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIGNsb3NlSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZDtcblxuICAgIF9jb250YWluZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF9pY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfY2xvc2VJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgaWYgKHRoaXMubGlmZSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlLnNldChmYWxzZSk7XG4gICAgICAgICAgICB9LCB0aGlzLmxpZmUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhaW5lcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdjbG9zZWljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jbG9zZUljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLSBCcm93c2VyIGV2ZW50LlxuICAgICAqIEBncm91cCBNZXRob2RcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMudmlzaWJsZS5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLm9uQ2xvc2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50IH0pO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbTWVzc2FnZSwgU2hhcmVkTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbTWVzc2FnZSwgU2hhcmVkTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlTW9kdWxlIHt9XG4iXX0=
445
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZXNzYWdlL21lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQW9CLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWEsTUFBTSxFQUFlLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hPLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7O0lBMkI1Qix3QkFBOEU7OztJQUE5RSxzR0FBK0Q7OztJQUFoRCw2RUFBOEM7OztJQUc3RCx1QkFBK0M7OztJQUFyQixxQ0FBZ0I7OztJQUkxQywwQkFBdUU7OztJQUExQixBQUF2QiwyQ0FBc0IsNkNBQW1COzs7SUFEbkUsMkJBQXFDO0lBQ2pDLDhFQUFnRTtJQUNwRSxpQkFBTTs7O0lBREssY0FBYTtJQUFiLHFDQUFhOzs7SUFJcEIsK0JBQW9EO0lBQUEsWUFBVTtJQUFBLGlCQUFPOzs7SUFBeEMsMkNBQXNCO0lBQUMsY0FBVTtJQUFWLGlDQUFVOzs7SUFBOUQsdUZBQW9EOzs7SUFBN0MsbURB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QjtrQkFBbkUsWUFBWTttQkFBQyxXQUFXLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO1lBRWpCLFNBQVM7a0JBQXhDLGVBQWU7bUJBQUMsYUFBYTs7a0ZBNUdyQixPQUFPO0FBOEpwQixNQUFNLE9BQU8sYUFBYTt1R0FBYixhQUFhOzREQUFiLGFBQWE7Z0VBSFosT0FBTyxFQUFFLFlBQVksRUFDWixZQUFZOztpRkFFdEIsYUFBYTtjQUp6QixRQUFRO2VBQUM7Z0JBQ04sT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQztnQkFDaEMsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQzthQUNuQzs7d0ZBQ1ksYUFBYSxjQTlKYixPQUFPLEVBMkpHLFlBQVksYUEzSnRCLE9BQU8sRUE0SkcsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgYm9vbGVhbkF0dHJpYnV0ZSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgTmdNb2R1bGUsIE91dHB1dCwgUXVlcnlMaXN0LCBzaWduYWwsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJpbWVUZW1wbGF0ZSwgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ3ByaW1lbmcvYmFzZWNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lc0ljb24gfSBmcm9tICdwcmltZW5nL2ljb25zJztcbmltcG9ydCB7IFJpcHBsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7IE1lc3NhZ2VTdHlsZSB9IGZyb20gJy4vc3R5bGUvbWVzc2FnZXN0eWxlJztcblxuLyoqXG4gKiBNZXNzYWdlIGdyb3VwcyBhIGNvbGxlY3Rpb24gb2YgY29udGVudHMgaW4gdGFicy5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1tZXNzYWdlJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRpbWVzSWNvbiwgUmlwcGxlLCBTaGFyZWRNb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIEBpZiAodmlzaWJsZSgpKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwLW1lc3NhZ2UgcC1jb21wb25lbnRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCIncG9saXRlJ1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiJ2FsZXJ0J1wiXG4gICAgICAgICAgICAgICAgW0BtZXNzYWdlQW5pbWF0aW9uXT1cIntcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICd2aXNpYmxlKCknLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUcmFuc2l0aW9uUGFyYW1zOiBzaG93VHJhbnNpdGlvbk9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWRlVHJhbnNpdGlvblBhcmFtczogaGlkZVRyYW5zaXRpb25PcHRpb25zXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1tZXNzYWdlLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChpY29uVGVtcGxhdGUgfHwgX2ljb25UZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZSB8fCBpY29uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicC1tZXNzYWdlLWljb25cIiBbbmdDbGFzc109XCJpY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFlc2NhcGU7IGVsc2UgZXNjYXBlT3V0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFlc2NhcGVcIiBbbmdDbGFzc109XCJjeCgndGV4dCcpXCIgW2lubmVySFRNTF09XCJ0ZXh0XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2VzY2FwZU91dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZXNjYXBlICYmIHRleHRcIiBbbmdDbGFzc109XCJjeCgndGV4dCcpXCI+e3sgdGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbnRhaW5lclRlbXBsYXRlIHx8IF9jb250YWluZXJUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRhaW5lclRlbXBsYXRlIHx8IGNvbnRhaW5lclRlbXBsYXRlOyBjb250ZXh0OiB7IGNsb3NlQ2FsbGJhY2s6IGNsb3NlLmJpbmQodGhpcykgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cImN4KCd0ZXh0JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChjbG9zYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInAtbWVzc2FnZS1jbG9zZS1idXR0b25cIiAoY2xpY2spPVwiY2xvc2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2xvc2VJY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicC1tZXNzYWdlLWNsb3NlLWljb25cIiBbbmdDbGFzc109XCJjbG9zZUljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2xvc2VJY29uVGVtcGxhdGUgfHwgX2Nsb3NlSWNvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbG9zZUljb25UZW1wbGF0ZSB8fCBfY2xvc2VJY29uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghY2xvc2VJY29uVGVtcGxhdGUgJiYgIV9jbG9zZUljb25UZW1wbGF0ZSAmJiAhY2xvc2VJY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUaW1lc0ljb24gc3R5bGVDbGFzcz1cInAtbWVzc2FnZS1jbG9zZS1pY29uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbTWVzc2FnZVN0eWxlXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ21lc3NhZ2VBbmltYXRpb24nLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0yNSUpJyB9KSwgYW5pbWF0ZSgne3tzaG93VHJhbnNpdGlvblBhcmFtc319JyldKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICAgICAgICAgICAne3toaWRlVHJhbnNpdGlvblBhcmFtc319JyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlIGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIFNldmVyaXR5IGxldmVsIG9mIHRoZSBtZXNzYWdlLlxuICAgICAqIEBkZWZhdWx0VmFsdWUgJ2luZm8nXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2V2ZXJpdHk6ICdzdWNjZXNzJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicgfCAnc2Vjb25kYXJ5JyB8ICdjb250cmFzdCcgfCB1bmRlZmluZWQgfCBudWxsID0gJ2luZm8nO1xuICAgIC8qKlxuICAgICAqIFRleHQgY29udGVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0ZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBkaXNwbGF5aW5nIG1lc3NhZ2VzIHdvdWxkIGJlIGVzY2FwZWQgb3Igbm90LlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBjb250ZW50IHByb2plY3Rpb24gaW5zdGVhZCAnPHAtbWVzc2FnZT5Db250ZW50PC9wLW1lc3NhZ2U+Jy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZXNjYXBlOiBib29sZWFuID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBtZXNzYWdlIGNhbiBiZSBjbG9zZWQgbWFudWFsbHkgdXNpbmcgdGhlIGNsb3NlIGljb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjbG9zYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEljb24gdG8gZGlzcGxheSBpbiB0aGUgbWVzc2FnZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKiBAZGVmYXVsdFZhbHVlIHVuZGVmaW5lZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGljb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJY29uIHRvIGRpc3BsYXkgaW4gdGhlIG1lc3NhZ2UgY2xvc2UgYnV0dG9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqIEBkZWZhdWx0VmFsdWUgdW5kZWZpbmVkXG4gICAgICovXG4gICAgQElucHV0KCkgY2xvc2VJY29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVsYXkgaW4gbWlsbGlzZWNvbmRzIHRvIGNsb3NlIHRoZSBtZXNzYWdlIGF1dG9tYXRpY2FsbHkuXG4gICAgICogQGRlZmF1bHRWYWx1ZSB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBsaWZlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVHJhbnNpdGlvbiBvcHRpb25zIG9mIHRoZSBzaG93IGFuaW1hdGlvbi5cbiAgICAgKiBAZGVmYXVsdFZhbHVlICczMDBtcyBlYXNlLW91dCdcbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG93VHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICczMDBtcyBlYXNlLW91dCc7XG4gICAgLyoqXG4gICAgICogVHJhbnNpdGlvbiBvcHRpb25zIG9mIHRoZSBoaWRlIGFuaW1hdGlvbi5cbiAgICAgKiBAZGVmYXVsdFZhbHVlICcyMDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaGlkZVRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnMjAwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpJztcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoZSBzaXplIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2l6ZTogJ2xhcmdlJyB8ICdzbWFsbCcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBpbnB1dCB2YXJpYW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdmFyaWFudDogJ291dGxpbmVkJyB8ICd0ZXh0JyB8ICdzaW1wbGUnIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gdGhlIG1lc3NhZ2UgaXMgY2xvc2VkLlxuICAgICAqIEBwYXJhbSB7eyBvcmlnaW5hbEV2ZW50OiBFdmVudCB9fSBldmVudCAtIFRoZSBldmVudCBvYmplY3QgY29udGFpbmluZyB0aGUgb3JpZ2luYWwgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjx7IG9yaWdpbmFsRXZlbnQ6IEV2ZW50IH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IG9yaWdpbmFsRXZlbnQ6IEV2ZW50IH0+KCk7XG5cbiAgICBnZXQgY29udGFpbmVyQ2xhc3MoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdmFyaWFudENsYXNzID0gdGhpcy52YXJpYW50ID09PSAnb3V0bGluZWQnID8gJ3AtbWVzc2FnZS1vdXRsaW5lZCcgOiB0aGlzLnZhcmlhbnQgPT09ICdzaW1wbGUnID8gJ3AtbWVzc2FnZS1zaW1wbGUnIDogJyc7XG4gICAgICAgIGNvbnN0IHNpemVDbGFzcyA9IHRoaXMuc2l6ZSA9PT0gJ3NtYWxsJyA/ICdwLW1lc3NhZ2Utc20nIDogdGhpcy5zaXplID09PSAnbGFyZ2UnID8gJ3AtbWVzc2FnZS1sZycgOiAnJztcblxuICAgICAgICByZXR1cm4gYHAtbWVzc2FnZS0ke3RoaXMuc2V2ZXJpdHl9ICR7dmFyaWFudENsYXNzfSAke3NpemVDbGFzc31gLnRyaW0oKSArICh0aGlzLnN0eWxlQ2xhc3MgPyAnICcgKyB0aGlzLnN0eWxlQ2xhc3MgOiAnJyk7XG4gICAgfVxuICAgIHZpc2libGUgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgICBfY29tcG9uZW50U3R5bGUgPSBpbmplY3QoTWVzc2FnZVN0eWxlKTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSB0ZW1wbGF0ZSBvZiB0aGUgbWVzc2FnZSBjb250YWluZXIuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2NvbnRhaW5lcicsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIGNvbnRhaW5lclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIHRlbXBsYXRlIG9mIHRoZSBtZXNzYWdlIGljb24uXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2ljb24nLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBpY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gdGVtcGxhdGUgb2YgdGhlIGNsb3NlIGljb24uXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2Nsb3NlaWNvbicsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIGNsb3NlSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZDtcblxuICAgIF9jb250YWluZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF9pY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfY2xvc2VJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgaWYgKHRoaXMubGlmZSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlLnNldChmYWxzZSk7XG4gICAgICAgICAgICB9LCB0aGlzLmxpZmUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhaW5lcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdjbG9zZWljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jbG9zZUljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLSBCcm93c2VyIGV2ZW50LlxuICAgICAqIEBncm91cCBNZXRob2RcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMudmlzaWJsZS5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLm9uQ2xvc2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50IH0pO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbTWVzc2FnZSwgU2hhcmVkTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbTWVzc2FnZSwgU2hhcmVkTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlTW9kdWxlIHt9XG4iXX0=