cax-design-system 2.8.3 → 2.8.4

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 (1061) hide show
  1. package/README.md +1 -1
  2. package/badge/badge.d.ts +1 -1
  3. package/badge/badge.directive.d.ts +1 -1
  4. package/fesm2022/cax-design-system-accordion.mjs +14 -13
  5. package/fesm2022/cax-design-system-accordion.mjs.map +1 -1
  6. package/fesm2022/cax-design-system-animate.mjs +9 -8
  7. package/fesm2022/cax-design-system-animate.mjs.map +1 -1
  8. package/fesm2022/cax-design-system-animateonscroll.mjs +9 -8
  9. package/fesm2022/cax-design-system-animateonscroll.mjs.map +1 -1
  10. package/fesm2022/cax-design-system-api.mjs +38 -38
  11. package/fesm2022/cax-design-system-api.mjs.map +1 -1
  12. package/fesm2022/cax-design-system-autocomplete.mjs +9 -9
  13. package/fesm2022/cax-design-system-autocomplete.mjs.map +1 -1
  14. package/fesm2022/cax-design-system-autofocus.mjs +8 -8
  15. package/fesm2022/cax-design-system-autofocus.mjs.map +1 -1
  16. package/fesm2022/cax-design-system-avatar.mjs +8 -8
  17. package/fesm2022/cax-design-system-avatar.mjs.map +1 -1
  18. package/fesm2022/cax-design-system-avatargroup.mjs +9 -9
  19. package/fesm2022/cax-design-system-avatargroup.mjs.map +1 -1
  20. package/fesm2022/cax-design-system-badge.mjs +13 -12
  21. package/fesm2022/cax-design-system-badge.mjs.map +1 -1
  22. package/fesm2022/cax-design-system-baseicon.mjs +4 -4
  23. package/fesm2022/cax-design-system-baseicon.mjs.map +1 -1
  24. package/fesm2022/cax-design-system-blockui.mjs +9 -9
  25. package/fesm2022/cax-design-system-blockui.mjs.map +1 -1
  26. package/fesm2022/cax-design-system-breadcrumb.mjs +9 -9
  27. package/fesm2022/cax-design-system-breadcrumb.mjs.map +1 -1
  28. package/fesm2022/cax-design-system-button.mjs +12 -12
  29. package/fesm2022/cax-design-system-button.mjs.map +1 -1
  30. package/fesm2022/cax-design-system-buttongroup.mjs +10 -9
  31. package/fesm2022/cax-design-system-buttongroup.mjs.map +1 -1
  32. package/fesm2022/cax-design-system-calendar.mjs +11 -11
  33. package/fesm2022/cax-design-system-calendar.mjs.map +1 -1
  34. package/fesm2022/cax-design-system-card.mjs +9 -9
  35. package/fesm2022/cax-design-system-card.mjs.map +1 -1
  36. package/fesm2022/cax-design-system-carousel.mjs +9 -9
  37. package/fesm2022/cax-design-system-carousel.mjs.map +1 -1
  38. package/fesm2022/cax-design-system-cascadeselect.mjs +13 -13
  39. package/fesm2022/cax-design-system-cascadeselect.mjs.map +1 -1
  40. package/fesm2022/cax-design-system-chart.mjs +9 -8
  41. package/fesm2022/cax-design-system-chart.mjs.map +1 -1
  42. package/fesm2022/cax-design-system-checkbox.mjs +9 -9
  43. package/fesm2022/cax-design-system-checkbox.mjs.map +1 -1
  44. package/fesm2022/cax-design-system-chip.mjs +9 -9
  45. package/fesm2022/cax-design-system-chip.mjs.map +1 -1
  46. package/fesm2022/cax-design-system-chips.mjs +9 -9
  47. package/fesm2022/cax-design-system-chips.mjs.map +1 -1
  48. package/fesm2022/cax-design-system-colorpicker.mjs +9 -9
  49. package/fesm2022/cax-design-system-colorpicker.mjs.map +1 -1
  50. package/fesm2022/cax-design-system-commentbox.mjs +9 -9
  51. package/fesm2022/cax-design-system-commentbox.mjs.map +1 -1
  52. package/fesm2022/cax-design-system-confirmdialog.mjs +9 -9
  53. package/fesm2022/cax-design-system-confirmdialog.mjs.map +1 -1
  54. package/fesm2022/cax-design-system-confirmpopup.mjs +10 -10
  55. package/fesm2022/cax-design-system-confirmpopup.mjs.map +1 -1
  56. package/fesm2022/cax-design-system-contextmenu.mjs +13 -12
  57. package/fesm2022/cax-design-system-contextmenu.mjs.map +1 -1
  58. package/fesm2022/cax-design-system-dataview.mjs +13 -12
  59. package/fesm2022/cax-design-system-dataview.mjs.map +1 -1
  60. package/fesm2022/cax-design-system-defer.mjs +9 -8
  61. package/fesm2022/cax-design-system-defer.mjs.map +1 -1
  62. package/fesm2022/cax-design-system-dialog.mjs +9 -9
  63. package/fesm2022/cax-design-system-dialog.mjs.map +1 -1
  64. package/fesm2022/cax-design-system-divider.mjs +8 -8
  65. package/fesm2022/cax-design-system-divider.mjs.map +1 -1
  66. package/fesm2022/cax-design-system-dock.mjs +9 -9
  67. package/fesm2022/cax-design-system-dock.mjs.map +1 -1
  68. package/fesm2022/cax-design-system-dom.mjs.map +1 -1
  69. package/fesm2022/cax-design-system-dragdrop.mjs +13 -11
  70. package/fesm2022/cax-design-system-dragdrop.mjs.map +1 -1
  71. package/fesm2022/cax-design-system-dropdown.mjs +12 -12
  72. package/fesm2022/cax-design-system-dropdown.mjs.map +1 -1
  73. package/fesm2022/cax-design-system-dynamicdialog.mjs +17 -16
  74. package/fesm2022/cax-design-system-dynamicdialog.mjs.map +1 -1
  75. package/fesm2022/cax-design-system-editor.mjs +9 -9
  76. package/fesm2022/cax-design-system-editor.mjs.map +1 -1
  77. package/fesm2022/cax-design-system-fieldset.mjs +10 -10
  78. package/fesm2022/cax-design-system-fieldset.mjs.map +1 -1
  79. package/fesm2022/cax-design-system-fileupload.mjs +9 -9
  80. package/fesm2022/cax-design-system-fileupload.mjs.map +1 -1
  81. package/fesm2022/cax-design-system-floatlabel.mjs +10 -9
  82. package/fesm2022/cax-design-system-floatlabel.mjs.map +1 -1
  83. package/fesm2022/cax-design-system-focustrap.mjs +9 -8
  84. package/fesm2022/cax-design-system-focustrap.mjs.map +1 -1
  85. package/fesm2022/cax-design-system-galleria.mjs +29 -25
  86. package/fesm2022/cax-design-system-galleria.mjs.map +1 -1
  87. package/fesm2022/cax-design-system-iconfield.mjs +9 -9
  88. package/fesm2022/cax-design-system-iconfield.mjs.map +1 -1
  89. package/fesm2022/cax-design-system-icons-angledoubledown.mjs +3 -3
  90. package/fesm2022/cax-design-system-icons-angledoubledown.mjs.map +1 -1
  91. package/fesm2022/cax-design-system-icons-angledoubleleft.mjs +3 -3
  92. package/fesm2022/cax-design-system-icons-angledoubleleft.mjs.map +1 -1
  93. package/fesm2022/cax-design-system-icons-angledoubleright.mjs +3 -3
  94. package/fesm2022/cax-design-system-icons-angledoubleright.mjs.map +1 -1
  95. package/fesm2022/cax-design-system-icons-angledoubleup.mjs +3 -3
  96. package/fesm2022/cax-design-system-icons-angledoubleup.mjs.map +1 -1
  97. package/fesm2022/cax-design-system-icons-angledown.mjs +3 -3
  98. package/fesm2022/cax-design-system-icons-angledown.mjs.map +1 -1
  99. package/fesm2022/cax-design-system-icons-angleleft.mjs +3 -3
  100. package/fesm2022/cax-design-system-icons-angleleft.mjs.map +1 -1
  101. package/fesm2022/cax-design-system-icons-angleright.mjs +3 -3
  102. package/fesm2022/cax-design-system-icons-angleright.mjs.map +1 -1
  103. package/fesm2022/cax-design-system-icons-angleup.mjs +3 -3
  104. package/fesm2022/cax-design-system-icons-angleup.mjs.map +1 -1
  105. package/fesm2022/cax-design-system-icons-arrowdown.mjs +3 -3
  106. package/fesm2022/cax-design-system-icons-arrowdown.mjs.map +1 -1
  107. package/fesm2022/cax-design-system-icons-arrowdownleft.mjs +3 -3
  108. package/fesm2022/cax-design-system-icons-arrowdownleft.mjs.map +1 -1
  109. package/fesm2022/cax-design-system-icons-arrowdownright.mjs +3 -3
  110. package/fesm2022/cax-design-system-icons-arrowdownright.mjs.map +1 -1
  111. package/fesm2022/cax-design-system-icons-arrowleft.mjs +3 -3
  112. package/fesm2022/cax-design-system-icons-arrowleft.mjs.map +1 -1
  113. package/fesm2022/cax-design-system-icons-arrowright.mjs +3 -3
  114. package/fesm2022/cax-design-system-icons-arrowright.mjs.map +1 -1
  115. package/fesm2022/cax-design-system-icons-arrowup.mjs +3 -3
  116. package/fesm2022/cax-design-system-icons-arrowup.mjs.map +1 -1
  117. package/fesm2022/cax-design-system-icons-ban.mjs +3 -3
  118. package/fesm2022/cax-design-system-icons-ban.mjs.map +1 -1
  119. package/fesm2022/cax-design-system-icons-bars.mjs +3 -3
  120. package/fesm2022/cax-design-system-icons-bars.mjs.map +1 -1
  121. package/fesm2022/cax-design-system-icons-blank.mjs +3 -3
  122. package/fesm2022/cax-design-system-icons-blank.mjs.map +1 -1
  123. package/fesm2022/cax-design-system-icons-calendar.mjs +3 -3
  124. package/fesm2022/cax-design-system-icons-calendar.mjs.map +1 -1
  125. package/fesm2022/cax-design-system-icons-caretleft.mjs +3 -3
  126. package/fesm2022/cax-design-system-icons-caretleft.mjs.map +1 -1
  127. package/fesm2022/cax-design-system-icons-caretright.mjs +3 -3
  128. package/fesm2022/cax-design-system-icons-caretright.mjs.map +1 -1
  129. package/fesm2022/cax-design-system-icons-check.mjs +3 -3
  130. package/fesm2022/cax-design-system-icons-check.mjs.map +1 -1
  131. package/fesm2022/cax-design-system-icons-chevrondown.mjs +3 -3
  132. package/fesm2022/cax-design-system-icons-chevrondown.mjs.map +1 -1
  133. package/fesm2022/cax-design-system-icons-chevronleft.mjs +3 -3
  134. package/fesm2022/cax-design-system-icons-chevronleft.mjs.map +1 -1
  135. package/fesm2022/cax-design-system-icons-chevronright.mjs +3 -3
  136. package/fesm2022/cax-design-system-icons-chevronright.mjs.map +1 -1
  137. package/fesm2022/cax-design-system-icons-chevronup.mjs +3 -3
  138. package/fesm2022/cax-design-system-icons-chevronup.mjs.map +1 -1
  139. package/fesm2022/cax-design-system-icons-exclamationtriangle.mjs +3 -3
  140. package/fesm2022/cax-design-system-icons-exclamationtriangle.mjs.map +1 -1
  141. package/fesm2022/cax-design-system-icons-eye.mjs +3 -3
  142. package/fesm2022/cax-design-system-icons-eye.mjs.map +1 -1
  143. package/fesm2022/cax-design-system-icons-eyeslash.mjs +3 -3
  144. package/fesm2022/cax-design-system-icons-eyeslash.mjs.map +1 -1
  145. package/fesm2022/cax-design-system-icons-filter.mjs +3 -3
  146. package/fesm2022/cax-design-system-icons-filter.mjs.map +1 -1
  147. package/fesm2022/cax-design-system-icons-filterslash.mjs +3 -3
  148. package/fesm2022/cax-design-system-icons-filterslash.mjs.map +1 -1
  149. package/fesm2022/cax-design-system-icons-home.mjs +3 -3
  150. package/fesm2022/cax-design-system-icons-home.mjs.map +1 -1
  151. package/fesm2022/cax-design-system-icons-infocircle.mjs +3 -3
  152. package/fesm2022/cax-design-system-icons-infocircle.mjs.map +1 -1
  153. package/fesm2022/cax-design-system-icons-minus.mjs +3 -3
  154. package/fesm2022/cax-design-system-icons-minus.mjs.map +1 -1
  155. package/fesm2022/cax-design-system-icons-pencil.mjs +3 -3
  156. package/fesm2022/cax-design-system-icons-pencil.mjs.map +1 -1
  157. package/fesm2022/cax-design-system-icons-plus.mjs +3 -3
  158. package/fesm2022/cax-design-system-icons-plus.mjs.map +1 -1
  159. package/fesm2022/cax-design-system-icons-refresh.mjs +3 -3
  160. package/fesm2022/cax-design-system-icons-refresh.mjs.map +1 -1
  161. package/fesm2022/cax-design-system-icons-search.mjs +3 -3
  162. package/fesm2022/cax-design-system-icons-search.mjs.map +1 -1
  163. package/fesm2022/cax-design-system-icons-searchminus.mjs +3 -3
  164. package/fesm2022/cax-design-system-icons-searchminus.mjs.map +1 -1
  165. package/fesm2022/cax-design-system-icons-searchplus.mjs +3 -3
  166. package/fesm2022/cax-design-system-icons-searchplus.mjs.map +1 -1
  167. package/fesm2022/cax-design-system-icons-sortalt.mjs +3 -3
  168. package/fesm2022/cax-design-system-icons-sortalt.mjs.map +1 -1
  169. package/fesm2022/cax-design-system-icons-sortamountdown.mjs +3 -3
  170. package/fesm2022/cax-design-system-icons-sortamountdown.mjs.map +1 -1
  171. package/fesm2022/cax-design-system-icons-sortamountupalt.mjs +3 -3
  172. package/fesm2022/cax-design-system-icons-sortamountupalt.mjs.map +1 -1
  173. package/fesm2022/cax-design-system-icons-spinner.mjs +3 -3
  174. package/fesm2022/cax-design-system-icons-spinner.mjs.map +1 -1
  175. package/fesm2022/cax-design-system-icons-star.mjs +3 -3
  176. package/fesm2022/cax-design-system-icons-star.mjs.map +1 -1
  177. package/fesm2022/cax-design-system-icons-starfill.mjs +3 -3
  178. package/fesm2022/cax-design-system-icons-starfill.mjs.map +1 -1
  179. package/fesm2022/cax-design-system-icons-thlarge.mjs +3 -3
  180. package/fesm2022/cax-design-system-icons-thlarge.mjs.map +1 -1
  181. package/fesm2022/cax-design-system-icons-times.mjs +3 -3
  182. package/fesm2022/cax-design-system-icons-times.mjs.map +1 -1
  183. package/fesm2022/cax-design-system-icons-timescircle.mjs +3 -3
  184. package/fesm2022/cax-design-system-icons-timescircle.mjs.map +1 -1
  185. package/fesm2022/cax-design-system-icons-trash.mjs +3 -3
  186. package/fesm2022/cax-design-system-icons-trash.mjs.map +1 -1
  187. package/fesm2022/cax-design-system-icons-undo.mjs +3 -3
  188. package/fesm2022/cax-design-system-icons-undo.mjs.map +1 -1
  189. package/fesm2022/cax-design-system-icons-upload.mjs +3 -3
  190. package/fesm2022/cax-design-system-icons-upload.mjs.map +1 -1
  191. package/fesm2022/cax-design-system-icons-windowmaximize.mjs +3 -3
  192. package/fesm2022/cax-design-system-icons-windowmaximize.mjs.map +1 -1
  193. package/fesm2022/cax-design-system-icons-windowminimize.mjs +3 -3
  194. package/fesm2022/cax-design-system-icons-windowminimize.mjs.map +1 -1
  195. package/fesm2022/cax-design-system-image.mjs +9 -9
  196. package/fesm2022/cax-design-system-image.mjs.map +1 -1
  197. package/fesm2022/cax-design-system-inplace.mjs +17 -15
  198. package/fesm2022/cax-design-system-inplace.mjs.map +1 -1
  199. package/fesm2022/cax-design-system-inputgroup.mjs +9 -9
  200. package/fesm2022/cax-design-system-inputgroup.mjs.map +1 -1
  201. package/fesm2022/cax-design-system-inputgroupaddon.mjs +9 -9
  202. package/fesm2022/cax-design-system-inputgroupaddon.mjs.map +1 -1
  203. package/fesm2022/cax-design-system-inputicon.mjs +9 -9
  204. package/fesm2022/cax-design-system-inputicon.mjs.map +1 -1
  205. package/fesm2022/cax-design-system-inputmask.mjs +9 -9
  206. package/fesm2022/cax-design-system-inputmask.mjs.map +1 -1
  207. package/fesm2022/cax-design-system-inputnumber.mjs +8 -8
  208. package/fesm2022/cax-design-system-inputnumber.mjs.map +1 -1
  209. package/fesm2022/cax-design-system-inputotp.mjs +9 -8
  210. package/fesm2022/cax-design-system-inputotp.mjs.map +1 -1
  211. package/fesm2022/cax-design-system-inputswitch.mjs +9 -9
  212. package/fesm2022/cax-design-system-inputswitch.mjs.map +1 -1
  213. package/fesm2022/cax-design-system-inputtext.mjs +13 -12
  214. package/fesm2022/cax-design-system-inputtext.mjs.map +1 -1
  215. package/fesm2022/cax-design-system-inputtextarea.mjs +13 -12
  216. package/fesm2022/cax-design-system-inputtextarea.mjs.map +1 -1
  217. package/fesm2022/cax-design-system-keyfilter.mjs +9 -8
  218. package/fesm2022/cax-design-system-keyfilter.mjs.map +1 -1
  219. package/fesm2022/cax-design-system-knob.mjs +9 -9
  220. package/fesm2022/cax-design-system-knob.mjs.map +1 -1
  221. package/fesm2022/cax-design-system-listbox.mjs +9 -9
  222. package/fesm2022/cax-design-system-listbox.mjs.map +1 -1
  223. package/fesm2022/cax-design-system-logo.mjs +8 -8
  224. package/fesm2022/cax-design-system-logo.mjs.map +1 -1
  225. package/fesm2022/cax-design-system-megamenu.mjs +13 -12
  226. package/fesm2022/cax-design-system-megamenu.mjs.map +1 -1
  227. package/fesm2022/cax-design-system-menu.mjs +18 -17
  228. package/fesm2022/cax-design-system-menu.mjs.map +1 -1
  229. package/fesm2022/cax-design-system-menubar.mjs +16 -15
  230. package/fesm2022/cax-design-system-menubar.mjs.map +1 -1
  231. package/fesm2022/cax-design-system-message.mjs +9 -9
  232. package/fesm2022/cax-design-system-message.mjs.map +1 -1
  233. package/fesm2022/cax-design-system-messages.mjs +9 -9
  234. package/fesm2022/cax-design-system-messages.mjs.map +1 -1
  235. package/fesm2022/cax-design-system-metergroup.mjs +14 -12
  236. package/fesm2022/cax-design-system-metergroup.mjs.map +1 -1
  237. package/fesm2022/cax-design-system-multiselect.mjs +13 -13
  238. package/fesm2022/cax-design-system-multiselect.mjs.map +1 -1
  239. package/fesm2022/cax-design-system-navigation.mjs +8 -8
  240. package/fesm2022/cax-design-system-navigation.mjs.map +1 -1
  241. package/fesm2022/cax-design-system-orderlist.mjs +9 -9
  242. package/fesm2022/cax-design-system-orderlist.mjs.map +1 -1
  243. package/fesm2022/cax-design-system-organizationchart.mjs +14 -13
  244. package/fesm2022/cax-design-system-organizationchart.mjs.map +1 -1
  245. package/fesm2022/cax-design-system-overlay.mjs +9 -9
  246. package/fesm2022/cax-design-system-overlay.mjs.map +1 -1
  247. package/fesm2022/cax-design-system-overlaypanel.mjs +10 -10
  248. package/fesm2022/cax-design-system-overlaypanel.mjs.map +1 -1
  249. package/fesm2022/cax-design-system-paginator.mjs +9 -9
  250. package/fesm2022/cax-design-system-paginator.mjs.map +1 -1
  251. package/fesm2022/cax-design-system-panel.mjs +10 -10
  252. package/fesm2022/cax-design-system-panel.mjs.map +1 -1
  253. package/fesm2022/cax-design-system-panelmenu.mjs +18 -17
  254. package/fesm2022/cax-design-system-panelmenu.mjs.map +1 -1
  255. package/fesm2022/cax-design-system-password.mjs +18 -16
  256. package/fesm2022/cax-design-system-password.mjs.map +1 -1
  257. package/fesm2022/cax-design-system-picklist.mjs +9 -9
  258. package/fesm2022/cax-design-system-picklist.mjs.map +1 -1
  259. package/fesm2022/cax-design-system-progressbar.mjs +9 -9
  260. package/fesm2022/cax-design-system-progressbar.mjs.map +1 -1
  261. package/fesm2022/cax-design-system-progressspinner.mjs +9 -9
  262. package/fesm2022/cax-design-system-progressspinner.mjs.map +1 -1
  263. package/fesm2022/cax-design-system-radiobutton.mjs +11 -11
  264. package/fesm2022/cax-design-system-radiobutton.mjs.map +1 -1
  265. package/fesm2022/cax-design-system-rating.mjs +9 -9
  266. package/fesm2022/cax-design-system-rating.mjs.map +1 -1
  267. package/fesm2022/cax-design-system-ripple.mjs +8 -8
  268. package/fesm2022/cax-design-system-ripple.mjs.map +1 -1
  269. package/fesm2022/cax-design-system-scroller.mjs +9 -9
  270. package/fesm2022/cax-design-system-scroller.mjs.map +1 -1
  271. package/fesm2022/cax-design-system-scrollpanel.mjs +9 -9
  272. package/fesm2022/cax-design-system-scrollpanel.mjs.map +1 -1
  273. package/fesm2022/cax-design-system-scrolltop.mjs +10 -10
  274. package/fesm2022/cax-design-system-scrolltop.mjs.map +1 -1
  275. package/fesm2022/cax-design-system-selectbutton.mjs +9 -9
  276. package/fesm2022/cax-design-system-selectbutton.mjs.map +1 -1
  277. package/fesm2022/cax-design-system-sidebar.mjs +9 -9
  278. package/fesm2022/cax-design-system-sidebar.mjs.map +1 -1
  279. package/fesm2022/cax-design-system-skeleton.mjs +9 -9
  280. package/fesm2022/cax-design-system-skeleton.mjs.map +1 -1
  281. package/fesm2022/cax-design-system-slidemenu.mjs +14 -13
  282. package/fesm2022/cax-design-system-slidemenu.mjs.map +1 -1
  283. package/fesm2022/cax-design-system-slider.mjs +9 -9
  284. package/fesm2022/cax-design-system-slider.mjs.map +1 -1
  285. package/fesm2022/cax-design-system-speeddial.mjs +9 -9
  286. package/fesm2022/cax-design-system-speeddial.mjs.map +1 -1
  287. package/fesm2022/cax-design-system-spinner.mjs +9 -9
  288. package/fesm2022/cax-design-system-spinner.mjs.map +1 -1
  289. package/fesm2022/cax-design-system-splitbutton.mjs +9 -9
  290. package/fesm2022/cax-design-system-splitbutton.mjs.map +1 -1
  291. package/fesm2022/cax-design-system-splitter.mjs +9 -9
  292. package/fesm2022/cax-design-system-splitter.mjs.map +1 -1
  293. package/fesm2022/cax-design-system-stepper.mjs +29 -25
  294. package/fesm2022/cax-design-system-stepper.mjs.map +1 -1
  295. package/fesm2022/cax-design-system-steps.mjs +9 -9
  296. package/fesm2022/cax-design-system-steps.mjs.map +1 -1
  297. package/fesm2022/cax-design-system-styleclass.mjs +9 -8
  298. package/fesm2022/cax-design-system-styleclass.mjs.map +1 -1
  299. package/fesm2022/cax-design-system-table.mjs +90 -90
  300. package/fesm2022/cax-design-system-table.mjs.map +1 -1
  301. package/fesm2022/cax-design-system-tableconfiguration.mjs +27 -13
  302. package/fesm2022/cax-design-system-tableconfiguration.mjs.map +1 -1
  303. package/fesm2022/cax-design-system-tabmenu.mjs +9 -9
  304. package/fesm2022/cax-design-system-tabmenu.mjs.map +1 -1
  305. package/fesm2022/cax-design-system-tabview.mjs +13 -13
  306. package/fesm2022/cax-design-system-tabview.mjs.map +1 -1
  307. package/fesm2022/cax-design-system-tag.mjs +9 -9
  308. package/fesm2022/cax-design-system-tag.mjs.map +1 -1
  309. package/fesm2022/cax-design-system-terminal.mjs +12 -12
  310. package/fesm2022/cax-design-system-terminal.mjs.map +1 -1
  311. package/fesm2022/cax-design-system-tieredmenu.mjs +13 -12
  312. package/fesm2022/cax-design-system-tieredmenu.mjs.map +1 -1
  313. package/fesm2022/cax-design-system-timeline.mjs +9 -9
  314. package/fesm2022/cax-design-system-timeline.mjs.map +1 -1
  315. package/fesm2022/cax-design-system-toast.mjs +12 -12
  316. package/fesm2022/cax-design-system-toast.mjs.map +1 -1
  317. package/fesm2022/cax-design-system-togglebutton.mjs +9 -9
  318. package/fesm2022/cax-design-system-togglebutton.mjs.map +1 -1
  319. package/fesm2022/cax-design-system-toggleswitch.mjs +9 -9
  320. package/fesm2022/cax-design-system-toggleswitch.mjs.map +1 -1
  321. package/fesm2022/cax-design-system-toolbar.mjs +9 -9
  322. package/fesm2022/cax-design-system-toolbar.mjs.map +1 -1
  323. package/fesm2022/cax-design-system-tooltip.mjs +9 -8
  324. package/fesm2022/cax-design-system-tooltip.mjs.map +1 -1
  325. package/fesm2022/cax-design-system-tree.mjs +13 -13
  326. package/fesm2022/cax-design-system-tree.mjs.map +1 -1
  327. package/fesm2022/cax-design-system-treeselect.mjs +9 -9
  328. package/fesm2022/cax-design-system-treeselect.mjs.map +1 -1
  329. package/fesm2022/cax-design-system-treetable.mjs +73 -58
  330. package/fesm2022/cax-design-system-treetable.mjs.map +1 -1
  331. package/fesm2022/cax-design-system-tristatecheckbox.mjs +9 -9
  332. package/fesm2022/cax-design-system-tristatecheckbox.mjs.map +1 -1
  333. package/fesm2022/cax-design-system-upload.mjs +9 -9
  334. package/fesm2022/cax-design-system-upload.mjs.map +1 -1
  335. package/fesm2022/cax-design-system-utils.mjs.map +1 -1
  336. package/fesm2022/cax-design-system-virtualscroller.mjs +9 -8
  337. package/fesm2022/cax-design-system-virtualscroller.mjs.map +1 -1
  338. package/inputnumber/inputnumber.d.ts +3 -3
  339. package/package.json +175 -515
  340. package/resources/cax.min.scss +1 -1
  341. package/resources/cax.scss +36 -14
  342. package/resources/components/calendar/calendar.scss +215 -219
  343. package/resources/components/table/table.scss +10 -3
  344. package/tableconfiguration/tableconfiguration.d.ts +2 -2
  345. package/esm2022/accordion/accordion.interface.mjs +0 -2
  346. package/esm2022/accordion/accordion.mjs +0 -598
  347. package/esm2022/accordion/accordion.module.mjs +0 -23
  348. package/esm2022/accordion/cax-design-system-accordion.mjs +0 -5
  349. package/esm2022/accordion/public_api.mjs +0 -4
  350. package/esm2022/animate/animate.mjs +0 -101
  351. package/esm2022/animate/cax-design-system-animate.mjs +0 -5
  352. package/esm2022/animate/public_api.mjs +0 -2
  353. package/esm2022/animateonscroll/animateonscroll.mjs +0 -185
  354. package/esm2022/animateonscroll/cax-design-system-animateonscroll.mjs +0 -5
  355. package/esm2022/animateonscroll/public_api.mjs +0 -2
  356. package/esm2022/api/blockableui.mjs +0 -2
  357. package/esm2022/api/cax-design-system-api.mjs +0 -5
  358. package/esm2022/api/caxconfig.mjs +0 -163
  359. package/esm2022/api/confirmaeventtype.mjs +0 -10
  360. package/esm2022/api/confirmation.mjs +0 -2
  361. package/esm2022/api/confirmationservice.mjs +0 -43
  362. package/esm2022/api/contextmenuservice.mjs +0 -22
  363. package/esm2022/api/filtermatchmode.mjs +0 -23
  364. package/esm2022/api/filtermetadata.mjs +0 -2
  365. package/esm2022/api/filteroperator.mjs +0 -5
  366. package/esm2022/api/filterservice.mjs +0 -225
  367. package/esm2022/api/lazyloadevent.mjs +0 -2
  368. package/esm2022/api/lazyloadmeta.mjs +0 -2
  369. package/esm2022/api/megamenuitem.mjs +0 -2
  370. package/esm2022/api/menuitem.mjs +0 -2
  371. package/esm2022/api/message.mjs +0 -2
  372. package/esm2022/api/messageservice.mjs +0 -47
  373. package/esm2022/api/overlayoptions.mjs +0 -2
  374. package/esm2022/api/overlayservice.mjs +0 -19
  375. package/esm2022/api/primeicons.mjs +0 -314
  376. package/esm2022/api/public_api.mjs +0 -35
  377. package/esm2022/api/scrolleroptions.mjs +0 -2
  378. package/esm2022/api/selectitem.mjs +0 -2
  379. package/esm2022/api/selectitemgroup.mjs +0 -2
  380. package/esm2022/api/shared.mjs +0 -65
  381. package/esm2022/api/sortevent.mjs +0 -2
  382. package/esm2022/api/sortmeta.mjs +0 -2
  383. package/esm2022/api/tablestate.mjs +0 -2
  384. package/esm2022/api/themegeneratorservice.mjs +0 -109
  385. package/esm2022/api/tooltipoptions.mjs +0 -2
  386. package/esm2022/api/translation.mjs +0 -2
  387. package/esm2022/api/translationkeys.mjs +0 -51
  388. package/esm2022/api/treedragdropservice.mjs +0 -21
  389. package/esm2022/api/treenode.mjs +0 -2
  390. package/esm2022/api/treenodedragevent.mjs +0 -2
  391. package/esm2022/api/treetablenode.mjs +0 -2
  392. package/esm2022/autocomplete/autocomplete.interface.mjs +0 -2
  393. package/esm2022/autocomplete/autocomplete.mjs +0 -1462
  394. package/esm2022/autocomplete/autocomplete.module.mjs +0 -30
  395. package/esm2022/autocomplete/cax-design-system-autocomplete.mjs +0 -5
  396. package/esm2022/autocomplete/public_api.mjs +0 -4
  397. package/esm2022/autofocus/autofocus.mjs +0 -78
  398. package/esm2022/autofocus/cax-design-system-autofocus.mjs +0 -5
  399. package/esm2022/autofocus/public_api.mjs +0 -2
  400. package/esm2022/avatar/avatar.mjs +0 -104
  401. package/esm2022/avatar/avatar.module.mjs +0 -16
  402. package/esm2022/avatar/cax-design-system-avatar.mjs +0 -5
  403. package/esm2022/avatar/public_api.mjs +0 -3
  404. package/esm2022/avatargroup/avatargroup.mjs +0 -32
  405. package/esm2022/avatargroup/avatargroup.module.mjs +0 -19
  406. package/esm2022/avatargroup/cax-design-system-avatargroup.mjs +0 -5
  407. package/esm2022/avatargroup/public_api.mjs +0 -3
  408. package/esm2022/badge/badge.directive.mjs +0 -193
  409. package/esm2022/badge/badge.mjs +0 -50
  410. package/esm2022/badge/badge.module.mjs +0 -20
  411. package/esm2022/badge/cax-design-system-badge.mjs +0 -5
  412. package/esm2022/badge/public_api.mjs +0 -4
  413. package/esm2022/baseicon/baseicon.mjs +0 -45
  414. package/esm2022/baseicon/cax-design-system-baseicon.mjs +0 -5
  415. package/esm2022/baseicon/public_api.mjs +0 -2
  416. package/esm2022/blockui/blockui.interface.mjs +0 -2
  417. package/esm2022/blockui/blockui.mjs +0 -206
  418. package/esm2022/blockui/cax-design-system-blockui.mjs +0 -5
  419. package/esm2022/blockui/public_api.mjs +0 -3
  420. package/esm2022/breadcrumb/breadcrumb.interface.mjs +0 -2
  421. package/esm2022/breadcrumb/breadcrumb.mjs +0 -120
  422. package/esm2022/breadcrumb/breadcrumb.module.mjs +0 -23
  423. package/esm2022/breadcrumb/cax-design-system-breadcrumb.mjs +0 -5
  424. package/esm2022/breadcrumb/public_api.mjs +0 -4
  425. package/esm2022/button/button.directive.mjs +0 -259
  426. package/esm2022/button/button.interface.mjs +0 -2
  427. package/esm2022/button/button.mjs +0 -190
  428. package/esm2022/button/button.module.mjs +0 -18
  429. package/esm2022/button/cax-design-system-button.mjs +0 -5
  430. package/esm2022/button/public_api.mjs +0 -5
  431. package/esm2022/buttongroup/buttongroup.mjs +0 -38
  432. package/esm2022/buttongroup/cax-design-system-buttongroup.mjs +0 -5
  433. package/esm2022/buttongroup/public_api.mjs +0 -2
  434. package/esm2022/calendar/calendar.interface.mjs +0 -2
  435. package/esm2022/calendar/calendar.mjs +0 -3242
  436. package/esm2022/calendar/calendar.module.mjs +0 -18
  437. package/esm2022/calendar/cax-design-system-calendar.mjs +0 -5
  438. package/esm2022/calendar/public_api.mjs +0 -4
  439. package/esm2022/card/card.interface.mjs +0 -2
  440. package/esm2022/card/card.mjs +0 -117
  441. package/esm2022/card/card.module.mjs +0 -21
  442. package/esm2022/card/cax-design-system-card.mjs +0 -5
  443. package/esm2022/card/public_api.mjs +0 -4
  444. package/esm2022/carousel/carousel.interface.mjs +0 -2
  445. package/esm2022/carousel/carousel.mjs +0 -968
  446. package/esm2022/carousel/cax-design-system-carousel.mjs +0 -5
  447. package/esm2022/carousel/public_api.mjs +0 -3
  448. package/esm2022/cascadeselect/cascadeselect.interface.mjs +0 -2
  449. package/esm2022/cascadeselect/cascadeselect.mjs +0 -1135
  450. package/esm2022/cascadeselect/cascadeselect.module.mjs +0 -25
  451. package/esm2022/cascadeselect/cax-design-system-cascadeselect.mjs +0 -5
  452. package/esm2022/cascadeselect/public_api.mjs +0 -4
  453. package/esm2022/cax-design-system.mjs +0 -5
  454. package/esm2022/chart/cax-design-system-chart.mjs +0 -5
  455. package/esm2022/chart/chart.mjs +0 -236
  456. package/esm2022/chart/public_api.mjs +0 -2
  457. package/esm2022/checkbox/cax-design-system-checkbox.mjs +0 -5
  458. package/esm2022/checkbox/checkbox.interface.mjs +0 -2
  459. package/esm2022/checkbox/checkbox.mjs +0 -318
  460. package/esm2022/checkbox/checkbox.module.mjs +0 -20
  461. package/esm2022/checkbox/public_api.mjs +0 -4
  462. package/esm2022/chip/cax-design-system-chip.mjs +0 -5
  463. package/esm2022/chip/chip.interface.mjs +0 -2
  464. package/esm2022/chip/chip.mjs +0 -90
  465. package/esm2022/chip/chip.module.mjs +0 -20
  466. package/esm2022/chip/public_api.mjs +0 -4
  467. package/esm2022/chips/cax-design-system-chips.mjs +0 -5
  468. package/esm2022/chips/chips.interface.mjs +0 -2
  469. package/esm2022/chips/chips.mjs +0 -610
  470. package/esm2022/chips/chips.module.mjs +0 -23
  471. package/esm2022/chips/public_api.mjs +0 -4
  472. package/esm2022/colorpicker/cax-design-system-colorpicker.mjs +0 -5
  473. package/esm2022/colorpicker/colorpicker.interface.mjs +0 -2
  474. package/esm2022/colorpicker/colorpicker.mjs +0 -715
  475. package/esm2022/colorpicker/colorpicker.module.mjs +0 -19
  476. package/esm2022/colorpicker/public_api.mjs +0 -4
  477. package/esm2022/commentbox/cax-design-system-commentbox.mjs +0 -5
  478. package/esm2022/commentbox/commentbox.mjs +0 -575
  479. package/esm2022/commentbox/commentbox.module.mjs +0 -27
  480. package/esm2022/commentbox/public_api.mjs +0 -3
  481. package/esm2022/confirmdialog/cax-design-system-confirmdialog.mjs +0 -5
  482. package/esm2022/confirmdialog/confirmdialog.interface.mjs +0 -2
  483. package/esm2022/confirmdialog/confirmdialog.mjs +0 -720
  484. package/esm2022/confirmdialog/confirmdialog.module.mjs +0 -25
  485. package/esm2022/confirmdialog/public_api.mjs +0 -4
  486. package/esm2022/confirmpopup/cax-design-system-confirmpopup.mjs +0 -5
  487. package/esm2022/confirmpopup/confirmpopup.interface.mjs +0 -2
  488. package/esm2022/confirmpopup/confirmpopup.mjs +0 -499
  489. package/esm2022/confirmpopup/public_api.mjs +0 -3
  490. package/esm2022/contextmenu/cax-design-system-contextmenu.mjs +0 -5
  491. package/esm2022/contextmenu/contextmenu.mjs +0 -1304
  492. package/esm2022/contextmenu/public_api.mjs +0 -2
  493. package/esm2022/dataview/cax-design-system-dataview.mjs +0 -5
  494. package/esm2022/dataview/dataview.interface.mjs +0 -2
  495. package/esm2022/dataview/dataview.mjs +0 -723
  496. package/esm2022/dataview/public_api.mjs +0 -3
  497. package/esm2022/defer/cax-design-system-defer.mjs +0 -5
  498. package/esm2022/defer/defer.mjs +0 -111
  499. package/esm2022/defer/public_api.mjs +0 -2
  500. package/esm2022/dialog/cax-design-system-dialog.mjs +0 -5
  501. package/esm2022/dialog/dialog.interface.mjs +0 -2
  502. package/esm2022/dialog/dialog.mjs +0 -959
  503. package/esm2022/dialog/dialog.module.mjs +0 -25
  504. package/esm2022/dialog/public_api.mjs +0 -4
  505. package/esm2022/divider/cax-design-system-divider.mjs +0 -5
  506. package/esm2022/divider/divider.mjs +0 -69
  507. package/esm2022/divider/divider.module.mjs +0 -16
  508. package/esm2022/divider/public_api.mjs +0 -3
  509. package/esm2022/dock/cax-design-system-dock.mjs +0 -5
  510. package/esm2022/dock/dock.interface.mjs +0 -2
  511. package/esm2022/dock/dock.mjs +0 -431
  512. package/esm2022/dock/public_api.mjs +0 -3
  513. package/esm2022/dom/cax-design-system-dom.mjs +0 -5
  514. package/esm2022/dom/connectedoverlayscrollhandler.mjs +0 -30
  515. package/esm2022/dom/domhandler.mjs +0 -722
  516. package/esm2022/dom/public_api.mjs +0 -3
  517. package/esm2022/dragdrop/cax-design-system-dragdrop.mjs +0 -5
  518. package/esm2022/dragdrop/dragdrop.mjs +0 -309
  519. package/esm2022/dragdrop/dragdrop.module.mjs +0 -18
  520. package/esm2022/dragdrop/public_api.mjs +0 -3
  521. package/esm2022/dropdown/cax-design-system-dropdown.mjs +0 -5
  522. package/esm2022/dropdown/dropdown-item.mjs +0 -72
  523. package/esm2022/dropdown/dropdown.interface.mjs +0 -2
  524. package/esm2022/dropdown/dropdown.mjs +0 -1599
  525. package/esm2022/dropdown/dropdown.module.mjs +0 -20
  526. package/esm2022/dropdown/public_api.mjs +0 -5
  527. package/esm2022/dynamicdialog/cax-design-system-dynamicdialog.mjs +0 -5
  528. package/esm2022/dynamicdialog/dialogservice.mjs +0 -102
  529. package/esm2022/dynamicdialog/dynamicdialog-config.mjs +0 -187
  530. package/esm2022/dynamicdialog/dynamicdialog-injector.mjs +0 -15
  531. package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +0 -119
  532. package/esm2022/dynamicdialog/dynamicdialog.mjs +0 -696
  533. package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +0 -20
  534. package/esm2022/dynamicdialog/public_api.mjs +0 -7
  535. package/esm2022/editor/cax-design-system-editor.mjs +0 -5
  536. package/esm2022/editor/editor.interface.mjs +0 -2
  537. package/esm2022/editor/editor.mjs +0 -281
  538. package/esm2022/editor/editor.module.mjs +0 -19
  539. package/esm2022/editor/public_api.mjs +0 -4
  540. package/esm2022/fieldset/cax-design-system-fieldset.mjs +0 -5
  541. package/esm2022/fieldset/fieldset.interface.mjs +0 -2
  542. package/esm2022/fieldset/fieldset.mjs +0 -297
  543. package/esm2022/fieldset/public_api.mjs +0 -3
  544. package/esm2022/fileupload/cax-design-system-fileupload.mjs +0 -5
  545. package/esm2022/fileupload/fileupload.interface.mjs +0 -2
  546. package/esm2022/fileupload/fileupload.mjs +0 -1188
  547. package/esm2022/fileupload/public_api.mjs +0 -3
  548. package/esm2022/floatlabel/cax-design-system-floatlabel.mjs +0 -5
  549. package/esm2022/floatlabel/floatlabel.mjs +0 -28
  550. package/esm2022/floatlabel/floatlabel.module.mjs +0 -20
  551. package/esm2022/floatlabel/public_api.mjs +0 -3
  552. package/esm2022/focustrap/cax-design-system-focustrap.mjs +0 -5
  553. package/esm2022/focustrap/focustrap.mjs +0 -103
  554. package/esm2022/focustrap/public_api.mjs +0 -2
  555. package/esm2022/galleria/cax-design-system-galleria.mjs +0 -5
  556. package/esm2022/galleria/galleria.interface.mjs +0 -2
  557. package/esm2022/galleria/galleria.mjs +0 -1668
  558. package/esm2022/galleria/public_api.mjs +0 -3
  559. package/esm2022/iconfield/cax-design-system-iconfield.mjs +0 -5
  560. package/esm2022/iconfield/iconfield.mjs +0 -44
  561. package/esm2022/iconfield/public_api.mjs +0 -2
  562. package/esm2022/icons/angledoubledown/angledoubledown.mjs +0 -35
  563. package/esm2022/icons/angledoubledown/cax-design-system-icons-angledoubledown.mjs +0 -5
  564. package/esm2022/icons/angledoubledown/public_api.mjs +0 -2
  565. package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +0 -35
  566. package/esm2022/icons/angledoubleleft/cax-design-system-icons-angledoubleleft.mjs +0 -5
  567. package/esm2022/icons/angledoubleleft/public_api.mjs +0 -2
  568. package/esm2022/icons/angledoubleright/angledoubleright.mjs +0 -35
  569. package/esm2022/icons/angledoubleright/cax-design-system-icons-angledoubleright.mjs +0 -5
  570. package/esm2022/icons/angledoubleright/public_api.mjs +0 -2
  571. package/esm2022/icons/angledoubleup/angledoubleup.mjs +0 -35
  572. package/esm2022/icons/angledoubleup/cax-design-system-icons-angledoubleup.mjs +0 -5
  573. package/esm2022/icons/angledoubleup/public_api.mjs +0 -2
  574. package/esm2022/icons/angledown/angledown.mjs +0 -31
  575. package/esm2022/icons/angledown/cax-design-system-icons-angledown.mjs +0 -5
  576. package/esm2022/icons/angledown/public_api.mjs +0 -2
  577. package/esm2022/icons/angleleft/angleleft.mjs +0 -31
  578. package/esm2022/icons/angleleft/cax-design-system-icons-angleleft.mjs +0 -5
  579. package/esm2022/icons/angleleft/public_api.mjs +0 -2
  580. package/esm2022/icons/angleright/angleright.mjs +0 -31
  581. package/esm2022/icons/angleright/cax-design-system-icons-angleright.mjs +0 -5
  582. package/esm2022/icons/angleright/public_api.mjs +0 -2
  583. package/esm2022/icons/angleup/angleup.mjs +0 -31
  584. package/esm2022/icons/angleup/cax-design-system-icons-angleup.mjs +0 -5
  585. package/esm2022/icons/angleup/public_api.mjs +0 -2
  586. package/esm2022/icons/arrowdown/arrowdown.mjs +0 -54
  587. package/esm2022/icons/arrowdown/cax-design-system-icons-arrowdown.mjs +0 -5
  588. package/esm2022/icons/arrowdown/public_api.mjs +0 -2
  589. package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +0 -31
  590. package/esm2022/icons/arrowdownleft/cax-design-system-icons-arrowdownleft.mjs +0 -5
  591. package/esm2022/icons/arrowdownleft/public_api.mjs +0 -2
  592. package/esm2022/icons/arrowdownright/arrowdownright.mjs +0 -31
  593. package/esm2022/icons/arrowdownright/cax-design-system-icons-arrowdownright.mjs +0 -5
  594. package/esm2022/icons/arrowdownright/public_api.mjs +0 -2
  595. package/esm2022/icons/arrowleft/arrowleft.mjs +0 -54
  596. package/esm2022/icons/arrowleft/cax-design-system-icons-arrowleft.mjs +0 -5
  597. package/esm2022/icons/arrowleft/public_api.mjs +0 -2
  598. package/esm2022/icons/arrowright/arrowright.mjs +0 -35
  599. package/esm2022/icons/arrowright/cax-design-system-icons-arrowright.mjs +0 -5
  600. package/esm2022/icons/arrowright/public_api.mjs +0 -2
  601. package/esm2022/icons/arrowup/arrowup.mjs +0 -54
  602. package/esm2022/icons/arrowup/cax-design-system-icons-arrowup.mjs +0 -5
  603. package/esm2022/icons/arrowup/public_api.mjs +0 -2
  604. package/esm2022/icons/ban/ban.mjs +0 -50
  605. package/esm2022/icons/ban/cax-design-system-icons-ban.mjs +0 -5
  606. package/esm2022/icons/ban/public_api.mjs +0 -2
  607. package/esm2022/icons/bars/bars.mjs +0 -35
  608. package/esm2022/icons/bars/cax-design-system-icons-bars.mjs +0 -5
  609. package/esm2022/icons/bars/public_api.mjs +0 -2
  610. package/esm2022/icons/blank/blank.mjs +0 -25
  611. package/esm2022/icons/blank/cax-design-system-icons-blank.mjs +0 -5
  612. package/esm2022/icons/blank/public_api.mjs +0 -2
  613. package/esm2022/icons/calendar/calendar.mjs +0 -31
  614. package/esm2022/icons/calendar/cax-design-system-icons-calendar.mjs +0 -5
  615. package/esm2022/icons/calendar/public_api.mjs +0 -2
  616. package/esm2022/icons/caretleft/caretleft.mjs +0 -31
  617. package/esm2022/icons/caretleft/cax-design-system-icons-caretleft.mjs +0 -5
  618. package/esm2022/icons/caretleft/public_api.mjs +0 -2
  619. package/esm2022/icons/caretright/caretright.mjs +0 -31
  620. package/esm2022/icons/caretright/cax-design-system-icons-caretright.mjs +0 -5
  621. package/esm2022/icons/caretright/public_api.mjs +0 -2
  622. package/esm2022/icons/check/cax-design-system-icons-check.mjs +0 -5
  623. package/esm2022/icons/check/check.mjs +0 -31
  624. package/esm2022/icons/check/public_api.mjs +0 -2
  625. package/esm2022/icons/chevrondown/cax-design-system-icons-chevrondown.mjs +0 -5
  626. package/esm2022/icons/chevrondown/chevrondown.mjs +0 -31
  627. package/esm2022/icons/chevrondown/public_api.mjs +0 -2
  628. package/esm2022/icons/chevronleft/cax-design-system-icons-chevronleft.mjs +0 -5
  629. package/esm2022/icons/chevronleft/chevronleft.mjs +0 -31
  630. package/esm2022/icons/chevronleft/public_api.mjs +0 -2
  631. package/esm2022/icons/chevronright/cax-design-system-icons-chevronright.mjs +0 -5
  632. package/esm2022/icons/chevronright/chevronright.mjs +0 -31
  633. package/esm2022/icons/chevronright/public_api.mjs +0 -2
  634. package/esm2022/icons/chevronup/cax-design-system-icons-chevronup.mjs +0 -5
  635. package/esm2022/icons/chevronup/chevronup.mjs +0 -31
  636. package/esm2022/icons/chevronup/public_api.mjs +0 -2
  637. package/esm2022/icons/exclamationtriangle/cax-design-system-icons-exclamationtriangle.mjs +0 -5
  638. package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +0 -66
  639. package/esm2022/icons/exclamationtriangle/public_api.mjs +0 -2
  640. package/esm2022/icons/eye/cax-design-system-icons-eye.mjs +0 -5
  641. package/esm2022/icons/eye/eye.mjs +0 -35
  642. package/esm2022/icons/eye/public_api.mjs +0 -2
  643. package/esm2022/icons/eyeslash/cax-design-system-icons-eyeslash.mjs +0 -5
  644. package/esm2022/icons/eyeslash/eyeslash.mjs +0 -54
  645. package/esm2022/icons/eyeslash/public_api.mjs +0 -2
  646. package/esm2022/icons/filter/cax-design-system-icons-filter.mjs +0 -5
  647. package/esm2022/icons/filter/filter.mjs +0 -50
  648. package/esm2022/icons/filter/public_api.mjs +0 -2
  649. package/esm2022/icons/filterslash/cax-design-system-icons-filterslash.mjs +0 -5
  650. package/esm2022/icons/filterslash/filterslash.mjs +0 -54
  651. package/esm2022/icons/filterslash/public_api.mjs +0 -2
  652. package/esm2022/icons/home/cax-design-system-icons-home.mjs +0 -5
  653. package/esm2022/icons/home/home.mjs +0 -54
  654. package/esm2022/icons/home/public_api.mjs +0 -2
  655. package/esm2022/icons/infocircle/cax-design-system-icons-infocircle.mjs +0 -5
  656. package/esm2022/icons/infocircle/infocircle.mjs +0 -54
  657. package/esm2022/icons/infocircle/public_api.mjs +0 -2
  658. package/esm2022/icons/minus/cax-design-system-icons-minus.mjs +0 -5
  659. package/esm2022/icons/minus/minus.mjs +0 -32
  660. package/esm2022/icons/minus/public_api.mjs +0 -2
  661. package/esm2022/icons/pencil/cax-design-system-icons-pencil.mjs +0 -5
  662. package/esm2022/icons/pencil/pencil.mjs +0 -50
  663. package/esm2022/icons/pencil/public_api.mjs +0 -2
  664. package/esm2022/icons/plus/cax-design-system-icons-plus.mjs +0 -5
  665. package/esm2022/icons/plus/plus.mjs +0 -50
  666. package/esm2022/icons/plus/public_api.mjs +0 -2
  667. package/esm2022/icons/refresh/cax-design-system-icons-refresh.mjs +0 -5
  668. package/esm2022/icons/refresh/public_api.mjs +0 -2
  669. package/esm2022/icons/refresh/refresh.mjs +0 -54
  670. package/esm2022/icons/search/cax-design-system-icons-search.mjs +0 -5
  671. package/esm2022/icons/search/public_api.mjs +0 -2
  672. package/esm2022/icons/search/search.mjs +0 -54
  673. package/esm2022/icons/searchminus/cax-design-system-icons-searchminus.mjs +0 -5
  674. package/esm2022/icons/searchminus/public_api.mjs +0 -2
  675. package/esm2022/icons/searchminus/searchminus.mjs +0 -54
  676. package/esm2022/icons/searchplus/cax-design-system-icons-searchplus.mjs +0 -5
  677. package/esm2022/icons/searchplus/public_api.mjs +0 -2
  678. package/esm2022/icons/searchplus/searchplus.mjs +0 -54
  679. package/esm2022/icons/sortalt/cax-design-system-icons-sortalt.mjs +0 -5
  680. package/esm2022/icons/sortalt/public_api.mjs +0 -2
  681. package/esm2022/icons/sortalt/sortalt.mjs +0 -62
  682. package/esm2022/icons/sortamountdown/cax-design-system-icons-sortamountdown.mjs +0 -5
  683. package/esm2022/icons/sortamountdown/public_api.mjs +0 -2
  684. package/esm2022/icons/sortamountdown/sortamountdown.mjs +0 -50
  685. package/esm2022/icons/sortamountupalt/cax-design-system-icons-sortamountupalt.mjs +0 -5
  686. package/esm2022/icons/sortamountupalt/public_api.mjs +0 -2
  687. package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +0 -50
  688. package/esm2022/icons/spinner/cax-design-system-icons-spinner.mjs +0 -5
  689. package/esm2022/icons/spinner/public_api.mjs +0 -2
  690. package/esm2022/icons/spinner/spinner.mjs +0 -50
  691. package/esm2022/icons/star/cax-design-system-icons-star.mjs +0 -5
  692. package/esm2022/icons/star/public_api.mjs +0 -2
  693. package/esm2022/icons/star/star.mjs +0 -50
  694. package/esm2022/icons/starfill/cax-design-system-icons-starfill.mjs +0 -5
  695. package/esm2022/icons/starfill/public_api.mjs +0 -2
  696. package/esm2022/icons/starfill/starfill.mjs +0 -50
  697. package/esm2022/icons/thlarge/cax-design-system-icons-thlarge.mjs +0 -5
  698. package/esm2022/icons/thlarge/public_api.mjs +0 -2
  699. package/esm2022/icons/thlarge/thlarge.mjs +0 -54
  700. package/esm2022/icons/times/cax-design-system-icons-times.mjs +0 -5
  701. package/esm2022/icons/times/public_api.mjs +0 -2
  702. package/esm2022/icons/times/times.mjs +0 -31
  703. package/esm2022/icons/timescircle/cax-design-system-icons-timescircle.mjs +0 -5
  704. package/esm2022/icons/timescircle/public_api.mjs +0 -2
  705. package/esm2022/icons/timescircle/timescircle.mjs +0 -54
  706. package/esm2022/icons/trash/cax-design-system-icons-trash.mjs +0 -5
  707. package/esm2022/icons/trash/public_api.mjs +0 -2
  708. package/esm2022/icons/trash/trash.mjs +0 -54
  709. package/esm2022/icons/undo/cax-design-system-icons-undo.mjs +0 -5
  710. package/esm2022/icons/undo/public_api.mjs +0 -2
  711. package/esm2022/icons/undo/undo.mjs +0 -54
  712. package/esm2022/icons/upload/cax-design-system-icons-upload.mjs +0 -5
  713. package/esm2022/icons/upload/public_api.mjs +0 -2
  714. package/esm2022/icons/upload/upload.mjs +0 -54
  715. package/esm2022/icons/windowmaximize/cax-design-system-icons-windowmaximize.mjs +0 -5
  716. package/esm2022/icons/windowmaximize/public_api.mjs +0 -2
  717. package/esm2022/icons/windowmaximize/windowmaximize.mjs +0 -54
  718. package/esm2022/icons/windowminimize/cax-design-system-icons-windowminimize.mjs +0 -5
  719. package/esm2022/icons/windowminimize/public_api.mjs +0 -2
  720. package/esm2022/icons/windowminimize/windowminimize.mjs +0 -54
  721. package/esm2022/image/cax-design-system-image.mjs +0 -5
  722. package/esm2022/image/image.interface.mjs +0 -2
  723. package/esm2022/image/image.mjs +0 -418
  724. package/esm2022/image/image.module.mjs +0 -17
  725. package/esm2022/image/public_api.mjs +0 -4
  726. package/esm2022/inplace/cax-design-system-inplace.mjs +0 -5
  727. package/esm2022/inplace/inplace.interface.mjs +0 -2
  728. package/esm2022/inplace/inplace.mjs +0 -243
  729. package/esm2022/inplace/public_api.mjs +0 -3
  730. package/esm2022/inputgroup/cax-design-system-inputgroup.mjs +0 -5
  731. package/esm2022/inputgroup/inputgroup.mjs +0 -55
  732. package/esm2022/inputgroup/inputgroup.module.mjs +0 -25
  733. package/esm2022/inputgroup/public_api.mjs +0 -3
  734. package/esm2022/inputgroupaddon/cax-design-system-inputgroupaddon.mjs +0 -5
  735. package/esm2022/inputgroupaddon/inputgroupaddon.mjs +0 -32
  736. package/esm2022/inputgroupaddon/inputgroupaddon.module.mjs +0 -24
  737. package/esm2022/inputgroupaddon/public_api.mjs +0 -3
  738. package/esm2022/inputicon/cax-design-system-inputicon.mjs +0 -5
  739. package/esm2022/inputicon/inputicon.mjs +0 -38
  740. package/esm2022/inputicon/public_api.mjs +0 -2
  741. package/esm2022/inputmask/cax-design-system-inputmask.mjs +0 -5
  742. package/esm2022/inputmask/inputmask.interface.mjs +0 -2
  743. package/esm2022/inputmask/inputmask.mjs +0 -848
  744. package/esm2022/inputmask/inputmask.module.mjs +0 -22
  745. package/esm2022/inputmask/public_api.mjs +0 -4
  746. package/esm2022/inputnumber/cax-design-system-inputnumber.mjs +0 -5
  747. package/esm2022/inputnumber/inputnumber.interface.mjs +0 -2
  748. package/esm2022/inputnumber/inputnumber.mjs +0 -1296
  749. package/esm2022/inputnumber/inputnumber.module.mjs +0 -17
  750. package/esm2022/inputnumber/public_api.mjs +0 -4
  751. package/esm2022/inputotp/cax-design-system-inputotp.mjs +0 -5
  752. package/esm2022/inputotp/inputotp.interface.mjs +0 -2
  753. package/esm2022/inputotp/inputotp.mjs +0 -381
  754. package/esm2022/inputotp/public_api.mjs +0 -3
  755. package/esm2022/inputswitch/cax-design-system-inputswitch.mjs +0 -5
  756. package/esm2022/inputswitch/inputswitch.interface.mjs +0 -2
  757. package/esm2022/inputswitch/inputswitch.mjs +0 -244
  758. package/esm2022/inputswitch/public_api.mjs +0 -3
  759. package/esm2022/inputtext/cax-design-system-inputtext.mjs +0 -5
  760. package/esm2022/inputtext/inputtext.component.mjs +0 -132
  761. package/esm2022/inputtext/inputtext.directive.mjs +0 -76
  762. package/esm2022/inputtext/inputtext.module.mjs +0 -20
  763. package/esm2022/inputtext/public_api.mjs +0 -4
  764. package/esm2022/inputtextarea/cax-design-system-inputtextarea.mjs +0 -5
  765. package/esm2022/inputtextarea/inputtextarea.component.mjs +0 -155
  766. package/esm2022/inputtextarea/inputtextarea.directive.mjs +0 -121
  767. package/esm2022/inputtextarea/inputtextarea.module.mjs +0 -20
  768. package/esm2022/inputtextarea/public_api.mjs +0 -4
  769. package/esm2022/keyfilter/cax-design-system-keyfilter.mjs +0 -5
  770. package/esm2022/keyfilter/keyfilter.interface.mjs +0 -2
  771. package/esm2022/keyfilter/keyfilter.mjs +0 -265
  772. package/esm2022/keyfilter/public_api.mjs +0 -3
  773. package/esm2022/knob/cax-design-system-knob.mjs +0 -5
  774. package/esm2022/knob/knob.mjs +0 -464
  775. package/esm2022/knob/public_api.mjs +0 -2
  776. package/esm2022/listbox/cax-design-system-listbox.mjs +0 -5
  777. package/esm2022/listbox/listbox.interface.mjs +0 -2
  778. package/esm2022/listbox/listbox.mjs +0 -1555
  779. package/esm2022/listbox/public_api.mjs +0 -3
  780. package/esm2022/logo/cax-design-system-logo.mjs +0 -5
  781. package/esm2022/logo/logo.mjs +0 -45
  782. package/esm2022/logo/logo.module.mjs +0 -16
  783. package/esm2022/logo/public_api.mjs +0 -3
  784. package/esm2022/megamenu/cax-design-system-megamenu.mjs +0 -5
  785. package/esm2022/megamenu/megamenu.interface.mjs +0 -2
  786. package/esm2022/megamenu/megamenu.mjs +0 -1190
  787. package/esm2022/megamenu/public_api.mjs +0 -3
  788. package/esm2022/menu/cax-design-system-menu.mjs +0 -5
  789. package/esm2022/menu/menu.mjs +0 -626
  790. package/esm2022/menu/menu.module.mjs +0 -22
  791. package/esm2022/menu/public_api.mjs +0 -3
  792. package/esm2022/menubar/cax-design-system-menubar.mjs +0 -5
  793. package/esm2022/menubar/menubar.interface.mjs +0 -2
  794. package/esm2022/menubar/menubar.mjs +0 -1249
  795. package/esm2022/menubar/public_api.mjs +0 -3
  796. package/esm2022/message/cax-design-system-message.mjs +0 -5
  797. package/esm2022/message/message.mjs +0 -112
  798. package/esm2022/message/public_api.mjs +0 -2
  799. package/esm2022/messages/cax-design-system-messages.mjs +0 -5
  800. package/esm2022/messages/messages.interface.mjs +0 -2
  801. package/esm2022/messages/messages.mjs +0 -283
  802. package/esm2022/messages/messages.module.mjs +0 -17
  803. package/esm2022/messages/public_api.mjs +0 -4
  804. package/esm2022/metergroup/cax-design-system-metergroup.mjs +0 -5
  805. package/esm2022/metergroup/metergroup.interface.mjs +0 -2
  806. package/esm2022/metergroup/metergroup.mjs +0 -280
  807. package/esm2022/metergroup/public_api.mjs +0 -3
  808. package/esm2022/multiselect/cax-design-system-multiselect.mjs +0 -5
  809. package/esm2022/multiselect/multiselect.interface.mjs +0 -2
  810. package/esm2022/multiselect/multiselect.mjs +0 -1875
  811. package/esm2022/multiselect/multiselect.module.mjs +0 -30
  812. package/esm2022/multiselect/public_api.mjs +0 -4
  813. package/esm2022/navigation/cax-design-system-navigation.mjs +0 -5
  814. package/esm2022/navigation/navigation.interface.mjs +0 -2
  815. package/esm2022/navigation/navigation.mjs +0 -399
  816. package/esm2022/navigation/navigation.module.mjs +0 -16
  817. package/esm2022/navigation/public_api.mjs +0 -3
  818. package/esm2022/orderlist/cax-design-system-orderlist.mjs +0 -5
  819. package/esm2022/orderlist/orderlist.interface.mjs +0 -2
  820. package/esm2022/orderlist/orderlist.mjs +0 -993
  821. package/esm2022/orderlist/public_api.mjs +0 -3
  822. package/esm2022/organizationchart/cax-design-system-organizationchart.mjs +0 -5
  823. package/esm2022/organizationchart/organizationchart.interface.mjs +0 -2
  824. package/esm2022/organizationchart/organizationchart.mjs +0 -416
  825. package/esm2022/organizationchart/public_api.mjs +0 -3
  826. package/esm2022/overlay/cax-design-system-overlay.mjs +0 -5
  827. package/esm2022/overlay/overlay.mjs +0 -579
  828. package/esm2022/overlay/overlay.module.mjs +0 -17
  829. package/esm2022/overlay/public_api.mjs +0 -3
  830. package/esm2022/overlaypanel/cax-design-system-overlaypanel.mjs +0 -5
  831. package/esm2022/overlaypanel/overlaypanel.mjs +0 -470
  832. package/esm2022/overlaypanel/overlaypanel.module.mjs +0 -17
  833. package/esm2022/overlaypanel/public_api.mjs +0 -3
  834. package/esm2022/paginator/cax-design-system-paginator.mjs +0 -5
  835. package/esm2022/paginator/paginator.interface.mjs +0 -2
  836. package/esm2022/paginator/paginator.mjs +0 -437
  837. package/esm2022/paginator/paginator.module.mjs +0 -27
  838. package/esm2022/paginator/public_api.mjs +0 -4
  839. package/esm2022/panel/cax-design-system-panel.mjs +0 -5
  840. package/esm2022/panel/panel.interface.mjs +0 -2
  841. package/esm2022/panel/panel.mjs +0 -393
  842. package/esm2022/panel/public_api.mjs +0 -3
  843. package/esm2022/panelmenu/cax-design-system-panelmenu.mjs +0 -5
  844. package/esm2022/panelmenu/panelmenu.interface.mjs +0 -2
  845. package/esm2022/panelmenu/panelmenu.mjs +0 -1276
  846. package/esm2022/panelmenu/public_api.mjs +0 -3
  847. package/esm2022/password/cax-design-system-password.mjs +0 -5
  848. package/esm2022/password/password.mjs +0 -1017
  849. package/esm2022/password/public_api.mjs +0 -2
  850. package/esm2022/picklist/cax-design-system-picklist.mjs +0 -5
  851. package/esm2022/picklist/picklist.interface.mjs +0 -2
  852. package/esm2022/picklist/picklist.mjs +0 -1909
  853. package/esm2022/picklist/public_api.mjs +0 -3
  854. package/esm2022/progressbar/cax-design-system-progressbar.mjs +0 -5
  855. package/esm2022/progressbar/progressbar.mjs +0 -86
  856. package/esm2022/progressbar/progressbar.module.mjs +0 -18
  857. package/esm2022/progressbar/public_api.mjs +0 -3
  858. package/esm2022/progressspinner/cax-design-system-progressspinner.mjs +0 -5
  859. package/esm2022/progressspinner/progressspinner.mjs +0 -112
  860. package/esm2022/progressspinner/progressspinner.module.mjs +0 -18
  861. package/esm2022/progressspinner/public_api.mjs +0 -3
  862. package/esm2022/public_api.mjs +0 -2
  863. package/esm2022/radiobutton/cax-design-system-radiobutton.mjs +0 -5
  864. package/esm2022/radiobutton/public_api.mjs +0 -4
  865. package/esm2022/radiobutton/radiobutton.interface.mjs +0 -2
  866. package/esm2022/radiobutton/radiobutton.mjs +0 -284
  867. package/esm2022/radiobutton/radiobutton.module.mjs +0 -16
  868. package/esm2022/rating/cax-design-system-rating.mjs +0 -5
  869. package/esm2022/rating/public_api.mjs +0 -3
  870. package/esm2022/rating/rating.interface.mjs +0 -2
  871. package/esm2022/rating/rating.mjs +0 -388
  872. package/esm2022/ripple/cax-design-system-ripple.mjs +0 -5
  873. package/esm2022/ripple/public_api.mjs +0 -3
  874. package/esm2022/ripple/ripple.mjs +0 -129
  875. package/esm2022/ripple/ripple.module.mjs +0 -16
  876. package/esm2022/scroller/cax-design-system-scroller.mjs +0 -5
  877. package/esm2022/scroller/public_api.mjs +0 -4
  878. package/esm2022/scroller/scroller.interface.mjs +0 -2
  879. package/esm2022/scroller/scroller.mjs +0 -981
  880. package/esm2022/scroller/scroller.module.mjs +0 -17
  881. package/esm2022/scrollpanel/cax-design-system-scrollpanel.mjs +0 -5
  882. package/esm2022/scrollpanel/public_api.mjs +0 -3
  883. package/esm2022/scrollpanel/scrollpanel.interface.mjs +0 -2
  884. package/esm2022/scrollpanel/scrollpanel.mjs +0 -501
  885. package/esm2022/scrolltop/cax-design-system-scrolltop.mjs +0 -5
  886. package/esm2022/scrolltop/public_api.mjs +0 -3
  887. package/esm2022/scrolltop/scrolltop.interface.mjs +0 -2
  888. package/esm2022/scrolltop/scrolltop.mjs +0 -282
  889. package/esm2022/selectbutton/cax-design-system-selectbutton.mjs +0 -5
  890. package/esm2022/selectbutton/public_api.mjs +0 -4
  891. package/esm2022/selectbutton/selectbutton.interface.mjs +0 -2
  892. package/esm2022/selectbutton/selectbutton.mjs +0 -303
  893. package/esm2022/selectbutton/selectbutton.module.mjs +0 -21
  894. package/esm2022/sidebar/cax-design-system-sidebar.mjs +0 -5
  895. package/esm2022/sidebar/public_api.mjs +0 -4
  896. package/esm2022/sidebar/sidebar.interface.mjs +0 -2
  897. package/esm2022/sidebar/sidebar.mjs +0 -488
  898. package/esm2022/sidebar/sidebar.module.mjs +0 -21
  899. package/esm2022/skeleton/cax-design-system-skeleton.mjs +0 -5
  900. package/esm2022/skeleton/public_api.mjs +0 -3
  901. package/esm2022/skeleton/skeleton.mjs +0 -87
  902. package/esm2022/skeleton/skeleton.module.mjs +0 -18
  903. package/esm2022/slidemenu/cax-design-system-slidemenu.mjs +0 -5
  904. package/esm2022/slidemenu/public_api.mjs +0 -3
  905. package/esm2022/slidemenu/slidemenu.interface.mjs +0 -2
  906. package/esm2022/slidemenu/slidemenu.mjs +0 -1501
  907. package/esm2022/slider/cax-design-system-slider.mjs +0 -5
  908. package/esm2022/slider/public_api.mjs +0 -3
  909. package/esm2022/slider/slider.interface.mjs +0 -2
  910. package/esm2022/slider/slider.mjs +0 -796
  911. package/esm2022/speeddial/cax-design-system-speeddial.mjs +0 -5
  912. package/esm2022/speeddial/public_api.mjs +0 -4
  913. package/esm2022/speeddial/speeddial.interface.mjs +0 -2
  914. package/esm2022/speeddial/speeddial.mjs +0 -611
  915. package/esm2022/speeddial/speeddial.module.mjs +0 -24
  916. package/esm2022/spinner/cax-design-system-spinner.mjs +0 -5
  917. package/esm2022/spinner/public_api.mjs +0 -2
  918. package/esm2022/spinner/spinner.mjs +0 -447
  919. package/esm2022/splitbutton/cax-design-system-splitbutton.mjs +0 -5
  920. package/esm2022/splitbutton/public_api.mjs +0 -4
  921. package/esm2022/splitbutton/splitbutton.interface.mjs +0 -2
  922. package/esm2022/splitbutton/splitbutton.mjs +0 -369
  923. package/esm2022/splitbutton/splitbutton.module.mjs +0 -23
  924. package/esm2022/splitter/cax-design-system-splitter.mjs +0 -5
  925. package/esm2022/splitter/public_api.mjs +0 -4
  926. package/esm2022/splitter/splitter.interface.mjs +0 -2
  927. package/esm2022/splitter/splitter.mjs +0 -490
  928. package/esm2022/splitter/splitter.module.mjs +0 -19
  929. package/esm2022/stepper/cax-design-system-stepper.mjs +0 -5
  930. package/esm2022/stepper/public_api.mjs +0 -3
  931. package/esm2022/stepper/stepper.interface.mjs +0 -2
  932. package/esm2022/stepper/stepper.mjs +0 -677
  933. package/esm2022/steps/cax-design-system-steps.mjs +0 -5
  934. package/esm2022/steps/public_api.mjs +0 -3
  935. package/esm2022/steps/steps.mjs +0 -207
  936. package/esm2022/steps/steps.module.mjs +0 -20
  937. package/esm2022/styleclass/cax-design-system-styleclass.mjs +0 -5
  938. package/esm2022/styleclass/public_api.mjs +0 -2
  939. package/esm2022/styleclass/styleclass.mjs +0 -316
  940. package/esm2022/table/cax-design-system-table.mjs +0 -5
  941. package/esm2022/table/columnfilter.interface.mjs +0 -2
  942. package/esm2022/table/components/cell-editor/cell-editor.mjs +0 -52
  943. package/esm2022/table/components/column-filter/column-filter.mjs +0 -865
  944. package/esm2022/table/components/column-filter-form-element/column-filter-form-element.mjs +0 -107
  945. package/esm2022/table/components/sort-icon/sort-icon.mjs +0 -78
  946. package/esm2022/table/components/table-body/table-body.mjs +0 -152
  947. package/esm2022/table/components/table-checkbox/table-checkbox.mjs +0 -83
  948. package/esm2022/table/components/table-header-checkbox/table-header-checkbox.mjs +0 -92
  949. package/esm2022/table/components/table-radio-button/table-radio-button.mjs +0 -79
  950. package/esm2022/table/directives/cancel-editable-row.directive.mjs +0 -32
  951. package/esm2022/table/directives/cell-highlight.directive.mjs +0 -42
  952. package/esm2022/table/directives/content-menu-row.directive.mjs +0 -70
  953. package/esm2022/table/directives/dynamic-column-width.directive.mjs +0 -34
  954. package/esm2022/table/directives/editable-column.directive.mjs +0 -344
  955. package/esm2022/table/directives/editable-row.directive.mjs +0 -32
  956. package/esm2022/table/directives/frozen-column.directive.mjs +0 -77
  957. package/esm2022/table/directives/init-editable-row.directive.mjs +0 -32
  958. package/esm2022/table/directives/reorderable-column.directive.mjs +0 -115
  959. package/esm2022/table/directives/reorderable-row-handle.directive.mjs +0 -25
  960. package/esm2022/table/directives/reorderable-row.directive.mjs +0 -122
  961. package/esm2022/table/directives/resizable-column.directive.mjs +0 -123
  962. package/esm2022/table/directives/row-group-header.directive.mjs +0 -26
  963. package/esm2022/table/directives/row-toggler.directive.mjs +0 -42
  964. package/esm2022/table/directives/save-editable-row.directive.mjs +0 -32
  965. package/esm2022/table/directives/selectable-row-double-click.directive.mjs +0 -71
  966. package/esm2022/table/directives/selectable-row.directive.mjs +0 -243
  967. package/esm2022/table/directives/sortable-column.directive.mjs +0 -90
  968. package/esm2022/table/public_api.mjs +0 -31
  969. package/esm2022/table/table.interface.mjs +0 -2
  970. package/esm2022/table/table.mjs +0 -2799
  971. package/esm2022/table/table.module.mjs +0 -157
  972. package/esm2022/table/table.service.mjs +0 -42
  973. package/esm2022/tableconfiguration/cax-design-system-tableconfiguration.mjs +0 -5
  974. package/esm2022/tableconfiguration/public_api.mjs +0 -3
  975. package/esm2022/tableconfiguration/tableconfiguration.mjs +0 -68
  976. package/esm2022/tableconfiguration/tableconfiguration.module.mjs +0 -16
  977. package/esm2022/tabmenu/cax-design-system-tabmenu.mjs +0 -5
  978. package/esm2022/tabmenu/public_api.mjs +0 -3
  979. package/esm2022/tabmenu/tabmenu.interface.mjs +0 -2
  980. package/esm2022/tabmenu/tabmenu.mjs +0 -576
  981. package/esm2022/tabview/cax-design-system-tabview.mjs +0 -5
  982. package/esm2022/tabview/public_api.mjs +0 -4
  983. package/esm2022/tabview/tabview.interface.mjs +0 -2
  984. package/esm2022/tabview/tabview.mjs +0 -913
  985. package/esm2022/tabview/tabview.module.mjs +0 -25
  986. package/esm2022/tag/cax-design-system-tag.mjs +0 -5
  987. package/esm2022/tag/public_api.mjs +0 -4
  988. package/esm2022/tag/tag.interface.mjs +0 -2
  989. package/esm2022/tag/tag.mjs +0 -95
  990. package/esm2022/tag/tag.module.mjs +0 -19
  991. package/esm2022/terminal/cax-design-system-terminal.mjs +0 -5
  992. package/esm2022/terminal/public_api.mjs +0 -3
  993. package/esm2022/terminal/terminal.mjs +0 -143
  994. package/esm2022/terminal/terminalservice.mjs +0 -25
  995. package/esm2022/tieredmenu/cax-design-system-tieredmenu.mjs +0 -5
  996. package/esm2022/tieredmenu/public_api.mjs +0 -4
  997. package/esm2022/tieredmenu/tieredmenu.interface.mjs +0 -2
  998. package/esm2022/tieredmenu/tieredmenu.mjs +0 -1289
  999. package/esm2022/tieredmenu/tiredmenu.module.mjs +0 -23
  1000. package/esm2022/timeline/cax-design-system-timeline.mjs +0 -5
  1001. package/esm2022/timeline/public_api.mjs +0 -4
  1002. package/esm2022/timeline/timeline.interface.mjs +0 -2
  1003. package/esm2022/timeline/timeline.mjs +0 -83
  1004. package/esm2022/timeline/timeline.module.mjs +0 -19
  1005. package/esm2022/toast/cax-design-system-toast.mjs +0 -5
  1006. package/esm2022/toast/public_api.mjs +0 -4
  1007. package/esm2022/toast/toast.interface.mjs +0 -2
  1008. package/esm2022/toast/toast.mjs +0 -324
  1009. package/esm2022/toast/toast.module.mjs +0 -18
  1010. package/esm2022/toast/toastitem.mjs +0 -170
  1011. package/esm2022/togglebutton/cax-design-system-togglebutton.mjs +0 -5
  1012. package/esm2022/togglebutton/public_api.mjs +0 -3
  1013. package/esm2022/togglebutton/togglebutton.interface.mjs +0 -2
  1014. package/esm2022/togglebutton/togglebutton.mjs +0 -274
  1015. package/esm2022/toggleswitch/cax-design-system-toggleswitch.mjs +0 -5
  1016. package/esm2022/toggleswitch/public_api.mjs +0 -3
  1017. package/esm2022/toggleswitch/toggleswitch.mjs +0 -37
  1018. package/esm2022/toggleswitch/toggleswitch.module.mjs +0 -19
  1019. package/esm2022/toolbar/cax-design-system-toolbar.mjs +0 -5
  1020. package/esm2022/toolbar/public_api.mjs +0 -3
  1021. package/esm2022/toolbar/toolbar.interface.mjs +0 -2
  1022. package/esm2022/toolbar/toolbar.mjs +0 -111
  1023. package/esm2022/tooltip/cax-design-system-tooltip.mjs +0 -5
  1024. package/esm2022/tooltip/public_api.mjs +0 -3
  1025. package/esm2022/tooltip/tooltip.mjs +0 -889
  1026. package/esm2022/tooltip/tooltip.module.mjs +0 -20
  1027. package/esm2022/tree/cax-design-system-tree.mjs +0 -5
  1028. package/esm2022/tree/public_api.mjs +0 -4
  1029. package/esm2022/tree/tree.interface.mjs +0 -2
  1030. package/esm2022/tree/tree.mjs +0 -1544
  1031. package/esm2022/tree/tree.module.mjs +0 -31
  1032. package/esm2022/treeselect/cax-design-system-treeselect.mjs +0 -5
  1033. package/esm2022/treeselect/public_api.mjs +0 -4
  1034. package/esm2022/treeselect/treeselect.interface.mjs +0 -2
  1035. package/esm2022/treeselect/treeselect.mjs +0 -865
  1036. package/esm2022/treeselect/treeselect.module.mjs +0 -26
  1037. package/esm2022/treetable/cax-design-system-treetable.mjs +0 -5
  1038. package/esm2022/treetable/public_api.mjs +0 -3
  1039. package/esm2022/treetable/treetable.interface.mjs +0 -2
  1040. package/esm2022/treetable/treetable.mjs +0 -4111
  1041. package/esm2022/tristatecheckbox/cax-design-system-tristatecheckbox.mjs +0 -5
  1042. package/esm2022/tristatecheckbox/public_api.mjs +0 -4
  1043. package/esm2022/tristatecheckbox/tristatecheckbox.interface.mjs +0 -2
  1044. package/esm2022/tristatecheckbox/tristatecheckbox.mjs +0 -215
  1045. package/esm2022/tristatecheckbox/tristatecheckbox.module.mjs +0 -17
  1046. package/esm2022/ts-helpers/cax-design-system-ts-helpers.mjs +0 -5
  1047. package/esm2022/ts-helpers/public_api.mjs +0 -2
  1048. package/esm2022/ts-helpers/ts-helpers.mjs +0 -2
  1049. package/esm2022/upload/cax-design-system-upload.mjs +0 -5
  1050. package/esm2022/upload/public_api.mjs +0 -3
  1051. package/esm2022/upload/upload.component.mjs +0 -372
  1052. package/esm2022/upload/upload.component.module.mjs +0 -21
  1053. package/esm2022/utils/cax-design-system-utils.mjs +0 -5
  1054. package/esm2022/utils/objectutils.mjs +0 -258
  1055. package/esm2022/utils/public_api.mjs +0 -5
  1056. package/esm2022/utils/uniquecomponentid.mjs +0 -6
  1057. package/esm2022/utils/zindexutils.mjs +0 -35
  1058. package/esm2022/virtualscroller/cax-design-system-virtualscroller.mjs +0 -5
  1059. package/esm2022/virtualscroller/public_api.mjs +0 -3
  1060. package/esm2022/virtualscroller/virtualscroller.interface.mjs +0 -2
  1061. package/esm2022/virtualscroller/virtualscroller.mjs +0 -215
