@acorex/components 6.1.1 → 6.1.3

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 (331) hide show
  1. package/alert/public-api.d.ts +1 -0
  2. package/alert/src/alert-button.directive.d.ts +8 -0
  3. package/alert/src/alert.component.d.ts +18 -10
  4. package/alert/src/alert.module.d.ts +4 -3
  5. package/badge/src/badge.component.d.ts +2 -1
  6. package/breadcrumbs/src/breadcrumbs-item.component.d.ts +6 -7
  7. package/button/src/button-group.component.d.ts +6 -4
  8. package/button/src/button-item.component.d.ts +6 -4
  9. package/calendar/src/calendar.component.d.ts +4 -4
  10. package/calendar/src/calendar.module.d.ts +2 -4
  11. package/color-picker/src/color-picker.component.d.ts +16 -12
  12. package/data-table/src/data-table.component.d.ts +3 -3
  13. package/date-picker/src/datepicker.component.d.ts +14 -11
  14. package/decorators/public-api.d.ts +1 -0
  15. package/decorators/src/decorators.module.d.ts +7 -6
  16. package/decorators/src/sub-title.component.d.ts +9 -0
  17. package/esm2020/action-sheet/src/action-sheet-item.component.mjs +3 -3
  18. package/esm2020/action-sheet/src/action-sheet.component.mjs +3 -3
  19. package/esm2020/action-sheet/src/action-sheet.module.mjs +4 -4
  20. package/esm2020/alert/public-api.mjs +2 -1
  21. package/esm2020/alert/src/alert-button.directive.mjs +19 -0
  22. package/esm2020/alert/src/alert.component.mjs +80 -51
  23. package/esm2020/alert/src/alert.module.mjs +7 -6
  24. package/esm2020/avatar/src/avatar-group.component.mjs +3 -3
  25. package/esm2020/avatar/src/avatar.component.mjs +3 -3
  26. package/esm2020/avatar/src/avatar.module.mjs +4 -4
  27. package/esm2020/badge/src/badge.component.mjs +3 -3
  28. package/esm2020/badge/src/badge.module.mjs +4 -4
  29. package/esm2020/breadcrumbs/src/breadcrumbs-item.component.mjs +3 -3
  30. package/esm2020/breadcrumbs/src/breadcrumbs.component.mjs +3 -3
  31. package/esm2020/breadcrumbs/src/breadcrumbs.module.mjs +4 -4
  32. package/esm2020/button/src/button-group.component.mjs +3 -3
  33. package/esm2020/button/src/button-item.component.mjs +3 -3
  34. package/esm2020/button/src/button.component.mjs +3 -3
  35. package/esm2020/button/src/button.module.mjs +4 -4
  36. package/esm2020/calendar/src/calendar.class.mjs +3 -3
  37. package/esm2020/calendar/src/calendar.component.mjs +9 -12
  38. package/esm2020/calendar/src/calendar.module.mjs +6 -8
  39. package/esm2020/checkbox/src/checkbox.component.mjs +3 -3
  40. package/esm2020/checkbox/src/checkbox.module.mjs +4 -4
  41. package/esm2020/collapse/src/collapse-group.component.mjs +3 -3
  42. package/esm2020/collapse/src/collapse.component.mjs +3 -3
  43. package/esm2020/collapse/src/collapse.module.mjs +4 -4
  44. package/esm2020/color-palette/src/color-palette-input.component.mjs +3 -3
  45. package/esm2020/color-palette/src/color-palette-picker.component.mjs +3 -3
  46. package/esm2020/color-palette/src/color-palette-preview.component.mjs +3 -3
  47. package/esm2020/color-palette/src/color-palette-swatches.component.mjs +3 -3
  48. package/esm2020/color-palette/src/color-palette.class.mjs +6 -6
  49. package/esm2020/color-palette/src/color-palette.component.mjs +3 -3
  50. package/esm2020/color-palette/src/color-palette.module.mjs +4 -4
  51. package/esm2020/color-picker/src/color-picker.component.mjs +3 -3
  52. package/esm2020/color-picker/src/color-picker.module.mjs +4 -4
  53. package/esm2020/common/src/auto-focus.directive.mjs +3 -3
  54. package/esm2020/common/src/common.module.mjs +4 -4
  55. package/esm2020/common/src/components.class.mjs +18 -18
  56. package/esm2020/common/src/custom-cdk-overlay.service.mjs +7 -7
  57. package/esm2020/common/src/debounce-time.directive.mjs +3 -3
  58. package/esm2020/common/src/hotkey.directive.mjs +3 -3
  59. package/esm2020/common/src/hotkey.service.mjs +4 -4
  60. package/esm2020/common/src/infinite-scroll.directive.mjs +3 -3
  61. package/esm2020/common/src/overlay.service.mjs +3 -3
  62. package/esm2020/common/src/responsive.directive.mjs +3 -3
  63. package/esm2020/context-menu/src/context-menu.component.mjs +3 -3
  64. package/esm2020/context-menu/src/context-menu.module.mjs +4 -4
  65. package/esm2020/data-pager/src/data-pager-base.component.mjs +6 -6
  66. package/esm2020/data-pager/src/data-pager-info.component.mjs +3 -3
  67. package/esm2020/data-pager/src/data-pager-input-selector.component.mjs +3 -3
  68. package/esm2020/data-pager/src/data-pager-next-buttons.components.mjs +14 -13
  69. package/esm2020/data-pager/src/data-pager-numeric-selector.component.mjs +10 -10
  70. package/esm2020/data-pager/src/data-pager-pagesize-dropdown.component.mjs +3 -3
  71. package/esm2020/data-pager/src/data-pager-prev-buttons.component.mjs +14 -13
  72. package/esm2020/data-pager/src/data-pager.component.mjs +7 -6
  73. package/esm2020/data-pager/src/data-pager.module.mjs +4 -4
  74. package/esm2020/data-table/src/data-column-cell-template.directive.mjs +3 -3
  75. package/esm2020/data-table/src/data-column.directive.mjs +3 -3
  76. package/esm2020/data-table/src/data-table.component.mjs +5 -4
  77. package/esm2020/data-table/src/data-table.module.mjs +4 -4
  78. package/esm2020/date-picker/src/datepicker.component.mjs +3 -3
  79. package/esm2020/date-picker/src/datepicker.module.mjs +4 -4
  80. package/esm2020/decorators/public-api.mjs +2 -1
  81. package/esm2020/decorators/src/close-button.component.mjs +3 -3
  82. package/esm2020/decorators/src/content.component.mjs +3 -3
  83. package/esm2020/decorators/src/decorators.module.mjs +10 -6
  84. package/esm2020/decorators/src/footer.component.mjs +3 -3
  85. package/esm2020/decorators/src/header.component.mjs +3 -3
  86. package/esm2020/decorators/src/icon.component.mjs +3 -3
  87. package/esm2020/decorators/src/overlay.component.mjs +3 -3
  88. package/esm2020/decorators/src/placeholder.component.mjs +3 -3
  89. package/esm2020/decorators/src/prefix.component.mjs +3 -3
  90. package/esm2020/decorators/src/sub-title.component.mjs +27 -0
  91. package/esm2020/decorators/src/suffix.component.mjs +3 -3
  92. package/esm2020/decorators/src/text.component.mjs +3 -3
  93. package/esm2020/decorators/src/title.component.mjs +3 -3
  94. package/esm2020/dialog/src/dialog.component.mjs +3 -3
  95. package/esm2020/dialog/src/dialog.module.mjs +4 -4
  96. package/esm2020/dialog/src/dialog.service.mjs +3 -3
  97. package/esm2020/drawer/src/drawer-container.component.mjs +3 -3
  98. package/esm2020/drawer/src/drawer.component.mjs +3 -3
  99. package/esm2020/drawer/src/drawer.module.mjs +4 -4
  100. package/esm2020/dropdown/src/dropdown-panel.component.mjs +3 -3
  101. package/esm2020/dropdown/src/dropdown.module.mjs +4 -4
  102. package/esm2020/form/src/form-field.component.mjs +3 -3
  103. package/esm2020/form/src/form-hint.component.mjs +3 -3
  104. package/esm2020/form/src/form.component.mjs +3 -3
  105. package/esm2020/form/src/form.module.mjs +4 -4
  106. package/esm2020/form/src/validation-rule.widget.mjs +14 -8
  107. package/esm2020/form/src/validation-summary.component.mjs +25 -17
  108. package/esm2020/image/src/image.component.mjs +3 -3
  109. package/esm2020/image/src/image.module.mjs +4 -4
  110. package/esm2020/label/src/label.component.mjs +3 -3
  111. package/esm2020/label/src/label.module.mjs +4 -4
  112. package/esm2020/loading/src/loading-spinner.component.mjs +3 -3
  113. package/esm2020/loading/src/loading.component.mjs +3 -3
  114. package/esm2020/loading/src/loading.directive.mjs +3 -3
  115. package/esm2020/loading/src/loading.module.mjs +4 -4
  116. package/esm2020/loading/src/loading.service.mjs +3 -3
  117. package/esm2020/menu/src/menu.component.mjs +3 -3
  118. package/esm2020/menu/src/menu.module.mjs +4 -4
  119. package/esm2020/mixin/src/base-components.class.mjs +9 -4
  120. package/esm2020/number-box/src/number-box.component.mjs +3 -3
  121. package/esm2020/number-box/src/number-box.module.mjs +4 -4
  122. package/esm2020/page/src/base-page.class.mjs +3 -3
  123. package/esm2020/page/src/page.component.mjs +3 -3
  124. package/esm2020/page/src/page.module.mjs +4 -4
  125. package/esm2020/password-box/src/password-box.component.mjs +3 -3
  126. package/esm2020/password-box/src/password-box.module.mjs +4 -4
  127. package/esm2020/popover/src/popover.component.mjs +3 -3
  128. package/esm2020/popover/src/popover.module.mjs +4 -4
  129. package/esm2020/popup/src/popup.component.mjs +3 -3
  130. package/esm2020/popup/src/popup.module.mjs +4 -4
  131. package/esm2020/popup/src/popup.service.mjs +3 -3
  132. package/esm2020/progress-bar/src/progress-bar.component.mjs +3 -3
  133. package/esm2020/progress-bar/src/progress-bar.module.mjs +4 -4
  134. package/esm2020/radio/src/radio.component.mjs +3 -3
  135. package/esm2020/radio/src/radio.module.mjs +4 -4
  136. package/esm2020/range-slider/src/range-slider.component.mjs +3 -3
  137. package/esm2020/range-slider/src/range-slider.module.mjs +4 -4
  138. package/esm2020/rating/src/rating.component.mjs +3 -3
  139. package/esm2020/rating/src/rating.component.module.mjs +4 -4
  140. package/esm2020/result/src/result.component.mjs +3 -3
  141. package/esm2020/result/src/result.module.mjs +4 -4
  142. package/esm2020/search-box/src/search-box.component.mjs +3 -3
  143. package/esm2020/search-box/src/search-box.module.mjs +4 -4
  144. package/esm2020/select-box/src/selectbox.component.mjs +3 -3
  145. package/esm2020/select-box/src/selectbox.module.mjs +4 -4
  146. package/esm2020/selection-list/src/selection-list.component.mjs +21 -10
  147. package/esm2020/selection-list/src/selection-list.module.mjs +4 -4
  148. package/esm2020/switch/src/switch.component.mjs +3 -3
  149. package/esm2020/switch/src/switch.module.mjs +4 -4
  150. package/esm2020/tabs/src/tab-content.directive.mjs +3 -3
  151. package/esm2020/tabs/src/tab-item.component.mjs +3 -3
  152. package/esm2020/tabs/src/tabs.component.mjs +3 -3
  153. package/esm2020/tabs/src/tabs.module.mjs +4 -4
  154. package/esm2020/textarea/src/textarea.component.mjs +5 -5
  155. package/esm2020/textarea/src/textarea.module.mjs +4 -4
  156. package/esm2020/textbox/src/mask-options.directive.mjs +3 -3
  157. package/esm2020/textbox/src/textbox.component.mjs +3 -3
  158. package/esm2020/textbox/src/textbox.module.mjs +4 -4
  159. package/esm2020/time-box/src/time-box.component.mjs +3 -3
  160. package/esm2020/time-box/src/time-box.module.mjs +4 -4
  161. package/esm2020/toast/src/toast.component.mjs +5 -5
  162. package/esm2020/toast/src/toast.module.mjs +4 -4
  163. package/esm2020/toast/src/toast.service.mjs +3 -3
  164. package/esm2020/tooltip/src/tooltip.component.mjs +3 -3
  165. package/esm2020/tooltip/src/tooltip.directive.mjs +3 -3
  166. package/esm2020/tooltip/src/tooltip.module.mjs +4 -4
  167. package/esm2020/tree-view/src/tree-view.component.mjs +3 -3
  168. package/esm2020/tree-view/src/tree-view.module.mjs +4 -4
  169. package/esm2020/uploader/src/uploader.component.mjs +3 -3
  170. package/esm2020/uploader/src/uploader.module.mjs +4 -4
  171. package/fesm2015/acorex-components-action-sheet.mjs +10 -10
  172. package/fesm2015/acorex-components-alert.mjs +106 -58
  173. package/fesm2015/acorex-components-alert.mjs.map +1 -1
  174. package/fesm2015/acorex-components-avatar.mjs +10 -10
  175. package/fesm2015/acorex-components-badge.mjs +7 -7
  176. package/fesm2015/acorex-components-breadcrumbs.mjs +10 -10
  177. package/fesm2015/acorex-components-button.mjs +13 -13
  178. package/fesm2015/acorex-components-calendar.mjs +16 -21
  179. package/fesm2015/acorex-components-calendar.mjs.map +1 -1
  180. package/fesm2015/acorex-components-checkbox.mjs +7 -7
  181. package/fesm2015/acorex-components-collapse.mjs +10 -10
  182. package/fesm2015/acorex-components-color-palette.mjs +25 -25
  183. package/fesm2015/acorex-components-color-picker.mjs +7 -7
  184. package/fesm2015/acorex-components-common.mjs +49 -49
  185. package/fesm2015/acorex-components-common.mjs.map +1 -1
  186. package/fesm2015/acorex-components-context-menu.mjs +7 -7
  187. package/fesm2015/acorex-components-data-pager.mjs +55 -54
  188. package/fesm2015/acorex-components-data-pager.mjs.map +1 -1
  189. package/fesm2015/acorex-components-data-table.mjs +14 -13
  190. package/fesm2015/acorex-components-data-table.mjs.map +1 -1
  191. package/fesm2015/acorex-components-date-picker.mjs +7 -7
  192. package/fesm2015/acorex-components-decorators.mjs +65 -39
  193. package/fesm2015/acorex-components-decorators.mjs.map +1 -1
  194. package/fesm2015/acorex-components-dialog.mjs +10 -10
  195. package/fesm2015/acorex-components-drawer.mjs +10 -10
  196. package/fesm2015/acorex-components-dropdown.mjs +7 -7
  197. package/fesm2015/acorex-components-form.mjs +50 -36
  198. package/fesm2015/acorex-components-form.mjs.map +1 -1
  199. package/fesm2015/acorex-components-image.mjs +7 -7
  200. package/fesm2015/acorex-components-label.mjs +7 -7
  201. package/fesm2015/acorex-components-loading.mjs +16 -16
  202. package/fesm2015/acorex-components-menu.mjs +7 -7
  203. package/fesm2015/acorex-components-mixin.mjs +8 -3
  204. package/fesm2015/acorex-components-mixin.mjs.map +1 -1
  205. package/fesm2015/acorex-components-number-box.mjs +7 -7
  206. package/fesm2015/acorex-components-page.mjs +10 -10
  207. package/fesm2015/acorex-components-password-box.mjs +7 -7
  208. package/fesm2015/acorex-components-popover.mjs +7 -7
  209. package/fesm2015/acorex-components-popup.mjs +10 -10
  210. package/fesm2015/acorex-components-progress-bar.mjs +7 -7
  211. package/fesm2015/acorex-components-radio.mjs +7 -7
  212. package/fesm2015/acorex-components-range-slider.mjs +7 -7
  213. package/fesm2015/acorex-components-rating.mjs +7 -7
  214. package/fesm2015/acorex-components-result.mjs +7 -7
  215. package/fesm2015/acorex-components-search-box.mjs +7 -7
  216. package/fesm2015/acorex-components-select-box.mjs +7 -7
  217. package/fesm2015/acorex-components-selection-list.mjs +24 -13
  218. package/fesm2015/acorex-components-selection-list.mjs.map +1 -1
  219. package/fesm2015/acorex-components-switch.mjs +7 -7
  220. package/fesm2015/acorex-components-tabs.mjs +13 -13
  221. package/fesm2015/acorex-components-textarea.mjs +8 -8
  222. package/fesm2015/acorex-components-textarea.mjs.map +1 -1
  223. package/fesm2015/acorex-components-textbox.mjs +10 -10
  224. package/fesm2015/acorex-components-time-box.mjs +7 -7
  225. package/fesm2015/acorex-components-toast.mjs +11 -11
  226. package/fesm2015/acorex-components-toast.mjs.map +1 -1
  227. package/fesm2015/acorex-components-tooltip.mjs +10 -10
  228. package/fesm2015/acorex-components-tree-view.mjs +7 -7
  229. package/fesm2015/acorex-components-uploader.mjs +7 -7
  230. package/fesm2020/acorex-components-action-sheet.mjs +10 -10
  231. package/fesm2020/acorex-components-alert.mjs +104 -58
  232. package/fesm2020/acorex-components-alert.mjs.map +1 -1
  233. package/fesm2020/acorex-components-avatar.mjs +10 -10
  234. package/fesm2020/acorex-components-badge.mjs +7 -7
  235. package/fesm2020/acorex-components-breadcrumbs.mjs +10 -10
  236. package/fesm2020/acorex-components-button.mjs +13 -13
  237. package/fesm2020/acorex-components-calendar.mjs +16 -21
  238. package/fesm2020/acorex-components-calendar.mjs.map +1 -1
  239. package/fesm2020/acorex-components-checkbox.mjs +7 -7
  240. package/fesm2020/acorex-components-collapse.mjs +10 -10
  241. package/fesm2020/acorex-components-color-palette.mjs +25 -25
  242. package/fesm2020/acorex-components-color-picker.mjs +7 -7
  243. package/fesm2020/acorex-components-common.mjs +49 -49
  244. package/fesm2020/acorex-components-common.mjs.map +1 -1
  245. package/fesm2020/acorex-components-context-menu.mjs +7 -7
  246. package/fesm2020/acorex-components-data-pager.mjs +55 -54
  247. package/fesm2020/acorex-components-data-pager.mjs.map +1 -1
  248. package/fesm2020/acorex-components-data-table.mjs +14 -13
  249. package/fesm2020/acorex-components-data-table.mjs.map +1 -1
  250. package/fesm2020/acorex-components-date-picker.mjs +7 -7
  251. package/fesm2020/acorex-components-decorators.mjs +65 -39
  252. package/fesm2020/acorex-components-decorators.mjs.map +1 -1
  253. package/fesm2020/acorex-components-dialog.mjs +10 -10
  254. package/fesm2020/acorex-components-drawer.mjs +10 -10
  255. package/fesm2020/acorex-components-dropdown.mjs +7 -7
  256. package/fesm2020/acorex-components-form.mjs +50 -36
  257. package/fesm2020/acorex-components-form.mjs.map +1 -1
  258. package/fesm2020/acorex-components-image.mjs +7 -7
  259. package/fesm2020/acorex-components-label.mjs +7 -7
  260. package/fesm2020/acorex-components-loading.mjs +16 -16
  261. package/fesm2020/acorex-components-menu.mjs +7 -7
  262. package/fesm2020/acorex-components-mixin.mjs +8 -3
  263. package/fesm2020/acorex-components-mixin.mjs.map +1 -1
  264. package/fesm2020/acorex-components-number-box.mjs +7 -7
  265. package/fesm2020/acorex-components-page.mjs +10 -10
  266. package/fesm2020/acorex-components-password-box.mjs +7 -7
  267. package/fesm2020/acorex-components-popover.mjs +7 -7
  268. package/fesm2020/acorex-components-popup.mjs +10 -10
  269. package/fesm2020/acorex-components-progress-bar.mjs +7 -7
  270. package/fesm2020/acorex-components-radio.mjs +7 -7
  271. package/fesm2020/acorex-components-range-slider.mjs +7 -7
  272. package/fesm2020/acorex-components-rating.mjs +7 -7
  273. package/fesm2020/acorex-components-result.mjs +7 -7
  274. package/fesm2020/acorex-components-search-box.mjs +7 -7
  275. package/fesm2020/acorex-components-select-box.mjs +7 -7
  276. package/fesm2020/acorex-components-selection-list.mjs +24 -13
  277. package/fesm2020/acorex-components-selection-list.mjs.map +1 -1
  278. package/fesm2020/acorex-components-switch.mjs +7 -7
  279. package/fesm2020/acorex-components-tabs.mjs +13 -13
  280. package/fesm2020/acorex-components-textarea.mjs +8 -8
  281. package/fesm2020/acorex-components-textarea.mjs.map +1 -1
  282. package/fesm2020/acorex-components-textbox.mjs +10 -10
  283. package/fesm2020/acorex-components-time-box.mjs +7 -7
  284. package/fesm2020/acorex-components-toast.mjs +11 -11
  285. package/fesm2020/acorex-components-toast.mjs.map +1 -1
  286. package/fesm2020/acorex-components-tooltip.mjs +10 -10
  287. package/fesm2020/acorex-components-tree-view.mjs +7 -7
  288. package/fesm2020/acorex-components-uploader.mjs +7 -7
  289. package/form/src/validation-rule.widget.d.ts +1 -0
  290. package/form/src/validation-summary.component.d.ts +4 -2
  291. package/mixin/src/base-components.class.d.ts +3 -1
  292. package/mixin/src/base-menu-mixin.class.d.ts +5 -4
  293. package/mixin/src/button-mixin.class.d.ts +2 -1
  294. package/mixin/src/clickable-mixin.class.d.ts +3 -4
  295. package/mixin/src/color-look-mixing.class.d.ts +2 -1
  296. package/mixin/src/datalist-component.class.d.ts +10 -9
  297. package/mixin/src/dropdown-mixin.class.d.ts +2 -1
  298. package/mixin/src/interactive-mixin.class.d.ts +5 -6
  299. package/mixin/src/loading-mixin.class.d.ts +2 -1
  300. package/mixin/src/mixin.class.d.ts +61 -40
  301. package/mixin/src/page-component.class.d.ts +2 -1
  302. package/mixin/src/selection-component.class.d.ts +3 -4
  303. package/mixin/src/sizable-mixin.class.d.ts +2 -1
  304. package/mixin/src/textbox-mixin.class.d.ts +2 -1
  305. package/mixin/src/value-mixin.class.d.ts +8 -7
  306. package/package.json +5 -25
  307. package/selection-list/src/selection-list.component.d.ts +5 -4
  308. package/tabs/src/tab-item.component.d.ts +2 -1
  309. package/textarea/src/textarea.component.d.ts +1 -1
  310. package/carousel/index.d.ts +0 -5
  311. package/carousel/public-api.d.ts +0 -7
  312. package/carousel/src/carousel-arrows.component.d.ts +0 -16
  313. package/carousel/src/carousel-item.component.d.ts +0 -8
  314. package/carousel/src/carousel-pager.component.d.ts +0 -22
  315. package/carousel/src/carousel-splidejs.class.d.ts +0 -18
  316. package/carousel/src/carousel.class.d.ts +0 -71
  317. package/carousel/src/carousel.component.d.ts +0 -111
  318. package/carousel/src/carousel.module.d.ts +0 -11
  319. package/esm2020/carousel/acorex-components-carousel.mjs +0 -5
  320. package/esm2020/carousel/public-api.mjs +0 -8
  321. package/esm2020/carousel/src/carousel-arrows.component.mjs +0 -80
  322. package/esm2020/carousel/src/carousel-item.component.mjs +0 -21
  323. package/esm2020/carousel/src/carousel-pager.component.mjs +0 -74
  324. package/esm2020/carousel/src/carousel-splidejs.class.mjs +0 -91
  325. package/esm2020/carousel/src/carousel.class.mjs +0 -10
  326. package/esm2020/carousel/src/carousel.component.mjs +0 -438
  327. package/esm2020/carousel/src/carousel.module.mjs +0 -24
  328. package/fesm2015/acorex-components-carousel.mjs +0 -726
  329. package/fesm2015/acorex-components-carousel.mjs.map +0 -1
  330. package/fesm2020/acorex-components-carousel.mjs +0 -722
  331. package/fesm2020/acorex-components-carousel.mjs.map +0 -1
