mis-crystal-design-system 4.0.51 → 17.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 (838) hide show
  1. package/action-list/action-list.component.d.ts +3 -0
  2. package/action-list/action-list.module.d.ts +9 -0
  3. package/analytics/analytics.module.d.ts +4 -0
  4. package/analytics/analytics.service.d.ts +3 -0
  5. package/async-search-dropdown/async-dropdown.component.d.ts +6 -3
  6. package/async-search-dropdown/async-dropdown.module.d.ts +9 -0
  7. package/button/button.component.d.ts +3 -0
  8. package/button/button.directive.d.ts +3 -0
  9. package/button/button.module.d.ts +7 -0
  10. package/checkbox/checkbox.component.d.ts +3 -0
  11. package/checkbox/checkbox.module.d.ts +7 -0
  12. package/chip/chip.component.d.ts +3 -0
  13. package/chip/chip.module.d.ts +6 -0
  14. package/datepicker_v2/datepicker.module.d.ts +10 -0
  15. package/datepicker_v2/models/dp-config.model.d.ts +1 -1
  16. package/datepicker_v2/public_api.d.ts +1 -0
  17. package/datepicker_v2/tz-datepicker.directive.d.ts +3 -0
  18. package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +3 -0
  19. package/daterangepicker_v2/daterangepicker.module.d.ts +10 -0
  20. package/daterangepicker_v2/models/drp-config.model.d.ts +1 -1
  21. package/daterangepicker_v2/public_api.d.ts +1 -0
  22. package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +3 -0
  23. package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +3 -0
  24. package/drawer/drawer-body/drawer-body.component.d.ts +3 -1
  25. package/drawer/drawer.module.d.ts +8 -0
  26. package/drawer/drawer.service.d.ts +3 -0
  27. package/dropdown/calculate-container-height.directive.d.ts +3 -0
  28. package/dropdown/dropdown.component.d.ts +3 -0
  29. package/dropdown/dropdown.module.d.ts +11 -0
  30. package/dynamic-form/dynamic-form.component.d.ts +11 -8
  31. package/dynamic-form/dynamic-form.module.d.ts +13 -0
  32. package/esm2022/action-list/action-list.component.mjs +363 -0
  33. package/esm2022/action-list/action-list.module.mjs +25 -0
  34. package/esm2022/analytics/analytics.module.mjs +18 -0
  35. package/esm2022/analytics/analytics.service.mjs +63 -0
  36. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +467 -0
  37. package/esm2022/async-search-dropdown/async-dropdown.module.mjs +22 -0
  38. package/esm2022/button/button.component.mjs +88 -0
  39. package/esm2022/button/button.directive.mjs +61 -0
  40. package/esm2022/button/button.module.mjs +23 -0
  41. package/esm2022/checkbox/checkbox.component.mjs +124 -0
  42. package/esm2022/checkbox/checkbox.module.mjs +23 -0
  43. package/esm2022/chip/chip.component.mjs +82 -0
  44. package/esm2022/chip/chip.module.mjs +22 -0
  45. package/esm2022/datepicker_v2/datepicker.module.mjs +24 -0
  46. package/esm2022/datepicker_v2/mis-crystal-design-system-datepicker_v2.mjs +5 -0
  47. package/esm2022/datepicker_v2/public_api.mjs +4 -0
  48. package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +164 -0
  49. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +246 -0
  50. package/{esm2015/daterangepicker_v2/utils/index.js → esm2022/datepicker_v2/utils/index.mjs} +1 -1
  51. package/esm2022/daterangepicker_v2/daterangepicker.module.mjs +25 -0
  52. package/esm2022/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.mjs +5 -0
  53. package/esm2022/daterangepicker_v2/public_api.mjs +4 -0
  54. package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +135 -0
  55. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +365 -0
  56. package/esm2022/daterangepicker_v2/utils/index.mjs +45 -0
  57. package/esm2022/drawer/drawer-body/drawer-body.component.mjs +59 -0
  58. package/{esm2015/drawer/drawer-ref.js → esm2022/drawer/drawer-ref.mjs} +4 -4
  59. package/esm2022/drawer/drawer.module.mjs +33 -0
  60. package/esm2022/drawer/drawer.service.mjs +56 -0
  61. package/esm2022/drawer/mis-crystal-design-system-drawer.mjs +5 -0
  62. package/esm2022/dropdown/calculate-container-height.directive.mjs +41 -0
  63. package/esm2022/dropdown/dropdown.component.mjs +404 -0
  64. package/esm2022/dropdown/dropdown.module.mjs +27 -0
  65. package/esm2022/dropdown/mis-crystal-design-system-dropdown.mjs +5 -0
  66. package/esm2022/dynamic-form/dynamic-form.component.mjs +705 -0
  67. package/esm2022/dynamic-form/dynamic-form.module.mjs +56 -0
  68. package/esm2022/fab/fab.component.mjs +145 -0
  69. package/esm2022/fab/fab.module.mjs +22 -0
  70. package/esm2022/input/directives/input/input.directive.mjs +40 -0
  71. package/esm2022/input/mis-input.component.mjs +85 -0
  72. package/esm2022/input/mis-input.module.mjs +21 -0
  73. package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +75 -0
  74. package/esm2022/input-stepper/input-stepper.module.mjs +25 -0
  75. package/esm2022/loader/loader.component.mjs +25 -0
  76. package/esm2022/loader/loader.module.mjs +22 -0
  77. package/esm2022/menu/menu-close.directive.mjs +25 -0
  78. package/esm2022/menu/menu.directive.mjs +77 -0
  79. package/esm2022/menu/menu.module.mjs +23 -0
  80. package/esm2022/mobile-filter/mobile-filter.component.mjs +178 -0
  81. package/esm2022/mobile-filter/mobile-filter.module.mjs +21 -0
  82. package/esm2022/modal/mis-crystal-design-system-modal.mjs +5 -0
  83. package/esm2022/modal/modal.module.mjs +33 -0
  84. package/esm2022/modal/modal.service.mjs +70 -0
  85. package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +56 -0
  86. package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +477 -0
  87. package/esm2022/multi-select-dropdown/multi-select-dropdown.module.mjs +26 -0
  88. package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +509 -0
  89. package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.module.mjs +26 -0
  90. package/esm2022/phone-input/phone-input.component.mjs +116 -0
  91. package/esm2022/phone-input/phone-input.module.mjs +27 -0
  92. package/esm2022/radio-button/radio-button.component.mjs +57 -0
  93. package/esm2022/radio-button/radio-button.module.mjs +23 -0
  94. package/esm2022/ske-loader/ske-loader.component.mjs +54 -0
  95. package/esm2022/ske-loader/ske-loader.module.mjs +19 -0
  96. package/esm2022/slider/slider.component.mjs +46 -0
  97. package/esm2022/slider/slider.module.mjs +30 -0
  98. package/esm2022/snackbar/snackbar/snackbar.component.mjs +72 -0
  99. package/esm2022/snackbar/snackbar.module.mjs +36 -0
  100. package/esm2022/snackbar/snackbar.service.mjs +47 -0
  101. package/esm2022/specificdatepicker/mis-crystal-design-system-specificdatepicker.mjs +5 -0
  102. package/esm2022/specificdatepicker/public_api.mjs +5 -0
  103. package/esm2022/specificdatepicker/specificdatepicker.module.mjs +27 -0
  104. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +619 -0
  105. package/esm2022/specificdatepicker/tz-specificdatepicker.directive.mjs +196 -0
  106. package/esm2022/specificdatepicker/utils/index.mjs +45 -0
  107. package/esm2022/star-rating/star-rating.component.mjs +113 -0
  108. package/esm2022/star-rating/star-rating.module.mjs +19 -0
  109. package/esm2022/switch/switch.component.mjs +56 -0
  110. package/esm2022/switch/switch.module.mjs +23 -0
  111. package/esm2022/table/custom-table-cell.directive.mjs +42 -0
  112. package/esm2022/table/filter/filter.component.mjs +169 -0
  113. package/esm2022/table/mis-crystal-design-system-table.mjs +5 -0
  114. package/esm2022/table/public_api.mjs +7 -0
  115. package/esm2022/table/sub-table/sub-table.component.mjs +192 -0
  116. package/esm2022/table/table.component.mjs +469 -0
  117. package/esm2022/table/table.module.mjs +27 -0
  118. package/esm2022/timepicker/mis-crystal-design-system-timepicker.mjs +5 -0
  119. package/esm2022/timepicker/timepicker.component.mjs +343 -0
  120. package/esm2022/timepicker/timepicker.directive.mjs +65 -0
  121. package/esm2022/timepicker/timepicker.module.mjs +26 -0
  122. package/esm2022/timerangepicker/timerangepicker.component.mjs +228 -0
  123. package/esm2022/timerangepicker/timerangepicker.module.mjs +24 -0
  124. package/esm2022/toast/toast.component.mjs +51 -0
  125. package/esm2022/toast/toast.data.service.mjs +30 -0
  126. package/esm2022/toast/toast.module.mjs +33 -0
  127. package/esm2022/toast/toast.service.mjs +91 -0
  128. package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +78 -0
  129. package/esm2022/tooltip/tooltip.directive.mjs +137 -0
  130. package/esm2022/tooltip/tooltip.module.mjs +24 -0
  131. package/esm2022/virtual-scroll/virtual-scroll.component.mjs +188 -0
  132. package/esm2022/virtual-scroll/virtual-scroll.module.mjs +34 -0
  133. package/esm2022/widgets/classes/async-widget.mjs +23 -0
  134. package/esm2022/widgets/classes/base-widget.mjs +32 -0
  135. package/esm2022/widgets/classes/sync-widget.mjs +20 -0
  136. package/esm2022/widgets/classes/widget-group.mjs +32 -0
  137. package/esm2022/widgets/services/widget.service.mjs +18 -0
  138. package/esm2022/widgets/widgets.module.mjs +18 -0
  139. package/fab/fab.component.d.ts +6 -3
  140. package/fab/fab.module.d.ts +6 -0
  141. package/fesm2022/mis-crystal-design-system-action-list.mjs +391 -0
  142. package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -0
  143. package/{fesm2015/mis-crystal-design-system-analytics.js → fesm2022/mis-crystal-design-system-analytics.mjs} +21 -15
  144. package/fesm2022/mis-crystal-design-system-analytics.mjs.map +1 -0
  145. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +491 -0
  146. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -0
  147. package/fesm2022/mis-crystal-design-system-button.mjs +173 -0
  148. package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -0
  149. package/fesm2022/mis-crystal-design-system-checkbox.mjs +150 -0
  150. package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -0
  151. package/fesm2022/mis-crystal-design-system-chip.mjs +108 -0
  152. package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -0
  153. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +478 -0
  154. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -0
  155. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +568 -0
  156. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -0
  157. package/fesm2022/mis-crystal-design-system-drawer.mjs +173 -0
  158. package/fesm2022/mis-crystal-design-system-drawer.mjs.map +1 -0
  159. package/fesm2022/mis-crystal-design-system-dropdown.mjs +472 -0
  160. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -0
  161. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs +763 -0
  162. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -0
  163. package/fesm2022/mis-crystal-design-system-fab.mjs +171 -0
  164. package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -0
  165. package/fesm2022/mis-crystal-design-system-input-stepper.mjs +104 -0
  166. package/fesm2022/mis-crystal-design-system-input-stepper.mjs.map +1 -0
  167. package/fesm2022/mis-crystal-design-system-input.mjs +146 -0
  168. package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -0
  169. package/fesm2022/mis-crystal-design-system-loader.mjs +51 -0
  170. package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -0
  171. package/fesm2022/mis-crystal-design-system-menu.mjs +124 -0
  172. package/fesm2022/mis-crystal-design-system-menu.mjs.map +1 -0
  173. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +203 -0
  174. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -0
  175. package/fesm2022/mis-crystal-design-system-modal.mjs +173 -0
  176. package/fesm2022/mis-crystal-design-system-modal.mjs.map +1 -0
  177. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +506 -0
  178. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -0
  179. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs +538 -0
  180. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -0
  181. package/fesm2022/mis-crystal-design-system-phone-input.mjs +145 -0
  182. package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -0
  183. package/fesm2022/mis-crystal-design-system-radio-button.mjs +83 -0
  184. package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -0
  185. package/fesm2022/mis-crystal-design-system-ske-loader.mjs +77 -0
  186. package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -0
  187. package/fesm2022/mis-crystal-design-system-slider.mjs +80 -0
  188. package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -0
  189. package/fesm2022/mis-crystal-design-system-snackbar.mjs +155 -0
  190. package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -0
  191. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +884 -0
  192. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -0
  193. package/fesm2022/mis-crystal-design-system-star-rating.mjs +136 -0
  194. package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -0
  195. package/fesm2022/mis-crystal-design-system-styles.mjs +4 -0
  196. package/fesm2022/mis-crystal-design-system-styles.mjs.map +1 -0
  197. package/fesm2022/mis-crystal-design-system-switch.mjs +82 -0
  198. package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -0
  199. package/fesm2022/mis-crystal-design-system-table.mjs +888 -0
  200. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -0
  201. package/fesm2022/mis-crystal-design-system-timepicker.mjs +429 -0
  202. package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -0
  203. package/{fesm2015/mis-crystal-design-system-timerangepicker.js → fesm2022/mis-crystal-design-system-timerangepicker.mjs} +73 -35
  204. package/fesm2022/mis-crystal-design-system-timerangepicker.mjs.map +1 -0
  205. package/fesm2022/mis-crystal-design-system-toast.mjs +199 -0
  206. package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -0
  207. package/fesm2022/mis-crystal-design-system-tooltip.mjs +238 -0
  208. package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -0
  209. package/{fesm2015/mis-crystal-design-system-utils.js → fesm2022/mis-crystal-design-system-utils.mjs} +1 -1
  210. package/fesm2022/mis-crystal-design-system-utils.mjs.map +1 -0
  211. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs +227 -0
  212. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -0
  213. package/{fesm2015/mis-crystal-design-system-widgets.js → fesm2022/mis-crystal-design-system-widgets.mjs} +13 -7
  214. package/fesm2022/mis-crystal-design-system-widgets.mjs.map +1 -0
  215. package/{fesm2015/mis-crystal-design-system.js → fesm2022/mis-crystal-design-system.mjs} +1 -1
  216. package/fesm2022/mis-crystal-design-system.mjs.map +1 -0
  217. package/input/directives/input/input.directive.d.ts +3 -0
  218. package/input/mis-input.component.d.ts +3 -0
  219. package/input/mis-input.module.d.ts +8 -0
  220. package/input-stepper/input-stepper/input-stepper.component.d.ts +3 -0
  221. package/input-stepper/input-stepper.module.d.ts +6 -0
  222. package/loader/loader.component.d.ts +3 -0
  223. package/loader/loader.module.d.ts +6 -0
  224. package/menu/menu-close.directive.d.ts +3 -0
  225. package/menu/menu.directive.d.ts +3 -0
  226. package/menu/menu.module.d.ts +9 -1
  227. package/mobile-filter/mobile-filter.component.d.ts +3 -0
  228. package/mobile-filter/mobile-filter.module.d.ts +8 -0
  229. package/modal/modal.module.d.ts +8 -0
  230. package/modal/modal.service.d.ts +3 -0
  231. package/modal/module-wrapper/module-wrapper.component.d.ts +3 -0
  232. package/multi-select-dropdown/multi-select-dropdown.component.d.ts +3 -0
  233. package/multi-select-dropdown/multi-select-dropdown.module.d.ts +10 -0
  234. package/nested-multi-select-dropdown/nested-multi-select-dropdown.component.d.ts +3 -0
  235. package/nested-multi-select-dropdown/nested-multi-select-dropdown.module.d.ts +10 -0
  236. package/package.json +240 -9
  237. package/phone-input/phone-input.component.d.ts +5 -2
  238. package/phone-input/phone-input.module.d.ts +10 -0
  239. package/radio-button/radio-button.component.d.ts +3 -0
  240. package/radio-button/radio-button.module.d.ts +7 -0
  241. package/ske-loader/ske-loader.component.d.ts +3 -0
  242. package/ske-loader/ske-loader.module.d.ts +6 -0
  243. package/slider/slider.component.d.ts +6 -3
  244. package/slider/slider.module.d.ts +7 -0
  245. package/snackbar/snackbar/snackbar.component.d.ts +3 -0
  246. package/snackbar/snackbar.module.d.ts +6 -0
  247. package/snackbar/snackbar.service.d.ts +5 -2
  248. package/specificdatepicker/models/sdp-config.model.d.ts +1 -1
  249. package/specificdatepicker/public_api.d.ts +2 -0
  250. package/specificdatepicker/specificdatepicker.module.d.ts +12 -0
  251. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +5 -2
  252. package/specificdatepicker/tz-specificdatepicker.directive.d.ts +3 -0
  253. package/star-rating/star-rating.component.d.ts +3 -0
  254. package/star-rating/star-rating.module.d.ts +6 -0
  255. package/switch/switch.component.d.ts +3 -0
  256. package/switch/switch.module.d.ts +7 -0
  257. package/table/custom-table-cell.directive.d.ts +3 -0
  258. package/table/filter/filter.component.d.ts +4 -1
  259. package/table/public_api.d.ts +2 -0
  260. package/table/sub-table/sub-table.component.d.ts +3 -0
  261. package/table/table.component.d.ts +3 -0
  262. package/table/table.module.d.ts +11 -0
  263. package/timepicker/timepicker.component.d.ts +3 -0
  264. package/timepicker/timepicker.directive.d.ts +3 -0
  265. package/timepicker/timepicker.module.d.ts +10 -0
  266. package/timerangepicker/timerange.namespace.d.ts +1 -1
  267. package/timerangepicker/timerangepicker.component.d.ts +3 -0
  268. package/timerangepicker/timerangepicker.module.d.ts +8 -0
  269. package/toast/toast.component.d.ts +3 -0
  270. package/toast/toast.data.service.d.ts +3 -0
  271. package/toast/toast.module.d.ts +7 -0
  272. package/toast/toast.service.d.ts +4 -1
  273. package/tooltip/models/tooltip.model.d.ts +1 -1
  274. package/tooltip/tooltip-container/tooltip.component.d.ts +3 -0
  275. package/tooltip/tooltip.directive.d.ts +3 -0
  276. package/tooltip/tooltip.module.d.ts +8 -0
  277. package/virtual-scroll/virtual-scroll.component.d.ts +3 -0
  278. package/virtual-scroll/virtual-scroll.module.d.ts +8 -0
  279. package/widgets/interfaces/widgets.model.d.ts +1 -1
  280. package/widgets/services/widget.service.d.ts +3 -0
  281. package/widgets/widgets.module.d.ts +5 -0
  282. package/action-list/mis-crystal-design-system-action-list.d.ts +0 -4
  283. package/action-list/mis-crystal-design-system-action-list.metadata.json +0 -1
  284. package/action-list/package.json +0 -11
  285. package/analytics/mis-crystal-design-system-analytics.d.ts +0 -4
  286. package/analytics/mis-crystal-design-system-analytics.metadata.json +0 -1
  287. package/analytics/package.json +0 -11
  288. package/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.d.ts +0 -4
  289. package/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.metadata.json +0 -1
  290. package/async-search-dropdown/package.json +0 -11
  291. package/bundles/mis-crystal-design-system-action-list.umd.js +0 -509
  292. package/bundles/mis-crystal-design-system-action-list.umd.js.map +0 -1
  293. package/bundles/mis-crystal-design-system-action-list.umd.min.js +0 -16
  294. package/bundles/mis-crystal-design-system-action-list.umd.min.js.map +0 -1
  295. package/bundles/mis-crystal-design-system-analytics.umd.js +0 -422
  296. package/bundles/mis-crystal-design-system-analytics.umd.js.map +0 -1
  297. package/bundles/mis-crystal-design-system-analytics.umd.min.js +0 -16
  298. package/bundles/mis-crystal-design-system-analytics.umd.min.js.map +0 -1
  299. package/bundles/mis-crystal-design-system-async-search-dropdown.umd.js +0 -279
  300. package/bundles/mis-crystal-design-system-async-search-dropdown.umd.js.map +0 -1
  301. package/bundles/mis-crystal-design-system-async-search-dropdown.umd.min.js +0 -2
  302. package/bundles/mis-crystal-design-system-async-search-dropdown.umd.min.js.map +0 -1
  303. package/bundles/mis-crystal-design-system-button.umd.js +0 -134
  304. package/bundles/mis-crystal-design-system-button.umd.js.map +0 -1
  305. package/bundles/mis-crystal-design-system-button.umd.min.js +0 -2
  306. package/bundles/mis-crystal-design-system-button.umd.min.js.map +0 -1
  307. package/bundles/mis-crystal-design-system-checkbox.umd.js +0 -127
  308. package/bundles/mis-crystal-design-system-checkbox.umd.js.map +0 -1
  309. package/bundles/mis-crystal-design-system-checkbox.umd.min.js +0 -2
  310. package/bundles/mis-crystal-design-system-checkbox.umd.min.js.map +0 -1
  311. package/bundles/mis-crystal-design-system-chip.umd.js +0 -64
  312. package/bundles/mis-crystal-design-system-chip.umd.js.map +0 -1
  313. package/bundles/mis-crystal-design-system-chip.umd.min.js +0 -2
  314. package/bundles/mis-crystal-design-system-chip.umd.min.js.map +0 -1
  315. package/bundles/mis-crystal-design-system-datepicker_v2.umd.js +0 -706
  316. package/bundles/mis-crystal-design-system-datepicker_v2.umd.js.map +0 -1
  317. package/bundles/mis-crystal-design-system-datepicker_v2.umd.min.js +0 -16
  318. package/bundles/mis-crystal-design-system-datepicker_v2.umd.min.js.map +0 -1
  319. package/bundles/mis-crystal-design-system-daterangepicker_v2.umd.js +0 -464
  320. package/bundles/mis-crystal-design-system-daterangepicker_v2.umd.js.map +0 -1
  321. package/bundles/mis-crystal-design-system-daterangepicker_v2.umd.min.js +0 -2
  322. package/bundles/mis-crystal-design-system-daterangepicker_v2.umd.min.js.map +0 -1
  323. package/bundles/mis-crystal-design-system-drawer.umd.js +0 -169
  324. package/bundles/mis-crystal-design-system-drawer.umd.js.map +0 -1
  325. package/bundles/mis-crystal-design-system-drawer.umd.min.js +0 -2
  326. package/bundles/mis-crystal-design-system-drawer.umd.min.js.map +0 -1
  327. package/bundles/mis-crystal-design-system-dropdown.umd.js +0 -558
  328. package/bundles/mis-crystal-design-system-dropdown.umd.js.map +0 -1
  329. package/bundles/mis-crystal-design-system-dropdown.umd.min.js +0 -16
  330. package/bundles/mis-crystal-design-system-dropdown.umd.min.js.map +0 -1
  331. package/bundles/mis-crystal-design-system-dynamic-form.umd.js +0 -740
  332. package/bundles/mis-crystal-design-system-dynamic-form.umd.js.map +0 -1
  333. package/bundles/mis-crystal-design-system-dynamic-form.umd.min.js +0 -16
  334. package/bundles/mis-crystal-design-system-dynamic-form.umd.min.js.map +0 -1
  335. package/bundles/mis-crystal-design-system-fab.umd.js +0 -95
  336. package/bundles/mis-crystal-design-system-fab.umd.js.map +0 -1
  337. package/bundles/mis-crystal-design-system-fab.umd.min.js +0 -2
  338. package/bundles/mis-crystal-design-system-fab.umd.min.js.map +0 -1
  339. package/bundles/mis-crystal-design-system-input-stepper.umd.js +0 -85
  340. package/bundles/mis-crystal-design-system-input-stepper.umd.js.map +0 -1
  341. package/bundles/mis-crystal-design-system-input-stepper.umd.min.js +0 -2
  342. package/bundles/mis-crystal-design-system-input-stepper.umd.min.js.map +0 -1
  343. package/bundles/mis-crystal-design-system-input.umd.js +0 -116
  344. package/bundles/mis-crystal-design-system-input.umd.js.map +0 -1
  345. package/bundles/mis-crystal-design-system-input.umd.min.js +0 -2
  346. package/bundles/mis-crystal-design-system-input.umd.min.js.map +0 -1
  347. package/bundles/mis-crystal-design-system-loader.umd.js +0 -53
  348. package/bundles/mis-crystal-design-system-loader.umd.js.map +0 -1
  349. package/bundles/mis-crystal-design-system-loader.umd.min.js +0 -2
  350. package/bundles/mis-crystal-design-system-loader.umd.min.js.map +0 -1
  351. package/bundles/mis-crystal-design-system-menu.umd.js +0 -119
  352. package/bundles/mis-crystal-design-system-menu.umd.js.map +0 -1
  353. package/bundles/mis-crystal-design-system-menu.umd.min.js +0 -2
  354. package/bundles/mis-crystal-design-system-menu.umd.min.js.map +0 -1
  355. package/bundles/mis-crystal-design-system-mobile-filter.umd.js +0 -89
  356. package/bundles/mis-crystal-design-system-mobile-filter.umd.js.map +0 -1
  357. package/bundles/mis-crystal-design-system-mobile-filter.umd.min.js +0 -2
  358. package/bundles/mis-crystal-design-system-mobile-filter.umd.min.js.map +0 -1
  359. package/bundles/mis-crystal-design-system-modal.umd.js +0 -161
  360. package/bundles/mis-crystal-design-system-modal.umd.js.map +0 -1
  361. package/bundles/mis-crystal-design-system-modal.umd.min.js +0 -2
  362. package/bundles/mis-crystal-design-system-modal.umd.min.js.map +0 -1
  363. package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.js +0 -623
  364. package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.js.map +0 -1
  365. package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.min.js +0 -16
  366. package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.min.js.map +0 -1
  367. package/bundles/mis-crystal-design-system-nested-multi-select-dropdown.umd.js +0 -636
  368. package/bundles/mis-crystal-design-system-nested-multi-select-dropdown.umd.js.map +0 -1
  369. package/bundles/mis-crystal-design-system-nested-multi-select-dropdown.umd.min.js +0 -16
  370. package/bundles/mis-crystal-design-system-nested-multi-select-dropdown.umd.min.js.map +0 -1
  371. package/bundles/mis-crystal-design-system-phone-input.umd.js +0 -117
  372. package/bundles/mis-crystal-design-system-phone-input.umd.js.map +0 -1
  373. package/bundles/mis-crystal-design-system-phone-input.umd.min.js +0 -2
  374. package/bundles/mis-crystal-design-system-phone-input.umd.min.js.map +0 -1
  375. package/bundles/mis-crystal-design-system-radio-button.umd.js +0 -77
  376. package/bundles/mis-crystal-design-system-radio-button.umd.js.map +0 -1
  377. package/bundles/mis-crystal-design-system-radio-button.umd.min.js +0 -2
  378. package/bundles/mis-crystal-design-system-radio-button.umd.min.js.map +0 -1
  379. package/bundles/mis-crystal-design-system-ske-loader.umd.js +0 -65
  380. package/bundles/mis-crystal-design-system-ske-loader.umd.js.map +0 -1
  381. package/bundles/mis-crystal-design-system-ske-loader.umd.min.js +0 -2
  382. package/bundles/mis-crystal-design-system-ske-loader.umd.min.js.map +0 -1
  383. package/bundles/mis-crystal-design-system-slider.umd.js +0 -73
  384. package/bundles/mis-crystal-design-system-slider.umd.js.map +0 -1
  385. package/bundles/mis-crystal-design-system-slider.umd.min.js +0 -2
  386. package/bundles/mis-crystal-design-system-slider.umd.min.js.map +0 -1
  387. package/bundles/mis-crystal-design-system-snackbar.umd.js +0 -114
  388. package/bundles/mis-crystal-design-system-snackbar.umd.js.map +0 -1
  389. package/bundles/mis-crystal-design-system-snackbar.umd.min.js +0 -2
  390. package/bundles/mis-crystal-design-system-snackbar.umd.min.js.map +0 -1
  391. package/bundles/mis-crystal-design-system-specificdatepicker.umd.js +0 -977
  392. package/bundles/mis-crystal-design-system-specificdatepicker.umd.js.map +0 -1
  393. package/bundles/mis-crystal-design-system-specificdatepicker.umd.min.js +0 -16
  394. package/bundles/mis-crystal-design-system-specificdatepicker.umd.min.js.map +0 -1
  395. package/bundles/mis-crystal-design-system-star-rating.umd.js +0 -112
  396. package/bundles/mis-crystal-design-system-star-rating.umd.js.map +0 -1
  397. package/bundles/mis-crystal-design-system-star-rating.umd.min.js +0 -2
  398. package/bundles/mis-crystal-design-system-star-rating.umd.min.js.map +0 -1
  399. package/bundles/mis-crystal-design-system-styles.umd.js +0 -11
  400. package/bundles/mis-crystal-design-system-styles.umd.js.map +0 -1
  401. package/bundles/mis-crystal-design-system-styles.umd.min.js +0 -2
  402. package/bundles/mis-crystal-design-system-styles.umd.min.js.map +0 -1
  403. package/bundles/mis-crystal-design-system-switch.umd.js +0 -79
  404. package/bundles/mis-crystal-design-system-switch.umd.js.map +0 -1
  405. package/bundles/mis-crystal-design-system-switch.umd.min.js +0 -2
  406. package/bundles/mis-crystal-design-system-switch.umd.min.js.map +0 -1
  407. package/bundles/mis-crystal-design-system-table.umd.js +0 -784
  408. package/bundles/mis-crystal-design-system-table.umd.js.map +0 -1
  409. package/bundles/mis-crystal-design-system-table.umd.min.js +0 -16
  410. package/bundles/mis-crystal-design-system-table.umd.min.js.map +0 -1
  411. package/bundles/mis-crystal-design-system-timepicker.umd.js +0 -688
  412. package/bundles/mis-crystal-design-system-timepicker.umd.js.map +0 -1
  413. package/bundles/mis-crystal-design-system-timepicker.umd.min.js +0 -16
  414. package/bundles/mis-crystal-design-system-timepicker.umd.min.js.map +0 -1
  415. package/bundles/mis-crystal-design-system-timerangepicker.umd.js +0 -248
  416. package/bundles/mis-crystal-design-system-timerangepicker.umd.js.map +0 -1
  417. package/bundles/mis-crystal-design-system-timerangepicker.umd.min.js +0 -2
  418. package/bundles/mis-crystal-design-system-timerangepicker.umd.min.js.map +0 -1
  419. package/bundles/mis-crystal-design-system-toast.umd.js +0 -202
  420. package/bundles/mis-crystal-design-system-toast.umd.js.map +0 -1
  421. package/bundles/mis-crystal-design-system-toast.umd.min.js +0 -2
  422. package/bundles/mis-crystal-design-system-toast.umd.min.js.map +0 -1
  423. package/bundles/mis-crystal-design-system-tooltip.umd.js +0 -214
  424. package/bundles/mis-crystal-design-system-tooltip.umd.js.map +0 -1
  425. package/bundles/mis-crystal-design-system-tooltip.umd.min.js +0 -2
  426. package/bundles/mis-crystal-design-system-tooltip.umd.min.js.map +0 -1
  427. package/bundles/mis-crystal-design-system-utils.umd.js +0 -33
  428. package/bundles/mis-crystal-design-system-utils.umd.js.map +0 -1
  429. package/bundles/mis-crystal-design-system-utils.umd.min.js +0 -2
  430. package/bundles/mis-crystal-design-system-utils.umd.min.js.map +0 -1
  431. package/bundles/mis-crystal-design-system-virtual-scroll.umd.js +0 -471
  432. package/bundles/mis-crystal-design-system-virtual-scroll.umd.js.map +0 -1
  433. package/bundles/mis-crystal-design-system-virtual-scroll.umd.min.js +0 -16
  434. package/bundles/mis-crystal-design-system-virtual-scroll.umd.min.js.map +0 -1
  435. package/bundles/mis-crystal-design-system-widgets.umd.js +0 -478
  436. package/bundles/mis-crystal-design-system-widgets.umd.js.map +0 -1
  437. package/bundles/mis-crystal-design-system-widgets.umd.min.js +0 -16
  438. package/bundles/mis-crystal-design-system-widgets.umd.min.js.map +0 -1
  439. package/bundles/mis-crystal-design-system.umd.js +0 -31
  440. package/bundles/mis-crystal-design-system.umd.js.map +0 -1
  441. package/bundles/mis-crystal-design-system.umd.min.js +0 -2
  442. package/bundles/mis-crystal-design-system.umd.min.js.map +0 -1
  443. package/button/mis-crystal-design-system-button.d.ts +0 -4
  444. package/button/mis-crystal-design-system-button.metadata.json +0 -1
  445. package/button/package.json +0 -11
  446. package/checkbox/mis-crystal-design-system-checkbox.d.ts +0 -4
  447. package/checkbox/mis-crystal-design-system-checkbox.metadata.json +0 -1
  448. package/checkbox/package.json +0 -11
  449. package/chip/mis-crystal-design-system-chip.d.ts +0 -4
  450. package/chip/mis-crystal-design-system-chip.metadata.json +0 -1
  451. package/chip/package.json +0 -11
  452. package/datepicker_v2/mis-crystal-design-system-datepicker_v2.d.ts +0 -7
  453. package/datepicker_v2/mis-crystal-design-system-datepicker_v2.metadata.json +0 -1
  454. package/datepicker_v2/package.json +0 -11
  455. package/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.d.ts +0 -7
  456. package/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.metadata.json +0 -1
  457. package/daterangepicker_v2/package.json +0 -11
  458. package/drawer/mis-crystal-design-system-drawer.d.ts +0 -5
  459. package/drawer/mis-crystal-design-system-drawer.metadata.json +0 -1
  460. package/drawer/package.json +0 -11
  461. package/dropdown/mis-crystal-design-system-dropdown.d.ts +0 -5
  462. package/dropdown/mis-crystal-design-system-dropdown.metadata.json +0 -1
  463. package/dropdown/package.json +0 -11
  464. package/dynamic-form/mis-crystal-design-system-dynamic-form.d.ts +0 -4
  465. package/dynamic-form/mis-crystal-design-system-dynamic-form.metadata.json +0 -1
  466. package/dynamic-form/package.json +0 -11
  467. package/esm2015/action-list/action-list.component.js +0 -161
  468. package/esm2015/action-list/action-list.module.js +0 -19
  469. package/esm2015/analytics/analytics.module.js +0 -14
  470. package/esm2015/analytics/analytics.service.js +0 -62
  471. package/esm2015/async-search-dropdown/async-dropdown.component.js +0 -243
  472. package/esm2015/async-search-dropdown/async-dropdown.module.js +0 -16
  473. package/esm2015/button/button.component.js +0 -43
  474. package/esm2015/button/button.directive.js +0 -57
  475. package/esm2015/button/button.module.js +0 -17
  476. package/esm2015/checkbox/checkbox.component.js +0 -79
  477. package/esm2015/checkbox/checkbox.module.js +0 -17
  478. package/esm2015/chip/chip.component.js +0 -31
  479. package/esm2015/chip/chip.module.js +0 -16
  480. package/esm2015/datepicker_v2/datepicker.module.js +0 -18
  481. package/esm2015/datepicker_v2/mis-crystal-design-system-datepicker_v2.js +0 -7
  482. package/esm2015/datepicker_v2/public_api.js +0 -3
  483. package/esm2015/datepicker_v2/tz-datepicker.directive.js +0 -144
  484. package/esm2015/datepicker_v2/tz-dp-container/tz-dp-container.component.js +0 -149
  485. package/esm2015/datepicker_v2/utils/index.js +0 -45
  486. package/esm2015/daterangepicker_v2/daterangepicker.module.js +0 -18
  487. package/esm2015/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.js +0 -7
  488. package/esm2015/daterangepicker_v2/public_api.js +0 -3
  489. package/esm2015/daterangepicker_v2/tz-daterangepicker.directive.js +0 -123
  490. package/esm2015/daterangepicker_v2/tz-drp-container/tz-drp-container.component.js +0 -226
  491. package/esm2015/drawer/drawer-body/drawer-body.component.js +0 -41
  492. package/esm2015/drawer/drawer.module.js +0 -28
  493. package/esm2015/drawer/drawer.service.js +0 -59
  494. package/esm2015/drawer/mis-crystal-design-system-drawer.js +0 -6
  495. package/esm2015/dropdown/calculate-container-height.directive.js +0 -40
  496. package/esm2015/dropdown/dropdown.component.js +0 -169
  497. package/esm2015/dropdown/dropdown.module.js +0 -21
  498. package/esm2015/dropdown/mis-crystal-design-system-dropdown.js +0 -6
  499. package/esm2015/dynamic-form/dynamic-form.component.js +0 -308
  500. package/esm2015/dynamic-form/dynamic-form.module.js +0 -34
  501. package/esm2015/fab/fab.component.js +0 -63
  502. package/esm2015/fab/fab.module.js +0 -16
  503. package/esm2015/input/directives/input/input.directive.js +0 -38
  504. package/esm2015/input/mis-input.component.js +0 -45
  505. package/esm2015/input/mis-input.module.js +0 -15
  506. package/esm2015/input-stepper/input-stepper/input-stepper.component.js +0 -49
  507. package/esm2015/input-stepper/input-stepper.module.js +0 -19
  508. package/esm2015/loader/loader.component.js +0 -20
  509. package/esm2015/loader/loader.module.js +0 -16
  510. package/esm2015/menu/menu-close.directive.js +0 -18
  511. package/esm2015/menu/menu.directive.js +0 -70
  512. package/esm2015/menu/menu.module.js +0 -17
  513. package/esm2015/mobile-filter/mobile-filter.component.js +0 -54
  514. package/esm2015/mobile-filter/mobile-filter.module.js +0 -15
  515. package/esm2015/modal/mis-crystal-design-system-modal.js +0 -6
  516. package/esm2015/modal/modal.module.js +0 -28
  517. package/esm2015/modal/modal.service.js +0 -72
  518. package/esm2015/modal/module-wrapper/module-wrapper.component.js +0 -33
  519. package/esm2015/multi-select-dropdown/multi-select-dropdown.component.js +0 -269
  520. package/esm2015/multi-select-dropdown/multi-select-dropdown.module.js +0 -20
  521. package/esm2015/nested-multi-select-dropdown/nested-multi-select-dropdown.component.js +0 -265
  522. package/esm2015/nested-multi-select-dropdown/nested-multi-select-dropdown.module.js +0 -20
  523. package/esm2015/phone-input/phone-input.component.js +0 -85
  524. package/esm2015/phone-input/phone-input.module.js +0 -21
  525. package/esm2015/radio-button/radio-button.component.js +0 -45
  526. package/esm2015/radio-button/radio-button.module.js +0 -17
  527. package/esm2015/ske-loader/ske-loader.component.js +0 -31
  528. package/esm2015/ske-loader/ske-loader.module.js +0 -13
  529. package/esm2015/slider/slider.component.js +0 -38
  530. package/esm2015/slider/slider.module.js +0 -20
  531. package/esm2015/snackbar/snackbar/snackbar.component.js +0 -22
  532. package/esm2015/snackbar/snackbar.module.js +0 -31
  533. package/esm2015/snackbar/snackbar.service.js +0 -48
  534. package/esm2015/specificdatepicker/mis-crystal-design-system-specificdatepicker.js +0 -7
  535. package/esm2015/specificdatepicker/public_api.js +0 -3
  536. package/esm2015/specificdatepicker/specificdatepicker.module.js +0 -20
  537. package/esm2015/specificdatepicker/tz-sdp-container/tz-sdp-container.component.js +0 -356
  538. package/esm2015/specificdatepicker/tz-specificdatepicker.directive.js +0 -179
  539. package/esm2015/specificdatepicker/utils/index.js +0 -45
  540. package/esm2015/star-rating/star-rating.component.js +0 -78
  541. package/esm2015/star-rating/star-rating.module.js +0 -13
  542. package/esm2015/switch/switch.component.js +0 -39
  543. package/esm2015/switch/switch.module.js +0 -17
  544. package/esm2015/table/custom-table-cell.directive.js +0 -42
  545. package/esm2015/table/filter/filter.component.js +0 -75
  546. package/esm2015/table/mis-crystal-design-system-table.js +0 -6
  547. package/esm2015/table/public_api.js +0 -5
  548. package/esm2015/table/sub-table/sub-table.component.js +0 -69
  549. package/esm2015/table/table.component.js +0 -200
  550. package/esm2015/table/table.module.js +0 -21
  551. package/esm2015/timepicker/mis-crystal-design-system-timepicker.js +0 -6
  552. package/esm2015/timepicker/timepicker.component.js +0 -248
  553. package/esm2015/timepicker/timepicker.directive.js +0 -62
  554. package/esm2015/timepicker/timepicker.module.js +0 -20
  555. package/esm2015/timerangepicker/timerangepicker.component.js +0 -194
  556. package/esm2015/timerangepicker/timerangepicker.module.js +0 -18
  557. package/esm2015/toast/toast.component.js +0 -28
  558. package/esm2015/toast/toast.data.service.js +0 -29
  559. package/esm2015/toast/toast.module.js +0 -28
  560. package/esm2015/toast/toast.service.js +0 -96
  561. package/esm2015/tooltip/tooltip-container/tooltip.component.js +0 -35
  562. package/esm2015/tooltip/tooltip.directive.js +0 -128
  563. package/esm2015/tooltip/tooltip.module.js +0 -19
  564. package/esm2015/virtual-scroll/virtual-scroll.component.js +0 -111
  565. package/esm2015/virtual-scroll/virtual-scroll.module.js +0 -24
  566. package/esm2015/widgets/classes/async-widget.js +0 -23
  567. package/esm2015/widgets/classes/base-widget.js +0 -32
  568. package/esm2015/widgets/classes/sync-widget.js +0 -20
  569. package/esm2015/widgets/classes/widget-group.js +0 -32
  570. package/esm2015/widgets/services/widget.service.js +0 -16
  571. package/esm2015/widgets/widgets.module.js +0 -12
  572. package/fab/mis-crystal-design-system-fab.d.ts +0 -4
  573. package/fab/mis-crystal-design-system-fab.metadata.json +0 -1
  574. package/fab/package.json +0 -11
  575. package/fesm2015/mis-crystal-design-system-action-list.js +0 -184
  576. package/fesm2015/mis-crystal-design-system-action-list.js.map +0 -1
  577. package/fesm2015/mis-crystal-design-system-analytics.js.map +0 -1
  578. package/fesm2015/mis-crystal-design-system-async-search-dropdown.js +0 -262
  579. package/fesm2015/mis-crystal-design-system-async-search-dropdown.js.map +0 -1
  580. package/fesm2015/mis-crystal-design-system-button.js +0 -120
  581. package/fesm2015/mis-crystal-design-system-button.js.map +0 -1
  582. package/fesm2015/mis-crystal-design-system-checkbox.js +0 -100
  583. package/fesm2015/mis-crystal-design-system-checkbox.js.map +0 -1
  584. package/fesm2015/mis-crystal-design-system-chip.js +0 -52
  585. package/fesm2015/mis-crystal-design-system-chip.js.map +0 -1
  586. package/fesm2015/mis-crystal-design-system-datepicker_v2.js +0 -357
  587. package/fesm2015/mis-crystal-design-system-datepicker_v2.js.map +0 -1
  588. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.js +0 -413
  589. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.js.map +0 -1
  590. package/fesm2015/mis-crystal-design-system-drawer.js +0 -153
  591. package/fesm2015/mis-crystal-design-system-drawer.js.map +0 -1
  592. package/fesm2015/mis-crystal-design-system-dropdown.js +0 -232
  593. package/fesm2015/mis-crystal-design-system-dropdown.js.map +0 -1
  594. package/fesm2015/mis-crystal-design-system-dynamic-form.js +0 -346
  595. package/fesm2015/mis-crystal-design-system-dynamic-form.js.map +0 -1
  596. package/fesm2015/mis-crystal-design-system-fab.js +0 -84
  597. package/fesm2015/mis-crystal-design-system-fab.js.map +0 -1
  598. package/fesm2015/mis-crystal-design-system-input-stepper.js +0 -73
  599. package/fesm2015/mis-crystal-design-system-input-stepper.js.map +0 -1
  600. package/fesm2015/mis-crystal-design-system-input.js +0 -99
  601. package/fesm2015/mis-crystal-design-system-input.js.map +0 -1
  602. package/fesm2015/mis-crystal-design-system-loader.js +0 -41
  603. package/fesm2015/mis-crystal-design-system-loader.js.map +0 -1
  604. package/fesm2015/mis-crystal-design-system-menu.js +0 -106
  605. package/fesm2015/mis-crystal-design-system-menu.js.map +0 -1
  606. package/fesm2015/mis-crystal-design-system-mobile-filter.js +0 -74
  607. package/fesm2015/mis-crystal-design-system-mobile-filter.js.map +0 -1
  608. package/fesm2015/mis-crystal-design-system-modal.js +0 -147
  609. package/fesm2015/mis-crystal-design-system-modal.js.map +0 -1
  610. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.js +0 -293
  611. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.js.map +0 -1
  612. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.js +0 -289
  613. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.js.map +0 -1
  614. package/fesm2015/mis-crystal-design-system-phone-input.js +0 -109
  615. package/fesm2015/mis-crystal-design-system-phone-input.js.map +0 -1
  616. package/fesm2015/mis-crystal-design-system-radio-button.js +0 -66
  617. package/fesm2015/mis-crystal-design-system-radio-button.js.map +0 -1
  618. package/fesm2015/mis-crystal-design-system-ske-loader.js +0 -49
  619. package/fesm2015/mis-crystal-design-system-ske-loader.js.map +0 -1
  620. package/fesm2015/mis-crystal-design-system-slider.js +0 -62
  621. package/fesm2015/mis-crystal-design-system-slider.js.map +0 -1
  622. package/fesm2015/mis-crystal-design-system-snackbar.js +0 -101
  623. package/fesm2015/mis-crystal-design-system-snackbar.js.map +0 -1
  624. package/fesm2015/mis-crystal-design-system-specificdatepicker.js +0 -599
  625. package/fesm2015/mis-crystal-design-system-specificdatepicker.js.map +0 -1
  626. package/fesm2015/mis-crystal-design-system-star-rating.js +0 -96
  627. package/fesm2015/mis-crystal-design-system-star-rating.js.map +0 -1
  628. package/fesm2015/mis-crystal-design-system-styles.js +0 -4
  629. package/fesm2015/mis-crystal-design-system-styles.js.map +0 -1
  630. package/fesm2015/mis-crystal-design-system-switch.js +0 -60
  631. package/fesm2015/mis-crystal-design-system-switch.js.map +0 -1
  632. package/fesm2015/mis-crystal-design-system-table.js +0 -406
  633. package/fesm2015/mis-crystal-design-system-table.js.map +0 -1
  634. package/fesm2015/mis-crystal-design-system-timepicker.js +0 -330
  635. package/fesm2015/mis-crystal-design-system-timepicker.js.map +0 -1
  636. package/fesm2015/mis-crystal-design-system-timerangepicker.js.map +0 -1
  637. package/fesm2015/mis-crystal-design-system-toast.js +0 -174
  638. package/fesm2015/mis-crystal-design-system-toast.js.map +0 -1
  639. package/fesm2015/mis-crystal-design-system-tooltip.js +0 -183
  640. package/fesm2015/mis-crystal-design-system-tooltip.js.map +0 -1
  641. package/fesm2015/mis-crystal-design-system-utils.js.map +0 -1
  642. package/fesm2015/mis-crystal-design-system-virtual-scroll.js +0 -141
  643. package/fesm2015/mis-crystal-design-system-virtual-scroll.js.map +0 -1
  644. package/fesm2015/mis-crystal-design-system-widgets.js.map +0 -1
  645. package/fesm2015/mis-crystal-design-system.js.map +0 -1
  646. package/input/mis-crystal-design-system-input.d.ts +0 -4
  647. package/input/mis-crystal-design-system-input.metadata.json +0 -1
  648. package/input/package.json +0 -11
  649. package/input-stepper/mis-crystal-design-system-input-stepper.d.ts +0 -4
  650. package/input-stepper/mis-crystal-design-system-input-stepper.metadata.json +0 -1
  651. package/input-stepper/package.json +0 -11
  652. package/loader/mis-crystal-design-system-loader.d.ts +0 -4
  653. package/loader/mis-crystal-design-system-loader.metadata.json +0 -1
  654. package/loader/package.json +0 -11
  655. package/menu/mis-crystal-design-system-menu.d.ts +0 -4
  656. package/menu/mis-crystal-design-system-menu.metadata.json +0 -1
  657. package/menu/package.json +0 -11
  658. package/mis-crystal-design-system.d.ts +0 -4
  659. package/mis-crystal-design-system.metadata.json +0 -1
  660. package/mobile-filter/mis-crystal-design-system-mobile-filter.d.ts +0 -4
  661. package/mobile-filter/mis-crystal-design-system-mobile-filter.metadata.json +0 -1
  662. package/mobile-filter/package.json +0 -11
  663. package/modal/mis-crystal-design-system-modal.d.ts +0 -5
  664. package/modal/mis-crystal-design-system-modal.metadata.json +0 -1
  665. package/modal/package.json +0 -11
  666. package/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.d.ts +0 -4
  667. package/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.metadata.json +0 -1
  668. package/multi-select-dropdown/package.json +0 -11
  669. package/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.d.ts +0 -4
  670. package/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.metadata.json +0 -1
  671. package/nested-multi-select-dropdown/package.json +0 -11
  672. package/phone-input/mis-crystal-design-system-phone-input.d.ts +0 -4
  673. package/phone-input/mis-crystal-design-system-phone-input.metadata.json +0 -1
  674. package/phone-input/package.json +0 -11
  675. package/radio-button/mis-crystal-design-system-radio-button.d.ts +0 -4
  676. package/radio-button/mis-crystal-design-system-radio-button.metadata.json +0 -1
  677. package/radio-button/package.json +0 -11
  678. package/ske-loader/mis-crystal-design-system-ske-loader.d.ts +0 -4
  679. package/ske-loader/mis-crystal-design-system-ske-loader.metadata.json +0 -1
  680. package/ske-loader/package.json +0 -11
  681. package/slider/mis-crystal-design-system-slider.d.ts +0 -4
  682. package/slider/mis-crystal-design-system-slider.metadata.json +0 -1
  683. package/slider/package.json +0 -11
  684. package/snackbar/mis-crystal-design-system-snackbar.d.ts +0 -4
  685. package/snackbar/mis-crystal-design-system-snackbar.metadata.json +0 -1
  686. package/snackbar/package.json +0 -11
  687. package/specificdatepicker/mis-crystal-design-system-specificdatepicker.d.ts +0 -7
  688. package/specificdatepicker/mis-crystal-design-system-specificdatepicker.metadata.json +0 -1
  689. package/specificdatepicker/package.json +0 -11
  690. package/star-rating/mis-crystal-design-system-star-rating.d.ts +0 -4
  691. package/star-rating/mis-crystal-design-system-star-rating.metadata.json +0 -1
  692. package/star-rating/package.json +0 -11
  693. package/styles/mis-crystal-design-system-styles.d.ts +0 -4
  694. package/styles/mis-crystal-design-system-styles.metadata.json +0 -1
  695. package/styles/package.json +0 -11
  696. package/switch/mis-crystal-design-system-switch.d.ts +0 -4
  697. package/switch/mis-crystal-design-system-switch.metadata.json +0 -1
  698. package/switch/package.json +0 -11
  699. package/table/mis-crystal-design-system-table.d.ts +0 -5
  700. package/table/mis-crystal-design-system-table.metadata.json +0 -1
  701. package/table/package.json +0 -11
  702. package/timepicker/mis-crystal-design-system-timepicker.d.ts +0 -5
  703. package/timepicker/mis-crystal-design-system-timepicker.metadata.json +0 -1
  704. package/timepicker/package.json +0 -11
  705. package/timerangepicker/mis-crystal-design-system-timerangepicker.d.ts +0 -4
  706. package/timerangepicker/mis-crystal-design-system-timerangepicker.metadata.json +0 -1
  707. package/timerangepicker/package.json +0 -11
  708. package/toast/mis-crystal-design-system-toast.d.ts +0 -4
  709. package/toast/mis-crystal-design-system-toast.metadata.json +0 -1
  710. package/toast/package.json +0 -11
  711. package/tooltip/mis-crystal-design-system-tooltip.d.ts +0 -4
  712. package/tooltip/mis-crystal-design-system-tooltip.metadata.json +0 -1
  713. package/tooltip/package.json +0 -11
  714. package/utils/mis-crystal-design-system-utils.d.ts +0 -4
  715. package/utils/mis-crystal-design-system-utils.metadata.json +0 -1
  716. package/utils/package.json +0 -11
  717. package/virtual-scroll/mis-crystal-design-system-virtual-scroll.d.ts +0 -4
  718. package/virtual-scroll/mis-crystal-design-system-virtual-scroll.metadata.json +0 -1
  719. package/virtual-scroll/package.json +0 -11
  720. package/widgets/mis-crystal-design-system-widgets.d.ts +0 -4
  721. package/widgets/mis-crystal-design-system-widgets.metadata.json +0 -1
  722. package/widgets/package.json +0 -11
  723. /package/{esm2015/action-list/index.js → esm2022/action-list/index.mjs} +0 -0
  724. /package/{esm2015/action-list/mis-crystal-design-system-action-list.js → esm2022/action-list/mis-crystal-design-system-action-list.mjs} +0 -0
  725. /package/{esm2015/action-list/public_api.js → esm2022/action-list/public_api.mjs} +0 -0
  726. /package/{esm2015/analytics/index.js → esm2022/analytics/index.mjs} +0 -0
  727. /package/{esm2015/analytics/mis-crystal-design-system-analytics.js → esm2022/analytics/mis-crystal-design-system-analytics.mjs} +0 -0
  728. /package/{esm2015/analytics/public_api.js → esm2022/analytics/public_api.mjs} +0 -0
  729. /package/{esm2015/async-search-dropdown/index.js → esm2022/async-search-dropdown/index.mjs} +0 -0
  730. /package/{esm2015/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.js → esm2022/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs} +0 -0
  731. /package/{esm2015/async-search-dropdown/public_api.js → esm2022/async-search-dropdown/public_api.mjs} +0 -0
  732. /package/{esm2015/button/index.js → esm2022/button/index.mjs} +0 -0
  733. /package/{esm2015/button/mis-crystal-design-system-button.js → esm2022/button/mis-crystal-design-system-button.mjs} +0 -0
  734. /package/{esm2015/button/public_api.js → esm2022/button/public_api.mjs} +0 -0
  735. /package/{esm2015/checkbox/index.js → esm2022/checkbox/index.mjs} +0 -0
  736. /package/{esm2015/checkbox/mis-crystal-design-system-checkbox.js → esm2022/checkbox/mis-crystal-design-system-checkbox.mjs} +0 -0
  737. /package/{esm2015/checkbox/public_api.js → esm2022/checkbox/public_api.mjs} +0 -0
  738. /package/{esm2015/chip/index.js → esm2022/chip/index.mjs} +0 -0
  739. /package/{esm2015/chip/mis-crystal-design-system-chip.js → esm2022/chip/mis-crystal-design-system-chip.mjs} +0 -0
  740. /package/{esm2015/chip/public_api.js → esm2022/chip/public_api.mjs} +0 -0
  741. /package/{esm2015/datepicker_v2/datepicker-constants.js → esm2022/datepicker_v2/datepicker-constants.mjs} +0 -0
  742. /package/{esm2015/datepicker_v2/index.js → esm2022/datepicker_v2/index.mjs} +0 -0
  743. /package/{esm2015/datepicker_v2/models/dp-config.model.js → esm2022/datepicker_v2/models/dp-config.model.mjs} +0 -0
  744. /package/{esm2015/daterangepicker_v2/daterangepicker-constants.js → esm2022/daterangepicker_v2/daterangepicker-constants.mjs} +0 -0
  745. /package/{esm2015/daterangepicker_v2/index.js → esm2022/daterangepicker_v2/index.mjs} +0 -0
  746. /package/{esm2015/daterangepicker_v2/models/drp-config.model.js → esm2022/daterangepicker_v2/models/drp-config.model.mjs} +0 -0
  747. /package/{esm2015/drawer/drawer-constants.js → esm2022/drawer/drawer-constants.mjs} +0 -0
  748. /package/{esm2015/drawer/index.js → esm2022/drawer/index.mjs} +0 -0
  749. /package/{esm2015/drawer/public_api.js → esm2022/drawer/public_api.mjs} +0 -0
  750. /package/{esm2015/dropdown/index.js → esm2022/dropdown/index.mjs} +0 -0
  751. /package/{esm2015/dropdown/public_api.js → esm2022/dropdown/public_api.mjs} +0 -0
  752. /package/{esm2015/dynamic-form/dynamic-form.namespace.js → esm2022/dynamic-form/dynamic-form.namespace.mjs} +0 -0
  753. /package/{esm2015/dynamic-form/index.js → esm2022/dynamic-form/index.mjs} +0 -0
  754. /package/{esm2015/dynamic-form/mis-crystal-design-system-dynamic-form.js → esm2022/dynamic-form/mis-crystal-design-system-dynamic-form.mjs} +0 -0
  755. /package/{esm2015/dynamic-form/public_api.js → esm2022/dynamic-form/public_api.mjs} +0 -0
  756. /package/{esm2015/fab/index.js → esm2022/fab/index.mjs} +0 -0
  757. /package/{esm2015/fab/mis-crystal-design-system-fab.js → esm2022/fab/mis-crystal-design-system-fab.mjs} +0 -0
  758. /package/{esm2015/fab/public_api.js → esm2022/fab/public_api.mjs} +0 -0
  759. /package/{esm2015/index.js → esm2022/index.mjs} +0 -0
  760. /package/{esm2015/input/index.js → esm2022/input/index.mjs} +0 -0
  761. /package/{esm2015/input/mis-crystal-design-system-input.js → esm2022/input/mis-crystal-design-system-input.mjs} +0 -0
  762. /package/{esm2015/input/public_api.js → esm2022/input/public_api.mjs} +0 -0
  763. /package/{esm2015/input-stepper/index.js → esm2022/input-stepper/index.mjs} +0 -0
  764. /package/{esm2015/input-stepper/mis-crystal-design-system-input-stepper.js → esm2022/input-stepper/mis-crystal-design-system-input-stepper.mjs} +0 -0
  765. /package/{esm2015/input-stepper/public_api.js → esm2022/input-stepper/public_api.mjs} +0 -0
  766. /package/{esm2015/loader/index.js → esm2022/loader/index.mjs} +0 -0
  767. /package/{esm2015/loader/mis-crystal-design-system-loader.js → esm2022/loader/mis-crystal-design-system-loader.mjs} +0 -0
  768. /package/{esm2015/loader/public_api.js → esm2022/loader/public_api.mjs} +0 -0
  769. /package/{esm2015/menu/index.js → esm2022/menu/index.mjs} +0 -0
  770. /package/{esm2015/menu/mis-crystal-design-system-menu.js → esm2022/menu/mis-crystal-design-system-menu.mjs} +0 -0
  771. /package/{esm2015/menu/public_api.js → esm2022/menu/public_api.mjs} +0 -0
  772. /package/{esm2015/mis-crystal-design-system.js → esm2022/mis-crystal-design-system.mjs} +0 -0
  773. /package/{esm2015/mobile-filter/index.js → esm2022/mobile-filter/index.mjs} +0 -0
  774. /package/{esm2015/mobile-filter/mis-crystal-design-system-mobile-filter.js → esm2022/mobile-filter/mis-crystal-design-system-mobile-filter.mjs} +0 -0
  775. /package/{esm2015/mobile-filter/public_api.js → esm2022/mobile-filter/public_api.mjs} +0 -0
  776. /package/{esm2015/modal/index.js → esm2022/modal/index.mjs} +0 -0
  777. /package/{esm2015/modal/modal-constants.js → esm2022/modal/modal-constants.mjs} +0 -0
  778. /package/{esm2015/modal/modal-ref.js → esm2022/modal/modal-ref.mjs} +0 -0
  779. /package/{esm2015/modal/public_api.js → esm2022/modal/public_api.mjs} +0 -0
  780. /package/{esm2015/multi-select-dropdown/index.js → esm2022/multi-select-dropdown/index.mjs} +0 -0
  781. /package/{esm2015/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.js → esm2022/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.mjs} +0 -0
  782. /package/{esm2015/multi-select-dropdown/public_api.js → esm2022/multi-select-dropdown/public_api.mjs} +0 -0
  783. /package/{esm2015/nested-multi-select-dropdown/index.js → esm2022/nested-multi-select-dropdown/index.mjs} +0 -0
  784. /package/{esm2015/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.js → esm2022/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.mjs} +0 -0
  785. /package/{esm2015/nested-multi-select-dropdown/public_api.js → esm2022/nested-multi-select-dropdown/public_api.mjs} +0 -0
  786. /package/{esm2015/phone-input/index.js → esm2022/phone-input/index.mjs} +0 -0
  787. /package/{esm2015/phone-input/mis-crystal-design-system-phone-input.js → esm2022/phone-input/mis-crystal-design-system-phone-input.mjs} +0 -0
  788. /package/{esm2015/phone-input/public_api.js → esm2022/phone-input/public_api.mjs} +0 -0
  789. /package/{esm2015/public-api.js → esm2022/public-api.mjs} +0 -0
  790. /package/{esm2015/radio-button/index.js → esm2022/radio-button/index.mjs} +0 -0
  791. /package/{esm2015/radio-button/mis-crystal-design-system-radio-button.js → esm2022/radio-button/mis-crystal-design-system-radio-button.mjs} +0 -0
  792. /package/{esm2015/radio-button/public_api.js → esm2022/radio-button/public_api.mjs} +0 -0
  793. /package/{esm2015/ske-loader/index.js → esm2022/ske-loader/index.mjs} +0 -0
  794. /package/{esm2015/ske-loader/mis-crystal-design-system-ske-loader.js → esm2022/ske-loader/mis-crystal-design-system-ske-loader.mjs} +0 -0
  795. /package/{esm2015/ske-loader/public_api.js → esm2022/ske-loader/public_api.mjs} +0 -0
  796. /package/{esm2015/slider/index.js → esm2022/slider/index.mjs} +0 -0
  797. /package/{esm2015/slider/mis-crystal-design-system-slider.js → esm2022/slider/mis-crystal-design-system-slider.mjs} +0 -0
  798. /package/{esm2015/slider/public_api.js → esm2022/slider/public_api.mjs} +0 -0
  799. /package/{esm2015/snackbar/index.js → esm2022/snackbar/index.mjs} +0 -0
  800. /package/{esm2015/snackbar/mis-crystal-design-system-snackbar.js → esm2022/snackbar/mis-crystal-design-system-snackbar.mjs} +0 -0
  801. /package/{esm2015/snackbar/public_api.js → esm2022/snackbar/public_api.mjs} +0 -0
  802. /package/{esm2015/specificdatepicker/daterangepicker-constants.js → esm2022/specificdatepicker/daterangepicker-constants.mjs} +0 -0
  803. /package/{esm2015/specificdatepicker/index.js → esm2022/specificdatepicker/index.mjs} +0 -0
  804. /package/{esm2015/specificdatepicker/models/sdp-config.model.js → esm2022/specificdatepicker/models/sdp-config.model.mjs} +0 -0
  805. /package/{esm2015/star-rating/index.js → esm2022/star-rating/index.mjs} +0 -0
  806. /package/{esm2015/star-rating/mis-crystal-design-system-star-rating.js → esm2022/star-rating/mis-crystal-design-system-star-rating.mjs} +0 -0
  807. /package/{esm2015/star-rating/public_api.js → esm2022/star-rating/public_api.mjs} +0 -0
  808. /package/{esm2015/styles/index.js → esm2022/styles/index.mjs} +0 -0
  809. /package/{esm2015/styles/mis-crystal-design-system-styles.js → esm2022/styles/mis-crystal-design-system-styles.mjs} +0 -0
  810. /package/{esm2015/styles/public_api.js → esm2022/styles/public_api.mjs} +0 -0
  811. /package/{esm2015/switch/index.js → esm2022/switch/index.mjs} +0 -0
  812. /package/{esm2015/switch/mis-crystal-design-system-switch.js → esm2022/switch/mis-crystal-design-system-switch.mjs} +0 -0
  813. /package/{esm2015/switch/public_api.js → esm2022/switch/public_api.mjs} +0 -0
  814. /package/{esm2015/table/index.js → esm2022/table/index.mjs} +0 -0
  815. /package/{esm2015/timepicker/index.js → esm2022/timepicker/index.mjs} +0 -0
  816. /package/{esm2015/timepicker/public_api.js → esm2022/timepicker/public_api.mjs} +0 -0
  817. /package/{esm2015/timepicker/time.namespace.js → esm2022/timepicker/time.namespace.mjs} +0 -0
  818. /package/{esm2015/timerangepicker/index.js → esm2022/timerangepicker/index.mjs} +0 -0
  819. /package/{esm2015/timerangepicker/mis-crystal-design-system-timerangepicker.js → esm2022/timerangepicker/mis-crystal-design-system-timerangepicker.mjs} +0 -0
  820. /package/{esm2015/timerangepicker/public_api.js → esm2022/timerangepicker/public_api.mjs} +0 -0
  821. /package/{esm2015/timerangepicker/timerange.namespace.js → esm2022/timerangepicker/timerange.namespace.mjs} +0 -0
  822. /package/{esm2015/toast/index.js → esm2022/toast/index.mjs} +0 -0
  823. /package/{esm2015/toast/mis-crystal-design-system-toast.js → esm2022/toast/mis-crystal-design-system-toast.mjs} +0 -0
  824. /package/{esm2015/toast/public_api.js → esm2022/toast/public_api.mjs} +0 -0
  825. /package/{esm2015/tooltip/index.js → esm2022/tooltip/index.mjs} +0 -0
  826. /package/{esm2015/tooltip/mis-crystal-design-system-tooltip.js → esm2022/tooltip/mis-crystal-design-system-tooltip.mjs} +0 -0
  827. /package/{esm2015/tooltip/models/tooltip.model.js → esm2022/tooltip/models/tooltip.model.mjs} +0 -0
  828. /package/{esm2015/tooltip/public_api.js → esm2022/tooltip/public_api.mjs} +0 -0
  829. /package/{esm2015/utils/index.js → esm2022/utils/index.mjs} +0 -0
  830. /package/{esm2015/utils/mis-crystal-design-system-utils.js → esm2022/utils/mis-crystal-design-system-utils.mjs} +0 -0
  831. /package/{esm2015/virtual-scroll/index.js → esm2022/virtual-scroll/index.mjs} +0 -0
  832. /package/{esm2015/virtual-scroll/mis-crystal-design-system-virtual-scroll.js → esm2022/virtual-scroll/mis-crystal-design-system-virtual-scroll.mjs} +0 -0
  833. /package/{esm2015/virtual-scroll/public_api.js → esm2022/virtual-scroll/public_api.mjs} +0 -0
  834. /package/{esm2015/virtual-scroll/virtual-scroll.constants.js → esm2022/virtual-scroll/virtual-scroll.constants.mjs} +0 -0
  835. /package/{esm2015/widgets/index.js → esm2022/widgets/index.mjs} +0 -0
  836. /package/{esm2015/widgets/interfaces/widgets.model.js → esm2022/widgets/interfaces/widgets.model.mjs} +0 -0
  837. /package/{esm2015/widgets/mis-crystal-design-system-widgets.js → esm2022/widgets/mis-crystal-design-system-widgets.mjs} +0 -0
  838. /package/{esm2015/widgets/public_api.js → esm2022/widgets/public_api.mjs} +0 -0
