mis-crystal-design-system 14.0.75 → 17.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (524) hide show
  1. package/action-list/action-list.component.d.ts +1 -1
  2. package/analytics/analytics.service.d.ts +1 -1
  3. package/async-search-dropdown/async-dropdown.component.d.ts +2 -2
  4. package/button/button.component.d.ts +1 -1
  5. package/button/button.directive.d.ts +1 -1
  6. package/checkbox/checkbox.component.d.ts +1 -1
  7. package/chip/chip.component.d.ts +1 -1
  8. package/datepicker_v2/models/dp-config.model.d.ts +1 -1
  9. package/datepicker_v2/tz-datepicker.directive.d.ts +1 -1
  10. package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +1 -1
  11. package/daterangepicker_v2/models/drp-config.model.d.ts +1 -1
  12. package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +1 -1
  13. package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +1 -1
  14. package/drawer/drawer-body/drawer-body.component.d.ts +1 -1
  15. package/dropdown/calculate-container-height.directive.d.ts +1 -1
  16. package/dropdown/dropdown.component.d.ts +1 -1
  17. package/dynamic-form/dynamic-form.component.d.ts +1 -1
  18. package/{esm2020 → esm2022}/action-list/action-list.component.mjs +103 -110
  19. package/{esm2020 → esm2022}/action-list/action-list.module.mjs +5 -5
  20. package/{esm2020 → esm2022}/analytics/analytics.module.mjs +5 -5
  21. package/{esm2020 → esm2022}/analytics/analytics.service.mjs +6 -6
  22. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +518 -0
  23. package/{esm2020 → esm2022}/async-search-dropdown/async-dropdown.module.mjs +5 -5
  24. package/esm2022/button/button.component.mjs +88 -0
  25. package/{esm2020 → esm2022}/button/button.directive.mjs +7 -7
  26. package/{esm2020 → esm2022}/button/button.module.mjs +5 -5
  27. package/esm2022/checkbox/checkbox.component.mjs +124 -0
  28. package/{esm2020 → esm2022}/checkbox/checkbox.module.mjs +5 -5
  29. package/esm2022/chip/chip.component.mjs +82 -0
  30. package/{esm2020 → esm2022}/chip/chip.module.mjs +5 -5
  31. package/{esm2020 → esm2022}/datepicker_v2/datepicker.module.mjs +5 -5
  32. package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +183 -0
  33. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +432 -0
  34. package/{esm2020 → esm2022}/daterangepicker_v2/daterangepicker.module.mjs +5 -5
  35. package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +156 -0
  36. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +466 -0
  37. package/esm2022/drawer/drawer-body/drawer-body.component.mjs +59 -0
  38. package/{esm2020 → esm2022}/drawer/drawer-ref.mjs +4 -4
  39. package/{esm2020 → esm2022}/drawer/drawer.module.mjs +5 -5
  40. package/{esm2020 → esm2022}/drawer/drawer.service.mjs +5 -5
  41. package/{esm2020 → esm2022}/dropdown/calculate-container-height.directive.mjs +5 -5
  42. package/esm2022/dropdown/dropdown.component.mjs +464 -0
  43. package/{esm2020 → esm2022}/dropdown/dropdown.module.mjs +5 -5
  44. package/esm2022/dynamic-form/dynamic-form.component.mjs +1088 -0
  45. package/{esm2020 → esm2022}/dynamic-form/dynamic-form.module.mjs +13 -13
  46. package/esm2022/fab/fab.component.mjs +145 -0
  47. package/{esm2020 → esm2022}/fab/fab.module.mjs +5 -5
  48. package/esm2022/filter/filter-panel/filter-panel.component.mjs +396 -0
  49. package/{esm2020 → esm2022}/filter/filters.module.mjs +17 -17
  50. package/{esm2020 → esm2022}/filter/has-value.pipe.mjs +4 -4
  51. package/{esm2020 → esm2022}/input/directives/input/input.directive.mjs +6 -6
  52. package/{fesm2020/mis-crystal-design-system-input.mjs → esm2022/input/mis-input.component.mjs} +49 -109
  53. package/{esm2020 → esm2022}/input/mis-input.module.mjs +5 -5
  54. package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +75 -0
  55. package/{esm2020 → esm2022}/input-stepper/input-stepper.module.mjs +5 -5
  56. package/esm2022/loader/loader.component.mjs +25 -0
  57. package/{esm2020 → esm2022}/loader/loader.module.mjs +5 -5
  58. package/esm2022/menu/menu-close.directive.mjs +25 -0
  59. package/{esm2020 → esm2022}/menu/menu.directive.mjs +7 -7
  60. package/{esm2020 → esm2022}/menu/menu.module.mjs +5 -5
  61. package/esm2022/mobile-filter/mobile-filter.component.mjs +180 -0
  62. package/{esm2020 → esm2022}/mobile-filter/mobile-filter.module.mjs +5 -5
  63. package/{esm2020 → esm2022}/modal/modal.module.mjs +5 -5
  64. package/{esm2020 → esm2022}/modal/modal.service.mjs +5 -5
  65. package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +56 -0
  66. package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +489 -0
  67. package/{esm2020 → esm2022}/multi-select-dropdown/multi-select-dropdown.module.mjs +5 -5
  68. package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +516 -0
  69. package/{esm2020 → esm2022}/nested-multi-select-dropdown/nested-multi-select-dropdown.module.mjs +5 -5
  70. package/esm2022/phone-input/phone-input.component.mjs +72 -0
  71. package/{esm2020 → esm2022}/phone-input/phone-input.module.mjs +5 -5
  72. package/esm2022/radio-button/radio-button.component.mjs +57 -0
  73. package/{esm2020 → esm2022}/radio-button/radio-button.module.mjs +5 -5
  74. package/esm2022/ske-loader/ske-loader.component.mjs +54 -0
  75. package/{esm2020 → esm2022}/ske-loader/ske-loader.module.mjs +5 -5
  76. package/esm2022/slider/slider.component.mjs +46 -0
  77. package/{esm2020 → esm2022}/slider/slider.module.mjs +7 -7
  78. package/esm2022/snackbar/snackbar/snackbar.component.mjs +72 -0
  79. package/{esm2020 → esm2022}/snackbar/snackbar.module.mjs +5 -5
  80. package/{esm2020 → esm2022}/snackbar/snackbar.service.mjs +5 -5
  81. package/{esm2020 → esm2022}/specificdatepicker/specificdatepicker.module.mjs +5 -5
  82. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +632 -0
  83. package/esm2022/specificdatepicker/tz-specificdatepicker.directive.mjs +196 -0
  84. package/esm2022/star-rating/star-rating.component.mjs +113 -0
  85. package/{esm2020 → esm2022}/star-rating/star-rating.module.mjs +5 -5
  86. package/esm2022/switch/switch.component.mjs +56 -0
  87. package/{esm2020 → esm2022}/switch/switch.module.mjs +5 -5
  88. package/esm2022/table/custom-table-cell.directive.mjs +42 -0
  89. package/esm2022/table/filter/filter.component.mjs +177 -0
  90. package/esm2022/table/sub-table/sub-table.component.mjs +192 -0
  91. package/esm2022/table/table.component.mjs +485 -0
  92. package/{esm2020 → esm2022}/table/table.module.mjs +5 -5
  93. package/esm2022/timepicker/timepicker.component.mjs +347 -0
  94. package/{esm2020 → esm2022}/timepicker/timepicker.directive.mjs +11 -11
  95. package/{esm2020 → esm2022}/timepicker/timepicker.module.mjs +5 -5
  96. package/{esm2020 → esm2022}/timerangepicker/timerangepicker.component.mjs +23 -22
  97. package/{esm2020 → esm2022}/timerangepicker/timerangepicker.module.mjs +5 -5
  98. package/esm2022/toast/toast.component.mjs +51 -0
  99. package/{esm2020 → esm2022}/toast/toast.data.service.mjs +8 -8
  100. package/{esm2020 → esm2022}/toast/toast.module.mjs +5 -5
  101. package/{esm2020 → esm2022}/toast/toast.service.mjs +5 -5
  102. package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +79 -0
  103. package/esm2022/tooltip/tooltip.directive.mjs +143 -0
  104. package/{esm2020 → esm2022}/tooltip/tooltip.module.mjs +5 -5
  105. package/esm2022/virtual-scroll/virtual-scroll.component.mjs +188 -0
  106. package/{esm2020 → esm2022}/virtual-scroll/virtual-scroll.module.mjs +7 -7
  107. package/{esm2020 → esm2022}/widgets/services/widget.service.mjs +5 -5
  108. package/{esm2020 → esm2022}/widgets/widgets.module.mjs +5 -5
  109. package/fab/fab.component.d.ts +4 -4
  110. package/{fesm2020 → fesm2022}/mis-crystal-design-system-action-list.mjs +107 -114
  111. package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -0
  112. package/{fesm2020 → fesm2022}/mis-crystal-design-system-analytics.mjs +9 -9
  113. package/{fesm2020 → fesm2022}/mis-crystal-design-system-analytics.mjs.map +1 -1
  114. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +543 -0
  115. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -0
  116. package/fesm2022/mis-crystal-design-system-button.mjs +173 -0
  117. package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -0
  118. package/fesm2022/mis-crystal-design-system-checkbox.mjs +150 -0
  119. package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -0
  120. package/fesm2022/mis-crystal-design-system-chip.mjs +108 -0
  121. package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -0
  122. package/{fesm2020 → fesm2022}/mis-crystal-design-system-datepicker_v2.mjs +133 -140
  123. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -0
  124. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +690 -0
  125. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -0
  126. package/{fesm2020 → fesm2022}/mis-crystal-design-system-drawer.mjs +34 -33
  127. package/{fesm2020 → fesm2022}/mis-crystal-design-system-drawer.mjs.map +1 -1
  128. package/{fesm2020 → fesm2022}/mis-crystal-design-system-dropdown.mjs +177 -185
  129. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -0
  130. package/{fesm2020 → fesm2022}/mis-crystal-design-system-dynamic-form.mjs +442 -457
  131. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -0
  132. package/{fesm2020 → fesm2022}/mis-crystal-design-system-fab.mjs +49 -48
  133. package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -0
  134. package/{fesm2020 → fesm2022}/mis-crystal-design-system-filter.mjs +113 -120
  135. package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -0
  136. package/fesm2022/mis-crystal-design-system-input-stepper.mjs +104 -0
  137. package/fesm2022/mis-crystal-design-system-input-stepper.mjs.map +1 -0
  138. package/fesm2022/mis-crystal-design-system-input.mjs +146 -0
  139. package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -0
  140. package/fesm2022/mis-crystal-design-system-loader.mjs +51 -0
  141. package/{fesm2020 → fesm2022}/mis-crystal-design-system-loader.mjs.map +1 -1
  142. package/{fesm2020 → fesm2022}/mis-crystal-design-system-menu.mjs +17 -17
  143. package/fesm2022/mis-crystal-design-system-menu.mjs.map +1 -0
  144. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +205 -0
  145. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -0
  146. package/{fesm2020 → fesm2022}/mis-crystal-design-system-modal.mjs +34 -33
  147. package/{fesm2015 → fesm2022}/mis-crystal-design-system-modal.mjs.map +1 -1
  148. package/{fesm2020 → fesm2022}/mis-crystal-design-system-multi-select-dropdown.mjs +108 -110
  149. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -0
  150. package/{fesm2020 → fesm2022}/mis-crystal-design-system-nested-multi-select-dropdown.mjs +129 -130
  151. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -0
  152. package/{fesm2020 → fesm2022}/mis-crystal-design-system-phone-input.mjs +22 -21
  153. package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -0
  154. package/fesm2022/mis-crystal-design-system-radio-button.mjs +83 -0
  155. package/{fesm2020 → fesm2022}/mis-crystal-design-system-radio-button.mjs.map +1 -1
  156. package/fesm2022/mis-crystal-design-system-ske-loader.mjs +77 -0
  157. package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -0
  158. package/fesm2022/mis-crystal-design-system-slider.mjs +80 -0
  159. package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -0
  160. package/{fesm2020 → fesm2022}/mis-crystal-design-system-snackbar.mjs +33 -33
  161. package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -0
  162. package/{fesm2020 → fesm2022}/mis-crystal-design-system-specificdatepicker.mjs +205 -205
  163. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -0
  164. package/{fesm2020 → fesm2022}/mis-crystal-design-system-star-rating.mjs +30 -29
  165. package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -0
  166. package/fesm2022/mis-crystal-design-system-switch.mjs +82 -0
  167. package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -0
  168. package/fesm2022/mis-crystal-design-system-table.mjs +912 -0
  169. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -0
  170. package/{fesm2020 → fesm2022}/mis-crystal-design-system-timepicker.mjs +79 -75
  171. package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -0
  172. package/{fesm2020 → fesm2022}/mis-crystal-design-system-timerangepicker.mjs +27 -26
  173. package/fesm2022/mis-crystal-design-system-timerangepicker.mjs.map +1 -0
  174. package/{fesm2020 → fesm2022}/mis-crystal-design-system-toast.mjs +35 -34
  175. package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -0
  176. package/{fesm2020 → fesm2022}/mis-crystal-design-system-tooltip.mjs +48 -48
  177. package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -0
  178. package/{fesm2015 → fesm2022}/mis-crystal-design-system-utils.mjs.map +1 -1
  179. package/{fesm2020 → fesm2022}/mis-crystal-design-system-virtual-scroll.mjs +51 -53
  180. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -0
  181. package/{fesm2020 → fesm2022}/mis-crystal-design-system-widgets.mjs +4 -4
  182. package/{fesm2020 → fesm2022}/mis-crystal-design-system-widgets.mjs.map +1 -1
  183. package/filter/filter-panel/filter-panel.component.d.ts +1 -1
  184. package/input/directives/input/input.directive.d.ts +1 -1
  185. package/input/mis-input.component.d.ts +1 -1
  186. package/input-stepper/input-stepper/input-stepper.component.d.ts +1 -1
  187. package/loader/loader.component.d.ts +1 -1
  188. package/menu/menu-close.directive.d.ts +1 -1
  189. package/menu/menu.directive.d.ts +1 -1
  190. package/mobile-filter/mobile-filter.component.d.ts +1 -1
  191. package/modal/module-wrapper/module-wrapper.component.d.ts +1 -1
  192. package/multi-select-dropdown/multi-select-dropdown.component.d.ts +1 -1
  193. package/nested-multi-select-dropdown/nested-multi-select-dropdown.component.d.ts +1 -1
  194. package/package.json +128 -210
  195. package/phone-input/phone-input.component.d.ts +1 -1
  196. package/radio-button/radio-button.component.d.ts +1 -1
  197. package/ske-loader/ske-loader.component.d.ts +1 -1
  198. package/slider/slider.component.d.ts +1 -1
  199. package/snackbar/snackbar/snackbar.component.d.ts +1 -1
  200. package/specificdatepicker/models/sdp-config.model.d.ts +1 -1
  201. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +1 -1
  202. package/specificdatepicker/tz-specificdatepicker.directive.d.ts +1 -1
  203. package/star-rating/star-rating.component.d.ts +1 -1
  204. package/styles/mis-old-icon-styles.scss +498 -0
  205. package/switch/switch.component.d.ts +1 -1
  206. package/table/custom-table-cell.directive.d.ts +1 -1
  207. package/table/filter/filter.component.d.ts +1 -1
  208. package/table/sub-table/sub-table.component.d.ts +1 -1
  209. package/table/table.component.d.ts +1 -1
  210. package/timepicker/timepicker.component.d.ts +1 -1
  211. package/timepicker/timepicker.directive.d.ts +1 -1
  212. package/timerangepicker/timerange.namespace.d.ts +1 -1
  213. package/timerangepicker/timerangepicker.component.d.ts +1 -1
  214. package/toast/toast.component.d.ts +1 -1
  215. package/toast/toast.service.d.ts +1 -1
  216. package/tooltip/models/tooltip.model.d.ts +1 -1
  217. package/tooltip/tooltip-container/tooltip.component.d.ts +1 -1
  218. package/tooltip/tooltip.directive.d.ts +1 -1
  219. package/virtual-scroll/virtual-scroll.component.d.ts +1 -1
  220. package/widgets/interfaces/widgets.model.d.ts +1 -1
  221. package/esm2020/async-search-dropdown/async-dropdown.component.mjs +0 -524
  222. package/esm2020/button/button.component.mjs +0 -87
  223. package/esm2020/checkbox/checkbox.component.mjs +0 -124
  224. package/esm2020/chip/chip.component.mjs +0 -82
  225. package/esm2020/datepicker_v2/tz-datepicker.directive.mjs +0 -183
  226. package/esm2020/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +0 -439
  227. package/esm2020/daterangepicker_v2/tz-daterangepicker.directive.mjs +0 -156
  228. package/esm2020/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +0 -465
  229. package/esm2020/drawer/drawer-body/drawer-body.component.mjs +0 -58
  230. package/esm2020/dropdown/dropdown.component.mjs +0 -472
  231. package/esm2020/dynamic-form/dynamic-form.component.mjs +0 -1103
  232. package/esm2020/fab/fab.component.mjs +0 -144
  233. package/esm2020/filter/filter-panel/filter-panel.component.mjs +0 -403
  234. package/esm2020/input/mis-input.component.mjs +0 -84
  235. package/esm2020/input-stepper/input-stepper/input-stepper.component.mjs +0 -74
  236. package/esm2020/loader/loader.component.mjs +0 -24
  237. package/esm2020/menu/menu-close.directive.mjs +0 -25
  238. package/esm2020/mobile-filter/mobile-filter.component.mjs +0 -181
  239. package/esm2020/modal/module-wrapper/module-wrapper.component.mjs +0 -55
  240. package/esm2020/multi-select-dropdown/multi-select-dropdown.component.mjs +0 -491
  241. package/esm2020/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +0 -517
  242. package/esm2020/phone-input/phone-input.component.mjs +0 -71
  243. package/esm2020/radio-button/radio-button.component.mjs +0 -56
  244. package/esm2020/ske-loader/ske-loader.component.mjs +0 -53
  245. package/esm2020/slider/slider.component.mjs +0 -45
  246. package/esm2020/snackbar/snackbar/snackbar.component.mjs +0 -72
  247. package/esm2020/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +0 -632
  248. package/esm2020/specificdatepicker/tz-specificdatepicker.directive.mjs +0 -196
  249. package/esm2020/star-rating/star-rating.component.mjs +0 -112
  250. package/esm2020/switch/switch.component.mjs +0 -55
  251. package/esm2020/table/custom-table-cell.directive.mjs +0 -42
  252. package/esm2020/table/filter/filter.component.mjs +0 -176
  253. package/esm2020/table/sub-table/sub-table.component.mjs +0 -193
  254. package/esm2020/table/table.component.mjs +0 -492
  255. package/esm2020/timepicker/timepicker.component.mjs +0 -343
  256. package/esm2020/toast/toast.component.mjs +0 -50
  257. package/esm2020/tooltip/tooltip-container/tooltip.component.mjs +0 -79
  258. package/esm2020/tooltip/tooltip.directive.mjs +0 -143
  259. package/esm2020/virtual-scroll/virtual-scroll.component.mjs +0 -190
  260. package/fesm2015/mis-crystal-design-system-action-list.mjs +0 -446
  261. package/fesm2015/mis-crystal-design-system-action-list.mjs.map +0 -1
  262. package/fesm2015/mis-crystal-design-system-analytics.mjs +0 -87
  263. package/fesm2015/mis-crystal-design-system-analytics.mjs.map +0 -1
  264. package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs +0 -617
  265. package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs.map +0 -1
  266. package/fesm2015/mis-crystal-design-system-button.mjs +0 -189
  267. package/fesm2015/mis-crystal-design-system-button.mjs.map +0 -1
  268. package/fesm2015/mis-crystal-design-system-checkbox.mjs +0 -166
  269. package/fesm2015/mis-crystal-design-system-checkbox.mjs.map +0 -1
  270. package/fesm2015/mis-crystal-design-system-chip.mjs +0 -123
  271. package/fesm2015/mis-crystal-design-system-chip.mjs.map +0 -1
  272. package/fesm2015/mis-crystal-design-system-datepicker_v2.mjs +0 -741
  273. package/fesm2015/mis-crystal-design-system-datepicker_v2.mjs.map +0 -1
  274. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.mjs +0 -729
  275. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.mjs.map +0 -1
  276. package/fesm2015/mis-crystal-design-system-drawer.mjs +0 -185
  277. package/fesm2015/mis-crystal-design-system-drawer.mjs.map +0 -1
  278. package/fesm2015/mis-crystal-design-system-dropdown.mjs +0 -616
  279. package/fesm2015/mis-crystal-design-system-dropdown.mjs.map +0 -1
  280. package/fesm2015/mis-crystal-design-system-dynamic-form.mjs +0 -1331
  281. package/fesm2015/mis-crystal-design-system-dynamic-form.mjs.map +0 -1
  282. package/fesm2015/mis-crystal-design-system-fab.mjs +0 -186
  283. package/fesm2015/mis-crystal-design-system-fab.mjs.map +0 -1
  284. package/fesm2015/mis-crystal-design-system-filter.mjs +0 -560
  285. package/fesm2015/mis-crystal-design-system-filter.mjs.map +0 -1
  286. package/fesm2015/mis-crystal-design-system-input-stepper.mjs +0 -110
  287. package/fesm2015/mis-crystal-design-system-input-stepper.mjs.map +0 -1
  288. package/fesm2015/mis-crystal-design-system-input.mjs +0 -165
  289. package/fesm2015/mis-crystal-design-system-input.mjs.map +0 -1
  290. package/fesm2015/mis-crystal-design-system-loader.mjs +0 -57
  291. package/fesm2015/mis-crystal-design-system-loader.mjs.map +0 -1
  292. package/fesm2015/mis-crystal-design-system-menu.mjs +0 -135
  293. package/fesm2015/mis-crystal-design-system-menu.mjs.map +0 -1
  294. package/fesm2015/mis-crystal-design-system-mobile-filter.mjs +0 -227
  295. package/fesm2015/mis-crystal-design-system-mobile-filter.mjs.map +0 -1
  296. package/fesm2015/mis-crystal-design-system-modal.mjs +0 -184
  297. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.mjs +0 -550
  298. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.mjs.map +0 -1
  299. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.mjs +0 -559
  300. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +0 -1
  301. package/fesm2015/mis-crystal-design-system-phone-input.mjs +0 -107
  302. package/fesm2015/mis-crystal-design-system-phone-input.mjs.map +0 -1
  303. package/fesm2015/mis-crystal-design-system-radio-button.mjs +0 -89
  304. package/fesm2015/mis-crystal-design-system-radio-button.mjs.map +0 -1
  305. package/fesm2015/mis-crystal-design-system-ske-loader.mjs +0 -86
  306. package/fesm2015/mis-crystal-design-system-ske-loader.mjs.map +0 -1
  307. package/fesm2015/mis-crystal-design-system-slider.mjs +0 -88
  308. package/fesm2015/mis-crystal-design-system-slider.mjs.map +0 -1
  309. package/fesm2015/mis-crystal-design-system-snackbar.mjs +0 -175
  310. package/fesm2015/mis-crystal-design-system-snackbar.mjs.map +0 -1
  311. package/fesm2015/mis-crystal-design-system-specificdatepicker.mjs +0 -956
  312. package/fesm2015/mis-crystal-design-system-specificdatepicker.mjs.map +0 -1
  313. package/fesm2015/mis-crystal-design-system-star-rating.mjs +0 -145
  314. package/fesm2015/mis-crystal-design-system-star-rating.mjs.map +0 -1
  315. package/fesm2015/mis-crystal-design-system-switch.mjs +0 -88
  316. package/fesm2015/mis-crystal-design-system-switch.mjs.map +0 -1
  317. package/fesm2015/mis-crystal-design-system-table.mjs +0 -1045
  318. package/fesm2015/mis-crystal-design-system-table.mjs.map +0 -1
  319. package/fesm2015/mis-crystal-design-system-timepicker.mjs +0 -452
  320. package/fesm2015/mis-crystal-design-system-timepicker.mjs.map +0 -1
  321. package/fesm2015/mis-crystal-design-system-timerangepicker.mjs +0 -270
  322. package/fesm2015/mis-crystal-design-system-timerangepicker.mjs.map +0 -1
  323. package/fesm2015/mis-crystal-design-system-toast.mjs +0 -214
  324. package/fesm2015/mis-crystal-design-system-toast.mjs.map +0 -1
  325. package/fesm2015/mis-crystal-design-system-tooltip.mjs +0 -272
  326. package/fesm2015/mis-crystal-design-system-tooltip.mjs.map +0 -1
  327. package/fesm2015/mis-crystal-design-system-virtual-scroll.mjs +0 -259
  328. package/fesm2015/mis-crystal-design-system-virtual-scroll.mjs.map +0 -1
  329. package/fesm2015/mis-crystal-design-system-widgets.mjs +0 -131
  330. package/fesm2015/mis-crystal-design-system-widgets.mjs.map +0 -1
  331. package/fesm2020/mis-crystal-design-system-action-list.mjs.map +0 -1
  332. package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs +0 -549
  333. package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs.map +0 -1
  334. package/fesm2020/mis-crystal-design-system-button.mjs +0 -172
  335. package/fesm2020/mis-crystal-design-system-button.mjs.map +0 -1
  336. package/fesm2020/mis-crystal-design-system-checkbox.mjs +0 -150
  337. package/fesm2020/mis-crystal-design-system-checkbox.mjs.map +0 -1
  338. package/fesm2020/mis-crystal-design-system-chip.mjs +0 -108
  339. package/fesm2020/mis-crystal-design-system-chip.mjs.map +0 -1
  340. package/fesm2020/mis-crystal-design-system-datepicker_v2.mjs.map +0 -1
  341. package/fesm2020/mis-crystal-design-system-daterangepicker_v2.mjs +0 -689
  342. package/fesm2020/mis-crystal-design-system-daterangepicker_v2.mjs.map +0 -1
  343. package/fesm2020/mis-crystal-design-system-dropdown.mjs.map +0 -1
  344. package/fesm2020/mis-crystal-design-system-dynamic-form.mjs.map +0 -1
  345. package/fesm2020/mis-crystal-design-system-fab.mjs.map +0 -1
  346. package/fesm2020/mis-crystal-design-system-filter.mjs.map +0 -1
  347. package/fesm2020/mis-crystal-design-system-input-stepper.mjs +0 -103
  348. package/fesm2020/mis-crystal-design-system-input-stepper.mjs.map +0 -1
  349. package/fesm2020/mis-crystal-design-system-input.mjs.map +0 -1
  350. package/fesm2020/mis-crystal-design-system-loader.mjs +0 -50
  351. package/fesm2020/mis-crystal-design-system-menu.mjs.map +0 -1
  352. package/fesm2020/mis-crystal-design-system-mobile-filter.mjs +0 -206
  353. package/fesm2020/mis-crystal-design-system-mobile-filter.mjs.map +0 -1
  354. package/fesm2020/mis-crystal-design-system-modal.mjs.map +0 -1
  355. package/fesm2020/mis-crystal-design-system-multi-select-dropdown.mjs.map +0 -1
  356. package/fesm2020/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +0 -1
  357. package/fesm2020/mis-crystal-design-system-phone-input.mjs.map +0 -1
  358. package/fesm2020/mis-crystal-design-system-radio-button.mjs +0 -82
  359. package/fesm2020/mis-crystal-design-system-ske-loader.mjs +0 -76
  360. package/fesm2020/mis-crystal-design-system-ske-loader.mjs.map +0 -1
  361. package/fesm2020/mis-crystal-design-system-slider.mjs +0 -79
  362. package/fesm2020/mis-crystal-design-system-slider.mjs.map +0 -1
  363. package/fesm2020/mis-crystal-design-system-snackbar.mjs.map +0 -1
  364. package/fesm2020/mis-crystal-design-system-specificdatepicker.mjs.map +0 -1
  365. package/fesm2020/mis-crystal-design-system-star-rating.mjs.map +0 -1
  366. package/fesm2020/mis-crystal-design-system-styles.mjs +0 -4
  367. package/fesm2020/mis-crystal-design-system-styles.mjs.map +0 -1
  368. package/fesm2020/mis-crystal-design-system-switch.mjs +0 -81
  369. package/fesm2020/mis-crystal-design-system-switch.mjs.map +0 -1
  370. package/fesm2020/mis-crystal-design-system-table.mjs +0 -919
  371. package/fesm2020/mis-crystal-design-system-table.mjs.map +0 -1
  372. package/fesm2020/mis-crystal-design-system-timepicker.mjs.map +0 -1
  373. package/fesm2020/mis-crystal-design-system-timerangepicker.mjs.map +0 -1
  374. package/fesm2020/mis-crystal-design-system-toast.mjs.map +0 -1
  375. package/fesm2020/mis-crystal-design-system-tooltip.mjs.map +0 -1
  376. package/fesm2020/mis-crystal-design-system-utils.mjs +0 -24
  377. package/fesm2020/mis-crystal-design-system-utils.mjs.map +0 -1
  378. package/fesm2020/mis-crystal-design-system-virtual-scroll.mjs.map +0 -1
  379. package/fesm2020/mis-crystal-design-system.mjs +0 -24
  380. package/fesm2020/mis-crystal-design-system.mjs.map +0 -1
  381. /package/{esm2020 → esm2022}/action-list/index.mjs +0 -0
  382. /package/{esm2020 → esm2022}/action-list/mis-crystal-design-system-action-list.mjs +0 -0
  383. /package/{esm2020 → esm2022}/action-list/public_api.mjs +0 -0
  384. /package/{esm2020 → esm2022}/analytics/index.mjs +0 -0
  385. /package/{esm2020 → esm2022}/analytics/mis-crystal-design-system-analytics.mjs +0 -0
  386. /package/{esm2020 → esm2022}/analytics/public_api.mjs +0 -0
  387. /package/{esm2020 → esm2022}/async-search-dropdown/index.mjs +0 -0
  388. /package/{esm2020 → esm2022}/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs +0 -0
  389. /package/{esm2020 → esm2022}/async-search-dropdown/public_api.mjs +0 -0
  390. /package/{esm2020 → esm2022}/button/index.mjs +0 -0
  391. /package/{esm2020 → esm2022}/button/mis-crystal-design-system-button.mjs +0 -0
  392. /package/{esm2020 → esm2022}/button/public_api.mjs +0 -0
  393. /package/{esm2020 → esm2022}/checkbox/index.mjs +0 -0
  394. /package/{esm2020 → esm2022}/checkbox/mis-crystal-design-system-checkbox.mjs +0 -0
  395. /package/{esm2020 → esm2022}/checkbox/public_api.mjs +0 -0
  396. /package/{esm2020 → esm2022}/chip/index.mjs +0 -0
  397. /package/{esm2020 → esm2022}/chip/mis-crystal-design-system-chip.mjs +0 -0
  398. /package/{esm2020 → esm2022}/chip/public_api.mjs +0 -0
  399. /package/{esm2020 → esm2022}/datepicker_v2/datepicker-constants.mjs +0 -0
  400. /package/{esm2020 → esm2022}/datepicker_v2/index.mjs +0 -0
  401. /package/{esm2020 → esm2022}/datepicker_v2/mis-crystal-design-system-datepicker_v2.mjs +0 -0
  402. /package/{esm2020 → esm2022}/datepicker_v2/models/dp-config.model.mjs +0 -0
  403. /package/{esm2020 → esm2022}/datepicker_v2/public_api.mjs +0 -0
  404. /package/{esm2020 → esm2022}/datepicker_v2/utils/index.mjs +0 -0
  405. /package/{esm2020 → esm2022}/daterangepicker_v2/daterangepicker-constants.mjs +0 -0
  406. /package/{esm2020 → esm2022}/daterangepicker_v2/index.mjs +0 -0
  407. /package/{esm2020 → esm2022}/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.mjs +0 -0
  408. /package/{esm2020 → esm2022}/daterangepicker_v2/models/drp-config.model.mjs +0 -0
  409. /package/{esm2020 → esm2022}/daterangepicker_v2/public_api.mjs +0 -0
  410. /package/{esm2020 → esm2022}/daterangepicker_v2/utils/index.mjs +0 -0
  411. /package/{esm2020 → esm2022}/drawer/drawer-constants.mjs +0 -0
  412. /package/{esm2020 → esm2022}/drawer/index.mjs +0 -0
  413. /package/{esm2020 → esm2022}/drawer/mis-crystal-design-system-drawer.mjs +0 -0
  414. /package/{esm2020 → esm2022}/drawer/public_api.mjs +0 -0
  415. /package/{esm2020 → esm2022}/dropdown/index.mjs +0 -0
  416. /package/{esm2020 → esm2022}/dropdown/mis-crystal-design-system-dropdown.mjs +0 -0
  417. /package/{esm2020 → esm2022}/dropdown/public_api.mjs +0 -0
  418. /package/{esm2020 → esm2022}/dynamic-form/dynamic-form.namespace.mjs +0 -0
  419. /package/{esm2020 → esm2022}/dynamic-form/index.mjs +0 -0
  420. /package/{esm2020 → esm2022}/dynamic-form/mis-crystal-design-system-dynamic-form.mjs +0 -0
  421. /package/{esm2020 → esm2022}/dynamic-form/public_api.mjs +0 -0
  422. /package/{esm2020 → esm2022}/fab/index.mjs +0 -0
  423. /package/{esm2020 → esm2022}/fab/mis-crystal-design-system-fab.mjs +0 -0
  424. /package/{esm2020 → esm2022}/fab/public_api.mjs +0 -0
  425. /package/{esm2020 → esm2022}/filter/animations/slideFromRight.mjs +0 -0
  426. /package/{esm2020 → esm2022}/filter/index.mjs +0 -0
  427. /package/{esm2020 → esm2022}/filter/mis-crystal-design-system-filter.mjs +0 -0
  428. /package/{esm2020 → esm2022}/filter/public_api.mjs +0 -0
  429. /package/{esm2020 → esm2022}/index.mjs +0 -0
  430. /package/{esm2020 → esm2022}/input/index.mjs +0 -0
  431. /package/{esm2020 → esm2022}/input/mis-crystal-design-system-input.mjs +0 -0
  432. /package/{esm2020 → esm2022}/input/public_api.mjs +0 -0
  433. /package/{esm2020 → esm2022}/input-stepper/index.mjs +0 -0
  434. /package/{esm2020 → esm2022}/input-stepper/mis-crystal-design-system-input-stepper.mjs +0 -0
  435. /package/{esm2020 → esm2022}/input-stepper/public_api.mjs +0 -0
  436. /package/{esm2020 → esm2022}/loader/index.mjs +0 -0
  437. /package/{esm2020 → esm2022}/loader/mis-crystal-design-system-loader.mjs +0 -0
  438. /package/{esm2020 → esm2022}/loader/public_api.mjs +0 -0
  439. /package/{esm2020 → esm2022}/menu/index.mjs +0 -0
  440. /package/{esm2020 → esm2022}/menu/mis-crystal-design-system-menu.mjs +0 -0
  441. /package/{esm2020 → esm2022}/menu/public_api.mjs +0 -0
  442. /package/{esm2020 → esm2022}/mis-crystal-design-system.mjs +0 -0
  443. /package/{esm2020 → esm2022}/mobile-filter/index.mjs +0 -0
  444. /package/{esm2020 → esm2022}/mobile-filter/mis-crystal-design-system-mobile-filter.mjs +0 -0
  445. /package/{esm2020 → esm2022}/mobile-filter/public_api.mjs +0 -0
  446. /package/{esm2020 → esm2022}/modal/index.mjs +0 -0
  447. /package/{esm2020 → esm2022}/modal/mis-crystal-design-system-modal.mjs +0 -0
  448. /package/{esm2020 → esm2022}/modal/modal-constants.mjs +0 -0
  449. /package/{esm2020 → esm2022}/modal/modal-ref.mjs +0 -0
  450. /package/{esm2020 → esm2022}/modal/public_api.mjs +0 -0
  451. /package/{esm2020 → esm2022}/multi-select-dropdown/index.mjs +0 -0
  452. /package/{esm2020 → esm2022}/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.mjs +0 -0
  453. /package/{esm2020 → esm2022}/multi-select-dropdown/public_api.mjs +0 -0
  454. /package/{esm2020 → esm2022}/nested-multi-select-dropdown/index.mjs +0 -0
  455. /package/{esm2020 → esm2022}/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.mjs +0 -0
  456. /package/{esm2020 → esm2022}/nested-multi-select-dropdown/public_api.mjs +0 -0
  457. /package/{esm2020 → esm2022}/phone-input/index.mjs +0 -0
  458. /package/{esm2020 → esm2022}/phone-input/mis-crystal-design-system-phone-input.mjs +0 -0
  459. /package/{esm2020 → esm2022}/phone-input/public_api.mjs +0 -0
  460. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  461. /package/{esm2020 → esm2022}/radio-button/index.mjs +0 -0
  462. /package/{esm2020 → esm2022}/radio-button/mis-crystal-design-system-radio-button.mjs +0 -0
  463. /package/{esm2020 → esm2022}/radio-button/public_api.mjs +0 -0
  464. /package/{esm2020 → esm2022}/ske-loader/index.mjs +0 -0
  465. /package/{esm2020 → esm2022}/ske-loader/mis-crystal-design-system-ske-loader.mjs +0 -0
  466. /package/{esm2020 → esm2022}/ske-loader/public_api.mjs +0 -0
  467. /package/{esm2020 → esm2022}/slider/index.mjs +0 -0
  468. /package/{esm2020 → esm2022}/slider/mis-crystal-design-system-slider.mjs +0 -0
  469. /package/{esm2020 → esm2022}/slider/public_api.mjs +0 -0
  470. /package/{esm2020 → esm2022}/snackbar/index.mjs +0 -0
  471. /package/{esm2020 → esm2022}/snackbar/mis-crystal-design-system-snackbar.mjs +0 -0
  472. /package/{esm2020 → esm2022}/snackbar/public_api.mjs +0 -0
  473. /package/{esm2020 → esm2022}/specificdatepicker/daterangepicker-constants.mjs +0 -0
  474. /package/{esm2020 → esm2022}/specificdatepicker/index.mjs +0 -0
  475. /package/{esm2020 → esm2022}/specificdatepicker/mis-crystal-design-system-specificdatepicker.mjs +0 -0
  476. /package/{esm2020 → esm2022}/specificdatepicker/models/sdp-config.model.mjs +0 -0
  477. /package/{esm2020 → esm2022}/specificdatepicker/public_api.mjs +0 -0
  478. /package/{esm2020 → esm2022}/specificdatepicker/utils/index.mjs +0 -0
  479. /package/{esm2020 → esm2022}/star-rating/index.mjs +0 -0
  480. /package/{esm2020 → esm2022}/star-rating/mis-crystal-design-system-star-rating.mjs +0 -0
  481. /package/{esm2020 → esm2022}/star-rating/public_api.mjs +0 -0
  482. /package/{esm2020 → esm2022}/styles/index.mjs +0 -0
  483. /package/{esm2020 → esm2022}/styles/mis-crystal-design-system-styles.mjs +0 -0
  484. /package/{esm2020 → esm2022}/styles/public_api.mjs +0 -0
  485. /package/{esm2020 → esm2022}/switch/index.mjs +0 -0
  486. /package/{esm2020 → esm2022}/switch/mis-crystal-design-system-switch.mjs +0 -0
  487. /package/{esm2020 → esm2022}/switch/public_api.mjs +0 -0
  488. /package/{esm2020 → esm2022}/table/index.mjs +0 -0
  489. /package/{esm2020 → esm2022}/table/mis-crystal-design-system-table.mjs +0 -0
  490. /package/{esm2020 → esm2022}/table/public_api.mjs +0 -0
  491. /package/{esm2020 → esm2022}/timepicker/index.mjs +0 -0
  492. /package/{esm2020 → esm2022}/timepicker/mis-crystal-design-system-timepicker.mjs +0 -0
  493. /package/{esm2020 → esm2022}/timepicker/public_api.mjs +0 -0
  494. /package/{esm2020 → esm2022}/timepicker/time.namespace.mjs +0 -0
  495. /package/{esm2020 → esm2022}/timerangepicker/index.mjs +0 -0
  496. /package/{esm2020 → esm2022}/timerangepicker/mis-crystal-design-system-timerangepicker.mjs +0 -0
  497. /package/{esm2020 → esm2022}/timerangepicker/public_api.mjs +0 -0
  498. /package/{esm2020 → esm2022}/timerangepicker/timerange.namespace.mjs +0 -0
  499. /package/{esm2020 → esm2022}/toast/index.mjs +0 -0
  500. /package/{esm2020 → esm2022}/toast/mis-crystal-design-system-toast.mjs +0 -0
  501. /package/{esm2020 → esm2022}/toast/public_api.mjs +0 -0
  502. /package/{esm2020 → esm2022}/tooltip/index.mjs +0 -0
  503. /package/{esm2020 → esm2022}/tooltip/mis-crystal-design-system-tooltip.mjs +0 -0
  504. /package/{esm2020 → esm2022}/tooltip/models/tooltip.model.mjs +0 -0
  505. /package/{esm2020 → esm2022}/tooltip/public_api.mjs +0 -0
  506. /package/{esm2020 → esm2022}/utils/index.mjs +0 -0
  507. /package/{esm2020 → esm2022}/utils/mis-crystal-design-system-utils.mjs +0 -0
  508. /package/{esm2020 → esm2022}/virtual-scroll/index.mjs +0 -0
  509. /package/{esm2020 → esm2022}/virtual-scroll/mis-crystal-design-system-virtual-scroll.mjs +0 -0
  510. /package/{esm2020 → esm2022}/virtual-scroll/public_api.mjs +0 -0
  511. /package/{esm2020 → esm2022}/virtual-scroll/virtual-scroll.constants.mjs +0 -0
  512. /package/{esm2020 → esm2022}/widgets/classes/async-widget.mjs +0 -0
  513. /package/{esm2020 → esm2022}/widgets/classes/base-widget.mjs +0 -0
  514. /package/{esm2020 → esm2022}/widgets/classes/sync-widget.mjs +0 -0
  515. /package/{esm2020 → esm2022}/widgets/classes/widget-group.mjs +0 -0
  516. /package/{esm2020 → esm2022}/widgets/index.mjs +0 -0
  517. /package/{esm2020 → esm2022}/widgets/interfaces/widgets.model.mjs +0 -0
  518. /package/{esm2020 → esm2022}/widgets/mis-crystal-design-system-widgets.mjs +0 -0
  519. /package/{esm2020 → esm2022}/widgets/public_api.mjs +0 -0
  520. /package/{fesm2015 → fesm2022}/mis-crystal-design-system-styles.mjs +0 -0
  521. /package/{fesm2015 → fesm2022}/mis-crystal-design-system-styles.mjs.map +0 -0
  522. /package/{fesm2015 → fesm2022}/mis-crystal-design-system-utils.mjs +0 -0
  523. /package/{fesm2015 → fesm2022}/mis-crystal-design-system.mjs +0 -0
  524. /package/{fesm2015 → fesm2022}/mis-crystal-design-system.mjs.map +0 -0
