cax-design-system 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1812) hide show
  1. package/README.md +47 -0
  2. package/accordion/accordion.d.ts +220 -0
  3. package/accordion/accordion.interface.d.ts +49 -0
  4. package/accordion/accordion.module.d.ts +13 -0
  5. package/accordion/index.d.ts +5 -0
  6. package/accordion/public_api.d.ts +3 -0
  7. package/animate/animate.d.ts +40 -0
  8. package/animate/index.d.ts +5 -0
  9. package/animate/public_api.d.ts +1 -0
  10. package/animateonscroll/animateonscroll.d.ts +75 -0
  11. package/animateonscroll/index.d.ts +5 -0
  12. package/animateonscroll/public_api.d.ts +1 -0
  13. package/api/blockableui.d.ts +10 -0
  14. package/api/caxconfig.d.ts +24 -0
  15. package/api/confirmaeventtype.d.ts +8 -0
  16. package/api/confirmation.d.ts +91 -0
  17. package/api/confirmationservice.d.ts +30 -0
  18. package/api/contextmenuservice.d.ts +11 -0
  19. package/api/filtermatchmode.d.ts +22 -0
  20. package/api/filtermetadata.d.ts +18 -0
  21. package/api/filteroperator.d.ts +4 -0
  22. package/api/filterservice.d.ts +10 -0
  23. package/api/index.d.ts +5 -0
  24. package/api/lazyloadevent.d.ts +47 -0
  25. package/api/lazyloadmeta.d.ts +19 -0
  26. package/api/megamenuitem.d.ts +130 -0
  27. package/api/menuitem.d.ts +176 -0
  28. package/api/message.d.ts +30 -0
  29. package/api/messageservice.d.ts +32 -0
  30. package/api/overlayoptions.d.ts +188 -0
  31. package/api/overlayservice.d.ts +9 -0
  32. package/api/primeicons.d.ts +313 -0
  33. package/api/public_api.d.ts +33 -0
  34. package/api/scrolleroptions.d.ts +116 -0
  35. package/api/selectitem.d.ts +12 -0
  36. package/api/selectitemgroup.d.ts +10 -0
  37. package/api/shared.d.ts +24 -0
  38. package/api/sortevent.d.ts +12 -0
  39. package/api/sortmeta.d.ts +8 -0
  40. package/api/tablestate.d.ts +60 -0
  41. package/api/tooltipoptions.d.ts +69 -0
  42. package/api/translation.d.ts +135 -0
  43. package/api/translationkeys.d.ts +50 -0
  44. package/api/treedragdropservice.d.ts +12 -0
  45. package/api/treenode.d.ts +86 -0
  46. package/api/treenodedragevent.d.ts +27 -0
  47. package/api/treetablenode.d.ts +36 -0
  48. package/autocomplete/autocomplete.d.ts +629 -0
  49. package/autocomplete/autocomplete.interface.d.ts +164 -0
  50. package/autocomplete/index.d.ts +5 -0
  51. package/autocomplete/public_api.d.ts +2 -0
  52. package/autofocus/autofocus.d.ts +28 -0
  53. package/autofocus/index.d.ts +5 -0
  54. package/autofocus/public_api.d.ts +1 -0
  55. package/avatar/avatar.d.ts +73 -0
  56. package/avatar/avatar.module.d.ts +7 -0
  57. package/avatar/index.d.ts +5 -0
  58. package/avatar/public_api.d.ts +2 -0
  59. package/avatargroup/avatargroup.d.ts +27 -0
  60. package/avatargroup/index.d.ts +5 -0
  61. package/avatargroup/public_api.d.ts +1 -0
  62. package/badge/badge.d.ts +23 -0
  63. package/badge/badge.directive.d.ts +33 -0
  64. package/badge/badge.module.d.ts +10 -0
  65. package/badge/index.d.ts +5 -0
  66. package/badge/public_api.d.ts +3 -0
  67. package/baseicon/baseicon.d.ts +15 -0
  68. package/baseicon/index.d.ts +5 -0
  69. package/baseicon/public_api.d.ts +1 -0
  70. package/blockui/blockui.d.ts +64 -0
  71. package/blockui/blockui.interface.d.ts +11 -0
  72. package/blockui/index.d.ts +5 -0
  73. package/blockui/public_api.d.ts +2 -0
  74. package/breadcrumb/breadcrumb.d.ts +55 -0
  75. package/breadcrumb/breadcrumb.interface.d.ts +38 -0
  76. package/breadcrumb/breadcrumb.module.d.ts +13 -0
  77. package/breadcrumb/index.d.ts +5 -0
  78. package/breadcrumb/public_api.d.ts +3 -0
  79. package/button/button.d.ts +84 -0
  80. package/button/button.directive.d.ts +46 -0
  81. package/button/button.interface.d.ts +30 -0
  82. package/button/button.module.d.ts +9 -0
  83. package/button/index.d.ts +5 -0
  84. package/button/public_api.d.ts +4 -0
  85. package/buttongroup/buttongroup.d.ts +11 -0
  86. package/buttongroup/index.d.ts +5 -0
  87. package/buttongroup/public_api.d.ts +1 -0
  88. package/calendar/calendar.d.ts +712 -0
  89. package/calendar/calendar.interface.d.ts +204 -0
  90. package/calendar/calendar.module.d.ts +9 -0
  91. package/calendar/index.d.ts +5 -0
  92. package/calendar/public_api.d.ts +3 -0
  93. package/card/card.d.ts +53 -0
  94. package/card/card.interface.d.ts +27 -0
  95. package/card/card.module.d.ts +11 -0
  96. package/card/index.d.ts +5 -0
  97. package/card/public_api.d.ts +3 -0
  98. package/carousel/carousel.d.ts +227 -0
  99. package/carousel/carousel.interface.d.ts +63 -0
  100. package/carousel/index.d.ts +5 -0
  101. package/carousel/public_api.d.ts +2 -0
  102. package/cascadeselect/cascadeselect.d.ts +435 -0
  103. package/cascadeselect/cascadeselect.interface.d.ts +115 -0
  104. package/cascadeselect/cascadeselect.module.d.ts +15 -0
  105. package/cascadeselect/index.d.ts +5 -0
  106. package/cascadeselect/public_api.d.ts +3 -0
  107. package/chart/chart.d.ts +87 -0
  108. package/chart/index.d.ts +5 -0
  109. package/chart/public_api.d.ts +1 -0
  110. package/checkbox/checkbox.d.ts +164 -0
  111. package/checkbox/checkbox.interface.d.ts +26 -0
  112. package/checkbox/checkbox.module.d.ts +10 -0
  113. package/checkbox/index.d.ts +5 -0
  114. package/checkbox/public_api.d.ts +3 -0
  115. package/chip/chip.d.ts +37 -0
  116. package/chip/chip.interface.d.ts +15 -0
  117. package/chip/chip.module.d.ts +10 -0
  118. package/chip/index.d.ts +5 -0
  119. package/chip/public_api.d.ts +3 -0
  120. package/chips/chips.d.ts +221 -0
  121. package/chips/chips.interface.d.ts +58 -0
  122. package/chips/chips.module.d.ts +13 -0
  123. package/chips/index.d.ts +5 -0
  124. package/chips/public_api.d.ts +3 -0
  125. package/colorpicker/colorpicker.d.ts +247 -0
  126. package/colorpicker/colorpicker.interface.d.ts +15 -0
  127. package/colorpicker/index.d.ts +5 -0
  128. package/colorpicker/public_api.d.ts +2 -0
  129. package/confirmdialog/confirmdialog.d.ts +273 -0
  130. package/confirmdialog/confirmdialog.interface.d.ts +39 -0
  131. package/confirmdialog/index.d.ts +5 -0
  132. package/confirmdialog/public_api.d.ts +2 -0
  133. package/confirmpopup/confirmpopup.d.ts +119 -0
  134. package/confirmpopup/confirmpopup.interface.d.ts +27 -0
  135. package/confirmpopup/index.d.ts +5 -0
  136. package/confirmpopup/public_api.d.ts +2 -0
  137. package/contextmenu/contextmenu.d.ts +260 -0
  138. package/contextmenu/index.d.ts +5 -0
  139. package/contextmenu/public_api.d.ts +1 -0
  140. package/dataview/dataview.d.ts +274 -0
  141. package/dataview/dataview.interface.d.ts +183 -0
  142. package/dataview/index.d.ts +5 -0
  143. package/dataview/public_api.d.ts +2 -0
  144. package/defer/defer.d.ts +39 -0
  145. package/defer/index.d.ts +5 -0
  146. package/defer/public_api.d.ts +1 -0
  147. package/dialog/dialog.d.ts +373 -0
  148. package/dialog/dialog.interface.d.ts +31 -0
  149. package/dialog/index.d.ts +5 -0
  150. package/dialog/public_api.d.ts +2 -0
  151. package/divider/divider.d.ts +49 -0
  152. package/divider/divider.module.d.ts +7 -0
  153. package/divider/index.d.ts +5 -0
  154. package/divider/public_api.d.ts +2 -0
  155. package/dock/dock.d.ts +115 -0
  156. package/dock/dock.interface.d.ts +19 -0
  157. package/dock/index.d.ts +5 -0
  158. package/dock/public_api.d.ts +2 -0
  159. package/dom/connectedoverlayscrollhandler.d.ts +9 -0
  160. package/dom/domhandler.d.ts +95 -0
  161. package/dom/index.d.ts +5 -0
  162. package/dom/public_api.d.ts +2 -0
  163. package/dragdrop/dragdrop.d.ts +112 -0
  164. package/dragdrop/dragdrop.module.d.ts +8 -0
  165. package/dragdrop/index.d.ts +5 -0
  166. package/dragdrop/public_api.d.ts +2 -0
  167. package/dropdown/dropdown-item.d.ts +30 -0
  168. package/dropdown/dropdown.d.ts +627 -0
  169. package/dropdown/dropdown.interface.d.ts +154 -0
  170. package/dropdown/dropdown.module.d.ts +11 -0
  171. package/dropdown/index.d.ts +5 -0
  172. package/dropdown/public_api.d.ts +4 -0
  173. package/dynamicdialog/dialogservice.d.ts +35 -0
  174. package/dynamicdialog/dynamicdialog-config.d.ts +221 -0
  175. package/dynamicdialog/dynamicdialog-injector.d.ts +7 -0
  176. package/dynamicdialog/dynamicdialog-ref.d.ts +101 -0
  177. package/dynamicdialog/dynamicdialog.d.ts +124 -0
  178. package/dynamicdialog/dynamicdialogcontent.d.ts +8 -0
  179. package/dynamicdialog/index.d.ts +5 -0
  180. package/dynamicdialog/public_api.d.ts +6 -0
  181. package/editor/editor.d.ts +111 -0
  182. package/editor/editor.interface.d.ts +64 -0
  183. package/editor/index.d.ts +5 -0
  184. package/editor/public_api.d.ts +2 -0
  185. package/esm2022/accordion/accordion.interface.mjs +2 -0
  186. package/esm2022/accordion/accordion.mjs +591 -0
  187. package/esm2022/accordion/accordion.module.mjs +23 -0
  188. package/esm2022/accordion/cax-design-system-accordion.mjs +5 -0
  189. package/esm2022/accordion/public_api.mjs +4 -0
  190. package/esm2022/animate/animate.mjs +101 -0
  191. package/esm2022/animate/cax-design-system-animate.mjs +5 -0
  192. package/esm2022/animate/public_api.mjs +2 -0
  193. package/esm2022/animateonscroll/animateonscroll.mjs +185 -0
  194. package/esm2022/animateonscroll/cax-design-system-animateonscroll.mjs +5 -0
  195. package/esm2022/animateonscroll/public_api.mjs +2 -0
  196. package/esm2022/api/blockableui.mjs +2 -0
  197. package/esm2022/api/cax-design-system-api.mjs +5 -0
  198. package/esm2022/api/caxconfig.mjs +163 -0
  199. package/esm2022/api/confirmaeventtype.mjs +10 -0
  200. package/esm2022/api/confirmation.mjs +2 -0
  201. package/esm2022/api/confirmationservice.mjs +43 -0
  202. package/esm2022/api/contextmenuservice.mjs +22 -0
  203. package/esm2022/api/filtermatchmode.mjs +23 -0
  204. package/esm2022/api/filtermetadata.mjs +2 -0
  205. package/esm2022/api/filteroperator.mjs +5 -0
  206. package/esm2022/api/filterservice.mjs +225 -0
  207. package/esm2022/api/lazyloadevent.mjs +2 -0
  208. package/esm2022/api/lazyloadmeta.mjs +2 -0
  209. package/esm2022/api/megamenuitem.mjs +2 -0
  210. package/esm2022/api/menuitem.mjs +2 -0
  211. package/esm2022/api/message.mjs +2 -0
  212. package/esm2022/api/messageservice.mjs +47 -0
  213. package/esm2022/api/overlayoptions.mjs +2 -0
  214. package/esm2022/api/overlayservice.mjs +19 -0
  215. package/esm2022/api/primeicons.mjs +314 -0
  216. package/esm2022/api/public_api.mjs +34 -0
  217. package/esm2022/api/scrolleroptions.mjs +2 -0
  218. package/esm2022/api/selectitem.mjs +2 -0
  219. package/esm2022/api/selectitemgroup.mjs +2 -0
  220. package/esm2022/api/shared.mjs +65 -0
  221. package/esm2022/api/sortevent.mjs +2 -0
  222. package/esm2022/api/sortmeta.mjs +2 -0
  223. package/esm2022/api/tablestate.mjs +2 -0
  224. package/esm2022/api/tooltipoptions.mjs +2 -0
  225. package/esm2022/api/translation.mjs +2 -0
  226. package/esm2022/api/translationkeys.mjs +51 -0
  227. package/esm2022/api/treedragdropservice.mjs +21 -0
  228. package/esm2022/api/treenode.mjs +2 -0
  229. package/esm2022/api/treenodedragevent.mjs +2 -0
  230. package/esm2022/api/treetablenode.mjs +2 -0
  231. package/esm2022/autocomplete/autocomplete.interface.mjs +2 -0
  232. package/esm2022/autocomplete/autocomplete.mjs +1880 -0
  233. package/esm2022/autocomplete/cax-design-system-autocomplete.mjs +5 -0
  234. package/esm2022/autocomplete/public_api.mjs +3 -0
  235. package/esm2022/autofocus/autofocus.mjs +78 -0
  236. package/esm2022/autofocus/cax-design-system-autofocus.mjs +5 -0
  237. package/esm2022/autofocus/public_api.mjs +2 -0
  238. package/esm2022/avatar/avatar.mjs +104 -0
  239. package/esm2022/avatar/avatar.module.mjs +16 -0
  240. package/esm2022/avatar/cax-design-system-avatar.mjs +5 -0
  241. package/esm2022/avatar/public_api.mjs +3 -0
  242. package/esm2022/avatargroup/avatargroup.mjs +54 -0
  243. package/esm2022/avatargroup/cax-design-system-avatargroup.mjs +5 -0
  244. package/esm2022/avatargroup/public_api.mjs +2 -0
  245. package/esm2022/badge/badge.directive.mjs +199 -0
  246. package/esm2022/badge/badge.mjs +51 -0
  247. package/esm2022/badge/badge.module.mjs +20 -0
  248. package/esm2022/badge/cax-design-system-badge.mjs +5 -0
  249. package/esm2022/badge/public_api.mjs +4 -0
  250. package/esm2022/baseicon/baseicon.mjs +45 -0
  251. package/esm2022/baseicon/cax-design-system-baseicon.mjs +5 -0
  252. package/esm2022/baseicon/public_api.mjs +2 -0
  253. package/esm2022/blockui/blockui.interface.mjs +2 -0
  254. package/esm2022/blockui/blockui.mjs +206 -0
  255. package/esm2022/blockui/cax-design-system-blockui.mjs +5 -0
  256. package/esm2022/blockui/public_api.mjs +3 -0
  257. package/esm2022/breadcrumb/breadcrumb.interface.mjs +2 -0
  258. package/esm2022/breadcrumb/breadcrumb.mjs +120 -0
  259. package/esm2022/breadcrumb/breadcrumb.module.mjs +23 -0
  260. package/esm2022/breadcrumb/cax-design-system-breadcrumb.mjs +5 -0
  261. package/esm2022/breadcrumb/public_api.mjs +4 -0
  262. package/esm2022/button/button.directive.mjs +227 -0
  263. package/esm2022/button/button.interface.mjs +2 -0
  264. package/esm2022/button/button.mjs +189 -0
  265. package/esm2022/button/button.module.mjs +18 -0
  266. package/esm2022/button/cax-design-system-button.mjs +5 -0
  267. package/esm2022/button/public_api.mjs +5 -0
  268. package/esm2022/buttongroup/buttongroup.mjs +38 -0
  269. package/esm2022/buttongroup/cax-design-system-buttongroup.mjs +5 -0
  270. package/esm2022/buttongroup/public_api.mjs +2 -0
  271. package/esm2022/calendar/calendar.interface.mjs +2 -0
  272. package/esm2022/calendar/calendar.mjs +3192 -0
  273. package/esm2022/calendar/calendar.module.mjs +18 -0
  274. package/esm2022/calendar/cax-design-system-calendar.mjs +5 -0
  275. package/esm2022/calendar/public_api.mjs +4 -0
  276. package/esm2022/card/card.interface.mjs +2 -0
  277. package/esm2022/card/card.mjs +117 -0
  278. package/esm2022/card/card.module.mjs +21 -0
  279. package/esm2022/card/cax-design-system-card.mjs +5 -0
  280. package/esm2022/card/public_api.mjs +4 -0
  281. package/esm2022/carousel/carousel.interface.mjs +2 -0
  282. package/esm2022/carousel/carousel.mjs +968 -0
  283. package/esm2022/carousel/cax-design-system-carousel.mjs +5 -0
  284. package/esm2022/carousel/public_api.mjs +3 -0
  285. package/esm2022/cascadeselect/cascadeselect.interface.mjs +2 -0
  286. package/esm2022/cascadeselect/cascadeselect.mjs +1135 -0
  287. package/esm2022/cascadeselect/cascadeselect.module.mjs +25 -0
  288. package/esm2022/cascadeselect/cax-design-system-cascadeselect.mjs +5 -0
  289. package/esm2022/cascadeselect/public_api.mjs +4 -0
  290. package/esm2022/cax-design-system.mjs +5 -0
  291. package/esm2022/chart/cax-design-system-chart.mjs +5 -0
  292. package/esm2022/chart/chart.mjs +236 -0
  293. package/esm2022/chart/public_api.mjs +2 -0
  294. package/esm2022/checkbox/cax-design-system-checkbox.mjs +5 -0
  295. package/esm2022/checkbox/checkbox.interface.mjs +2 -0
  296. package/esm2022/checkbox/checkbox.mjs +303 -0
  297. package/esm2022/checkbox/checkbox.module.mjs +20 -0
  298. package/esm2022/checkbox/public_api.mjs +4 -0
  299. package/esm2022/chip/cax-design-system-chip.mjs +5 -0
  300. package/esm2022/chip/chip.interface.mjs +2 -0
  301. package/esm2022/chip/chip.mjs +86 -0
  302. package/esm2022/chip/chip.module.mjs +20 -0
  303. package/esm2022/chip/public_api.mjs +4 -0
  304. package/esm2022/chips/cax-design-system-chips.mjs +5 -0
  305. package/esm2022/chips/chips.interface.mjs +2 -0
  306. package/esm2022/chips/chips.mjs +568 -0
  307. package/esm2022/chips/chips.module.mjs +22 -0
  308. package/esm2022/chips/public_api.mjs +4 -0
  309. package/esm2022/colorpicker/cax-design-system-colorpicker.mjs +5 -0
  310. package/esm2022/colorpicker/colorpicker.interface.mjs +2 -0
  311. package/esm2022/colorpicker/colorpicker.mjs +829 -0
  312. package/esm2022/colorpicker/public_api.mjs +3 -0
  313. package/esm2022/confirmdialog/cax-design-system-confirmdialog.mjs +5 -0
  314. package/esm2022/confirmdialog/confirmdialog.interface.mjs +2 -0
  315. package/esm2022/confirmdialog/confirmdialog.mjs +689 -0
  316. package/esm2022/confirmdialog/public_api.mjs +3 -0
  317. package/esm2022/confirmpopup/cax-design-system-confirmpopup.mjs +5 -0
  318. package/esm2022/confirmpopup/confirmpopup.interface.mjs +2 -0
  319. package/esm2022/confirmpopup/confirmpopup.mjs +499 -0
  320. package/esm2022/confirmpopup/public_api.mjs +3 -0
  321. package/esm2022/contextmenu/cax-design-system-contextmenu.mjs +5 -0
  322. package/esm2022/contextmenu/contextmenu.mjs +1304 -0
  323. package/esm2022/contextmenu/public_api.mjs +2 -0
  324. package/esm2022/dataview/cax-design-system-dataview.mjs +5 -0
  325. package/esm2022/dataview/dataview.interface.mjs +2 -0
  326. package/esm2022/dataview/dataview.mjs +723 -0
  327. package/esm2022/dataview/public_api.mjs +3 -0
  328. package/esm2022/defer/cax-design-system-defer.mjs +5 -0
  329. package/esm2022/defer/defer.mjs +111 -0
  330. package/esm2022/defer/public_api.mjs +2 -0
  331. package/esm2022/dialog/cax-design-system-dialog.mjs +5 -0
  332. package/esm2022/dialog/dialog.interface.mjs +2 -0
  333. package/esm2022/dialog/dialog.mjs +1168 -0
  334. package/esm2022/dialog/public_api.mjs +3 -0
  335. package/esm2022/divider/cax-design-system-divider.mjs +5 -0
  336. package/esm2022/divider/divider.mjs +69 -0
  337. package/esm2022/divider/divider.module.mjs +16 -0
  338. package/esm2022/divider/public_api.mjs +3 -0
  339. package/esm2022/dock/cax-design-system-dock.mjs +5 -0
  340. package/esm2022/dock/dock.interface.mjs +2 -0
  341. package/esm2022/dock/dock.mjs +431 -0
  342. package/esm2022/dock/public_api.mjs +3 -0
  343. package/esm2022/dom/cax-design-system-dom.mjs +5 -0
  344. package/esm2022/dom/connectedoverlayscrollhandler.mjs +30 -0
  345. package/esm2022/dom/domhandler.mjs +722 -0
  346. package/esm2022/dom/public_api.mjs +3 -0
  347. package/esm2022/dragdrop/cax-design-system-dragdrop.mjs +5 -0
  348. package/esm2022/dragdrop/dragdrop.mjs +309 -0
  349. package/esm2022/dragdrop/dragdrop.module.mjs +18 -0
  350. package/esm2022/dragdrop/public_api.mjs +3 -0
  351. package/esm2022/dropdown/cax-design-system-dropdown.mjs +5 -0
  352. package/esm2022/dropdown/dropdown-item.mjs +72 -0
  353. package/esm2022/dropdown/dropdown.interface.mjs +2 -0
  354. package/esm2022/dropdown/dropdown.mjs +1597 -0
  355. package/esm2022/dropdown/dropdown.module.mjs +20 -0
  356. package/esm2022/dropdown/public_api.mjs +5 -0
  357. package/esm2022/dynamicdialog/cax-design-system-dynamicdialog.mjs +5 -0
  358. package/esm2022/dynamicdialog/dialogservice.mjs +102 -0
  359. package/esm2022/dynamicdialog/dynamicdialog-config.mjs +187 -0
  360. package/esm2022/dynamicdialog/dynamicdialog-injector.mjs +15 -0
  361. package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +119 -0
  362. package/esm2022/dynamicdialog/dynamicdialog.mjs +696 -0
  363. package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +20 -0
  364. package/esm2022/dynamicdialog/public_api.mjs +7 -0
  365. package/esm2022/editor/cax-design-system-editor.mjs +5 -0
  366. package/esm2022/editor/editor.interface.mjs +2 -0
  367. package/esm2022/editor/editor.mjs +392 -0
  368. package/esm2022/editor/public_api.mjs +3 -0
  369. package/esm2022/fieldset/cax-design-system-fieldset.mjs +5 -0
  370. package/esm2022/fieldset/fieldset.interface.mjs +2 -0
  371. package/esm2022/fieldset/fieldset.mjs +297 -0
  372. package/esm2022/fieldset/public_api.mjs +3 -0
  373. package/esm2022/fileupload/cax-design-system-fileupload.mjs +5 -0
  374. package/esm2022/fileupload/fileupload.interface.mjs +2 -0
  375. package/esm2022/fileupload/fileupload.mjs +1188 -0
  376. package/esm2022/fileupload/public_api.mjs +3 -0
  377. package/esm2022/floatlabel/cax-design-system-floatlabel.mjs +5 -0
  378. package/esm2022/floatlabel/floatlabel.mjs +44 -0
  379. package/esm2022/floatlabel/public_api.mjs +2 -0
  380. package/esm2022/focustrap/cax-design-system-focustrap.mjs +5 -0
  381. package/esm2022/focustrap/focustrap.mjs +103 -0
  382. package/esm2022/focustrap/public_api.mjs +2 -0
  383. package/esm2022/galleria/cax-design-system-galleria.mjs +5 -0
  384. package/esm2022/galleria/galleria.interface.mjs +2 -0
  385. package/esm2022/galleria/galleria.mjs +1668 -0
  386. package/esm2022/galleria/public_api.mjs +3 -0
  387. package/esm2022/iconfield/cax-design-system-iconfield.mjs +5 -0
  388. package/esm2022/iconfield/iconfield.mjs +44 -0
  389. package/esm2022/iconfield/public_api.mjs +2 -0
  390. package/esm2022/icons/angledoubledown/angledoubledown.mjs +35 -0
  391. package/esm2022/icons/angledoubledown/cax-design-system-icons-angledoubledown.mjs +5 -0
  392. package/esm2022/icons/angledoubledown/public_api.mjs +2 -0
  393. package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +35 -0
  394. package/esm2022/icons/angledoubleleft/cax-design-system-icons-angledoubleleft.mjs +5 -0
  395. package/esm2022/icons/angledoubleleft/public_api.mjs +2 -0
  396. package/esm2022/icons/angledoubleright/angledoubleright.mjs +35 -0
  397. package/esm2022/icons/angledoubleright/cax-design-system-icons-angledoubleright.mjs +5 -0
  398. package/esm2022/icons/angledoubleright/public_api.mjs +2 -0
  399. package/esm2022/icons/angledoubleup/angledoubleup.mjs +35 -0
  400. package/esm2022/icons/angledoubleup/cax-design-system-icons-angledoubleup.mjs +5 -0
  401. package/esm2022/icons/angledoubleup/public_api.mjs +2 -0
  402. package/esm2022/icons/angledown/angledown.mjs +31 -0
  403. package/esm2022/icons/angledown/cax-design-system-icons-angledown.mjs +5 -0
  404. package/esm2022/icons/angledown/public_api.mjs +2 -0
  405. package/esm2022/icons/angleleft/angleleft.mjs +31 -0
  406. package/esm2022/icons/angleleft/cax-design-system-icons-angleleft.mjs +5 -0
  407. package/esm2022/icons/angleleft/public_api.mjs +2 -0
  408. package/esm2022/icons/angleright/angleright.mjs +31 -0
  409. package/esm2022/icons/angleright/cax-design-system-icons-angleright.mjs +5 -0
  410. package/esm2022/icons/angleright/public_api.mjs +2 -0
  411. package/esm2022/icons/angleup/angleup.mjs +31 -0
  412. package/esm2022/icons/angleup/cax-design-system-icons-angleup.mjs +5 -0
  413. package/esm2022/icons/angleup/public_api.mjs +2 -0
  414. package/esm2022/icons/arrowdown/arrowdown.mjs +54 -0
  415. package/esm2022/icons/arrowdown/cax-design-system-icons-arrowdown.mjs +5 -0
  416. package/esm2022/icons/arrowdown/public_api.mjs +2 -0
  417. package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +31 -0
  418. package/esm2022/icons/arrowdownleft/cax-design-system-icons-arrowdownleft.mjs +5 -0
  419. package/esm2022/icons/arrowdownleft/public_api.mjs +2 -0
  420. package/esm2022/icons/arrowdownright/arrowdownright.mjs +31 -0
  421. package/esm2022/icons/arrowdownright/cax-design-system-icons-arrowdownright.mjs +5 -0
  422. package/esm2022/icons/arrowdownright/public_api.mjs +2 -0
  423. package/esm2022/icons/arrowleft/arrowleft.mjs +54 -0
  424. package/esm2022/icons/arrowleft/cax-design-system-icons-arrowleft.mjs +5 -0
  425. package/esm2022/icons/arrowleft/public_api.mjs +2 -0
  426. package/esm2022/icons/arrowright/arrowright.mjs +35 -0
  427. package/esm2022/icons/arrowright/cax-design-system-icons-arrowright.mjs +5 -0
  428. package/esm2022/icons/arrowright/public_api.mjs +2 -0
  429. package/esm2022/icons/arrowup/arrowup.mjs +54 -0
  430. package/esm2022/icons/arrowup/cax-design-system-icons-arrowup.mjs +5 -0
  431. package/esm2022/icons/arrowup/public_api.mjs +2 -0
  432. package/esm2022/icons/ban/ban.mjs +50 -0
  433. package/esm2022/icons/ban/cax-design-system-icons-ban.mjs +5 -0
  434. package/esm2022/icons/ban/public_api.mjs +2 -0
  435. package/esm2022/icons/bars/bars.mjs +35 -0
  436. package/esm2022/icons/bars/cax-design-system-icons-bars.mjs +5 -0
  437. package/esm2022/icons/bars/public_api.mjs +2 -0
  438. package/esm2022/icons/blank/blank.mjs +25 -0
  439. package/esm2022/icons/blank/cax-design-system-icons-blank.mjs +5 -0
  440. package/esm2022/icons/blank/public_api.mjs +2 -0
  441. package/esm2022/icons/calendar/calendar.mjs +31 -0
  442. package/esm2022/icons/calendar/cax-design-system-icons-calendar.mjs +5 -0
  443. package/esm2022/icons/calendar/public_api.mjs +2 -0
  444. package/esm2022/icons/caretleft/caretleft.mjs +31 -0
  445. package/esm2022/icons/caretleft/cax-design-system-icons-caretleft.mjs +5 -0
  446. package/esm2022/icons/caretleft/public_api.mjs +2 -0
  447. package/esm2022/icons/caretright/caretright.mjs +31 -0
  448. package/esm2022/icons/caretright/cax-design-system-icons-caretright.mjs +5 -0
  449. package/esm2022/icons/caretright/public_api.mjs +2 -0
  450. package/esm2022/icons/check/cax-design-system-icons-check.mjs +5 -0
  451. package/esm2022/icons/check/check.mjs +31 -0
  452. package/esm2022/icons/check/public_api.mjs +2 -0
  453. package/esm2022/icons/chevrondown/cax-design-system-icons-chevrondown.mjs +5 -0
  454. package/esm2022/icons/chevrondown/chevrondown.mjs +31 -0
  455. package/esm2022/icons/chevrondown/public_api.mjs +2 -0
  456. package/esm2022/icons/chevronleft/cax-design-system-icons-chevronleft.mjs +5 -0
  457. package/esm2022/icons/chevronleft/chevronleft.mjs +31 -0
  458. package/esm2022/icons/chevronleft/public_api.mjs +2 -0
  459. package/esm2022/icons/chevronright/cax-design-system-icons-chevronright.mjs +5 -0
  460. package/esm2022/icons/chevronright/chevronright.mjs +31 -0
  461. package/esm2022/icons/chevronright/public_api.mjs +2 -0
  462. package/esm2022/icons/chevronup/cax-design-system-icons-chevronup.mjs +5 -0
  463. package/esm2022/icons/chevronup/chevronup.mjs +31 -0
  464. package/esm2022/icons/chevronup/public_api.mjs +2 -0
  465. package/esm2022/icons/exclamationtriangle/cax-design-system-icons-exclamationtriangle.mjs +5 -0
  466. package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +66 -0
  467. package/esm2022/icons/exclamationtriangle/public_api.mjs +2 -0
  468. package/esm2022/icons/eye/cax-design-system-icons-eye.mjs +5 -0
  469. package/esm2022/icons/eye/eye.mjs +35 -0
  470. package/esm2022/icons/eye/public_api.mjs +2 -0
  471. package/esm2022/icons/eyeslash/cax-design-system-icons-eyeslash.mjs +5 -0
  472. package/esm2022/icons/eyeslash/eyeslash.mjs +54 -0
  473. package/esm2022/icons/eyeslash/public_api.mjs +2 -0
  474. package/esm2022/icons/filter/cax-design-system-icons-filter.mjs +5 -0
  475. package/esm2022/icons/filter/filter.mjs +50 -0
  476. package/esm2022/icons/filter/public_api.mjs +2 -0
  477. package/esm2022/icons/filterslash/cax-design-system-icons-filterslash.mjs +5 -0
  478. package/esm2022/icons/filterslash/filterslash.mjs +54 -0
  479. package/esm2022/icons/filterslash/public_api.mjs +2 -0
  480. package/esm2022/icons/home/cax-design-system-icons-home.mjs +5 -0
  481. package/esm2022/icons/home/home.mjs +54 -0
  482. package/esm2022/icons/home/public_api.mjs +2 -0
  483. package/esm2022/icons/infocircle/cax-design-system-icons-infocircle.mjs +5 -0
  484. package/esm2022/icons/infocircle/infocircle.mjs +54 -0
  485. package/esm2022/icons/infocircle/public_api.mjs +2 -0
  486. package/esm2022/icons/minus/cax-design-system-icons-minus.mjs +5 -0
  487. package/esm2022/icons/minus/minus.mjs +32 -0
  488. package/esm2022/icons/minus/public_api.mjs +2 -0
  489. package/esm2022/icons/pencil/cax-design-system-icons-pencil.mjs +5 -0
  490. package/esm2022/icons/pencil/pencil.mjs +50 -0
  491. package/esm2022/icons/pencil/public_api.mjs +2 -0
  492. package/esm2022/icons/plus/cax-design-system-icons-plus.mjs +5 -0
  493. package/esm2022/icons/plus/plus.mjs +50 -0
  494. package/esm2022/icons/plus/public_api.mjs +2 -0
  495. package/esm2022/icons/refresh/cax-design-system-icons-refresh.mjs +5 -0
  496. package/esm2022/icons/refresh/public_api.mjs +2 -0
  497. package/esm2022/icons/refresh/refresh.mjs +54 -0
  498. package/esm2022/icons/search/cax-design-system-icons-search.mjs +5 -0
  499. package/esm2022/icons/search/public_api.mjs +2 -0
  500. package/esm2022/icons/search/search.mjs +54 -0
  501. package/esm2022/icons/searchminus/cax-design-system-icons-searchminus.mjs +5 -0
  502. package/esm2022/icons/searchminus/public_api.mjs +2 -0
  503. package/esm2022/icons/searchminus/searchminus.mjs +54 -0
  504. package/esm2022/icons/searchplus/cax-design-system-icons-searchplus.mjs +5 -0
  505. package/esm2022/icons/searchplus/public_api.mjs +2 -0
  506. package/esm2022/icons/searchplus/searchplus.mjs +54 -0
  507. package/esm2022/icons/sortalt/cax-design-system-icons-sortalt.mjs +5 -0
  508. package/esm2022/icons/sortalt/public_api.mjs +2 -0
  509. package/esm2022/icons/sortalt/sortalt.mjs +62 -0
  510. package/esm2022/icons/sortamountdown/cax-design-system-icons-sortamountdown.mjs +5 -0
  511. package/esm2022/icons/sortamountdown/public_api.mjs +2 -0
  512. package/esm2022/icons/sortamountdown/sortamountdown.mjs +50 -0
  513. package/esm2022/icons/sortamountupalt/cax-design-system-icons-sortamountupalt.mjs +5 -0
  514. package/esm2022/icons/sortamountupalt/public_api.mjs +2 -0
  515. package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +50 -0
  516. package/esm2022/icons/spinner/cax-design-system-icons-spinner.mjs +5 -0
  517. package/esm2022/icons/spinner/public_api.mjs +2 -0
  518. package/esm2022/icons/spinner/spinner.mjs +50 -0
  519. package/esm2022/icons/star/cax-design-system-icons-star.mjs +5 -0
  520. package/esm2022/icons/star/public_api.mjs +2 -0
  521. package/esm2022/icons/star/star.mjs +50 -0
  522. package/esm2022/icons/starfill/cax-design-system-icons-starfill.mjs +5 -0
  523. package/esm2022/icons/starfill/public_api.mjs +2 -0
  524. package/esm2022/icons/starfill/starfill.mjs +50 -0
  525. package/esm2022/icons/thlarge/cax-design-system-icons-thlarge.mjs +5 -0
  526. package/esm2022/icons/thlarge/public_api.mjs +2 -0
  527. package/esm2022/icons/thlarge/thlarge.mjs +54 -0
  528. package/esm2022/icons/times/cax-design-system-icons-times.mjs +5 -0
  529. package/esm2022/icons/times/public_api.mjs +2 -0
  530. package/esm2022/icons/times/times.mjs +31 -0
  531. package/esm2022/icons/timescircle/cax-design-system-icons-timescircle.mjs +5 -0
  532. package/esm2022/icons/timescircle/public_api.mjs +2 -0
  533. package/esm2022/icons/timescircle/timescircle.mjs +54 -0
  534. package/esm2022/icons/trash/cax-design-system-icons-trash.mjs +5 -0
  535. package/esm2022/icons/trash/public_api.mjs +2 -0
  536. package/esm2022/icons/trash/trash.mjs +54 -0
  537. package/esm2022/icons/undo/cax-design-system-icons-undo.mjs +5 -0
  538. package/esm2022/icons/undo/public_api.mjs +2 -0
  539. package/esm2022/icons/undo/undo.mjs +54 -0
  540. package/esm2022/icons/upload/cax-design-system-icons-upload.mjs +5 -0
  541. package/esm2022/icons/upload/public_api.mjs +2 -0
  542. package/esm2022/icons/upload/upload.mjs +54 -0
  543. package/esm2022/icons/windowmaximize/cax-design-system-icons-windowmaximize.mjs +5 -0
  544. package/esm2022/icons/windowmaximize/public_api.mjs +2 -0
  545. package/esm2022/icons/windowmaximize/windowmaximize.mjs +54 -0
  546. package/esm2022/icons/windowminimize/cax-design-system-icons-windowminimize.mjs +5 -0
  547. package/esm2022/icons/windowminimize/public_api.mjs +2 -0
  548. package/esm2022/icons/windowminimize/windowminimize.mjs +54 -0
  549. package/esm2022/image/cax-design-system-image.mjs +5 -0
  550. package/esm2022/image/image.interface.mjs +2 -0
  551. package/esm2022/image/image.mjs +418 -0
  552. package/esm2022/image/image.module.mjs +17 -0
  553. package/esm2022/image/public_api.mjs +4 -0
  554. package/esm2022/inplace/cax-design-system-inplace.mjs +5 -0
  555. package/esm2022/inplace/inplace.interface.mjs +2 -0
  556. package/esm2022/inplace/inplace.mjs +243 -0
  557. package/esm2022/inplace/public_api.mjs +3 -0
  558. package/esm2022/inputgroup/cax-design-system-inputgroup.mjs +5 -0
  559. package/esm2022/inputgroup/inputgroup.mjs +48 -0
  560. package/esm2022/inputgroup/inputgroup.module.mjs +25 -0
  561. package/esm2022/inputgroup/public_api.mjs +3 -0
  562. package/esm2022/inputgroupaddon/cax-design-system-inputgroupaddon.mjs +5 -0
  563. package/esm2022/inputgroupaddon/inputgroupaddon.mjs +32 -0
  564. package/esm2022/inputgroupaddon/inputgroupaddon.module.mjs +24 -0
  565. package/esm2022/inputgroupaddon/public_api.mjs +3 -0
  566. package/esm2022/inputicon/cax-design-system-inputicon.mjs +5 -0
  567. package/esm2022/inputicon/inputicon.mjs +38 -0
  568. package/esm2022/inputicon/public_api.mjs +2 -0
  569. package/esm2022/inputmask/cax-design-system-inputmask.mjs +5 -0
  570. package/esm2022/inputmask/inputmask.interface.mjs +2 -0
  571. package/esm2022/inputmask/inputmask.mjs +914 -0
  572. package/esm2022/inputmask/public_api.mjs +3 -0
  573. package/esm2022/inputnumber/cax-design-system-inputnumber.mjs +5 -0
  574. package/esm2022/inputnumber/inputnumber.interface.mjs +2 -0
  575. package/esm2022/inputnumber/inputnumber.mjs +1290 -0
  576. package/esm2022/inputnumber/inputnumber.module.mjs +17 -0
  577. package/esm2022/inputnumber/public_api.mjs +4 -0
  578. package/esm2022/inputotp/cax-design-system-inputotp.mjs +5 -0
  579. package/esm2022/inputotp/inputotp.interface.mjs +2 -0
  580. package/esm2022/inputotp/inputotp.mjs +381 -0
  581. package/esm2022/inputotp/public_api.mjs +3 -0
  582. package/esm2022/inputswitch/cax-design-system-inputswitch.mjs +5 -0
  583. package/esm2022/inputswitch/inputswitch.interface.mjs +2 -0
  584. package/esm2022/inputswitch/inputswitch.mjs +244 -0
  585. package/esm2022/inputswitch/public_api.mjs +3 -0
  586. package/esm2022/inputtext/cax-design-system-inputtext.mjs +5 -0
  587. package/esm2022/inputtext/inputtext.component.mjs +74 -0
  588. package/esm2022/inputtext/inputtext.directive.mjs +52 -0
  589. package/esm2022/inputtext/inputtext.module.mjs +20 -0
  590. package/esm2022/inputtext/public_api.mjs +4 -0
  591. package/esm2022/inputtextarea/cax-design-system-inputtextarea.mjs +5 -0
  592. package/esm2022/inputtextarea/inputtextarea.mjs +135 -0
  593. package/esm2022/inputtextarea/public_api.mjs +2 -0
  594. package/esm2022/keyfilter/cax-design-system-keyfilter.mjs +5 -0
  595. package/esm2022/keyfilter/keyfilter.interface.mjs +2 -0
  596. package/esm2022/keyfilter/keyfilter.mjs +265 -0
  597. package/esm2022/keyfilter/public_api.mjs +3 -0
  598. package/esm2022/knob/cax-design-system-knob.mjs +5 -0
  599. package/esm2022/knob/knob.mjs +464 -0
  600. package/esm2022/knob/public_api.mjs +2 -0
  601. package/esm2022/listbox/cax-design-system-listbox.mjs +5 -0
  602. package/esm2022/listbox/listbox.interface.mjs +2 -0
  603. package/esm2022/listbox/listbox.mjs +1555 -0
  604. package/esm2022/listbox/public_api.mjs +3 -0
  605. package/esm2022/logo/cax-design-system-logo.mjs +5 -0
  606. package/esm2022/logo/logo.mjs +45 -0
  607. package/esm2022/logo/logo.module.mjs +16 -0
  608. package/esm2022/logo/public_api.mjs +3 -0
  609. package/esm2022/megamenu/cax-design-system-megamenu.mjs +5 -0
  610. package/esm2022/megamenu/megamenu.interface.mjs +2 -0
  611. package/esm2022/megamenu/megamenu.mjs +1190 -0
  612. package/esm2022/megamenu/public_api.mjs +3 -0
  613. package/esm2022/menu/cax-design-system-menu.mjs +5 -0
  614. package/esm2022/menu/menu.mjs +953 -0
  615. package/esm2022/menu/public_api.mjs +2 -0
  616. package/esm2022/menubar/cax-design-system-menubar.mjs +5 -0
  617. package/esm2022/menubar/menubar.interface.mjs +2 -0
  618. package/esm2022/menubar/menubar.mjs +1249 -0
  619. package/esm2022/menubar/public_api.mjs +3 -0
  620. package/esm2022/message/cax-design-system-message.mjs +5 -0
  621. package/esm2022/message/message.mjs +112 -0
  622. package/esm2022/message/public_api.mjs +2 -0
  623. package/esm2022/messages/cax-design-system-messages.mjs +5 -0
  624. package/esm2022/messages/messages.interface.mjs +2 -0
  625. package/esm2022/messages/messages.mjs +283 -0
  626. package/esm2022/messages/messages.module.mjs +17 -0
  627. package/esm2022/messages/public_api.mjs +4 -0
  628. package/esm2022/metergroup/cax-design-system-metergroup.mjs +5 -0
  629. package/esm2022/metergroup/metergroup.interface.mjs +2 -0
  630. package/esm2022/metergroup/metergroup.mjs +280 -0
  631. package/esm2022/metergroup/public_api.mjs +3 -0
  632. package/esm2022/multiselect/cax-design-system-multiselect.mjs +5 -0
  633. package/esm2022/multiselect/multiselect.interface.mjs +2 -0
  634. package/esm2022/multiselect/multiselect.mjs +2525 -0
  635. package/esm2022/multiselect/public_api.mjs +3 -0
  636. package/esm2022/navigation/cax-design-system-navigation.mjs +5 -0
  637. package/esm2022/navigation/navigation.interface.mjs +2 -0
  638. package/esm2022/navigation/navigation.mjs +261 -0
  639. package/esm2022/navigation/navigation.module.mjs +16 -0
  640. package/esm2022/navigation/public_api.mjs +3 -0
  641. package/esm2022/orderlist/cax-design-system-orderlist.mjs +5 -0
  642. package/esm2022/orderlist/orderlist.interface.mjs +2 -0
  643. package/esm2022/orderlist/orderlist.mjs +993 -0
  644. package/esm2022/orderlist/public_api.mjs +3 -0
  645. package/esm2022/organizationchart/cax-design-system-organizationchart.mjs +5 -0
  646. package/esm2022/organizationchart/organizationchart.interface.mjs +2 -0
  647. package/esm2022/organizationchart/organizationchart.mjs +416 -0
  648. package/esm2022/organizationchart/public_api.mjs +3 -0
  649. package/esm2022/overlay/cax-design-system-overlay.mjs +5 -0
  650. package/esm2022/overlay/overlay.mjs +579 -0
  651. package/esm2022/overlay/overlay.module.mjs +17 -0
  652. package/esm2022/overlay/public_api.mjs +3 -0
  653. package/esm2022/overlaypanel/cax-design-system-overlaypanel.mjs +5 -0
  654. package/esm2022/overlaypanel/overlaypanel.mjs +470 -0
  655. package/esm2022/overlaypanel/overlaypanel.module.mjs +17 -0
  656. package/esm2022/overlaypanel/public_api.mjs +3 -0
  657. package/esm2022/paginator/cax-design-system-paginator.mjs +5 -0
  658. package/esm2022/paginator/paginator.interface.mjs +2 -0
  659. package/esm2022/paginator/paginator.mjs +424 -0
  660. package/esm2022/paginator/paginator.module.mjs +27 -0
  661. package/esm2022/paginator/public_api.mjs +4 -0
  662. package/esm2022/panel/cax-design-system-panel.mjs +5 -0
  663. package/esm2022/panel/panel.interface.mjs +2 -0
  664. package/esm2022/panel/panel.mjs +393 -0
  665. package/esm2022/panel/public_api.mjs +3 -0
  666. package/esm2022/panelmenu/cax-design-system-panelmenu.mjs +5 -0
  667. package/esm2022/panelmenu/panelmenu.interface.mjs +2 -0
  668. package/esm2022/panelmenu/panelmenu.mjs +1276 -0
  669. package/esm2022/panelmenu/public_api.mjs +3 -0
  670. package/esm2022/password/cax-design-system-password.mjs +5 -0
  671. package/esm2022/password/password.mjs +1017 -0
  672. package/esm2022/password/public_api.mjs +2 -0
  673. package/esm2022/picklist/cax-design-system-picklist.mjs +5 -0
  674. package/esm2022/picklist/picklist.interface.mjs +2 -0
  675. package/esm2022/picklist/picklist.mjs +1909 -0
  676. package/esm2022/picklist/public_api.mjs +3 -0
  677. package/esm2022/progressbar/cax-design-system-progressbar.mjs +5 -0
  678. package/esm2022/progressbar/progressbar.mjs +86 -0
  679. package/esm2022/progressbar/progressbar.module.mjs +18 -0
  680. package/esm2022/progressbar/public_api.mjs +3 -0
  681. package/esm2022/progressspinner/cax-design-system-progressspinner.mjs +5 -0
  682. package/esm2022/progressspinner/progressspinner.mjs +112 -0
  683. package/esm2022/progressspinner/progressspinner.module.mjs +18 -0
  684. package/esm2022/progressspinner/public_api.mjs +3 -0
  685. package/esm2022/public_api.mjs +2 -0
  686. package/esm2022/radiobutton/cax-design-system-radiobutton.mjs +5 -0
  687. package/esm2022/radiobutton/public_api.mjs +4 -0
  688. package/esm2022/radiobutton/radiobutton.interface.mjs +2 -0
  689. package/esm2022/radiobutton/radiobutton.mjs +277 -0
  690. package/esm2022/radiobutton/radiobutton.module.mjs +16 -0
  691. package/esm2022/rating/cax-design-system-rating.mjs +5 -0
  692. package/esm2022/rating/public_api.mjs +3 -0
  693. package/esm2022/rating/rating.interface.mjs +2 -0
  694. package/esm2022/rating/rating.mjs +388 -0
  695. package/esm2022/ripple/cax-design-system-ripple.mjs +5 -0
  696. package/esm2022/ripple/public_api.mjs +3 -0
  697. package/esm2022/ripple/ripple.mjs +129 -0
  698. package/esm2022/ripple/ripple.module.mjs +16 -0
  699. package/esm2022/scroller/cax-design-system-scroller.mjs +5 -0
  700. package/esm2022/scroller/public_api.mjs +4 -0
  701. package/esm2022/scroller/scroller.interface.mjs +2 -0
  702. package/esm2022/scroller/scroller.mjs +981 -0
  703. package/esm2022/scroller/scroller.module.mjs +17 -0
  704. package/esm2022/scrollpanel/cax-design-system-scrollpanel.mjs +5 -0
  705. package/esm2022/scrollpanel/public_api.mjs +3 -0
  706. package/esm2022/scrollpanel/scrollpanel.interface.mjs +2 -0
  707. package/esm2022/scrollpanel/scrollpanel.mjs +501 -0
  708. package/esm2022/scrolltop/cax-design-system-scrolltop.mjs +5 -0
  709. package/esm2022/scrolltop/public_api.mjs +3 -0
  710. package/esm2022/scrolltop/scrolltop.interface.mjs +2 -0
  711. package/esm2022/scrolltop/scrolltop.mjs +282 -0
  712. package/esm2022/selectbutton/cax-design-system-selectbutton.mjs +5 -0
  713. package/esm2022/selectbutton/public_api.mjs +3 -0
  714. package/esm2022/selectbutton/selectbutton.interface.mjs +2 -0
  715. package/esm2022/selectbutton/selectbutton.mjs +378 -0
  716. package/esm2022/sidebar/cax-design-system-sidebar.mjs +5 -0
  717. package/esm2022/sidebar/public_api.mjs +4 -0
  718. package/esm2022/sidebar/sidebar.interface.mjs +2 -0
  719. package/esm2022/sidebar/sidebar.mjs +419 -0
  720. package/esm2022/sidebar/sidebar.module.mjs +21 -0
  721. package/esm2022/skeleton/cax-design-system-skeleton.mjs +5 -0
  722. package/esm2022/skeleton/public_api.mjs +3 -0
  723. package/esm2022/skeleton/skeleton.mjs +87 -0
  724. package/esm2022/skeleton/skeleton.module.mjs +18 -0
  725. package/esm2022/slidemenu/cax-design-system-slidemenu.mjs +5 -0
  726. package/esm2022/slidemenu/public_api.mjs +3 -0
  727. package/esm2022/slidemenu/slidemenu.interface.mjs +2 -0
  728. package/esm2022/slidemenu/slidemenu.mjs +1501 -0
  729. package/esm2022/slider/cax-design-system-slider.mjs +5 -0
  730. package/esm2022/slider/public_api.mjs +3 -0
  731. package/esm2022/slider/slider.interface.mjs +2 -0
  732. package/esm2022/slider/slider.mjs +796 -0
  733. package/esm2022/speeddial/cax-design-system-speeddial.mjs +5 -0
  734. package/esm2022/speeddial/public_api.mjs +4 -0
  735. package/esm2022/speeddial/speeddial.interface.mjs +2 -0
  736. package/esm2022/speeddial/speeddial.mjs +611 -0
  737. package/esm2022/speeddial/speeddial.module.mjs +24 -0
  738. package/esm2022/spinner/cax-design-system-spinner.mjs +5 -0
  739. package/esm2022/spinner/public_api.mjs +2 -0
  740. package/esm2022/spinner/spinner.mjs +447 -0
  741. package/esm2022/splitbutton/cax-design-system-splitbutton.mjs +5 -0
  742. package/esm2022/splitbutton/public_api.mjs +4 -0
  743. package/esm2022/splitbutton/splitbutton.interface.mjs +2 -0
  744. package/esm2022/splitbutton/splitbutton.mjs +364 -0
  745. package/esm2022/splitbutton/splitbutton.module.mjs +22 -0
  746. package/esm2022/splitter/cax-design-system-splitter.mjs +5 -0
  747. package/esm2022/splitter/public_api.mjs +3 -0
  748. package/esm2022/splitter/splitter.interface.mjs +2 -0
  749. package/esm2022/splitter/splitter.mjs +562 -0
  750. package/esm2022/stepper/cax-design-system-stepper.mjs +5 -0
  751. package/esm2022/stepper/public_api.mjs +3 -0
  752. package/esm2022/stepper/stepper.interface.mjs +2 -0
  753. package/esm2022/stepper/stepper.mjs +677 -0
  754. package/esm2022/steps/cax-design-system-steps.mjs +5 -0
  755. package/esm2022/steps/public_api.mjs +2 -0
  756. package/esm2022/steps/steps.mjs +345 -0
  757. package/esm2022/styleclass/cax-design-system-styleclass.mjs +5 -0
  758. package/esm2022/styleclass/public_api.mjs +2 -0
  759. package/esm2022/styleclass/styleclass.mjs +316 -0
  760. package/esm2022/table/cax-design-system-table.mjs +5 -0
  761. package/esm2022/table/columnfilter.interface.mjs +2 -0
  762. package/esm2022/table/components/cell-editor/cell-editor.mjs +52 -0
  763. package/esm2022/table/components/column-filter/column-filter.mjs +685 -0
  764. package/esm2022/table/components/column-filter-form-element/column-filter-form-element.mjs +106 -0
  765. package/esm2022/table/components/sort-icon/sort-icon.mjs +75 -0
  766. package/esm2022/table/components/table-body/table-body.mjs +152 -0
  767. package/esm2022/table/components/table-checkbox/table-checkbox.mjs +82 -0
  768. package/esm2022/table/components/table-header-checkbox/table-header-checkbox.mjs +92 -0
  769. package/esm2022/table/components/table-radio-button/table-radio-button.mjs +79 -0
  770. package/esm2022/table/directives/cancel-editable-row.directive.mjs +32 -0
  771. package/esm2022/table/directives/content-menu-row.directive.mjs +70 -0
  772. package/esm2022/table/directives/editable-column.directive.mjs +344 -0
  773. package/esm2022/table/directives/editable-row.directive.mjs +32 -0
  774. package/esm2022/table/directives/frozen-column.directive.mjs +77 -0
  775. package/esm2022/table/directives/init-editable-row.directive.mjs +32 -0
  776. package/esm2022/table/directives/reorderable-column.directive.mjs +115 -0
  777. package/esm2022/table/directives/reorderable-row-handle.directive.mjs +25 -0
  778. package/esm2022/table/directives/reorderable-row.directive.mjs +122 -0
  779. package/esm2022/table/directives/resizable-column.directive.mjs +123 -0
  780. package/esm2022/table/directives/row-group-header.directive.mjs +26 -0
  781. package/esm2022/table/directives/row-toggler.directive.mjs +42 -0
  782. package/esm2022/table/directives/save-editable-row.directive.mjs +32 -0
  783. package/esm2022/table/directives/selectable-row-double-click.directive.mjs +71 -0
  784. package/esm2022/table/directives/selectable-row.directive.mjs +243 -0
  785. package/esm2022/table/directives/sortable-column.directive.mjs +90 -0
  786. package/esm2022/table/public_api.mjs +29 -0
  787. package/esm2022/table/table.interface.mjs +2 -0
  788. package/esm2022/table/table.mjs +2721 -0
  789. package/esm2022/table/table.module.mjs +147 -0
  790. package/esm2022/table/table.service.mjs +42 -0
  791. package/esm2022/tabmenu/cax-design-system-tabmenu.mjs +5 -0
  792. package/esm2022/tabmenu/public_api.mjs +3 -0
  793. package/esm2022/tabmenu/tabmenu.interface.mjs +2 -0
  794. package/esm2022/tabmenu/tabmenu.mjs +576 -0
  795. package/esm2022/tabview/cax-design-system-tabview.mjs +5 -0
  796. package/esm2022/tabview/public_api.mjs +4 -0
  797. package/esm2022/tabview/tabview.interface.mjs +2 -0
  798. package/esm2022/tabview/tabview.mjs +824 -0
  799. package/esm2022/tabview/tabview.module.mjs +24 -0
  800. package/esm2022/tag/cax-design-system-tag.mjs +5 -0
  801. package/esm2022/tag/public_api.mjs +4 -0
  802. package/esm2022/tag/tag.interface.mjs +2 -0
  803. package/esm2022/tag/tag.mjs +95 -0
  804. package/esm2022/tag/tag.module.mjs +19 -0
  805. package/esm2022/terminal/cax-design-system-terminal.mjs +5 -0
  806. package/esm2022/terminal/public_api.mjs +3 -0
  807. package/esm2022/terminal/terminal.mjs +143 -0
  808. package/esm2022/terminal/terminalservice.mjs +25 -0
  809. package/esm2022/tieredmenu/cax-design-system-tieredmenu.mjs +5 -0
  810. package/esm2022/tieredmenu/public_api.mjs +4 -0
  811. package/esm2022/tieredmenu/tieredmenu.interface.mjs +2 -0
  812. package/esm2022/tieredmenu/tieredmenu.mjs +1289 -0
  813. package/esm2022/tieredmenu/tiredmenu.module.mjs +23 -0
  814. package/esm2022/timeline/cax-design-system-timeline.mjs +5 -0
  815. package/esm2022/timeline/public_api.mjs +3 -0
  816. package/esm2022/timeline/timeline.interface.mjs +2 -0
  817. package/esm2022/timeline/timeline.mjs +167 -0
  818. package/esm2022/toast/cax-design-system-toast.mjs +5 -0
  819. package/esm2022/toast/public_api.mjs +4 -0
  820. package/esm2022/toast/toast.interface.mjs +2 -0
  821. package/esm2022/toast/toast.mjs +324 -0
  822. package/esm2022/toast/toast.module.mjs +18 -0
  823. package/esm2022/toast/toastitem.mjs +170 -0
  824. package/esm2022/togglebutton/cax-design-system-togglebutton.mjs +5 -0
  825. package/esm2022/togglebutton/public_api.mjs +3 -0
  826. package/esm2022/togglebutton/togglebutton.interface.mjs +2 -0
  827. package/esm2022/togglebutton/togglebutton.mjs +274 -0
  828. package/esm2022/toggleswitch/cax-design-system-toggleswitch.mjs +5 -0
  829. package/esm2022/toggleswitch/public_api.mjs +3 -0
  830. package/esm2022/toggleswitch/toggleswitch.mjs +34 -0
  831. package/esm2022/toggleswitch/toggleswitch.module.mjs +19 -0
  832. package/esm2022/toolbar/cax-design-system-toolbar.mjs +5 -0
  833. package/esm2022/toolbar/public_api.mjs +3 -0
  834. package/esm2022/toolbar/toolbar.interface.mjs +2 -0
  835. package/esm2022/toolbar/toolbar.mjs +111 -0
  836. package/esm2022/tooltip/cax-design-system-tooltip.mjs +5 -0
  837. package/esm2022/tooltip/public_api.mjs +3 -0
  838. package/esm2022/tooltip/tooltip.mjs +889 -0
  839. package/esm2022/tooltip/tooltip.module.mjs +18 -0
  840. package/esm2022/tree/cax-design-system-tree.mjs +5 -0
  841. package/esm2022/tree/public_api.mjs +4 -0
  842. package/esm2022/tree/tree.interface.mjs +2 -0
  843. package/esm2022/tree/tree.mjs +1495 -0
  844. package/esm2022/tree/tree.module.mjs +29 -0
  845. package/esm2022/treeselect/cax-design-system-treeselect.mjs +5 -0
  846. package/esm2022/treeselect/public_api.mjs +3 -0
  847. package/esm2022/treeselect/treeselect.interface.mjs +2 -0
  848. package/esm2022/treeselect/treeselect.mjs +1193 -0
  849. package/esm2022/treetable/cax-design-system-treetable.mjs +5 -0
  850. package/esm2022/treetable/public_api.mjs +3 -0
  851. package/esm2022/treetable/treetable.interface.mjs +2 -0
  852. package/esm2022/treetable/treetable.mjs +4111 -0
  853. package/esm2022/tristatecheckbox/cax-design-system-tristatecheckbox.mjs +5 -0
  854. package/esm2022/tristatecheckbox/public_api.mjs +4 -0
  855. package/esm2022/tristatecheckbox/tristatecheckbox.interface.mjs +2 -0
  856. package/esm2022/tristatecheckbox/tristatecheckbox.mjs +215 -0
  857. package/esm2022/tristatecheckbox/tristatecheckbox.module.mjs +17 -0
  858. package/esm2022/ts-helpers/cax-design-system-ts-helpers.mjs +5 -0
  859. package/esm2022/ts-helpers/public_api.mjs +2 -0
  860. package/esm2022/ts-helpers/ts-helpers.mjs +2 -0
  861. package/esm2022/utils/cax-design-system-utils.mjs +5 -0
  862. package/esm2022/utils/objectutils.mjs +258 -0
  863. package/esm2022/utils/public_api.mjs +5 -0
  864. package/esm2022/utils/uniquecomponentid.mjs +6 -0
  865. package/esm2022/utils/zindexutils.mjs +35 -0
  866. package/esm2022/virtualscroller/cax-design-system-virtualscroller.mjs +5 -0
  867. package/esm2022/virtualscroller/public_api.mjs +3 -0
  868. package/esm2022/virtualscroller/virtualscroller.interface.mjs +2 -0
  869. package/esm2022/virtualscroller/virtualscroller.mjs +215 -0
  870. package/fesm2022/cax-design-system-accordion.mjs +617 -0
  871. package/fesm2022/cax-design-system-accordion.mjs.map +1 -0
  872. package/fesm2022/cax-design-system-animate.mjs +108 -0
  873. package/fesm2022/cax-design-system-animate.mjs.map +1 -0
  874. package/fesm2022/cax-design-system-animateonscroll.mjs +192 -0
  875. package/fesm2022/cax-design-system-animateonscroll.mjs.map +1 -0
  876. package/fesm2022/cax-design-system-api.mjs +995 -0
  877. package/fesm2022/cax-design-system-api.mjs.map +1 -0
  878. package/fesm2022/cax-design-system-autocomplete.mjs +1887 -0
  879. package/fesm2022/cax-design-system-autocomplete.mjs.map +1 -0
  880. package/fesm2022/cax-design-system-autofocus.mjs +85 -0
  881. package/fesm2022/cax-design-system-autofocus.mjs.map +1 -0
  882. package/fesm2022/cax-design-system-avatar.mjs +124 -0
  883. package/fesm2022/cax-design-system-avatar.mjs.map +1 -0
  884. package/fesm2022/cax-design-system-avatargroup.mjs +61 -0
  885. package/fesm2022/cax-design-system-avatargroup.mjs.map +1 -0
  886. package/fesm2022/cax-design-system-badge.mjs +270 -0
  887. package/fesm2022/cax-design-system-badge.mjs.map +1 -0
  888. package/fesm2022/cax-design-system-baseicon.mjs +52 -0
  889. package/fesm2022/cax-design-system-baseicon.mjs.map +1 -0
  890. package/fesm2022/cax-design-system-blockui.mjs +213 -0
  891. package/fesm2022/cax-design-system-blockui.mjs.map +1 -0
  892. package/fesm2022/cax-design-system-breadcrumb.mjs +146 -0
  893. package/fesm2022/cax-design-system-breadcrumb.mjs.map +1 -0
  894. package/fesm2022/cax-design-system-button.mjs +431 -0
  895. package/fesm2022/cax-design-system-button.mjs.map +1 -0
  896. package/fesm2022/cax-design-system-buttongroup.mjs +45 -0
  897. package/fesm2022/cax-design-system-buttongroup.mjs.map +1 -0
  898. package/fesm2022/cax-design-system-calendar.mjs +3212 -0
  899. package/fesm2022/cax-design-system-calendar.mjs.map +1 -0
  900. package/fesm2022/cax-design-system-card.mjs +141 -0
  901. package/fesm2022/cax-design-system-card.mjs.map +1 -0
  902. package/fesm2022/cax-design-system-carousel.mjs +975 -0
  903. package/fesm2022/cax-design-system-carousel.mjs.map +1 -0
  904. package/fesm2022/cax-design-system-cascadeselect.mjs +1163 -0
  905. package/fesm2022/cax-design-system-cascadeselect.mjs.map +1 -0
  906. package/fesm2022/cax-design-system-chart.mjs +243 -0
  907. package/fesm2022/cax-design-system-chart.mjs.map +1 -0
  908. package/fesm2022/cax-design-system-checkbox.mjs +326 -0
  909. package/fesm2022/cax-design-system-checkbox.mjs.map +1 -0
  910. package/fesm2022/cax-design-system-chip.mjs +109 -0
  911. package/fesm2022/cax-design-system-chip.mjs.map +1 -0
  912. package/fesm2022/cax-design-system-chips.mjs +588 -0
  913. package/fesm2022/cax-design-system-chips.mjs.map +1 -0
  914. package/fesm2022/cax-design-system-colorpicker.mjs +836 -0
  915. package/fesm2022/cax-design-system-colorpicker.mjs.map +1 -0
  916. package/fesm2022/cax-design-system-confirmdialog.mjs +696 -0
  917. package/fesm2022/cax-design-system-confirmdialog.mjs.map +1 -0
  918. package/fesm2022/cax-design-system-confirmpopup.mjs +506 -0
  919. package/fesm2022/cax-design-system-confirmpopup.mjs.map +1 -0
  920. package/fesm2022/cax-design-system-contextmenu.mjs +1311 -0
  921. package/fesm2022/cax-design-system-contextmenu.mjs.map +1 -0
  922. package/fesm2022/cax-design-system-dataview.mjs +730 -0
  923. package/fesm2022/cax-design-system-dataview.mjs.map +1 -0
  924. package/fesm2022/cax-design-system-defer.mjs +118 -0
  925. package/fesm2022/cax-design-system-defer.mjs.map +1 -0
  926. package/fesm2022/cax-design-system-dialog.mjs +1175 -0
  927. package/fesm2022/cax-design-system-dialog.mjs.map +1 -0
  928. package/fesm2022/cax-design-system-divider.mjs +89 -0
  929. package/fesm2022/cax-design-system-divider.mjs.map +1 -0
  930. package/fesm2022/cax-design-system-dock.mjs +438 -0
  931. package/fesm2022/cax-design-system-dock.mjs.map +1 -0
  932. package/fesm2022/cax-design-system-dom.mjs +757 -0
  933. package/fesm2022/cax-design-system-dom.mjs.map +1 -0
  934. package/fesm2022/cax-design-system-dragdrop.mjs +331 -0
  935. package/fesm2022/cax-design-system-dragdrop.mjs.map +1 -0
  936. package/fesm2022/cax-design-system-dropdown.mjs +1684 -0
  937. package/fesm2022/cax-design-system-dropdown.mjs.map +1 -0
  938. package/fesm2022/cax-design-system-dynamicdialog.mjs +1133 -0
  939. package/fesm2022/cax-design-system-dynamicdialog.mjs.map +1 -0
  940. package/fesm2022/cax-design-system-editor.mjs +399 -0
  941. package/fesm2022/cax-design-system-editor.mjs.map +1 -0
  942. package/fesm2022/cax-design-system-fieldset.mjs +304 -0
  943. package/fesm2022/cax-design-system-fieldset.mjs.map +1 -0
  944. package/fesm2022/cax-design-system-fileupload.mjs +1195 -0
  945. package/fesm2022/cax-design-system-fileupload.mjs.map +1 -0
  946. package/fesm2022/cax-design-system-floatlabel.mjs +51 -0
  947. package/fesm2022/cax-design-system-floatlabel.mjs.map +1 -0
  948. package/fesm2022/cax-design-system-focustrap.mjs +110 -0
  949. package/fesm2022/cax-design-system-focustrap.mjs.map +1 -0
  950. package/fesm2022/cax-design-system-galleria.mjs +1675 -0
  951. package/fesm2022/cax-design-system-galleria.mjs.map +1 -0
  952. package/fesm2022/cax-design-system-iconfield.mjs +51 -0
  953. package/fesm2022/cax-design-system-iconfield.mjs.map +1 -0
  954. package/fesm2022/cax-design-system-icons-angledoubledown.mjs +42 -0
  955. package/fesm2022/cax-design-system-icons-angledoubledown.mjs.map +1 -0
  956. package/fesm2022/cax-design-system-icons-angledoubleleft.mjs +42 -0
  957. package/fesm2022/cax-design-system-icons-angledoubleleft.mjs.map +1 -0
  958. package/fesm2022/cax-design-system-icons-angledoubleright.mjs +42 -0
  959. package/fesm2022/cax-design-system-icons-angledoubleright.mjs.map +1 -0
  960. package/fesm2022/cax-design-system-icons-angledoubleup.mjs +42 -0
  961. package/fesm2022/cax-design-system-icons-angledoubleup.mjs.map +1 -0
  962. package/fesm2022/cax-design-system-icons-angledown.mjs +38 -0
  963. package/fesm2022/cax-design-system-icons-angledown.mjs.map +1 -0
  964. package/fesm2022/cax-design-system-icons-angleleft.mjs +38 -0
  965. package/fesm2022/cax-design-system-icons-angleleft.mjs.map +1 -0
  966. package/fesm2022/cax-design-system-icons-angleright.mjs +38 -0
  967. package/fesm2022/cax-design-system-icons-angleright.mjs.map +1 -0
  968. package/fesm2022/cax-design-system-icons-angleup.mjs +38 -0
  969. package/fesm2022/cax-design-system-icons-angleup.mjs.map +1 -0
  970. package/fesm2022/cax-design-system-icons-arrowdown.mjs +61 -0
  971. package/fesm2022/cax-design-system-icons-arrowdown.mjs.map +1 -0
  972. package/fesm2022/cax-design-system-icons-arrowdownleft.mjs +38 -0
  973. package/fesm2022/cax-design-system-icons-arrowdownleft.mjs.map +1 -0
  974. package/fesm2022/cax-design-system-icons-arrowdownright.mjs +38 -0
  975. package/fesm2022/cax-design-system-icons-arrowdownright.mjs.map +1 -0
  976. package/fesm2022/cax-design-system-icons-arrowleft.mjs +61 -0
  977. package/fesm2022/cax-design-system-icons-arrowleft.mjs.map +1 -0
  978. package/fesm2022/cax-design-system-icons-arrowright.mjs +42 -0
  979. package/fesm2022/cax-design-system-icons-arrowright.mjs.map +1 -0
  980. package/fesm2022/cax-design-system-icons-arrowup.mjs +61 -0
  981. package/fesm2022/cax-design-system-icons-arrowup.mjs.map +1 -0
  982. package/fesm2022/cax-design-system-icons-ban.mjs +57 -0
  983. package/fesm2022/cax-design-system-icons-ban.mjs.map +1 -0
  984. package/fesm2022/cax-design-system-icons-bars.mjs +42 -0
  985. package/fesm2022/cax-design-system-icons-bars.mjs.map +1 -0
  986. package/fesm2022/cax-design-system-icons-blank.mjs +32 -0
  987. package/fesm2022/cax-design-system-icons-blank.mjs.map +1 -0
  988. package/fesm2022/cax-design-system-icons-calendar.mjs +38 -0
  989. package/fesm2022/cax-design-system-icons-calendar.mjs.map +1 -0
  990. package/fesm2022/cax-design-system-icons-caretleft.mjs +38 -0
  991. package/fesm2022/cax-design-system-icons-caretleft.mjs.map +1 -0
  992. package/fesm2022/cax-design-system-icons-caretright.mjs +38 -0
  993. package/fesm2022/cax-design-system-icons-caretright.mjs.map +1 -0
  994. package/fesm2022/cax-design-system-icons-check.mjs +38 -0
  995. package/fesm2022/cax-design-system-icons-check.mjs.map +1 -0
  996. package/fesm2022/cax-design-system-icons-chevrondown.mjs +38 -0
  997. package/fesm2022/cax-design-system-icons-chevrondown.mjs.map +1 -0
  998. package/fesm2022/cax-design-system-icons-chevronleft.mjs +38 -0
  999. package/fesm2022/cax-design-system-icons-chevronleft.mjs.map +1 -0
  1000. package/fesm2022/cax-design-system-icons-chevronright.mjs +38 -0
  1001. package/fesm2022/cax-design-system-icons-chevronright.mjs.map +1 -0
  1002. package/fesm2022/cax-design-system-icons-chevronup.mjs +38 -0
  1003. package/fesm2022/cax-design-system-icons-chevronup.mjs.map +1 -0
  1004. package/fesm2022/cax-design-system-icons-exclamationtriangle.mjs +73 -0
  1005. package/fesm2022/cax-design-system-icons-exclamationtriangle.mjs.map +1 -0
  1006. package/fesm2022/cax-design-system-icons-eye.mjs +42 -0
  1007. package/fesm2022/cax-design-system-icons-eye.mjs.map +1 -0
  1008. package/fesm2022/cax-design-system-icons-eyeslash.mjs +61 -0
  1009. package/fesm2022/cax-design-system-icons-eyeslash.mjs.map +1 -0
  1010. package/fesm2022/cax-design-system-icons-filter.mjs +57 -0
  1011. package/fesm2022/cax-design-system-icons-filter.mjs.map +1 -0
  1012. package/fesm2022/cax-design-system-icons-filterslash.mjs +61 -0
  1013. package/fesm2022/cax-design-system-icons-filterslash.mjs.map +1 -0
  1014. package/fesm2022/cax-design-system-icons-home.mjs +61 -0
  1015. package/fesm2022/cax-design-system-icons-home.mjs.map +1 -0
  1016. package/fesm2022/cax-design-system-icons-infocircle.mjs +61 -0
  1017. package/fesm2022/cax-design-system-icons-infocircle.mjs.map +1 -0
  1018. package/fesm2022/cax-design-system-icons-minus.mjs +39 -0
  1019. package/fesm2022/cax-design-system-icons-minus.mjs.map +1 -0
  1020. package/fesm2022/cax-design-system-icons-pencil.mjs +57 -0
  1021. package/fesm2022/cax-design-system-icons-pencil.mjs.map +1 -0
  1022. package/fesm2022/cax-design-system-icons-plus.mjs +57 -0
  1023. package/fesm2022/cax-design-system-icons-plus.mjs.map +1 -0
  1024. package/fesm2022/cax-design-system-icons-refresh.mjs +61 -0
  1025. package/fesm2022/cax-design-system-icons-refresh.mjs.map +1 -0
  1026. package/fesm2022/cax-design-system-icons-search.mjs +61 -0
  1027. package/fesm2022/cax-design-system-icons-search.mjs.map +1 -0
  1028. package/fesm2022/cax-design-system-icons-searchminus.mjs +61 -0
  1029. package/fesm2022/cax-design-system-icons-searchminus.mjs.map +1 -0
  1030. package/fesm2022/cax-design-system-icons-searchplus.mjs +61 -0
  1031. package/fesm2022/cax-design-system-icons-searchplus.mjs.map +1 -0
  1032. package/fesm2022/cax-design-system-icons-sortalt.mjs +69 -0
  1033. package/fesm2022/cax-design-system-icons-sortalt.mjs.map +1 -0
  1034. package/fesm2022/cax-design-system-icons-sortamountdown.mjs +57 -0
  1035. package/fesm2022/cax-design-system-icons-sortamountdown.mjs.map +1 -0
  1036. package/fesm2022/cax-design-system-icons-sortamountupalt.mjs +57 -0
  1037. package/fesm2022/cax-design-system-icons-sortamountupalt.mjs.map +1 -0
  1038. package/fesm2022/cax-design-system-icons-spinner.mjs +57 -0
  1039. package/fesm2022/cax-design-system-icons-spinner.mjs.map +1 -0
  1040. package/fesm2022/cax-design-system-icons-star.mjs +57 -0
  1041. package/fesm2022/cax-design-system-icons-star.mjs.map +1 -0
  1042. package/fesm2022/cax-design-system-icons-starfill.mjs +57 -0
  1043. package/fesm2022/cax-design-system-icons-starfill.mjs.map +1 -0
  1044. package/fesm2022/cax-design-system-icons-thlarge.mjs +61 -0
  1045. package/fesm2022/cax-design-system-icons-thlarge.mjs.map +1 -0
  1046. package/fesm2022/cax-design-system-icons-times.mjs +38 -0
  1047. package/fesm2022/cax-design-system-icons-times.mjs.map +1 -0
  1048. package/fesm2022/cax-design-system-icons-timescircle.mjs +61 -0
  1049. package/fesm2022/cax-design-system-icons-timescircle.mjs.map +1 -0
  1050. package/fesm2022/cax-design-system-icons-trash.mjs +61 -0
  1051. package/fesm2022/cax-design-system-icons-trash.mjs.map +1 -0
  1052. package/fesm2022/cax-design-system-icons-undo.mjs +61 -0
  1053. package/fesm2022/cax-design-system-icons-undo.mjs.map +1 -0
  1054. package/fesm2022/cax-design-system-icons-upload.mjs +61 -0
  1055. package/fesm2022/cax-design-system-icons-upload.mjs.map +1 -0
  1056. package/fesm2022/cax-design-system-icons-windowmaximize.mjs +61 -0
  1057. package/fesm2022/cax-design-system-icons-windowmaximize.mjs.map +1 -0
  1058. package/fesm2022/cax-design-system-icons-windowminimize.mjs +61 -0
  1059. package/fesm2022/cax-design-system-icons-windowminimize.mjs.map +1 -0
  1060. package/fesm2022/cax-design-system-image.mjs +438 -0
  1061. package/fesm2022/cax-design-system-image.mjs.map +1 -0
  1062. package/fesm2022/cax-design-system-inplace.mjs +250 -0
  1063. package/fesm2022/cax-design-system-inplace.mjs.map +1 -0
  1064. package/fesm2022/cax-design-system-inputgroup.mjs +77 -0
  1065. package/fesm2022/cax-design-system-inputgroup.mjs.map +1 -0
  1066. package/fesm2022/cax-design-system-inputgroupaddon.mjs +60 -0
  1067. package/fesm2022/cax-design-system-inputgroupaddon.mjs.map +1 -0
  1068. package/fesm2022/cax-design-system-inputicon.mjs +45 -0
  1069. package/fesm2022/cax-design-system-inputicon.mjs.map +1 -0
  1070. package/fesm2022/cax-design-system-inputmask.mjs +921 -0
  1071. package/fesm2022/cax-design-system-inputmask.mjs.map +1 -0
  1072. package/fesm2022/cax-design-system-inputnumber.mjs +1310 -0
  1073. package/fesm2022/cax-design-system-inputnumber.mjs.map +1 -0
  1074. package/fesm2022/cax-design-system-inputotp.mjs +388 -0
  1075. package/fesm2022/cax-design-system-inputotp.mjs.map +1 -0
  1076. package/fesm2022/cax-design-system-inputswitch.mjs +251 -0
  1077. package/fesm2022/cax-design-system-inputswitch.mjs.map +1 -0
  1078. package/fesm2022/cax-design-system-inputtext.mjs +145 -0
  1079. package/fesm2022/cax-design-system-inputtext.mjs.map +1 -0
  1080. package/fesm2022/cax-design-system-inputtextarea.mjs +142 -0
  1081. package/fesm2022/cax-design-system-inputtextarea.mjs.map +1 -0
  1082. package/fesm2022/cax-design-system-keyfilter.mjs +272 -0
  1083. package/fesm2022/cax-design-system-keyfilter.mjs.map +1 -0
  1084. package/fesm2022/cax-design-system-knob.mjs +471 -0
  1085. package/fesm2022/cax-design-system-knob.mjs.map +1 -0
  1086. package/fesm2022/cax-design-system-listbox.mjs +1562 -0
  1087. package/fesm2022/cax-design-system-listbox.mjs.map +1 -0
  1088. package/fesm2022/cax-design-system-logo.mjs +65 -0
  1089. package/fesm2022/cax-design-system-logo.mjs.map +1 -0
  1090. package/fesm2022/cax-design-system-megamenu.mjs +1197 -0
  1091. package/fesm2022/cax-design-system-megamenu.mjs.map +1 -0
  1092. package/fesm2022/cax-design-system-menu.mjs +960 -0
  1093. package/fesm2022/cax-design-system-menu.mjs.map +1 -0
  1094. package/fesm2022/cax-design-system-menubar.mjs +1256 -0
  1095. package/fesm2022/cax-design-system-menubar.mjs.map +1 -0
  1096. package/fesm2022/cax-design-system-message.mjs +119 -0
  1097. package/fesm2022/cax-design-system-message.mjs.map +1 -0
  1098. package/fesm2022/cax-design-system-messages.mjs +303 -0
  1099. package/fesm2022/cax-design-system-messages.mjs.map +1 -0
  1100. package/fesm2022/cax-design-system-metergroup.mjs +287 -0
  1101. package/fesm2022/cax-design-system-metergroup.mjs.map +1 -0
  1102. package/fesm2022/cax-design-system-multiselect.mjs +2532 -0
  1103. package/fesm2022/cax-design-system-multiselect.mjs.map +1 -0
  1104. package/fesm2022/cax-design-system-navigation.mjs +281 -0
  1105. package/fesm2022/cax-design-system-navigation.mjs.map +1 -0
  1106. package/fesm2022/cax-design-system-orderlist.mjs +1000 -0
  1107. package/fesm2022/cax-design-system-orderlist.mjs.map +1 -0
  1108. package/fesm2022/cax-design-system-organizationchart.mjs +423 -0
  1109. package/fesm2022/cax-design-system-organizationchart.mjs.map +1 -0
  1110. package/fesm2022/cax-design-system-overlay.mjs +599 -0
  1111. package/fesm2022/cax-design-system-overlay.mjs.map +1 -0
  1112. package/fesm2022/cax-design-system-overlaypanel.mjs +490 -0
  1113. package/fesm2022/cax-design-system-overlaypanel.mjs.map +1 -0
  1114. package/fesm2022/cax-design-system-paginator.mjs +454 -0
  1115. package/fesm2022/cax-design-system-paginator.mjs.map +1 -0
  1116. package/fesm2022/cax-design-system-panel.mjs +400 -0
  1117. package/fesm2022/cax-design-system-panel.mjs.map +1 -0
  1118. package/fesm2022/cax-design-system-panelmenu.mjs +1283 -0
  1119. package/fesm2022/cax-design-system-panelmenu.mjs.map +1 -0
  1120. package/fesm2022/cax-design-system-password.mjs +1024 -0
  1121. package/fesm2022/cax-design-system-password.mjs.map +1 -0
  1122. package/fesm2022/cax-design-system-picklist.mjs +1916 -0
  1123. package/fesm2022/cax-design-system-picklist.mjs.map +1 -0
  1124. package/fesm2022/cax-design-system-progressbar.mjs +108 -0
  1125. package/fesm2022/cax-design-system-progressbar.mjs.map +1 -0
  1126. package/fesm2022/cax-design-system-progressspinner.mjs +134 -0
  1127. package/fesm2022/cax-design-system-progressspinner.mjs.map +1 -0
  1128. package/fesm2022/cax-design-system-radiobutton.mjs +297 -0
  1129. package/fesm2022/cax-design-system-radiobutton.mjs.map +1 -0
  1130. package/fesm2022/cax-design-system-rating.mjs +395 -0
  1131. package/fesm2022/cax-design-system-rating.mjs.map +1 -0
  1132. package/fesm2022/cax-design-system-ripple.mjs +149 -0
  1133. package/fesm2022/cax-design-system-ripple.mjs.map +1 -0
  1134. package/fesm2022/cax-design-system-scroller.mjs +1001 -0
  1135. package/fesm2022/cax-design-system-scroller.mjs.map +1 -0
  1136. package/fesm2022/cax-design-system-scrollpanel.mjs +508 -0
  1137. package/fesm2022/cax-design-system-scrollpanel.mjs.map +1 -0
  1138. package/fesm2022/cax-design-system-scrolltop.mjs +289 -0
  1139. package/fesm2022/cax-design-system-scrolltop.mjs.map +1 -0
  1140. package/fesm2022/cax-design-system-selectbutton.mjs +385 -0
  1141. package/fesm2022/cax-design-system-selectbutton.mjs.map +1 -0
  1142. package/fesm2022/cax-design-system-sidebar.mjs +439 -0
  1143. package/fesm2022/cax-design-system-sidebar.mjs.map +1 -0
  1144. package/fesm2022/cax-design-system-skeleton.mjs +109 -0
  1145. package/fesm2022/cax-design-system-skeleton.mjs.map +1 -0
  1146. package/fesm2022/cax-design-system-slidemenu.mjs +1508 -0
  1147. package/fesm2022/cax-design-system-slidemenu.mjs.map +1 -0
  1148. package/fesm2022/cax-design-system-slider.mjs +803 -0
  1149. package/fesm2022/cax-design-system-slider.mjs.map +1 -0
  1150. package/fesm2022/cax-design-system-speeddial.mjs +637 -0
  1151. package/fesm2022/cax-design-system-speeddial.mjs.map +1 -0
  1152. package/fesm2022/cax-design-system-spinner.mjs +454 -0
  1153. package/fesm2022/cax-design-system-spinner.mjs.map +1 -0
  1154. package/fesm2022/cax-design-system-splitbutton.mjs +390 -0
  1155. package/fesm2022/cax-design-system-splitbutton.mjs.map +1 -0
  1156. package/fesm2022/cax-design-system-splitter.mjs +569 -0
  1157. package/fesm2022/cax-design-system-splitter.mjs.map +1 -0
  1158. package/fesm2022/cax-design-system-stepper.mjs +684 -0
  1159. package/fesm2022/cax-design-system-stepper.mjs.map +1 -0
  1160. package/fesm2022/cax-design-system-steps.mjs +352 -0
  1161. package/fesm2022/cax-design-system-steps.mjs.map +1 -0
  1162. package/fesm2022/cax-design-system-styleclass.mjs +323 -0
  1163. package/fesm2022/cax-design-system-styleclass.mjs.map +1 -0
  1164. package/fesm2022/cax-design-system-table.mjs +5562 -0
  1165. package/fesm2022/cax-design-system-table.mjs.map +1 -0
  1166. package/fesm2022/cax-design-system-tabmenu.mjs +583 -0
  1167. package/fesm2022/cax-design-system-tabmenu.mjs.map +1 -0
  1168. package/fesm2022/cax-design-system-tabview.mjs +850 -0
  1169. package/fesm2022/cax-design-system-tabview.mjs.map +1 -0
  1170. package/fesm2022/cax-design-system-tag.mjs +117 -0
  1171. package/fesm2022/cax-design-system-tag.mjs.map +1 -0
  1172. package/fesm2022/cax-design-system-terminal.mjs +172 -0
  1173. package/fesm2022/cax-design-system-terminal.mjs.map +1 -0
  1174. package/fesm2022/cax-design-system-tieredmenu.mjs +1314 -0
  1175. package/fesm2022/cax-design-system-tieredmenu.mjs.map +1 -0
  1176. package/fesm2022/cax-design-system-timeline.mjs +174 -0
  1177. package/fesm2022/cax-design-system-timeline.mjs.map +1 -0
  1178. package/fesm2022/cax-design-system-toast.mjs +507 -0
  1179. package/fesm2022/cax-design-system-toast.mjs.map +1 -0
  1180. package/fesm2022/cax-design-system-togglebutton.mjs +281 -0
  1181. package/fesm2022/cax-design-system-togglebutton.mjs.map +1 -0
  1182. package/fesm2022/cax-design-system-toggleswitch.mjs +57 -0
  1183. package/fesm2022/cax-design-system-toggleswitch.mjs.map +1 -0
  1184. package/fesm2022/cax-design-system-toolbar.mjs +118 -0
  1185. package/fesm2022/cax-design-system-toolbar.mjs.map +1 -0
  1186. package/fesm2022/cax-design-system-tooltip.mjs +910 -0
  1187. package/fesm2022/cax-design-system-tooltip.mjs.map +1 -0
  1188. package/fesm2022/cax-design-system-tree.mjs +1527 -0
  1189. package/fesm2022/cax-design-system-tree.mjs.map +1 -0
  1190. package/fesm2022/cax-design-system-treeselect.mjs +1200 -0
  1191. package/fesm2022/cax-design-system-treeselect.mjs.map +1 -0
  1192. package/fesm2022/cax-design-system-treetable.mjs +4118 -0
  1193. package/fesm2022/cax-design-system-treetable.mjs.map +1 -0
  1194. package/fesm2022/cax-design-system-tristatecheckbox.mjs +235 -0
  1195. package/fesm2022/cax-design-system-tristatecheckbox.mjs.map +1 -0
  1196. package/fesm2022/cax-design-system-ts-helpers.mjs +4 -0
  1197. package/fesm2022/cax-design-system-ts-helpers.mjs.map +1 -0
  1198. package/fesm2022/cax-design-system-utils.mjs +305 -0
  1199. package/fesm2022/cax-design-system-utils.mjs.map +1 -0
  1200. package/fesm2022/cax-design-system-virtualscroller.mjs +222 -0
  1201. package/fesm2022/cax-design-system-virtualscroller.mjs.map +1 -0
  1202. package/fesm2022/cax-design-system.mjs +6 -0
  1203. package/fesm2022/cax-design-system.mjs.map +1 -0
  1204. package/fieldset/fieldset.d.ts +93 -0
  1205. package/fieldset/fieldset.interface.d.ts +46 -0
  1206. package/fieldset/index.d.ts +5 -0
  1207. package/fieldset/public_api.d.ts +2 -0
  1208. package/fileupload/fileupload.d.ts +380 -0
  1209. package/fileupload/fileupload.interface.d.ts +226 -0
  1210. package/fileupload/index.d.ts +5 -0
  1211. package/fileupload/public_api.d.ts +2 -0
  1212. package/floatlabel/floatlabel.d.ts +17 -0
  1213. package/floatlabel/index.d.ts +5 -0
  1214. package/floatlabel/public_api.d.ts +1 -0
  1215. package/focustrap/focustrap.d.ts +34 -0
  1216. package/focustrap/index.d.ts +5 -0
  1217. package/focustrap/public_api.d.ts +1 -0
  1218. package/galleria/galleria.d.ts +404 -0
  1219. package/galleria/galleria.interface.d.ts +97 -0
  1220. package/galleria/index.d.ts +5 -0
  1221. package/galleria/public_api.d.ts +2 -0
  1222. package/iconfield/iconfield.d.ts +25 -0
  1223. package/iconfield/index.d.ts +5 -0
  1224. package/iconfield/public_api.d.ts +1 -0
  1225. package/icons/angledoubledown/angledoubledown.d.ts +6 -0
  1226. package/icons/angledoubledown/index.d.ts +5 -0
  1227. package/icons/angledoubledown/public_api.d.ts +1 -0
  1228. package/icons/angledoubleleft/angledoubleleft.d.ts +6 -0
  1229. package/icons/angledoubleleft/index.d.ts +5 -0
  1230. package/icons/angledoubleleft/public_api.d.ts +1 -0
  1231. package/icons/angledoubleright/angledoubleright.d.ts +6 -0
  1232. package/icons/angledoubleright/index.d.ts +5 -0
  1233. package/icons/angledoubleright/public_api.d.ts +1 -0
  1234. package/icons/angledoubleup/angledoubleup.d.ts +6 -0
  1235. package/icons/angledoubleup/index.d.ts +5 -0
  1236. package/icons/angledoubleup/public_api.d.ts +1 -0
  1237. package/icons/angledown/angledown.d.ts +6 -0
  1238. package/icons/angledown/index.d.ts +5 -0
  1239. package/icons/angledown/public_api.d.ts +1 -0
  1240. package/icons/angleleft/angleleft.d.ts +6 -0
  1241. package/icons/angleleft/index.d.ts +5 -0
  1242. package/icons/angleleft/public_api.d.ts +1 -0
  1243. package/icons/angleright/angleright.d.ts +6 -0
  1244. package/icons/angleright/index.d.ts +5 -0
  1245. package/icons/angleright/public_api.d.ts +1 -0
  1246. package/icons/angleup/angleup.d.ts +6 -0
  1247. package/icons/angleup/index.d.ts +5 -0
  1248. package/icons/angleup/public_api.d.ts +1 -0
  1249. package/icons/arrowdown/arrowdown.d.ts +9 -0
  1250. package/icons/arrowdown/index.d.ts +5 -0
  1251. package/icons/arrowdown/public_api.d.ts +1 -0
  1252. package/icons/arrowdownleft/arrowdownleft.d.ts +6 -0
  1253. package/icons/arrowdownleft/index.d.ts +5 -0
  1254. package/icons/arrowdownleft/public_api.d.ts +1 -0
  1255. package/icons/arrowdownright/arrowdownright.d.ts +6 -0
  1256. package/icons/arrowdownright/index.d.ts +5 -0
  1257. package/icons/arrowdownright/public_api.d.ts +1 -0
  1258. package/icons/arrowleft/arrowleft.d.ts +8 -0
  1259. package/icons/arrowleft/index.d.ts +5 -0
  1260. package/icons/arrowleft/public_api.d.ts +1 -0
  1261. package/icons/arrowright/arrowright.d.ts +6 -0
  1262. package/icons/arrowright/index.d.ts +5 -0
  1263. package/icons/arrowright/public_api.d.ts +1 -0
  1264. package/icons/arrowup/arrowup.d.ts +8 -0
  1265. package/icons/arrowup/index.d.ts +5 -0
  1266. package/icons/arrowup/public_api.d.ts +1 -0
  1267. package/icons/ban/ban.d.ts +8 -0
  1268. package/icons/ban/index.d.ts +5 -0
  1269. package/icons/ban/public_api.d.ts +1 -0
  1270. package/icons/bars/bars.d.ts +6 -0
  1271. package/icons/bars/index.d.ts +5 -0
  1272. package/icons/bars/public_api.d.ts +1 -0
  1273. package/icons/blank/blank.d.ts +6 -0
  1274. package/icons/blank/index.d.ts +5 -0
  1275. package/icons/blank/public_api.d.ts +1 -0
  1276. package/icons/calendar/calendar.d.ts +6 -0
  1277. package/icons/calendar/index.d.ts +5 -0
  1278. package/icons/calendar/public_api.d.ts +1 -0
  1279. package/icons/caretleft/caretleft.d.ts +6 -0
  1280. package/icons/caretleft/index.d.ts +5 -0
  1281. package/icons/caretleft/public_api.d.ts +1 -0
  1282. package/icons/caretright/caretright.d.ts +6 -0
  1283. package/icons/caretright/index.d.ts +5 -0
  1284. package/icons/caretright/public_api.d.ts +1 -0
  1285. package/icons/check/check.d.ts +6 -0
  1286. package/icons/check/index.d.ts +5 -0
  1287. package/icons/check/public_api.d.ts +1 -0
  1288. package/icons/chevrondown/chevrondown.d.ts +6 -0
  1289. package/icons/chevrondown/index.d.ts +5 -0
  1290. package/icons/chevrondown/public_api.d.ts +1 -0
  1291. package/icons/chevronleft/chevronleft.d.ts +6 -0
  1292. package/icons/chevronleft/index.d.ts +5 -0
  1293. package/icons/chevronleft/public_api.d.ts +1 -0
  1294. package/icons/chevronright/chevronright.d.ts +6 -0
  1295. package/icons/chevronright/index.d.ts +5 -0
  1296. package/icons/chevronright/public_api.d.ts +1 -0
  1297. package/icons/chevronup/chevronup.d.ts +6 -0
  1298. package/icons/chevronup/index.d.ts +5 -0
  1299. package/icons/chevronup/public_api.d.ts +1 -0
  1300. package/icons/exclamationtriangle/exclamationtriangle.d.ts +9 -0
  1301. package/icons/exclamationtriangle/index.d.ts +5 -0
  1302. package/icons/exclamationtriangle/public_api.d.ts +1 -0
  1303. package/icons/eye/eye.d.ts +6 -0
  1304. package/icons/eye/index.d.ts +5 -0
  1305. package/icons/eye/public_api.d.ts +1 -0
  1306. package/icons/eyeslash/eyeslash.d.ts +8 -0
  1307. package/icons/eyeslash/index.d.ts +5 -0
  1308. package/icons/eyeslash/public_api.d.ts +1 -0
  1309. package/icons/filter/filter.d.ts +8 -0
  1310. package/icons/filter/index.d.ts +5 -0
  1311. package/icons/filter/public_api.d.ts +1 -0
  1312. package/icons/filterslash/filterslash.d.ts +8 -0
  1313. package/icons/filterslash/index.d.ts +5 -0
  1314. package/icons/filterslash/public_api.d.ts +1 -0
  1315. package/icons/home/home.d.ts +8 -0
  1316. package/icons/home/index.d.ts +5 -0
  1317. package/icons/home/public_api.d.ts +1 -0
  1318. package/icons/infocircle/index.d.ts +5 -0
  1319. package/icons/infocircle/infocircle.d.ts +8 -0
  1320. package/icons/infocircle/public_api.d.ts +1 -0
  1321. package/icons/minus/index.d.ts +5 -0
  1322. package/icons/minus/minus.d.ts +6 -0
  1323. package/icons/minus/public_api.d.ts +1 -0
  1324. package/icons/pencil/index.d.ts +5 -0
  1325. package/icons/pencil/pencil.d.ts +8 -0
  1326. package/icons/pencil/public_api.d.ts +1 -0
  1327. package/icons/plus/index.d.ts +5 -0
  1328. package/icons/plus/plus.d.ts +8 -0
  1329. package/icons/plus/public_api.d.ts +1 -0
  1330. package/icons/refresh/index.d.ts +5 -0
  1331. package/icons/refresh/public_api.d.ts +1 -0
  1332. package/icons/refresh/refresh.d.ts +8 -0
  1333. package/icons/search/index.d.ts +5 -0
  1334. package/icons/search/public_api.d.ts +1 -0
  1335. package/icons/search/search.d.ts +8 -0
  1336. package/icons/searchminus/index.d.ts +5 -0
  1337. package/icons/searchminus/public_api.d.ts +1 -0
  1338. package/icons/searchminus/searchminus.d.ts +8 -0
  1339. package/icons/searchplus/index.d.ts +5 -0
  1340. package/icons/searchplus/public_api.d.ts +1 -0
  1341. package/icons/searchplus/searchplus.d.ts +8 -0
  1342. package/icons/sortalt/index.d.ts +5 -0
  1343. package/icons/sortalt/public_api.d.ts +1 -0
  1344. package/icons/sortalt/sortalt.d.ts +8 -0
  1345. package/icons/sortamountdown/index.d.ts +5 -0
  1346. package/icons/sortamountdown/public_api.d.ts +1 -0
  1347. package/icons/sortamountdown/sortamountdown.d.ts +8 -0
  1348. package/icons/sortamountupalt/index.d.ts +5 -0
  1349. package/icons/sortamountupalt/public_api.d.ts +1 -0
  1350. package/icons/sortamountupalt/sortamountupalt.d.ts +8 -0
  1351. package/icons/spinner/index.d.ts +5 -0
  1352. package/icons/spinner/public_api.d.ts +1 -0
  1353. package/icons/spinner/spinner.d.ts +8 -0
  1354. package/icons/star/index.d.ts +5 -0
  1355. package/icons/star/public_api.d.ts +1 -0
  1356. package/icons/star/star.d.ts +8 -0
  1357. package/icons/starfill/index.d.ts +5 -0
  1358. package/icons/starfill/public_api.d.ts +1 -0
  1359. package/icons/starfill/starfill.d.ts +8 -0
  1360. package/icons/thlarge/index.d.ts +5 -0
  1361. package/icons/thlarge/public_api.d.ts +1 -0
  1362. package/icons/thlarge/thlarge.d.ts +8 -0
  1363. package/icons/times/index.d.ts +5 -0
  1364. package/icons/times/public_api.d.ts +1 -0
  1365. package/icons/times/times.d.ts +6 -0
  1366. package/icons/timescircle/index.d.ts +5 -0
  1367. package/icons/timescircle/public_api.d.ts +1 -0
  1368. package/icons/timescircle/timescircle.d.ts +8 -0
  1369. package/icons/trash/index.d.ts +5 -0
  1370. package/icons/trash/public_api.d.ts +1 -0
  1371. package/icons/trash/trash.d.ts +8 -0
  1372. package/icons/undo/index.d.ts +5 -0
  1373. package/icons/undo/public_api.d.ts +1 -0
  1374. package/icons/undo/undo.d.ts +8 -0
  1375. package/icons/upload/index.d.ts +5 -0
  1376. package/icons/upload/public_api.d.ts +1 -0
  1377. package/icons/upload/upload.d.ts +8 -0
  1378. package/icons/windowmaximize/index.d.ts +5 -0
  1379. package/icons/windowmaximize/public_api.d.ts +1 -0
  1380. package/icons/windowmaximize/windowmaximize.d.ts +8 -0
  1381. package/icons/windowminimize/index.d.ts +5 -0
  1382. package/icons/windowminimize/public_api.d.ts +1 -0
  1383. package/icons/windowminimize/windowminimize.d.ts +8 -0
  1384. package/image/image.d.ts +188 -0
  1385. package/image/image.interface.d.ts +31 -0
  1386. package/image/image.module.d.ts +8 -0
  1387. package/image/index.d.ts +5 -0
  1388. package/image/public_api.d.ts +3 -0
  1389. package/index.d.ts +5 -0
  1390. package/inplace/index.d.ts +5 -0
  1391. package/inplace/inplace.d.ts +109 -0
  1392. package/inplace/inplace.interface.d.ts +19 -0
  1393. package/inplace/public_api.d.ts +2 -0
  1394. package/inputgroup/index.d.ts +5 -0
  1395. package/inputgroup/inputgroup.d.ts +28 -0
  1396. package/inputgroup/inputgroup.module.d.ts +15 -0
  1397. package/inputgroup/public_api.d.ts +2 -0
  1398. package/inputgroupaddon/index.d.ts +5 -0
  1399. package/inputgroupaddon/inputgroupaddon.d.ts +21 -0
  1400. package/inputgroupaddon/inputgroupaddon.module.d.ts +14 -0
  1401. package/inputgroupaddon/public_api.d.ts +2 -0
  1402. package/inputicon/index.d.ts +5 -0
  1403. package/inputicon/inputicon.d.ts +21 -0
  1404. package/inputicon/public_api.d.ts +1 -0
  1405. package/inputmask/index.d.ts +5 -0
  1406. package/inputmask/inputmask.d.ts +273 -0
  1407. package/inputmask/inputmask.interface.d.ts +19 -0
  1408. package/inputmask/public_api.d.ts +2 -0
  1409. package/inputnumber/index.d.ts +5 -0
  1410. package/inputnumber/inputnumber.d.ts +392 -0
  1411. package/inputnumber/inputnumber.interface.d.ts +38 -0
  1412. package/inputnumber/inputnumber.module.d.ts +8 -0
  1413. package/inputnumber/public_api.d.ts +3 -0
  1414. package/inputotp/index.d.ts +5 -0
  1415. package/inputotp/inputotp.d.ts +123 -0
  1416. package/inputotp/inputotp.interface.d.ts +65 -0
  1417. package/inputotp/public_api.d.ts +2 -0
  1418. package/inputswitch/index.d.ts +5 -0
  1419. package/inputswitch/inputswitch.d.ts +106 -0
  1420. package/inputswitch/inputswitch.interface.d.ts +15 -0
  1421. package/inputswitch/public_api.d.ts +2 -0
  1422. package/inputtext/index.d.ts +5 -0
  1423. package/inputtext/inputtext.component.d.ts +25 -0
  1424. package/inputtext/inputtext.directive.d.ts +20 -0
  1425. package/inputtext/inputtext.module.d.ts +10 -0
  1426. package/inputtext/public_api.d.ts +3 -0
  1427. package/inputtextarea/index.d.ts +5 -0
  1428. package/inputtextarea/inputtextarea.d.ts +53 -0
  1429. package/inputtextarea/public_api.d.ts +1 -0
  1430. package/keyfilter/index.d.ts +5 -0
  1431. package/keyfilter/keyfilter.d.ts +58 -0
  1432. package/keyfilter/keyfilter.interface.d.ts +5 -0
  1433. package/keyfilter/public_api.d.ts +2 -0
  1434. package/knob/index.d.ts +5 -0
  1435. package/knob/knob.d.ts +178 -0
  1436. package/knob/public_api.d.ts +1 -0
  1437. package/listbox/index.d.ts +5 -0
  1438. package/listbox/listbox.d.ts +463 -0
  1439. package/listbox/listbox.interface.d.ts +156 -0
  1440. package/listbox/public_api.d.ts +2 -0
  1441. package/logo/index.d.ts +5 -0
  1442. package/logo/logo.d.ts +11 -0
  1443. package/logo/logo.module.d.ts +7 -0
  1444. package/logo/public_api.d.ts +2 -0
  1445. package/megamenu/index.d.ts +5 -0
  1446. package/megamenu/megamenu.d.ts +198 -0
  1447. package/megamenu/megamenu.interface.d.ts +31 -0
  1448. package/megamenu/public_api.d.ts +2 -0
  1449. package/menu/index.d.ts +5 -0
  1450. package/menu/menu.d.ts +220 -0
  1451. package/menu/public_api.d.ts +1 -0
  1452. package/menubar/index.d.ts +5 -0
  1453. package/menubar/menubar.d.ts +248 -0
  1454. package/menubar/menubar.interface.d.ts +40 -0
  1455. package/menubar/public_api.d.ts +2 -0
  1456. package/message/index.d.ts +5 -0
  1457. package/message/message.d.ts +52 -0
  1458. package/message/public_api.d.ts +1 -0
  1459. package/messages/index.d.ts +5 -0
  1460. package/messages/messages.d.ts +115 -0
  1461. package/messages/messages.interface.d.ts +18 -0
  1462. package/messages/messages.module.d.ts +8 -0
  1463. package/messages/public_api.d.ts +3 -0
  1464. package/metergroup/index.d.ts +5 -0
  1465. package/metergroup/metergroup.d.ts +101 -0
  1466. package/metergroup/metergroup.interface.d.ts +122 -0
  1467. package/metergroup/public_api.d.ts +2 -0
  1468. package/multiselect/index.d.ts +5 -0
  1469. package/multiselect/multiselect.d.ts +724 -0
  1470. package/multiselect/multiselect.interface.d.ts +247 -0
  1471. package/multiselect/public_api.d.ts +2 -0
  1472. package/navigation/index.d.ts +5 -0
  1473. package/navigation/navigation.d.ts +54 -0
  1474. package/navigation/navigation.interface.d.ts +23 -0
  1475. package/navigation/navigation.module.d.ts +7 -0
  1476. package/navigation/public_api.d.ts +2 -0
  1477. package/orderlist/index.d.ts +5 -0
  1478. package/orderlist/orderlist.d.ts +270 -0
  1479. package/orderlist/orderlist.interface.d.ts +110 -0
  1480. package/orderlist/public_api.d.ts +2 -0
  1481. package/organizationchart/index.d.ts +5 -0
  1482. package/organizationchart/organizationchart.d.ts +132 -0
  1483. package/organizationchart/organizationchart.interface.d.ts +59 -0
  1484. package/organizationchart/public_api.d.ts +2 -0
  1485. package/overlay/index.d.ts +5 -0
  1486. package/overlay/overlay.d.ts +238 -0
  1487. package/overlay/overlay.module.d.ts +8 -0
  1488. package/overlay/public_api.d.ts +2 -0
  1489. package/overlaypanel/index.d.ts +5 -0
  1490. package/overlaypanel/overlaypanel.d.ts +162 -0
  1491. package/overlaypanel/overlaypanel.module.d.ts +8 -0
  1492. package/overlaypanel/public_api.d.ts +2 -0
  1493. package/package.json +1033 -0
  1494. package/paginator/index.d.ts +5 -0
  1495. package/paginator/paginator.d.ts +192 -0
  1496. package/paginator/paginator.interface.d.ts +37 -0
  1497. package/paginator/paginator.module.d.ts +17 -0
  1498. package/paginator/public_api.d.ts +3 -0
  1499. package/panel/index.d.ts +5 -0
  1500. package/panel/panel.d.ts +126 -0
  1501. package/panel/panel.interface.d.ts +58 -0
  1502. package/panel/public_api.d.ts +2 -0
  1503. package/panelmenu/index.d.ts +5 -0
  1504. package/panelmenu/panelmenu.d.ts +225 -0
  1505. package/panelmenu/panelmenu.interface.d.ts +23 -0
  1506. package/panelmenu/public_api.d.ts +2 -0
  1507. package/password/index.d.ts +5 -0
  1508. package/password/password.d.ts +342 -0
  1509. package/password/public_api.d.ts +1 -0
  1510. package/picklist/index.d.ts +5 -0
  1511. package/picklist/picklist.d.ts +453 -0
  1512. package/picklist/picklist.interface.d.ts +242 -0
  1513. package/picklist/public_api.d.ts +2 -0
  1514. package/progressbar/index.d.ts +5 -0
  1515. package/progressbar/progressbar.d.ts +54 -0
  1516. package/progressbar/progressbar.module.d.ts +8 -0
  1517. package/progressbar/public_api.d.ts +2 -0
  1518. package/progressspinner/index.d.ts +5 -0
  1519. package/progressspinner/progressspinner.d.ts +50 -0
  1520. package/progressspinner/progressspinner.module.d.ts +8 -0
  1521. package/progressspinner/public_api.d.ts +2 -0
  1522. package/public_api.d.ts +2 -0
  1523. package/radiobutton/index.d.ts +5 -0
  1524. package/radiobutton/public_api.d.ts +3 -0
  1525. package/radiobutton/radiobutton.d.ts +145 -0
  1526. package/radiobutton/radiobutton.interface.d.ts +15 -0
  1527. package/radiobutton/radiobutton.module.d.ts +7 -0
  1528. package/rating/index.d.ts +5 -0
  1529. package/rating/public_api.d.ts +2 -0
  1530. package/rating/rating.d.ts +146 -0
  1531. package/rating/rating.interface.d.ts +34 -0
  1532. package/resources/cax.min.scss +1 -0
  1533. package/resources/cax.scss +784 -0
  1534. package/resources/components/accordion/accordion.scss +44 -0
  1535. package/resources/components/autocomplete/autocomplete.css +104 -0
  1536. package/resources/components/avatar/avatar.scss +33 -0
  1537. package/resources/components/avatargroup/avatargroup.css +10 -0
  1538. package/resources/components/badge/badge.scss +34 -0
  1539. package/resources/components/blockui/blockui.css +26 -0
  1540. package/resources/components/breadcrumb/breadcrumb.scss +33 -0
  1541. package/resources/components/button/button.scss +117 -0
  1542. package/resources/components/calendar/calendar.scss +177 -0
  1543. package/resources/components/card/card.scss +50 -0
  1544. package/resources/components/carousel/carousel.css +71 -0
  1545. package/resources/components/cascadeselect/cascadeselect.scss +99 -0
  1546. package/resources/components/checkbox/checkbox.scss +30 -0
  1547. package/resources/components/chip/chip.scss +63 -0
  1548. package/resources/components/chips/chips.scss +156 -0
  1549. package/resources/components/colorpicker/colorpicker-images.css +7 -0
  1550. package/resources/components/colorpicker/colorpicker.css +83 -0
  1551. package/resources/components/colorpicker/images/color.png +0 -0
  1552. package/resources/components/colorpicker/images/hue.png +0 -0
  1553. package/resources/components/common/common.scss +182 -0
  1554. package/resources/components/confirmpopup/confirmpopup.css +53 -0
  1555. package/resources/components/contextmenu/contextmenu.css +42 -0
  1556. package/resources/components/dataview/dataview.css +13 -0
  1557. package/resources/components/dialog/dialog.scss +164 -0
  1558. package/resources/components/divider/divider.scss +86 -0
  1559. package/resources/components/dock/dock.css +107 -0
  1560. package/resources/components/dropdown/dropdown.scss +92 -0
  1561. package/resources/components/editor/editor.css +4 -0
  1562. package/resources/components/fieldset/fieldset.css +30 -0
  1563. package/resources/components/fileupload/fileupload.css +47 -0
  1564. package/resources/components/galleria/galleria.css +281 -0
  1565. package/resources/components/iconfield/iconfield.css +5 -0
  1566. package/resources/components/image/image.scss +97 -0
  1567. package/resources/components/inplace/inplace.css +19 -0
  1568. package/resources/components/inputicon/inputicon.css +6 -0
  1569. package/resources/components/inputmask/inputmask.css +12 -0
  1570. package/resources/components/inputnumber/inputnumber.scss +116 -0
  1571. package/resources/components/inputotp/inputotp.css +2 -0
  1572. package/resources/components/inputswitch/inputswitch.css +23 -0
  1573. package/resources/components/inputtext/inputtext.scss +150 -0
  1574. package/resources/components/inputtextarea/inputtextarea.css +10 -0
  1575. package/resources/components/knob/knob.css +20 -0
  1576. package/resources/components/listbox/listbox.css +40 -0
  1577. package/resources/components/logo/logo.scss +0 -0
  1578. package/resources/components/megamenu/megamenu.css +108 -0
  1579. package/resources/components/menu/menu.css +30 -0
  1580. package/resources/components/menubar/menubar.css +81 -0
  1581. package/resources/components/message/message.css +17 -0
  1582. package/resources/components/messages/messages.scss +55 -0
  1583. package/resources/components/multiselect/multiselect.css +116 -0
  1584. package/resources/components/navigation/navigation.scss +217 -0
  1585. package/resources/components/orderlist/orderlist.css +78 -0
  1586. package/resources/components/organizationchart/organizationchart.css +62 -0
  1587. package/resources/components/overlay/overlay.scss +80 -0
  1588. package/resources/components/overlaypanel/overlaypanel.scss +63 -0
  1589. package/resources/components/paginator/paginator.scss +37 -0
  1590. package/resources/components/panel/panel.css +29 -0
  1591. package/resources/components/panelmenu/panelmenu.css +45 -0
  1592. package/resources/components/password/images/password-meter.png +0 -0
  1593. package/resources/components/password/password.css +54 -0
  1594. package/resources/components/picklist/picklist.css +60 -0
  1595. package/resources/components/progressbar/progressbar.scss +122 -0
  1596. package/resources/components/progressspinner/progressspinner.scss +94 -0
  1597. package/resources/components/radiobutton/radiobutton.scss +38 -0
  1598. package/resources/components/rating/rating.css +15 -0
  1599. package/resources/components/ripple/ripple.scss +29 -0
  1600. package/resources/components/scroller/scroller.scss +58 -0
  1601. package/resources/components/scrollpanel/scrollpanel.css +50 -0
  1602. package/resources/components/scrolltop/scrolltop.css +18 -0
  1603. package/resources/components/sidebar/sidebar.scss +114 -0
  1604. package/resources/components/skeleton/skeleton.scss +25 -0
  1605. package/resources/components/slidemenu/slidemenu.css +100 -0
  1606. package/resources/components/slider/slider.css +41 -0
  1607. package/resources/components/speeddial/speeddial.scss +122 -0
  1608. package/resources/components/spinner/spinner.css +63 -0
  1609. package/resources/components/splitbutton/splitbutton.scss +48 -0
  1610. package/resources/components/splitter/splitter.css +70 -0
  1611. package/resources/components/stepper/stepper.css +9 -0
  1612. package/resources/components/steps/steps.css +49 -0
  1613. package/resources/components/table/table.scss +249 -0
  1614. package/resources/components/tabmenu/tabmenu.css +80 -0
  1615. package/resources/components/tabview/tabview.scss +163 -0
  1616. package/resources/components/tag/tag.scss +17 -0
  1617. package/resources/components/terminal/terminal.css +24 -0
  1618. package/resources/components/tieredmenu/tieredmenu.scss +55 -0
  1619. package/resources/components/timeline/timeline.css +114 -0
  1620. package/resources/components/toast/toast.scss +83 -0
  1621. package/resources/components/toggleswitch/toggleswitch.scss +30 -0
  1622. package/resources/components/toolbar/toolbar.css +19 -0
  1623. package/resources/components/tooltip/tooltip.scss +124 -0
  1624. package/resources/components/tree/images/line.gif +0 -0
  1625. package/resources/components/tree/tree.scss +158 -0
  1626. package/resources/components/treeselect/treeselect.css +98 -0
  1627. package/resources/components/treetable/treetable.css +205 -0
  1628. package/resources/images/color.png +0 -0
  1629. package/resources/images/hue.png +0 -0
  1630. package/resources/images/line.gif +0 -0
  1631. package/resources/images/password-meter.png +0 -0
  1632. package/resources/logo/dataX-dark.svg +12 -0
  1633. package/resources/logo/dataX-icon-dark.svg +6 -0
  1634. package/resources/logo/dataX-icon.svg +6 -0
  1635. package/resources/logo/dataX.svg +12 -0
  1636. package/resources/logo/usercard.png +0 -0
  1637. package/resources/themes/cax-theme.scss +9272 -0
  1638. package/ripple/index.d.ts +5 -0
  1639. package/ripple/public_api.d.ts +2 -0
  1640. package/ripple/ripple.d.ts +30 -0
  1641. package/ripple/ripple.module.d.ts +7 -0
  1642. package/scroller/index.d.ts +5 -0
  1643. package/scroller/public_api.d.ts +3 -0
  1644. package/scroller/scroller.d.ts +343 -0
  1645. package/scroller/scroller.interface.d.ts +177 -0
  1646. package/scroller/scroller.module.d.ts +8 -0
  1647. package/scrollpanel/index.d.ts +5 -0
  1648. package/scrollpanel/public_api.d.ts +2 -0
  1649. package/scrollpanel/scrollpanel.d.ts +103 -0
  1650. package/scrollpanel/scrollpanel.interface.d.ts +11 -0
  1651. package/scrolltop/index.d.ts +5 -0
  1652. package/scrolltop/public_api.d.ts +2 -0
  1653. package/scrolltop/scrolltop.d.ts +97 -0
  1654. package/scrolltop/scrolltop.interface.d.ts +18 -0
  1655. package/selectbutton/index.d.ts +5 -0
  1656. package/selectbutton/public_api.d.ts +2 -0
  1657. package/selectbutton/selectbutton.d.ts +136 -0
  1658. package/selectbutton/selectbutton.interface.d.ts +45 -0
  1659. package/sidebar/index.d.ts +5 -0
  1660. package/sidebar/public_api.d.ts +3 -0
  1661. package/sidebar/sidebar.d.ts +158 -0
  1662. package/sidebar/sidebar.interface.d.ts +27 -0
  1663. package/sidebar/sidebar.module.d.ts +12 -0
  1664. package/skeleton/index.d.ts +5 -0
  1665. package/skeleton/public_api.d.ts +2 -0
  1666. package/skeleton/skeleton.d.ts +61 -0
  1667. package/skeleton/skeleton.module.d.ts +8 -0
  1668. package/slidemenu/index.d.ts +5 -0
  1669. package/slidemenu/public_api.d.ts +2 -0
  1670. package/slidemenu/slidemenu.d.ts +322 -0
  1671. package/slidemenu/slidemenu.interface.d.ts +15 -0
  1672. package/slider/index.d.ts +5 -0
  1673. package/slider/public_api.d.ts +2 -0
  1674. package/slider/slider.d.ts +174 -0
  1675. package/slider/slider.interface.d.ts +38 -0
  1676. package/speeddial/index.d.ts +5 -0
  1677. package/speeddial/public_api.d.ts +3 -0
  1678. package/speeddial/speeddial.d.ts +277 -0
  1679. package/speeddial/speeddial.interface.d.ts +28 -0
  1680. package/speeddial/speeddial.module.d.ts +14 -0
  1681. package/spinner/index.d.ts +5 -0
  1682. package/spinner/public_api.d.ts +1 -0
  1683. package/spinner/spinner.d.ts +90 -0
  1684. package/splitbutton/index.d.ts +5 -0
  1685. package/splitbutton/public_api.d.ts +3 -0
  1686. package/splitbutton/splitbutton.d.ts +221 -0
  1687. package/splitbutton/splitbutton.interface.d.ts +30 -0
  1688. package/splitbutton/splitbutton.module.d.ts +12 -0
  1689. package/splitter/index.d.ts +5 -0
  1690. package/splitter/public_api.d.ts +2 -0
  1691. package/splitter/splitter.d.ts +164 -0
  1692. package/splitter/splitter.interface.d.ts +34 -0
  1693. package/stepper/index.d.ts +5 -0
  1694. package/stepper/public_api.d.ts +2 -0
  1695. package/stepper/stepper.d.ts +117 -0
  1696. package/stepper/stepper.interface.d.ts +26 -0
  1697. package/steps/index.d.ts +5 -0
  1698. package/steps/public_api.d.ts +1 -0
  1699. package/steps/steps.d.ts +85 -0
  1700. package/styleclass/index.d.ts +5 -0
  1701. package/styleclass/public_api.d.ts +1 -0
  1702. package/styleclass/styleclass.d.ts +108 -0
  1703. package/table/columnfilter.interface.d.ts +247 -0
  1704. package/table/components/cell-editor/cell-editor.d.ts +20 -0
  1705. package/table/components/column-filter/column-filter.d.ts +256 -0
  1706. package/table/components/column-filter-form-element/column-filter-form-element.d.ts +37 -0
  1707. package/table/components/sort-icon/sort-icon.d.ts +21 -0
  1708. package/table/components/table-body/table-body.d.ts +36 -0
  1709. package/table/components/table-checkbox/table-checkbox.d.ts +31 -0
  1710. package/table/components/table-header-checkbox/table-header-checkbox.d.ts +29 -0
  1711. package/table/components/table-radio-button/table-radio-button.d.ts +29 -0
  1712. package/table/directives/cancel-editable-row.directive.d.ts +11 -0
  1713. package/table/directives/content-menu-row.directive.d.ts +22 -0
  1714. package/table/directives/editable-column.directive.d.ts +40 -0
  1715. package/table/directives/editable-row.directive.d.ts +12 -0
  1716. package/table/directives/frozen-column.directive.d.ts +16 -0
  1717. package/table/directives/init-editable-row.directive.d.ts +11 -0
  1718. package/table/directives/reorderable-column.directive.d.ts +32 -0
  1719. package/table/directives/reorderable-row-handle.directive.d.ts +9 -0
  1720. package/table/directives/reorderable-row.directive.d.ts +34 -0
  1721. package/table/directives/resizable-column.directive.d.ts +35 -0
  1722. package/table/directives/row-group-header.directive.d.ts +9 -0
  1723. package/table/directives/row-toggler.directive.d.ts +13 -0
  1724. package/table/directives/save-editable-row.directive.d.ts +11 -0
  1725. package/table/directives/selectable-row-double-click.directive.d.ts +22 -0
  1726. package/table/directives/selectable-row.directive.d.ts +37 -0
  1727. package/table/directives/sortable-column.directive.d.ts +24 -0
  1728. package/table/index.d.ts +5 -0
  1729. package/table/public_api.d.ts +28 -0
  1730. package/table/table.d.ts +859 -0
  1731. package/table/table.interface.d.ts +623 -0
  1732. package/table/table.module.d.ts +32 -0
  1733. package/table/table.service.d.ts +24 -0
  1734. package/tabmenu/index.d.ts +5 -0
  1735. package/tabmenu/public_api.d.ts +2 -0
  1736. package/tabmenu/tabmenu.d.ts +126 -0
  1737. package/tabmenu/tabmenu.interface.d.ts +32 -0
  1738. package/tabview/index.d.ts +5 -0
  1739. package/tabview/public_api.d.ts +3 -0
  1740. package/tabview/tabview.d.ts +281 -0
  1741. package/tabview/tabview.interface.d.ts +49 -0
  1742. package/tabview/tabview.module.d.ts +14 -0
  1743. package/tag/index.d.ts +5 -0
  1744. package/tag/public_api.d.ts +3 -0
  1745. package/tag/tag.d.ts +61 -0
  1746. package/tag/tag.interface.d.ts +11 -0
  1747. package/tag/tag.module.d.ts +9 -0
  1748. package/terminal/index.d.ts +5 -0
  1749. package/terminal/public_api.d.ts +2 -0
  1750. package/terminal/terminal.d.ts +56 -0
  1751. package/terminal/terminalservice.d.ts +11 -0
  1752. package/tieredmenu/index.d.ts +5 -0
  1753. package/tieredmenu/public_api.d.ts +3 -0
  1754. package/tieredmenu/tieredmenu.d.ts +266 -0
  1755. package/tieredmenu/tieredmenu.interface.d.ts +27 -0
  1756. package/tieredmenu/tiredmenu.module.d.ts +13 -0
  1757. package/timeline/index.d.ts +5 -0
  1758. package/timeline/public_api.d.ts +2 -0
  1759. package/timeline/timeline.d.ts +54 -0
  1760. package/timeline/timeline.interface.d.ts +43 -0
  1761. package/toast/index.d.ts +5 -0
  1762. package/toast/public_api.d.ts +3 -0
  1763. package/toast/toast.d.ts +142 -0
  1764. package/toast/toast.interface.d.ts +52 -0
  1765. package/toast/toast.module.d.ts +9 -0
  1766. package/toast/toastitem.d.ts +37 -0
  1767. package/togglebutton/index.d.ts +5 -0
  1768. package/togglebutton/public_api.d.ts +2 -0
  1769. package/togglebutton/togglebutton.d.ts +115 -0
  1770. package/togglebutton/togglebutton.interface.d.ts +34 -0
  1771. package/toggleswitch/index.d.ts +5 -0
  1772. package/toggleswitch/public_api.d.ts +2 -0
  1773. package/toggleswitch/toggleswitch.d.ts +13 -0
  1774. package/toggleswitch/toggleswitch.module.d.ts +9 -0
  1775. package/toolbar/index.d.ts +5 -0
  1776. package/toolbar/public_api.d.ts +2 -0
  1777. package/toolbar/toolbar.d.ts +43 -0
  1778. package/toolbar/toolbar.interface.d.ts +19 -0
  1779. package/tooltip/index.d.ts +5 -0
  1780. package/tooltip/public_api.d.ts +2 -0
  1781. package/tooltip/tooltip.d.ts +208 -0
  1782. package/tooltip/tooltip.module.d.ts +8 -0
  1783. package/tree/index.d.ts +5 -0
  1784. package/tree/public_api.d.ts +3 -0
  1785. package/tree/tree.d.ts +449 -0
  1786. package/tree/tree.interface.d.ts +193 -0
  1787. package/tree/tree.module.d.ts +19 -0
  1788. package/treeselect/index.d.ts +5 -0
  1789. package/treeselect/public_api.d.ts +2 -0
  1790. package/treeselect/treeselect.d.ts +405 -0
  1791. package/treeselect/treeselect.interface.d.ts +108 -0
  1792. package/treetable/index.d.ts +5 -0
  1793. package/treetable/public_api.d.ts +2 -0
  1794. package/treetable/treetable.d.ts +988 -0
  1795. package/treetable/treetable.interface.d.ts +472 -0
  1796. package/tristatecheckbox/index.d.ts +5 -0
  1797. package/tristatecheckbox/public_api.d.ts +3 -0
  1798. package/tristatecheckbox/tristatecheckbox.d.ts +117 -0
  1799. package/tristatecheckbox/tristatecheckbox.interface.d.ts +30 -0
  1800. package/tristatecheckbox/tristatecheckbox.module.d.ts +8 -0
  1801. package/ts-helpers/index.d.ts +5 -0
  1802. package/ts-helpers/public_api.d.ts +1 -0
  1803. package/ts-helpers/ts-helpers.d.ts +4 -0
  1804. package/utils/index.d.ts +5 -0
  1805. package/utils/objectutils.d.ts +24 -0
  1806. package/utils/public_api.d.ts +4 -0
  1807. package/utils/uniquecomponentid.d.ts +2 -0
  1808. package/utils/zindexutils.d.ts +7 -0
  1809. package/virtualscroller/index.d.ts +5 -0
  1810. package/virtualscroller/public_api.d.ts +2 -0
  1811. package/virtualscroller/virtualscroller.d.ts +89 -0
  1812. package/virtualscroller/virtualscroller.interface.d.ts +72 -0