@@ -1,1304 +0,0 @@
1
- import { animate, style, transition, trigger } from '@angular/animations';
2
- import { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';
3
- import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Inject, Input, NgModule, Output, PLATFORM_ID, ViewChild, ViewEncapsulation, booleanAttribute, effect, forwardRef, numberAttribute, signal } from '@angular/core';
4
- import { RouterModule } from '@angular/router';
5
- import { CaxTemplate, SharedModule } from 'cax-design-system/api';
6
- import { DomHandler } from 'cax-design-system/dom';
7
- import { AngleRightIcon } from 'cax-design-system/icons/angleright';
8
- import { RippleModule } from 'cax-design-system/ripple';
9
- import { TooltipModule } from 'cax-design-system/tooltip';
10
- import { ObjectUtils, UniqueComponentId, ZIndexUtils } from 'cax-design-system/utils';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@angular/common";
13
- import * as i2 from "@angular/router";
14
- import * as i3 from "cax-design-system/tooltip";
15
- import * as i4 from "cax-design-system/api";
16
- export class ContextMenuSub {
17
- document;
18
- el;
19
- renderer;
20
- cd;
21
- contextMenu;
22
- ref;
23
- visible = false;
24
- items;
25
- itemTemplate;
26
- root = false;
27
- autoZIndex = true;
28
- baseZIndex = 0;
29
- popup;
30
- menuId;
31
- ariaLabel;
32
- ariaLabelledBy;
33
- level = 0;
34
- focusedItemId;
35
- activeItemPath;
36
- tabindex = 0;
37
- itemClick = new EventEmitter();
38
- itemMouseEnter = new EventEmitter();
39
- menuFocus = new EventEmitter();
40
- menuBlur = new EventEmitter();
41
- menuKeydown = new EventEmitter();
42
- sublistViewChild;
43
- constructor(document, el, renderer, cd, contextMenu, ref) {
44
- this.document = document;
45
- this.el = el;
46
- this.renderer = renderer;
47
- this.cd = cd;
48
- this.contextMenu = contextMenu;
49
- this.ref = ref;
50
- }
51
- getItemProp(processedItem, name, params = null) {
52
- return processedItem && processedItem.item ? ObjectUtils.getItemValue(processedItem.item[name], params) : undefined;
53
- }
54
- getItemId(processedItem) {
55
- return processedItem.item && processedItem.item?.id ? processedItem.item.id : `${this.menuId}_${processedItem.key}`;
56
- }
57
- getItemKey(processedItem) {
58
- return this.getItemId(processedItem);
59
- }
60
- getItemClass(processedItem) {
61
- return {
62
- ...this.getItemProp(processedItem, 'class'),
63
- 'p-menuitem': true,
64
- 'p-highlight': this.isItemActive(processedItem),
65
- 'p-menuitem-active': this.isItemActive(processedItem),
66
- 'p-focus': this.isItemFocused(processedItem),
67
- 'p-disabled': this.isItemDisabled(processedItem)
68
- };
69
- }
70
- getItemLabel(processedItem) {
71
- return this.getItemProp(processedItem, 'label');
72
- }
73
- getSeparatorItemClass(processedItem) {
74
- return {
75
- ...this.getItemProp(processedItem, 'class'),
76
- 'p-menuitem-separator': true
77
- };
78
- }
79
- getAriaSetSize() {
80
- return this.items.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;
81
- }
82
- getAriaPosInset(index) {
83
- return index - this.items.slice(0, index).filter((processedItem) => this.isItemVisible(processedItem) && this.getItemProp(processedItem, 'separator')).length + 1;
84
- }
85
- isItemVisible(processedItem) {
86
- return this.getItemProp(processedItem, 'visible') !== false;
87
- }
88
- isItemActive(processedItem) {
89
- if (this.activeItemPath) {
90
- return this.activeItemPath.some((path) => path.key === processedItem.key);
91
- }
92
- }
93
- isItemDisabled(processedItem) {
94
- return this.getItemProp(processedItem, 'disabled');
95
- }
96
- isItemFocused(processedItem) {
97
- return this.focusedItemId === this.getItemId(processedItem);
98
- }
99
- isItemGroup(processedItem) {
100
- return ObjectUtils.isNotEmpty(processedItem.items);
101
- }
102
- onItemMouseEnter(param) {
103
- const { event, processedItem } = param;
104
- this.itemMouseEnter.emit({ originalEvent: event, processedItem });
105
- }
106
- onItemClick(event, processedItem) {
107
- this.getItemProp(processedItem, 'command', { originalEvent: event, item: processedItem.item });
108
- this.itemClick.emit({ originalEvent: event, processedItem, isFocus: true });
109
- }
110
- onEnter(event, sublist) {
111
- if (event.fromState === 'void' && event.toState) {
112
- const sublist = event.element;
113
- this.position(sublist);
114
- }
115
- }
116
- position(sublist) {
117
- const parentItem = sublist.parentElement.parentElement;
118
- const containerOffset = DomHandler.getOffset(sublist.parentElement.parentElement);
119
- const viewport = DomHandler.getViewport();
120
- const sublistWidth = sublist.offsetParent ? sublist.offsetWidth : DomHandler.getHiddenElementOuterWidth(sublist);
121
- const itemOuterWidth = DomHandler.getOuterWidth(parentItem.children[0]);
122
- sublist.style.top = '0px';
123
- if (parseInt(containerOffset.left, 10) + itemOuterWidth + sublistWidth > viewport.width - DomHandler.calculateScrollbarWidth()) {
124
- sublist.style.left = -1 * sublistWidth + 'px';
125
- }
126
- else {
127
- sublist.style.left = itemOuterWidth + 'px';
128
- }
129
- }
130
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextMenuSub, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: forwardRef(() => ContextMenu) }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
131
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: ContextMenuSub, selector: "p-contextMenuSub", inputs: { visible: ["visible", "visible", booleanAttribute], items: "items", itemTemplate: "itemTemplate", root: ["root", "root", booleanAttribute], autoZIndex: ["autoZIndex", "autoZIndex", booleanAttribute], baseZIndex: ["baseZIndex", "baseZIndex", numberAttribute], popup: ["popup", "popup", booleanAttribute], menuId: "menuId", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", level: ["level", "level", numberAttribute], focusedItemId: "focusedItemId", activeItemPath: "activeItemPath", tabindex: ["tabindex", "tabindex", numberAttribute] }, outputs: { itemClick: "itemClick", itemMouseEnter: "itemMouseEnter", menuFocus: "menuFocus", menuBlur: "menuBlur", menuKeydown: "menuKeydown" }, host: { classAttribute: "cax-element" }, viewQueries: [{ propertyName: "sublistViewChild", first: true, predicate: ["sublist"], descendants: true }], ngImport: i0, template: `
132
- <ul
133
- *ngIf="root ? true : visible"
134
- #sublist
135
- role="menu"
136
- [ngClass]="{ 'p-submenu-list': !root, 'p-contextmenu-root-list': root }"
137
- [@overlayAnimation]="visible"
138
- (@overlayAnimation.start)="onEnter($event, sublist)"
139
- [attr.id]="menuId + '_list'"
140
- [tabindex]="tabindex"
141
- [attr.aria-label]="ariaLabel"
142
- [attr.aria-labelledBy]="ariaLabelledBy"
143
- [attr.aria-activedescendant]="focusedItemId"
144
- [attr.aria-orientation]="'vertical'"
145
- [attr.data-pc-section]="'menu'"
146
- (keydown)="menuKeydown.emit($event)"
147
- (focus)="menuFocus.emit($event)"
148
- (blur)="menuBlur.emit($event)"
149
- >
150
- <ng-template ngFor let-processedItem [ngForOf]="items" let-index="index">
151
- <li
152
- *ngIf="isItemVisible(processedItem) && getItemProp(processedItem, 'separator')"
153
- [attr.id]="getItemId(processedItem)"
154
- [ngStyle]="getItemProp(processedItem, 'style')"
155
- [ngClass]="getSeparatorItemClass(processedItem)"
156
- role="separator"
157
- [attr.data-pc-section]="'separator'"
158
- ></li>
159
- <li
160
- #listItem
161
- *ngIf="isItemVisible(processedItem) && !getItemProp(processedItem, 'separator')"
162
- role="menuitem"
163
- [attr.id]="getItemId(processedItem)"
164
- [attr.data-pc-section]="'menuitem'"
165
- [attr.data-p-highlight]="isItemActive(processedItem)"
166
- [attr.data-p-focused]="isItemFocused(processedItem)"
167
- [attr.data-p-disabled]="isItemDisabled(processedItem)"
168
- [attr.aria-label]="getItemLabel(processedItem)"
169
- [attr.aria-disabled]="isItemDisabled(processedItem) || undefined"
170
- [attr.aria-haspopup]="isItemGroup(processedItem) && !getItemProp(processedItem, 'to') ? 'menu' : undefined"
171
- [attr.aria-expanded]="isItemGroup(processedItem) ? isItemActive(processedItem) : undefined"
172
- [attr.aria-level]="level + 1"
173
- [attr.aria-setsize]="getAriaSetSize()"
174
- [attr.aria-posinset]="getAriaPosInset(index)"
175
- [ngStyle]="getItemProp(processedItem, 'style')"
176
- [ngClass]="getItemClass(processedItem)"
177
- [class]="getItemProp(processedItem, 'styleClass')"
178
- caxTooltip
179
- [tooltipOptions]="getItemProp(processedItem, 'tooltipOptions')"
180
- >
181
- <div [attr.data-pc-section]="'content'" class="p-menuitem-content" (click)="onItemClick($event, processedItem)" (mouseenter)="onItemMouseEnter({ $event, processedItem })">
182
- <ng-container *ngIf="!itemTemplate">
183
- <a
184
- *ngIf="!getItemProp(processedItem, 'routerLink')"
185
- [attr.href]="getItemProp(processedItem, 'url')"
186
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
187
- [attr.data-pc-section]="'action'"
188
- [target]="getItemProp(processedItem, 'target')"
189
- [ngClass]="{ 'p-menuitem-link': true }"
190
- [attr.tabindex]="-1"
191
- pRipple
192
- >
193
- <span
194
- *ngIf="getItemProp(processedItem, 'icon')"
195
- class="p-menuitem-icon"
196
- [ngClass]="getItemProp(processedItem, 'icon')"
197
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
198
- [attr.data-pc-section]="'icon'"
199
- [attr.tabindex]="-1"
200
- >
201
- </span>
202
- <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="p-menuitem-text" [attr.data-pc-section]="'label'">
203
- {{ getItemLabel(processedItem) }}
204
- </span>
205
- <ng-template #htmlLabel>
206
- <span class="p-menuitem-text" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
207
- </ng-template>
208
- <span class="p-menuitem-badge" *ngIf="getItemProp(processedItem, 'badge')" [ngClass]="getItemProp(processedItem, 'badgeStyleClass')">{{ getItemProp(processedItem, 'badge') }}</span>
209
-
210
- <ng-container *ngIf="isItemGroup(processedItem)">
211
- <AngleRightIcon *ngIf="!contextMenu.submenuIconTemplate" [styleClass]="'p-submenu-icon'" [attr.data-pc-section]="'submenuicon'" />
212
- <ng-template *ngTemplateOutlet="contextMenu.submenuIconTemplate" [attr.data-pc-section]="'submenuicon'"></ng-template>
213
- </ng-container>
214
- </a>
215
- <a
216
- *ngIf="getItemProp(processedItem, 'routerLink')"
217
- [routerLink]="getItemProp(processedItem, 'routerLink')"
218
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
219
- [attr.tabindex]="-1"
220
- [attr.data-pc-section]="'action'"
221
- [queryParams]="getItemProp(processedItem, 'queryParams')"
222
- [routerLinkActive]="'p-menuitem-link-active'"
223
- [routerLinkActiveOptions]="getItemProp(processedItem, 'routerLinkActiveOptions') || { exact: false }"
224
- [target]="getItemProp(processedItem, 'target')"
225
- [ngClass]="{ 'p-menuitem-link': true, 'p-disabled': getItemProp(processedItem, 'disabled') }"
226
- [fragment]="getItemProp(processedItem, 'fragment')"
227
- [queryParamsHandling]="getItemProp(processedItem, 'queryParamsHandling')"
228
- [preserveFragment]="getItemProp(processedItem, 'preserveFragment')"
229
- [skipLocationChange]="getItemProp(processedItem, 'skipLocationChange')"
230
- [replaceUrl]="getItemProp(processedItem, 'replaceUrl')"
231
- [state]="getItemProp(processedItem, 'state')"
232
- pRipple
233
- >
234
- <span
235
- *ngIf="getItemProp(processedItem, 'icon')"
236
- class="p-menuitem-icon"
237
- [ngClass]="getItemProp(processedItem, 'icon')"
238
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
239
- [attr.data-pc-section]="'icon'"
240
- [attr.tabindex]="-1"
241
- >
242
- </span>
243
- <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="p-menuitem-text" [attr.data-pc-section]="'label'">
244
- {{ getItemLabel(processedItem) }}
245
- </span>
246
- <ng-template #htmlLabel>
247
- <span class="p-menuitem-text" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
248
- </ng-template>
249
- <span class="p-menuitem-badge" *ngIf="getItemProp(processedItem, 'badge')" [ngClass]="getItemProp(processedItem, 'badgeStyleClass')">{{ getItemProp(processedItem, 'badge') }}</span>
250
-
251
- <ng-container *ngIf="isItemGroup(processedItem)">
252
- <AngleRightIcon *ngIf="!contextMenu.submenuIconTemplate" [styleClass]="'p-submenu-icon'" [attr.data-pc-section]="'submenuicon'" />
253
- <ng-template *ngTemplateOutlet="contextMenu.submenuIconTemplate" [attr.data-pc-section]="'submenuicon'"></ng-template>
254
- </ng-container>
255
- </a>
256
- </ng-container>
257
- <ng-container *ngIf="itemTemplate">
258
- <ng-template *ngTemplateOutlet="itemTemplate; context: { $implicit: processedItem.item }"></ng-template>
259
- </ng-container>
260
- </div>
261
-
262
- <p-contextMenuSub
263
- *ngIf="isItemVisible(processedItem) && isItemGroup(processedItem)"
264
- [items]="processedItem.items"
265
- [itemTemplate]="itemTemplate"
266
- [menuId]="menuId"
267
- [visible]="isItemActive(processedItem) && isItemGroup(processedItem)"
268
- [activeItemPath]="activeItemPath"
269
- [focusedItemId]="focusedItemId"
270
- [level]="level + 1"
271
- (itemClick)="itemClick.emit($event)"
272
- (itemMouseEnter)="onItemMouseEnter($event)"
273
- ></p-contextMenuSub>
274
- </li>
275
- </ng-template>
276
- </ul>
277
- `, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(() => i1.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i0.forwardRef(() => i2.RouterLink), selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i0.forwardRef(() => i2.RouterLinkActive), selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i0.forwardRef(() => i3.Tooltip), selector: "[caxTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "caxTooltip", "tooltipDisabled", "tooltipOptions", "linkUrl", "linkText"] }, { kind: "component", type: i0.forwardRef(() => AngleRightIcon), selector: "AngleRightIcon" }, { kind: "component", type: i0.forwardRef(() => ContextMenuSub), selector: "p-contextMenuSub", inputs: ["visible", "items", "itemTemplate", "root", "autoZIndex", "baseZIndex", "popup", "menuId", "ariaLabel", "ariaLabelledBy", "level", "focusedItemId", "activeItemPath", "tabindex"], outputs: ["itemClick", "itemMouseEnter", "menuFocus", "menuBlur", "menuKeydown"] }], animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0 })]), transition(':leave', [style({ opacity: 0 })])])], encapsulation: i0.ViewEncapsulation.None });
278
- }
279
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextMenuSub, decorators: [{
280
- type: Component,
281
- args: [{
282
- selector: 'p-contextMenuSub',
283
- template: `
284
- <ul
285
- *ngIf="root ? true : visible"
286
- #sublist
287
- role="menu"
288
- [ngClass]="{ 'p-submenu-list': !root, 'p-contextmenu-root-list': root }"
289
- [@overlayAnimation]="visible"
290
- (@overlayAnimation.start)="onEnter($event, sublist)"
291
- [attr.id]="menuId + '_list'"
292
- [tabindex]="tabindex"
293
- [attr.aria-label]="ariaLabel"
294
- [attr.aria-labelledBy]="ariaLabelledBy"
295
- [attr.aria-activedescendant]="focusedItemId"
296
- [attr.aria-orientation]="'vertical'"
297
- [attr.data-pc-section]="'menu'"
298
- (keydown)="menuKeydown.emit($event)"
299
- (focus)="menuFocus.emit($event)"
300
- (blur)="menuBlur.emit($event)"
301
- >
302
- <ng-template ngFor let-processedItem [ngForOf]="items" let-index="index">
303
- <li
304
- *ngIf="isItemVisible(processedItem) && getItemProp(processedItem, 'separator')"
305
- [attr.id]="getItemId(processedItem)"
306
- [ngStyle]="getItemProp(processedItem, 'style')"
307
- [ngClass]="getSeparatorItemClass(processedItem)"
308
- role="separator"
309
- [attr.data-pc-section]="'separator'"
310
- ></li>
311
- <li
312
- #listItem
313
- *ngIf="isItemVisible(processedItem) && !getItemProp(processedItem, 'separator')"
314
- role="menuitem"
315
- [attr.id]="getItemId(processedItem)"
316
- [attr.data-pc-section]="'menuitem'"
317
- [attr.data-p-highlight]="isItemActive(processedItem)"
318
- [attr.data-p-focused]="isItemFocused(processedItem)"
319
- [attr.data-p-disabled]="isItemDisabled(processedItem)"
320
- [attr.aria-label]="getItemLabel(processedItem)"
321
- [attr.aria-disabled]="isItemDisabled(processedItem) || undefined"
322
- [attr.aria-haspopup]="isItemGroup(processedItem) && !getItemProp(processedItem, 'to') ? 'menu' : undefined"
323
- [attr.aria-expanded]="isItemGroup(processedItem) ? isItemActive(processedItem) : undefined"
324
- [attr.aria-level]="level + 1"
325
- [attr.aria-setsize]="getAriaSetSize()"
326
- [attr.aria-posinset]="getAriaPosInset(index)"
327
- [ngStyle]="getItemProp(processedItem, 'style')"
328
- [ngClass]="getItemClass(processedItem)"
329
- [class]="getItemProp(processedItem, 'styleClass')"
330
- caxTooltip
331
- [tooltipOptions]="getItemProp(processedItem, 'tooltipOptions')"
332
- >
333
- <div [attr.data-pc-section]="'content'" class="p-menuitem-content" (click)="onItemClick($event, processedItem)" (mouseenter)="onItemMouseEnter({ $event, processedItem })">
334
- <ng-container *ngIf="!itemTemplate">
335
- <a
336
- *ngIf="!getItemProp(processedItem, 'routerLink')"
337
- [attr.href]="getItemProp(processedItem, 'url')"
338
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
339
- [attr.data-pc-section]="'action'"
340
- [target]="getItemProp(processedItem, 'target')"
341
- [ngClass]="{ 'p-menuitem-link': true }"
342
- [attr.tabindex]="-1"
343
- pRipple
344
- >
345
- <span
346
- *ngIf="getItemProp(processedItem, 'icon')"
347
- class="p-menuitem-icon"
348
- [ngClass]="getItemProp(processedItem, 'icon')"
349
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
350
- [attr.data-pc-section]="'icon'"
351
- [attr.tabindex]="-1"
352
- >
353
- </span>
354
- <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="p-menuitem-text" [attr.data-pc-section]="'label'">
355
- {{ getItemLabel(processedItem) }}
356
- </span>
357
- <ng-template #htmlLabel>
358
- <span class="p-menuitem-text" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
359
- </ng-template>
360
- <span class="p-menuitem-badge" *ngIf="getItemProp(processedItem, 'badge')" [ngClass]="getItemProp(processedItem, 'badgeStyleClass')">{{ getItemProp(processedItem, 'badge') }}</span>
361
-
362
- <ng-container *ngIf="isItemGroup(processedItem)">
363
- <AngleRightIcon *ngIf="!contextMenu.submenuIconTemplate" [styleClass]="'p-submenu-icon'" [attr.data-pc-section]="'submenuicon'" />
364
- <ng-template *ngTemplateOutlet="contextMenu.submenuIconTemplate" [attr.data-pc-section]="'submenuicon'"></ng-template>
365
- </ng-container>
366
- </a>
367
- <a
368
- *ngIf="getItemProp(processedItem, 'routerLink')"
369
- [routerLink]="getItemProp(processedItem, 'routerLink')"
370
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
371
- [attr.tabindex]="-1"
372
- [attr.data-pc-section]="'action'"
373
- [queryParams]="getItemProp(processedItem, 'queryParams')"
374
- [routerLinkActive]="'p-menuitem-link-active'"
375
- [routerLinkActiveOptions]="getItemProp(processedItem, 'routerLinkActiveOptions') || { exact: false }"
376
- [target]="getItemProp(processedItem, 'target')"
377
- [ngClass]="{ 'p-menuitem-link': true, 'p-disabled': getItemProp(processedItem, 'disabled') }"
378
- [fragment]="getItemProp(processedItem, 'fragment')"
379
- [queryParamsHandling]="getItemProp(processedItem, 'queryParamsHandling')"
380
- [preserveFragment]="getItemProp(processedItem, 'preserveFragment')"
381
- [skipLocationChange]="getItemProp(processedItem, 'skipLocationChange')"
382
- [replaceUrl]="getItemProp(processedItem, 'replaceUrl')"
383
- [state]="getItemProp(processedItem, 'state')"
384
- pRipple
385
- >
386
- <span
387
- *ngIf="getItemProp(processedItem, 'icon')"
388
- class="p-menuitem-icon"
389
- [ngClass]="getItemProp(processedItem, 'icon')"
390
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
391
- [attr.data-pc-section]="'icon'"
392
- [attr.tabindex]="-1"
393
- >
394
- </span>
395
- <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="p-menuitem-text" [attr.data-pc-section]="'label'">
396
- {{ getItemLabel(processedItem) }}
397
- </span>
398
- <ng-template #htmlLabel>
399
- <span class="p-menuitem-text" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
400
- </ng-template>
401
- <span class="p-menuitem-badge" *ngIf="getItemProp(processedItem, 'badge')" [ngClass]="getItemProp(processedItem, 'badgeStyleClass')">{{ getItemProp(processedItem, 'badge') }}</span>
402
-
403
- <ng-container *ngIf="isItemGroup(processedItem)">
404
- <AngleRightIcon *ngIf="!contextMenu.submenuIconTemplate" [styleClass]="'p-submenu-icon'" [attr.data-pc-section]="'submenuicon'" />
405
- <ng-template *ngTemplateOutlet="contextMenu.submenuIconTemplate" [attr.data-pc-section]="'submenuicon'"></ng-template>
406
- </ng-container>
407
- </a>
408
- </ng-container>
409
- <ng-container *ngIf="itemTemplate">
410
- <ng-template *ngTemplateOutlet="itemTemplate; context: { $implicit: processedItem.item }"></ng-template>
411
- </ng-container>
412
- </div>
413
-
414
- <p-contextMenuSub
415
- *ngIf="isItemVisible(processedItem) && isItemGroup(processedItem)"
416
- [items]="processedItem.items"
417
- [itemTemplate]="itemTemplate"
418
- [menuId]="menuId"
419
- [visible]="isItemActive(processedItem) && isItemGroup(processedItem)"
420
- [activeItemPath]="activeItemPath"
421
- [focusedItemId]="focusedItemId"
422
- [level]="level + 1"
423
- (itemClick)="itemClick.emit($event)"
424
- (itemMouseEnter)="onItemMouseEnter($event)"
425
- ></p-contextMenuSub>
426
- </li>
427
- </ng-template>
428
- </ul>
429
- `,
430
- animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0 })]), transition(':leave', [style({ opacity: 0 })])])],
431
- encapsulation: ViewEncapsulation.None,
432
- host: {
433
- class: 'cax-element'
434
- }
435
- }]
436
- }], ctorParameters: () => [{ type: Document, decorators: [{
437
- type: Inject,
438
- args: [DOCUMENT]
439
- }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: ContextMenu, decorators: [{
440
- type: Inject,
441
- args: [forwardRef(() => ContextMenu)]
442
- }] }, { type: i0.ViewContainerRef }], propDecorators: { visible: [{
443
- type: Input,
444
- args: [{ transform: booleanAttribute }]
445
- }], items: [{
446
- type: Input
447
- }], itemTemplate: [{
448
- type: Input
449
- }], root: [{
450
- type: Input,
451
- args: [{ transform: booleanAttribute }]
452
- }], autoZIndex: [{
453
- type: Input,
454
- args: [{ transform: booleanAttribute }]
455
- }], baseZIndex: [{
456
- type: Input,
457
- args: [{ transform: numberAttribute }]
458
- }], popup: [{
459
- type: Input,
460
- args: [{ transform: booleanAttribute }]
461
- }], menuId: [{
462
- type: Input
463
- }], ariaLabel: [{
464
- type: Input
465
- }], ariaLabelledBy: [{
466
- type: Input
467
- }], level: [{
468
- type: Input,
469
- args: [{ transform: numberAttribute }]
470
- }], focusedItemId: [{
471
- type: Input
472
- }], activeItemPath: [{
473
- type: Input
474
- }], tabindex: [{
475
- type: Input,
476
- args: [{ transform: numberAttribute }]
477
- }], itemClick: [{
478
- type: Output
479
- }], itemMouseEnter: [{
480
- type: Output
481
- }], menuFocus: [{
482
- type: Output
483
- }], menuBlur: [{
484
- type: Output
485
- }], menuKeydown: [{
486
- type: Output
487
- }], sublistViewChild: [{
488
- type: ViewChild,
489
- args: ['sublist']
490
- }] } });
491
- /**
492
- * ContextMenu displays an overlay menu on right click of its target. Note that components like Table has special integration with ContextMenu.
493
- * @group Components
494
- */
495
- export class ContextMenu {
496
- document;
497
- platformId;
498
- el;
499
- renderer;
500
- cd;
501
- config;
502
- overlayService;
503
- /**
504
- * An array of menuitems.
505
- * @group Props
506
- */
507
- set model(value) {
508
- this._model = value;
509
- this._processedItems = this.createProcessedItems(this._model || []);
510
- }
511
- get model() {
512
- return this._model;
513
- }
514
- /**
515
- * Event for which the menu must be displayed.
516
- * @group Props
517
- */
518
- triggerEvent = 'contextmenu';
519
- /**
520
- * Local template variable name of the element to attach the context menu.
521
- * @group Props
522
- */
523
- target;
524
- /**
525
- * Attaches the menu to document instead of a particular item.
526
- * @group Props
527
- */
528
- global;
529
- /**
530
- * Inline style of the component.
531
- * @group Props
532
- */
533
- style;
534
- /**
535
- * Style class of the component.
536
- * @group Props
537
- */
538
- styleClass;
539
- /**
540
- * Target element to attach the overlay, valid values are "body" or a local ng-template variable of another element.
541
- * @group Props
542
- */
543
- appendTo;
544
- /**
545
- * Whether to automatically manage layering.
546
- * @group Props
547
- */
548
- autoZIndex = true;
549
- /**
550
- * Base zIndex value to use in layering.
551
- * @group Props
552
- */
553
- baseZIndex = 0;
554
- /**
555
- * Current id state as a string.
556
- * @group Props
557
- */
558
- id;
559
- /**
560
- * Defines a string value that labels an interactive element.
561
- * @group Props
562
- */
563
- ariaLabel;
564
- /**
565
- * Identifier of the underlying input element.
566
- * @group Props
567
- */
568
- ariaLabelledBy;
569
- /**
570
- * Press delay in touch devices as miliseconds.
571
- * @group Props
572
- */
573
- pressDelay = 500;
574
- /**
575
- * Callback to invoke when overlay menu is shown.
576
- * @group Emits
577
- */
578
- onShow = new EventEmitter();
579
- /**
580
- * Callback to invoke when overlay menu is hidden.
581
- * @group Emits
582
- */
583
- onHide = new EventEmitter();
584
- templates;
585
- rootmenu;
586
- containerViewChild;
587
- submenuIconTemplate;
588
- itemTemplate;
589
- container;
590
- outsideClickListener;
591
- resizeListener;
592
- triggerEventListener;
593
- documentClickListener;
594
- documentTriggerListener;
595
- touchEndListener;
596
- pageX;
597
- pageY;
598
- visible = signal(false);
599
- relativeAlign;
600
- window;
601
- focused = false;
602
- activeItemPath = signal([]);
603
- focusedItemInfo = signal({ index: -1, level: 0, parentKey: '', item: null });
604
- submenuVisible = signal(false);
605
- searchValue = '';
606
- searchTimeout;
607
- _processedItems;
608
- _model;
609
- pressTimer;
610
- get visibleItems() {
611
- const processedItem = this.activeItemPath().find((p) => p.key === this.focusedItemInfo().parentKey);
612
- return processedItem ? processedItem.items : this.processedItems;
613
- }
614
- get processedItems() {
615
- if (!this._processedItems || !this._processedItems.length) {
616
- this._processedItems = this.createProcessedItems(this.model || []);
617
- }
618
- return this._processedItems;
619
- }
620
- get focusedItemId() {
621
- const focusedItem = this.focusedItemInfo();
622
- return focusedItem.item && focusedItem.item?.id ? focusedItem.item.id : focusedItem.index !== -1 ? `${this.id}${ObjectUtils.isNotEmpty(focusedItem.parentKey) ? '_' + focusedItem.parentKey : ''}_${focusedItem.index}` : null;
623
- }
624
- constructor(document, platformId, el, renderer, cd, config, overlayService) {
625
- this.document = document;
626
- this.platformId = platformId;
627
- this.el = el;
628
- this.renderer = renderer;
629
- this.cd = cd;
630
- this.config = config;
631
- this.overlayService = overlayService;
632
- this.window = this.document.defaultView;
633
- effect(() => {
634
- const path = this.activeItemPath();
635
- if (ObjectUtils.isNotEmpty(path)) {
636
- this.bindGlobalListeners();
637
- }
638
- else if (!this.visible()) {
639
- this.unbindGlobalListeners();
640
- }
641
- });
642
- }
643
- ngOnInit() {
644
- this.id = this.id || UniqueComponentId();
645
- this.bindTriggerEventListener();
646
- }
647
- isMobile() {
648
- return DomHandler.isIOS() || DomHandler.isAndroid();
649
- }
650
- bindTriggerEventListener() {
651
- if (isPlatformBrowser(this.platformId)) {
652
- if (!this.triggerEventListener) {
653
- if (!this.isMobile()) {
654
- if (this.global) {
655
- this.triggerEventListener = this.renderer.listen(this.document, this.triggerEvent, (event) => {
656
- this.show(event);
657
- });
658
- }
659
- else if (this.target) {
660
- this.triggerEventListener = this.renderer.listen(this.target, this.triggerEvent, (event) => {
661
- this.show(event);
662
- });
663
- }
664
- }
665
- else {
666
- if (this.global) {
667
- this.triggerEventListener = this.renderer.listen(this.document, 'touchstart', this.onTouchStart.bind(this));
668
- this.touchEndListener = this.renderer.listen(this.document, 'touchend', this.onTouchEnd.bind(this));
669
- }
670
- else if (this.target) {
671
- this.triggerEventListener = this.renderer.listen(this.target, 'touchstart', this.onTouchStart.bind(this));
672
- this.touchEndListener = this.renderer.listen(this.target, 'touchend', this.onTouchEnd.bind(this));
673
- }
674
- }
675
- }
676
- }
677
- }
678
- bindGlobalListeners() {
679
- if (isPlatformBrowser(this.platformId)) {
680
- if (!this.documentClickListener) {
681
- const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
682
- this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
683
- if (this.containerViewChild.nativeElement.offsetParent && this.isOutsideClicked(event) && !event.ctrlKey && event.button !== 2 && this.triggerEvent !== 'click') {
684
- this.hide();
685
- }
686
- });
687
- this.documentTriggerListener = this.renderer.listen(documentTarget, this.triggerEvent, (event) => {
688
- if (this.containerViewChild.nativeElement.offsetParent && this.isOutsideClicked(event)) {
689
- this.hide();
690
- }
691
- });
692
- }
693
- if (!this.resizeListener) {
694
- this.resizeListener = this.renderer.listen(this.document.defaultView, 'resize', (event) => {
695
- this.hide();
696
- });
697
- }
698
- }
699
- }
700
- ngAfterContentInit() {
701
- this.templates?.forEach((item) => {
702
- switch (item.getType()) {
703
- case 'submenuicon':
704
- this.submenuIconTemplate = item.template;
705
- break;
706
- case 'item':
707
- this.itemTemplate = item.template;
708
- break;
709
- default:
710
- this.itemTemplate = item.template;
711
- break;
712
- }
713
- });
714
- }
715
- createProcessedItems(items, level = 0, parent = {}, parentKey = '') {
716
- const processedItems = [];
717
- items &&
718
- items.forEach((item, index) => {
719
- const key = (parentKey !== '' ? parentKey + '_' : '') + index;
720
- const newItem = {
721
- item,
722
- index,
723
- level,
724
- key,
725
- parent,
726
- parentKey
727
- };
728
- newItem['items'] = this.createProcessedItems(item.items, level + 1, newItem, key);
729
- processedItems.push(newItem);
730
- });
731
- return processedItems;
732
- }
733
- getItemProp(item, name) {
734
- return item ? ObjectUtils.getItemValue(item[name]) : undefined;
735
- }
736
- getProccessedItemLabel(processedItem) {
737
- return processedItem ? this.getItemLabel(processedItem.item) : undefined;
738
- }
739
- getItemLabel(item) {
740
- return this.getItemProp(item, 'label');
741
- }
742
- isProcessedItemGroup(processedItem) {
743
- return processedItem && ObjectUtils.isNotEmpty(processedItem.items);
744
- }
745
- isSelected(processedItem) {
746
- return this.activeItemPath().some((p) => p.key === processedItem.key);
747
- }
748
- isValidSelectedItem(processedItem) {
749
- return this.isValidItem(processedItem) && this.isSelected(processedItem);
750
- }
751
- isValidItem(processedItem) {
752
- return !!processedItem && !this.isItemDisabled(processedItem.item) && !this.isItemSeparator(processedItem.item);
753
- }
754
- isItemDisabled(item) {
755
- return this.getItemProp(item, 'disabled');
756
- }
757
- isItemSeparator(item) {
758
- return this.getItemProp(item, 'separator');
759
- }
760
- isItemMatched(processedItem) {
761
- return this.isValidItem(processedItem) && this.getProccessedItemLabel(processedItem).toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());
762
- }
763
- isProccessedItemGroup(processedItem) {
764
- return processedItem && ObjectUtils.isNotEmpty(processedItem.items);
765
- }
766
- onItemClick(event) {
767
- const { processedItem } = event;
768
- const grouped = this.isProcessedItemGroup(processedItem);
769
- const selected = this.isSelected(processedItem);
770
- if (selected) {
771
- const { index, key, level, parentKey, item } = processedItem;
772
- this.activeItemPath.set(this.activeItemPath().filter((p) => key !== p.key && key.startsWith(p.key)));
773
- this.focusedItemInfo.set({ index, level, parentKey, item });
774
- DomHandler.focus(this.rootmenu.sublistViewChild.nativeElement);
775
- }
776
- else {
777
- grouped ? this.onItemChange(event) : this.hide();
778
- }
779
- }
780
- onItemMouseEnter(event) {
781
- this.onItemChange(event);
782
- }
783
- onKeyDown(event) {
784
- const metaKey = event.metaKey || event.ctrlKey;
785
- switch (event.code) {
786
- case 'ArrowDown':
787
- this.onArrowDownKey(event);
788
- break;
789
- case 'ArrowUp':
790
- this.onArrowUpKey(event);
791
- break;
792
- case 'ArrowLeft':
793
- this.onArrowLeftKey(event);
794
- break;
795
- case 'ArrowRight':
796
- this.onArrowRightKey(event);
797
- break;
798
- case 'Home':
799
- this.onHomeKey(event);
800
- break;
801
- case 'End':
802
- this.onEndKey(event);
803
- break;
804
- case 'Space':
805
- this.onSpaceKey(event);
806
- break;
807
- case 'Enter':
808
- this.onEnterKey(event);
809
- break;
810
- case 'Escape':
811
- this.onEscapeKey(event);
812
- break;
813
- case 'Tab':
814
- this.onTabKey(event);
815
- break;
816
- case 'PageDown':
817
- case 'PageUp':
818
- case 'Backspace':
819
- case 'ShiftLeft':
820
- case 'ShiftRight':
821
- //NOOP
822
- break;
823
- default:
824
- if (!metaKey && ObjectUtils.isPrintableCharacter(event.key)) {
825
- this.searchItems(event, event.key);
826
- }
827
- break;
828
- }
829
- }
830
- onArrowDownKey(event) {
831
- const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();
832
- this.changeFocusedItemIndex(event, itemIndex);
833
- event.preventDefault();
834
- }
835
- onArrowRightKey(event) {
836
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
837
- const grouped = this.isProccessedItemGroup(processedItem);
838
- if (grouped) {
839
- this.onItemChange({ originalEvent: event, processedItem });
840
- this.focusedItemInfo.set({ index: -1, parentKey: processedItem.key, item: processedItem.item });
841
- this.searchValue = '';
842
- this.onArrowDownKey(event);
843
- }
844
- event.preventDefault();
845
- }
846
- onArrowUpKey(event) {
847
- if (event.altKey) {
848
- if (this.focusedItemInfo().index !== -1) {
849
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
850
- const grouped = this.isProccessedItemGroup(processedItem);
851
- !grouped && this.onItemChange({ originalEvent: event, processedItem });
852
- }
853
- this.hide();
854
- event.preventDefault();
855
- }
856
- else {
857
- const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();
858
- this.changeFocusedItemIndex(event, itemIndex);
859
- event.preventDefault();
860
- }
861
- }
862
- onArrowLeftKey(event) {
863
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
864
- const parentItem = this.activeItemPath().find((p) => p.key === processedItem.parentKey);
865
- const root = ObjectUtils.isEmpty(processedItem.parent);
866
- if (!root) {
867
- this.focusedItemInfo.set({ index: -1, parentKey: parentItem ? parentItem.parentKey : '', item: processedItem.item });
868
- this.searchValue = '';
869
- this.onArrowDownKey(event);
870
- }
871
- const activeItemPath = this.activeItemPath().filter((p) => p.parentKey !== this.focusedItemInfo().parentKey);
872
- this.activeItemPath.set(activeItemPath);
873
- event.preventDefault();
874
- }
875
- onHomeKey(event) {
876
- this.changeFocusedItemIndex(event, this.findFirstItemIndex());
877
- event.preventDefault();
878
- }
879
- onEndKey(event) {
880
- this.changeFocusedItemIndex(event, this.findLastItemIndex());
881
- event.preventDefault();
882
- }
883
- onSpaceKey(event) {
884
- this.onEnterKey(event);
885
- }
886
- onEscapeKey(event) {
887
- this.hide();
888
- const processedItem = this.findVisibleItem(this.findFirstFocusedItemIndex());
889
- const focusedItemInfo = this.focusedItemInfo();
890
- this.focusedItemInfo.set({ ...focusedItemInfo, index: this.findFirstFocusedItemIndex(), item: processedItem.item });
891
- event.preventDefault();
892
- }
893
- onTabKey(event) {
894
- if (this.focusedItemInfo().index !== -1) {
895
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
896
- const grouped = this.isProccessedItemGroup(processedItem);
897
- !grouped && this.onItemChange({ originalEvent: event, processedItem });
898
- }
899
- this.hide();
900
- }
901
- onEnterKey(event) {
902
- if (this.focusedItemInfo().index !== -1) {
903
- const element = DomHandler.findSingle(this.rootmenu.el.nativeElement, `li[id="${`${this.focusedItemId}`}"]`);
904
- const anchorElement = element && DomHandler.findSingle(element, 'a[data-pc-section="action"]');
905
- anchorElement ? anchorElement.click() : element && element.click();
906
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
907
- const grouped = this.isProccessedItemGroup(processedItem);
908
- if (!grouped) {
909
- const focusedItemInfo = this.focusedItemInfo();
910
- this.focusedItemInfo.set({ ...focusedItemInfo, index: this.findFirstFocusedItemIndex() });
911
- }
912
- }
913
- event.preventDefault();
914
- }
915
- onItemChange(event) {
916
- const { processedItem, isFocus } = event;
917
- if (ObjectUtils.isEmpty(processedItem))
918
- return;
919
- const { index, key, level, parentKey, items } = processedItem;
920
- const grouped = ObjectUtils.isNotEmpty(items);
921
- const activeItemPath = this.activeItemPath().filter((p) => p.parentKey !== parentKey && p.parentKey !== key);
922
- if (grouped) {
923
- activeItemPath.push(processedItem);
924
- this.submenuVisible.set(true);
925
- }
926
- this.focusedItemInfo.set({ index, level, parentKey, item: processedItem.item });
927
- this.activeItemPath.set(activeItemPath);
928
- isFocus && DomHandler.focus(this.rootmenu.sublistViewChild.nativeElement);
929
- }
930
- onMenuFocus(event) {
931
- this.focused = true;
932
- const focusedItemInfo = this.focusedItemInfo().index !== -1 ? this.focusedItemInfo() : { index: -1, level: 0, parentKey: '', item: null };
933
- this.focusedItemInfo.set(focusedItemInfo);
934
- }
935
- onMenuBlur(event) {
936
- this.focused = false;
937
- this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });
938
- this.searchValue = '';
939
- }
940
- onOverlayAnimationStart(event) {
941
- switch (event.toState) {
942
- case 'visible':
943
- this.container = event.element;
944
- this.position();
945
- this.moveOnTop();
946
- this.appendOverlay();
947
- this.bindGlobalListeners();
948
- DomHandler.focus(this.rootmenu.sublistViewChild.nativeElement);
949
- break;
950
- }
951
- }
952
- onOverlayAnimationEnd(event) {
953
- switch (event.toState) {
954
- case 'void':
955
- this.onOverlayHide();
956
- break;
957
- }
958
- }
959
- appendOverlay() {
960
- if (this.appendTo) {
961
- if (this.appendTo === 'body')
962
- this.renderer.appendChild(this.document.body, this.containerViewChild.nativeElement);
963
- else
964
- DomHandler.appendChild(this.containerViewChild.nativeElement, this.appendTo);
965
- }
966
- }
967
- moveOnTop() {
968
- if (this.autoZIndex && this.containerViewChild) {
969
- ZIndexUtils.set('menu', this.containerViewChild.nativeElement, this.baseZIndex + this.config.zIndex.menu);
970
- }
971
- }
972
- onOverlayHide() {
973
- this.unbindGlobalListeners();
974
- if (!this.cd.destroyed) {
975
- this.target = null;
976
- }
977
- if (this.container && this.autoZIndex) {
978
- ZIndexUtils.clear(this.container);
979
- }
980
- this.container = null;
981
- }
982
- onTouchStart(event) {
983
- this.pressTimer = setTimeout(() => {
984
- this.show(event);
985
- }, this.pressDelay);
986
- }
987
- onTouchEnd() {
988
- clearTimeout(this.pressTimer);
989
- }
990
- hide() {
991
- this.visible.set(false);
992
- this.onHide.emit();
993
- this.activeItemPath.set([]);
994
- this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });
995
- }
996
- toggle(event) {
997
- this.visible() ? this.hide() : this.show(event);
998
- }
999
- show(event) {
1000
- this.activeItemPath.set([]);
1001
- this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });
1002
- this.pageX = event.pageX;
1003
- this.pageY = event.pageY;
1004
- this.onShow.emit();
1005
- this.visible() ? this.position() : this.visible.set(true);
1006
- event.stopPropagation();
1007
- event.preventDefault();
1008
- }
1009
- position() {
1010
- let left = this.pageX + 1;
1011
- let top = this.pageY + 1;
1012
- let width = this.containerViewChild.nativeElement.offsetParent ? this.containerViewChild.nativeElement.offsetWidth : DomHandler.getHiddenElementOuterWidth(this.containerViewChild.nativeElement);
1013
- let height = this.containerViewChild.nativeElement.offsetParent ? this.containerViewChild.nativeElement.offsetHeight : DomHandler.getHiddenElementOuterHeight(this.containerViewChild.nativeElement);
1014
- let viewport = DomHandler.getViewport();
1015
- //flip
1016
- if (left + width - this.document.scrollingElement.scrollLeft > viewport.width) {
1017
- left -= width;
1018
- }
1019
- //flip
1020
- if (top + height - this.document.scrollingElement.scrollTop > viewport.height) {
1021
- top -= height;
1022
- }
1023
- //fit
1024
- if (left < this.document.scrollingElement.scrollLeft) {
1025
- left = this.document.scrollingElement.scrollLeft;
1026
- }
1027
- //fit
1028
- if (top < this.document.scrollingElement.scrollTop) {
1029
- top = this.document.scrollingElement.scrollTop;
1030
- }
1031
- this.containerViewChild.nativeElement.style.left = left + 'px';
1032
- this.containerViewChild.nativeElement.style.top = top + 'px';
1033
- }
1034
- searchItems(event, char) {
1035
- this.searchValue = (this.searchValue || '') + char;
1036
- let itemIndex = -1;
1037
- let matched = false;
1038
- if (this.focusedItemInfo().index !== -1) {
1039
- itemIndex = this.visibleItems.slice(this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem));
1040
- itemIndex = itemIndex === -1 ? this.visibleItems.slice(0, this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem)) : itemIndex + this.focusedItemInfo().index;
1041
- }
1042
- else {
1043
- itemIndex = this.visibleItems.findIndex((processedItem) => this.isItemMatched(processedItem));
1044
- }
1045
- if (itemIndex !== -1) {
1046
- matched = true;
1047
- }
1048
- if (itemIndex === -1 && this.focusedItemInfo().index === -1) {
1049
- itemIndex = this.findFirstFocusedItemIndex();
1050
- }
1051
- if (itemIndex !== -1) {
1052
- this.changeFocusedItemIndex(event, itemIndex);
1053
- }
1054
- if (this.searchTimeout) {
1055
- clearTimeout(this.searchTimeout);
1056
- }
1057
- this.searchTimeout = setTimeout(() => {
1058
- this.searchValue = '';
1059
- this.searchTimeout = null;
1060
- }, 500);
1061
- return matched;
1062
- }
1063
- findVisibleItem(index) {
1064
- return ObjectUtils.isNotEmpty(this.visibleItems) ? this.visibleItems[index] : null;
1065
- }
1066
- findLastFocusedItemIndex() {
1067
- const selectedIndex = this.findSelectedItemIndex();
1068
- return selectedIndex < 0 ? this.findLastItemIndex() : selectedIndex;
1069
- }
1070
- findLastItemIndex() {
1071
- return ObjectUtils.findLastIndex(this.visibleItems, (processedItem) => this.isValidItem(processedItem));
1072
- }
1073
- findPrevItemIndex(index) {
1074
- const matchedItemIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleItems.slice(0, index), (processedItem) => this.isValidItem(processedItem)) : -1;
1075
- return matchedItemIndex > -1 ? matchedItemIndex : index;
1076
- }
1077
- findNextItemIndex(index) {
1078
- const matchedItemIndex = index < this.visibleItems.length - 1 ? this.visibleItems.slice(index + 1).findIndex((processedItem) => this.isValidItem(processedItem)) : -1;
1079
- return matchedItemIndex > -1 ? matchedItemIndex + index + 1 : index;
1080
- }
1081
- findFirstFocusedItemIndex() {
1082
- const selectedIndex = this.findSelectedItemIndex();
1083
- return selectedIndex < 0 ? this.findFirstItemIndex() : selectedIndex;
1084
- }
1085
- findFirstItemIndex() {
1086
- return this.visibleItems.findIndex((processedItem) => this.isValidItem(processedItem));
1087
- }
1088
- findSelectedItemIndex() {
1089
- return this.visibleItems.findIndex((processedItem) => this.isValidSelectedItem(processedItem));
1090
- }
1091
- changeFocusedItemIndex(event, index) {
1092
- const processedItem = this.findVisibleItem(index);
1093
- const focusedItemInfo = this.focusedItemInfo();
1094
- if (focusedItemInfo.index !== index) {
1095
- this.focusedItemInfo.set({ ...focusedItemInfo, index, item: processedItem.item });
1096
- this.scrollInView();
1097
- }
1098
- }
1099
- scrollInView(index = -1) {
1100
- const id = index !== -1 ? `${this.id}_${index}` : this.focusedItemId;
1101
- const element = DomHandler.findSingle(this.rootmenu.el.nativeElement, `li[id="${id}"]`);
1102
- if (element) {
1103
- element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });
1104
- }
1105
- }
1106
- bindResizeListener() {
1107
- if (isPlatformBrowser(this.platformId)) {
1108
- if (!this.resizeListener) {
1109
- this.resizeListener = this.renderer.listen(this.document.defaultView, 'resize', (event) => {
1110
- this.hide();
1111
- });
1112
- }
1113
- }
1114
- }
1115
- isOutsideClicked(event) {
1116
- return !(this.containerViewChild.nativeElement.isSameNode(event.target) || this.containerViewChild.nativeElement.contains(event.target));
1117
- }
1118
- unbindResizeListener() {
1119
- if (this.resizeListener) {
1120
- this.resizeListener();
1121
- this.resizeListener = null;
1122
- }
1123
- }
1124
- unbindGlobalListeners() {
1125
- if (this.documentClickListener) {
1126
- this.documentClickListener();
1127
- this.documentClickListener = null;
1128
- }
1129
- if (this.documentTriggerListener) {
1130
- this.documentTriggerListener();
1131
- this.documentTriggerListener = null;
1132
- }
1133
- if (this.resizeListener) {
1134
- this.resizeListener();
1135
- this.resizeListener = null;
1136
- }
1137
- if (this.touchEndListener) {
1138
- this.touchEndListener();
1139
- this.touchEndListener = null;
1140
- }
1141
- }
1142
- unbindTriggerEventListener() {
1143
- if (this.triggerEventListener) {
1144
- this.triggerEventListener();
1145
- this.triggerEventListener = null;
1146
- }
1147
- }
1148
- removeAppendedElements() {
1149
- if (this.appendTo && this.containerViewChild) {
1150
- if (this.appendTo === 'body') {
1151
- this.renderer.removeChild(this.document.body, this.containerViewChild.nativeElement);
1152
- }
1153
- else {
1154
- DomHandler.removeChild(this.containerViewChild.nativeElement, this.appendTo);
1155
- }
1156
- }
1157
- }
1158
- ngOnDestroy() {
1159
- this.unbindGlobalListeners();
1160
- this.unbindTriggerEventListener();
1161
- this.removeAppendedElements();
1162
- }
1163
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextMenu, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i4.caxConfig }, { token: i4.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
1164
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: ContextMenu, selector: "p-contextMenu", inputs: { model: "model", triggerEvent: "triggerEvent", target: "target", global: ["global", "global", booleanAttribute], style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: ["autoZIndex", "autoZIndex", booleanAttribute], baseZIndex: ["baseZIndex", "baseZIndex", numberAttribute], id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", pressDelay: ["pressDelay", "pressDelay", numberAttribute] }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "cax-element" }, queries: [{ propertyName: "templates", predicate: CaxTemplate }], viewQueries: [{ propertyName: "rootmenu", first: true, predicate: ["rootmenu"], descendants: true }, { propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
1165
- <div
1166
- #container
1167
- [attr.data-pc-section]="'root'"
1168
- [attr.data-pc-name]="'contextmenu'"
1169
- [attr.id]="id"
1170
- [ngClass]="{ 'p-contextmenu p-component': true, 'p-contextmenu-overlay': true }"
1171
- [class]="styleClass"
1172
- [ngStyle]="style"
1173
- [@overlayAnimation]="{ value: 'visible' }"
1174
- (@overlayAnimation.start)="onOverlayAnimationStart($event)"
1175
- (@overlayAnimation.done)="onOverlayAnimationEnd($event)"
1176
- *ngIf="visible()"
1177
- >
1178
- <p-contextMenuSub
1179
- #rootmenu
1180
- [root]="true"
1181
- [items]="processedItems"
1182
- [itemTemplate]="itemTemplate"
1183
- [menuId]="id"
1184
- [tabindex]="!disabled ? tabindex : -1"
1185
- [ariaLabel]="ariaLabel"
1186
- [ariaLabelledBy]="ariaLabelledBy"
1187
- [baseZIndex]="baseZIndex"
1188
- [autoZIndex]="autoZIndex"
1189
- [visible]="submenuVisible()"
1190
- [focusedItemId]="focused ? focusedItemId : undefined"
1191
- [activeItemPath]="activeItemPath()"
1192
- (itemClick)="onItemClick($event)"
1193
- (menuFocus)="onMenuFocus($event)"
1194
- (menuBlur)="onMenuBlur($event)"
1195
- (menuKeydown)="onKeyDown($event)"
1196
- (itemMouseEnter)="onItemMouseEnter($event)"
1197
- ></p-contextMenuSub>
1198
- </div>
1199
- `, isInline: true, styles: ["@layer cax{.p-contextmenu{position:absolute}.p-contextmenu ul{margin:0;padding:0;list-style:none}.p-contextmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1}.p-contextmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-contextmenu .p-menuitem-text{line-height:1}.p-contextmenu .p-menuitem{position:relative}.p-contextmenu .p-menuitem-link .p-submenu-icon:not(svg){margin-left:auto}.p-contextmenu .p-menuitem-link .p-icon-wrapper{margin-left:auto}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ContextMenuSub, selector: "p-contextMenuSub", inputs: ["visible", "items", "itemTemplate", "root", "autoZIndex", "baseZIndex", "popup", "menuId", "ariaLabel", "ariaLabelledBy", "level", "focusedItemId", "activeItemPath", "tabindex"], outputs: ["itemClick", "itemMouseEnter", "menuFocus", "menuBlur", "menuKeydown"] }], animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0 }), animate('250ms')]), transition(':leave', [animate('.1s linear', style({ opacity: 0 }))])])], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1200
- }
1201
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextMenu, decorators: [{
1202
- type: Component,
1203
- args: [{ selector: 'p-contextMenu', template: `
1204
- <div
1205
- #container
1206
- [attr.data-pc-section]="'root'"
1207
- [attr.data-pc-name]="'contextmenu'"
1208
- [attr.id]="id"
1209
- [ngClass]="{ 'p-contextmenu p-component': true, 'p-contextmenu-overlay': true }"
1210
- [class]="styleClass"
1211
- [ngStyle]="style"
1212
- [@overlayAnimation]="{ value: 'visible' }"
1213
- (@overlayAnimation.start)="onOverlayAnimationStart($event)"
1214
- (@overlayAnimation.done)="onOverlayAnimationEnd($event)"
1215
- *ngIf="visible()"
1216
- >
1217
- <p-contextMenuSub
1218
- #rootmenu
1219
- [root]="true"
1220
- [items]="processedItems"
1221
- [itemTemplate]="itemTemplate"
1222
- [menuId]="id"
1223
- [tabindex]="!disabled ? tabindex : -1"
1224
- [ariaLabel]="ariaLabel"
1225
- [ariaLabelledBy]="ariaLabelledBy"
1226
- [baseZIndex]="baseZIndex"
1227
- [autoZIndex]="autoZIndex"
1228
- [visible]="submenuVisible()"
1229
- [focusedItemId]="focused ? focusedItemId : undefined"
1230
- [activeItemPath]="activeItemPath()"
1231
- (itemClick)="onItemClick($event)"
1232
- (menuFocus)="onMenuFocus($event)"
1233
- (menuBlur)="onMenuBlur($event)"
1234
- (menuKeydown)="onKeyDown($event)"
1235
- (itemMouseEnter)="onItemMouseEnter($event)"
1236
- ></p-contextMenuSub>
1237
- </div>
1238
- `, animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0 }), animate('250ms')]), transition(':leave', [animate('.1s linear', style({ opacity: 0 }))])])], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
1239
- class: 'cax-element'
1240
- }, styles: ["@layer cax{.p-contextmenu{position:absolute}.p-contextmenu ul{margin:0;padding:0;list-style:none}.p-contextmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1}.p-contextmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-contextmenu .p-menuitem-text{line-height:1}.p-contextmenu .p-menuitem{position:relative}.p-contextmenu .p-menuitem-link .p-submenu-icon:not(svg){margin-left:auto}.p-contextmenu .p-menuitem-link .p-icon-wrapper{margin-left:auto}}\n"] }]
1241
- }], ctorParameters: () => [{ type: Document, decorators: [{
1242
- type: Inject,
1243
- args: [DOCUMENT]
1244
- }] }, { type: undefined, decorators: [{
1245
- type: Inject,
1246
- args: [PLATFORM_ID]
1247
- }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i4.caxConfig }, { type: i4.OverlayService }], propDecorators: { model: [{
1248
- type: Input
1249
- }], triggerEvent: [{
1250
- type: Input
1251
- }], target: [{
1252
- type: Input
1253
- }], global: [{
1254
- type: Input,
1255
- args: [{ transform: booleanAttribute }]
1256
- }], style: [{
1257
- type: Input
1258
- }], styleClass: [{
1259
- type: Input
1260
- }], appendTo: [{
1261
- type: Input
1262
- }], autoZIndex: [{
1263
- type: Input,
1264
- args: [{ transform: booleanAttribute }]
1265
- }], baseZIndex: [{
1266
- type: Input,
1267
- args: [{ transform: numberAttribute }]
1268
- }], id: [{
1269
- type: Input
1270
- }], ariaLabel: [{
1271
- type: Input
1272
- }], ariaLabelledBy: [{
1273
- type: Input
1274
- }], pressDelay: [{
1275
- type: Input,
1276
- args: [{ transform: numberAttribute }]
1277
- }], onShow: [{
1278
- type: Output
1279
- }], onHide: [{
1280
- type: Output
1281
- }], templates: [{
1282
- type: ContentChildren,
1283
- args: [CaxTemplate]
1284
- }], rootmenu: [{
1285
- type: ViewChild,
1286
- args: ['rootmenu']
1287
- }], containerViewChild: [{
1288
- type: ViewChild,
1289
- args: ['container']
1290
- }] } });
1291
- export class ContextMenuModule {
1292
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1293
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: ContextMenuModule, declarations: [ContextMenu, ContextMenuSub], imports: [CommonModule, RouterModule, RippleModule, TooltipModule, AngleRightIcon, SharedModule], exports: [ContextMenu, RouterModule, TooltipModule, SharedModule] });
1294
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextMenuModule, imports: [CommonModule, RouterModule, RippleModule, TooltipModule, AngleRightIcon, SharedModule, RouterModule, TooltipModule, SharedModule] });
1295
- }
1296
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextMenuModule, decorators: [{
1297
- type: NgModule,
1298
- args: [{
1299
- imports: [CommonModule, RouterModule, RippleModule, TooltipModule, AngleRightIcon, SharedModule],
1300
- exports: [ContextMenu, RouterModule, TooltipModule, SharedModule],
1301
- declarations: [ContextMenu, ContextMenuSub]
1302
- }]
1303
- }] });
1304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY29udGV4dG1lbnUvY29udGV4dG1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVFLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBR1IsTUFBTSxFQUNOLFdBQVcsRUFJWCxTQUFTLEVBRVQsaUJBQWlCLEVBRWpCLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sVUFBVSxFQUNWLGVBQWUsRUFDZixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBdUMsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7QUE2SnRGLE1BQU0sT0FBTyxjQUFjO0lBMENPO0lBQ25CO0lBQ0E7SUFDQztJQUNzQztJQUN0QztJQTlDNEIsT0FBTyxHQUFZLEtBQUss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b0JBQ2pFLFlBQVksRUFBRSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUM7aUJBQzlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5pbWF0aW9uRXZlbnQsIGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBWaWV3UmVmLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgZWZmZWN0LFxuICAgIGZvcndhcmRSZWYsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxuICAgIHNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBNZW51SXRlbSwgT3ZlcmxheVNlcnZpY2UsIGNheENvbmZpZywgQ2F4VGVtcGxhdGUsIFNoYXJlZE1vZHVsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2FwaSc7XG5pbXBvcnQgeyBEb21IYW5kbGVyIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vZG9tJztcbmltcG9ydCB7IEFuZ2xlUmlnaHRJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvYW5nbGVyaWdodCc7XG5pbXBvcnQgeyBSaXBwbGVNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9yaXBwbGUnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTnVsbGFibGUsIFZvaWRMaXN0ZW5lciB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL3RzLWhlbHBlcnMnO1xuaW1wb3J0IHsgT2JqZWN0VXRpbHMsIFVuaXF1ZUNvbXBvbmVudElkLCBaSW5kZXhVdGlscyB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWNvbnRleHRNZW51U3ViJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8dWxcbiAgICAgICAgICAgICpuZ0lmPVwicm9vdCA/IHRydWUgOiB2aXNpYmxlXCJcbiAgICAgICAgICAgICNzdWJsaXN0XG4gICAgICAgICAgICByb2xlPVwibWVudVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwLXN1Ym1lbnUtbGlzdCc6ICFyb290LCAncC1jb250ZXh0bWVudS1yb290LWxpc3QnOiByb290IH1cIlxuICAgICAgICAgICAgW0BvdmVybGF5QW5pbWF0aW9uXT1cInZpc2libGVcIlxuICAgICAgICAgICAgKEBvdmVybGF5QW5pbWF0aW9uLnN0YXJ0KT1cIm9uRW50ZXIoJGV2ZW50LCBzdWJsaXN0KVwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJtZW51SWQgKyAnX2xpc3QnXCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkQnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImZvY3VzZWRJdGVtSWRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1vcmllbnRhdGlvbl09XCIndmVydGljYWwnXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbWVudSdcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwibWVudUtleWRvd24uZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJtZW51Rm9jdXMuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChibHVyKT1cIm1lbnVCbHVyLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtcHJvY2Vzc2VkSXRlbSBbbmdGb3JPZl09XCJpdGVtc1wiIGxldC1pbmRleD1cImluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNJdGVtVmlzaWJsZShwcm9jZXNzZWRJdGVtKSAmJiBnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc2VwYXJhdG9yJylcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJnZXRJdGVtSWQocHJvY2Vzc2VkSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc3R5bGUnKVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldFNlcGFyYXRvckl0ZW1DbGFzcyhwcm9jZXNzZWRJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJzZXBhcmF0b3JcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NlcGFyYXRvcidcIlxuICAgICAgICAgICAgICAgID48L2xpPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAjbGlzdEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0l0ZW1WaXNpYmxlKHByb2Nlc3NlZEl0ZW0pICYmICFnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc2VwYXJhdG9yJylcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJnZXRJdGVtSWQocHJvY2Vzc2VkSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21lbnVpdGVtJ1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcC1oaWdobGlnaHRdPVwiaXNJdGVtQWN0aXZlKHByb2Nlc3NlZEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wLWZvY3VzZWRdPVwiaXNJdGVtRm9jdXNlZChwcm9jZXNzZWRJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcC1kaXNhYmxlZF09XCJpc0l0ZW1EaXNhYmxlZChwcm9jZXNzZWRJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0SXRlbUxhYmVsKHByb2Nlc3NlZEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0l0ZW1EaXNhYmxlZChwcm9jZXNzZWRJdGVtKSB8fCB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImlzSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pICYmICFnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAndG8nKSA/ICdtZW51JyA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSkgPyBpc0l0ZW1BY3RpdmUocHJvY2Vzc2VkSXRlbSkgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxldmVsXT1cImxldmVsICsgMVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2V0c2l6ZV09XCJnZXRBcmlhU2V0U2l6ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wb3NpbnNldF09XCJnZXRBcmlhUG9zSW5zZXQoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3N0eWxlJylcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRJdGVtQ2xhc3MocHJvY2Vzc2VkSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3N0eWxlQ2xhc3MnKVwiXG4gICAgICAgICAgICAgICAgICAgIGNheFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBPcHRpb25zXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICd0b29sdGlwT3B0aW9ucycpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidjb250ZW50J1wiIGNsYXNzPVwicC1tZW51aXRlbS1jb250ZW50XCIgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudCwgcHJvY2Vzc2VkSXRlbSlcIiAobW91c2VlbnRlcik9XCJvbkl0ZW1Nb3VzZUVudGVyKHsgJGV2ZW50LCBwcm9jZXNzZWRJdGVtIH0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdyb3V0ZXJMaW5rJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5ocmVmXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICd1cmwnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbmlkXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdhdXRvbWF0aW9uSWQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInYWN0aW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3RhcmdldCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1tZW51aXRlbS1saW5rJzogdHJ1ZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnaWNvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1tZW51aXRlbS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdpY29uJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2ljb25TdHlsZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnZXNjYXBlJyk7IGVsc2UgaHRtbExhYmVsXCIgY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0SXRlbUxhYmVsKHByb2Nlc3NlZEl0ZW0pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNodG1sTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiZ2V0SXRlbUxhYmVsKHByb2Nlc3NlZEl0ZW0pXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidsYWJlbCdcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS1iYWRnZVwiICpuZ0lmPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2JhZGdlJylcIiBbbmdDbGFzc109XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnYmFkZ2VTdHlsZUNsYXNzJylcIj57eyBnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnYmFkZ2UnKSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZVJpZ2h0SWNvbiAqbmdJZj1cIiFjb250ZXh0TWVudS5zdWJtZW51SWNvblRlbXBsYXRlXCIgW3N0eWxlQ2xhc3NdPVwiJ3Atc3VibWVudS1pY29uJ1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3VibWVudWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRleHRNZW51LnN1Ym1lbnVJY29uVGVtcGxhdGVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3N1Ym1lbnVpY29uJ1wiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdyb3V0ZXJMaW5rJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAncm91dGVyTGluaycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uaWRdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2F1dG9tYXRpb25JZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2FjdGlvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3F1ZXJ5UGFyYW1zJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCIncC1tZW51aXRlbS1saW5rLWFjdGl2ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3JvdXRlckxpbmtBY3RpdmVPcHRpb25zJykgfHwgeyBleGFjdDogZmFsc2UgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3RhcmdldCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1tZW51aXRlbS1saW5rJzogdHJ1ZSwgJ3AtZGlzYWJsZWQnOiBnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnZGlzYWJsZWQnKSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZyYWdtZW50XT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdmcmFnbWVudCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zSGFuZGxpbmddPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3F1ZXJ5UGFyYW1zSGFuZGxpbmcnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcmVzZXJ2ZUZyYWdtZW50XT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdwcmVzZXJ2ZUZyYWdtZW50JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2tpcExvY2F0aW9uQ2hhbmdlXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdza2lwTG9jYXRpb25DaGFuZ2UnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXBsYWNlVXJsXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdyZXBsYWNlVXJsJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdGVdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3N0YXRlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnaWNvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1tZW51aXRlbS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdpY29uJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2ljb25TdHlsZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnZXNjYXBlJyk7IGVsc2UgaHRtbExhYmVsXCIgY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0SXRlbUxhYmVsKHByb2Nlc3NlZEl0ZW0pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNodG1sTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiZ2V0SXRlbUxhYmVsKHByb2Nlc3NlZEl0ZW0pXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidsYWJlbCdcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS1iYWRnZVwiICpuZ0lmPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2JhZGdlJylcIiBbbmdDbGFzc109XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnYmFkZ2VTdHlsZUNsYXNzJylcIj57eyBnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnYmFkZ2UnKSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZVJpZ2h0SWNvbiAqbmdJZj1cIiFjb250ZXh0TWVudS5zdWJtZW51SWNvblRlbXBsYXRlXCIgW3N0eWxlQ2xhc3NdPVwiJ3Atc3VibWVudS1pY29uJ1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3VibWVudWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRleHRNZW51LnN1Ym1lbnVJY29uVGVtcGxhdGVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3N1Ym1lbnVpY29uJ1wiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHByb2Nlc3NlZEl0ZW0uaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8cC1jb250ZXh0TWVudVN1YlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0l0ZW1WaXNpYmxlKHByb2Nlc3NlZEl0ZW0pICYmIGlzSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJwcm9jZXNzZWRJdGVtLml0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttZW51SWRdPVwibWVudUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2aXNpYmxlXT1cImlzSXRlbUFjdGl2ZShwcm9jZXNzZWRJdGVtKSAmJiBpc0l0ZW1Hcm91cChwcm9jZXNzZWRJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbVBhdGhdPVwiYWN0aXZlSXRlbVBhdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZvY3VzZWRJdGVtSWRdPVwiZm9jdXNlZEl0ZW1JZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGV2ZWxdPVwibGV2ZWwgKyAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtQ2xpY2spPVwiaXRlbUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXRlbU1vdXNlRW50ZXIpPVwib25JdGVtTW91c2VFbnRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcC1jb250ZXh0TWVudVN1Yj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC91bD5cbiAgICBgLFxuICAgIGFuaW1hdGlvbnM6IFt0cmlnZ2VyKCdvdmVybGF5QW5pbWF0aW9uJywgW3RyYW5zaXRpb24oJzplbnRlcicsIFtzdHlsZSh7IG9wYWNpdHk6IDAgfSldKSwgdHJhbnNpdGlvbignOmxlYXZlJywgW3N0eWxlKHsgb3BhY2l0eTogMCB9KV0pXSldLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2NheC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dE1lbnVTdWIge1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBpdGVtczogYW55W107XG5cbiAgICBASW5wdXQoKSBpdGVtVGVtcGxhdGU6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHJvb3Q6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvWkluZGV4OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGJhc2VaSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcG9wdXA6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBtZW51SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGxldmVsOiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgZm9jdXNlZEl0ZW1JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgYWN0aXZlSXRlbVBhdGg6IGFueVtdO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGFiaW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBAT3V0cHV0KCkgaXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBpdGVtTW91c2VFbnRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgbWVudUZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBtZW51Qmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgbWVudUtleWRvd246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnc3VibGlzdCcpIHN1Ymxpc3RWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gQ29udGV4dE1lbnUpKSBwdWJsaWMgY29udGV4dE1lbnU6IENvbnRleHRNZW51LFxuICAgICAgICBwcml2YXRlIHJlZjogVmlld0NvbnRhaW5lclJlZlxuICAgICkge31cblxuICAgIGdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW06IGFueSwgbmFtZTogc3RyaW5nLCBwYXJhbXM6IGFueSB8IG51bGwgPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzZWRJdGVtICYmIHByb2Nlc3NlZEl0ZW0uaXRlbSA/IE9iamVjdFV0aWxzLmdldEl0ZW1WYWx1ZShwcm9jZXNzZWRJdGVtLml0ZW1bbmFtZV0sIHBhcmFtcykgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0SXRlbUlkKHByb2Nlc3NlZEl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzZWRJdGVtLml0ZW0gJiYgcHJvY2Vzc2VkSXRlbS5pdGVtPy5pZCA/IHByb2Nlc3NlZEl0ZW0uaXRlbS5pZCA6IGAke3RoaXMubWVudUlkfV8ke3Byb2Nlc3NlZEl0ZW0ua2V5fWA7XG4gICAgfVxuXG4gICAgZ2V0SXRlbUtleShwcm9jZXNzZWRJdGVtOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtSWQocHJvY2Vzc2VkSXRlbSk7XG4gICAgfVxuXG4gICAgZ2V0SXRlbUNsYXNzKHByb2Nlc3NlZEl0ZW06IGFueSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5nZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnY2xhc3MnKSxcbiAgICAgICAgICAgICdwLW1lbnVpdGVtJzogdHJ1ZSxcbiAgICAgICAgICAgICdwLWhpZ2hsaWdodCc6IHRoaXMuaXNJdGVtQWN0aXZlKHByb2Nlc3NlZEl0ZW0pLFxuICAgICAgICAgICAgJ3AtbWVudWl0ZW0tYWN0aXZlJzogdGhpcy5pc0l0ZW1BY3RpdmUocHJvY2Vzc2VkSXRlbSksXG4gICAgICAgICAgICAncC1mb2N1cyc6IHRoaXMuaXNJdGVtRm9jdXNlZChwcm9jZXNzZWRJdGVtKSxcbiAgICAgICAgICAgICdwLWRpc2FibGVkJzogdGhpcy5pc0l0ZW1EaXNhYmxlZChwcm9jZXNzZWRJdGVtKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnbGFiZWwnKTtcbiAgICB9XG5cbiAgICBnZXRTZXBhcmF0b3JJdGVtQ2xhc3MocHJvY2Vzc2VkSXRlbTogYW55KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLmdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdjbGFzcycpLFxuICAgICAgICAgICAgJ3AtbWVudWl0ZW0tc2VwYXJhdG9yJzogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldEFyaWFTZXRTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNJdGVtVmlzaWJsZShwcm9jZXNzZWRJdGVtKSAmJiAhdGhpcy5nZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc2VwYXJhdG9yJykpLmxlbmd0aDtcbiAgICB9XG5cbiAgICBnZXRBcmlhUG9zSW5zZXQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gaW5kZXggLSB0aGlzLml0ZW1zLnNsaWNlKDAsIGluZGV4KS5maWx0ZXIoKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNJdGVtVmlzaWJsZShwcm9jZXNzZWRJdGVtKSAmJiB0aGlzLmdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdzZXBhcmF0b3InKSkubGVuZ3RoICsgMTtcbiAgICB9XG5cbiAgICBpc0l0ZW1WaXNpYmxlKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAndmlzaWJsZScpICE9PSBmYWxzZTtcbiAgICB9XG5cbiAgICBpc0l0ZW1BY3RpdmUocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZUl0ZW1QYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVJdGVtUGF0aC5zb21lKChwYXRoKSA9PiBwYXRoLmtleSA9PT0gcHJvY2Vzc2VkSXRlbS5rZXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNJdGVtRGlzYWJsZWQocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdkaXNhYmxlZCcpO1xuICAgIH1cblxuICAgIGlzSXRlbUZvY3VzZWQocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvY3VzZWRJdGVtSWQgPT09IHRoaXMuZ2V0SXRlbUlkKHByb2Nlc3NlZEl0ZW0pO1xuICAgIH1cblxuICAgIGlzSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuaXNOb3RFbXB0eShwcm9jZXNzZWRJdGVtLml0ZW1zKTtcbiAgICB9XG5cbiAgICBvbkl0ZW1Nb3VzZUVudGVyKHBhcmFtOiBhbnkpIHtcbiAgICAgICAgY29uc3QgeyBldmVudCwgcHJvY2Vzc2VkSXRlbSB9ID0gcGFyYW07XG4gICAgICAgIHRoaXMuaXRlbU1vdXNlRW50ZXIuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBwcm9jZXNzZWRJdGVtIH0pO1xuICAgIH1cblxuICAgIG9uSXRlbUNsaWNrKGV2ZW50OiBhbnksIHByb2Nlc3NlZEl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLmdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdjb21tYW5kJywgeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgaXRlbTogcHJvY2Vzc2VkSXRlbS5pdGVtIH0pO1xuICAgICAgICB0aGlzLml0ZW1DbGljay5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHByb2Nlc3NlZEl0ZW0sIGlzRm9jdXM6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgb25FbnRlcihldmVudCwgc3VibGlzdCkge1xuICAgICAgICBpZiAoZXZlbnQuZnJvbVN0YXRlID09PSAndm9pZCcgJiYgZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY29uc3Qgc3VibGlzdCA9IGV2ZW50LmVsZW1lbnQ7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uKHN1Ymxpc3QpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcG9zaXRpb24oc3VibGlzdCkge1xuICAgICAgICBjb25zdCBwYXJlbnRJdGVtID0gc3VibGlzdC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lck9mZnNldCA9IERvbUhhbmRsZXIuZ2V0T2Zmc2V0KHN1Ymxpc3QucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50KTtcbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBEb21IYW5kbGVyLmdldFZpZXdwb3J0KCk7XG4gICAgICAgIGNvbnN0IHN1Ymxpc3RXaWR0aCA9IHN1Ymxpc3Qub2Zmc2V0UGFyZW50ID8gc3VibGlzdC5vZmZzZXRXaWR0aCA6IERvbUhhbmRsZXIuZ2V0SGlkZGVuRWxlbWVudE91dGVyV2lkdGgoc3VibGlzdCk7XG4gICAgICAgIGNvbnN0IGl0ZW1PdXRlcldpZHRoID0gRG9tSGFuZGxlci5nZXRPdXRlcldpZHRoKHBhcmVudEl0ZW0uY2hpbGRyZW5bMF0pO1xuXG4gICAgICAgIHN1Ymxpc3Quc3R5bGUudG9wID0gJzBweCc7XG5cbiAgICAgICAgaWYgKHBhcnNlSW50KGNvbnRhaW5lck9mZnNldC5sZWZ0LCAxMCkgKyBpdGVtT3V0ZXJXaWR0aCArIHN1Ymxpc3RXaWR0aCA+IHZpZXdwb3J0LndpZHRoIC0gRG9tSGFuZGxlci5jYWxjdWxhdGVTY3JvbGxiYXJXaWR0aCgpKSB7XG4gICAgICAgICAgICBzdWJsaXN0LnN0eWxlLmxlZnQgPSAtMSAqIHN1Ymxpc3RXaWR0aCArICdweCc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdWJsaXN0LnN0eWxlLmxlZnQgPSBpdGVtT3V0ZXJXaWR0aCArICdweCc7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIENvbnRleHRNZW51IGRpc3BsYXlzIGFuIG92ZXJsYXkgbWVudSBvbiByaWdodCBjbGljayBvZiBpdHMgdGFyZ2V0LiBOb3RlIHRoYXQgY29tcG9uZW50cyBsaWtlIFRhYmxlIGhhcyBzcGVjaWFsIGludGVncmF0aW9uIHdpdGggQ29udGV4dE1lbnUuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtY29udGV4dE1lbnUnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICNjb250YWluZXJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIncm9vdCdcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1uYW1lXT1cIidjb250ZXh0bWVudSdcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiaWRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1jb250ZXh0bWVudSBwLWNvbXBvbmVudCc6IHRydWUsICdwLWNvbnRleHRtZW51LW92ZXJsYXknOiB0cnVlIH1cIlxuICAgICAgICAgICAgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwic3R5bGVcIlxuICAgICAgICAgICAgW0BvdmVybGF5QW5pbWF0aW9uXT1cInsgdmFsdWU6ICd2aXNpYmxlJyB9XCJcbiAgICAgICAgICAgIChAb3ZlcmxheUFuaW1hdGlvbi5zdGFydCk9XCJvbk92ZXJsYXlBbmltYXRpb25TdGFydCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChAb3ZlcmxheUFuaW1hdGlvbi5kb25lKT1cIm9uT3ZlcmxheUFuaW1hdGlvbkVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICpuZ0lmPVwidmlzaWJsZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHAtY29udGV4dE1lbnVTdWJcbiAgICAgICAgICAgICAgICAjcm9vdG1lbnVcbiAgICAgICAgICAgICAgICBbcm9vdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbaXRlbXNdPVwicHJvY2Vzc2VkSXRlbXNcIlxuICAgICAgICAgICAgICAgIFtpdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbbWVudUlkXT1cImlkXCJcbiAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiIWRpc2FibGVkID8gdGFiaW5kZXggOiAtMVwiXG4gICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgW2Jhc2VaSW5kZXhdPVwiYmFzZVpJbmRleFwiXG4gICAgICAgICAgICAgICAgW2F1dG9aSW5kZXhdPVwiYXV0b1pJbmRleFwiXG4gICAgICAgICAgICAgICAgW3Zpc2libGVdPVwic3VibWVudVZpc2libGUoKVwiXG4gICAgICAgICAgICAgICAgW2ZvY3VzZWRJdGVtSWRdPVwiZm9jdXNlZCA/IGZvY3VzZWRJdGVtSWQgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtUGF0aF09XCJhY3RpdmVJdGVtUGF0aCgpXCJcbiAgICAgICAgICAgICAgICAoaXRlbUNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChtZW51Rm9jdXMpPVwib25NZW51Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKG1lbnVCbHVyKT1cIm9uTWVudUJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKG1lbnVLZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoaXRlbU1vdXNlRW50ZXIpPVwib25JdGVtTW91c2VFbnRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgID48L3AtY29udGV4dE1lbnVTdWI+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgYW5pbWF0aW9uczogW3RyaWdnZXIoJ292ZXJsYXlBbmltYXRpb24nLCBbdHJhbnNpdGlvbignOmVudGVyJywgW3N0eWxlKHsgb3BhY2l0eTogMCB9KSwgYW5pbWF0ZSgnMjUwbXMnKV0pLCB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbYW5pbWF0ZSgnLjFzIGxpbmVhcicsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSldKV0pXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL2NvbnRleHRtZW51LmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdjYXgtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRNZW51IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIG1lbnVpdGVtcy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgbW9kZWwodmFsdWU6IE1lbnVJdGVtW10gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc2VkSXRlbXMgPSB0aGlzLmNyZWF0ZVByb2Nlc3NlZEl0ZW1zKHRoaXMuX21vZGVsIHx8IFtdKTtcbiAgICB9XG4gICAgZ2V0IG1vZGVsKCk6IE1lbnVJdGVtW10gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fbW9kZWw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV2ZW50IGZvciB3aGljaCB0aGUgbWVudSBtdXN0IGJlIGRpc3BsYXllZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0cmlnZ2VyRXZlbnQ6IHN0cmluZyA9ICdjb250ZXh0bWVudSc7XG4gICAgLyoqXG4gICAgICogTG9jYWwgdGVtcGxhdGUgdmFyaWFibGUgbmFtZSBvZiB0aGUgZWxlbWVudCB0byBhdHRhY2ggdGhlIGNvbnRleHQgbWVudS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXQ6IEhUTUxFbGVtZW50IHwgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEF0dGFjaGVzIHRoZSBtZW51IHRvIGRvY3VtZW50IGluc3RlYWQgb2YgYSBwYXJ0aWN1bGFyIGl0ZW0uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGdsb2JhbDogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBUYXJnZXQgZWxlbWVudCB0byBhdHRhY2ggdGhlIG92ZXJsYXksIHZhbGlkIHZhbHVlcyBhcmUgXCJib2R5XCIgb3IgYSBsb2NhbCBuZy10ZW1wbGF0ZSB2YXJpYWJsZSBvZiBhbm90aGVyIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXBwZW5kVG86IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZiB8IFRlbXBsYXRlUmVmPGFueT4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHwgYW55O1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBtYW5hZ2UgbGF5ZXJpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9aSW5kZXg6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIEJhc2UgekluZGV4IHZhbHVlIHRvIHVzZSBpbiBsYXllcmluZy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBiYXNlWkluZGV4OiBudW1iZXIgPSAwO1xuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgaWQgc3RhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHZhbHVlIHRoYXQgbGFiZWxzIGFuIGludGVyYWN0aXZlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSWRlbnRpZmllciBvZiB0aGUgdW5kZXJseWluZyBpbnB1dCBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogUHJlc3MgZGVsYXkgaW4gdG91Y2ggZGV2aWNlcyBhcyBtaWxpc2Vjb25kcy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBwcmVzc0RlbGF5OiBudW1iZXIgfCB1bmRlZmluZWQgPSA1MDA7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gb3ZlcmxheSBtZW51IGlzIHNob3duLlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvblNob3c6IEV2ZW50RW1pdHRlcjxudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVsbD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBvdmVybGF5IG1lbnUgaXMgaGlkZGVuLlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkhpZGU6IEV2ZW50RW1pdHRlcjxudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVsbD4oKTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oQ2F4VGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PENheFRlbXBsYXRlPiB8IHVuZGVmaW5lZDtcblxuICAgIEBWaWV3Q2hpbGQoJ3Jvb3RtZW51Jykgcm9vdG1lbnU6IENvbnRleHRNZW51U3ViIHwgdW5kZWZpbmVkO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyVmlld0NoaWxkOiBFbGVtZW50UmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBzdWJtZW51SWNvblRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIGl0ZW1UZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBjb250YWluZXI6IEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICAgb3V0c2lkZUNsaWNrTGlzdGVuZXI6IFZvaWRMaXN0ZW5lcjtcblxuICAgIHJlc2l6ZUxpc3RlbmVyOiBWb2lkTGlzdGVuZXI7XG5cbiAgICB0cmlnZ2VyRXZlbnRMaXN0ZW5lcjogVm9pZExpc3RlbmVyO1xuXG4gICAgZG9jdW1lbnRDbGlja0xpc3RlbmVyOiBWb2lkTGlzdGVuZXI7XG5cbiAgICBkb2N1bWVudFRyaWdnZXJMaXN0ZW5lcjogVm9pZExpc3RlbmVyO1xuXG4gICAgdG91Y2hFbmRMaXN0ZW5lcjogVm9pZExpc3RlbmVyO1xuXG4gICAgcGFnZVg6IG51bWJlcjtcblxuICAgIHBhZ2VZOiBudW1iZXI7XG5cbiAgICB2aXNpYmxlID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIHJlbGF0aXZlQWxpZ246IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBwcml2YXRlIHdpbmRvdzogV2luZG93O1xuXG4gICAgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgYWN0aXZlSXRlbVBhdGggPSBzaWduYWw8YW55PihbXSk7XG5cbiAgICBmb2N1c2VkSXRlbUluZm8gPSBzaWduYWw8YW55Pih7IGluZGV4OiAtMSwgbGV2ZWw6IDAsIHBhcmVudEtleTogJycsIGl0ZW06IG51bGwgfSk7XG5cbiAgICBzdWJtZW51VmlzaWJsZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBzZWFyY2hWYWx1ZTogc3RyaW5nID0gJyc7XG5cbiAgICBzZWFyY2hUaW1lb3V0OiBhbnk7XG5cbiAgICBfcHJvY2Vzc2VkSXRlbXM6IGFueVtdO1xuXG4gICAgX21vZGVsOiBNZW51SXRlbVtdIHwgdW5kZWZpbmVkO1xuXG4gICAgcHJlc3NUaW1lcjogYW55O1xuXG4gICAgZ2V0IHZpc2libGVJdGVtcygpIHtcbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHRoaXMuYWN0aXZlSXRlbVBhdGgoKS5maW5kKChwKSA9PiBwLmtleSA9PT0gdGhpcy5mb2N1c2VkSXRlbUluZm8oKS5wYXJlbnRLZXkpO1xuXG4gICAgICAgIHJldHVybiBwcm9jZXNzZWRJdGVtID8gcHJvY2Vzc2VkSXRlbS5pdGVtcyA6IHRoaXMucHJvY2Vzc2VkSXRlbXM7XG4gICAgfVxuXG4gICAgZ2V0IHByb2Nlc3NlZEl0ZW1zKCkge1xuICAgICAgICBpZiAoIXRoaXMuX3Byb2Nlc3NlZEl0ZW1zIHx8ICF0aGlzLl9wcm9jZXNzZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NlZEl0ZW1zID0gdGhpcy5jcmVhdGVQcm9jZXNzZWRJdGVtcyh0aGlzLm1vZGVsIHx8IFtdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc2VkSXRlbXM7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWRJdGVtSWQoKSB7XG4gICAgICAgIGNvbnN0IGZvY3VzZWRJdGVtID0gdGhpcy5mb2N1c2VkSXRlbUluZm8oKTtcbiAgICAgICAgcmV0dXJuIGZvY3VzZWRJdGVtLml0ZW0gJiYgZm9jdXNlZEl0ZW0uaXRlbT8uaWQgPyBmb2N1c2VkSXRlbS5pdGVtLmlkIDogZm9jdXNlZEl0ZW0uaW5kZXggIT09IC0xID8gYCR7dGhpcy5pZH0ke09iamVjdFV0aWxzLmlzTm90RW1wdHkoZm9jdXNlZEl0ZW0ucGFyZW50S2V5KSA/ICdfJyArIGZvY3VzZWRJdGVtLnBhcmVudEtleSA6ICcnfV8ke2ZvY3VzZWRJdGVtLmluZGV4fWAgOiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHB1YmxpYyBjb25maWc6IGNheENvbmZpZyxcbiAgICAgICAgcHVibGljIG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLndpbmRvdyA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcgYXMgV2luZG93O1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IHRoaXMuYWN0aXZlSXRlbVBhdGgoKTtcblxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzTm90RW1wdHkocGF0aCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRHbG9iYWxMaXN0ZW5lcnMoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMudmlzaWJsZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51bmJpbmRHbG9iYWxMaXN0ZW5lcnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLmlkIHx8IFVuaXF1ZUNvbXBvbmVudElkKCk7XG4gICAgICAgIHRoaXMuYmluZFRyaWdnZXJFdmVudExpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgaXNNb2JpbGUoKSB7XG4gICAgICAgIHJldHVybiBEb21IYW5kbGVyLmlzSU9TKCkgfHwgRG9tSGFuZGxlci5pc0FuZHJvaWQoKTtcbiAgICB9XG5cbiAgICBiaW5kVHJpZ2dlckV2ZW50TGlzdGVuZXIoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudHJpZ2dlckV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNNb2JpbGUoKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5nbG9iYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlckV2ZW50TGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmRvY3VtZW50LCB0aGlzLnRyaWdnZXJFdmVudCwgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJFdmVudExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy50YXJnZXQsIHRoaXMudHJpZ2dlckV2ZW50LCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5nbG9iYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlckV2ZW50TGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmRvY3VtZW50LCAndG91Y2hzdGFydCcsIHRoaXMub25Ub3VjaFN0YXJ0LmJpbmQodGhpcykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b3VjaEVuZExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5kb2N1bWVudCwgJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kLmJpbmQodGhpcykpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJFdmVudExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy50YXJnZXQsICd0b3VjaHN0YXJ0JywgdGhpcy5vblRvdWNoU3RhcnQuYmluZCh0aGlzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdWNoRW5kTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLnRhcmdldCwgJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kLmJpbmQodGhpcykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZEdsb2JhbExpc3RlbmVycygpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudFRhcmdldDogYW55ID0gdGhpcy5lbCA/IHRoaXMuZWwubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50IDogJ2RvY3VtZW50JztcblxuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZG9jdW1lbnRUYXJnZXQsICdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5vZmZzZXRQYXJlbnQgJiYgdGhpcy5pc091dHNpZGVDbGlja2VkKGV2ZW50KSAmJiAhZXZlbnQuY3RybEtleSAmJiBldmVudC5idXR0b24gIT09IDIgJiYgdGhpcy50cmlnZ2VyRXZlbnQgIT09ICdjbGljaycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50VHJpZ2dlckxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZG9jdW1lbnRUYXJnZXQsIHRoaXMudHJpZ2dlckV2ZW50LCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50ICYmIHRoaXMuaXNPdXRzaWRlQ2xpY2tlZChldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldywgJ3Jlc2l6ZScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXM/LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzdWJtZW51aWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWVudUljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2l0ZW0nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNyZWF0ZVByb2Nlc3NlZEl0ZW1zKGl0ZW1zOiBhbnksIGxldmVsOiBudW1iZXIgPSAwLCBwYXJlbnQ6IGFueSA9IHt9LCBwYXJlbnRLZXk6IGFueSA9ICcnKSB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW1zID0gW107XG5cbiAgICAgICAgaXRlbXMgJiZcbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gKHBhcmVudEtleSAhPT0gJycgPyBwYXJlbnRLZXkgKyAnXycgOiAnJykgKyBpbmRleDtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdJdGVtID0ge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50LFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRLZXlcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgbmV3SXRlbVsnaXRlbXMnXSA9IHRoaXMuY3JlYXRlUHJvY2Vzc2VkSXRlbXMoaXRlbS5pdGVtcywgbGV2ZWwgKyAxLCBuZXdJdGVtLCBrZXkpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZEl0ZW1zLnB1c2gobmV3SXRlbSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkSXRlbXM7XG4gICAgfVxuXG4gICAgZ2V0SXRlbVByb3AoaXRlbTogYW55LCBuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gPyBPYmplY3RVdGlscy5nZXRJdGVtVmFsdWUoaXRlbVtuYW1lXSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0UHJvY2Nlc3NlZEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZEl0ZW0gPyB0aGlzLmdldEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtLml0ZW0pIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldEl0ZW1MYWJlbChpdGVtOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbVByb3AoaXRlbSwgJ2xhYmVsJyk7XG4gICAgfVxuXG4gICAgaXNQcm9jZXNzZWRJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzZWRJdGVtICYmIE9iamVjdFV0aWxzLmlzTm90RW1wdHkocHJvY2Vzc2VkSXRlbS5pdGVtcyk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChwcm9jZXNzZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlSXRlbVBhdGgoKS5zb21lKChwKSA9PiBwLmtleSA9PT0gcHJvY2Vzc2VkSXRlbS5rZXkpO1xuICAgIH1cblxuICAgIGlzVmFsaWRTZWxlY3RlZEl0ZW0ocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRJdGVtKHByb2Nlc3NlZEl0ZW0pICYmIHRoaXMuaXNTZWxlY3RlZChwcm9jZXNzZWRJdGVtKTtcbiAgICB9XG5cbiAgICBpc1ZhbGlkSXRlbShwcm9jZXNzZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhcHJvY2Vzc2VkSXRlbSAmJiAhdGhpcy5pc0l0ZW1EaXNhYmxlZChwcm9jZXNzZWRJdGVtLml0ZW0pICYmICF0aGlzLmlzSXRlbVNlcGFyYXRvcihwcm9jZXNzZWRJdGVtLml0ZW0pO1xuICAgIH1cblxuICAgIGlzSXRlbURpc2FibGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtUHJvcChpdGVtLCAnZGlzYWJsZWQnKTtcbiAgICB9XG5cbiAgICBpc0l0ZW1TZXBhcmF0b3IoaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1Qcm9wKGl0ZW0sICdzZXBhcmF0b3InKTtcbiAgICB9XG5cbiAgICBpc0l0ZW1NYXRjaGVkKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkSXRlbShwcm9jZXNzZWRJdGVtKSAmJiB0aGlzLmdldFByb2NjZXNzZWRJdGVtTGFiZWwocHJvY2Vzc2VkSXRlbSkudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKHRoaXMuc2VhcmNoVmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgaXNQcm9jY2Vzc2VkSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkSXRlbSAmJiBPYmplY3RVdGlscy5pc05vdEVtcHR5KHByb2Nlc3NlZEl0ZW0uaXRlbXMpO1xuICAgIH1cblxuICAgIG9uSXRlbUNsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgeyBwcm9jZXNzZWRJdGVtIH0gPSBldmVudDtcbiAgICAgICAgY29uc3QgZ3JvdXBlZCA9IHRoaXMuaXNQcm9jZXNzZWRJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkKHByb2Nlc3NlZEl0ZW0pO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgY29uc3QgeyBpbmRleCwga2V5LCBsZXZlbCwgcGFyZW50S2V5LCBpdGVtIH0gPSBwcm9jZXNzZWRJdGVtO1xuXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1QYXRoLnNldCh0aGlzLmFjdGl2ZUl0ZW1QYXRoKCkuZmlsdGVyKChwKSA9PiBrZXkgIT09IHAua2V5ICYmIGtleS5zdGFydHNXaXRoKHAua2V5KSkpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXgsIGxldmVsLCBwYXJlbnRLZXksIGl0ZW0gfSk7XG5cbiAgICAgICAgICAgIERvbUhhbmRsZXIuZm9jdXModGhpcy5yb290bWVudS5zdWJsaXN0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ3JvdXBlZCA/IHRoaXMub25JdGVtQ2hhbmdlKGV2ZW50KSA6IHRoaXMuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtTW91c2VFbnRlcihldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMub25JdGVtQ2hhbmdlKGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgbWV0YUtleSA9IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleTtcblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFycm93RG93bktleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd1VwS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dMZWZ0S2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFycm93UmlnaHRLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uSG9tZUtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVuZEtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1NwYWNlJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uU3BhY2VLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVudGVyS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uRXNjYXBlS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uVGFiS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICAgICAgY2FzZSAnUGFnZVVwJzpcbiAgICAgICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdTaGlmdExlZnQnOlxuICAgICAgICAgICAgY2FzZSAnU2hpZnRSaWdodCc6XG4gICAgICAgICAgICAgICAgLy9OT09QXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaWYgKCFtZXRhS2V5ICYmIE9iamVjdFV0aWxzLmlzUHJpbnRhYmxlQ2hhcmFjdGVyKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hJdGVtcyhldmVudCwgZXZlbnQua2V5KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQXJyb3dEb3duS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xID8gdGhpcy5maW5kTmV4dEl0ZW1JbmRleCh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KSA6IHRoaXMuZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZEl0ZW1JbmRleChldmVudCwgaXRlbUluZGV4KTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkFycm93UmlnaHRLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHRoaXMudmlzaWJsZUl0ZW1zW3RoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXhdO1xuICAgICAgICBjb25zdCBncm91cGVkID0gdGhpcy5pc1Byb2NjZXNzZWRJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSk7XG5cbiAgICAgICAgaWYgKGdyb3VwZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25JdGVtQ2hhbmdlKHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHByb2Nlc3NlZEl0ZW0gfSk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyBpbmRleDogLTEsIHBhcmVudEtleTogcHJvY2Vzc2VkSXRlbS5rZXksIGl0ZW06IHByb2Nlc3NlZEl0ZW0uaXRlbSB9KTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcbiAgICAgICAgICAgIHRoaXMub25BcnJvd0Rvd25LZXkoZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkFycm93VXBLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHRoaXMudmlzaWJsZUl0ZW1zW3RoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXhdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwZWQgPSB0aGlzLmlzUHJvY2Nlc3NlZEl0ZW1Hcm91cChwcm9jZXNzZWRJdGVtKTtcblxuICAgICAgICAgICAgICAgICFncm91cGVkICYmIHRoaXMub25JdGVtQ2hhbmdlKHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHByb2Nlc3NlZEl0ZW0gfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xID8gdGhpcy5maW5kUHJldkl0ZW1JbmRleCh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KSA6IHRoaXMuZmluZExhc3RGb2N1c2VkSXRlbUluZGV4KCk7XG5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZEl0ZW1JbmRleChldmVudCwgaXRlbUluZGV4KTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFycm93TGVmdEtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBwcm9jZXNzZWRJdGVtID0gdGhpcy52aXNpYmxlSXRlbXNbdGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleF07XG4gICAgICAgIGNvbnN0IHBhcmVudEl0ZW0gPSB0aGlzLmFjdGl2ZUl0ZW1QYXRoKCkuZmluZCgocCkgPT4gcC5rZXkgPT09IHByb2Nlc3NlZEl0ZW0ucGFyZW50S2V5KTtcbiAgICAgICAgY29uc3Qgcm9vdCA9IE9iamVjdFV0aWxzLmlzRW1wdHkocHJvY2Vzc2VkSXRlbS5wYXJlbnQpO1xuXG4gICAgICAgIGlmICghcm9vdCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXg6IC0xLCBwYXJlbnRLZXk6IHBhcmVudEl0ZW0gPyBwYXJlbnRJdGVtLnBhcmVudEtleSA6ICcnLCBpdGVtOiBwcm9jZXNzZWRJdGVtLml0ZW0gfSk7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgICAgICAgICB0aGlzLm9uQXJyb3dEb3duS2V5KGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW1QYXRoID0gdGhpcy5hY3RpdmVJdGVtUGF0aCgpLmZpbHRlcigocCkgPT4gcC5wYXJlbnRLZXkgIT09IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkucGFyZW50S2V5KTtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtUGF0aC5zZXQoYWN0aXZlSXRlbVBhdGgpO1xuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25Ib21lS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZEl0ZW1JbmRleChldmVudCwgdGhpcy5maW5kRmlyc3RJdGVtSW5kZXgoKSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25FbmRLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkSXRlbUluZGV4KGV2ZW50LCB0aGlzLmZpbmRMYXN0SXRlbUluZGV4KCkpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uU3BhY2VLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbkVudGVyS2V5KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkVzY2FwZUtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHRoaXMuZmluZFZpc2libGVJdGVtKHRoaXMuZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpKTtcbiAgICAgICAgY29uc3QgZm9jdXNlZEl0ZW1JbmZvID0gdGhpcy5mb2N1c2VkSXRlbUluZm8oKTtcbiAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgLi4uZm9jdXNlZEl0ZW1JbmZvLCBpbmRleDogdGhpcy5maW5kRmlyc3RGb2N1c2VkSXRlbUluZGV4KCksIGl0ZW06IHByb2Nlc3NlZEl0ZW0uaXRlbSB9KTtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uVGFiS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHRoaXMudmlzaWJsZUl0ZW1zW3RoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBlZCA9IHRoaXMuaXNQcm9jY2Vzc2VkSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pO1xuXG4gICAgICAgICAgICAhZ3JvdXBlZCAmJiB0aGlzLm9uSXRlbUNoYW5nZSh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBwcm9jZXNzZWRJdGVtIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuXG4gICAgb25FbnRlcktleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5yb290bWVudS5lbC5uYXRpdmVFbGVtZW50LCBgbGlbaWQ9XCIke2Ake3RoaXMuZm9jdXNlZEl0ZW1JZH1gfVwiXWApO1xuICAgICAgICAgICAgY29uc3QgYW5jaG9yRWxlbWVudCA9IGVsZW1lbnQgJiYgRG9tSGFuZGxlci5maW5kU2luZ2xlKGVsZW1lbnQsICdhW2RhdGEtcGMtc2VjdGlvbj1cImFjdGlvblwiXScpO1xuXG4gICAgICAgICAgICBhbmNob3JFbGVtZW50ID8gYW5jaG9yRWxlbWVudC5jbGljaygpIDogZWxlbWVudCAmJiBlbGVtZW50LmNsaWNrKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW0gPSB0aGlzLnZpc2libGVJdGVtc1t0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwZWQgPSB0aGlzLmlzUHJvY2Nlc3NlZEl0ZW1Hcm91cChwcm9jZXNzZWRJdGVtKTtcblxuICAgICAgICAgICAgaWYgKCFncm91cGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9jdXNlZEl0ZW1JbmZvID0gdGhpcy5mb2N1c2VkSXRlbUluZm8oKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyAuLi5mb2N1c2VkSXRlbUluZm8sIGluZGV4OiB0aGlzLmZpbmRGaXJzdEZvY3VzZWRJdGVtSW5kZXgoKSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25JdGVtQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgeyBwcm9jZXNzZWRJdGVtLCBpc0ZvY3VzIH0gPSBldmVudDtcbiAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzRW1wdHkocHJvY2Vzc2VkSXRlbSkpIHJldHVybjtcblxuICAgICAgICBjb25zdCB7IGluZGV4LCBrZXksIGxldmVsLCBwYXJlbnRLZXksIGl0ZW1zIH0gPSBwcm9jZXNzZWRJdGVtO1xuICAgICAgICBjb25zdCBncm91cGVkID0gT2JqZWN0VXRpbHMuaXNOb3RFbXB0eShpdGVtcyk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW1QYXRoID0gdGhpcy5hY3RpdmVJdGVtUGF0aCgpLmZpbHRlcigocCkgPT4gcC5wYXJlbnRLZXkgIT09IHBhcmVudEtleSAmJiBwLnBhcmVudEtleSAhPT0ga2V5KTtcblxuICAgICAgICBpZiAoZ3JvdXBlZCkge1xuICAgICAgICAgICAgYWN0aXZlSXRlbVBhdGgucHVzaChwcm9jZXNzZWRJdGVtKTtcbiAgICAgICAgICAgIHRoaXMuc3VibWVudVZpc2libGUuc2V0KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9jdXNlZEl0ZW1JbmZvLnNldCh7IGluZGV4LCBsZXZlbCwgcGFyZW50S2V5LCBpdGVtOiBwcm9jZXNzZWRJdGVtLml0ZW0gfSk7XG4gICAgICAgIHRoaXMuYWN0aXZlSXRlbVBhdGguc2V0KGFjdGl2ZUl0ZW1QYXRoKTtcblxuICAgICAgICBpc0ZvY3VzICYmIERvbUhhbmRsZXIuZm9jdXModGhpcy5yb290bWVudS5zdWJsaXN0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uTWVudUZvY3VzKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZm9jdXNlZEl0ZW1JbmZvID0gdGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCAhPT0gLTEgPyB0aGlzLmZvY3VzZWRJdGVtSW5mbygpIDogeyBpbmRleDogLTEsIGxldmVsOiAwLCBwYXJlbnRLZXk6ICcnLCBpdGVtOiBudWxsIH07XG5cbiAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KGZvY3VzZWRJdGVtSW5mbyk7XG4gICAgfVxuXG4gICAgb25NZW51Qmx1cihldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyBpbmRleDogLTEsIGxldmVsOiAwLCBwYXJlbnRLZXk6ICcnLCBpdGVtOiBudWxsIH0pO1xuICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgb25PdmVybGF5QW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndmlzaWJsZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIgPSBldmVudC5lbGVtZW50O1xuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVPblRvcCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kT3ZlcmxheSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZEdsb2JhbExpc3RlbmVycygpO1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuZm9jdXModGhpcy5yb290bWVudS5zdWJsaXN0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PdmVybGF5QW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LnRvU3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3ZvaWQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25PdmVybGF5SGlkZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwZW5kT3ZlcmxheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcGVuZFRvID09PSAnYm9keScpIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LCB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIGVsc2UgRG9tSGFuZGxlci5hcHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCB0aGlzLmFwcGVuZFRvKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVPblRvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCAmJiB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZCkge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuc2V0KCdtZW51JywgdGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCwgdGhpcy5iYXNlWkluZGV4ICsgdGhpcy5jb25maWcuekluZGV4Lm1lbnUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PdmVybGF5SGlkZSgpIHtcbiAgICAgICAgdGhpcy51bmJpbmRHbG9iYWxMaXN0ZW5lcnMoKTtcblxuICAgICAgICBpZiAoISh0aGlzLmNkIGFzIFZpZXdSZWYpLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyICYmIHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5jb250YWluZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb250YWluZXIgPSBudWxsO1xuICAgIH1cblxuICAgIG9uVG91Y2hTdGFydChldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLnByZXNzVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvdyhldmVudCk7XG4gICAgICAgIH0sIHRoaXMucHJlc3NEZWxheSk7XG4gICAgfVxuXG4gICAgb25Ub3VjaEVuZCgpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucHJlc3NUaW1lcik7XG4gICAgfVxuXG4gICAgaGlkZSgpIHtcbiAgICAgICAgdGhpcy52aXNpYmxlLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMub25IaWRlLmVtaXQoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtUGF0aC5zZXQoW10pO1xuICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyBpbmRleDogLTEsIGxldmVsOiAwLCBwYXJlbnRLZXk6ICcnLCBpdGVtOiBudWxsIH0pO1xuICAgIH1cblxuICAgIHRvZ2dsZShldmVudD86IGFueSkge1xuICAgICAgICB0aGlzLnZpc2libGUoKSA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KGV2ZW50KTtcbiAgICB9XG5cbiAgICBzaG93KGV2ZW50OiBhbnkpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtUGF0aC5zZXQoW10pO1xuICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyBpbmRleDogLTEsIGxldmVsOiAwLCBwYXJlbnRLZXk6ICcnLCBpdGVtOiBudWxsIH0pO1xuXG4gICAgICAgIHRoaXMucGFnZVggPSBldmVudC5wYWdlWDtcbiAgICAgICAgdGhpcy5wYWdlWSA9IGV2ZW50LnBhZ2VZO1xuXG4gICAgICAgIHRoaXMub25TaG93LmVtaXQoKTtcbiAgICAgICAgdGhpcy52aXNpYmxlKCkgPyB0aGlzLnBvc2l0aW9uKCkgOiB0aGlzLnZpc2libGUuc2V0KHRydWUpO1xuXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHBvc2l0aW9uKCkge1xuICAgICAgICBsZXQgbGVmdCA9IHRoaXMucGFnZVggKyAxO1xuICAgICAgICBsZXQgdG9wID0gdGhpcy5wYWdlWSArIDE7XG4gICAgICAgIGxldCB3aWR0aCA9IHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50ID8gdGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA6IERvbUhhbmRsZXIuZ2V0SGlkZGVuRWxlbWVudE91dGVyV2lkdGgodGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGxldCBoZWlnaHQgPSB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50Lm9mZnNldFBhcmVudCA/IHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogRG9tSGFuZGxlci5nZXRIaWRkZW5FbGVtZW50T3V0ZXJIZWlnaHQodGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGxldCB2aWV3cG9ydCA9IERvbUhhbmRsZXIuZ2V0Vmlld3BvcnQoKTtcblxuICAgICAgICAvL2ZsaXBcbiAgICAgICAgaWYgKGxlZnQgKyB3aWR0aCAtIHRoaXMuZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxMZWZ0ID4gdmlld3BvcnQud2lkdGgpIHtcbiAgICAgICAgICAgIGxlZnQgLT0gd2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICAvL2ZsaXBcbiAgICAgICAgaWYgKHRvcCArIGhlaWdodCAtIHRoaXMuZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3AgPiB2aWV3cG9ydC5oZWlnaHQpIHtcbiAgICAgICAgICAgIHRvcCAtPSBoZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAvL2ZpdFxuICAgICAgICBpZiAobGVmdCA8IHRoaXMuZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxMZWZ0KSB7XG4gICAgICAgICAgICBsZWZ0ID0gdGhpcy5kb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvL2ZpdFxuICAgICAgICBpZiAodG9wIDwgdGhpcy5kb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCkge1xuICAgICAgICAgICAgdG9wID0gdGhpcy5kb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnO1xuICAgICAgICB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9IHRvcCArICdweCc7XG4gICAgfVxuXG4gICAgc2VhcmNoSXRlbXMoZXZlbnQ6IGFueSwgY2hhcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAodGhpcy5zZWFyY2hWYWx1ZSB8fCAnJykgKyBjaGFyO1xuXG4gICAgICAgIGxldCBpdGVtSW5kZXggPSAtMTtcbiAgICAgICAgbGV0IG1hdGNoZWQgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGl0ZW1JbmRleCA9IHRoaXMudmlzaWJsZUl0ZW1zLnNsaWNlKHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXgpLmZpbmRJbmRleCgocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc0l0ZW1NYXRjaGVkKHByb2Nlc3NlZEl0ZW0pKTtcbiAgICAgICAgICAgIGl0ZW1JbmRleCA9IGl0ZW1JbmRleCA9PT0gLTEgPyB0aGlzLnZpc2libGVJdGVtcy5zbGljZSgwLCB0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KS5maW5kSW5kZXgoKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNJdGVtTWF0Y2hlZChwcm9jZXNzZWRJdGVtKSkgOiBpdGVtSW5kZXggKyB0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXRlbUluZGV4ID0gdGhpcy52aXNpYmxlSXRlbXMuZmluZEluZGV4KChwcm9jZXNzZWRJdGVtKSA9PiB0aGlzLmlzSXRlbU1hdGNoZWQocHJvY2Vzc2VkSXRlbSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIG1hdGNoZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW1JbmRleCA9PT0gLTEgJiYgdGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIGl0ZW1JbmRleCA9IHRoaXMuZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZEl0ZW1JbmRleChldmVudCwgaXRlbUluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNlYXJjaFRpbWVvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWFyY2hUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBudWxsO1xuICAgICAgICB9LCA1MDApO1xuXG4gICAgICAgIHJldHVybiBtYXRjaGVkO1xuICAgIH1cblxuICAgIGZpbmRWaXNpYmxlSXRlbShpbmRleCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuaXNOb3RFbXB0eSh0aGlzLnZpc2libGVJdGVtcykgPyB0aGlzLnZpc2libGVJdGVtc1tpbmRleF0gOiBudWxsO1xuICAgIH1cblxuICAgIGZpbmRMYXN0Rm9jdXNlZEl0ZW1JbmRleCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMuZmluZFNlbGVjdGVkSXRlbUluZGV4KCk7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZEluZGV4IDwgMCA/IHRoaXMuZmluZExhc3RJdGVtSW5kZXgoKSA6IHNlbGVjdGVkSW5kZXg7XG4gICAgfVxuXG4gICAgZmluZExhc3RJdGVtSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5maW5kTGFzdEluZGV4KHRoaXMudmlzaWJsZUl0ZW1zLCAocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc1ZhbGlkSXRlbShwcm9jZXNzZWRJdGVtKSk7XG4gICAgfVxuXG4gICAgZmluZFByZXZJdGVtSW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBtYXRjaGVkSXRlbUluZGV4ID0gaW5kZXggPiAwID8gT2JqZWN0VXRpbHMuZmluZExhc3RJbmRleCh0aGlzLnZpc2libGVJdGVtcy5zbGljZSgwLCBpbmRleCksIChwcm9jZXNzZWRJdGVtKSA9PiB0aGlzLmlzVmFsaWRJdGVtKHByb2Nlc3NlZEl0ZW0pKSA6IC0xO1xuXG4gICAgICAgIHJldHVybiBtYXRjaGVkSXRlbUluZGV4ID4gLTEgPyBtYXRjaGVkSXRlbUluZGV4IDogaW5kZXg7XG4gICAgfVxuXG4gICAgZmluZE5leHRJdGVtSW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBtYXRjaGVkSXRlbUluZGV4ID0gaW5kZXggPCB0aGlzLnZpc2libGVJdGVtcy5sZW5ndGggLSAxID8gdGhpcy52aXNpYmxlSXRlbXMuc2xpY2UoaW5kZXggKyAxKS5maW5kSW5kZXgoKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNWYWxpZEl0ZW0ocHJvY2Vzc2VkSXRlbSkpIDogLTE7XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoZWRJdGVtSW5kZXggPiAtMSA/IG1hdGNoZWRJdGVtSW5kZXggKyBpbmRleCArIDEgOiBpbmRleDtcbiAgICB9XG5cbiAgICBmaW5kRmlyc3RGb2N1c2VkSXRlbUluZGV4KCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5maW5kU2VsZWN0ZWRJdGVtSW5kZXgoKTtcblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleCA8IDAgPyB0aGlzLmZpbmRGaXJzdEl0ZW1JbmRleCgpIDogc2VsZWN0ZWRJbmRleDtcbiAgICB9XG5cbiAgICBmaW5kRmlyc3RJdGVtSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVJdGVtcy5maW5kSW5kZXgoKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNWYWxpZEl0ZW0ocHJvY2Vzc2VkSXRlbSkpO1xuICAgIH1cblxuICAgIGZpbmRTZWxlY3RlZEl0ZW1JbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZUl0ZW1zLmZpbmRJbmRleCgocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc1ZhbGlkU2VsZWN0ZWRJdGVtKHByb2Nlc3NlZEl0ZW0pKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VGb2N1c2VkSXRlbUluZGV4KGV2ZW50OiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHRoaXMuZmluZFZpc2libGVJdGVtKGluZGV4KTtcbiAgICAgICAgY29uc3QgZm9jdXNlZEl0ZW1JbmZvID0gdGhpcy5mb2N1c2VkSXRlbUluZm8oKTtcbiAgICAgICAgaWYgKGZvY3VzZWRJdGVtSW5mby5pbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEl0ZW1JbmZvLnNldCh7IC4uLmZvY3VzZWRJdGVtSW5mbywgaW5kZXgsIGl0ZW06IHByb2Nlc3NlZEl0ZW0uaXRlbSB9KTtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSW5WaWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzY3JvbGxJblZpZXcoaW5kZXg6IG51bWJlciA9IC0xKSB7XG4gICAgICAgIGNvbnN0IGlkID0gaW5kZXggIT09IC0xID8gYCR7dGhpcy5pZH1fJHtpbmRleH1gIDogdGhpcy5mb2N1c2VkSXRlbUlkO1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMucm9vdG1lbnUuZWwubmF0aXZlRWxlbWVudCwgYGxpW2lkPVwiJHtpZH1cIl1gKTtcblxuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyAmJiBlbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JywgaW5saW5lOiAnbmVhcmVzdCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kUmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldywgJ3Jlc2l6ZScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzT3V0c2lkZUNsaWNrZWQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHJldHVybiAhKHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuaXNTYW1lTm9kZShldmVudC50YXJnZXQpIHx8IHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSk7XG4gICAgfVxuXG4gICAgdW5iaW5kUmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZEdsb2JhbExpc3RlbmVycygpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRUcmlnZ2VyTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRUcmlnZ2VyTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRUcmlnZ2VyTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudG91Y2hFbmRMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy50b3VjaEVuZExpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLnRvdWNoRW5kTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kVHJpZ2dlckV2ZW50TGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXJFdmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJFdmVudExpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJFdmVudExpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZUFwcGVuZGVkRWxlbWVudHMoKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvICYmIHRoaXMuY29udGFpbmVyVmlld0NoaWxkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBlbmRUbyA9PT0gJ2JvZHknKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmRvY3VtZW50LmJvZHksIHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNoaWxkKHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsIHRoaXMuYXBwZW5kVG8pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5iaW5kR2xvYmFsTGlzdGVuZXJzKCk7XG4gICAgICAgIHRoaXMudW5iaW5kVHJpZ2dlckV2ZW50TGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5yZW1vdmVBcHBlbmRlZEVsZW1lbnRzKCk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZSwgUmlwcGxlTW9kdWxlLCBUb29sdGlwTW9kdWxlLCBBbmdsZVJpZ2h0SWNvbiwgU2hhcmVkTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbQ29udGV4dE1lbnUsIFJvdXRlck1vZHVsZSwgVG9vbHRpcE1vZHVsZSwgU2hhcmVkTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtDb250ZXh0TWVudSwgQ29udGV4dE1lbnVTdWJdXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRNZW51TW9kdWxlIHt9XG4iXX0=