@acorex/components 18.16.0-next.9 → 18.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (694) hide show
  1. package/color-palette/lib/color-palette-picker.component.d.ts +1 -5
  2. package/fesm2022/acorex-components-action-sheet.mjs +11 -11
  3. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  4. package/fesm2022/acorex-components-alert.mjs +8 -8
  5. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  6. package/fesm2022/acorex-components-audio-wave.mjs +8 -8
  7. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  8. package/fesm2022/acorex-components-avatar.mjs +12 -11
  9. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  10. package/fesm2022/acorex-components-badge.mjs +8 -8
  11. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  12. package/fesm2022/acorex-components-bottom-navigation.mjs +12 -12
  13. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  14. package/fesm2022/acorex-components-breadcrumbs.mjs +12 -12
  15. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  16. package/fesm2022/acorex-components-button-group.mjs +12 -11
  17. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  18. package/fesm2022/acorex-components-button.mjs +16 -15
  19. package/fesm2022/acorex-components-button.mjs.map +1 -1
  20. package/fesm2022/acorex-components-calendar.mjs +15 -15
  21. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  22. package/fesm2022/acorex-components-check-box.mjs +8 -8
  23. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  24. package/fesm2022/acorex-components-chips.mjs +8 -8
  25. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  26. package/fesm2022/acorex-components-circular-progress.mjs +8 -8
  27. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  28. package/fesm2022/acorex-components-collapse.mjs +12 -11
  29. package/fesm2022/acorex-components-collapse.mjs.map +1 -1
  30. package/fesm2022/acorex-components-color-box.mjs +8 -8
  31. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  32. package/fesm2022/acorex-components-color-palette.mjs +53 -63
  33. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  34. package/fesm2022/acorex-components-comment.mjs +36 -36
  35. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  36. package/fesm2022/acorex-components-common.mjs +100 -89
  37. package/fesm2022/acorex-components-common.mjs.map +1 -1
  38. package/fesm2022/acorex-components-conversation.mjs +60 -60
  39. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  40. package/fesm2022/acorex-components-cron-job.mjs +53 -53
  41. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  42. package/fesm2022/acorex-components-data-pager.mjs +38 -32
  43. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  44. package/fesm2022/acorex-components-data-table.mjs +42 -36
  45. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  46. package/fesm2022/acorex-components-datetime-box.mjs +8 -8
  47. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  48. package/fesm2022/acorex-components-datetime-input.mjs +8 -8
  49. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  50. package/fesm2022/acorex-components-datetime-picker.mjs +8 -8
  51. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  52. package/fesm2022/acorex-components-decorators.mjs +20 -19
  53. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  54. package/fesm2022/acorex-components-dialog.mjs +11 -11
  55. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  56. package/fesm2022/acorex-components-drawer.mjs +16 -16
  57. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  58. package/fesm2022/acorex-components-dropdown-button.mjs +8 -8
  59. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  60. package/fesm2022/acorex-components-dropdown.mjs +15 -15
  61. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  62. package/fesm2022/acorex-components-form.mjs +21 -18
  63. package/fesm2022/acorex-components-form.mjs.map +1 -1
  64. package/fesm2022/acorex-components-image-editor.mjs +46 -43
  65. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  66. package/fesm2022/acorex-components-image.mjs +8 -8
  67. package/fesm2022/acorex-components-image.mjs.map +1 -1
  68. package/fesm2022/acorex-components-json-viewer.mjs +9 -9
  69. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  70. package/fesm2022/acorex-components-label.mjs +8 -8
  71. package/fesm2022/acorex-components-label.mjs.map +1 -1
  72. package/fesm2022/acorex-components-list.mjs +8 -8
  73. package/fesm2022/acorex-components-list.mjs.map +1 -1
  74. package/fesm2022/acorex-components-loading-dialog.mjs +11 -11
  75. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  76. package/fesm2022/acorex-components-loading.mjs +19 -18
  77. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  78. package/fesm2022/acorex-components-map.mjs +268 -11
  79. package/fesm2022/acorex-components-map.mjs.map +1 -1
  80. package/fesm2022/acorex-components-media-viewer.mjs +51 -51
  81. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  82. package/fesm2022/acorex-components-menu.mjs +19 -19
  83. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  84. package/fesm2022/acorex-components-nav.mjs +12 -12
  85. package/fesm2022/acorex-components-nav.mjs.map +1 -1
  86. package/fesm2022/acorex-components-navbar.mjs +8 -8
  87. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  88. package/fesm2022/acorex-components-notification.mjs +11 -11
  89. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  90. package/fesm2022/acorex-components-number-box.mjs +8 -8
  91. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  92. package/fesm2022/acorex-components-otp.mjs +9 -9
  93. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  94. package/fesm2022/acorex-components-page.mjs +10 -10
  95. package/fesm2022/acorex-components-paint.mjs +38 -30
  96. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  97. package/fesm2022/acorex-components-password-box.mjs +12 -12
  98. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  99. package/fesm2022/acorex-components-phone-box.mjs +8 -8
  100. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  101. package/fesm2022/acorex-components-picker.mjs +12 -11
  102. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  103. package/fesm2022/acorex-components-popover.mjs +8 -8
  104. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  105. package/fesm2022/acorex-components-popup.mjs +11 -11
  106. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  107. package/fesm2022/acorex-components-progress-bar.mjs +8 -8
  108. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  109. package/fesm2022/acorex-components-qrcode.mjs +8 -8
  110. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  111. package/fesm2022/acorex-components-radio.mjs +8 -8
  112. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  113. package/fesm2022/acorex-components-range-slider.mjs +18 -11
  114. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  115. package/fesm2022/acorex-components-rate-picker.mjs +8 -8
  116. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  117. package/fesm2022/acorex-components-result.mjs +8 -8
  118. package/fesm2022/acorex-components-result.mjs.map +1 -1
  119. package/fesm2022/acorex-components-routing-progress.mjs +8 -8
  120. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  121. package/fesm2022/acorex-components-scheduler.mjs +16 -16
  122. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  123. package/fesm2022/acorex-components-scss.mjs +4 -4
  124. package/fesm2022/acorex-components-search-box.mjs +8 -8
  125. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  126. package/fesm2022/acorex-components-select-box.mjs +8 -8
  127. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  128. package/fesm2022/acorex-components-selection-list.mjs +8 -8
  129. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  130. package/fesm2022/acorex-components-side-menu.mjs +12 -12
  131. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  132. package/fesm2022/acorex-components-skeleton.mjs +8 -8
  133. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  134. package/fesm2022/acorex-components-slider.mjs +8 -8
  135. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  136. package/fesm2022/acorex-components-step-wizard.mjs +16 -15
  137. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  138. package/fesm2022/acorex-components-switch.mjs +12 -11
  139. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  140. package/fesm2022/acorex-components-tabs.mjs +44 -46
  141. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  142. package/fesm2022/acorex-components-tag.mjs +8 -8
  143. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  144. package/fesm2022/acorex-components-text-area.mjs +8 -8
  145. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  146. package/fesm2022/acorex-components-text-box.mjs +12 -11
  147. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  148. package/fesm2022/acorex-components-time-line.mjs +14 -14
  149. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  150. package/fesm2022/acorex-components-toast.mjs +11 -11
  151. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  152. package/fesm2022/acorex-components-tooltip.mjs +12 -11
  153. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  154. package/fesm2022/acorex-components-tree-view.mjs +13 -13
  155. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  156. package/fesm2022/acorex-components-uploader.mjs +27 -25
  157. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  158. package/fesm2022/acorex-components-wysiwyg.mjs +47 -47
  159. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  160. package/image-editor/lib/image-editor-view/image-editor-view.component.d.ts +1 -0
  161. package/map/index.d.ts +2 -1
  162. package/map/lib/map.component.d.ts +1 -1
  163. package/map/lib/map.config.d.ts +13 -0
  164. package/map/lib/map.service.d.ts +37 -0
  165. package/package.json +4 -166
  166. package/paint/lib/paint/paint-tools/paint-pen-mode-changer/paint-pen-mode-changer.component.d.ts +5 -2
  167. package/range-slider/lib/range-slider.component.d.ts +1 -0
  168. package/esm2022/acorex-components.mjs +0 -5
  169. package/esm2022/action-sheet/acorex-components-action-sheet.mjs +0 -5
  170. package/esm2022/action-sheet/index.mjs +0 -5
  171. package/esm2022/action-sheet/lib/action-sheet.class.mjs +0 -2
  172. package/esm2022/action-sheet/lib/action-sheet.component.mjs +0 -109
  173. package/esm2022/action-sheet/lib/action-sheet.module.mjs +0 -54
  174. package/esm2022/action-sheet/lib/action-sheet.service.mjs +0 -60
  175. package/esm2022/alert/acorex-components-alert.mjs +0 -5
  176. package/esm2022/alert/index.mjs +0 -3
  177. package/esm2022/alert/lib/alert.component.mjs +0 -142
  178. package/esm2022/alert/lib/alert.module.mjs +0 -22
  179. package/esm2022/audio-wave/acorex-components-audio-wave.mjs +0 -5
  180. package/esm2022/audio-wave/index.mjs +0 -4
  181. package/esm2022/audio-wave/lib/audio-wave.component.mjs +0 -347
  182. package/esm2022/audio-wave/lib/audio-wave.module.mjs +0 -22
  183. package/esm2022/audio-wave/lib/interfaces/audio-wave.interface.mjs +0 -2
  184. package/esm2022/avatar/acorex-components-avatar.mjs +0 -5
  185. package/esm2022/avatar/index.mjs +0 -4
  186. package/esm2022/avatar/lib/avatar-group.component.mjs +0 -14
  187. package/esm2022/avatar/lib/avatar.component.mjs +0 -54
  188. package/esm2022/avatar/lib/avatar.module.mjs +0 -22
  189. package/esm2022/badge/acorex-components-badge.mjs +0 -5
  190. package/esm2022/badge/index.mjs +0 -3
  191. package/esm2022/badge/lib/badge.component.mjs +0 -30
  192. package/esm2022/badge/lib/badge.module.mjs +0 -19
  193. package/esm2022/bottom-navigation/acorex-components-bottom-navigation.mjs +0 -5
  194. package/esm2022/bottom-navigation/index.mjs +0 -4
  195. package/esm2022/bottom-navigation/lib/bottom-navigation-item/bottom-navigation-item.component.mjs +0 -46
  196. package/esm2022/bottom-navigation/lib/bottom-navigation.component.mjs +0 -67
  197. package/esm2022/bottom-navigation/lib/bottom-navigation.module.mjs +0 -22
  198. package/esm2022/breadcrumbs/acorex-components-breadcrumbs.mjs +0 -5
  199. package/esm2022/breadcrumbs/index.mjs +0 -5
  200. package/esm2022/breadcrumbs/lib/breadcrumbs-item.class.mjs +0 -2
  201. package/esm2022/breadcrumbs/lib/breadcrumbs-item.component.mjs +0 -41
  202. package/esm2022/breadcrumbs/lib/breadcrumbs.component.mjs +0 -31
  203. package/esm2022/breadcrumbs/lib/breadcrumbs.module.mjs +0 -21
  204. package/esm2022/button/acorex-components-button.mjs +0 -5
  205. package/esm2022/button/index.mjs +0 -7
  206. package/esm2022/button/lib/button-item-list.component.mjs +0 -153
  207. package/esm2022/button/lib/button-item.class.mjs +0 -2
  208. package/esm2022/button/lib/button-item.component.mjs +0 -152
  209. package/esm2022/button/lib/button.class.mjs +0 -2
  210. package/esm2022/button/lib/button.component.mjs +0 -116
  211. package/esm2022/button/lib/button.module.mjs +0 -26
  212. package/esm2022/button-group/acorex-components-button-group.mjs +0 -5
  213. package/esm2022/button-group/index.mjs +0 -4
  214. package/esm2022/button-group/lib/button-group-item.component.mjs +0 -141
  215. package/esm2022/button-group/lib/button-group.component.mjs +0 -170
  216. package/esm2022/button-group/lib/button-group.module.mjs +0 -23
  217. package/esm2022/calendar/acorex-components-calendar.mjs +0 -5
  218. package/esm2022/calendar/index.mjs +0 -5
  219. package/esm2022/calendar/lib/calendar-range.component.mjs +0 -248
  220. package/esm2022/calendar/lib/calendar.class.mjs +0 -163
  221. package/esm2022/calendar/lib/calendar.component.mjs +0 -631
  222. package/esm2022/calendar/lib/calendar.module.mjs +0 -26
  223. package/esm2022/check-box/acorex-components-check-box.mjs +0 -5
  224. package/esm2022/check-box/index.mjs +0 -3
  225. package/esm2022/check-box/lib/check-box.component.mjs +0 -138
  226. package/esm2022/check-box/lib/check-box.module.mjs +0 -21
  227. package/esm2022/chips/acorex-components-chips.mjs +0 -5
  228. package/esm2022/chips/index.mjs +0 -3
  229. package/esm2022/chips/lib/chips.component.mjs +0 -36
  230. package/esm2022/chips/lib/chips.module.mjs +0 -19
  231. package/esm2022/circular-progress/acorex-components-circular-progress.mjs +0 -5
  232. package/esm2022/circular-progress/index.mjs +0 -3
  233. package/esm2022/circular-progress/lib/circular-progress.component.mjs +0 -95
  234. package/esm2022/circular-progress/lib/circular-progress.module.mjs +0 -17
  235. package/esm2022/collapse/acorex-components-collapse.mjs +0 -5
  236. package/esm2022/collapse/index.mjs +0 -4
  237. package/esm2022/collapse/lib/collapse-group.component.mjs +0 -171
  238. package/esm2022/collapse/lib/collapse.component.mjs +0 -198
  239. package/esm2022/collapse/lib/collapse.module.mjs +0 -21
  240. package/esm2022/color-box/acorex-components-color-box.mjs +0 -5
  241. package/esm2022/color-box/index.mjs +0 -3
  242. package/esm2022/color-box/lib/color-box.component.mjs +0 -92
  243. package/esm2022/color-box/lib/color-box.module.mjs +0 -24
  244. package/esm2022/color-palette/acorex-components-color-palette.mjs +0 -5
  245. package/esm2022/color-palette/index.mjs +0 -8
  246. package/esm2022/color-palette/lib/color-palette-input.component.mjs +0 -157
  247. package/esm2022/color-palette/lib/color-palette-picker.component.mjs +0 -277
  248. package/esm2022/color-palette/lib/color-palette-preview.component.mjs +0 -80
  249. package/esm2022/color-palette/lib/color-palette-swatches.component.mjs +0 -121
  250. package/esm2022/color-palette/lib/color-palette.class.mjs +0 -238
  251. package/esm2022/color-palette/lib/color-palette.component.mjs +0 -58
  252. package/esm2022/color-palette/lib/color-palette.module.mjs +0 -66
  253. package/esm2022/comment/acorex-components-comment.mjs +0 -5
  254. package/esm2022/comment/index.mjs +0 -10
  255. package/esm2022/comment/lib/comment-container/comment-container.component.mjs +0 -37
  256. package/esm2022/comment/lib/comment-item/comment-item.component.mjs +0 -37
  257. package/esm2022/comment/lib/comment-tools/comment-date/comment-date.component.mjs +0 -16
  258. package/esm2022/comment/lib/comment-tools/comment-like/comment-like.component.mjs +0 -28
  259. package/esm2022/comment/lib/comment-tools/comment-menu-options/comment-menu-options.component.mjs +0 -16
  260. package/esm2022/comment/lib/comment-tools/comment-reply-more/comment-reply-more.component.mjs +0 -12
  261. package/esm2022/comment/lib/comment-tools/comment-reply-text/comment-reply-text.component.mjs +0 -12
  262. package/esm2022/comment/lib/comment-view/comment-view.component.mjs +0 -15
  263. package/esm2022/comment/lib/comment.module.mjs +0 -71
  264. package/esm2022/common/acorex-components-common.mjs +0 -5
  265. package/esm2022/common/index.mjs +0 -31
  266. package/esm2022/common/lib/classes/components.class.mjs +0 -76
  267. package/esm2022/common/lib/classes/datalist.class.mjs +0 -50
  268. package/esm2022/common/lib/classes/datasource.class.mjs +0 -134
  269. package/esm2022/common/lib/classes/events.class.mjs +0 -79
  270. package/esm2022/common/lib/classes/styles.class.mjs +0 -13
  271. package/esm2022/common/lib/common.module.mjs +0 -22
  272. package/esm2022/common/lib/components/base-component.class.mjs +0 -74
  273. package/esm2022/common/lib/components/button-base-component.class.mjs +0 -88
  274. package/esm2022/common/lib/components/color-component.class.mjs +0 -25
  275. package/esm2022/common/lib/components/colorlook-component.class.mjs +0 -6
  276. package/esm2022/common/lib/components/input-base-value-component.class.mjs +0 -54
  277. package/esm2022/common/lib/components/interactive-component.class.mjs +0 -129
  278. package/esm2022/common/lib/components/look-component.class.mjs +0 -33
  279. package/esm2022/common/lib/components/selection-base.component.class.mjs +0 -233
  280. package/esm2022/common/lib/components/value-component.class.mjs +0 -232
  281. package/esm2022/common/lib/directives/auto-focus.directive.mjs +0 -63
  282. package/esm2022/common/lib/directives/delayed-value-changed.directive.mjs +0 -51
  283. package/esm2022/common/lib/directives/hotkey.directive.mjs +0 -80
  284. package/esm2022/common/lib/directives/infinite-scroll.directive.mjs +0 -60
  285. package/esm2022/common/lib/directives/inverted-color.directive.mjs +0 -52
  286. package/esm2022/common/lib/directives/responsive.directive.mjs +0 -37
  287. package/esm2022/common/lib/directives/ripple.directive.mjs +0 -65
  288. package/esm2022/common/lib/services/dom.service.mjs +0 -16
  289. package/esm2022/common/lib/services/hotkey.service.mjs +0 -52
  290. package/esm2022/common/lib/types/base/button.type.mjs +0 -18
  291. package/esm2022/common/lib/types/base/color.type.mjs +0 -16
  292. package/esm2022/common/lib/types/base/component.types.mjs +0 -27
  293. package/esm2022/common/lib/types/base/events.types.mjs +0 -19
  294. package/esm2022/common/lib/types/base/index.mjs +0 -8
  295. package/esm2022/common/lib/types/base/interactive.type.mjs +0 -31
  296. package/esm2022/common/lib/types/base/look.type.mjs +0 -16
  297. package/esm2022/common/lib/types/base/value.type.mjs +0 -19
  298. package/esm2022/common/lib/types/direction.mjs +0 -2
  299. package/esm2022/common/lib/types/orientation.mjs +0 -2
  300. package/esm2022/common/lib/types/placement.mjs +0 -166
  301. package/esm2022/common/lib/types/range.mjs +0 -2
  302. package/esm2022/common/lib/types/selection-mode.mjs +0 -5
  303. package/esm2022/conversation/acorex-components-conversation.mjs +0 -5
  304. package/esm2022/conversation/index.mjs +0 -19
  305. package/esm2022/conversation/lib/classes/events.interface.mjs +0 -4
  306. package/esm2022/conversation/lib/conversation-container/conversation-container.component.mjs +0 -15
  307. package/esm2022/conversation/lib/conversation-input/conversation-input.component.mjs +0 -193
  308. package/esm2022/conversation/lib/conversation-input/conversation-input.interface.mjs +0 -2
  309. package/esm2022/conversation/lib/conversation-message/conversation-message.component.mjs +0 -110
  310. package/esm2022/conversation/lib/conversation-messages/conversation-message-audio/conversation-message-audio.component.mjs +0 -147
  311. package/esm2022/conversation/lib/conversation-messages/conversation-message-file/conversation-message-file.component.mjs +0 -79
  312. package/esm2022/conversation/lib/conversation-messages/conversation-message-image/conversation-message-image.component.mjs +0 -69
  313. package/esm2022/conversation/lib/conversation-messages/conversation-message-image-popup/conversation-message-image-popup.component.mjs +0 -24
  314. package/esm2022/conversation/lib/conversation-messages/conversation-message-text/conversation-message-text.component.mjs +0 -130
  315. package/esm2022/conversation/lib/conversation-messages/conversation-message-video/conversation-message-video.component.mjs +0 -31
  316. package/esm2022/conversation/lib/conversation-messages/conversation-message-voice/conversation-message-voice.component.mjs +0 -190
  317. package/esm2022/conversation/lib/conversation-view/conversation-view.component.mjs +0 -52
  318. package/esm2022/conversation/lib/conversation.module.mjs +0 -200
  319. package/esm2022/conversation/lib/conversation.types.mjs +0 -10
  320. package/esm2022/conversation/lib/services/conversation-message-type-registry.service.mjs +0 -20
  321. package/esm2022/conversation/lib/services/conversation.service.mjs +0 -14
  322. package/esm2022/conversation/lib/services/recording.service.mjs +0 -76
  323. package/esm2022/cron-job/acorex-components-cron-job.mjs +0 -5
  324. package/esm2022/cron-job/index.mjs +0 -9
  325. package/esm2022/cron-job/lib/cron-job-container/cron-job-container.component.mjs +0 -107
  326. package/esm2022/cron-job/lib/cron-job.module.mjs +0 -80
  327. package/esm2022/cron-job/lib/cron-job.service.mjs +0 -60
  328. package/esm2022/cron-job/lib/day/day.component.mjs +0 -66
  329. package/esm2022/cron-job/lib/day/day.model.mjs +0 -88
  330. package/esm2022/cron-job/lib/day/day.service.mjs +0 -196
  331. package/esm2022/cron-job/lib/hours/hours.component.mjs +0 -43
  332. package/esm2022/cron-job/lib/hours/hours.model.mjs +0 -8
  333. package/esm2022/cron-job/lib/hours/hours.service.mjs +0 -82
  334. package/esm2022/cron-job/lib/minutes/minutes.component.mjs +0 -43
  335. package/esm2022/cron-job/lib/minutes/minutes.model.mjs +0 -8
  336. package/esm2022/cron-job/lib/minutes/minutes.service.mjs +0 -82
  337. package/esm2022/cron-job/lib/month/month.component.mjs +0 -52
  338. package/esm2022/cron-job/lib/month/month.model.mjs +0 -8
  339. package/esm2022/cron-job/lib/month/month.service.mjs +0 -96
  340. package/esm2022/cron-job/lib/seconds/seconds.component.mjs +0 -43
  341. package/esm2022/cron-job/lib/seconds/seconds.model.mjs +0 -8
  342. package/esm2022/cron-job/lib/seconds/seconds.service.mjs +0 -82
  343. package/esm2022/cron-job/lib/types/iexpression.mjs +0 -2
  344. package/esm2022/cron-job/lib/types/shared.model.mjs +0 -49
  345. package/esm2022/cron-job/lib/year/year.component.mjs +0 -50
  346. package/esm2022/cron-job/lib/year/year.model.mjs +0 -28
  347. package/esm2022/cron-job/lib/year/year.service.mjs +0 -82
  348. package/esm2022/data-pager/acorex-components-data-pager.mjs +0 -5
  349. package/esm2022/data-pager/index.mjs +0 -10
  350. package/esm2022/data-pager/lib/data-pager-base.component.mjs +0 -52
  351. package/esm2022/data-pager/lib/data-pager-info.component.mjs +0 -50
  352. package/esm2022/data-pager/lib/data-pager-input-selector.component.mjs +0 -90
  353. package/esm2022/data-pager/lib/data-pager-next-buttons.components.mjs +0 -113
  354. package/esm2022/data-pager/lib/data-pager-numeric-selector.component.mjs +0 -166
  355. package/esm2022/data-pager/lib/data-pager-pagesize-dropdown.component.mjs +0 -105
  356. package/esm2022/data-pager/lib/data-pager-prev-buttons.component.mjs +0 -112
  357. package/esm2022/data-pager/lib/data-pager.component.mjs +0 -298
  358. package/esm2022/data-pager/lib/data-pager.module.mjs +0 -73
  359. package/esm2022/data-table/acorex-components-data-table.mjs +0 -5
  360. package/esm2022/data-table/index.mjs +0 -11
  361. package/esm2022/data-table/lib/base-data-table.class.mjs +0 -46
  362. package/esm2022/data-table/lib/columns/data-table-column-resizable.directive.mjs +0 -61
  363. package/esm2022/data-table/lib/columns/data-table-column.mjs +0 -34
  364. package/esm2022/data-table/lib/columns/data-text-column.component.mjs +0 -128
  365. package/esm2022/data-table/lib/columns/row-command-column.component.mjs +0 -343
  366. package/esm2022/data-table/lib/columns/row-index-column.component.mjs +0 -128
  367. package/esm2022/data-table/lib/columns/row-select-column.component.mjs +0 -168
  368. package/esm2022/data-table/lib/data-table/data-table.component.mjs +0 -513
  369. package/esm2022/data-table/lib/data-table.module.mjs +0 -107
  370. package/esm2022/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.mjs +0 -438
  371. package/esm2022/datetime-box/acorex-components-datetime-box.mjs +0 -5
  372. package/esm2022/datetime-box/index.mjs +0 -3
  373. package/esm2022/datetime-box/lib/datetime-box.component.mjs +0 -186
  374. package/esm2022/datetime-box/lib/datetime-box.module.mjs +0 -26
  375. package/esm2022/datetime-input/acorex-components-datetime-input.mjs +0 -5
  376. package/esm2022/datetime-input/index.mjs +0 -3
  377. package/esm2022/datetime-input/lib/datetime-input.component.mjs +0 -673
  378. package/esm2022/datetime-input/lib/datetime-input.module.mjs +0 -23
  379. package/esm2022/datetime-picker/acorex-components-datetime-picker.mjs +0 -5
  380. package/esm2022/datetime-picker/index.mjs +0 -4
  381. package/esm2022/datetime-picker/lib/datetime-picker.component.mjs +0 -389
  382. package/esm2022/datetime-picker/lib/datetime-picker.config.mjs +0 -22
  383. package/esm2022/datetime-picker/lib/datetime-picker.module.mjs +0 -44
  384. package/esm2022/decorators/acorex-components-decorators.mjs +0 -5
  385. package/esm2022/decorators/index.mjs +0 -6
  386. package/esm2022/decorators/lib/components/clear-button.component.mjs +0 -80
  387. package/esm2022/decorators/lib/components/close-button.component.mjs +0 -65
  388. package/esm2022/decorators/lib/components/generic-content.component.mjs +0 -42
  389. package/esm2022/decorators/lib/components/icon.component.mjs +0 -37
  390. package/esm2022/decorators/lib/decorators.module.mjs +0 -24
  391. package/esm2022/dialog/acorex-components-dialog.mjs +0 -5
  392. package/esm2022/dialog/index.mjs +0 -5
  393. package/esm2022/dialog/lib/dialog.class.mjs +0 -2
  394. package/esm2022/dialog/lib/dialog.component.mjs +0 -77
  395. package/esm2022/dialog/lib/dialog.module.mjs +0 -48
  396. package/esm2022/dialog/lib/dialog.service.mjs +0 -168
  397. package/esm2022/drawer/acorex-components-drawer.mjs +0 -5
  398. package/esm2022/drawer/index.mjs +0 -4
  399. package/esm2022/drawer/lib/drawer/drawer-container/drawer-container.component.mjs +0 -32
  400. package/esm2022/drawer/lib/drawer/drawer-item/drawer.component.mjs +0 -157
  401. package/esm2022/drawer/lib/drawer.module.mjs +0 -22
  402. package/esm2022/drawer/lib/drawer.service.mjs +0 -13
  403. package/esm2022/dropdown/acorex-components-dropdown.mjs +0 -5
  404. package/esm2022/dropdown/index.mjs +0 -5
  405. package/esm2022/dropdown/lib/dropdown-box.class.mjs +0 -50
  406. package/esm2022/dropdown/lib/dropdown-box.component.mjs +0 -160
  407. package/esm2022/dropdown/lib/dropdown-panel.component.mjs +0 -221
  408. package/esm2022/dropdown/lib/dropdown.module.mjs +0 -25
  409. package/esm2022/dropdown-button/acorex-components-dropdown-button.mjs +0 -5
  410. package/esm2022/dropdown-button/index.mjs +0 -3
  411. package/esm2022/dropdown-button/lib/dropdown-button.component.mjs +0 -124
  412. package/esm2022/dropdown-button/lib/dropdown-button.module.mjs +0 -26
  413. package/esm2022/form/acorex-components-form.mjs +0 -5
  414. package/esm2022/form/index.mjs +0 -7
  415. package/esm2022/form/lib/form-field.component.mjs +0 -142
  416. package/esm2022/form/lib/form.component.mjs +0 -205
  417. package/esm2022/form/lib/form.config.mjs +0 -16
  418. package/esm2022/form/lib/form.module.mjs +0 -27
  419. package/esm2022/form/lib/validation-rule.directive.mjs +0 -36
  420. package/esm2022/form/lib/validation-summary.component.mjs +0 -157
  421. package/esm2022/image/acorex-components-image.mjs +0 -5
  422. package/esm2022/image/index.mjs +0 -3
  423. package/esm2022/image/lib/image.component.mjs +0 -118
  424. package/esm2022/image/lib/image.module.mjs +0 -19
  425. package/esm2022/image-editor/acorex-components-image-editor.mjs +0 -5
  426. package/esm2022/image-editor/index.mjs +0 -8
  427. package/esm2022/image-editor/lib/image-editor-container/image-editor-container.component.mjs +0 -24
  428. package/esm2022/image-editor/lib/image-editor-toolbar/image-editor-toolbar.component.mjs +0 -69
  429. package/esm2022/image-editor/lib/image-editor-tools/image-editor-color-picker/image-editor-color-picker.component.mjs +0 -36
  430. package/esm2022/image-editor/lib/image-editor-tools/image-editor-crop/image-editor-crop.component.mjs +0 -37
  431. package/esm2022/image-editor/lib/image-editor-tools/image-editor-pen-mode-changer/image-editor-pen-mode-changer.component.mjs +0 -57
  432. package/esm2022/image-editor/lib/image-editor-view/image-editor-view.component.mjs +0 -359
  433. package/esm2022/image-editor/lib/image-editor.module.mjs +0 -72
  434. package/esm2022/image-editor/lib/image-editor.service.mjs +0 -23
  435. package/esm2022/index.mjs +0 -2
  436. package/esm2022/json-viewer/acorex-components-json-viewer.mjs +0 -5
  437. package/esm2022/json-viewer/index.mjs +0 -3
  438. package/esm2022/json-viewer/lib/json-viewer/json-viewer.component.mjs +0 -43
  439. package/esm2022/json-viewer/lib/json-viewer.module.mjs +0 -23
  440. package/esm2022/label/acorex-components-label.mjs +0 -5
  441. package/esm2022/label/index.mjs +0 -3
  442. package/esm2022/label/lib/label.component.mjs +0 -78
  443. package/esm2022/label/lib/label.module.mjs +0 -21
  444. package/esm2022/list/acorex-components-list.mjs +0 -5
  445. package/esm2022/list/index.mjs +0 -3
  446. package/esm2022/list/lib/list.component.mjs +0 -295
  447. package/esm2022/list/lib/list.module.mjs +0 -23
  448. package/esm2022/loading/acorex-components-loading.mjs +0 -5
  449. package/esm2022/loading/index.mjs +0 -7
  450. package/esm2022/loading/lib/loading-spinner.component.mjs +0 -62
  451. package/esm2022/loading/lib/loading.component.mjs +0 -80
  452. package/esm2022/loading/lib/loading.config.mjs +0 -17
  453. package/esm2022/loading/lib/loading.directive.mjs +0 -39
  454. package/esm2022/loading/lib/loading.module.mjs +0 -27
  455. package/esm2022/loading/lib/loading.service.mjs +0 -123
  456. package/esm2022/loading-dialog/acorex-components-loading-dialog.mjs +0 -5
  457. package/esm2022/loading-dialog/index.mjs +0 -5
  458. package/esm2022/loading-dialog/lib/loading-dialog.class.mjs +0 -2
  459. package/esm2022/loading-dialog/lib/loading-dialog.component.mjs +0 -98
  460. package/esm2022/loading-dialog/lib/loading-dialog.module.mjs +0 -27
  461. package/esm2022/loading-dialog/lib/loading-dialog.service.mjs +0 -37
  462. package/esm2022/map/acorex-components-map.mjs +0 -5
  463. package/esm2022/map/index.mjs +0 -3
  464. package/esm2022/map/lib/map.component.mjs +0 -182
  465. package/esm2022/map/lib/map.module.mjs +0 -18
  466. package/esm2022/media-viewer/acorex-components-media-viewer.mjs +0 -5
  467. package/esm2022/media-viewer/index.mjs +0 -12
  468. package/esm2022/media-viewer/lib/media-viewer-container/media-viewer-container.component.mjs +0 -52
  469. package/esm2022/media-viewer/lib/media-viewer-slider/media-viewer-slider.component.mjs +0 -37
  470. package/esm2022/media-viewer/lib/media-viewer-thumbnail/media-viewer-thumbnail.component.mjs +0 -24
  471. package/esm2022/media-viewer/lib/media-viewer-tools/audio-player/audio-player.component.mjs +0 -19
  472. package/esm2022/media-viewer/lib/media-viewer-tools/file-info/file-info.component.mjs +0 -21
  473. package/esm2022/media-viewer/lib/media-viewer-tools/full-screen/full-screen.component.mjs +0 -20
  474. package/esm2022/media-viewer/lib/media-viewer-tools/image-viewer/image-viewer.component.mjs +0 -15
  475. package/esm2022/media-viewer/lib/media-viewer-tools/pdf-reader/pdf-reader.component.mjs +0 -17
  476. package/esm2022/media-viewer/lib/media-viewer-tools/video-player/video-player.component.mjs +0 -19
  477. package/esm2022/media-viewer/lib/media-viewer-type-registry.service.mjs +0 -20
  478. package/esm2022/media-viewer/lib/media-viewer-types.mjs +0 -10
  479. package/esm2022/media-viewer/lib/media-viewer.module.mjs +0 -140
  480. package/esm2022/media-viewer/lib/media-viewer.service.mjs +0 -15
  481. package/esm2022/menu/acorex-components-menu.mjs +0 -5
  482. package/esm2022/menu/index.mjs +0 -7
  483. package/esm2022/menu/lib/context-menu.component.mjs +0 -251
  484. package/esm2022/menu/lib/menu-item.component.mjs +0 -310
  485. package/esm2022/menu/lib/menu.component.mjs +0 -58
  486. package/esm2022/menu/lib/menu.module.mjs +0 -28
  487. package/esm2022/menu/lib/menu.service.mjs +0 -19
  488. package/esm2022/menu/lib/menu.types.mjs +0 -14
  489. package/esm2022/nav/acorex-components-nav.mjs +0 -5
  490. package/esm2022/nav/index.mjs +0 -4
  491. package/esm2022/nav/lib/nav-item/nav-item.component.mjs +0 -63
  492. package/esm2022/nav/lib/nav.component.mjs +0 -16
  493. package/esm2022/nav/lib/nav.module.mjs +0 -23
  494. package/esm2022/navbar/acorex-components-navbar.mjs +0 -5
  495. package/esm2022/navbar/index.mjs +0 -3
  496. package/esm2022/navbar/lib/navbar.component.mjs +0 -23
  497. package/esm2022/navbar/lib/navbar.module.mjs +0 -18
  498. package/esm2022/notification/acorex-components-notification.mjs +0 -5
  499. package/esm2022/notification/index.mjs +0 -6
  500. package/esm2022/notification/lib/notification.class.mjs +0 -2
  501. package/esm2022/notification/lib/notification.component.mjs +0 -110
  502. package/esm2022/notification/lib/notification.config.mjs +0 -21
  503. package/esm2022/notification/lib/notification.module.mjs +0 -28
  504. package/esm2022/notification/lib/notification.service.mjs +0 -195
  505. package/esm2022/number-box/acorex-components-number-box.mjs +0 -5
  506. package/esm2022/number-box/index.mjs +0 -3
  507. package/esm2022/number-box/lib/number-box.component.mjs +0 -378
  508. package/esm2022/number-box/lib/number-box.module.mjs +0 -25
  509. package/esm2022/otp/acorex-components-otp.mjs +0 -5
  510. package/esm2022/otp/index.mjs +0 -4
  511. package/esm2022/otp/lib/otp.class.mjs +0 -4
  512. package/esm2022/otp/lib/otp.component.mjs +0 -195
  513. package/esm2022/otp/lib/otp.module.mjs +0 -22
  514. package/esm2022/page/acorex-components-page.mjs +0 -5
  515. package/esm2022/page/index.mjs +0 -4
  516. package/esm2022/page/lib/base-page.class.mjs +0 -62
  517. package/esm2022/page/lib/page.component.mjs +0 -58
  518. package/esm2022/page/lib/page.module.mjs +0 -18
  519. package/esm2022/paint/acorex-components-paint.mjs +0 -5
  520. package/esm2022/paint/index.mjs +0 -7
  521. package/esm2022/paint/lib/paint/paint-container/paint-container.component.mjs +0 -41
  522. package/esm2022/paint/lib/paint/paint-toolbar/paint-toolbar.component.mjs +0 -15
  523. package/esm2022/paint/lib/paint/paint-tools/paint-color-picker/paint-color-picker.component.mjs +0 -36
  524. package/esm2022/paint/lib/paint/paint-tools/paint-pen-mode-changer/paint-pen-mode-changer.component.mjs +0 -56
  525. package/esm2022/paint/lib/paint/paint-view/paint-view.component.mjs +0 -161
  526. package/esm2022/paint/lib/paint/paint.service.mjs +0 -16
  527. package/esm2022/paint/lib/paint.module.mjs +0 -62
  528. package/esm2022/password-box/acorex-components-password-box.mjs +0 -5
  529. package/esm2022/password-box/index.mjs +0 -4
  530. package/esm2022/password-box/lib/password-box.component.mjs +0 -93
  531. package/esm2022/password-box/lib/password-box.module.mjs +0 -42
  532. package/esm2022/password-box/lib/password-strength-validation/password-strength-validation.component.mjs +0 -71
  533. package/esm2022/phone-box/acorex-components-phone-box.mjs +0 -5
  534. package/esm2022/phone-box/index.mjs +0 -3
  535. package/esm2022/phone-box/lib/phone-box.component.mjs +0 -207
  536. package/esm2022/phone-box/lib/phone-box.module.mjs +0 -44
  537. package/esm2022/picker/acorex-components-picker.mjs +0 -5
  538. package/esm2022/picker/index.mjs +0 -4
  539. package/esm2022/picker/lib/picker-column.directive.mjs +0 -66
  540. package/esm2022/picker/lib/picker.component.mjs +0 -193
  541. package/esm2022/picker/lib/picker.module.mjs +0 -22
  542. package/esm2022/popover/acorex-components-popover.mjs +0 -5
  543. package/esm2022/popover/index.mjs +0 -3
  544. package/esm2022/popover/lib/popover.component.mjs +0 -525
  545. package/esm2022/popover/lib/popover.module.mjs +0 -19
  546. package/esm2022/popup/acorex-components-popup.mjs +0 -5
  547. package/esm2022/popup/index.mjs +0 -5
  548. package/esm2022/popup/lib/popup.component.mjs +0 -178
  549. package/esm2022/popup/lib/popup.interface.mjs +0 -2
  550. package/esm2022/popup/lib/popup.module.mjs +0 -45
  551. package/esm2022/popup/lib/popup.service.mjs +0 -69
  552. package/esm2022/progress-bar/acorex-components-progress-bar.mjs +0 -5
  553. package/esm2022/progress-bar/index.mjs +0 -3
  554. package/esm2022/progress-bar/lib/progress-bar.component.mjs +0 -86
  555. package/esm2022/progress-bar/lib/progress-bar.module.mjs +0 -19
  556. package/esm2022/qrcode/acorex-components-qrcode.mjs +0 -5
  557. package/esm2022/qrcode/index.mjs +0 -4
  558. package/esm2022/qrcode/lib/qrcode.class.mjs +0 -12
  559. package/esm2022/qrcode/lib/qrcode.component.mjs +0 -93
  560. package/esm2022/qrcode/lib/qrcode.module.mjs +0 -18
  561. package/esm2022/radio/acorex-components-radio.mjs +0 -5
  562. package/esm2022/radio/index.mjs +0 -3
  563. package/esm2022/radio/lib/radio.component.mjs +0 -57
  564. package/esm2022/radio/lib/radio.module.mjs +0 -22
  565. package/esm2022/range-slider/acorex-components-range-slider.mjs +0 -5
  566. package/esm2022/range-slider/index.mjs +0 -4
  567. package/esm2022/range-slider/lib/range-slider.class.mjs +0 -3
  568. package/esm2022/range-slider/lib/range-slider.component.mjs +0 -650
  569. package/esm2022/range-slider/lib/range-slider.module.mjs +0 -18
  570. package/esm2022/rate-picker/acorex-components-rate-picker.mjs +0 -5
  571. package/esm2022/rate-picker/index.mjs +0 -3
  572. package/esm2022/rate-picker/lib/calculatePercentage.mjs +0 -45
  573. package/esm2022/rate-picker/lib/rate-picker.component.mjs +0 -253
  574. package/esm2022/rate-picker/lib/rate-picker.module.mjs +0 -18
  575. package/esm2022/result/acorex-components-result.mjs +0 -5
  576. package/esm2022/result/index.mjs +0 -3
  577. package/esm2022/result/lib/result.component.mjs +0 -41
  578. package/esm2022/result/lib/result.module.mjs +0 -19
  579. package/esm2022/routing-progress/acorex-components-routing-progress.mjs +0 -5
  580. package/esm2022/routing-progress/index.mjs +0 -3
  581. package/esm2022/routing-progress/lib/routing-progress.component.mjs +0 -72
  582. package/esm2022/routing-progress/lib/routing-progress.module.mjs +0 -21
  583. package/esm2022/scheduler/acorex-components-scheduler.mjs +0 -5
  584. package/esm2022/scheduler/index.mjs +0 -5
  585. package/esm2022/scheduler/lib/scheduler-month-view.component.mjs +0 -72
  586. package/esm2022/scheduler/lib/scheduler-week-view.component.mjs +0 -16
  587. package/esm2022/scheduler/lib/scheduler.component.mjs +0 -54
  588. package/esm2022/scheduler/lib/scheduler.module.mjs +0 -27
  589. package/esm2022/scss/acorex-components-scss.mjs +0 -5
  590. package/esm2022/scss/index.mjs +0 -2
  591. package/esm2022/scss/lib/scss.module.mjs +0 -15
  592. package/esm2022/search-box/acorex-components-search-box.mjs +0 -5
  593. package/esm2022/search-box/index.mjs +0 -3
  594. package/esm2022/search-box/lib/search-box.component.mjs +0 -90
  595. package/esm2022/search-box/lib/search-box.module.mjs +0 -46
  596. package/esm2022/select-box/acorex-components-select-box.mjs +0 -5
  597. package/esm2022/select-box/index.mjs +0 -3
  598. package/esm2022/select-box/lib/select-box.component.mjs +0 -368
  599. package/esm2022/select-box/lib/select-box.module.mjs +0 -69
  600. package/esm2022/selection-list/acorex-components-selection-list.mjs +0 -5
  601. package/esm2022/selection-list/index.mjs +0 -3
  602. package/esm2022/selection-list/lib/selection-list.component.mjs +0 -173
  603. package/esm2022/selection-list/lib/selection-list.module.mjs +0 -24
  604. package/esm2022/side-menu/acorex-components-side-menu.mjs +0 -5
  605. package/esm2022/side-menu/index.mjs +0 -4
  606. package/esm2022/side-menu/lib/side-menu-item/side-menu-item.component.mjs +0 -87
  607. package/esm2022/side-menu/lib/side-menu.component.mjs +0 -16
  608. package/esm2022/side-menu/lib/side-menu.module.mjs +0 -43
  609. package/esm2022/skeleton/acorex-components-skeleton.mjs +0 -5
  610. package/esm2022/skeleton/index.mjs +0 -3
  611. package/esm2022/skeleton/lib/skeleton.component.mjs +0 -34
  612. package/esm2022/skeleton/lib/skeleton.module.mjs +0 -18
  613. package/esm2022/slider/acorex-components-slider.mjs +0 -5
  614. package/esm2022/slider/index.mjs +0 -3
  615. package/esm2022/slider/lib/slider.component.mjs +0 -163
  616. package/esm2022/slider/lib/slider.module.mjs +0 -23
  617. package/esm2022/step-wizard/acorex-components-step-wizard.mjs +0 -5
  618. package/esm2022/step-wizard/index.mjs +0 -6
  619. package/esm2022/step-wizard/lib/step-wizard-item/step-wizard-item.component.mjs +0 -70
  620. package/esm2022/step-wizard/lib/step-wizard.class.mjs +0 -2
  621. package/esm2022/step-wizard/lib/step-wizard.component.mjs +0 -151
  622. package/esm2022/step-wizard/lib/step-wizard.directive.mjs +0 -28
  623. package/esm2022/step-wizard/lib/step-wizard.module.mjs +0 -25
  624. package/esm2022/switch/acorex-components-switch.mjs +0 -5
  625. package/esm2022/switch/index.mjs +0 -4
  626. package/esm2022/switch/lib/switch-content.component.mjs +0 -19
  627. package/esm2022/switch/lib/switch.component.mjs +0 -54
  628. package/esm2022/switch/lib/switch.module.mjs +0 -21
  629. package/esm2022/tabs/acorex-components-tabs.mjs +0 -5
  630. package/esm2022/tabs/index.mjs +0 -6
  631. package/esm2022/tabs/lib/tab-content.directive.mjs +0 -28
  632. package/esm2022/tabs/lib/tab-item.component.mjs +0 -149
  633. package/esm2022/tabs/lib/tabs.class.mjs +0 -4
  634. package/esm2022/tabs/lib/tabs.component.mjs +0 -183
  635. package/esm2022/tabs/lib/tabs.module.mjs +0 -25
  636. package/esm2022/tag/acorex-components-tag.mjs +0 -5
  637. package/esm2022/tag/index.mjs +0 -3
  638. package/esm2022/tag/lib/tag.component.mjs +0 -25
  639. package/esm2022/tag/lib/tag.module.mjs +0 -19
  640. package/esm2022/text-area/acorex-components-text-area.mjs +0 -5
  641. package/esm2022/text-area/index.mjs +0 -3
  642. package/esm2022/text-area/lib/text-area.component.mjs +0 -76
  643. package/esm2022/text-area/lib/text-area.module.mjs +0 -19
  644. package/esm2022/text-box/acorex-components-text-box.mjs +0 -5
  645. package/esm2022/text-box/index.mjs +0 -4
  646. package/esm2022/text-box/lib/mask-options.directive.mjs +0 -29
  647. package/esm2022/text-box/lib/text-box.component.mjs +0 -153
  648. package/esm2022/text-box/lib/text-box.module.mjs +0 -24
  649. package/esm2022/time-line/acorex-components-time-line.mjs +0 -5
  650. package/esm2022/time-line/index.mjs +0 -4
  651. package/esm2022/time-line/lib/time-line-item.component.mjs +0 -47
  652. package/esm2022/time-line/lib/time-line.component.mjs +0 -28
  653. package/esm2022/time-line/lib/time-line.module.mjs +0 -19
  654. package/esm2022/toast/acorex-components-toast.mjs +0 -5
  655. package/esm2022/toast/index.mjs +0 -6
  656. package/esm2022/toast/lib/toast.class.mjs +0 -2
  657. package/esm2022/toast/lib/toast.component.mjs +0 -86
  658. package/esm2022/toast/lib/toast.config.mjs +0 -26
  659. package/esm2022/toast/lib/toast.module.mjs +0 -27
  660. package/esm2022/toast/lib/toast.service.mjs +0 -235
  661. package/esm2022/tooltip/acorex-components-tooltip.mjs +0 -5
  662. package/esm2022/tooltip/index.mjs +0 -4
  663. package/esm2022/tooltip/lib/tooltip.component.mjs +0 -20
  664. package/esm2022/tooltip/lib/tooltip.directive.mjs +0 -80
  665. package/esm2022/tooltip/lib/tooltip.module.mjs +0 -22
  666. package/esm2022/tree-view/acorex-components-tree-view.mjs +0 -5
  667. package/esm2022/tree-view/index.mjs +0 -4
  668. package/esm2022/tree-view/lib/tree-view-item.component.mjs +0 -86
  669. package/esm2022/tree-view/lib/tree-view.class.mjs +0 -4
  670. package/esm2022/tree-view/lib/tree-view.component.mjs +0 -338
  671. package/esm2022/tree-view/lib/tree-view.component.module.mjs +0 -50
  672. package/esm2022/uploader/acorex-components-uploader.mjs +0 -5
  673. package/esm2022/uploader/index.mjs +0 -9
  674. package/esm2022/uploader/lib/uploader-browse-handle.directive.mjs +0 -27
  675. package/esm2022/uploader/lib/uploader-dialog-container/uploader-dialog-container.component.mjs +0 -55
  676. package/esm2022/uploader/lib/uploader-drop-zone/uploader-drop-zone.component.mjs +0 -27
  677. package/esm2022/uploader/lib/uploader-list/uploader-list.component.mjs +0 -24
  678. package/esm2022/uploader/lib/uploader-zone.directive.mjs +0 -121
  679. package/esm2022/uploader/lib/uploader.models.mjs +0 -100
  680. package/esm2022/uploader/lib/uploader.module.mjs +0 -76
  681. package/esm2022/uploader/lib/uploader.service.mjs +0 -125
  682. package/esm2022/wysiwyg/acorex-components-wysiwyg.mjs +0 -5
  683. package/esm2022/wysiwyg/index.mjs +0 -11
  684. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.mjs +0 -137
  685. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-toolbar/wysiwyg-toolbar.component.mjs +0 -21
  686. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-alignment/wysiwyg-alignment.component.mjs +0 -56
  687. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-colors/wysiwyg-colors.component.mjs +0 -76
  688. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-font-style/wysiwyg-font-style.component.mjs +0 -129
  689. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-history/wysiwyg-history.component.mjs +0 -30
  690. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-insert/wysiwyg-insert.component.mjs +0 -43
  691. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-list/wysiwyg-list.component.mjs +0 -64
  692. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-view/wysiwyg-view.component.mjs +0 -49
  693. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg.service.mjs +0 -17
  694. package/esm2022/wysiwyg/lib/wysiwyg.module.mjs +0 -75