@@ -0,0 +1,1880 @@
1
+ import { CommonModule, DOCUMENT } from '@angular/common';
2
+ import { booleanAttribute, ChangeDetectionStrategy, Component, computed, ContentChildren, effect, EventEmitter, forwardRef, Inject, Input, NgModule, numberAttribute, Output, signal, ViewChild, ViewEncapsulation } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import { CaxTemplate, SharedModule, TranslationKeys } from 'cax-design-system/api';
5
+ import { AutoFocusModule } from 'cax-design-system/autofocus';
6
+ import { ButtonModule } from 'cax-design-system/button';
7
+ import { DomHandler } from 'cax-design-system/dom';
8
+ import { InputTextModule } from 'cax-design-system/inputtext';
9
+ import { OverlayModule } from 'cax-design-system/overlay';
10
+ import { RippleModule } from 'cax-design-system/ripple';
11
+ import { ScrollerModule } from 'cax-design-system/scroller';
12
+ import { ObjectUtils, UniqueComponentId } from 'cax-design-system/utils';
13
+ import { TimesCircleIcon } from 'cax-design-system/icons/timescircle';
14
+ import { SpinnerIcon } from 'cax-design-system/icons/spinner';
15
+ import { TimesIcon } from 'cax-design-system/icons/times';
16
+ import { ChevronDownIcon } from 'cax-design-system/icons/chevrondown';
17
+ import * as i0 from "@angular/core";
18
+ import * as i1 from "cax-design-system/api";
19
+ import * as i2 from "@angular/common";
20
+ import * as i3 from "cax-design-system/overlay";
21
+ import * as i4 from "cax-design-system/scroller";
22
+ export const AUTOCOMPLETE_VALUE_ACCESSOR = {
23
+ provide: NG_VALUE_ACCESSOR,
24
+ useExisting: forwardRef(() => AutoComplete),
25
+ multi: true
26
+ };
27
+ /**
28
+ * AutoComplete is an input component that provides real-time suggestions when being typed.
29
+ * @group Components
30
+ */
31
+ export class AutoComplete {
32
+ document;
33
+ el;
34
+ renderer;
35
+ cd;
36
+ config;
37
+ overlayService;
38
+ zone;
39
+ /**
40
+ * Minimum number of characters to initiate a search.
41
+ * @group Props
42
+ */
43
+ minLength = 1;
44
+ /**
45
+ * Delay between keystrokes to wait before sending a query.
46
+ * @group Props
47
+ */
48
+ delay = 300;
49
+ /**
50
+ * Inline style of the component.
51
+ * @group Props
52
+ */
53
+ style;
54
+ /**
55
+ * Inline style of the overlay panel element.
56
+ * @group Props
57
+ */
58
+ panelStyle;
59
+ /**
60
+ * Style class of the component.
61
+ * @group Props
62
+ */
63
+ styleClass;
64
+ /**
65
+ * Style class of the overlay panel element.
66
+ * @group Props
67
+ */
68
+ panelStyleClass;
69
+ /**
70
+ * Inline style of the input field.
71
+ * @group Props
72
+ */
73
+ inputStyle;
74
+ /**
75
+ * Identifier of the focus input to match a label defined for the component.
76
+ * @group Props
77
+ */
78
+ inputId;
79
+ /**
80
+ * Inline style of the input field.
81
+ * @group Props
82
+ */
83
+ inputStyleClass;
84
+ /**
85
+ * Hint text for the input field.
86
+ * @group Props
87
+ */
88
+ placeholder;
89
+ /**
90
+ * When present, it specifies that the input cannot be typed.
91
+ * @group Props
92
+ */
93
+ readonly;
94
+ /**
95
+ * When present, it specifies that the component should be disabled.
96
+ * @group Props
97
+ */
98
+ disabled;
99
+ /**
100
+ * Maximum height of the suggestions panel.
101
+ * @group Props
102
+ */
103
+ scrollHeight = '200px';
104
+ /**
105
+ * Defines if data is loaded and interacted with in lazy manner.
106
+ * @group Props
107
+ */
108
+ lazy = false;
109
+ /**
110
+ * Whether the data should be loaded on demand during scroll.
111
+ * @group Props
112
+ */
113
+ virtualScroll;
114
+ /**
115
+ * Height of an item in the list for VirtualScrolling.
116
+ * @group Props
117
+ */
118
+ virtualScrollItemSize;
119
+ /**
120
+ * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.
121
+ * @group Props
122
+ */
123
+ virtualScrollOptions;
124
+ /**
125
+ * Maximum number of character allows in the input field.
126
+ * @group Props
127
+ */
128
+ maxlength;
129
+ /**
130
+ * Name of the input element.
131
+ * @group Props
132
+ */
133
+ name;
134
+ /**
135
+ * When present, it specifies that an input field must be filled out before submitting the form.
136
+ * @group Props
137
+ */
138
+ required;
139
+ /**
140
+ * Size of the input field.
141
+ * @group Props
142
+ */
143
+ size;
144
+ /**
145
+ * Target element to attach the overlay, valid values are "body" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]="mydiv" for a div element having #mydiv as variable name).
146
+ * @group Props
147
+ */
148
+ appendTo;
149
+ /**
150
+ * When enabled, highlights the first item in the list by default.
151
+ * @group Props
152
+ */
153
+ autoHighlight;
154
+ /**
155
+ * When present, autocomplete clears the manual input if it does not match of the suggestions to force only accepting values from the suggestions.
156
+ * @group Props
157
+ */
158
+ forceSelection;
159
+ /**
160
+ * Type of the input, defaults to "text".
161
+ * @group Props
162
+ */
163
+ type = 'text';
164
+ /**
165
+ * Whether to automatically manage layering.
166
+ * @group Props
167
+ */
168
+ autoZIndex = true;
169
+ /**
170
+ * Base zIndex value to use in layering.
171
+ * @group Props
172
+ */
173
+ baseZIndex = 0;
174
+ /**
175
+ * Defines a string that labels the input for accessibility.
176
+ * @group Props
177
+ */
178
+ ariaLabel;
179
+ /**
180
+ * Defines a string that labels the dropdown button for accessibility.
181
+ * @group Props
182
+ */
183
+ dropdownAriaLabel;
184
+ /**
185
+ * Specifies one or more IDs in the DOM that labels the input field.
186
+ * @group Props
187
+ */
188
+ ariaLabelledBy;
189
+ /**
190
+ * Icon class of the dropdown icon.
191
+ * @group Props
192
+ */
193
+ dropdownIcon;
194
+ /**
195
+ * Ensures uniqueness of selected items on multiple mode.
196
+ * @group Props
197
+ */
198
+ unique = true;
199
+ /**
200
+ * Whether to display options as grouped when nested options are provided.
201
+ * @group Props
202
+ */
203
+ group;
204
+ /**
205
+ * Whether to run a query when input receives focus.
206
+ * @group Props
207
+ */
208
+ completeOnFocus = false;
209
+ /**
210
+ * When enabled, a clear icon is displayed to clear the value.
211
+ * @group Props
212
+ */
213
+ showClear = false;
214
+ /**
215
+ * Field of a suggested object to resolve and display.
216
+ * @group Props
217
+ * @deprecated use optionLabel property instead
218
+ */
219
+ field;
220
+ /**
221
+ * Displays a button next to the input field when enabled.
222
+ * @group Props
223
+ */
224
+ dropdown;
225
+ /**
226
+ * Whether to show the empty message or not.
227
+ * @group Props
228
+ */
229
+ showEmptyMessage = true;
230
+ /**
231
+ * Specifies the behavior dropdown button. Default "blank" mode sends an empty string and "current" mode sends the input value.
232
+ * @group Props
233
+ */
234
+ dropdownMode = 'blank';
235
+ /**
236
+ * Specifies if multiple values can be selected.
237
+ * @group Props
238
+ */
239
+ multiple;
240
+ /**
241
+ * Index of the element in tabbing order.
242
+ * @group Props
243
+ */
244
+ tabindex;
245
+ /**
246
+ * A property to uniquely identify a value in options.
247
+ * @group Props
248
+ */
249
+ dataKey;
250
+ /**
251
+ * Text to display when there is no data. Defaults to global value in i18n translation configuration.
252
+ * @group Props
253
+ */
254
+ emptyMessage;
255
+ /**
256
+ * Transition options of the show animation.
257
+ * @group Props
258
+ */
259
+ showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
260
+ /**
261
+ * Transition options of the hide animation.
262
+ * @group Props
263
+ */
264
+ hideTransitionOptions = '.1s linear';
265
+ /**
266
+ * When present, it specifies that the component should automatically get focus on load.
267
+ * @group Props
268
+ */
269
+ autofocus;
270
+ /**
271
+ * Used to define a string that autocomplete attribute the current element.
272
+ * @group Props
273
+ */
274
+ autocomplete = 'off';
275
+ /**
276
+ * Name of the options field of an option group.
277
+ * @group Props
278
+ */
279
+ optionGroupChildren = 'items';
280
+ /**
281
+ * Name of the label field of an option group.
282
+ * @group Props
283
+ */
284
+ optionGroupLabel = 'label';
285
+ /**
286
+ * Options for the overlay element.
287
+ * @group Props
288
+ */
289
+ overlayOptions;
290
+ /**
291
+ * An array of suggestions to display.
292
+ * @group Props
293
+ */
294
+ get suggestions() {
295
+ return this._suggestions();
296
+ }
297
+ set suggestions(value) {
298
+ this._suggestions.set(value);
299
+ this.handleSuggestionsChange();
300
+ }
301
+ /**
302
+ * Element dimensions of option for virtual scrolling.
303
+ * @group Props
304
+ * @deprecated use virtualScrollItemSize property instead.
305
+ */
306
+ get itemSize() {
307
+ return this._itemSize;
308
+ }
309
+ set itemSize(val) {
310
+ this._itemSize = val;
311
+ console.warn('The itemSize property is deprecated, use virtualScrollItemSize property instead.');
312
+ }
313
+ /**
314
+ * Property name or getter function to use as the label of an option.
315
+ * @group Props
316
+ */
317
+ optionLabel;
318
+ /**
319
+ * Property name or getter function to use as the value of an option.
320
+ * @group Props
321
+ */
322
+ optionValue;
323
+ /**
324
+ * Unique identifier of the component.
325
+ * @group Props
326
+ */
327
+ id;
328
+ /**
329
+ * Text to display when the search is active. Defaults to global value in i18n translation configuration.
330
+ * @group Props
331
+ * @defaultValue '{0} results are available'
332
+ */
333
+ searchMessage;
334
+ /**
335
+ * Text to display when filtering does not return any results. Defaults to global value in i18n translation configuration.
336
+ * @group Props
337
+ * @defaultValue 'No selected item'
338
+ */
339
+ emptySelectionMessage;
340
+ /**
341
+ * Text to be displayed in hidden accessible field when options are selected. Defaults to global value in i18n translation configuration.
342
+ * @group Props
343
+ * @defaultValue '{0} items selected'
344
+ */
345
+ selectionMessage;
346
+ /**
347
+ * Whether to focus on the first visible or selected element when the overlay panel is shown.
348
+ * @group Props
349
+ */
350
+ autoOptionFocus = false;
351
+ /**
352
+ * When enabled, the focused option is selected.
353
+ * @group Props
354
+ */
355
+ selectOnFocus;
356
+ /**
357
+ * Locale to use in searching. The default locale is the host environment's current locale.
358
+ * @group Props
359
+ */
360
+ searchLocale;
361
+ /**
362
+ * Property name or getter function to use as the disabled flag of an option, defaults to false when not defined.
363
+ * @group Props
364
+ */
365
+ optionDisabled;
366
+ /**
367
+ * When enabled, the hovered option will be focused.
368
+ * @group Props
369
+ */
370
+ focusOnHover;
371
+ /**
372
+ * Specifies the input variant of the component.
373
+ * @group Props
374
+ */
375
+ variant = 'outlined';
376
+ /**
377
+ * Callback to invoke to search for suggestions.
378
+ * @param {AutoCompleteCompleteEvent} event - Custom complete event.
379
+ * @group Emits
380
+ */
381
+ completeMethod = new EventEmitter();
382
+ /**
383
+ * Callback to invoke when a suggestion is selected.
384
+ * @param {AutoCompleteSelectEvent} event - custom select event.
385
+ * @group Emits
386
+ */
387
+ onSelect = new EventEmitter();
388
+ /**
389
+ * Callback to invoke when a selected value is removed.
390
+ * @param {AutoCompleteUnselectEvent} event - custom unselect event.
391
+ * @group Emits
392
+ */
393
+ onUnselect = new EventEmitter();
394
+ /**
395
+ * Callback to invoke when the component receives focus.
396
+ * @param {Event} event - Browser event.
397
+ * @group Emits
398
+ */
399
+ onFocus = new EventEmitter();
400
+ /**
401
+ * Callback to invoke when the component loses focus.
402
+ * @param {Event} event - Browser event.
403
+ * @group Emits
404
+ */
405
+ onBlur = new EventEmitter();
406
+ /**
407
+ * Callback to invoke to when dropdown button is clicked.
408
+ * @param {AutoCompleteDropdownClickEvent} event - custom dropdown click event.
409
+ * @group Emits
410
+ */
411
+ onDropdownClick = new EventEmitter();
412
+ /**
413
+ * Callback to invoke when clear button is clicked.
414
+ * @param {Event} event - Browser event.
415
+ * @group Emits
416
+ */
417
+ onClear = new EventEmitter();
418
+ /**
419
+ * Callback to invoke on input key up.
420
+ * @param {KeyboardEvent} event - Keyboard event.
421
+ * @group Emits
422
+ */
423
+ onKeyUp = new EventEmitter();
424
+ /**
425
+ * Callback to invoke on overlay is shown.
426
+ * @param {Event} event - Browser event.
427
+ * @group Emits
428
+ */
429
+ onShow = new EventEmitter();
430
+ /**
431
+ * Callback to invoke on overlay is hidden.
432
+ * @param {Event} event - Browser event.
433
+ * @group Emits
434
+ */
435
+ onHide = new EventEmitter();
436
+ /**
437
+ * Callback to invoke on lazy load data.
438
+ * @param {AutoCompleteLazyLoadEvent} event - Lazy load event.
439
+ * @group Emits
440
+ */
441
+ onLazyLoad = new EventEmitter();
442
+ containerEL;
443
+ inputEL;
444
+ multiInputEl;
445
+ multiContainerEL;
446
+ dropdownButton;
447
+ itemsViewChild;
448
+ scroller;
449
+ overlayViewChild;
450
+ templates;
451
+ _itemSize;
452
+ itemsWrapper;
453
+ itemTemplate;
454
+ emptyTemplate;
455
+ headerTemplate;
456
+ footerTemplate;
457
+ selectedItemTemplate;
458
+ groupTemplate;
459
+ loaderTemplate;
460
+ removeIconTemplate;
461
+ loadingIconTemplate;
462
+ clearIconTemplate;
463
+ dropdownIconTemplate;
464
+ value;
465
+ _suggestions = signal(null);
466
+ onModelChange = () => { };
467
+ onModelTouched = () => { };
468
+ timeout;
469
+ overlayVisible;
470
+ suggestionsUpdated;
471
+ highlightOption;
472
+ highlightOptionChanged;
473
+ focused = false;
474
+ _filled;
475
+ get filled() {
476
+ return this._filled;
477
+ }
478
+ set filled(value) {
479
+ this._filled = value;
480
+ }
481
+ loading;
482
+ scrollHandler;
483
+ listId;
484
+ searchTimeout;
485
+ dirty = false;
486
+ modelValue = signal(null);
487
+ focusedMultipleOptionIndex = signal(-1);
488
+ focusedOptionIndex = signal(-1);
489
+ visibleOptions = computed(() => {
490
+ return this.group ? this.flatOptions(this._suggestions()) : this._suggestions() || [];
491
+ });
492
+ inputValue = computed(() => {
493
+ const modelValue = this.modelValue();
494
+ const selectedOption = this.getSelectedOption(modelValue);
495
+ if (modelValue) {
496
+ if (typeof modelValue === 'object' || this.optionValue) {
497
+ const label = this.getOptionLabel(selectedOption);
498
+ return label != null ? label : modelValue;
499
+ }
500
+ else {
501
+ return modelValue;
502
+ }
503
+ }
504
+ else {
505
+ return '';
506
+ }
507
+ });
508
+ get focusedMultipleOptionId() {
509
+ return this.focusedMultipleOptionIndex() !== -1 ? `${this.id}_multiple_option_${this.focusedMultipleOptionIndex()}` : null;
510
+ }
511
+ get focusedOptionId() {
512
+ return this.focusedOptionIndex() !== -1 ? `${this.id}_${this.focusedOptionIndex()}` : null;
513
+ }
514
+ get containerClass() {
515
+ return {
516
+ 'p-autocomplete p-component p-inputwrapper': true,
517
+ 'p-disabled': this.disabled,
518
+ 'p-focus': this.focused,
519
+ 'p-autocomplete-dd': this.dropdown,
520
+ 'p-autocomplete-multiple': this.multiple,
521
+ 'p-inputwrapper-focus': this.focused,
522
+ 'p-overlay-open': this.overlayVisible
523
+ };
524
+ }
525
+ get multiContainerClass() {
526
+ return { 'p-autocomplete-multiple-container p-component p-inputtext': true, 'p-variant-filled': this.variant === 'filled' || this.config.inputStyle() === 'filled' };
527
+ }
528
+ get panelClass() {
529
+ return {
530
+ 'p-autocomplete-panel p-component': true,
531
+ 'p-input-filled': this.config.inputStyle() === 'filled',
532
+ 'p-ripple-disabled': this.config.ripple === false
533
+ };
534
+ }
535
+ get panelStyles() {
536
+ return {
537
+ 'max-height': this.virtualScroll ? 'auto' : this.scrollHeight,
538
+ ...this.panelStyle
539
+ };
540
+ }
541
+ get inputClass() {
542
+ return {
543
+ 'p-autocomplete-input p-inputtext p-component': !this.multiple,
544
+ 'p-autocomplete-dd-input': this.dropdown,
545
+ 'p-variant-filled': this.variant === 'filled' || this.config.inputStyle() === 'filled'
546
+ };
547
+ }
548
+ get searchResultMessageText() {
549
+ return ObjectUtils.isNotEmpty(this.visibleOptions()) && this.overlayVisible ? this.searchMessageText.replaceAll('{0}', this.visibleOptions().length) : this.emptySearchMessageText;
550
+ }
551
+ get searchMessageText() {
552
+ return this.searchMessage || this.config.translation.searchMessage || '';
553
+ }
554
+ get emptySearchMessageText() {
555
+ return this.emptyMessage || this.config.translation.emptySearchMessage || '';
556
+ }
557
+ get selectionMessageText() {
558
+ return this.selectionMessage || this.config.translation.selectionMessage || '';
559
+ }
560
+ get emptySelectionMessageText() {
561
+ return this.emptySelectionMessage || this.config.translation.emptySelectionMessage || '';
562
+ }
563
+ get selectedMessageText() {
564
+ return this.hasSelectedOption() ? this.selectionMessageText.replaceAll('{0}', this.multiple ? this.modelValue().length : '1') : this.emptySelectionMessageText;
565
+ }
566
+ get ariaSetSize() {
567
+ return this.visibleOptions().filter((option) => !this.isOptionGroup(option)).length;
568
+ }
569
+ get listLabel() {
570
+ return this.config.getTranslation(TranslationKeys.ARIA)['listLabel'];
571
+ }
572
+ get virtualScrollerDisabled() {
573
+ return !this.virtualScroll;
574
+ }
575
+ get optionValueSelected() {
576
+ return typeof this.modelValue() === 'string' && this.optionValue;
577
+ }
578
+ get isVisibleClearIcon() {
579
+ return this.modelValue() != null && this.hasSelectedOption() && this.showClear && !this.disabled && !this.loading;
580
+ }
581
+ constructor(document, el, renderer, cd, config, overlayService, zone) {
582
+ this.document = document;
583
+ this.el = el;
584
+ this.renderer = renderer;
585
+ this.cd = cd;
586
+ this.config = config;
587
+ this.overlayService = overlayService;
588
+ this.zone = zone;
589
+ effect(() => {
590
+ this.filled = ObjectUtils.isNotEmpty(this.modelValue());
591
+ });
592
+ }
593
+ ngOnInit() {
594
+ this.id = this.id || UniqueComponentId();
595
+ this.cd.detectChanges();
596
+ }
597
+ ngAfterViewChecked() {
598
+ //Use timeouts as since Angular 4.2, AfterViewChecked is broken and not called after panel is updated
599
+ if (this.suggestionsUpdated && this.overlayViewChild) {
600
+ this.zone.runOutsideAngular(() => {
601
+ setTimeout(() => {
602
+ if (this.overlayViewChild) {
603
+ this.overlayViewChild.alignOverlay();
604
+ }
605
+ }, 1);
606
+ this.suggestionsUpdated = false;
607
+ });
608
+ }
609
+ }
610
+ ngAfterContentInit() {
611
+ this.templates.forEach((item) => {
612
+ switch (item.getType()) {
613
+ case 'item':
614
+ this.itemTemplate = item.template;
615
+ break;
616
+ case 'group':
617
+ this.groupTemplate = item.template;
618
+ break;
619
+ case 'selectedItem':
620
+ this.selectedItemTemplate = item.template;
621
+ break;
622
+ case 'header':
623
+ this.headerTemplate = item.template;
624
+ break;
625
+ case 'empty':
626
+ this.emptyTemplate = item.template;
627
+ break;
628
+ case 'footer':
629
+ this.footerTemplate = item.template;
630
+ break;
631
+ case 'loader':
632
+ this.loaderTemplate = item.template;
633
+ break;
634
+ case 'removetokenicon':
635
+ this.removeIconTemplate = item.template;
636
+ break;
637
+ case 'loadingicon':
638
+ this.loadingIconTemplate = item.template;
639
+ break;
640
+ case 'clearicon':
641
+ this.clearIconTemplate = item.template;
642
+ break;
643
+ case 'dropdownicon':
644
+ this.dropdownIconTemplate = item.template;
645
+ break;
646
+ default:
647
+ this.itemTemplate = item.template;
648
+ break;
649
+ }
650
+ });
651
+ }
652
+ handleSuggestionsChange() {
653
+ if (this.loading) {
654
+ this._suggestions().length > 0 || this.showEmptyMessage ? this.show() : !!this.emptyTemplate ? this.show() : this.hide();
655
+ const focusedOptionIndex = this.overlayVisible && this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;
656
+ this.focusedOptionIndex.set(focusedOptionIndex);
657
+ this.suggestionsUpdated = true;
658
+ this.loading = false;
659
+ this.cd.markForCheck();
660
+ }
661
+ }
662
+ flatOptions(options) {
663
+ return (options || []).reduce((result, option, index) => {
664
+ result.push({ optionGroup: option, group: true, index });
665
+ const optionGroupChildren = this.getOptionGroupChildren(option);
666
+ optionGroupChildren && optionGroupChildren.forEach((o) => result.push(o));
667
+ return result;
668
+ }, []);
669
+ }
670
+ isOptionGroup(option) {
671
+ return this.optionGroupLabel && option.optionGroup && option.group;
672
+ }
673
+ findFirstOptionIndex() {
674
+ return this.visibleOptions().findIndex((option) => this.isValidOption(option));
675
+ }
676
+ findLastOptionIndex() {
677
+ return ObjectUtils.findLastIndex(this.visibleOptions(), (option) => this.isValidOption(option));
678
+ }
679
+ findFirstFocusedOptionIndex() {
680
+ const selectedIndex = this.findSelectedOptionIndex();
681
+ return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;
682
+ }
683
+ findLastFocusedOptionIndex() {
684
+ const selectedIndex = this.findSelectedOptionIndex();
685
+ return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;
686
+ }
687
+ findSelectedOptionIndex() {
688
+ return this.hasSelectedOption() ? this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option)) : -1;
689
+ }
690
+ findNextOptionIndex(index) {
691
+ const matchedOptionIndex = index < this.visibleOptions().length - 1
692
+ ? this.visibleOptions()
693
+ .slice(index + 1)
694
+ .findIndex((option) => this.isValidOption(option))
695
+ : -1;
696
+ return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
697
+ }
698
+ findPrevOptionIndex(index) {
699
+ const matchedOptionIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidOption(option)) : -1;
700
+ return matchedOptionIndex > -1 ? matchedOptionIndex : index;
701
+ }
702
+ isValidSelectedOption(option) {
703
+ return this.isValidOption(option) && this.isSelected(option);
704
+ }
705
+ isValidOption(option) {
706
+ return option && !(this.isOptionDisabled(option) || this.isOptionGroup(option));
707
+ }
708
+ isOptionDisabled(option) {
709
+ return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : false;
710
+ }
711
+ isSelected(option) {
712
+ if (this.multiple) {
713
+ return this.unique ? this.modelValue()?.find((model) => ObjectUtils.equals(model, this.getOptionValue(option), this.equalityKey())) : false;
714
+ }
715
+ return ObjectUtils.equals(this.modelValue(), this.getOptionValue(option), this.equalityKey());
716
+ }
717
+ isOptionMatched(option, value) {
718
+ return this.isValidOption(option) && this.getOptionLabel(option).toLocaleLowerCase(this.searchLocale) === value.toLocaleLowerCase(this.searchLocale);
719
+ }
720
+ isInputClicked(event) {
721
+ return event.target === this.inputEL.nativeElement;
722
+ }
723
+ isDropdownClicked(event) {
724
+ return this.dropdownButton?.nativeElement ? event.target === this.dropdownButton.nativeElement || this.dropdownButton.nativeElement.contains(event.target) : false;
725
+ }
726
+ equalityKey() {
727
+ return this.dataKey; // TODO: The 'optionValue' properties can be added.
728
+ }
729
+ onContainerClick(event) {
730
+ if (this.disabled || this.loading || this.isInputClicked(event) || this.isDropdownClicked(event)) {
731
+ return;
732
+ }
733
+ if (!this.overlayViewChild || !this.overlayViewChild.overlayViewChild?.nativeElement.contains(event.target)) {
734
+ DomHandler.focus(this.inputEL.nativeElement);
735
+ }
736
+ }
737
+ handleDropdownClick(event) {
738
+ let query = undefined;
739
+ if (this.overlayVisible) {
740
+ this.hide(true);
741
+ }
742
+ else {
743
+ DomHandler.focus(this.inputEL.nativeElement);
744
+ query = this.inputEL.nativeElement.value;
745
+ if (this.dropdownMode === 'blank')
746
+ this.search(event, '', 'dropdown');
747
+ else if (this.dropdownMode === 'current')
748
+ this.search(event, query, 'dropdown');
749
+ }
750
+ this.onDropdownClick.emit({ originalEvent: event, query });
751
+ }
752
+ onInput(event) {
753
+ if (this.searchTimeout) {
754
+ clearTimeout(this.searchTimeout);
755
+ }
756
+ let query = event.target.value;
757
+ if (this.maxlength !== null) {
758
+ query = query.split('').slice(0, this.maxlength).join('');
759
+ }
760
+ if (!this.multiple && !this.forceSelection) {
761
+ this.updateModel(query);
762
+ }
763
+ if (query.length === 0 && !this.multiple && !this.completeOnFocus) {
764
+ this.onClear.emit();
765
+ this.hide();
766
+ }
767
+ else {
768
+ if (query.length >= this.minLength) {
769
+ this.focusedOptionIndex.set(-1);
770
+ this.searchTimeout = setTimeout(() => {
771
+ this.search(event, query, 'input');
772
+ }, this.delay);
773
+ }
774
+ else {
775
+ this.hide();
776
+ }
777
+ }
778
+ }
779
+ onInputChange(event) {
780
+ if (this.forceSelection) {
781
+ let valid = false;
782
+ if (this.visibleOptions()) {
783
+ const matchedValue = this.visibleOptions().find((option) => this.isOptionMatched(option, this.inputEL.nativeElement.value || ''));
784
+ if (matchedValue !== undefined) {
785
+ valid = true;
786
+ !this.isSelected(matchedValue) && this.onOptionSelect(event, matchedValue);
787
+ }
788
+ }
789
+ if (!valid) {
790
+ this.inputEL.nativeElement.value = '';
791
+ !this.multiple && this.updateModel(null);
792
+ }
793
+ }
794
+ }
795
+ onInputFocus(event) {
796
+ if (this.disabled) {
797
+ // For ScreenReaders
798
+ return;
799
+ }
800
+ if (!this.dirty && this.completeOnFocus) {
801
+ this.search(event, event.target.value, 'focus');
802
+ this.show();
803
+ }
804
+ this.dirty = true;
805
+ this.focused = true;
806
+ const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.overlayVisible && this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;
807
+ this.focusedOptionIndex.set(focusedOptionIndex);
808
+ this.overlayVisible && this.scrollInView(this.focusedOptionIndex());
809
+ this.onFocus.emit(event);
810
+ }
811
+ onMultipleContainerFocus(event) {
812
+ if (this.disabled) {
813
+ // For ScreenReaders
814
+ return;
815
+ }
816
+ this.focused = true;
817
+ }
818
+ onMultipleContainerBlur(event) {
819
+ this.focusedMultipleOptionIndex.set(-1);
820
+ this.focused = false;
821
+ }
822
+ onMultipleContainerKeyDown(event) {
823
+ if (this.disabled) {
824
+ event.preventDefault();
825
+ return;
826
+ }
827
+ switch (event.code) {
828
+ case 'ArrowLeft':
829
+ this.onArrowLeftKeyOnMultiple(event);
830
+ break;
831
+ case 'ArrowRight':
832
+ this.onArrowRightKeyOnMultiple(event);
833
+ break;
834
+ case 'Backspace':
835
+ this.onBackspaceKeyOnMultiple(event);
836
+ break;
837
+ default:
838
+ break;
839
+ }
840
+ }
841
+ onInputBlur(event) {
842
+ this.dirty = false;
843
+ this.focused = false;
844
+ this.focusedOptionIndex.set(-1);
845
+ this.onModelTouched();
846
+ this.onBlur.emit(event);
847
+ }
848
+ onInputPaste(event) {
849
+ this.onKeyDown(event);
850
+ }
851
+ onInputKeyUp(event) {
852
+ this.onKeyUp.emit(event);
853
+ }
854
+ onKeyDown(event) {
855
+ if (this.disabled) {
856
+ event.preventDefault();
857
+ return;
858
+ }
859
+ switch (event.code) {
860
+ case 'ArrowDown':
861
+ this.onArrowDownKey(event);
862
+ break;
863
+ case 'ArrowUp':
864
+ this.onArrowUpKey(event);
865
+ break;
866
+ case 'ArrowLeft':
867
+ this.onArrowLeftKey(event);
868
+ break;
869
+ case 'ArrowRight':
870
+ this.onArrowRightKey(event);
871
+ break;
872
+ case 'Home':
873
+ this.onHomeKey(event);
874
+ break;
875
+ case 'End':
876
+ this.onEndKey(event);
877
+ break;
878
+ case 'PageDown':
879
+ this.onPageDownKey(event);
880
+ break;
881
+ case 'PageUp':
882
+ this.onPageUpKey(event);
883
+ break;
884
+ case 'Enter':
885
+ case 'NumpadEnter':
886
+ this.onEnterKey(event);
887
+ break;
888
+ case 'Escape':
889
+ this.onEscapeKey(event);
890
+ break;
891
+ case 'Tab':
892
+ this.onTabKey(event);
893
+ break;
894
+ case 'Backspace':
895
+ this.onBackspaceKey(event);
896
+ break;
897
+ case 'ShiftLeft':
898
+ case 'ShiftRight':
899
+ //NOOP
900
+ break;
901
+ default:
902
+ break;
903
+ }
904
+ }
905
+ onArrowDownKey(event) {
906
+ if (!this.overlayVisible) {
907
+ return;
908
+ }
909
+ const optionIndex = this.focusedOptionIndex() !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex()) : this.findFirstFocusedOptionIndex();
910
+ this.changeFocusedOptionIndex(event, optionIndex);
911
+ event.preventDefault();
912
+ event.stopPropagation();
913
+ }
914
+ onArrowUpKey(event) {
915
+ if (!this.overlayVisible) {
916
+ return;
917
+ }
918
+ if (event.altKey) {
919
+ if (this.focusedOptionIndex() !== -1) {
920
+ this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);
921
+ }
922
+ this.overlayVisible && this.hide();
923
+ event.preventDefault();
924
+ }
925
+ else {
926
+ const optionIndex = this.focusedOptionIndex() !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex()) : this.findLastFocusedOptionIndex();
927
+ this.changeFocusedOptionIndex(event, optionIndex);
928
+ event.preventDefault();
929
+ event.stopPropagation();
930
+ }
931
+ }
932
+ onArrowLeftKey(event) {
933
+ const target = event.currentTarget;
934
+ this.focusedOptionIndex.set(-1);
935
+ if (this.multiple) {
936
+ if (ObjectUtils.isEmpty(target.value) && this.hasSelectedOption()) {
937
+ DomHandler.focus(this.multiContainerEL.nativeElement);
938
+ this.focusedMultipleOptionIndex.set(this.modelValue().length);
939
+ }
940
+ else {
941
+ event.stopPropagation(); // To prevent onArrowLeftKeyOnMultiple method
942
+ }
943
+ }
944
+ }
945
+ onArrowRightKey(event) {
946
+ this.focusedOptionIndex.set(-1);
947
+ this.multiple && event.stopPropagation(); // To prevent onArrowRightKeyOnMultiple method
948
+ }
949
+ onHomeKey(event) {
950
+ const { currentTarget } = event;
951
+ const len = currentTarget.value.length;
952
+ currentTarget.setSelectionRange(0, event.shiftKey ? len : 0);
953
+ this.focusedOptionIndex.set(-1);
954
+ event.preventDefault();
955
+ }
956
+ onEndKey(event) {
957
+ const { currentTarget } = event;
958
+ const len = currentTarget.value.length;
959
+ currentTarget.setSelectionRange(event.shiftKey ? 0 : len, len);
960
+ this.focusedOptionIndex.set(-1);
961
+ event.preventDefault();
962
+ }
963
+ onPageDownKey(event) {
964
+ this.scrollInView(this.visibleOptions().length - 1);
965
+ event.preventDefault();
966
+ }
967
+ onPageUpKey(event) {
968
+ this.scrollInView(0);
969
+ event.preventDefault();
970
+ }
971
+ onEnterKey(event) {
972
+ if (!this.overlayVisible) {
973
+ this.onArrowDownKey(event);
974
+ }
975
+ else {
976
+ if (this.focusedOptionIndex() !== -1) {
977
+ this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);
978
+ event.preventDefault();
979
+ }
980
+ this.hide();
981
+ }
982
+ }
983
+ onEscapeKey(event) {
984
+ this.overlayVisible && this.hide(true);
985
+ event.preventDefault();
986
+ }
987
+ onTabKey(event) {
988
+ if (this.focusedOptionIndex() !== -1) {
989
+ this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);
990
+ }
991
+ this.overlayVisible && this.hide();
992
+ }
993
+ onBackspaceKey(event) {
994
+ if (this.multiple) {
995
+ if (ObjectUtils.isNotEmpty(this.modelValue()) && !this.inputEL.nativeElement.value) {
996
+ const removedValue = this.modelValue()[this.modelValue().length - 1];
997
+ const newValue = this.modelValue().slice(0, -1);
998
+ this.updateModel(newValue);
999
+ this.onUnselect.emit({ originalEvent: event, value: removedValue });
1000
+ }
1001
+ event.stopPropagation(); // To prevent onBackspaceKeyOnMultiple method
1002
+ }
1003
+ if (!this.multiple && this.showClear && this.findSelectedOptionIndex() != -1) {
1004
+ this.clear();
1005
+ }
1006
+ }
1007
+ onArrowLeftKeyOnMultiple(event) {
1008
+ const optionIndex = this.focusedMultipleOptionIndex() < 1 ? 0 : this.focusedMultipleOptionIndex() - 1;
1009
+ this.focusedMultipleOptionIndex.set(optionIndex);
1010
+ }
1011
+ onArrowRightKeyOnMultiple(event) {
1012
+ let optionIndex = this.focusedMultipleOptionIndex();
1013
+ optionIndex++;
1014
+ this.focusedMultipleOptionIndex.set(optionIndex);
1015
+ if (optionIndex > this.modelValue().length - 1) {
1016
+ this.focusedMultipleOptionIndex.set(-1);
1017
+ DomHandler.focus(this.inputEL.nativeElement);
1018
+ }
1019
+ }
1020
+ onBackspaceKeyOnMultiple(event) {
1021
+ if (this.focusedMultipleOptionIndex() !== -1) {
1022
+ this.removeOption(event, this.focusedMultipleOptionIndex());
1023
+ }
1024
+ }
1025
+ onOptionSelect(event, option, isHide = true) {
1026
+ const value = this.getOptionValue(option);
1027
+ if (this.multiple) {
1028
+ this.inputEL.nativeElement.value = '';
1029
+ if (!this.isSelected(option)) {
1030
+ this.updateModel([...(this.modelValue() || []), value]);
1031
+ }
1032
+ }
1033
+ else {
1034
+ this.updateModel(value);
1035
+ }
1036
+ this.onSelect.emit({ originalEvent: event, value: option });
1037
+ isHide && this.hide(true);
1038
+ }
1039
+ onOptionMouseEnter(event, index) {
1040
+ if (this.focusOnHover) {
1041
+ this.changeFocusedOptionIndex(event, index);
1042
+ }
1043
+ }
1044
+ search(event, query, source) {
1045
+ //allow empty string but not undefined or null
1046
+ if (query === undefined || query === null) {
1047
+ return;
1048
+ }
1049
+ //do not search on input change if minLength is not met
1050
+ if (source === 'input' && query.trim().length < this.minLength) {
1051
+ return;
1052
+ }
1053
+ this.loading = true;
1054
+ this.completeMethod.emit({ originalEvent: event, query });
1055
+ }
1056
+ removeOption(event, index) {
1057
+ event.stopPropagation();
1058
+ const removedOption = this.modelValue()[index];
1059
+ const value = this.modelValue()
1060
+ .filter((_, i) => i !== index)
1061
+ .map((option) => this.getOptionValue(option));
1062
+ this.updateModel(value);
1063
+ this.onUnselect.emit({ originalEvent: event, value: removedOption });
1064
+ DomHandler.focus(this.inputEL.nativeElement);
1065
+ }
1066
+ updateModel(value) {
1067
+ this.value = value;
1068
+ this.modelValue.set(value);
1069
+ this.onModelChange(value);
1070
+ this.updateInputValue();
1071
+ this.cd.markForCheck();
1072
+ }
1073
+ updateInputValue() {
1074
+ if (this.inputEL && this.inputEL.nativeElement) {
1075
+ if (!this.multiple) {
1076
+ this.inputEL.nativeElement.value = this.inputValue();
1077
+ }
1078
+ else {
1079
+ this.inputEL.nativeElement.value = '';
1080
+ }
1081
+ }
1082
+ }
1083
+ autoUpdateModel() {
1084
+ if ((this.selectOnFocus || this.autoHighlight) && this.autoOptionFocus && !this.hasSelectedOption()) {
1085
+ const focusedOptionIndex = this.findFirstFocusedOptionIndex();
1086
+ this.focusedOptionIndex.set(focusedOptionIndex);
1087
+ this.onOptionSelect(null, this.visibleOptions()[this.focusedOptionIndex()], false);
1088
+ }
1089
+ }
1090
+ scrollInView(index = -1) {
1091
+ const id = index !== -1 ? `${this.id}_${index}` : this.focusedOptionId;
1092
+ if (this.itemsViewChild && this.itemsViewChild.nativeElement) {
1093
+ const element = DomHandler.findSingle(this.itemsViewChild.nativeElement, `li[id="${id}"]`);
1094
+ if (element) {
1095
+ element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });
1096
+ }
1097
+ else if (!this.virtualScrollerDisabled) {
1098
+ setTimeout(() => {
1099
+ this.virtualScroll && this.scroller?.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex());
1100
+ }, 0);
1101
+ }
1102
+ }
1103
+ }
1104
+ changeFocusedOptionIndex(event, index) {
1105
+ if (this.focusedOptionIndex() !== index) {
1106
+ this.focusedOptionIndex.set(index);
1107
+ this.scrollInView();
1108
+ if (this.selectOnFocus) {
1109
+ this.onOptionSelect(event, this.visibleOptions()[index], false);
1110
+ }
1111
+ }
1112
+ }
1113
+ show(isFocus = false) {
1114
+ this.dirty = true;
1115
+ this.overlayVisible = true;
1116
+ const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;
1117
+ this.focusedOptionIndex.set(focusedOptionIndex);
1118
+ isFocus && DomHandler.focus(this.inputEL.nativeElement);
1119
+ if (isFocus) {
1120
+ DomHandler.focus(this.inputEL.nativeElement);
1121
+ }
1122
+ this.onShow.emit();
1123
+ this.cd.markForCheck();
1124
+ }
1125
+ hide(isFocus = false) {
1126
+ const _hide = () => {
1127
+ this.dirty = isFocus;
1128
+ this.overlayVisible = false;
1129
+ this.focusedOptionIndex.set(-1);
1130
+ isFocus && DomHandler.focus(this.inputEL.nativeElement);
1131
+ this.onHide.emit();
1132
+ this.cd.markForCheck();
1133
+ };
1134
+ // Added to adjust the scroller's content position when the dropdown closes.
1135
+ if (this.virtualScroll) {
1136
+ this.scroller.onScrollChange(event);
1137
+ }
1138
+ setTimeout(() => {
1139
+ _hide();
1140
+ }, 0); // For ScreenReaders
1141
+ }
1142
+ clear() {
1143
+ this.updateModel(null);
1144
+ this.inputEL.nativeElement.value = '';
1145
+ this.onClear.emit();
1146
+ }
1147
+ writeValue(value) {
1148
+ this.value = value;
1149
+ this.modelValue.set(value);
1150
+ this.updateInputValue();
1151
+ this.cd.markForCheck();
1152
+ }
1153
+ hasSelectedOption() {
1154
+ return ObjectUtils.isNotEmpty(this.modelValue());
1155
+ }
1156
+ getAriaPosInset(index) {
1157
+ return ((this.optionGroupLabel
1158
+ ? index -
1159
+ this.visibleOptions()
1160
+ .slice(0, index)
1161
+ .filter((option) => this.isOptionGroup(option)).length
1162
+ : index) + 1);
1163
+ }
1164
+ getOptionLabel(option) {
1165
+ return this.field || this.optionLabel ? ObjectUtils.resolveFieldData(option, this.field || this.optionLabel) : option && option.label != undefined ? option.label : option;
1166
+ }
1167
+ getOptionValue(option) {
1168
+ return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : option;
1169
+ }
1170
+ getOptionIndex(index, scrollerOptions) {
1171
+ return this.virtualScrollerDisabled ? index : scrollerOptions && scrollerOptions.getItemOptions(index)['index'];
1172
+ }
1173
+ getOptionGroupLabel(optionGroup) {
1174
+ return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : optionGroup && optionGroup.label != undefined ? optionGroup.label : optionGroup;
1175
+ }
1176
+ getOptionGroupChildren(optionGroup) {
1177
+ return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
1178
+ }
1179
+ getSelectedOption(modelValue) {
1180
+ if (!this.optionValue) {
1181
+ return modelValue;
1182
+ }
1183
+ return (this.suggestions || []).find((item) => ObjectUtils.resolveFieldData(item, this.optionValue) === modelValue);
1184
+ }
1185
+ getMultipleLabel(option) {
1186
+ let selected = this.getSelectedOption(option);
1187
+ return this.getOptionLabel(selected);
1188
+ }
1189
+ registerOnChange(fn) {
1190
+ this.onModelChange = fn;
1191
+ }
1192
+ registerOnTouched(fn) {
1193
+ this.onModelTouched = fn;
1194
+ }
1195
+ setDisabledState(val) {
1196
+ this.disabled = val;
1197
+ this.cd.markForCheck();
1198
+ }
1199
+ onOverlayAnimationStart(event) {
1200
+ if (event.toState === 'visible') {
1201
+ this.itemsWrapper = DomHandler.findSingle(this.overlayViewChild.overlayViewChild?.nativeElement, this.virtualScroll ? '.p-scroller' : '.p-autocomplete-panel');
1202
+ if (this.virtualScroll) {
1203
+ this.scroller?.setContentEl(this.itemsViewChild?.nativeElement);
1204
+ this.scroller.viewInit();
1205
+ }
1206
+ if (this.visibleOptions() && this.visibleOptions().length) {
1207
+ if (this.virtualScroll) {
1208
+ const selectedIndex = this.modelValue() ? this.focusedOptionIndex() : -1;
1209
+ if (selectedIndex !== -1) {
1210
+ this.scroller?.scrollToIndex(selectedIndex);
1211
+ }
1212
+ }
1213
+ else {
1214
+ let selectedListItem = DomHandler.findSingle(this.itemsWrapper, '.p-autocomplete-item.p-highlight');
1215
+ if (selectedListItem) {
1216
+ selectedListItem.scrollIntoView({ block: 'nearest', inline: 'center' });
1217
+ }
1218
+ }
1219
+ }
1220
+ }
1221
+ }
1222
+ ngOnDestroy() {
1223
+ if (this.scrollHandler) {
1224
+ this.scrollHandler.destroy();
1225
+ this.scrollHandler = null;
1226
+ }
1227
+ }
1228
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AutoComplete, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.caxConfig }, { token: i1.OverlayService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1229
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: AutoComplete, selector: "p-autoComplete", inputs: { minLength: ["minLength", "minLength", numberAttribute], delay: ["delay", "delay", numberAttribute], style: "style", panelStyle: "panelStyle", styleClass: "styleClass", panelStyleClass: "panelStyleClass", inputStyle: "inputStyle", inputId: "inputId", inputStyleClass: "inputStyleClass", placeholder: "placeholder", readonly: ["readonly", "readonly", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], scrollHeight: "scrollHeight", lazy: ["lazy", "lazy", booleanAttribute], virtualScroll: ["virtualScroll", "virtualScroll", booleanAttribute], virtualScrollItemSize: ["virtualScrollItemSize", "virtualScrollItemSize", numberAttribute], virtualScrollOptions: "virtualScrollOptions", maxlength: ["maxlength", "maxlength", (value) => numberAttribute(value, null)], name: "name", required: ["required", "required", booleanAttribute], size: ["size", "size", numberAttribute], appendTo: "appendTo", autoHighlight: ["autoHighlight", "autoHighlight", booleanAttribute], forceSelection: ["forceSelection", "forceSelection", booleanAttribute], type: "type", autoZIndex: ["autoZIndex", "autoZIndex", booleanAttribute], baseZIndex: ["baseZIndex", "baseZIndex", numberAttribute], ariaLabel: "ariaLabel", dropdownAriaLabel: "dropdownAriaLabel", ariaLabelledBy: "ariaLabelledBy", dropdownIcon: "dropdownIcon", unique: ["unique", "unique", booleanAttribute], group: ["group", "group", booleanAttribute], completeOnFocus: ["completeOnFocus", "completeOnFocus", booleanAttribute], showClear: ["showClear", "showClear", booleanAttribute], field: "field", dropdown: ["dropdown", "dropdown", booleanAttribute], showEmptyMessage: ["showEmptyMessage", "showEmptyMessage", booleanAttribute], dropdownMode: "dropdownMode", multiple: ["multiple", "multiple", booleanAttribute], tabindex: ["tabindex", "tabindex", numberAttribute], dataKey: "dataKey", emptyMessage: "emptyMessage", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", autofocus: ["autofocus", "autofocus", booleanAttribute], autocomplete: "autocomplete", optionGroupChildren: "optionGroupChildren", optionGroupLabel: "optionGroupLabel", overlayOptions: "overlayOptions", suggestions: "suggestions", itemSize: "itemSize", optionLabel: "optionLabel", optionValue: "optionValue", id: "id", searchMessage: "searchMessage", emptySelectionMessage: "emptySelectionMessage", selectionMessage: "selectionMessage", autoOptionFocus: ["autoOptionFocus", "autoOptionFocus", booleanAttribute], selectOnFocus: ["selectOnFocus", "selectOnFocus", booleanAttribute], searchLocale: ["searchLocale", "searchLocale", booleanAttribute], optionDisabled: "optionDisabled", focusOnHover: ["focusOnHover", "focusOnHover", booleanAttribute], variant: "variant" }, outputs: { completeMethod: "completeMethod", onSelect: "onSelect", onUnselect: "onUnselect", onFocus: "onFocus", onBlur: "onBlur", onDropdownClick: "onDropdownClick", onClear: "onClear", onKeyUp: "onKeyUp", onShow: "onShow", onHide: "onHide", onLazyLoad: "onLazyLoad" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "((focused && !disabled) || autofocus) || overlayVisible", "class.p-autocomplete-clearable": "showClear && !disabled" }, classAttribute: "cax-element p-inputwrapper" }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: CaxTemplate }], viewQueries: [{ propertyName: "containerEL", first: true, predicate: ["container"], descendants: true }, { propertyName: "inputEL", first: true, predicate: ["focusInput"], descendants: true }, { propertyName: "multiInputEl", first: true, predicate: ["multiIn"], descendants: true }, { propertyName: "multiContainerEL", first: true, predicate: ["multiContainer"], descendants: true }, { propertyName: "dropdownButton", first: true, predicate: ["ddBtn"], descendants: true }, { propertyName: "itemsViewChild", first: true, predicate: ["items"], descendants: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true }, { propertyName: "overlayViewChild", first: true, predicate: ["overlay"], descendants: true }], ngImport: i0, template: `
1230
+ <div #container [ngClass]="containerClass" [ngStyle]="style" [class]="styleClass" (click)="onContainerClick($event)">
1231
+ <input
1232
+ *ngIf="!multiple"
1233
+ #focusInput
1234
+ pAutoFocus
1235
+ [autofocus]="autofocus"
1236
+ [ngClass]="inputClass"
1237
+ [ngStyle]="inputStyle"
1238
+ [class]="inputStyleClass"
1239
+ [type]="type"
1240
+ [attr.value]="inputValue()"
1241
+ [attr.id]="inputId"
1242
+ [autocomplete]="autocomplete"
1243
+ [required]="required"
1244
+ [name]="name"
1245
+ aria-autocomplete="list"
1246
+ role="combobox"
1247
+ [attr.placeholder]="placeholder"
1248
+ [attr.size]="size"
1249
+ [attr.maxlength]="maxlength"
1250
+ [tabindex]="!disabled ? tabindex : -1"
1251
+ [readonly]="readonly"
1252
+ [disabled]="disabled"
1253
+ [attr.aria-label]="ariaLabel"
1254
+ [attr.aria-labelledby]="ariaLabelledBy"
1255
+ [attr.aria-required]="required"
1256
+ [attr.aria-expanded]="overlayVisible ?? false"
1257
+ [attr.aria-controls]="overlayVisible ? id + '_list' : null"
1258
+ [attr.aria-activedescendant]="focused ? focusedOptionId : undefined"
1259
+ (input)="onInput($event)"
1260
+ (keydown)="onKeyDown($event)"
1261
+ (change)="onInputChange($event)"
1262
+ (focus)="onInputFocus($event)"
1263
+ (blur)="onInputBlur($event)"
1264
+ (paste)="onInputPaste($event)"
1265
+ (keyup)="onInputKeyUp($event)"
1266
+ />
1267
+ <ng-container *ngIf="isVisibleClearIcon">
1268
+ <TimesIcon *ngIf="!clearIconTemplate" [styleClass]="'p-autocomplete-clear-icon'" (click)="clear()" [attr.aria-hidden]="true" />
1269
+ <span *ngIf="clearIconTemplate" class="p-autocomplete-clear-icon" (click)="clear()" [attr.aria-hidden]="true">
1270
+ <ng-template *ngTemplateOutlet="clearIconTemplate"></ng-template>
1271
+ </span>
1272
+ </ng-container>
1273
+
1274
+ <ul
1275
+ *ngIf="multiple"
1276
+ #multiContainer
1277
+ [ngClass]="multiContainerClass"
1278
+ [tabindex]="-1"
1279
+ role="listbox"
1280
+ [attr.aria-orientation]="'horizontal'"
1281
+ [attr.aria-activedescendant]="focused ? focusedMultipleOptionId : undefined"
1282
+ (focus)="onMultipleContainerFocus($event)"
1283
+ (blur)="onMultipleContainerBlur($event)"
1284
+ (keydown)="onMultipleContainerKeyDown($event)"
1285
+ >
1286
+ <li
1287
+ #token
1288
+ *ngFor="let option of modelValue(); let i = index"
1289
+ [ngClass]="{ 'p-autocomplete-token': true, 'p-focus': focusedMultipleOptionIndex() === i }"
1290
+ [attr.id]="id + '_multiple_option_' + i"
1291
+ role="option"
1292
+ [attr.aria-label]="getOptionLabel(option)"
1293
+ [attr.aria-setsize]="modelValue().length"
1294
+ [attr.aria-posinset]="i + 1"
1295
+ [attr.aria-selected]="true"
1296
+ >
1297
+ <ng-container *ngTemplateOutlet="selectedItemTemplate; context: { $implicit: option }"></ng-container>
1298
+ <span *ngIf="!selectedItemTemplate" class="p-autocomplete-token-label">{{ getMultipleLabel(option) }}</span>
1299
+ <span class="p-autocomplete-token-icon" (click)="!readonly ? removeOption($event, i) : ''">
1300
+ <TimesCircleIcon [styleClass]="'p-autocomplete-token-icon'" *ngIf="!removeIconTemplate" [attr.aria-hidden]="true" />
1301
+ <span *ngIf="removeIconTemplate" class="p-autocomplete-token-icon" [attr.aria-hidden]="true">
1302
+ <ng-template *ngTemplateOutlet="removeIconTemplate"></ng-template>
1303
+ </span>
1304
+ </span>
1305
+ </li>
1306
+ <li class="p-autocomplete-input-token" role="option">
1307
+ <input
1308
+ #focusInput
1309
+ pAutoFocus
1310
+ [autofocus]="autofocus"
1311
+ [ngClass]="inputClass"
1312
+ [ngStyle]="inputStyle"
1313
+ [class]="inputStyleClass"
1314
+ [attr.type]="type"
1315
+ [attr.id]="inputId"
1316
+ [autocomplete]="autocomplete"
1317
+ [required]="required"
1318
+ [attr.name]="name"
1319
+ role="combobox"
1320
+ [attr.placeholder]="!filled ? placeholder : null"
1321
+ [attr.size]="size"
1322
+ aria-autocomplete="list"
1323
+ [attr.maxlength]="maxlength"
1324
+ [tabindex]="!disabled ? tabindex : -1"
1325
+ [readonly]="readonly"
1326
+ [disabled]="disabled"
1327
+ [attr.aria-label]="ariaLabel"
1328
+ [attr.aria-labelledby]="ariaLabelledBy"
1329
+ [attr.aria-required]="required"
1330
+ [attr.aria-expanded]="overlayVisible ?? false"
1331
+ [attr.aria-controls]="overlayVisible ? id + '_list' : null"
1332
+ [attr.aria-activedescendant]="focused ? focusedOptionId : undefined"
1333
+ (input)="onInput($event)"
1334
+ (keydown)="onKeyDown($event)"
1335
+ (change)="onInputChange($event)"
1336
+ (focus)="onInputFocus($event)"
1337
+ (blur)="onInputBlur($event)"
1338
+ (paste)="onInputPaste($event)"
1339
+ (keyup)="onInputKeyUp($event)"
1340
+ />
1341
+ </li>
1342
+ </ul>
1343
+ <ng-container *ngIf="loading">
1344
+ <SpinnerIcon *ngIf="!loadingIconTemplate" [styleClass]="'p-autocomplete-loader'" [spin]="true" [attr.aria-hidden]="true" />
1345
+ <span *ngIf="loadingIconTemplate" class="p-autocomplete-loader pi-spin " [attr.aria-hidden]="true">
1346
+ <ng-template *ngTemplateOutlet="loadingIconTemplate"></ng-template>
1347
+ </span>
1348
+ </ng-container>
1349
+ <button #ddBtn type="button" pButton [attr.aria-label]="dropdownAriaLabel" class="p-autocomplete-dropdown p-button-icon-only" [disabled]="disabled" pRipple (click)="handleDropdownClick($event)" *ngIf="dropdown" [attr.tabindex]="tabindex">
1350
+ <span *ngIf="dropdownIcon" [ngClass]="dropdownIcon" [attr.aria-hidden]="true"></span>
1351
+ <ng-container *ngIf="!dropdownIcon">
1352
+ <ChevronDownIcon *ngIf="!dropdownIconTemplate" />
1353
+ <ng-template *ngTemplateOutlet="dropdownIconTemplate"></ng-template>
1354
+ </ng-container>
1355
+ </button>
1356
+ <cax-overlay
1357
+ #overlay
1358
+ [(visible)]="overlayVisible"
1359
+ [options]="overlayOptions"
1360
+ [target]="'@parent'"
1361
+ [appendTo]="appendTo"
1362
+ [showTransitionOptions]="showTransitionOptions"
1363
+ [hideTransitionOptions]="hideTransitionOptions"
1364
+ (onAnimationStart)="onOverlayAnimationStart($event)"
1365
+ (onHide)="hide()"
1366
+ >
1367
+ <div [ngClass]="panelClass" [ngStyle]="panelStyles" [class]="panelStyleClass">
1368
+ <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
1369
+ <cax-scroller
1370
+ *ngIf="virtualScroll"
1371
+ #scroller
1372
+ [items]="visibleOptions()"
1373
+ [style]="{ height: scrollHeight }"
1374
+ [itemSize]="virtualScrollItemSize || _itemSize"
1375
+ [autoSize]="true"
1376
+ [lazy]="lazy"
1377
+ (onLazyLoad)="onLazyLoad.emit($event)"
1378
+ [options]="virtualScrollOptions"
1379
+ >
1380
+ <ng-template caxTemplate="content" let-items let-scrollerOptions="options">
1381
+ <ng-container *ngTemplateOutlet="buildInItems; context: { $implicit: items, options: scrollerOptions }"></ng-container>
1382
+ </ng-template>
1383
+ <ng-container *ngIf="loaderTemplate">
1384
+ <ng-template caxTemplate="loader" let-scrollerOptions="options">
1385
+ <ng-container *ngTemplateOutlet="loaderTemplate; context: { options: scrollerOptions }"></ng-container>
1386
+ </ng-template>
1387
+ </ng-container>
1388
+ </cax-scroller>
1389
+ <ng-container *ngIf="!virtualScroll">
1390
+ <ng-container *ngTemplateOutlet="buildInItems; context: { $implicit: visibleOptions(), options: {} }"></ng-container>
1391
+ </ng-container>
1392
+
1393
+ <ng-template #buildInItems let-items let-scrollerOptions="options">
1394
+ <ul #items class="p-autocomplete-items" [ngClass]="scrollerOptions.contentStyleClass" [style]="scrollerOptions.contentStyle" role="listbox" [attr.id]="id + '_list'" [attr.aria-label]="listLabel">
1395
+ <ng-template ngFor let-option [ngForOf]="items" let-i="index">
1396
+ <ng-container *ngIf="isOptionGroup(option)">
1397
+ <li [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)" class="p-autocomplete-item-group" [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }" role="option">
1398
+ <span *ngIf="!groupTemplate">{{ getOptionGroupLabel(option.optionGroup) }}</span>
1399
+ <ng-container *ngTemplateOutlet="groupTemplate; context: { $implicit: option.optionGroup }"></ng-container>
1400
+ </li>
1401
+ </ng-container>
1402
+ <ng-container *ngIf="!isOptionGroup(option)">
1403
+ <li
1404
+ class="p-autocomplete-item"
1405
+ pRipple
1406
+ [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
1407
+ [ngClass]="{ 'p-highlight': isSelected(option), 'p-focus': focusedOptionIndex() === getOptionIndex(i, scrollerOptions), 'p-disabled': isOptionDisabled(option) }"
1408
+ [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)"
1409
+ role="option"
1410
+ [attr.aria-label]="getOptionLabel(option)"
1411
+ [attr.aria-selected]="isSelected(option)"
1412
+ [attr.aria-disabled]="isOptionDisabled(option)"
1413
+ [attr.data-p-focused]="focusedOptionIndex() === getOptionIndex(i, scrollerOptions)"
1414
+ [attr.aria-setsize]="ariaSetSize"
1415
+ [attr.aria-posinset]="getAriaPosInset(getOptionIndex(i, scrollerOptions))"
1416
+ (click)="onOptionSelect($event, option)"
1417
+ (mouseenter)="onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))"
1418
+ >
1419
+ <span *ngIf="!itemTemplate">{{ getOptionLabel(option) }}</span>
1420
+ <ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: option, index: scrollerOptions.getOptions ? scrollerOptions.getOptions(i) : i }"></ng-container>
1421
+ </li>
1422
+ </ng-container>
1423
+ </ng-template>
1424
+ <li *ngIf="!items || (items && items.length === 0 && showEmptyMessage)" class="p-autocomplete-empty-message" [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }" role="option">
1425
+ <ng-container *ngIf="!emptyTemplate; else empty">
1426
+ {{ searchResultMessageText }}
1427
+ </ng-container>
1428
+ <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
1429
+ </li>
1430
+ </ul>
1431
+ </ng-template>
1432
+ <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
1433
+ </div>
1434
+ <span role="status" aria-live="polite" class="p-hidden-accessible">
1435
+ {{ selectedMessageText }}
1436
+ </span>
1437
+ </cax-overlay>
1438
+ </div>
1439
+ `, isInline: true, styles: ["@layer cax{.p-autocomplete{display:inline-flex;position:relative}.p-autocomplete-loader{position:absolute;top:50%;margin-top:-.5rem}.p-autocomplete-dd .p-autocomplete-input{flex:1 1 auto;width:1%}.p-autocomplete-dd .p-autocomplete-input,.p-autocomplete-dd .p-autocomplete-multiple-container{border-top-right-radius:0;border-bottom-right-radius:0}.p-autocomplete-dd .p-autocomplete-dropdown{border-top-left-radius:0;border-bottom-left-radius:0}.p-autocomplete-panel{overflow:auto}.p-autocomplete-items{margin:0;padding:0;list-style-type:none}.p-autocomplete-item{cursor:pointer;white-space:nowrap;position:relative;overflow:hidden}.p-autocomplete-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-autocomplete-token{width:fit-content;cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-autocomplete-token-icon{display:flex;cursor:pointer}.p-autocomplete-input-token{flex:1 1 auto;display:inline-flex}.p-autocomplete-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-autocomplete{display:flex}.p-fluid .p-autocomplete-dd .p-autocomplete-input{width:1%}.p-autocomplete-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-autocomplete-clearable{position:relative}}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(() => i2.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i0.forwardRef(() => i3.Overlay), selector: "cax-overlay", inputs: ["visible", "mode", "style", "styleClass", "contentStyle", "contentStyleClass", "target", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "listener", "responsive", "options"], outputs: ["visibleChange", "onBeforeShow", "onShow", "onBeforeHide", "onHide", "onAnimationStart", "onAnimationDone"] }, { kind: "directive", type: i0.forwardRef(() => i1.CaxTemplate), selector: "[caxTemplate]", inputs: ["type", "caxTemplate"] }, { kind: "component", type: i0.forwardRef(() => i4.Scroller), selector: "cax-scroller", inputs: ["id", "style", "styleClass", "tabindex", "items", "itemSize", "scrollHeight", "scrollWidth", "orientation", "step", "delay", "resizeDelay", "appendOnly", "inline", "lazy", "disabled", "loaderDisabled", "columns", "showSpacer", "showLoader", "numToleratedItems", "loading", "autoSize", "trackBy", "options"], outputs: ["onLazyLoad", "onScroll", "onScrollIndexChange"] }, { kind: "component", type: i0.forwardRef(() => TimesCircleIcon), selector: "TimesCircleIcon" }, { kind: "component", type: i0.forwardRef(() => SpinnerIcon), selector: "SpinnerIcon" }, { kind: "component", type: i0.forwardRef(() => TimesIcon), selector: "TimesIcon" }, { kind: "component", type: i0.forwardRef(() => ChevronDownIcon), selector: "ChevronDownIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1440
+ }
1441
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AutoComplete, decorators: [{
1442
+ type: Component,
1443
+ args: [{ selector: 'p-autoComplete', template: `
1444
+ <div #container [ngClass]="containerClass" [ngStyle]="style" [class]="styleClass" (click)="onContainerClick($event)">
1445
+ <input
1446
+ *ngIf="!multiple"
1447
+ #focusInput
1448
+ pAutoFocus
1449
+ [autofocus]="autofocus"
1450
+ [ngClass]="inputClass"
1451
+ [ngStyle]="inputStyle"
1452
+ [class]="inputStyleClass"
1453
+ [type]="type"
1454
+ [attr.value]="inputValue()"
1455
+ [attr.id]="inputId"
1456
+ [autocomplete]="autocomplete"
1457
+ [required]="required"
1458
+ [name]="name"
1459
+ aria-autocomplete="list"
1460
+ role="combobox"
1461
+ [attr.placeholder]="placeholder"
1462
+ [attr.size]="size"
1463
+ [attr.maxlength]="maxlength"
1464
+ [tabindex]="!disabled ? tabindex : -1"
1465
+ [readonly]="readonly"
1466
+ [disabled]="disabled"
1467
+ [attr.aria-label]="ariaLabel"
1468
+ [attr.aria-labelledby]="ariaLabelledBy"
1469
+ [attr.aria-required]="required"
1470
+ [attr.aria-expanded]="overlayVisible ?? false"
1471
+ [attr.aria-controls]="overlayVisible ? id + '_list' : null"
1472
+ [attr.aria-activedescendant]="focused ? focusedOptionId : undefined"
1473
+ (input)="onInput($event)"
1474
+ (keydown)="onKeyDown($event)"
1475
+ (change)="onInputChange($event)"
1476
+ (focus)="onInputFocus($event)"
1477
+ (blur)="onInputBlur($event)"
1478
+ (paste)="onInputPaste($event)"
1479
+ (keyup)="onInputKeyUp($event)"
1480
+ />
1481
+ <ng-container *ngIf="isVisibleClearIcon">
1482
+ <TimesIcon *ngIf="!clearIconTemplate" [styleClass]="'p-autocomplete-clear-icon'" (click)="clear()" [attr.aria-hidden]="true" />
1483
+ <span *ngIf="clearIconTemplate" class="p-autocomplete-clear-icon" (click)="clear()" [attr.aria-hidden]="true">
1484
+ <ng-template *ngTemplateOutlet="clearIconTemplate"></ng-template>
1485
+ </span>
1486
+ </ng-container>
1487
+
1488
+ <ul
1489
+ *ngIf="multiple"
1490
+ #multiContainer
1491
+ [ngClass]="multiContainerClass"
1492
+ [tabindex]="-1"
1493
+ role="listbox"
1494
+ [attr.aria-orientation]="'horizontal'"
1495
+ [attr.aria-activedescendant]="focused ? focusedMultipleOptionId : undefined"
1496
+ (focus)="onMultipleContainerFocus($event)"
1497
+ (blur)="onMultipleContainerBlur($event)"
1498
+ (keydown)="onMultipleContainerKeyDown($event)"
1499
+ >
1500
+ <li
1501
+ #token
1502
+ *ngFor="let option of modelValue(); let i = index"
1503
+ [ngClass]="{ 'p-autocomplete-token': true, 'p-focus': focusedMultipleOptionIndex() === i }"
1504
+ [attr.id]="id + '_multiple_option_' + i"
1505
+ role="option"
1506
+ [attr.aria-label]="getOptionLabel(option)"
1507
+ [attr.aria-setsize]="modelValue().length"
1508
+ [attr.aria-posinset]="i + 1"
1509
+ [attr.aria-selected]="true"
1510
+ >
1511
+ <ng-container *ngTemplateOutlet="selectedItemTemplate; context: { $implicit: option }"></ng-container>
1512
+ <span *ngIf="!selectedItemTemplate" class="p-autocomplete-token-label">{{ getMultipleLabel(option) }}</span>
1513
+ <span class="p-autocomplete-token-icon" (click)="!readonly ? removeOption($event, i) : ''">
1514
+ <TimesCircleIcon [styleClass]="'p-autocomplete-token-icon'" *ngIf="!removeIconTemplate" [attr.aria-hidden]="true" />
1515
+ <span *ngIf="removeIconTemplate" class="p-autocomplete-token-icon" [attr.aria-hidden]="true">
1516
+ <ng-template *ngTemplateOutlet="removeIconTemplate"></ng-template>
1517
+ </span>
1518
+ </span>
1519
+ </li>
1520
+ <li class="p-autocomplete-input-token" role="option">
1521
+ <input
1522
+ #focusInput
1523
+ pAutoFocus
1524
+ [autofocus]="autofocus"
1525
+ [ngClass]="inputClass"
1526
+ [ngStyle]="inputStyle"
1527
+ [class]="inputStyleClass"
1528
+ [attr.type]="type"
1529
+ [attr.id]="inputId"
1530
+ [autocomplete]="autocomplete"
1531
+ [required]="required"
1532
+ [attr.name]="name"
1533
+ role="combobox"
1534
+ [attr.placeholder]="!filled ? placeholder : null"
1535
+ [attr.size]="size"
1536
+ aria-autocomplete="list"
1537
+ [attr.maxlength]="maxlength"
1538
+ [tabindex]="!disabled ? tabindex : -1"
1539
+ [readonly]="readonly"
1540
+ [disabled]="disabled"
1541
+ [attr.aria-label]="ariaLabel"
1542
+ [attr.aria-labelledby]="ariaLabelledBy"
1543
+ [attr.aria-required]="required"
1544
+ [attr.aria-expanded]="overlayVisible ?? false"
1545
+ [attr.aria-controls]="overlayVisible ? id + '_list' : null"
1546
+ [attr.aria-activedescendant]="focused ? focusedOptionId : undefined"
1547
+ (input)="onInput($event)"
1548
+ (keydown)="onKeyDown($event)"
1549
+ (change)="onInputChange($event)"
1550
+ (focus)="onInputFocus($event)"
1551
+ (blur)="onInputBlur($event)"
1552
+ (paste)="onInputPaste($event)"
1553
+ (keyup)="onInputKeyUp($event)"
1554
+ />
1555
+ </li>
1556
+ </ul>
1557
+ <ng-container *ngIf="loading">
1558
+ <SpinnerIcon *ngIf="!loadingIconTemplate" [styleClass]="'p-autocomplete-loader'" [spin]="true" [attr.aria-hidden]="true" />
1559
+ <span *ngIf="loadingIconTemplate" class="p-autocomplete-loader pi-spin " [attr.aria-hidden]="true">
1560
+ <ng-template *ngTemplateOutlet="loadingIconTemplate"></ng-template>
1561
+ </span>
1562
+ </ng-container>
1563
+ <button #ddBtn type="button" pButton [attr.aria-label]="dropdownAriaLabel" class="p-autocomplete-dropdown p-button-icon-only" [disabled]="disabled" pRipple (click)="handleDropdownClick($event)" *ngIf="dropdown" [attr.tabindex]="tabindex">
1564
+ <span *ngIf="dropdownIcon" [ngClass]="dropdownIcon" [attr.aria-hidden]="true"></span>
1565
+ <ng-container *ngIf="!dropdownIcon">
1566
+ <ChevronDownIcon *ngIf="!dropdownIconTemplate" />
1567
+ <ng-template *ngTemplateOutlet="dropdownIconTemplate"></ng-template>
1568
+ </ng-container>
1569
+ </button>
1570
+ <cax-overlay
1571
+ #overlay
1572
+ [(visible)]="overlayVisible"
1573
+ [options]="overlayOptions"
1574
+ [target]="'@parent'"
1575
+ [appendTo]="appendTo"
1576
+ [showTransitionOptions]="showTransitionOptions"
1577
+ [hideTransitionOptions]="hideTransitionOptions"
1578
+ (onAnimationStart)="onOverlayAnimationStart($event)"
1579
+ (onHide)="hide()"
1580
+ >
1581
+ <div [ngClass]="panelClass" [ngStyle]="panelStyles" [class]="panelStyleClass">
1582
+ <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
1583
+ <cax-scroller
1584
+ *ngIf="virtualScroll"
1585
+ #scroller
1586
+ [items]="visibleOptions()"
1587
+ [style]="{ height: scrollHeight }"
1588
+ [itemSize]="virtualScrollItemSize || _itemSize"
1589
+ [autoSize]="true"
1590
+ [lazy]="lazy"
1591
+ (onLazyLoad)="onLazyLoad.emit($event)"
1592
+ [options]="virtualScrollOptions"
1593
+ >
1594
+ <ng-template caxTemplate="content" let-items let-scrollerOptions="options">
1595
+ <ng-container *ngTemplateOutlet="buildInItems; context: { $implicit: items, options: scrollerOptions }"></ng-container>
1596
+ </ng-template>
1597
+ <ng-container *ngIf="loaderTemplate">
1598
+ <ng-template caxTemplate="loader" let-scrollerOptions="options">
1599
+ <ng-container *ngTemplateOutlet="loaderTemplate; context: { options: scrollerOptions }"></ng-container>
1600
+ </ng-template>
1601
+ </ng-container>
1602
+ </cax-scroller>
1603
+ <ng-container *ngIf="!virtualScroll">
1604
+ <ng-container *ngTemplateOutlet="buildInItems; context: { $implicit: visibleOptions(), options: {} }"></ng-container>
1605
+ </ng-container>
1606
+
1607
+ <ng-template #buildInItems let-items let-scrollerOptions="options">
1608
+ <ul #items class="p-autocomplete-items" [ngClass]="scrollerOptions.contentStyleClass" [style]="scrollerOptions.contentStyle" role="listbox" [attr.id]="id + '_list'" [attr.aria-label]="listLabel">
1609
+ <ng-template ngFor let-option [ngForOf]="items" let-i="index">
1610
+ <ng-container *ngIf="isOptionGroup(option)">
1611
+ <li [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)" class="p-autocomplete-item-group" [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }" role="option">
1612
+ <span *ngIf="!groupTemplate">{{ getOptionGroupLabel(option.optionGroup) }}</span>
1613
+ <ng-container *ngTemplateOutlet="groupTemplate; context: { $implicit: option.optionGroup }"></ng-container>
1614
+ </li>
1615
+ </ng-container>
1616
+ <ng-container *ngIf="!isOptionGroup(option)">
1617
+ <li
1618
+ class="p-autocomplete-item"
1619
+ pRipple
1620
+ [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
1621
+ [ngClass]="{ 'p-highlight': isSelected(option), 'p-focus': focusedOptionIndex() === getOptionIndex(i, scrollerOptions), 'p-disabled': isOptionDisabled(option) }"
1622
+ [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)"
1623
+ role="option"
1624
+ [attr.aria-label]="getOptionLabel(option)"
1625
+ [attr.aria-selected]="isSelected(option)"
1626
+ [attr.aria-disabled]="isOptionDisabled(option)"
1627
+ [attr.data-p-focused]="focusedOptionIndex() === getOptionIndex(i, scrollerOptions)"
1628
+ [attr.aria-setsize]="ariaSetSize"
1629
+ [attr.aria-posinset]="getAriaPosInset(getOptionIndex(i, scrollerOptions))"
1630
+ (click)="onOptionSelect($event, option)"
1631
+ (mouseenter)="onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))"
1632
+ >
1633
+ <span *ngIf="!itemTemplate">{{ getOptionLabel(option) }}</span>
1634
+ <ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: option, index: scrollerOptions.getOptions ? scrollerOptions.getOptions(i) : i }"></ng-container>
1635
+ </li>
1636
+ </ng-container>
1637
+ </ng-template>
1638
+ <li *ngIf="!items || (items && items.length === 0 && showEmptyMessage)" class="p-autocomplete-empty-message" [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }" role="option">
1639
+ <ng-container *ngIf="!emptyTemplate; else empty">
1640
+ {{ searchResultMessageText }}
1641
+ </ng-container>
1642
+ <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
1643
+ </li>
1644
+ </ul>
1645
+ </ng-template>
1646
+ <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
1647
+ </div>
1648
+ <span role="status" aria-live="polite" class="p-hidden-accessible">
1649
+ {{ selectedMessageText }}
1650
+ </span>
1651
+ </cax-overlay>
1652
+ </div>
1653
+ `, host: {
1654
+ class: 'cax-element p-inputwrapper',
1655
+ '[class.p-inputwrapper-filled]': 'filled',
1656
+ '[class.p-inputwrapper-focus]': '((focused && !disabled) || autofocus) || overlayVisible',
1657
+ '[class.p-autocomplete-clearable]': 'showClear && !disabled'
1658
+ }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: ["@layer cax{.p-autocomplete{display:inline-flex;position:relative}.p-autocomplete-loader{position:absolute;top:50%;margin-top:-.5rem}.p-autocomplete-dd .p-autocomplete-input{flex:1 1 auto;width:1%}.p-autocomplete-dd .p-autocomplete-input,.p-autocomplete-dd .p-autocomplete-multiple-container{border-top-right-radius:0;border-bottom-right-radius:0}.p-autocomplete-dd .p-autocomplete-dropdown{border-top-left-radius:0;border-bottom-left-radius:0}.p-autocomplete-panel{overflow:auto}.p-autocomplete-items{margin:0;padding:0;list-style-type:none}.p-autocomplete-item{cursor:pointer;white-space:nowrap;position:relative;overflow:hidden}.p-autocomplete-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-autocomplete-token{width:fit-content;cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-autocomplete-token-icon{display:flex;cursor:pointer}.p-autocomplete-input-token{flex:1 1 auto;display:inline-flex}.p-autocomplete-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-autocomplete{display:flex}.p-fluid .p-autocomplete-dd .p-autocomplete-input{width:1%}.p-autocomplete-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-autocomplete-clearable{position:relative}}\n"] }]
1659
+ }], ctorParameters: () => [{ type: Document, decorators: [{
1660
+ type: Inject,
1661
+ args: [DOCUMENT]
1662
+ }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.caxConfig }, { type: i1.OverlayService }, { type: i0.NgZone }], propDecorators: { minLength: [{
1663
+ type: Input,
1664
+ args: [{ transform: numberAttribute }]
1665
+ }], delay: [{
1666
+ type: Input,
1667
+ args: [{ transform: numberAttribute }]
1668
+ }], style: [{
1669
+ type: Input
1670
+ }], panelStyle: [{
1671
+ type: Input
1672
+ }], styleClass: [{
1673
+ type: Input
1674
+ }], panelStyleClass: [{
1675
+ type: Input
1676
+ }], inputStyle: [{
1677
+ type: Input
1678
+ }], inputId: [{
1679
+ type: Input
1680
+ }], inputStyleClass: [{
1681
+ type: Input
1682
+ }], placeholder: [{
1683
+ type: Input
1684
+ }], readonly: [{
1685
+ type: Input,
1686
+ args: [{ transform: booleanAttribute }]
1687
+ }], disabled: [{
1688
+ type: Input,
1689
+ args: [{ transform: booleanAttribute }]
1690
+ }], scrollHeight: [{
1691
+ type: Input
1692
+ }], lazy: [{
1693
+ type: Input,
1694
+ args: [{ transform: booleanAttribute }]
1695
+ }], virtualScroll: [{
1696
+ type: Input,
1697
+ args: [{ transform: booleanAttribute }]
1698
+ }], virtualScrollItemSize: [{
1699
+ type: Input,
1700
+ args: [{ transform: numberAttribute }]
1701
+ }], virtualScrollOptions: [{
1702
+ type: Input
1703
+ }], maxlength: [{
1704
+ type: Input,
1705
+ args: [{ transform: (value) => numberAttribute(value, null) }]
1706
+ }], name: [{
1707
+ type: Input
1708
+ }], required: [{
1709
+ type: Input,
1710
+ args: [{ transform: booleanAttribute }]
1711
+ }], size: [{
1712
+ type: Input,
1713
+ args: [{ transform: numberAttribute }]
1714
+ }], appendTo: [{
1715
+ type: Input
1716
+ }], autoHighlight: [{
1717
+ type: Input,
1718
+ args: [{ transform: booleanAttribute }]
1719
+ }], forceSelection: [{
1720
+ type: Input,
1721
+ args: [{ transform: booleanAttribute }]
1722
+ }], type: [{
1723
+ type: Input
1724
+ }], autoZIndex: [{
1725
+ type: Input,
1726
+ args: [{ transform: booleanAttribute }]
1727
+ }], baseZIndex: [{
1728
+ type: Input,
1729
+ args: [{ transform: numberAttribute }]
1730
+ }], ariaLabel: [{
1731
+ type: Input
1732
+ }], dropdownAriaLabel: [{
1733
+ type: Input
1734
+ }], ariaLabelledBy: [{
1735
+ type: Input
1736
+ }], dropdownIcon: [{
1737
+ type: Input
1738
+ }], unique: [{
1739
+ type: Input,
1740
+ args: [{ transform: booleanAttribute }]
1741
+ }], group: [{
1742
+ type: Input,
1743
+ args: [{ transform: booleanAttribute }]
1744
+ }], completeOnFocus: [{
1745
+ type: Input,
1746
+ args: [{ transform: booleanAttribute }]
1747
+ }], showClear: [{
1748
+ type: Input,
1749
+ args: [{ transform: booleanAttribute }]
1750
+ }], field: [{
1751
+ type: Input
1752
+ }], dropdown: [{
1753
+ type: Input,
1754
+ args: [{ transform: booleanAttribute }]
1755
+ }], showEmptyMessage: [{
1756
+ type: Input,
1757
+ args: [{ transform: booleanAttribute }]
1758
+ }], dropdownMode: [{
1759
+ type: Input
1760
+ }], multiple: [{
1761
+ type: Input,
1762
+ args: [{ transform: booleanAttribute }]
1763
+ }], tabindex: [{
1764
+ type: Input,
1765
+ args: [{ transform: numberAttribute }]
1766
+ }], dataKey: [{
1767
+ type: Input
1768
+ }], emptyMessage: [{
1769
+ type: Input
1770
+ }], showTransitionOptions: [{
1771
+ type: Input
1772
+ }], hideTransitionOptions: [{
1773
+ type: Input
1774
+ }], autofocus: [{
1775
+ type: Input,
1776
+ args: [{ transform: booleanAttribute }]
1777
+ }], autocomplete: [{
1778
+ type: Input
1779
+ }], optionGroupChildren: [{
1780
+ type: Input
1781
+ }], optionGroupLabel: [{
1782
+ type: Input
1783
+ }], overlayOptions: [{
1784
+ type: Input
1785
+ }], suggestions: [{
1786
+ type: Input
1787
+ }], itemSize: [{
1788
+ type: Input
1789
+ }], optionLabel: [{
1790
+ type: Input
1791
+ }], optionValue: [{
1792
+ type: Input
1793
+ }], id: [{
1794
+ type: Input
1795
+ }], searchMessage: [{
1796
+ type: Input
1797
+ }], emptySelectionMessage: [{
1798
+ type: Input
1799
+ }], selectionMessage: [{
1800
+ type: Input
1801
+ }], autoOptionFocus: [{
1802
+ type: Input,
1803
+ args: [{ transform: booleanAttribute }]
1804
+ }], selectOnFocus: [{
1805
+ type: Input,
1806
+ args: [{ transform: booleanAttribute }]
1807
+ }], searchLocale: [{
1808
+ type: Input,
1809
+ args: [{ transform: booleanAttribute }]
1810
+ }], optionDisabled: [{
1811
+ type: Input
1812
+ }], focusOnHover: [{
1813
+ type: Input,
1814
+ args: [{ transform: booleanAttribute }]
1815
+ }], variant: [{
1816
+ type: Input
1817
+ }], completeMethod: [{
1818
+ type: Output
1819
+ }], onSelect: [{
1820
+ type: Output
1821
+ }], onUnselect: [{
1822
+ type: Output
1823
+ }], onFocus: [{
1824
+ type: Output
1825
+ }], onBlur: [{
1826
+ type: Output
1827
+ }], onDropdownClick: [{
1828
+ type: Output
1829
+ }], onClear: [{
1830
+ type: Output
1831
+ }], onKeyUp: [{
1832
+ type: Output
1833
+ }], onShow: [{
1834
+ type: Output
1835
+ }], onHide: [{
1836
+ type: Output
1837
+ }], onLazyLoad: [{
1838
+ type: Output
1839
+ }], containerEL: [{
1840
+ type: ViewChild,
1841
+ args: ['container']
1842
+ }], inputEL: [{
1843
+ type: ViewChild,
1844
+ args: ['focusInput']
1845
+ }], multiInputEl: [{
1846
+ type: ViewChild,
1847
+ args: ['multiIn']
1848
+ }], multiContainerEL: [{
1849
+ type: ViewChild,
1850
+ args: ['multiContainer']
1851
+ }], dropdownButton: [{
1852
+ type: ViewChild,
1853
+ args: ['ddBtn']
1854
+ }], itemsViewChild: [{
1855
+ type: ViewChild,
1856
+ args: ['items']
1857
+ }], scroller: [{
1858
+ type: ViewChild,
1859
+ args: ['scroller']
1860
+ }], overlayViewChild: [{
1861
+ type: ViewChild,
1862
+ args: ['overlay']
1863
+ }], templates: [{
1864
+ type: ContentChildren,
1865
+ args: [CaxTemplate]
1866
+ }] } });
1867
+ export class AutoCompleteModule {
1868
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1869
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: AutoCompleteModule, declarations: [AutoComplete], imports: [CommonModule, OverlayModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollerModule, AutoFocusModule, TimesCircleIcon, SpinnerIcon, TimesIcon, ChevronDownIcon], exports: [AutoComplete, OverlayModule, SharedModule, ScrollerModule, AutoFocusModule] });
1870
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AutoCompleteModule, imports: [CommonModule, OverlayModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollerModule, AutoFocusModule, TimesCircleIcon, SpinnerIcon, TimesIcon, ChevronDownIcon, OverlayModule, SharedModule, ScrollerModule, AutoFocusModule] });
1871
+ }
1872
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AutoCompleteModule, decorators: [{
1873
+ type: NgModule,
1874
+ args: [{
1875
+ imports: [CommonModule, OverlayModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollerModule, AutoFocusModule, TimesCircleIcon, SpinnerIcon, TimesIcon, ChevronDownIcon],
1876
+ exports: [AutoComplete, OverlayModule, SharedModule, ScrollerModule, AutoFocusModule],
1877
+ declarations: [AutoComplete]
1878
+ }]
1879
+ }] });
1880
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBR0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLGVBQWUsRUFDZixNQUFNLEVBRU4sWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFFUixlQUFlLEVBRWYsTUFBTSxFQUdOLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQTZDLFdBQVcsRUFBbUIsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9JLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFpQyxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFXLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQVksY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxx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QUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGVBQWUsQ0FBQztvQkFDNUwsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQztvQkFDckYsWUFBWSxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBlZmZlY3QsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgTmdab25lLFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBSZW5kZXJlcjIsXG4gICAgc2lnbmFsLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE92ZXJsYXlPcHRpb25zLCBPdmVybGF5U2VydmljZSwgY2F4Q29uZmlnLCBDYXhUZW1wbGF0ZSwgU2Nyb2xsZXJPcHRpb25zLCBTaGFyZWRNb2R1bGUsIFRyYW5zbGF0aW9uS2V5cyB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2FwaSc7XG5pbXBvcnQgeyBBdXRvRm9jdXNNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9hdXRvZm9jdXMnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vYnV0dG9uJztcbmltcG9ydCB7IENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyLCBEb21IYW5kbGVyIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vZG9tJztcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2lucHV0dGV4dCc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5TW9kdWxlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vb3ZlcmxheSc7XG5pbXBvcnQgeyBSaXBwbGVNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9yaXBwbGUnO1xuaW1wb3J0IHsgU2Nyb2xsZXIsIFNjcm9sbGVyTW9kdWxlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vc2Nyb2xsZXInO1xuaW1wb3J0IHsgT2JqZWN0VXRpbHMsIFVuaXF1ZUNvbXBvbmVudElkIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vdXRpbHMnO1xuaW1wb3J0IHsgVGltZXNDaXJjbGVJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvdGltZXNjaXJjbGUnO1xuaW1wb3J0IHsgU3Bpbm5lckljb24gfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pY29ucy9zcGlubmVyJztcbmltcG9ydCB7IFRpbWVzSWNvbiB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2ljb25zL3RpbWVzJztcbmltcG9ydCB7IENoZXZyb25Eb3duSWNvbiB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2ljb25zL2NoZXZyb25kb3duJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vdHMtaGVscGVycyc7XG5pbXBvcnQgeyBBdXRvQ29tcGxldGVDb21wbGV0ZUV2ZW50LCBBdXRvQ29tcGxldGVEcm9wZG93bkNsaWNrRXZlbnQsIEF1dG9Db21wbGV0ZUxhenlMb2FkRXZlbnQsIEF1dG9Db21wbGV0ZVNlbGVjdEV2ZW50LCBBdXRvQ29tcGxldGVVbnNlbGVjdEV2ZW50IH0gZnJvbSAnLi9hdXRvY29tcGxldGUuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IEFVVE9DT01QTEVURV9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEF1dG9Db21wbGV0ZSksXG4gICAgbXVsdGk6IHRydWVcbn07XG4vKipcbiAqIEF1dG9Db21wbGV0ZSBpcyBhbiBpbnB1dCBjb21wb25lbnQgdGhhdCBwcm92aWRlcyByZWFsLXRpbWUgc3VnZ2VzdGlvbnMgd2hlbiBiZWluZyB0eXBlZC5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1hdXRvQ29tcGxldGUnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgI2NvbnRhaW5lciBbbmdDbGFzc109XCJjb250YWluZXJDbGFzc1wiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiAoY2xpY2spPVwib25Db250YWluZXJDbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgI2ZvY3VzSW5wdXRcbiAgICAgICAgICAgICAgICBwQXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImlucHV0Q2xhc3NcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImlucHV0U3R5bGVcIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJpbnB1dFN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLnZhbHVlXT1cImlucHV0VmFsdWUoKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgYXJpYS1hdXRvY29tcGxldGU9XCJsaXN0XCJcbiAgICAgICAgICAgICAgICByb2xlPVwiY29tYm9ib3hcIlxuICAgICAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5zaXplXT1cInNpemVcIlxuICAgICAgICAgICAgICAgIFthdHRyLm1heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxuICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCIhZGlzYWJsZWQgPyB0YWJpbmRleCA6IC0xXCJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvdmVybGF5VmlzaWJsZSA/PyBmYWxzZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJvdmVybGF5VmlzaWJsZSA/IGlkICsgJ19saXN0JyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCJmb2N1c2VkID8gZm9jdXNlZE9wdGlvbklkIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dEJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHBhc3RlKT1cIm9uSW5wdXRQYXN0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5dXApPVwib25JbnB1dEtleVVwKCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Zpc2libGVDbGVhckljb25cIj5cbiAgICAgICAgICAgICAgICA8VGltZXNJY29uICpuZ0lmPVwiIWNsZWFySWNvblRlbXBsYXRlXCIgW3N0eWxlQ2xhc3NdPVwiJ3AtYXV0b2NvbXBsZXRlLWNsZWFyLWljb24nXCIgKGNsaWNrKT1cImNsZWFyKClcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNsZWFySWNvblRlbXBsYXRlXCIgY2xhc3M9XCJwLWF1dG9jb21wbGV0ZS1jbGVhci1pY29uXCIgKGNsaWNrKT1cImNsZWFyKClcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImNsZWFySWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPHVsXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgI211bHRpQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwibXVsdGlDb250YWluZXJDbGFzc1wiXG4gICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1vcmllbnRhdGlvbl09XCInaG9yaXpvbnRhbCdcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCJmb2N1c2VkID8gZm9jdXNlZE11bHRpcGxlT3B0aW9uSWQgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbk11bHRpcGxlQ29udGFpbmVyRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGJsdXIpPVwib25NdWx0aXBsZUNvbnRhaW5lckJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25NdWx0aXBsZUNvbnRhaW5lcktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICN0b2tlblxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG1vZGVsVmFsdWUoKTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3AtYXV0b2NvbXBsZXRlLXRva2VuJzogdHJ1ZSwgJ3AtZm9jdXMnOiBmb2N1c2VkTXVsdGlwbGVPcHRpb25JbmRleCgpID09PSBpIH1cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJpZCArICdfbXVsdGlwbGVfb3B0aW9uXycgKyBpXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0T3B0aW9uTGFiZWwob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2V0c2l6ZV09XCJtb2RlbFZhbHVlKCkubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wb3NpbnNldF09XCJpICsgMVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VsZWN0ZWRJdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBvcHRpb24gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFzZWxlY3RlZEl0ZW1UZW1wbGF0ZVwiIGNsYXNzPVwicC1hdXRvY29tcGxldGUtdG9rZW4tbGFiZWxcIj57eyBnZXRNdWx0aXBsZUxhYmVsKG9wdGlvbikgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1hdXRvY29tcGxldGUtdG9rZW4taWNvblwiIChjbGljayk9XCIhcmVhZG9ubHkgPyByZW1vdmVPcHRpb24oJGV2ZW50LCBpKSA6ICcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGltZXNDaXJjbGVJY29uIFtzdHlsZUNsYXNzXT1cIidwLWF1dG9jb21wbGV0ZS10b2tlbi1pY29uJ1wiICpuZ0lmPVwiIXJlbW92ZUljb25UZW1wbGF0ZVwiIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZW1vdmVJY29uVGVtcGxhdGVcIiBjbGFzcz1cInAtYXV0b2NvbXBsZXRlLXRva2VuLWljb25cIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVtb3ZlSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC1hdXRvY29tcGxldGUtaW5wdXQtdG9rZW5cIiByb2xlPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgI2ZvY3VzSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBBdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImlucHV0Q2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiaW5wdXRTdHlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaW5wdXRTdHlsZUNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnR5cGVdPVwidHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cIiFmaWxsZWQgPyBwbGFjZWhvbGRlciA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc2l6ZV09XCJzaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPVwibGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCIhZGlzYWJsZWQgPyB0YWJpbmRleCA6IC0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvdmVybGF5VmlzaWJsZSA/PyBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIm92ZXJsYXlWaXNpYmxlID8gaWQgKyAnX2xpc3QnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwiZm9jdXNlZCA/IGZvY3VzZWRPcHRpb25JZCA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwYXN0ZSk9XCJvbklucHV0UGFzdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwib25JbnB1dEtleVVwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8U3Bpbm5lckljb24gKm5nSWY9XCIhbG9hZGluZ0ljb25UZW1wbGF0ZVwiIFtzdHlsZUNsYXNzXT1cIidwLWF1dG9jb21wbGV0ZS1sb2FkZXInXCIgW3NwaW5dPVwidHJ1ZVwiIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9hZGluZ0ljb25UZW1wbGF0ZVwiIGNsYXNzPVwicC1hdXRvY29tcGxldGUtbG9hZGVyIHBpLXNwaW4gXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxidXR0b24gI2RkQnRuIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiZHJvcGRvd25BcmlhTGFiZWxcIiBjbGFzcz1cInAtYXV0b2NvbXBsZXRlLWRyb3Bkb3duIHAtYnV0dG9uLWljb24tb25seVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIHBSaXBwbGUgKGNsaWNrKT1cImhhbmRsZURyb3Bkb3duQ2xpY2soJGV2ZW50KVwiICpuZ0lmPVwiZHJvcGRvd25cIiBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZHJvcGRvd25JY29uXCIgW25nQ2xhc3NdPVwiZHJvcGRvd25JY29uXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRyb3Bkb3duSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd25JY29uICpuZ0lmPVwiIWRyb3Bkb3duSWNvblRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcGRvd25JY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8Y2F4LW92ZXJsYXlcbiAgICAgICAgICAgICAgICAjb3ZlcmxheVxuICAgICAgICAgICAgICAgIFsodmlzaWJsZSldPVwib3ZlcmxheVZpc2libGVcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIm92ZXJsYXlPcHRpb25zXCJcbiAgICAgICAgICAgICAgICBbdGFyZ2V0XT1cIidAcGFyZW50J1wiXG4gICAgICAgICAgICAgICAgW2FwcGVuZFRvXT1cImFwcGVuZFRvXCJcbiAgICAgICAgICAgICAgICBbc2hvd1RyYW5zaXRpb25PcHRpb25zXT1cInNob3dUcmFuc2l0aW9uT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgW2hpZGVUcmFuc2l0aW9uT3B0aW9uc109XCJoaWRlVHJhbnNpdGlvbk9wdGlvbnNcIlxuICAgICAgICAgICAgICAgIChvbkFuaW1hdGlvblN0YXJ0KT1cIm9uT3ZlcmxheUFuaW1hdGlvblN0YXJ0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChvbkhpZGUpPVwiaGlkZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInBhbmVsQ2xhc3NcIiBbbmdTdHlsZV09XCJwYW5lbFN0eWxlc1wiIFtjbGFzc109XCJwYW5lbFN0eWxlQ2xhc3NcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxjYXgtc2Nyb2xsZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmlydHVhbFNjcm9sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjc2Nyb2xsZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJ2aXNpYmxlT3B0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7IGhlaWdodDogc2Nyb2xsSGVpZ2h0IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1TaXplXT1cInZpcnR1YWxTY3JvbGxJdGVtU2l6ZSB8fCBfaXRlbVNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9TaXplXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhenldPVwibGF6eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25MYXp5TG9hZCk9XCJvbkxhenlMb2FkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJ2aXJ0dWFsU2Nyb2xsT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjYXhUZW1wbGF0ZT1cImNvbnRlbnRcIiBsZXQtaXRlbXMgbGV0LXNjcm9sbGVyT3B0aW9ucz1cIm9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnVpbGRJbkl0ZW1zOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbXMsIG9wdGlvbnM6IHNjcm9sbGVyT3B0aW9ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNheFRlbXBsYXRlPVwibG9hZGVyXCIgbGV0LXNjcm9sbGVyT3B0aW9ucz1cIm9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7IG9wdGlvbnM6IHNjcm9sbGVyT3B0aW9ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2NheC1zY3JvbGxlcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF2aXJ0dWFsU2Nyb2xsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnVpbGRJbkl0ZW1zOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogdmlzaWJsZU9wdGlvbnMoKSwgb3B0aW9uczoge30gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2J1aWxkSW5JdGVtcyBsZXQtaXRlbXMgbGV0LXNjcm9sbGVyT3B0aW9ucz1cIm9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAjaXRlbXMgY2xhc3M9XCJwLWF1dG9jb21wbGV0ZS1pdGVtc1wiIFtuZ0NsYXNzXT1cInNjcm9sbGVyT3B0aW9ucy5jb250ZW50U3R5bGVDbGFzc1wiIFtzdHlsZV09XCJzY3JvbGxlck9wdGlvbnMuY29udGVudFN0eWxlXCIgcm9sZT1cImxpc3Rib3hcIiBbYXR0ci5pZF09XCJpZCArICdfbGlzdCdcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImxpc3RMYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtb3B0aW9uIFtuZ0Zvck9mXT1cIml0ZW1zXCIgbGV0LWk9XCJpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPcHRpb25Hcm91cChvcHRpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW2F0dHIuaWRdPVwiaWQgKyAnXycgKyBnZXRPcHRpb25JbmRleChpLCBzY3JvbGxlck9wdGlvbnMpXCIgY2xhc3M9XCJwLWF1dG9jb21wbGV0ZS1pdGVtLWdyb3VwXCIgW25nU3R5bGVdPVwieyBoZWlnaHQ6IHNjcm9sbGVyT3B0aW9ucy5pdGVtU2l6ZSArICdweCcgfVwiIHJvbGU9XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFncm91cFRlbXBsYXRlXCI+e3sgZ2V0T3B0aW9uR3JvdXBMYWJlbChvcHRpb24ub3B0aW9uR3JvdXApIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJncm91cFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogb3B0aW9uLm9wdGlvbkdyb3VwIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzT3B0aW9uR3JvdXAob3B0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWF1dG9jb21wbGV0ZS1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBoZWlnaHQ6IHNjcm9sbGVyT3B0aW9ucy5pdGVtU2l6ZSArICdweCcgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1oaWdobGlnaHQnOiBpc1NlbGVjdGVkKG9wdGlvbiksICdwLWZvY3VzJzogZm9jdXNlZE9wdGlvbkluZGV4KCkgPT09IGdldE9wdGlvbkluZGV4KGksIHNjcm9sbGVyT3B0aW9ucyksICdwLWRpc2FibGVkJzogaXNPcHRpb25EaXNhYmxlZChvcHRpb24pIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImlkICsgJ18nICsgZ2V0T3B0aW9uSW5kZXgoaSwgc2Nyb2xsZXJPcHRpb25zKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRPcHRpb25MYWJlbChvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc09wdGlvbkRpc2FibGVkKG9wdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcC1mb2N1c2VkXT1cImZvY3VzZWRPcHRpb25JbmRleCgpID09PSBnZXRPcHRpb25JbmRleChpLCBzY3JvbGxlck9wdGlvbnMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNldHNpemVdPVwiYXJpYVNldFNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcG9zaW5zZXRdPVwiZ2V0QXJpYVBvc0luc2V0KGdldE9wdGlvbkluZGV4KGksIHNjcm9sbGVyT3B0aW9ucykpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25PcHRpb25TZWxlY3QoJGV2ZW50LCBvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbk9wdGlvbk1vdXNlRW50ZXIoJGV2ZW50LCBnZXRPcHRpb25JbmRleChpLCBzY3JvbGxlck9wdGlvbnMpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbVRlbXBsYXRlXCI+e3sgZ2V0T3B0aW9uTGFiZWwob3B0aW9uKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogb3B0aW9uLCBpbmRleDogc2Nyb2xsZXJPcHRpb25zLmdldE9wdGlvbnMgPyBzY3JvbGxlck9wdGlvbnMuZ2V0T3B0aW9ucyhpKSA6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCIhaXRlbXMgfHwgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCA9PT0gMCAmJiBzaG93RW1wdHlNZXNzYWdlKVwiIGNsYXNzPVwicC1hdXRvY29tcGxldGUtZW1wdHktbWVzc2FnZVwiIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBzY3JvbGxlck9wdGlvbnMuaXRlbVNpemUgKyAncHgnIH1cIiByb2xlPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZW1wdHlUZW1wbGF0ZTsgZWxzZSBlbXB0eVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc2VhcmNoUmVzdWx0TWVzc2FnZVRleHQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgI2VtcHR5ICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiByb2xlPVwic3RhdHVzXCIgYXJpYS1saXZlPVwicG9saXRlXCIgY2xhc3M9XCJwLWhpZGRlbi1hY2Nlc3NpYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkTWVzc2FnZVRleHQgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2NheC1vdmVybGF5PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdjYXgtZWxlbWVudCBwLWlucHV0d3JhcHBlcicsXG4gICAgICAgICdbY2xhc3MucC1pbnB1dHdyYXBwZXItZmlsbGVkXSc6ICdmaWxsZWQnLFxuICAgICAgICAnW2NsYXNzLnAtaW5wdXR3cmFwcGVyLWZvY3VzXSc6ICcoKGZvY3VzZWQgJiYgIWRpc2FibGVkKSB8fCBhdXRvZm9jdXMpIHx8IG92ZXJsYXlWaXNpYmxlJyxcbiAgICAgICAgJ1tjbGFzcy5wLWF1dG9jb21wbGV0ZS1jbGVhcmFibGVdJzogJ3Nob3dDbGVhciAmJiAhZGlzYWJsZWQnXG4gICAgfSxcbiAgICBwcm92aWRlcnM6IFtBVVRPQ09NUExFVEVfVkFMVUVfQUNDRVNTT1JdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vYXV0b2NvbXBsZXRlLmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIC8qKlxuICAgICAqIE1pbmltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gaW5pdGlhdGUgYSBzZWFyY2guXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbWluTGVuZ3RoOiBudW1iZXIgPSAxO1xuICAgIC8qKlxuICAgICAqIERlbGF5IGJldHdlZW4ga2V5c3Ryb2tlcyB0byB3YWl0IGJlZm9yZSBzZW5kaW5nIGEgcXVlcnkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgZGVsYXk6IG51bWJlciA9IDMwMDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIG92ZXJsYXkgcGFuZWwgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwYW5lbFN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBvdmVybGF5IHBhbmVsIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgcGFuZWxTdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSW5saW5lIHN0eWxlIG9mIHRoZSBpbnB1dCBmaWVsZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpbnB1dFN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIElkZW50aWZpZXIgb2YgdGhlIGZvY3VzIGlucHV0IHRvIG1hdGNoIGEgbGFiZWwgZGVmaW5lZCBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSW5saW5lIHN0eWxlIG9mIHRoZSBpbnB1dCBmaWVsZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpbnB1dFN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBIaW50IHRleHQgZm9yIHRoZSBpbnB1dCBmaWVsZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIGlucHV0IGNhbm5vdCBiZSB0eXBlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVhZG9ubHk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTWF4aW11bSBoZWlnaHQgb2YgdGhlIHN1Z2dlc3Rpb25zIHBhbmVsLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNjcm9sbEhlaWdodDogc3RyaW5nID0gJzIwMHB4JztcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGlmIGRhdGEgaXMgbG9hZGVkIGFuZCBpbnRlcmFjdGVkIHdpdGggaW4gbGF6eSBtYW5uZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGxhenk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBkYXRhIHNob3VsZCBiZSBsb2FkZWQgb24gZGVtYW5kIGR1cmluZyBzY3JvbGwuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHZpcnR1YWxTY3JvbGw6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSGVpZ2h0IG9mIGFuIGl0ZW0gaW4gdGhlIGxpc3QgZm9yIFZpcnR1YWxTY3JvbGxpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdmlydHVhbFNjcm9sbEl0ZW1TaXplOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byB1c2UgdGhlIHNjcm9sbGVyIGZlYXR1cmUuIFRoZSBwcm9wZXJ0aWVzIG9mIHNjcm9sbGVyIGNvbXBvbmVudCBjYW4gYmUgdXNlZCBsaWtlIGFuIG9iamVjdCBpbiBpdC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB2aXJ0dWFsU2Nyb2xsT3B0aW9uczogU2Nyb2xsZXJPcHRpb25zIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlciBhbGxvd3MgaW4gdGhlIGlucHV0IGZpZWxkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogKHZhbHVlOiB1bmtub3duKSA9PiBudW1iZXJBdHRyaWJ1dGUodmFsdWUsIG51bGwpIH0pIG1heGxlbmd0aDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGlucHV0IGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgYW4gaW5wdXQgZmllbGQgbXVzdCBiZSBmaWxsZWQgb3V0IGJlZm9yZSBzdWJtaXR0aW5nIHRoZSBmb3JtLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTaXplIG9mIHRoZSBpbnB1dCBmaWVsZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBzaXplOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGFyZ2V0IGVsZW1lbnQgdG8gYXR0YWNoIHRoZSBvdmVybGF5LCB2YWxpZCB2YWx1ZXMgYXJlIFwiYm9keVwiIG9yIGEgbG9jYWwgbmctdGVtcGxhdGUgdmFyaWFibGUgb2YgYW5vdGhlciBlbGVtZW50IChub3RlOiB1c2UgYmluZGluZyB3aXRoIGJyYWNrZXRzIGZvciB0ZW1wbGF0ZSB2YXJpYWJsZXMsIGUuZy4gW2FwcGVuZFRvXT1cIm15ZGl2XCIgZm9yIGEgZGl2IGVsZW1lbnQgaGF2aW5nICNteWRpdiBhcyB2YXJpYWJsZSBuYW1lKS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcHBlbmRUbzogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmIHwgVGVtcGxhdGVSZWY8YW55PiB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgfCBhbnk7XG4gICAgLyoqXG4gICAgICogV2hlbiBlbmFibGVkLCBoaWdobGlnaHRzIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0IGJ5IGRlZmF1bHQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9IaWdobGlnaHQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBhdXRvY29tcGxldGUgY2xlYXJzIHRoZSBtYW51YWwgaW5wdXQgaWYgaXQgZG9lcyBub3QgbWF0Y2ggb2YgdGhlIHN1Z2dlc3Rpb25zIHRvIGZvcmNlIG9ubHkgYWNjZXB0aW5nIHZhbHVlcyBmcm9tIHRoZSBzdWdnZXN0aW9ucy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZm9yY2VTZWxlY3Rpb246IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVHlwZSBvZiB0aGUgaW5wdXQsIGRlZmF1bHRzIHRvIFwidGV4dFwiLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHR5cGU6IHN0cmluZyA9ICd0ZXh0JztcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgbWFuYWdlIGxheWVyaW5nLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvWkluZGV4OiBib29sZWFuID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBCYXNlIHpJbmRleCB2YWx1ZSB0byB1c2UgaW4gbGF5ZXJpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgYmFzZVpJbmRleDogbnVtYmVyID0gMDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBpbnB1dCBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBkcm9wZG93biBidXR0b24gZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZHJvcGRvd25BcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgb25lIG9yIG1vcmUgSURzIGluIHRoZSBET00gdGhhdCBsYWJlbHMgdGhlIGlucHV0IGZpZWxkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSWNvbiBjbGFzcyBvZiB0aGUgZHJvcGRvd24gaWNvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkcm9wZG93bkljb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBFbnN1cmVzIHVuaXF1ZW5lc3Mgb2Ygc2VsZWN0ZWQgaXRlbXMgb24gbXVsdGlwbGUgbW9kZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgdW5pcXVlOiBib29sZWFuID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGRpc3BsYXkgb3B0aW9ucyBhcyBncm91cGVkIHdoZW4gbmVzdGVkIG9wdGlvbnMgYXJlIHByb3ZpZGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBncm91cDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHJ1biBhIHF1ZXJ5IHdoZW4gaW5wdXQgcmVjZWl2ZXMgZm9jdXMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGNvbXBsZXRlT25Gb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoZW4gZW5hYmxlZCwgYSBjbGVhciBpY29uIGlzIGRpc3BsYXllZCB0byBjbGVhciB0aGUgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dDbGVhcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEZpZWxkIG9mIGEgc3VnZ2VzdGVkIG9iamVjdCB0byByZXNvbHZlIGFuZCBkaXNwbGF5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqIEBkZXByZWNhdGVkIHVzZSBvcHRpb25MYWJlbCBwcm9wZXJ0eSBpbnN0ZWFkXG4gICAgICovXG4gICAgQElucHV0KCkgZmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEaXNwbGF5cyBhIGJ1dHRvbiBuZXh0IHRvIHRoZSBpbnB1dCBmaWVsZCB3aGVuIGVuYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRyb3Bkb3duOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgZW1wdHkgbWVzc2FnZSBvciBub3QuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dFbXB0eU1lc3NhZ2U6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgYmVoYXZpb3IgZHJvcGRvd24gYnV0dG9uLiBEZWZhdWx0IFwiYmxhbmtcIiBtb2RlIHNlbmRzIGFuIGVtcHR5IHN0cmluZyBhbmQgXCJjdXJyZW50XCIgbW9kZSBzZW5kcyB0aGUgaW5wdXQgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZHJvcGRvd25Nb2RlOiBzdHJpbmcgPSAnYmxhbmsnO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyBpZiBtdWx0aXBsZSB2YWx1ZXMgY2FuIGJlIHNlbGVjdGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBtdWx0aXBsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmRleCBvZiB0aGUgZWxlbWVudCBpbiB0YWJiaW5nIG9yZGVyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHRhYmluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQSBwcm9wZXJ0eSB0byB1bmlxdWVseSBpZGVudGlmeSBhIHZhbHVlIGluIG9wdGlvbnMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZGF0YUtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRleHQgdG8gZGlzcGxheSB3aGVuIHRoZXJlIGlzIG5vIGRhdGEuIERlZmF1bHRzIHRvIGdsb2JhbCB2YWx1ZSBpbiBpMThuIHRyYW5zbGF0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZW1wdHlNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVHJhbnNpdGlvbiBvcHRpb25zIG9mIHRoZSBzaG93IGFuaW1hdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG93VHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcuMTJzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJztcbiAgICAvKipcbiAgICAgKiBUcmFuc2l0aW9uIG9wdGlvbnMgb2YgdGhlIGhpZGUgYW5pbWF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGhpZGVUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJy4xcyBsaW5lYXInO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIGNvbXBvbmVudCBzaG91bGQgYXV0b21hdGljYWxseSBnZXQgZm9jdXMgb24gbG9hZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXV0b2ZvY3VzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gZGVmaW5lIGEgc3RyaW5nIHRoYXQgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGF1dG9jb21wbGV0ZTogc3RyaW5nID0gJ29mZic7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgb3B0aW9ucyBmaWVsZCBvZiBhbiBvcHRpb24gZ3JvdXAuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3B0aW9uR3JvdXBDaGlsZHJlbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ2l0ZW1zJztcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBsYWJlbCBmaWVsZCBvZiBhbiBvcHRpb24gZ3JvdXAuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3B0aW9uR3JvdXBMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ2xhYmVsJztcbiAgICAvKipcbiAgICAgKiBPcHRpb25zIGZvciB0aGUgb3ZlcmxheSBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG92ZXJsYXlPcHRpb25zOiBPdmVybGF5T3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiBzdWdnZXN0aW9ucyB0byBkaXNwbGF5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCBzdWdnZXN0aW9ucygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWdnZXN0aW9ucygpO1xuICAgIH1cbiAgICBzZXQgc3VnZ2VzdGlvbnModmFsdWU6IGFueVtdKSB7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zLnNldCh2YWx1ZSk7XG4gICAgICAgIHRoaXMuaGFuZGxlU3VnZ2VzdGlvbnNDaGFuZ2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRWxlbWVudCBkaW1lbnNpb25zIG9mIG9wdGlvbiBmb3IgdmlydHVhbCBzY3JvbGxpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIHZpcnR1YWxTY3JvbGxJdGVtU2l6ZSBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCBpdGVtU2l6ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbVNpemUgYXMgbnVtYmVyO1xuICAgIH1cbiAgICBzZXQgaXRlbVNpemUodmFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5faXRlbVNpemUgPSB2YWw7XG4gICAgICAgIGNvbnNvbGUud2FybignVGhlIGl0ZW1TaXplIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQsIHVzZSB2aXJ0dWFsU2Nyb2xsSXRlbVNpemUgcHJvcGVydHkgaW5zdGVhZC4nKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgbmFtZSBvciBnZXR0ZXIgZnVuY3Rpb24gdG8gdXNlIGFzIHRoZSBsYWJlbCBvZiBhbiBvcHRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3B0aW9uTGFiZWw6IHN0cmluZyB8ICgoaXRlbTogYW55KSA9PiBzdHJpbmcpIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IG5hbWUgb3IgZ2V0dGVyIGZ1bmN0aW9uIHRvIHVzZSBhcyB0aGUgdmFsdWUgb2YgYW4gb3B0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9wdGlvblZhbHVlOiBzdHJpbmcgfCAoKGl0ZW06IGFueSkgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGV4dCB0byBkaXNwbGF5IHdoZW4gdGhlIHNlYXJjaCBpcyBhY3RpdmUuIERlZmF1bHRzIHRvIGdsb2JhbCB2YWx1ZSBpbiBpMThuIHRyYW5zbGF0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICogQGRlZmF1bHRWYWx1ZSAnezB9IHJlc3VsdHMgYXJlIGF2YWlsYWJsZSdcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZWFyY2hNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGV4dCB0byBkaXNwbGF5IHdoZW4gZmlsdGVyaW5nIGRvZXMgbm90IHJldHVybiBhbnkgcmVzdWx0cy4gRGVmYXVsdHMgdG8gZ2xvYmFsIHZhbHVlIGluIGkxOG4gdHJhbnNsYXRpb24gY29uZmlndXJhdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKiBAZGVmYXVsdFZhbHVlICdObyBzZWxlY3RlZCBpdGVtJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGVtcHR5U2VsZWN0aW9uTWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRleHQgdG8gYmUgZGlzcGxheWVkIGluIGhpZGRlbiBhY2Nlc3NpYmxlIGZpZWxkIHdoZW4gb3B0aW9ucyBhcmUgc2VsZWN0ZWQuIERlZmF1bHRzIHRvIGdsb2JhbCB2YWx1ZSBpbiBpMThuIHRyYW5zbGF0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICogQGRlZmF1bHRWYWx1ZSAnezB9IGl0ZW1zIHNlbGVjdGVkJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNlbGVjdGlvbk1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGZvY3VzIG9uIHRoZSBmaXJzdCB2aXNpYmxlIG9yIHNlbGVjdGVkIGVsZW1lbnQgd2hlbiB0aGUgb3ZlcmxheSBwYW5lbCBpcyBzaG93bi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXV0b09wdGlvbkZvY3VzOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogV2hlbiBlbmFibGVkLCB0aGUgZm9jdXNlZCBvcHRpb24gaXMgc2VsZWN0ZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNlbGVjdE9uRm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTG9jYWxlIHRvIHVzZSBpbiBzZWFyY2hpbmcuIFRoZSBkZWZhdWx0IGxvY2FsZSBpcyB0aGUgaG9zdCBlbnZpcm9ubWVudCdzIGN1cnJlbnQgbG9jYWxlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZWFyY2hMb2NhbGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgbmFtZSBvciBnZXR0ZXIgZnVuY3Rpb24gdG8gdXNlIGFzIHRoZSBkaXNhYmxlZCBmbGFnIG9mIGFuIG9wdGlvbiwgZGVmYXVsdHMgdG8gZmFsc2Ugd2hlbiBub3QgZGVmaW5lZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBvcHRpb25EaXNhYmxlZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gZW5hYmxlZCwgdGhlIGhvdmVyZWQgb3B0aW9uIHdpbGwgYmUgZm9jdXNlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZm9jdXNPbkhvdmVyOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgaW5wdXQgdmFyaWFudCBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHZhcmlhbnQ6ICdmaWxsZWQnIHwgJ291dGxpbmVkJyA9ICdvdXRsaW5lZCc7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHRvIHNlYXJjaCBmb3Igc3VnZ2VzdGlvbnMuXG4gICAgICogQHBhcmFtIHtBdXRvQ29tcGxldGVDb21wbGV0ZUV2ZW50fSBldmVudCAtIEN1c3RvbSBjb21wbGV0ZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgY29tcGxldGVNZXRob2Q6IEV2ZW50RW1pdHRlcjxBdXRvQ29tcGxldGVDb21wbGV0ZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXV0b0NvbXBsZXRlQ29tcGxldGVFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhIHN1Z2dlc3Rpb24gaXMgc2VsZWN0ZWQuXG4gICAgICogQHBhcmFtIHtBdXRvQ29tcGxldGVTZWxlY3RFdmVudH0gZXZlbnQgLSBjdXN0b20gc2VsZWN0IGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvblNlbGVjdDogRXZlbnRFbWl0dGVyPEF1dG9Db21wbGV0ZVNlbGVjdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXV0b0NvbXBsZXRlU2VsZWN0RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gYSBzZWxlY3RlZCB2YWx1ZSBpcyByZW1vdmVkLlxuICAgICAqIEBwYXJhbSB7QXV0b0NvbXBsZXRlVW5zZWxlY3RFdmVudH0gZXZlbnQgLSBjdXN0b20gdW5zZWxlY3QgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uVW5zZWxlY3Q6IEV2ZW50RW1pdHRlcjxBdXRvQ29tcGxldGVVbnNlbGVjdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXV0b0NvbXBsZXRlVW5zZWxlY3RFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgY29tcG9uZW50IHJlY2VpdmVzIGZvY3VzLlxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Gb2N1czogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgY29tcG9uZW50IGxvc2VzIGZvY3VzLlxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB0byB3aGVuIGRyb3Bkb3duIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgICAqIEBwYXJhbSB7QXV0b0NvbXBsZXRlRHJvcGRvd25DbGlja0V2ZW50fSBldmVudCAtIGN1c3RvbSBkcm9wZG93biBjbGljayBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Ecm9wZG93bkNsaWNrOiBFdmVudEVtaXR0ZXI8QXV0b0NvbXBsZXRlRHJvcGRvd25DbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXV0b0NvbXBsZXRlRHJvcGRvd25DbGlja0V2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGNsZWFyIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25DbGVhcjogRXZlbnRFbWl0dGVyPEV2ZW50IHwgdW5kZWZpbmVkPiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQgfCB1bmRlZmluZWQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIG9uIGlucHV0IGtleSB1cC5cbiAgICAgKiBAcGFyYW0ge0tleWJvYXJkRXZlbnR9IGV2ZW50IC0gS2V5Ym9hcmQgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uS2V5VXA6IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gb3ZlcmxheSBpcyBzaG93bi5cbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIEJyb3dzZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uU2hvdzogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIG9uIG92ZXJsYXkgaXMgaGlkZGVuLlxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25IaWRlOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gbGF6eSBsb2FkIGRhdGEuXG4gICAgICogQHBhcmFtIHtBdXRvQ29tcGxldGVMYXp5TG9hZEV2ZW50fSBldmVudCAtIExhenkgbG9hZCBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25MYXp5TG9hZDogRXZlbnRFbWl0dGVyPEF1dG9Db21wbGV0ZUxhenlMb2FkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRvQ29tcGxldGVMYXp5TG9hZEV2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyRUw6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgnZm9jdXNJbnB1dCcpIGlucHV0RUw6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgnbXVsdGlJbicpIG11bHRpSW5wdXRFbDogTnVsbGFibGU8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKCdtdWx0aUNvbnRhaW5lcicpIG11bHRpQ29udGFpbmVyRUw6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgnZGRCdG4nKSBkcm9wZG93bkJ1dHRvbjogTnVsbGFibGU8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKCdpdGVtcycpIGl0ZW1zVmlld0NoaWxkOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIEBWaWV3Q2hpbGQoJ3Njcm9sbGVyJykgc2Nyb2xsZXI6IE51bGxhYmxlPFNjcm9sbGVyPjtcblxuICAgIEBWaWV3Q2hpbGQoJ292ZXJsYXknKSBvdmVybGF5Vmlld0NoaWxkITogT3ZlcmxheTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oQ2F4VGVtcGxhdGUpIHRlbXBsYXRlczogTnVsbGFibGU8UXVlcnlMaXN0PENheFRlbXBsYXRlPj47XG5cbiAgICBfaXRlbVNpemU6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICBpdGVtc1dyYXBwZXI6IE51bGxhYmxlPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIGl0ZW1UZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBlbXB0eVRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIGhlYWRlclRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIGZvb3RlclRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIHNlbGVjdGVkSXRlbVRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIGdyb3VwVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgbG9hZGVyVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgcmVtb3ZlSWNvblRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIGxvYWRpbmdJY29uVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgY2xlYXJJY29uVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgZHJvcGRvd25JY29uVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgdmFsdWU6IHN0cmluZyB8IGFueTtcblxuICAgIF9zdWdnZXN0aW9ucyA9IHNpZ25hbDxhbnk+KG51bGwpO1xuXG4gICAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIG9uTW9kZWxUb3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgdGltZW91dDogTnVsbGFibGU8YW55PjtcblxuICAgIG92ZXJsYXlWaXNpYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgc3VnZ2VzdGlvbnNVcGRhdGVkOiBOdWxsYWJsZTxib29sZWFuPjtcblxuICAgIGhpZ2hsaWdodE9wdGlvbjogYW55O1xuXG4gICAgaGlnaGxpZ2h0T3B0aW9uQ2hhbmdlZDogTnVsbGFibGU8Ym9vbGVhbj47XG5cbiAgICBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBfZmlsbGVkOiBib29sZWFuO1xuXG4gICAgZ2V0IGZpbGxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGxlZDtcbiAgICB9XG4gICAgc2V0IGZpbGxlZCh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuX2ZpbGxlZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGxvYWRpbmc6IE51bGxhYmxlPGJvb2xlYW4+O1xuXG4gICAgc2Nyb2xsSGFuZGxlcjogTnVsbGFibGU8Q29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXI+O1xuXG4gICAgbGlzdElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBzZWFyY2hUaW1lb3V0OiBhbnk7XG5cbiAgICBkaXJ0eTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgbW9kZWxWYWx1ZSA9IHNpZ25hbDxhbnk+KG51bGwpO1xuXG4gICAgZm9jdXNlZE11bHRpcGxlT3B0aW9uSW5kZXggPSBzaWduYWw8bnVtYmVyPigtMSk7XG5cbiAgICBmb2N1c2VkT3B0aW9uSW5kZXggPSBzaWduYWw8bnVtYmVyPigtMSk7XG5cbiAgICB2aXNpYmxlT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAgPyB0aGlzLmZsYXRPcHRpb25zKHRoaXMuX3N1Z2dlc3Rpb25zKCkpIDogdGhpcy5fc3VnZ2VzdGlvbnMoKSB8fCBbXTtcbiAgICB9KTtcblxuICAgIGlucHV0VmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG1vZGVsVmFsdWUgPSB0aGlzLm1vZGVsVmFsdWUoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSB0aGlzLmdldFNlbGVjdGVkT3B0aW9uKG1vZGVsVmFsdWUpO1xuXG4gICAgICAgIGlmIChtb2RlbFZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG1vZGVsVmFsdWUgPT09ICdvYmplY3QnIHx8IHRoaXMub3B0aW9uVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuZ2V0T3B0aW9uTGFiZWwoc2VsZWN0ZWRPcHRpb24pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhYmVsICE9IG51bGwgPyBsYWJlbCA6IG1vZGVsVmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb2RlbFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBnZXQgZm9jdXNlZE11bHRpcGxlT3B0aW9uSWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvY3VzZWRNdWx0aXBsZU9wdGlvbkluZGV4KCkgIT09IC0xID8gYCR7dGhpcy5pZH1fbXVsdGlwbGVfb3B0aW9uXyR7dGhpcy5mb2N1c2VkTXVsdGlwbGVPcHRpb25JbmRleCgpfWAgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkT3B0aW9uSWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpICE9PSAtMSA/IGAke3RoaXMuaWR9XyR7dGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKX1gIDogbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgY29udGFpbmVyQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAncC1hdXRvY29tcGxldGUgcC1jb21wb25lbnQgcC1pbnB1dHdyYXBwZXInOiB0cnVlLFxuICAgICAgICAgICAgJ3AtZGlzYWJsZWQnOiB0aGlzLmRpc2FibGVkLFxuICAgICAgICAgICAgJ3AtZm9jdXMnOiB0aGlzLmZvY3VzZWQsXG4gICAgICAgICAgICAncC1hdXRvY29tcGxldGUtZGQnOiB0aGlzLmRyb3Bkb3duLFxuICAgICAgICAgICAgJ3AtYXV0b2NvbXBsZXRlLW11bHRpcGxlJzogdGhpcy5tdWx0aXBsZSxcbiAgICAgICAgICAgICdwLWlucHV0d3JhcHBlci1mb2N1cyc6IHRoaXMuZm9jdXNlZCxcbiAgICAgICAgICAgICdwLW92ZXJsYXktb3Blbic6IHRoaXMub3ZlcmxheVZpc2libGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXQgbXVsdGlDb250YWluZXJDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHsgJ3AtYXV0b2NvbXBsZXRlLW11bHRpcGxlLWNvbnRhaW5lciBwLWNvbXBvbmVudCBwLWlucHV0dGV4dCc6IHRydWUsICdwLXZhcmlhbnQtZmlsbGVkJzogdGhpcy52YXJpYW50ID09PSAnZmlsbGVkJyB8fCB0aGlzLmNvbmZpZy5pbnB1dFN0eWxlKCkgPT09ICdmaWxsZWQnIH07XG4gICAgfVxuXG4gICAgZ2V0IHBhbmVsQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAncC1hdXRvY29tcGxldGUtcGFuZWwgcC1jb21wb25lbnQnOiB0cnVlLFxuICAgICAgICAgICAgJ3AtaW5wdXQtZmlsbGVkJzogdGhpcy5jb25maWcuaW5wdXRTdHlsZSgpID09PSAnZmlsbGVkJyxcbiAgICAgICAgICAgICdwLXJpcHBsZS1kaXNhYmxlZCc6IHRoaXMuY29uZmlnLnJpcHBsZSA9PT0gZmFsc2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXQgcGFuZWxTdHlsZXMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnbWF4LWhlaWdodCc6IHRoaXMudmlydHVhbFNjcm9sbCA/ICdhdXRvJyA6IHRoaXMuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgICAgLi4udGhpcy5wYW5lbFN0eWxlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0IGlucHV0Q2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAncC1hdXRvY29tcGxldGUtaW5wdXQgcC1pbnB1dHRleHQgcC1jb21wb25lbnQnOiAhdGhpcy5tdWx0aXBsZSxcbiAgICAgICAgICAgICdwLWF1dG9jb21wbGV0ZS1kZC1pbnB1dCc6IHRoaXMuZHJvcGRvd24sXG4gICAgICAgICAgICAncC12YXJpYW50LWZpbGxlZCc6IHRoaXMudmFyaWFudCA9PT0gJ2ZpbGxlZCcgfHwgdGhpcy5jb25maWcuaW5wdXRTdHlsZSgpID09PSAnZmlsbGVkJ1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldCBzZWFyY2hSZXN1bHRNZXNzYWdlVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLmlzTm90RW1wdHkodGhpcy52aXNpYmxlT3B0aW9ucygpKSAmJiB0aGlzLm92ZXJsYXlWaXNpYmxlID8gdGhpcy5zZWFyY2hNZXNzYWdlVGV4dC5yZXBsYWNlQWxsKCd7MH0nLCB0aGlzLnZpc2libGVPcHRpb25zKCkubGVuZ3RoKSA6IHRoaXMuZW1wdHlTZWFyY2hNZXNzYWdlVGV4dDtcbiAgICB9XG5cbiAgICBnZXQgc2VhcmNoTWVzc2FnZVRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaE1lc3NhZ2UgfHwgdGhpcy5jb25maWcudHJhbnNsYXRpb24uc2VhcmNoTWVzc2FnZSB8fCAnJztcbiAgICB9XG5cbiAgICBnZXQgZW1wdHlTZWFyY2hNZXNzYWdlVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1wdHlNZXNzYWdlIHx8IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmVtcHR5U2VhcmNoTWVzc2FnZSB8fCAnJztcbiAgICB9XG5cbiAgICBnZXQgc2VsZWN0aW9uTWVzc2FnZVRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbk1lc3NhZ2UgfHwgdGhpcy5jb25maWcudHJhbnNsYXRpb24uc2VsZWN0aW9uTWVzc2FnZSB8fCAnJztcbiAgICB9XG5cbiAgICBnZXQgZW1wdHlTZWxlY3Rpb25NZXNzYWdlVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1wdHlTZWxlY3Rpb25NZXNzYWdlIHx8IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmVtcHR5U2VsZWN0aW9uTWVzc2FnZSB8fCAnJztcbiAgICB9XG5cbiAgICBnZXQgc2VsZWN0ZWRNZXNzYWdlVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzU2VsZWN0ZWRPcHRpb24oKSA/IHRoaXMuc2VsZWN0aW9uTWVzc2FnZVRleHQucmVwbGFjZUFsbCgnezB9JywgdGhpcy5tdWx0aXBsZSA/IHRoaXMubW9kZWxWYWx1ZSgpLmxlbmd0aCA6ICcxJykgOiB0aGlzLmVtcHR5U2VsZWN0aW9uTWVzc2FnZVRleHQ7XG4gICAgfVxuXG4gICAgZ2V0IGFyaWFTZXRTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlT3B0aW9ucygpLmZpbHRlcigob3B0aW9uKSA9PiAhdGhpcy5pc09wdGlvbkdyb3VwKG9wdGlvbikpLmxlbmd0aDtcbiAgICB9XG5cbiAgICBnZXQgbGlzdExhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuQVJJQSlbJ2xpc3RMYWJlbCddO1xuICAgIH1cblxuICAgIGdldCB2aXJ0dWFsU2Nyb2xsZXJEaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnZpcnR1YWxTY3JvbGw7XG4gICAgfVxuXG4gICAgZ2V0IG9wdGlvblZhbHVlU2VsZWN0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5tb2RlbFZhbHVlKCkgPT09ICdzdHJpbmcnICYmIHRoaXMub3B0aW9uVmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGlzVmlzaWJsZUNsZWFySWNvbigpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWxWYWx1ZSgpICE9IG51bGwgJiYgdGhpcy5oYXNTZWxlY3RlZE9wdGlvbigpICYmIHRoaXMuc2hvd0NsZWFyICYmICF0aGlzLmRpc2FibGVkICYmICF0aGlzLmxvYWRpbmc7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgY29uZmlnOiBjYXhDb25maWcsXG4gICAgICAgIHB1YmxpYyBvdmVybGF5U2VydmljZTogT3ZlcmxheVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgem9uZTogTmdab25lXG4gICAgKSB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbGxlZCA9IE9iamVjdFV0aWxzLmlzTm90RW1wdHkodGhpcy5tb2RlbFZhbHVlKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pZCA9IHRoaXMuaWQgfHwgVW5pcXVlQ29tcG9uZW50SWQoKTtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICAvL1VzZSB0aW1lb3V0cyBhcyBzaW5jZSBBbmd1bGFyIDQuMiwgQWZ0ZXJWaWV3Q2hlY2tlZCBpcyBicm9rZW4gYW5kIG5vdCBjYWxsZWQgYWZ0ZXIgcGFuZWwgaXMgdXBkYXRlZFxuICAgICAgICBpZiAodGhpcy5zdWdnZXN0aW9uc1VwZGF0ZWQgJiYgdGhpcy5vdmVybGF5Vmlld0NoaWxkKSB7XG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5Vmlld0NoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlWaWV3Q2hpbGQuYWxpZ25PdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zVXBkYXRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgICh0aGlzLnRlbXBsYXRlcyBhcyBRdWVyeUxpc3Q8Q2F4VGVtcGxhdGU+KS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnaXRlbSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdncm91cCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnc2VsZWN0ZWRJdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZW1wdHknOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3Rlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2xvYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3JlbW92ZXRva2VuaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdsb2FkaW5naWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ0ljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnY2xlYXJpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhckljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZHJvcGRvd25pY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bkljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlU3VnZ2VzdGlvbnNDaGFuZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zKCkubGVuZ3RoID4gMCB8fCB0aGlzLnNob3dFbXB0eU1lc3NhZ2UgPyB0aGlzLnNob3coKSA6ICEhdGhpcy5lbXB0eVRlbXBsYXRlID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzZWRPcHRpb25JbmRleCA9IHRoaXMub3ZlcmxheVZpc2libGUgJiYgdGhpcy5hdXRvT3B0aW9uRm9jdXMgPyB0aGlzLmZpbmRGaXJzdEZvY3VzZWRPcHRpb25JbmRleCgpIDogLTE7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoZm9jdXNlZE9wdGlvbkluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuc3VnZ2VzdGlvbnNVcGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZsYXRPcHRpb25zKG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIChvcHRpb25zIHx8IFtdKS5yZWR1Y2UoKHJlc3VsdCwgb3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goeyBvcHRpb25Hcm91cDogb3B0aW9uLCBncm91cDogdHJ1ZSwgaW5kZXggfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbkdyb3VwQ2hpbGRyZW4gPSB0aGlzLmdldE9wdGlvbkdyb3VwQ2hpbGRyZW4ob3B0aW9uKTtcblxuICAgICAgICAgICAgb3B0aW9uR3JvdXBDaGlsZHJlbiAmJiBvcHRpb25Hcm91cENoaWxkcmVuLmZvckVhY2goKG8pID0+IHJlc3VsdC5wdXNoKG8pKTtcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSwgW10pO1xuICAgIH1cblxuICAgIGlzT3B0aW9uR3JvdXAob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkdyb3VwTGFiZWwgJiYgb3B0aW9uLm9wdGlvbkdyb3VwICYmIG9wdGlvbi5ncm91cDtcbiAgICB9XG5cbiAgICBmaW5kRmlyc3RPcHRpb25JbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZU9wdGlvbnMoKS5maW5kSW5kZXgoKG9wdGlvbikgPT4gdGhpcy5pc1ZhbGlkT3B0aW9uKG9wdGlvbikpO1xuICAgIH1cblxuICAgIGZpbmRMYXN0T3B0aW9uSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5maW5kTGFzdEluZGV4KHRoaXMudmlzaWJsZU9wdGlvbnMoKSwgKG9wdGlvbikgPT4gdGhpcy5pc1ZhbGlkT3B0aW9uKG9wdGlvbikpO1xuICAgIH1cblxuICAgIGZpbmRGaXJzdEZvY3VzZWRPcHRpb25JbmRleCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMuZmluZFNlbGVjdGVkT3B0aW9uSW5kZXgoKTtcblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleCA8IDAgPyB0aGlzLmZpbmRGaXJzdE9wdGlvbkluZGV4KCkgOiBzZWxlY3RlZEluZGV4O1xuICAgIH1cblxuICAgIGZpbmRMYXN0Rm9jdXNlZE9wdGlvbkluZGV4KCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5maW5kU2VsZWN0ZWRPcHRpb25JbmRleCgpO1xuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZEluZGV4IDwgMCA/IHRoaXMuZmluZExhc3RPcHRpb25JbmRleCgpIDogc2VsZWN0ZWRJbmRleDtcbiAgICB9XG5cbiAgICBmaW5kU2VsZWN0ZWRPcHRpb25JbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzU2VsZWN0ZWRPcHRpb24oKSA/IHRoaXMudmlzaWJsZU9wdGlvbnMoKS5maW5kSW5kZXgoKG9wdGlvbikgPT4gdGhpcy5pc1ZhbGlkU2VsZWN0ZWRPcHRpb24ob3B0aW9uKSkgOiAtMTtcbiAgICB9XG5cbiAgICBmaW5kTmV4dE9wdGlvbkluZGV4KGluZGV4KSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZWRPcHRpb25JbmRleCA9XG4gICAgICAgICAgICBpbmRleCA8IHRoaXMudmlzaWJsZU9wdGlvbnMoKS5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgPyB0aGlzLnZpc2libGVPcHRpb25zKClcbiAgICAgICAgICAgICAgICAgICAgICAuc2xpY2UoaW5kZXggKyAxKVxuICAgICAgICAgICAgICAgICAgICAgIC5maW5kSW5kZXgoKG9wdGlvbikgPT4gdGhpcy5pc1ZhbGlkT3B0aW9uKG9wdGlvbikpXG4gICAgICAgICAgICAgICAgOiAtMTtcblxuICAgICAgICByZXR1cm4gbWF0Y2hlZE9wdGlvbkluZGV4ID4gLTEgPyBtYXRjaGVkT3B0aW9uSW5kZXggKyBpbmRleCArIDEgOiBpbmRleDtcbiAgICB9XG5cbiAgICBmaW5kUHJldk9wdGlvbkluZGV4KGluZGV4KSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZWRPcHRpb25JbmRleCA9IGluZGV4ID4gMCA/IE9iamVjdFV0aWxzLmZpbmRMYXN0SW5kZXgodGhpcy52aXNpYmxlT3B0aW9ucygpLnNsaWNlKDAsIGluZGV4KSwgKG9wdGlvbikgPT4gdGhpcy5pc1ZhbGlkT3B0aW9uKG9wdGlvbikpIDogLTE7XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoZWRPcHRpb25JbmRleCA+IC0xID8gbWF0Y2hlZE9wdGlvbkluZGV4IDogaW5kZXg7XG4gICAgfVxuXG4gICAgaXNWYWxpZFNlbGVjdGVkT3B0aW9uKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkT3B0aW9uKG9wdGlvbikgJiYgdGhpcy5pc1NlbGVjdGVkKG9wdGlvbik7XG4gICAgfVxuXG4gICAgaXNWYWxpZE9wdGlvbihvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbiAmJiAhKHRoaXMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24pIHx8IHRoaXMuaXNPcHRpb25Hcm91cChvcHRpb24pKTtcbiAgICB9XG5cbiAgICBpc09wdGlvbkRpc2FibGVkKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25EaXNhYmxlZCA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uLCB0aGlzLm9wdGlvbkRpc2FibGVkKSA6IGZhbHNlO1xuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQob3B0aW9uKSB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51bmlxdWUgPyB0aGlzLm1vZGVsVmFsdWUoKT8uZmluZCgobW9kZWwpID0+IE9iamVjdFV0aWxzLmVxdWFscyhtb2RlbCwgdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pLCB0aGlzLmVxdWFsaXR5S2V5KCkpKSA6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5lcXVhbHModGhpcy5tb2RlbFZhbHVlKCksIHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSwgdGhpcy5lcXVhbGl0eUtleSgpKTtcbiAgICB9XG5cbiAgICBpc09wdGlvbk1hdGNoZWQob3B0aW9uLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkT3B0aW9uKG9wdGlvbikgJiYgdGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pLnRvTG9jYWxlTG93ZXJDYXNlKHRoaXMuc2VhcmNoTG9jYWxlKSA9PT0gdmFsdWUudG9Mb2NhbGVMb3dlckNhc2UodGhpcy5zZWFyY2hMb2NhbGUpO1xuICAgIH1cblxuICAgIGlzSW5wdXRDbGlja2VkKGV2ZW50KSB7XG4gICAgICAgIHJldHVybiBldmVudC50YXJnZXQgPT09IHRoaXMuaW5wdXRFTC5uYXRpdmVFbGVtZW50O1xuICAgIH1cbiAgICBpc0Ryb3Bkb3duQ2xpY2tlZChldmVudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kcm9wZG93bkJ1dHRvbj8ubmF0aXZlRWxlbWVudCA/IGV2ZW50LnRhcmdldCA9PT0gdGhpcy5kcm9wZG93bkJ1dHRvbi5uYXRpdmVFbGVtZW50IHx8IHRoaXMuZHJvcGRvd25CdXR0b24ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpIDogZmFsc2U7XG4gICAgfVxuICAgIGVxdWFsaXR5S2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhS2V5OyAvLyBUT0RPOiBUaGUgJ29wdGlvblZhbHVlJyBwcm9wZXJ0aWVzIGNhbiBiZSBhZGRlZC5cbiAgICB9XG5cbiAgICBvbkNvbnRhaW5lckNsaWNrKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMubG9hZGluZyB8fCB0aGlzLmlzSW5wdXRDbGlja2VkKGV2ZW50KSB8fCB0aGlzLmlzRHJvcGRvd25DbGlja2VkKGV2ZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlWaWV3Q2hpbGQgfHwgIXRoaXMub3ZlcmxheVZpZXdDaGlsZC5vdmVybGF5Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIuZm9jdXModGhpcy5pbnB1dEVMLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlRHJvcGRvd25DbGljayhldmVudCkge1xuICAgICAgICBsZXQgcXVlcnkgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIuZm9jdXModGhpcy5pbnB1dEVMLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgcXVlcnkgPSB0aGlzLmlucHV0RUwubmF0aXZlRWxlbWVudC52YWx1ZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25Nb2RlID09PSAnYmxhbmsnKSB0aGlzLnNlYXJjaChldmVudCwgJycsICdkcm9wZG93bicpO1xuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kcm9wZG93bk1vZGUgPT09ICdjdXJyZW50JykgdGhpcy5zZWFyY2goZXZlbnQsIHF1ZXJ5LCAnZHJvcGRvd24nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25Ecm9wZG93bkNsaWNrLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgcXVlcnkgfSk7XG4gICAgfVxuXG4gICAgb25JbnB1dChldmVudCkge1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hUaW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBxdWVyeSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMubWF4bGVuZ3RoICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeSA9IHF1ZXJ5LnNwbGl0KCcnKS5zbGljZSgwLCB0aGlzLm1heGxlbmd0aCkuam9pbignJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUgJiYgIXRoaXMuZm9yY2VTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwocXVlcnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHF1ZXJ5Lmxlbmd0aCA9PT0gMCAmJiAhdGhpcy5tdWx0aXBsZSAmJiAhdGhpcy5jb21wbGV0ZU9uRm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMub25DbGVhci5lbWl0KCk7XG5cbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHF1ZXJ5Lmxlbmd0aCA+PSB0aGlzLm1pbkxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldCgtMSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2goZXZlbnQsIHF1ZXJ5LCAnaW5wdXQnKTtcbiAgICAgICAgICAgICAgICB9LCB0aGlzLmRlbGF5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbklucHV0Q2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmZvcmNlU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBsZXQgdmFsaWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZU9wdGlvbnMoKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoZWRWYWx1ZSA9IHRoaXMudmlzaWJsZU9wdGlvbnMoKS5maW5kKChvcHRpb24pID0+IHRoaXMuaXNPcHRpb25NYXRjaGVkKG9wdGlvbiwgdGhpcy5pbnB1dEVMLm5hdGl2ZUVsZW1lbnQudmFsdWUgfHwgJycpKTtcblxuICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICF0aGlzLmlzU2VsZWN0ZWQobWF0Y2hlZFZhbHVlKSAmJiB0aGlzLm9uT3B0aW9uU2VsZWN0KGV2ZW50LCBtYXRjaGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRFTC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgIXRoaXMubXVsdGlwbGUgJiYgdGhpcy51cGRhdGVNb2RlbChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSW5wdXRGb2N1cyhldmVudCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgLy8gRm9yIFNjcmVlblJlYWRlcnNcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5kaXJ0eSAmJiB0aGlzLmNvbXBsZXRlT25Gb2N1cykge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2goZXZlbnQsIGV2ZW50LnRhcmdldC52YWx1ZSwgJ2ZvY3VzJyk7XG4gICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZm9jdXNlZE9wdGlvbkluZGV4ID0gdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSAhPT0gLTEgPyB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpIDogdGhpcy5vdmVybGF5VmlzaWJsZSAmJiB0aGlzLmF1dG9PcHRpb25Gb2N1cyA/IHRoaXMuZmluZEZpcnN0Rm9jdXNlZE9wdGlvbkluZGV4KCkgOiAtMTtcbiAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXguc2V0KGZvY3VzZWRPcHRpb25JbmRleCk7XG4gICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgJiYgdGhpcy5zY3JvbGxJblZpZXcodGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSk7XG4gICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbk11bHRpcGxlQ29udGFpbmVyRm9jdXMoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIC8vIEZvciBTY3JlZW5SZWFkZXJzXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uTXVsdGlwbGVDb250YWluZXJCbHVyKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZE11bHRpcGxlT3B0aW9uSW5kZXguc2V0KC0xKTtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25NdWx0aXBsZUNvbnRhaW5lcktleURvd24oZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dMZWZ0S2V5T25NdWx0aXBsZShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd1JpZ2h0S2V5T25NdWx0aXBsZShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkJhY2tzcGFjZUtleU9uTXVsdGlwbGUoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbnB1dEJsdXIoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXguc2V0KC0xKTtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbklucHV0UGFzdGUoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbktleURvd24oZXZlbnQpO1xuICAgIH1cblxuICAgIG9uSW5wdXRLZXlVcChldmVudCkge1xuICAgICAgICB0aGlzLm9uS2V5VXAuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25LZXlEb3duKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFycm93RG93bktleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd1VwS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dMZWZ0S2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFycm93UmlnaHRLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uSG9tZUtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVuZEtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1BhZ2VEb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uUGFnZURvd25LZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICAgICAgICAgIHRoaXMub25QYWdlVXBLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICBjYXNlICdOdW1wYWRFbnRlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVudGVyS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uRXNjYXBlS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uVGFiS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQmFja3NwYWNlS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnU2hpZnRMZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ1NoaWZ0UmlnaHQnOlxuICAgICAgICAgICAgICAgIC8vTk9PUFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BcnJvd0Rvd25LZXkoZXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25JbmRleCA9IHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgIT09IC0xID8gdGhpcy5maW5kTmV4dE9wdGlvbkluZGV4KHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkpIDogdGhpcy5maW5kRmlyc3RGb2N1c2VkT3B0aW9uSW5kZXgoKTtcblxuICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChldmVudCwgb3B0aW9uSW5kZXgpO1xuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIG9uQXJyb3dVcEtleShldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5hbHRLZXkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25TZWxlY3QoZXZlbnQsIHRoaXMudmlzaWJsZU9wdGlvbnMoKVt0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgJiYgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uSW5kZXggPSB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpICE9PSAtMSA/IHRoaXMuZmluZFByZXZPcHRpb25JbmRleCh0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpKSA6IHRoaXMuZmluZExhc3RGb2N1c2VkT3B0aW9uSW5kZXgoKTtcblxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgoZXZlbnQsIG9wdGlvbkluZGV4KTtcblxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BcnJvd0xlZnRLZXkoZXZlbnQpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQuY3VycmVudFRhcmdldDtcbiAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXguc2V0KC0xKTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0VtcHR5KHRhcmdldC52YWx1ZSkgJiYgdGhpcy5oYXNTZWxlY3RlZE9wdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5mb2N1cyh0aGlzLm11bHRpQ29udGFpbmVyRUwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkTXVsdGlwbGVPcHRpb25JbmRleC5zZXQodGhpcy5tb2RlbFZhbHVlKCkubGVuZ3RoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIFRvIHByZXZlbnQgb25BcnJvd0xlZnRLZXlPbk11bHRpcGxlIG1ldGhvZFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BcnJvd1JpZ2h0S2V5KGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldCgtMSk7XG5cbiAgICAgICAgdGhpcy5tdWx0aXBsZSAmJiBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gVG8gcHJldmVudCBvbkFycm93UmlnaHRLZXlPbk11bHRpcGxlIG1ldGhvZFxuICAgIH1cblxuICAgIG9uSG9tZUtleShldmVudCkge1xuICAgICAgICBjb25zdCB7IGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xuICAgICAgICBjb25zdCBsZW4gPSBjdXJyZW50VGFyZ2V0LnZhbHVlLmxlbmd0aDtcblxuICAgICAgICBjdXJyZW50VGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKDAsIGV2ZW50LnNoaWZ0S2V5ID8gbGVuIDogMCk7XG4gICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldCgtMSk7XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkVuZEtleShldmVudCkge1xuICAgICAgICBjb25zdCB7IGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xuICAgICAgICBjb25zdCBsZW4gPSBjdXJyZW50VGFyZ2V0LnZhbHVlLmxlbmd0aDtcblxuICAgICAgICBjdXJyZW50VGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKGV2ZW50LnNoaWZ0S2V5ID8gMCA6IGxlbiwgbGVuKTtcbiAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXguc2V0KC0xKTtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uUGFnZURvd25LZXkoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxJblZpZXcodGhpcy52aXNpYmxlT3B0aW9ucygpLmxlbmd0aCAtIDEpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uUGFnZVVwS2V5KGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsSW5WaWV3KDApO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uRW50ZXJLZXkoZXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLm9uQXJyb3dEb3duS2V5KGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25TZWxlY3QoZXZlbnQsIHRoaXMudmlzaWJsZU9wdGlvbnMoKVt0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpXSk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkVzY2FwZUtleShldmVudCkge1xuICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlICYmIHRoaXMuaGlkZSh0cnVlKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvblRhYktleShldmVudCkge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25TZWxlY3QoZXZlbnQsIHRoaXMudmlzaWJsZU9wdGlvbnMoKVt0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpXSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlICYmIHRoaXMuaGlkZSgpO1xuICAgIH1cblxuICAgIG9uQmFja3NwYWNlS2V5KGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNOb3RFbXB0eSh0aGlzLm1vZGVsVmFsdWUoKSkgJiYgIXRoaXMuaW5wdXRFTC5uYXRpdmVFbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlZFZhbHVlID0gdGhpcy5tb2RlbFZhbHVlKClbdGhpcy5tb2RlbFZhbHVlKCkubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLm1vZGVsVmFsdWUoKS5zbGljZSgwLCAtMSk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbChuZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5vblVuc2VsZWN0LmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHJlbW92ZWRWYWx1ZSB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIFRvIHByZXZlbnQgb25CYWNrc3BhY2VLZXlPbk11bHRpcGxlIG1ldGhvZFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlICYmIHRoaXMuc2hvd0NsZWFyICYmIHRoaXMuZmluZFNlbGVjdGVkT3B0aW9uSW5kZXgoKSAhPSAtMSkge1xuICAgICAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BcnJvd0xlZnRLZXlPbk11bHRpcGxlKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbkluZGV4ID0gdGhpcy5mb2N1c2VkTXVsdGlwbGVPcHRpb25JbmRleCgpIDwgMSA/IDAgOiB0aGlzLmZvY3VzZWRNdWx0aXBsZU9wdGlvbkluZGV4KCkgLSAxO1xuICAgICAgICB0aGlzLmZvY3VzZWRNdWx0aXBsZU9wdGlvbkluZGV4LnNldChvcHRpb25JbmRleCk7XG4gICAgfVxuXG4gICAgb25BcnJvd1JpZ2h0S2V5T25NdWx0aXBsZShldmVudCkge1xuICAgICAgICBsZXQgb3B0aW9uSW5kZXggPSB0aGlzLmZvY3VzZWRNdWx0aXBsZU9wdGlvbkluZGV4KCk7XG4gICAgICAgIG9wdGlvbkluZGV4Kys7XG5cbiAgICAgICAgdGhpcy5mb2N1c2VkTXVsdGlwbGVPcHRpb25JbmRleC5zZXQob3B0aW9uSW5kZXgpO1xuICAgICAgICBpZiAob3B0aW9uSW5kZXggPiB0aGlzLm1vZGVsVmFsdWUoKS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRNdWx0aXBsZU9wdGlvbkluZGV4LnNldCgtMSk7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmZvY3VzKHRoaXMuaW5wdXRFTC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQmFja3NwYWNlS2V5T25NdWx0aXBsZShldmVudCkge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkTXVsdGlwbGVPcHRpb25JbmRleCgpICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVPcHRpb24oZXZlbnQsIHRoaXMuZm9jdXNlZE11bHRpcGxlT3B0aW9uSW5kZXgoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk9wdGlvblNlbGVjdChldmVudCwgb3B0aW9uLCBpc0hpZGUgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pO1xuXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0RUwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbChbLi4uKHRoaXMubW9kZWxWYWx1ZSgpIHx8IFtdKSwgdmFsdWVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiBvcHRpb24gfSk7XG5cbiAgICAgICAgaXNIaWRlICYmIHRoaXMuaGlkZSh0cnVlKTtcbiAgICB9XG5cbiAgICBvbk9wdGlvbk1vdXNlRW50ZXIoZXZlbnQsIGluZGV4KSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzT25Ib3Zlcikge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgoZXZlbnQsIGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlYXJjaChldmVudCwgcXVlcnksIHNvdXJjZSkge1xuICAgICAgICAvL2FsbG93IGVtcHR5IHN0cmluZyBidXQgbm90IHVuZGVmaW5lZCBvciBudWxsXG4gICAgICAgIGlmIChxdWVyeSA9PT0gdW5kZWZpbmVkIHx8IHF1ZXJ5ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvL2RvIG5vdCBzZWFyY2ggb24gaW5wdXQgY2hhbmdlIGlmIG1pbkxlbmd0aCBpcyBub3QgbWV0XG4gICAgICAgIGlmIChzb3VyY2UgPT09ICdpbnB1dCcgJiYgcXVlcnkudHJpbSgpLmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jb21wbGV0ZU1ldGhvZC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHF1ZXJ5IH0pO1xuICAgIH1cblxuICAgIHJlbW92ZU9wdGlvbihldmVudCwgaW5kZXgpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgcmVtb3ZlZE9wdGlvbiA9IHRoaXMubW9kZWxWYWx1ZSgpW2luZGV4XTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLm1vZGVsVmFsdWUoKVxuICAgICAgICAgICAgLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpXG4gICAgICAgICAgICAubWFwKChvcHRpb24pID0+IHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVNb2RlbCh2YWx1ZSk7XG4gICAgICAgIHRoaXMub25VbnNlbGVjdC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiByZW1vdmVkT3B0aW9uIH0pO1xuICAgICAgICBEb21IYW5kbGVyLmZvY3VzKHRoaXMuaW5wdXRFTC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICB1cGRhdGVNb2RlbCh2YWx1ZSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMubW9kZWxWYWx1ZS5zZXQodmFsdWUpO1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodmFsdWUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUlucHV0VmFsdWUoKTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICB1cGRhdGVJbnB1dFZhbHVlKCkge1xuICAgICAgICBpZiAodGhpcy5pbnB1dEVMICYmIHRoaXMuaW5wdXRFTC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RUwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuaW5wdXRWYWx1ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RUwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXV0b1VwZGF0ZU1vZGVsKCkge1xuICAgICAgICBpZiAoKHRoaXMuc2VsZWN0T25Gb2N1cyB8fCB0aGlzLmF1dG9IaWdobGlnaHQpICYmIHRoaXMuYXV0b09wdGlvbkZvY3VzICYmICF0aGlzLmhhc1NlbGVjdGVkT3B0aW9uKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzZWRPcHRpb25JbmRleCA9IHRoaXMuZmluZEZpcnN0Rm9jdXNlZE9wdGlvbkluZGV4KCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoZm9jdXNlZE9wdGlvbkluZGV4KTtcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25TZWxlY3QobnVsbCwgdGhpcy52aXNpYmxlT3B0aW9ucygpW3RoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCldLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzY3JvbGxJblZpZXcoaW5kZXggPSAtMSkge1xuICAgICAgICBjb25zdCBpZCA9IGluZGV4ICE9PSAtMSA/IGAke3RoaXMuaWR9XyR7aW5kZXh9YCA6IHRoaXMuZm9jdXNlZE9wdGlvbklkO1xuICAgICAgICBpZiAodGhpcy5pdGVtc1ZpZXdDaGlsZCAmJiB0aGlzLml0ZW1zVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5pdGVtc1ZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCBgbGlbaWQ9XCIke2lkfVwiXWApO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3ICYmIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnLCBpbmxpbmU6ICduZWFyZXN0JyB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMudmlydHVhbFNjcm9sbGVyRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsICYmIHRoaXMuc2Nyb2xsZXI/LnNjcm9sbFRvSW5kZXgoaW5kZXggIT09IC0xID8gaW5kZXggOiB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpKTtcbiAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChldmVudCwgaW5kZXgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgIT09IGluZGV4KSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoaW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxJblZpZXcoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0T25Gb2N1cykge1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25TZWxlY3QoZXZlbnQsIHRoaXMudmlzaWJsZU9wdGlvbnMoKVtpbmRleF0sIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3coaXNGb2N1cyA9IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuZGlydHkgPSB0cnVlO1xuICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZm9jdXNlZE9wdGlvbkluZGV4ID0gdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSAhPT0gLTEgPyB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpIDogdGhpcy5hdXRvT3B0aW9uRm9jdXMgPyB0aGlzLmZpbmRGaXJzdEZvY3VzZWRPcHRpb25JbmRleCgpIDogLTE7XG4gICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldChmb2N1c2VkT3B0aW9uSW5kZXgpO1xuICAgICAgICBpc0ZvY3VzICYmIERvbUhhbmRsZXIuZm9jdXModGhpcy5pbnB1dEVMLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBpZiAoaXNGb2N1cykge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5mb2N1cyh0aGlzLmlucHV0RUwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblNob3cuZW1pdCgpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGhpZGUoaXNGb2N1cyA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IF9oaWRlID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kaXJ0eSA9IGlzRm9jdXM7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoLTEpO1xuICAgICAgICAgICAgaXNGb2N1cyAmJiBEb21IYW5kbGVyLmZvY3VzKHRoaXMuaW5wdXRFTC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIHRoaXMub25IaWRlLmVtaXQoKTtcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gQWRkZWQgdG8gYWRqdXN0IHRoZSBzY3JvbGxlcidzIGNvbnRlbnQgcG9zaXRpb24gd2hlbiB0aGUgZHJvcGRvd24gY2xvc2VzLlxuICAgICAgICBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbGVyLm9uU2Nyb2xsQ2hhbmdlKGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgX2hpZGUoKTtcbiAgICAgICAgfSwgMCk7IC8vIEZvciBTY3JlZW5SZWFkZXJzXG4gICAgfVxuXG4gICAgY2xlYXIoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWwobnVsbCk7XG4gICAgICAgIHRoaXMuaW5wdXRFTC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMub25DbGVhci5lbWl0KCk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5tb2RlbFZhbHVlLnNldCh2YWx1ZSk7XG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGhhc1NlbGVjdGVkT3B0aW9uKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuaXNOb3RFbXB0eSh0aGlzLm1vZGVsVmFsdWUoKSk7XG4gICAgfVxuXG4gICAgZ2V0QXJpYVBvc0luc2V0KGluZGV4KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodGhpcy5vcHRpb25Hcm91cExhYmVsXG4gICAgICAgICAgICAgICAgPyBpbmRleCAtXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zKClcbiAgICAgICAgICAgICAgICAgICAgICAuc2xpY2UoMCwgaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiB0aGlzLmlzT3B0aW9uR3JvdXAob3B0aW9uKSkubGVuZ3RoXG4gICAgICAgICAgICAgICAgOiBpbmRleCkgKyAxXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uTGFiZWwob3B0aW9uOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQgfHwgdGhpcy5vcHRpb25MYWJlbCA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uLCB0aGlzLmZpZWxkIHx8IHRoaXMub3B0aW9uTGFiZWwpIDogb3B0aW9uICYmIG9wdGlvbi5sYWJlbCAhPSB1bmRlZmluZWQgPyBvcHRpb24ubGFiZWwgOiBvcHRpb247XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvblZhbHVlID8gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShvcHRpb24sIHRoaXMub3B0aW9uVmFsdWUpIDogb3B0aW9uO1xuICAgIH1cblxuICAgIGdldE9wdGlvbkluZGV4KGluZGV4LCBzY3JvbGxlck9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlydHVhbFNjcm9sbGVyRGlzYWJsZWQgPyBpbmRleCA6IHNjcm9sbGVyT3B0aW9ucyAmJiBzY3JvbGxlck9wdGlvbnMuZ2V0SXRlbU9wdGlvbnMoaW5kZXgpWydpbmRleCddO1xuICAgIH1cblxuICAgIGdldE9wdGlvbkdyb3VwTGFiZWwob3B0aW9uR3JvdXA6IGFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25Hcm91cExhYmVsID8gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShvcHRpb25Hcm91cCwgdGhpcy5vcHRpb25Hcm91cExhYmVsKSA6IG9wdGlvbkdyb3VwICYmIG9wdGlvbkdyb3VwLmxhYmVsICE9IHVuZGVmaW5lZCA/IG9wdGlvbkdyb3VwLmxhYmVsIDogb3B0aW9uR3JvdXA7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbihvcHRpb25Hcm91cDogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkdyb3VwQ2hpbGRyZW4gPyBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9wdGlvbkdyb3VwLCB0aGlzLm9wdGlvbkdyb3VwQ2hpbGRyZW4pIDogb3B0aW9uR3JvdXAuaXRlbXM7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWRPcHRpb24obW9kZWxWYWx1ZTogYW55KSB7XG4gICAgICAgIGlmICghdGhpcy5vcHRpb25WYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG1vZGVsVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKHRoaXMuc3VnZ2VzdGlvbnMgfHwgW10pLmZpbmQoKGl0ZW06IGFueSkgPT4gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShpdGVtLCB0aGlzLm9wdGlvblZhbHVlKSA9PT0gbW9kZWxWYWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0TXVsdGlwbGVMYWJlbChvcHRpb246IGFueSkge1xuICAgICAgICBsZXQgc2VsZWN0ZWQgPSB0aGlzLmdldFNlbGVjdGVkT3B0aW9uKG9wdGlvbik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9uTGFiZWwoc2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbk92ZXJsYXlBbmltYXRpb25TdGFydChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICd2aXNpYmxlJykge1xuICAgICAgICAgICAgdGhpcy5pdGVtc1dyYXBwZXIgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5vdmVybGF5Vmlld0NoaWxkLm92ZXJsYXlWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQsIHRoaXMudmlydHVhbFNjcm9sbCA/ICcucC1zY3JvbGxlcicgOiAnLnAtYXV0b2NvbXBsZXRlLXBhbmVsJyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbGVyPy5zZXRDb250ZW50RWwodGhpcy5pdGVtc1ZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxlci52aWV3SW5pdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZU9wdGlvbnMoKSAmJiB0aGlzLnZpc2libGVPcHRpb25zKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5tb2RlbFZhbHVlKCkgPyB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpIDogLTE7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbGVyPy5zY3JvbGxUb0luZGV4KHNlbGVjdGVkSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkTGlzdEl0ZW0gPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5pdGVtc1dyYXBwZXIsICcucC1hdXRvY29tcGxldGUtaXRlbS5wLWhpZ2hsaWdodCcpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZExpc3RJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZExpc3RJdGVtLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JywgaW5saW5lOiAnY2VudGVyJyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBPdmVybGF5TW9kdWxlLCBJbnB1dFRleHRNb2R1bGUsIEJ1dHRvbk1vZHVsZSwgU2hhcmVkTW9kdWxlLCBSaXBwbGVNb2R1bGUsIFNjcm9sbGVyTW9kdWxlLCBBdXRvRm9jdXNNb2R1bGUsIFRpbWVzQ2lyY2xlSWNvbiwgU3Bpbm5lckljb24sIFRpbWVzSWNvbiwgQ2hldnJvbkRvd25JY29uXSxcbiAgICBleHBvcnRzOiBbQXV0b0NvbXBsZXRlLCBPdmVybGF5TW9kdWxlLCBTaGFyZWRNb2R1bGUsIFNjcm9sbGVyTW9kdWxlLCBBdXRvRm9jdXNNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW0F1dG9Db21wbGV0ZV1cbn0pXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlTW9kdWxlIHt9XG4iXX0=