@@ -0,0 +1,705 @@
1
+ import { Component, EventEmitter, Input, Output } from "@angular/core";
2
+ import { UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators } from "@angular/forms";
3
+ import * as moment from "moment";
4
+ import "moment-timezone";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@angular/forms";
8
+ import * as i3 from "mis-crystal-design-system/dropdown";
9
+ import * as i4 from "mis-crystal-design-system/switch";
10
+ import * as i5 from "mis-crystal-design-system/multi-select-dropdown";
11
+ import * as i6 from "mis-crystal-design-system/datepicker_v2";
12
+ const _c0 = (a0, a1, a2) => ({ $implicit: a0, formGroup: a1, control: a2 });
13
+ const _c1 = (a0, a1) => ({ $implicit: a0, control: a1 });
14
+ const _c2 = a0 => ({ "border": a0 });
15
+ const _c3 = a0 => ({ $implicit: a0 });
16
+ const _c4 = a0 => ({ "checkbox-active": a0 });
17
+ function DynamicFormComponent_ng_container_2_div_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelementContainerStart(0);
19
+ i0.ɵɵelementContainer(1, 7);
20
+ i0.ɵɵelementContainerEnd();
21
+ } if (rf & 2) {
22
+ const subFieldControl_r1 = ctx.$implicit;
23
+ const ctx_r1 = i0.ɵɵnextContext(2);
24
+ const fieldControl_r3 = ctx_r1.$implicit;
25
+ const i_r4 = ctx_r1.index;
26
+ const ctx_r4 = i0.ɵɵnextContext();
27
+ const dynamicField_r6 = i0.ɵɵreference(4);
28
+ i0.ɵɵadvance();
29
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicField_r6)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c1, ctx_r4.formFields[i_r4].subFields[ctx_r4.findSelectedIndex(ctx_r4.formFields[i_r4] == null ? null : ctx_r4.formFields[i_r4].subFields, fieldControl_r3.controls.value.value.value)], subFieldControl_r1));
30
+ } }
31
+ function DynamicFormComponent_ng_container_2_div_2_Template(rf, ctx) { if (rf & 1) {
32
+ i0.ɵɵelementStart(0, "div", 9);
33
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_container_2_div_2_ng_container_1_Template, 2, 5, "ng-container", 10);
34
+ i0.ɵɵelementEnd();
35
+ } if (rf & 2) {
36
+ const fieldControl_r3 = i0.ɵɵnextContext().$implicit;
37
+ i0.ɵɵadvance();
38
+ i0.ɵɵproperty("ngForOf", fieldControl_r3.controls.subFields.controls);
39
+ } }
40
+ function DynamicFormComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
41
+ i0.ɵɵelementContainerStart(0, 6);
42
+ i0.ɵɵelementContainer(1, 7);
43
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_container_2_div_2_Template, 2, 1, "div", 8);
44
+ i0.ɵɵelementContainerEnd();
45
+ } if (rf & 2) {
46
+ const fieldControl_r3 = ctx.$implicit;
47
+ const i_r4 = ctx.index;
48
+ const ctx_r4 = i0.ɵɵnextContext();
49
+ const dynamicField_r6 = i0.ɵɵreference(4);
50
+ i0.ɵɵproperty("formGroupName", i_r4);
51
+ i0.ɵɵadvance();
52
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicField_r6)("ngTemplateOutletContext", i0.ɵɵpureFunction3(4, _c0, ctx_r4.formFields[i_r4], fieldControl_r3, fieldControl_r3.controls.value));
53
+ i0.ɵɵadvance();
54
+ i0.ɵɵproperty("ngIf", fieldControl_r3.value && (!!(ctx_r4.formFields[i_r4] == null ? null : ctx_r4.formFields[i_r4].subFields) && (ctx_r4.formFields[i_r4] == null ? null : ctx_r4.formFields[i_r4].subFields == null ? null : ctx_r4.formFields[i_r4].subFields.length) > 0 && ctx_r4.matchParentConfig(ctx_r4.formFields[i_r4] == null ? null : ctx_r4.formFields[i_r4].subFields, fieldControl_r3.controls.value.value.value)));
55
+ } }
56
+ function DynamicFormComponent_ng_template_3_div_0_ng_container_5_Template(rf, ctx) { if (rf & 1) {
57
+ i0.ɵɵelementContainer(0, 7);
58
+ } if (rf & 2) {
59
+ const control_r11 = i0.ɵɵnextContext(2).control;
60
+ i0.ɵɵnextContext();
61
+ const dynamicFieldErrors_r12 = i0.ɵɵreference(6);
62
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r12)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c3, control_r11.errors));
63
+ } }
64
+ function DynamicFormComponent_ng_template_3_div_0_Template(rf, ctx) { if (rf & 1) {
65
+ const _r7 = i0.ɵɵgetCurrentView();
66
+ i0.ɵɵelementStart(0, "div", 13)(1, "p", 14);
67
+ i0.ɵɵtext(2);
68
+ i0.ɵɵelementEnd();
69
+ i0.ɵɵelement(3, "div", 15);
70
+ i0.ɵɵelementStart(4, "input", 16);
71
+ i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_div_0_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r7 = i0.ɵɵnextContext(); const field_r9 = ctx_r7.$implicit; const formgroup_r10 = ctx_r7.formGroup; const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.updateSubDynamicFields(field_r9, formgroup_r10, $event)); });
72
+ i0.ɵɵelementEnd();
73
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_0_ng_container_5_Template, 1, 4, "ng-container", 17);
74
+ i0.ɵɵelementEnd();
75
+ } if (rf & 2) {
76
+ const ctx_r7 = i0.ɵɵnextContext();
77
+ const field_r9 = ctx_r7.$implicit;
78
+ const control_r11 = ctx_r7.control;
79
+ i0.ɵɵadvance(2);
80
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, " ");
81
+ i0.ɵɵadvance(2);
82
+ i0.ɵɵproperty("type", field_r9.fieldInputType)("formControl", control_r11)("ngStyle", i0.ɵɵpureFunction1(7, _c2, control_r11.touched && control_r11.errors ? "1px solid #B00020" : ""))("placeholder", field_r9.placeholderText ? field_r9.placeholderText : "Input Text")("min", field_r9.fieldInputType === "number" ? 0 : "");
83
+ i0.ɵɵadvance();
84
+ i0.ɵɵproperty("ngIf", control_r11.touched && control_r11.errors);
85
+ } }
86
+ function DynamicFormComponent_ng_template_3_div_1_ng_container_5_Template(rf, ctx) { if (rf & 1) {
87
+ i0.ɵɵelementContainer(0, 7);
88
+ } if (rf & 2) {
89
+ const control_r11 = i0.ɵɵnextContext(2).control;
90
+ i0.ɵɵnextContext();
91
+ const dynamicFieldErrors_r12 = i0.ɵɵreference(6);
92
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r12)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c3, control_r11.errors));
93
+ } }
94
+ function DynamicFormComponent_ng_template_3_div_1_Template(rf, ctx) { if (rf & 1) {
95
+ const _r13 = i0.ɵɵgetCurrentView();
96
+ i0.ɵɵelementStart(0, "div", 13)(1, "p", 14);
97
+ i0.ɵɵtext(2);
98
+ i0.ɵɵelementEnd();
99
+ i0.ɵɵelement(3, "div", 15);
100
+ i0.ɵɵelementStart(4, "textarea", 18);
101
+ i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_div_1_Template_textarea_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r7 = i0.ɵɵnextContext(); const field_r9 = ctx_r7.$implicit; const formgroup_r10 = ctx_r7.formGroup; const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.updateSubDynamicFields(field_r9, formgroup_r10, $event)); });
102
+ i0.ɵɵelementEnd();
103
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_1_ng_container_5_Template, 1, 4, "ng-container", 17);
104
+ i0.ɵɵelementEnd();
105
+ } if (rf & 2) {
106
+ const ctx_r7 = i0.ɵɵnextContext();
107
+ const field_r9 = ctx_r7.$implicit;
108
+ const control_r11 = ctx_r7.control;
109
+ i0.ɵɵadvance(2);
110
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, " ");
111
+ i0.ɵɵadvance(2);
112
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c2, control_r11.touched && control_r11.errors ? "1px solid #B00020" : ""))("placeholder", field_r9.placeholderText ? field_r9.placeholderText : "Input Text")("formControl", control_r11);
113
+ i0.ɵɵadvance();
114
+ i0.ɵɵproperty("ngIf", control_r11.touched && control_r11.errors);
115
+ } }
116
+ function DynamicFormComponent_ng_template_3_div_2_img_6_Template(rf, ctx) { if (rf & 1) {
117
+ const _r15 = i0.ɵɵgetCurrentView();
118
+ i0.ɵɵelementStart(0, "img", 24);
119
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_div_2_img_6_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r15); i0.ɵɵnextContext(); const dp_r16 = i0.ɵɵreference(5); return i0.ɵɵresetView(dp_r16.click()); });
120
+ i0.ɵɵelementEnd();
121
+ } if (rf & 2) {
122
+ const ctx_r4 = i0.ɵɵnextContext(3);
123
+ i0.ɵɵproperty("src", ctx_r4.calendarIconUrl, i0.ɵɵsanitizeUrl);
124
+ } }
125
+ function DynamicFormComponent_ng_template_3_div_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
126
+ i0.ɵɵelementContainer(0, 7);
127
+ } if (rf & 2) {
128
+ const control_r11 = i0.ɵɵnextContext(2).control;
129
+ i0.ɵɵnextContext();
130
+ const dynamicFieldErrors_r12 = i0.ɵɵreference(6);
131
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r12)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c3, control_r11.errors));
132
+ } }
133
+ function DynamicFormComponent_ng_template_3_div_2_Template(rf, ctx) { if (rf & 1) {
134
+ const _r14 = i0.ɵɵgetCurrentView();
135
+ i0.ɵɵelementStart(0, "div", 19)(1, "p", 20);
136
+ i0.ɵɵtext(2);
137
+ i0.ɵɵelementEnd();
138
+ i0.ɵɵelementStart(3, "div", 21)(4, "input", 22, 2);
139
+ i0.ɵɵlistener("dateChange", function DynamicFormComponent_ng_template_3_div_2_Template_input_dateChange_4_listener($event) { i0.ɵɵrestoreView(_r14); const control_r11 = i0.ɵɵnextContext().control; return i0.ɵɵresetView(control_r11.setValue($event)); });
140
+ i0.ɵɵelementEnd();
141
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_2_img_6_Template, 1, 1, "img", 23);
142
+ i0.ɵɵelementEnd();
143
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_div_2_ng_container_7_Template, 1, 4, "ng-container", 17);
144
+ i0.ɵɵelementEnd();
145
+ } if (rf & 2) {
146
+ const ctx_r7 = i0.ɵɵnextContext();
147
+ const field_r9 = ctx_r7.$implicit;
148
+ const control_r11 = ctx_r7.control;
149
+ const ctx_r4 = i0.ɵɵnextContext();
150
+ i0.ɵɵadvance(2);
151
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, " ");
152
+ i0.ɵɵadvance(2);
153
+ i0.ɵɵproperty("dpConfig", field_r9.fieldConfig)("selectedDate", control_r11.value)("offsetY", 0)("value", control_r11.value);
154
+ i0.ɵɵadvance(2);
155
+ i0.ɵɵproperty("ngIf", ctx_r4.calendarIconUrl);
156
+ i0.ɵɵadvance();
157
+ i0.ɵɵproperty("ngIf", control_r11.touched && control_r11.errors);
158
+ } }
159
+ function DynamicFormComponent_ng_template_3_div_3_ng_container_4_Template(rf, ctx) { if (rf & 1) {
160
+ i0.ɵɵelementContainer(0, 7);
161
+ } if (rf & 2) {
162
+ const control_r11 = i0.ɵɵnextContext(2).control;
163
+ i0.ɵɵnextContext();
164
+ const dynamicFieldErrors_r12 = i0.ɵɵreference(6);
165
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r12)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c3, control_r11.errors));
166
+ } }
167
+ function DynamicFormComponent_ng_template_3_div_3_Template(rf, ctx) { if (rf & 1) {
168
+ const _r17 = i0.ɵɵgetCurrentView();
169
+ i0.ɵɵelementStart(0, "div", 19)(1, "p", 20);
170
+ i0.ɵɵtext(2);
171
+ i0.ɵɵelementEnd();
172
+ i0.ɵɵelementStart(3, "mis-switch", 25);
173
+ i0.ɵɵlistener("valueChanged", function DynamicFormComponent_ng_template_3_div_3_Template_mis_switch_valueChanged_3_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r7 = i0.ɵɵnextContext(); const field_r9 = ctx_r7.$implicit; const formgroup_r10 = ctx_r7.formGroup; const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.updateSubDynamicFields(field_r9, formgroup_r10, $event)); });
174
+ i0.ɵɵelementEnd();
175
+ i0.ɵɵtemplate(4, DynamicFormComponent_ng_template_3_div_3_ng_container_4_Template, 1, 4, "ng-container", 17);
176
+ i0.ɵɵelementEnd();
177
+ } if (rf & 2) {
178
+ const ctx_r7 = i0.ɵɵnextContext();
179
+ const field_r9 = ctx_r7.$implicit;
180
+ const control_r11 = ctx_r7.control;
181
+ i0.ɵɵadvance(2);
182
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, " ");
183
+ i0.ɵɵadvance();
184
+ i0.ɵɵproperty("control", control_r11);
185
+ i0.ɵɵadvance();
186
+ i0.ɵɵproperty("ngIf", control_r11.touched && control_r11.errors);
187
+ } }
188
+ function DynamicFormComponent_ng_template_3_div_4_ng_container_4_Template(rf, ctx) { if (rf & 1) {
189
+ i0.ɵɵelementContainer(0, 7);
190
+ } if (rf & 2) {
191
+ const control_r11 = i0.ɵɵnextContext(2).control;
192
+ i0.ɵɵnextContext();
193
+ const dynamicFieldErrors_r12 = i0.ɵɵreference(6);
194
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r12)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c3, control_r11.errors));
195
+ } }
196
+ function DynamicFormComponent_ng_template_3_div_4_Template(rf, ctx) { if (rf & 1) {
197
+ const _r18 = i0.ɵɵgetCurrentView();
198
+ i0.ɵɵelementStart(0, "div", 19)(1, "p", 20);
199
+ i0.ɵɵtext(2);
200
+ i0.ɵɵelementEnd();
201
+ i0.ɵɵelementStart(3, "mis-dropdown", 26);
202
+ i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_div_4_Template_mis_dropdown_onChange_3_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r7 = i0.ɵɵnextContext(); const field_r9 = ctx_r7.$implicit; const control_r11 = ctx_r7.control; const formgroup_r10 = ctx_r7.formGroup; const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.updateSelectedValueForSingleSelect(field_r9, control_r11, formgroup_r10, $event)); });
203
+ i0.ɵɵelementEnd();
204
+ i0.ɵɵtemplate(4, DynamicFormComponent_ng_template_3_div_4_ng_container_4_Template, 1, 4, "ng-container", 17);
205
+ i0.ɵɵelementEnd();
206
+ } if (rf & 2) {
207
+ const ctx_r7 = i0.ɵɵnextContext();
208
+ const field_r9 = ctx_r7.$implicit;
209
+ const control_r11 = ctx_r7.control;
210
+ i0.ɵɵadvance(2);
211
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, " ");
212
+ i0.ɵɵadvance();
213
+ i0.ɵɵproperty("searchEnabled", false)("width", "140px")("data", field_r9.itemsList)("selectedItem", control_r11.value);
214
+ i0.ɵɵadvance();
215
+ i0.ɵɵproperty("ngIf", control_r11.touched && control_r11.errors);
216
+ } }
217
+ function DynamicFormComponent_ng_template_3_div_5_div_5_img_1_Template(rf, ctx) { if (rf & 1) {
218
+ i0.ɵɵelement(0, "img", 31);
219
+ } if (rf & 2) {
220
+ const ctx_r4 = i0.ɵɵnextContext(4);
221
+ i0.ɵɵproperty("src", ctx_r4.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
222
+ } }
223
+ function DynamicFormComponent_ng_template_3_div_5_div_5_Template(rf, ctx) { if (rf & 1) {
224
+ const _r19 = i0.ɵɵgetCurrentView();
225
+ i0.ɵɵelementStart(0, "div", 29);
226
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_div_5_div_5_Template_div_click_0_listener() { const item_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const control_r11 = ctx_r7.control; const formgroup_r10 = ctx_r7.formGroup; const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.updateSelectedValueForSingleSelect(field_r9, control_r11, formgroup_r10, item_r20)); });
227
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_div_5_div_5_img_1_Template, 1, 1, "img", 30);
228
+ i0.ɵɵelementStart(2, "p", 20);
229
+ i0.ɵɵtext(3);
230
+ i0.ɵɵelementEnd()();
231
+ } if (rf & 2) {
232
+ const item_r20 = ctx.$implicit;
233
+ const control_r11 = i0.ɵɵnextContext(2).control;
234
+ const ctx_r4 = i0.ɵɵnextContext();
235
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c4, item_r20.label === (control_r11.value == null ? null : control_r11.value.label)));
236
+ i0.ɵɵadvance();
237
+ i0.ɵɵproperty("ngIf", item_r20.label === (control_r11.value == null ? null : control_r11.value.label) && ctx_r4.activeBtnIconUrl);
238
+ i0.ɵɵadvance(2);
239
+ i0.ɵɵtextInterpolate(item_r20.label);
240
+ } }
241
+ function DynamicFormComponent_ng_template_3_div_5_ng_container_6_Template(rf, ctx) { if (rf & 1) {
242
+ i0.ɵɵelementContainer(0, 7);
243
+ } if (rf & 2) {
244
+ const control_r11 = i0.ɵɵnextContext(2).control;
245
+ i0.ɵɵnextContext();
246
+ const dynamicFieldErrors_r12 = i0.ɵɵreference(6);
247
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r12)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c3, control_r11.errors));
248
+ } }
249
+ function DynamicFormComponent_ng_template_3_div_5_Template(rf, ctx) { if (rf & 1) {
250
+ i0.ɵɵelementStart(0, "div", 13)(1, "p", 14);
251
+ i0.ɵɵtext(2);
252
+ i0.ɵɵelementEnd();
253
+ i0.ɵɵelement(3, "div", 15);
254
+ i0.ɵɵelementStart(4, "div", 27);
255
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_5_div_5_Template, 4, 5, "div", 28);
256
+ i0.ɵɵelementEnd();
257
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_5_ng_container_6_Template, 1, 4, "ng-container", 17);
258
+ i0.ɵɵelementEnd();
259
+ } if (rf & 2) {
260
+ const ctx_r7 = i0.ɵɵnextContext();
261
+ const field_r9 = ctx_r7.$implicit;
262
+ const control_r11 = ctx_r7.control;
263
+ i0.ɵɵadvance(2);
264
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, " ");
265
+ i0.ɵɵadvance(3);
266
+ i0.ɵɵproperty("ngForOf", field_r9.itemsList);
267
+ i0.ɵɵadvance();
268
+ i0.ɵɵproperty("ngIf", control_r11.touched && control_r11.errors);
269
+ } }
270
+ function DynamicFormComponent_ng_template_3_div_6_div_5_img_1_Template(rf, ctx) { if (rf & 1) {
271
+ i0.ɵɵelement(0, "img", 31);
272
+ } if (rf & 2) {
273
+ const ctx_r4 = i0.ɵɵnextContext(4);
274
+ i0.ɵɵproperty("src", ctx_r4.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
275
+ } }
276
+ function DynamicFormComponent_ng_template_3_div_6_div_5_Template(rf, ctx) { if (rf & 1) {
277
+ const _r21 = i0.ɵɵgetCurrentView();
278
+ i0.ɵɵelementStart(0, "div", 29);
279
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_div_6_div_5_Template_div_click_0_listener() { const item_r22 = i0.ɵɵrestoreView(_r21).$implicit; const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const control_r11 = ctx_r7.control; const formgroup_r10 = ctx_r7.formGroup; const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.updateSelectedValueForMultiSelect(field_r9, control_r11, formgroup_r10, [item_r22])); });
280
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_div_6_div_5_img_1_Template, 1, 1, "img", 30);
281
+ i0.ɵɵelementStart(2, "p", 20);
282
+ i0.ɵɵtext(3);
283
+ i0.ɵɵelementEnd()();
284
+ } if (rf & 2) {
285
+ const item_r22 = ctx.$implicit;
286
+ const control_r11 = i0.ɵɵnextContext(2).control;
287
+ const ctx_r4 = i0.ɵɵnextContext();
288
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c4, ctx_r4.isCheckBoxSelected(item_r22.label, control_r11.value)));
289
+ i0.ɵɵadvance();
290
+ i0.ɵɵproperty("ngIf", ctx_r4.isCheckBoxSelected(item_r22.label, control_r11.value) && ctx_r4.activeBtnIconUrl);
291
+ i0.ɵɵadvance(2);
292
+ i0.ɵɵtextInterpolate(item_r22.label);
293
+ } }
294
+ function DynamicFormComponent_ng_template_3_div_6_ng_container_6_Template(rf, ctx) { if (rf & 1) {
295
+ i0.ɵɵelementContainer(0, 7);
296
+ } if (rf & 2) {
297
+ const control_r11 = i0.ɵɵnextContext(2).control;
298
+ i0.ɵɵnextContext();
299
+ const dynamicFieldErrors_r12 = i0.ɵɵreference(6);
300
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r12)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c3, control_r11.errors));
301
+ } }
302
+ function DynamicFormComponent_ng_template_3_div_6_Template(rf, ctx) { if (rf & 1) {
303
+ i0.ɵɵelementStart(0, "div", 13)(1, "p", 14);
304
+ i0.ɵɵtext(2);
305
+ i0.ɵɵelementEnd();
306
+ i0.ɵɵelement(3, "div", 15);
307
+ i0.ɵɵelementStart(4, "div", 27);
308
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_6_div_5_Template, 4, 5, "div", 28);
309
+ i0.ɵɵelementEnd();
310
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_6_ng_container_6_Template, 1, 4, "ng-container", 17);
311
+ i0.ɵɵelementEnd();
312
+ } if (rf & 2) {
313
+ const ctx_r7 = i0.ɵɵnextContext();
314
+ const field_r9 = ctx_r7.$implicit;
315
+ const control_r11 = ctx_r7.control;
316
+ i0.ɵɵadvance(2);
317
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, " ");
318
+ i0.ɵɵadvance(3);
319
+ i0.ɵɵproperty("ngForOf", field_r9.itemsList);
320
+ i0.ɵɵadvance();
321
+ i0.ɵɵproperty("ngIf", control_r11.touched && control_r11.errors);
322
+ } }
323
+ function DynamicFormComponent_ng_template_3_div_7_ng_container_4_Template(rf, ctx) { if (rf & 1) {
324
+ i0.ɵɵelementContainer(0, 7);
325
+ } if (rf & 2) {
326
+ const control_r11 = i0.ɵɵnextContext(2).control;
327
+ i0.ɵɵnextContext();
328
+ const dynamicFieldErrors_r12 = i0.ɵɵreference(6);
329
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r12)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c3, control_r11.errors));
330
+ } }
331
+ function DynamicFormComponent_ng_template_3_div_7_Template(rf, ctx) { if (rf & 1) {
332
+ const _r23 = i0.ɵɵgetCurrentView();
333
+ i0.ɵɵelementStart(0, "div", 19)(1, "p", 20);
334
+ i0.ɵɵtext(2);
335
+ i0.ɵɵelementEnd();
336
+ i0.ɵɵelementStart(3, "mis-multi-select-dropdown", 32);
337
+ i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_div_7_Template_mis_multi_select_dropdown_onChange_3_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r7 = i0.ɵɵnextContext(); const field_r9 = ctx_r7.$implicit; const control_r11 = ctx_r7.control; const formgroup_r10 = ctx_r7.formGroup; const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.updateSelectedValueForMultiSelect(field_r9, control_r11, formgroup_r10, $event)); });
338
+ i0.ɵɵelementEnd();
339
+ i0.ɵɵtemplate(4, DynamicFormComponent_ng_template_3_div_7_ng_container_4_Template, 1, 4, "ng-container", 17);
340
+ i0.ɵɵelementEnd();
341
+ } if (rf & 2) {
342
+ const ctx_r7 = i0.ɵɵnextContext();
343
+ const field_r9 = ctx_r7.$implicit;
344
+ const control_r11 = ctx_r7.control;
345
+ i0.ɵɵadvance(2);
346
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, " ");
347
+ i0.ɵɵadvance();
348
+ i0.ɵɵproperty("width", "140px")("showSelectedCount", true)("dropdownListWidth", "256px")("searchEnabled", false)("hideApplyButton", true)("data", field_r9.itemsList)("selectedItems", control_r11.value);
349
+ i0.ɵɵadvance();
350
+ i0.ɵɵproperty("ngIf", control_r11.touched && control_r11.errors);
351
+ } }
352
+ function DynamicFormComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
353
+ i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_div_0_Template, 6, 9, "div", 11)(1, DynamicFormComponent_ng_template_3_div_1_Template, 6, 7, "div", 11)(2, DynamicFormComponent_ng_template_3_div_2_Template, 8, 7, "div", 12)(3, DynamicFormComponent_ng_template_3_div_3_Template, 5, 3, "div", 12)(4, DynamicFormComponent_ng_template_3_div_4_Template, 5, 6, "div", 12)(5, DynamicFormComponent_ng_template_3_div_5_Template, 7, 3, "div", 11)(6, DynamicFormComponent_ng_template_3_div_6_Template, 7, 3, "div", 11)(7, DynamicFormComponent_ng_template_3_div_7_Template, 5, 9, "div", 12);
354
+ } if (rf & 2) {
355
+ const field_r9 = ctx.$implicit;
356
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "input" && (field_r9.fieldInputType === "text" || field_r9.fieldInputType === "number"));
357
+ i0.ɵɵadvance();
358
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "input" && field_r9.fieldInputType === "textarea");
359
+ i0.ɵɵadvance();
360
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "input" && field_r9.fieldInputType === "date");
361
+ i0.ɵɵadvance();
362
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "boolean" && field_r9.fieldInputType === "toggle");
363
+ i0.ɵɵadvance();
364
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "singleSelect" && field_r9.fieldInputType === "dropdown");
365
+ i0.ɵɵadvance();
366
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "singleSelect" && field_r9.fieldInputType === "radio");
367
+ i0.ɵɵadvance();
368
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "multiSelect" && field_r9.fieldInputType === "checkbox");
369
+ i0.ɵɵadvance();
370
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "multiSelect" && field_r9.fieldInputType === "dropdown");
371
+ } }
372
+ function DynamicFormComponent_ng_template_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
373
+ i0.ɵɵelementContainerStart(0);
374
+ i0.ɵɵelementStart(1, "p", 34);
375
+ i0.ɵɵtext(2);
376
+ i0.ɵɵelementEnd();
377
+ i0.ɵɵelement(3, "div", 35);
378
+ i0.ɵɵelementContainerEnd();
379
+ } if (rf & 2) {
380
+ const error_r24 = ctx.$implicit;
381
+ i0.ɵɵadvance(2);
382
+ i0.ɵɵtextInterpolate1(" ", " \u2022 \u00A0" + error_r24.value, " ");
383
+ } }
384
+ function DynamicFormComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
385
+ i0.ɵɵelementStart(0, "div", 33);
386
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_5_ng_container_1_Template, 4, 1, "ng-container", 10);
387
+ i0.ɵɵpipe(2, "keyvalue");
388
+ i0.ɵɵelementEnd();
389
+ } if (rf & 2) {
390
+ const errors_r25 = ctx.$implicit;
391
+ i0.ɵɵadvance();
392
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, errors_r25));
393
+ } }
394
+ export class DynamicFormComponent {
395
+ constructor() {
396
+ /**
397
+ * formFields: Dynamic fields recieved from the API metadata to build a dynamic form
398
+ * formValues: Holds the value of the dynamic form with "key" being dynamic field "title"
399
+ * and value being the user input.
400
+ */
401
+ this.formFields = [];
402
+ this.formValues = {};
403
+ // Need to deprecate these inputs and use constants.
404
+ this.activeBtnIconUrl = "";
405
+ this.calendarIconUrl = "";
406
+ /**
407
+ * formUpdated: Emits formValues Object whenever there is a change in the dynamic form.
408
+ */
409
+ this.formUpdated = new EventEmitter();
410
+ /**
411
+ * formValid: Emits boolean depending on validity of the form
412
+ */
413
+ this.formValid = new EventEmitter();
414
+ /**
415
+ * formInitialized: Emits dynamic form API on form initilization
416
+ */
417
+ this.formInitialized = new EventEmitter();
418
+ }
419
+ ngOnInit() {
420
+ // Building the form
421
+ this.dynamicForm = this.generateDynamicForm(this.formFields, this.formValues);
422
+ // Subscribing to form changes and emiting values.
423
+ this.valueChangesSubscription$ = this.dynamicForm.valueChanges.subscribe(formValue => {
424
+ this.onFormValueChanges();
425
+ });
426
+ //api to expose functions
427
+ this.dynamicFormAPI = {
428
+ defaultFormValues: () => {
429
+ return this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);
430
+ }
431
+ };
432
+ this.formInitialized.emit(this.dynamicFormAPI);
433
+ this.formValid.emit(this.dynamicForm.valid);
434
+ }
435
+ ngOnDestroy() {
436
+ this.valueChangesSubscription$?.unsubscribe();
437
+ }
438
+ onFormValueChanges() {
439
+ let formValues = this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);
440
+ this.formValid.emit(this.dynamicForm.valid);
441
+ this.formUpdated.emit(formValues);
442
+ console.log(formValues);
443
+ }
444
+ generateDynamicFieldsValueObject(formValues) {
445
+ let dynamicFieldsValue = {};
446
+ formValues.forEach((fieldValue, index) => {
447
+ let formattedValue = this.mapFormFieldToFormValue(this.formFields[index], fieldValue.value);
448
+ if (fieldValue.subFields?.length > 0) {
449
+ let formattedSubFieldsValues = {};
450
+ fieldValue.subFields.forEach((subFieldValue, subIndex) => {
451
+ let subFormField = this.formFields[index].subFields[subIndex];
452
+ formattedSubFieldsValues[subFormField.configName] = this.mapFormFieldToFormValue(subFormField, subFieldValue);
453
+ });
454
+ dynamicFieldsValue[this.formFields[index].configName] = {
455
+ value: formattedValue,
456
+ subFields: formattedSubFieldsValues
457
+ };
458
+ }
459
+ else {
460
+ dynamicFieldsValue[this.formFields[index].configName] = formattedValue;
461
+ }
462
+ });
463
+ return dynamicFieldsValue;
464
+ }
465
+ generateDynamicForm(formFields, formValues) {
466
+ let formArray = new UntypedFormArray([]);
467
+ for (let field of formFields) {
468
+ let fieldValue = formValues[field.configName]?.value ? formValues[field.configName].value : formValues[field.configName];
469
+ let fieldControl = this.mapFormValueToFormField(field, fieldValue);
470
+ let subFieldsControls = this.generateSubDynamicFields(formValues, field, fieldControl.value);
471
+ formArray.push(new UntypedFormGroup({
472
+ value: fieldControl,
473
+ subFields: subFieldsControls
474
+ }));
475
+ }
476
+ return new UntypedFormGroup({
477
+ dynamicFields: formArray
478
+ });
479
+ }
480
+ getDynamicFieldsControls() {
481
+ return this.dynamicForm.get("dynamicFields");
482
+ }
483
+ updateSubDynamicFields(field, formGroup, value) {
484
+ if (field.subFields?.length > 0) {
485
+ let subFieldsControls = this.generateSubDynamicFields(this.formValues, field, value);
486
+ formGroup.removeControl('subFields');
487
+ formGroup.addControl('subFields', subFieldsControls);
488
+ }
489
+ }
490
+ updateSelectedValueForSingleSelect(field, control, formGroup, value) {
491
+ if (control.value?.value !== value.value) {
492
+ control.setValue(value);
493
+ }
494
+ else
495
+ control.setValue('');
496
+ this.updateSubDynamicFields(field, formGroup, value);
497
+ control.markAsTouched();
498
+ }
499
+ updateSelectedValueForMultiSelect(field, control, formGroup, values) {
500
+ let selectedValues = control.value;
501
+ for (let value of values) {
502
+ let itemIndex = selectedValues.findIndex(item => item.label === value.label);
503
+ if (itemIndex > -1) {
504
+ selectedValues.splice(itemIndex, 1);
505
+ }
506
+ else {
507
+ selectedValues.push({ ...value });
508
+ }
509
+ }
510
+ control.setValue(selectedValues);
511
+ this.updateSubDynamicFields(field, formGroup, values);
512
+ control.markAsTouched();
513
+ }
514
+ isCheckBoxSelected(value, selectedValues) {
515
+ return selectedValues.findIndex(item => item.label === value) > -1;
516
+ }
517
+ findSelectedIndex(subfields, value) {
518
+ const selectedIndex = subfields.findIndex(item => item.parentConfigValue === value);
519
+ return selectedIndex !== -1 ? selectedIndex : 0;
520
+ }
521
+ matchParentConfig(subfields, value) {
522
+ if (!subfields || subfields.length === 0) {
523
+ return false;
524
+ }
525
+ return subfields.some(item => item.parentConfigValue === value);
526
+ }
527
+ generateSubDynamicFields(formValues, parentField, parentValue) {
528
+ let controls = new UntypedFormArray([]);
529
+ let subFields = parentField.subFields;
530
+ let subFieldsValues = formValues[parentField.configName]?.subFields ? formValues[parentField.configName].subFields : {};
531
+ if (!subFields)
532
+ return controls;
533
+ if (parentField.fieldType === 'singleSelect') {
534
+ subFields = subFields.filter((subField) => subField.parentConfigValue === parentValue?.value);
535
+ }
536
+ else if (parentField.fieldType === 'multiSelect') {
537
+ let parentValues = new Set(parentValue.map((value) => value.value));
538
+ subFields = subFields.filter((subField) => parentValues.has(subField.parentConfigValue));
539
+ }
540
+ if (subFields?.length > 0) {
541
+ for (let subField of subFields) {
542
+ controls.push(this.mapFormValueToFormField(subField, subFieldsValues[subField.configName]));
543
+ }
544
+ }
545
+ return controls;
546
+ }
547
+ mapFormValueToFormField(formField, formValue) {
548
+ let validators = formField.validators ? [dynamicFieldValidator(formField.validators)] : [];
549
+ let control = new UntypedFormControl(null, validators);
550
+ if (formField.fieldType === "input") {
551
+ if (formField.fieldInputType === "text" || formField.fieldInputType === "textarea")
552
+ control.setValue(formValue ? formValue : "");
553
+ else if (formField.fieldInputType === "number")
554
+ control.setValue(formValue ? formValue : 0);
555
+ else if (formField.fieldInputType === "date") {
556
+ if (formValue && typeof formValue === "number") {
557
+ control.setValue(moment(formValue).tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));
558
+ }
559
+ else {
560
+ control.setValue(moment().tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));
561
+ }
562
+ }
563
+ }
564
+ else if (formField.fieldType === "singleSelect") {
565
+ const findSelectedValue = () => {
566
+ let index = formField.itemsList.findIndex(item => item.value === formValue);
567
+ return index >= 0 ? formField.itemsList[index] : "";
568
+ };
569
+ if (formField.fieldInputType === "dropdown") {
570
+ if (!formValue)
571
+ control.setValue(formField.itemsList[0]);
572
+ else
573
+ control.setValue(findSelectedValue());
574
+ }
575
+ else if (formField.fieldInputType === "radio") {
576
+ control.setValue(findSelectedValue());
577
+ }
578
+ }
579
+ else if (formField.fieldType === "multiSelect") {
580
+ if (formValue && Array.isArray(formValue)) {
581
+ let selectedValues = [];
582
+ for (let value of formValue) {
583
+ let index = formField.itemsList.findIndex(item => item.value === value);
584
+ if (index > -1)
585
+ selectedValues.push({ ...formField.itemsList[index] });
586
+ }
587
+ control.setValue(selectedValues);
588
+ }
589
+ else {
590
+ control.setValue([]);
591
+ }
592
+ }
593
+ else if (formField.fieldType === "boolean") {
594
+ control.setValue(!!formValue);
595
+ }
596
+ else
597
+ control.setValue(null);
598
+ return control;
599
+ }
600
+ mapFormFieldToFormValue(formField, formValue) {
601
+ if (formField.fieldType === "input") {
602
+ if (formField.fieldInputType === "text" || formField.fieldInputType === "textarea")
603
+ return formValue;
604
+ else if (formField.fieldInputType === "number")
605
+ return +formValue;
606
+ else if (formField.fieldInputType === "date") {
607
+ return moment.tz(formValue, formField.fieldConfig.format, formField.fieldConfig.timezone).valueOf();
608
+ }
609
+ }
610
+ else if (formField.fieldType === "singleSelect") {
611
+ return formValue?.value ?? '';
612
+ }
613
+ else if (formField.fieldType === "multiSelect") {
614
+ return formValue?.map(item => item.value);
615
+ }
616
+ else if (formField.fieldType === "boolean") {
617
+ return formValue;
618
+ }
619
+ else
620
+ return formValue;
621
+ }
622
+ static { this.ɵfac = function DynamicFormComponent_Factory(t) { return new (t || DynamicFormComponent)(); }; }
623
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DynamicFormComponent, selectors: [["mis-dynamic-form"]], inputs: { formFields: "formFields", formValues: "formValues", activeBtnIconUrl: "activeBtnIconUrl", calendarIconUrl: "calendarIconUrl" }, outputs: { formUpdated: "formUpdated", formValid: "formValid", formInitialized: "formInitialized" }, decls: 7, vars: 2, consts: [["dynamicField", ""], ["dynamicFieldErrors", ""], ["dp", ""], [3, "formGroup"], ["formArrayName", "dynamicFields"], [3, "formGroupName", 4, "ngFor", "ngForOf"], [3, "formGroupName"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], ["class", "sub-dynamic-form", 4, "ngIf"], [1, "sub-dynamic-form"], [4, "ngFor", "ngForOf"], ["class", "dynamic-field multi-line-field-container", 4, "ngIf"], ["class", "dynamic-field single-line-field-container", 4, "ngIf"], [1, "dynamic-field", "multi-line-field-container"], [1, "h7", "field-title-sm"], [2, "flex-basis", "100%"], [1, "input-field", "ip-text", 3, "ngModelChange", "type", "formControl", "ngStyle", "placeholder", "min"], [3, "ngTemplateOutlet", "ngTemplateOutletContext", 4, "ngIf"], ["type", "text", 1, "input-field", "ip-textarea", 3, "ngModelChange", "ngStyle", "placeholder", "formControl"], [1, "dynamic-field", "single-line-field-container"], [1, "h6"], [1, "date-picker-container"], ["readonly", "", "misTzDp", "", 1, "date-picker", 3, "dateChange", "dpConfig", "selectedDate", "offsetY", "value"], ["alt", "data-picker", "class", "date-picker-icon", 3, "src", "click", 4, "ngIf"], ["alt", "data-picker", 1, "date-picker-icon", 3, "click", "src"], [3, "valueChanged", "control"], [3, "onChange", "searchEnabled", "width", "data", "selectedItem"], ["id", "checkboxes-container"], ["class", "radio-checkbox-common", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "radio-checkbox-common", 3, "click", "ngClass"], ["alt", "", 3, "src", 4, "ngIf"], ["alt", "", 3, "src"], [3, "onChange", "width", "showSelectedCount", "dropdownListWidth", "searchEnabled", "hideApplyButton", "data", "selectedItems"], ["id", "error-messages-container"], [1, "h8"], [2, "flex-basis", "100%", "height", "0"]], template: function DynamicFormComponent_Template(rf, ctx) { if (rf & 1) {
624
+ i0.ɵɵelementStart(0, "form", 3);
625
+ i0.ɵɵelementContainerStart(1, 4);
626
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_container_2_Template, 3, 8, "ng-container", 5);
627
+ i0.ɵɵelementContainerEnd();
628
+ i0.ɵɵelementEnd();
629
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_Template, 8, 8, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(5, DynamicFormComponent_ng_template_5_Template, 3, 3, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
630
+ } if (rf & 2) {
631
+ i0.ɵɵproperty("formGroup", ctx.dynamicForm);
632
+ i0.ɵɵadvance(2);
633
+ i0.ɵɵproperty("ngForOf", ctx.getDynamicFieldsControls().controls);
634
+ } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormControlDirective, i2.FormGroupDirective, i2.FormGroupName, i2.FormArrayName, i3.DropdownComponent, i4.SwitchComponent, i5.MultiSelectDropdownComponent, i6.TzDatepickerDirective, i1.KeyValuePipe], styles: ["p[_ngcontent-%COMP%]{margin:0;cursor:default} .main-container{margin:0;max-width:100%}.sub-dynamic-form[_ngcontent-%COMP%]{padding-left:24px}.dynamic-field[_ngcontent-%COMP%] .container{height:32px!important}.single-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm[_ngcontent-%COMP%]{margin-bottom:8px;cursor:default}.input-field[_ngcontent-%COMP%]{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text[_ngcontent-%COMP%]{height:44px;padding:8px 12px}.ip-textarea[_ngcontent-%COMP%]{max-height:94px;padding:8px}input[_ngcontent-%COMP%]:focus{outline:none}input[_ngcontent-%COMP%]::placeholder{color:var(--grey-seperators)}textarea[_ngcontent-%COMP%]:focus{outline:none}.date-picker-container[_ngcontent-%COMP%]{position:relative;width:140px}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]:hover{background-color:var(--grey-hover)}.date-picker-container[_ngcontent-%COMP%] .date-picker-icon[_ngcontent-%COMP%]{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form[_ngcontent-%COMP%] .dynamic-field[_ngcontent-%COMP%]:last-child{border-bottom:none!important}#checkboxes-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-muted);cursor:pointer}.radio-checkbox-common[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{margin-right:8px}.checkbox-active[_ngcontent-%COMP%]{background-color:var(--pmry-500)}.checkbox-active[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-white)}#error-messages-container[_ngcontent-%COMP%]{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--sem-error)}"] }); }
635
+ }
636
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicFormComponent, [{
637
+ type: Component,
638
+ args: [{ selector: "mis-dynamic-form", template: "<form [formGroup]=\"dynamicForm\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl.value && (!!formFields[i]?.subFields && formFields[i]?.subFields?.length > 0 && matchParentConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls;\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i].subFields[findSelectedIndex(formFields[i]?.subFields, fieldControl.controls.value.value.value)],\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <div class=\"dynamic-field multi-line-field-container\"\n *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n\n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <div class=\"dynamic-field multi-line-field-container\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <div class=\"dynamic-field single-line-field-container\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }}\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl\" class=\"date-picker-icon\" [src]=\"calendarIconUrl\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <div class=\"dynamic-field single-line-field-container\"\n *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <p class=\"h6\">\n {{ field.title }}\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <div class=\"dynamic-field single-line-field-container\"\n *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <p class=\"h6\">\n {{ field.title }}\n </p>\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <div class=\"dynamic-field multi-line-field-container\"\n *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <div class=\"dynamic-field multi-line-field-container\"\n *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <div class=\"dynamic-field single-line-field-container\"\n *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <p class=\"h6\">\n {{ field.title }}\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" \u2022 &nbsp;\" + error.value}}\n </p>\n <div style=\"flex-basis: 100%; height: 0\"></div>\n </ng-container>\n </div>\n</ng-template>", styles: ["p{margin:0;cursor:default}::ng-deep .main-container{margin:0;max-width:100%}.sub-dynamic-form{padding-left:24px}.dynamic-field ::ng-deep .container{height:32px!important}.single-line-field-container{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm{margin-bottom:8px;cursor:default}.input-field{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text{height:44px;padding:8px 12px}.ip-textarea{max-height:94px;padding:8px}input:focus{outline:none}input::placeholder{color:var(--grey-seperators)}textarea:focus{outline:none}.date-picker-container{position:relative;width:140px}.date-picker-container .date-picker{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container .date-picker:hover{background-color:var(--grey-hover)}.date-picker-container .date-picker-icon{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form .dynamic-field:last-child{border-bottom:none!important}#checkboxes-container{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common p{color:var(--text-muted);cursor:pointer}.radio-checkbox-common img{margin-right:8px}.checkbox-active{background-color:var(--pmry-500)}.checkbox-active p{color:var(--text-white)}#error-messages-container{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container p{color:var(--sem-error)}\n"] }]
639
+ }], () => [], { formFields: [{
640
+ type: Input
641
+ }], formValues: [{
642
+ type: Input
643
+ }], activeBtnIconUrl: [{
644
+ type: Input
645
+ }], calendarIconUrl: [{
646
+ type: Input
647
+ }], formUpdated: [{
648
+ type: Output
649
+ }], formValid: [{
650
+ type: Output
651
+ }], formInitialized: [{
652
+ type: Output
653
+ }] }); })();
654
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DynamicFormComponent, { className: "DynamicFormComponent" }); })();
655
+ export const dynamicFieldValidator = (validators) => {
656
+ return (control) => {
657
+ let value = control.value;
658
+ if (Array.isArray(value)) {
659
+ return null;
660
+ }
661
+ else if (typeof value === 'object') {
662
+ value = value?.value ? value.value : '';
663
+ }
664
+ let errors = null;
665
+ validators.forEach((validator) => {
666
+ let error = null;
667
+ let message = validator.message;
668
+ switch (validator.type) {
669
+ case "Required":
670
+ error = Validators.required(control);
671
+ if (error)
672
+ error = { Required: message };
673
+ break;
674
+ case "MinLength":
675
+ error = Validators.minLength(+validator.value)(control);
676
+ message = message.replace('${0}', error?.minlength.requiredLength);
677
+ if (error)
678
+ error = { MinLength: message };
679
+ break;
680
+ case "MaxLength":
681
+ error = Validators.maxLength(+validator.value)(control);
682
+ message = message.replace('${0}', error?.actualLength);
683
+ if (error)
684
+ error = { MaxLength: message };
685
+ break;
686
+ case "Email":
687
+ error = Validators.email(control);
688
+ if (error)
689
+ error = { Email: message };
690
+ break;
691
+ case "Custom":
692
+ error = Validators.pattern(`${validator.value}`)(control);
693
+ if (error)
694
+ error = { Custom: message };
695
+ break;
696
+ default:
697
+ break;
698
+ }
699
+ if (error)
700
+ errors = { ...errors, ...error };
701
+ });
702
+ return errors;
703
+ };
704
+ };
705
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBZ0IsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEcsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBaUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEosT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUNRakIsNkJBQXdGO0lBQ3RGLDJCQU1lOzs7Ozs7Ozs7SUFMYixjQUFpQztJQUNqQyxBQURBLGtEQUFpQyxnUUFJL0I7OztJQVBSLDhCQUF5TjtJQUN2Tiw2R0FBd0Y7SUFTMUYsaUJBQU07OztJQVRzQyxjQUE0QztJQUE1QyxxRUFBNEM7OztJQVgxRixnQ0FBa0g7SUFDOUcsMkJBUWE7SUFDZixvRkFBeU47Ozs7Ozs7SUFWN00sb0NBQW1CO0lBRTdCLGNBQWlDO0lBQ2pDLEFBREEsa0RBQWlDLGlJQUsvQjtJQUcyQixjQUF3TDtJQUF4TCxrYUFBd0w7OztJQThCek4sMkJBSWU7Ozs7O0lBRmIsQUFEQSx5REFBdUMsMkVBQ2tCOzs7O0lBWDNELEFBRkYsK0JBQ2dILFlBQ2pGO0lBQzNCLFlBQ0Y7SUFBQSxpQkFBSTtJQUNKLDBCQUFvQztJQUNwQyxpQ0FJdUQ7SUFIckQsaVVBQWlCLDhEQUFnRCxLQUFDO0lBRHBFLGlCQUl1RDtJQUN2RCw0R0FH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TUFBTTtZQUNWLENBQUM7WUFDRCxJQUFJLEtBQUs7Z0JBQUUsTUFBTSxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQTtRQUM3QyxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTnNEeW5hbWljRm9ybSB9IGZyb20gXCIuL2R5bmFtaWMtZm9ybS5uYW1lc3BhY2VcIjtcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xuaW1wb3J0IFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLWR5bmFtaWMtZm9ybVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogZm9ybUZpZWxkczogIER5bmFtaWMgZmllbGRzIHJlY2lldmVkIGZyb20gdGhlIEFQSSBtZXRhZGF0YSB0byBidWlsZCBhIGR5bmFtaWMgZm9ybVxuICAgKiBmb3JtVmFsdWVzOiAgSG9sZHMgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZvcm0gd2l0aCBcImtleVwiIGJlaW5nIGR5bmFtaWMgZmllbGQgXCJ0aXRsZVwiXG4gICAqICAgICAgICAgICAgICBhbmQgdmFsdWUgYmVpbmcgdGhlIHVzZXIgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBmb3JtRmllbGRzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+ID0gW107XG4gIEBJbnB1dCgpIGZvcm1WYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgLy8gTmVlZCB0byBkZXByZWNhdGUgdGhlc2UgaW5wdXRzIGFuZCB1c2UgY29uc3RhbnRzLlxuICBASW5wdXQoKSBhY3RpdmVCdG5JY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgY2FsZW5kYXJJY29uVXJsID0gXCJcIjtcbiAgLyoqXG4gICAqIGR5bmFtaWNGb3JtOiBDb25zdHJ1Y3RlZCB1c2luZyBmb3JtRmllbGRzIGFuZCBmb3JtVmFsdWVzKGluIGNhc2Ugb2YgZWRpdClcbiAgICovXG4gIGR5bmFtaWNGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIC8qKlxuICAgKiBmb3JtVXBkYXRlZDogRW1pdHMgZm9ybVZhbHVlcyBPYmplY3Qgd2hlbmV2ZXIgdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdGhlIGR5bmFtaWMgZm9ybS5cbiAgICovXG4gIEBPdXRwdXQoKSBmb3JtVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBba2V5OiBzdHJpbmddOiBhbnkgfT4oKTtcbiAgLyoqXG4gICAqIGZvcm1WYWxpZDogRW1pdHMgYm9vbGVhbiBkZXBlbmRpbmcgb24gdmFsaWRpdHkgb2YgdGhlIGZvcm1cbiAgICovXG4gIEBPdXRwdXQoKSBmb3JtVmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8qKlxuICAgKiBmb3JtSW5pdGlhbGl6ZWQ6IEVtaXRzIGR5bmFtaWMgZm9ybSBBUEkgb24gZm9ybSBpbml0aWxpemF0aW9uXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybUluaXRpYWxpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgZHluYW1pY0Zvcm1BUEk6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGb3JtQVBJO1xuICB2YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24kOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEJ1aWxkaW5nIHRoZSBmb3JtXG4gICAgdGhpcy5keW5hbWljRm9ybSA9IHRoaXMuZ2VuZXJhdGVEeW5hbWljRm9ybSh0aGlzLmZvcm1GaWVsZHMsIHRoaXMuZm9ybVZhbHVlcyk7XG5cbiAgICAvLyBTdWJzY3JpYmluZyB0byBmb3JtIGNoYW5nZXMgYW5kIGVtaXRpbmcgdmFsdWVzLlxuICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uJCA9IHRoaXMuZHluYW1pY0Zvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShmb3JtVmFsdWUgPT4ge1xuICAgICAgdGhpcy5vbkZvcm1WYWx1ZUNoYW5nZXMoKTtcbiAgICB9KTtcblxuICAgIC8vYXBpIHRvIGV4cG9zZSBmdW5jdGlvbnNcbiAgICB0aGlzLmR5bmFtaWNGb3JtQVBJID0ge1xuICAgICAgZGVmYXVsdEZvcm1WYWx1ZXM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVEeW5hbWljRmllbGRzVmFsdWVPYmplY3QodGhpcy5keW5hbWljRm9ybS52YWx1ZS5keW5hbWljRmllbGRzKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuZm9ybUluaXRpYWxpemVkLmVtaXQodGhpcy5keW5hbWljRm9ybUFQSSk7XG4gICAgdGhpcy5mb3JtVmFsaWQuZW1pdCh0aGlzLmR5bmFtaWNGb3JtLnZhbGlkKTtcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiQ/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbiAgb25Gb3JtVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGxldCBmb3JtVmFsdWVzID0gdGhpcy5nZW5lcmF0ZUR5bmFtaWNGaWVsZHNWYWx1ZU9iamVjdCh0aGlzLmR5bmFtaWNGb3JtLnZhbHVlLmR5bmFtaWNGaWVsZHMpO1xuICAgIHRoaXMuZm9ybVZhbGlkLmVtaXQodGhpcy5keW5hbWljRm9ybS52YWxpZCk7XG4gICAgdGhpcy5mb3JtVXBkYXRlZC5lbWl0KGZvcm1WYWx1ZXMpO1xuICAgIGNvbnNvbGUubG9nKGZvcm1WYWx1ZXMpXG4gIH1cbiAgZ2VuZXJhdGVEeW5hbWljRmllbGRzVmFsdWVPYmplY3QoZm9ybVZhbHVlczogQXJyYXk8YW55Pik6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGxldCBkeW5hbWljRmllbGRzVmFsdWUgPSB7fTtcbiAgICBmb3JtVmFsdWVzLmZvckVhY2goKGZpZWxkVmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLm1hcEZvcm1GaWVsZFRvRm9ybVZhbHVlKHRoaXMuZm9ybUZpZWxkc1tpbmRleF0sIGZpZWxkVmFsdWUudmFsdWUpO1xuICAgICAgaWYgKGZpZWxkVmFsdWUuc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBmb3JtYXR0ZWRTdWJGaWVsZHNWYWx1ZXMgPSB7fVxuICAgICAgICBmaWVsZFZhbHVlLnN1YkZpZWxkcy5mb3JFYWNoKChzdWJGaWVsZFZhbHVlLCBzdWJJbmRleCkgPT4ge1xuICAgICAgICAgIGxldCBzdWJGb3JtRmllbGQgPSB0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLnN1YkZpZWxkc1tzdWJJbmRleF1cbiAgICAgICAgICBmb3JtYXR0ZWRTdWJGaWVsZHNWYWx1ZXNbc3ViRm9ybUZpZWxkLmNvbmZpZ05hbWVdID0gdGhpcy5tYXBGb3JtRmllbGRUb0Zvcm1WYWx1ZShzdWJGb3JtRmllbGQsIHN1YkZpZWxkVmFsdWUpXG4gICAgICAgIH0pXG4gICAgICAgIGR5bmFtaWNGaWVsZHNWYWx1ZVt0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmNvbmZpZ05hbWVdID0ge1xuICAgICAgICAgIHZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSxcbiAgICAgICAgICBzdWJGaWVsZHM6IGZvcm1hdHRlZFN1YkZpZWxkc1ZhbHVlc1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgZHluYW1pY0ZpZWxkc1ZhbHVlW3RoaXMuZm9ybUZpZWxkc1tpbmRleF0uY29uZmlnTmFtZV0gPSBmb3JtYXR0ZWRWYWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZHluYW1pY0ZpZWxkc1ZhbHVlO1xuICB9XG4gIGdlbmVyYXRlRHluYW1pY0Zvcm0oXG4gICAgZm9ybUZpZWxkczogQXJyYXk8TnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkPixcbiAgICBmb3JtVmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9XG4gICk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIGxldCBmb3JtQXJyYXkgPSBuZXcgVW50eXBlZEZvcm1BcnJheShbXSlcblxuICAgIGZvciAobGV0IGZpZWxkIG9mIGZvcm1GaWVsZHMpIHtcbiAgICAgIGxldCBmaWVsZFZhbHVlID0gZm9ybVZhbHVlc1tmaWVsZC5jb25maWdOYW1lXT8udmFsdWUgPyBmb3JtVmFsdWVzW2ZpZWxkLmNvbmZpZ05hbWVdLnZhbHVlIDogZm9ybVZhbHVlc1tmaWVsZC5jb25maWdOYW1lXVxuICAgICAgbGV0IGZpZWxkQ29udHJvbCA9IHRoaXMubWFwRm9ybVZhbHVlVG9Gb3JtRmllbGQoZmllbGQsIGZpZWxkVmFsdWUpO1xuICAgICAgbGV0IHN1YkZpZWxkc0NvbnRyb2xzID0gdGhpcy5nZW5lcmF0ZVN1YkR5bmFtaWNGaWVsZHMoZm9ybVZhbHVlcywgZmllbGQsIGZpZWxkQ29udHJvbC52YWx1ZSk7XG4gICAgICBmb3JtQXJyYXkucHVzaChuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICAgIHZhbHVlOiBmaWVsZENvbnRyb2wsXG4gICAgICAgIHN1YkZpZWxkczogc3ViRmllbGRzQ29udHJvbHNcbiAgICAgIH0pKVxuICAgIH0gIFxuICAgIHJldHVybiBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICBkeW5hbWljRmllbGRzOiBmb3JtQXJyYXlcbiAgICB9KVxuICB9XG4gIFxuICBnZXREeW5hbWljRmllbGRzQ29udHJvbHMoKTogVW50eXBlZEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuZHluYW1pY0Zvcm0uZ2V0KFwiZHluYW1pY0ZpZWxkc1wiKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICB9XG4gIHVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoXG4gICAgZmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAsXG4gICAgdmFsdWU6IGFueVxuICApOiB2b2lkIHtcbiAgICBpZiAoZmllbGQuc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICBsZXQgc3ViRmllbGRzQ29udHJvbHMgPSB0aGlzLmdlbmVyYXRlU3ViRHluYW1pY0ZpZWxkcyh0aGlzLmZvcm1WYWx1ZXMsIGZpZWxkLCB2YWx1ZSk7XG4gICAgICBmb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnc3ViRmllbGRzJylcbiAgICAgIGZvcm1Hcm91cC5hZGRDb250cm9sKCdzdWJGaWVsZHMnLCBzdWJGaWVsZHNDb250cm9scylcbiAgICB9XG4gIH1cbiAgdXBkYXRlU2VsZWN0ZWRWYWx1ZUZvclNpbmdsZVNlbGVjdChcbiAgICBmaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCxcbiAgICBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAsXG4gICAgdmFsdWU6IGFueVxuICApOiB2b2lkIHtcbiAgICBpZiAoY29udHJvbC52YWx1ZT8udmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICBjb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBjb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLnVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1Hcm91cCwgdmFsdWUpO1xuICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG4gIHVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JNdWx0aVNlbGVjdChcbiAgICBmaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCxcbiAgICBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAsXG4gICAgdmFsdWVzOiBBcnJheTxhbnk+XG4gICk6IHZvaWQge1xuICAgIGxldCBzZWxlY3RlZFZhbHVlczogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogYW55IH0+ID0gY29udHJvbC52YWx1ZTtcbiAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgIGxldCBpdGVtSW5kZXggPSBzZWxlY3RlZFZhbHVlcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmxhYmVsID09PSB2YWx1ZS5sYWJlbCk7XG4gICAgICBpZiAoaXRlbUluZGV4ID4gLTEpIHtcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZXMuc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxlY3RlZFZhbHVlcy5wdXNoKHsgLi4udmFsdWUgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnRyb2wuc2V0VmFsdWUoc2VsZWN0ZWRWYWx1ZXMpO1xuICAgIHRoaXMudXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybUdyb3VwLCB2YWx1ZXMpO1xuICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG4gIGlzQ2hlY2tCb3hTZWxlY3RlZCh2YWx1ZTogc3RyaW5nLCBzZWxlY3RlZFZhbHVlczogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNlbGVjdGVkVmFsdWVzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0ubGFiZWwgPT09IHZhbHVlKSA+IC0xO1xuICB9XG5cbiAgZmluZFNlbGVjdGVkSW5kZXgoc3ViZmllbGRzLCB2YWx1ZSkge1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBzdWJmaWVsZHMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5wYXJlbnRDb25maWdWYWx1ZSA9PT0gdmFsdWUpO1xuICAgIHJldHVybiBzZWxlY3RlZEluZGV4ICE9PSAtMSA/IHNlbGVjdGVkSW5kZXggOiAwO1xuICB9XG5cbiAgbWF0Y2hQYXJlbnRDb25maWcoc3ViZmllbGRzLCB2YWx1ZSkge1xuICAgIGlmICghc3ViZmllbGRzIHx8IHN1YmZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1YmZpZWxkcy5zb21lKGl0ZW0gPT4gaXRlbS5wYXJlbnRDb25maWdWYWx1ZSA9PT0gdmFsdWUpO1xuICB9XG5cbiAgZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKFxuICAgIGZvcm1WYWx1ZXM6IGFueSxcbiAgICBwYXJlbnRGaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIHBhcmVudFZhbHVlOiBBcnJheTx7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfT4gfCB7bGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9IHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhblxuICApOiBVbnR5cGVkRm9ybUFycmF5IHtcbiAgICBsZXQgY29udHJvbHMgPSBuZXcgVW50eXBlZEZvcm1BcnJheShbXSlcbiAgICBsZXQgc3ViRmllbGRzID0gcGFyZW50RmllbGQuc3ViRmllbGRzXG4gICAgbGV0IHN1YkZpZWxkc1ZhbHVlcyA9IGZvcm1WYWx1ZXNbcGFyZW50RmllbGQuY29uZmlnTmFtZV0/LnN1YkZpZWxkcyA/IGZvcm1WYWx1ZXNbcGFyZW50RmllbGQuY29uZmlnTmFtZV0uc3ViRmllbGRzIDoge31cbiAgICBpZighc3ViRmllbGRzKSByZXR1cm4gY29udHJvbHM7XG4gICAgaWYgKHBhcmVudEZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcpIHtcbiAgICAgIHN1YkZpZWxkcyA9IHN1YkZpZWxkcy5maWx0ZXIoKHN1YkZpZWxkKSA9PiBzdWJGaWVsZC5wYXJlbnRDb25maWdWYWx1ZSA9PT0gKDx7bGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9PnBhcmVudFZhbHVlKT8udmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChwYXJlbnRGaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcpIHtcbiAgICAgIGxldCBwYXJlbnRWYWx1ZXMgPSBuZXcgU2V0KCg8QXJyYXk8eyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0+PnBhcmVudFZhbHVlKS5tYXAoKHZhbHVlKSA9PiB2YWx1ZS52YWx1ZSkpO1xuICAgICAgc3ViRmllbGRzID0gc3ViRmllbGRzLmZpbHRlcigoc3ViRmllbGQpID0+IHBhcmVudFZhbHVlcy5oYXMoc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUpKTtcbiAgICB9XG5cbiAgICBpZiAoc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAobGV0IHN1YkZpZWxkIG9mIHN1YkZpZWxkcykge1xuICAgICAgICAgIGNvbnRyb2xzLnB1c2godGhpcy5tYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChzdWJGaWVsZCwgc3ViRmllbGRzVmFsdWVzW3N1YkZpZWxkLmNvbmZpZ05hbWVdKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIHJldHVybiBjb250cm9scztcbiAgfVxuICBtYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGxldCB2YWxpZGF0b3JzID0gZm9ybUZpZWxkLnZhbGlkYXRvcnMgPyBbZHluYW1pY0ZpZWxkVmFsaWRhdG9yKGZvcm1GaWVsZC52YWxpZGF0b3JzKV06IFtdXG4gICAgbGV0IGNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiaW5wdXRcIikge1xuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0XCIgfHwgZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInRleHRhcmVhXCIpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlID8gZm9ybVZhbHVlIDogXCJcIik7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwibnVtYmVyXCIpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlID8gZm9ybVZhbHVlIDogMCk7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwiZGF0ZVwiKSB7XG4gICAgICAgIGlmIChmb3JtVmFsdWUgJiYgdHlwZW9mIGZvcm1WYWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobW9tZW50KGZvcm1WYWx1ZSkudHooZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS5mb3JtYXQoZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobW9tZW50KCkudHooZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS5mb3JtYXQoZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcInNpbmdsZVNlbGVjdFwiKSB7XG4gICAgICBjb25zdCBmaW5kU2VsZWN0ZWRWYWx1ZSA9ICgpID0+IHtcbiAgICAgICAgbGV0IGluZGV4ID0gZm9ybUZpZWxkLml0ZW1zTGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnZhbHVlID09PSBmb3JtVmFsdWUpXG4gICAgICAgIHJldHVybiBpbmRleCA+PSAwID8gZm9ybUZpZWxkLml0ZW1zTGlzdFtpbmRleF06IFwiXCI7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcImRyb3Bkb3duXCIpIHtcbiAgICAgICAgaWYgKCFmb3JtVmFsdWUpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybUZpZWxkLml0ZW1zTGlzdFswXSk7XG4gICAgICAgIGVsc2UgY29udHJvbC5zZXRWYWx1ZShmaW5kU2VsZWN0ZWRWYWx1ZSgpKVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInJhZGlvXCIpIHtcbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShmaW5kU2VsZWN0ZWRWYWx1ZSgpKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJtdWx0aVNlbGVjdFwiKSB7XG4gICAgICBpZiAoZm9ybVZhbHVlICYmIEFycmF5LmlzQXJyYXkoZm9ybVZhbHVlKSkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgZm9ybVZhbHVlKSB7XG4gICAgICAgICAgbGV0IGluZGV4ID0gZm9ybUZpZWxkLml0ZW1zTGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnZhbHVlID09PSB2YWx1ZSk7XG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHNlbGVjdGVkVmFsdWVzLnB1c2goeyAuLi5mb3JtRmllbGQuaXRlbXNMaXN0W2luZGV4XSB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb250cm9sLnNldFZhbHVlKHNlbGVjdGVkVmFsdWVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoW10pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUoISFmb3JtVmFsdWUpO1xuICAgIH0gZWxzZSBjb250cm9sLnNldFZhbHVlKG51bGwpO1xuICAgIHJldHVybiBjb250cm9sO1xuICB9XG4gIG1hcEZvcm1GaWVsZFRvRm9ybVZhbHVlKGZvcm1GaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLCBmb3JtVmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiaW5wdXRcIikge1xuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0XCIgfHwgZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInRleHRhcmVhXCIpIHJldHVybiBmb3JtVmFsdWU7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwibnVtYmVyXCIpIHJldHVybiArZm9ybVZhbHVlO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcImRhdGVcIikge1xuICAgICAgICByZXR1cm4gbW9tZW50LnR6KGZvcm1WYWx1ZSwgZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCwgZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS52YWx1ZU9mKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcInNpbmdsZVNlbGVjdFwiKSB7XG4gICAgICByZXR1cm4gZm9ybVZhbHVlPy52YWx1ZSA/PyAnJztcbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZT8ubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgICB9IGVsc2UgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZHluYW1pY0ZpZWxkVmFsaWRhdG9yID0gKHZhbGlkYXRvcnM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZFZhbGlkYXRvcj4pOiBWYWxpZGF0b3JGbiA9PiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGxldCB2YWx1ZSA9IGNvbnRyb2wudmFsdWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlPy52YWx1ZSA/IHZhbHVlLnZhbHVlIDogJydcbiAgICB9XG4gICAgbGV0IGVycm9ycyA9IG51bGxcblxuICAgIHZhbGlkYXRvcnMuZm9yRWFjaCgodmFsaWRhdG9yKSA9PiB7XG4gICAgICBsZXQgZXJyb3IgPSBudWxsXG4gICAgICBsZXQgbWVzc2FnZSA9IHZhbGlkYXRvci5tZXNzYWdlXG4gICAgICBzd2l0Y2ggKHZhbGlkYXRvci50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJSZXF1aXJlZFwiOlxuICAgICAgICAgIGVycm9yID0gVmFsaWRhdG9ycy5yZXF1aXJlZChjb250cm9sKVxuICAgICAgICAgIGlmKGVycm9yKSBlcnJvciA9IHtSZXF1aXJlZDogbWVzc2FnZX1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIk1pbkxlbmd0aFwiOlxuICAgICAgICAgIGVycm9yID0gVmFsaWRhdG9ycy5taW5MZW5ndGgoK3ZhbGlkYXRvci52YWx1ZSkoY29udHJvbClcbiAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKCckezB9JywgZXJyb3I/Lm1pbmxlbmd0aC5yZXF1aXJlZExlbmd0aClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7IE1pbkxlbmd0aDogbWVzc2FnZSB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJNYXhMZW5ndGhcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMubWF4TGVuZ3RoKCt2YWxpZGF0b3IudmFsdWUpKGNvbnRyb2wpXG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgnJHswfScsIGVycm9yPy5hY3R1YWxMZW5ndGgpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0geyBNYXhMZW5ndGg6IG1lc3NhZ2UgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiRW1haWxcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMuZW1haWwoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7RW1haWw6IG1lc3NhZ2V9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJDdXN0b21cIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMucGF0dGVybihgJHt2YWxpZGF0b3IudmFsdWV9YCkoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7Q3VzdG9tOiBtZXNzYWdlfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGVycm9yKSBlcnJvcnMgPSB7IC4uLmVycm9ycywgLi4uZXJyb3IgfVxuICAgIH0pXG4gICAgcmV0dXJuIGVycm9yc1xuICB9XG59IiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJkeW5hbWljRm9ybVwiPlxuICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJkeW5hbWljRmllbGRzXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwTmFtZV09XCJpXCIgKm5nRm9yPVwibGV0IGZpZWxkQ29udHJvbCBvZiBnZXREeW5hbWljRmllbGRzQ29udHJvbHMoKS5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgJGltcGxpY2l0OiBmb3JtRmllbGRzW2ldLFxuICAgICAgICAgIGZvcm1Hcm91cDogZmllbGRDb250cm9sLFxuICAgICAgICAgIGNvbnRyb2w6IGZpZWxkQ29udHJvbC5jb250cm9scy52YWx1ZVxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzcz1cInN1Yi1keW5hbWljLWZvcm1cIiAqbmdJZj1cImZpZWxkQ29udHJvbC52YWx1ZSAmJiAoISFmb3JtRmllbGRzW2ldPy5zdWJGaWVsZHMgJiYgZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzPy5sZW5ndGggPiAwICYmIG1hdGNoUGFyZW50Q29uZmlnKGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcywgZmllbGRDb250cm9sLmNvbnRyb2xzLnZhbHVlLnZhbHVlLnZhbHVlKSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViRmllbGRDb250cm9sIG9mIGZpZWxkQ29udHJvbC5jb250cm9scy5zdWJGaWVsZHMuY29udHJvbHM7XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDogZm9ybUZpZWxkc1tpXS5zdWJGaWVsZHNbZmluZFNlbGVjdGVkSW5kZXgoZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzLCBmaWVsZENvbnRyb2wuY29udHJvbHMudmFsdWUudmFsdWUudmFsdWUpXSxcbiAgICAgICAgICAgICAgY29udHJvbDogc3ViRmllbGRDb250cm9sXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9mb3JtPlxuXG5cbjxuZy10ZW1wbGF0ZSAjZHluYW1pY0ZpZWxkIGxldC1maWVsZCBsZXQtY29udHJvbD1cImNvbnRyb2xcIiBsZXQtZm9ybWdyb3VwPVwiZm9ybUdyb3VwXCI+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdpbnB1dCcgZmllbGRJbnB1dFR5cGU6ICd0ZXh0JyB8ICdudW1iZXInIC0tPlxuICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBtdWx0aS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdpbnB1dCcgJiYgKGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAndGV4dCcgfHwgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdudW1iZXInKVwiPlxuICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19XG4gICAgPC9wPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgPGlucHV0IGNsYXNzPVwiaW5wdXQtZmllbGQgaXAtdGV4dFwiIFt0eXBlXT1cImZpZWxkLmZpZWxkSW5wdXRUeXBlXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCIgXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcic6IGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycyA/ICcxcHggc29saWQgI0IwMDAyMCc6ICcnfVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJUZXh0ID8gZmllbGQucGxhY2Vob2xkZXJUZXh0IDogJ0lucHV0IFRleHQnXCIgXG4gICAgICBbbWluXT1cImZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnbnVtYmVyJyA/IDAgOiAnJyBcIi8+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIiBcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ2lucHV0JyBmaWVsZElucHV0VHlwZTogJ3RleHRhcmVhJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnaW5wdXQnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAndGV4dGFyZWEnXCI+XG4gICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAge3sgZmllbGQudGl0bGUgfX1cbiAgICA8L3A+XG4gICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCVcIj48L2Rpdj5cbiAgICA8dGV4dGFyZWEgY2xhc3M9XCJpbnB1dC1maWVsZCBpcC10ZXh0YXJlYVwiIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyJzogY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzID8gJzFweCBzb2xpZCAjQjAwMDIwJzogJyd9XCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclRleHQgPyBmaWVsZC5wbGFjZWhvbGRlclRleHQgOiAnSW5wdXQgVGV4dCdcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1ncm91cCwgJGV2ZW50KVwiPjwvdGV4dGFyZWE+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdpbnB1dCcgZmllbGRJbnB1dFR5cGU6ICdkYXRlJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2RhdGUnXCI+XG4gICAgPHAgY2xhc3M9XCJoNlwiPlxuICAgICAge3sgZmllbGQudGl0bGUgfX1cbiAgICA8L3A+XG4gICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWNvbnRhaW5lclwiPlxuICAgICAgPGlucHV0IGNsYXNzPVwiZGF0ZS1waWNrZXJcIiByZWFkb25seSBtaXNUekRwIFtkcENvbmZpZ109XCJmaWVsZC5maWVsZENvbmZpZ1wiXG4gICAgICAgIChkYXRlQ2hhbmdlKT1cImNvbnRyb2wuc2V0VmFsdWUoJGV2ZW50KVwiIFtzZWxlY3RlZERhdGVdPVwiY29udHJvbC52YWx1ZVwiIFtvZmZzZXRZXT1cIjBcIlxuICAgICAgICBbdmFsdWVdPVwiY29udHJvbC52YWx1ZVwiICNkcCAvPlxuICAgICAgPGltZyBhbHQ9XCJkYXRhLXBpY2tlclwiICpuZ0lmPVwiY2FsZW5kYXJJY29uVXJsXCIgY2xhc3M9XCJkYXRlLXBpY2tlci1pY29uXCIgW3NyY109XCJjYWxlbmRhckljb25VcmxcIlxuICAgICAgICAoY2xpY2spPVwiZHAuY2xpY2soKVwiIC8+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdib29sZWFuJyBmaWVsZElucHV0VHlwZTogJ3RvZ2dsZScgLS0+XG4gIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdib29sZWFuJyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RvZ2dsZSdcIj5cbiAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fVxuICAgIDwvcD5cbiAgICA8bWlzLXN3aXRjaCBbY29udHJvbF09XCJjb250cm9sXCIgKHZhbHVlQ2hhbmdlZCk9XCJ1cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtZ3JvdXAsICRldmVudClcIj48L21pcy1zd2l0Y2g+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdzaW5nbGVTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAnZHJvcGRvd24nIC0tPlxuICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiPlxuICAgIDxwIGNsYXNzPVwiaDZcIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19XG4gICAgPC9wPlxuICAgIDxtaXMtZHJvcGRvd24gW3NlYXJjaEVuYWJsZWRdPVwiZmFsc2VcIiBbd2lkdGhdPVwiJzE0MHB4J1wiIFtkYXRhXT1cImZpZWxkLml0ZW1zTGlzdFwiIFtzZWxlY3RlZEl0ZW1dPVwiY29udHJvbC52YWx1ZVwiXG4gICAgICAob25DaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvclNpbmdsZVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCAkZXZlbnQpO1wiPlxuICAgIDwvbWlzLWRyb3Bkb3duPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnc2luZ2xlU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ3JhZGlvJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3JhZGlvJ1wiPlxuICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19XG4gICAgPC9wPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgPGRpdiBpZD1cImNoZWNrYm94ZXMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY2hlY2tib3gtY29tbW9uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnY2hlY2tib3gtYWN0aXZlJzogaXRlbS5sYWJlbCA9PT0gY29udHJvbC52YWx1ZT8ubGFiZWwgfVwiXG4gICAgICAgIChjbGljayk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsIGl0ZW0pO1wiPlxuICAgICAgICA8aW1nICpuZ0lmPVwiKGl0ZW0ubGFiZWwgPT09IGNvbnRyb2wudmFsdWU/LmxhYmVsKSAmJiBhY3RpdmVCdG5JY29uVXJsXCIgW3NyY109XCJhY3RpdmVCdG5JY29uVXJsXCIgYWx0PVwiXCIgLz5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPnt7IGl0ZW0ubGFiZWwgfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ211bHRpU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2NoZWNrYm94JyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnbXVsdGlTZWxlY3QnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnY2hlY2tib3gnXCI+XG4gICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAge3sgZmllbGQudGl0bGUgfX1cbiAgICA8L3A+XG4gICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCVcIj48L2Rpdj5cbiAgICA8ZGl2IGlkPVwiY2hlY2tib3hlcy1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jaGVja2JveC1jb21tb25cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5pdGVtc0xpc3RcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdjaGVja2JveC1hY3RpdmUnOiBpc0NoZWNrQm94U2VsZWN0ZWQoaXRlbS5sYWJlbCwgY29udHJvbC52YWx1ZSkgfVwiXG4gICAgICAgIChjbGljayk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yTXVsdGlTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgW2l0ZW1dKVwiPlxuICAgICAgICA8aW1nICpuZ0lmPVwiaXNDaGVja0JveFNlbGVjdGVkKGl0ZW0ubGFiZWwsIGNvbnRyb2wudmFsdWUpICYmIGFjdGl2ZUJ0bkljb25VcmxcIiBbc3JjXT1cImFjdGl2ZUJ0bkljb25VcmxcIlxuICAgICAgICAgIGFsdD1cIlwiIC8+XG4gICAgICAgIDxwIGNsYXNzPVwiaDZcIj57eyBpdGVtLmxhYmVsIH19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdtdWx0aVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdkcm9wZG93bicgLS0+XG4gIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkcm9wZG93bidcIj5cbiAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fVxuICAgIDwvcD5cbiAgICA8bWlzLW11bHRpLXNlbGVjdC1kcm9wZG93biBbd2lkdGhdPVwiJzE0MHB4J1wiIFtzaG93U2VsZWN0ZWRDb3VudF09XCJ0cnVlXCIgW2Ryb3Bkb3duTGlzdFdpZHRoXT1cIicyNTZweCdcIlxuICAgICAgW3NlYXJjaEVuYWJsZWRdPVwiZmFsc2VcIiBbaGlkZUFwcGx5QnV0dG9uXT1cInRydWVcIiBbZGF0YV09XCJmaWVsZC5pdGVtc0xpc3RcIlxuICAgICAgW3NlbGVjdGVkSXRlbXNdPVwiY29udHJvbC52YWx1ZVwiIChvbkNoYW5nZSk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yTXVsdGlTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgJGV2ZW50KTtcIj48L21pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZHluYW1pY0ZpZWxkRXJyb3JzIGxldC1lcnJvcnM+XG4gIDxkaXYgaWQ9XCJlcnJvci1tZXNzYWdlcy1jb250YWluZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnMgfCBrZXl2YWx1ZVwiPlxuICAgICAgPHAgY2xhc3M9XCJoOFwiPlxuICAgICAgICB7e1wiIOKAoiAmbmJzcDtcIiArIGVycm9yLnZhbHVlfX1cbiAgICAgIDwvcD5cbiAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlOyBoZWlnaHQ6IDBcIj48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==