@@ -0,0 +1,1088 @@
1
+ import { Component, ContentChild, EventEmitter, Input, Output } from "@angular/core";
2
+ import { UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators } from "@angular/forms";
3
+ import moment from "moment-timezone";
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 = ["customInputTextNumber"];
13
+ const _c1 = ["customInputTextarea"];
14
+ const _c2 = ["customInputDate"];
15
+ const _c3 = ["customBooleanToggle"];
16
+ const _c4 = ["customSingleSelectDropdown"];
17
+ const _c5 = ["customSingleSelectRadio"];
18
+ const _c6 = ["customMultiSelectCheckbox"];
19
+ const _c7 = ["customMultiSelectDropdown"];
20
+ const _c8 = (a0, a1, a2) => ({ $implicit: a0, formGroup: a1, control: a2 });
21
+ const _c9 = (a0, a1) => ({ $implicit: a0, control: a1 });
22
+ const _c10 = (a0, a1, a2) => ({ field: a0, control: a1, formgroup: a2 });
23
+ const _c11 = a0 => ({ "border-bottom": a0 });
24
+ const _c12 = a0 => ({ "border": a0 });
25
+ const _c13 = a0 => ({ $implicit: a0 });
26
+ const _c14 = a0 => ({ "removeable-container": a0 });
27
+ const _c15 = a0 => ({ "checkbox-active": a0 });
28
+ const _c16 = () => ({ "flex-basis": "100%", "height": "0" });
29
+ function DynamicFormComponent_ng_container_2_div_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
30
+ i0.ɵɵelementContainerStart(0);
31
+ i0.ɵɵelementContainer(1, 15);
32
+ i0.ɵɵelementContainerEnd();
33
+ } if (rf & 2) {
34
+ const subFieldControl_r1 = ctx.$implicit;
35
+ const j_r2 = ctx.index;
36
+ const ctx_r2 = i0.ɵɵnextContext(2);
37
+ const fieldControl_r4 = ctx_r2.$implicit;
38
+ const i_r5 = ctx_r2.index;
39
+ const ctx_r5 = i0.ɵɵnextContext();
40
+ const dynamicField_r7 = i0.ɵɵreference(4);
41
+ i0.ɵɵadvance();
42
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicField_r7)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c9, ctx_r5.findSelectedSubFieldConfig(ctx_r5.formFields[i_r5] == null ? null : ctx_r5.formFields[i_r5].subFields, fieldControl_r4.controls.value.value.value, j_r2), subFieldControl_r1));
43
+ } }
44
+ function DynamicFormComponent_ng_container_2_div_2_Template(rf, ctx) { if (rf & 1) {
45
+ i0.ɵɵelementStart(0, "div", 17);
46
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_container_2_div_2_ng_container_1_Template, 2, 5, "ng-container", 18);
47
+ i0.ɵɵelementEnd();
48
+ } if (rf & 2) {
49
+ const fieldControl_r4 = i0.ɵɵnextContext().$implicit;
50
+ i0.ɵɵadvance();
51
+ i0.ɵɵproperty("ngForOf", fieldControl_r4.controls.subFields.controls);
52
+ } }
53
+ function DynamicFormComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
54
+ i0.ɵɵelementContainerStart(0, 14);
55
+ i0.ɵɵelementContainer(1, 15);
56
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_container_2_div_2_Template, 2, 1, "div", 16);
57
+ i0.ɵɵelementContainerEnd();
58
+ } if (rf & 2) {
59
+ const fieldControl_r4 = ctx.$implicit;
60
+ const i_r5 = ctx.index;
61
+ const ctx_r5 = i0.ɵɵnextContext();
62
+ const dynamicField_r7 = i0.ɵɵreference(4);
63
+ i0.ɵɵproperty("formGroupName", i_r5);
64
+ i0.ɵɵadvance();
65
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicField_r7)("ngTemplateOutletContext", i0.ɵɵpureFunction3(4, _c8, ctx_r5.formFields[i_r5], fieldControl_r4, fieldControl_r4.controls.value));
66
+ i0.ɵɵadvance();
67
+ i0.ɵɵproperty("ngIf", fieldControl_r4.value && (!!(ctx_r5.formFields[i_r5] == null ? null : ctx_r5.formFields[i_r5].subFields) && (ctx_r5.formFields[i_r5] == null ? null : ctx_r5.formFields[i_r5].subFields == null ? null : ctx_r5.formFields[i_r5].subFields.length) > 0 && ctx_r5.matchParentConfig(ctx_r5.formFields[i_r5] == null ? null : ctx_r5.formFields[i_r5].subFields, fieldControl_r4.controls.value.value.value)));
68
+ } }
69
+ function DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_ng_template_1_Template(rf, ctx) { }
70
+ function DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
71
+ i0.ɵɵelementContainerStart(0);
72
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
73
+ i0.ɵɵelementContainerEnd();
74
+ } if (rf & 2) {
75
+ const ctx_r7 = i0.ɵɵnextContext(2);
76
+ const field_r9 = ctx_r7.$implicit;
77
+ const control_r10 = ctx_r7.control;
78
+ const formgroup_r11 = ctx_r7.formGroup;
79
+ const ctx_r5 = i0.ɵɵnextContext();
80
+ i0.ɵɵadvance();
81
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customInputTextNumber)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
82
+ } }
83
+ function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
84
+ i0.ɵɵelementStart(0, "span");
85
+ i0.ɵɵtext(1, " *");
86
+ i0.ɵɵelementEnd();
87
+ } }
88
+ function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
89
+ i0.ɵɵelementContainer(0, 15);
90
+ } if (rf & 2) {
91
+ const control_r10 = i0.ɵɵnextContext(3).control;
92
+ i0.ɵɵnextContext();
93
+ const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
94
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
95
+ } }
96
+ function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {
97
+ const _r12 = i0.ɵɵgetCurrentView();
98
+ i0.ɵɵelementStart(0, "div", 21)(1, "p", 22);
99
+ i0.ɵɵtext(2);
100
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_span_3_Template, 2, 0, "span", 19);
101
+ i0.ɵɵelementEnd();
102
+ i0.ɵɵelement(4, "div", 23);
103
+ i0.ɵɵelementStart(5, "input", 24);
104
+ i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSubDynamicFields(field_r9, formgroup_r11, $event)); });
105
+ i0.ɵɵelementEnd();
106
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_ng_container_6_Template, 1, 4, "ng-container", 25);
107
+ i0.ɵɵelementEnd();
108
+ } if (rf & 2) {
109
+ const ctx_r7 = i0.ɵɵnextContext(2);
110
+ const field_r9 = ctx_r7.$implicit;
111
+ const control_r10 = ctx_r7.control;
112
+ const formgroup_r11 = ctx_r7.formGroup;
113
+ const ctx_r5 = i0.ɵɵnextContext();
114
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
115
+ i0.ɵɵadvance(2);
116
+ i0.ɵɵtextInterpolate1(" ", field_r9 == null ? null : field_r9.title, " ");
117
+ i0.ɵɵadvance();
118
+ i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
119
+ i0.ɵɵadvance(2);
120
+ i0.ɵɵproperty("type", field_r9.fieldInputType)("formControl", control_r10)("ngStyle", i0.ɵɵpureFunction1(11, _c12, control_r10.touched && control_r10.errors ? "1px solid #B00020" : ""))("placeholder", field_r9.placeholderText ? field_r9.placeholderText : "Input Text")("min", field_r9.fieldInputType === "number" ? 0 : "");
121
+ i0.ɵɵadvance();
122
+ i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
123
+ } }
124
+ function DynamicFormComponent_ng_template_3_ng_container_0_Template(rf, ctx) { if (rf & 1) {
125
+ i0.ɵɵelementContainerStart(0);
126
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template, 7, 13, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
127
+ i0.ɵɵelementContainerEnd();
128
+ } if (rf & 2) {
129
+ const defaultInputTextNumber_r14 = i0.ɵɵreference(3);
130
+ const ctx_r5 = i0.ɵɵnextContext(2);
131
+ i0.ɵɵadvance();
132
+ i0.ɵɵproperty("ngIf", ctx_r5.customInputTextNumber)("ngIfElse", defaultInputTextNumber_r14);
133
+ } }
134
+ function DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_ng_template_1_Template(rf, ctx) { }
135
+ function DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
136
+ i0.ɵɵelementContainerStart(0);
137
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
138
+ i0.ɵɵelementContainerEnd();
139
+ } if (rf & 2) {
140
+ const ctx_r7 = i0.ɵɵnextContext(2);
141
+ const field_r9 = ctx_r7.$implicit;
142
+ const control_r10 = ctx_r7.control;
143
+ const formgroup_r11 = ctx_r7.formGroup;
144
+ const ctx_r5 = i0.ɵɵnextContext();
145
+ i0.ɵɵadvance();
146
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customInputTextarea)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
147
+ } }
148
+ function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
149
+ i0.ɵɵelementStart(0, "span");
150
+ i0.ɵɵtext(1, " *");
151
+ i0.ɵɵelementEnd();
152
+ } }
153
+ function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
154
+ i0.ɵɵelementContainer(0, 15);
155
+ } if (rf & 2) {
156
+ const control_r10 = i0.ɵɵnextContext(3).control;
157
+ i0.ɵɵnextContext();
158
+ const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
159
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
160
+ } }
161
+ function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
162
+ const _r15 = i0.ɵɵgetCurrentView();
163
+ i0.ɵɵelementStart(0, "div", 21)(1, "p", 22);
164
+ i0.ɵɵtext(2);
165
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_span_3_Template, 2, 0, "span", 19);
166
+ i0.ɵɵelementEnd();
167
+ i0.ɵɵelement(4, "div", 23);
168
+ i0.ɵɵelementStart(5, "textarea", 26);
169
+ i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template_textarea_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSubDynamicFields(field_r9, formgroup_r11, $event)); });
170
+ i0.ɵɵelementEnd();
171
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_ng_container_6_Template, 1, 4, "ng-container", 25);
172
+ i0.ɵɵelementEnd();
173
+ } if (rf & 2) {
174
+ const ctx_r7 = i0.ɵɵnextContext(2);
175
+ const field_r9 = ctx_r7.$implicit;
176
+ const control_r10 = ctx_r7.control;
177
+ const formgroup_r11 = ctx_r7.formGroup;
178
+ const ctx_r5 = i0.ɵɵnextContext();
179
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(7, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
180
+ i0.ɵɵadvance(2);
181
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
182
+ i0.ɵɵadvance();
183
+ i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
184
+ i0.ɵɵadvance(2);
185
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c12, control_r10.touched && control_r10.errors ? "1px solid #B00020" : ""))("placeholder", field_r9.placeholderText ? field_r9.placeholderText : "Input Text")("formControl", control_r10);
186
+ i0.ɵɵadvance();
187
+ i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
188
+ } }
189
+ function DynamicFormComponent_ng_template_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
190
+ i0.ɵɵelementContainerStart(0);
191
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template, 7, 11, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
192
+ i0.ɵɵelementContainerEnd();
193
+ } if (rf & 2) {
194
+ const defaultInputTextarea_r16 = i0.ɵɵreference(3);
195
+ const ctx_r5 = i0.ɵɵnextContext(2);
196
+ i0.ɵɵadvance();
197
+ i0.ɵɵproperty("ngIf", ctx_r5.customInputTextarea)("ngIfElse", defaultInputTextarea_r16);
198
+ } }
199
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_ng_template_1_Template(rf, ctx) { }
200
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
201
+ i0.ɵɵelementContainerStart(0);
202
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
203
+ i0.ɵɵelementContainerEnd();
204
+ } if (rf & 2) {
205
+ const ctx_r7 = i0.ɵɵnextContext(2);
206
+ const field_r9 = ctx_r7.$implicit;
207
+ const control_r10 = ctx_r7.control;
208
+ const formgroup_r11 = ctx_r7.formGroup;
209
+ const ctx_r5 = i0.ɵɵnextContext();
210
+ i0.ɵɵadvance();
211
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customInputDate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
212
+ } }
213
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_span_3_Template(rf, ctx) { if (rf & 1) {
214
+ i0.ɵɵelementStart(0, "span");
215
+ i0.ɵɵtext(1, " *");
216
+ i0.ɵɵelementEnd();
217
+ } }
218
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template(rf, ctx) { if (rf & 1) {
219
+ const _r18 = i0.ɵɵgetCurrentView();
220
+ i0.ɵɵelementStart(0, "img", 33);
221
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r18); i0.ɵɵnextContext(); const dp_r19 = i0.ɵɵreference(6); return i0.ɵɵresetView(dp_r19.click()); });
222
+ i0.ɵɵelementEnd();
223
+ } if (rf & 2) {
224
+ const ctx_r5 = i0.ɵɵnextContext(5);
225
+ i0.ɵɵproperty("src", ctx_r5.calendarIconUrl, i0.ɵɵsanitizeUrl);
226
+ } }
227
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_ng_container_8_Template(rf, ctx) { if (rf & 1) {
228
+ i0.ɵɵelementContainer(0, 15);
229
+ } if (rf & 2) {
230
+ const control_r10 = i0.ɵɵnextContext(4).control;
231
+ i0.ɵɵnextContext();
232
+ const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
233
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
234
+ } }
235
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template(rf, ctx) { if (rf & 1) {
236
+ const _r17 = i0.ɵɵgetCurrentView();
237
+ i0.ɵɵelementStart(0, "div", 28)(1, "p", 29);
238
+ i0.ɵɵtext(2);
239
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_span_3_Template, 2, 0, "span", 19);
240
+ i0.ɵɵelementEnd();
241
+ i0.ɵɵelementStart(4, "div", 30)(5, "input", 31, 5);
242
+ i0.ɵɵlistener("dateChange", function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template_input_dateChange_5_listener($event) { i0.ɵɵrestoreView(_r17); const control_r10 = i0.ɵɵnextContext(3).control; return i0.ɵɵresetView(control_r10.setValue($event)); });
243
+ i0.ɵɵelementEnd();
244
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template, 1, 1, "img", 32);
245
+ i0.ɵɵelementEnd();
246
+ i0.ɵɵtemplate(8, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_ng_container_8_Template, 1, 4, "ng-container", 25);
247
+ i0.ɵɵelementEnd();
248
+ } if (rf & 2) {
249
+ const ctx_r7 = i0.ɵɵnextContext(3);
250
+ const field_r9 = ctx_r7.$implicit;
251
+ const control_r10 = ctx_r7.control;
252
+ const formgroup_r11 = ctx_r7.formGroup;
253
+ const ctx_r5 = i0.ɵɵnextContext();
254
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
255
+ i0.ɵɵadvance(2);
256
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, " ");
257
+ i0.ɵɵadvance();
258
+ i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
259
+ i0.ɵɵadvance(2);
260
+ i0.ɵɵproperty("dpConfig", field_r9.fieldConfig)("selectedDate", control_r10.value)("offsetY", 0)("value", control_r10.value);
261
+ i0.ɵɵadvance(2);
262
+ i0.ɵɵproperty("ngIf", ctx_r5.calendarIconUrl);
263
+ i0.ɵɵadvance();
264
+ i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
265
+ } }
266
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
267
+ i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template, 9, 11, "div", 27);
268
+ } if (rf & 2) {
269
+ const field_r9 = i0.ɵɵnextContext(2).$implicit;
270
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "input" && field_r9.fieldInputType === "date");
271
+ } }
272
+ function DynamicFormComponent_ng_template_3_ng_container_2_Template(rf, ctx) { if (rf & 1) {
273
+ i0.ɵɵelementContainerStart(0);
274
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_Template, 1, 1, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
275
+ i0.ɵɵelementContainerEnd();
276
+ } if (rf & 2) {
277
+ const defaultInputDate_r20 = i0.ɵɵreference(3);
278
+ const ctx_r5 = i0.ɵɵnextContext(2);
279
+ i0.ɵɵadvance();
280
+ i0.ɵɵproperty("ngIf", ctx_r5.customInputDate)("ngIfElse", defaultInputDate_r20);
281
+ } }
282
+ function DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_ng_template_1_Template(rf, ctx) { }
283
+ function DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
284
+ i0.ɵɵelementContainerStart(0);
285
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
286
+ i0.ɵɵelementContainerEnd();
287
+ } if (rf & 2) {
288
+ const ctx_r7 = i0.ɵɵnextContext(2);
289
+ const field_r9 = ctx_r7.$implicit;
290
+ const control_r10 = ctx_r7.control;
291
+ const formgroup_r11 = ctx_r7.formGroup;
292
+ const ctx_r5 = i0.ɵɵnextContext();
293
+ i0.ɵɵadvance();
294
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customBooleanToggle)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
295
+ } }
296
+ function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
297
+ i0.ɵɵelementStart(0, "span");
298
+ i0.ɵɵtext(1, " *");
299
+ i0.ɵɵelementEnd();
300
+ } }
301
+ function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
302
+ i0.ɵɵelementContainer(0, 15);
303
+ } if (rf & 2) {
304
+ const control_r10 = i0.ɵɵnextContext(3).control;
305
+ i0.ɵɵnextContext();
306
+ const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
307
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
308
+ } }
309
+ function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {
310
+ const _r21 = i0.ɵɵgetCurrentView();
311
+ i0.ɵɵelementStart(0, "div", 28)(1, "p", 29);
312
+ i0.ɵɵtext(2);
313
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_span_3_Template, 2, 0, "span", 19);
314
+ i0.ɵɵelementEnd();
315
+ i0.ɵɵelementStart(4, "mis-switch", 34);
316
+ i0.ɵɵlistener("valueChanged", function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template_mis_switch_valueChanged_4_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSubDynamicFields(field_r9, formgroup_r11, $event)); });
317
+ i0.ɵɵelementEnd();
318
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_ng_container_5_Template, 1, 4, "ng-container", 25);
319
+ i0.ɵɵelementEnd();
320
+ } if (rf & 2) {
321
+ const ctx_r7 = i0.ɵɵnextContext(2);
322
+ const field_r9 = ctx_r7.$implicit;
323
+ const control_r10 = ctx_r7.control;
324
+ const formgroup_r11 = ctx_r7.formGroup;
325
+ const ctx_r5 = i0.ɵɵnextContext();
326
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
327
+ i0.ɵɵadvance(2);
328
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
329
+ i0.ɵɵadvance();
330
+ i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
331
+ i0.ɵɵadvance();
332
+ i0.ɵɵproperty("control", control_r10);
333
+ i0.ɵɵadvance();
334
+ i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
335
+ } }
336
+ function DynamicFormComponent_ng_template_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
337
+ i0.ɵɵelementContainerStart(0);
338
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template, 6, 7, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
339
+ i0.ɵɵelementContainerEnd();
340
+ } if (rf & 2) {
341
+ const defaultBooleanToggle_r22 = i0.ɵɵreference(3);
342
+ const ctx_r5 = i0.ɵɵnextContext(2);
343
+ i0.ɵɵadvance();
344
+ i0.ɵɵproperty("ngIf", ctx_r5.customBooleanToggle)("ngIfElse", defaultBooleanToggle_r22);
345
+ } }
346
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_ng_template_1_Template(rf, ctx) { }
347
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
348
+ i0.ɵɵelementContainerStart(0);
349
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
350
+ i0.ɵɵelementContainerEnd();
351
+ } if (rf & 2) {
352
+ const ctx_r7 = i0.ɵɵnextContext(2);
353
+ const field_r9 = ctx_r7.$implicit;
354
+ const control_r10 = ctx_r7.control;
355
+ const formgroup_r11 = ctx_r7.formGroup;
356
+ const ctx_r5 = i0.ɵɵnextContext();
357
+ i0.ɵɵadvance();
358
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customSingleSelectDropdown)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
359
+ } }
360
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
361
+ i0.ɵɵelementStart(0, "span");
362
+ i0.ɵɵtext(1, " *");
363
+ i0.ɵɵelementEnd();
364
+ } }
365
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template(rf, ctx) { if (rf & 1) {
366
+ const _r24 = i0.ɵɵgetCurrentView();
367
+ i0.ɵɵelementStart(0, "img", 38);
368
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r24); const field_r9 = i0.ɵɵnextContext(3).$implicit; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.fieldRemoved.emit(field_r9)); });
369
+ i0.ɵɵelementEnd();
370
+ } if (rf & 2) {
371
+ const ctx_r5 = i0.ɵɵnextContext(4);
372
+ i0.ɵɵproperty("src", ctx_r5.removeIconUrl, i0.ɵɵsanitizeUrl);
373
+ } }
374
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
375
+ i0.ɵɵelementContainer(0, 15);
376
+ } if (rf & 2) {
377
+ const control_r10 = i0.ɵɵnextContext(3).control;
378
+ i0.ɵɵnextContext();
379
+ const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
380
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
381
+ } }
382
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {
383
+ const _r23 = i0.ɵɵgetCurrentView();
384
+ i0.ɵɵelementStart(0, "div", 28)(1, "p", 29);
385
+ i0.ɵɵtext(2);
386
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_span_3_Template, 2, 0, "span", 19);
387
+ i0.ɵɵelementEnd();
388
+ i0.ɵɵelementStart(4, "div", 35)(5, "mis-dropdown", 36);
389
+ i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template_mis_dropdown_onChange_5_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const control_r10 = ctx_r7.control; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSelectedValueForSingleSelect(field_r9, control_r10, formgroup_r11, $event)); });
390
+ i0.ɵɵelementEnd();
391
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template, 1, 1, "img", 37);
392
+ i0.ɵɵelementEnd();
393
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 25);
394
+ i0.ɵɵelementEnd();
395
+ } if (rf & 2) {
396
+ const ctx_r7 = i0.ɵɵnextContext(2);
397
+ const field_r9 = ctx_r7.$implicit;
398
+ const control_r10 = ctx_r7.control;
399
+ const formgroup_r11 = ctx_r7.formGroup;
400
+ const ctx_r5 = i0.ɵɵnextContext();
401
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(10, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
402
+ i0.ɵɵadvance(2);
403
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
404
+ i0.ɵɵadvance();
405
+ i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
406
+ i0.ɵɵadvance();
407
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(12, _c14, field_r9 == null ? null : field_r9.isRemoveable));
408
+ i0.ɵɵadvance();
409
+ i0.ɵɵproperty("searchEnabled", false)("width", "140px")("data", field_r9.itemsList)("selectedItem", control_r10.value);
410
+ i0.ɵɵadvance();
411
+ i0.ɵɵproperty("ngIf", field_r9.isRemoveable && ctx_r5.removeIconUrl);
412
+ i0.ɵɵadvance();
413
+ i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
414
+ } }
415
+ function DynamicFormComponent_ng_template_3_ng_container_4_Template(rf, ctx) { if (rf & 1) {
416
+ i0.ɵɵelementContainerStart(0);
417
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template, 8, 14, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor);
418
+ i0.ɵɵelementContainerEnd();
419
+ } if (rf & 2) {
420
+ const defaultSingleSelectDropdown_r25 = i0.ɵɵreference(3);
421
+ const ctx_r5 = i0.ɵɵnextContext(2);
422
+ i0.ɵɵadvance();
423
+ i0.ɵɵproperty("ngIf", ctx_r5.customSingleSelectDropdown)("ngIfElse", defaultSingleSelectDropdown_r25);
424
+ } }
425
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_ng_template_1_Template(rf, ctx) { }
426
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
427
+ i0.ɵɵelementContainerStart(0);
428
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
429
+ i0.ɵɵelementContainerEnd();
430
+ } if (rf & 2) {
431
+ const ctx_r7 = i0.ɵɵnextContext(2);
432
+ const field_r9 = ctx_r7.$implicit;
433
+ const control_r10 = ctx_r7.control;
434
+ const formgroup_r11 = ctx_r7.formGroup;
435
+ const ctx_r5 = i0.ɵɵnextContext();
436
+ i0.ɵɵadvance();
437
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customSingleSelectRadio)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
438
+ } }
439
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
440
+ i0.ɵɵelementStart(0, "span");
441
+ i0.ɵɵtext(1, " *");
442
+ i0.ɵɵelementEnd();
443
+ } }
444
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_img_1_Template(rf, ctx) { if (rf & 1) {
445
+ i0.ɵɵelement(0, "img", 43);
446
+ } if (rf & 2) {
447
+ const ctx_r5 = i0.ɵɵnextContext(5);
448
+ i0.ɵɵproperty("src", ctx_r5.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
449
+ } }
450
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template(rf, ctx) { if (rf & 1) {
451
+ const _r26 = i0.ɵɵgetCurrentView();
452
+ i0.ɵɵelementStart(0, "div", 41);
453
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template_div_click_0_listener() { const item_r27 = i0.ɵɵrestoreView(_r26).$implicit; const ctx_r7 = i0.ɵɵnextContext(3); const field_r9 = ctx_r7.$implicit; const control_r10 = ctx_r7.control; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSelectedValueForSingleSelect(field_r9, control_r10, formgroup_r11, item_r27)); });
454
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_img_1_Template, 1, 1, "img", 42);
455
+ i0.ɵɵelementStart(2, "p", 29);
456
+ i0.ɵɵtext(3);
457
+ i0.ɵɵelementEnd()();
458
+ } if (rf & 2) {
459
+ const item_r27 = ctx.$implicit;
460
+ const control_r10 = i0.ɵɵnextContext(3).control;
461
+ const ctx_r5 = i0.ɵɵnextContext();
462
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c15, item_r27.label === (control_r10.value == null ? null : control_r10.value.label)));
463
+ i0.ɵɵadvance();
464
+ i0.ɵɵproperty("ngIf", item_r27.label === (control_r10.value == null ? null : control_r10.value.label) && ctx_r5.activeBtnIconUrl);
465
+ i0.ɵɵadvance(2);
466
+ i0.ɵɵtextInterpolate(item_r27.label);
467
+ } }
468
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
469
+ i0.ɵɵelementContainer(0, 15);
470
+ } if (rf & 2) {
471
+ const control_r10 = i0.ɵɵnextContext(3).control;
472
+ i0.ɵɵnextContext();
473
+ const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
474
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
475
+ } }
476
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_Template(rf, ctx) { if (rf & 1) {
477
+ i0.ɵɵelementStart(0, "div", 21)(1, "p", 22);
478
+ i0.ɵɵtext(2);
479
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_span_3_Template, 2, 0, "span", 19);
480
+ i0.ɵɵelementEnd();
481
+ i0.ɵɵelement(4, "div", 23);
482
+ i0.ɵɵelementStart(5, "div", 39);
483
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template, 4, 5, "div", 40);
484
+ i0.ɵɵelementEnd();
485
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 25);
486
+ i0.ɵɵelementEnd();
487
+ } if (rf & 2) {
488
+ const ctx_r7 = i0.ɵɵnextContext(2);
489
+ const field_r9 = ctx_r7.$implicit;
490
+ const control_r10 = ctx_r7.control;
491
+ const formgroup_r11 = ctx_r7.formGroup;
492
+ const ctx_r5 = i0.ɵɵnextContext();
493
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
494
+ i0.ɵɵadvance(2);
495
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
496
+ i0.ɵɵadvance();
497
+ i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
498
+ i0.ɵɵadvance(3);
499
+ i0.ɵɵproperty("ngForOf", field_r9.itemsList);
500
+ i0.ɵɵadvance();
501
+ i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
502
+ } }
503
+ function DynamicFormComponent_ng_template_3_ng_container_5_Template(rf, ctx) { if (rf & 1) {
504
+ i0.ɵɵelementContainerStart(0);
505
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_Template, 8, 7, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
506
+ i0.ɵɵelementContainerEnd();
507
+ } if (rf & 2) {
508
+ const defaultSingleSelectRadio_r28 = i0.ɵɵreference(3);
509
+ const ctx_r5 = i0.ɵɵnextContext(2);
510
+ i0.ɵɵadvance();
511
+ i0.ɵɵproperty("ngIf", ctx_r5.customSingleSelectRadio)("ngIfElse", defaultSingleSelectRadio_r28);
512
+ } }
513
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_ng_template_1_Template(rf, ctx) { }
514
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
515
+ i0.ɵɵelementContainerStart(0);
516
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
517
+ i0.ɵɵelementContainerEnd();
518
+ } if (rf & 2) {
519
+ const ctx_r7 = i0.ɵɵnextContext(2);
520
+ const field_r9 = ctx_r7.$implicit;
521
+ const control_r10 = ctx_r7.control;
522
+ const formgroup_r11 = ctx_r7.formGroup;
523
+ const ctx_r5 = i0.ɵɵnextContext();
524
+ i0.ɵɵadvance();
525
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customMultiSelectCheckbox)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
526
+ } }
527
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
528
+ i0.ɵɵelementStart(0, "span");
529
+ i0.ɵɵtext(1, " *");
530
+ i0.ɵɵelementEnd();
531
+ } }
532
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_img_1_Template(rf, ctx) { if (rf & 1) {
533
+ i0.ɵɵelement(0, "img", 43);
534
+ } if (rf & 2) {
535
+ const ctx_r5 = i0.ɵɵnextContext(5);
536
+ i0.ɵɵproperty("src", ctx_r5.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
537
+ } }
538
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template(rf, ctx) { if (rf & 1) {
539
+ const _r29 = i0.ɵɵgetCurrentView();
540
+ i0.ɵɵelementStart(0, "div", 41);
541
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template_div_click_0_listener() { const item_r30 = i0.ɵɵrestoreView(_r29).$implicit; const ctx_r7 = i0.ɵɵnextContext(3); const field_r9 = ctx_r7.$implicit; const control_r10 = ctx_r7.control; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSelectedValueForMultiSelect(field_r9, control_r10, formgroup_r11, [item_r30])); });
542
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_img_1_Template, 1, 1, "img", 42);
543
+ i0.ɵɵelementStart(2, "p", 29);
544
+ i0.ɵɵtext(3);
545
+ i0.ɵɵelementEnd()();
546
+ } if (rf & 2) {
547
+ const item_r30 = ctx.$implicit;
548
+ const control_r10 = i0.ɵɵnextContext(3).control;
549
+ const ctx_r5 = i0.ɵɵnextContext();
550
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c15, ctx_r5.isCheckBoxSelected(item_r30.label, control_r10.value)));
551
+ i0.ɵɵadvance();
552
+ i0.ɵɵproperty("ngIf", ctx_r5.isCheckBoxSelected(item_r30.label, control_r10.value) && ctx_r5.activeBtnIconUrl);
553
+ i0.ɵɵadvance(2);
554
+ i0.ɵɵtextInterpolate(item_r30.label);
555
+ } }
556
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
557
+ i0.ɵɵelementContainer(0, 15);
558
+ } if (rf & 2) {
559
+ const control_r10 = i0.ɵɵnextContext(3).control;
560
+ i0.ɵɵnextContext();
561
+ const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
562
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
563
+ } }
564
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_Template(rf, ctx) { if (rf & 1) {
565
+ i0.ɵɵelementStart(0, "div", 21)(1, "p", 22);
566
+ i0.ɵɵtext(2);
567
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_span_3_Template, 2, 0, "span", 19);
568
+ i0.ɵɵelementEnd();
569
+ i0.ɵɵelement(4, "div", 23);
570
+ i0.ɵɵelementStart(5, "div", 39);
571
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template, 4, 5, "div", 40);
572
+ i0.ɵɵelementEnd();
573
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 25);
574
+ i0.ɵɵelementEnd();
575
+ } if (rf & 2) {
576
+ const ctx_r7 = i0.ɵɵnextContext(2);
577
+ const field_r9 = ctx_r7.$implicit;
578
+ const control_r10 = ctx_r7.control;
579
+ const formgroup_r11 = ctx_r7.formGroup;
580
+ const ctx_r5 = i0.ɵɵnextContext();
581
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
582
+ i0.ɵɵadvance(2);
583
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
584
+ i0.ɵɵadvance();
585
+ i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
586
+ i0.ɵɵadvance(3);
587
+ i0.ɵɵproperty("ngForOf", field_r9.itemsList);
588
+ i0.ɵɵadvance();
589
+ i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
590
+ } }
591
+ function DynamicFormComponent_ng_template_3_ng_container_6_Template(rf, ctx) { if (rf & 1) {
592
+ i0.ɵɵelementContainerStart(0);
593
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_Template, 8, 7, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
594
+ i0.ɵɵelementContainerEnd();
595
+ } if (rf & 2) {
596
+ const defaultMultiSelectCheckbox_r31 = i0.ɵɵreference(3);
597
+ const ctx_r5 = i0.ɵɵnextContext(2);
598
+ i0.ɵɵadvance();
599
+ i0.ɵɵproperty("ngIf", ctx_r5.customMultiSelectCheckbox)("ngIfElse", defaultMultiSelectCheckbox_r31);
600
+ } }
601
+ function DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_ng_template_1_Template(rf, ctx) { }
602
+ function DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
603
+ i0.ɵɵelementContainerStart(0);
604
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
605
+ i0.ɵɵelementContainerEnd();
606
+ } if (rf & 2) {
607
+ const ctx_r7 = i0.ɵɵnextContext(2);
608
+ const field_r9 = ctx_r7.$implicit;
609
+ const control_r10 = ctx_r7.control;
610
+ const formgroup_r11 = ctx_r7.formGroup;
611
+ const ctx_r5 = i0.ɵɵnextContext();
612
+ i0.ɵɵadvance();
613
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customMultiSelectDropdown)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
614
+ } }
615
+ function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
616
+ i0.ɵɵelementStart(0, "span");
617
+ i0.ɵɵtext(1, " *");
618
+ i0.ɵɵelementEnd();
619
+ } }
620
+ function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
621
+ i0.ɵɵelementContainer(0, 15);
622
+ } if (rf & 2) {
623
+ const control_r10 = i0.ɵɵnextContext(3).control;
624
+ i0.ɵɵnextContext();
625
+ const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
626
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
627
+ } }
628
+ function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template(rf, ctx) { if (rf & 1) {
629
+ const _r32 = i0.ɵɵgetCurrentView();
630
+ i0.ɵɵelementStart(0, "div", 28)(1, "p", 29);
631
+ i0.ɵɵtext(2);
632
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_span_3_Template, 2, 0, "span", 19);
633
+ i0.ɵɵelementEnd();
634
+ i0.ɵɵelementStart(4, "mis-multi-select-dropdown", 44);
635
+ i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template_mis_multi_select_dropdown_onChange_4_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const control_r10 = ctx_r7.control; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSelectedValueForMultiSelect(field_r9, control_r10, formgroup_r11, $event)); });
636
+ i0.ɵɵelementEnd();
637
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_ng_container_5_Template, 1, 4, "ng-container", 25);
638
+ i0.ɵɵelementEnd();
639
+ } if (rf & 2) {
640
+ const ctx_r7 = i0.ɵɵnextContext(2);
641
+ const field_r9 = ctx_r7.$implicit;
642
+ const control_r10 = ctx_r7.control;
643
+ const formgroup_r11 = ctx_r7.formGroup;
644
+ const ctx_r5 = i0.ɵɵnextContext();
645
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(11, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
646
+ i0.ɵɵadvance(2);
647
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
648
+ i0.ɵɵadvance();
649
+ i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
650
+ i0.ɵɵadvance();
651
+ i0.ɵɵproperty("width", "140px")("showSelectedCount", true)("dropdownListWidth", "256px")("searchEnabled", false)("hideApplyButton", true)("data", field_r9.itemsList)("selectedItems", control_r10.value);
652
+ i0.ɵɵadvance();
653
+ i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
654
+ } }
655
+ function DynamicFormComponent_ng_template_3_ng_container_7_Template(rf, ctx) { if (rf & 1) {
656
+ i0.ɵɵelementContainerStart(0);
657
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template, 6, 13, "ng-template", null, 10, i0.ɵɵtemplateRefExtractor);
658
+ i0.ɵɵelementContainerEnd();
659
+ } if (rf & 2) {
660
+ const defaultMultiSelectDropdown_r33 = i0.ɵɵreference(3);
661
+ const ctx_r5 = i0.ɵɵnextContext(2);
662
+ i0.ɵɵadvance();
663
+ i0.ɵɵproperty("ngIf", ctx_r5.customMultiSelectDropdown)("ngIfElse", defaultMultiSelectDropdown_r33);
664
+ } }
665
+ function DynamicFormComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
666
+ i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_ng_container_0_Template, 4, 2, "ng-container", 19)(1, DynamicFormComponent_ng_template_3_ng_container_1_Template, 4, 2, "ng-container", 19)(2, DynamicFormComponent_ng_template_3_ng_container_2_Template, 4, 2, "ng-container", 19)(3, DynamicFormComponent_ng_template_3_ng_container_3_Template, 4, 2, "ng-container", 19)(4, DynamicFormComponent_ng_template_3_ng_container_4_Template, 4, 2, "ng-container", 19)(5, DynamicFormComponent_ng_template_3_ng_container_5_Template, 4, 2, "ng-container", 19)(6, DynamicFormComponent_ng_template_3_ng_container_6_Template, 4, 2, "ng-container", 19)(7, DynamicFormComponent_ng_template_3_ng_container_7_Template, 4, 2, "ng-container", 19);
667
+ } if (rf & 2) {
668
+ const field_r9 = ctx.$implicit;
669
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "input" && (field_r9.fieldInputType === "text" || field_r9.fieldInputType === "number"));
670
+ i0.ɵɵadvance();
671
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "input" && field_r9.fieldInputType === "textarea");
672
+ i0.ɵɵadvance();
673
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "input" && field_r9.fieldInputType === "date");
674
+ i0.ɵɵadvance();
675
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "boolean" && field_r9.fieldInputType === "toggle");
676
+ i0.ɵɵadvance();
677
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "singleSelect" && field_r9.fieldInputType === "dropdown");
678
+ i0.ɵɵadvance();
679
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "singleSelect" && field_r9.fieldInputType === "radio");
680
+ i0.ɵɵadvance();
681
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "multiSelect" && field_r9.fieldInputType === "checkbox");
682
+ i0.ɵɵadvance();
683
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "multiSelect" && field_r9.fieldInputType === "dropdown");
684
+ } }
685
+ function DynamicFormComponent_ng_template_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
686
+ i0.ɵɵelementContainerStart(0);
687
+ i0.ɵɵelementStart(1, "p", 46);
688
+ i0.ɵɵtext(2);
689
+ i0.ɵɵelementEnd();
690
+ i0.ɵɵelement(3, "div", 47);
691
+ i0.ɵɵelementContainerEnd();
692
+ } if (rf & 2) {
693
+ const error_r34 = ctx.$implicit;
694
+ i0.ɵɵadvance(2);
695
+ i0.ɵɵtextInterpolate1(" ", " \u2022 \u00A0" + error_r34.value, " ");
696
+ i0.ɵɵadvance();
697
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(2, _c16));
698
+ } }
699
+ function DynamicFormComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
700
+ i0.ɵɵelementStart(0, "div", 45);
701
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_5_ng_container_1_Template, 4, 3, "ng-container", 18);
702
+ i0.ɵɵpipe(2, "keyvalue");
703
+ i0.ɵɵelementEnd();
704
+ } if (rf & 2) {
705
+ const errors_r35 = ctx.$implicit;
706
+ i0.ɵɵadvance();
707
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, errors_r35));
708
+ } }
709
+ export class DynamicFormComponent {
710
+ constructor() {
711
+ /**
712
+ * formFields: Dynamic fields recieved from the API metadata to build a dynamic form
713
+ * formValues: Holds the value of the dynamic form with "key" being dynamic field "title"
714
+ * and value being the user input.
715
+ */
716
+ this.formFields = [];
717
+ this.formValues = {};
718
+ // Need to deprecate these inputs and use constants.
719
+ this.activeBtnIconUrl = "";
720
+ this.calendarIconUrl = "";
721
+ this.removeIconUrl = "";
722
+ this.removeSepratorForSubFields = false;
723
+ /**
724
+ * formUpdated: Emits formValues Object whenever there is a change in the dynamic form.
725
+ */
726
+ this.formUpdated = new EventEmitter();
727
+ /**
728
+ * formValid: Emits boolean depending on validity of the form
729
+ */
730
+ this.formValid = new EventEmitter();
731
+ /**
732
+ * formInitialized: Emits dynamic form API on form initilization
733
+ */
734
+ this.formInitialized = new EventEmitter();
735
+ this.fieldRemoved = new EventEmitter();
736
+ }
737
+ ngOnInit() {
738
+ // Building the form
739
+ this.dynamicForm = this.generateDynamicForm(this.formFields, this.formValues);
740
+ // Subscribing to form changes and emiting values.
741
+ this.valueChangesSubscription$ = this.dynamicForm.valueChanges.subscribe(formValue => {
742
+ this.onFormValueChanges();
743
+ });
744
+ //api to expose functions
745
+ this.dynamicFormAPI = {
746
+ defaultFormValues: () => {
747
+ return this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);
748
+ }
749
+ };
750
+ this.formInitialized.emit(this.dynamicFormAPI);
751
+ this.formValid.emit(this.dynamicForm.valid);
752
+ }
753
+ ngOnDestroy() {
754
+ this.valueChangesSubscription$?.unsubscribe();
755
+ }
756
+ onFormValueChanges() {
757
+ let formValues = this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);
758
+ this.formValid.emit(this.dynamicForm.valid);
759
+ this.formUpdated.emit(formValues);
760
+ console.log(formValues);
761
+ }
762
+ generateDynamicFieldsValueObject(formValues) {
763
+ let dynamicFieldsValue = {};
764
+ formValues.forEach((fieldValue, index) => {
765
+ if (typeof fieldValue?.value === 'string')
766
+ fieldValue.value = fieldValue?.value?.trim();
767
+ let formattedValue = this.mapFormFieldToFormValue(this.formFields[index], fieldValue.value);
768
+ if (fieldValue.subFields?.length > 0) {
769
+ let formattedSubFieldsValues = {};
770
+ let subField = this.formFields[index].subFields;
771
+ if (this.formFields[index].fieldType === 'singleSelect' || this.formFields[index].fieldType === 'multiSelect') {
772
+ subField = subField.filter((subField) => subField.parentConfigValue === fieldValue.value.value);
773
+ }
774
+ fieldValue.subFields.forEach((subFieldValue, subIndex) => {
775
+ let subFormField = subField[subIndex];
776
+ if (typeof subFieldValue?.value === 'string')
777
+ subFieldValue.value = subFieldValue?.value?.trim();
778
+ formattedSubFieldsValues[subFormField.configName] = this.mapFormFieldToFormValue(subFormField, subFieldValue);
779
+ });
780
+ dynamicFieldsValue[this.formFields[index].configName] = {
781
+ value: formattedValue,
782
+ subFields: formattedSubFieldsValues
783
+ };
784
+ }
785
+ else {
786
+ dynamicFieldsValue[this.formFields[index].configName] = formattedValue;
787
+ }
788
+ });
789
+ return dynamicFieldsValue;
790
+ }
791
+ generateDynamicForm(formFields, formValues) {
792
+ let formArray = new UntypedFormArray([]);
793
+ for (let field of formFields) {
794
+ let fieldValue = formValues[field.configName]?.value ? formValues[field.configName].value : formValues[field.configName];
795
+ let fieldControl = this.mapFormValueToFormField(field, fieldValue);
796
+ let subFieldsControls = this.generateSubDynamicFields(formValues, field, fieldControl.value);
797
+ formArray.push(new UntypedFormGroup({
798
+ value: fieldControl,
799
+ subFields: subFieldsControls
800
+ }));
801
+ }
802
+ return new UntypedFormGroup({
803
+ dynamicFields: formArray
804
+ });
805
+ }
806
+ getDynamicFieldsControls() {
807
+ return this.dynamicForm.get("dynamicFields");
808
+ }
809
+ updateSubDynamicFields(field, formGroup, value) {
810
+ if (field.subFields?.length > 0) {
811
+ let subFieldsControls = this.generateSubDynamicFields(this.formValues, field, value);
812
+ formGroup.removeControl('subFields');
813
+ formGroup.addControl('subFields', subFieldsControls);
814
+ }
815
+ }
816
+ updateSelectedValueForSingleSelect(field, control, formGroup, value) {
817
+ if (control.value?.value !== value.value) {
818
+ control.setValue(value);
819
+ }
820
+ else
821
+ control.setValue('');
822
+ this.updateSubDynamicFields(field, formGroup, value);
823
+ control.markAsTouched();
824
+ }
825
+ updateSelectedValueForMultiSelect(field, control, formGroup, values) {
826
+ let selectedValues = control.value;
827
+ for (let value of values) {
828
+ let itemIndex = selectedValues.findIndex(item => item.label === value.label);
829
+ if (itemIndex > -1) {
830
+ selectedValues.splice(itemIndex, 1);
831
+ }
832
+ else {
833
+ selectedValues.push({ ...value });
834
+ }
835
+ }
836
+ control.setValue(selectedValues);
837
+ this.updateSubDynamicFields(field, formGroup, values);
838
+ control.markAsTouched();
839
+ }
840
+ isCheckBoxSelected(value, selectedValues) {
841
+ return selectedValues.findIndex(item => item.label === value) > -1;
842
+ }
843
+ findSelectedSubFieldConfig(subfields, value, subFieldIndex) {
844
+ try {
845
+ const selectedSubFieldConfig = subfields.filter(item => item.parentConfigValue === value)[subFieldIndex];
846
+ return selectedSubFieldConfig;
847
+ }
848
+ catch (e) {
849
+ throw new Error('Subfield index not found');
850
+ }
851
+ }
852
+ matchParentConfig(subfields, value) {
853
+ if (!subfields || subfields.length === 0) {
854
+ return false;
855
+ }
856
+ return subfields.some(item => item.parentConfigValue === value);
857
+ }
858
+ generateSubDynamicFields(formValues, parentField, parentValue) {
859
+ let controls = new UntypedFormArray([]);
860
+ let subFields = parentField.subFields;
861
+ let subFieldsValues = formValues[parentField.configName]?.subFields ? formValues[parentField.configName].subFields : {};
862
+ if (!subFields)
863
+ return controls;
864
+ if (parentField.fieldType === 'singleSelect') {
865
+ subFields = subFields.filter((subField) => subField.parentConfigValue === parentValue?.value);
866
+ }
867
+ else if (parentField.fieldType === 'multiSelect') {
868
+ let parentValues = new Set(parentValue.map((value) => value.value));
869
+ subFields = subFields.filter((subField) => parentValues.has(subField.parentConfigValue));
870
+ }
871
+ if (subFields?.length > 0) {
872
+ for (let subField of subFields) {
873
+ controls.push(this.mapFormValueToFormField(subField, subFieldsValues[subField.configName]));
874
+ }
875
+ }
876
+ return controls;
877
+ }
878
+ mapFormValueToFormField(formField, formValue) {
879
+ let validators = formField.validators ? [dynamicFieldValidator(formField.validators)] : [];
880
+ let control = new UntypedFormControl(null, validators);
881
+ if (formField.fieldType === "input") {
882
+ if (formField.fieldInputType === "text" || formField.fieldInputType === "textarea")
883
+ control.setValue(formValue ? formValue : "");
884
+ else if (formField.fieldInputType === "number")
885
+ control.setValue(formValue ? formValue : 0);
886
+ else if (formField.fieldInputType === "date") {
887
+ if (formValue && typeof formValue === "number") {
888
+ control.setValue(moment(formValue).tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));
889
+ }
890
+ else {
891
+ control.setValue(moment().tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));
892
+ }
893
+ }
894
+ }
895
+ else if (formField.fieldType === "singleSelect") {
896
+ const findSelectedValue = () => {
897
+ let index = formField.itemsList.findIndex(item => item.value === formValue);
898
+ return index >= 0 ? formField.itemsList[index] : "";
899
+ };
900
+ if (formField.fieldInputType === "dropdown") {
901
+ if (!formValue)
902
+ control.setValue(formField.itemsList[0]);
903
+ else
904
+ control.setValue(findSelectedValue());
905
+ }
906
+ else if (formField.fieldInputType === "radio") {
907
+ control.setValue(findSelectedValue());
908
+ }
909
+ }
910
+ else if (formField.fieldType === "multiSelect") {
911
+ if (formValue && Array.isArray(formValue)) {
912
+ let selectedValues = [];
913
+ for (let value of formValue) {
914
+ let index = formField.itemsList.findIndex(item => item.value === value);
915
+ if (index > -1)
916
+ selectedValues.push({ ...formField.itemsList[index] });
917
+ }
918
+ control.setValue(selectedValues);
919
+ }
920
+ else {
921
+ control.setValue([]);
922
+ }
923
+ }
924
+ else if (formField.fieldType === "boolean") {
925
+ control.setValue(!!formValue);
926
+ }
927
+ else
928
+ control.setValue(null);
929
+ return control;
930
+ }
931
+ mapFormFieldToFormValue(formField, formValue) {
932
+ if (formField.fieldType === "input") {
933
+ if (formField.fieldInputType === "text" || formField.fieldInputType === "textarea")
934
+ return formValue;
935
+ else if (formField.fieldInputType === "number")
936
+ return +formValue;
937
+ else if (formField.fieldInputType === "date") {
938
+ return moment.tz(formValue, formField.fieldConfig.format, formField.fieldConfig.timezone).valueOf();
939
+ }
940
+ }
941
+ else if (formField.fieldType === "singleSelect") {
942
+ return formValue?.value ?? '';
943
+ }
944
+ else if (formField.fieldType === "multiSelect") {
945
+ return formValue?.map(item => item.value);
946
+ }
947
+ else if (formField.fieldType === "boolean") {
948
+ return formValue;
949
+ }
950
+ else
951
+ return formValue;
952
+ }
953
+ static { this.ɵfac = function DynamicFormComponent_Factory(t) { return new (t || DynamicFormComponent)(); }; }
954
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DynamicFormComponent, selectors: [["mis-dynamic-form"]], contentQueries: function DynamicFormComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
955
+ i0.ɵɵcontentQuery(dirIndex, _c0, 5);
956
+ i0.ɵɵcontentQuery(dirIndex, _c1, 5);
957
+ i0.ɵɵcontentQuery(dirIndex, _c2, 5);
958
+ i0.ɵɵcontentQuery(dirIndex, _c3, 5);
959
+ i0.ɵɵcontentQuery(dirIndex, _c4, 5);
960
+ i0.ɵɵcontentQuery(dirIndex, _c5, 5);
961
+ i0.ɵɵcontentQuery(dirIndex, _c6, 5);
962
+ i0.ɵɵcontentQuery(dirIndex, _c7, 5);
963
+ } if (rf & 2) {
964
+ let _t;
965
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputTextNumber = _t.first);
966
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputTextarea = _t.first);
967
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputDate = _t.first);
968
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customBooleanToggle = _t.first);
969
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customSingleSelectDropdown = _t.first);
970
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customSingleSelectRadio = _t.first);
971
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customMultiSelectCheckbox = _t.first);
972
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customMultiSelectDropdown = _t.first);
973
+ } }, inputs: { formFields: "formFields", formValues: "formValues", activeBtnIconUrl: "activeBtnIconUrl", calendarIconUrl: "calendarIconUrl", removeIconUrl: "removeIconUrl", removeSepratorForSubFields: "removeSepratorForSubFields" }, outputs: { formUpdated: "formUpdated", formValid: "formValid", formInitialized: "formInitialized", fieldRemoved: "fieldRemoved" }, decls: 7, vars: 2, consts: [["dynamicField", ""], ["dynamicFieldErrors", ""], ["defaultInputTextNumber", ""], ["defaultInputTextarea", ""], ["defaultInputDate", ""], ["dp", ""], ["defaultBooleanToggle", ""], ["defaultSingleSelectDropdown", ""], ["defaultSingleSelectRadio", ""], ["defaultMultiSelectCheckbox", ""], ["defaultMultiSelectDropdown", ""], [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"], [4, "ngIf"], [4, "ngIf", "ngIfElse"], [1, "dynamic-field", "multi-line-field-container", 3, "ngStyle"], [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"], ["class", "dynamic-field single-line-field-container", 3, "ngStyle", 4, "ngIf"], [1, "dynamic-field", "single-line-field-container", 3, "ngStyle"], [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, "ngClass"], [3, "onChange", "searchEnabled", "width", "data", "selectedItem"], ["class", "remove-icon", 3, "src", "click", 4, "ngIf"], [1, "remove-icon", 3, "click", "src"], ["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"], [3, "ngStyle"]], template: function DynamicFormComponent_Template(rf, ctx) { if (rf & 1) {
974
+ i0.ɵɵelementStart(0, "form", 11);
975
+ i0.ɵɵelementContainerStart(1, 12);
976
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_container_2_Template, 3, 8, "ng-container", 13);
977
+ i0.ɵɵelementContainerEnd();
978
+ i0.ɵɵelementEnd();
979
+ 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);
980
+ } if (rf & 2) {
981
+ i0.ɵɵproperty("formGroup", ctx.dynamicForm);
982
+ i0.ɵɵadvance(2);
983
+ i0.ɵɵproperty("ngForOf", ctx.getDynamicFieldsControls().controls);
984
+ } }, 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;border-bottom:1px solid var(--grey-seperators)}.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)}.removeable-container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center}.removeable-container[_ngcontent-%COMP%] .remove-icon[_ngcontent-%COMP%]{cursor:pointer;margin-left:8px;max-width:24px}span[_ngcontent-%COMP%]{color:var(--sem-error)}"] }); }
985
+ }
986
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicFormComponent, [{
987
+ type: Component,
988
+ 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; let j = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: findSelectedSubFieldConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value,j),\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 <ng-container *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <ng-container *ngIf=\"customInputTextNumber; else defaultInputTextNumber\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextNumber\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextNumber>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field?.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\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 </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <ng-container *ngIf=\"customInputTextarea; else defaultInputTextarea\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextarea\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextarea>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\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 </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <ng-container *ngIf=\"customInputDate; else defaultInputDate\">\n <ng-template\n [ngTemplateOutlet]=\"customInputDate\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputDate>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\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 </ng-template>\n </ng-container>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <ng-container *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <ng-container *ngIf=\"customBooleanToggle; else defaultBooleanToggle\">\n <ng-template\n [ngTemplateOutlet]=\"customBooleanToggle\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultBooleanToggle>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\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 </ng-template>\n </ng-container>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customSingleSelectDropdown; else defaultSingleSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div [ngClass]=\"{'removeable-container' : field?.isRemoveable}\">\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <img *ngIf=\"field.isRemoveable && removeIconUrl\" class=\"remove-icon\" [src]=\"removeIconUrl\" (click)=\"fieldRemoved.emit(field)\">\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container >\n \n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <ng-container *ngIf=\"customSingleSelectRadio; else defaultSingleSelectRadio\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectRadio\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectRadio>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\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 </ng-template>\n </ng-container>\n \n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <ng-container *ngIf=\"customMultiSelectCheckbox; else defaultMultiSelectCheckbox\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectCheckbox\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectCheckbox>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\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 </ng-template>\n </ng-container>\n\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customMultiSelectDropdown; else defaultMultiSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\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 </ng-template>\n </ng-container>\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 [ngStyle]=\"{ '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;border-bottom:1px solid var(--grey-seperators)}.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)}.removeable-container{display:flex;justify-content:center;align-items:center}.removeable-container .remove-icon{cursor:pointer;margin-left:8px;max-width:24px}span{color:var(--sem-error)}\n"] }]
989
+ }], () => [], { formFields: [{
990
+ type: Input
991
+ }], formValues: [{
992
+ type: Input
993
+ }], activeBtnIconUrl: [{
994
+ type: Input
995
+ }], calendarIconUrl: [{
996
+ type: Input
997
+ }], removeIconUrl: [{
998
+ type: Input
999
+ }], removeSepratorForSubFields: [{
1000
+ type: Input
1001
+ }], formUpdated: [{
1002
+ type: Output
1003
+ }], formValid: [{
1004
+ type: Output
1005
+ }], formInitialized: [{
1006
+ type: Output
1007
+ }], fieldRemoved: [{
1008
+ type: Output
1009
+ }], customInputTextNumber: [{
1010
+ type: ContentChild,
1011
+ args: ["customInputTextNumber", { static: false }]
1012
+ }], customInputTextarea: [{
1013
+ type: ContentChild,
1014
+ args: ["customInputTextarea", { static: false }]
1015
+ }], customInputDate: [{
1016
+ type: ContentChild,
1017
+ args: ["customInputDate", { static: false }]
1018
+ }], customBooleanToggle: [{
1019
+ type: ContentChild,
1020
+ args: ["customBooleanToggle", { static: false }]
1021
+ }], customSingleSelectDropdown: [{
1022
+ type: ContentChild,
1023
+ args: ["customSingleSelectDropdown", { static: false }]
1024
+ }], customSingleSelectRadio: [{
1025
+ type: ContentChild,
1026
+ args: ["customSingleSelectRadio", { static: false }]
1027
+ }], customMultiSelectCheckbox: [{
1028
+ type: ContentChild,
1029
+ args: ["customMultiSelectCheckbox", { static: false }]
1030
+ }], customMultiSelectDropdown: [{
1031
+ type: ContentChild,
1032
+ args: ["customMultiSelectDropdown", { static: false }]
1033
+ }] }); })();
1034
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DynamicFormComponent, { className: "DynamicFormComponent" }); })();
1035
+ export const dynamicFieldValidator = (validators) => {
1036
+ return (control) => {
1037
+ let value = control.value;
1038
+ if (Array.isArray(value)) {
1039
+ return null;
1040
+ }
1041
+ else if (typeof value === 'object') {
1042
+ value = value?.value ? value.value : '';
1043
+ }
1044
+ let errors = null;
1045
+ validators.forEach((validator) => {
1046
+ let error = null;
1047
+ let message = validator.message;
1048
+ switch (validator.type) {
1049
+ case "Required":
1050
+ error = Validators.required(control);
1051
+ if (!error && typeof value === 'string' && value.trim() === '') {
1052
+ error = { Required: message };
1053
+ }
1054
+ if (error)
1055
+ error = { Required: message };
1056
+ break;
1057
+ case "MinLength":
1058
+ error = Validators.minLength(+validator.value)(control);
1059
+ message = message.replace('${0}', error?.minlength.requiredLength);
1060
+ if (error)
1061
+ error = { MinLength: message };
1062
+ break;
1063
+ case "MaxLength":
1064
+ error = Validators.maxLength(+validator.value)(control);
1065
+ message = message.replace('${0}', error?.actualLength);
1066
+ if (error)
1067
+ error = { MaxLength: message };
1068
+ break;
1069
+ case "Email":
1070
+ error = Validators.email(control);
1071
+ if (error)
1072
+ error = { Email: message };
1073
+ break;
1074
+ case "Custom":
1075
+ error = Validators.pattern(`${validator.value}`)(control);
1076
+ if (error)
1077
+ error = { Custom: message };
1078
+ break;
1079
+ default:
1080
+ break;
1081
+ }
1082
+ if (error)
1083
+ errors = { ...errors, ...error };
1084
+ });
1085
+ return errors;
1086
+ };
1087
+ };
1088
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQWdCLEtBQUssRUFBcUIsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRW5JLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQWlDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBKLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JDLE9BQU8saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDUWpCLDZCQUFzRztJQUNwRyw0QkFNZTs7Ozs7Ozs7OztJQUxiLGNBQWlDO0lBQ2pDLEFBREEsa0RBQWlDLDRPQUkvQjs7O0lBUFIsK0JBQXlOO0lBQ3ZOLDZHQUFzRztJQVN4RyxpQkFBTTs7O0lBVHNDLGNBQTZDO0lBQTdDLHFFQUE2Qzs7O0lBWDNGLGlDQUFrSDtJQUM5Ryw0QkFRYTtJQUNmLHFGQUF5Tjs7Ozs7OztJQVY3TSxvQ0FBbUI7SUFFN0IsY0FBaUM7SUFDakMsQUFEQSxrREFBaUMsaUlBSy9CO0lBRzJCLGNBQXdMO0lBQXhMLGthQUF3TDs7OztJQW9Cek4sNkJBQXlFO0lBQ3ZFLGtJQUdDOzs7Ozs7OztJQUZDLGNBQTBDO0lBQzFDLEFBREEsK0RBQTBDLDhGQUMwQzs7O0lBTy9ELDRCQUE4RDtJQUFDLGtCQUFDO0lBQUEsaUJBQU87OztJQVE1Riw0QkFJZTs7Ozs7SUFGYixBQURBLHlEQUF1Qyw0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QUE7b0JBQ3hDLE1BQU07Z0JBQ1IsS0FBSyxXQUFXO29CQUNkLEtBQUssR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO29CQUN2RCxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFBO29CQUN0RCxJQUFHLEtBQUs7d0JBQUUsS0FBSyxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFBO29CQUN4QyxNQUFNO2dCQUNSLEtBQUssT0FBTztvQkFDVixLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQkFDakMsSUFBRyxLQUFLO3dCQUFFLEtBQUssR0FBRyxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsQ0FBQTtvQkFDbEMsTUFBTTtnQkFDUixLQUFLLFFBQVE7b0JBQ1gsS0FBSyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQkFDekQsSUFBRyxLQUFLO3dCQUFFLEtBQUssR0FBRyxFQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUMsQ0FBQTtvQkFDbkMsTUFBTTtnQkFDUjtvQkFDRSxNQUFNO2FBQ1Q7WUFDRCxJQUFJLEtBQUs7Z0JBQUUsTUFBTSxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQTtRQUM3QyxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTnNEeW5hbWljRm9ybSB9IGZyb20gXCIuL2R5bmFtaWMtZm9ybS5uYW1lc3BhY2VcIjtcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy1keW5hbWljLWZvcm1cIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9keW5hbWljLWZvcm0uY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIGZvcm1GaWVsZHM6ICBEeW5hbWljIGZpZWxkcyByZWNpZXZlZCBmcm9tIHRoZSBBUEkgbWV0YWRhdGEgdG8gYnVpbGQgYSBkeW5hbWljIGZvcm1cbiAgICogZm9ybVZhbHVlczogIEhvbGRzIHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmb3JtIHdpdGggXCJrZXlcIiBiZWluZyBkeW5hbWljIGZpZWxkIFwidGl0bGVcIlxuICAgKiAgICAgICAgICAgICAgYW5kIHZhbHVlIGJlaW5nIHRoZSB1c2VyIGlucHV0LlxuICAgKi9cbiAgQElucHV0KCkgZm9ybUZpZWxkczogQXJyYXk8TnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkPiA9IFtdO1xuICBASW5wdXQoKSBmb3JtVmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gIC8vIE5lZWQgdG8gZGVwcmVjYXRlIHRoZXNlIGlucHV0cyBhbmQgdXNlIGNvbnN0YW50cy5cbiAgQElucHV0KCkgYWN0aXZlQnRuSWNvblVybCA9IFwiXCI7XG4gIEBJbnB1dCgpIGNhbGVuZGFySWNvblVybCA9IFwiXCI7XG4gIEBJbnB1dCgpIHJlbW92ZUljb25VcmwgPSBcIlwiO1xuICBASW5wdXQoKSByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcyA9IGZhbHNlO1xuICAvKipcbiAgICogZHluYW1pY0Zvcm06IENvbnN0cnVjdGVkIHVzaW5nIGZvcm1GaWVsZHMgYW5kIGZvcm1WYWx1ZXMoaW4gY2FzZSBvZiBlZGl0KVxuICAgKi9cbiAgZHluYW1pY0Zvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgLyoqXG4gICAqIGZvcm1VcGRhdGVkOiBFbWl0cyBmb3JtVmFsdWVzIE9iamVjdCB3aGVuZXZlciB0aGVyZSBpcyBhIGNoYW5nZSBpbiB0aGUgZHluYW1pYyBmb3JtLlxuICAgKi9cbiAgQE91dHB1dCgpIGZvcm1VcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7IFtrZXk6IHN0cmluZ106IGFueSB9PigpO1xuICAvKipcbiAgICogZm9ybVZhbGlkOiBFbWl0cyBib29sZWFuIGRlcGVuZGluZyBvbiB2YWxpZGl0eSBvZiB0aGUgZm9ybVxuICAgKi9cbiAgQE91dHB1dCgpIGZvcm1WYWxpZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgLyoqXG4gICAqIGZvcm1Jbml0aWFsaXplZDogRW1pdHMgZHluYW1pYyBmb3JtIEFQSSBvbiBmb3JtIGluaXRpbGl6YXRpb25cbiAgICovXG4gIEBPdXRwdXQoKSBmb3JtSW5pdGlhbGl6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGZpZWxkUmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkPigpO1xuXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21JbnB1dFRleHROdW1iZXJcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbUlucHV0VGV4dE51bWJlcjogVGVtcGxhdGVSZWY8RWxlbWVudD47XG4gIFxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tSW5wdXRUZXh0YXJlYVwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tSW5wdXRUZXh0YXJlYTogVGVtcGxhdGVSZWY8RWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbUlucHV0RGF0ZVwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tSW5wdXREYXRlOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tQm9vbGVhblRvZ2dsZVwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tQm9vbGVhblRvZ2dsZTogVGVtcGxhdGVSZWY8RWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbVNpbmdsZVNlbGVjdERyb3Bkb3duXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21TaW5nbGVTZWxlY3REcm9wZG93bjogVGVtcGxhdGVSZWY8RWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbVNpbmdsZVNlbGVjdFJhZGlvXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21TaW5nbGVTZWxlY3RSYWRpbzogVGVtcGxhdGVSZWY8RWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbU11bHRpU2VsZWN0Q2hlY2tib3hcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbU11bHRpU2VsZWN0Q2hlY2tib3g6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21NdWx0aVNlbGVjdERyb3Bkb3duXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21NdWx0aVNlbGVjdERyb3Bkb3duOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBkeW5hbWljRm9ybUFQSTogTnNEeW5hbWljRm9ybS5JRHluYW1pY0Zvcm1BUEk7XG4gIHZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gQnVpbGRpbmcgdGhlIGZvcm1cbiAgICB0aGlzLmR5bmFtaWNGb3JtID0gdGhpcy5nZW5lcmF0ZUR5bmFtaWNGb3JtKHRoaXMuZm9ybUZpZWxkcywgdGhpcy5mb3JtVmFsdWVzKTtcblxuICAgIC8vIFN1YnNjcmliaW5nIHRvIGZvcm0gY2hhbmdlcyBhbmQgZW1pdGluZyB2YWx1ZXMuXG4gICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24kID0gdGhpcy5keW5hbWljRm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGZvcm1WYWx1ZSA9PiB7XG4gICAgICB0aGlzLm9uRm9ybVZhbHVlQ2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgLy9hcGkgdG8gZXhwb3NlIGZ1bmN0aW9uc1xuICAgIHRoaXMuZHluYW1pY0Zvcm1BUEkgPSB7XG4gICAgICBkZWZhdWx0Rm9ybVZhbHVlczogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUR5bmFtaWNGaWVsZHNWYWx1ZU9iamVjdCh0aGlzLmR5bmFtaWNGb3JtLnZhbHVlLmR5bmFtaWNGaWVsZHMpO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5mb3JtSW5pdGlhbGl6ZWQuZW1pdCh0aGlzLmR5bmFtaWNGb3JtQVBJKTtcbiAgICB0aGlzLmZvcm1WYWxpZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm0udmFsaWQpO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uJD8udW5zdWJzY3JpYmUoKTtcbiAgfVxuICBvbkZvcm1WYWx1ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgbGV0IGZvcm1WYWx1ZXMgPSB0aGlzLmdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KHRoaXMuZHluYW1pY0Zvcm0udmFsdWUuZHluYW1pY0ZpZWxkcyk7XG4gICAgdGhpcy5mb3JtVmFsaWQuZW1pdCh0aGlzLmR5bmFtaWNGb3JtLnZhbGlkKTtcbiAgICB0aGlzLmZvcm1VcGRhdGVkLmVtaXQoZm9ybVZhbHVlcyk7XG4gICAgY29uc29sZS5sb2coZm9ybVZhbHVlcylcbiAgfVxuICBnZW5lcmF0ZUR5bmFtaWNGaWVsZHNWYWx1ZU9iamVjdChmb3JtVmFsdWVzOiBBcnJheTxhbnk+KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgbGV0IGR5bmFtaWNGaWVsZHNWYWx1ZSA9IHt9O1xuICAgIGZvcm1WYWx1ZXMuZm9yRWFjaCgoZmllbGRWYWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgIGlmKHR5cGVvZiBmaWVsZFZhbHVlPy52YWx1ZSA9PT0gJ3N0cmluZycpIGZpZWxkVmFsdWUudmFsdWUgPSBmaWVsZFZhbHVlPy52YWx1ZT8udHJpbSgpXG4gICAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLm1hcEZvcm1GaWVsZFRvRm9ybVZhbHVlKHRoaXMuZm9ybUZpZWxkc1tpbmRleF0sIGZpZWxkVmFsdWUudmFsdWUpO1xuICAgICAgaWYgKGZpZWxkVmFsdWUuc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBmb3JtYXR0ZWRTdWJGaWVsZHNWYWx1ZXMgPSB7fVxuICAgICAgICBsZXQgc3ViRmllbGQgPSB0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLnN1YkZpZWxkc1xuICAgICAgICBpZih0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcgfHwgdGhpcy5mb3JtRmllbGRzW2luZGV4XS5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcpIHtcbiAgICAgICAgICBzdWJGaWVsZCA9IHN1YkZpZWxkLmZpbHRlcigoc3ViRmllbGQpID0+IHN1YkZpZWxkLnBhcmVudENvbmZpZ1ZhbHVlID09PSBmaWVsZFZhbHVlLnZhbHVlLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBmaWVsZFZhbHVlLnN1YkZpZWxkcy5mb3JFYWNoKChzdWJGaWVsZFZhbHVlLCBzdWJJbmRleCkgPT4ge1xuICAgICAgICAgIGxldCBzdWJGb3JtRmllbGQgPSBzdWJGaWVsZFtzdWJJbmRleF1cbiAgICAgICAgICBpZih0eXBlb2Ygc3ViRmllbGRWYWx1ZT8udmFsdWUgPT09ICdzdHJpbmcnKSBzdWJGaWVsZFZhbHVlLnZhbHVlID0gc3ViRmllbGRWYWx1ZT8udmFsdWU/LnRyaW0oKVxuICAgICAgICAgIGZvcm1hdHRlZFN1YkZpZWxkc1ZhbHVlc1tzdWJGb3JtRmllbGQuY29uZmlnTmFtZV0gPSB0aGlzLm1hcEZvcm1GaWVsZFRvRm9ybVZhbHVlKHN1YkZvcm1GaWVsZCwgc3ViRmllbGRWYWx1ZSlcbiAgICAgICAgfSlcbiAgICAgICAgZHluYW1pY0ZpZWxkc1ZhbHVlW3RoaXMuZm9ybUZpZWxkc1tpbmRleF0uY29uZmlnTmFtZV0gPSB7XG4gICAgICAgICAgdmFsdWU6IGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICAgIHN1YkZpZWxkczogZm9ybWF0dGVkU3ViRmllbGRzVmFsdWVzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBkeW5hbWljRmllbGRzVmFsdWVbdGhpcy5mb3JtRmllbGRzW2luZGV4XS5jb25maWdOYW1lXSA9IGZvcm1hdHRlZFZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkeW5hbWljRmllbGRzVmFsdWU7XG4gIH1cbiAgZ2VuZXJhdGVEeW5hbWljRm9ybShcbiAgICBmb3JtRmllbGRzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+LFxuICAgIGZvcm1WYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH1cbiAgKTogVW50eXBlZEZvcm1Hcm91cCB7XG4gICAgbGV0IGZvcm1BcnJheSA9IG5ldyBVbnR5cGVkRm9ybUFycmF5KFtdKVxuXG4gICAgZm9yIChsZXQgZmllbGQgb2YgZm9ybUZpZWxkcykge1xuICAgICAgbGV0IGZpZWxkVmFsdWUgPSBmb3JtVmFsdWVzW2ZpZWxkLmNvbmZpZ05hbWVdPy52YWx1ZSA/IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV0udmFsdWUgOiBmb3JtVmFsdWVzW2ZpZWxkLmNvbmZpZ05hbWVdXG4gICAgICBsZXQgZmllbGRDb250cm9sID0gdGhpcy5tYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChmaWVsZCwgZmllbGRWYWx1ZSk7XG4gICAgICBsZXQgc3ViRmllbGRzQ29udHJvbHMgPSB0aGlzLmdlbmVyYXRlU3ViRHluYW1pY0ZpZWxkcyhmb3JtVmFsdWVzLCBmaWVsZCwgZmllbGRDb250cm9sLnZhbHVlKTtcbiAgICAgIGZvcm1BcnJheS5wdXNoKG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICAgICAgdmFsdWU6IGZpZWxkQ29udHJvbCxcbiAgICAgICAgc3ViRmllbGRzOiBzdWJGaWVsZHNDb250cm9sc1xuICAgICAgfSkpXG4gICAgfSAgXG4gICAgcmV0dXJuIG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICAgIGR5bmFtaWNGaWVsZHM6IGZvcm1BcnJheVxuICAgIH0pXG4gIH1cbiAgXG4gIGdldER5bmFtaWNGaWVsZHNDb250cm9scygpOiBVbnR5cGVkRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5keW5hbWljRm9ybS5nZXQoXCJkeW5hbWljRmllbGRzXCIpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gIH1cbiAgdXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhcbiAgICBmaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcbiAgICB2YWx1ZTogYW55XG4gICk6IHZvaWQge1xuICAgIGlmIChmaWVsZC5zdWJGaWVsZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBzdWJGaWVsZHNDb250cm9scyA9IHRoaXMuZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKHRoaXMuZm9ybVZhbHVlcywgZmllbGQsIHZhbHVlKTtcbiAgICAgIGZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdzdWJGaWVsZHMnKVxuICAgICAgZm9ybUdyb3VwLmFkZENvbnRyb2woJ3N1YkZpZWxkcycsIHN1YkZpZWxkc0NvbnRyb2xzKVxuICAgIH1cbiAgfVxuICB1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KFxuICAgIGZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsXG4gICAgY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLFxuICAgIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcbiAgICB2YWx1ZTogYW55XG4gICk6IHZvaWQge1xuICAgIGlmIChjb250cm9sLnZhbHVlPy52YWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMudXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybUdyb3VwLCB2YWx1ZSk7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbiAgdXBkYXRlU2VsZWN0ZWRWYWx1ZUZvck11bHRpU2VsZWN0KFxuICAgIGZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsXG4gICAgY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLFxuICAgIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcbiAgICB2YWx1ZXM6IEFycmF5PGFueT5cbiAgKTogdm9pZCB7XG4gICAgbGV0IHNlbGVjdGVkVmFsdWVzOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBhbnkgfT4gPSBjb250cm9sLnZhbHVlO1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgbGV0IGl0ZW1JbmRleCA9IHNlbGVjdGVkVmFsdWVzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0ubGFiZWwgPT09IHZhbHVlLmxhYmVsKTtcbiAgICAgIGlmIChpdGVtSW5kZXggPiAtMSkge1xuICAgICAgICBzZWxlY3RlZFZhbHVlcy5zcGxpY2UoaXRlbUluZGV4LCAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGVjdGVkVmFsdWVzLnB1c2goeyAuLi52YWx1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlcyk7XG4gICAgdGhpcy51cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtR3JvdXAsIHZhbHVlcyk7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbiAgaXNDaGVja0JveFNlbGVjdGVkKHZhbHVlOiBzdHJpbmcsIHNlbGVjdGVkVmFsdWVzOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRWYWx1ZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5sYWJlbCA9PT0gdmFsdWUpID4gLTE7XG4gIH1cblxuICBmaW5kU2VsZWN0ZWRTdWJGaWVsZENvbmZpZyhzdWJmaWVsZHMsIHZhbHVlLCBzdWJGaWVsZEluZGV4KSB7XG4gICAgdHJ5e1xuICAgICAgY29uc3Qgc2VsZWN0ZWRTdWJGaWVsZENvbmZpZyA9IHN1YmZpZWxkcy5maWx0ZXIoaXRlbSA9PiBpdGVtLnBhcmVudENvbmZpZ1ZhbHVlID09PSB2YWx1ZSlbc3ViRmllbGRJbmRleF07XG4gICAgICByZXR1cm4gc2VsZWN0ZWRTdWJGaWVsZENvbmZpZztcbiAgICB9XG4gICAgY2F0Y2goZSl7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N1YmZpZWxkIGluZGV4IG5vdCBmb3VuZCcpO1xuICAgIH1cbiAgfVxuXG4gIG1hdGNoUGFyZW50Q29uZmlnKHN1YmZpZWxkcywgdmFsdWUpIHtcbiAgICBpZiAoIXN1YmZpZWxkcyB8fCBzdWJmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBzdWJmaWVsZHMuc29tZShpdGVtID0+IGl0ZW0ucGFyZW50Q29uZmlnVmFsdWUgPT09IHZhbHVlKTtcbiAgfVxuXG4gIGdlbmVyYXRlU3ViRHluYW1pY0ZpZWxkcyhcbiAgICBmb3JtVmFsdWVzOiBhbnksXG4gICAgcGFyZW50RmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBwYXJlbnRWYWx1ZTogQXJyYXk8eyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0+IHwge2xhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfSB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW5cbiAgKTogVW50eXBlZEZvcm1BcnJheSB7XG4gICAgbGV0IGNvbnRyb2xzID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pXG4gICAgbGV0IHN1YkZpZWxkcyA9IHBhcmVudEZpZWxkLnN1YkZpZWxkc1xuICAgIGxldCBzdWJGaWVsZHNWYWx1ZXMgPSBmb3JtVmFsdWVzW3BhcmVudEZpZWxkLmNvbmZpZ05hbWVdPy5zdWJGaWVsZHMgPyBmb3JtVmFsdWVzW3BhcmVudEZpZWxkLmNvbmZpZ05hbWVdLnN1YkZpZWxkcyA6IHt9XG4gICAgaWYoIXN1YkZpZWxkcykgcmV0dXJuIGNvbnRyb2xzO1xuICAgIGlmIChwYXJlbnRGaWVsZC5maWVsZFR5cGUgPT09ICdzaW5nbGVTZWxlY3QnKSB7XG4gICAgICBzdWJGaWVsZHMgPSBzdWJGaWVsZHMuZmlsdGVyKChzdWJGaWVsZCkgPT4gc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUgPT09ICg8e2xhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfT5wYXJlbnRWYWx1ZSk/LnZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAocGFyZW50RmllbGQuZmllbGRUeXBlID09PSAnbXVsdGlTZWxlY3QnKSB7XG4gICAgICBsZXQgcGFyZW50VmFsdWVzID0gbmV3IFNldCgoPEFycmF5PHsgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bWJlciB9Pj5wYXJlbnRWYWx1ZSkubWFwKCh2YWx1ZSkgPT4gdmFsdWUudmFsdWUpKTtcbiAgICAgIHN1YkZpZWxkcyA9IHN1YkZpZWxkcy5maWx0ZXIoKHN1YkZpZWxkKSA9PiBwYXJlbnRWYWx1ZXMuaGFzKHN1YkZpZWxkLnBhcmVudENvbmZpZ1ZhbHVlKSk7XG4gICAgfVxuXG4gICAgaWYgKHN1YkZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3IgKGxldCBzdWJGaWVsZCBvZiBzdWJGaWVsZHMpIHtcbiAgICAgICAgICBjb250cm9scy5wdXNoKHRoaXMubWFwRm9ybVZhbHVlVG9Gb3JtRmllbGQoc3ViRmllbGQsIHN1YkZpZWxkc1ZhbHVlc1tzdWJGaWVsZC5jb25maWdOYW1lXSkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICByZXR1cm4gY29udHJvbHM7XG4gIH1cbiAgbWFwRm9ybVZhbHVlVG9Gb3JtRmllbGQoZm9ybUZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsIGZvcm1WYWx1ZTogYW55KTogYW55IHtcbiAgICBsZXQgdmFsaWRhdG9ycyA9IGZvcm1GaWVsZC52YWxpZGF0b3JzID8gW2R5bmFtaWNGaWVsZFZhbGlkYXRvcihmb3JtRmllbGQudmFsaWRhdG9ycyldOiBbXVxuICAgIGxldCBjb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImlucHV0XCIpIHtcbiAgICAgIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwidGV4dFwiIHx8IGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0YXJlYVwiKSBjb250cm9sLnNldFZhbHVlKGZvcm1WYWx1ZSA/IGZvcm1WYWx1ZSA6IFwiXCIpO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcIm51bWJlclwiKSBjb250cm9sLnNldFZhbHVlKGZvcm1WYWx1ZSA/IGZvcm1WYWx1ZSA6IDApO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcImRhdGVcIikge1xuICAgICAgICBpZiAoZm9ybVZhbHVlICYmIHR5cGVvZiBmb3JtVmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG1vbWVudChmb3JtVmFsdWUpLnR6KGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkuZm9ybWF0KGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG1vbWVudCgpLnR6KGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkuZm9ybWF0KGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJzaW5nbGVTZWxlY3RcIikge1xuICAgICAgY29uc3QgZmluZFNlbGVjdGVkVmFsdWUgPSAoKSA9PiB7XG4gICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gZm9ybVZhbHVlKVxuICAgICAgICByZXR1cm4gaW5kZXggPj0gMCA/IGZvcm1GaWVsZC5pdGVtc0xpc3RbaW5kZXhdOiBcIlwiO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkcm9wZG93blwiKSB7XG4gICAgICAgIGlmICghZm9ybVZhbHVlKSBjb250cm9sLnNldFZhbHVlKGZvcm1GaWVsZC5pdGVtc0xpc3RbMF0pO1xuICAgICAgICBlbHNlIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJyYWRpb1wiKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgaWYgKGZvcm1WYWx1ZSAmJiBBcnJheS5pc0FycmF5KGZvcm1WYWx1ZSkpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkVmFsdWVzID0gW107XG4gICAgICAgIGZvciAobGV0IHZhbHVlIG9mIGZvcm1WYWx1ZSkge1xuICAgICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSBzZWxlY3RlZFZhbHVlcy5wdXNoKHsgLi4uZm9ybUZpZWxkLml0ZW1zTGlzdFtpbmRleF0gfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICBjb250cm9sLnNldFZhbHVlKCEhZm9ybVZhbHVlKTtcbiAgICB9IGVsc2UgY29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICByZXR1cm4gY29udHJvbDtcbiAgfVxuICBtYXBGb3JtRmllbGRUb0Zvcm1WYWx1ZShmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImlucHV0XCIpIHtcbiAgICAgIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwidGV4dFwiIHx8IGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0YXJlYVwiKSByZXR1cm4gZm9ybVZhbHVlO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcIm51bWJlclwiKSByZXR1cm4gK2Zvcm1WYWx1ZTtcbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkYXRlXCIpIHtcbiAgICAgICAgcmV0dXJuIG1vbWVudC50eihmb3JtVmFsdWUsIGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQsIGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkudmFsdWVPZigpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJzaW5nbGVTZWxlY3RcIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZT8udmFsdWUgPz8gJyc7XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcIm11bHRpU2VsZWN0XCIpIHtcbiAgICAgIHJldHVybiBmb3JtVmFsdWU/Lm1hcChpdGVtID0+IGl0ZW0udmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiBmb3JtVmFsdWU7XG4gICAgfSBlbHNlIHJldHVybiBmb3JtVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGR5bmFtaWNGaWVsZFZhbGlkYXRvciA9ICh2YWxpZGF0b3JzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGRWYWxpZGF0b3I+KTogVmFsaWRhdG9yRm4gPT4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBsZXQgdmFsdWUgPSBjb250cm9sLnZhbHVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgdmFsdWUgPSB2YWx1ZT8udmFsdWUgPyB2YWx1ZS52YWx1ZSA6ICcnXG4gICAgfVxuICAgIGxldCBlcnJvcnMgPSBudWxsXG5cbiAgICB2YWxpZGF0b3JzLmZvckVhY2goKHZhbGlkYXRvcikgPT4ge1xuICAgICAgbGV0IGVycm9yID0gbnVsbFxuICAgICAgbGV0IG1lc3NhZ2UgPSB2YWxpZGF0b3IubWVzc2FnZVxuICAgICAgc3dpdGNoICh2YWxpZGF0b3IudHlwZSkge1xuICAgICAgICBjYXNlIFwiUmVxdWlyZWRcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMucmVxdWlyZWQoY29udHJvbCk7XG4gICAgICAgICAgaWYgKCFlcnJvciAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICAgIGVycm9yID0geyBSZXF1aXJlZDogbWVzc2FnZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7UmVxdWlyZWQ6IG1lc3NhZ2V9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJNaW5MZW5ndGhcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMubWluTGVuZ3RoKCt2YWxpZGF0b3IudmFsdWUpKGNvbnRyb2wpXG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgnJHswfScsIGVycm9yPy5taW5sZW5ndGgucmVxdWlyZWRMZW5ndGgpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0geyBNaW5MZW5ndGg6IG1lc3NhZ2UgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiTWF4TGVuZ3RoXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLm1heExlbmd0aCgrdmFsaWRhdG9yLnZhbHVlKShjb250cm9sKVxuICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoJyR7MH0nLCBlcnJvcj8uYWN0dWFsTGVuZ3RoKVxuICAgICAgICAgIGlmKGVycm9yKSBlcnJvciA9IHsgTWF4TGVuZ3RoOiBtZXNzYWdlIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkVtYWlsXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLmVtYWlsKGNvbnRyb2wpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0ge0VtYWlsOiBtZXNzYWdlfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQ3VzdG9tXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLnBhdHRlcm4oYCR7dmFsaWRhdG9yLnZhbHVlfWApKGNvbnRyb2wpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0ge0N1c3RvbTogbWVzc2FnZX1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChlcnJvcikgZXJyb3JzID0geyAuLi5lcnJvcnMsIC4uLmVycm9yIH1cbiAgICB9KVxuICAgIHJldHVybiBlcnJvcnNcbiAgfVxufSIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZHluYW1pY0Zvcm1cIj5cbiAgPG5nLWNvbnRhaW5lciBmb3JtQXJyYXlOYW1lPVwiZHluYW1pY0ZpZWxkc1wiPlxuICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiICpuZ0Zvcj1cImxldCBmaWVsZENvbnRyb2wgb2YgZ2V0RHluYW1pY0ZpZWxkc0NvbnRyb2xzKCkuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICRpbXBsaWNpdDogZm9ybUZpZWxkc1tpXSxcbiAgICAgICAgICBmb3JtR3JvdXA6IGZpZWxkQ29udHJvbCxcbiAgICAgICAgICBjb250cm9sOiBmaWVsZENvbnRyb2wuY29udHJvbHMudmFsdWVcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdWItZHluYW1pYy1mb3JtXCIgKm5nSWY9XCJmaWVsZENvbnRyb2wudmFsdWUgJiYgKCEhZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzICYmIGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcz8ubGVuZ3RoID4gMCAmJiBtYXRjaFBhcmVudENvbmZpZyhmb3JtRmllbGRzW2ldPy5zdWJGaWVsZHMsIGZpZWxkQ29udHJvbC5jb250cm9scy52YWx1ZS52YWx1ZS52YWx1ZSkpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YkZpZWxkQ29udHJvbCBvZiBmaWVsZENvbnRyb2wuY29udHJvbHMuc3ViRmllbGRzLmNvbnRyb2xzOyBsZXQgaiA9IGluZGV4XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDogZmluZFNlbGVjdGVkU3ViRmllbGRDb25maWcoZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzLCBmaWVsZENvbnRyb2wuY29udHJvbHMudmFsdWUudmFsdWUudmFsdWUsaiksXG4gICAgICAgICAgICAgIGNvbnRyb2w6IHN1YkZpZWxkQ29udHJvbFxuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZm9ybT5cblxuXG48bmctdGVtcGxhdGUgI2R5bmFtaWNGaWVsZCBsZXQtZmllbGQgbGV0LWNvbnRyb2w9XCJjb250cm9sXCIgbGV0LWZvcm1ncm91cD1cImZvcm1Hcm91cFwiPlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnaW5wdXQnIGZpZWxkSW5wdXRUeXBlOiAndGV4dCcgfCAnbnVtYmVyJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiAoZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICd0ZXh0JyB8fCBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ251bWJlcicpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUlucHV0VGV4dE51bWJlcjsgZWxzZSBkZWZhdWx0SW5wdXRUZXh0TnVtYmVyXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tSW5wdXRUZXh0TnVtYmVyXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdElucHV0VGV4dE51bWJlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIG11bHRpLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg3IGZpZWxkLXRpdGxlLXNtXCI+XG4gICAgICAgICAge3sgZmllbGQ/LnRpdGxlIH19IDxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJVwiPjwvZGl2PlxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dC1maWVsZCBpcC10ZXh0XCIgW3R5cGVdPVwiZmllbGQuZmllbGRJbnB1dFR5cGVcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCIgXG4gICAgICAgICAgW25nU3R5bGVdPVwieydib3JkZXInOiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnMgPyAnMXB4IHNvbGlkICNCMDAwMjAnOiAnJ31cIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclRleHQgPyBmaWVsZC5wbGFjZWhvbGRlclRleHQgOiAnSW5wdXQgVGV4dCdcIiBcbiAgICAgICAgICBbbWluXT1cImZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnbnVtYmVyJyA/IDAgOiAnJyBcIi8+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiIFxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiXG4gICAgICAgID5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgXG4gIDwhLS0gZmllbGRUeXBlOiAnaW5wdXQnIGZpZWxkSW5wdXRUeXBlOiAndGV4dGFyZWEnIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnaW5wdXQnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAndGV4dGFyZWEnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUlucHV0VGV4dGFyZWE7IGVsc2UgZGVmYXVsdElucHV0VGV4dGFyZWFcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tSW5wdXRUZXh0YXJlYVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdElucHV0VGV4dGFyZWE+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBtdWx0aS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJVwiPjwvZGl2PlxuICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJpbnB1dC1maWVsZCBpcC10ZXh0YXJlYVwiIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcic6IGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycyA/ICcxcHggc29saWQgI0IwMDAyMCc6ICcnfVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyVGV4dCA/IGZpZWxkLnBsYWNlaG9sZGVyVGV4dCA6ICdJbnB1dCBUZXh0J1wiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIFxuICA8IS0tIGZpZWxkVHlwZTogJ2lucHV0JyBmaWVsZElucHV0VHlwZTogJ2RhdGUnIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnaW5wdXQnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnZGF0ZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tSW5wdXREYXRlOyBlbHNlIGRlZmF1bHRJbnB1dERhdGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21JbnB1dERhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SW5wdXREYXRlPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIlxuICAgICAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2RhdGUnXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDZcIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fSA8c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImRhdGUtcGlja2VyXCIgcmVhZG9ubHkgbWlzVHpEcCBbZHBDb25maWddPVwiZmllbGQuZmllbGRDb25maWdcIlxuICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwiY29udHJvbC5zZXRWYWx1ZSgkZXZlbnQpXCIgW3NlbGVjdGVkRGF0ZV09XCJjb250cm9sLnZhbHVlXCIgW29mZnNldFldPVwiMFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiY29udHJvbC52YWx1ZVwiICNkcCAvPlxuICAgICAgICAgIDxpbWcgYWx0PVwiZGF0YS1waWNrZXJcIiAqbmdJZj1cImNhbGVuZGFySWNvblVybFwiIGNsYXNzPVwiZGF0ZS1waWNrZXItaWNvblwiIFtzcmNdPVwiY2FsZW5kYXJJY29uVXJsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkcC5jbGljaygpXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnYm9vbGVhbicgZmllbGRJbnB1dFR5cGU6ICd0b2dnbGUnIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnYm9vbGVhbicgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICd0b2dnbGUnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUJvb2xlYW5Ub2dnbGU7IGVsc2UgZGVmYXVsdEJvb2xlYW5Ub2dnbGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21Cb29sZWFuVG9nZ2xlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEJvb2xlYW5Ub2dnbGU+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPG1pcy1zd2l0Y2ggW2NvbnRyb2xdPVwiY29udHJvbFwiICh2YWx1ZUNoYW5nZWQpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCI+PC9taXMtc3dpdGNoPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj4gICAgXG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdzaW5nbGVTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAnZHJvcGRvd24nIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21TaW5nbGVTZWxlY3REcm9wZG93bjsgZWxzZSBkZWZhdWx0U2luZ2xlU2VsZWN0RHJvcGRvd25cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21TaW5nbGVTZWxlY3REcm9wZG93blwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTaW5nbGVTZWxlY3REcm9wZG93bj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydyZW1vdmVhYmxlLWNvbnRhaW5lcicgOiBmaWVsZD8uaXNSZW1vdmVhYmxlfVwiPlxuICAgICAgICAgIDxtaXMtZHJvcGRvd24gW3NlYXJjaEVuYWJsZWRdPVwiZmFsc2VcIiBbd2lkdGhdPVwiJzE0MHB4J1wiIFtkYXRhXT1cImZpZWxkLml0ZW1zTGlzdFwiIFtzZWxlY3RlZEl0ZW1dPVwiY29udHJvbC52YWx1ZVwiXG4gICAgICAgICAgKG9uQ2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JTaW5nbGVTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgJGV2ZW50KTtcIj5cbiAgICAgICAgICA8L21pcy1kcm9wZG93bj5cbiAgICAgICAgICA8aW1nICpuZ0lmPVwiZmllbGQuaXNSZW1vdmVhYmxlICYmIHJlbW92ZUljb25VcmxcIiBjbGFzcz1cInJlbW92ZS1pY29uXCIgW3NyY109XCJyZW1vdmVJY29uVXJsXCIgKGNsaWNrKT1cImZpZWxkUmVtb3ZlZC5lbWl0KGZpZWxkKVwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXIgPlxuICBcblxuICA8IS0tIGZpZWxkVHlwZTogJ3NpbmdsZVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdyYWRpbycgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdzaW5nbGVTZWxlY3QnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAncmFkaW8nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVNpbmdsZVNlbGVjdFJhZGlvOyBlbHNlIGRlZmF1bHRTaW5nbGVTZWxlY3RSYWRpb1wiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbVNpbmdsZVNlbGVjdFJhZGlvXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNpbmdsZVNlbGVjdFJhZGlvPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg3IGZpZWxkLXRpdGxlLXNtXCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cImNoZWNrYm94ZXMtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWNoZWNrYm94LWNvbW1vblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLml0ZW1zTGlzdFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdjaGVja2JveC1hY3RpdmUnOiBpdGVtLmxhYmVsID09PSBjb250cm9sLnZhbHVlPy5sYWJlbCB9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsIGl0ZW0pO1wiPlxuICAgICAgICAgICAgPGltZyAqbmdJZj1cIihpdGVtLmxhYmVsID09PSBjb250cm9sLnZhbHVlPy5sYWJlbCkgJiYgYWN0aXZlQnRuSWNvblVybFwiIFtzcmNdPVwiYWN0aXZlQnRuSWNvblVybFwiIGFsdD1cIlwiIC8+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImg2XCI+e3sgaXRlbS5sYWJlbCB9fTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICBcblxuICA8IS0tIGZpZWxkVHlwZTogJ211bHRpU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2NoZWNrYm94JyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ211bHRpU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2NoZWNrYm94J1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21NdWx0aVNlbGVjdENoZWNrYm94OyBlbHNlIGRlZmF1bHRNdWx0aVNlbGVjdENoZWNrYm94XCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tTXVsdGlTZWxlY3RDaGVja2JveFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRNdWx0aVNlbGVjdENoZWNrYm94PlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg3IGZpZWxkLXRpdGxlLXNtXCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cImNoZWNrYm94ZXMtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWNoZWNrYm94LWNvbW1vblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLml0ZW1zTGlzdFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdjaGVja2JveC1hY3RpdmUnOiBpc0NoZWNrQm94U2VsZWN0ZWQoaXRlbS5sYWJlbCwgY29udHJvbC52YWx1ZSkgfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvck11bHRpU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsIFtpdGVtXSlcIj5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpc0NoZWNrQm94U2VsZWN0ZWQoaXRlbS5sYWJlbCwgY29udHJvbC52YWx1ZSkgJiYgYWN0aXZlQnRuSWNvblVybFwiIFtzcmNdPVwiYWN0aXZlQnRuSWNvblVybFwiXG4gICAgICAgICAgICAgIGFsdD1cIlwiIC8+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImg2XCI+e3sgaXRlbS5sYWJlbCB9fTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdtdWx0aVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdkcm9wZG93bicgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkcm9wZG93bidcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tTXVsdGlTZWxlY3REcm9wZG93bjsgZWxzZSBkZWZhdWx0TXVsdGlTZWxlY3REcm9wZG93blwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbU11bHRpU2VsZWN0RHJvcGRvd25cIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TXVsdGlTZWxlY3REcm9wZG93bj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDZcIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8bWlzLW11bHRpLXNlbGVjdC1kcm9wZG93biBbd2lkdGhdPVwiJzE0MHB4J1wiIFtzaG93U2VsZWN0ZWRDb3VudF09XCJ0cnVlXCIgW2Ryb3Bkb3duTGlzdFdpZHRoXT1cIicyNTZweCdcIlxuICAgICAgICAgIFtzZWFyY2hFbmFibGVkXT1cImZhbHNlXCIgW2hpZGVBcHBseUJ1dHRvbl09XCJ0cnVlXCIgW2RhdGFdPVwiZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgICAgICBbc2VsZWN0ZWRJdGVtc109XCJjb250cm9sLnZhbHVlXCIgKG9uQ2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JNdWx0aVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCAkZXZlbnQpO1wiPjwvbWlzLW11bHRpLXNlbGVjdC1kcm9wZG93bj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZHluYW1pY0ZpZWxkRXJyb3JzIGxldC1lcnJvcnM+XG4gIDxkaXYgaWQ9XCJlcnJvci1tZXNzYWdlcy1jb250YWluZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnMgfCBrZXl2YWx1ZVwiPlxuICAgICAgPHAgY2xhc3M9XCJoOFwiPlxuICAgICAgICB7e1wiIOKAoiAmbmJzcDtcIiArIGVycm9yLnZhbHVlfX1cbiAgICAgIDwvcD5cbiAgICAgIDxkaXYgW25nU3R5bGVdPVwieyAnZmxleC1iYXNpcyc6ICcxMDAlJywgJ2hlaWdodCc6ICcwJyB9XCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=