primeng 18.0.0 → 18.0.2-patch.1

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 (361) hide show
  1. package/accordion/accordion.d.ts +7 -7
  2. package/autocomplete/autocomplete.d.ts +21 -8
  3. package/badge/badge.d.ts +1 -3
  4. package/basecomponent/basecomponent.d.ts +2 -5
  5. package/blockui/blockui.d.ts +10 -5
  6. package/breadcrumb/breadcrumb.d.ts +9 -6
  7. package/button/button.d.ts +10 -4
  8. package/calendar/calendar.d.ts +29 -15
  9. package/card/card.d.ts +12 -5
  10. package/carousel/carousel.d.ts +10 -4
  11. package/cascadeselect/cascadeselect.d.ts +18 -8
  12. package/checkbox/checkbox.d.ts +8 -4
  13. package/chip/chip.d.ts +9 -7
  14. package/chips/chips.d.ts +237 -0
  15. package/chips/chips.interface.d.ts +66 -0
  16. package/chips/index.d.ts +5 -0
  17. package/chips/public_api.d.ts +2 -0
  18. package/chips/style/chipsstyle.d.ts +69 -0
  19. package/confirmdialog/confirmdialog.d.ts +14 -5
  20. package/confirmpopup/confirmpopup.d.ts +11 -5
  21. package/contextmenu/contextmenu.d.ts +10 -6
  22. package/datepicker/datepicker.d.ts +113 -33
  23. package/dialog/dialog.d.ts +15 -4
  24. package/divider/divider.d.ts +1 -1
  25. package/dock/dock.d.ts +7 -4
  26. package/drawer/drawer.d.ts +18 -10
  27. package/dropdown/dropdown.d.ts +4 -3
  28. package/dynamicdialog/dynamicdialog.d.ts +1 -0
  29. package/editor/editor.d.ts +7 -3
  30. package/esm2022/accordion/accordion.mjs +58 -43
  31. package/esm2022/autocomplete/autocomplete.mjs +153 -92
  32. package/esm2022/badge/badge.mjs +39 -32
  33. package/esm2022/basecomponent/basecomponent.mjs +3 -26
  34. package/esm2022/blockui/blockui.mjs +38 -18
  35. package/esm2022/breadcrumb/breadcrumb.mjs +50 -32
  36. package/esm2022/button/button.mjs +55 -28
  37. package/esm2022/calendar/calendar.mjs +207 -143
  38. package/esm2022/card/card.mjs +96 -46
  39. package/esm2022/carousel/carousel.mjs +74 -42
  40. package/esm2022/cascadeselect/cascadeselect.mjs +100 -62
  41. package/esm2022/checkbox/checkbox.mjs +32 -14
  42. package/esm2022/chip/chip.mjs +117 -96
  43. package/esm2022/chips/chips.interface.mjs +2 -0
  44. package/esm2022/chips/chips.mjs +827 -0
  45. package/esm2022/chips/primeng-chips.mjs +5 -0
  46. package/esm2022/chips/public_api.mjs +3 -0
  47. package/esm2022/chips/style/chipsstyle.mjs +175 -0
  48. package/esm2022/confirmdialog/confirmdialog.mjs +96 -57
  49. package/esm2022/confirmpopup/confirmpopup.mjs +57 -29
  50. package/esm2022/contextmenu/contextmenu.mjs +51 -20
  51. package/esm2022/datepicker/datepicker.mjs +198 -156
  52. package/esm2022/dialog/dialog.mjs +98 -52
  53. package/esm2022/divider/divider.mjs +2 -4
  54. package/esm2022/dock/dock.mjs +31 -13
  55. package/esm2022/drawer/drawer.mjs +112 -70
  56. package/esm2022/dropdown/dropdown.mjs +13 -5
  57. package/esm2022/dynamicdialog/dynamicdialog-config.mjs +13 -13
  58. package/esm2022/dynamicdialog/dynamicdialog.mjs +9 -5
  59. package/esm2022/editor/editor.mjs +27 -11
  60. package/esm2022/fieldset/fieldset.mjs +61 -33
  61. package/esm2022/fileupload/fileupload.mjs +139 -89
  62. package/esm2022/galleria/galleria.mjs +18 -9
  63. package/esm2022/image/image.mjs +113 -66
  64. package/esm2022/imagecompare/imagecompare.mjs +31 -11
  65. package/esm2022/inplace/inplace.mjs +49 -24
  66. package/esm2022/inputmask/inputmask.mjs +30 -14
  67. package/esm2022/inputmask/style/inputmaskstyle.mjs +2 -2
  68. package/esm2022/inputnumber/inputnumber.mjs +55 -47
  69. package/esm2022/inputotp/inputotp.mjs +30 -11
  70. package/esm2022/listbox/listbox.mjs +137 -78
  71. package/esm2022/megamenu/megamenu.mjs +105 -59
  72. package/esm2022/menu/menu.mjs +26 -26
  73. package/esm2022/menubar/menubar.mjs +70 -35
  74. package/esm2022/message/message.mjs +50 -26
  75. package/esm2022/messages/messages.mjs +13 -4
  76. package/esm2022/metergroup/metergroup.mjs +63 -31
  77. package/esm2022/multiselect/multiselect.mjs +247 -156
  78. package/esm2022/orderlist/orderlist.mjs +125 -70
  79. package/esm2022/organizationchart/organizationchart.mjs +30 -14
  80. package/esm2022/overlay/overlay.mjs +27 -7
  81. package/esm2022/overlaypanel/overlaypanel.mjs +33 -10
  82. package/esm2022/paginator/paginator.mjs +92 -60
  83. package/esm2022/panel/panel.mjs +160 -100
  84. package/esm2022/panelmenu/panelmenu.mjs +55 -32
  85. package/esm2022/password/password.mjs +88 -49
  86. package/esm2022/picklist/picklist.mjs +363 -259
  87. package/esm2022/popover/popover.mjs +29 -12
  88. package/esm2022/progressbar/progressbar.mjs +27 -9
  89. package/esm2022/rating/rating.mjs +46 -22
  90. package/esm2022/scroller/scroller.mjs +47 -37
  91. package/esm2022/scrollpanel/scrollpanel.mjs +28 -9
  92. package/esm2022/scrolltop/scrolltop.mjs +17 -10
  93. package/esm2022/select/select.mjs +198 -119
  94. package/esm2022/selectbutton/selectbutton.mjs +26 -11
  95. package/esm2022/sidebar/sidebar.mjs +82 -60
  96. package/esm2022/speeddial/speeddial.mjs +54 -29
  97. package/esm2022/splitbutton/splitbutton.mjs +41 -18
  98. package/esm2022/splitter/splitter.mjs +5 -5
  99. package/esm2022/stepper/stepper.mjs +27 -13
  100. package/esm2022/table/table.mjs +107 -96
  101. package/esm2022/tabmenu/tabmenu.mjs +54 -27
  102. package/esm2022/tabs/tablist.mjs +28 -20
  103. package/esm2022/tabview/tabview.mjs +106 -54
  104. package/esm2022/tag/tag.mjs +68 -44
  105. package/esm2022/tieredmenu/tieredmenu.mjs +44 -21
  106. package/esm2022/timeline/timeline.mjs +41 -17
  107. package/esm2022/toast/toast.mjs +31 -9
  108. package/esm2022/togglebutton/togglebutton.mjs +45 -30
  109. package/esm2022/toggleswitch/toggleswitch.mjs +28 -9
  110. package/esm2022/toolbar/toolbar.mjs +47 -21
  111. package/esm2022/tooltip/tooltip.mjs +35 -70
  112. package/esm2022/tree/tree.mjs +114 -97
  113. package/esm2022/treeselect/treeselect.mjs +156 -89
  114. package/esm2022/treetable/treetable.mjs +31 -12
  115. package/esm2022/usestyle/usestyle.mjs +2 -2
  116. package/fesm2022/primeng-accordion.mjs +59 -44
  117. package/fesm2022/primeng-accordion.mjs.map +1 -1
  118. package/fesm2022/primeng-animateonscroll.mjs +1 -1
  119. package/fesm2022/primeng-api.mjs +1 -1
  120. package/fesm2022/primeng-autocomplete.mjs +152 -91
  121. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  122. package/fesm2022/primeng-avatar.mjs +1 -1
  123. package/fesm2022/primeng-avatargroup.mjs +1 -1
  124. package/fesm2022/primeng-badge.mjs +40 -33
  125. package/fesm2022/primeng-badge.mjs.map +1 -1
  126. package/fesm2022/primeng-basecomponent.mjs +2 -25
  127. package/fesm2022/primeng-basecomponent.mjs.map +1 -1
  128. package/fesm2022/primeng-blockui.mjs +37 -17
  129. package/fesm2022/primeng-blockui.mjs.map +1 -1
  130. package/fesm2022/primeng-breadcrumb.mjs +49 -31
  131. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  132. package/fesm2022/primeng-button.mjs +54 -27
  133. package/fesm2022/primeng-button.mjs.map +1 -1
  134. package/fesm2022/primeng-buttongroup.mjs +1 -1
  135. package/fesm2022/primeng-calendar.mjs +207 -143
  136. package/fesm2022/primeng-calendar.mjs.map +1 -1
  137. package/fesm2022/primeng-card.mjs +95 -45
  138. package/fesm2022/primeng-card.mjs.map +1 -1
  139. package/fesm2022/primeng-carousel.mjs +73 -41
  140. package/fesm2022/primeng-carousel.mjs.map +1 -1
  141. package/fesm2022/primeng-cascadeselect.mjs +99 -61
  142. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  143. package/fesm2022/primeng-chart.mjs +1 -1
  144. package/fesm2022/primeng-checkbox.mjs +31 -13
  145. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  146. package/fesm2022/primeng-chip.mjs +116 -95
  147. package/fesm2022/primeng-chip.mjs.map +1 -1
  148. package/fesm2022/primeng-chips.mjs +1006 -0
  149. package/fesm2022/primeng-chips.mjs.map +1 -0
  150. package/fesm2022/primeng-colorpicker.mjs +1 -1
  151. package/fesm2022/primeng-confirmdialog.mjs +95 -56
  152. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  153. package/fesm2022/primeng-confirmpopup.mjs +57 -29
  154. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  155. package/fesm2022/primeng-contextmenu.mjs +50 -19
  156. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  157. package/fesm2022/primeng-dataview.mjs +2 -2
  158. package/fesm2022/primeng-datepicker.mjs +198 -156
  159. package/fesm2022/primeng-datepicker.mjs.map +1 -1
  160. package/fesm2022/primeng-defer.mjs +1 -1
  161. package/fesm2022/primeng-dialog.mjs +97 -51
  162. package/fesm2022/primeng-dialog.mjs.map +1 -1
  163. package/fesm2022/primeng-divider.mjs +2 -4
  164. package/fesm2022/primeng-divider.mjs.map +1 -1
  165. package/fesm2022/primeng-dock.mjs +30 -12
  166. package/fesm2022/primeng-dock.mjs.map +1 -1
  167. package/fesm2022/primeng-dragdrop.mjs +1 -1
  168. package/fesm2022/primeng-drawer.mjs +111 -69
  169. package/fesm2022/primeng-drawer.mjs.map +1 -1
  170. package/fesm2022/primeng-dropdown.mjs +12 -4
  171. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  172. package/fesm2022/primeng-dynamicdialog.mjs +21 -17
  173. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  174. package/fesm2022/primeng-editor.mjs +26 -10
  175. package/fesm2022/primeng-editor.mjs.map +1 -1
  176. package/fesm2022/primeng-fieldset.mjs +61 -33
  177. package/fesm2022/primeng-fieldset.mjs.map +1 -1
  178. package/fesm2022/primeng-fileupload.mjs +138 -88
  179. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  180. package/fesm2022/primeng-floatlabel.mjs +1 -1
  181. package/fesm2022/primeng-fluid.mjs +1 -1
  182. package/fesm2022/primeng-galleria.mjs +17 -8
  183. package/fesm2022/primeng-galleria.mjs.map +1 -1
  184. package/fesm2022/primeng-iconfield.mjs +1 -1
  185. package/fesm2022/primeng-icons-baseicon.mjs +1 -1
  186. package/fesm2022/primeng-iftalabel.mjs +1 -1
  187. package/fesm2022/primeng-image.mjs +112 -65
  188. package/fesm2022/primeng-image.mjs.map +1 -1
  189. package/fesm2022/primeng-imagecompare.mjs +30 -10
  190. package/fesm2022/primeng-imagecompare.mjs.map +1 -1
  191. package/fesm2022/primeng-inplace.mjs +48 -23
  192. package/fesm2022/primeng-inplace.mjs.map +1 -1
  193. package/fesm2022/primeng-inputgroupaddon.mjs +1 -1
  194. package/fesm2022/primeng-inputicon.mjs +1 -1
  195. package/fesm2022/primeng-inputmask.mjs +30 -14
  196. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  197. package/fesm2022/primeng-inputnumber.mjs +54 -46
  198. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  199. package/fesm2022/primeng-inputotp.mjs +29 -10
  200. package/fesm2022/primeng-inputotp.mjs.map +1 -1
  201. package/fesm2022/primeng-inputswitch.mjs +1 -1
  202. package/fesm2022/primeng-inputtext.mjs +1 -1
  203. package/fesm2022/primeng-inputtextarea.mjs +1 -1
  204. package/fesm2022/primeng-keyfilter.mjs +1 -1
  205. package/fesm2022/primeng-knob.mjs +1 -1
  206. package/fesm2022/primeng-listbox.mjs +136 -77
  207. package/fesm2022/primeng-listbox.mjs.map +1 -1
  208. package/fesm2022/primeng-megamenu.mjs +104 -58
  209. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  210. package/fesm2022/primeng-menu.mjs +26 -26
  211. package/fesm2022/primeng-menu.mjs.map +1 -1
  212. package/fesm2022/primeng-menubar.mjs +69 -34
  213. package/fesm2022/primeng-menubar.mjs.map +1 -1
  214. package/fesm2022/primeng-message.mjs +49 -25
  215. package/fesm2022/primeng-message.mjs.map +1 -1
  216. package/fesm2022/primeng-messages.mjs +12 -3
  217. package/fesm2022/primeng-messages.mjs.map +1 -1
  218. package/fesm2022/primeng-metergroup.mjs +62 -30
  219. package/fesm2022/primeng-metergroup.mjs.map +1 -1
  220. package/fesm2022/primeng-multiselect.mjs +246 -155
  221. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  222. package/fesm2022/primeng-orderlist.mjs +124 -69
  223. package/fesm2022/primeng-orderlist.mjs.map +1 -1
  224. package/fesm2022/primeng-organizationchart.mjs +30 -14
  225. package/fesm2022/primeng-organizationchart.mjs.map +1 -1
  226. package/fesm2022/primeng-overlay.mjs +26 -6
  227. package/fesm2022/primeng-overlay.mjs.map +1 -1
  228. package/fesm2022/primeng-overlaybadge.mjs +1 -1
  229. package/fesm2022/primeng-overlaypanel.mjs +33 -10
  230. package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
  231. package/fesm2022/primeng-paginator.mjs +91 -59
  232. package/fesm2022/primeng-paginator.mjs.map +1 -1
  233. package/fesm2022/primeng-panel.mjs +160 -100
  234. package/fesm2022/primeng-panel.mjs.map +1 -1
  235. package/fesm2022/primeng-panelmenu.mjs +55 -32
  236. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  237. package/fesm2022/primeng-password.mjs +87 -48
  238. package/fesm2022/primeng-password.mjs.map +1 -1
  239. package/fesm2022/primeng-picklist.mjs +362 -258
  240. package/fesm2022/primeng-picklist.mjs.map +1 -1
  241. package/fesm2022/primeng-popover.mjs +29 -12
  242. package/fesm2022/primeng-popover.mjs.map +1 -1
  243. package/fesm2022/primeng-progressbar.mjs +26 -8
  244. package/fesm2022/primeng-progressbar.mjs.map +1 -1
  245. package/fesm2022/primeng-progressspinner.mjs +1 -1
  246. package/fesm2022/primeng-radiobutton.mjs +1 -1
  247. package/fesm2022/primeng-rating.mjs +45 -21
  248. package/fesm2022/primeng-rating.mjs.map +1 -1
  249. package/fesm2022/primeng-scroller.mjs +46 -36
  250. package/fesm2022/primeng-scroller.mjs.map +1 -1
  251. package/fesm2022/primeng-scrollpanel.mjs +27 -8
  252. package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
  253. package/fesm2022/primeng-scrolltop.mjs +17 -10
  254. package/fesm2022/primeng-scrolltop.mjs.map +1 -1
  255. package/fesm2022/primeng-select.mjs +197 -118
  256. package/fesm2022/primeng-select.mjs.map +1 -1
  257. package/fesm2022/primeng-selectbutton.mjs +25 -10
  258. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  259. package/fesm2022/primeng-sidebar.mjs +81 -59
  260. package/fesm2022/primeng-sidebar.mjs.map +1 -1
  261. package/fesm2022/primeng-skeleton.mjs +1 -1
  262. package/fesm2022/primeng-slider.mjs +1 -1
  263. package/fesm2022/primeng-speeddial.mjs +53 -28
  264. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  265. package/fesm2022/primeng-splitbutton.mjs +40 -17
  266. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  267. package/fesm2022/primeng-splitter.mjs +6 -6
  268. package/fesm2022/primeng-splitter.mjs.map +1 -1
  269. package/fesm2022/primeng-stepper.mjs +27 -13
  270. package/fesm2022/primeng-stepper.mjs.map +1 -1
  271. package/fesm2022/primeng-steps.mjs +1 -1
  272. package/fesm2022/primeng-styleclass.mjs +1 -1
  273. package/fesm2022/primeng-table.mjs +107 -96
  274. package/fesm2022/primeng-table.mjs.map +1 -1
  275. package/fesm2022/primeng-tabmenu.mjs +53 -26
  276. package/fesm2022/primeng-tabmenu.mjs.map +1 -1
  277. package/fesm2022/primeng-tabs.mjs +27 -19
  278. package/fesm2022/primeng-tabs.mjs.map +1 -1
  279. package/fesm2022/primeng-tabview.mjs +106 -54
  280. package/fesm2022/primeng-tabview.mjs.map +1 -1
  281. package/fesm2022/primeng-tag.mjs +67 -43
  282. package/fesm2022/primeng-tag.mjs.map +1 -1
  283. package/fesm2022/primeng-terminal.mjs +1 -1
  284. package/fesm2022/primeng-textarea.mjs +1 -1
  285. package/fesm2022/primeng-tieredmenu.mjs +43 -20
  286. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  287. package/fesm2022/primeng-timeline.mjs +40 -16
  288. package/fesm2022/primeng-timeline.mjs.map +1 -1
  289. package/fesm2022/primeng-toast.mjs +31 -9
  290. package/fesm2022/primeng-toast.mjs.map +1 -1
  291. package/fesm2022/primeng-togglebutton.mjs +44 -29
  292. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  293. package/fesm2022/primeng-toggleswitch.mjs +27 -8
  294. package/fesm2022/primeng-toggleswitch.mjs.map +1 -1
  295. package/fesm2022/primeng-toolbar.mjs +46 -20
  296. package/fesm2022/primeng-toolbar.mjs.map +1 -1
  297. package/fesm2022/primeng-tooltip.mjs +35 -70
  298. package/fesm2022/primeng-tooltip.mjs.map +1 -1
  299. package/fesm2022/primeng-tree.mjs +114 -97
  300. package/fesm2022/primeng-tree.mjs.map +1 -1
  301. package/fesm2022/primeng-treeselect.mjs +155 -88
  302. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  303. package/fesm2022/primeng-treetable.mjs +30 -11
  304. package/fesm2022/primeng-treetable.mjs.map +1 -1
  305. package/fesm2022/primeng-usestyle.mjs +1 -1
  306. package/fesm2022/primeng-usestyle.mjs.map +1 -1
  307. package/fieldset/fieldset.d.ts +12 -6
  308. package/fileupload/fileupload.d.ts +19 -8
  309. package/galleria/galleria.d.ts +3 -2
  310. package/image/image.d.ts +18 -7
  311. package/imagecompare/imagecompare.d.ts +7 -2
  312. package/inplace/inplace.d.ts +12 -6
  313. package/inputmask/inputmask.d.ts +8 -4
  314. package/inputnumber/inputnumber.d.ts +11 -6
  315. package/inputotp/inputotp.d.ts +7 -2
  316. package/listbox/listbox.d.ts +17 -4
  317. package/megamenu/megamenu.d.ts +16 -7
  318. package/menu/menu.d.ts +6 -6
  319. package/menubar/menubar.d.ts +13 -6
  320. package/message/message.d.ts +10 -4
  321. package/messages/messages.d.ts +4 -3
  322. package/metergroup/metergroup.d.ts +11 -3
  323. package/multiselect/multiselect.d.ts +36 -17
  324. package/orderlist/orderlist.d.ts +23 -11
  325. package/organizationchart/organizationchart.d.ts +6 -4
  326. package/overlay/overlay.d.ts +6 -3
  327. package/overlaypanel/overlaypanel.d.ts +6 -3
  328. package/package.json +171 -165
  329. package/paginator/paginator.d.ts +15 -8
  330. package/panel/panel.d.ts +14 -5
  331. package/panelmenu/panelmenu.d.ts +8 -4
  332. package/password/password.d.ts +15 -7
  333. package/picklist/picklist.d.ts +23 -3
  334. package/popover/popover.d.ts +8 -5
  335. package/progressbar/progressbar.d.ts +7 -3
  336. package/rating/rating.d.ts +11 -5
  337. package/scroller/scroller.d.ts +9 -4
  338. package/scrollpanel/scrollpanel.d.ts +7 -3
  339. package/scrolltop/scrolltop.d.ts +7 -4
  340. package/select/select.d.ts +31 -13
  341. package/selectbutton/selectbutton.d.ts +7 -3
  342. package/sidebar/sidebar.d.ts +9 -2
  343. package/speeddial/speeddial.d.ts +9 -4
  344. package/splitbutton/splitbutton.d.ts +9 -5
  345. package/splitter/splitter.d.ts +4 -4
  346. package/stepper/stepper.d.ts +8 -3
  347. package/table/table.d.ts +2 -2
  348. package/tabmenu/tabmenu.d.ts +12 -7
  349. package/tabs/tablist.d.ts +6 -2
  350. package/tabview/tabview.d.ts +16 -7
  351. package/tag/tag.d.ts +8 -9
  352. package/tieredmenu/tieredmenu.d.ts +10 -6
  353. package/timeline/timeline.d.ts +7 -2
  354. package/toast/toast.d.ts +7 -3
  355. package/togglebutton/togglebutton.d.ts +8 -3
  356. package/toggleswitch/toggleswitch.d.ts +6 -2
  357. package/toolbar/toolbar.d.ts +9 -4
  358. package/tooltip/tooltip.d.ts +2 -1
  359. package/tree/tree.d.ts +23 -10
  360. package/treeselect/treeselect.d.ts +26 -12
  361. package/treetable/treetable.d.ts +7 -5
