@acorex/components 7.1.0 → 7.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (728) hide show
  1. package/action-sheet/index.d.ts +5 -5
  2. package/action-sheet/public-api.d.ts +3 -3
  3. package/action-sheet/src/action-sheet.component.d.ts +25 -25
  4. package/action-sheet/src/action-sheet.interface.d.ts +20 -20
  5. package/action-sheet/src/action-sheet.module.d.ts +14 -14
  6. package/action-sheet/src/action-sheet.service.d.ts +13 -13
  7. package/alert/index.d.ts +5 -5
  8. package/alert/public-api.d.ts +2 -2
  9. package/alert/src/alert.component.d.ts +88 -88
  10. package/alert/src/alert.module.d.ts +9 -9
  11. package/avatar/index.d.ts +5 -5
  12. package/avatar/public-api.d.ts +3 -3
  13. package/avatar/src/avatar-group.component.d.ts +8 -8
  14. package/avatar/src/avatar.component.d.ts +20 -20
  15. package/avatar/src/avatar.module.d.ts +9 -9
  16. package/badge/index.d.ts +5 -5
  17. package/badge/public-api.d.ts +2 -2
  18. package/badge/src/badge.component.d.ts +41 -41
  19. package/badge/src/badge.module.d.ts +8 -8
  20. package/breadcrumbs/index.d.ts +5 -5
  21. package/breadcrumbs/public-api.d.ts +4 -4
  22. package/breadcrumbs/src/breadcrumbs-item.class.d.ts +9 -9
  23. package/breadcrumbs/src/breadcrumbs-item.component.d.ts +77 -79
  24. package/breadcrumbs/src/breadcrumbs.component.d.ts +13 -13
  25. package/breadcrumbs/src/breadcrumbs.module.d.ts +9 -9
  26. package/button/index.d.ts +5 -5
  27. package/button/public-api.d.ts +5 -5
  28. package/button/src/button-group.component.d.ts +86 -86
  29. package/button/src/button-item.class.d.ts +24 -24
  30. package/button/src/button-item.component.d.ts +82 -80
  31. package/button/src/button.component.d.ts +23 -23
  32. package/button/src/button.module.d.ts +11 -11
  33. package/calendar/index.d.ts +5 -5
  34. package/calendar/public-api.d.ts +4 -4
  35. package/calendar/src/calendar-range.component.d.ts +29 -29
  36. package/calendar/src/calendar.class.d.ts +100 -100
  37. package/calendar/src/calendar.component.d.ts +44 -44
  38. package/calendar/src/calendar.module.d.ts +10 -10
  39. package/card/index.d.ts +5 -5
  40. package/card/public-api.d.ts +2 -2
  41. package/card/src/card.component.d.ts +10 -10
  42. package/card/src/card.module.d.ts +8 -8
  43. package/checkbox/index.d.ts +5 -5
  44. package/checkbox/public-api.d.ts +2 -2
  45. package/checkbox/src/checkbox.component.d.ts +12 -12
  46. package/checkbox/src/checkbox.module.d.ts +10 -10
  47. package/chips/index.d.ts +5 -5
  48. package/chips/public-api.d.ts +2 -2
  49. package/chips/src/chips.component.d.ts +72 -72
  50. package/chips/src/chips.module.d.ts +8 -8
  51. package/collapse/index.d.ts +5 -5
  52. package/collapse/public-api.d.ts +3 -3
  53. package/collapse/src/collapse-group.component.d.ts +15 -15
  54. package/collapse/src/collapse.component.d.ts +17 -17
  55. package/collapse/src/collapse.module.d.ts +9 -9
  56. package/color-palette/index.d.ts +5 -5
  57. package/color-palette/public-api.d.ts +7 -7
  58. package/color-palette/src/color-palette-input.component.d.ts +22 -22
  59. package/color-palette/src/color-palette-picker.component.d.ts +32 -32
  60. package/color-palette/src/color-palette-preview.component.d.ts +11 -11
  61. package/color-palette/src/color-palette-swatches.component.d.ts +18 -18
  62. package/color-palette/src/color-palette.class.d.ts +22 -22
  63. package/color-palette/src/color-palette.component.d.ts +16 -16
  64. package/color-palette/src/color-palette.module.d.ts +19 -19
  65. package/color-picker/index.d.ts +5 -5
  66. package/color-picker/public-api.d.ts +2 -2
  67. package/color-picker/src/color-picker.component.d.ts +190 -193
  68. package/color-picker/src/color-picker.module.d.ts +18 -18
  69. package/common/index.d.ts +5 -5
  70. package/common/public-api.d.ts +16 -16
  71. package/common/src/classes/components.class.d.ts +62 -62
  72. package/common/src/classes/data.class.d.ts +4 -4
  73. package/common/src/classes/drawing.class.d.ts +9 -9
  74. package/common/src/classes/events.class.d.ts +95 -95
  75. package/common/src/classes/styles.class.d.ts +17 -17
  76. package/common/src/common.module.d.ts +11 -11
  77. package/common/src/components/base-component.class.d.ts +28 -28
  78. package/common/src/components/button-base-component.class.d.ts +36 -36
  79. package/common/src/components/color-component.class.d.ts +15 -15
  80. package/common/src/components/colorlook-component.class.d.ts +9 -9
  81. package/common/src/components/index.d.ts +7 -7
  82. package/common/src/components/interactive-component.class.d.ts +37 -37
  83. package/common/src/components/look-component.class.d.ts +15 -15
  84. package/common/src/components/value-component.class.d.ts +45 -45
  85. package/common/src/constant/positions.d.ts +75 -75
  86. package/common/src/directives/auto-focus.directive.d.ts +13 -13
  87. package/common/src/directives/debounce-time.directive.d.ts +17 -17
  88. package/common/src/directives/hotkey.directive.d.ts +22 -22
  89. package/common/src/directives/infinite-scroll.directive.d.ts +25 -25
  90. package/common/src/directives/responsive.directive.d.ts +10 -10
  91. package/common/src/services/custom-cdk-overlay.service.d.ts +19 -19
  92. package/common/src/services/hotkey.service.d.ts +17 -17
  93. package/common/src/services/overlay.service.d.ts +34 -34
  94. package/context-menu/index.d.ts +5 -5
  95. package/context-menu/public-api.d.ts +2 -2
  96. package/context-menu/src/context-menu.component.d.ts +34 -34
  97. package/context-menu/src/context-menu.module.d.ts +13 -13
  98. package/data-pager/index.d.ts +5 -5
  99. package/data-pager/public-api.d.ts +9 -9
  100. package/data-pager/src/data-pager-base.component.d.ts +49 -49
  101. package/data-pager/src/data-pager-info.component.d.ts +15 -15
  102. package/data-pager/src/data-pager-input-selector.component.d.ts +15 -15
  103. package/data-pager/src/data-pager-next-buttons.components.d.ts +16 -16
  104. package/data-pager/src/data-pager-numeric-selector.component.d.ts +18 -18
  105. package/data-pager/src/data-pager-pagesize-dropdown.component.d.ts +18 -18
  106. package/data-pager/src/data-pager-prev-buttons.component.d.ts +15 -15
  107. package/data-pager/src/data-pager.component.d.ts +35 -35
  108. package/data-pager/src/data-pager.module.d.ts +18 -18
  109. package/data-table/index.d.ts +5 -5
  110. package/data-table/public-api.d.ts +4 -4
  111. package/data-table/src/data-column-cell-template.directive.d.ts +8 -8
  112. package/data-table/src/data-column.directive.d.ts +16 -16
  113. package/data-table/src/data-table.component.d.ts +37 -37
  114. package/data-table/src/data-table.module.d.ts +14 -14
  115. package/date-picker/index.d.ts +5 -5
  116. package/date-picker/public-api.d.ts +2 -2
  117. package/date-picker/src/datepicker.component.d.ts +154 -154
  118. package/date-picker/src/datepicker.module.d.ts +15 -15
  119. package/decorators/index.d.ts +5 -5
  120. package/decorators/public-api.d.ts +14 -14
  121. package/decorators/src/close-button.component.d.ts +14 -14
  122. package/decorators/src/content.component.d.ts +8 -8
  123. package/decorators/src/decorators.module.d.ts +20 -20
  124. package/decorators/src/footer.component.d.ts +8 -8
  125. package/decorators/src/form-hint.component.d.ts +8 -8
  126. package/decorators/src/header.component.d.ts +8 -8
  127. package/decorators/src/icon.component.d.ts +10 -10
  128. package/decorators/src/overlay.component.d.ts +6 -6
  129. package/decorators/src/placeholder.component.d.ts +5 -5
  130. package/decorators/src/prefix.component.d.ts +8 -8
  131. package/decorators/src/sub-title.component.d.ts +9 -9
  132. package/decorators/src/suffix.component.d.ts +8 -8
  133. package/decorators/src/text.component.d.ts +9 -9
  134. package/decorators/src/title.component.d.ts +8 -8
  135. package/dialog/index.d.ts +5 -5
  136. package/dialog/public-api.d.ts +4 -4
  137. package/dialog/src/dialog.class.d.ts +13 -13
  138. package/dialog/src/dialog.component.d.ts +16 -16
  139. package/dialog/src/dialog.module.d.ts +14 -14
  140. package/dialog/src/dialog.service.d.ts +38 -38
  141. package/drawer/index.d.ts +5 -5
  142. package/drawer/public-api.d.ts +3 -3
  143. package/drawer/src/drawer-container.component.d.ts +10 -10
  144. package/drawer/src/drawer.component.d.ts +36 -36
  145. package/drawer/src/drawer.module.d.ts +9 -9
  146. package/dropdown/index.d.ts +5 -5
  147. package/dropdown/public-api.d.ts +2 -2
  148. package/dropdown/src/dropdown-panel.component.d.ts +30 -30
  149. package/dropdown/src/dropdown.module.d.ts +14 -14
  150. package/esm2022/acorex-components.mjs +4 -4
  151. package/esm2022/action-sheet/acorex-components-action-sheet.mjs +4 -4
  152. package/esm2022/action-sheet/public-api.mjs +3 -3
  153. package/esm2022/action-sheet/src/action-sheet.component.mjs +81 -80
  154. package/esm2022/action-sheet/src/action-sheet.interface.mjs +2 -2
  155. package/esm2022/action-sheet/src/action-sheet.module.mjs +27 -26
  156. package/esm2022/action-sheet/src/action-sheet.service.mjs +94 -93
  157. package/esm2022/alert/acorex-components-alert.mjs +4 -4
  158. package/esm2022/alert/public-api.mjs +2 -2
  159. package/esm2022/alert/src/alert.component.mjs +189 -188
  160. package/esm2022/alert/src/alert.module.mjs +23 -22
  161. package/esm2022/avatar/acorex-components-avatar.mjs +4 -4
  162. package/esm2022/avatar/public-api.mjs +3 -3
  163. package/esm2022/avatar/src/avatar-group.component.mjs +17 -16
  164. package/esm2022/avatar/src/avatar.component.mjs +44 -43
  165. package/esm2022/avatar/src/avatar.module.mjs +23 -22
  166. package/esm2022/badge/acorex-components-badge.mjs +4 -4
  167. package/esm2022/badge/public-api.mjs +2 -2
  168. package/esm2022/badge/src/badge.component.mjs +29 -28
  169. package/esm2022/badge/src/badge.module.mjs +22 -21
  170. package/esm2022/breadcrumbs/acorex-components-breadcrumbs.mjs +4 -4
  171. package/esm2022/breadcrumbs/public-api.mjs +4 -4
  172. package/esm2022/breadcrumbs/src/breadcrumbs-item.class.mjs +1 -1
  173. package/esm2022/breadcrumbs/src/breadcrumbs-item.component.mjs +51 -50
  174. package/esm2022/breadcrumbs/src/breadcrumbs.component.mjs +28 -27
  175. package/esm2022/breadcrumbs/src/breadcrumbs.module.mjs +21 -20
  176. package/esm2022/button/acorex-components-button.mjs +4 -4
  177. package/esm2022/button/public-api.mjs +5 -5
  178. package/esm2022/button/src/button-group.component.mjs +92 -91
  179. package/esm2022/button/src/button-item.class.mjs +1 -1
  180. package/esm2022/button/src/button-item.component.mjs +70 -69
  181. package/esm2022/button/src/button.component.mjs +79 -78
  182. package/esm2022/button/src/button.module.mjs +33 -32
  183. package/esm2022/calendar/acorex-components-calendar.mjs +4 -4
  184. package/esm2022/calendar/public-api.mjs +4 -4
  185. package/esm2022/calendar/src/calendar-range.component.mjs +175 -174
  186. package/esm2022/calendar/src/calendar.class.mjs +282 -280
  187. package/esm2022/calendar/src/calendar.component.mjs +373 -372
  188. package/esm2022/calendar/src/calendar.module.mjs +24 -23
  189. package/esm2022/card/acorex-components-card.mjs +4 -4
  190. package/esm2022/card/public-api.mjs +2 -2
  191. package/esm2022/card/src/card.component.mjs +19 -18
  192. package/esm2022/card/src/card.module.mjs +20 -19
  193. package/esm2022/checkbox/acorex-components-checkbox.mjs +4 -4
  194. package/esm2022/checkbox/public-api.mjs +2 -2
  195. package/esm2022/checkbox/src/checkbox.component.mjs +43 -42
  196. package/esm2022/checkbox/src/checkbox.module.mjs +22 -21
  197. package/esm2022/chips/acorex-components-chips.mjs +4 -4
  198. package/esm2022/chips/public-api.mjs +2 -2
  199. package/esm2022/chips/src/chips.component.mjs +34 -33
  200. package/esm2022/chips/src/chips.module.mjs +20 -19
  201. package/esm2022/collapse/acorex-components-collapse.mjs +4 -4
  202. package/esm2022/collapse/public-api.mjs +3 -3
  203. package/esm2022/collapse/src/collapse-group.component.mjs +53 -52
  204. package/esm2022/collapse/src/collapse.component.mjs +48 -47
  205. package/esm2022/collapse/src/collapse.module.mjs +21 -20
  206. package/esm2022/color-palette/acorex-components-color-palette.mjs +4 -4
  207. package/esm2022/color-palette/public-api.mjs +7 -7
  208. package/esm2022/color-palette/src/color-palette-input.component.mjs +131 -130
  209. package/esm2022/color-palette/src/color-palette-picker.component.mjs +160 -159
  210. package/esm2022/color-palette/src/color-palette-preview.component.mjs +57 -56
  211. package/esm2022/color-palette/src/color-palette-swatches.component.mjs +295 -294
  212. package/esm2022/color-palette/src/color-palette.class.mjs +19 -17
  213. package/esm2022/color-palette/src/color-palette.component.mjs +76 -75
  214. package/esm2022/color-palette/src/color-palette.module.mjs +61 -60
  215. package/esm2022/color-picker/acorex-components-color-picker.mjs +4 -4
  216. package/esm2022/color-picker/public-api.mjs +2 -2
  217. package/esm2022/color-picker/src/color-picker.component.mjs +120 -119
  218. package/esm2022/color-picker/src/color-picker.module.mjs +62 -61
  219. package/esm2022/common/acorex-components-common.mjs +4 -4
  220. package/esm2022/common/public-api.mjs +16 -16
  221. package/esm2022/common/src/classes/components.class.mjs +78 -72
  222. package/esm2022/common/src/classes/data.class.mjs +1 -1
  223. package/esm2022/common/src/classes/drawing.class.mjs +1 -1
  224. package/esm2022/common/src/classes/events.class.mjs +95 -95
  225. package/esm2022/common/src/classes/styles.class.mjs +12 -12
  226. package/esm2022/common/src/common.module.mjs +43 -42
  227. package/esm2022/common/src/components/base-component.class.mjs +56 -56
  228. package/esm2022/common/src/components/button-base-component.class.mjs +68 -68
  229. package/esm2022/common/src/components/color-component.class.mjs +26 -26
  230. package/esm2022/common/src/components/colorlook-component.class.mjs +10 -10
  231. package/esm2022/common/src/components/index.mjs +7 -7
  232. package/esm2022/common/src/components/interactive-component.class.mjs +62 -62
  233. package/esm2022/common/src/components/look-component.class.mjs +26 -26
  234. package/esm2022/common/src/components/value-component.class.mjs +207 -206
  235. package/esm2022/common/src/constant/positions.mjs +74 -74
  236. package/esm2022/common/src/directives/auto-focus.directive.mjs +58 -57
  237. package/esm2022/common/src/directives/debounce-time.directive.mjs +50 -49
  238. package/esm2022/common/src/directives/hotkey.directive.mjs +83 -82
  239. package/esm2022/common/src/directives/infinite-scroll.directive.mjs +70 -69
  240. package/esm2022/common/src/directives/responsive.directive.mjs +36 -35
  241. package/esm2022/common/src/services/custom-cdk-overlay.service.mjs +52 -50
  242. package/esm2022/common/src/services/hotkey.service.mjs +41 -40
  243. package/esm2022/common/src/services/overlay.service.mjs +116 -115
  244. package/esm2022/context-menu/acorex-components-context-menu.mjs +4 -4
  245. package/esm2022/context-menu/public-api.mjs +2 -2
  246. package/esm2022/context-menu/src/context-menu.component.mjs +271 -270
  247. package/esm2022/context-menu/src/context-menu.module.mjs +37 -36
  248. package/esm2022/data-pager/acorex-components-data-pager.mjs +4 -4
  249. package/esm2022/data-pager/public-api.mjs +9 -9
  250. package/esm2022/data-pager/src/data-pager-base.component.mjs +37 -35
  251. package/esm2022/data-pager/src/data-pager-info.component.mjs +62 -61
  252. package/esm2022/data-pager/src/data-pager-input-selector.component.mjs +46 -45
  253. package/esm2022/data-pager/src/data-pager-next-buttons.components.mjs +51 -50
  254. package/esm2022/data-pager/src/data-pager-numeric-selector.component.mjs +75 -74
  255. package/esm2022/data-pager/src/data-pager-pagesize-dropdown.component.mjs +67 -66
  256. package/esm2022/data-pager/src/data-pager-prev-buttons.component.mjs +48 -47
  257. package/esm2022/data-pager/src/data-pager.component.mjs +147 -146
  258. package/esm2022/data-pager/src/data-pager.module.mjs +52 -51
  259. package/esm2022/data-table/acorex-components-data-table.mjs +4 -4
  260. package/esm2022/data-table/public-api.mjs +4 -4
  261. package/esm2022/data-table/src/data-column-cell-template.directive.mjs +19 -18
  262. package/esm2022/data-table/src/data-column.directive.mjs +51 -50
  263. package/esm2022/data-table/src/data-table.component.mjs +140 -139
  264. package/esm2022/data-table/src/data-table.module.mjs +28 -27
  265. package/esm2022/date-picker/acorex-components-date-picker.mjs +4 -4
  266. package/esm2022/date-picker/public-api.mjs +2 -2
  267. package/esm2022/date-picker/src/datepicker.component.mjs +241 -240
  268. package/esm2022/date-picker/src/datepicker.module.mjs +45 -44
  269. package/esm2022/decorators/acorex-components-decorators.mjs +4 -4
  270. package/esm2022/decorators/public-api.mjs +14 -14
  271. package/esm2022/decorators/src/close-button.component.mjs +44 -43
  272. package/esm2022/decorators/src/content.component.mjs +22 -21
  273. package/esm2022/decorators/src/decorators.module.mjs +72 -71
  274. package/esm2022/decorators/src/footer.component.mjs +22 -21
  275. package/esm2022/decorators/src/form-hint.component.mjs +21 -20
  276. package/esm2022/decorators/src/header.component.mjs +22 -21
  277. package/esm2022/decorators/src/icon.component.mjs +31 -30
  278. package/esm2022/decorators/src/overlay.component.mjs +21 -20
  279. package/esm2022/decorators/src/placeholder.component.mjs +15 -14
  280. package/esm2022/decorators/src/prefix.component.mjs +22 -21
  281. package/esm2022/decorators/src/sub-title.component.mjs +26 -25
  282. package/esm2022/decorators/src/suffix.component.mjs +22 -21
  283. package/esm2022/decorators/src/text.component.mjs +23 -22
  284. package/esm2022/decorators/src/title.component.mjs +21 -20
  285. package/esm2022/dialog/acorex-components-dialog.mjs +4 -4
  286. package/esm2022/dialog/public-api.mjs +4 -4
  287. package/esm2022/dialog/src/dialog.class.mjs +1 -1
  288. package/esm2022/dialog/src/dialog.component.mjs +56 -55
  289. package/esm2022/dialog/src/dialog.module.mjs +28 -27
  290. package/esm2022/dialog/src/dialog.service.mjs +155 -154
  291. package/esm2022/drawer/acorex-components-drawer.mjs +4 -4
  292. package/esm2022/drawer/public-api.mjs +3 -3
  293. package/esm2022/drawer/src/drawer-container.component.mjs +31 -30
  294. package/esm2022/drawer/src/drawer.component.mjs +139 -138
  295. package/esm2022/drawer/src/drawer.module.mjs +23 -22
  296. package/esm2022/dropdown/acorex-components-dropdown.mjs +4 -4
  297. package/esm2022/dropdown/public-api.mjs +2 -2
  298. package/esm2022/dropdown/src/dropdown-panel.component.mjs +106 -105
  299. package/esm2022/dropdown/src/dropdown.module.mjs +26 -25
  300. package/esm2022/form/acorex-components-form.mjs +4 -4
  301. package/esm2022/form/public-api.mjs +6 -6
  302. package/esm2022/form/src/form-field.component.mjs +16 -15
  303. package/esm2022/form/src/form.component.mjs +164 -163
  304. package/esm2022/form/src/form.module.mjs +64 -63
  305. package/esm2022/form/src/validation-rule.widget.mjs +114 -113
  306. package/esm2022/form/src/validation-summary.component.mjs +82 -81
  307. package/esm2022/form/src/validation.class.mjs +1 -1
  308. package/esm2022/image/acorex-components-image.mjs +4 -4
  309. package/esm2022/image/public-api.mjs +2 -2
  310. package/esm2022/image/src/image.component.mjs +80 -79
  311. package/esm2022/image/src/image.module.mjs +20 -19
  312. package/esm2022/label/acorex-components-label.mjs +4 -4
  313. package/esm2022/label/public-api.mjs +2 -2
  314. package/esm2022/label/src/label.component.mjs +49 -48
  315. package/esm2022/label/src/label.module.mjs +22 -21
  316. package/esm2022/loading/acorex-components-loading.mjs +4 -4
  317. package/esm2022/loading/public-api.mjs +5 -5
  318. package/esm2022/loading/src/loading-spinner.component.mjs +18 -17
  319. package/esm2022/loading/src/loading.component.mjs +58 -57
  320. package/esm2022/loading/src/loading.directive.mjs +77 -76
  321. package/esm2022/loading/src/loading.module.mjs +36 -35
  322. package/esm2022/loading/src/loading.service.mjs +159 -158
  323. package/esm2022/menu/acorex-components-menu.mjs +4 -4
  324. package/esm2022/menu/public-api.mjs +2 -2
  325. package/esm2022/menu/src/menu.component.mjs +347 -346
  326. package/esm2022/menu/src/menu.module.mjs +34 -33
  327. package/esm2022/mixin/acorex-components-mixin.mjs +4 -4
  328. package/esm2022/mixin/public-api.mjs +17 -17
  329. package/esm2022/mixin/src/base-components.class.mjs +111 -110
  330. package/esm2022/mixin/src/base-menu-mixin.class.mjs +133 -133
  331. package/esm2022/mixin/src/button-mixin.class.mjs +70 -70
  332. package/esm2022/mixin/src/clickable-mixin.class.mjs +23 -23
  333. package/esm2022/mixin/src/color-look-mixing.class.mjs +47 -47
  334. package/esm2022/mixin/src/constratctor.mjs +1 -1
  335. package/esm2022/mixin/src/datalist-component.class.mjs +150 -150
  336. package/esm2022/mixin/src/datalist.class.mjs +2 -2
  337. package/esm2022/mixin/src/dropdown-mixin.class.mjs +98 -98
  338. package/esm2022/mixin/src/interactive-mixin.class.mjs +80 -80
  339. package/esm2022/mixin/src/loading-mixin.class.mjs +25 -25
  340. package/esm2022/mixin/src/mixin.class.mjs +25 -25
  341. package/esm2022/mixin/src/page-component.class.mjs +10 -10
  342. package/esm2022/mixin/src/selection-component.class.mjs +182 -182
  343. package/esm2022/mixin/src/sizable-mixin.class.mjs +21 -21
  344. package/esm2022/mixin/src/textbox-mixin.class.mjs +65 -65
  345. package/esm2022/mixin/src/value-mixin.class.mjs +219 -219
  346. package/esm2022/notification/acorex-components-notification.mjs +4 -4
  347. package/esm2022/notification/public-api.mjs +4 -4
  348. package/esm2022/notification/src/notification.class.mjs +1 -1
  349. package/esm2022/notification/src/notification.component.mjs +93 -92
  350. package/esm2022/notification/src/notification.module.mjs +24 -23
  351. package/esm2022/notification/src/notification.service.mjs +110 -109
  352. package/esm2022/number-box/acorex-components-number-box.mjs +4 -4
  353. package/esm2022/number-box/public-api.mjs +2 -2
  354. package/esm2022/number-box/src/number-box.component.mjs +269 -268
  355. package/esm2022/number-box/src/number-box.module.mjs +36 -35
  356. package/esm2022/page/acorex-components-page.mjs +4 -4
  357. package/esm2022/page/public-api.mjs +3 -3
  358. package/esm2022/page/src/base-page.class.mjs +64 -63
  359. package/esm2022/page/src/page.component.mjs +47 -46
  360. package/esm2022/page/src/page.module.mjs +19 -18
  361. package/esm2022/password-box/acorex-components-password-box.mjs +4 -4
  362. package/esm2022/password-box/public-api.mjs +2 -2
  363. package/esm2022/password-box/src/password-box.component.mjs +64 -63
  364. package/esm2022/password-box/src/password-box.module.mjs +33 -32
  365. package/esm2022/picker/acorex-components-picker.mjs +4 -4
  366. package/esm2022/picker/public-api.mjs +3 -3
  367. package/esm2022/picker/src/picker-column.component.mjs +21 -20
  368. package/esm2022/picker/src/picker.component.mjs +17 -16
  369. package/esm2022/picker/src/picker.module.mjs +38 -37
  370. package/esm2022/popover/acorex-components-popover.mjs +4 -4
  371. package/esm2022/popover/public-api.mjs +2 -2
  372. package/esm2022/popover/src/popover.component.mjs +263 -262
  373. package/esm2022/popover/src/popover.module.mjs +20 -19
  374. package/esm2022/popup/acorex-components-popup.mjs +4 -4
  375. package/esm2022/popup/public-api.mjs +3 -3
  376. package/esm2022/popup/src/popup.component.mjs +146 -145
  377. package/esm2022/popup/src/popup.module.mjs +28 -27
  378. package/esm2022/popup/src/popup.service.mjs +117 -116
  379. package/esm2022/progress-bar/acorex-components-progress-bar.mjs +4 -4
  380. package/esm2022/progress-bar/public-api.mjs +2 -2
  381. package/esm2022/progress-bar/src/progress-bar.component.mjs +34 -33
  382. package/esm2022/progress-bar/src/progress-bar.module.mjs +20 -19
  383. package/esm2022/public-api.mjs +4 -4
  384. package/esm2022/radio/acorex-components-radio.mjs +4 -4
  385. package/esm2022/radio/public-api.mjs +2 -2
  386. package/esm2022/radio/src/radio.component.mjs +40 -39
  387. package/esm2022/radio/src/radio.module.mjs +23 -22
  388. package/esm2022/range-slider/acorex-components-range-slider.mjs +4 -4
  389. package/esm2022/range-slider/public-api.mjs +2 -2
  390. package/esm2022/range-slider/src/range-slider.component.mjs +118 -117
  391. package/esm2022/range-slider/src/range-slider.module.mjs +23 -22
  392. package/esm2022/rating/acorex-components-rating.mjs +4 -4
  393. package/esm2022/rating/public-api.mjs +2 -2
  394. package/esm2022/rating/src/rating.component.mjs +42 -41
  395. package/esm2022/rating/src/rating.component.module.mjs +20 -19
  396. package/esm2022/result/acorex-components-result.mjs +4 -4
  397. package/esm2022/result/public-api.mjs +2 -2
  398. package/esm2022/result/src/result.component.mjs +27 -26
  399. package/esm2022/result/src/result.module.mjs +20 -19
  400. package/esm2022/search-box/acorex-components-search-box.mjs +4 -4
  401. package/esm2022/search-box/public-api.mjs +2 -2
  402. package/esm2022/search-box/src/search-box.component.mjs +55 -54
  403. package/esm2022/search-box/src/search-box.module.mjs +26 -25
  404. package/esm2022/select-box/acorex-components-select-box.mjs +4 -4
  405. package/esm2022/select-box/public-api.mjs +2 -2
  406. package/esm2022/select-box/src/selectbox.component.mjs +392 -391
  407. package/esm2022/select-box/src/selectbox.module.mjs +65 -64
  408. package/esm2022/selection-list/acorex-components-selection-list.mjs +4 -4
  409. package/esm2022/selection-list/public-api.mjs +2 -2
  410. package/esm2022/selection-list/src/selection-list.component.mjs +60 -60
  411. package/esm2022/selection-list/src/selection-list.module.mjs +25 -24
  412. package/esm2022/switch/acorex-components-switch.mjs +4 -4
  413. package/esm2022/switch/public-api.mjs +3 -3
  414. package/esm2022/switch/src/switch-content.component.mjs +17 -16
  415. package/esm2022/switch/src/switch.component.mjs +55 -54
  416. package/esm2022/switch/src/switch.module.mjs +23 -22
  417. package/esm2022/tabs/acorex-components-tabs.mjs +4 -4
  418. package/esm2022/tabs/public-api.mjs +5 -5
  419. package/esm2022/tabs/src/tab-content.directive.mjs +32 -31
  420. package/esm2022/tabs/src/tab-item.component.mjs +91 -90
  421. package/esm2022/tabs/src/tabs.class.mjs +5 -5
  422. package/esm2022/tabs/src/tabs.component.mjs +103 -102
  423. package/esm2022/tabs/src/tabs.module.mjs +26 -25
  424. package/esm2022/tag/acorex-components-tag.mjs +4 -4
  425. package/esm2022/tag/public-api.mjs +2 -2
  426. package/esm2022/tag/src/tag.component.mjs +30 -29
  427. package/esm2022/tag/src/tag.module.mjs +20 -19
  428. package/esm2022/textarea/acorex-components-textarea.mjs +4 -4
  429. package/esm2022/textarea/public-api.mjs +2 -2
  430. package/esm2022/textarea/src/textarea.component.mjs +30 -29
  431. package/esm2022/textarea/src/textarea.module.mjs +20 -19
  432. package/esm2022/textbox/acorex-components-textbox.mjs +4 -4
  433. package/esm2022/textbox/public-api.mjs +3 -3
  434. package/esm2022/textbox/src/mask-options.directive.mjs +20 -19
  435. package/esm2022/textbox/src/textbox.component.mjs +96 -95
  436. package/esm2022/textbox/src/textbox.module.mjs +39 -38
  437. package/esm2022/time-box/acorex-components-time-box.mjs +4 -4
  438. package/esm2022/time-box/public-api.mjs +2 -2
  439. package/esm2022/time-box/src/time-box.component.mjs +306 -305
  440. package/esm2022/time-box/src/time-box.module.mjs +33 -32
  441. package/esm2022/toast/acorex-components-toast.mjs +4 -4
  442. package/esm2022/toast/public-api.mjs +4 -4
  443. package/esm2022/toast/src/toast.class.mjs +1 -1
  444. package/esm2022/toast/src/toast.component.mjs +68 -67
  445. package/esm2022/toast/src/toast.module.mjs +23 -22
  446. package/esm2022/toast/src/toast.service.mjs +137 -136
  447. package/esm2022/tooltip/acorex-components-tooltip.mjs +4 -4
  448. package/esm2022/tooltip/public-api.mjs +3 -3
  449. package/esm2022/tooltip/src/tooltip.component.mjs +22 -21
  450. package/esm2022/tooltip/src/tooltip.directive.mjs +164 -163
  451. package/esm2022/tooltip/src/tooltip.module.mjs +23 -22
  452. package/esm2022/tree-view/acorex-components-tree-view.mjs +4 -4
  453. package/esm2022/tree-view/public-api.mjs +2 -2
  454. package/esm2022/tree-view/src/tree-view.component.mjs +108 -107
  455. package/esm2022/tree-view/src/tree-view.module.mjs +21 -20
  456. package/esm2022/uploader/acorex-components-uploader.mjs +4 -4
  457. package/esm2022/uploader/public-api.mjs +2 -2
  458. package/esm2022/uploader/src/uploader.component.mjs +102 -101
  459. package/esm2022/uploader/src/uploader.module.mjs +21 -20
  460. package/fesm2022/acorex-components-action-sheet.mjs +170 -170
  461. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  462. package/fesm2022/acorex-components-alert.mjs +196 -196
  463. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  464. package/fesm2022/acorex-components-avatar.mjs +66 -66
  465. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  466. package/fesm2022/acorex-components-badge.mjs +39 -39
  467. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  468. package/fesm2022/acorex-components-breadcrumbs.mjs +78 -78
  469. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  470. package/fesm2022/acorex-components-button.mjs +245 -245
  471. package/fesm2022/acorex-components-button.mjs.map +1 -1
  472. package/fesm2022/acorex-components-calendar.mjs +815 -815
  473. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  474. package/fesm2022/acorex-components-card.mjs +28 -28
  475. package/fesm2022/acorex-components-card.mjs.map +1 -1
  476. package/fesm2022/acorex-components-checkbox.mjs +51 -51
  477. package/fesm2022/acorex-components-checkbox.mjs.map +1 -1
  478. package/fesm2022/acorex-components-chips.mjs +42 -42
  479. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  480. package/fesm2022/acorex-components-collapse.mjs +102 -102
  481. package/fesm2022/acorex-components-collapse.mjs.map +1 -1
  482. package/fesm2022/acorex-components-color-palette.mjs +717 -717
  483. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  484. package/fesm2022/acorex-components-color-picker.mjs +153 -153
  485. package/fesm2022/acorex-components-color-picker.mjs.map +1 -1
  486. package/fesm2022/acorex-components-common.mjs +1150 -1150
  487. package/fesm2022/acorex-components-common.mjs.map +1 -1
  488. package/fesm2022/acorex-components-context-menu.mjs +287 -287
  489. package/fesm2022/acorex-components-context-menu.mjs.map +1 -1
  490. package/fesm2022/acorex-components-data-pager.mjs +487 -487
  491. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  492. package/fesm2022/acorex-components-data-table.mjs +205 -205
  493. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  494. package/fesm2022/acorex-components-date-picker.mjs +256 -256
  495. package/fesm2022/acorex-components-date-picker.mjs.map +1 -1
  496. package/fesm2022/acorex-components-decorators.mjs +287 -287
  497. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  498. package/fesm2022/acorex-components-dialog.mjs +207 -207
  499. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  500. package/fesm2022/acorex-components-drawer.mjs +174 -174
  501. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  502. package/fesm2022/acorex-components-dropdown.mjs +111 -111
  503. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  504. package/fesm2022/acorex-components-form.mjs +392 -392
  505. package/fesm2022/acorex-components-form.mjs.map +1 -1
  506. package/fesm2022/acorex-components-image.mjs +88 -88
  507. package/fesm2022/acorex-components-image.mjs.map +1 -1
  508. package/fesm2022/acorex-components-label.mjs +59 -59
  509. package/fesm2022/acorex-components-label.mjs.map +1 -1
  510. package/fesm2022/acorex-components-loading.mjs +308 -308
  511. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  512. package/fesm2022/acorex-components-menu.mjs +359 -359
  513. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  514. package/fesm2022/acorex-components-mixin.mjs +1214 -1214
  515. package/fesm2022/acorex-components-mixin.mjs.map +1 -1
  516. package/fesm2022/acorex-components-notification.mjs +200 -200
  517. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  518. package/fesm2022/acorex-components-number-box.mjs +284 -284
  519. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  520. package/fesm2022/acorex-components-page.mjs +112 -112
  521. package/fesm2022/acorex-components-page.mjs.map +1 -1
  522. package/fesm2022/acorex-components-password-box.mjs +81 -81
  523. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  524. package/fesm2022/acorex-components-picker.mjs +54 -54
  525. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  526. package/fesm2022/acorex-components-popover.mjs +266 -266
  527. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  528. package/fesm2022/acorex-components-popup.mjs +258 -258
  529. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  530. package/fesm2022/acorex-components-progress-bar.mjs +43 -43
  531. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  532. package/fesm2022/acorex-components-radio.mjs +50 -50
  533. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  534. package/fesm2022/acorex-components-range-slider.mjs +127 -127
  535. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  536. package/fesm2022/acorex-components-rating.mjs +51 -51
  537. package/fesm2022/acorex-components-rating.mjs.map +1 -1
  538. package/fesm2022/acorex-components-result.mjs +35 -35
  539. package/fesm2022/acorex-components-result.mjs.map +1 -1
  540. package/fesm2022/acorex-components-search-box.mjs +59 -59
  541. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  542. package/fesm2022/acorex-components-select-box.mjs +422 -422
  543. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  544. package/fesm2022/acorex-components-selection-list.mjs +68 -69
  545. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  546. package/fesm2022/acorex-components-switch.mjs +74 -74
  547. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  548. package/fesm2022/acorex-components-tabs.mjs +227 -227
  549. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  550. package/fesm2022/acorex-components-tag.mjs +38 -38
  551. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  552. package/fesm2022/acorex-components-textarea.mjs +37 -37
  553. package/fesm2022/acorex-components-textarea.mjs.map +1 -1
  554. package/fesm2022/acorex-components-textbox.mjs +130 -130
  555. package/fesm2022/acorex-components-textbox.mjs.map +1 -1
  556. package/fesm2022/acorex-components-time-box.mjs +319 -319
  557. package/fesm2022/acorex-components-time-box.mjs.map +1 -1
  558. package/fesm2022/acorex-components-toast.mjs +204 -204
  559. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  560. package/fesm2022/acorex-components-tooltip.mjs +187 -187
  561. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  562. package/fesm2022/acorex-components-tree-view.mjs +116 -116
  563. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  564. package/fesm2022/acorex-components-uploader.mjs +109 -109
  565. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  566. package/fesm2022/acorex-components.mjs +5 -5
  567. package/form/index.d.ts +5 -5
  568. package/form/public-api.d.ts +6 -6
  569. package/form/src/form-field.component.d.ts +8 -8
  570. package/form/src/form.component.d.ts +51 -51
  571. package/form/src/form.module.d.ts +15 -15
  572. package/form/src/validation-rule.widget.d.ts +18 -18
  573. package/form/src/validation-summary.component.d.ts +23 -23
  574. package/form/src/validation.class.d.ts +18 -18
  575. package/image/index.d.ts +5 -5
  576. package/image/public-api.d.ts +2 -2
  577. package/image/src/image.component.d.ts +27 -27
  578. package/image/src/image.module.d.ts +8 -8
  579. package/index.d.ts +5 -5
  580. package/label/index.d.ts +5 -5
  581. package/label/public-api.d.ts +2 -2
  582. package/label/src/label.component.d.ts +17 -17
  583. package/label/src/label.module.d.ts +8 -8
  584. package/loading/index.d.ts +5 -5
  585. package/loading/public-api.d.ts +5 -5
  586. package/loading/src/loading-spinner.component.d.ts +6 -6
  587. package/loading/src/loading.component.d.ts +21 -21
  588. package/loading/src/loading.directive.d.ts +22 -22
  589. package/loading/src/loading.module.d.ts +13 -13
  590. package/loading/src/loading.service.d.ts +48 -48
  591. package/menu/index.d.ts +5 -5
  592. package/menu/public-api.d.ts +2 -2
  593. package/menu/src/menu.component.d.ts +39 -39
  594. package/menu/src/menu.module.d.ts +12 -12
  595. package/mixin/index.d.ts +5 -5
  596. package/mixin/public-api.d.ts +17 -17
  597. package/mixin/src/base-components.class.d.ts +84 -84
  598. package/mixin/src/base-menu-mixin.class.d.ts +53 -53
  599. package/mixin/src/button-mixin.class.d.ts +53 -53
  600. package/mixin/src/clickable-mixin.class.d.ts +36 -36
  601. package/mixin/src/color-look-mixing.class.d.ts +44 -44
  602. package/mixin/src/constratctor.d.ts +4 -4
  603. package/mixin/src/datalist-component.class.d.ts +59 -59
  604. package/mixin/src/datalist.class.d.ts +11 -11
  605. package/mixin/src/dropdown-mixin.class.d.ts +47 -47
  606. package/mixin/src/interactive-mixin.class.d.ts +63 -63
  607. package/mixin/src/loading-mixin.class.d.ts +40 -40
  608. package/mixin/src/mixin.class.d.ts +679 -679
  609. package/mixin/src/page-component.class.d.ts +28 -28
  610. package/mixin/src/selection-component.class.d.ts +61 -61
  611. package/mixin/src/sizable-mixin.class.d.ts +34 -34
  612. package/mixin/src/textbox-mixin.class.d.ts +72 -72
  613. package/mixin/src/value-mixin.class.d.ts +63 -63
  614. package/notification/index.d.ts +5 -5
  615. package/notification/public-api.d.ts +4 -4
  616. package/notification/src/notification.class.d.ts +18 -18
  617. package/notification/src/notification.component.d.ts +30 -30
  618. package/notification/src/notification.module.d.ts +10 -10
  619. package/notification/src/notification.service.d.ts +16 -16
  620. package/number-box/index.d.ts +5 -5
  621. package/number-box/public-api.d.ts +2 -2
  622. package/number-box/src/number-box.component.d.ts +77 -77
  623. package/number-box/src/number-box.module.d.ts +12 -12
  624. package/package.json +13 -13
  625. package/page/index.d.ts +5 -5
  626. package/page/public-api.d.ts +3 -3
  627. package/page/src/base-page.class.d.ts +25 -25
  628. package/page/src/page.component.d.ts +14 -14
  629. package/page/src/page.module.d.ts +6 -6
  630. package/password-box/index.d.ts +5 -5
  631. package/password-box/public-api.d.ts +2 -2
  632. package/password-box/src/password-box.component.d.ts +25 -25
  633. package/password-box/src/password-box.module.d.ts +11 -11
  634. package/picker/index.d.ts +5 -5
  635. package/picker/public-api.d.ts +3 -3
  636. package/picker/src/picker-column.component.d.ts +11 -11
  637. package/picker/src/picker.component.d.ts +10 -10
  638. package/picker/src/picker.module.d.ts +14 -14
  639. package/popover/index.d.ts +5 -5
  640. package/popover/public-api.d.ts +2 -2
  641. package/popover/src/popover.component.d.ts +51 -51
  642. package/popover/src/popover.module.d.ts +8 -8
  643. package/popup/index.d.ts +5 -5
  644. package/popup/public-api.d.ts +3 -3
  645. package/popup/src/popup.component.d.ts +45 -45
  646. package/popup/src/popup.module.d.ts +14 -14
  647. package/popup/src/popup.service.d.ts +42 -42
  648. package/progress-bar/index.d.ts +5 -5
  649. package/progress-bar/public-api.d.ts +2 -2
  650. package/progress-bar/src/progress-bar.component.d.ts +18 -18
  651. package/progress-bar/src/progress-bar.module.d.ts +8 -8
  652. package/public-api.d.ts +1 -1
  653. package/radio/index.d.ts +5 -5
  654. package/radio/public-api.d.ts +2 -2
  655. package/radio/src/radio.component.d.ts +18 -18
  656. package/radio/src/radio.module.d.ts +9 -9
  657. package/range-slider/index.d.ts +5 -5
  658. package/range-slider/public-api.d.ts +2 -2
  659. package/range-slider/src/range-slider.component.d.ts +41 -41
  660. package/range-slider/src/range-slider.module.d.ts +9 -9
  661. package/rating/index.d.ts +5 -5
  662. package/rating/public-api.d.ts +2 -2
  663. package/rating/src/rating.component.d.ts +21 -21
  664. package/rating/src/rating.component.module.d.ts +8 -8
  665. package/result/index.d.ts +5 -5
  666. package/result/public-api.d.ts +2 -2
  667. package/result/src/result.component.d.ts +12 -12
  668. package/result/src/result.module.d.ts +8 -8
  669. package/search-box/index.d.ts +5 -5
  670. package/search-box/public-api.d.ts +2 -2
  671. package/search-box/src/search-box.component.d.ts +18 -18
  672. package/search-box/src/search-box.module.d.ts +12 -12
  673. package/select-box/index.d.ts +5 -5
  674. package/select-box/public-api.d.ts +2 -2
  675. package/select-box/src/selectbox.component.d.ts +66 -66
  676. package/select-box/src/selectbox.module.d.ts +19 -19
  677. package/selection-list/index.d.ts +5 -5
  678. package/selection-list/public-api.d.ts +2 -2
  679. package/selection-list/src/selection-list.component.d.ts +23 -23
  680. package/selection-list/src/selection-list.module.d.ts +13 -13
  681. package/switch/index.d.ts +5 -5
  682. package/switch/public-api.d.ts +3 -3
  683. package/switch/src/switch-content.component.d.ts +8 -8
  684. package/switch/src/switch.component.d.ts +13 -13
  685. package/switch/src/switch.module.d.ts +11 -11
  686. package/tabs/index.d.ts +5 -5
  687. package/tabs/public-api.d.ts +5 -5
  688. package/tabs/src/tab-content.directive.d.ts +11 -11
  689. package/tabs/src/tab-item.component.d.ts +48 -48
  690. package/tabs/src/tabs.class.d.ts +7 -7
  691. package/tabs/src/tabs.component.d.ts +29 -29
  692. package/tabs/src/tabs.module.d.ts +12 -12
  693. package/tag/index.d.ts +5 -5
  694. package/tag/public-api.d.ts +2 -2
  695. package/tag/src/tag.component.d.ts +11 -11
  696. package/tag/src/tag.module.d.ts +8 -8
  697. package/textarea/index.d.ts +5 -5
  698. package/textarea/public-api.d.ts +2 -2
  699. package/textarea/src/textarea.component.d.ts +14 -14
  700. package/textarea/src/textarea.module.d.ts +9 -9
  701. package/textbox/index.d.ts +5 -5
  702. package/textbox/public-api.d.ts +3 -3
  703. package/textbox/src/mask-options.directive.d.ts +13 -13
  704. package/textbox/src/textbox.component.d.ts +27 -27
  705. package/textbox/src/textbox.module.d.ts +13 -13
  706. package/time-box/index.d.ts +5 -5
  707. package/time-box/public-api.d.ts +2 -2
  708. package/time-box/src/time-box.component.d.ts +50 -50
  709. package/time-box/src/time-box.module.d.ts +11 -11
  710. package/toast/index.d.ts +5 -5
  711. package/toast/public-api.d.ts +4 -4
  712. package/toast/src/toast.class.d.ts +15 -15
  713. package/toast/src/toast.component.d.ts +25 -25
  714. package/toast/src/toast.module.d.ts +9 -9
  715. package/toast/src/toast.service.d.ts +21 -21
  716. package/tooltip/index.d.ts +5 -5
  717. package/tooltip/public-api.d.ts +3 -3
  718. package/tooltip/src/tooltip.component.d.ts +11 -11
  719. package/tooltip/src/tooltip.directive.d.ts +22 -22
  720. package/tooltip/src/tooltip.module.d.ts +10 -10
  721. package/tree-view/index.d.ts +5 -5
  722. package/tree-view/public-api.d.ts +2 -2
  723. package/tree-view/src/tree-view.component.d.ts +33 -33
  724. package/tree-view/src/tree-view.module.d.ts +9 -9
  725. package/uploader/index.d.ts +5 -5
  726. package/uploader/public-api.d.ts +2 -2
  727. package/uploader/src/uploader.component.d.ts +28 -28
  728. package/uploader/src/uploader.module.d.ts +9 -9
@@ -1,372 +1,373 @@
1
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, } from '@angular/core';
2
- import { AXDateTime, AXDateTimeRange } from '@acorex/core/dateTime';
3
- import { MXInteractiveComponent, MXValueComponent } from '@acorex/components/common';
4
- import { AXConfig } from '@acorex/core/config';
5
- import { classes } from 'polytype';
6
- import { MXCalendarBaseComponent } from './calendar.class';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common";
9
- export class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveComponent, MXCalendarBaseComponent) {
10
- get displayRange() {
11
- const current = this._viewStartDate || this._today;
12
- switch (this.activeView) {
13
- case 'years':
14
- // let y = current.startOf('year').year;
15
- // let min = y - 3;
16
- // let max = min + 11;
17
- let y = current.startOf('year').year;
18
- let min = y - (y % 10);
19
- let max = min + 9;
20
- return new AXDateTimeRange(AXDateTime.from({
21
- year: min,
22
- month: 1,
23
- date: 1,
24
- calendar: this._viewStartDate.calendar.name(),
25
- }), AXDateTime.from({
26
- year: max,
27
- month: 12,
28
- date: 28,
29
- calendar: this._viewStartDate.calendar.name(),
30
- }));
31
- case 'months':
32
- return new AXDateTimeRange(current.startOf('year'), current.endOf('year').add('day', -1));
33
- default:
34
- return new AXDateTimeRange(current.startOf('month'), current.endOf('month'));
35
- }
36
- }
37
- _today = new AXDateTime(new Date(), this.type);
38
- _viewStartDate;
39
- _navText = '';
40
- _todayText = '';
41
- _slots = [];
42
- _dayNames = [];
43
- _initValues() {
44
- this._today = new AXDateTime(new Date(), this.type);
45
- this._dayNames = this._today.calendar.dayShortNames;
46
- }
47
- _refresh() {
48
- this._initValues();
49
- this.navTo(this.value || this._today);
50
- }
51
- ngOnInit() {
52
- super.ngOnInit();
53
- this.onValueChanged.subscribe(this._handleOnValueChanged.bind(this));
54
- this.onOptionChanged.subscribe(this._handleOnOptionChanged.bind(this));
55
- this._initValues();
56
- if (!this.value)
57
- this.goToday();
58
- }
59
- render() {
60
- if (!this._viewStartDate)
61
- return;
62
- const vr = this.displayRange;
63
- const applyCellClass = (slot, cellClass = this.cellClass) => {
64
- switch (typeof cellClass) {
65
- case 'string':
66
- cellClass.split(' ').forEach(c => slot.cssClass[c] = true);
67
- break;
68
- case 'object':
69
- Object.assign(slot.cssClass, cellClass);
70
- break;
71
- case 'function':
72
- applyCellClass(slot, cellClass(slot.date));
73
- break;
74
- }
75
- };
76
- // year view
77
- if (this.activeView == 'years') {
78
- const a = vr.enumurate('year');
79
- this._slots = a.map((d, i) => {
80
- const r = {};
81
- r.date = d.date;
82
- //
83
- r.text = d.format('YYYY');
84
- r.tooltip = d.format('YYYY');
85
- //
86
- r.today = d.equal(this._today, 'year');
87
- //
88
- r.selected =
89
- this.value &&
90
- this.depth == 'years' &&
91
- d.equal(this.value, 'year');
92
- //
93
- r.disabled =
94
- (this.min && d.compare(this.min, 'year') == -1) ||
95
- (this.max && d.compare(this.max, 'year') == 1);
96
- //
97
- if (r.disabled) {
98
- r.cssClass = {
99
- 'ax-state-disabled': r.disabled,
100
- };
101
- }
102
- else {
103
- r.cssClass = {
104
- 'ax-state-today': r.today,
105
- 'ax-state-selected': r.selected,
106
- };
107
- }
108
- applyCellClass(r);
109
- return r;
110
- });
111
- this._navText = `${vr.startTime.year} - ${vr.endTime.year}`;
112
- this._todayText = this._today.format('YYYY');
113
- }
114
- // month view
115
- else if (this.activeView == 'months') {
116
- const a = vr.enumurate('month');
117
- this._slots = a.map((d, i) => {
118
- const r = {};
119
- r.date = d.date;
120
- r.text = d.format('MMM');
121
- r.tooltip = d.format('MMMM YYYY');
122
- r.today = d.equal(this._today, 'month');
123
- //
124
- r.disabled =
125
- (this.min && d.compare(this.min, 'month') == -1) ||
126
- (this.max && d.compare(this.max, 'month') == 1);
127
- //
128
- r.selected =
129
- this.value &&
130
- this.depth == 'months' &&
131
- d.equal(this.value, 'month');
132
- //
133
- if (r.disabled) {
134
- r.cssClass = {
135
- 'ax-state-disabled': r.disabled,
136
- };
137
- }
138
- else {
139
- r.cssClass = {
140
- 'ax-state-today': r.today,
141
- 'ax-state-selected': r.selected,
142
- 'ax-state-other': d.year != this._viewStartDate.year,
143
- };
144
- }
145
- applyCellClass(r);
146
- return r;
147
- });
148
- this._navText = this._viewStartDate.format('YYYY');
149
- this._todayText = this._today.format('MMMM YYYY');
150
- }
151
- // day view
152
- else {
153
- const a = vr.enumurate('day');
154
- this._slots = a.map((d, i) => {
155
- const r = {};
156
- r.date = d.date;
157
- r.text = d.dayOfMonth;
158
- r.tooltip = d.format();
159
- r.today = d.equal(this._today, 'day');
160
- r.selected = this.value && d.equal(this.value, 'day');
161
- r.holiday = this.isHoliday(d) || this.isWeekend(d);
162
- r.disabled =
163
- (this.min && d.compare(this.min, 'day') == -1) ||
164
- (this.max && d.compare(this.max, 'day') == 1) ||
165
- this.isDisabled(d);
166
- //
167
- if (r.disabled) {
168
- r.cssClass = {
169
- 'ax-state-disabled': true,
170
- };
171
- }
172
- else {
173
- r.cssClass = {
174
- 'ax-state-today': r.today,
175
- 'ax-state-selected': r.selected,
176
- 'ax-state-holiday': r.holiday
177
- };
178
- }
179
- r.cssClass[`ax-col-start-${vr.startTime.dayOfWeek}`] = i == 0;
180
- if (this.cellClass)
181
- applyCellClass(r);
182
- return r;
183
- });
184
- this._navText = this._viewStartDate.format('MMMM YYYY');
185
- this._todayText = this._today.format();
186
- }
187
- this.cdr.markForCheck();
188
- }
189
- _handlePrevClick() {
190
- this.isUserInteraction = true;
191
- this.prev();
192
- this.isUserInteraction = false;
193
- }
194
- _handleNextClick() {
195
- this.isUserInteraction = true;
196
- this.next();
197
- this.isUserInteraction = false;
198
- }
199
- _handleSlotClick(e, slot) {
200
- if (slot.disabled || this.disabled)
201
- return;
202
- //
203
- this.onSlotClick.emit({
204
- component: this,
205
- item: slot.date,
206
- isUserInteraction: true,
207
- nativeEvent: e,
208
- });
209
- //
210
- if (this.activeView == 'days') {
211
- this._setDate(slot.date);
212
- }
213
- else if (this.activeView == 'months' && this.depth == 'days') {
214
- this.activeView = 'days';
215
- this.navTo(slot.date);
216
- }
217
- else if (this.activeView == 'months' && this.depth == 'months') {
218
- this._setDate(slot.date);
219
- }
220
- else if (this.activeView == 'years' &&
221
- (this.depth == 'days' || this.depth == 'months')) {
222
- this.activeView = 'months';
223
- this.navTo(slot.date);
224
- }
225
- else if (this.activeView == 'years' && this.depth == 'years') {
226
- this._setDate(slot.date);
227
- }
228
- }
229
- _handleNavClick(e) {
230
- this.isUserInteraction = true;
231
- this.toggleView();
232
- this.isUserInteraction = false;
233
- }
234
- toggleView() {
235
- if (this.activeView == 'days')
236
- this.activeView = 'months';
237
- else if (this.activeView == 'months')
238
- this.activeView = 'years';
239
- }
240
- _handleOnOptionChanged(e) {
241
- if (e.name == 'depth' ||
242
- e.name == 'activeView' ||
243
- e.name == 'disabledDates' ||
244
- e.name == 'holidayDates') {
245
- this.render();
246
- }
247
- if (e.name == 'type') {
248
- this._refresh();
249
- }
250
- }
251
- _handleOnValueChanged(e) {
252
- this._viewStartDate = new AXDateTime(e.value, this.type);
253
- this.render();
254
- }
255
- _handleGoToday() {
256
- this.isUserInteraction = true;
257
- this._setDate(this._today.date);
258
- this.goToday();
259
- this.isUserInteraction = false;
260
- }
261
- next() {
262
- this._navNextPrev(false);
263
- }
264
- prev() {
265
- this._navNextPrev(true);
266
- }
267
- focus() {
268
- const func = (s) => this.getHostElement().querySelector(s);
269
- const div = func('.ax-calendar-slots>div.ax-state-selected') ||
270
- func('.ax-calendar-slots>div');
271
- div?.focus();
272
- }
273
- _navNextPrev(prev) {
274
- const sign = prev ? -1 : 1;
275
- if (this.activeView == 'days')
276
- this.navTo(this._viewStartDate.add('month', sign * 1));
277
- else if (this.activeView == 'months')
278
- this.navTo(this._viewStartDate.add('year', sign * 1));
279
- else
280
- this.navTo(this._viewStartDate.add('year', sign * 10));
281
- }
282
- goToday() {
283
- this.navTo(this._today);
284
- }
285
- navTo(date) {
286
- this._viewStartDate = AXDateTime.convert(date, this._today.calendar.name()).startOf();
287
- const vr = this.displayRange;
288
- this.render();
289
- this.onNavigate.emit({
290
- component: this,
291
- isUserInteraction: this.isUserInteraction,
292
- start: vr.startTime?.date,
293
- end: vr.endTime?.date,
294
- htmlElement: this.getHostElement(),
295
- });
296
- }
297
- get __hostClass() {
298
- const _classes = {
299
- 'ax-state-disabled': this.disabled,
300
- };
301
- return Object.entries(_classes)
302
- .filter(c => c[1])
303
- .map(c => c[0])
304
- .join(' ');
305
- }
306
- _setDate(value) {
307
- if (this.readonly || this.disabled)
308
- return;
309
- this.value = AXDateTime.convert(value, this._today.calendar.name()).startOf().date;
310
- }
311
- isDisabled(date) {
312
- if (Array.isArray(this.disabledDates) && this.disabledDates.length != 0) {
313
- return this.disabledDates.some(d => date.equal(d, 'day'));
314
- }
315
- else if (typeof this.disabledDates == 'function') {
316
- return this.disabledDates(date.date);
317
- }
318
- return false;
319
- }
320
- isHoliday(date) {
321
- if (Array.isArray(this.holidayDates) && this.holidayDates.length != 0) {
322
- return this.holidayDates.some(d => date.equal(d, 'day'));
323
- }
324
- else if (typeof this.holidayDates == 'function') {
325
- return this.holidayDates(date.date);
326
- }
327
- return false;
328
- }
329
- isWeekend(date) {
330
- const weekend = AXConfig.get(`dateTime.calendars.${this.type}.weekend`);
331
- return weekend.includes(date.dayOfWeek);
332
- }
333
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXCalendarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
334
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: AXCalendarComponent, selector: "ax-calendar", inputs: { rtl: "rtl", readonly: "readonly", value: "value", name: "name", disabled: "disabled", depth: "depth", activeView: "activeView", min: "min", max: "max", disabledDates: "disabledDates", holidayDates: "holidayDates", type: "type", cellTemplate: "cellTemplate", cellClass: "cellClass", showNavigation: "showNavigation" }, outputs: { onOptionChanged: "onOptionChanged", valueChange: "valueChange", onValueChanged: "onValueChanged", onBlur: "onBlur", onFocus: "onFocus", depthChange: "depthChange", typeChange: "typeChange", activeViewChange: "activeViewChange", disabledDatesChange: "disabledDatesChange", holidayDatesChange: "holidayDatesChange", onNavigate: "onNavigate", onSlotClick: "onSlotClick" }, host: { properties: { "class": "this.__hostClass" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"interface === 'calendar'; else pickerTemplate\">\r\n <ng-container *ngIf=\"showNavigation\">\r\n <ng-content select=\"ax-header\"></ng-content>\r\n <div class=\"ax-calendar-header\">\r\n <div class=\"ax-calendar-header-info\">\r\n <ng-container *ngIf=\"activeView == 'days'; else elseTemplate\">\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\r\n {{ _navText.split(' ')[1] }}\r\n </button>\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\r\n {{ _navText.split(' ')[0] }}\r\n </button>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\r\n {{ _navText }}\r\n </button>\r\n </ng-template>\r\n </div>\r\n <div class=\"ax-calendar-header-buttons\">\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\r\n (click)=\"_handlePrevClick()\">\r\n <i class=\"ax-icon\" [ngClass]=\"{\r\n 'ax-icon-chevron-left': !rtl,\r\n 'ax-icon-chevron-right': rtl\r\n }\"></i>\r\n </button>\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\r\n (click)=\"_handleNextClick()\">\r\n <i class=\"ax-icon\" [ngClass]=\"{\r\n 'ax-icon-chevron-left': rtl,\r\n 'ax-icon-chevron-right': !rtl\r\n }\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"ax-calendar-body\">\r\n <div [ngSwitch]=\"activeView\">\r\n <ng-container *ngSwitchCase=\"'years'\">\r\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{'ax-default':!cellTemplate}\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\"\r\n (click)=\"_handleSlotClick($event, slot)\">\r\n <ng-container *ngIf=\"cellTemplate; else yearTpl\">\r\n <div >\r\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #yearTpl>\r\n <div [title]=\"slot.tooltip\" >\r\n {{ slot.text }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'months'\">\r\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{'ax-default':!cellTemplate}\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" class=\"ax-calendar-slot\"\r\n [ngClass]=\"slot.cssClass\" (click)=\"_handleSlotClick($event, slot)\">\r\n <ng-container *ngIf=\"cellTemplate; else monthTpl\">\r\n <div >\r\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #monthTpl>\r\n <div [title]=\"slot.tooltip\" >\r\n {{ slot.text }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <div class=\"ax-calendar-week\">\r\n <div *ngFor=\"let d of _dayNames\">{{ d }}</div>\r\n </div>\r\n <div class=\"ax-calendar-slots ax-calendar-slots-day\" [ngClass]=\"{'ax-default':!cellTemplate}\">\r\n <ng-container *ngFor=\"let slot of _slots\">\r\n <div tabindex=\"0\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\" \r\n (click)=\"_handleSlotClick($event, slot)\">\r\n <ng-container *ngIf=\"cellTemplate; else dayTpl\">\r\n <div >\r\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #dayTpl>\r\n <div [title]=\"slot.tooltip\" >\r\n {{ slot.text }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <ng-content select=\"ax-footer\"></ng-content>\r\n <!-- <div class=\"ax-calendar-footer\">\r\n <button\r\n class=\"ax-today-button\"\r\n tabindex=\"-1\"\r\n [class.ax-state-disabled]=\"disabled\"\r\n [attr.disabled]=\"(disabled || isDisabled(_today)?true:null)\"\r\n (click)=\"_handleGoToday()\"\r\n *ngIf=\"activeView == 'days'\">\r\n {{ _todayText }}\r\n </button>\r\n </div> -->\r\n</ng-container>\r\n<ng-template #pickerTemplate>\r\n <div class=\"ax-calendar-picker\">//TODO: picker</div>\r\n</ng-template>", styles: [".ax-dark ax-calendar{background:rgba(var(--ax-color-on-surface))}ax-calendar{display:block;background:rgba(var(--ax-color-surface));color:rgba(var(--ax-color-text-default));padding:.5rem;width:18rem}@media (max-width: 599px){ax-calendar{width:100%}}@media (min-width: 600px){ax-calendar{width:20rem}}@media (min-width: 1200px){ax-calendar{width:18rem}}ax-calendar.ax-state-disabled .ax-calendar-slots{opacity:.5;cursor:default}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-top:.25rem;padding-left:.25rem;padding-right:.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{margin:.5rem}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;align-items:center;justify-content:center;text-align:center;font-size:.875rem;color:rgba(var(--ax-color-text-default));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\"\";padding-top:100%;float:left}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\"\";display:block;clear:both}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,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-today){background-color:rgba(var(--ax-color-primary-300));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,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-today){outline-width:2px;outline-style:solid;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-width:2px;outline-style:dashed}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-col-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-width:2px;border-style:solid;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:focus-visible{border-style:dashed;outline-color:transparent}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-holiday{color:rgba(var(--ax-color-danger-500))}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));margin-top:.5rem;margin-bottom:.5rem}ax-calendar .ax-calendar-body .ax-calendar-week>div{font-size:.875rem;text-align:center;position:relative;display:flex;align-items:center;justify-content:center;cursor:text;margin:.125rem}ax-calendar .ax-calendar-footer{display:flex;justify-content:center;align-items:center;margin-top:1.125rem}ax-calendar .ax-calendar-footer .ax-today-button{width:100%;height:var(--ax-size-default);padding:0 1rem;font-size:.875rem;text-align:center;display:block;background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{opacity:.5;cursor:not-allowed}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-400))}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-600))}.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: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
335
- }
336
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXCalendarComponent, decorators: [{
337
- type: Component,
338
- args: [{ selector: 'ax-calendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: [
339
- 'rtl',
340
- 'readonly',
341
- 'value',
342
- 'name',
343
- 'disabled',
344
- 'depth',
345
- 'activeView',
346
- 'min',
347
- 'max',
348
- 'disabledDates',
349
- 'holidayDates',
350
- 'type',
351
- 'cellTemplate',
352
- 'cellClass',
353
- 'showNavigation'
354
- ], outputs: [
355
- 'onOptionChanged',
356
- 'valueChange',
357
- 'onValueChanged',
358
- 'onBlur',
359
- 'onFocus',
360
- 'depthChange',
361
- 'typeChange',
362
- 'activeViewChange',
363
- 'disabledDatesChange',
364
- 'holidayDatesChange',
365
- 'onNavigate',
366
- 'onSlotClick'
367
- ], template: "<ng-container *ngIf=\"interface === 'calendar'; else pickerTemplate\">\r\n <ng-container *ngIf=\"showNavigation\">\r\n <ng-content select=\"ax-header\"></ng-content>\r\n <div class=\"ax-calendar-header\">\r\n <div class=\"ax-calendar-header-info\">\r\n <ng-container *ngIf=\"activeView == 'days'; else elseTemplate\">\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\r\n {{ _navText.split(' ')[1] }}\r\n </button>\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\r\n {{ _navText.split(' ')[0] }}\r\n </button>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\r\n {{ _navText }}\r\n </button>\r\n </ng-template>\r\n </div>\r\n <div class=\"ax-calendar-header-buttons\">\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\r\n (click)=\"_handlePrevClick()\">\r\n <i class=\"ax-icon\" [ngClass]=\"{\r\n 'ax-icon-chevron-left': !rtl,\r\n 'ax-icon-chevron-right': rtl\r\n }\"></i>\r\n </button>\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\r\n (click)=\"_handleNextClick()\">\r\n <i class=\"ax-icon\" [ngClass]=\"{\r\n 'ax-icon-chevron-left': rtl,\r\n 'ax-icon-chevron-right': !rtl\r\n }\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"ax-calendar-body\">\r\n <div [ngSwitch]=\"activeView\">\r\n <ng-container *ngSwitchCase=\"'years'\">\r\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{'ax-default':!cellTemplate}\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\"\r\n (click)=\"_handleSlotClick($event, slot)\">\r\n <ng-container *ngIf=\"cellTemplate; else yearTpl\">\r\n <div >\r\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #yearTpl>\r\n <div [title]=\"slot.tooltip\" >\r\n {{ slot.text }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'months'\">\r\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{'ax-default':!cellTemplate}\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" class=\"ax-calendar-slot\"\r\n [ngClass]=\"slot.cssClass\" (click)=\"_handleSlotClick($event, slot)\">\r\n <ng-container *ngIf=\"cellTemplate; else monthTpl\">\r\n <div >\r\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #monthTpl>\r\n <div [title]=\"slot.tooltip\" >\r\n {{ slot.text }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <div class=\"ax-calendar-week\">\r\n <div *ngFor=\"let d of _dayNames\">{{ d }}</div>\r\n </div>\r\n <div class=\"ax-calendar-slots ax-calendar-slots-day\" [ngClass]=\"{'ax-default':!cellTemplate}\">\r\n <ng-container *ngFor=\"let slot of _slots\">\r\n <div tabindex=\"0\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\" \r\n (click)=\"_handleSlotClick($event, slot)\">\r\n <ng-container *ngIf=\"cellTemplate; else dayTpl\">\r\n <div >\r\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #dayTpl>\r\n <div [title]=\"slot.tooltip\" >\r\n {{ slot.text }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <ng-content select=\"ax-footer\"></ng-content>\r\n <!-- <div class=\"ax-calendar-footer\">\r\n <button\r\n class=\"ax-today-button\"\r\n tabindex=\"-1\"\r\n [class.ax-state-disabled]=\"disabled\"\r\n [attr.disabled]=\"(disabled || isDisabled(_today)?true:null)\"\r\n (click)=\"_handleGoToday()\"\r\n *ngIf=\"activeView == 'days'\">\r\n {{ _todayText }}\r\n </button>\r\n </div> -->\r\n</ng-container>\r\n<ng-template #pickerTemplate>\r\n <div class=\"ax-calendar-picker\">//TODO: picker</div>\r\n</ng-template>", styles: [".ax-dark ax-calendar{background:rgba(var(--ax-color-on-surface))}ax-calendar{display:block;background:rgba(var(--ax-color-surface));color:rgba(var(--ax-color-text-default));padding:.5rem;width:18rem}@media (max-width: 599px){ax-calendar{width:100%}}@media (min-width: 600px){ax-calendar{width:20rem}}@media (min-width: 1200px){ax-calendar{width:18rem}}ax-calendar.ax-state-disabled .ax-calendar-slots{opacity:.5;cursor:default}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-top:.25rem;padding-left:.25rem;padding-right:.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{margin:.5rem}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;align-items:center;justify-content:center;text-align:center;font-size:.875rem;color:rgba(var(--ax-color-text-default));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\"\";padding-top:100%;float:left}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\"\";display:block;clear:both}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,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-today){background-color:rgba(var(--ax-color-primary-300));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,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-today){outline-width:2px;outline-style:solid;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-width:2px;outline-style:dashed}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-col-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-width:2px;border-style:solid;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:focus-visible{border-style:dashed;outline-color:transparent}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-holiday{color:rgba(var(--ax-color-danger-500))}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));margin-top:.5rem;margin-bottom:.5rem}ax-calendar .ax-calendar-body .ax-calendar-week>div{font-size:.875rem;text-align:center;position:relative;display:flex;align-items:center;justify-content:center;cursor:text;margin:.125rem}ax-calendar .ax-calendar-footer{display:flex;justify-content:center;align-items:center;margin-top:1.125rem}ax-calendar .ax-calendar-footer .ax-today-button{width:100%;height:var(--ax-size-default);padding:0 1rem;font-size:.875rem;text-align:center;display:block;background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{opacity:.5;cursor:not-allowed}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-400))}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-600))}.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"] }]
368
- }], propDecorators: { __hostClass: [{
369
- type: HostBinding,
370
- args: ['class']
371
- }] } });
372
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEUsT0FBTyxFQUlMLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDakIsTUFBTSwyQkFBMkIsQ0FBQztBQUduQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBd0MzRCxNQUFNLE9BQU8sbUJBQ1gsU0FDQSxPQUFPLENBQUMsQ0FBQSxnQkFBc0IsQ0FBQSxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixDQUFDO0lBRWhGLElBQVcsWUFBWTtRQUNyQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDbkQsUUFBUSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3ZCLEtBQUssT0FBTztnQkFDVix3Q0FBd0M7Z0JBQ3hDLG1CQUFtQjtnQkFDbkIsc0JBQXNCO2dCQUN0QixJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFD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dEIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYRGF0ZVRpbWUsIEFYRGF0ZVRpbWVSYW5nZSB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlVGltZSc7XHJcbmltcG9ydCB7XHJcbiAgQVhDbGlja0V2ZW50LFxyXG4gIEFYT3B0aW9uQ2hhbmdlZEV2ZW50LFxyXG4gIEFYVmFsdWVDaGFuZ2VkRXZlbnQsXHJcbiAgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCxcclxuICBNWFZhbHVlQ29tcG9uZW50XHJcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XHJcblxyXG5cclxuaW1wb3J0IHsgQVhDb25maWcgfSBmcm9tICdAYWNvcmV4L2NvcmUvY29uZmlnJztcclxuXHJcbmltcG9ydCB7IGNsYXNzZXMgfSBmcm9tICdwb2x5dHlwZSc7XHJcbmltcG9ydCB7IE1YQ2FsZW5kYXJCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci5jbGFzcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LWNhbGVuZGFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBpbnB1dHM6IFtcclxuICAgICdydGwnLFxyXG4gICAgJ3JlYWRvbmx5JyxcclxuICAgICd2YWx1ZScsXHJcbiAgICAnbmFtZScsXHJcbiAgICAnZGlzYWJsZWQnLFxyXG4gICAgJ2RlcHRoJyxcclxuICAgICdhY3RpdmVWaWV3JyxcclxuICAgICdtaW4nLFxyXG4gICAgJ21heCcsXHJcbiAgICAnZGlzYWJsZWREYXRlcycsXHJcbiAgICAnaG9saWRheURhdGVzJyxcclxuICAgICd0eXBlJyxcclxuICAgICdjZWxsVGVtcGxhdGUnLFxyXG4gICAgJ2NlbGxDbGFzcycsXHJcbiAgICAnc2hvd05hdmlnYXRpb24nXHJcbiAgXSxcclxuICBvdXRwdXRzOiBbXHJcbiAgICAnb25PcHRpb25DaGFuZ2VkJyxcclxuICAgICd2YWx1ZUNoYW5nZScsXHJcbiAgICAnb25WYWx1ZUNoYW5nZWQnLFxyXG4gICAgJ29uQmx1cicsXHJcbiAgICAnb25Gb2N1cycsXHJcbiAgICAnZGVwdGhDaGFuZ2UnLFxyXG4gICAgJ3R5cGVDaGFuZ2UnLFxyXG4gICAgJ2FjdGl2ZVZpZXdDaGFuZ2UnLFxyXG4gICAgJ2Rpc2FibGVkRGF0ZXNDaGFuZ2UnLFxyXG4gICAgJ2hvbGlkYXlEYXRlc0NoYW5nZScsXHJcbiAgICAnb25OYXZpZ2F0ZScsXHJcbiAgICAnb25TbG90Q2xpY2snXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhckNvbXBvbmVudFxyXG4gIGV4dGVuZHNcclxuICBjbGFzc2VzKE1YVmFsdWVDb21wb25lbnQ8RGF0ZT4sIE1YSW50ZXJhY3RpdmVDb21wb25lbnQsIE1YQ2FsZW5kYXJCYXNlQ29tcG9uZW50KVxyXG57XHJcbiAgcHVibGljIGdldCBkaXNwbGF5UmFuZ2UoKTogQVhEYXRlVGltZVJhbmdlIHtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl92aWV3U3RhcnREYXRlIHx8IHRoaXMuX3RvZGF5O1xyXG4gICAgc3dpdGNoICh0aGlzLmFjdGl2ZVZpZXcpIHtcclxuICAgICAgY2FzZSAneWVhcnMnOlxyXG4gICAgICAgIC8vIGxldCB5ID0gY3VycmVudC5zdGFydE9mKCd5ZWFyJykueWVhcjtcclxuICAgICAgICAvLyBsZXQgbWluID0geSAtIDM7XHJcbiAgICAgICAgLy8gbGV0IG1heCA9IG1pbiArIDExO1xyXG4gICAgICAgIGxldCB5ID0gY3VycmVudC5zdGFydE9mKCd5ZWFyJykueWVhcjtcclxuICAgICAgICBsZXQgbWluID0geSAtICh5ICUgMTApO1xyXG4gICAgICAgIGxldCBtYXggPSBtaW4gKyA5O1xyXG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZVJhbmdlKFxyXG4gICAgICAgICAgQVhEYXRlVGltZS5mcm9tKHtcclxuICAgICAgICAgICAgeWVhcjogbWluLFxyXG4gICAgICAgICAgICBtb250aDogMSxcclxuICAgICAgICAgICAgZGF0ZTogMSxcclxuICAgICAgICAgICAgY2FsZW5kYXI6IHRoaXMuX3ZpZXdTdGFydERhdGUuY2FsZW5kYXIubmFtZSgpLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBBWERhdGVUaW1lLmZyb20oe1xyXG4gICAgICAgICAgICB5ZWFyOiBtYXgsXHJcbiAgICAgICAgICAgIG1vbnRoOiAxMixcclxuICAgICAgICAgICAgZGF0ZTogMjgsXHJcbiAgICAgICAgICAgIGNhbGVuZGFyOiB0aGlzLl92aWV3U3RhcnREYXRlLmNhbGVuZGFyLm5hbWUoKSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgY2FzZSAnbW9udGhzJzpcclxuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWVSYW5nZShcclxuICAgICAgICAgIGN1cnJlbnQuc3RhcnRPZigneWVhcicpLFxyXG4gICAgICAgICAgY3VycmVudC5lbmRPZigneWVhcicpLmFkZCgnZGF5JywgLTEpXHJcbiAgICAgICAgKTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWVSYW5nZShcclxuICAgICAgICAgIGN1cnJlbnQuc3RhcnRPZignbW9udGgnKSxcclxuICAgICAgICAgIGN1cnJlbnQuZW5kT2YoJ21vbnRoJylcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF90b2RheSA9IG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKCksIHRoaXMudHlwZSk7XHJcbiAgcHJpdmF0ZSBfdmlld1N0YXJ0RGF0ZSE6IEFYRGF0ZVRpbWU7XHJcblxyXG4gIHByb3RlY3RlZCBfbmF2VGV4dDogc3RyaW5nID0gJyc7XHJcbiAgcHJvdGVjdGVkIF90b2RheVRleHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBwcm90ZWN0ZWQgX3Nsb3RzOiBhbnlbXSA9IFtdO1xyXG4gIHByb3RlY3RlZCBfZGF5TmFtZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cclxuICBwcml2YXRlIF9pbml0VmFsdWVzKCkge1xyXG4gICAgdGhpcy5fdG9kYXkgPSBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZSgpLCB0aGlzLnR5cGUpO1xyXG4gICAgdGhpcy5fZGF5TmFtZXMgPSB0aGlzLl90b2RheS5jYWxlbmRhci5kYXlTaG9ydE5hbWVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVmcmVzaCgpIHtcclxuICAgIHRoaXMuX2luaXRWYWx1ZXMoKTtcclxuICAgIHRoaXMubmF2VG8odGhpcy52YWx1ZSB8fCB0aGlzLl90b2RheSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5zdWJzY3JpYmUodGhpcy5faGFuZGxlT25WYWx1ZUNoYW5nZWQuYmluZCh0aGlzKSk7XHJcbiAgICB0aGlzLm9uT3B0aW9uQ2hhbmdlZC5zdWJzY3JpYmUodGhpcy5faGFuZGxlT25PcHRpb25DaGFuZ2VkLmJpbmQodGhpcykpO1xyXG4gICAgdGhpcy5faW5pdFZhbHVlcygpO1xyXG4gICAgaWYgKCF0aGlzLnZhbHVlKSB0aGlzLmdvVG9kYXkoKTtcclxuICB9XHJcblxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBpZiAoIXRoaXMuX3ZpZXdTdGFydERhdGUpIHJldHVybjtcclxuICAgIGNvbnN0IHZyID0gdGhpcy5kaXNwbGF5UmFuZ2U7XHJcbiAgICBjb25zdCBhcHBseUNlbGxDbGFzcyA9IChzbG90OiBhbnksIGNlbGxDbGFzczogYW55ID0gdGhpcy5jZWxsQ2xhc3MpID0+IHtcclxuICAgICAgc3dpdGNoICh0eXBlb2YgY2VsbENsYXNzKSB7XHJcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcclxuICAgICAgICAgIGNlbGxDbGFzcy5zcGxpdCgnICcpLmZvckVhY2goYyA9PiBzbG90LmNzc0NsYXNzW2NdID0gdHJ1ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdvYmplY3QnOlxyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihzbG90LmNzc0NsYXNzLCBjZWxsQ2xhc3MpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxyXG4gICAgICAgICAgYXBwbHlDZWxsQ2xhc3Moc2xvdCwgY2VsbENsYXNzKHNsb3QuZGF0ZSkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHllYXIgdmlld1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAneWVhcnMnKSB7XHJcbiAgICAgIGNvbnN0IGEgPSB2ci5lbnVtdXJhdGUoJ3llYXInKTtcclxuICAgICAgdGhpcy5fc2xvdHMgPSBhLm1hcCgoZCwgaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHI6IGFueSA9IHt9O1xyXG4gICAgICAgIHIuZGF0ZSA9IGQuZGF0ZTtcclxuICAgICAgICAvL1xyXG4gICAgICAgIHIudGV4dCA9IGQuZm9ybWF0KCdZWVlZJyk7XHJcbiAgICAgICAgci50b29sdGlwID0gZC5mb3JtYXQoJ1lZWVknKTtcclxuICAgICAgICAvL1xyXG4gICAgICAgIHIudG9kYXkgPSBkLmVxdWFsKHRoaXMuX3RvZGF5LCAneWVhcicpO1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgci5zZWxlY3RlZCA9XHJcbiAgICAgICAgICB0aGlzLnZhbHVlICYmXHJcbiAgICAgICAgICB0aGlzLmRlcHRoID09ICd5ZWFycycgJiZcclxuICAgICAgICAgIGQuZXF1YWwodGhpcy52YWx1ZSwgJ3llYXInKVxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgci5kaXNhYmxlZCA9XHJcbiAgICAgICAgICAodGhpcy5taW4gJiYgZC5jb21wYXJlKHRoaXMubWluLCAneWVhcicpID09IC0xKSB8fFxyXG4gICAgICAgICAgKHRoaXMubWF4ICYmIGQuY29tcGFyZSh0aGlzLm1heCwgJ3llYXInKSA9PSAxKTtcclxuICAgICAgICAvL1xyXG4gICAgICAgIGlmIChyLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICByLmNzc0NsYXNzID0ge1xyXG4gICAgICAgICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiByLmRpc2FibGVkLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgci5jc3NDbGFzcyA9IHtcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLXRvZGF5Jzogci50b2RheSxcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFwcGx5Q2VsbENsYXNzKHIpO1xyXG4gICAgICAgIHJldHVybiByO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5fbmF2VGV4dCA9IGAke3ZyLnN0YXJ0VGltZS55ZWFyfSAtICR7dnIuZW5kVGltZS55ZWFyfWA7XHJcbiAgICAgIHRoaXMuX3RvZGF5VGV4dCA9IHRoaXMuX3RvZGF5LmZvcm1hdCgnWVlZWScpO1xyXG4gICAgfVxyXG4gICAgLy8gbW9udGggdmlld1xyXG4gICAgZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aHMnKSB7XHJcbiAgICAgIGNvbnN0IGEgPSB2ci5lbnVtdXJhdGUoJ21vbnRoJyk7XHJcbiAgICAgIHRoaXMuX3Nsb3RzID0gYS5tYXAoKGQsIGkpID0+IHtcclxuICAgICAgICBjb25zdCByOiBhbnkgPSB7fTtcclxuICAgICAgICByLmRhdGUgPSBkLmRhdGU7XHJcbiAgICAgICAgci50ZXh0ID0gZC5mb3JtYXQoJ01NTScpO1xyXG4gICAgICAgIHIudG9vbHRpcCA9IGQuZm9ybWF0KCdNTU1NIFlZWVknKTtcclxuICAgICAgICByLnRvZGF5ID0gZC5lcXVhbCh0aGlzLl90b2RheSwgJ21vbnRoJyk7XHJcbiAgICAgICAgLy9cclxuICAgICAgICByLmRpc2FibGVkID1cclxuICAgICAgICAgICh0aGlzLm1pbiAmJiBkLmNvbXBhcmUodGhpcy5taW4sICdtb250aCcpID09IC0xKSB8fFxyXG4gICAgICAgICAgKHRoaXMubWF4ICYmIGQuY29tcGFyZSh0aGlzLm1heCwgJ21vbnRoJykgPT0gMSk7XHJcbiAgICAgICAgLy9cclxuICAgICAgICByLnNlbGVjdGVkID1cclxuICAgICAgICAgIHRoaXMudmFsdWUgJiZcclxuICAgICAgICAgIHRoaXMuZGVwdGggPT0gJ21vbnRocycgJiZcclxuICAgICAgICAgIGQuZXF1YWwodGhpcy52YWx1ZSwgJ21vbnRoJyk7XHJcbiAgICAgICAgLy9cclxuICAgICAgICBpZiAoci5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgci5jc3NDbGFzcyA9IHtcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogci5kaXNhYmxlZCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XHJcbiAgICAgICAgICAgICdheC1zdGF0ZS10b2RheSc6IHIudG9kYXksXHJcbiAgICAgICAgICAgICdheC1zdGF0ZS1zZWxlY3RlZCc6IHIuc2VsZWN0ZWQsXHJcbiAgICAgICAgICAgICdheC1zdGF0ZS1vdGhlcic6IGQueWVhciAhPSB0aGlzLl92aWV3U3RhcnREYXRlLnllYXIsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBhcHBseUNlbGxDbGFzcyhyKTtcclxuICAgICAgICByZXR1cm4gcjtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuX25hdlRleHQgPSB0aGlzLl92aWV3U3RhcnREYXRlLmZvcm1hdCgnWVlZWScpO1xyXG4gICAgICB0aGlzLl90b2RheVRleHQgPSB0aGlzLl90b2RheS5mb3JtYXQoJ01NTU0gWVlZWScpO1xyXG4gICAgfVxyXG4gICAgLy8gZGF5IHZpZXdcclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCBhID0gdnIuZW51bXVyYXRlKCdkYXknKTtcclxuICAgICAgdGhpcy5fc2xvdHMgPSBhLm1hcCgoZCwgaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHI6IGFueSA9IHt9O1xyXG4gICAgICAgIHIuZGF0ZSA9IGQuZGF0ZTtcclxuICAgICAgICByLnRleHQgPSBkLmRheU9mTW9udGg7XHJcbiAgICAgICAgci50b29sdGlwID0gZC5mb3JtYXQoKTtcclxuICAgICAgICByLnRvZGF5ID0gZC5lcXVhbCh0aGlzLl90b2RheSwgJ2RheScpO1xyXG4gICAgICAgIHIuc2VsZWN0ZWQgPSB0aGlzLnZhbHVlICYmIGQuZXF1YWwodGhpcy52YWx1ZSwgJ2RheScpO1xyXG4gICAgICAgIHIuaG9saWRheSA9IHRoaXMuaXNIb2xpZGF5KGQpIHx8IHRoaXMuaXNXZWVrZW5kKGQpO1xyXG4gICAgICAgIHIuZGlzYWJsZWQgPVxyXG4gICAgICAgICAgKHRoaXMubWluICYmIGQuY29tcGFyZSh0aGlzLm1pbiwgJ2RheScpID09IC0xKSB8fFxyXG4gICAgICAgICAgKHRoaXMubWF4ICYmIGQuY29tcGFyZSh0aGlzLm1heCwgJ2RheScpID09IDEpIHx8XHJcbiAgICAgICAgICB0aGlzLmlzRGlzYWJsZWQoZCk7XHJcbiAgICAgICAgLy9cclxuICAgICAgICBpZiAoci5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgci5jc3NDbGFzcyA9IHtcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogdHJ1ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XHJcbiAgICAgICAgICAgICdheC1zdGF0ZS10b2RheSc6IHIudG9kYXksXHJcbiAgICAgICAgICAgICdheC1zdGF0ZS1zZWxlY3RlZCc6IHIuc2VsZWN0ZWQsXHJcbiAgICAgICAgICAgICdheC1zdGF0ZS1ob2xpZGF5Jzogci5ob2xpZGF5XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByLmNzc0NsYXNzW2BheC1jb2wtc3RhcnQtJHt2ci5zdGFydFRpbWUuZGF5T2ZXZWVrfWBdID0gaSA9PSAwO1xyXG4gICAgICAgIGlmICh0aGlzLmNlbGxDbGFzcylcclxuICAgICAgICAgIGFwcGx5Q2VsbENsYXNzKHIpO1xyXG4gICAgICAgIHJldHVybiByO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5fbmF2VGV4dCA9IHRoaXMuX3ZpZXdTdGFydERhdGUuZm9ybWF0KCdNTU1NIFlZWVknKTtcclxuICAgICAgdGhpcy5fdG9kYXlUZXh0ID0gdGhpcy5fdG9kYXkuZm9ybWF0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaGFuZGxlUHJldkNsaWNrKCkge1xyXG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLnByZXYoKTtcclxuICAgIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaGFuZGxlTmV4dENsaWNrKCkge1xyXG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLm5leHQoKTtcclxuICAgIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaGFuZGxlU2xvdENsaWNrKGU6IE1vdXNlRXZlbnQsIHNsb3QpIHtcclxuICAgIGlmIChzbG90LmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWQpIHJldHVybjtcclxuICAgIC8vXHJcbiAgICB0aGlzLm9uU2xvdENsaWNrLmVtaXQoe1xyXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgIGl0ZW06IHNsb3QuZGF0ZSxcclxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXHJcbiAgICAgIG5hdGl2ZUV2ZW50OiBlLFxyXG4gICAgfSk7XHJcbiAgICAvL1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnZGF5cycpIHtcclxuICAgICAgdGhpcy5fc2V0RGF0ZShzbG90LmRhdGUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRocycgJiYgdGhpcy5kZXB0aCA9PSAnZGF5cycpIHtcclxuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ2RheXMnO1xyXG4gICAgICB0aGlzLm5hdlRvKHNsb3QuZGF0ZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGhzJyAmJiB0aGlzLmRlcHRoID09ICdtb250aHMnKSB7XHJcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlKTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuYWN0aXZlVmlldyA9PSAneWVhcnMnICYmXHJcbiAgICAgICh0aGlzLmRlcHRoID09ICdkYXlzJyB8fCB0aGlzLmRlcHRoID09ICdtb250aHMnKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVmlldyA9ICdtb250aHMnO1xyXG4gICAgICB0aGlzLm5hdlRvKHNsb3QuZGF0ZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAneWVhcnMnICYmIHRoaXMuZGVwdGggPT0gJ3llYXJzJykge1xyXG4gICAgICB0aGlzLl9zZXREYXRlKHNsb3QuZGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2hhbmRsZU5hdkNsaWNrKGU6IEFYQ2xpY2tFdmVudCB8IGFueSkge1xyXG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLnRvZ2dsZVZpZXcoKTtcclxuICAgIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVWaWV3KCkge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnZGF5cycpXHJcbiAgICAgIHRoaXMuYWN0aXZlVmlldyA9ICdtb250aHMnO1xyXG4gICAgZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aHMnKVxyXG4gICAgICB0aGlzLmFjdGl2ZVZpZXcgPSAneWVhcnMnO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9oYW5kbGVPbk9wdGlvbkNoYW5nZWQoZTogQVhPcHRpb25DaGFuZ2VkRXZlbnQpIHtcclxuICAgIGlmIChcclxuICAgICAgZS5uYW1lID09ICdkZXB0aCcgfHxcclxuICAgICAgZS5uYW1lID09ICdhY3RpdmVWaWV3JyB8fFxyXG4gICAgICBlLm5hbWUgPT0gJ2Rpc2FibGVkRGF0ZXMnIHx8XHJcbiAgICAgIGUubmFtZSA9PSAnaG9saWRheURhdGVzJ1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZS5uYW1lID09ICd0eXBlJykge1xyXG4gICAgICB0aGlzLl9yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9oYW5kbGVPblZhbHVlQ2hhbmdlZChlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50KSB7XHJcbiAgICB0aGlzLl92aWV3U3RhcnREYXRlID0gbmV3IEFYRGF0ZVRpbWUoZS52YWx1ZSwgdGhpcy50eXBlKTtcclxuICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2hhbmRsZUdvVG9kYXkoKSB7XHJcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuX3NldERhdGUodGhpcy5fdG9kYXkuZGF0ZSk7XHJcbiAgICB0aGlzLmdvVG9kYXkoKTtcclxuICAgIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5leHQoKSB7XHJcbiAgICB0aGlzLl9uYXZOZXh0UHJldihmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwcmV2KCkge1xyXG4gICAgdGhpcy5fbmF2TmV4dFByZXYodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBmb2N1cygpIHtcclxuICAgIGNvbnN0IGZ1bmMgPSAoczogc3RyaW5nKSA9PiB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4ocyk7XHJcbiAgICBjb25zdCBkaXYgPVxyXG4gICAgICBmdW5jKCcuYXgtY2FsZW5kYXItc2xvdHM+ZGl2LmF4LXN0YXRlLXNlbGVjdGVkJykgfHxcclxuICAgICAgZnVuYygnLmF4LWNhbGVuZGFyLXNsb3RzPmRpdicpO1xyXG4gICAgZGl2Py5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbmF2TmV4dFByZXYocHJldjogYm9vbGVhbikge1xyXG4gICAgY29uc3Qgc2lnbiA9IHByZXYgPyAtMSA6IDE7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdkYXlzJylcclxuICAgICAgdGhpcy5uYXZUbyh0aGlzLl92aWV3U3RhcnREYXRlLmFkZCgnbW9udGgnLCBzaWduICogMSkpO1xyXG4gICAgZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aHMnKVxyXG4gICAgICB0aGlzLm5hdlRvKHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCd5ZWFyJywgc2lnbiAqIDEpKTtcclxuICAgIGVsc2UgdGhpcy5uYXZUbyh0aGlzLl92aWV3U3RhcnREYXRlLmFkZCgneWVhcicsIHNpZ24gKiAxMCkpO1xyXG4gIH1cclxuXHJcbiAgZ29Ub2RheSgpIHtcclxuICAgIHRoaXMubmF2VG8odGhpcy5fdG9kYXkpO1xyXG4gIH1cclxuXHJcbiAgbmF2VG8oZGF0ZTogRGF0ZSB8IEFYRGF0ZVRpbWUpIHtcclxuICAgIHRoaXMuX3ZpZXdTdGFydERhdGUgPSBBWERhdGVUaW1lLmNvbnZlcnQoXHJcbiAgICAgIGRhdGUsXHJcbiAgICAgIHRoaXMuX3RvZGF5LmNhbGVuZGFyLm5hbWUoKVxyXG4gICAgKS5zdGFydE9mKCk7XHJcbiAgICBjb25zdCB2ciA9IHRoaXMuZGlzcGxheVJhbmdlO1xyXG4gICAgdGhpcy5yZW5kZXIoKTtcclxuICAgIHRoaXMub25OYXZpZ2F0ZS5lbWl0KHtcclxuICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdGhpcy5pc1VzZXJJbnRlcmFjdGlvbixcclxuICAgICAgc3RhcnQ6IHZyLnN0YXJ0VGltZT8uZGF0ZSxcclxuICAgICAgZW5kOiB2ci5lbmRUaW1lPy5kYXRlLFxyXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5nZXRIb3N0RWxlbWVudCgpLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcclxuICBwcml2YXRlIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgX2NsYXNzZXMgPSB7XHJcbiAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHRoaXMuZGlzYWJsZWQsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKF9jbGFzc2VzKVxyXG4gICAgICAuZmlsdGVyKGMgPT4gY1sxXSlcclxuICAgICAgLm1hcChjID0+IGNbMF0pXHJcbiAgICAgIC5qb2luKCcgJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXREYXRlKHZhbHVlOiBEYXRlKSB7XHJcbiAgICBpZiAodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcbiAgICB0aGlzLnZhbHVlID0gQVhEYXRlVGltZS5jb252ZXJ0KFxyXG4gICAgICB2YWx1ZSxcclxuICAgICAgdGhpcy5fdG9kYXkuY2FsZW5kYXIubmFtZSgpXHJcbiAgICApLnN0YXJ0T2YoKS5kYXRlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWQoZGF0ZTogQVhEYXRlVGltZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kaXNhYmxlZERhdGVzKSAmJiB0aGlzLmRpc2FibGVkRGF0ZXMubGVuZ3RoICE9IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWREYXRlcy5zb21lKGQgPT4gZGF0ZS5lcXVhbChkLCAnZGF5JykpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5kaXNhYmxlZERhdGVzID09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWREYXRlcyhkYXRlLmRhdGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGlzSG9saWRheShkYXRlOiBBWERhdGVUaW1lKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmhvbGlkYXlEYXRlcykgJiYgdGhpcy5ob2xpZGF5RGF0ZXMubGVuZ3RoICE9IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaG9saWRheURhdGVzLnNvbWUoZCA9PiBkYXRlLmVxdWFsKGQsICdkYXknKSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmhvbGlkYXlEYXRlcyA9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmhvbGlkYXlEYXRlcyhkYXRlLmRhdGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGlzV2Vla2VuZChkYXRlOiBBWERhdGVUaW1lKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB3ZWVrZW5kID0gQVhDb25maWcuZ2V0KFxyXG4gICAgICBgZGF0ZVRpbWUuY2FsZW5kYXJzLiR7dGhpcy50eXBlfS53ZWVrZW5kYFxyXG4gICAgKSBhcyBudW1iZXJbXTtcclxuICAgIHJldHVybiB3ZWVrZW5kLmluY2x1ZGVzKGRhdGUuZGF5T2ZXZWVrKTtcclxuICB9XHJcblxyXG4gIC8vIHByb3RlY3RlZCBfcGlja2VyRGF5czogbnVtYmVyW10gPSBbXTtcclxuICAvLyBwcm90ZWN0ZWQgX3BpY2tlck1vbnRoczogeyB0ZXh0OiBzdHJpbmc7IHZhbHVlOiBudW1iZXIgfVtdID0gW107XHJcbiAgLy8gcHJvdGVjdGVkIF9waWNrZXJZZWFyczogbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgLy8gcHJpdmF0ZSBfZ2VuZXJhdGVQaWNrZXJJdGVtcyh2aWV3KSB7XHJcbiAgLy8gICBzd2l0Y2ggKHZpZXcpIHtcclxuICAvLyAgICAgY2FzZSAneWVhcic6XHJcbiAgLy8gICAgICAgdGhpcy5fcGlja2VyWWVhcnMgPSByYW5nZSgyMDAwLCAyMDUwLCAxKTtcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnbW9udGgnOlxyXG4gIC8vICAgICAgIHRoaXMuX3BpY2tlck1vbnRocyA9IG5ldyBBWERhdGVUaW1lUmFuZ2UoXHJcbiAgLy8gICAgICAgICB0aGlzLmRpc3BsYXlSYW5nZS5zdGFydFRpbWUuc3RhcnRPZigneWVhcicpLFxyXG4gIC8vICAgICAgICAgdGhpcy5kaXNwbGF5UmFuZ2Uuc3RhcnRUaW1lLmVuZE9mKCd5ZWFyJylcclxuICAvLyAgICAgICApXHJcbiAgLy8gICAgICAgICAuZW51bXVyYXRlKCdtb250aCcpXHJcbiAgLy8gICAgICAgICAubWFwKGMgPT4gKHtcclxuICAvLyAgICAgICAgICAgdGV4dDogYy5mb3JtYXQoJ01NTScpLFxyXG4gIC8vICAgICAgICAgICB2YWx1ZTogYy5tb250aE9mWWVhcixcclxuICAvLyAgICAgICAgIH0pKTtcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgZGVmYXVsdDpcclxuICAvLyAgICAgICB0aGlzLl9waWNrZXJEYXlzID0gbmV3IEFYRGF0ZVRpbWVSYW5nZShcclxuICAvLyAgICAgICAgIHRoaXMuZGlzcGxheVJhbmdlLnN0YXJ0VGltZS5zdGFydE9mKCdtb250aCcpLFxyXG4gIC8vICAgICAgICAgdGhpcy5kaXNwbGF5UmFuZ2Uuc3RhcnRUaW1lLmVuZE9mKCdtb250aCcpXHJcbiAgLy8gICAgICAgKVxyXG4gIC8vICAgICAgICAgLmVudW11cmF0ZSgnZGF5JylcclxuICAvLyAgICAgICAgIC5tYXAoYyA9PiBjLmRheU9mTW9udGgpO1xyXG4gIC8vICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIC8vIHByb3RlY3RlZCBfaGFuZGxlUGlja2VyQ2hhbmdlKGl0ZW06IGFueSwgdmlldykge1xyXG4gIC8vICAgaWYgKCFpdGVtKSByZXR1cm47XHJcbiAgLy8gICBjb25zdCBkYXRlID0gdGhpcy5kaXNwbGF5UmFuZ2Uuc3RhcnRUaW1lO1xyXG4gIC8vICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgLy8gICAgIGNhc2UgJ3llYXInOlxyXG4gIC8vICAgICAgIHRoaXMuX3NldERhdGUoZGF0ZS5zZXQoJ3llYXInLCBpdGVtLnZhbHVlKS5kYXRlKTtcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnbW9udGgnOlxyXG4gIC8vICAgICAgIHRoaXMuX3NldERhdGUoZGF0ZS5zZXQoJ21vbnRoJywgaXRlbS52YWx1ZS52YWx1ZSkuZGF0ZSk7XHJcbiAgLy8gICAgICAgdGhpcy5fZ2VuZXJhdGVQaWNrZXJJdGVtcygnZGF5Jyk7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGRlZmF1bHQ6XHJcbiAgLy8gICAgICAgdGhpcy5fc2V0RGF0ZShkYXRlLnNldCgnZGF5JywgaXRlbS52YWx1ZSkuZGF0ZSk7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpbnRlcmZhY2UgPT09ICdjYWxlbmRhcic7IGVsc2UgcGlja2VyVGVtcGxhdGVcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd05hdmlnYXRpb25cIj5cclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWhlYWRlclwiPjwvbmctY29udGVudD5cclxuICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1pbmZvXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVZpZXcgPT0gJ2RheXMnOyBlbHNlIGVsc2VUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b25cIiAoY2xpY2spPVwiX2hhbmRsZU5hdkNsaWNrKCRldmVudClcIj5cclxuICAgICAgICAgICAge3sgX25hdlRleHQuc3BsaXQoJyAnKVsxXSB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvblwiIChjbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICB7eyBfbmF2VGV4dC5zcGxpdCgnICcpWzBdIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2Vsc2VUZW1wbGF0ZT5cclxuICAgICAgICAgIDxidXR0b24gW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uXCIgKGNsaWNrKT1cIl9oYW5kbGVOYXZDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIHt7IF9uYXZUZXh0IH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1idXR0b25zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLWljb25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVQcmV2Q2xpY2soKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uXCIgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tbGVmdCc6ICFydGwsXHJcbiAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1yaWdodCc6IHJ0bFxyXG4gICAgICAgICAgICB9XCI+PC9pPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1pY29uXCJcclxuICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlTmV4dENsaWNrKClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvblwiIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLWxlZnQnOiBydGwsXHJcbiAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1yaWdodCc6ICFydGxcclxuICAgICAgICAgICAgfVwiPjwvaT5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItYm9keVwiPlxyXG4gICAgPGRpdiBbbmdTd2l0Y2hdPVwiYWN0aXZlVmlld1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIneWVhcnMnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXNsb3RzIGF4LWNhbGVuZGFyLXNsb3RzLXllYXJcIiBbbmdDbGFzc109XCJ7J2F4LWRlZmF1bHQnOiFjZWxsVGVtcGxhdGV9XCI+XHJcbiAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiMFwiICpuZ0Zvcj1cImxldCBzbG90IG9mIF9zbG90c1wiIGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdFwiIFtuZ0NsYXNzXT1cInNsb3QuY3NzQ2xhc3NcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVNsb3RDbGljaygkZXZlbnQsIHNsb3QpXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjZWxsVGVtcGxhdGU7IGVsc2UgeWVhclRwbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTtjb250ZXh0OiB7ICRpbXBsaWNpdDoge3Nsb3Q6c2xvdH0gfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3llYXJUcGw+XHJcbiAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwic2xvdC50b29sdGlwXCIgPlxyXG4gICAgICAgICAgICAgICAge3sgc2xvdC50ZXh0IH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtb250aHMnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXNsb3RzIGF4LWNhbGVuZGFyLXNsb3RzLW1vbnRoXCIgW25nQ2xhc3NdPVwieydheC1kZWZhdWx0JzohY2VsbFRlbXBsYXRlfVwiPlxyXG4gICAgICAgICAgPGRpdiB0YWJpbmRleD1cIjBcIiAqbmdGb3I9XCJsZXQgc2xvdCBvZiBfc2xvdHNcIiAgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90XCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwic2xvdC5jc3NDbGFzc1wiIChjbGljayk9XCJfaGFuZGxlU2xvdENsaWNrKCRldmVudCwgc2xvdClcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNlbGxUZW1wbGF0ZTsgZWxzZSBtb250aFRwbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTtjb250ZXh0OiB7ICRpbXBsaWNpdDoge3Nsb3Q6c2xvdH0gfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI21vbnRoVHBsPlxyXG4gICAgICAgICAgICAgIDxkaXYgW3RpdGxlXT1cInNsb3QudG9vbHRpcFwiID5cclxuICAgICAgICAgICAgICAgIHt7IHNsb3QudGV4dCB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXdlZWtcIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGQgb2YgX2RheU5hbWVzXCI+e3sgZCB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy1kYXlcIiBbbmdDbGFzc109XCJ7J2F4LWRlZmF1bHQnOiFjZWxsVGVtcGxhdGV9XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzbG90IG9mIF9zbG90c1wiPlxyXG4gICAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiMFwiIGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdFwiIFtuZ0NsYXNzXT1cInNsb3QuY3NzQ2xhc3NcIiAgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVTbG90Q2xpY2soJGV2ZW50LCBzbG90KVwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjZWxsVGVtcGxhdGU7IGVsc2UgZGF5VHBsXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ID5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTtjb250ZXh0OiB7ICRpbXBsaWNpdDoge3Nsb3Q6c2xvdH0gfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF5VHBsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwic2xvdC50b29sdGlwXCIgPlxyXG4gICAgICAgICAgICAgICAgICB7eyBzbG90LnRleHQgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxyXG4gIDwhLS0gPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWZvb3RlclwiPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBjbGFzcz1cImF4LXRvZGF5LWJ1dHRvblwiXHJcbiAgICAgIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbYXR0ci5kaXNhYmxlZF09XCIoZGlzYWJsZWQgfHwgaXNEaXNhYmxlZChfdG9kYXkpP3RydWU6bnVsbClcIlxyXG4gICAgICAoY2xpY2spPVwiX2hhbmRsZUdvVG9kYXkoKVwiXHJcbiAgICAgICpuZ0lmPVwiYWN0aXZlVmlldyA9PSAnZGF5cydcIj5cclxuICAgICAge3sgX3RvZGF5VGV4dCB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+IC0tPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLXRlbXBsYXRlICNwaWNrZXJUZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItcGlja2VyXCI+Ly9UT0RPOiBwaWNrZXI8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
1
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, } from '@angular/core';
2
+ import { AXDateTime, AXDateTimeRange } from '@acorex/core/dateTime';
3
+ import { MXInteractiveComponent, MXValueComponent } from '@acorex/components/common';
4
+ import { AXConfig } from '@acorex/core/config';
5
+ import { classes } from 'polytype';
6
+ import { MXCalendarBaseComponent } from './calendar.class';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveComponent, MXCalendarBaseComponent) {
10
+ get displayRange() {
11
+ const current = this._viewStartDate || this._today;
12
+ switch (this.activeView) {
13
+ case 'years':
14
+ // let y = current.startOf('year').year;
15
+ // let min = y - 3;
16
+ // let max = min + 11;
17
+ let y = current.startOf('year').year;
18
+ let min = y - (y % 10);
19
+ let max = min + 9;
20
+ return new AXDateTimeRange(AXDateTime.from({
21
+ year: min,
22
+ month: 1,
23
+ date: 1,
24
+ calendar: this._viewStartDate.calendar.name(),
25
+ }), AXDateTime.from({
26
+ year: max,
27
+ month: 12,
28
+ date: 28,
29
+ calendar: this._viewStartDate.calendar.name(),
30
+ }));
31
+ case 'months':
32
+ return new AXDateTimeRange(current.startOf('year'), current.endOf('year').add('day', -1));
33
+ default:
34
+ return new AXDateTimeRange(current.startOf('month'), current.endOf('month'));
35
+ }
36
+ }
37
+ _today = new AXDateTime(new Date(), this.type);
38
+ _viewStartDate;
39
+ _navText = '';
40
+ _todayText = '';
41
+ _slots = [];
42
+ _dayNames = [];
43
+ _initValues() {
44
+ this._today = new AXDateTime(new Date(), this.type);
45
+ this._dayNames = this._today.calendar.dayShortNames;
46
+ }
47
+ _refresh() {
48
+ this._initValues();
49
+ this.navTo(this.value || this._today);
50
+ }
51
+ ngOnInit() {
52
+ super.ngOnInit();
53
+ this.onValueChanged.subscribe(this._handleOnValueChanged.bind(this));
54
+ this.onOptionChanged.subscribe(this._handleOnOptionChanged.bind(this));
55
+ this._initValues();
56
+ if (!this.value)
57
+ this.goToday();
58
+ }
59
+ render() {
60
+ if (!this._viewStartDate)
61
+ return;
62
+ const vr = this.displayRange;
63
+ const applyCellClass = (slot, cellClass = this.cellClass) => {
64
+ switch (typeof cellClass) {
65
+ case 'string':
66
+ cellClass.split(' ').forEach(c => slot.cssClass[c] = true);
67
+ break;
68
+ case 'object':
69
+ Object.assign(slot.cssClass, cellClass);
70
+ break;
71
+ case 'function':
72
+ applyCellClass(slot, cellClass(slot.date));
73
+ break;
74
+ }
75
+ };
76
+ // year view
77
+ if (this.activeView == 'years') {
78
+ const a = vr.enumurate('year');
79
+ this._slots = a.map((d, i) => {
80
+ const r = {};
81
+ r.date = d.date;
82
+ //
83
+ r.text = d.format('YYYY');
84
+ r.tooltip = d.format('YYYY');
85
+ //
86
+ r.today = d.equal(this._today, 'year');
87
+ //
88
+ r.selected =
89
+ this.value &&
90
+ this.depth == 'years' &&
91
+ d.equal(this.value, 'year');
92
+ //
93
+ r.disabled =
94
+ (this.min && d.compare(this.min, 'year') == -1) ||
95
+ (this.max && d.compare(this.max, 'year') == 1);
96
+ //
97
+ if (r.disabled) {
98
+ r.cssClass = {
99
+ 'ax-state-disabled': r.disabled,
100
+ };
101
+ }
102
+ else {
103
+ r.cssClass = {
104
+ 'ax-state-today': r.today,
105
+ 'ax-state-selected': r.selected,
106
+ };
107
+ }
108
+ applyCellClass(r);
109
+ return r;
110
+ });
111
+ this._navText = `${vr.startTime.year} - ${vr.endTime.year}`;
112
+ this._todayText = this._today.format('YYYY');
113
+ }
114
+ // month view
115
+ else if (this.activeView == 'months') {
116
+ const a = vr.enumurate('month');
117
+ this._slots = a.map((d, i) => {
118
+ const r = {};
119
+ r.date = d.date;
120
+ r.text = d.format('MMM');
121
+ r.tooltip = d.format('MMMM YYYY');
122
+ r.today = d.equal(this._today, 'month');
123
+ //
124
+ r.disabled =
125
+ (this.min && d.compare(this.min, 'month') == -1) ||
126
+ (this.max && d.compare(this.max, 'month') == 1);
127
+ //
128
+ r.selected =
129
+ this.value &&
130
+ this.depth == 'months' &&
131
+ d.equal(this.value, 'month');
132
+ //
133
+ if (r.disabled) {
134
+ r.cssClass = {
135
+ 'ax-state-disabled': r.disabled,
136
+ };
137
+ }
138
+ else {
139
+ r.cssClass = {
140
+ 'ax-state-today': r.today,
141
+ 'ax-state-selected': r.selected,
142
+ 'ax-state-other': d.year != this._viewStartDate.year,
143
+ };
144
+ }
145
+ applyCellClass(r);
146
+ return r;
147
+ });
148
+ this._navText = this._viewStartDate.format('YYYY');
149
+ this._todayText = this._today.format('MMMM YYYY');
150
+ }
151
+ // day view
152
+ else {
153
+ const a = vr.enumurate('day');
154
+ this._slots = a.map((d, i) => {
155
+ const r = {};
156
+ r.date = d.date;
157
+ r.text = d.dayOfMonth;
158
+ r.tooltip = d.format();
159
+ r.today = d.equal(this._today, 'day');
160
+ r.selected = this.value && d.equal(this.value, 'day');
161
+ r.holiday = this.isHoliday(d) || this.isWeekend(d);
162
+ r.disabled =
163
+ (this.min && d.compare(this.min, 'day') == -1) ||
164
+ (this.max && d.compare(this.max, 'day') == 1) ||
165
+ this.isDisabled(d);
166
+ //
167
+ if (r.disabled) {
168
+ r.cssClass = {
169
+ 'ax-state-disabled': true,
170
+ };
171
+ }
172
+ else {
173
+ r.cssClass = {
174
+ 'ax-state-today': r.today,
175
+ 'ax-state-selected': r.selected,
176
+ 'ax-state-holiday': r.holiday
177
+ };
178
+ }
179
+ r.cssClass[`ax-col-start-${vr.startTime.dayOfWeek}`] = i == 0;
180
+ if (this.cellClass)
181
+ applyCellClass(r);
182
+ return r;
183
+ });
184
+ this._navText = this._viewStartDate.format('MMMM YYYY');
185
+ this._todayText = this._today.format();
186
+ }
187
+ this.cdr.markForCheck();
188
+ }
189
+ _handlePrevClick() {
190
+ this.isUserInteraction = true;
191
+ this.prev();
192
+ this.isUserInteraction = false;
193
+ }
194
+ _handleNextClick() {
195
+ this.isUserInteraction = true;
196
+ this.next();
197
+ this.isUserInteraction = false;
198
+ }
199
+ _handleSlotClick(e, slot) {
200
+ if (slot.disabled || this.disabled)
201
+ return;
202
+ //
203
+ this.onSlotClick.emit({
204
+ component: this,
205
+ item: slot.date,
206
+ isUserInteraction: true,
207
+ nativeEvent: e,
208
+ });
209
+ //
210
+ if (this.activeView == 'days') {
211
+ this._setDate(slot.date);
212
+ }
213
+ else if (this.activeView == 'months' && this.depth == 'days') {
214
+ this.activeView = 'days';
215
+ this.navTo(slot.date);
216
+ }
217
+ else if (this.activeView == 'months' && this.depth == 'months') {
218
+ this._setDate(slot.date);
219
+ }
220
+ else if (this.activeView == 'years' &&
221
+ (this.depth == 'days' || this.depth == 'months')) {
222
+ this.activeView = 'months';
223
+ this.navTo(slot.date);
224
+ }
225
+ else if (this.activeView == 'years' && this.depth == 'years') {
226
+ this._setDate(slot.date);
227
+ }
228
+ }
229
+ _handleNavClick(e) {
230
+ this.isUserInteraction = true;
231
+ this.toggleView();
232
+ this.isUserInteraction = false;
233
+ }
234
+ toggleView() {
235
+ if (this.activeView == 'days')
236
+ this.activeView = 'months';
237
+ else if (this.activeView == 'months')
238
+ this.activeView = 'years';
239
+ }
240
+ _handleOnOptionChanged(e) {
241
+ if (e.name == 'depth' ||
242
+ e.name == 'activeView' ||
243
+ e.name == 'disabledDates' ||
244
+ e.name == 'holidayDates') {
245
+ this.render();
246
+ }
247
+ if (e.name == 'type') {
248
+ this._refresh();
249
+ }
250
+ }
251
+ _handleOnValueChanged(e) {
252
+ this._viewStartDate = new AXDateTime(e.value, this.type);
253
+ this.render();
254
+ }
255
+ _handleGoToday() {
256
+ this.isUserInteraction = true;
257
+ this._setDate(this._today.date);
258
+ this.goToday();
259
+ this.isUserInteraction = false;
260
+ }
261
+ next() {
262
+ this._navNextPrev(false);
263
+ }
264
+ prev() {
265
+ this._navNextPrev(true);
266
+ }
267
+ focus() {
268
+ const func = (s) => this.getHostElement().querySelector(s);
269
+ const div = func('.ax-calendar-slots>div.ax-state-selected') ||
270
+ func('.ax-calendar-slots>div');
271
+ div?.focus();
272
+ }
273
+ _navNextPrev(prev) {
274
+ const sign = prev ? -1 : 1;
275
+ if (this.activeView == 'days')
276
+ this.navTo(this._viewStartDate.add('month', sign * 1));
277
+ else if (this.activeView == 'months')
278
+ this.navTo(this._viewStartDate.add('year', sign * 1));
279
+ else
280
+ this.navTo(this._viewStartDate.add('year', sign * 10));
281
+ }
282
+ goToday() {
283
+ this.navTo(this._today);
284
+ }
285
+ navTo(date) {
286
+ this._viewStartDate = AXDateTime.convert(date, this._today.calendar.name()).startOf();
287
+ const vr = this.displayRange;
288
+ this.render();
289
+ this.onNavigate.emit({
290
+ component: this,
291
+ isUserInteraction: this.isUserInteraction,
292
+ start: vr.startTime?.date,
293
+ end: vr.endTime?.date,
294
+ htmlElement: this.getHostElement(),
295
+ });
296
+ }
297
+ get __hostClass() {
298
+ const _classes = {
299
+ 'ax-state-disabled': this.disabled,
300
+ };
301
+ return Object.entries(_classes)
302
+ .filter(c => c[1])
303
+ .map(c => c[0])
304
+ .join(' ');
305
+ }
306
+ _setDate(value) {
307
+ if (this.readonly || this.disabled)
308
+ return;
309
+ this.value = AXDateTime.convert(value, this._today.calendar.name()).startOf().date;
310
+ }
311
+ isDisabled(date) {
312
+ if (Array.isArray(this.disabledDates) && this.disabledDates.length != 0) {
313
+ return this.disabledDates.some(d => date.equal(d, 'day'));
314
+ }
315
+ else if (typeof this.disabledDates == 'function') {
316
+ return this.disabledDates(date.date);
317
+ }
318
+ return false;
319
+ }
320
+ isHoliday(date) {
321
+ if (Array.isArray(this.holidayDates) && this.holidayDates.length != 0) {
322
+ return this.holidayDates.some(d => date.equal(d, 'day'));
323
+ }
324
+ else if (typeof this.holidayDates == 'function') {
325
+ return this.holidayDates(date.date);
326
+ }
327
+ return false;
328
+ }
329
+ isWeekend(date) {
330
+ const weekend = AXConfig.get(`dateTime.calendars.${this.type}.weekend`);
331
+ return weekend.includes(date.dayOfWeek);
332
+ }
333
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXCalendarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
334
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: AXCalendarComponent, selector: "ax-calendar", inputs: { rtl: "rtl", readonly: "readonly", value: "value", name: "name", disabled: "disabled", depth: "depth", activeView: "activeView", min: "min", max: "max", disabledDates: "disabledDates", holidayDates: "holidayDates", type: "type", cellTemplate: "cellTemplate", cellClass: "cellClass", showNavigation: "showNavigation" }, outputs: { onOptionChanged: "onOptionChanged", valueChange: "valueChange", onValueChanged: "onValueChanged", onBlur: "onBlur", onFocus: "onFocus", depthChange: "depthChange", typeChange: "typeChange", activeViewChange: "activeViewChange", disabledDatesChange: "disabledDatesChange", holidayDatesChange: "holidayDatesChange", onNavigate: "onNavigate", onSlotClick: "onSlotClick" }, host: { properties: { "class": "this.__hostClass" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"interface === 'calendar'; else pickerTemplate\">\r\n <ng-container *ngIf=\"showNavigation\">\r\n <ng-content select=\"ax-header\"></ng-content>\r\n <div class=\"ax-calendar-header\">\r\n <div class=\"ax-calendar-header-info\">\r\n <ng-container *ngIf=\"activeView == 'days'; else elseTemplate\">\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\r\n {{ _navText.split(' ')[1] }}\r\n </button>\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\r\n {{ _navText.split(' ')[0] }}\r\n </button>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\r\n {{ _navText }}\r\n </button>\r\n </ng-template>\r\n </div>\r\n <div class=\"ax-calendar-header-buttons\">\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\r\n (click)=\"_handlePrevClick()\">\r\n <i class=\"ax-icon\" [ngClass]=\"{\r\n 'ax-icon-chevron-left': !rtl,\r\n 'ax-icon-chevron-right': rtl\r\n }\"></i>\r\n </button>\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\r\n (click)=\"_handleNextClick()\">\r\n <i class=\"ax-icon\" [ngClass]=\"{\r\n 'ax-icon-chevron-left': rtl,\r\n 'ax-icon-chevron-right': !rtl\r\n }\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"ax-calendar-body\">\r\n <div [ngSwitch]=\"activeView\">\r\n <ng-container *ngSwitchCase=\"'years'\">\r\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{'ax-default':!cellTemplate}\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\"\r\n (click)=\"_handleSlotClick($event, slot)\">\r\n <ng-container *ngIf=\"cellTemplate; else yearTpl\">\r\n <div >\r\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #yearTpl>\r\n <div [title]=\"slot.tooltip\" >\r\n {{ slot.text }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'months'\">\r\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{'ax-default':!cellTemplate}\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" class=\"ax-calendar-slot\"\r\n [ngClass]=\"slot.cssClass\" (click)=\"_handleSlotClick($event, slot)\">\r\n <ng-container *ngIf=\"cellTemplate; else monthTpl\">\r\n <div >\r\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #monthTpl>\r\n <div [title]=\"slot.tooltip\" >\r\n {{ slot.text }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <div class=\"ax-calendar-week\">\r\n <div *ngFor=\"let d of _dayNames\">{{ d }}</div>\r\n </div>\r\n <div class=\"ax-calendar-slots ax-calendar-slots-day\" [ngClass]=\"{'ax-default':!cellTemplate}\">\r\n <ng-container *ngFor=\"let slot of _slots\">\r\n <div tabindex=\"0\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\" \r\n (click)=\"_handleSlotClick($event, slot)\">\r\n <ng-container *ngIf=\"cellTemplate; else dayTpl\">\r\n <div >\r\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #dayTpl>\r\n <div [title]=\"slot.tooltip\" >\r\n {{ slot.text }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <ng-content select=\"ax-footer\"></ng-content>\r\n <!-- <div class=\"ax-calendar-footer\">\r\n <button\r\n class=\"ax-today-button\"\r\n tabindex=\"-1\"\r\n [class.ax-state-disabled]=\"disabled\"\r\n [attr.disabled]=\"(disabled || isDisabled(_today)?true:null)\"\r\n (click)=\"_handleGoToday()\"\r\n *ngIf=\"activeView == 'days'\">\r\n {{ _todayText }}\r\n </button>\r\n </div> -->\r\n</ng-container>\r\n<ng-template #pickerTemplate>\r\n <div class=\"ax-calendar-picker\">//TODO: picker</div>\r\n</ng-template>", styles: [".ax-dark ax-calendar{background:rgba(var(--ax-color-on-surface))}ax-calendar{display:block;background:rgba(var(--ax-color-surface));color:rgba(var(--ax-color-text-default));padding:.5rem;width:18rem}@media (max-width: 599px){ax-calendar{width:100%}}@media (min-width: 600px){ax-calendar{width:20rem}}@media (min-width: 1200px){ax-calendar{width:18rem}}ax-calendar.ax-state-disabled .ax-calendar-slots{opacity:.5;cursor:default}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-top:.25rem;padding-left:.25rem;padding-right:.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{margin:.5rem}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;align-items:center;justify-content:center;text-align:center;font-size:.875rem;color:rgba(var(--ax-color-text-default));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\"\";padding-top:100%;float:left}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\"\";display:block;clear:both}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,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-today){background-color:rgba(var(--ax-color-primary-300));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,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-today){outline-width:2px;outline-style:solid;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-width:2px;outline-style:dashed}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-col-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-width:2px;border-style:solid;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:focus-visible{border-style:dashed;outline-color:transparent}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-holiday{color:rgba(var(--ax-color-danger-500))}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));margin-top:.5rem;margin-bottom:.5rem}ax-calendar .ax-calendar-body .ax-calendar-week>div{font-size:.875rem;text-align:center;position:relative;display:flex;align-items:center;justify-content:center;cursor:text;margin:.125rem}ax-calendar .ax-calendar-footer{display:flex;justify-content:center;align-items:center;margin-top:1.125rem}ax-calendar .ax-calendar-footer .ax-today-button{width:100%;height:var(--ax-size-default);padding:0 1rem;font-size:.875rem;text-align:center;display:block;background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{opacity:.5;cursor:not-allowed}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-400))}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-600))}.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: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
335
+ }
336
+ export { AXCalendarComponent };
337
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXCalendarComponent, decorators: [{
338
+ type: Component,
339
+ args: [{ selector: 'ax-calendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: [
340
+ 'rtl',
341
+ 'readonly',
342
+ 'value',
343
+ 'name',
344
+ 'disabled',
345
+ 'depth',
346
+ 'activeView',
347
+ 'min',
348
+ 'max',
349
+ 'disabledDates',
350
+ 'holidayDates',
351
+ 'type',
352
+ 'cellTemplate',
353
+ 'cellClass',
354
+ 'showNavigation'
355
+ ], outputs: [
356
+ 'onOptionChanged',
357
+ 'valueChange',
358
+ 'onValueChanged',
359
+ 'onBlur',
360
+ 'onFocus',
361
+ 'depthChange',
362
+ 'typeChange',
363
+ 'activeViewChange',
364
+ 'disabledDatesChange',
365
+ 'holidayDatesChange',
366
+ 'onNavigate',
367
+ 'onSlotClick'
368
+ ], template: "<ng-container *ngIf=\"interface === 'calendar'; else pickerTemplate\">\r\n <ng-container *ngIf=\"showNavigation\">\r\n <ng-content select=\"ax-header\"></ng-content>\r\n <div class=\"ax-calendar-header\">\r\n <div class=\"ax-calendar-header-info\">\r\n <ng-container *ngIf=\"activeView == 'days'; else elseTemplate\">\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\r\n {{ _navText.split(' ')[1] }}\r\n </button>\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\r\n {{ _navText.split(' ')[0] }}\r\n </button>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\r\n {{ _navText }}\r\n </button>\r\n </ng-template>\r\n </div>\r\n <div class=\"ax-calendar-header-buttons\">\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\r\n (click)=\"_handlePrevClick()\">\r\n <i class=\"ax-icon\" [ngClass]=\"{\r\n 'ax-icon-chevron-left': !rtl,\r\n 'ax-icon-chevron-right': rtl\r\n }\"></i>\r\n </button>\r\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\r\n (click)=\"_handleNextClick()\">\r\n <i class=\"ax-icon\" [ngClass]=\"{\r\n 'ax-icon-chevron-left': rtl,\r\n 'ax-icon-chevron-right': !rtl\r\n }\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"ax-calendar-body\">\r\n <div [ngSwitch]=\"activeView\">\r\n <ng-container *ngSwitchCase=\"'years'\">\r\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{'ax-default':!cellTemplate}\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\"\r\n (click)=\"_handleSlotClick($event, slot)\">\r\n <ng-container *ngIf=\"cellTemplate; else yearTpl\">\r\n <div >\r\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #yearTpl>\r\n <div [title]=\"slot.tooltip\" >\r\n {{ slot.text }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'months'\">\r\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{'ax-default':!cellTemplate}\">\r\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" class=\"ax-calendar-slot\"\r\n [ngClass]=\"slot.cssClass\" (click)=\"_handleSlotClick($event, slot)\">\r\n <ng-container *ngIf=\"cellTemplate; else monthTpl\">\r\n <div >\r\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #monthTpl>\r\n <div [title]=\"slot.tooltip\" >\r\n {{ slot.text }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <div class=\"ax-calendar-week\">\r\n <div *ngFor=\"let d of _dayNames\">{{ d }}</div>\r\n </div>\r\n <div class=\"ax-calendar-slots ax-calendar-slots-day\" [ngClass]=\"{'ax-default':!cellTemplate}\">\r\n <ng-container *ngFor=\"let slot of _slots\">\r\n <div tabindex=\"0\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\" \r\n (click)=\"_handleSlotClick($event, slot)\">\r\n <ng-container *ngIf=\"cellTemplate; else dayTpl\">\r\n <div >\r\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #dayTpl>\r\n <div [title]=\"slot.tooltip\" >\r\n {{ slot.text }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <ng-content select=\"ax-footer\"></ng-content>\r\n <!-- <div class=\"ax-calendar-footer\">\r\n <button\r\n class=\"ax-today-button\"\r\n tabindex=\"-1\"\r\n [class.ax-state-disabled]=\"disabled\"\r\n [attr.disabled]=\"(disabled || isDisabled(_today)?true:null)\"\r\n (click)=\"_handleGoToday()\"\r\n *ngIf=\"activeView == 'days'\">\r\n {{ _todayText }}\r\n </button>\r\n </div> -->\r\n</ng-container>\r\n<ng-template #pickerTemplate>\r\n <div class=\"ax-calendar-picker\">//TODO: picker</div>\r\n</ng-template>", styles: [".ax-dark ax-calendar{background:rgba(var(--ax-color-on-surface))}ax-calendar{display:block;background:rgba(var(--ax-color-surface));color:rgba(var(--ax-color-text-default));padding:.5rem;width:18rem}@media (max-width: 599px){ax-calendar{width:100%}}@media (min-width: 600px){ax-calendar{width:20rem}}@media (min-width: 1200px){ax-calendar{width:18rem}}ax-calendar.ax-state-disabled .ax-calendar-slots{opacity:.5;cursor:default}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-top:.25rem;padding-left:.25rem;padding-right:.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{margin:.5rem}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;align-items:center;justify-content:center;text-align:center;font-size:.875rem;color:rgba(var(--ax-color-text-default));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\"\";padding-top:100%;float:left}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\"\";display:block;clear:both}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,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-today){background-color:rgba(var(--ax-color-primary-300));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,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-today){outline-width:2px;outline-style:solid;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-width:2px;outline-style:dashed}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-col-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-width:2px;border-style:solid;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:focus-visible{border-style:dashed;outline-color:transparent}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-holiday{color:rgba(var(--ax-color-danger-500))}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));margin-top:.5rem;margin-bottom:.5rem}ax-calendar .ax-calendar-body .ax-calendar-week>div{font-size:.875rem;text-align:center;position:relative;display:flex;align-items:center;justify-content:center;cursor:text;margin:.125rem}ax-calendar .ax-calendar-footer{display:flex;justify-content:center;align-items:center;margin-top:1.125rem}ax-calendar .ax-calendar-footer .ax-today-button{width:100%;height:var(--ax-size-default);padding:0 1rem;font-size:.875rem;text-align:center;display:block;background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{opacity:.5;cursor:not-allowed}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-400))}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-600))}.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"] }]
369
+ }], propDecorators: { __hostClass: [{
370
+ type: HostBinding,
371
+ args: ['class']
372
+ }] } });
373
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEUsT0FBTyxFQUlMLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDakIsTUFBTSwyQkFBMkIsQ0FBQztBQUduQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBRTNELE1Bc0NhLG1CQUNYLFNBQ0EsT0FBTyxDQUFDLENBQUEsZ0JBQXNCLENBQUEsRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUIsQ0FBQztJQUVoRixJQUFXLFlBQVk7UUFDckIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ25ELFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN2QixLQUFLLE9BQU87Z0JBQ1Ysd0NBQXdDO2dCQUN4QyxtQkFBbUI7Z0JBQ25CLHNCQUFzQjtnQkFDdEIsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JDLElB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QUFXO3NCQUR0QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhEYXRlVGltZSwgQVhEYXRlVGltZVJhbmdlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2RhdGVUaW1lJztcclxuaW1wb3J0IHtcclxuICBBWENsaWNrRXZlbnQsXHJcbiAgQVhPcHRpb25DaGFuZ2VkRXZlbnQsXHJcbiAgQVhWYWx1ZUNoYW5nZWRFdmVudCxcclxuICBNWEludGVyYWN0aXZlQ29tcG9uZW50LFxyXG4gIE1YVmFsdWVDb21wb25lbnRcclxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcclxuXHJcblxyXG5pbXBvcnQgeyBBWENvbmZpZyB9IGZyb20gJ0BhY29yZXgvY29yZS9jb25maWcnO1xyXG5cclxuaW1wb3J0IHsgY2xhc3NlcyB9IGZyb20gJ3BvbHl0eXBlJztcclxuaW1wb3J0IHsgTVhDYWxlbmRhckJhc2VDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLmNsYXNzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtY2FsZW5kYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGlucHV0czogW1xyXG4gICAgJ3J0bCcsXHJcbiAgICAncmVhZG9ubHknLFxyXG4gICAgJ3ZhbHVlJyxcclxuICAgICduYW1lJyxcclxuICAgICdkaXNhYmxlZCcsXHJcbiAgICAnZGVwdGgnLFxyXG4gICAgJ2FjdGl2ZVZpZXcnLFxyXG4gICAgJ21pbicsXHJcbiAgICAnbWF4JyxcclxuICAgICdkaXNhYmxlZERhdGVzJyxcclxuICAgICdob2xpZGF5RGF0ZXMnLFxyXG4gICAgJ3R5cGUnLFxyXG4gICAgJ2NlbGxUZW1wbGF0ZScsXHJcbiAgICAnY2VsbENsYXNzJyxcclxuICAgICdzaG93TmF2aWdhdGlvbidcclxuICBdLFxyXG4gIG91dHB1dHM6IFtcclxuICAgICdvbk9wdGlvbkNoYW5nZWQnLFxyXG4gICAgJ3ZhbHVlQ2hhbmdlJyxcclxuICAgICdvblZhbHVlQ2hhbmdlZCcsXHJcbiAgICAnb25CbHVyJyxcclxuICAgICdvbkZvY3VzJyxcclxuICAgICdkZXB0aENoYW5nZScsXHJcbiAgICAndHlwZUNoYW5nZScsXHJcbiAgICAnYWN0aXZlVmlld0NoYW5nZScsXHJcbiAgICAnZGlzYWJsZWREYXRlc0NoYW5nZScsXHJcbiAgICAnaG9saWRheURhdGVzQ2hhbmdlJyxcclxuICAgICdvbk5hdmlnYXRlJyxcclxuICAgICdvblNsb3RDbGljaydcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyQ29tcG9uZW50XHJcbiAgZXh0ZW5kc1xyXG4gIGNsYXNzZXMoTVhWYWx1ZUNvbXBvbmVudDxEYXRlPiwgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCwgTVhDYWxlbmRhckJhc2VDb21wb25lbnQpXHJcbntcclxuICBwdWJsaWMgZ2V0IGRpc3BsYXlSYW5nZSgpOiBBWERhdGVUaW1lUmFuZ2Uge1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuX3ZpZXdTdGFydERhdGUgfHwgdGhpcy5fdG9kYXk7XHJcbiAgICBzd2l0Y2ggKHRoaXMuYWN0aXZlVmlldykge1xyXG4gICAgICBjYXNlICd5ZWFycyc6XHJcbiAgICAgICAgLy8gbGV0IHkgPSBjdXJyZW50LnN0YXJ0T2YoJ3llYXInKS55ZWFyO1xyXG4gICAgICAgIC8vIGxldCBtaW4gPSB5IC0gMztcclxuICAgICAgICAvLyBsZXQgbWF4ID0gbWluICsgMTE7XHJcbiAgICAgICAgbGV0IHkgPSBjdXJyZW50LnN0YXJ0T2YoJ3llYXInKS55ZWFyO1xyXG4gICAgICAgIGxldCBtaW4gPSB5IC0gKHkgJSAxMCk7XHJcbiAgICAgICAgbGV0IG1heCA9IG1pbiArIDk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UoXHJcbiAgICAgICAgICBBWERhdGVUaW1lLmZyb20oe1xyXG4gICAgICAgICAgICB5ZWFyOiBtaW4sXHJcbiAgICAgICAgICAgIG1vbnRoOiAxLFxyXG4gICAgICAgICAgICBkYXRlOiAxLFxyXG4gICAgICAgICAgICBjYWxlbmRhcjogdGhpcy5fdmlld1N0YXJ0RGF0ZS5jYWxlbmRhci5uYW1lKCksXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIEFYRGF0ZVRpbWUuZnJvbSh7XHJcbiAgICAgICAgICAgIHllYXI6IG1heCxcclxuICAgICAgICAgICAgbW9udGg6IDEyLFxyXG4gICAgICAgICAgICBkYXRlOiAyOCxcclxuICAgICAgICAgICAgY2FsZW5kYXI6IHRoaXMuX3ZpZXdTdGFydERhdGUuY2FsZW5kYXIubmFtZSgpLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICBjYXNlICdtb250aHMnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZVJhbmdlKFxyXG4gICAgICAgICAgY3VycmVudC5zdGFydE9mKCd5ZWFyJyksXHJcbiAgICAgICAgICBjdXJyZW50LmVuZE9mKCd5ZWFyJykuYWRkKCdkYXknLCAtMSlcclxuICAgICAgICApO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZVJhbmdlKFxyXG4gICAgICAgICAgY3VycmVudC5zdGFydE9mKCdtb250aCcpLFxyXG4gICAgICAgICAgY3VycmVudC5lbmRPZignbW9udGgnKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX3RvZGF5ID0gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUoKSwgdGhpcy50eXBlKTtcclxuICBwcml2YXRlIF92aWV3U3RhcnREYXRlITogQVhEYXRlVGltZTtcclxuXHJcbiAgcHJvdGVjdGVkIF9uYXZUZXh0OiBzdHJpbmcgPSAnJztcclxuICBwcm90ZWN0ZWQgX3RvZGF5VGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIHByb3RlY3RlZCBfc2xvdHM6IGFueVtdID0gW107XHJcbiAgcHJvdGVjdGVkIF9kYXlOYW1lczogc3RyaW5nW10gPSBbXTtcclxuXHJcblxyXG4gIHByaXZhdGUgX2luaXRWYWx1ZXMoKSB7XHJcbiAgICB0aGlzLl90b2RheSA9IG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKCksIHRoaXMudHlwZSk7XHJcbiAgICB0aGlzLl9kYXlOYW1lcyA9IHRoaXMuX3RvZGF5LmNhbGVuZGFyLmRheVNob3J0TmFtZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZWZyZXNoKCkge1xyXG4gICAgdGhpcy5faW5pdFZhbHVlcygpO1xyXG4gICAgdGhpcy5uYXZUbyh0aGlzLnZhbHVlIHx8IHRoaXMuX3RvZGF5KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLnN1YnNjcmliZSh0aGlzLl9oYW5kbGVPblZhbHVlQ2hhbmdlZC5iaW5kKHRoaXMpKTtcclxuICAgIHRoaXMub25PcHRpb25DaGFuZ2VkLnN1YnNjcmliZSh0aGlzLl9oYW5kbGVPbk9wdGlvbkNoYW5nZWQuYmluZCh0aGlzKSk7XHJcbiAgICB0aGlzLl9pbml0VmFsdWVzKCk7XHJcbiAgICBpZiAoIXRoaXMudmFsdWUpIHRoaXMuZ29Ub2RheSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGlmICghdGhpcy5fdmlld1N0YXJ0RGF0ZSkgcmV0dXJuO1xyXG4gICAgY29uc3QgdnIgPSB0aGlzLmRpc3BsYXlSYW5nZTtcclxuICAgIGNvbnN0IGFwcGx5Q2VsbENsYXNzID0gKHNsb3Q6IGFueSwgY2VsbENsYXNzOiBhbnkgPSB0aGlzLmNlbGxDbGFzcykgPT4ge1xyXG4gICAgICBzd2l0Y2ggKHR5cGVvZiBjZWxsQ2xhc3MpIHtcclxuICAgICAgICBjYXNlICdzdHJpbmcnOlxyXG4gICAgICAgICAgY2VsbENsYXNzLnNwbGl0KCcgJykuZm9yRWFjaChjID0+IHNsb3QuY3NzQ2xhc3NbY10gPSB0cnVlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ29iamVjdCc6XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHNsb3QuY3NzQ2xhc3MsIGNlbGxDbGFzcyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdmdW5jdGlvbic6XHJcbiAgICAgICAgICBhcHBseUNlbGxDbGFzcyhzbG90LCBjZWxsQ2xhc3Moc2xvdC5kYXRlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8geWVhciB2aWV3XHJcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICd5ZWFycycpIHtcclxuICAgICAgY29uc3QgYSA9IHZyLmVudW11cmF0ZSgneWVhcicpO1xyXG4gICAgICB0aGlzLl9zbG90cyA9IGEubWFwKChkLCBpKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcjogYW55ID0ge307XHJcbiAgICAgICAgci5kYXRlID0gZC5kYXRlO1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgci50ZXh0ID0gZC5mb3JtYXQoJ1lZWVknKTtcclxuICAgICAgICByLnRvb2x0aXAgPSBkLmZvcm1hdCgnWVlZWScpO1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgci50b2RheSA9IGQuZXF1YWwodGhpcy5fdG9kYXksICd5ZWFyJyk7XHJcbiAgICAgICAgLy9cclxuICAgICAgICByLnNlbGVjdGVkID1cclxuICAgICAgICAgIHRoaXMudmFsdWUgJiZcclxuICAgICAgICAgIHRoaXMuZGVwdGggPT0gJ3llYXJzJyAmJlxyXG4gICAgICAgICAgZC5lcXVhbCh0aGlzLnZhbHVlLCAneWVhcicpXHJcbiAgICAgICAgLy9cclxuICAgICAgICByLmRpc2FibGVkID1cclxuICAgICAgICAgICh0aGlzLm1pbiAmJiBkLmNvbXBhcmUodGhpcy5taW4sICd5ZWFyJykgPT0gLTEpIHx8XHJcbiAgICAgICAgICAodGhpcy5tYXggJiYgZC5jb21wYXJlKHRoaXMubWF4LCAneWVhcicpID09IDEpO1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgaWYgKHIuZGlzYWJsZWQpIHtcclxuICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XHJcbiAgICAgICAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHIuZGlzYWJsZWQsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByLmNzc0NsYXNzID0ge1xyXG4gICAgICAgICAgICAnYXgtc3RhdGUtdG9kYXknOiByLnRvZGF5LFxyXG4gICAgICAgICAgICAnYXgtc3RhdGUtc2VsZWN0ZWQnOiByLnNlbGVjdGVkLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXBwbHlDZWxsQ2xhc3Mocik7XHJcbiAgICAgICAgcmV0dXJuIHI7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLl9uYXZUZXh0ID0gYCR7dnIuc3RhcnRUaW1lLnllYXJ9IC0gJHt2ci5lbmRUaW1lLnllYXJ9YDtcclxuICAgICAgdGhpcy5fdG9kYXlUZXh0ID0gdGhpcy5fdG9kYXkuZm9ybWF0KCdZWVlZJyk7XHJcbiAgICB9XHJcbiAgICAvLyBtb250aCB2aWV3XHJcbiAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRocycpIHtcclxuICAgICAgY29uc3QgYSA9IHZyLmVudW11cmF0ZSgnbW9udGgnKTtcclxuICAgICAgdGhpcy5fc2xvdHMgPSBhLm1hcCgoZCwgaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHI6IGFueSA9IHt9O1xyXG4gICAgICAgIHIuZGF0ZSA9IGQuZGF0ZTtcclxuICAgICAgICByLnRleHQgPSBkLmZvcm1hdCgnTU1NJyk7XHJcbiAgICAgICAgci50b29sdGlwID0gZC5mb3JtYXQoJ01NTU0gWVlZWScpO1xyXG4gICAgICAgIHIudG9kYXkgPSBkLmVxdWFsKHRoaXMuX3RvZGF5LCAnbW9udGgnKTtcclxuICAgICAgICAvL1xyXG4gICAgICAgIHIuZGlzYWJsZWQgPVxyXG4gICAgICAgICAgKHRoaXMubWluICYmIGQuY29tcGFyZSh0aGlzLm1pbiwgJ21vbnRoJykgPT0gLTEpIHx8XHJcbiAgICAgICAgICAodGhpcy5tYXggJiYgZC5jb21wYXJlKHRoaXMubWF4LCAnbW9udGgnKSA9PSAxKTtcclxuICAgICAgICAvL1xyXG4gICAgICAgIHIuc2VsZWN0ZWQgPVxyXG4gICAgICAgICAgdGhpcy52YWx1ZSAmJlxyXG4gICAgICAgICAgdGhpcy5kZXB0aCA9PSAnbW9udGhzJyAmJlxyXG4gICAgICAgICAgZC5lcXVhbCh0aGlzLnZhbHVlLCAnbW9udGgnKTtcclxuICAgICAgICAvL1xyXG4gICAgICAgIGlmIChyLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICByLmNzc0NsYXNzID0ge1xyXG4gICAgICAgICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiByLmRpc2FibGVkLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgci5jc3NDbGFzcyA9IHtcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLXRvZGF5Jzogci50b2RheSxcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLW90aGVyJzogZC55ZWFyICE9IHRoaXMuX3ZpZXdTdGFydERhdGUueWVhcixcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFwcGx5Q2VsbENsYXNzKHIpO1xyXG4gICAgICAgIHJldHVybiByO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5fbmF2VGV4dCA9IHRoaXMuX3ZpZXdTdGFydERhdGUuZm9ybWF0KCdZWVlZJyk7XHJcbiAgICAgIHRoaXMuX3RvZGF5VGV4dCA9IHRoaXMuX3RvZGF5LmZvcm1hdCgnTU1NTSBZWVlZJyk7XHJcbiAgICB9XHJcbiAgICAvLyBkYXkgdmlld1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IGEgPSB2ci5lbnVtdXJhdGUoJ2RheScpO1xyXG4gICAgICB0aGlzLl9zbG90cyA9IGEubWFwKChkLCBpKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcjogYW55ID0ge307XHJcbiAgICAgICAgci5kYXRlID0gZC5kYXRlO1xyXG4gICAgICAgIHIudGV4dCA9IGQuZGF5T2ZNb250aDtcclxuICAgICAgICByLnRvb2x0aXAgPSBkLmZvcm1hdCgpO1xyXG4gICAgICAgIHIudG9kYXkgPSBkLmVxdWFsKHRoaXMuX3RvZGF5LCAnZGF5Jyk7XHJcbiAgICAgICAgci5zZWxlY3RlZCA9IHRoaXMudmFsdWUgJiYgZC5lcXVhbCh0aGlzLnZhbHVlLCAnZGF5Jyk7XHJcbiAgICAgICAgci5ob2xpZGF5ID0gdGhpcy5pc0hvbGlkYXkoZCkgfHwgdGhpcy5pc1dlZWtlbmQoZCk7XHJcbiAgICAgICAgci5kaXNhYmxlZCA9XHJcbiAgICAgICAgICAodGhpcy5taW4gJiYgZC5jb21wYXJlKHRoaXMubWluLCAnZGF5JykgPT0gLTEpIHx8XHJcbiAgICAgICAgICAodGhpcy5tYXggJiYgZC5jb21wYXJlKHRoaXMubWF4LCAnZGF5JykgPT0gMSkgfHxcclxuICAgICAgICAgIHRoaXMuaXNEaXNhYmxlZChkKTtcclxuICAgICAgICAvL1xyXG4gICAgICAgIGlmIChyLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICByLmNzc0NsYXNzID0ge1xyXG4gICAgICAgICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgci5jc3NDbGFzcyA9IHtcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLXRvZGF5Jzogci50b2RheSxcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcclxuICAgICAgICAgICAgJ2F4LXN0YXRlLWhvbGlkYXknOiByLmhvbGlkYXlcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHIuY3NzQ2xhc3NbYGF4LWNvbC1zdGFydC0ke3ZyLnN0YXJ0VGltZS5kYXlPZldlZWt9YF0gPSBpID09IDA7XHJcbiAgICAgICAgaWYgKHRoaXMuY2VsbENsYXNzKVxyXG4gICAgICAgICAgYXBwbHlDZWxsQ2xhc3Mocik7XHJcbiAgICAgICAgcmV0dXJuIHI7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLl9uYXZUZXh0ID0gdGhpcy5fdmlld1N0YXJ0RGF0ZS5mb3JtYXQoJ01NTU0gWVlZWScpO1xyXG4gICAgICB0aGlzLl90b2RheVRleHQgPSB0aGlzLl90b2RheS5mb3JtYXQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9oYW5kbGVQcmV2Q2xpY2soKSB7XHJcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMucHJldigpO1xyXG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9oYW5kbGVOZXh0Q2xpY2soKSB7XHJcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMubmV4dCgpO1xyXG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9oYW5kbGVTbG90Q2xpY2soZTogTW91c2VFdmVudCwgc2xvdCkge1xyXG4gICAgaWYgKHNsb3QuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgLy9cclxuICAgIHRoaXMub25TbG90Q2xpY2suZW1pdCh7XHJcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgaXRlbTogc2xvdC5kYXRlLFxyXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcclxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXHJcbiAgICB9KTtcclxuICAgIC8vXHJcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdkYXlzJykge1xyXG4gICAgICB0aGlzLl9zZXREYXRlKHNsb3QuZGF0ZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGhzJyAmJiB0aGlzLmRlcHRoID09ICdkYXlzJykge1xyXG4gICAgICB0aGlzLmFjdGl2ZVZpZXcgPSAnZGF5cyc7XHJcbiAgICAgIHRoaXMubmF2VG8oc2xvdC5kYXRlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aHMnICYmIHRoaXMuZGVwdGggPT0gJ21vbnRocycpIHtcclxuICAgICAgdGhpcy5fc2V0RGF0ZShzbG90LmRhdGUpO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5hY3RpdmVWaWV3ID09ICd5ZWFycycgJiZcclxuICAgICAgKHRoaXMuZGVwdGggPT0gJ2RheXMnIHx8IHRoaXMuZGVwdGggPT0gJ21vbnRocycpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ21vbnRocyc7XHJcbiAgICAgIHRoaXMubmF2VG8oc2xvdC5kYXRlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICd5ZWFycycgJiYgdGhpcy5kZXB0aCA9PSAneWVhcnMnKSB7XHJcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaGFuZGxlTmF2Q2xpY2soZTogQVhDbGlja0V2ZW50IHwgYW55KSB7XHJcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMudG9nZ2xlVmlldygpO1xyXG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZVZpZXcoKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdkYXlzJylcclxuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ21vbnRocyc7XHJcbiAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRocycpXHJcbiAgICAgIHRoaXMuYWN0aXZlVmlldyA9ICd5ZWFycyc7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2hhbmRsZU9uT3B0aW9uQ2hhbmdlZChlOiBBWE9wdGlvbkNoYW5nZWRFdmVudCkge1xyXG4gICAgaWYgKFxyXG4gICAgICBlLm5hbWUgPT0gJ2RlcHRoJyB8fFxyXG4gICAgICBlLm5hbWUgPT0gJ2FjdGl2ZVZpZXcnIHx8XHJcbiAgICAgIGUubmFtZSA9PSAnZGlzYWJsZWREYXRlcycgfHxcclxuICAgICAgZS5uYW1lID09ICdob2xpZGF5RGF0ZXMnXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5yZW5kZXIoKTtcclxuICAgIH1cclxuICAgIGlmIChlLm5hbWUgPT0gJ3R5cGUnKSB7XHJcbiAgICAgIHRoaXMuX3JlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hhbmRsZU9uVmFsdWVDaGFuZ2VkKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQpIHtcclxuICAgIHRoaXMuX3ZpZXdTdGFydERhdGUgPSBuZXcgQVhEYXRlVGltZShlLnZhbHVlLCB0aGlzLnR5cGUpO1xyXG4gICAgdGhpcy5yZW5kZXIoKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaGFuZGxlR29Ub2RheSgpIHtcclxuICAgIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5fc2V0RGF0ZSh0aGlzLl90b2RheS5kYXRlKTtcclxuICAgIHRoaXMuZ29Ub2RheSgpO1xyXG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmV4dCgpIHtcclxuICAgIHRoaXMuX25hdk5leHRQcmV2KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByZXYoKSB7XHJcbiAgICB0aGlzLl9uYXZOZXh0UHJldih0cnVlKTtcclxuICB9XHJcblxyXG4gIGZvY3VzKCkge1xyXG4gICAgY29uc3QgZnVuYyA9IChzOiBzdHJpbmcpID0+IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PihzKTtcclxuICAgIGNvbnN0IGRpdiA9XHJcbiAgICAgIGZ1bmMoJy5heC1jYWxlbmRhci1zbG90cz5kaXYuYXgtc3RhdGUtc2VsZWN0ZWQnKSB8fFxyXG4gICAgICBmdW5jKCcuYXgtY2FsZW5kYXItc2xvdHM+ZGl2Jyk7XHJcbiAgICBkaXY/LmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9uYXZOZXh0UHJldihwcmV2OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBzaWduID0gcHJldiA/IC0xIDogMTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ2RheXMnKVxyXG4gICAgICB0aGlzLm5hdlRvKHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCdtb250aCcsIHNpZ24gKiAxKSk7XHJcbiAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRocycpXHJcbiAgICAgIHRoaXMubmF2VG8odGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ3llYXInLCBzaWduICogMSkpO1xyXG4gICAgZWxzZSB0aGlzLm5hdlRvKHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCd5ZWFyJywgc2lnbiAqIDEwKSk7XHJcbiAgfVxyXG5cclxuICBnb1RvZGF5KCkge1xyXG4gICAgdGhpcy5uYXZUbyh0aGlzLl90b2RheSk7XHJcbiAgfVxyXG5cclxuICBuYXZUbyhkYXRlOiBEYXRlIHwgQVhEYXRlVGltZSkge1xyXG4gICAgdGhpcy5fdmlld1N0YXJ0RGF0ZSA9IEFYRGF0ZVRpbWUuY29udmVydChcclxuICAgICAgZGF0ZSxcclxuICAgICAgdGhpcy5fdG9kYXkuY2FsZW5kYXIubmFtZSgpXHJcbiAgICApLnN0YXJ0T2YoKTtcclxuICAgIGNvbnN0IHZyID0gdGhpcy5kaXNwbGF5UmFuZ2U7XHJcbiAgICB0aGlzLnJlbmRlcigpO1xyXG4gICAgdGhpcy5vbk5hdmlnYXRlLmVtaXQoe1xyXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0aGlzLmlzVXNlckludGVyYWN0aW9uLFxyXG4gICAgICBzdGFydDogdnIuc3RhcnRUaW1lPy5kYXRlLFxyXG4gICAgICBlbmQ6IHZyLmVuZFRpbWU/LmRhdGUsXHJcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLmdldEhvc3RFbGVtZW50KCksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxyXG4gIHByaXZhdGUgZ2V0IF9faG9zdENsYXNzKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBfY2xhc3NlcyA9IHtcclxuICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogdGhpcy5kaXNhYmxlZCxcclxuICAgIH07XHJcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoX2NsYXNzZXMpXHJcbiAgICAgIC5maWx0ZXIoYyA9PiBjWzFdKVxyXG4gICAgICAubWFwKGMgPT4gY1swXSlcclxuICAgICAgLmpvaW4oJyAnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldERhdGUodmFsdWU6IERhdGUpIHtcclxuICAgIGlmICh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQpIHJldHVybjtcclxuICAgIHRoaXMudmFsdWUgPSBBWERhdGVUaW1lLmNvbnZlcnQoXHJcbiAgICAgIHZhbHVlLFxyXG4gICAgICB0aGlzLl90b2RheS5jYWxlbmRhci5uYW1lKClcclxuICAgICkuc3RhcnRPZigpLmRhdGU7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaXNEaXNhYmxlZChkYXRlOiBBWERhdGVUaW1lKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmRpc2FibGVkRGF0ZXMpICYmIHRoaXMuZGlzYWJsZWREYXRlcy5sZW5ndGggIT0gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZERhdGVzLnNvbWUoZCA9PiBkYXRlLmVxdWFsKGQsICdkYXknKSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmRpc2FibGVkRGF0ZXMgPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZERhdGVzKGRhdGUuZGF0ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaXNIb2xpZGF5KGRhdGU6IEFYRGF0ZVRpbWUpOiBib29sZWFuIHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuaG9saWRheURhdGVzKSAmJiB0aGlzLmhvbGlkYXlEYXRlcy5sZW5ndGggIT0gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ob2xpZGF5RGF0ZXMuc29tZShkID0+IGRhdGUuZXF1YWwoZCwgJ2RheScpKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuaG9saWRheURhdGVzID09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaG9saWRheURhdGVzKGRhdGUuZGF0ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaXNXZWVrZW5kKGRhdGU6IEFYRGF0ZVRpbWUpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHdlZWtlbmQgPSBBWENvbmZpZy5nZXQoXHJcbiAgICAgIGBkYXRlVGltZS5jYWxlbmRhcnMuJHt0aGlzLnR5cGV9LndlZWtlbmRgXHJcbiAgICApIGFzIG51bWJlcltdO1xyXG4gICAgcmV0dXJuIHdlZWtlbmQuaW5jbHVkZXMoZGF0ZS5kYXlPZldlZWspO1xyXG4gIH1cclxuXHJcbiAgLy8gcHJvdGVjdGVkIF9waWNrZXJEYXlzOiBudW1iZXJbXSA9IFtdO1xyXG4gIC8vIHByb3RlY3RlZCBfcGlja2VyTW9udGhzOiB7IHRleHQ6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9W10gPSBbXTtcclxuICAvLyBwcm90ZWN0ZWQgX3BpY2tlclllYXJzOiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICAvLyBwcml2YXRlIF9nZW5lcmF0ZVBpY2tlckl0ZW1zKHZpZXcpIHtcclxuICAvLyAgIHN3aXRjaCAodmlldykge1xyXG4gIC8vICAgICBjYXNlICd5ZWFyJzpcclxuICAvLyAgICAgICB0aGlzLl9waWNrZXJZZWFycyA9IHJhbmdlKDIwMDAsIDIwNTAsIDEpO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdtb250aCc6XHJcbiAgLy8gICAgICAgdGhpcy5fcGlja2VyTW9udGhzID0gbmV3IEFYRGF0ZVRpbWVSYW5nZShcclxuICAvLyAgICAgICAgIHRoaXMuZGlzcGxheVJhbmdlLnN0YXJ0VGltZS5zdGFydE9mKCd5ZWFyJyksXHJcbiAgLy8gICAgICAgICB0aGlzLmRpc3BsYXlSYW5nZS5zdGFydFRpbWUuZW5kT2YoJ3llYXInKVxyXG4gIC8vICAgICAgIClcclxuICAvLyAgICAgICAgIC5lbnVtdXJhdGUoJ21vbnRoJylcclxuICAvLyAgICAgICAgIC5tYXAoYyA9PiAoe1xyXG4gIC8vICAgICAgICAgICB0ZXh0OiBjLmZvcm1hdCgnTU1NJyksXHJcbiAgLy8gICAgICAgICAgIHZhbHVlOiBjLm1vbnRoT2ZZZWFyLFxyXG4gIC8vICAgICAgICAgfSkpO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBkZWZhdWx0OlxyXG4gIC8vICAgICAgIHRoaXMuX3BpY2tlckRheXMgPSBuZXcgQVhEYXRlVGltZVJhbmdlKFxyXG4gIC8vICAgICAgICAgdGhpcy5kaXNwbGF5UmFuZ2Uuc3RhcnRUaW1lLnN0YXJ0T2YoJ21vbnRoJyksXHJcbiAgLy8gICAgICAgICB0aGlzLmRpc3BsYXlSYW5nZS5zdGFydFRpbWUuZW5kT2YoJ21vbnRoJylcclxuICAvLyAgICAgICApXHJcbiAgLy8gICAgICAgICAuZW51bXVyYXRlKCdkYXknKVxyXG4gIC8vICAgICAgICAgLm1hcChjID0+IGMuZGF5T2ZNb250aCk7XHJcbiAgLy8gICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gcHJvdGVjdGVkIF9oYW5kbGVQaWNrZXJDaGFuZ2UoaXRlbTogYW55LCB2aWV3KSB7XHJcbiAgLy8gICBpZiAoIWl0ZW0pIHJldHVybjtcclxuICAvLyAgIGNvbnN0IGRhdGUgPSB0aGlzLmRpc3BsYXlSYW5nZS5zdGFydFRpbWU7XHJcbiAgLy8gICBzd2l0Y2ggKHZpZXcpIHtcclxuICAvLyAgICAgY2FzZSAneWVhcic6XHJcbiAgLy8gICAgICAgdGhpcy5fc2V0RGF0ZShkYXRlLnNldCgneWVhcicsIGl0ZW0udmFsdWUpLmRhdGUpO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdtb250aCc6XHJcbiAgLy8gICAgICAgdGhpcy5fc2V0RGF0ZShkYXRlLnNldCgnbW9udGgnLCBpdGVtLnZhbHVlLnZhbHVlKS5kYXRlKTtcclxuICAvLyAgICAgICB0aGlzLl9nZW5lcmF0ZVBpY2tlckl0ZW1zKCdkYXknKTtcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgZGVmYXVsdDpcclxuICAvLyAgICAgICB0aGlzLl9zZXREYXRlKGRhdGUuc2V0KCdkYXknLCBpdGVtLnZhbHVlKS5kYXRlKTtcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgIH1cclxuICAvLyB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImludGVyZmFjZSA9PT0gJ2NhbGVuZGFyJzsgZWxzZSBwaWNrZXJUZW1wbGF0ZVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93TmF2aWdhdGlvblwiPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLWluZm9cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVmlldyA9PSAnZGF5cyc7IGVsc2UgZWxzZVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvblwiIChjbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICB7eyBfbmF2VGV4dC5zcGxpdCgnICcpWzFdIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uXCIgKGNsaWNrKT1cIl9oYW5kbGVOYXZDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIHt7IF9uYXZUZXh0LnNwbGl0KCcgJylbMF0gfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVRlbXBsYXRlPlxyXG4gICAgICAgICAgPGJ1dHRvbiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b25cIiAoY2xpY2spPVwiX2hhbmRsZU5hdkNsaWNrKCRldmVudClcIj5cclxuICAgICAgICAgICAge3sgX25hdlRleHQgfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLWJ1dHRvbnNcIj5cclxuICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24taWNvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVByZXZDbGljaygpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb25cIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1sZWZ0JzogIXJ0bCxcclxuICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLXJpZ2h0JzogcnRsXHJcbiAgICAgICAgICAgIH1cIj48L2k+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLWljb25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVOZXh0Q2xpY2soKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uXCIgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tbGVmdCc6IHJ0bCxcclxuICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLXJpZ2h0JzogIXJ0bFxyXG4gICAgICAgICAgICB9XCI+PC9pPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1ib2R5XCI+XHJcbiAgICA8ZGl2IFtuZ1N3aXRjaF09XCJhY3RpdmVWaWV3XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid5ZWFycydcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdHMgYXgtY2FsZW5kYXItc2xvdHMteWVhclwiIFtuZ0NsYXNzXT1cInsnYXgtZGVmYXVsdCc6IWNlbGxUZW1wbGF0ZX1cIj5cclxuICAgICAgICAgIDxkaXYgdGFiaW5kZXg9XCIwXCIgKm5nRm9yPVwibGV0IHNsb3Qgb2YgX3Nsb3RzXCIgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90XCIgW25nQ2xhc3NdPVwic2xvdC5jc3NDbGFzc1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlU2xvdENsaWNrKCRldmVudCwgc2xvdClcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNlbGxUZW1wbGF0ZTsgZWxzZSB5ZWFyVHBsXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2VsbFRlbXBsYXRlO2NvbnRleHQ6IHsgJGltcGxpY2l0OiB7c2xvdDpzbG90fSB9XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjeWVhclRwbD5cclxuICAgICAgICAgICAgICA8ZGl2IFt0aXRsZV09XCJzbG90LnRvb2x0aXBcIiA+XHJcbiAgICAgICAgICAgICAgICB7eyBzbG90LnRleHQgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ21vbnRocydcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdHMgYXgtY2FsZW5kYXItc2xvdHMtbW9udGhcIiBbbmdDbGFzc109XCJ7J2F4LWRlZmF1bHQnOiFjZWxsVGVtcGxhdGV9XCI+XHJcbiAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiMFwiICpuZ0Zvcj1cImxldCBzbG90IG9mIF9zbG90c1wiICBjbGFzcz1cImF4LWNhbGVuZGFyLXNsb3RcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJzbG90LmNzc0NsYXNzXCIgKGNsaWNrKT1cIl9oYW5kbGVTbG90Q2xpY2soJGV2ZW50LCBzbG90KVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2VsbFRlbXBsYXRlOyBlbHNlIG1vbnRoVHBsXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2VsbFRlbXBsYXRlO2NvbnRleHQ6IHsgJGltcGxpY2l0OiB7c2xvdDpzbG90fSB9XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbW9udGhUcGw+XHJcbiAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwic2xvdC50b29sdGlwXCIgPlxyXG4gICAgICAgICAgICAgICAge3sgc2xvdC50ZXh0IH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItd2Vla1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZCBvZiBfZGF5TmFtZXNcIj57eyBkIH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXNsb3RzIGF4LWNhbGVuZGFyLXNsb3RzLWRheVwiIFtuZ0NsYXNzXT1cInsnYXgtZGVmYXVsdCc6IWNlbGxUZW1wbGF0ZX1cIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNsb3Qgb2YgX3Nsb3RzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90XCIgW25nQ2xhc3NdPVwic2xvdC5jc3NDbGFzc1wiICBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVNsb3RDbGljaygkZXZlbnQsIHNsb3QpXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNlbGxUZW1wbGF0ZTsgZWxzZSBkYXlUcGxcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2VsbFRlbXBsYXRlO2NvbnRleHQ6IHsgJGltcGxpY2l0OiB7c2xvdDpzbG90fSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkYXlUcGw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IFt0aXRsZV09XCJzbG90LnRvb2x0aXBcIiA+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHNsb3QudGV4dCB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1mb290ZXJcIj48L25nLWNvbnRlbnQ+XHJcbiAgPCEtLSA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItZm9vdGVyXCI+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIGNsYXNzPVwiYXgtdG9kYXktYnV0dG9uXCJcclxuICAgICAgdGFiaW5kZXg9XCItMVwiXHJcbiAgICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIFthdHRyLmRpc2FibGVkXT1cIihkaXNhYmxlZCB8fCBpc0Rpc2FibGVkKF90b2RheSk/dHJ1ZTpudWxsKVwiXHJcbiAgICAgIChjbGljayk9XCJfaGFuZGxlR29Ub2RheSgpXCJcclxuICAgICAgKm5nSWY9XCJhY3RpdmVWaWV3ID09ICdkYXlzJ1wiPlxyXG4gICAgICB7eyBfdG9kYXlUZXh0IH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj4gLS0+XHJcbjwvbmctY29udGFpbmVyPlxyXG48bmctdGVtcGxhdGUgI3BpY2tlclRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1waWNrZXJcIj4vL1RPRE86IHBpY2tlcjwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==