@@ -3,19 +3,17 @@ import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, Inp
3
3
  import { AXDateTime, AXDateTimeRange } from '@acorex/core/dateTime';
4
4
  import { AXCalendarBaseComponent } from './calendar.class';
5
5
  import { _ClickableComponenetMixin, _InteractiveComponenetMixin, _ValueComponenetMixin, } from '@acorex/components/mixin';
6
- import { AXPlatform } from '@acorex/core/platform';
7
6
  import { AXConfig } from '@acorex/core/config';
7
+ import { AXTranslator } from '@acorex/core/translation';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/common";
10
- import * as i2 from "@acorex/components/button";
11
- import * as i3 from "@acorex/components/decorators";
12
10
  export const AXCalendarComponentMixin = _ClickableComponenetMixin(_InteractiveComponenetMixin(_ValueComponenetMixin(AXCalendarBaseComponent)));
13
11
  export class AXCalendarComponent extends AXCalendarComponentMixin {
14
12
  constructor(elementRef, cdr) {
15
13
  super(elementRef, cdr);
16
14
  this.cdr = cdr;
17
15
  this.interface = 'calendar';
18
- this.rtl = new AXPlatform().isRtl();
16
+ this.todayText = AXTranslator.get('dateTime.today');
19
17
  this._today = new AXDateTime(new Date(), this.type);
20
18
  this._navText = '';
21
19
  this._todayText = '';
@@ -161,12 +159,12 @@ export class AXCalendarComponent extends AXCalendarComponentMixin {
161
159
  this._todayText = this._today.format();
162
160
  }
163
161
  }
164
- _handlePrevClick(e) {
162
+ _handlePrevClick() {
165
163
  this._isUserInteraction = true;
166
164
  this.prev();
167
165
  this._isUserInteraction = false;
168
166
  }
169
- _handleNextClick(e) {
167
+ _handleNextClick() {
170
168
  this._isUserInteraction = true;
171
169
  this.next();
172
170
  this._isUserInteraction = false;
@@ -275,7 +273,6 @@ export class AXCalendarComponent extends AXCalendarComponentMixin {
275
273
  get __hostClass() {
276
274
  const _classes = {
277
275
  'ax-state-disabled': this.disabled,
278
- 'ax-rtl': this.rtl,
279
276
  };
280
277
  return Object.entries(_classes)
281
278
  .filter((c) => c[1])
@@ -347,9 +344,9 @@ export class AXCalendarComponent extends AXCalendarComponentMixin {
347
344
  }
348
345
  }
349
346
  }
350
- AXCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCalendarComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
351
- AXCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: AXCalendarComponent, selector: "ax-calendar", inputs: { readonly: "readonly", allowNull: "allowNull", value: "value", name: "name", checked: "checked", disabled: "disabled", tabIndex: "tabIndex", depth: "depth", activeView: "activeView", min: "min", max: "max", disabledDates: "disabledDates", type: "type", holidayDates: "holidayDates", interface: "interface" }, outputs: { valueChange: "valueChange", onValueChanged: "onValueChanged", onBlur: "onBlur", onFocus: "onFocus", depthChange: "depthChange", typeChange: "typeChange", disabledDatesChange: "disabledDatesChange", holidayDatesChange: "holidayDatesChange", onNavigate: "onNavigate" }, host: { properties: { "class": "this.__hostClass" }, classAttribute: "ax-calendar" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"interface === 'calendar'; else pickerTemplate\">\r\n <div class=\"ax-calendar-header\">\r\n <div>\r\n <ng-container *ngIf=\"activeView=='days'; else elseTemplate\">\r\n <ax-button class=\"ax-nav-button\" [text]=\"_navText.split(' ')[1]\" color=\"light\" look=\"blank\"\r\n (onClick)=\"_handleNavClick($event)\" [disabled]=\"disabled\">\r\n </ax-button>\r\n <ax-button class=\"ax-nav-button\" [text]=\"_navText.split(' ')[0]\" color=\"light\" look=\"blank\"\r\n (onClick)=\"_handleNavClick($event)\" [disabled]=\"disabled\">\r\n </ax-button>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <ax-button class=\"ax-nav-button\" [text]=\"_navText\" color=\"light\" look=\"blank\"\r\n (onClick)=\"_handleNavClick($event)\" [disabled]=\"disabled\">\r\n </ax-button>\r\n </ng-template>\r\n </div>\r\n <div class=\"ax-calendar-header-buttons\">\r\n <ax-button class=\"ax-prev-button\" color=\"light\" look=\"blank\" (onClick)=\"_handlePrevClick($event)\"\r\n [disabled]=\"disabled\">\r\n <ax-prefix>\r\n <ax-icon icon=\"ax-ic ax-ic-chevron\"></ax-icon>\r\n </ax-prefix>\r\n </ax-button>\r\n <ax-button class=\"ax-next-button\" color=\"light\" look=\"blank\" (onClick)=\"_handleNextClick($event)\"\r\n [disabled]=\"disabled\">\r\n <ax-prefix>\r\n <ax-icon icon=\"ax-ic ax-ic-chevron \"></ax-icon>\r\n\r\n </ax-prefix>\r\n </ax-button>\r\n </div>\r\n\r\n </div>\r\n <div class=\"ax-calendar-body\">\r\n <div [ngSwitch]=\"activeView\">\r\n <ng-container *ngSwitchCase=\"'years'\">\r\n <div class=\"ax-calendar-slots ax-calendar-slots-year\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" [ngClass]=\"slot.cssClass\"\r\n (click)=\"_handleSlotClick($event,slot)\">{{slot.text}}</div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'months'\">\r\n <div class=\"ax-calendar-slots ax-calendar-slots-month\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" [title]=\"slot.tooltip\" [ngClass]=\"slot.cssClass\"\r\n (click)=\"_handleSlotClick($event,slot)\">{{slot.text}}</div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <div class=\"ax-calendar-week\">\r\n <div *ngFor=\"let d of _dayNames\">{{d}}</div>\r\n </div>\r\n <div class=\"ax-calendar-slots ax-calendar-slots-day\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" [title]=\"slot.tooltip\" [ngClass]=\"slot.cssClass\"\r\n (click)=\"_handleSlotClick($event,slot)\">{{slot.text}}</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n <div class=\"ax-calendar-footer\">\r\n <ax-button class=\"dark:ax-text-danger\" [text]=\"_todayText\" color=\"dark\" look=\"blank\" size=\"sm\"\r\n (onClick)=\"_handleGoToday()\" [disabled]=\"disabled || isDisabled(_today)\"></ax-button>\r\n </div>\r\n</ng-container>\r\n<ng-template #pickerTemplate>\r\n <div class=\"ax-calendar-picker\">\r\n //TODO: picker\r\n </div>\r\n</ng-template>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange"] }, { kind: "component", type: i3.AXDecoratorPrefixComponent, selector: "ax-prefix" }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
352
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCalendarComponent, decorators: [{
347
+ AXCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCalendarComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
348
+ AXCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: AXCalendarComponent, selector: "ax-calendar", inputs: { readonly: "readonly", allowNull: "allowNull", value: "value", name: "name", checked: "checked", disabled: "disabled", tabIndex: "tabIndex", depth: "depth", activeView: "activeView", min: "min", max: "max", disabledDates: "disabledDates", type: "type", holidayDates: "holidayDates", interface: "interface" }, outputs: { valueChange: "valueChange", onValueChanged: "onValueChanged", onBlur: "onBlur", onFocus: "onFocus", depthChange: "depthChange", typeChange: "typeChange", disabledDatesChange: "disabledDatesChange", holidayDatesChange: "holidayDatesChange", onNavigate: "onNavigate" }, host: { properties: { "class": "this.__hostClass" }, classAttribute: "ax-calendar" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"interface === 'calendar'; else pickerTemplate\">\r\n <div class=\"ax-calendar-header\">\r\n <div class=\"ax-flex ax-items-center\">\r\n <ng-container *ngIf=\"activeView=='days'; else elseTemplate\">\r\n <button [disabled]=\"disabled\" class=\"ax-button-control\"\r\n (click)=\"_handleNavClick($event)\">{{_navText.split(' ')[1]}}</button>\r\n <button [disabled]=\"disabled\" class=\"ax-button-control\"\r\n (click)=\"_handleNavClick($event)\">{{_navText.split(' ')[0]}}</button>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <button [disabled]=\"disabled\" class=\"ax-button-control\"\r\n (click)=\"_handleNavClick($event)\">{{_navText}}</button>\r\n </ng-template>\r\n </div>\r\n <div class=\"ax-calendar-header-buttons\">\r\n <button [disabled]=\"disabled\" class=\"ax-button-control\" (click)=\"_handlePrevClick()\">\r\n <i [ngClass]=\"{'ax-ic-chevron-left': !_isRtl(),'ax-ic-chevron-right': _isRtl()}\"></i>\r\n </button>\r\n <button [disabled]=\"disabled || isDisabled(_today)\" class=\"ax-button-control !ax-text-primary-500\" (click)=\"_handleGoToday()\">\r\n {{ todayText }}\r\n </button>\r\n <button [disabled]=\"disabled\" class=\"ax-button-control\" (click)=\"_handleNextClick()\">\r\n <i [ngClass]=\"{'ax-ic-chevron-left': _isRtl(),'ax-ic-chevron-right': !_isRtl()}\"></i>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n <div class=\"ax-calendar-body\">\r\n <div [ngSwitch]=\"activeView\">\r\n <ng-container *ngSwitchCase=\"'years'\">\r\n <div class=\"ax-calendar-slots ax-calendar-slots-year\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" [ngClass]=\"slot.cssClass\"\r\n (click)=\"_handleSlotClick($event,slot)\">{{slot.text}}</div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'months'\">\r\n <div class=\"ax-calendar-slots ax-calendar-slots-month\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" [title]=\"slot.tooltip\" [ngClass]=\"slot.cssClass\"\r\n (click)=\"_handleSlotClick($event,slot)\">{{slot.text}}</div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <div class=\"ax-calendar-week\">\r\n <div *ngFor=\"let d of _dayNames\">{{d}}</div>\r\n </div>\r\n <div class=\"ax-calendar-slots ax-calendar-slots-day\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" [title]=\"slot.tooltip\" [ngClass]=\"slot.cssClass\"\r\n (click)=\"_handleSlotClick($event,slot)\">{{slot.text}}</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n</ng-container>\r\n<ng-template #pickerTemplate>\r\n <div class=\"ax-calendar-picker\">\r\n //TODO: picker\r\n </div>\r\n</ng-template>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
349
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCalendarComponent, decorators: [{
353
350
  type: Component,
354
351
  args: [{ selector: 'ax-calendar', inputs: [
355
352
  'readonly',
@@ -376,11 +373,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
376
373
  'disabledDatesChange',
377
374
  'holidayDatesChange',
378
375
  'onNavigate',
379
- ], host: { class: 'ax-calendar' }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"interface === 'calendar'; else pickerTemplate\">\r\n <div class=\"ax-calendar-header\">\r\n <div>\r\n <ng-container *ngIf=\"activeView=='days'; else elseTemplate\">\r\n <ax-button class=\"ax-nav-button\" [text]=\"_navText.split(' ')[1]\" color=\"light\" look=\"blank\"\r\n (onClick)=\"_handleNavClick($event)\" [disabled]=\"disabled\">\r\n </ax-button>\r\n <ax-button class=\"ax-nav-button\" [text]=\"_navText.split(' ')[0]\" color=\"light\" look=\"blank\"\r\n (onClick)=\"_handleNavClick($event)\" [disabled]=\"disabled\">\r\n </ax-button>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <ax-button class=\"ax-nav-button\" [text]=\"_navText\" color=\"light\" look=\"blank\"\r\n (onClick)=\"_handleNavClick($event)\" [disabled]=\"disabled\">\r\n </ax-button>\r\n </ng-template>\r\n </div>\r\n <div class=\"ax-calendar-header-buttons\">\r\n <ax-button class=\"ax-prev-button\" color=\"light\" look=\"blank\" (onClick)=\"_handlePrevClick($event)\"\r\n [disabled]=\"disabled\">\r\n <ax-prefix>\r\n <ax-icon icon=\"ax-ic ax-ic-chevron\"></ax-icon>\r\n </ax-prefix>\r\n </ax-button>\r\n <ax-button class=\"ax-next-button\" color=\"light\" look=\"blank\" (onClick)=\"_handleNextClick($event)\"\r\n [disabled]=\"disabled\">\r\n <ax-prefix>\r\n <ax-icon icon=\"ax-ic ax-ic-chevron \"></ax-icon>\r\n\r\n </ax-prefix>\r\n </ax-button>\r\n </div>\r\n\r\n </div>\r\n <div class=\"ax-calendar-body\">\r\n <div [ngSwitch]=\"activeView\">\r\n <ng-container *ngSwitchCase=\"'years'\">\r\n <div class=\"ax-calendar-slots ax-calendar-slots-year\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" [ngClass]=\"slot.cssClass\"\r\n (click)=\"_handleSlotClick($event,slot)\">{{slot.text}}</div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'months'\">\r\n <div class=\"ax-calendar-slots ax-calendar-slots-month\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" [title]=\"slot.tooltip\" [ngClass]=\"slot.cssClass\"\r\n (click)=\"_handleSlotClick($event,slot)\">{{slot.text}}</div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <div class=\"ax-calendar-week\">\r\n <div *ngFor=\"let d of _dayNames\">{{d}}</div>\r\n </div>\r\n <div class=\"ax-calendar-slots ax-calendar-slots-day\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" [title]=\"slot.tooltip\" [ngClass]=\"slot.cssClass\"\r\n (click)=\"_handleSlotClick($event,slot)\">{{slot.text}}</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n <div class=\"ax-calendar-footer\">\r\n <ax-button class=\"dark:ax-text-danger\" [text]=\"_todayText\" color=\"dark\" look=\"blank\" size=\"sm\"\r\n (onClick)=\"_handleGoToday()\" [disabled]=\"disabled || isDisabled(_today)\"></ax-button>\r\n </div>\r\n</ng-container>\r\n<ng-template #pickerTemplate>\r\n <div class=\"ax-calendar-picker\">\r\n //TODO: picker\r\n </div>\r\n</ng-template>" }]
376
+ ], host: { class: 'ax-calendar' }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"interface === 'calendar'; else pickerTemplate\">\r\n <div class=\"ax-calendar-header\">\r\n <div class=\"ax-flex ax-items-center\">\r\n <ng-container *ngIf=\"activeView=='days'; else elseTemplate\">\r\n <button [disabled]=\"disabled\" class=\"ax-button-control\"\r\n (click)=\"_handleNavClick($event)\">{{_navText.split(' ')[1]}}</button>\r\n <button [disabled]=\"disabled\" class=\"ax-button-control\"\r\n (click)=\"_handleNavClick($event)\">{{_navText.split(' ')[0]}}</button>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <button [disabled]=\"disabled\" class=\"ax-button-control\"\r\n (click)=\"_handleNavClick($event)\">{{_navText}}</button>\r\n </ng-template>\r\n </div>\r\n <div class=\"ax-calendar-header-buttons\">\r\n <button [disabled]=\"disabled\" class=\"ax-button-control\" (click)=\"_handlePrevClick()\">\r\n <i [ngClass]=\"{'ax-ic-chevron-left': !_isRtl(),'ax-ic-chevron-right': _isRtl()}\"></i>\r\n </button>\r\n <button [disabled]=\"disabled || isDisabled(_today)\" class=\"ax-button-control !ax-text-primary-500\" (click)=\"_handleGoToday()\">\r\n {{ todayText }}\r\n </button>\r\n <button [disabled]=\"disabled\" class=\"ax-button-control\" (click)=\"_handleNextClick()\">\r\n <i [ngClass]=\"{'ax-ic-chevron-left': _isRtl(),'ax-ic-chevron-right': !_isRtl()}\"></i>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n <div class=\"ax-calendar-body\">\r\n <div [ngSwitch]=\"activeView\">\r\n <ng-container *ngSwitchCase=\"'years'\">\r\n <div class=\"ax-calendar-slots ax-calendar-slots-year\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" [ngClass]=\"slot.cssClass\"\r\n (click)=\"_handleSlotClick($event,slot)\">{{slot.text}}</div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'months'\">\r\n <div class=\"ax-calendar-slots ax-calendar-slots-month\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" [title]=\"slot.tooltip\" [ngClass]=\"slot.cssClass\"\r\n (click)=\"_handleSlotClick($event,slot)\">{{slot.text}}</div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <div class=\"ax-calendar-week\">\r\n <div *ngFor=\"let d of _dayNames\">{{d}}</div>\r\n </div>\r\n <div class=\"ax-calendar-slots ax-calendar-slots-day\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" [title]=\"slot.tooltip\" [ngClass]=\"slot.cssClass\"\r\n (click)=\"_handleSlotClick($event,slot)\">{{slot.text}}</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n</ng-container>\r\n<ng-template #pickerTemplate>\r\n <div class=\"ax-calendar-picker\">\r\n //TODO: picker\r\n </div>\r\n</ng-template>" }]
380
377
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { interface: [{
381
378
  type: Input
382
379
  }], __hostClass: [{
383
380
  type: HostBinding,
384
381
  args: ['class']
385
382
  }] } });
386
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUd2QixXQUFXLEVBQ1gsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHcEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0QsT0FBTyxFQUVMLHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDM0IscUJBQXFCLEdBQ3RCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFFL0MsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcseUJBQXlCLENBQy9ELDJCQUEyQixDQUN6QixxQkFBcUIsQ0FBTSx1QkFBdUIsQ0FBQyxDQUNwRCxDQUNGLENBQUM7QUFvQ0YsTUFBTSxPQUFPLG1CQUFvQixTQUFRLHdCQUF3QjtJQW9EL0QsWUFBWSxVQUFzQixFQUFVLEdBQXNCO1FBQ2hFLEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFEbUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFqRGxFLGNBQVMsR0FBMEIsVUFB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SSxDQUFDLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsTUFBTTtZQUNSO2dCQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoRCxNQUFNO1NBQ1Q7SUFDSCxDQUFDOztnSEFsWVUsbUJBQW1CO29HQUFuQixtQkFBbUIscXZCQy9EaEMsc2tIQXFFYzsyRkRORCxtQkFBbUI7a0JBbEMvQixTQUFTOytCQUNFLGFBQWEsVUFFZjt3QkFDTixVQUFVO3dCQUNWLFdBQVc7d0JBQ1gsT0FBTzt3QkFDUCxNQUFNO3dCQUNOLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLE9BQU87d0JBQ1AsWUFBWTt3QkFDWixLQUFLO3dCQUNMLEtBQUs7d0JBQ0wsZUFBZTt3QkFDZixNQUFNO3dCQUNOLGNBQWM7cUJBQ2YsV0FDUTt3QkFDUCxhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsUUFBUTt3QkFDUixTQUFTO3dCQUNULGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsWUFBWTtxQkFDYixRQUNLLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxpQkFDZixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNO2lJQUsvQyxTQUFTO3NCQURSLEtBQUs7Z0JBdVNNLFdBQVc7c0JBRHRCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmdlIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgRWxlbWVudFJlZixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhEYXRlVGltZSwgQVhEYXRlVGltZVJhbmdlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2RhdGVUaW1lJztcclxuaW1wb3J0IHsgQVhDbGlja0V2ZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XHJcblxyXG5pbXBvcnQgeyBBWENhbGVuZGFyQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIuY2xhc3MnO1xyXG5pbXBvcnQge1xyXG4gIEFYQ29tcG9uZW50T3B0aW9uQ2hhbmdlZCxcclxuICBfQ2xpY2thYmxlQ29tcG9uZW5ldE1peGluLFxyXG4gIF9JbnRlcmFjdGl2ZUNvbXBvbmVuZXRNaXhpbixcclxuICBfVmFsdWVDb21wb25lbmV0TWl4aW4sXHJcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL21peGluJztcclxuaW1wb3J0IHsgQVhQbGF0Zm9ybSB9IGZyb20gJ0BhY29yZXgvY29yZS9wbGF0Zm9ybSc7XHJcbmltcG9ydCB7IEFYQ29uZmlnIH0gZnJvbSAnQGFjb3JleC9jb3JlL2NvbmZpZyc7XHJcblxyXG5leHBvcnQgY29uc3QgQVhDYWxlbmRhckNvbXBvbmVudE1peGluID0gX0NsaWNrYWJsZUNvbXBvbmVuZXRNaXhpbihcclxuICBfSW50ZXJhY3RpdmVDb21wb25lbmV0TWl4aW4oXHJcbiAgICBfVmFsdWVDb21wb25lbmV0TWl4aW48YW55PihBWENhbGVuZGFyQmFzZUNvbXBvbmVudClcclxuICApXHJcbik7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LWNhbGVuZGFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGlucHV0czogW1xyXG4gICAgJ3JlYWRvbmx5JyxcclxuICAgICdhbGxvd051bGwnLFxyXG4gICAgJ3ZhbHVlJyxcclxuICAgICduYW1lJyxcclxuICAgICdjaGVja2VkJyxcclxuICAgICdkaXNhYmxlZCcsXHJcbiAgICAndGFiSW5kZXgnLFxyXG4gICAgJ2RlcHRoJyxcclxuICAgICdhY3RpdmVWaWV3JyxcclxuICAgICdtaW4nLFxyXG4gICAgJ21heCcsXHJcbiAgICAnZGlzYWJsZWREYXRlcycsXHJcbiAgICAndHlwZScsXHJcbiAgICAnaG9saWRheURhdGVzJyxcclxuICBdLFxyXG4gIG91dHB1dHM6IFtcclxuICAgICd2YWx1ZUNoYW5nZScsXHJcbiAgICAnb25WYWx1ZUNoYW5nZWQnLFxyXG4gICAgJ29uQmx1cicsXHJcbiAgICAnb25Gb2N1cycsXHJcbiAgICAnZGVwdGhDaGFuZ2UnLFxyXG4gICAgJ3R5cGVDaGFuZ2UnLFxyXG4gICAgJ2Rpc2FibGVkRGF0ZXNDaGFuZ2UnLFxyXG4gICAgJ2hvbGlkYXlEYXRlc0NoYW5nZScsXHJcbiAgICAnb25OYXZpZ2F0ZScsXHJcbiAgXSxcclxuICBob3N0OiB7IGNsYXNzOiAnYXgtY2FsZW5kYXInIH0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYQ2FsZW5kYXJDb21wb25lbnQgZXh0ZW5kcyBBWENhbGVuZGFyQ29tcG9uZW50TWl4aW4ge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGludGVyZmFjZTogJ2NhbGVuZGFyJyB8ICdwaWNrZXInID0gJ2NhbGVuZGFyJztcclxuXHJcbiAgcnRsOiBib29sZWFuID0gbmV3IEFYUGxhdGZvcm0oKS5pc1J0bCgpO1xyXG5cclxuICBwcml2YXRlIGdldCBfdmlld1JhbmdlKCk6IEFYRGF0ZVRpbWVSYW5nZSB7XHJcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fdmlld1N0YXJ0RGF0ZSB8fCB0aGlzLl90b2RheTtcclxuICAgIHN3aXRjaCAodGhpcy5hY3RpdmVWaWV3KSB7XHJcbiAgICAgIGNhc2UgJ3llYXJzJzpcclxuICAgICAgICBsZXQgeSA9IGN1cnJlbnQuc3RhcnRPZigneWVhcicpLnllYXI7XHJcbiAgICAgICAgbGV0IG1pbiA9IHkgLSAoeSAlIDEwKSAtIDE7XHJcbiAgICAgICAgbGV0IG1heCA9IG1pbiArIDExO1xyXG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZVJhbmdlKFxyXG4gICAgICAgICAgQVhEYXRlVGltZS5mcm9tKHtcclxuICAgICAgICAgICAgeWVhcjogbWluLFxyXG4gICAgICAgICAgICBtb250aDogMSxcclxuICAgICAgICAgICAgZGF0ZTogMSxcclxuICAgICAgICAgICAgY2FsZW5kYXI6IHRoaXMuX3ZpZXdTdGFydERhdGUuY2FsZW5kYXIubmFtZSgpLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBBWERhdGVUaW1lLmZyb20oe1xyXG4gICAgICAgICAgICB5ZWFyOiBtYXgsXHJcbiAgICAgICAgICAgIG1vbnRoOiAxMixcclxuICAgICAgICAgICAgZGF0ZTogMjgsXHJcbiAgICAgICAgICAgIGNhbGVuZGFyOiB0aGlzLl92aWV3U3RhcnREYXRlLmNhbGVuZGFyLm5hbWUoKSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgY2FzZSAnbW9udGhzJzpcclxuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWVSYW5nZShcclxuICAgICAgICAgIGN1cnJlbnQuc3RhcnRPZigneWVhcicpLFxyXG4gICAgICAgICAgY3VycmVudC5lbmRPZigneWVhcicpLmFkZCgnZGF5JywgLTEpXHJcbiAgICAgICAgKTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWVSYW5nZShcclxuICAgICAgICAgIGN1cnJlbnQuc3RhcnRPZignbW9udGgnKSxcclxuICAgICAgICAgIGN1cnJlbnQuZW5kT2YoJ21vbnRoJylcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF90b2RheSA9IG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKCksIHRoaXMudHlwZSk7XHJcbiAgcHJpdmF0ZSBfdmlld1N0YXJ0RGF0ZSE6IEFYRGF0ZVRpbWU7XHJcblxyXG4gIHByb3RlY3RlZCBfbmF2VGV4dDogc3RyaW5nID0gJyc7XHJcbiAgcHJvdGVjdGVkIF90b2RheVRleHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBwcm90ZWN0ZWQgX3Nsb3RzOiBhbnlbXSA9IFtdO1xyXG4gIHByb3RlY3RlZCBfZGF5TmFtZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIHByaXZhdGUgX2lzVXNlckludGVyYWN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRWYWx1ZXMoKSB7XHJcbiAgICB0aGlzLl90b2RheSA9IG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKCksIHRoaXMudHlwZSk7XHJcbiAgICB0aGlzLl9kYXlOYW1lcyA9IHRoaXMuX3RvZGF5LmNhbGVuZGFyLmRheVNob3J0TmFtZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZWZyZXNoKCkge1xyXG4gICAgdGhpcy5faW5pdFZhbHVlcygpO1xyXG4gICAgdGhpcy5uYXZUbyh0aGlzLnZhbHVlIHx8IHRoaXMuX3RvZGF5KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvbkluaXQoKSB7XHJcbiAgICB0aGlzLl9pbml0VmFsdWVzKCk7XHJcbiAgICBpZiAoIXRoaXMudmFsdWUpIHRoaXMuZ29Ub2RheSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2VuZWFydGVTbG90cygpIHtcclxuICAgIGlmICghdGhpcy5fdmlld1N0YXJ0RGF0ZSkgcmV0dXJuO1xyXG4gICAgY29uc3QgdnIgPSB0aGlzLl92aWV3UmFuZ2U7XHJcbiAgICAvLyBqdXN0IGZvciB0YWlsd2luZFxyXG4gICAgLy8nYXgtY29sLXN0YXJ0LTEnLCdheC1jb2wtc3RhcnQtMicsJ2F4LWNvbC1zdGFydC0zJywnYXgtY29sLXN0YXJ0LTQnLCdheC1jb2wtc3RhcnQtNScsJ2F4LWNvbC1zdGFydC02JywnYXgtY29sLXN0YXJ0LTcnXHJcbiAgICAvLyB5ZWFyIHZpZXdcclxuICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ3llYXJzJykge1xyXG4gICAgICBjb25zdCBhID0gdnIuZW51bXVyYXRlKCd5ZWFyJyk7XHJcbiAgICAgIHRoaXMuX3Nsb3RzID0gYS5tYXAoKGQsIGkpID0+IHtcclxuICAgICAgICBjb25zdCByOiBhbnkgPSB7fTtcclxuICAgICAgICByLmRhdGUgPSBkLmRhdGU7XHJcbiAgICAgICAgci50ZXh0ID0gZC5mb3JtYXQoJ1lZWVknKTtcclxuICAgICAgICByLmRpc2FibGVkID1cclxuICAgICAgICAgICh0aGlzLm1pbiAmJiBkLmNvbXBhcmUodGhpcy5taW4sICd5ZWFyJykgPT0gLTEpIHx8XHJcbiAgICAgICAgICAodGhpcy5tYXggJiYgZC5jb21wYXJlKHRoaXMubWF4LCAneWVhcicpID09IDEpO1xyXG4gICAgICAgIGlmIChyLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICByLmNzc0NsYXNzID0ge1xyXG4gICAgICAgICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiByLmRpc2FibGVkLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgci5jc3NDbGFzcyA9IHtcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLXRvZGF5JzogZC5lcXVhbCh0aGlzLl90b2RheSwgJ3llYXInKSxcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzpcclxuICAgICAgICAgICAgICB0aGlzLnZhbHVlICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5kZXB0aCA9PSAneWVhcnMnICYmXHJcbiAgICAgICAgICAgICAgZC5lcXVhbCh0aGlzLnZhbHVlLCAneWVhcicpLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gci5jc3NDbGFzc1tgYXgtY29sLXN0YXJ0LTJgXSA9IGkgPT0gMDtcclxuICAgICAgICByZXR1cm4gcjtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLl9uYXZUZXh0ID0gYCR7dnIuc3RhcnRUaW1lLnllYXJ9IC0gJHt2ci5lbmRUaW1lLnllYXJ9YDtcclxuICAgICAgdGhpcy5fdG9kYXlUZXh0ID0gdGhpcy5fdG9kYXkuZm9ybWF0KCdZWVlZJyk7XHJcbiAgICB9XHJcbiAgICAvLyBtb250aCB2aWV3XHJcbiAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRocycpIHtcclxuICAgICAgY29uc3QgYSA9IHZyLmVudW11cmF0ZSgnbW9udGgnKTtcclxuICAgICAgdGhpcy5fc2xvdHMgPSBhLm1hcCgoZCwgaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHI6IGFueSA9IHt9O1xyXG4gICAgICAgIHIuZGF0ZSA9IGQuZGF0ZTtcclxuICAgICAgICByLnRleHQgPSBkLmZvcm1hdCgnTU1NJyk7XHJcbiAgICAgICAgci50b29sdGlwID0gZC5mb3JtYXQoJ01NTU0gWVlZWScpO1xyXG4gICAgICAgIHIuZGlzYWJsZWQgPVxyXG4gICAgICAgICAgKHRoaXMubWluICYmIGQuY29tcGFyZSh0aGlzLm1pbiwgJ21vbnRoJykgPT0gLTEpIHx8XHJcbiAgICAgICAgICAodGhpcy5tYXggJiYgZC5jb21wYXJlKHRoaXMubWF4LCAnbW9udGgnKSA9PSAxKTtcclxuICAgICAgICBpZiAoci5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgci5jc3NDbGFzcyA9IHtcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogci5kaXNhYmxlZCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XHJcbiAgICAgICAgICAgICdheC1zdGF0ZS10b2RheSc6IGQuZXF1YWwodGhpcy5fdG9kYXksICdtb250aCcpLFxyXG4gICAgICAgICAgICAnYXgtc3RhdGUtc2VsZWN0ZWQnOlxyXG4gICAgICAgICAgICAgIHRoaXMudmFsdWUgJiZcclxuICAgICAgICAgICAgICB0aGlzLmRlcHRoID09ICdtb250aHMnICYmXHJcbiAgICAgICAgICAgICAgZC5lcXVhbCh0aGlzLnZhbHVlLCAnbW9udGgnKSxcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLW90aGVyJzogZC55ZWFyICE9IHRoaXMuX3ZpZXdTdGFydERhdGUueWVhcixcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5fbmF2VGV4dCA9IHRoaXMuX3ZpZXdTdGFydERhdGUuZm9ybWF0KCdZWVlZJyk7XHJcbiAgICAgIHRoaXMuX3RvZGF5VGV4dCA9IHRoaXMuX3RvZGF5LmZvcm1hdCgnTU1NTSBZWVlZJyk7XHJcbiAgICB9XHJcbiAgICAvLyBkYXkgdmlld1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IGEgPSB2ci5lbnVtdXJhdGUoJ2RheScpO1xyXG4gICAgICB0aGlzLl9zbG90cyA9IGEubWFwKChkLCBpKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcjogYW55ID0ge307XHJcbiAgICAgICAgci5kYXRlID0gZC5kYXRlO1xyXG4gICAgICAgIHIudGV4dCA9IGQuZGF5T2ZNb250aDtcclxuICAgICAgICByLnRvb2x0aXAgPSBkLmZvcm1hdCgpO1xyXG4gICAgICAgIHIuZGlzYWJsZWQgPVxyXG4gICAgICAgICAgKHRoaXMubWluICYmIGQuY29tcGFyZSh0aGlzLm1pbiwgJ2RheScpID09IC0xKSB8fFxyXG4gICAgICAgICAgKHRoaXMubWF4ICYmIGQuY29tcGFyZSh0aGlzLm1heCwgJ2RheScpID09IDEpIHx8XHJcbiAgICAgICAgICB0aGlzLmlzRGlzYWJsZWQoZCk7XHJcbiAgICAgICAgaWYgKHIuZGlzYWJsZWQpIHtcclxuICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XHJcbiAgICAgICAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHRydWUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByLmNzc0NsYXNzID0ge1xyXG4gICAgICAgICAgICAnYXgtc3RhdGUtdG9kYXknOiBkLmVxdWFsKHRoaXMuX3RvZGF5LCAnZGF5JyksXHJcbiAgICAgICAgICAgICdheC1zdGF0ZS1zZWxlY3RlZCc6IHRoaXMudmFsdWUgJiYgZC5lcXVhbCh0aGlzLnZhbHVlLCAnZGF5JyksXHJcbiAgICAgICAgICAgICdheC1zdGF0ZS1ob2xpZGF5JzogdGhpcy5pc0hvbGlkYXkoZCkgfHwgdGhpcy5pc1dlZWtlbmQoZCksXHJcbiAgICAgICAgICAgIC8vICdheC1zdGF0ZS1ldmVudC1pbmZvJzogZC5kYXlPZk1vbnRoID09IDEyLFxyXG4gICAgICAgICAgICAvLyAnYXgtc3RhdGUtZXZlbnQnOiBkLmRheU9mTW9udGggPT0gMTIsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgci5jc3NDbGFzc1tgYXgtY29sLXN0YXJ0LSR7dnIuc3RhcnRUaW1lLmRheU9mV2Vla31gXSA9IGkgPT0gMDtcclxuICAgICAgICByZXR1cm4gcjtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuX25hdlRleHQgPSB0aGlzLl92aWV3U3RhcnREYXRlLmZvcm1hdCgnTU1NTSBZWVlZJyk7XHJcbiAgICAgIHRoaXMuX3RvZGF5VGV4dCA9IHRoaXMuX3RvZGF5LmZvcm1hdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9oYW5kbGVQcmV2Q2xpY2soZTogQVhDbGlja0V2ZW50KSB7XHJcbiAgICB0aGlzLl9pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLnByZXYoKTtcclxuICAgIHRoaXMuX2lzVXNlckludGVyYWN0aW9uID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2hhbmRsZU5leHRDbGljayhlOiBBWENsaWNrRXZlbnQpIHtcclxuICAgIHRoaXMuX2lzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMubmV4dCgpO1xyXG4gICAgdGhpcy5faXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaGFuZGxlU2xvdENsaWNrKGU6IE1vdXNlRXZlbnQsIHNsb3QpIHtcclxuICAgIGlmIChzbG90LmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWQpIHJldHVybjtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ2RheXMnKSB7XHJcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aHMnICYmIHRoaXMuZGVwdGggPT0gJ2RheXMnKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVmlldyA9ICdkYXlzJztcclxuICAgICAgdGhpcy5uYXZUbyhzbG90LmRhdGUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRocycgJiYgdGhpcy5kZXB0aCA9PSAnbW9udGhzJykge1xyXG4gICAgICB0aGlzLl9zZXREYXRlKHNsb3QuZGF0ZSk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLmFjdGl2ZVZpZXcgPT0gJ3llYXJzJyAmJlxyXG4gICAgICAodGhpcy5kZXB0aCA9PSAnZGF5cycgfHwgdGhpcy5kZXB0aCA9PSAnbW9udGhzJylcclxuICAgICkge1xyXG4gICAgICB0aGlzLmFjdGl2ZVZpZXcgPSAnbW9udGhzJztcclxuICAgICAgdGhpcy5uYXZUbyhzbG90LmRhdGUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ3llYXJzJyAmJiB0aGlzLmRlcHRoID09ICd5ZWFycycpIHtcclxuICAgICAgdGhpcy5fc2V0RGF0ZShzbG90LmRhdGUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vblNsb3RDbGljay5lbWl0KHtcclxuICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICBpdGVtOiBzbG90LmRhdGUsXHJcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxyXG4gICAgICBuYXRpdmVFdmVudDogZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9oYW5kbGVOYXZDbGljayhlOiBBWENsaWNrRXZlbnQpIHtcclxuICAgIHRoaXMuX2lzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ2RheXMnKSB0aGlzLmFjdGl2ZVZpZXcgPSAnbW9udGhzJztcclxuICAgIGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGhzJykgdGhpcy5hY3RpdmVWaWV3ID0gJ3llYXJzJztcclxuICAgIHRoaXMuX2lzVXNlckludGVyYWN0aW9uID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX29uT3B0aW9uQ2hhbmdlZChvcHRpb246IEFYQ29tcG9uZW50T3B0aW9uQ2hhbmdlZCkge1xyXG4gICAgaWYgKFxyXG4gICAgICBvcHRpb24ubmFtZSA9PSAnZGVwdGgnIHx8XHJcbiAgICAgIG9wdGlvbi5uYW1lID09ICdhY3RpdmVWaWV3JyB8fFxyXG4gICAgICBvcHRpb24ubmFtZSA9PSAnZGlzYWJsZWREYXRlcycgfHxcclxuICAgICAgb3B0aW9uLm5hbWUgPT0gJ2hvbGlkYXlEYXRlcydcclxuICAgICkge1xyXG4gICAgICB0aGlzLl9nZW5lYXJ0ZVNsb3RzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9uLm5hbWUgPT0gJ3R5cGUnKSB7XHJcbiAgICAgIHRoaXMuX3JlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCAgX29uVmFsdWVDaGFuZ2VkKG9sZFZhbHVlLCBuZXdWYWx1ZSkge1xyXG4gICAgdGhpcy5fdmlld1N0YXJ0RGF0ZSA9IG5ldyBBWERhdGVUaW1lKG5ld1ZhbHVlLCB0aGlzLnR5cGUpO1xyXG4gICAgdGhpcy5fZ2VuZWFydGVTbG90cygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkICBfaGFuZGxlR29Ub2RheSgpIHtcclxuICAgIHRoaXMuX2lzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuX3NldERhdGUodGhpcy5fdG9kYXkuZGF0ZSk7XHJcbiAgICB0aGlzLmdvVG9kYXkoKTtcclxuICAgIHRoaXMuX2lzVXNlckludGVyYWN0aW9uID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZXh0KCkge1xyXG4gICAgdGhpcy5fbmF2TmV4dFByZXYoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcHJldigpIHtcclxuICAgIHRoaXMuX25hdk5leHRQcmV2KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgZm9jdXMoKSB7XHJcbiAgICBjb25zdCBmdW5jID0gKHM6IHN0cmluZykgPT5cclxuICAgICAgKHRoaXMuX2dldEhvc3RFbGVtZW50KCkgYXMgSFRNTERpdkVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3I8SFRNTERpdkVsZW1lbnQ+KFxyXG4gICAgICAgIHNcclxuICAgICAgKTtcclxuICAgIGNvbnN0IGRpdiA9XHJcbiAgICAgIGZ1bmMoJy5heC1jYWxlbmRhci1zbG90cz5kaXYuYXgtc3RhdGUtc2VsZWN0ZWQnKSB8fFxyXG4gICAgICBmdW5jKCcuYXgtY2FsZW5kYXItc2xvdHM+ZGl2Jyk7XHJcbiAgICBkaXY/LmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9uYXZOZXh0UHJldihwcmV2OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBzaWduID0gcHJldiA/IC0xIDogMTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ2RheXMnKVxyXG4gICAgICB0aGlzLm5hdlRvKHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCdtb250aCcsIHNpZ24gKiAxKSk7XHJcbiAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRocycpXHJcbiAgICAgIHRoaXMubmF2VG8odGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ3llYXInLCBzaWduICogMSkpO1xyXG4gICAgZWxzZSB0aGlzLm5hdlRvKHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCd5ZWFyJywgc2lnbiAqIDEwKSk7XHJcbiAgfVxyXG5cclxuICBnb1RvZGF5KCkge1xyXG4gICAgdGhpcy5uYXZUbyh0aGlzLl90b2RheSk7XHJcbiAgfVxyXG5cclxuICBuYXZUbyhkYXRlOiBEYXRlIHwgQVhEYXRlVGltZSkge1xyXG4gICAgdGhpcy5fdmlld1N0YXJ0RGF0ZSA9IEFYRGF0ZVRpbWUuY29udmVydChcclxuICAgICAgZGF0ZSxcclxuICAgICAgdGhpcy5fdG9kYXkuY2FsZW5kYXIubmFtZSgpXHJcbiAgICApLnN0YXJ0T2YoKTtcclxuICAgIGNvbnN0IHZyID0gdGhpcy5fdmlld1JhbmdlO1xyXG4gICAgdGhpcy5vbk5hdmlnYXRlLmVtaXQoe1xyXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0aGlzLl9pc1VzZXJJbnRlcmFjdGlvbixcclxuICAgICAgc3RhcnQ6IHZyLnN0YXJ0VGltZT8uZGF0ZSxcclxuICAgICAgZW5kOiB2ci5lbmRUaW1lPy5kYXRlLFxyXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKSxcclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuaW50ZXJmYWNlID09ICdjYWxlbmRhcicpIHRoaXMuX2dlbmVhcnRlU2xvdHMoKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLl9nZW5lcmF0ZVBpY2tlckl0ZW1zKCd5ZWFyJyk7XHJcbiAgICAgIHRoaXMuX2dlbmVyYXRlUGlja2VySXRlbXMoJ21vbnRoJyk7XHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5mb2N1cygpO1xyXG4gICAgfSwgNTApO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXHJcbiAgcHJpdmF0ZSBnZXQgX19ob3N0Q2xhc3MoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IF9jbGFzc2VzID0ge1xyXG4gICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiB0aGlzLmRpc2FibGVkLFxyXG4gICAgICAnYXgtcnRsJzogdGhpcy5ydGwsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKF9jbGFzc2VzKVxyXG4gICAgICAuZmlsdGVyKChjKSA9PiBjWzFdKVxyXG4gICAgICAubWFwKChjKSA9PiBjWzBdKVxyXG4gICAgICAuam9pbignICcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0RGF0ZSh2YWx1ZTogRGF0ZSkge1xyXG4gICAgdGhpcy52YWx1ZSA9IEFYRGF0ZVRpbWUuY29udmVydChcclxuICAgICAgdmFsdWUsXHJcbiAgICAgIHRoaXMuX3RvZGF5LmNhbGVuZGFyLm5hbWUoKVxyXG4gICAgKS5zdGFydE9mKCkuZGF0ZTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBpc0Rpc2FibGVkKGRhdGU6IEFYRGF0ZVRpbWUpOiBib29sZWFuIHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGlzYWJsZWREYXRlcykgJiYgdGhpcy5kaXNhYmxlZERhdGVzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkRGF0ZXMuc29tZSgoZCkgPT4gZGF0ZS5lcXVhbChkLCAnZGF5JykpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5kaXNhYmxlZERhdGVzID09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWREYXRlcyhkYXRlLmRhdGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGlzSG9saWRheShkYXRlOiBBWERhdGVUaW1lKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmhvbGlkYXlEYXRlcykgJiYgdGhpcy5ob2xpZGF5RGF0ZXMubGVuZ3RoICE9IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaG9saWRheURhdGVzLnNvbWUoKGQpID0+IGRhdGUuZXF1YWwoZCwgJ2RheScpKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuaG9saWRheURhdGVzID09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaG9saWRheURhdGVzKGRhdGUuZGF0ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaXNXZWVrZW5kKGRhdGU6IEFYRGF0ZVRpbWUpOiBib29sZWFuIHtcclxuICAgIC8vcmV0dXJuIGRhdGUuZGF5T2ZXZWVrID09IDcgfHwgZGF0ZS5kYXlPZldlZWsgPT0gMTtcclxuICAgIGNvbnN0IHdlZWtlbmQgPSBBWENvbmZpZy5nZXQoYGRhdGVUaW1lLmNhbGVuZGFycy4ke3RoaXMudHlwZX0ud2Vla2VuZGApIGFzIG51bWJlcltdO1xyXG4gICAgcmV0dXJuIHdlZWtlbmQuaW5jbHVkZXMoZGF0ZS5kYXlPZldlZWspO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9waWNrZXJEYXlzOiBudW1iZXJbXSA9IFtdO1xyXG4gIHByb3RlY3RlZCBfcGlja2VyTW9udGhzOiB7IHRleHQ6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9W10gPSBbXTtcclxuICBwcm90ZWN0ZWQgX3BpY2tlclllYXJzOiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9nZW5lcmF0ZVBpY2tlckl0ZW1zKHZpZXcpIHtcclxuICAgIHN3aXRjaCAodmlldykge1xyXG4gICAgICBjYXNlICd5ZWFyJzpcclxuICAgICAgICB0aGlzLl9waWNrZXJZZWFycyA9IHJhbmdlKDIwMDAsIDIwNTAsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgdGhpcy5fcGlja2VyTW9udGhzID0gbmV3IEFYRGF0ZVRpbWVSYW5nZShcclxuICAgICAgICAgIHRoaXMuX3ZpZXdSYW5nZS5zdGFydFRpbWUuc3RhcnRPZigneWVhcicpLFxyXG4gICAgICAgICAgdGhpcy5fdmlld1JhbmdlLnN0YXJ0VGltZS5lbmRPZigneWVhcicpXHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgLmVudW11cmF0ZSgnbW9udGgnKVxyXG4gICAgICAgICAgLm1hcCgoYykgPT4gKHtcclxuICAgICAgICAgICAgdGV4dDogYy5mb3JtYXQoJ01NTScpLFxyXG4gICAgICAgICAgICB2YWx1ZTogYy5tb250aE9mWWVhcixcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLl9waWNrZXJEYXlzID0gbmV3IEFYRGF0ZVRpbWVSYW5nZShcclxuICAgICAgICAgIHRoaXMuX3ZpZXdSYW5nZS5zdGFydFRpbWUuc3RhcnRPZignbW9udGgnKSxcclxuICAgICAgICAgIHRoaXMuX3ZpZXdSYW5nZS5zdGFydFRpbWUuZW5kT2YoJ21vbnRoJylcclxuICAgICAgICApXHJcbiAgICAgICAgICAuZW51bXVyYXRlKCdkYXknKVxyXG4gICAgICAgICAgLm1hcCgoYykgPT4gYy5kYXlPZk1vbnRoKTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2hhbmRsZVBpY2tlckNoYW5nZShpdGVtOiBhbnksIHZpZXcpIHtcclxuICAgIGlmICghaXRlbSkgcmV0dXJuO1xyXG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuX3ZpZXdSYW5nZS5zdGFydFRpbWU7XHJcbiAgICBzd2l0Y2ggKHZpZXcpIHtcclxuICAgICAgY2FzZSAneWVhcic6XHJcbiAgICAgICAgdGhpcy5fc2V0RGF0ZShkYXRlLnNldCgneWVhcicsIGl0ZW0udmFsdWUpLmRhdGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgdGhpcy5fc2V0RGF0ZShkYXRlLnNldCgnbW9udGgnLCBpdGVtLnZhbHVlLnZhbHVlKS5kYXRlKTtcclxuICAgICAgICB0aGlzLl9nZW5lcmF0ZVBpY2tlckl0ZW1zKCdkYXknKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLl9zZXREYXRlKGRhdGUuc2V0KCdkYXknLCBpdGVtLnZhbHVlKS5kYXRlKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImludGVyZmFjZSA9PT0gJ2NhbGVuZGFyJzsgZWxzZSBwaWNrZXJUZW1wbGF0ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlclwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVWaWV3PT0nZGF5cyc7IGVsc2UgZWxzZVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtbmF2LWJ1dHRvblwiIFt0ZXh0XT1cIl9uYXZUZXh0LnNwbGl0KCcgJylbMV1cIiBjb2xvcj1cImxpZ2h0XCIgbG9vaz1cImJsYW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtbmF2LWJ1dHRvblwiIFt0ZXh0XT1cIl9uYXZUZXh0LnNwbGl0KCcgJylbMF1cIiBjb2xvcj1cImxpZ2h0XCIgbG9vaz1cImJsYW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Vsc2VUZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC1uYXYtYnV0dG9uXCIgW3RleHRdPVwiX25hdlRleHRcIiBjb2xvcj1cImxpZ2h0XCIgbG9vaz1cImJsYW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1idXR0b25zXCI+XHJcbiAgICAgICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC1wcmV2LWJ1dHRvblwiIGNvbG9yPVwibGlnaHRcIiBsb29rPVwiYmxhbmtcIiAob25DbGljayk9XCJfaGFuZGxlUHJldkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxyXG4gICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pYyBheC1pYy1jaGV2cm9uXCI+PC9heC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XHJcbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxyXG4gICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtbmV4dC1idXR0b25cIiBjb2xvcj1cImxpZ2h0XCIgbG9vaz1cImJsYW5rXCIgKG9uQ2xpY2spPVwiX2hhbmRsZU5leHRDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cclxuICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWMgYXgtaWMtY2hldnJvbiBcIj48L2F4LWljb24+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XHJcbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IFtuZ1N3aXRjaF09XCJhY3RpdmVWaWV3XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid5ZWFycydcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy15ZWFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiB0YWJpbmRleD1cIjBcIiAqbmdGb3I9XCJsZXQgc2xvdCBvZiBfc2xvdHNcIiBbbmdDbGFzc109XCJzbG90LmNzc0NsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVTbG90Q2xpY2soJGV2ZW50LHNsb3QpXCI+e3tzbG90LnRleHR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbW9udGhzJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXNsb3RzIGF4LWNhbGVuZGFyLXNsb3RzLW1vbnRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiB0YWJpbmRleD1cIjBcIiAqbmdGb3I9XCJsZXQgc2xvdCBvZiBfc2xvdHNcIiBbdGl0bGVdPVwic2xvdC50b29sdGlwXCIgW25nQ2xhc3NdPVwic2xvdC5jc3NDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlU2xvdENsaWNrKCRldmVudCxzbG90KVwiPnt7c2xvdC50ZXh0fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXdlZWtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkIG9mIF9kYXlOYW1lc1wiPnt7ZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy1kYXlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiMFwiICpuZ0Zvcj1cImxldCBzbG90IG9mIF9zbG90c1wiIFt0aXRsZV09XCJzbG90LnRvb2x0aXBcIiBbbmdDbGFzc109XCJzbG90LmNzc0NsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVTbG90Q2xpY2soJGV2ZW50LHNsb3QpXCI+e3tzbG90LnRleHR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWZvb3RlclwiPlxyXG4gICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJkYXJrOmF4LXRleHQtZGFuZ2VyXCIgW3RleHRdPVwiX3RvZGF5VGV4dFwiIGNvbG9yPVwiZGFya1wiIGxvb2s9XCJibGFua1wiIHNpemU9XCJzbVwiXHJcbiAgICAgICAgICAgIChvbkNsaWNrKT1cIl9oYW5kbGVHb1RvZGF5KClcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgaXNEaXNhYmxlZChfdG9kYXkpXCI+PC9heC1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbjxuZy10ZW1wbGF0ZSAjcGlja2VyVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItcGlja2VyXCI+XHJcbiAgICAgICAgLy9UT0RPOiBwaWNrZXJcclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
383
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUd2QixXQUFXLEVBQ1gsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHcEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0QsT0FBTyxFQUVMLHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDM0IscUJBQXFCLEdBQ3RCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBRXhELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLHlCQUF5QixDQUMvRCwyQkFBMkIsQ0FDekIscUJBQXFCLENBQU0sdUJBQXVCLENBQUMsQ0FDcEQsQ0FDRixDQUFDO0FBb0NGLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx3QkFBd0I7SUFtRC9ELFlBQVksVUFBc0IsRUFBVSxHQUFzQjtRQUNoRSxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRG1CLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBakRsRSxjQUFTLEdBQTBCLFVBQVUs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QyxDQUFDO2dCQUNqQyxNQUFNO1lBQ1I7Z0JBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hELE1BQU07U0FDVDtJQUNILENBQUM7O2dIQWxZVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixxdkJDL0RoQyxnckdBMERjOzJGREtELG1CQUFtQjtrQkFsQy9CLFNBQVM7K0JBQ0UsYUFBYSxVQUVmO3dCQUNOLFVBQVU7d0JBQ1YsV0FBVzt3QkFDWCxPQUFPO3dCQUNQLE1BQU07d0JBQ04sU0FBUzt3QkFDVCxVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsT0FBTzt3QkFDUCxZQUFZO3dCQUNaLEtBQUs7d0JBQ0wsS0FBSzt3QkFDTCxlQUFlO3dCQUNmLE1BQU07d0JBQ04sY0FBYztxQkFDZixXQUNRO3dCQUNQLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixRQUFRO3dCQUNSLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixZQUFZO3dCQUNaLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixZQUFZO3FCQUNiLFFBQ0ssRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLGlCQUNmLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07aUlBSS9DLFNBQVM7c0JBRFIsS0FBSztnQkF1U00sV0FBVztzQkFEdEIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmFuZ2UgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWERhdGVUaW1lLCBBWERhdGVUaW1lUmFuZ2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZVRpbWUnO1xyXG5pbXBvcnQgeyBBWENsaWNrRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcclxuXHJcbmltcG9ydCB7IEFYQ2FsZW5kYXJCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci5jbGFzcyc7XHJcbmltcG9ydCB7XHJcbiAgQVhDb21wb25lbnRPcHRpb25DaGFuZ2VkLFxyXG4gIF9DbGlja2FibGVDb21wb25lbmV0TWl4aW4sXHJcbiAgX0ludGVyYWN0aXZlQ29tcG9uZW5ldE1peGluLFxyXG4gIF9WYWx1ZUNvbXBvbmVuZXRNaXhpbixcclxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbWl4aW4nO1xyXG5pbXBvcnQgeyBBWENvbmZpZyB9IGZyb20gJ0BhY29yZXgvY29yZS9jb25maWcnO1xyXG5pbXBvcnQgeyBBWFRyYW5zbGF0b3IgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFYQ2FsZW5kYXJDb21wb25lbnRNaXhpbiA9IF9DbGlja2FibGVDb21wb25lbmV0TWl4aW4oXHJcbiAgX0ludGVyYWN0aXZlQ29tcG9uZW5ldE1peGluKFxyXG4gICAgX1ZhbHVlQ29tcG9uZW5ldE1peGluPGFueT4oQVhDYWxlbmRhckJhc2VDb21wb25lbnQpXHJcbiAgKVxyXG4pO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdheC1jYWxlbmRhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcclxuICBpbnB1dHM6IFtcclxuICAgICdyZWFkb25seScsXHJcbiAgICAnYWxsb3dOdWxsJyxcclxuICAgICd2YWx1ZScsXHJcbiAgICAnbmFtZScsXHJcbiAgICAnY2hlY2tlZCcsXHJcbiAgICAnZGlzYWJsZWQnLFxyXG4gICAgJ3RhYkluZGV4JyxcclxuICAgICdkZXB0aCcsXHJcbiAgICAnYWN0aXZlVmlldycsXHJcbiAgICAnbWluJyxcclxuICAgICdtYXgnLFxyXG4gICAgJ2Rpc2FibGVkRGF0ZXMnLFxyXG4gICAgJ3R5cGUnLFxyXG4gICAgJ2hvbGlkYXlEYXRlcycsXHJcbiAgXSxcclxuICBvdXRwdXRzOiBbXHJcbiAgICAndmFsdWVDaGFuZ2UnLFxyXG4gICAgJ29uVmFsdWVDaGFuZ2VkJyxcclxuICAgICdvbkJsdXInLFxyXG4gICAgJ29uRm9jdXMnLFxyXG4gICAgJ2RlcHRoQ2hhbmdlJyxcclxuICAgICd0eXBlQ2hhbmdlJyxcclxuICAgICdkaXNhYmxlZERhdGVzQ2hhbmdlJyxcclxuICAgICdob2xpZGF5RGF0ZXNDaGFuZ2UnLFxyXG4gICAgJ29uTmF2aWdhdGUnLFxyXG4gIF0sXHJcbiAgaG9zdDogeyBjbGFzczogJ2F4LWNhbGVuZGFyJyB9LFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyQ29tcG9uZW50IGV4dGVuZHMgQVhDYWxlbmRhckNvbXBvbmVudE1peGluIHtcclxuICBASW5wdXQoKVxyXG4gIGludGVyZmFjZTogJ2NhbGVuZGFyJyB8ICdwaWNrZXInID0gJ2NhbGVuZGFyJztcclxuXHJcbiAgdG9kYXlUZXh0ID0gQVhUcmFuc2xhdG9yLmdldCgnZGF0ZVRpbWUudG9kYXknKTtcclxuXHJcbiAgcHJpdmF0ZSBnZXQgX3ZpZXdSYW5nZSgpOiBBWERhdGVUaW1lUmFuZ2Uge1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuX3ZpZXdTdGFydERhdGUgfHwgdGhpcy5fdG9kYXk7XHJcbiAgICBzd2l0Y2ggKHRoaXMuYWN0aXZlVmlldykge1xyXG4gICAgICBjYXNlICd5ZWFycyc6XHJcbiAgICAgICAgbGV0IHkgPSBjdXJyZW50LnN0YXJ0T2YoJ3llYXInKS55ZWFyO1xyXG4gICAgICAgIGxldCBtaW4gPSB5IC0gKHkgJSAxMCkgLSAxO1xyXG4gICAgICAgIGxldCBtYXggPSBtaW4gKyAxMTtcclxuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWVSYW5nZShcclxuICAgICAgICAgIEFYRGF0ZVRpbWUuZnJvbSh7XHJcbiAgICAgICAgICAgIHllYXI6IG1pbixcclxuICAgICAgICAgICAgbW9udGg6IDEsXHJcbiAgICAgICAgICAgIGRhdGU6IDEsXHJcbiAgICAgICAgICAgIGNhbGVuZGFyOiB0aGlzLl92aWV3U3RhcnREYXRlLmNhbGVuZGFyLm5hbWUoKSxcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgQVhEYXRlVGltZS5mcm9tKHtcclxuICAgICAgICAgICAgeWVhcjogbWF4LFxyXG4gICAgICAgICAgICBtb250aDogMTIsXHJcbiAgICAgICAgICAgIGRhdGU6IDI4LFxyXG4gICAgICAgICAgICBjYWxlbmRhcjogdGhpcy5fdmlld1N0YXJ0RGF0ZS5jYWxlbmRhci5uYW1lKCksXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIGNhc2UgJ21vbnRocyc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UoXHJcbiAgICAgICAgICBjdXJyZW50LnN0YXJ0T2YoJ3llYXInKSxcclxuICAgICAgICAgIGN1cnJlbnQuZW5kT2YoJ3llYXInKS5hZGQoJ2RheScsIC0xKVxyXG4gICAgICAgICk7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UoXHJcbiAgICAgICAgICBjdXJyZW50LnN0YXJ0T2YoJ21vbnRoJyksXHJcbiAgICAgICAgICBjdXJyZW50LmVuZE9mKCdtb250aCcpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfdG9kYXkgPSBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZSgpLCB0aGlzLnR5cGUpO1xyXG4gIHByaXZhdGUgX3ZpZXdTdGFydERhdGUhOiBBWERhdGVUaW1lO1xyXG5cclxuICBwcm90ZWN0ZWQgX25hdlRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIHByb3RlY3RlZCBfdG9kYXlUZXh0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgcHJvdGVjdGVkIF9zbG90czogYW55W10gPSBbXTtcclxuICBwcm90ZWN0ZWQgX2RheU5hbWVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9pc1VzZXJJbnRlcmFjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0VmFsdWVzKCkge1xyXG4gICAgdGhpcy5fdG9kYXkgPSBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZSgpLCB0aGlzLnR5cGUpO1xyXG4gICAgdGhpcy5fZGF5TmFtZXMgPSB0aGlzLl90b2RheS5jYWxlbmRhci5kYXlTaG9ydE5hbWVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVmcmVzaCgpIHtcclxuICAgIHRoaXMuX2luaXRWYWx1ZXMoKTtcclxuICAgIHRoaXMubmF2VG8odGhpcy52YWx1ZSB8fCB0aGlzLl90b2RheSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25Jbml0KCkge1xyXG4gICAgdGhpcy5faW5pdFZhbHVlcygpO1xyXG4gICAgaWYgKCF0aGlzLnZhbHVlKSB0aGlzLmdvVG9kYXkoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dlbmVhcnRlU2xvdHMoKSB7XHJcbiAgICBpZiAoIXRoaXMuX3ZpZXdTdGFydERhdGUpIHJldHVybjtcclxuICAgIGNvbnN0IHZyID0gdGhpcy5fdmlld1JhbmdlO1xyXG4gICAgLy8ganVzdCBmb3IgdGFpbHdpbmRcclxuICAgIC8vJ2F4LWNvbC1zdGFydC0xJywnYXgtY29sLXN0YXJ0LTInLCdheC1jb2wtc3RhcnQtMycsJ2F4LWNvbC1zdGFydC00JywnYXgtY29sLXN0YXJ0LTUnLCdheC1jb2wtc3RhcnQtNicsJ2F4LWNvbC1zdGFydC03J1xyXG4gICAgLy8geWVhciB2aWV3XHJcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICd5ZWFycycpIHtcclxuICAgICAgY29uc3QgYSA9IHZyLmVudW11cmF0ZSgneWVhcicpO1xyXG4gICAgICB0aGlzLl9zbG90cyA9IGEubWFwKChkLCBpKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcjogYW55ID0ge307XHJcbiAgICAgICAgci5kYXRlID0gZC5kYXRlO1xyXG4gICAgICAgIHIudGV4dCA9IGQuZm9ybWF0KCdZWVlZJyk7XHJcbiAgICAgICAgci5kaXNhYmxlZCA9XHJcbiAgICAgICAgICAodGhpcy5taW4gJiYgZC5jb21wYXJlKHRoaXMubWluLCAneWVhcicpID09IC0xKSB8fFxyXG4gICAgICAgICAgKHRoaXMubWF4ICYmIGQuY29tcGFyZSh0aGlzLm1heCwgJ3llYXInKSA9PSAxKTtcclxuICAgICAgICBpZiAoci5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgci5jc3NDbGFzcyA9IHtcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogci5kaXNhYmxlZCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XHJcbiAgICAgICAgICAgICdheC1zdGF0ZS10b2RheSc6IGQuZXF1YWwodGhpcy5fdG9kYXksICd5ZWFyJyksXHJcbiAgICAgICAgICAgICdheC1zdGF0ZS1zZWxlY3RlZCc6XHJcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZSAmJlxyXG4gICAgICAgICAgICAgIHRoaXMuZGVwdGggPT0gJ3llYXJzJyAmJlxyXG4gICAgICAgICAgICAgIGQuZXF1YWwodGhpcy52YWx1ZSwgJ3llYXInKSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHIuY3NzQ2xhc3NbYGF4LWNvbC1zdGFydC0yYF0gPSBpID09IDA7XHJcbiAgICAgICAgcmV0dXJuIHI7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5fbmF2VGV4dCA9IGAke3ZyLnN0YXJ0VGltZS55ZWFyfSAtICR7dnIuZW5kVGltZS55ZWFyfWA7XHJcbiAgICAgIHRoaXMuX3RvZGF5VGV4dCA9IHRoaXMuX3RvZGF5LmZvcm1hdCgnWVlZWScpO1xyXG4gICAgfVxyXG4gICAgLy8gbW9udGggdmlld1xyXG4gICAgZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aHMnKSB7XHJcbiAgICAgIGNvbnN0IGEgPSB2ci5lbnVtdXJhdGUoJ21vbnRoJyk7XHJcbiAgICAgIHRoaXMuX3Nsb3RzID0gYS5tYXAoKGQsIGkpID0+IHtcclxuICAgICAgICBjb25zdCByOiBhbnkgPSB7fTtcclxuICAgICAgICByLmRhdGUgPSBkLmRhdGU7XHJcbiAgICAgICAgci50ZXh0ID0gZC5mb3JtYXQoJ01NTScpO1xyXG4gICAgICAgIHIudG9vbHRpcCA9IGQuZm9ybWF0KCdNTU1NIFlZWVknKTtcclxuICAgICAgICByLmRpc2FibGVkID1cclxuICAgICAgICAgICh0aGlzLm1pbiAmJiBkLmNvbXBhcmUodGhpcy5taW4sICdtb250aCcpID09IC0xKSB8fFxyXG4gICAgICAgICAgKHRoaXMubWF4ICYmIGQuY29tcGFyZSh0aGlzLm1heCwgJ21vbnRoJykgPT0gMSk7XHJcbiAgICAgICAgaWYgKHIuZGlzYWJsZWQpIHtcclxuICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XHJcbiAgICAgICAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHIuZGlzYWJsZWQsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByLmNzc0NsYXNzID0ge1xyXG4gICAgICAgICAgICAnYXgtc3RhdGUtdG9kYXknOiBkLmVxdWFsKHRoaXMuX3RvZGF5LCAnbW9udGgnKSxcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzpcclxuICAgICAgICAgICAgICB0aGlzLnZhbHVlICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5kZXB0aCA9PSAnbW9udGhzJyAmJlxyXG4gICAgICAgICAgICAgIGQuZXF1YWwodGhpcy52YWx1ZSwgJ21vbnRoJyksXHJcbiAgICAgICAgICAgICdheC1zdGF0ZS1vdGhlcic6IGQueWVhciAhPSB0aGlzLl92aWV3U3RhcnREYXRlLnllYXIsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcjtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuX25hdlRleHQgPSB0aGlzLl92aWV3U3RhcnREYXRlLmZvcm1hdCgnWVlZWScpO1xyXG4gICAgICB0aGlzLl90b2RheVRleHQgPSB0aGlzLl90b2RheS5mb3JtYXQoJ01NTU0gWVlZWScpO1xyXG4gICAgfVxyXG4gICAgLy8gZGF5IHZpZXdcclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCBhID0gdnIuZW51bXVyYXRlKCdkYXknKTtcclxuICAgICAgdGhpcy5fc2xvdHMgPSBhLm1hcCgoZCwgaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHI6IGFueSA9IHt9O1xyXG4gICAgICAgIHIuZGF0ZSA9IGQuZGF0ZTtcclxuICAgICAgICByLnRleHQgPSBkLmRheU9mTW9udGg7XHJcbiAgICAgICAgci50b29sdGlwID0gZC5mb3JtYXQoKTtcclxuICAgICAgICByLmRpc2FibGVkID1cclxuICAgICAgICAgICh0aGlzLm1pbiAmJiBkLmNvbXBhcmUodGhpcy5taW4sICdkYXknKSA9PSAtMSkgfHxcclxuICAgICAgICAgICh0aGlzLm1heCAmJiBkLmNvbXBhcmUodGhpcy5tYXgsICdkYXknKSA9PSAxKSB8fFxyXG4gICAgICAgICAgdGhpcy5pc0Rpc2FibGVkKGQpO1xyXG4gICAgICAgIGlmIChyLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICByLmNzc0NsYXNzID0ge1xyXG4gICAgICAgICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgci5jc3NDbGFzcyA9IHtcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLXRvZGF5JzogZC5lcXVhbCh0aGlzLl90b2RheSwgJ2RheScpLFxyXG4gICAgICAgICAgICAnYXgtc3RhdGUtc2VsZWN0ZWQnOiB0aGlzLnZhbHVlICYmIGQuZXF1YWwodGhpcy52YWx1ZSwgJ2RheScpLFxyXG4gICAgICAgICAgICAnYXgtc3RhdGUtaG9saWRheSc6IHRoaXMuaXNIb2xpZGF5KGQpIHx8IHRoaXMuaXNXZWVrZW5kKGQpLFxyXG4gICAgICAgICAgICAvLyAnYXgtc3RhdGUtZXZlbnQtaW5mbyc6IGQuZGF5T2ZNb250aCA9PSAxMixcclxuICAgICAgICAgICAgLy8gJ2F4LXN0YXRlLWV2ZW50JzogZC5kYXlPZk1vbnRoID09IDEyLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHIuY3NzQ2xhc3NbYGF4LWNvbC1zdGFydC0ke3ZyLnN0YXJ0VGltZS5kYXlPZldlZWt9YF0gPSBpID09IDA7XHJcbiAgICAgICAgcmV0dXJuIHI7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLl9uYXZUZXh0ID0gdGhpcy5fdmlld1N0YXJ0RGF0ZS5mb3JtYXQoJ01NTU0gWVlZWScpO1xyXG4gICAgICB0aGlzLl90b2RheVRleHQgPSB0aGlzLl90b2RheS5mb3JtYXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaGFuZGxlUHJldkNsaWNrKCkge1xyXG4gICAgdGhpcy5faXNVc2VySW50ZXJhY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5wcmV2KCk7XHJcbiAgICB0aGlzLl9pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9oYW5kbGVOZXh0Q2xpY2soKSB7XHJcbiAgICB0aGlzLl9pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLm5leHQoKTtcclxuICAgIHRoaXMuX2lzVXNlckludGVyYWN0aW9uID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2hhbmRsZVNsb3RDbGljayhlOiBNb3VzZUV2ZW50LCBzbG90KSB7XHJcbiAgICBpZiAoc2xvdC5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdkYXlzJykge1xyXG4gICAgICB0aGlzLl9zZXREYXRlKHNsb3QuZGF0ZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGhzJyAmJiB0aGlzLmRlcHRoID09ICdkYXlzJykge1xyXG4gICAgICB0aGlzLmFjdGl2ZVZpZXcgPSAnZGF5cyc7XHJcbiAgICAgIHRoaXMubmF2VG8oc2xvdC5kYXRlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aHMnICYmIHRoaXMuZGVwdGggPT0gJ21vbnRocycpIHtcclxuICAgICAgdGhpcy5fc2V0RGF0ZShzbG90LmRhdGUpO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5hY3RpdmVWaWV3ID09ICd5ZWFycycgJiZcclxuICAgICAgKHRoaXMuZGVwdGggPT0gJ2RheXMnIHx8IHRoaXMuZGVwdGggPT0gJ21vbnRocycpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ21vbnRocyc7XHJcbiAgICAgIHRoaXMubmF2VG8oc2xvdC5kYXRlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICd5ZWFycycgJiYgdGhpcy5kZXB0aCA9PSAneWVhcnMnKSB7XHJcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlKTtcclxuICAgIH1cclxuICAgIHRoaXMub25TbG90Q2xpY2suZW1pdCh7XHJcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgaXRlbTogc2xvdC5kYXRlLFxyXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcclxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaGFuZGxlTmF2Q2xpY2soZTogQVhDbGlja0V2ZW50IHwgYW55KSB7XHJcbiAgICB0aGlzLl9pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdkYXlzJykgdGhpcy5hY3RpdmVWaWV3ID0gJ21vbnRocyc7XHJcbiAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRocycpIHRoaXMuYWN0aXZlVmlldyA9ICd5ZWFycyc7XHJcbiAgICB0aGlzLl9pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9vbk9wdGlvbkNoYW5nZWQob3B0aW9uOiBBWENvbXBvbmVudE9wdGlvbkNoYW5nZWQpIHtcclxuICAgIGlmIChcclxuICAgICAgb3B0aW9uLm5hbWUgPT0gJ2RlcHRoJyB8fFxyXG4gICAgICBvcHRpb24ubmFtZSA9PSAnYWN0aXZlVmlldycgfHxcclxuICAgICAgb3B0aW9uLm5hbWUgPT0gJ2Rpc2FibGVkRGF0ZXMnIHx8XHJcbiAgICAgIG9wdGlvbi5uYW1lID09ICdob2xpZGF5RGF0ZXMnXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5fZ2VuZWFydGVTbG90cygpO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbi5uYW1lID09ICd0eXBlJykge1xyXG4gICAgICB0aGlzLl9yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX29uVmFsdWVDaGFuZ2VkKG9sZFZhbHVlLCBuZXdWYWx1ZSkge1xyXG4gICAgdGhpcy5fdmlld1N0YXJ0RGF0ZSA9IG5ldyBBWERhdGVUaW1lKG5ld1ZhbHVlLCB0aGlzLnR5cGUpO1xyXG4gICAgdGhpcy5fZ2VuZWFydGVTbG90cygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9oYW5kbGVHb1RvZGF5KCkge1xyXG4gICAgdGhpcy5faXNVc2VySW50ZXJhY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5fc2V0RGF0ZSh0aGlzLl90b2RheS5kYXRlKTtcclxuICAgIHRoaXMuZ29Ub2RheSgpO1xyXG4gICAgdGhpcy5faXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5leHQoKSB7XHJcbiAgICB0aGlzLl9uYXZOZXh0UHJldihmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwcmV2KCkge1xyXG4gICAgdGhpcy5fbmF2TmV4dFByZXYodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBmb2N1cygpIHtcclxuICAgIGNvbnN0IGZ1bmMgPSAoczogc3RyaW5nKSA9PlxyXG4gICAgICAodGhpcy5fZ2V0SG9zdEVsZW1lbnQoKSBhcyBIVE1MRGl2RWxlbWVudCkucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oXHJcbiAgICAgICAgc1xyXG4gICAgICApO1xyXG4gICAgY29uc3QgZGl2ID1cclxuICAgICAgZnVuYygnLmF4LWNhbGVuZGFyLXNsb3RzPmRpdi5heC1zdGF0ZS1zZWxlY3RlZCcpIHx8XHJcbiAgICAgIGZ1bmMoJy5heC1jYWxlbmRhci1zbG90cz5kaXYnKTtcclxuICAgIGRpdj8uZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX25hdk5leHRQcmV2KHByZXY6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IHNpZ24gPSBwcmV2ID8gLTEgOiAxO1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnZGF5cycpXHJcbiAgICAgIHRoaXMubmF2VG8odGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ21vbnRoJywgc2lnbiAqIDEpKTtcclxuICAgIGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGhzJylcclxuICAgICAgdGhpcy5uYXZUbyh0aGlzLl92aWV3U3RhcnREYXRlLmFkZCgneWVhcicsIHNpZ24gKiAxKSk7XHJcbiAgICBlbHNlIHRoaXMubmF2VG8odGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ3llYXInLCBzaWduICogMTApKTtcclxuICB9XHJcblxyXG4gIGdvVG9kYXkoKSB7XHJcbiAgICB0aGlzLm5hdlRvKHRoaXMuX3RvZGF5KTtcclxuICB9XHJcblxyXG4gIG5hdlRvKGRhdGU6IERhdGUgfCBBWERhdGVUaW1lKSB7XHJcbiAgICB0aGlzLl92aWV3U3RhcnREYXRlID0gQVhEYXRlVGltZS5jb252ZXJ0KFxyXG4gICAgICBkYXRlLFxyXG4gICAgICB0aGlzLl90b2RheS5jYWxlbmRhci5uYW1lKClcclxuICAgICkuc3RhcnRPZigpO1xyXG4gICAgY29uc3QgdnIgPSB0aGlzLl92aWV3UmFuZ2U7XHJcbiAgICB0aGlzLm9uTmF2aWdhdGUuZW1pdCh7XHJcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRoaXMuX2lzVXNlckludGVyYWN0aW9uLFxyXG4gICAgICBzdGFydDogdnIuc3RhcnRUaW1lPy5kYXRlLFxyXG4gICAgICBlbmQ6IHZyLmVuZFRpbWU/LmRhdGUsXHJcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLl9nZXRIb3N0RWxlbWVudCgpLFxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5pbnRlcmZhY2UgPT0gJ2NhbGVuZGFyJykgdGhpcy5fZ2VuZWFydGVTbG90cygpO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuX2dlbmVyYXRlUGlja2VySXRlbXMoJ3llYXInKTtcclxuICAgICAgdGhpcy5fZ2VuZXJhdGVQaWNrZXJJdGVtcygnbW9udGgnKTtcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmZvY3VzKCk7XHJcbiAgICB9LCA1MCk7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcclxuICBwcml2YXRlIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgX2NsYXNzZXMgPSB7XHJcbiAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHRoaXMuZGlzYWJsZWQsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKF9jbGFzc2VzKVxyXG4gICAgICAuZmlsdGVyKChjKSA9PiBjWzFdKVxyXG4gICAgICAubWFwKChjKSA9PiBjWzBdKVxyXG4gICAgICAuam9pbignICcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0RGF0ZSh2YWx1ZTogRGF0ZSkge1xyXG4gICAgdGhpcy52YWx1ZSA9IEFYRGF0ZVRpbWUuY29udmVydChcclxuICAgICAgdmFsdWUsXHJcbiAgICAgIHRoaXMuX3RvZGF5LmNhbGVuZGFyLm5hbWUoKVxyXG4gICAgKS5zdGFydE9mKCkuZGF0ZTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBpc0Rpc2FibGVkKGRhdGU6IEFYRGF0ZVRpbWUpOiBib29sZWFuIHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGlzYWJsZWREYXRlcykgJiYgdGhpcy5kaXNhYmxlZERhdGVzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkRGF0ZXMuc29tZSgoZCkgPT4gZGF0ZS5lcXVhbChkLCAnZGF5JykpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5kaXNhYmxlZERhdGVzID09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWREYXRlcyhkYXRlLmRhdGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGlzSG9saWRheShkYXRlOiBBWERhdGVUaW1lKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmhvbGlkYXlEYXRlcykgJiYgdGhpcy5ob2xpZGF5RGF0ZXMubGVuZ3RoICE9IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaG9saWRheURhdGVzLnNvbWUoKGQpID0+IGRhdGUuZXF1YWwoZCwgJ2RheScpKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuaG9saWRheURhdGVzID09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaG9saWRheURhdGVzKGRhdGUuZGF0ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaXNXZWVrZW5kKGRhdGU6IEFYRGF0ZVRpbWUpOiBib29sZWFuIHtcclxuICAgIC8vcmV0dXJuIGRhdGUuZGF5T2ZXZWVrID09IDcgfHwgZGF0ZS5kYXlPZldlZWsgPT0gMTtcclxuICAgIGNvbnN0IHdlZWtlbmQgPSBBWENvbmZpZy5nZXQoXHJcbiAgICAgIGBkYXRlVGltZS5jYWxlbmRhcnMuJHt0aGlzLnR5cGV9LndlZWtlbmRgXHJcbiAgICApIGFzIG51bWJlcltdO1xyXG4gICAgcmV0dXJuIHdlZWtlbmQuaW5jbHVkZXMoZGF0ZS5kYXlPZldlZWspO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9waWNrZXJEYXlzOiBudW1iZXJbXSA9IFtdO1xyXG4gIHByb3RlY3RlZCBfcGlja2VyTW9udGhzOiB7IHRleHQ6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9W10gPSBbXTtcclxuICBwcm90ZWN0ZWQgX3BpY2tlclllYXJzOiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9nZW5lcmF0ZVBpY2tlckl0ZW1zKHZpZXcpIHtcclxuICAgIHN3aXRjaCAodmlldykge1xyXG4gICAgICBjYXNlICd5ZWFyJzpcclxuICAgICAgICB0aGlzLl9waWNrZXJZZWFycyA9IHJhbmdlKDIwMDAsIDIwNTAsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgdGhpcy5fcGlja2VyTW9udGhzID0gbmV3IEFYRGF0ZVRpbWVSYW5nZShcclxuICAgICAgICAgIHRoaXMuX3ZpZXdSYW5nZS5zdGFydFRpbWUuc3RhcnRPZigneWVhcicpLFxyXG4gICAgICAgICAgdGhpcy5fdmlld1JhbmdlLnN0YXJ0VGltZS5lbmRPZigneWVhcicpXHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgLmVudW11cmF0ZSgnbW9udGgnKVxyXG4gICAgICAgICAgLm1hcCgoYykgPT4gKHtcclxuICAgICAgICAgICAgdGV4dDogYy5mb3JtYXQoJ01NTScpLFxyXG4gICAgICAgICAgICB2YWx1ZTogYy5tb250aE9mWWVhcixcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLl9waWNrZXJEYXlzID0gbmV3IEFYRGF0ZVRpbWVSYW5nZShcclxuICAgICAgICAgIHRoaXMuX3ZpZXdSYW5nZS5zdGFydFRpbWUuc3RhcnRPZignbW9udGgnKSxcclxuICAgICAgICAgIHRoaXMuX3ZpZXdSYW5nZS5zdGFydFRpbWUuZW5kT2YoJ21vbnRoJylcclxuICAgICAgICApXHJcbiAgICAgICAgICAuZW51bXVyYXRlKCdkYXknKVxyXG4gICAgICAgICAgLm1hcCgoYykgPT4gYy5kYXlPZk1vbnRoKTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2hhbmRsZVBpY2tlckNoYW5nZShpdGVtOiBhbnksIHZpZXcpIHtcclxuICAgIGlmICghaXRlbSkgcmV0dXJuO1xyXG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuX3ZpZXdSYW5nZS5zdGFydFRpbWU7XHJcbiAgICBzd2l0Y2ggKHZpZXcpIHtcclxuICAgICAgY2FzZSAneWVhcic6XHJcbiAgICAgICAgdGhpcy5fc2V0RGF0ZShkYXRlLnNldCgneWVhcicsIGl0ZW0udmFsdWUpLmRhdGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgdGhpcy5fc2V0RGF0ZShkYXRlLnNldCgnbW9udGgnLCBpdGVtLnZhbHVlLnZhbHVlKS5kYXRlKTtcclxuICAgICAgICB0aGlzLl9nZW5lcmF0ZVBpY2tlckl0ZW1zKCdkYXknKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLl9zZXREYXRlKGRhdGUuc2V0KCdkYXknLCBpdGVtLnZhbHVlKS5kYXRlKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImludGVyZmFjZSA9PT0gJ2NhbGVuZGFyJzsgZWxzZSBwaWNrZXJUZW1wbGF0ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVmlldz09J2RheXMnOyBlbHNlIGVsc2VUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBjbGFzcz1cImF4LWJ1dHRvbi1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZU5hdkNsaWNrKCRldmVudClcIj57e19uYXZUZXh0LnNwbGl0KCcgJylbMV19fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBjbGFzcz1cImF4LWJ1dHRvbi1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZU5hdkNsaWNrKCRldmVudClcIj57e19uYXZUZXh0LnNwbGl0KCcgJylbMF19fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIGNsYXNzPVwiYXgtYnV0dG9uLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50KVwiPnt7X25hdlRleHR9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIGNsYXNzPVwiYXgtYnV0dG9uLWNvbnRyb2xcIiAoY2xpY2spPVwiX2hhbmRsZVByZXZDbGljaygpXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJ7J2F4LWljLWNoZXZyb24tbGVmdCc6ICFfaXNSdGwoKSwnYXgtaWMtY2hldnJvbi1yaWdodCc6IF9pc1J0bCgpfVwiPjwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGlzRGlzYWJsZWQoX3RvZGF5KVwiIGNsYXNzPVwiYXgtYnV0dG9uLWNvbnRyb2wgIWF4LXRleHQtcHJpbWFyeS01MDBcIiAoY2xpY2spPVwiX2hhbmRsZUdvVG9kYXkoKVwiPlxyXG4gICAgICAgICAgICAgICAge3sgdG9kYXlUZXh0IH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIGNsYXNzPVwiYXgtYnV0dG9uLWNvbnRyb2xcIiAoY2xpY2spPVwiX2hhbmRsZU5leHRDbGljaygpXCI+XHJcbiAgICAgICAgICAgICAgICA8aSAgW25nQ2xhc3NdPVwieydheC1pYy1jaGV2cm9uLWxlZnQnOiBfaXNSdGwoKSwnYXgtaWMtY2hldnJvbi1yaWdodCc6ICFfaXNSdGwoKX1cIj48L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IFtuZ1N3aXRjaF09XCJhY3RpdmVWaWV3XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid5ZWFycydcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy15ZWFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiB0YWJpbmRleD1cIjBcIiAqbmdGb3I9XCJsZXQgc2xvdCBvZiBfc2xvdHNcIiBbbmdDbGFzc109XCJzbG90LmNzc0NsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVTbG90Q2xpY2soJGV2ZW50LHNsb3QpXCI+e3tzbG90LnRleHR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbW9udGhzJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXNsb3RzIGF4LWNhbGVuZGFyLXNsb3RzLW1vbnRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiB0YWJpbmRleD1cIjBcIiAqbmdGb3I9XCJsZXQgc2xvdCBvZiBfc2xvdHNcIiBbdGl0bGVdPVwic2xvdC50b29sdGlwXCIgW25nQ2xhc3NdPVwic2xvdC5jc3NDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlU2xvdENsaWNrKCRldmVudCxzbG90KVwiPnt7c2xvdC50ZXh0fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXdlZWtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkIG9mIF9kYXlOYW1lc1wiPnt7ZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy1kYXlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiMFwiICpuZ0Zvcj1cImxldCBzbG90IG9mIF9zbG90c1wiIFt0aXRsZV09XCJzbG90LnRvb2x0aXBcIiBbbmdDbGFzc109XCJzbG90LmNzc0NsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVTbG90Q2xpY2soJGV2ZW50LHNsb3QpXCI+e3tzbG90LnRleHR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLXRlbXBsYXRlICNwaWNrZXJUZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1waWNrZXJcIj5cclxuICAgICAgICAvL1RPRE86IHBpY2tlclxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
@@ -1,18 +1,16 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { AXDateTimeModule } from '@acorex/core/dateTime';
4
- import { AXButtonModule } from '@acorex/components/button';
5
- import { AXDecoratorModule } from '@acorex/components/decorators';
6
4
  import { AXCalendarComponent } from './calendar.component';
7
5
  import * as i0 from "@angular/core";
8
6
  const COMPONENT = [AXCalendarComponent];
9
- const MODULES = [CommonModule, AXButtonModule, AXDecoratorModule, AXDateTimeModule];
7
+ const MODULES = [CommonModule, AXDateTimeModule];
10
8
  export class AXCalendarModule {
11
9
  }
12
- AXCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
- AXCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: AXCalendarModule, declarations: [AXCalendarComponent], imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXDateTimeModule], exports: [AXCalendarComponent] });
14
- AXCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCalendarModule, imports: [MODULES] });
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCalendarModule, decorators: [{
10
+ AXCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ AXCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: AXCalendarModule, declarations: [AXCalendarComponent], imports: [CommonModule, AXDateTimeModule], exports: [AXCalendarComponent] });
12
+ AXCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCalendarModule, imports: [MODULES] });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCalendarModule, decorators: [{
16
14
  type: NgModule,
17
15
  args: [{
18
16
  declarations: [...COMPONENT],
@@ -21,4 +19,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
21
19
  providers: [],
22
20
  }]
23
21
  }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2NhbGVuZGFyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRTNELE1BQU0sU0FBUyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUN4QyxNQUFNLE9BQU8sR0FBRyxDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQVFwRixNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBVFYsbUJBQW1CLGFBQ3JCLFlBQVksRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLGFBRC9ELG1CQUFtQjs4R0FTekIsZ0JBQWdCLFlBSlosT0FBTzsyRkFJWCxnQkFBZ0I7a0JBTjVCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7b0JBQzVCLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO29CQUNyQixPQUFPLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztvQkFDdkIsU0FBUyxFQUFFLEVBQUU7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQVhEYXRlVGltZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlVGltZSc7XHJcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XHJcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBBWENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci5jb21wb25lbnQnO1xyXG5cclxuY29uc3QgQ09NUE9ORU5UID0gW0FYQ2FsZW5kYXJDb21wb25lbnRdO1xyXG5jb25zdCBNT0RVTEVTID0gW0NvbW1vbk1vZHVsZSwgQVhCdXR0b25Nb2R1bGUsIEFYRGVjb3JhdG9yTW9kdWxlLCBBWERhdGVUaW1lTW9kdWxlXTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBkZWNsYXJhdGlvbnM6IFsuLi5DT01QT05FTlRdLFxyXG4gICAgaW1wb3J0czogWy4uLk1PRFVMRVNdLFxyXG4gICAgZXhwb3J0czogWy4uLkNPTVBPTkVOVF0sXHJcbiAgICBwcm92aWRlcnM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhck1vZHVsZSB7IH1cclxuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2NhbGVuZGFyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFM0QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3hDLE1BQU0sT0FBTyxHQUFHLENBQUMsWUFBWSxFQUFHLGdCQUFnQixDQUFDLENBQUM7QUFRbEQsTUFBTSxPQUFPLGdCQUFnQjs7NkdBQWhCLGdCQUFnQjs4R0FBaEIsZ0JBQWdCLGlCQVRWLG1CQUFtQixhQUNyQixZQUFZLEVBQUcsZ0JBQWdCLGFBRDdCLG1CQUFtQjs4R0FTekIsZ0JBQWdCLFlBSlosT0FBTzsyRkFJWCxnQkFBZ0I7a0JBTjVCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7b0JBQzVCLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO29CQUNyQixPQUFPLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztvQkFDdkIsU0FBUyxFQUFFLEVBQUU7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQVhEYXRlVGltZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlVGltZSc7XHJcbmltcG9ydCB7IEFYQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLmNvbXBvbmVudCc7XHJcblxyXG5jb25zdCBDT01QT05FTlQgPSBbQVhDYWxlbmRhckNvbXBvbmVudF07XHJcbmNvbnN0IE1PRFVMRVMgPSBbQ29tbW9uTW9kdWxlLCAgQVhEYXRlVGltZU1vZHVsZV07XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBbLi4uQ09NUE9ORU5UXSxcclxuICAgIGltcG9ydHM6IFsuLi5NT0RVTEVTXSxcclxuICAgIGV4cG9ydHM6IFsuLi5DT01QT05FTlRdLFxyXG4gICAgcHJvdmlkZXJzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYQ2FsZW5kYXJNb2R1bGUgeyB9XHJcbiJdfQ==
@@ -32,9 +32,9 @@ export class AXCheckBoxComponent extends AXBaseValueComponentMixin {
32
32
  return true;
33
33
  }
34
34
  }
35
- AXCheckBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCheckBoxComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
36
- AXCheckBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: AXCheckBoxComponent, selector: "ax-check-box", inputs: { disabled: "disabled", tabIndex: "tabIndex", readonly: "readonly", allowNull: "allowNull", value: "value", name: "name", checked: "checked" }, outputs: { onBlur: "onBlur", onFocus: "onFocus", valueChange: "valueChange", onValueChanged: "onValueChanged" }, host: { classAttribute: "ax-check-box" }, usesInheritance: true, ngImport: i0, template: "<label class=\"ax-flex ax-items-start ax-w-fit\">\r\n <div class=\"ax-flex ax-items-center ax-h-5\">\r\n <input [id]=\"id\" class=\"ax-h-4 ax-w-4\" type=\"checkbox\" [class.ax-state-readonly]=\"readonly\"\r\n [class.ax-state-disabled]=\"disabled\" [indeterminate]=\"_stateIndeterminate\" [(ngModel)]=\"value\"\r\n [checked]=\"value\" [disabled]=\"disabled\" [readonly]=\"readonly\" [tabindex]=\"tabIndex\"\r\n (click)=\"_handleOnClickEvent($event)\" (focus)=\"_emitOnFocusEvent($event)\" (blur)=\"_emitOnBlurEvent($event)\">\r\n </div>\r\n <div class=\"ax-ms-3 ax-text-sm\">\r\n <ng-content></ng-content>\r\n <ng-content select=\"ax-form-hint\"></ng-content>\r\n <span class=\"ax-error-container\"></span>\r\n </div>\r\n</label>\r\n<ng-content select=\"ax-validation-rule\"></ng-content>", dependencies: [{ kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCheckBoxComponent, decorators: [{
35
+ AXCheckBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCheckBoxComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
36
+ AXCheckBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: AXCheckBoxComponent, selector: "ax-check-box", inputs: { disabled: "disabled", tabIndex: "tabIndex", readonly: "readonly", allowNull: "allowNull", value: "value", name: "name", checked: "checked" }, outputs: { onBlur: "onBlur", onFocus: "onFocus", valueChange: "valueChange", onValueChanged: "onValueChanged" }, host: { classAttribute: "ax-check-box" }, usesInheritance: true, ngImport: i0, template: "<label class=\"ax-flex ax-items-start ax-w-fit\">\r\n <div class=\"ax-flex ax-items-center ax-h-5\">\r\n <input [id]=\"id\" class=\"ax-h-4 ax-w-4\" type=\"checkbox\" [class.ax-state-readonly]=\"readonly\"\r\n [class.ax-state-disabled]=\"disabled\" [indeterminate]=\"_stateIndeterminate\" [(ngModel)]=\"value\"\r\n [checked]=\"value\" [disabled]=\"disabled\" [readonly]=\"readonly\" [tabindex]=\"tabIndex\"\r\n (click)=\"_handleOnClickEvent($event)\" (focus)=\"_emitOnFocusEvent($event)\" (blur)=\"_emitOnBlurEvent($event)\">\r\n </div>\r\n <div class=\"ax-ms-3 ax-text-sm\">\r\n <ng-content></ng-content>\r\n <ng-content select=\"ax-form-hint\"></ng-content>\r\n <span class=\"ax-error-container\"></span>\r\n </div>\r\n</label>\r\n<ng-content select=\"ax-validation-rule\"></ng-content>", dependencies: [{ kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCheckBoxComponent, decorators: [{
38
38
  type: Component,
39
39
  args: [{ selector: 'ax-check-box', inputs: ['disabled', 'tabIndex', 'readonly', 'allowNull', 'value', 'name', 'checked'], outputs: ['onBlur', 'onFocus', 'valueChange', 'onValueChanged'], host: { class: 'ax-check-box' }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<label class=\"ax-flex ax-items-start ax-w-fit\">\r\n <div class=\"ax-flex ax-items-center ax-h-5\">\r\n <input [id]=\"id\" class=\"ax-h-4 ax-w-4\" type=\"checkbox\" [class.ax-state-readonly]=\"readonly\"\r\n [class.ax-state-disabled]=\"disabled\" [indeterminate]=\"_stateIndeterminate\" [(ngModel)]=\"value\"\r\n [checked]=\"value\" [disabled]=\"disabled\" [readonly]=\"readonly\" [tabindex]=\"tabIndex\"\r\n (click)=\"_handleOnClickEvent($event)\" (focus)=\"_emitOnFocusEvent($event)\" (blur)=\"_emitOnBlurEvent($event)\">\r\n </div>\r\n <div class=\"ax-ms-3 ax-text-sm\">\r\n <ng-content></ng-content>\r\n <ng-content select=\"ax-form-hint\"></ng-content>\r\n <span class=\"ax-error-container\"></span>\r\n </div>\r\n</label>\r\n<ng-content select=\"ax-validation-rule\"></ng-content>" }]
40
40
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; } });
@@ -6,10 +6,10 @@ import { AXCheckBoxComponent } from './checkbox.component';
6
6
  import * as i0 from "@angular/core";
7
7
  export class AXCheckBoxModule {
8
8
  }
9
- AXCheckBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCheckBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- AXCheckBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: AXCheckBoxModule, declarations: [AXCheckBoxComponent], imports: [CommonModule, FormsModule, AXDecoratorModule], exports: [AXCheckBoxComponent] });
11
- AXCheckBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCheckBoxModule, imports: [CommonModule, FormsModule, AXDecoratorModule] });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCheckBoxModule, decorators: [{
9
+ AXCheckBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCheckBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ AXCheckBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: AXCheckBoxModule, declarations: [AXCheckBoxComponent], imports: [CommonModule, FormsModule, AXDecoratorModule], exports: [AXCheckBoxComponent] });
11
+ AXCheckBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCheckBoxModule, imports: [CommonModule, FormsModule, AXDecoratorModule] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCheckBoxModule, decorators: [{
13
13
  type: NgModule,
14
14
  args: [{
15
15
  declarations: [AXCheckBoxComponent],
@@ -30,9 +30,9 @@ export class AXCollapseGroupComponent extends AXBaseComponent {
30
30
  this._subs = [];
31
31
  }
32
32
  }
33
- AXCollapseGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCollapseGroupComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
34
- AXCollapseGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: { accordion: "accordion", nonCollapsedIndex: "nonCollapsedIndex" }, host: { classAttribute: "ax-collapse-group" }, queries: [{ propertyName: "_items", predicate: AXCollapseComponent }], usesInheritance: true, ngImport: i0, template: `<ng-content select="ax-collapse"></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCollapseGroupComponent, decorators: [{
33
+ AXCollapseGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCollapseGroupComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
34
+ AXCollapseGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: { accordion: "accordion", nonCollapsedIndex: "nonCollapsedIndex" }, host: { classAttribute: "ax-collapse-group" }, queries: [{ propertyName: "_items", predicate: AXCollapseComponent }], usesInheritance: true, ngImport: i0, template: `<ng-content select="ax-collapse"></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCollapseGroupComponent, decorators: [{
36
36
  type: Component,
37
37
  args: [{
38
38
  selector: 'ax-collapse-group',
@@ -24,9 +24,9 @@ export class AXCollapseComponent extends AXBaseComponent {
24
24
  this.isCollapsed = !this.isCollapsed;
25
25
  }
26
26
  }
27
- AXCollapseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCollapseComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
28
- AXCollapseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: AXCollapseComponent, selector: "ax-collapse", inputs: { isCollapsed: "isCollapsed", caption: "caption" }, outputs: { isCollapsedChange: "isCollapsedChange" }, host: { classAttribute: "ax-collapse" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-collapse-header\" [class.ax-state-collapsed]=\"isCollapsed\">\r\n <ng-container *ngIf=\"headerTemplate;else header\">\r\n <div class=\"ax-collapse-custom-header-container\" (click)=\"handleHeaderClick()\">\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: { caption, isCollapsed } }\"></ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #header>\r\n <div class=\"ax-collapse-header-container\" (click)=\"handleHeaderClick()\">\r\n <div>\r\n <span class=\"ax-ic ax-ic-chevron ax-collapse-arrow ax-transition-all\"\r\n [class.ax-rotate-90]=\"isCollapsed\"></span>\r\n <ng-content select=\"ax-prefix\"></ng-content>\r\n <span>{{caption}}</span>\r\n </div>\r\n <div>\r\n <ng-content select=\"ax-suffix\"></ng-content>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</div>\r\n\r\n<div class=\"ax-collapse-body ax-transition-all\" *ngIf=\"!isCollapsed\">\r\n <ng-content></ng-content>\r\n</div>", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCollapseComponent, decorators: [{
27
+ AXCollapseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCollapseComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
28
+ AXCollapseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: AXCollapseComponent, selector: "ax-collapse", inputs: { isCollapsed: "isCollapsed", caption: "caption" }, outputs: { isCollapsedChange: "isCollapsedChange" }, host: { classAttribute: "ax-collapse" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-collapse-header\" [class.ax-state-collapsed]=\"isCollapsed\">\r\n <ng-container *ngIf=\"headerTemplate;else header\">\r\n <div class=\"ax-collapse-custom-header-container\" (click)=\"handleHeaderClick()\">\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: { caption, isCollapsed } }\"></ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #header>\r\n <div class=\"ax-collapse-header-container\" (click)=\"handleHeaderClick()\">\r\n <div>\r\n <span class=\"ax-ic ax-ic-chevron ax-collapse-arrow ax-transition-all\"\r\n [class.ax-rotate-90]=\"isCollapsed\"></span>\r\n <ng-content select=\"ax-prefix\"></ng-content>\r\n <span>{{caption}}</span>\r\n </div>\r\n <div>\r\n <ng-content select=\"ax-suffix\"></ng-content>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</div>\r\n\r\n<div class=\"ax-collapse-body ax-transition-all\" *ngIf=\"!isCollapsed\">\r\n <ng-content></ng-content>\r\n</div>", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCollapseComponent, decorators: [{
30
30
  type: Component,
31
31
  args: [{ selector: 'ax-collapse', host: { class: 'ax-collapse' }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"ax-collapse-header\" [class.ax-state-collapsed]=\"isCollapsed\">\r\n <ng-container *ngIf=\"headerTemplate;else header\">\r\n <div class=\"ax-collapse-custom-header-container\" (click)=\"handleHeaderClick()\">\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: { caption, isCollapsed } }\"></ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #header>\r\n <div class=\"ax-collapse-header-container\" (click)=\"handleHeaderClick()\">\r\n <div>\r\n <span class=\"ax-ic ax-ic-chevron ax-collapse-arrow ax-transition-all\"\r\n [class.ax-rotate-90]=\"isCollapsed\"></span>\r\n <ng-content select=\"ax-prefix\"></ng-content>\r\n <span>{{caption}}</span>\r\n </div>\r\n <div>\r\n <ng-content select=\"ax-suffix\"></ng-content>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</div>\r\n\r\n<div class=\"ax-collapse-body ax-transition-all\" *ngIf=\"!isCollapsed\">\r\n <ng-content></ng-content>\r\n</div>" }]
32
32
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { isCollapsedChange: [{
@@ -5,10 +5,10 @@ import { AXCollapseGroupComponent } from './collapse-group.component';
5
5
  import * as i0 from "@angular/core";
6
6
  export class AXCollapseModule {
7
7
  }
8
- AXCollapseModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCollapseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
- AXCollapseModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: AXCollapseModule, declarations: [AXCollapseComponent, AXCollapseGroupComponent], imports: [CommonModule], exports: [AXCollapseComponent, AXCollapseGroupComponent] });
10
- AXCollapseModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCollapseModule, imports: [CommonModule] });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXCollapseModule, decorators: [{
8
+ AXCollapseModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCollapseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ AXCollapseModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: AXCollapseModule, declarations: [AXCollapseComponent, AXCollapseGroupComponent], imports: [CommonModule], exports: [AXCollapseComponent, AXCollapseGroupComponent] });
10
+ AXCollapseModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCollapseModule, imports: [CommonModule] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXCollapseModule, decorators: [{
12
12
  type: NgModule,
13
13
  args: [{
14
14
  declarations: [AXCollapseComponent, AXCollapseGroupComponent],
@@ -73,14 +73,14 @@ export class AXColorPaletteInputComponent extends AXBaseComponent {
73
73
  }
74
74
  }
75
75
  }
76
- AXColorPaletteInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXColorPaletteInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: AXColorComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
77
- AXColorPaletteInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: AXColorPaletteInputComponent, selector: "ax-color-palette-input", host: { classAttribute: "ax-color-palette-input" }, providers: [
76
+ AXColorPaletteInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXColorPaletteInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: AXColorComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
77
+ AXColorPaletteInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: AXColorPaletteInputComponent, selector: "ax-color-palette-input", host: { classAttribute: "ax-color-palette-input" }, providers: [
78
78
  {
79
79
  provide: AXColorPaletteChildComponent,
80
80
  useExisting: AXColorPaletteInputComponent,
81
81
  },
82
82
  ], usesInheritance: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"_parent.colorMode\">\r\n <div class=\"palette-inputs\">\r\n <ng-container *ngSwitchCase=\"'hex'\">\r\n <div>\r\n <ax-text-box class=\"ax-w-full\" [value]=\"_hex\" [disabled]=\"_parent.disabled\" [readonly]=\"_parent.readonly\" (onValueChanged)=\"_handleHEXAValueChanged($event)\">\r\n </ax-text-box>\r\n <label>HEX</label>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'rgba'\">\r\n <div>\r\n <ax-number-box [minValue]=\"0\" [maxValue]=\"255\" [(value)]=\"_rgba.r\" [showSpinButtons]=\"false\" [disabled]=\"_parent.disabled\" [readonly]=\"_parent.readonly\"\r\n (onValueChanged)=\"_handleRGBAValueChanged($event)\">\r\n </ax-number-box>\r\n <label>R</label>\r\n </div>\r\n <div>\r\n <ax-number-box [minValue]=\"0\" [maxValue]=\"255\" [(value)]=\"_rgba.g\" [showSpinButtons]=\"false\" [disabled]=\"_parent.disabled\" [readonly]=\"_parent.readonly\"\r\n (onValueChanged)=\"_handleRGBAValueChanged($event)\">\r\n </ax-number-box>\r\n <label>G</label>\r\n </div>\r\n <div>\r\n <ax-number-box [minValue]=\"0\" [maxValue]=\"255\" [(value)]=\"_rgba.b\" [showSpinButtons]=\"false\" [disabled]=\"_parent.disabled\" [readonly]=\"_parent.readonly\"\r\n (onValueChanged)=\"_handleRGBAValueChanged($event)\">\r\n </ax-number-box>\r\n <label>B</label>\r\n </div>\r\n <div>\r\n <ax-number-box [minValue]=\"0\" [maxValue]=\"1\" [(value)]=\"_rgba.a\" [decimals]=\"2\" [step]=\"0.1\" [disabled]=\"_parent.disabled\" [readonly]=\"_parent.readonly\"\r\n [showSpinButtons]=\"false\" (onValueChanged)=\"_handleRGBAValueChanged($event)\">\r\n </ax-number-box>\r\n <label>A</label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ax-button color=\"light\" class=\"ax-w-base\" (onClick)=\"_handleChangeInputMode($event)\" [disabled]=\"_parent.disabled\">\r\n <ax-icon class=\"ax-ic ax-ic-unfold\"></ax-icon>\r\n </ax-button>\r\n</ng-container>", dependencies: [{ kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "name", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "mask-options"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange"] }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.AXNumberBoxComponent, selector: "ax-number-box", inputs: ["disabled", "readonly", "tabIndex", "size", "value", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "name", "checked", "thousandsSeparator", "padDecimalZeros", "step", "decimals", "decimalStep", "showSpinButtons", "minValue", "maxValue"], outputs: ["valueChange", "onValueChanged", "onBlur", "onFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXColorPaletteInputComponent, decorators: [{
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXColorPaletteInputComponent, decorators: [{
84
84
  type: Component,
85
85
  args: [{ selector: 'ax-color-palette-input', host: { class: 'ax-color-palette-input' }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
86
86
  {
@@ -73,14 +73,14 @@ export class AXColorPalettePickerComponent extends AXBaseComponent {
73
73
  }
74
74
  }
75
75
  }
76
- AXColorPalettePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXColorPalettePickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: AXColorComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
77
- AXColorPalettePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: AXColorPalettePickerComponent, selector: "ax-color-palette-picker", host: { classAttribute: "ax-color-palette-picker" }, providers: [
76
+ AXColorPalettePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXColorPalettePickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: AXColorComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
77
+ AXColorPalettePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: AXColorPalettePickerComponent, selector: "ax-color-palette-picker", host: { classAttribute: "ax-color-palette-picker" }, providers: [
78
78
  {
79
79
  provide: AXColorPaletteChildComponent,
80
80
  useExisting: AXColorPalettePickerComponent,
81
81
  },
82
82
  ], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-color-picker-overlay\" [style.background-color]=\"_bgColor\">\r\n <div class=\"ax-color-picker-overlay-color\"></div>\r\n <div class=\"ax-color-picker-overlay-gradient\"></div>\r\n <div class=\"ax-color-picker-pointer\"></div>\r\n</div>\r\n<ax-range-slider class=\"ax-color-picker-gradient\" [minValue]=\"0\" [maxValue]=\"99\" [step]=\"1\" [value]=\"_gradient\" \r\n (onValueChanged)=\"_handleGradientChanged($event)\">\r\n</ax-range-slider>\r\n<ax-range-slider class=\"ax-color-picker-transparent\" [minValue]=\"0\" [maxValue]=\"1\" [step]=\"0.01\" [value]=\"_rgba.a\"\r\n (onValueChanged)=\"_handleAlphaChanged($event)\">\r\n</ax-range-slider>", dependencies: [{ kind: "component", type: i1.AXRangeSliderComponent, selector: "ax-range-slider", inputs: ["readonly", "allowNull", "value", "name", "checked", "minValue", "maxValue", "step", "color", "oriantaion"], outputs: ["valueChange", "onValueChanged", "colorChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXColorPalettePickerComponent, decorators: [{
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXColorPalettePickerComponent, decorators: [{
84
84
  type: Component,
85
85
  args: [{ selector: 'ax-color-palette-picker', host: { class: 'ax-color-palette-picker' }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
86
86
  {
@@ -25,8 +25,8 @@ export class AXColorPalettePreviewComponent extends AXBaseComponent {
25
25
  });
26
26
  }
27
27
  }
28
- AXColorPalettePreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXColorPalettePreviewComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: AXColorComponent, optional: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
29
- AXColorPalettePreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: AXColorPalettePreviewComponent, selector: "ax-color-palette-preview", host: { classAttribute: "ax-color-palette-preview" }, providers: [
28
+ AXColorPalettePreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXColorPalettePreviewComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: AXColorComponent, optional: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
29
+ AXColorPalettePreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: AXColorPalettePreviewComponent, selector: "ax-color-palette-preview", host: { classAttribute: "ax-color-palette-preview" }, providers: [
30
30
  {
31
31
  provide: AXColorPaletteChildComponent,
32
32
  useExisting: AXColorPalettePreviewComponent,
@@ -35,7 +35,7 @@ AXColorPalettePreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
35
35
  class="palette-preview-overlay"
36
36
  [class.ax-state-disabled]="_parent.disabled"
37
37
  ></div>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXColorPalettePreviewComponent, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXColorPalettePreviewComponent, decorators: [{
39
39
  type: Component,
40
40
  args: [{
41
41
  selector: 'ax-color-palette-preview',
@@ -250,8 +250,8 @@ export class AXColorPaletteSwatchesComponent extends AXBaseComponent {
250
250
  };
251
251
  }
252
252
  }
253
- AXColorPaletteSwatchesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXColorPaletteSwatchesComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: AXColorComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
254
- AXColorPaletteSwatchesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: AXColorPaletteSwatchesComponent, selector: "ax-color-palette-swatches, ax-color-palette-favorite", inputs: { colors: "colors" }, providers: [
253
+ AXColorPaletteSwatchesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXColorPaletteSwatchesComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: AXColorComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
254
+ AXColorPaletteSwatchesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: AXColorPaletteSwatchesComponent, selector: "ax-color-palette-swatches, ax-color-palette-favorite", inputs: { colors: "colors" }, providers: [
255
255
  {
256
256
  provide: AXColorPaletteChildComponent,
257
257
  useExisting: AXColorPaletteSwatchesComponent,
@@ -263,7 +263,7 @@ AXColorPaletteSwatchesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion:
263
263
  [class.ax-state-selected]="color.code == _selected"
264
264
  (click)="_handleClick($event, color)"
265
265
  ></div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
266
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: AXColorPaletteSwatchesComponent, decorators: [{
266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: AXColorPaletteSwatchesComponent, decorators: [{
267
267
  type: Component,
268
268
  args: [{
269
269
  selector: 'ax-color-palette-swatches, ax-color-palette-favorite',