@@ -1,10 +1,9 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, EventEmitter, forwardRef, inject, Input, NgModule, numberAttribute, Output, ViewEncapsulation } from '@angular/core';
2
+ import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, ContentChildren, EventEmitter, forwardRef, inject, Input, NgModule, numberAttribute, Output, ViewEncapsulation } from '@angular/core';
3
3
  import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
4
4
  import { equals, resolveFieldData } from '@primeuix/utils';
5
- import { SharedModule } from 'primeng/api';
5
+ import { PrimeTemplate, SharedModule } from 'primeng/api';
6
6
  import { BaseComponent } from 'primeng/basecomponent';
7
- import { Ripple } from 'primeng/ripple';
8
7
  import { ToggleButton } from 'primeng/togglebutton';
9
8
  import { SelectButtonStyle } from './style/selectbuttonstyle';
10
9
  import * as i0 from "@angular/core";
@@ -22,7 +21,7 @@ function SelectButton_For_1_Conditional_1_ng_template_0_Template(rf, ctx) { if (
22
21
  const option_r3 = ctx_r5.$implicit;
23
22
  const ɵ$index_1_r4 = ctx_r5.$index;
24
23
  const ctx_r4 = i0.ɵɵnextContext();
25
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r4.itemTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c1, option_r3, ɵ$index_1_r4));
24
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r4.itemTemplate || ctx_r4._itemTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c1, option_r3, ɵ$index_1_r4));
26
25
  } }
27
26
  function SelectButton_For_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
28
27
  i0.ɵɵtemplate(0, SelectButton_For_1_Conditional_1_ng_template_0_Template, 1, 5, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
@@ -38,7 +37,7 @@ function SelectButton_For_1_Template(rf, ctx) { if (rf & 1) {
38
37
  const ctx_r4 = i0.ɵɵnextContext();
39
38
  i0.ɵɵproperty("autofocus", ctx_r4.autofocus)("styleClass", ctx_r4.styleClass)("ngModel", ctx_r4.isSelected(option_r3))("onLabel", ctx_r4.getOptionLabel(option_r3))("offLabel", ctx_r4.getOptionLabel(option_r3))("disabled", ctx_r4.disabled || ctx_r4.isOptionDisabled(option_r3))("allowEmpty", ctx_r4.allowEmpty)("size", ctx_r4.size);
40
39
  i0.ɵɵadvance();
41
- i0.ɵɵconditional(ctx_r4.itemTemplate ? 1 : -1);
40
+ i0.ɵɵconditional(ctx_r4.itemTemplate || ctx_r4._itemTemplate ? 1 : -1);
42
41
  } }
43
42
  export const SELECTBUTTON_VALUE_ACCESSOR = {
44
43
  provide: NG_VALUE_ACCESSOR,
@@ -142,6 +141,7 @@ export class SelectButton extends BaseComponent {
142
141
  * @group Templates
143
142
  */
144
143
  itemTemplate;
144
+ _itemTemplate;
145
145
  get equalityKey() {
146
146
  return this.optionValue ? null : this.dataKey;
147
147
  }
@@ -256,12 +256,24 @@ export class SelectButton extends BaseComponent {
256
256
  }
257
257
  return selected;
258
258
  }
259
+ templates;
260
+ ngAfterContentInit() {
261
+ this.templates.forEach((item) => {
262
+ switch (item.getType()) {
263
+ case 'item':
264
+ this._itemTemplate = item.template;
265
+ break;
266
+ }
267
+ });
268
+ }
259
269
  static ɵfac = /*@__PURE__*/ (() => { let ɵSelectButton_BaseFactory; return function SelectButton_Factory(__ngFactoryType__) { return (ɵSelectButton_BaseFactory || (ɵSelectButton_BaseFactory = i0.ɵɵgetInheritedFactory(SelectButton)))(__ngFactoryType__ || SelectButton); }; })();
260
270
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SelectButton, selectors: [["p-selectButton"], ["p-selectbutton"], ["p-select-button"]], contentQueries: function SelectButton_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
261
- i0.ɵɵcontentQuery(dirIndex, _c0, 5);
271
+ i0.ɵɵcontentQuery(dirIndex, _c0, 4);
272
+ i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);
262
273
  } if (rf & 2) {
263
274
  let _t;
264
275
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemTemplate = _t.first);
276
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);
265
277
  } }, hostVars: 10, hostBindings: function SelectButton_HostBindings(rf, ctx) { if (rf & 2) {
266
278
  i0.ɵɵattribute("role", ctx.group)("aria-labelledby", ctx.ariaLabelledBy)("data-pc-section", "root")("data-pc-name", "selectbutton");
267
279
  i0.ɵɵstyleMap(ctx.style);
@@ -277,7 +289,7 @@ export class SelectButton extends BaseComponent {
277
289
  args: [{
278
290
  selector: 'p-selectButton, p-selectbutton, p-select-button',
279
291
  standalone: true,
280
- imports: [Ripple, ToggleButton, FormsModule, CommonModule, SharedModule],
292
+ imports: [ToggleButton, FormsModule, CommonModule, SharedModule],
281
293
  template: `
282
294
  @for (option of options; track option; let i = $index) {
283
295
  <p-toggleButton
@@ -291,9 +303,9 @@ export class SelectButton extends BaseComponent {
291
303
  [allowEmpty]="allowEmpty"
292
304
  [size]="size"
293
305
  >
294
- @if (itemTemplate) {
306
+ @if (itemTemplate || _itemTemplate) {
295
307
  <ng-template #content>
296
- <ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: option, index: i }"></ng-container>
308
+ <ng-container *ngTemplateOutlet="itemTemplate || _itemTemplate; context: { $implicit: option, index: i }"></ng-container>
297
309
  </ng-template>
298
310
  }
299
311
  </p-toggleButton>
@@ -354,7 +366,10 @@ export class SelectButton extends BaseComponent {
354
366
  type: Output
355
367
  }], itemTemplate: [{
356
368
  type: ContentChild,
357
- args: ['item']
369
+ args: ['item', { descendants: false }]
370
+ }], templates: [{
371
+ type: ContentChildren,
372
+ args: [PrimeTemplate]
358
373
  }] }); })();
359
374
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SelectButton, { className: "SelectButton" }); })();
360
375
  export class SelectButtonModule {
@@ -370,4 +385,4 @@ export class SelectButtonModule {
370
385
  }]
371
386
  }], null, null); })();
372
387
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(SelectButtonModule, { imports: [SelectButton, SharedModule], exports: [SelectButton, SharedModule] }); })();
373
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlbGVjdGJ1dHRvbi9zZWxlY3RidXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBZSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvTSxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7O0lBOEJ0Qyx3QkFBd0c7OztJQUF4RyxpSEFBeUY7Ozs7OztJQUExQyxBQUFoQyxzREFBZ0MsZ0ZBQXdDOzs7SUFEM0Ysa0lBQXNCOzs7O0lBWjlCLHlDQVVDO0lBSEcsbVJBQVksc0RBQWlDLEtBQUM7SUFJOUMsaUVBQW9CO0lBS3hCLGlCQUFpQjs7OztJQVBiLEFBREEsQUFGQSxBQURBLEFBREEsQUFEQSxBQURBLEFBREEsNENBQXVCLGlDQUNFLHlDQUNLLDZDQUNTLDhDQUNDLG1FQUNTLGlDQUV4QixxQkFDWjtJQUVi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RUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFLN0IsT0FBTztrQkFBZixLQUFLO1lBS2tDLFNBQVM7a0JBQWhELEtBQUs7bUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFNNUIsYUFBYTtrQkFBdEIsTUFBTTtZQU1HLFFBQVE7a0JBQWpCLE1BQU07WUFLZSxZQUFZO2tCQUFqQyxZQUFZO21CQUFDLE1BQU07O2tGQTVGWCxZQUFZO0FBME96QixNQUFNLE9BQU8sa0JBQWtCOzRHQUFsQixrQkFBa0I7NERBQWxCLGtCQUFrQjtnRUFIakIsWUFBWSxFQUFFLFlBQVksRUFDWixZQUFZOztpRkFFM0Isa0JBQWtCO2NBSjlCLFFBQVE7ZUFBQztnQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDO2dCQUNyQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDO2FBQ3hDOzt3RkFDWSxrQkFBa0IsY0ExT2xCLFlBQVksRUF1T0csWUFBWSxhQXZPM0IsWUFBWSxFQXdPRyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGJvb2xlYW5BdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBpbmplY3QsIElucHV0LCBOZ01vZHVsZSwgbnVtYmVyQXR0cmlidXRlLCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGVxdWFscywgcmVzb2x2ZUZpZWxkRGF0YSB9IGZyb20gJ0BwcmltZXVpeC91dGlscyc7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAncHJpbWVuZy9iYXNlY29tcG9uZW50JztcbmltcG9ydCB7IFJpcHBsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7IFRvZ2dsZUJ1dHRvbiB9IGZyb20gJ3ByaW1lbmcvdG9nZ2xlYnV0dG9uJztcbmltcG9ydCB7IFNlbGVjdEJ1dHRvbkNoYW5nZUV2ZW50LCBTZWxlY3RCdXR0b25PcHRpb25DbGlja0V2ZW50IH0gZnJvbSAnLi9zZWxlY3RidXR0b24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFNlbGVjdEJ1dHRvblN0eWxlIH0gZnJvbSAnLi9zdHlsZS9zZWxlY3RidXR0b25zdHlsZSc7XG5cbmV4cG9ydCBjb25zdCBTRUxFQ1RCVVRUT05fVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTZWxlY3RCdXR0b24pLFxuICAgIG11bHRpOiB0cnVlXG59O1xuLyoqXG4gKiBTZWxlY3RCdXR0b24gaXMgdXNlZCB0byBjaG9vc2Ugc2luZ2xlIG9yIG11bHRpcGxlIGl0ZW1zIGZyb20gYSBsaXN0IHVzaW5nIGJ1dHRvbnMuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Atc2VsZWN0QnV0dG9uLCBwLXNlbGVjdGJ1dHRvbiwgcC1zZWxlY3QtYnV0dG9uJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtSaXBwbGUsIFRvZ2dsZUJ1dHRvbiwgRm9ybXNNb2R1bGUsIENvbW1vbk1vZHVsZSwgU2hhcmVkTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICBAZm9yIChvcHRpb24gb2Ygb3B0aW9uczsgdHJhY2sgb3B0aW9uOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgPHAtdG9nZ2xlQnV0dG9uXG4gICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgICAgICAgICAgIFtzdHlsZUNsYXNzXT1cInN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImlzU2VsZWN0ZWQob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgW29uTGFiZWxdPVwidGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pXCJcbiAgICAgICAgICAgICAgICBbb2ZmTGFiZWxdPVwidGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgaXNPcHRpb25EaXNhYmxlZChvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25PcHRpb25TZWxlY3QoJGV2ZW50LCBvcHRpb24sIGkpXCJcbiAgICAgICAgICAgICAgICBbYWxsb3dFbXB0eV09XCJhbGxvd0VtcHR5XCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCJzaXplXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW1UZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogb3B0aW9uLCBpbmRleDogaSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9wLXRvZ2dsZUJ1dHRvbj5cbiAgICAgICAgfVxuICAgIGAsXG4gICAgcHJvdmlkZXJzOiBbU0VMRUNUQlVUVE9OX1ZBTFVFX0FDQ0VTU09SLCBTZWxlY3RCdXR0b25TdHlsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MucC1zZWxlY3RidXR0b25dJzogJ3RydWUnLFxuICAgICAgICAnW2NsYXNzLnAtY29tcG9uZW50XSc6ICd0cnVlJyxcbiAgICAgICAgJ1tzdHlsZV0nOiAnc3R5bGUnLFxuICAgICAgICAnW2F0dHIucm9sZV0nOiAnZ3JvdXAnLFxuICAgICAgICAnW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XSc6ICdhcmlhTGFiZWxsZWRCeScsXG4gICAgICAgICdbYXR0ci5kYXRhLXBjLXNlY3Rpb25dJzogXCIncm9vdCdcIixcbiAgICAgICAgJ1thdHRyLmRhdGEtcGMtbmFtZV0nOiBcIidzZWxlY3RidXR0b24nXCJcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdEJ1dHRvbiBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgLyoqXG4gICAgICogQW4gYXJyYXkgb2Ygc2VsZWN0aXRlbXMgdG8gZGlzcGxheSBhcyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3B0aW9uczogYW55W10gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgbGFiZWwgZmllbGQgb2YgYW4gb3B0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9wdGlvbkxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgdmFsdWUgZmllbGQgb2YgYW4gb3B0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9wdGlvblZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgZGlzYWJsZWQgZmllbGQgb2YgYW4gb3B0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9wdGlvbkRpc2FibGVkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBzZWxlY3Rpb24gY2FuIGJlIGNsZWFyZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHVuc2VsZWN0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEluZGV4IG9mIHRoZSBlbGVtZW50IGluIHRhYmJpbmcgb3JkZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGFiaW5kZXg6IG51bWJlciA9IDA7XG4gICAgLyoqXG4gICAgICogV2hlbiBzcGVjaWZpZWQsIGFsbG93cyBzZWxlY3RpbmcgbXVsdGlwbGUgdmFsdWVzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBtdWx0aXBsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHNlbGVjdGlvbiBjYW4gbm90IGJlIGNsZWFyZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGFsbG93RW1wdHk6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG4gICAgLyoqXG4gICAgICogU3R5bGUgY2xhc3Mgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRXN0YWJsaXNoZXMgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBjb21wb25lbnQgYW5kIGxhYmVsKHMpIHdoZXJlIGl0cyB2YWx1ZSBzaG91bGQgYmUgb25lIG9yIG1vcmUgZWxlbWVudCBJRHMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoZSBzaXplIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2l6ZTogJ2xhcmdlJyB8ICdzbWFsbCc7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEEgcHJvcGVydHkgdG8gdW5pcXVlbHkgaWRlbnRpZnkgYSB2YWx1ZSBpbiBvcHRpb25zLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGRhdGFLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIHByZXNlbnQsIGl0IHNwZWNpZmllcyB0aGF0IHRoZSBjb21wb25lbnQgc2hvdWxkIGF1dG9tYXRpY2FsbHkgZ2V0IGZvY3VzIG9uIGxvYWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9mb2N1czogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gaW5wdXQgY2xpY2suXG4gICAgICogQHBhcmFtIHtTZWxlY3RCdXR0b25PcHRpb25DbGlja0V2ZW50fSBldmVudCAtIEN1c3RvbSBjbGljayBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25PcHRpb25DbGljazogRXZlbnRFbWl0dGVyPFNlbGVjdEJ1dHRvbk9wdGlvbkNsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RCdXR0b25PcHRpb25DbGlja0V2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSBvbiBzZWxlY3Rpb24gY2hhbmdlLlxuICAgICAqIEBwYXJhbSB7U2VsZWN0QnV0dG9uQ2hhbmdlRXZlbnR9IGV2ZW50IC0gQ3VzdG9tIGNoYW5nZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxTZWxlY3RCdXR0b25DaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdEJ1dHRvbkNoYW5nZUV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIFRlbXBsYXRlIG9mIGFuIGl0ZW0gaW4gdGhlIGxpc3QuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2l0ZW0nKSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBnZXQgZXF1YWxpdHlLZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvblZhbHVlID8gbnVsbCA6IHRoaXMuZGF0YUtleTtcbiAgICB9XG5cbiAgICB2YWx1ZTogYW55O1xuXG4gICAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIG9uTW9kZWxUb3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgZm9jdXNlZEluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgX2NvbXBvbmVudFN0eWxlID0gaW5qZWN0KFNlbGVjdEJ1dHRvblN0eWxlKTtcblxuICAgIGdldE9wdGlvbkxhYmVsKG9wdGlvbjogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkxhYmVsID8gcmVzb2x2ZUZpZWxkRGF0YShvcHRpb24sIHRoaXMub3B0aW9uTGFiZWwpIDogb3B0aW9uLmxhYmVsICE9IHVuZGVmaW5lZCA/IG9wdGlvbi5sYWJlbCA6IG9wdGlvbjtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25WYWx1ZShvcHRpb246IGFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25WYWx1ZSA/IHJlc29sdmVGaWVsZERhdGEob3B0aW9uLCB0aGlzLm9wdGlvblZhbHVlKSA6IHRoaXMub3B0aW9uTGFiZWwgfHwgb3B0aW9uLnZhbHVlID09PSB1bmRlZmluZWQgPyBvcHRpb24gOiBvcHRpb24udmFsdWU7XG4gICAgfVxuXG4gICAgaXNPcHRpb25EaXNhYmxlZChvcHRpb246IGFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25EaXNhYmxlZCA/IHJlc29sdmVGaWVsZERhdGEob3B0aW9uLCB0aGlzLm9wdGlvbkRpc2FibGVkKSA6IG9wdGlvbi5kaXNhYmxlZCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLmRpc2FibGVkIDogZmFsc2U7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUodmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWw7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25PcHRpb25TZWxlY3QoZXZlbnQsIG9wdGlvbiwgaW5kZXgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzZWxlY3RlZCA9IHRoaXMuaXNTZWxlY3RlZChvcHRpb24pO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZCAmJiB0aGlzLnVuc2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG9wdGlvblZhbHVlID0gdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pO1xuICAgICAgICBsZXQgbmV3VmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCkgbmV3VmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcigodmFsKSA9PiAhZXF1YWxzKHZhbCwgb3B0aW9uVmFsdWUsIHRoaXMuZXF1YWxpdHlLZXkpKTtcbiAgICAgICAgICAgIGVsc2UgbmV3VmFsdWUgPSB0aGlzLnZhbHVlID8gWy4uLnRoaXMudmFsdWUsIG9wdGlvblZhbHVlXSA6IFtvcHRpb25WYWx1ZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQgJiYgIXRoaXMuYWxsb3dFbXB0eSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld1ZhbHVlID0gc2VsZWN0ZWQgPyBudWxsIDogb3B0aW9uVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IGluZGV4O1xuICAgICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlKTtcblxuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9uT3B0aW9uQ2xpY2suZW1pdCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxuICAgICAgICAgICAgaW5kZXg6IGluZGV4XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNoYW5nZVRhYkluZGV4ZXMoZXZlbnQsIGRpcmVjdGlvbikge1xuICAgICAgICBsZXQgZmlyc3RUYWJhYmxlQ2hpbGQsIGluZGV4O1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5baV0uZ2V0QXR0cmlidXRlKCd0YWJpbmRleCcpID09PSAnMCcpIGZpcnN0VGFiYWJsZUNoaWxkID0geyBlbGVtOiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5baV0sIGluZGV4OiBpIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAncHJldicpIHtcbiAgICAgICAgICAgIGlmIChmaXJzdFRhYmFibGVDaGlsZC5pbmRleCA9PT0gMCkgaW5kZXggPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGVsc2UgaW5kZXggPSBmaXJzdFRhYmFibGVDaGlsZC5pbmRleCAtIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZmlyc3RUYWJhYmxlQ2hpbGQuaW5kZXggPT09IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxKSBpbmRleCA9IDA7XG4gICAgICAgICAgICBlbHNlIGluZGV4ID0gZmlyc3RUYWJhYmxlQ2hpbGQuaW5kZXggKyAxO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXggPSBpbmRleDtcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW2luZGV4XS5mb2N1cygpO1xuICAgIH1cblxuICAgIG9uRm9jdXMoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gaW5kZXg7XG4gICAgfVxuXG4gICAgb25CbHVyKCkge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlT3B0aW9uKG9wdGlvbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcigodmFsOiBhbnkpID0+ICFlcXVhbHModmFsLCB0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbiksIHRoaXMuZGF0YUtleSkpO1xuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQob3B0aW9uOiBhbnkpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pO1xuXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgdmFsIG9mIHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVxdWFscyh2YWwsIG9wdGlvblZhbHVlLCB0aGlzLmRhdGFLZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbGVjdGVkID0gZXF1YWxzKHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSwgdGhpcy52YWx1ZSwgdGhpcy5lcXVhbGl0eUtleSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWQ7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtTZWxlY3RCdXR0b24sIFNoYXJlZE1vZHVsZV0sXG4gICAgZXhwb3J0czogW1NlbGVjdEJ1dHRvbiwgU2hhcmVkTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RCdXR0b25Nb2R1bGUge31cbiJdfQ==
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlbGVjdGJ1dHRvbi9zZWxlY3RidXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFSCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsZUFBZSxFQUNmLE1BQU0sRUFHTixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztJQThCdEMsd0JBQXlIOzs7SUFBekgsaUhBQTBHOzs7Ozs7SUFBMUMsQUFBakQsOEVBQWlELGdGQUF3Qzs7O0lBRDVHLGtJQUFzQjs7OztJQVo5Qix5Q0FVQztJQUhHLG1SQUFZLHNEQUFpQyxLQUFDO0lBSTlDLGlFQUFxQztJQUt6QyxpQkFBaUI7Ozs7SUFQYixBQURBLEFBRkEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLDRDQUF1QixpQ0FDRSx5Q0FDSyw2Q0FDUyw4Q0FDQyxtRUFDUyxpQ0FFeEIscUJBQ1o7SUFFYixjQUlDO0lBSkQsc0VBSUM7O0FB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QVMsRUFBRSxlQUFlLEVBQUU7WUFLRyxRQUFRO2tCQUEvQyxLQUFLO21CQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBS0UsVUFBVTtrQkFBakQsS0FBSzttQkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQUs3QixLQUFLO2tCQUFiLEtBQUs7WUFLRyxVQUFVO2tCQUFsQixLQUFLO1lBS0csY0FBYztrQkFBdEIsS0FBSztZQUtHLElBQUk7a0JBQVosS0FBSztZQUtrQyxRQUFRO2tCQUEvQyxLQUFLO21CQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBSzdCLE9BQU87a0JBQWYsS0FBSztZQUtrQyxTQUFTO2tCQUFoRCxLQUFLO21CQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBTTVCLGFBQWE7a0JBQXRCLE1BQU07WUFNRyxRQUFRO2tCQUFqQixNQUFNO1lBS3VDLFlBQVk7a0JBQXpELFlBQVk7bUJBQUMsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRTtZQTJJWixTQUFTO2tCQUF4QyxlQUFlO21CQUFDLGFBQWE7O2tGQXZPckIsWUFBWTtBQXdQekIsTUFBTSxPQUFPLGtCQUFrQjs0R0FBbEIsa0JBQWtCOzREQUFsQixrQkFBa0I7Z0VBSGpCLFlBQVksRUFBRSxZQUFZLEVBQ1osWUFBWTs7aUZBRTNCLGtCQUFrQjtjQUo5QixRQUFRO2VBQUM7Z0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQztnQkFDckMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQzthQUN4Qzs7d0ZBQ1ksa0JBQWtCLGNBeFBsQixZQUFZLEVBcVBHLFlBQVksYUFyUDNCLFlBQVksRUFzUEcsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZXF1YWxzLCByZXNvbHZlRmllbGREYXRhIH0gZnJvbSAnQHByaW1ldWl4L3V0aWxzJztcbmltcG9ydCB7IFByaW1lVGVtcGxhdGUsIFNoYXJlZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdwcmltZW5nL2Jhc2Vjb21wb25lbnQnO1xuaW1wb3J0IHsgVG9nZ2xlQnV0dG9uIH0gZnJvbSAncHJpbWVuZy90b2dnbGVidXR0b24nO1xuaW1wb3J0IHsgU2VsZWN0QnV0dG9uQ2hhbmdlRXZlbnQsIFNlbGVjdEJ1dHRvbk9wdGlvbkNsaWNrRXZlbnQgfSBmcm9tICcuL3NlbGVjdGJ1dHRvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VsZWN0QnV0dG9uU3R5bGUgfSBmcm9tICcuL3N0eWxlL3NlbGVjdGJ1dHRvbnN0eWxlJztcblxuZXhwb3J0IGNvbnN0IFNFTEVDVEJVVFRPTl9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdEJ1dHRvbiksXG4gICAgbXVsdGk6IHRydWVcbn07XG4vKipcbiAqIFNlbGVjdEJ1dHRvbiBpcyB1c2VkIHRvIGNob29zZSBzaW5nbGUgb3IgbXVsdGlwbGUgaXRlbXMgZnJvbSBhIGxpc3QgdXNpbmcgYnV0dG9ucy5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1zZWxlY3RCdXR0b24sIHAtc2VsZWN0YnV0dG9uLCBwLXNlbGVjdC1idXR0b24nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1RvZ2dsZUJ1dHRvbiwgRm9ybXNNb2R1bGUsIENvbW1vbk1vZHVsZSwgU2hhcmVkTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICBAZm9yIChvcHRpb24gb2Ygb3B0aW9uczsgdHJhY2sgb3B0aW9uOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgPHAtdG9nZ2xlQnV0dG9uXG4gICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgICAgICAgICAgIFtzdHlsZUNsYXNzXT1cInN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImlzU2VsZWN0ZWQob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgW29uTGFiZWxdPVwidGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pXCJcbiAgICAgICAgICAgICAgICBbb2ZmTGFiZWxdPVwidGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgaXNPcHRpb25EaXNhYmxlZChvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25PcHRpb25TZWxlY3QoJGV2ZW50LCBvcHRpb24sIGkpXCJcbiAgICAgICAgICAgICAgICBbYWxsb3dFbXB0eV09XCJhbGxvd0VtcHR5XCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCJzaXplXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW1UZW1wbGF0ZSB8fCBfaXRlbVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGUgfHwgX2l0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG9wdGlvbiwgaW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvcC10b2dnbGVCdXR0b24+XG4gICAgICAgIH1cbiAgICBgLFxuICAgIHByb3ZpZGVyczogW1NFTEVDVEJVVFRPTl9WQUxVRV9BQ0NFU1NPUiwgU2VsZWN0QnV0dG9uU3R5bGVdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLnAtc2VsZWN0YnV0dG9uXSc6ICd0cnVlJyxcbiAgICAgICAgJ1tjbGFzcy5wLWNvbXBvbmVudF0nOiAndHJ1ZScsXG4gICAgICAgICdbc3R5bGVdJzogJ3N0eWxlJyxcbiAgICAgICAgJ1thdHRyLnJvbGVdJzogJ2dyb3VwJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxsZWRieV0nOiAnYXJpYUxhYmVsbGVkQnknLFxuICAgICAgICAnW2F0dHIuZGF0YS1wYy1zZWN0aW9uXSc6IFwiJ3Jvb3QnXCIsXG4gICAgICAgICdbYXR0ci5kYXRhLXBjLW5hbWVdJzogXCInc2VsZWN0YnV0dG9uJ1wiXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RCdXR0b24gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIHNlbGVjdGl0ZW1zIHRvIGRpc3BsYXkgYXMgdGhlIGF2YWlsYWJsZSBvcHRpb25zLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9wdGlvbnM6IGFueVtdIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGxhYmVsIGZpZWxkIG9mIGFuIG9wdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBvcHRpb25MYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIHZhbHVlIGZpZWxkIG9mIGFuIG9wdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBvcHRpb25WYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGRpc2FibGVkIGZpZWxkIG9mIGFuIG9wdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBvcHRpb25EaXNhYmxlZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgc2VsZWN0aW9uIGNhbiBiZSBjbGVhcmVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB1bnNlbGVjdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBJbmRleCBvZiB0aGUgZWxlbWVudCBpbiB0YWJiaW5nIG9yZGVyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHRhYmluZGV4OiBudW1iZXIgPSAwO1xuICAgIC8qKlxuICAgICAqIFdoZW4gc3BlY2lmaWVkLCBhbGxvd3Mgc2VsZWN0aW5nIG11bHRpcGxlIHZhbHVlcy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgbXVsdGlwbGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBzZWxlY3Rpb24gY2FuIG5vdCBiZSBjbGVhcmVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhbGxvd0VtcHR5OiBib29sZWFuID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEVzdGFibGlzaGVzIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGUgY29tcG9uZW50IGFuZCBsYWJlbChzKSB3aGVyZSBpdHMgdmFsdWUgc2hvdWxkIGJlIG9uZSBvciBtb3JlIGVsZW1lbnQgSURzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgc2l6ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNpemU6ICdsYXJnZScgfCAnc21hbGwnO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIGRpc2FibGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBBIHByb3BlcnR5IHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGEgdmFsdWUgaW4gb3B0aW9ucy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkYXRhS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IHNob3VsZCBhdXRvbWF0aWNhbGx5IGdldCBmb2N1cyBvbiBsb2FkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvZm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIG9uIGlucHV0IGNsaWNrLlxuICAgICAqIEBwYXJhbSB7U2VsZWN0QnV0dG9uT3B0aW9uQ2xpY2tFdmVudH0gZXZlbnQgLSBDdXN0b20gY2xpY2sgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uT3B0aW9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxTZWxlY3RCdXR0b25PcHRpb25DbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0QnV0dG9uT3B0aW9uQ2xpY2tFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gc2VsZWN0aW9uIGNoYW5nZS5cbiAgICAgKiBAcGFyYW0ge1NlbGVjdEJ1dHRvbkNoYW5nZUV2ZW50fSBldmVudCAtIEN1c3RvbSBjaGFuZ2UgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8U2VsZWN0QnV0dG9uQ2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RCdXR0b25DaGFuZ2VFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBUZW1wbGF0ZSBvZiBhbiBpdGVtIGluIHRoZSBsaXN0LlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdpdGVtJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgX2l0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIGdldCBlcXVhbGl0eUtleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uVmFsdWUgPyBudWxsIDogdGhpcy5kYXRhS2V5O1xuICAgIH1cblxuICAgIHZhbHVlOiBhbnk7XG5cbiAgICBvbk1vZGVsQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBmb2N1c2VkSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBfY29tcG9uZW50U3R5bGUgPSBpbmplY3QoU2VsZWN0QnV0dG9uU3R5bGUpO1xuXG4gICAgZ2V0T3B0aW9uTGFiZWwob3B0aW9uOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uTGFiZWwgPyByZXNvbHZlRmllbGREYXRhKG9wdGlvbiwgdGhpcy5vcHRpb25MYWJlbCkgOiBvcHRpb24ubGFiZWwgIT0gdW5kZWZpbmVkID8gb3B0aW9uLmxhYmVsIDogb3B0aW9uO1xuICAgIH1cblxuICAgIGdldE9wdGlvblZhbHVlKG9wdGlvbjogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvblZhbHVlID8gcmVzb2x2ZUZpZWxkRGF0YShvcHRpb24sIHRoaXMub3B0aW9uVmFsdWUpIDogdGhpcy5vcHRpb25MYWJlbCB8fCBvcHRpb24udmFsdWUgPT09IHVuZGVmaW5lZCA/IG9wdGlvbiA6IG9wdGlvbi52YWx1ZTtcbiAgICB9XG5cbiAgICBpc09wdGlvbkRpc2FibGVkKG9wdGlvbjogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkRpc2FibGVkID8gcmVzb2x2ZUZpZWxkRGF0YShvcHRpb24sIHRoaXMub3B0aW9uRGlzYWJsZWQpIDogb3B0aW9uLmRpc2FibGVkICE9PSB1bmRlZmluZWQgPyBvcHRpb24uZGlzYWJsZWQgOiBmYWxzZTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbk9wdGlvblNlbGVjdChldmVudCwgb3B0aW9uLCBpbmRleCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkKG9wdGlvbik7XG5cbiAgICAgICAgaWYgKHNlbGVjdGVkICYmIHRoaXMudW5zZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb3B0aW9uVmFsdWUgPSB0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbik7XG4gICAgICAgIGxldCBuZXdWYWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSBuZXdWYWx1ZSA9IHRoaXMudmFsdWUuZmlsdGVyKCh2YWwpID0+ICFlcXVhbHModmFsLCBvcHRpb25WYWx1ZSwgdGhpcy5lcXVhbGl0eUtleSkpO1xuICAgICAgICAgICAgZWxzZSBuZXdWYWx1ZSA9IHRoaXMudmFsdWUgPyBbLi4udGhpcy52YWx1ZSwgb3B0aW9uVmFsdWVdIDogW29wdGlvblZhbHVlXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCAmJiAhdGhpcy5hbGxvd0VtcHR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3VmFsdWUgPSBzZWxlY3RlZCA/IG51bGwgOiBvcHRpb25WYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gaW5kZXg7XG4gICAgICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUpO1xuXG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub25PcHRpb25DbGljay5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgb3B0aW9uOiBvcHRpb24sXG4gICAgICAgICAgICBpbmRleDogaW5kZXhcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2hhbmdlVGFiSW5kZXhlcyhldmVudCwgZGlyZWN0aW9uKSB7XG4gICAgICAgIGxldCBmaXJzdFRhYmFibGVDaGlsZCwgaW5kZXg7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlbltpXS5nZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JykgPT09ICcwJykgZmlyc3RUYWJhYmxlQ2hpbGQgPSB7IGVsZW06IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlbltpXSwgaW5kZXg6IGkgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICdwcmV2Jykge1xuICAgICAgICAgICAgaWYgKGZpcnN0VGFiYWJsZUNoaWxkLmluZGV4ID09PSAwKSBpbmRleCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxO1xuICAgICAgICAgICAgZWxzZSBpbmRleCA9IGZpcnN0VGFiYWJsZUNoaWxkLmluZGV4IC0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmaXJzdFRhYmFibGVDaGlsZC5pbmRleCA9PT0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDEpIGluZGV4ID0gMDtcbiAgICAgICAgICAgIGVsc2UgaW5kZXggPSBmaXJzdFRhYmFibGVDaGlsZC5pbmRleCArIDE7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IGluZGV4O1xuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5baW5kZXhdLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25Gb2N1cyhldmVudDogRXZlbnQsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXggPSBpbmRleDtcbiAgICB9XG5cbiAgICBvbkJsdXIoKSB7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQoKTtcbiAgICB9XG5cbiAgICByZW1vdmVPcHRpb24ob3B0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuZmlsdGVyKCh2YWw6IGFueSkgPT4gIWVxdWFscyh2YWwsIHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSwgdGhpcy5kYXRhS2V5KSk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChvcHRpb246IGFueSkge1xuICAgICAgICBsZXQgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSB0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbik7XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlICYmIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCB2YWwgb2YgdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXF1YWxzKHZhbCwgb3B0aW9uVmFsdWUsIHRoaXMuZGF0YUtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VsZWN0ZWQgPSBlcXVhbHModGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pLCB0aGlzLnZhbHVlLCB0aGlzLmVxdWFsaXR5S2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZDtcbiAgICB9XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkO1xuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICAodGhpcy50ZW1wbGF0ZXMgYXMgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+KS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnaXRlbSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2l0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1NlbGVjdEJ1dHRvbiwgU2hhcmVkTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbU2VsZWN0QnV0dG9uLCBTaGFyZWRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdEJ1dHRvbk1vZHVsZSB7fVxuIl19