@@ -1,631 +0,0 @@
1
- import { AXValuableComponent, MXInteractiveComponent, MXValueComponent, } from '@acorex/components/common';
2
- import { AXDateTimeRange } from '@acorex/core/date-time';
3
- import { ChangeDetectionStrategy, Component, HostBinding, HostListener, ViewEncapsulation, forwardRef, } from '@angular/core';
4
- import { AXUnsubscriber } from '@acorex/core/utils';
5
- import { isPlatformBrowser } from '@angular/common';
6
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
7
- import { classes } from 'polytype';
8
- import { MXCalendarBaseComponent, } from './calendar.class';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@acorex/core/utils";
11
- import * as i2 from "@angular/common";
12
- import * as i3 from "@acorex/components/common";
13
- import * as i4 from "@acorex/core/translation";
14
- /**
15
- * A calendar component that provides a customizable calendar view with various options for selection, navigation, and styling.
16
- *
17
- * @category Components
18
- */
19
- export class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveComponent, MXCalendarBaseComponent) {
20
- get displayRange() {
21
- return new AXDateTimeRange(this.views[0].range.startTime, this.views[this.views.length - 1].range.endTime);
22
- }
23
- /**
24
- * @ignore
25
- */
26
- _initValues() {
27
- this._today = this.calendarService.create(new Date(), this.type);
28
- this._weekdays = this._today.calendar.weekdays;
29
- }
30
- /**
31
- * @ignore
32
- */
33
- _refresh() {
34
- this._initValues();
35
- this.navTo(this.value || this._today);
36
- }
37
- /**
38
- * @ignore
39
- */
40
- constructor(unsubscriber) {
41
- super();
42
- /**
43
- * @ignore
44
- */
45
- this._today = this.calendarService.create(new Date(), this.type);
46
- /**
47
- * @ignore
48
- */
49
- this._navUserInteraction = false;
50
- /**
51
- * @ignore
52
- */
53
- this._footPrint = {
54
- year: null,
55
- month: null,
56
- day: null,
57
- };
58
- /**
59
- * @ignore
60
- */
61
- this.views = [];
62
- /**
63
- * @ignore
64
- */
65
- this._weekdays = [];
66
- this.calendarService.onHolidaysChanged.pipe(unsubscriber.takeUntilDestroy).subscribe(() => {
67
- this.render();
68
- });
69
- this.calendarService.calendarChanges$.pipe(unsubscriber.takeUntilDestroy).subscribe(() => {
70
- this._refresh();
71
- });
72
- }
73
- /**
74
- * @ignore
75
- */
76
- ngOnInit() {
77
- super.ngOnInit();
78
- this._initValues();
79
- }
80
- /**
81
- * @ignore
82
- */
83
- ngAfterViewInit() {
84
- if (!this.value) {
85
- this.goToday();
86
- }
87
- }
88
- /**
89
- * @ignore
90
- */
91
- render() {
92
- if (!this._viewStartDate)
93
- return;
94
- const applyCellClass = (slot, cellClass = this.cellClass) => {
95
- switch (typeof cellClass) {
96
- case 'string':
97
- cellClass.split(' ').forEach((c) => (slot.cssClass[c] = true));
98
- break;
99
- case 'object':
100
- Object.assign(slot.cssClass, cellClass);
101
- break;
102
- case 'function':
103
- applyCellClass(slot, cellClass(slot.date));
104
- break;
105
- }
106
- };
107
- this.views = [];
108
- for (let i = 0; i < this.count; i++) {
109
- switch (this.activeView) {
110
- case 'day':
111
- this.dayView(i, applyCellClass);
112
- break;
113
- case 'month':
114
- this.monthView(i, applyCellClass);
115
- break;
116
- case 'year':
117
- this.yearView(i, applyCellClass);
118
- break;
119
- }
120
- }
121
- this.cdr.markForCheck();
122
- }
123
- /**
124
- * @ignore
125
- */
126
- _setDisplayRange(current) {
127
- switch (this.activeView) {
128
- case 'year': {
129
- const y = current.startOf('year').year;
130
- const min = y - (y % 10);
131
- const max = min + 9;
132
- return new AXDateTimeRange(this.calendarService.create({
133
- year: min,
134
- month: 1,
135
- date: 1,
136
- }, this.type), this.calendarService.create({
137
- year: max,
138
- month: 12,
139
- date: 28,
140
- }, this.type));
141
- }
142
- case 'month':
143
- return new AXDateTimeRange(current.startOf('year'), current.endOf('year').add('day', -1));
144
- default:
145
- return new AXDateTimeRange(current.startOf('month'), current.endOf('month'));
146
- }
147
- }
148
- /**
149
- * @ignore
150
- */
151
- dayView(i, applyCellClass) {
152
- const current = this._viewStartDate.add('month', i);
153
- const view = {
154
- range: this._setDisplayRange(current),
155
- slots: [],
156
- };
157
- this.views.push(view);
158
- const a = view.range.enumurate('day');
159
- view.slots = a.map((d, i) => {
160
- const r = {};
161
- r.date = d;
162
- r.text = d.dayOfMonth;
163
- r.tooltip = d.format('longDate');
164
- r.today = d.equal(this._today, 'day');
165
- r.selected = this.value && d.equal(this.value, 'day');
166
- r.holiday = this.isHoliday(d) || this.isWeekend(d);
167
- r.disabled =
168
- (this.minValue && d.compare(this.minValue, 'day') == -1) ||
169
- (this.maxValue && d.compare(this.maxValue, 'day') == 1) ||
170
- this.isDisabled(d);
171
- //
172
- const focused = d.dayOfMonth == this._footPrint.day &&
173
- d.monthOfYear == this._footPrint.month &&
174
- d.year == this._footPrint.year;
175
- //
176
- if (r.disabled) {
177
- r.cssClass = {
178
- 'ax-state-disabled': true,
179
- };
180
- }
181
- else {
182
- r.cssClass = {
183
- 'ax-state-today': r.today,
184
- 'ax-state-selected': r.selected,
185
- 'ax-state-holiday': r.holiday,
186
- // 'ax-state-focused': focused,
187
- };
188
- }
189
- // ax-col-start-1 ax-col-start-2 ax-col-start-3 ax-col-start-4 ax-col-start-5 ax-col-start-6 ax-col-start-7
190
- r.cssClass[`ax-column-start-${view.range.startTime.dayOfWeek}`] = i == 0;
191
- if (this.cellClass)
192
- applyCellClass(r);
193
- return r;
194
- });
195
- }
196
- /**
197
- * @ignore
198
- */
199
- monthView(i, applyCellClass) {
200
- const current = this._viewStartDate.add('year', i);
201
- const view = {
202
- range: this._setDisplayRange(current),
203
- slots: [],
204
- };
205
- this.views.push(view);
206
- const a = view.range.enumurate('month');
207
- view.slots = a.map((d, i) => {
208
- const r = {};
209
- r.date = d;
210
- r.text = d.format('MMM');
211
- r.tooltip = d.format('MMMM YYYY');
212
- r.today = d.equal(this._today, 'month');
213
- //
214
- r.disabled =
215
- (this.minValue && d.compare(this.minValue, 'month') == -1) ||
216
- (this.maxValue && d.compare(this.maxValue, 'month') == 1);
217
- //
218
- r.selected = this.value && this.depth == 'month' && d.equal(this.value, 'month');
219
- //
220
- const focused = d.monthOfYear == this._footPrint.month && d.year == this._footPrint.year;
221
- //
222
- if (r.disabled) {
223
- r.cssClass = {
224
- 'ax-state-disabled': r.disabled,
225
- };
226
- }
227
- else {
228
- r.cssClass = {
229
- 'ax-state-today': r.today,
230
- 'ax-state-selected': r.selected,
231
- 'ax-state-focused': focused,
232
- };
233
- }
234
- applyCellClass(r);
235
- return r;
236
- });
237
- }
238
- /**
239
- * @ignore
240
- */
241
- yearView(i, applyCellClass) {
242
- const current = this._viewStartDate.add('year', i * 10);
243
- const view = {
244
- range: this._setDisplayRange(current),
245
- slots: [],
246
- };
247
- this.views.push(view);
248
- const a = view.range.enumurate('year');
249
- view.slots = a.map((d, i) => {
250
- const r = {};
251
- r.date = d;
252
- r.text = d.format('YYYY');
253
- r.tooltip = d.format('YYYY');
254
- r.today = d.equal(this._today, 'year');
255
- r.selected = this.value && this.depth == 'year' && d.equal(this.value, 'year');
256
- //
257
- const focused = d.year == this._footPrint.year;
258
- //
259
- r.disabled =
260
- (this.minValue && d.compare(this.minValue, 'year') == -1) ||
261
- (this.maxValue && d.compare(this.maxValue, 'year') == 1);
262
- //
263
- if (r.disabled) {
264
- r.cssClass = {
265
- 'ax-state-disabled': r.disabled,
266
- };
267
- }
268
- else {
269
- r.cssClass = {
270
- 'ax-state-today': r.today,
271
- 'ax-state-selected': r.selected,
272
- 'ax-state-focused': focused,
273
- };
274
- }
275
- applyCellClass(r);
276
- return r;
277
- });
278
- }
279
- /**
280
- * @ignore
281
- */
282
- _handlePrevClick() {
283
- this._navUserInteraction = true;
284
- this.prev();
285
- this._navUserInteraction = false;
286
- }
287
- /**
288
- * @ignore
289
- */
290
- _handleNextClick() {
291
- this._navUserInteraction = true;
292
- this.next();
293
- this._navUserInteraction = false;
294
- }
295
- /**
296
- * @ignore
297
- */
298
- _handleSlotClick(e, slot) {
299
- if (slot.disabled || this.disabled)
300
- return;
301
- //
302
- this.onSlotClick.emit({
303
- component: this,
304
- item: slot.date.date,
305
- isUserInteraction: true,
306
- nativeEvent: e,
307
- });
308
- //
309
- if (this.activeView == 'day') {
310
- this._setDate(slot.date.date);
311
- }
312
- else if (this.activeView == 'month' && this.depth == 'day') {
313
- this.activeView = 'day';
314
- this._footPrint.month = this.calendarService.create(slot.date.date, this.type).monthOfYear;
315
- this.navTo(slot.date);
316
- }
317
- else if (this.activeView == 'month' && this.depth == 'month') {
318
- this._setDate(slot.date.date);
319
- }
320
- else if (this.activeView == 'year' && (this.depth == 'day' || this.depth == 'month')) {
321
- this.activeView = 'month';
322
- this._footPrint.year = this.calendarService.create(slot.date.date, this.type).year;
323
- this.navTo(slot.date);
324
- }
325
- else if (this.activeView == 'year' && this.depth == 'year') {
326
- this._setDate(slot.date.date);
327
- }
328
- }
329
- /**
330
- * @ignore
331
- */
332
- _handleNavClick(e, view) {
333
- this._navUserInteraction = true;
334
- this.activeView = view;
335
- this._navUserInteraction = false;
336
- }
337
- toggleView() {
338
- if (this.activeView == 'day')
339
- this.activeView = 'month';
340
- else if (this.activeView == 'month')
341
- this.activeView = 'year';
342
- }
343
- /**
344
- * @ignore
345
- */
346
- internalOptionChanged(e) {
347
- if (e.name == 'depth' ||
348
- e.name == 'activeView' ||
349
- e.name == 'disabledDates' ||
350
- e.name == 'holidayDates') {
351
- this.render();
352
- }
353
- if (e.name == 'type') {
354
- this._refresh();
355
- }
356
- }
357
- /**
358
- * @ignore
359
- */
360
- internalSetValue(value) {
361
- if (!value)
362
- return null;
363
- const v = this.calendarService.convert(value);
364
- const isDisabled = this.isDisabled(v);
365
- if (isDisabled)
366
- return null;
367
- else
368
- return v.date;
369
- }
370
- /**
371
- * @ignore
372
- */
373
- internalValueChanged(value) {
374
- const val = this.calendarService.create(value, this.type);
375
- if (!this._viewStartDate ||
376
- val.compare(this.displayRange.startTime, this.activeView) == -1 ||
377
- val.compare(this.displayRange.endTime, this.activeView) == 1) {
378
- this._viewStartDate = this.calendarService.create(value, this.type);
379
- }
380
- this._footPrint.year = val.year;
381
- this._footPrint.month = val.monthOfYear;
382
- this._footPrint.day = val.dayOfMonth;
383
- if (isPlatformBrowser(this.platformID)) {
384
- const calendarSlots = Array.from(this.document.querySelectorAll('.ax-calendar-slot'));
385
- const selectedSlot = this.document.querySelector('.ax-state-selected');
386
- if (selectedSlot) {
387
- selectedSlot.classList.remove('ax-state-selected');
388
- }
389
- else {
390
- this.render();
391
- }
392
- calendarSlots.forEach((element) => {
393
- element = element;
394
- if (element.textContent == this._footPrint.day) {
395
- element.classList.add('ax-state-selected');
396
- }
397
- });
398
- }
399
- }
400
- /**
401
- * @ignore
402
- */
403
- _handleGoToday() {
404
- this._navUserInteraction = true;
405
- this._setDate(this._today.date);
406
- this.goToday();
407
- this._navUserInteraction = false;
408
- }
409
- /**
410
- * Navigates to the next item.
411
- * @ignore
412
- */
413
- next() {
414
- this._navNextPrev(false);
415
- }
416
- /**
417
- * Navigates to the previous item.
418
- * @ignore
419
- */
420
- prev() {
421
- this._navNextPrev(true);
422
- }
423
- /**
424
- * Sets focus to the currently selected calendar slot or the first available slot.
425
- * @ignore
426
- */
427
- focus() {
428
- const func = (s) => this.getHostElement().querySelector(s);
429
- const div = func('.ax-calendar-slots>div.ax-state-selected') || func('.ax-calendar-slots>div');
430
- div?.focus();
431
- }
432
- /**
433
- * @ignore
434
- */
435
- _navNextPrev(prev) {
436
- const sign = prev ? -1 : 1;
437
- if (this.activeView == 'day')
438
- this.navTo(this._viewStartDate.add('month', sign * 1 * this.count));
439
- else if (this.activeView == 'month')
440
- this.navTo(this._viewStartDate.add('year', sign * 1 * this.count));
441
- else
442
- this.navTo(this._viewStartDate.add('year', sign * 10 * this.count));
443
- }
444
- /**
445
- * Navigates to the current date.
446
- * @ignore
447
- */
448
- goToday() {
449
- this.navTo(this._today);
450
- }
451
- /**
452
- * Navigates to a specified date and updates the view.
453
- *
454
- * @param date - The date to navigate to, which can be a `Date` object or an `AXDateTime` instance.
455
- * @ignore
456
- */
457
- navTo(date) {
458
- const val = this.calendarService.convert(date, this.type);
459
- this._viewStartDate = val.startOf();
460
- this.render();
461
- //to make sure its rendred and displayRange is not null
462
- if (this.views.length > 0) {
463
- const vr = this.displayRange;
464
- this.onNavigate.emit({
465
- component: this,
466
- isUserInteraction: this._navUserInteraction,
467
- start: vr.startTime?.date,
468
- end: vr.endTime?.date,
469
- htmlElement: this.getHostElement(),
470
- });
471
- }
472
- }
473
- /**
474
- * @ignore
475
- */
476
- get __hostClass() {
477
- const _classes = {
478
- 'ax-state-disabled': this.disabled,
479
- 'ax-state-readonly': this.readonly,
480
- };
481
- return Object.entries(_classes)
482
- .filter((c) => c[1])
483
- .map((c) => c[0])
484
- .join(' ');
485
- }
486
- /**
487
- * @ignore
488
- */
489
- _setDate(value) {
490
- if (this.readonly || this.disabled)
491
- return;
492
- this.commitValue(this.calendarService.convert(value, this.type).startOf().date, true);
493
- }
494
- /**
495
- * @ignore
496
- */
497
- isDisabled(date) {
498
- if (Array.isArray(this.disabledDates) && this.disabledDates.length != 0) {
499
- return this.disabledDates.some((d) => date.equal(d, 'day'));
500
- }
501
- else if (typeof this.disabledDates == 'function') {
502
- return this.disabledDates(date.date);
503
- }
504
- return false;
505
- }
506
- /**
507
- * @ignore
508
- */
509
- isHoliday(date) {
510
- const gh = this.calendarService.holidays.some((d) => date.equal(d.date, 'day'));
511
- let dh = this.calendarService.holidays.some((d) => date.equal(d.date, 'day'));
512
- if (Array.isArray(this.holidayDates) && this.holidayDates.length != 0) {
513
- dh = this.holidayDates.some((d) => date.equal(d, 'day'));
514
- }
515
- else if (typeof this.holidayDates == 'function') {
516
- dh = this.holidayDates(date.date);
517
- }
518
- return gh || dh;
519
- }
520
- /**
521
- * @ignore
522
- */
523
- isWeekend(date) {
524
- const weekend = this.calendarService.resolveCalendar(this.type).weekend;
525
- return weekend.includes(date.dayOfWeek - 1);
526
- }
527
- /**
528
- * @ignore
529
- */
530
- _handleOnKeydownEvent(e) {
531
- //TODO: complete keyboad navigation
532
- const ignore = () => {
533
- e.preventDefault();
534
- e.stopPropagation();
535
- };
536
- if (e.code === 'ArrowRight' || e.code === 'ArrowLeft') {
537
- if (e.ctrlKey) {
538
- e.code === 'ArrowRight' ? this.next() : this.prev();
539
- setTimeout(() => {
540
- this.focus();
541
- }, 50);
542
- }
543
- ignore();
544
- }
545
- else if (e.code === 'ArrowUp' || e.code === 'ArrowDown') {
546
- if (e.ctrlKey) {
547
- e.code === 'ArrowUp' ? this.next() : this.prev();
548
- setTimeout(() => {
549
- this.focus();
550
- }, 50);
551
- }
552
- ignore();
553
- }
554
- }
555
- /**
556
- * @ignore
557
- */
558
- getMonthName(date, style) {
559
- return `dateTime.months.${date.calendar.name()}.${style}.${date.monthOfYear - 1}`;
560
- }
561
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXCalendarComponent, deps: [{ token: i1.AXUnsubscriber }], target: i0.ɵɵFactoryTarget.Component }); }
562
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXCalendarComponent, selector: "ax-calendar", inputs: { rtl: "rtl", readonly: "readonly", value: "value", name: "name", disabled: "disabled", depth: "depth", activeView: "activeView", minValue: "minValue", maxValue: "maxValue", disabledDates: "disabledDates", holidayDates: "holidayDates", type: "type", cellTemplate: "cellTemplate", cellClass: "cellClass", showNavigation: "showNavigation", count: "count", id: "id" }, outputs: { onOptionChanged: "onOptionChanged", valueChange: "valueChange", onValueChanged: "onValueChanged", minValueChange: "minValueChange", maxValueChange: "maxValueChange", onBlur: "onBlur", onFocus: "onFocus", depthChange: "depthChange", typeChange: "typeChange", activeViewChange: "activeViewChange", disabledDatesChange: "disabledDatesChange", holidayDatesChange: "holidayDatesChange", onNavigate: "onNavigate", onSlotClick: "onSlotClick", countChange: "countChange" }, host: { listeners: { "keydown": "_handleOnKeydownEvent($event)" }, properties: { "class": "this.__hostClass" } }, providers: [
563
- {
564
- provide: NG_VALUE_ACCESSOR,
565
- useExisting: forwardRef(() => AXCalendarComponent),
566
- multi: true,
567
- },
568
- {
569
- provide: AXValuableComponent,
570
- useExisting: AXCalendarComponent,
571
- },
572
- AXUnsubscriber,
573
- ], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-header\"></ng-content>\n<div class=\"ax-calendar-body\">\n @for (v of views; let i = $index, first = $first, last = $last; track i) {\n @switch (activeView) {\n @case ('year') {\n @if (showNavigation) {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-state-disabled\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime.format('YYYY') }} - {{ v.range.endTime.format('YYYY') }}\n </button>\n </div>\n @if (last) {\n <div class=\"ax-calendar-header-buttons\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon ax-next\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n @for (slot of v.slots; track slot.text) {\n <button\n tabindex=\"0\"\n class=\"ax-calendar-slot\"\n [class.ax-state-disabled]=\"disabled\"\n [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\"\n >\n @if (cellTemplate) {\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n } @else {\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n }\n </button>\n }\n </div>\n }\n @case ('month') {\n @if (showNavigation) {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime.format('YYYY') }}\n </button>\n </div>\n @if (last) {\n <div class=\"ax-calendar-header-buttons\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n <button\n tabindex=\"0\"\n *ngFor=\"let slot of v.slots\"\n class=\"ax-calendar-slot\"\n [class.ax-state-disabled]=\"disabled\"\n [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\"\n >\n @if (cellTemplate) {\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n } @else {\n <div [title]=\"slot.tooltip\">\n {{ getMonthName(slot.date, 'short') | translate | async }}\n </div>\n }\n </button>\n </div>\n }\n @default {\n @if (showNavigation) {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime.format('YYYY') }}\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'month')\"\n >\n {{ getMonthName(v.range.startTime, 'long') | translate | async }}\n </button>\n </div>\n @if (last) {\n <div class=\"ax-calendar-header-buttons\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-week\">\n <div *ngFor=\"let d of _weekdays\">{{ 'dateTime.weekdays.short.' + d | translate | async }}</div>\n </div>\n <div class=\"ax-calendar-slots ax-calendar-slots-day\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n <ng-container *ngFor=\"let slot of v.slots\">\n <button\n tabindex=\"0\"\n class=\"ax-calendar-slot\"\n [ngClass]=\"slot.cssClass\"\n [class.ax-state-disabled]=\"disabled\"\n (click)=\"_handleSlotClick($event, slot)\"\n [disabled]=\"disabled\"\n [axRipple]\n >\n @if (cellTemplate) {\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n } @else {\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n }\n </button>\n </ng-container>\n </div>\n }\n }\n }\n</div>\n<ng-content select=\"ax-footer\"></ng-content>\n", styles: [".ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-fore-tint))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today.ax-state-holiday{color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-fore-tint))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{outline-color:rgba(var(--ax-color-primary-200))!important;background-color:rgba(var(--ax-color-danger-200))!important;color:rgba(var(--ax-color-danger-fore-tint))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday:is(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot .ax-ripple{background-color:rgba(var(--ax-color-primary-500),.3)!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:is(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important;color:rgba(var(--ax-color-danger-fore-tint))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday .ax-ripple{background-color:rgba(var(--ax-color-danger-500),.3)!important}.ax-dark ax-calendar .ax-calendar-footer:is(.ax-dark ax-calendar .ax-calendar-footer:focus,.ax-dark ax-calendar .ax-calendar-footer:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-200))}html[dir=rtl] ax-calendar .ax-calendar-header-buttons .ax-icon{-moz-transform:scale(-1,1);-o-transform:scale(-1,1);-webkit-transform:scale(-1,1);transform:scaleX(-1)}ax-calendar{display:block;width:100%;background-color:rgba(var(--ax-color-surface),var(--tw-bg-opacity));color:rgba(var(--ax-color-surface-fore),var(--tw-text-opacity))}ax-calendar.ax-state-disabled .ax-calendar-slots{cursor:not-allowed;opacity:.5}ax-calendar.ax-state-readonly .ax-calendar-slots{cursor:text}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-left:.25rem;padding-right:.25rem;padding-top:.25rem}ax-calendar .ax-calendar-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body{display:flex;flex-direction:column;justify-content:center;align-items:center}@media (min-width: 1024px){ax-calendar .ax-calendar-body{flex-direction:column}}ax-calendar .ax-calendar-body>div{width:100%;flex:1 1 0%}@media (min-width: 768px){ax-calendar .ax-calendar-body>div{width:20rem}}ax-calendar .ax-calendar-body .ax-calendar-view-header{display:flex;justify-content:space-between;border-bottom-width:1px;border-color:rgba(var(--ax-color-border-default));padding:.5rem}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem;padding:1rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--ax-rounded-border-default);text-align:center;font-size:.875rem;line-height:1.25rem;color:rgba(var(--ax-color-surface-fore));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\"\";float:left;padding-top:100%}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\"\";clear:both;display:block}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-width:2px;outline-color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled{outline-style:dashed;outline-width:2px}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-readonly{cursor:text;opacity:.75}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.05}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot .ax-ripple{background-color:rgba(var(--ax-color-primary-300),.3)!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-width:1px;border-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today.ax-state-holiday{border-color:rgba(var(--ax-color-danger-500))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-focused{border-width:1px;border-color:rgba(var(--ax-color-border-default))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{background-color:rgba(var(--ax-color-danger-500))!important;color:rgba(var(--ax-color-danger-fore))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:is(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-danger-500))!important;border-color:rgba(var(--ax-color-danger-500))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday .ax-ripple{background-color:rgba(var(--ax-color-danger-300),.3)!important}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-day{grid-template-columns:repeat(7,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-year,ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-month{grid-template-columns:repeat(4,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding-left:.5rem;padding-right:.5rem;padding-top:.75rem}ax-calendar .ax-calendar-body .ax-calendar-week>div{position:relative;margin:.125rem;display:flex;cursor:pointer;align-items:center;justify-content:center;text-align:center;font-size:.875rem;line-height:1.25rem}ax-calendar .ax-calendar-footer{margin-top:1.25rem;display:flex;align-items:center;justify-content:center}ax-calendar .ax-calendar-footer .ax-today-button{display:block;height:var(--ax-size-default);width:100%;cursor:pointer;border-radius:var(--ax-rounded-border-default);background-color:rgba(var(--ax-color-primary-500));padding-left:1rem;padding-right:1rem;text-align:center;font-size:.875rem;line-height:1.25rem;color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-readonly{cursor:text;opacity:.75}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-primary-600))}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:focus,ax-calendar .ax-calendar-footer .ax-today-button:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-500),1)}.ax-calendar-picker{display:flex;width:100%}.ax-calendar-picker ax-picker{flex:1 1 0%}.ax-overlay-pane ax-calendar{border-style:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.AXRippleDirective, selector: "[axRipple]", inputs: ["axRipple", "axRippleColor"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
574
- }
575
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXCalendarComponent, decorators: [{
576
- type: Component,
577
- args: [{ selector: 'ax-calendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: [
578
- 'rtl',
579
- 'readonly',
580
- 'value',
581
- 'name',
582
- 'disabled',
583
- 'depth',
584
- 'activeView',
585
- 'minValue',
586
- 'maxValue',
587
- 'disabledDates',
588
- 'holidayDates',
589
- 'type',
590
- 'cellTemplate',
591
- 'cellClass',
592
- 'showNavigation',
593
- 'count',
594
- 'name',
595
- 'id',
596
- ], outputs: [
597
- 'onOptionChanged',
598
- 'valueChange',
599
- 'onValueChanged',
600
- 'minValueChange',
601
- 'maxValueChange',
602
- 'onBlur',
603
- 'onFocus',
604
- 'depthChange',
605
- 'typeChange',
606
- 'activeViewChange',
607
- 'disabledDatesChange',
608
- 'holidayDatesChange',
609
- 'onNavigate',
610
- 'onSlotClick',
611
- 'countChange',
612
- ], providers: [
613
- {
614
- provide: NG_VALUE_ACCESSOR,
615
- useExisting: forwardRef(() => AXCalendarComponent),
616
- multi: true,
617
- },
618
- {
619
- provide: AXValuableComponent,
620
- useExisting: AXCalendarComponent,
621
- },
622
- AXUnsubscriber,
623
- ], template: "<ng-content select=\"ax-header\"></ng-content>\n<div class=\"ax-calendar-body\">\n @for (v of views; let i = $index, first = $first, last = $last; track i) {\n @switch (activeView) {\n @case ('year') {\n @if (showNavigation) {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-state-disabled\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime.format('YYYY') }} - {{ v.range.endTime.format('YYYY') }}\n </button>\n </div>\n @if (last) {\n <div class=\"ax-calendar-header-buttons\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon ax-next\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n @for (slot of v.slots; track slot.text) {\n <button\n tabindex=\"0\"\n class=\"ax-calendar-slot\"\n [class.ax-state-disabled]=\"disabled\"\n [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\"\n >\n @if (cellTemplate) {\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n } @else {\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n }\n </button>\n }\n </div>\n }\n @case ('month') {\n @if (showNavigation) {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime.format('YYYY') }}\n </button>\n </div>\n @if (last) {\n <div class=\"ax-calendar-header-buttons\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n <button\n tabindex=\"0\"\n *ngFor=\"let slot of v.slots\"\n class=\"ax-calendar-slot\"\n [class.ax-state-disabled]=\"disabled\"\n [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\"\n >\n @if (cellTemplate) {\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n } @else {\n <div [title]=\"slot.tooltip\">\n {{ getMonthName(slot.date, 'short') | translate | async }}\n </div>\n }\n </button>\n </div>\n }\n @default {\n @if (showNavigation) {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime.format('YYYY') }}\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'month')\"\n >\n {{ getMonthName(v.range.startTime, 'long') | translate | async }}\n </button>\n </div>\n @if (last) {\n <div class=\"ax-calendar-header-buttons\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-week\">\n <div *ngFor=\"let d of _weekdays\">{{ 'dateTime.weekdays.short.' + d | translate | async }}</div>\n </div>\n <div class=\"ax-calendar-slots ax-calendar-slots-day\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n <ng-container *ngFor=\"let slot of v.slots\">\n <button\n tabindex=\"0\"\n class=\"ax-calendar-slot\"\n [ngClass]=\"slot.cssClass\"\n [class.ax-state-disabled]=\"disabled\"\n (click)=\"_handleSlotClick($event, slot)\"\n [disabled]=\"disabled\"\n [axRipple]\n >\n @if (cellTemplate) {\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n } @else {\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n }\n </button>\n </ng-container>\n </div>\n }\n }\n }\n</div>\n<ng-content select=\"ax-footer\"></ng-content>\n", styles: [".ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-fore-tint))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today.ax-state-holiday{color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-fore-tint))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{outline-color:rgba(var(--ax-color-primary-200))!important;background-color:rgba(var(--ax-color-danger-200))!important;color:rgba(var(--ax-color-danger-fore-tint))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday:is(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot .ax-ripple{background-color:rgba(var(--ax-color-primary-500),.3)!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:is(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important;color:rgba(var(--ax-color-danger-fore-tint))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday .ax-ripple{background-color:rgba(var(--ax-color-danger-500),.3)!important}.ax-dark ax-calendar .ax-calendar-footer:is(.ax-dark ax-calendar .ax-calendar-footer:focus,.ax-dark ax-calendar .ax-calendar-footer:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-200))}html[dir=rtl] ax-calendar .ax-calendar-header-buttons .ax-icon{-moz-transform:scale(-1,1);-o-transform:scale(-1,1);-webkit-transform:scale(-1,1);transform:scaleX(-1)}ax-calendar{display:block;width:100%;background-color:rgba(var(--ax-color-surface),var(--tw-bg-opacity));color:rgba(var(--ax-color-surface-fore),var(--tw-text-opacity))}ax-calendar.ax-state-disabled .ax-calendar-slots{cursor:not-allowed;opacity:.5}ax-calendar.ax-state-readonly .ax-calendar-slots{cursor:text}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-left:.25rem;padding-right:.25rem;padding-top:.25rem}ax-calendar .ax-calendar-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body{display:flex;flex-direction:column;justify-content:center;align-items:center}@media (min-width: 1024px){ax-calendar .ax-calendar-body{flex-direction:column}}ax-calendar .ax-calendar-body>div{width:100%;flex:1 1 0%}@media (min-width: 768px){ax-calendar .ax-calendar-body>div{width:20rem}}ax-calendar .ax-calendar-body .ax-calendar-view-header{display:flex;justify-content:space-between;border-bottom-width:1px;border-color:rgba(var(--ax-color-border-default));padding:.5rem}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem;padding:1rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--ax-rounded-border-default);text-align:center;font-size:.875rem;line-height:1.25rem;color:rgba(var(--ax-color-surface-fore));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\"\";float:left;padding-top:100%}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\"\";clear:both;display:block}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-width:2px;outline-color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled{outline-style:dashed;outline-width:2px}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-readonly{cursor:text;opacity:.75}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.05}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot .ax-ripple{background-color:rgba(var(--ax-color-primary-300),.3)!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-width:1px;border-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today.ax-state-holiday{border-color:rgba(var(--ax-color-danger-500))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-focused{border-width:1px;border-color:rgba(var(--ax-color-border-default))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{background-color:rgba(var(--ax-color-danger-500))!important;color:rgba(var(--ax-color-danger-fore))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:is(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-danger-500))!important;border-color:rgba(var(--ax-color-danger-500))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday .ax-ripple{background-color:rgba(var(--ax-color-danger-300),.3)!important}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-day{grid-template-columns:repeat(7,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-year,ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-month{grid-template-columns:repeat(4,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding-left:.5rem;padding-right:.5rem;padding-top:.75rem}ax-calendar .ax-calendar-body .ax-calendar-week>div{position:relative;margin:.125rem;display:flex;cursor:pointer;align-items:center;justify-content:center;text-align:center;font-size:.875rem;line-height:1.25rem}ax-calendar .ax-calendar-footer{margin-top:1.25rem;display:flex;align-items:center;justify-content:center}ax-calendar .ax-calendar-footer .ax-today-button{display:block;height:var(--ax-size-default);width:100%;cursor:pointer;border-radius:var(--ax-rounded-border-default);background-color:rgba(var(--ax-color-primary-500));padding-left:1rem;padding-right:1rem;text-align:center;font-size:.875rem;line-height:1.25rem;color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-readonly{cursor:text;opacity:.75}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-primary-600))}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:focus,ax-calendar .ax-calendar-footer .ax-today-button:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-500),1)}.ax-calendar-picker{display:flex;width:100%}.ax-calendar-picker ax-picker{flex:1 1 0%}.ax-overlay-pane ax-calendar{border-style:none}\n"] }]
624
- }], ctorParameters: () => [{ type: i1.AXUnsubscriber }], propDecorators: { __hostClass: [{
625
- type: HostBinding,
626
- args: ['class']
627
- }], _handleOnKeydownEvent: [{
628
- type: HostListener,
629
- args: ['keydown', ['$event']]
630
- }] } });
631
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLG1CQUFtQixFQUVuQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEdBQ2pCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFjLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBSUwsdUJBQXVCLEdBQ3hCLE1BQU0sa0JBQWtCLENBQUM7Ozs7OztBQUUxQjs7OztHQUlHO0FBeURILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxPQUFPLENBQzlDLENBQUEsZ0JBQTZCLENBQUEsRUFDN0Isc0JBQXNCLEVBQ3RCLHVCQUF1QixDQUN4QjtJQUNDLElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksZUFBZSxDQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQzdCLElBQUksQ0FBQyxLQUFLLENB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Q3JCLG9CQUFvQjt3QkFDcEIsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGFBQWE7cUJBQ2QsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxxQkFBcUI7eUJBQ2pDO3dCQUNELGNBQWM7cUJBQ2Y7bUZBb2ZXLFdBQVc7c0JBRHRCLFdBQVc7dUJBQUMsT0FBTztnQkEwRHBCLHFCQUFxQjtzQkFEcEIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWENsaWNrRXZlbnQsXG4gIEFYVmFsdWFibGVDb21wb25lbnQsXG4gIE1YQ29tcG9uZW50T3B0aW9uQ2hhbmdlZCxcbiAgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCxcbiAgTVhWYWx1ZUNvbXBvbmVudCxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBBWERhdGVUaW1lLCBBWERhdGVUaW1lUmFuZ2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZS10aW1lJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbGFzc2VzIH0gZnJvbSAncG9seXR5cGUnO1xuaW1wb3J0IHtcbiAgQVhDYWxlbmRhclZpZXcsXG4gIEFYQ2FsZW5kYXJWaWV3U2xvdCxcbiAgQVhDYWxlbmRhclZpZXdUeXBlLFxuICBNWENhbGVuZGFyQmFzZUNvbXBvbmVudCxcbn0gZnJvbSAnLi9jYWxlbmRhci5jbGFzcyc7XG5cbi8qKlxuICogQSBjYWxlbmRhciBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBhIGN1c3RvbWl6YWJsZSBjYWxlbmRhciB2aWV3IHdpdGggdmFyaW91cyBvcHRpb25zIGZvciBzZWxlY3Rpb24sIG5hdmlnYXRpb24sIGFuZCBzdHlsaW5nLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGlucHV0czogW1xuICAgICdydGwnLFxuICAgICdyZWFkb25seScsXG4gICAgJ3ZhbHVlJyxcbiAgICAnbmFtZScsXG4gICAgJ2Rpc2FibGVkJyxcbiAgICAnZGVwdGgnLFxuICAgICdhY3RpdmVWaWV3JyxcbiAgICAnbWluVmFsdWUnLFxuICAgICdtYXhWYWx1ZScsXG4gICAgJ2Rpc2FibGVkRGF0ZXMnLFxuICAgICdob2xpZGF5RGF0ZXMnLFxuICAgICd0eXBlJyxcbiAgICAnY2VsbFRlbXBsYXRlJyxcbiAgICAnY2VsbENsYXNzJyxcbiAgICAnc2hvd05hdmlnYXRpb24nLFxuICAgICdjb3VudCcsXG4gICAgJ25hbWUnLFxuICAgICdpZCcsXG4gIF0sXG4gIG91dHB1dHM6IFtcbiAgICAnb25PcHRpb25DaGFuZ2VkJyxcbiAgICAndmFsdWVDaGFuZ2UnLFxuICAgICdvblZhbHVlQ2hhbmdlZCcsXG4gICAgJ21pblZhbHVlQ2hhbmdlJyxcbiAgICAnbWF4VmFsdWVDaGFuZ2UnLFxuICAgICdvbkJsdXInLFxuICAgICdvbkZvY3VzJyxcbiAgICAnZGVwdGhDaGFuZ2UnLFxuICAgICd0eXBlQ2hhbmdlJyxcbiAgICAnYWN0aXZlVmlld0NoYW5nZScsXG4gICAgJ2Rpc2FibGVkRGF0ZXNDaGFuZ2UnLFxuICAgICdob2xpZGF5RGF0ZXNDaGFuZ2UnLFxuICAgICdvbk5hdmlnYXRlJyxcbiAgICAnb25TbG90Q2xpY2snLFxuICAgICdjb3VudENoYW5nZScsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhDYWxlbmRhckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYVmFsdWFibGVDb21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogQVhDYWxlbmRhckNvbXBvbmVudCxcbiAgICB9LFxuICAgIEFYVW5zdWJzY3JpYmVyLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyQ29tcG9uZW50IGV4dGVuZHMgY2xhc3NlcyhcbiAgTVhWYWx1ZUNvbXBvbmVudDxEYXRlIHwgbnVsbD4sXG4gIE1YSW50ZXJhY3RpdmVDb21wb25lbnQsXG4gIE1YQ2FsZW5kYXJCYXNlQ29tcG9uZW50LFxuKSB7XG4gIHB1YmxpYyBnZXQgZGlzcGxheVJhbmdlKCk6IEFYRGF0ZVRpbWVSYW5nZSB7XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UoXG4gICAgICB0aGlzLnZpZXdzWzBdLnJhbmdlLnN0YXJ0VGltZSxcbiAgICAgIHRoaXMudmlld3NbdGhpcy52aWV3cy5sZW5ndGggLSAxXS5yYW5nZS5lbmRUaW1lLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfdG9kYXkgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUobmV3IERhdGUoKSwgdGhpcy50eXBlKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX3ZpZXdTdGFydERhdGUhOiBBWERhdGVUaW1lO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfbmF2VXNlckludGVyYWN0aW9uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9mb290UHJpbnQgPSB7XG4gICAgeWVhcjogbnVsbCxcbiAgICBtb250aDogbnVsbCxcbiAgICBkYXk6IG51bGwsXG4gIH07XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgdmlld3M6IEFYQ2FsZW5kYXJWaWV3W10gPSBbXTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfd2Vla2RheXM6IG51bWJlcltdID0gW107XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9pbml0VmFsdWVzKCkge1xuICAgIHRoaXMuX3RvZGF5ID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKG5ldyBEYXRlKCksIHRoaXMudHlwZSk7XG4gICAgdGhpcy5fd2Vla2RheXMgPSB0aGlzLl90b2RheS5jYWxlbmRhci53ZWVrZGF5cztcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfcmVmcmVzaCgpIHtcbiAgICB0aGlzLl9pbml0VmFsdWVzKCk7XG4gICAgdGhpcy5uYXZUbyh0aGlzLnZhbHVlIHx8IHRoaXMuX3RvZGF5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IodW5zdWJzY3JpYmVyOiBBWFVuc3Vic2NyaWJlcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2Uub25Ib2xpZGF5c0NoYW5nZWQucGlwZSh1bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfSk7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuY2FsZW5kYXJDaGFuZ2VzJC5waXBlKHVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fcmVmcmVzaCgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLl9pbml0VmFsdWVzKCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLmdvVG9kYXkoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIG92ZXJyaWRlIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuX3ZpZXdTdGFydERhdGUpIHJldHVybjtcbiAgICBjb25zdCBhcHBseUNlbGxDbGFzcyA9IChzbG90OiBBWENhbGVuZGFyVmlld1Nsb3QsIGNlbGxDbGFzczogYW55ID0gdGhpcy5jZWxsQ2xhc3MpID0+IHtcbiAgICAgIHN3aXRjaCAodHlwZW9mIGNlbGxDbGFzcykge1xuICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgIGNlbGxDbGFzcy5zcGxpdCgnICcpLmZvckVhY2goKGMpID0+IChzbG90LmNzc0NsYXNzW2NdID0gdHJ1ZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oc2xvdC5jc3NDbGFzcywgY2VsbENsYXNzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgIGFwcGx5Q2VsbENsYXNzKHNsb3QsIGNlbGxDbGFzcyhzbG90LmRhdGUpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMudmlld3MgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY291bnQ7IGkrKykge1xuICAgICAgc3dpdGNoICh0aGlzLmFjdGl2ZVZpZXcpIHtcbiAgICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgICB0aGlzLmRheVZpZXcoaSwgYXBwbHlDZWxsQ2xhc3MpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgdGhpcy5tb250aFZpZXcoaSwgYXBwbHlDZWxsQ2xhc3MpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICB0aGlzLnllYXJWaWV3KGksIGFwcGx5Q2VsbENsYXNzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX3NldERpc3BsYXlSYW5nZShjdXJyZW50OiBBWERhdGVUaW1lKTogQVhEYXRlVGltZVJhbmdlIHtcbiAgICBzd2l0Y2ggKHRoaXMuYWN0aXZlVmlldykge1xuICAgICAgY2FzZSAneWVhcic6IHtcbiAgICAgICAgY29uc3QgeSA9IGN1cnJlbnQuc3RhcnRPZigneWVhcicpLnllYXI7XG4gICAgICAgIGNvbnN0IG1pbiA9IHkgLSAoeSAlIDEwKTtcbiAgICAgICAgY29uc3QgbWF4ID0gbWluICsgOTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UoXG4gICAgICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB5ZWFyOiBtaW4sXG4gICAgICAgICAgICAgIG1vbnRoOiAxLFxuICAgICAgICAgICAgICBkYXRlOiAxLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMudHlwZSxcbiAgICAgICAgICApLFxuICAgICAgICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgeWVhcjogbWF4LFxuICAgICAgICAgICAgICBtb250aDogMTIsXG4gICAgICAgICAgICAgIGRhdGU6IDI4LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMudHlwZSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWVSYW5nZShjdXJyZW50LnN0YXJ0T2YoJ3llYXInKSwgY3VycmVudC5lbmRPZigneWVhcicpLmFkZCgnZGF5JywgLTEpKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZVJhbmdlKGN1cnJlbnQuc3RhcnRPZignbW9udGgnKSwgY3VycmVudC5lbmRPZignbW9udGgnKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGRheVZpZXcoaTogbnVtYmVyLCBhcHBseUNlbGxDbGFzczogYW55KSB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCdtb250aCcsIGkpO1xuICAgIGNvbnN0IHZpZXc6IEFYQ2FsZW5kYXJWaWV3ID0ge1xuICAgICAgcmFuZ2U6IHRoaXMuX3NldERpc3BsYXlSYW5nZShjdXJyZW50KSxcbiAgICAgIHNsb3RzOiBbXSxcbiAgICB9O1xuICAgIHRoaXMudmlld3MucHVzaCh2aWV3KTtcbiAgICBjb25zdCBhID0gdmlldy5yYW5nZS5lbnVtdXJhdGUoJ2RheScpO1xuICAgIHZpZXcuc2xvdHMgPSBhLm1hcCgoZCwgaSkgPT4ge1xuICAgICAgY29uc3QgcjogYW55ID0ge307XG4gICAgICByLmRhdGUgPSBkO1xuICAgICAgci50ZXh0ID0gZC5kYXlPZk1vbnRoO1xuICAgICAgci50b29sdGlwID0gZC5mb3JtYXQoJ2xvbmdEYXRlJyk7XG4gICAgICByLnRvZGF5ID0gZC5lcXVhbCh0aGlzLl90b2RheSwgJ2RheScpO1xuICAgICAgci5zZWxlY3RlZCA9IHRoaXMudmFsdWUgJiYgZC5lcXVhbCh0aGlzLnZhbHVlLCAnZGF5Jyk7XG4gICAgICByLmhvbGlkYXkgPSB0aGlzLmlzSG9saWRheShkKSB8fCB0aGlzLmlzV2Vla2VuZChkKTtcbiAgICAgIHIuZGlzYWJsZWQgPVxuICAgICAgICAodGhpcy5taW5WYWx1ZSAmJiBkLmNvbXBhcmUodGhpcy5taW5WYWx1ZSwgJ2RheScpID09IC0xKSB8fFxuICAgICAgICAodGhpcy5tYXhWYWx1ZSAmJiBkLmNvbXBhcmUodGhpcy5tYXhWYWx1ZSwgJ2RheScpID09IDEpIHx8XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZChkKTtcbiAgICAgIC8vXG4gICAgICBjb25zdCBmb2N1c2VkID1cbiAgICAgICAgZC5kYXlPZk1vbnRoID09IHRoaXMuX2Zvb3RQcmludC5kYXkgJiZcbiAgICAgICAgZC5tb250aE9mWWVhciA9PSB0aGlzLl9mb290UHJpbnQubW9udGggJiZcbiAgICAgICAgZC55ZWFyID09IHRoaXMuX2Zvb3RQcmludC55ZWFyO1xuICAgICAgLy9cbiAgICAgIGlmIChyLmRpc2FibGVkKSB7XG4gICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgJ2F4LXN0YXRlLXRvZGF5Jzogci50b2RheSxcbiAgICAgICAgICAnYXgtc3RhdGUtc2VsZWN0ZWQnOiByLnNlbGVjdGVkLFxuICAgICAgICAgICdheC1zdGF0ZS1ob2xpZGF5Jzogci5ob2xpZGF5LFxuICAgICAgICAgIC8vICdheC1zdGF0ZS1mb2N1c2VkJzogZm9jdXNlZCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIC8vIGF4LWNvbC1zdGFydC0xIGF4LWNvbC1zdGFydC0yIGF4LWNvbC1zdGFydC0zIGF4LWNvbC1zdGFydC00IGF4LWNvbC1zdGFydC01IGF4LWNvbC1zdGFydC02IGF4LWNvbC1zdGFydC03XG4gICAgICByLmNzc0NsYXNzW2BheC1jb2x1bW4tc3RhcnQtJHt2aWV3LnJhbmdlLnN0YXJ0VGltZS5kYXlPZldlZWt9YF0gPSBpID09IDA7XG4gICAgICBpZiAodGhpcy5jZWxsQ2xhc3MpIGFwcGx5Q2VsbENsYXNzKHIpO1xuICAgICAgcmV0dXJuIHI7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgbW9udGhWaWV3KGk6IG51bWJlciwgYXBwbHlDZWxsQ2xhc3M6IGFueSkge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl92aWV3U3RhcnREYXRlLmFkZCgneWVhcicsIGkpO1xuICAgIGNvbnN0IHZpZXc6IEFYQ2FsZW5kYXJWaWV3ID0ge1xuICAgICAgcmFuZ2U6IHRoaXMuX3NldERpc3BsYXlSYW5nZShjdXJyZW50KSxcbiAgICAgIHNsb3RzOiBbXSxcbiAgICB9O1xuICAgIHRoaXMudmlld3MucHVzaCh2aWV3KTtcbiAgICBjb25zdCBhID0gdmlldy5yYW5nZS5lbnVtdXJhdGUoJ21vbnRoJyk7XG4gICAgdmlldy5zbG90cyA9IGEubWFwKChkLCBpKSA9PiB7XG4gICAgICBjb25zdCByOiBhbnkgPSB7fTtcbiAgICAgIHIuZGF0ZSA9IGQ7XG4gICAgICByLnRleHQgPSBkLmZvcm1hdCgnTU1NJyk7XG4gICAgICByLnRvb2x0aXAgPSBkLmZvcm1hdCgnTU1NTSBZWVlZJyk7XG4gICAgICByLnRvZGF5ID0gZC5lcXVhbCh0aGlzLl90b2RheSwgJ21vbnRoJyk7XG4gICAgICAvL1xuICAgICAgci5kaXNhYmxlZCA9XG4gICAgICAgICh0aGlzLm1pblZhbHVlICYmIGQuY29tcGFyZSh0aGlzLm1pblZhbHVlLCAnbW9udGgnKSA9PSAtMSkgfHxcbiAgICAgICAgKHRoaXMubWF4VmFsdWUgJiYgZC5jb21wYXJlKHRoaXMubWF4VmFsdWUsICdtb250aCcpID09IDEpO1xuICAgICAgLy9cbiAgICAgIHIuc2VsZWN0ZWQgPSB0aGlzLnZhbHVlICYmIHRoaXMuZGVwdGggPT0gJ21vbnRoJyAmJiBkLmVxdWFsKHRoaXMudmFsdWUsICdtb250aCcpO1xuICAgICAgLy9cbiAgICAgIGNvbnN0IGZvY3VzZWQgPSBkLm1vbnRoT2ZZZWFyID09IHRoaXMuX2Zvb3RQcmludC5tb250aCAmJiBkLnllYXIgPT0gdGhpcy5fZm9vdFByaW50LnllYXI7XG4gICAgICAvL1xuICAgICAgaWYgKHIuZGlzYWJsZWQpIHtcbiAgICAgICAgci5jc3NDbGFzcyA9IHtcbiAgICAgICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiByLmRpc2FibGVkLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgci5jc3NDbGFzcyA9IHtcbiAgICAgICAgICAnYXgtc3RhdGUtdG9kYXknOiByLnRvZGF5LFxuICAgICAgICAgICdheC1zdGF0ZS1zZWxlY3RlZCc6IHIuc2VsZWN0ZWQsXG4gICAgICAgICAgJ2F4LXN0YXRlLWZvY3VzZWQnOiBmb2N1c2VkLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYXBwbHlDZWxsQ2xhc3Mocik7XG4gICAgICByZXR1cm4gcjtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSB5ZWFyVmlldyhpOiBudW1iZXIsIGFwcGx5Q2VsbENsYXNzOiBhbnkpIHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ3llYXInLCBpICogMTApO1xuICAgIGNvbnN0IHZpZXc6IEFYQ2FsZW5kYXJWaWV3ID0ge1xuICAgICAgcmFuZ2U6IHRoaXMuX3NldERpc3BsYXlSYW5nZShjdXJyZW50KSxcbiAgICAgIHNsb3RzOiBbXSxcbiAgICB9O1xuICAgIHRoaXMudmlld3MucHVzaCh2aWV3KTtcbiAgICBjb25zdCBhID0gdmlldy5yYW5nZS5lbnVtdXJhdGUoJ3llYXInKTtcblxuICAgIHZpZXcuc2xvdHMgPSBhLm1hcCgoZCwgaSkgPT4ge1xuICAgICAgY29uc3QgcjogYW55ID0ge307XG4gICAgICByLmRhdGUgPSBkO1xuICAgICAgci50ZXh0ID0gZC5mb3JtYXQoJ1lZWVknKTtcbiAgICAgIHIudG9vbHRpcCA9IGQuZm9ybWF0KCdZWVlZJyk7XG4gICAgICByLnRvZGF5ID0gZC5lcXVhbCh0aGlzLl90b2RheSwgJ3llYXInKTtcbiAgICAgIHIuc2VsZWN0ZWQgPSB0aGlzLnZhbHVlICYmIHRoaXMuZGVwdGggPT0gJ3llYXInICYmIGQuZXF1YWwodGhpcy52YWx1ZSwgJ3llYXInKTtcbiAgICAgIC8vXG4gICAgICBjb25zdCBmb2N1c2VkID0gZC55ZWFyID09IHRoaXMuX2Zvb3RQcmludC55ZWFyO1xuICAgICAgLy9cbiAgICAgIHIuZGlzYWJsZWQgPVxuICAgICAgICAodGhpcy5taW5WYWx1ZSAmJiBkLmNvbXBhcmUodGhpcy5taW5WYWx1ZSwgJ3llYXInKSA9PSAtMSkgfHxcbiAgICAgICAgKHRoaXMubWF4VmFsdWUgJiYgZC5jb21wYXJlKHRoaXMubWF4VmFsdWUsICd5ZWFyJykgPT0gMSk7XG4gICAgICAvL1xuICAgICAgaWYgKHIuZGlzYWJsZWQpIHtcbiAgICAgICAgci5jc3NDbGFzcyA9IHtcbiAgICAgICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiByLmRpc2FibGVkLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgci5jc3NDbGFzcyA9IHtcbiAgICAgICAgICAnYXgtc3RhdGUtdG9kYXknOiByLnRvZGF5LFxuICAgICAgICAgICdheC1zdGF0ZS1zZWxlY3RlZCc6IHIuc2VsZWN0ZWQsXG4gICAgICAgICAgJ2F4LXN0YXRlLWZvY3VzZWQnOiBmb2N1c2VkLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYXBwbHlDZWxsQ2xhc3Mocik7XG4gICAgICByZXR1cm4gcjtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVQcmV2Q2xpY2soKSB7XG4gICAgdGhpcy5fbmF2VXNlckludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnByZXYoKTtcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVOZXh0Q2xpY2soKSB7XG4gICAgdGhpcy5fbmF2VXNlckludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLm5leHQoKTtcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVTbG90Q2xpY2soZTogTW91c2VFdmVudCwgc2xvdDogQVhDYWxlbmRhclZpZXdTbG90KSB7XG4gICAgaWYgKHNsb3QuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIC8vXG4gICAgdGhpcy5vblNsb3RDbGljay5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGl0ZW06IHNsb3QuZGF0ZS5kYXRlLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgICBuYXRpdmVFdmVudDogZSxcbiAgICB9KTtcbiAgICAvL1xuICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ2RheScpIHtcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlLmRhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aCcgJiYgdGhpcy5kZXB0aCA9PSAnZGF5Jykge1xuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ2RheSc7XG4gICAgICB0aGlzLl9mb290UHJpbnQubW9udGggPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUoc2xvdC5kYXRlLmRhdGUsIHRoaXMudHlwZSkubW9udGhPZlllYXI7XG4gICAgICB0aGlzLm5hdlRvKHNsb3QuZGF0ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRoJyAmJiB0aGlzLmRlcHRoID09ICdtb250aCcpIHtcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlLmRhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICd5ZWFyJyAmJiAodGhpcy5kZXB0aCA9PSAnZGF5JyB8fCB0aGlzLmRlcHRoID09ICdtb250aCcpKSB7XG4gICAgICB0aGlzLmFjdGl2ZVZpZXcgPSAnbW9udGgnO1xuICAgICAgdGhpcy5fZm9vdFByaW50LnllYXIgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUoc2xvdC5kYXRlLmRhdGUsIHRoaXMudHlwZSkueWVhcjtcbiAgICAgIHRoaXMubmF2VG8oc2xvdC5kYXRlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAneWVhcicgJiYgdGhpcy5kZXB0aCA9PSAneWVhcicpIHtcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlLmRhdGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVOYXZDbGljayhlOiBBWENsaWNrRXZlbnQgfCBhbnksIHZpZXc6IEFYQ2FsZW5kYXJWaWV3VHlwZSkge1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5hY3RpdmVWaWV3ID0gdmlldztcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVWaWV3KCkge1xuICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ2RheScpIHRoaXMuYWN0aXZlVmlldyA9ICdtb250aCc7XG4gICAgZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aCcpIHRoaXMuYWN0aXZlVmlldyA9ICd5ZWFyJztcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGludGVybmFsT3B0aW9uQ2hhbmdlZChlOiBNWENvbXBvbmVudE9wdGlvbkNoYW5nZWQpIHtcbiAgICBpZiAoXG4gICAgICBlLm5hbWUgPT0gJ2RlcHRoJyB8fFxuICAgICAgZS5uYW1lID09ICdhY3RpdmVWaWV3JyB8fFxuICAgICAgZS5uYW1lID09ICdkaXNhYmxlZERhdGVzJyB8fFxuICAgICAgZS5uYW1lID09ICdob2xpZGF5RGF0ZXMnXG4gICAgKSB7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgICBpZiAoZS5uYW1lID09ICd0eXBlJykge1xuICAgICAgdGhpcy5fcmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGludGVybmFsU2V0VmFsdWUodmFsdWU6IERhdGUpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgdiA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNvbnZlcnQodmFsdWUpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLmlzRGlzYWJsZWQodik7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHJldHVybiBudWxsO1xuICAgIGVsc2UgcmV0dXJuIHYuZGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGludGVybmFsVmFsdWVDaGFuZ2VkKHZhbHVlPzogRGF0ZSkge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZSh2YWx1ZSwgdGhpcy50eXBlKTtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5fdmlld1N0YXJ0RGF0ZSB8fFxuICAgICAgdmFsLmNvbXBhcmUodGhpcy5kaXNwbGF5UmFuZ2Uuc3RhcnRUaW1lLCB0aGlzLmFjdGl2ZVZpZXcpID09IC0xIHx8XG4gICAgICB2YWwuY29tcGFyZSh0aGlzLmRpc3BsYXlSYW5nZS5lbmRUaW1lLCB0aGlzLmFjdGl2ZVZpZXcpID09IDFcbiAgICApIHtcbiAgICAgIHRoaXMuX3ZpZXdTdGFydERhdGUgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUodmFsdWUsIHRoaXMudHlwZSk7XG4gICAgfVxuICAgIHRoaXMuX2Zvb3RQcmludC55ZWFyID0gdmFsLnllYXI7XG4gICAgdGhpcy5fZm9vdFByaW50Lm1vbnRoID0gdmFsLm1vbnRoT2ZZZWFyO1xuICAgIHRoaXMuX2Zvb3RQcmludC5kYXkgPSB2YWwuZGF5T2ZNb250aDtcblxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICBjb25zdCBjYWxlbmRhclNsb3RzID0gQXJyYXkuZnJvbSh0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5heC1jYWxlbmRhci1zbG90JykpO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRTbG90ID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXgtc3RhdGUtc2VsZWN0ZWQnKTtcbiAgICAgIGlmIChzZWxlY3RlZFNsb3QpIHtcbiAgICAgICAgc2VsZWN0ZWRTbG90LmNsYXNzTGlzdC5yZW1vdmUoJ2F4LXN0YXRlLXNlbGVjdGVkJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgfVxuICAgICAgY2FsZW5kYXJTbG90cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGVsZW1lbnQgPSBlbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAoZWxlbWVudC50ZXh0Q29udGVudCA9PSB0aGlzLl9mb290UHJpbnQuZGF5KSB7XG4gICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdheC1zdGF0ZS1zZWxlY3RlZCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfaGFuZGxlR29Ub2RheSgpIHtcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSB0cnVlO1xuICAgIHRoaXMuX3NldERhdGUodGhpcy5fdG9kYXkuZGF0ZSk7XG4gICAgdGhpcy5nb1RvZGF5KCk7XG4gICAgdGhpcy5fbmF2VXNlckludGVyYWN0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBuZXh0IGl0ZW0uXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5leHQoKSB7XG4gICAgdGhpcy5fbmF2TmV4dFByZXYoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgcHJldmlvdXMgaXRlbS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJldigpIHtcbiAgICB0aGlzLl9uYXZOZXh0UHJldih0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGZvY3VzIHRvIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgY2FsZW5kYXIgc2xvdCBvciB0aGUgZmlyc3QgYXZhaWxhYmxlIHNsb3QuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG92ZXJyaWRlIGZvY3VzKCkge1xuICAgIGNvbnN0IGZ1bmMgPSAoczogc3RyaW5nKSA9PiB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4ocyk7XG4gICAgY29uc3QgZGl2ID0gZnVuYygnLmF4LWNhbGVuZGFyLXNsb3RzPmRpdi5heC1zdGF0ZS1zZWxlY3RlZCcpIHx8IGZ1bmMoJy5heC1jYWxlbmRhci1zbG90cz5kaXYnKTtcbiAgICBkaXY/LmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX25hdk5leHRQcmV2KHByZXY6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBzaWduID0gcHJldiA/IC0xIDogMTtcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdkYXknKSB0aGlzLm5hdlRvKHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCdtb250aCcsIHNpZ24gKiAxICogdGhpcy5jb3VudCkpO1xuICAgIGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGgnKSB0aGlzLm5hdlRvKHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCd5ZWFyJywgc2lnbiAqIDEgKiB0aGlzLmNvdW50KSk7XG4gICAgZWxzZSB0aGlzLm5hdlRvKHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCd5ZWFyJywgc2lnbiAqIDEwICogdGhpcy5jb3VudCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgY3VycmVudCBkYXRlLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBnb1RvZGF5KCkge1xuICAgIHRoaXMubmF2VG8odGhpcy5fdG9kYXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byBhIHNwZWNpZmllZCBkYXRlIGFuZCB1cGRhdGVzIHRoZSB2aWV3LlxuICAgKlxuICAgKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIG5hdmlnYXRlIHRvLCB3aGljaCBjYW4gYmUgYSBgRGF0ZWAgb2JqZWN0IG9yIGFuIGBBWERhdGVUaW1lYCBpbnN0YW5jZS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmF2VG8oZGF0ZTogRGF0ZSB8IEFYRGF0ZVRpbWUpIHtcbiAgICBjb25zdCB2YWwgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jb252ZXJ0KGRhdGUsIHRoaXMudHlwZSk7XG4gICAgdGhpcy5fdmlld1N0YXJ0RGF0ZSA9IHZhbC5zdGFydE9mKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICAvL3RvIG1ha2Ugc3VyZSBpdHMgcmVuZHJlZCBhbmQgZGlzcGxheVJhbmdlIGlzIG5vdCBudWxsXG4gICAgaWYgKHRoaXMudmlld3MubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdnIgPSB0aGlzLmRpc3BsYXlSYW5nZTtcbiAgICAgIHRoaXMub25OYXZpZ2F0ZS5lbWl0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdGhpcy5fbmF2VXNlckludGVyYWN0aW9uLFxuICAgICAgICBzdGFydDogdnIuc3RhcnRUaW1lPy5kYXRlLFxuICAgICAgICBlbmQ6IHZyLmVuZFRpbWU/LmRhdGUsXG4gICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLmdldEhvc3RFbGVtZW50KCksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwcml2YXRlIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IF9jbGFzc2VzID0ge1xuICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogdGhpcy5kaXNhYmxlZCxcbiAgICAgICdheC1zdGF0ZS1yZWFkb25seSc6IHRoaXMucmVhZG9ubHksXG4gICAgfTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoX2NsYXNzZXMpXG4gICAgICAuZmlsdGVyKChjKSA9PiBjWzFdKVxuICAgICAgLm1hcCgoYykgPT4gY1swXSlcbiAgICAgIC5qb2luKCcgJyk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX3NldERhdGUodmFsdWU6IERhdGUpIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5jb21taXRWYWx1ZSh0aGlzLmNhbGVuZGFyU2VydmljZS5jb252ZXJ0KHZhbHVlLCB0aGlzLnR5cGUpLnN0YXJ0T2YoKS5kYXRlLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWQoZGF0ZTogQVhEYXRlVGltZSk6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGlzYWJsZWREYXRlcykgJiYgdGhpcy5kaXNhYmxlZERhdGVzLmxlbmd0aCAhPSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZERhdGVzLnNvbWUoKGQpID0+IGRhdGUuZXF1YWwoZCwgJ2RheScpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmRpc2FibGVkRGF0ZXMgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWREYXRlcyhkYXRlLmRhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBpc0hvbGlkYXkoZGF0ZTogQVhEYXRlVGltZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGdoID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuaG9saWRheXMuc29tZSgoZCkgPT4gZGF0ZS5lcXVhbChkLmRhdGUsICdkYXknKSk7XG4gICAgbGV0IGRoID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuaG9saWRheXMuc29tZSgoZCkgPT4gZGF0ZS5lcXVhbChkLmRhdGUsICdkYXknKSk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5ob2xpZGF5RGF0ZXMpICYmIHRoaXMuaG9saWRheURhdGVzLmxlbmd0aCAhPSAwKSB7XG4gICAgICBkaCA9IHRoaXMuaG9saWRheURhdGVzLnNvbWUoKGQpID0+IGRhdGUuZXF1YWwoZCwgJ2RheScpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmhvbGlkYXlEYXRlcyA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBkaCA9IHRoaXMuaG9saWRheURhdGVzKGRhdGUuZGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiBnaCB8fCBkaDtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzV2Vla2VuZChkYXRlOiBBWERhdGVUaW1lKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgd2Vla2VuZCA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnJlc29sdmVDYWxlbmRhcih0aGlzLnR5cGUpLndlZWtlbmQ7XG4gICAgcmV0dXJuIHdlZWtlbmQuaW5jbHVkZXMoZGF0ZS5kYXlPZldlZWsgLSAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIF9oYW5kbGVPbktleWRvd25FdmVudChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLy9UT0RPOiBjb21wbGV0ZSBrZXlib2FkIG5hdmlnYXRpb25cbiAgICBjb25zdCBpZ25vcmUgPSAoKSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH07XG4gICAgaWYgKGUuY29kZSA9PT0gJ0Fycm93UmlnaHQnIHx8IGUuY29kZSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgIGlmIChlLmN0cmxLZXkpIHtcbiAgICAgICAgZS5jb2RlID09PSAnQXJyb3dSaWdodCcgPyB0aGlzLm5leHQoKSA6IHRoaXMucHJldigpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgIH0sIDUwKTtcbiAgICAgIH1cbiAgICAgIGlnbm9yZSgpO1xuICAgIH0gZWxzZSBpZiAoZS5jb2RlID09PSAnQXJyb3dVcCcgfHwgZS5jb2RlID09PSAnQXJyb3dEb3duJykge1xuICAgICAgaWYgKGUuY3RybEtleSkge1xuICAgICAgICBlLmNvZGUgPT09ICdBcnJvd1VwJyA/IHRoaXMubmV4dCgpIDogdGhpcy5wcmV2KCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfSwgNTApO1xuICAgICAgfVxuICAgICAgaWdub3JlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0TW9udGhOYW1lKGRhdGU6IEFYRGF0ZVRpbWUsIHN0eWxlOiAnc2hvcnQnIHwgJ2xvbmcnKSB7XG4gICAgcmV0dXJuIGBkYXRlVGltZS5tb250aHMuJHtkYXRlLmNhbGVuZGFyLm5hbWUoKX0uJHtzdHlsZX0uJHtkYXRlLm1vbnRoT2ZZZWFyIC0gMX1gO1xuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJheC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG48ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItYm9keVwiPlxuICBAZm9yICh2IG9mIHZpZXdzOyBsZXQgaSA9ICRpbmRleCwgZmlyc3QgPSAkZmlyc3QsIGxhc3QgPSAkbGFzdDsgdHJhY2sgaSkge1xuICAgIEBzd2l0Y2ggKGFjdGl2ZVZpZXcpIHtcbiAgICAgIEBjYXNlICgneWVhcicpIHtcbiAgICAgICAgQGlmIChzaG93TmF2aWdhdGlvbikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci12aWV3LWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1pbmZvXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLXJvdW5kZWQgYXgtc3RhdGUtZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50LCAneWVhcicpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHYucmFuZ2Uuc3RhcnRUaW1lLmZvcm1hdCgnWVlZWScpIH19IC0ge3sgdi5yYW5nZS5lbmRUaW1lLmZvcm1hdCgnWVlZWScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKGxhc3QpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uIGF4LW5leHRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVQcmV2Q2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3ByZXYnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLnJlYWRvbmx5XT1cInJlYWRvbmx5ID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLXJvdW5kZWQgYXgtYnV0dG9uLWljb25cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVOZXh0Q2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ25leHQnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWNoZXZyb24tcmlnaHRcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy15ZWFyXCIgW25nQ2xhc3NdPVwieyAnYXgtZGVmYXVsdCc6ICFjZWxsVGVtcGxhdGUgfVwiPlxuICAgICAgICAgIEBmb3IgKHNsb3Qgb2Ygdi5zbG90czsgdHJhY2sgc2xvdC50ZXh0KSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNsb3QuY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVNsb3RDbGljaygkZXZlbnQsIHNsb3QpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGlmIChjZWxsVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHsgc2xvdDogc2xvdCB9IH1cIj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8ZGl2IFt0aXRsZV09XCJzbG90LnRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNsb3QudGV4dCB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGNhc2UgKCdtb250aCcpIHtcbiAgICAgICAgQGlmIChzaG93TmF2aWdhdGlvbikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci12aWV3LWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1pbmZvXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLXJvdW5kZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50LCAneWVhcicpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHYucmFuZ2Uuc3RhcnRUaW1lLmZvcm1hdCgnWVlZWScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKGxhc3QpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlUHJldkNsaWNrKClcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwcmV2JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlTmV4dENsaWNrKClcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIiduZXh0JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdHMgYXgtY2FsZW5kYXItc2xvdHMtbW9udGhcIiBbbmdDbGFzc109XCJ7ICdheC1kZWZhdWx0JzogIWNlbGxUZW1wbGF0ZSB9XCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzbG90IG9mIHYuc2xvdHNcIlxuICAgICAgICAgICAgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90XCJcbiAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJzbG90LmNzc0NsYXNzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlU2xvdENsaWNrKCRldmVudCwgc2xvdClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoY2VsbFRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHsgc2xvdDogc2xvdCB9IH1cIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwic2xvdC50b29sdGlwXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0TW9udGhOYW1lKHNsb3QuZGF0ZSwgJ3Nob3J0JykgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAZGVmYXVsdCB7XG4gICAgICAgIEBpZiAoc2hvd05hdmlnYXRpb24pIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItdmlldy1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItaW5mb1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFthdHRyLnJlYWRvbmx5XT1cInJlYWRvbmx5ID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZU5hdkNsaWNrKCRldmVudCwgJ3llYXInKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyB2LnJhbmdlLnN0YXJ0VGltZS5mb3JtYXQoJ1lZWVknKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVOYXZDbGljaygkZXZlbnQsICdtb250aCcpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGdldE1vbnRoTmFtZSh2LnJhbmdlLnN0YXJ0VGltZSwgJ2xvbmcnKSB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKGxhc3QpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlUHJldkNsaWNrKClcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwcmV2JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlTmV4dENsaWNrKClcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIiduZXh0JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItd2Vla1wiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGQgb2YgX3dlZWtkYXlzXCI+e3sgJ2RhdGVUaW1lLndlZWtkYXlzLnNob3J0LicgKyBkIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy1kYXlcIiBbbmdDbGFzc109XCJ7ICdheC1kZWZhdWx0JzogIWNlbGxUZW1wbGF0ZSB9XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2xvdCBvZiB2LnNsb3RzXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNsb3QuY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVNsb3RDbGljaygkZXZlbnQsIHNsb3QpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2F4UmlwcGxlXVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKGNlbGxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyBzbG90OiBzbG90IH0gfVwiPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxkaXYgW3RpdGxlXT1cInNsb3QudG9vbHRpcFwiPlxuICAgICAgICAgICAgICAgICAge3sgc2xvdC50ZXh0IH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICB9XG4gIH1cbjwvZGl2PlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuIl19