@fundamental-ngx/core 0.58.2-rc.0 → 0.58.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 (297) hide show
  1. package/fesm2022/fundamental-ngx-core-action-bar.mjs +26 -26
  2. package/fesm2022/fundamental-ngx-core-action-bar.mjs.map +1 -1
  3. package/fesm2022/fundamental-ngx-core-action-sheet.mjs +20 -20
  4. package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  5. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs +28 -28
  6. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs.map +1 -1
  7. package/fesm2022/fundamental-ngx-core-avatar-group.mjs +34 -34
  8. package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-core-avatar.mjs +10 -10
  10. package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-core-bar.mjs +25 -25
  12. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +10 -10
  14. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +15 -15
  16. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-core-button.mjs +15 -15
  18. package/fesm2022/fundamental-ngx-core-button.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-core-calendar.mjs +40 -40
  20. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-core-card.mjs +130 -126
  22. package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-core-carousel.mjs +19 -19
  24. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  25. package/fesm2022/fundamental-ngx-core-checkbox.mjs +7 -7
  26. package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
  27. package/fesm2022/fundamental-ngx-core-combobox.mjs +16 -16
  28. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  29. package/fesm2022/fundamental-ngx-core-content-density.mjs +25 -25
  30. package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
  31. package/fesm2022/fundamental-ngx-core-date-picker.mjs +13 -13
  32. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  33. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +13 -13
  34. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  35. package/fesm2022/fundamental-ngx-core-datetime.mjs +30 -30
  36. package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
  37. package/fesm2022/fundamental-ngx-core-dialog.mjs +64 -64
  38. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  39. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +52 -52
  40. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  41. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +13 -13
  42. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
  43. package/fesm2022/fundamental-ngx-core-facets.mjs +17 -17
  44. package/fesm2022/fundamental-ngx-core-facets.mjs.map +1 -1
  45. package/fesm2022/fundamental-ngx-core-feed-input.mjs +17 -17
  46. package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
  47. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +22 -22
  48. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  49. package/fesm2022/fundamental-ngx-core-file-uploader.mjs +16 -16
  50. package/fesm2022/fundamental-ngx-core-file-uploader.mjs.map +1 -1
  51. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +13 -13
  52. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  53. package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs +7 -7
  54. package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs.map +1 -1
  55. package/fesm2022/fundamental-ngx-core-form.mjs +70 -70
  56. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  57. package/fesm2022/fundamental-ngx-core-formatted-text.mjs +8 -8
  58. package/fesm2022/fundamental-ngx-core-formatted-text.mjs.map +1 -1
  59. package/fesm2022/fundamental-ngx-core-generic-tag.mjs +7 -7
  60. package/fesm2022/fundamental-ngx-core-generic-tag.mjs.map +1 -1
  61. package/fesm2022/fundamental-ngx-core-grid-list.mjs +47 -47
  62. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  63. package/fesm2022/fundamental-ngx-core-icon.mjs +8 -8
  64. package/fesm2022/fundamental-ngx-core-icon.mjs.map +1 -1
  65. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +19 -19
  66. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  67. package/fesm2022/fundamental-ngx-core-infinite-scroll.mjs +10 -8
  68. package/fesm2022/fundamental-ngx-core-infinite-scroll.mjs.map +1 -1
  69. package/fesm2022/fundamental-ngx-core-info-label.mjs +7 -7
  70. package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
  71. package/fesm2022/fundamental-ngx-core-inline-help.mjs +7 -7
  72. package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
  73. package/fesm2022/fundamental-ngx-core-input-group.mjs +19 -19
  74. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  75. package/fesm2022/fundamental-ngx-core-layout-grid.mjs +17 -17
  76. package/fesm2022/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  77. package/fesm2022/fundamental-ngx-core-layout-panel.mjs +31 -31
  78. package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  79. package/fesm2022/fundamental-ngx-core-link.mjs +7 -7
  80. package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
  81. package/fesm2022/fundamental-ngx-core-list.mjs +80 -80
  82. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  83. package/fesm2022/fundamental-ngx-core-menu.mjs +58 -56
  84. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-core-message-box.mjs +37 -37
  86. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  87. package/fesm2022/fundamental-ngx-core-message-page.mjs +19 -19
  88. package/fesm2022/fundamental-ngx-core-message-page.mjs.map +1 -1
  89. package/fesm2022/fundamental-ngx-core-message-strip.mjs +25 -25
  90. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  91. package/fesm2022/fundamental-ngx-core-message-toast.mjs +17 -17
  92. package/fesm2022/fundamental-ngx-core-message-toast.mjs.map +1 -1
  93. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +19 -19
  94. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
  95. package/fesm2022/fundamental-ngx-core-mobile-mode.mjs +3 -3
  96. package/fesm2022/fundamental-ngx-core-mobile-mode.mjs.map +1 -1
  97. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +22 -22
  98. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  99. package/fesm2022/fundamental-ngx-core-multi-input.mjs +15 -15
  100. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  101. package/fesm2022/fundamental-ngx-core-nested-list.mjs +40 -40
  102. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  103. package/fesm2022/fundamental-ngx-core-notification.mjs +88 -88
  104. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  105. package/fesm2022/fundamental-ngx-core-object-attribute.mjs +7 -7
  106. package/fesm2022/fundamental-ngx-core-object-attribute.mjs.map +1 -1
  107. package/fesm2022/fundamental-ngx-core-object-identifier.mjs +11 -11
  108. package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
  109. package/fesm2022/fundamental-ngx-core-object-marker.mjs +7 -7
  110. package/fesm2022/fundamental-ngx-core-object-marker.mjs.map +1 -1
  111. package/fesm2022/fundamental-ngx-core-object-number.mjs +7 -7
  112. package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
  113. package/fesm2022/fundamental-ngx-core-object-status.mjs +7 -7
  114. package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
  115. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +31 -31
  116. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  117. package/fesm2022/fundamental-ngx-core-pagination.mjs +11 -11
  118. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  119. package/fesm2022/fundamental-ngx-core-panel.mjs +19 -19
  120. package/fesm2022/fundamental-ngx-core-panel.mjs.map +1 -1
  121. package/fesm2022/fundamental-ngx-core-popover.mjs +42 -42
  122. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  123. package/fesm2022/fundamental-ngx-core-product-switch.mjs +13 -13
  124. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  125. package/fesm2022/fundamental-ngx-core-progress-indicator.mjs +7 -7
  126. package/fesm2022/fundamental-ngx-core-progress-indicator.mjs.map +1 -1
  127. package/fesm2022/fundamental-ngx-core-quick-view.mjs +37 -37
  128. package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
  129. package/fesm2022/fundamental-ngx-core-radio.mjs +7 -7
  130. package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
  131. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +10 -10
  132. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  133. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +10 -10
  134. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  135. package/fesm2022/fundamental-ngx-core-scroll-spy.mjs +7 -7
  136. package/fesm2022/fundamental-ngx-core-scroll-spy.mjs.map +1 -1
  137. package/fesm2022/fundamental-ngx-core-scrollbar.mjs +7 -7
  138. package/fesm2022/fundamental-ngx-core-scrollbar.mjs.map +1 -1
  139. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +7 -7
  140. package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  141. package/fesm2022/fundamental-ngx-core-select.mjs +20 -20
  142. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  143. package/fesm2022/fundamental-ngx-core-settings.mjs +52 -52
  144. package/fesm2022/fundamental-ngx-core-settings.mjs.map +1 -1
  145. package/fesm2022/fundamental-ngx-core-shared.mjs +3 -3
  146. package/fesm2022/fundamental-ngx-core-shared.mjs.map +1 -1
  147. package/fesm2022/fundamental-ngx-core-shellbar.mjs +88 -75
  148. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  149. package/fesm2022/fundamental-ngx-core-side-navigation.mjs +13 -13
  150. package/fesm2022/fundamental-ngx-core-side-navigation.mjs.map +1 -1
  151. package/fesm2022/fundamental-ngx-core-skeleton.mjs +12 -10
  152. package/fesm2022/fundamental-ngx-core-skeleton.mjs.map +1 -1
  153. package/fesm2022/fundamental-ngx-core-slider.mjs +10 -10
  154. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  155. package/fesm2022/fundamental-ngx-core-split-button.mjs +10 -10
  156. package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
  157. package/fesm2022/fundamental-ngx-core-status-indicator.mjs +7 -7
  158. package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  159. package/fesm2022/fundamental-ngx-core-step-input.mjs +13 -9
  160. package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
  161. package/fesm2022/fundamental-ngx-core-switch.mjs +7 -7
  162. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  163. package/fesm2022/fundamental-ngx-core-table.mjs +49 -49
  164. package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
  165. package/fesm2022/fundamental-ngx-core-tabs.mjs +52 -52
  166. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  167. package/fesm2022/fundamental-ngx-core-tests.mjs.map +1 -1
  168. package/fesm2022/fundamental-ngx-core-text.mjs +8 -8
  169. package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
  170. package/fesm2022/fundamental-ngx-core-theming.mjs +7 -7
  171. package/fesm2022/fundamental-ngx-core-theming.mjs.map +1 -1
  172. package/fesm2022/fundamental-ngx-core-tile.mjs +94 -94
  173. package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
  174. package/fesm2022/fundamental-ngx-core-time-picker.mjs +8 -8
  175. package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
  176. package/fesm2022/fundamental-ngx-core-time.mjs +11 -11
  177. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  178. package/fesm2022/fundamental-ngx-core-timeline.mjs +43 -43
  179. package/fesm2022/fundamental-ngx-core-timeline.mjs.map +1 -1
  180. package/fesm2022/fundamental-ngx-core-title.mjs +8 -8
  181. package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
  182. package/fesm2022/fundamental-ngx-core-token.mjs +19 -15
  183. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  184. package/fesm2022/fundamental-ngx-core-toolbar.mjs +47 -47
  185. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  186. package/fesm2022/fundamental-ngx-core-tree.mjs +32 -32
  187. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  188. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +37 -37
  189. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  190. package/fesm2022/fundamental-ngx-core-user-menu.mjs +64 -64
  191. package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
  192. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +13 -13
  193. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  194. package/fesm2022/fundamental-ngx-core-wizard.mjs +28 -28
  195. package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
  196. package/fesm2022/fundamental-ngx-core.mjs +4 -4
  197. package/fesm2022/fundamental-ngx-core.mjs.map +1 -1
  198. package/package.json +113 -113
  199. package/{types/fundamental-ngx-core-shellbar.d.ts → shellbar/index.d.ts} +21 -13
  200. package/{types/fundamental-ngx-core-toolbar.d.ts → toolbar/index.d.ts} +7 -8
  201. /package/{types/fundamental-ngx-core-action-bar.d.ts → action-bar/index.d.ts} +0 -0
  202. /package/{types/fundamental-ngx-core-action-sheet.d.ts → action-sheet/index.d.ts} +0 -0
  203. /package/{types/fundamental-ngx-core-avatar.d.ts → avatar/index.d.ts} +0 -0
  204. /package/{types/fundamental-ngx-core-avatar-group.d.ts → avatar-group/index.d.ts} +0 -0
  205. /package/{types/fundamental-ngx-core-avatar-group-legacy.d.ts → avatar-group-legacy/index.d.ts} +0 -0
  206. /package/{types/fundamental-ngx-core-bar.d.ts → bar/index.d.ts} +0 -0
  207. /package/{types/fundamental-ngx-core-breadcrumb.d.ts → breadcrumb/index.d.ts} +0 -0
  208. /package/{types/fundamental-ngx-core-busy-indicator.d.ts → busy-indicator/index.d.ts} +0 -0
  209. /package/{types/fundamental-ngx-core-button.d.ts → button/index.d.ts} +0 -0
  210. /package/{types/fundamental-ngx-core-calendar.d.ts → calendar/index.d.ts} +0 -0
  211. /package/{types/fundamental-ngx-core-card.d.ts → card/index.d.ts} +0 -0
  212. /package/{types/fundamental-ngx-core-carousel.d.ts → carousel/index.d.ts} +0 -0
  213. /package/{types/fundamental-ngx-core-checkbox.d.ts → checkbox/index.d.ts} +0 -0
  214. /package/{types/fundamental-ngx-core-combobox.d.ts → combobox/index.d.ts} +0 -0
  215. /package/{types/fundamental-ngx-core-content-density.d.ts → content-density/index.d.ts} +0 -0
  216. /package/{types/fundamental-ngx-core-date-picker.d.ts → date-picker/index.d.ts} +0 -0
  217. /package/{types/fundamental-ngx-core-datetime.d.ts → datetime/index.d.ts} +0 -0
  218. /package/{types/fundamental-ngx-core-datetime-picker.d.ts → datetime-picker/index.d.ts} +0 -0
  219. /package/{types/fundamental-ngx-core-dialog.d.ts → dialog/index.d.ts} +0 -0
  220. /package/{types/fundamental-ngx-core-dynamic-page.d.ts → dynamic-page/index.d.ts} +0 -0
  221. /package/{types/fundamental-ngx-core-dynamic-side-content.d.ts → dynamic-side-content/index.d.ts} +0 -0
  222. /package/{types/fundamental-ngx-core-facets.d.ts → facets/index.d.ts} +0 -0
  223. /package/{types/fundamental-ngx-core-feed-input.d.ts → feed-input/index.d.ts} +0 -0
  224. /package/{types/fundamental-ngx-core-feed-list-item.d.ts → feed-list-item/index.d.ts} +0 -0
  225. /package/{types/fundamental-ngx-core-file-uploader.d.ts → file-uploader/index.d.ts} +0 -0
  226. /package/{types/fundamental-ngx-core-fixed-card-layout.d.ts → fixed-card-layout/index.d.ts} +0 -0
  227. /package/{types/fundamental-ngx-core-flexible-column-layout.d.ts → flexible-column-layout/index.d.ts} +0 -0
  228. /package/{types/fundamental-ngx-core-form.d.ts → form/index.d.ts} +0 -0
  229. /package/{types/fundamental-ngx-core-formatted-text.d.ts → formatted-text/index.d.ts} +0 -0
  230. /package/{types/fundamental-ngx-core-generic-tag.d.ts → generic-tag/index.d.ts} +0 -0
  231. /package/{types/fundamental-ngx-core-grid-list.d.ts → grid-list/index.d.ts} +0 -0
  232. /package/{types/fundamental-ngx-core-icon.d.ts → icon/index.d.ts} +0 -0
  233. /package/{types/fundamental-ngx-core-illustrated-message.d.ts → illustrated-message/index.d.ts} +0 -0
  234. /package/{types/fundamental-ngx-core.d.ts → index.d.ts} +0 -0
  235. /package/{types/fundamental-ngx-core-infinite-scroll.d.ts → infinite-scroll/index.d.ts} +0 -0
  236. /package/{types/fundamental-ngx-core-info-label.d.ts → info-label/index.d.ts} +0 -0
  237. /package/{types/fundamental-ngx-core-inline-help.d.ts → inline-help/index.d.ts} +0 -0
  238. /package/{types/fundamental-ngx-core-input-group.d.ts → input-group/index.d.ts} +0 -0
  239. /package/{types/fundamental-ngx-core-layout-grid.d.ts → layout-grid/index.d.ts} +0 -0
  240. /package/{types/fundamental-ngx-core-layout-panel.d.ts → layout-panel/index.d.ts} +0 -0
  241. /package/{types/fundamental-ngx-core-link.d.ts → link/index.d.ts} +0 -0
  242. /package/{types/fundamental-ngx-core-list.d.ts → list/index.d.ts} +0 -0
  243. /package/{types/fundamental-ngx-core-menu.d.ts → menu/index.d.ts} +0 -0
  244. /package/{types/fundamental-ngx-core-message-box.d.ts → message-box/index.d.ts} +0 -0
  245. /package/{types/fundamental-ngx-core-message-page.d.ts → message-page/index.d.ts} +0 -0
  246. /package/{types/fundamental-ngx-core-message-strip.d.ts → message-strip/index.d.ts} +0 -0
  247. /package/{types/fundamental-ngx-core-message-toast.d.ts → message-toast/index.d.ts} +0 -0
  248. /package/{types/fundamental-ngx-core-micro-process-flow.d.ts → micro-process-flow/index.d.ts} +0 -0
  249. /package/{types/fundamental-ngx-core-mobile-mode.d.ts → mobile-mode/index.d.ts} +0 -0
  250. /package/{types/fundamental-ngx-core-multi-combobox.d.ts → multi-combobox/index.d.ts} +0 -0
  251. /package/{types/fundamental-ngx-core-multi-input.d.ts → multi-input/index.d.ts} +0 -0
  252. /package/{types/fundamental-ngx-core-nested-list.d.ts → nested-list/index.d.ts} +0 -0
  253. /package/{types/fundamental-ngx-core-notification.d.ts → notification/index.d.ts} +0 -0
  254. /package/{types/fundamental-ngx-core-object-attribute.d.ts → object-attribute/index.d.ts} +0 -0
  255. /package/{types/fundamental-ngx-core-object-identifier.d.ts → object-identifier/index.d.ts} +0 -0
  256. /package/{types/fundamental-ngx-core-object-marker.d.ts → object-marker/index.d.ts} +0 -0
  257. /package/{types/fundamental-ngx-core-object-number.d.ts → object-number/index.d.ts} +0 -0
  258. /package/{types/fundamental-ngx-core-object-status.d.ts → object-status/index.d.ts} +0 -0
  259. /package/{types/fundamental-ngx-core-overflow-layout.d.ts → overflow-layout/index.d.ts} +0 -0
  260. /package/{types/fundamental-ngx-core-pagination.d.ts → pagination/index.d.ts} +0 -0
  261. /package/{types/fundamental-ngx-core-panel.d.ts → panel/index.d.ts} +0 -0
  262. /package/{types/fundamental-ngx-core-popover.d.ts → popover/index.d.ts} +0 -0
  263. /package/{types/fundamental-ngx-core-product-switch.d.ts → product-switch/index.d.ts} +0 -0
  264. /package/{types/fundamental-ngx-core-progress-indicator.d.ts → progress-indicator/index.d.ts} +0 -0
  265. /package/{types/fundamental-ngx-core-quick-view.d.ts → quick-view/index.d.ts} +0 -0
  266. /package/{types/fundamental-ngx-core-radio.d.ts → radio/index.d.ts} +0 -0
  267. /package/{types/fundamental-ngx-core-rating-indicator.d.ts → rating-indicator/index.d.ts} +0 -0
  268. /package/{types/fundamental-ngx-core-resizable-card-layout.d.ts → resizable-card-layout/index.d.ts} +0 -0
  269. /package/{types/fundamental-ngx-core-scroll-spy.d.ts → scroll-spy/index.d.ts} +0 -0
  270. /package/{types/fundamental-ngx-core-scrollbar.d.ts → scrollbar/index.d.ts} +0 -0
  271. /package/{types/fundamental-ngx-core-segmented-button.d.ts → segmented-button/index.d.ts} +0 -0
  272. /package/{types/fundamental-ngx-core-select.d.ts → select/index.d.ts} +0 -0
  273. /package/{types/fundamental-ngx-core-settings.d.ts → settings/index.d.ts} +0 -0
  274. /package/{types/fundamental-ngx-core-shared.d.ts → shared/index.d.ts} +0 -0
  275. /package/{types/fundamental-ngx-core-side-navigation.d.ts → side-navigation/index.d.ts} +0 -0
  276. /package/{types/fundamental-ngx-core-skeleton.d.ts → skeleton/index.d.ts} +0 -0
  277. /package/{types/fundamental-ngx-core-slider.d.ts → slider/index.d.ts} +0 -0
  278. /package/{types/fundamental-ngx-core-split-button.d.ts → split-button/index.d.ts} +0 -0
  279. /package/{types/fundamental-ngx-core-status-indicator.d.ts → status-indicator/index.d.ts} +0 -0
  280. /package/{types/fundamental-ngx-core-step-input.d.ts → step-input/index.d.ts} +0 -0
  281. /package/{types/fundamental-ngx-core-switch.d.ts → switch/index.d.ts} +0 -0
  282. /package/{types/fundamental-ngx-core-table.d.ts → table/index.d.ts} +0 -0
  283. /package/{types/fundamental-ngx-core-tabs.d.ts → tabs/index.d.ts} +0 -0
  284. /package/{types/fundamental-ngx-core-tests.d.ts → tests/index.d.ts} +0 -0
  285. /package/{types/fundamental-ngx-core-text.d.ts → text/index.d.ts} +0 -0
  286. /package/{types/fundamental-ngx-core-theming.d.ts → theming/index.d.ts} +0 -0
  287. /package/{types/fundamental-ngx-core-tile.d.ts → tile/index.d.ts} +0 -0
  288. /package/{types/fundamental-ngx-core-time.d.ts → time/index.d.ts} +0 -0
  289. /package/{types/fundamental-ngx-core-time-picker.d.ts → time-picker/index.d.ts} +0 -0
  290. /package/{types/fundamental-ngx-core-timeline.d.ts → timeline/index.d.ts} +0 -0
  291. /package/{types/fundamental-ngx-core-title.d.ts → title/index.d.ts} +0 -0
  292. /package/{types/fundamental-ngx-core-token.d.ts → token/index.d.ts} +0 -0
  293. /package/{types/fundamental-ngx-core-tree.d.ts → tree/index.d.ts} +0 -0
  294. /package/{types/fundamental-ngx-core-upload-collection.d.ts → upload-collection/index.d.ts} +0 -0
  295. /package/{types/fundamental-ngx-core-user-menu.d.ts → user-menu/index.d.ts} +0 -0
  296. /package/{types/fundamental-ngx-core-vertical-navigation.d.ts → vertical-navigation/index.d.ts} +0 -0
  297. /package/{types/fundamental-ngx-core-wizard.d.ts → wizard/index.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-datetime.mjs","sources":["../../../../libs/core/datetime/datetime-adapter.ts","../../../../libs/core/datetime/datetime-formats.ts","../../../../libs/core/datetime/datetime-format.pipes.ts","../../../../libs/core/datetime/datetime-utils.ts","../../../../libs/core/datetime/fd-date.utils.ts","../../../../libs/core/datetime/fd-date.ts","../../../../libs/core/datetime/fd-date-formats.ts","../../../../libs/core/datetime/fd-datetime-adapter.ts","../../../../libs/core/datetime/fd-datetime-pipes.module.ts","../../../../libs/core/datetime/fd-datetime.module.ts","../../../../libs/core/datetime/provide-date-time.ts","../../../../libs/core/datetime/fundamental-ngx-core-datetime.ts"],"sourcesContent":["import { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * Datetime Adapter is an abstract class that must be implemented by each adapter.\n * It's used to encapsulate a date/time manipulations as result\n * others places that uses it remain date type agnostic.\n *\n */\nexport abstract class DatetimeAdapter<D> {\n /**\n * Gets the year component of the given date.\n * @param date The date to extract the year from.\n * @returns The year number.\n */\n abstract getYear(date: D): number;\n\n /**\n * Gets the month of the given date.\n * @param date The date to extract the month from.\n * @returns The month number (min 1, max 12).\n */\n abstract getMonth(date: D): number;\n\n /**\n * Gets the day of month of the given date.\n * @param date The date to extract the date of the month from.\n * @returns The date number (min 1, max 31).\n */\n abstract getDate(date: D): number;\n\n /**\n * Gets the day of the week component of the given date.\n * @param date The date to extract the day of the week from.\n * @returns The day of week number (min 1, max 7, 1 = Sunday).\n */\n abstract getDayOfWeek(date: D): number;\n\n /**\n * Gets hours of the given date.\n * @param date The date to extract the hours from.\n * @returns The hours number (min 0, max 23).\n */\n abstract getHours(date: D): number;\n\n /**\n * Gets minutes of the given date.\n * @param date The date to extract the minutes from.\n * @returns The minutes number (min 0, max 59).\n */\n abstract getMinutes(date: D): number;\n\n /**\n * Gets seconds of the given date.\n * @param date The date to extract the seconds from.\n * @returns The seconds number (min 0, max 59).\n */\n abstract getSeconds(date: D): number;\n\n /**\n * Set hours.\n * @param date The date to set hours to.\n * @param hours\n * @returns The new date instance.\n */\n abstract setHours(date: D, hours: number): D;\n\n /**\n * Set minutes.\n * @param date The date to set minutes to.\n * @param minutes\n * @returns The new date instance.\n */\n abstract setMinutes(date: D, minutes: number): D;\n\n /**\n * Set seconds.\n * @param date The date to set seconds to.\n * @param seconds\n * @returns The new date instance.\n */\n abstract setSeconds(date: D, seconds: number): D;\n\n /**\n * Gets week number of the given date\n * @param date The date to extract the week number from.\n * @returns The week number (min 1, max 53).\n */\n abstract getWeekNumber(date: D): number;\n\n /**\n * Gets a list of names for the months.\n * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n * @returns An ordered list of all month names, starting with January.\n */\n abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets a list of names for the dates of the month.\n * @returns An ordered list of all date of the month names, starting with '1'.\n */\n abstract getDateNames(): string[];\n\n /**\n * Gets a list of names for the days of the week.\n * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n * @returns An ordered list of all weekday names, starting with Sunday.\n */\n abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets the name for the year of the given date.\n * @param date The date to get the year name from.\n * @returns The name of the given year (e.g. '2020').\n */\n abstract getYearName(date: D): string;\n\n /**\n * Gets the name for the week of the given date.\n * @param date The date to get the week name from.\n * @returns The name of the the week.\n */\n abstract getWeekName(date: D): string;\n\n /**\n * Gets a list of hour names.\n * @returns An ordered list of all hours (0 - 24).\n */\n abstract getHourNames(options: { twoDigit: boolean; meridian: boolean }): string[];\n\n /**\n * Gets a list of minute names.\n * @param options Configuration options for minute names\n * @param options.twoDigit Whether to format minutes with two digits (e.g., '05' vs '5')\n * @param options.minuteStep The interval between minutes (e.g., 1 for every minute, 5 for 5-minute intervals, 15 for 15-minute intervals). Defaults to 1.\n * @returns An ordered list of minute names based on the step interval.\n */\n abstract getMinuteNames(options: { twoDigit: boolean; minuteStep?: number }): string[];\n\n /**\n * Gets a list of second names.\n * @returns An ordered list of all hours (0 - 24).\n */\n abstract getSecondNames(options: { twoDigit: boolean }): string[];\n\n /**\n * Gets a list of day periods.\n * @returns List of day periods, starts from AM ['AM', 'PM'].\n */\n abstract getDayPeriodNames(): [string, string];\n\n /**\n * Gets the first day of the week.\n * @returns The first day of the week (0-indexed, 0 = Sunday).\n */\n abstract getFirstDayOfWeek(): number;\n\n /**\n * Gets the number of days in the month of the given date.\n * @param date The date whose month should be checked.\n * @returns The number of days in the month of the given date.\n */\n abstract getNumDaysInMonth(date: D): number;\n\n /**\n * Parses a date from a user-provided value.\n * @param value The value to parse.\n * @param parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n * @returns The parsed date.\n */\n abstract parse(value: unknown, parseFormat: unknown): D | null;\n\n /**\n * Formats a date as a string according to the given format.\n * @param date The value to format.\n * @param displayFormat The format to use to display the date as a string.\n * @returns The formatted date string.\n */\n abstract format(date: Nullable<D>, displayFormat: unknown): string;\n\n /**\n * Creates a date with the given year, month, and date.\n * @param year The full year of the date. (e.g. 1989).\n * @param month The month of the date (1 = January). Must be an integer 1 - 12.\n * @param date The month date. Must be an integer 1 - length of the given month.\n * @returns The new date, or null if invalid.\n */\n abstract createDate(year: number, month?: number, date?: number): D;\n\n /**\n * Gets today's date where time value is set to 0\n * @returns Today's date.\n */\n abstract today(): D;\n\n /**\n * Gets date and time at this moment.\n * @returns date and time at this moment.\n */\n abstract now(): D;\n\n /**\n * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n * calendar for each year and then finding the closest date in the new month. For example when\n * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n * @param date The date to add years to.\n * @param years The number of years to add (may be negative).\n * @returns A new date equal to the given one with the specified number of years added.\n */\n abstract addCalendarYears(date: D, years: number): D;\n\n /**\n * Adds the given number of months to the date. Months are counted as if flipping a page on the\n * calendar for each month and then finding the closest date in the new month. For example when\n * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n * @param date The date to add months to.\n * @param months The number of months to add (may be negative).\n * @returns A new date equal to the given one with the specified number of months added.\n */\n abstract addCalendarMonths(date: D, months: number): D;\n\n /**\n * Adds the given number of days to the date. Days are counted as if moving one cell on the\n * calendar for each day.\n * @param date The date to add days to.\n * @param days The number of days to add (may be negative).\n * @returns A new date equal to the given one with the specified number of days added.\n */\n abstract addCalendarDays(date: D, days: number): D;\n\n /**\n * Clones the given date.\n * @param date The date to clone\n * @returns A new date equal to the given date.\n */\n abstract clone(date: D): D;\n\n /**\n * Method that check equality of 2 dates.\n * Does not take into account time value\n * @param date1 The first date to compare with\n * @param date2 The second date to compare with\n * @returns If dates are equal or not\n */\n abstract datesEqual(date1: Nullable<D>, date2: Nullable<D>): boolean;\n\n /**\n * Method that check equality of 2 dates taking into account time value as well\n * @param date1 The first date to compare with\n * @param date2 The second date to compare with\n * @returns If dates are equal or not\n */\n abstract dateTimesEqual(date1: Nullable<D>, date2: Nullable<D>): boolean;\n\n /**\n * Method to check if date is between 2 dates\n * @param dateToCheck The date to check if it's in a range\n * @param startDate The start date of a range\n * @param endDate The end date of a range\n * @returns If date is in a given date range\n */\n abstract isBetween(dateToCheck: D, startDate: D, endDate: D): boolean;\n\n /**\n * Method that checks validity of current date.\n * @param date The date to be checked\n */\n abstract isValid(date: Nullable<D>): date is D;\n\n /**\n * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n * This method is used to generate date strings that are compatible with native HTML attributes\n * such as the `min` or `max` attribute of an `<input>`.\n * @param date The date to get the ISO date string for.\n * @returns The ISO date string date string.\n */\n abstract toIso8601(date: D): string;\n\n /**\n * Format option includes period info.\n * @param displayFormat The format to use to display the date as a string.\n * @returns If time format includes period info.\n */\n abstract isTimeFormatIncludesDayPeriod(displayFormat: unknown): boolean;\n\n /**\n * Format option includes hours info.\n * @param displayFormat The format to use to display the date as a string.\n * @returns If time format includes minutes info.\n */\n abstract isTimeFormatIncludesHours(displayFormat: unknown): boolean;\n\n /**\n * Format option includes minutes info.\n * @param displayFormat The format to use to display the date as a string.\n * @returns If time format includes minutes info.\n */\n abstract isTimeFormatIncludesMinutes(displayFormat: unknown): boolean;\n\n /**\n * Format option includes seconds info.\n * @param displayFormat The format to use to display the date as a string.\n * @returns If time format includes seconds info.\n */\n abstract isTimeFormatIncludesSeconds(displayFormat: unknown): boolean;\n\n /**\n * @param date The date being referenced.\n * @returns String representing how much time has passed since the date param.\n */\n abstract fromNow?(date: D): string;\n\n /** locale changes stream */\n readonly localeChanges: Observable<void>;\n\n /** current locale */\n protected locale: string;\n\n /** @hidden */\n private _localeChanges: Subject<void> = new Subject();\n\n protected constructor() {\n this.localeChanges = this._localeChanges.asObservable();\n }\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale: string): void {\n this.locale = locale;\n this._localeChanges.next();\n }\n\n /**\n * Set hours, minutes and seconds at once.\n * @param date The date to set time to.\n * @param hours\n * @param minutes\n * @param seconds\n * @returns The new date instance.\n */\n setTime(date: D, hours: number, minutes: number, seconds: number): D {\n date = this.setHours(date, hours);\n date = this.setMinutes(date, minutes);\n date = this.setSeconds(date, seconds);\n return date;\n }\n\n /**\n * Get Amount of weeks in given month/year\n * @param year The year of the date\n * @param month The month of the date\n * @param firstDayOfWeek The first day of week. 1 - Sunday, 2 - Monday...\n * @returns Number of weeks in the given month\n */\n getAmountOfWeeks(year: number, month: number, firstDayOfWeek: number): number {\n const firstOfMonth = new Date(year, month - 1, 1);\n const lastOfMonth = new Date(year, month, 0);\n\n const dayOffset = (firstOfMonth.getDay() - firstDayOfWeek + 8) % 7;\n const used = dayOffset + lastOfMonth.getDate();\n\n return Math.ceil(used / 7);\n }\n\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first: D, second: D): number {\n return (\n this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second) ||\n this.getHours(first) - this.getHours(second) ||\n this.getMinutes(first) - this.getMinutes(second) ||\n this.getSeconds(first) - this.getSeconds(second)\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * DateTimeFormats is intended to keep options\n * related to date-time formatting / parsing\n *\n */\nexport interface DateTimeFormats {\n parse: {\n dateInput: unknown;\n timeInput: unknown;\n dateTimeInput: unknown;\n };\n display: {\n dateInput: unknown;\n timeInput: unknown;\n dateTimeInput: unknown;\n\n dateA11yLabel: unknown;\n monthA11yLabel: unknown;\n yearA11yLabel: unknown;\n };\n rangeDelimiter: string;\n}\n\n/**\n * DateTimeFormats injection token\n */\nexport const DATE_TIME_FORMATS = new InjectionToken<DateTimeFormats>('date-formats');\n","import { Inject, Optional, Pipe, PipeTransform, Signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FD_LANGUAGE, FdLanguage, FdLanguageKeyIdentifier, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { Observable } from 'rxjs';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS, DateTimeFormats } from './datetime-formats';\n\n@Pipe({\n name: 'dateFormat',\n standalone: true\n})\nexport class DateFormatPipe<D> implements PipeTransform {\n /** @hidden */\n constructor(\n private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {}\n\n /** Format date object */\n transform(date: D, noDateMessage = ''): string {\n if (date) {\n return this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateInput);\n } else {\n return noDateMessage;\n }\n }\n}\n\n@Pipe({\n name: 'dateTimeFormat',\n standalone: true\n})\nexport class DateTimeFormatPipe<D> implements PipeTransform {\n /** @hidden */\n constructor(\n private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {}\n\n /** Format date object */\n transform(date: D, noDateMessage = ''): string {\n if (date) {\n return this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateTimeInput);\n } else {\n return noDateMessage;\n }\n }\n}\n\n@Pipe({\n name: 'dateFromNow',\n standalone: true\n})\nexport class DateFromNowPipe<D> implements PipeTransform {\n /** @hidden */\n constructor(private _dateTimeAdapter: DatetimeAdapter<D>) {}\n\n /** Format date object */\n transform(date: D, noDateMessage = ''): string {\n if (this._dateTimeAdapter.fromNow && typeof this._dateTimeAdapter.fromNow === 'function') {\n if (date) {\n return this._dateTimeAdapter.fromNow(date);\n } else {\n return noDateMessage;\n }\n } else {\n console.warn('No fromNow function provided to the DatetimeAdapter');\n return '';\n }\n }\n}\n\n@Pipe({\n name: 'dayPeriodFormat',\n standalone: true\n})\nexport class DayPeriodFormatPipe<D> implements PipeTransform {\n /** @hidden */\n constructor(\n private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {}\n\n /** Format date object for day period */\n transform(date: D, customFormat: any = {}, noDateMessage = ''): string {\n if (!date) {\n return noDateMessage;\n }\n\n return this._dateTimeAdapter.format(date, customFormat);\n }\n}\n\n@Pipe({\n name: 'translateDayPeriod',\n standalone: true,\n pure: false // required to update the value when the observable is resolved\n})\nexport class TranslateDayPeriodPipe implements PipeTransform {\n /** @hidden */\n private readonly _translationResolver = new TranslationResolver();\n\n /** Signal that will hold the current language */\n private readonly _currentLanguageSignal: Signal<FdLanguage>;\n\n /** @hidden */\n constructor(@Inject(FD_LANGUAGE) private _language$: Observable<FdLanguage>) {\n this._currentLanguageSignal = toSignal(this._language$, { initialValue: {} as FdLanguage });\n }\n\n /** Format date object for day period */\n transform(value: string | null): string | null {\n if (!value) {\n return value;\n }\n\n const dayPeriodPattern = /(coreTime\\.\\w+Label)/;\n const match = value.match(dayPeriodPattern);\n\n if (match?.[0]) {\n const currentLanguage = this._currentLanguageSignal();\n const translatedValue = this._translationResolver.resolve(\n currentLanguage,\n match[0] as FdLanguageKeyIdentifier\n );\n return translatedValue ? value.replace(dayPeriodPattern, translatedValue) : value;\n }\n\n // If no day period pattern is found, return the original value\n return value;\n }\n}\n","/**\n * Converts a given time string to a desired format.\n *\n * @param {string} inputStr - The input time string to be converted.\n * @returns {string} - The converted time string in the desired format.\n */\nexport function convertToDesiredFormat(inputStr: string): string {\n const dayPeriodMapping = {\n morning: 0,\n afternoon: 12,\n evening: 12,\n night: 0\n };\n\n const dayPeriodPattern = /\\b(morning|afternoon|evening|night)\\b/;\n const amPmPattern = /\\b(AM|PM)\\b/i;\n\n const convertDayPeriod = (input: string): string => {\n const match = input.match(dayPeriodPattern);\n if (match) {\n const period = match[0].toLowerCase();\n const timeShift = dayPeriodMapping[period];\n input = input.replace(dayPeriodPattern, '').trim();\n const timeMatch = input.match(/\\d{1,2}:\\d{2}/);\n if (timeMatch) {\n const [hoursStr, minutesStr] = timeMatch[0].split(':');\n let hours = Number(hoursStr);\n const minutes = Number(minutesStr);\n hours = (hours % 12) + timeShift;\n input = input.replace(\n timeMatch[0],\n `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`\n );\n }\n }\n return input;\n };\n\n const convertAmPm = (input: string): string => {\n const match = input.match(amPmPattern);\n if (match) {\n const period = match[0].toUpperCase();\n input = input.replace(amPmPattern, '').trim();\n const timeMatch = input.match(/\\d{1,2}:\\d{2}/);\n if (timeMatch) {\n const [hoursStr, minutesStr] = timeMatch[0].split(':');\n let hours = Number(hoursStr);\n const minutes = Number(minutesStr);\n if (period === 'PM' && hours < 12) {\n hours += 12;\n }\n if (period === 'AM' && hours === 12) {\n hours = 0;\n }\n input = input.replace(\n timeMatch[0],\n `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`\n );\n }\n }\n return input;\n };\n\n inputStr = convertDayPeriod(inputStr);\n inputStr = convertAmPm(inputStr);\n\n return inputStr.replace(/\\bat\\b/i, '').trim();\n}\n","/** Generate range of given lengths using given function. */\nexport function range<T>(length: number, mapFn: (index: number) => T): T[] {\n return Array.from(new Array(length)).map((_, index) => mapFn(index));\n}\n\n/** Adds 0 if number is less then 10 */\nexport function _leftPad(n: number): string {\n return n === n % 10 ? `0${n}` : `${n}`;\n}\n\n/** Converts date to ISO8601 */\nexport function toIso8601(fdDate: {\n year: number;\n month: number;\n day: number;\n hour: number;\n minute: number;\n second: number;\n}): string {\n return [\n [fdDate.year, _leftPad(fdDate.month), _leftPad(fdDate.day)].join('-'),\n 'T',\n [_leftPad(fdDate.hour), _leftPad(fdDate.minute), _leftPad(fdDate.second)].join(':')\n ].join('');\n}\n\n/**\n * @param params e.g. { year: 2020, month: 1, day: 1, hour: 0, minute: 0, second: 0 }\n */\nexport function isValidByParams(params: {\n year: number;\n month: number;\n day?: number;\n hour?: number;\n minute?: number;\n second?: number;\n}): boolean {\n const { year, month, day, hour, minute, second } = params;\n if (\n !undefinedOrInRange(month, 1, 12) ||\n !undefinedOrInRange(day, 1, 31) ||\n !undefinedOrInRange(hour, 0, 23) ||\n !undefinedOrInRange(minute, 0, 59) ||\n !undefinedOrInRange(second, 0, 59)\n ) {\n return false;\n }\n if (!isNaN(year) && !isNaN(month) && day != null && !isNaN(day)) {\n const tempDate = new Date(year, month - 1, day);\n if (tempDate.getMonth() + 1 !== month) {\n return false;\n }\n }\n const date = new Date(year, month - 1, day, hour, minute, second);\n return !Number.isNaN(date.getTime());\n}\n\nfunction undefinedOrInRange(value: number | undefined, from: number, to: number): boolean {\n return value == null || (value >= from && value <= to);\n}\n","import { INVALID_DATE_ERROR } from '@fundamental-ngx/cdk/utils';\nimport { isValidByParams, toIso8601 } from './fd-date.utils';\n\n/**\n * FdDate class is used to represent date and time.\n *\n * It's a simplified analog of native Date instance.\n * It gives some convenience methods to work with date or time data.\n *\n */\nexport class FdDate {\n /**\n * The year of the date.\n */\n year: number;\n\n /**\n * The month of the date. 1 = January, 12 = December.\n */\n month: number;\n\n /**\n * Day of the date. Starts at 1.\n */\n day: number;\n\n /**\n * Date hours. 0 - 23.\n */\n hour: number;\n\n /**\n * Date minutes. 0 - 59.\n */\n minute: number;\n\n /**\n * Date seconds. 0 - 59.\n */\n second: number;\n\n /**\n * Validation state\n */\n /** @hidden */\n private _isValid: boolean;\n\n /**\n * Create FdDate\n * @param year e.g. 2020\n * @param month 1 = January, 12 = December\n * @param day 1 - 31\n * @param hour 0 - 23\n * @param minute 0 - 59\n * @param second 0 - 59\n */\n constructor(\n year?: number,\n month: number = 1,\n day: number = 1,\n hour: number = 0,\n minute: number = 0,\n second: number = 0\n ) {\n if (year === undefined) {\n return FdDate.getNow();\n }\n\n year = Number.parseInt(year + '', 10);\n month = Number.parseInt(month + '', 10);\n day = Number.parseInt(day + '', 10);\n hour = Number.parseInt(hour + '', 10);\n minute = Number.parseInt(minute + '', 10);\n second = Number.parseInt(second + '', 10);\n\n this._isValid = isValidByParams({\n year,\n month,\n day,\n hour,\n minute,\n second\n });\n\n this.year = this._isValid ? year : NaN;\n this.month = this._isValid ? month : NaN;\n this.day = this._isValid ? day : NaN;\n this.hour = this._isValid ? hour : NaN;\n this.minute = this._isValid ? minute : NaN;\n this.second = this._isValid ? second : NaN;\n\n return this;\n }\n\n /**\n * Create FdDate instance of the current moment\n */\n static getNow(): FdDate {\n return FdDate.getFdDateByDate(new Date());\n }\n\n /**\n * Gets today's FdDate where hour, minute and second is set to 0\n */\n static getToday(): FdDate {\n return FdDate.getNow().setTime(0, 0, 0);\n }\n\n /**\n * Convert js date object to FdDate model\n */\n static getFdDateByDate(date: Date): FdDate {\n return new FdDate(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds()\n );\n }\n\n /**\n * Set hour, minute and second data\n * @param hour\n * @param minute\n * @param second\n */\n setTime(hour: number, minute?: number, second?: number): FdDate {\n this._isValid = isValidByParams({\n year: this.year,\n month: this.month,\n day: this.day,\n hour,\n minute,\n second\n });\n\n if (!this._isValid) {\n this.hour = NaN;\n this.minute = NaN;\n this.second = NaN;\n } else {\n this.hour = hour || hour === 0 ? hour : this.hour;\n this.minute = minute || minute === 0 ? minute : this.minute;\n this.second = second || second === 0 ? second : this.second;\n }\n\n return this;\n }\n\n /**\n * Get amount of milliseconds from 01.01.1970\n */\n getTimeStamp(): number {\n return this.toDate().getTime();\n }\n\n /**\n * Get number of weekday ex. Sunday = 1, Monday = 2, Tuesday = 3 etc.\n */\n getDayOfWeek(): number {\n return this.toDate().getDay() + 1;\n }\n\n /**\n * Get native date object from FdDate.\n */\n toDate(): Date {\n // We have stricter validation rules than Date object.\n // For example, Date allows values for month=100 or for day=100.\n // Therefore, we need to do this trick for the consistency of the validation status\n if (!this.isDateValid()) {\n return new Date(NaN);\n }\n return new Date(this.year, this.month - 1, this.day, this.hour, this.minute, this.second);\n }\n\n /**\n * Method that checks validity of current FdDate instance.\n */\n isDateValid(): boolean {\n return this instanceof FdDate && this._isValid;\n }\n\n /**\n * Get string representation in yyyy-mm-ddThh:mm:ss format\n */\n toString(): string {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n\n return toIso8601(this);\n }\n\n /**\n * The valueOf() method returns the primitive value of a FdDate.\n * Returns: The number of milliseconds between 1 January 1970 00:00:00 UTC and the given date.\n */\n valueOf(): number {\n return this.getTimeStamp();\n }\n\n /**\n * Get date string in yyyy-mm-dd format\n */\n toDateString(): string {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n\n return toIso8601(this).split('T')[0];\n }\n\n /**\n * Get time string in hh:mm:ss format\n */\n toTimeString(): string {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n return toIso8601(this).split('T')[1];\n }\n}\n","import { DateTimeFormats } from './datetime-formats';\n\nconst dateInput = { year: 'numeric', month: 'numeric', day: 'numeric' };\nconst timeInput = { hour: 'numeric', minute: '2-digit' };\nconst dateTimeInput = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit'\n};\n\nexport const FD_DATETIME_FORMATS: DateTimeFormats = {\n parse: {\n dateInput,\n timeInput,\n dateTimeInput\n },\n display: {\n dateInput,\n timeInput,\n dateTimeInput,\n\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthA11yLabel: { month: 'long', year: 'numeric' },\n yearA11yLabel: { year: 'numeric' }\n },\n rangeDelimiter: ' - '\n};\n","import { Platform } from '@angular/cdk/platform';\nimport { Inject, Injectable, LOCALE_ID, Optional } from '@angular/core';\n\nimport { INVALID_DATE_ERROR, LETTERS_UNICODE_RANGE } from '@fundamental-ngx/cdk/utils';\n\nimport { FdLanguageKeyIdentifier } from '@fundamental-ngx/i18n';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { FdDate } from './fd-date';\nimport { range, toIso8601 } from './fd-date.utils';\n\nconst AM_DAY_PERIOD_DEFAULT = 'AM';\nconst PM_DAY_PERIOD_DEFAULT = 'PM';\n\ntype CustomDateTimeFormatOptions = Omit<Intl.DateTimeFormatOptions, 'dayPeriod'> & {\n dayPeriod?: boolean;\n};\n\n/**\n * DatetimeAdapter implementation based on FdDate.\n *\n * This uses FdDate as a date model and relies on Intl.DateTimeFormat\n * for formatting and translation purposes.\n *\n */\n@Injectable()\nexport class FdDatetimeAdapter extends DatetimeAdapter<FdDate> {\n /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n private readonly _fixYearsRangeIssue: boolean;\n\n /** @hidden */\n constructor(@Optional() @Inject(LOCALE_ID) localeId: string, platform: Platform) {\n super();\n super.setLocale(localeId);\n this._fixYearsRangeIssue = platform.TRIDENT || platform.EDGE;\n }\n\n /** @hidden */\n fromNow?(date: FdDate): string;\n\n /** Get year */\n getYear(date: FdDate): number {\n return date.year;\n }\n\n /** Get month */\n getMonth(date: FdDate): number {\n return date.month;\n }\n\n /** Get date */\n getDate(date: FdDate): number {\n return date.day;\n }\n\n /** Get day of week */\n getDayOfWeek(date: FdDate): number {\n return this._createDateInstanceByFdDate(date).getDay() + 1;\n }\n\n /** Get hours */\n getHours(date: FdDate): number {\n return date.hour;\n }\n\n /** Get minutes */\n getMinutes(date: FdDate): number {\n return date.minute;\n }\n\n /** Get seconds */\n getSeconds(date: FdDate): number {\n return date.second;\n }\n\n /** Get week number */\n getWeekNumber(fdDate: FdDate): number {\n const date = this._createDateInstanceByFdDate(fdDate);\n\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n\n // January 4 is always in week 1.\n const firstWeek = new Date(date.getFullYear(), 0, 4);\n\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (\n 1 + Math.round(((date.getTime() - firstWeek.getTime()) / 86400000 - 3 + ((firstWeek.getDay() + 6) % 7)) / 7)\n );\n }\n\n /** Get month names */\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\n return range(12, (i) =>\n this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, i, 1)))\n );\n }\n\n /** Get date names */\n getDateNames(): string[] {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { day: 'numeric', timeZone: 'utc' });\n return range(31, (i) =>\n this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, 0, i + 1)))\n );\n }\n\n /** Get day of week names */\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { weekday: style, timeZone: 'utc' });\n return range(7, (i) =>\n this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, 0, i + 1)))\n );\n }\n\n /** Get year name */\n getYearName(date: FdDate): string {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { year: 'numeric', timeZone: 'utc' });\n const dateInstance = this._createDateInstanceByFdDate(date);\n return this._stripDirectionalityCharacters(this._format(dateTimeFormat, dateInstance));\n }\n\n /** Get week name */\n getWeekName(date: FdDate): string {\n const weekNumber = this.getWeekNumber(date);\n return weekNumber.toLocaleString(this.locale);\n }\n\n /** Get hour names */\n getHourNames({ meridian, twoDigit }: { twoDigit: boolean; meridian: boolean }): string[] {\n return range(24, (hour) => {\n if (meridian) {\n hour = hour === 0 || hour === 12 ? 12 : hour % 12;\n }\n return hour.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 });\n });\n }\n\n /** Get minute names */\n getMinuteNames({ twoDigit, minuteStep = 1 }: { twoDigit: boolean; minuteStep?: number }): string[] {\n const length = Math.ceil(60 / minuteStep);\n return range(length, (index) => {\n const minute = index * minuteStep;\n return minute.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 });\n });\n }\n\n /** Get second names */\n getSecondNames({ twoDigit }: { twoDigit: boolean }): string[] {\n return range(60, (second) => second.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 }));\n }\n\n /** Get day period names */\n getDayPeriodNames(): [string, string] {\n const DEFAULT_PERIODS: [string, string] = [AM_DAY_PERIOD_DEFAULT, PM_DAY_PERIOD_DEFAULT];\n\n const formatter = new Intl.DateTimeFormat(this.locale, {\n hour: 'numeric',\n minute: 'numeric',\n hour12: true\n });\n\n try {\n const am = formatter.formatToParts(new Date(2020, 0, 1, 6)).find(({ type }) => type === 'dayPeriod')?.value;\n const pm = formatter\n .formatToParts(new Date(2020, 0, 1, 16))\n .find(({ type }) => type === 'dayPeriod')?.value;\n\n return am && pm ? [am, pm] : DEFAULT_PERIODS;\n } catch {\n const dayPeriodRegexp = new RegExp(`(${LETTERS_UNICODE_RANGE}+\\\\.*)+`, 'g');\n const amRegExpMatch = formatter.format(new Date(2020, 0, 1, 6)).match(dayPeriodRegexp);\n const pmRegExpMatch = formatter.format(new Date(2020, 0, 1, 16)).match(dayPeriodRegexp);\n\n return amRegExpMatch && pmRegExpMatch\n ? [amRegExpMatch[0], pmRegExpMatch[0]]\n : [AM_DAY_PERIOD_DEFAULT, PM_DAY_PERIOD_DEFAULT];\n }\n }\n\n /** Set hours */\n setHours(date: FdDate, hours: number): FdDate {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setHours(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n\n /** Set minutes */\n setMinutes(date: FdDate, hours: number): FdDate {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setMinutes(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n\n /** Set seconds */\n setSeconds(date: FdDate, hours: number): FdDate {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setSeconds(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n\n /** Get first day of week */\n getFirstDayOfWeek(): number {\n // can't retrieve this info from Intl object or Date object, default to Sunday.\n return 0;\n }\n\n /** Get number of days in a month */\n getNumDaysInMonth(fdDate: FdDate): number {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setMonth(date.getMonth() + 1);\n date.setDate(0);\n return date.getDate();\n }\n\n /** Create a date object */\n createDate(year: number, month = 1, date = 1): FdDate {\n return new FdDate(year, month, date);\n }\n\n /** Get a today date object */\n today(): FdDate {\n return FdDate.getToday();\n }\n\n /** Get a now date object */\n now(): FdDate {\n return FdDate.getNow();\n }\n\n /** Parse any value to date object */\n parse(value: any, parseFormat: Intl.DateTimeFormatOptions = {}): FdDate | null {\n if (!value && value !== 0) {\n return null;\n }\n\n if (value instanceof FdDate) {\n return this.clone(value);\n }\n /**\n * We have no way using the native JS Date to set the parse format or locale,\n * so we ignore these parameters.\n */\n let date = new Date(Date.parse(value));\n if (typeof value === 'number') {\n date = new Date(value);\n }\n\n // Check if we are dealing with a time string\n if (\n Number.isNaN(date.valueOf()) &&\n typeof value === 'string' &&\n !parseFormat.year &&\n !parseFormat.day &&\n !parseFormat.month &&\n parseFormat.hour\n ) {\n date = this._parseTimeString(value);\n }\n\n return this._createFdDateFromDateInstance(date);\n }\n\n /** Format date object to string */\n format(date: FdDate, displayFormat: CustomDateTimeFormatOptions): string {\n if (!this.isValid(date)) {\n return INVALID_DATE_ERROR;\n }\n\n // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n // if we attempt to format a date whose year is less than 1 or greater than 9999.\n if (this._fixYearsRangeIssue && (date.year < 1 || date.year > 9999)) {\n date = this.clone(date);\n date.year = Math.max(1, Math.min(9999, date.year));\n }\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n\n return displayFormat.dayPeriod\n ? this._formatWithDayPeriod(date, displayFormat)\n : this._formatWithIntl(date, displayFormat);\n }\n\n /** Add years to a date */\n addCalendarYears(date: FdDate, years: number): FdDate {\n return this.addCalendarMonths(date, years * 12);\n }\n\n /** Add months to a date */\n addCalendarMonths(fdDate: FdDate, months: number): FdDate {\n const date = this._createDateInstanceByFdDate(fdDate);\n\n date.setMonth(date.getMonth() + months);\n\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n if (date.getDate() !== fdDate.day) {\n date.setDate(0);\n }\n\n return this._createFdDateFromDateInstance(date);\n }\n\n /** Add days to a date */\n addCalendarDays(fdDate: FdDate, days: number): FdDate {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setDate(date.getDate() + days);\n return this._createFdDateFromDateInstance(date);\n }\n\n /** Clone a date object */\n clone(date: FdDate): FdDate {\n return new FdDate(date.year, date.month, date.day, date.hour, date.minute, date.second);\n }\n\n /** Check if date object is valid */\n isValid(date: FdDate): date is FdDate {\n if (!(date instanceof FdDate)) {\n return false;\n }\n return date.isDateValid();\n }\n\n /** Check if date between given dates */\n isBetween(dateToCheck: FdDate, startDate: FdDate, endDate: FdDate): boolean {\n const date = this._createDateInstanceByFdDate(dateToCheck);\n const start = this._createDateInstanceByFdDate(startDate);\n const end = this._createDateInstanceByFdDate(endDate);\n return date.getTime() > start.getTime() && date.getTime() < end.getTime();\n }\n\n /** Check if dates are equal */\n datesEqual(date1: FdDate, date2: FdDate): boolean {\n if (!date1 || !date2) {\n return false;\n }\n // skip time value\n const date1Str = this.toIso8601(date1).split('T')[0];\n const date2Str = this.toIso8601(date2).split('T')[0];\n return date1Str === date2Str;\n }\n\n /** Check if dates and time are equal */\n dateTimesEqual(date1: FdDate, date2: FdDate): boolean {\n if (!date1 || !date2) {\n return false;\n }\n return this.toIso8601(date1) === this.toIso8601(date2);\n }\n\n /** Format date object to ISO8601 string */\n toIso8601(fdDate: FdDate): string {\n return toIso8601(fdDate);\n }\n\n /** Check if a time format includes a day period */\n isTimeFormatIncludesDayPeriod(displayFormat: CustomDateTimeFormatOptions): boolean {\n if (typeof displayFormat?.hour12 === 'boolean') {\n return displayFormat.hour12;\n }\n const formattedDateNoPeriodOption = this.format(this.createDate(2020), displayFormat);\n const formattedDateWithPeriodOption = this.format(this.createDate(2020), { ...displayFormat, hour12: true });\n return formattedDateWithPeriodOption === formattedDateNoPeriodOption;\n }\n\n /** Check if a time format includes hours */\n isTimeFormatIncludesHours(displayFormat: Intl.DateTimeFormatOptions): boolean {\n return typeof displayFormat?.hour === 'string';\n }\n\n /** Check if a time format includes minutes */\n isTimeFormatIncludesMinutes(displayFormat: Intl.DateTimeFormatOptions): boolean {\n return typeof displayFormat?.minute === 'string';\n }\n\n /** Check if a time format includes seconds */\n isTimeFormatIncludesSeconds(displayFormat: Intl.DateTimeFormatOptions): boolean {\n return typeof displayFormat?.second === 'string';\n }\n\n /** Format with custom pattern including day period names */\n private _formatWithDayPeriod(date: FdDate, displayFormat: CustomDateTimeFormatOptions): string {\n const formattedTime = this._formatWithIntl(date, { ...displayFormat, dayPeriod: undefined });\n const dayPeriodName = this._getDayPeriodName(date);\n\n return this._insertDayPeriod(formattedTime, dayPeriodName, displayFormat);\n }\n\n /** Insert day period into the formatted string */\n private _insertDayPeriod(\n formattedTime: string,\n dayPeriodName: FdLanguageKeyIdentifier,\n displayFormat: CustomDateTimeFormatOptions\n ): string {\n if (displayFormat.year || displayFormat.month || displayFormat.day) {\n return formattedTime\n .replace(/(\\d{1,2}:\\d{2})( [AP]M)?/, `$1 ${dayPeriodName}`)\n .replace(/,\\s*(\\d{1,2}:\\d{2})/, `, at $1 ${dayPeriodName}`);\n } else {\n return formattedTime.replace(/(\\d{1,2}:\\d{2}(:\\d{2})?)/, `$1 ${dayPeriodName}`);\n }\n }\n\n /** Get day period name based on the hour */\n private _getDayPeriodName(date: FdDate): FdLanguageKeyIdentifier {\n const hour = date.hour;\n if (hour < 6) {\n return 'coreTime.nightLabel';\n } else if (hour < 12) {\n return 'coreTime.morningLabel';\n } else if (hour < 18) {\n return 'coreTime.afternoonLabel';\n } else {\n return 'coreTime.eveningLabel';\n }\n }\n\n /** Format date using Intl.DateTimeFormat */\n private _formatWithIntl(date: FdDate, displayFormat: any): string {\n const formatter = new Intl.DateTimeFormat(this.locale, displayFormat);\n const dateInstance = this._createDateInstanceByFdDate(date);\n return this._stripDirectionalityCharacters(this._format(formatter, dateInstance));\n }\n\n /**\n * @hidden\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n * @param str The string to strip direction characters from.\n * @returns The stripped string.\n */\n private _stripDirectionalityCharacters(str: string): string {\n return str.replace(/[\\u200e\\u200f]/g, '').replace(/\\u202f/g, ' ');\n }\n\n /** @hidden */\n private _format(formatter: Intl.DateTimeFormat, date: Date): string {\n if (Number.isNaN(date.valueOf())) {\n return INVALID_DATE_ERROR;\n }\n date = this._createUTCDateInstance(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n return formatter.format(date);\n }\n\n /**\n * @hidden\n * Create native Date instance from FdDate\n * @param date FdDate instance\n * @returns date Native date instance\n */\n private _createDateInstanceByFdDate(fdDate: FdDate): Date {\n const { year, month, day, hour, minute, second } = fdDate;\n // We have stricter validation rules than Date object.\n // For example, Date allows values for month=100 or for day=100.\n // Therefore, we need to do this trick for the consistency of the validation status\n if (!this.isValid(fdDate)) {\n return new Date(NaN);\n }\n const date = new Date();\n date.setFullYear(year, month - 1, day);\n date.setHours(hour, minute, second, 0);\n return date;\n }\n\n /**\n * @hidden\n * Create native Date instance in UTC\n * @param year The year\n * @param month The month as a number between 0 and 11\n * @param day The date as a number between 1 and 31.\n * @param hours The hours as a number between 0 - 24\n * @param minutes The minutes as a number between 0 - 59\n * @param seconds The seconds as a number between 0 - 59\n * @param milliseconds The milliseconds as a number between 0 - 59\n */\n private _createUTCDateInstance(\n year: number,\n month: number,\n day: number,\n hours = 0,\n minutes = 0,\n seconds = 0,\n milliseconds = 0\n ): Date {\n const utcDate = new Date();\n utcDate.setUTCFullYear(year, month, day);\n utcDate.setUTCHours(hours, minutes, seconds, milliseconds);\n return utcDate;\n }\n\n /** @hidden */\n private _createFdDateFromDateInstance(date: Date): FdDate {\n return new FdDate(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds()\n );\n }\n\n /**\n * @hidden\n *\n * Since FdDatetimeAdapter can parse only \"en-US\" locale\n * there is no reason to create comprehensive time parse\n * that can understand plenty of locales.\n *\n * @param timeStr Time string to parse (E.g. '10:30 PM')\n * @returns date Native date instance\n *\n */\n private _parseTimeString(timeStr: string): Date {\n /**\n * Date.parse('10:30 AM') doesn't work so we need do a trick\n * and prepend it by a date string.\n */\n const dateStr = new Intl.DateTimeFormat('en-US').format(new Date());\n const dateTimeString = `${dateStr} ${timeStr}`;\n return new Date(Date.parse(dateTimeString));\n }\n}\n","import { NgModule, Type } from '@angular/core';\nimport {\n DateFormatPipe,\n DateFromNowPipe,\n DateTimeFormatPipe,\n DayPeriodFormatPipe,\n TranslateDayPeriodPipe\n} from './datetime-format.pipes';\n\nconst PIPES: Type<unknown>[] = [\n DateFormatPipe,\n DateTimeFormatPipe,\n DateFromNowPipe,\n DayPeriodFormatPipe,\n TranslateDayPeriodPipe\n];\n\n/**\n * @deprecated\n * Use imports of `DateFormatPipe`, `DateTimeFormatPipe`, `DateFromNowPipe` instead.\n */\n@NgModule({\n imports: [...PIPES],\n exports: [...PIPES]\n})\nexport class FdDatetimePipesModule {}\n","import { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\n\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS } from './datetime-formats';\nimport { FD_DATETIME_FORMATS } from './fd-date-formats';\nimport { FdDatetimeAdapter } from './fd-datetime-adapter';\nimport { FdDatetimePipesModule } from './fd-datetime-pipes.module';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [PlatformModule],\n providers: [{ provide: DatetimeAdapter, useClass: FdDatetimeAdapter }]\n})\nexport class FdDatetimeAdapterModule {}\n\n@NgModule({\n imports: [FdDatetimeAdapterModule, FdDatetimePipesModule],\n exports: [FdDatetimePipesModule, FdDatetimeAdapterModule],\n providers: [{ provide: DATE_TIME_FORMATS, useValue: FD_DATETIME_FORMATS }]\n})\nexport class FdDatetimeModule {}\n","import { Provider } from '@angular/core';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS } from './datetime-formats';\nimport { FD_DATETIME_FORMATS } from './fd-date-formats';\nimport { FdDatetimeAdapter } from './fd-datetime-adapter';\n\n/**\n * Provides default datetime formats and datetime adapter.\n */\nexport function provideDateTimeFormats(): Provider[] {\n return [\n { provide: DATE_TIME_FORMATS, useValue: FD_DATETIME_FORMATS },\n {\n provide: DatetimeAdapter,\n useClass: FdDatetimeAdapter\n }\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DatetimeAdapter"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-datetime.mjs","sources":["../tmp-esm2022/datetime/datetime-adapter.js","../tmp-esm2022/datetime/datetime-formats.js","../tmp-esm2022/datetime/datetime-format.pipes.js","../tmp-esm2022/datetime/datetime-utils.js","../tmp-esm2022/datetime/fd-date.utils.js","../tmp-esm2022/datetime/fd-date.js","../tmp-esm2022/datetime/fd-date-formats.js","../tmp-esm2022/datetime/fd-datetime-adapter.js","../tmp-esm2022/datetime/fd-datetime-pipes.module.js","../tmp-esm2022/datetime/fd-datetime.module.js","../tmp-esm2022/datetime/provide-date-time.js","../tmp-esm2022/datetime/fundamental-ngx-core-datetime.js"],"sourcesContent":["import { Subject } from 'rxjs';\n/**\n * Datetime Adapter is an abstract class that must be implemented by each adapter.\n * It's used to encapsulate a date/time manipulations as result\n * others places that uses it remain date type agnostic.\n *\n */\nexport class DatetimeAdapter {\n constructor() {\n /** @hidden */\n this._localeChanges = new Subject();\n this.localeChanges = this._localeChanges.asObservable();\n }\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale) {\n this.locale = locale;\n this._localeChanges.next();\n }\n /**\n * Set hours, minutes and seconds at once.\n * @param date The date to set time to.\n * @param hours\n * @param minutes\n * @param seconds\n * @returns The new date instance.\n */\n setTime(date, hours, minutes, seconds) {\n date = this.setHours(date, hours);\n date = this.setMinutes(date, minutes);\n date = this.setSeconds(date, seconds);\n return date;\n }\n /**\n * Get Amount of weeks in given month/year\n * @param year The year of the date\n * @param month The month of the date\n * @param firstDayOfWeek The first day of week. 1 - Sunday, 2 - Monday...\n * @returns Number of weeks in the given month\n */\n getAmountOfWeeks(year, month, firstDayOfWeek) {\n const firstOfMonth = new Date(year, month - 1, 1);\n const lastOfMonth = new Date(year, month, 0);\n const dayOffset = (firstOfMonth.getDay() - firstDayOfWeek + 8) % 7;\n const used = dayOffset + lastOfMonth.getDate();\n return Math.ceil(used / 7);\n }\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first, second) {\n return (this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second) ||\n this.getHours(first) - this.getHours(second) ||\n this.getMinutes(first) - this.getMinutes(second) ||\n this.getSeconds(first) - this.getSeconds(second));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9kYXRldGltZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0M7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQWdCLGVBQWU7SUF5VGpDO1FBSEEsY0FBYztRQUNOLG1CQUFjLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFHbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVELENBQUM7SUFDRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsTUFBYztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsT0FBTyxDQUFDLElBQU8sRUFBRSxLQUFhLEVBQUUsT0FBZSxFQUFFLE9BQWU7UUFDNUQsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0QyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsY0FBc0I7UUFDaEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3QyxNQUFNLFNBQVMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxjQUFjLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sSUFBSSxHQUFHLFNBQVMsR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsV0FBVyxDQUFDLEtBQVEsRUFBRSxNQUFTO1FBQzNCLE9BQU8sQ0FDSCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUNuRCxDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogRGF0ZXRpbWUgQWRhcHRlciBpcyBhbiBhYnN0cmFjdCBjbGFzcyB0aGF0IG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgZWFjaCBhZGFwdGVyLlxuICogSXQncyB1c2VkIHRvIGVuY2Fwc3VsYXRlIGEgZGF0ZS90aW1lIG1hbmlwdWxhdGlvbnMgYXMgcmVzdWx0XG4gKiBvdGhlcnMgcGxhY2VzIHRoYXQgdXNlcyBpdCByZW1haW4gZGF0ZSB0eXBlIGFnbm9zdGljLlxuICpcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERhdGV0aW1lQWRhcHRlcjxEPiB7XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgeWVhciBjb21wb25lbnQgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgeWVhciBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSB5ZWFyIG51bWJlci5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRZZWFyKGRhdGU6IEQpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBleHRyYWN0IHRoZSBtb250aCBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSBtb250aCBudW1iZXIgKG1pbiAxLCBtYXggMTIpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldE1vbnRoKGRhdGU6IEQpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBkYXkgb2YgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgZGF0ZSBvZiB0aGUgbW9udGggZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgZGF0ZSBudW1iZXIgKG1pbiAxLCBtYXggMzEpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldERhdGUoZGF0ZTogRCk6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRheSBvZiB0aGUgd2VlayBjb21wb25lbnQgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgZGF5IG9mIHRoZSB3ZWVrIGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIGRheSBvZiB3ZWVrIG51bWJlciAobWluIDEsIG1heCA3LCAxID0gU3VuZGF5KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXREYXlPZldlZWsoZGF0ZTogRCk6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgaG91cnMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgaG91cnMgZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgaG91cnMgbnVtYmVyIChtaW4gMCwgbWF4IDIzKS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRIb3VycyhkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBtaW51dGVzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGV4dHJhY3QgdGhlIG1pbnV0ZXMgZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgbWludXRlcyBudW1iZXIgKG1pbiAwLCBtYXggNTkpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldE1pbnV0ZXMoZGF0ZTogRCk6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgc2Vjb25kcyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBleHRyYWN0IHRoZSBzZWNvbmRzIGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIHNlY29uZHMgbnVtYmVyIChtaW4gMCwgbWF4IDU5KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRTZWNvbmRzKGRhdGU6IEQpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgaG91cnMuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gc2V0IGhvdXJzIHRvLlxuICAgICAqIEBwYXJhbSBob3Vyc1xuICAgICAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBzZXRIb3VycyhkYXRlOiBELCBob3VyczogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIFNldCBtaW51dGVzLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIHNldCBtaW51dGVzIHRvLlxuICAgICAqIEBwYXJhbSBtaW51dGVzXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBkYXRlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IHNldE1pbnV0ZXMoZGF0ZTogRCwgbWludXRlczogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIFNldCBzZWNvbmRzLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIHNldCBzZWNvbmRzIHRvLlxuICAgICAqIEBwYXJhbSBzZWNvbmRzXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBkYXRlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IHNldFNlY29uZHMoZGF0ZTogRCwgc2Vjb25kczogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgd2VlayBudW1iZXIgb2YgdGhlIGdpdmVuIGRhdGVcbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBleHRyYWN0IHRoZSB3ZWVrIG51bWJlciBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSB3ZWVrIG51bWJlciAobWluIDEsIG1heCA1MykuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0V2Vla051bWJlcihkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGxpc3Qgb2YgbmFtZXMgZm9yIHRoZSBtb250aHMuXG4gICAgICogQHBhcmFtIHN0eWxlIFRoZSBuYW1pbmcgc3R5bGUgKGUuZy4gbG9uZyA9ICdKYW51YXJ5Jywgc2hvcnQgPSAnSmFuJywgbmFycm93ID0gJ0onKS5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoIEphbnVhcnkuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGlzdCBvZiBuYW1lcyBmb3IgdGhlIGRhdGVzIG9mIHRoZSBtb250aC5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIGRhdGUgb2YgdGhlIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICcxJy5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXREYXRlTmFtZXMoKTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGlzdCBvZiBuYW1lcyBmb3IgdGhlIGRheXMgb2YgdGhlIHdlZWsuXG4gICAgICogQHBhcmFtIHN0eWxlIFRoZSBuYW1pbmcgc3R5bGUgKGUuZy4gbG9uZyA9ICdTdW5kYXknLCBzaG9ydCA9ICdTdW4nLCBuYXJyb3cgPSAnUycpLlxuICAgICAqIEByZXR1cm5zIEFuIG9yZGVyZWQgbGlzdCBvZiBhbGwgd2Vla2RheSBuYW1lcywgc3RhcnRpbmcgd2l0aCBTdW5kYXkuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmFtZSBmb3IgdGhlIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZ2V0IHRoZSB5ZWFyIG5hbWUgZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgZ2l2ZW4geWVhciAoZS5nLiAnMjAyMCcpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldFllYXJOYW1lKGRhdGU6IEQpOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYW1lIGZvciB0aGUgd2VlayBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBnZXQgdGhlIHdlZWsgbmFtZSBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSB0aGUgd2Vlay5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRXZWVrTmFtZShkYXRlOiBEKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGxpc3Qgb2YgaG91ciBuYW1lcy5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIGhvdXJzICgwIC0gMjQpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldEhvdXJOYW1lcyhvcHRpb25zOiB7IHR3b0RpZ2l0OiBib29sZWFuOyBtZXJpZGlhbjogYm9vbGVhbiB9KTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGlzdCBvZiBtaW51dGUgbmFtZXMuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBtaW51dGUgbmFtZXNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucy50d29EaWdpdCBXaGV0aGVyIHRvIGZvcm1hdCBtaW51dGVzIHdpdGggdHdvIGRpZ2l0cyAoZS5nLiwgJzA1JyB2cyAnNScpXG4gICAgICogQHBhcmFtIG9wdGlvbnMubWludXRlU3RlcCBUaGUgaW50ZXJ2YWwgYmV0d2VlbiBtaW51dGVzIChlLmcuLCAxIGZvciBldmVyeSBtaW51dGUsIDUgZm9yIDUtbWludXRlIGludGVydmFscywgMTUgZm9yIDE1LW1pbnV0ZSBpbnRlcnZhbHMpLiBEZWZhdWx0cyB0byAxLlxuICAgICAqIEByZXR1cm5zIEFuIG9yZGVyZWQgbGlzdCBvZiBtaW51dGUgbmFtZXMgYmFzZWQgb24gdGhlIHN0ZXAgaW50ZXJ2YWwuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0TWludXRlTmFtZXMob3B0aW9uczogeyB0d29EaWdpdDogYm9vbGVhbjsgbWludXRlU3RlcD86IG51bWJlciB9KTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGlzdCBvZiBzZWNvbmQgbmFtZXMuXG4gICAgICogQHJldHVybnMgQW4gb3JkZXJlZCBsaXN0IG9mIGFsbCBob3VycyAoMCAtIDI0KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRTZWNvbmROYW1lcyhvcHRpb25zOiB7IHR3b0RpZ2l0OiBib29sZWFuIH0pOiBzdHJpbmdbXTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBsaXN0IG9mIGRheSBwZXJpb2RzLlxuICAgICAqIEByZXR1cm5zIExpc3Qgb2YgZGF5IHBlcmlvZHMsIHN0YXJ0cyBmcm9tIEFNIFsnQU0nLCAnUE0nXS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXREYXlQZXJpb2ROYW1lcygpOiBbc3RyaW5nLCBzdHJpbmddO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAqIEByZXR1cm5zIFRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAtaW5kZXhlZCwgMCA9IFN1bmRheSkuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0Rmlyc3REYXlPZldlZWsoKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbnVtYmVyIG9mIGRheXMgaW4gdGhlIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHdob3NlIG1vbnRoIHNob3VsZCBiZSBjaGVja2VkLlxuICAgICAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0TnVtRGF5c0luTW9udGgoZGF0ZTogRCk6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyBhIGRhdGUgZnJvbSBhIHVzZXItcHJvdmlkZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBwYXJzZS5cbiAgICAgKiBAcGFyYW0gcGFyc2VGb3JtYXQgVGhlIGV4cGVjdGVkIGZvcm1hdCBvZiB0aGUgdmFsdWUgYmVpbmcgcGFyc2VkXG4gICAgICogICAgICh0eXBlIGlzIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudCkuXG4gICAgICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IHBhcnNlKHZhbHVlOiB1bmtub3duLCBwYXJzZUZvcm1hdDogdW5rbm93bik6IEQgfCBudWxsO1xuXG4gICAgLyoqXG4gICAgICogRm9ybWF0cyBhIGRhdGUgYXMgYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBmb3JtYXQuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIHZhbHVlIHRvIGZvcm1hdC5cbiAgICAgKiBAcGFyYW0gZGlzcGxheUZvcm1hdCBUaGUgZm9ybWF0IHRvIHVzZSB0byBkaXNwbGF5IHRoZSBkYXRlIGFzIGEgc3RyaW5nLlxuICAgICAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZm9ybWF0KGRhdGU6IE51bGxhYmxlPEQ+LCBkaXNwbGF5Rm9ybWF0OiB1bmtub3duKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGRhdGUgd2l0aCB0aGUgZ2l2ZW4geWVhciwgbW9udGgsIGFuZCBkYXRlLlxuICAgICAqIEBwYXJhbSB5ZWFyIFRoZSBmdWxsIHllYXIgb2YgdGhlIGRhdGUuIChlLmcuIDE5ODkpLlxuICAgICAqIEBwYXJhbSBtb250aCBUaGUgbW9udGggb2YgdGhlIGRhdGUgKDEgPSBKYW51YXJ5KS4gTXVzdCBiZSBhbiBpbnRlZ2VyIDEgLSAxMi5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgbW9udGggZGF0ZS4gTXVzdCBiZSBhbiBpbnRlZ2VyIDEgLSBsZW5ndGggb2YgdGhlIGdpdmVuIG1vbnRoLlxuICAgICAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSwgb3IgbnVsbCBpZiBpbnZhbGlkLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGNyZWF0ZURhdGUoeWVhcjogbnVtYmVyLCBtb250aD86IG51bWJlciwgZGF0ZT86IG51bWJlcik6IEQ7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRvZGF5J3MgZGF0ZSB3aGVyZSB0aW1lIHZhbHVlIGlzIHNldCB0byAwXG4gICAgICogQHJldHVybnMgVG9kYXkncyBkYXRlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IHRvZGF5KCk6IEQ7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGRhdGUgYW5kIHRpbWUgYXQgdGhpcyBtb21lbnQuXG4gICAgICogQHJldHVybnMgZGF0ZSBhbmQgdGltZSBhdCB0aGlzIG1vbWVudC5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBub3coKTogRDtcblxuICAgIC8qKlxuICAgICAqIEFkZHMgdGhlIGdpdmVuIG51bWJlciBvZiB5ZWFycyB0byB0aGUgZGF0ZS4gWWVhcnMgYXJlIGNvdW50ZWQgYXMgaWYgZmxpcHBpbmcgMTIgcGFnZXMgb24gdGhlXG4gICAgICogY2FsZW5kYXIgZm9yIGVhY2ggeWVhciBhbmQgdGhlbiBmaW5kaW5nIHRoZSBjbG9zZXN0IGRhdGUgaW4gdGhlIG5ldyBtb250aC4gRm9yIGV4YW1wbGUgd2hlblxuICAgICAqIGFkZGluZyAxIHllYXIgdG8gRmViIDI5LCAyMDE2LCB0aGUgcmVzdWx0aW5nIGRhdGUgd2lsbCBiZSBGZWIgMjgsIDIwMTcuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gYWRkIHllYXJzIHRvLlxuICAgICAqIEBwYXJhbSB5ZWFycyBUaGUgbnVtYmVyIG9mIHllYXJzIHRvIGFkZCAobWF5IGJlIG5lZ2F0aXZlKS5cbiAgICAgKiBAcmV0dXJucyBBIG5ldyBkYXRlIGVxdWFsIHRvIHRoZSBnaXZlbiBvbmUgd2l0aCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB5ZWFycyBhZGRlZC5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBhZGRDYWxlbmRhclllYXJzKGRhdGU6IEQsIHllYXJzOiBudW1iZXIpOiBEO1xuXG4gICAgLyoqXG4gICAgICogQWRkcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIG1vbnRocyB0byB0aGUgZGF0ZS4gTW9udGhzIGFyZSBjb3VudGVkIGFzIGlmIGZsaXBwaW5nIGEgcGFnZSBvbiB0aGVcbiAgICAgKiBjYWxlbmRhciBmb3IgZWFjaCBtb250aCBhbmQgdGhlbiBmaW5kaW5nIHRoZSBjbG9zZXN0IGRhdGUgaW4gdGhlIG5ldyBtb250aC4gRm9yIGV4YW1wbGUgd2hlblxuICAgICAqIGFkZGluZyAxIG1vbnRoIHRvIEphbiAzMSwgMjAxNywgdGhlIHJlc3VsdGluZyBkYXRlIHdpbGwgYmUgRmViIDI4LCAyMDE3LlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGFkZCBtb250aHMgdG8uXG4gICAgICogQHBhcmFtIG1vbnRocyBUaGUgbnVtYmVyIG9mIG1vbnRocyB0byBhZGQgKG1heSBiZSBuZWdhdGl2ZSkuXG4gICAgICogQHJldHVybnMgQSBuZXcgZGF0ZSBlcXVhbCB0byB0aGUgZ2l2ZW4gb25lIHdpdGggdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbW9udGhzIGFkZGVkLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGFkZENhbGVuZGFyTW9udGhzKGRhdGU6IEQsIG1vbnRoczogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIEFkZHMgdGhlIGdpdmVuIG51bWJlciBvZiBkYXlzIHRvIHRoZSBkYXRlLiBEYXlzIGFyZSBjb3VudGVkIGFzIGlmIG1vdmluZyBvbmUgY2VsbCBvbiB0aGVcbiAgICAgKiBjYWxlbmRhciBmb3IgZWFjaCBkYXkuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gYWRkIGRheXMgdG8uXG4gICAgICogQHBhcmFtIGRheXMgVGhlIG51bWJlciBvZiBkYXlzIHRvIGFkZCAobWF5IGJlIG5lZ2F0aXZlKS5cbiAgICAgKiBAcmV0dXJucyBBIG5ldyBkYXRlIGVxdWFsIHRvIHRoZSBnaXZlbiBvbmUgd2l0aCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIGFkZGVkLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGFkZENhbGVuZGFyRGF5cyhkYXRlOiBELCBkYXlzOiBudW1iZXIpOiBEO1xuXG4gICAgLyoqXG4gICAgICogQ2xvbmVzIHRoZSBnaXZlbiBkYXRlLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGNsb25lXG4gICAgICogQHJldHVybnMgQSBuZXcgZGF0ZSBlcXVhbCB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBjbG9uZShkYXRlOiBEKTogRDtcblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0aGF0IGNoZWNrIGVxdWFsaXR5IG9mIDIgZGF0ZXMuXG4gICAgICogRG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGltZSB2YWx1ZVxuICAgICAqIEBwYXJhbSBkYXRlMSBUaGUgZmlyc3QgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAgICAgKiBAcGFyYW0gZGF0ZTIgVGhlIHNlY29uZCBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICAgICAqIEByZXR1cm5zIElmIGRhdGVzIGFyZSBlcXVhbCBvciBub3RcbiAgICAgKi9cbiAgICBhYnN0cmFjdCBkYXRlc0VxdWFsKGRhdGUxOiBOdWxsYWJsZTxEPiwgZGF0ZTI6IE51bGxhYmxlPEQ+KTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0aGF0IGNoZWNrIGVxdWFsaXR5IG9mIDIgZGF0ZXMgdGFraW5nIGludG8gYWNjb3VudCB0aW1lIHZhbHVlIGFzIHdlbGxcbiAgICAgKiBAcGFyYW0gZGF0ZTEgVGhlIGZpcnN0IGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gICAgICogQHBhcmFtIGRhdGUyIFRoZSBzZWNvbmQgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAgICAgKiBAcmV0dXJucyBJZiBkYXRlcyBhcmUgZXF1YWwgb3Igbm90XG4gICAgICovXG4gICAgYWJzdHJhY3QgZGF0ZVRpbWVzRXF1YWwoZGF0ZTE6IE51bGxhYmxlPEQ+LCBkYXRlMjogTnVsbGFibGU8RD4pOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRvIGNoZWNrIGlmIGRhdGUgaXMgYmV0d2VlbiAyIGRhdGVzXG4gICAgICogQHBhcmFtIGRhdGVUb0NoZWNrIFRoZSBkYXRlIHRvIGNoZWNrIGlmIGl0J3MgaW4gYSByYW5nZVxuICAgICAqIEBwYXJhbSBzdGFydERhdGUgVGhlIHN0YXJ0IGRhdGUgb2YgYSByYW5nZVxuICAgICAqIEBwYXJhbSBlbmREYXRlIFRoZSBlbmQgZGF0ZSBvZiBhIHJhbmdlXG4gICAgICogQHJldHVybnMgSWYgZGF0ZSBpcyBpbiBhIGdpdmVuIGRhdGUgcmFuZ2VcbiAgICAgKi9cbiAgICBhYnN0cmFjdCBpc0JldHdlZW4oZGF0ZVRvQ2hlY2s6IEQsIHN0YXJ0RGF0ZTogRCwgZW5kRGF0ZTogRCk6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdGhhdCBjaGVja3MgdmFsaWRpdHkgb2YgY3VycmVudCBkYXRlLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGJlIGNoZWNrZWRcbiAgICAgKi9cbiAgICBhYnN0cmFjdCBpc1ZhbGlkKGRhdGU6IE51bGxhYmxlPEQ+KTogZGF0ZSBpcyBEO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgUkZDIDMzMzkgY29tcGF0aWJsZSBzdHJpbmcgKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzMzM5KSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBnZW5lcmF0ZSBkYXRlIHN0cmluZ3MgdGhhdCBhcmUgY29tcGF0aWJsZSB3aXRoIG5hdGl2ZSBIVE1MIGF0dHJpYnV0ZXNcbiAgICAgKiBzdWNoIGFzIHRoZSBgbWluYCBvciBgbWF4YCBhdHRyaWJ1dGUgb2YgYW4gYDxpbnB1dD5gLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGdldCB0aGUgSVNPIGRhdGUgc3RyaW5nIGZvci5cbiAgICAgKiBAcmV0dXJucyBUaGUgSVNPIGRhdGUgc3RyaW5nIGRhdGUgc3RyaW5nLlxuICAgICAqL1xuICAgIGFic3RyYWN0IHRvSXNvODYwMShkYXRlOiBEKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRm9ybWF0IG9wdGlvbiBpbmNsdWRlcyBwZXJpb2QgaW5mby5cbiAgICAgKiBAcGFyYW0gZGlzcGxheUZvcm1hdCBUaGUgZm9ybWF0IHRvIHVzZSB0byBkaXNwbGF5IHRoZSBkYXRlIGFzIGEgc3RyaW5nLlxuICAgICAqIEByZXR1cm5zIElmIHRpbWUgZm9ybWF0IGluY2x1ZGVzIHBlcmlvZCBpbmZvLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzVGltZUZvcm1hdEluY2x1ZGVzRGF5UGVyaW9kKGRpc3BsYXlGb3JtYXQ6IHVua25vd24pOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogRm9ybWF0IG9wdGlvbiBpbmNsdWRlcyBob3VycyBpbmZvLlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgSWYgdGltZSBmb3JtYXQgaW5jbHVkZXMgbWludXRlcyBpbmZvLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzVGltZUZvcm1hdEluY2x1ZGVzSG91cnMoZGlzcGxheUZvcm1hdDogdW5rbm93bik6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXQgb3B0aW9uIGluY2x1ZGVzIG1pbnV0ZXMgaW5mby5cbiAgICAgKiBAcGFyYW0gZGlzcGxheUZvcm1hdCBUaGUgZm9ybWF0IHRvIHVzZSB0byBkaXNwbGF5IHRoZSBkYXRlIGFzIGEgc3RyaW5nLlxuICAgICAqIEByZXR1cm5zIElmIHRpbWUgZm9ybWF0IGluY2x1ZGVzIG1pbnV0ZXMgaW5mby5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBpc1RpbWVGb3JtYXRJbmNsdWRlc01pbnV0ZXMoZGlzcGxheUZvcm1hdDogdW5rbm93bik6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXQgb3B0aW9uIGluY2x1ZGVzIHNlY29uZHMgaW5mby5cbiAgICAgKiBAcGFyYW0gZGlzcGxheUZvcm1hdCBUaGUgZm9ybWF0IHRvIHVzZSB0byBkaXNwbGF5IHRoZSBkYXRlIGFzIGEgc3RyaW5nLlxuICAgICAqIEByZXR1cm5zIElmIHRpbWUgZm9ybWF0IGluY2x1ZGVzIHNlY29uZHMgaW5mby5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBpc1RpbWVGb3JtYXRJbmNsdWRlc1NlY29uZHMoZGlzcGxheUZvcm1hdDogdW5rbm93bik6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSBiZWluZyByZWZlcmVuY2VkLlxuICAgICAqIEByZXR1cm5zIFN0cmluZyByZXByZXNlbnRpbmcgaG93IG11Y2ggdGltZSBoYXMgcGFzc2VkIHNpbmNlIHRoZSBkYXRlIHBhcmFtLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGZyb21Ob3c/KGRhdGU6IEQpOiBzdHJpbmc7XG5cbiAgICAvKiogbG9jYWxlIGNoYW5nZXMgc3RyZWFtICovXG4gICAgcmVhZG9ubHkgbG9jYWxlQ2hhbmdlczogT2JzZXJ2YWJsZTx2b2lkPjtcblxuICAgIC8qKiBjdXJyZW50IGxvY2FsZSAqL1xuICAgIHByb3RlY3RlZCBsb2NhbGU6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbG9jYWxlQ2hhbmdlczogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubG9jYWxlQ2hhbmdlcyA9IHRoaXMuX2xvY2FsZUNoYW5nZXMuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGxvY2FsZSB1c2VkIGZvciBhbGwgZGF0ZXMuXG4gICAgICogQHBhcmFtIGxvY2FsZSBUaGUgbmV3IGxvY2FsZS5cbiAgICAgKi9cbiAgICBzZXRMb2NhbGUobG9jYWxlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2NhbGUgPSBsb2NhbGU7XG4gICAgICAgIHRoaXMuX2xvY2FsZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcyBhdCBvbmNlLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIHNldCB0aW1lIHRvLlxuICAgICAqIEBwYXJhbSBob3Vyc1xuICAgICAqIEBwYXJhbSBtaW51dGVzXG4gICAgICogQHBhcmFtIHNlY29uZHNcbiAgICAgKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgc2V0VGltZShkYXRlOiBELCBob3VyczogbnVtYmVyLCBtaW51dGVzOiBudW1iZXIsIHNlY29uZHM6IG51bWJlcik6IEQge1xuICAgICAgICBkYXRlID0gdGhpcy5zZXRIb3VycyhkYXRlLCBob3Vycyk7XG4gICAgICAgIGRhdGUgPSB0aGlzLnNldE1pbnV0ZXMoZGF0ZSwgbWludXRlcyk7XG4gICAgICAgIGRhdGUgPSB0aGlzLnNldFNlY29uZHMoZGF0ZSwgc2Vjb25kcyk7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBBbW91bnQgb2Ygd2Vla3MgaW4gZ2l2ZW4gbW9udGgveWVhclxuICAgICAqIEBwYXJhbSB5ZWFyIFRoZSB5ZWFyIG9mIHRoZSBkYXRlXG4gICAgICogQHBhcmFtIG1vbnRoIFRoZSBtb250aCBvZiB0aGUgZGF0ZVxuICAgICAqIEBwYXJhbSBmaXJzdERheU9mV2VlayBUaGUgZmlyc3QgZGF5IG9mIHdlZWsuIDEgLSBTdW5kYXksIDIgLSBNb25kYXkuLi5cbiAgICAgKiBAcmV0dXJucyBOdW1iZXIgb2Ygd2Vla3MgaW4gdGhlIGdpdmVuIG1vbnRoXG4gICAgICovXG4gICAgZ2V0QW1vdW50T2ZXZWVrcyh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGZpcnN0RGF5T2ZXZWVrOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBmaXJzdE9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIDEpO1xuICAgICAgICBjb25zdCBsYXN0T2ZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAwKTtcblxuICAgICAgICBjb25zdCBkYXlPZmZzZXQgPSAoZmlyc3RPZk1vbnRoLmdldERheSgpIC0gZmlyc3REYXlPZldlZWsgKyA4KSAlIDc7XG4gICAgICAgIGNvbnN0IHVzZWQgPSBkYXlPZmZzZXQgKyBsYXN0T2ZNb250aC5nZXREYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIE1hdGguY2VpbCh1c2VkIC8gNyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcGFyZXMgdHdvIGRhdGVzLlxuICAgICAqIEBwYXJhbSBmaXJzdCBUaGUgZmlyc3QgZGF0ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSBzZWNvbmQgVGhlIHNlY29uZCBkYXRlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMgMCBpZiB0aGUgZGF0ZXMgYXJlIGVxdWFsLCBhIG51bWJlciBsZXNzIHRoYW4gMCBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBlYXJsaWVyLFxuICAgICAqICAgICBhIG51bWJlciBncmVhdGVyIHRoYW4gMCBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBsYXRlci5cbiAgICAgKi9cbiAgICBjb21wYXJlRGF0ZShmaXJzdDogRCwgc2Vjb25kOiBEKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuZ2V0WWVhcihmaXJzdCkgLSB0aGlzLmdldFllYXIoc2Vjb25kKSB8fFxuICAgICAgICAgICAgdGhpcy5nZXRNb250aChmaXJzdCkgLSB0aGlzLmdldE1vbnRoKHNlY29uZCkgfHxcbiAgICAgICAgICAgIHRoaXMuZ2V0RGF0ZShmaXJzdCkgLSB0aGlzLmdldERhdGUoc2Vjb25kKSB8fFxuICAgICAgICAgICAgdGhpcy5nZXRIb3VycyhmaXJzdCkgLSB0aGlzLmdldEhvdXJzKHNlY29uZCkgfHxcbiAgICAgICAgICAgIHRoaXMuZ2V0TWludXRlcyhmaXJzdCkgLSB0aGlzLmdldE1pbnV0ZXMoc2Vjb25kKSB8fFxuICAgICAgICAgICAgdGhpcy5nZXRTZWNvbmRzKGZpcnN0KSAtIHRoaXMuZ2V0U2Vjb25kcyhzZWNvbmQpXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19","import { InjectionToken } from '@angular/core';\n/**\n * DateTimeFormats injection token\n */\nexport const DATE_TIME_FORMATS = new InjectionToken('date-formats');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtZm9ybWF0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9kYXRldGltZS1mb3JtYXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUF5Qi9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQWtCLGNBQWMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBEYXRlVGltZUZvcm1hdHMgaXMgaW50ZW5kZWQgdG8ga2VlcCBvcHRpb25zXG4gKiByZWxhdGVkIHRvIGRhdGUtdGltZSBmb3JtYXR0aW5nIC8gcGFyc2luZ1xuICpcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRlVGltZUZvcm1hdHMge1xuICAgIHBhcnNlOiB7XG4gICAgICAgIGRhdGVJbnB1dDogdW5rbm93bjtcbiAgICAgICAgdGltZUlucHV0OiB1bmtub3duO1xuICAgICAgICBkYXRlVGltZUlucHV0OiB1bmtub3duO1xuICAgIH07XG4gICAgZGlzcGxheToge1xuICAgICAgICBkYXRlSW5wdXQ6IHVua25vd247XG4gICAgICAgIHRpbWVJbnB1dDogdW5rbm93bjtcbiAgICAgICAgZGF0ZVRpbWVJbnB1dDogdW5rbm93bjtcblxuICAgICAgICBkYXRlQTExeUxhYmVsOiB1bmtub3duO1xuICAgICAgICBtb250aEExMXlMYWJlbDogdW5rbm93bjtcbiAgICAgICAgeWVhckExMXlMYWJlbDogdW5rbm93bjtcbiAgICB9O1xuICAgIHJhbmdlRGVsaW1pdGVyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGF0ZVRpbWVGb3JtYXRzIGluamVjdGlvbiB0b2tlblxuICovXG5leHBvcnQgY29uc3QgREFURV9USU1FX0ZPUk1BVFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48RGF0ZVRpbWVGb3JtYXRzPignZGF0ZS1mb3JtYXRzJyk7XG4iXX0=","import { Inject, Optional, Pipe } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FD_LANGUAGE, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { Observable } from 'rxjs';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS } from './datetime-formats';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./datetime-adapter\";\nimport * as i2 from \"rxjs\";\nexport class DateFormatPipe {\n /** @hidden */\n constructor(_dateTimeAdapter, _dateTimeFormats) {\n this._dateTimeAdapter = _dateTimeAdapter;\n this._dateTimeFormats = _dateTimeFormats;\n }\n /** Format date object */\n transform(date, noDateMessage = '') {\n if (date) {\n return this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateInput);\n }\n else {\n return noDateMessage;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFormatPipe, deps: [{ token: i1.DatetimeAdapter }, { token: DATE_TIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFormatPipe, isStandalone: true, name: \"dateFormat\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFormatPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'dateFormat',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i1.DatetimeAdapter }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DATE_TIME_FORMATS]\n }] }] });\nexport class DateTimeFormatPipe {\n /** @hidden */\n constructor(_dateTimeAdapter, _dateTimeFormats) {\n this._dateTimeAdapter = _dateTimeAdapter;\n this._dateTimeFormats = _dateTimeFormats;\n }\n /** Format date object */\n transform(date, noDateMessage = '') {\n if (date) {\n return this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateTimeInput);\n }\n else {\n return noDateMessage;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateTimeFormatPipe, deps: [{ token: i1.DatetimeAdapter }, { token: DATE_TIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: DateTimeFormatPipe, isStandalone: true, name: \"dateTimeFormat\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateTimeFormatPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'dateTimeFormat',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i1.DatetimeAdapter }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DATE_TIME_FORMATS]\n }] }] });\nexport class DateFromNowPipe {\n /** @hidden */\n constructor(_dateTimeAdapter) {\n this._dateTimeAdapter = _dateTimeAdapter;\n }\n /** Format date object */\n transform(date, noDateMessage = '') {\n if (this._dateTimeAdapter.fromNow && typeof this._dateTimeAdapter.fromNow === 'function') {\n if (date) {\n return this._dateTimeAdapter.fromNow(date);\n }\n else {\n return noDateMessage;\n }\n }\n else {\n console.warn('No fromNow function provided to the DatetimeAdapter');\n return '';\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFromNowPipe, deps: [{ token: i1.DatetimeAdapter }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFromNowPipe, isStandalone: true, name: \"dateFromNow\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFromNowPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'dateFromNow',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i1.DatetimeAdapter }] });\nexport class DayPeriodFormatPipe {\n /** @hidden */\n constructor(_dateTimeAdapter, _dateTimeFormats) {\n this._dateTimeAdapter = _dateTimeAdapter;\n this._dateTimeFormats = _dateTimeFormats;\n }\n /** Format date object for day period */\n transform(date, customFormat = {}, noDateMessage = '') {\n if (!date) {\n return noDateMessage;\n }\n return this._dateTimeAdapter.format(date, customFormat);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DayPeriodFormatPipe, deps: [{ token: i1.DatetimeAdapter }, { token: DATE_TIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: DayPeriodFormatPipe, isStandalone: true, name: \"dayPeriodFormat\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DayPeriodFormatPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'dayPeriodFormat',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i1.DatetimeAdapter }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DATE_TIME_FORMATS]\n }] }] });\nexport class TranslateDayPeriodPipe {\n /** @hidden */\n constructor(_language$) {\n this._language$ = _language$;\n /** @hidden */\n this._translationResolver = new TranslationResolver();\n this._currentLanguageSignal = toSignal(this._language$, { initialValue: {} });\n }\n /** Format date object for day period */\n transform(value) {\n if (!value) {\n return value;\n }\n const dayPeriodPattern = /(coreTime\\.\\w+Label)/;\n const match = value.match(dayPeriodPattern);\n if (match?.[0]) {\n const currentLanguage = this._currentLanguageSignal();\n const translatedValue = this._translationResolver.resolve(currentLanguage, match[0]);\n return translatedValue ? value.replace(dayPeriodPattern, translatedValue) : value;\n }\n // If no day period pattern is found, return the original value\n return value;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TranslateDayPeriodPipe, deps: [{ token: FD_LANGUAGE }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: TranslateDayPeriodPipe, isStandalone: true, name: \"translateDayPeriod\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TranslateDayPeriodPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'translateDayPeriod',\n standalone: true,\n pure: false // required to update the value when the observable is resolved\n }]\n }], ctorParameters: () => [{ type: i2.Observable, decorators: [{\n type: Inject,\n args: [FD_LANGUAGE]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtZm9ybWF0LnBpcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGV0aW1lL2RhdGV0aW1lLWZvcm1hdC5waXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUF1QyxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQU14RSxNQUFNLE9BQU8sY0FBYztJQUN2QixjQUFjO0lBQ2QsWUFDWSxnQkFBb0MsRUFDRyxnQkFBaUM7UUFEeEUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQUNHLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7SUFDakYsQ0FBQztJQUVKLHlCQUF5QjtJQUN6QixTQUFTLENBQUMsSUFBTyxFQUFFLGFBQWEsR0FBRyxFQUFFO1FBQ2pDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkYsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLGFBQWEsQ0FBQztRQUN6QixDQUFDO0lBQ0wsQ0FBQzs4R0FkUSxjQUFjLGlEQUlDLGlCQUFpQjs0R0FKaEMsY0FBYzs7MkZBQWQsY0FBYztrQkFKMUIsSUFBSTttQkFBQztvQkFDRixJ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T3B0aW9uYWwsIFBpcGUsIFBpcGVUcmFuc2Zvcm0sIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGRF9MQU5HVUFHRSwgRmRMYW5ndWFnZSwgRmRMYW5ndWFnZUtleUlkZW50aWZpZXIsIFRyYW5zbGF0aW9uUmVzb2x2ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnLi9kYXRldGltZS1hZGFwdGVyJztcbmltcG9ydCB7IERBVEVfVElNRV9GT1JNQVRTLCBEYXRlVGltZUZvcm1hdHMgfSBmcm9tICcuL2RhdGV0aW1lLWZvcm1hdHMnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2RhdGVGb3JtYXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZUZvcm1hdFBpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9kYXRlVGltZUFkYXB0ZXI6IERhdGV0aW1lQWRhcHRlcjxEPixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChEQVRFX1RJTUVfRk9STUFUUykgcHJpdmF0ZSBfZGF0ZVRpbWVGb3JtYXRzOiBEYXRlVGltZUZvcm1hdHNcbiAgICApIHt9XG5cbiAgICAvKiogRm9ybWF0IGRhdGUgb2JqZWN0ICovXG4gICAgdHJhbnNmb3JtKGRhdGU6IEQsIG5vRGF0ZU1lc3NhZ2UgPSAnJyk6IHN0cmluZyB7XG4gICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmZvcm1hdChkYXRlLCB0aGlzLl9kYXRlVGltZUZvcm1hdHMuZGlzcGxheS5kYXRlSW5wdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5vRGF0ZU1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnZGF0ZVRpbWVGb3JtYXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVGb3JtYXRQaXBlPEQ+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZGF0ZVRpbWVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREFURV9USU1FX0ZPUk1BVFMpIHByaXZhdGUgX2RhdGVUaW1lRm9ybWF0czogRGF0ZVRpbWVGb3JtYXRzXG4gICAgKSB7fVxuXG4gICAgLyoqIEZvcm1hdCBkYXRlIG9iamVjdCAqL1xuICAgIHRyYW5zZm9ybShkYXRlOiBELCBub0RhdGVNZXNzYWdlID0gJycpOiBzdHJpbmcge1xuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5mb3JtYXQoZGF0ZSwgdGhpcy5fZGF0ZVRpbWVGb3JtYXRzLmRpc3BsYXkuZGF0ZVRpbWVJbnB1dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbm9EYXRlTWVzc2FnZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdkYXRlRnJvbU5vdycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlRnJvbU5vd1BpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RhdGVUaW1lQWRhcHRlcjogRGF0ZXRpbWVBZGFwdGVyPEQ+KSB7fVxuXG4gICAgLyoqIEZvcm1hdCBkYXRlIG9iamVjdCAqL1xuICAgIHRyYW5zZm9ybShkYXRlOiBELCBub0RhdGVNZXNzYWdlID0gJycpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmZyb21Ob3cgJiYgdHlwZW9mIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5mcm9tTm93ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZnJvbU5vdyhkYXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vRGF0ZU1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ05vIGZyb21Ob3cgZnVuY3Rpb24gcHJvdmlkZWQgdG8gdGhlIERhdGV0aW1lQWRhcHRlcicpO1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2RheVBlcmlvZEZvcm1hdCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYXlQZXJpb2RGb3JtYXRQaXBlPEQ+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZGF0ZVRpbWVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREFURV9USU1FX0ZPUk1BVFMpIHByaXZhdGUgX2RhdGVUaW1lRm9ybWF0czogRGF0ZVRpbWVGb3JtYXRzXG4gICAgKSB7fVxuXG4gICAgLyoqIEZvcm1hdCBkYXRlIG9iamVjdCBmb3IgZGF5IHBlcmlvZCAqL1xuICAgIHRyYW5zZm9ybShkYXRlOiBELCBjdXN0b21Gb3JtYXQ6IGFueSA9IHt9LCBub0RhdGVNZXNzYWdlID0gJycpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBub0RhdGVNZXNzYWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5mb3JtYXQoZGF0ZSwgY3VzdG9tRm9ybWF0KTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAndHJhbnNsYXRlRGF5UGVyaW9kJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHB1cmU6IGZhbHNlIC8vIHJlcXVpcmVkIHRvIHVwZGF0ZSB0aGUgdmFsdWUgd2hlbiB0aGUgb2JzZXJ2YWJsZSBpcyByZXNvbHZlZFxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVEYXlQZXJpb2RQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF90cmFuc2xhdGlvblJlc29sdmVyID0gbmV3IFRyYW5zbGF0aW9uUmVzb2x2ZXIoKTtcblxuICAgIC8qKiBTaWduYWwgdGhhdCB3aWxsIGhvbGQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50TGFuZ3VhZ2VTaWduYWw6IFNpZ25hbDxGZExhbmd1YWdlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoQEluamVjdChGRF9MQU5HVUFHRSkgcHJpdmF0ZSBfbGFuZ3VhZ2UkOiBPYnNlcnZhYmxlPEZkTGFuZ3VhZ2U+KSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRMYW5ndWFnZVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuX2xhbmd1YWdlJCwgeyBpbml0aWFsVmFsdWU6IHt9IGFzIEZkTGFuZ3VhZ2UgfSk7XG4gICAgfVxuXG4gICAgLyoqIEZvcm1hdCBkYXRlIG9iamVjdCBmb3IgZGF5IHBlcmlvZCAqL1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXlQZXJpb2RQYXR0ZXJuID0gLyhjb3JlVGltZVxcLlxcdytMYWJlbCkvO1xuICAgICAgICBjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKGRheVBlcmlvZFBhdHRlcm4pO1xuXG4gICAgICAgIGlmIChtYXRjaD8uWzBdKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50TGFuZ3VhZ2UgPSB0aGlzLl9jdXJyZW50TGFuZ3VhZ2VTaWduYWwoKTtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRWYWx1ZSA9IHRoaXMuX3RyYW5zbGF0aW9uUmVzb2x2ZXIucmVzb2x2ZShcbiAgICAgICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgbWF0Y2hbMF0gYXMgRmRMYW5ndWFnZUtleUlkZW50aWZpZXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNsYXRlZFZhbHVlID8gdmFsdWUucmVwbGFjZShkYXlQZXJpb2RQYXR0ZXJuLCB0cmFuc2xhdGVkVmFsdWUpIDogdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBubyBkYXkgcGVyaW9kIHBhdHRlcm4gaXMgZm91bmQsIHJldHVybiB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbn1cbiJdfQ==","/**\n * Converts a given time string to a desired format.\n *\n * @param {string} inputStr - The input time string to be converted.\n * @returns {string} - The converted time string in the desired format.\n */\nexport function convertToDesiredFormat(inputStr) {\n const dayPeriodMapping = {\n morning: 0,\n afternoon: 12,\n evening: 12,\n night: 0\n };\n const dayPeriodPattern = /\\b(morning|afternoon|evening|night)\\b/;\n const amPmPattern = /\\b(AM|PM)\\b/i;\n const convertDayPeriod = (input) => {\n const match = input.match(dayPeriodPattern);\n if (match) {\n const period = match[0].toLowerCase();\n const timeShift = dayPeriodMapping[period];\n input = input.replace(dayPeriodPattern, '').trim();\n const timeMatch = input.match(/\\d{1,2}:\\d{2}/);\n if (timeMatch) {\n const [hoursStr, minutesStr] = timeMatch[0].split(':');\n let hours = Number(hoursStr);\n const minutes = Number(minutesStr);\n hours = (hours % 12) + timeShift;\n input = input.replace(timeMatch[0], `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`);\n }\n }\n return input;\n };\n const convertAmPm = (input) => {\n const match = input.match(amPmPattern);\n if (match) {\n const period = match[0].toUpperCase();\n input = input.replace(amPmPattern, '').trim();\n const timeMatch = input.match(/\\d{1,2}:\\d{2}/);\n if (timeMatch) {\n const [hoursStr, minutesStr] = timeMatch[0].split(':');\n let hours = Number(hoursStr);\n const minutes = Number(minutesStr);\n if (period === 'PM' && hours < 12) {\n hours += 12;\n }\n if (period === 'AM' && hours === 12) {\n hours = 0;\n }\n input = input.replace(timeMatch[0], `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`);\n }\n }\n return input;\n };\n inputStr = convertDayPeriod(inputStr);\n inputStr = convertAmPm(inputStr);\n return inputStr.replace(/\\bat\\b/i, '').trim();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZGF0ZXRpbWUvZGF0ZXRpbWUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsUUFBZ0I7SUFDbkQsTUFBTSxnQkFBZ0IsR0FBRztRQUNyQixPQUFPLEVBQUUsQ0FBQztRQUNWLFNBQVMsRUFBRSxFQUFFO1FBQ2IsT0FBTyxFQUFFLEVBQUU7UUFDWCxLQUFLLEVBQUUsQ0FBQztLQUNYLENBQUM7SUFFRixNQUFNLGdCQUFnQixHQUFHLHVDQUF1QyxDQUFDO0lBQ2pFLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQztJQUVuQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBYSxFQUFVLEVBQUU7UUFDL0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEMsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0MsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMvQyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNaLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ25DLEtBQUssR0FBRyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7Z0JBQ2pDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUNqQixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ1osR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUNoRixDQUFDO1lBQ04sQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWEsRUFBVSxFQUFFO1FBQzFDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QyxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMvQyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNaLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ25DLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFLENBQUM7b0JBQ2hDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLENBQUM7Z0JBQ0QsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztvQkFDbEMsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDZCxDQUFDO2dCQUNELEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUNqQixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ1osR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUNoRixDQUFDO1lBQ04sQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixRQUFRLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVqQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnZlcnRzIGEgZ2l2ZW4gdGltZSBzdHJpbmcgdG8gYSBkZXNpcmVkIGZvcm1hdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5wdXRTdHIgLSBUaGUgaW5wdXQgdGltZSBzdHJpbmcgdG8gYmUgY29udmVydGVkLlxuICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgY29udmVydGVkIHRpbWUgc3RyaW5nIGluIHRoZSBkZXNpcmVkIGZvcm1hdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0Rlc2lyZWRGb3JtYXQoaW5wdXRTdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF5UGVyaW9kTWFwcGluZyA9IHtcbiAgICAgICAgbW9ybmluZzogMCxcbiAgICAgICAgYWZ0ZXJub29uOiAxMixcbiAgICAgICAgZXZlbmluZzogMTIsXG4gICAgICAgIG5pZ2h0OiAwXG4gICAgfTtcblxuICAgIGNvbnN0IGRheVBlcmlvZFBhdHRlcm4gPSAvXFxiKG1vcm5pbmd8YWZ0ZXJub29ufGV2ZW5pbmd8bmlnaHQpXFxiLztcbiAgICBjb25zdCBhbVBtUGF0dGVybiA9IC9cXGIoQU18UE0pXFxiL2k7XG5cbiAgICBjb25zdCBjb252ZXJ0RGF5UGVyaW9kID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaCA9IGlucHV0Lm1hdGNoKGRheVBlcmlvZFBhdHRlcm4pO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IHBlcmlvZCA9IG1hdGNoWzBdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCB0aW1lU2hpZnQgPSBkYXlQZXJpb2RNYXBwaW5nW3BlcmlvZF07XG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoZGF5UGVyaW9kUGF0dGVybiwgJycpLnRyaW0oKTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVNYXRjaCA9IGlucHV0Lm1hdGNoKC9cXGR7MSwyfTpcXGR7Mn0vKTtcbiAgICAgICAgICAgIGlmICh0aW1lTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbaG91cnNTdHIsIG1pbnV0ZXNTdHJdID0gdGltZU1hdGNoWzBdLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICAgICAgbGV0IGhvdXJzID0gTnVtYmVyKGhvdXJzU3RyKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW51dGVzID0gTnVtYmVyKG1pbnV0ZXNTdHIpO1xuICAgICAgICAgICAgICAgIGhvdXJzID0gKGhvdXJzICUgMTIpICsgdGltZVNoaWZ0O1xuICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgdGltZU1hdGNoWzBdLFxuICAgICAgICAgICAgICAgICAgICBgJHtob3Vycy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7bWludXRlcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH07XG5cbiAgICBjb25zdCBjb252ZXJ0QW1QbSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBpbnB1dC5tYXRjaChhbVBtUGF0dGVybik7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgY29uc3QgcGVyaW9kID0gbWF0Y2hbMF0udG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShhbVBtUGF0dGVybiwgJycpLnRyaW0oKTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVNYXRjaCA9IGlucHV0Lm1hdGNoKC9cXGR7MSwyfTpcXGR7Mn0vKTtcbiAgICAgICAgICAgIGlmICh0aW1lTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbaG91cnNTdHIsIG1pbnV0ZXNTdHJdID0gdGltZU1hdGNoWzBdLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICAgICAgbGV0IGhvdXJzID0gTnVtYmVyKGhvdXJzU3RyKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW51dGVzID0gTnVtYmVyKG1pbnV0ZXNTdHIpO1xuICAgICAgICAgICAgICAgIGlmIChwZXJpb2QgPT09ICdQTScgJiYgaG91cnMgPCAxMikge1xuICAgICAgICAgICAgICAgICAgICBob3VycyArPSAxMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBlcmlvZCA9PT0gJ0FNJyAmJiBob3VycyA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICAgICAgaG91cnMgPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgIHRpbWVNYXRjaFswXSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aG91cnMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfToke21pbnV0ZXMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9O1xuXG4gICAgaW5wdXRTdHIgPSBjb252ZXJ0RGF5UGVyaW9kKGlucHV0U3RyKTtcbiAgICBpbnB1dFN0ciA9IGNvbnZlcnRBbVBtKGlucHV0U3RyKTtcblxuICAgIHJldHVybiBpbnB1dFN0ci5yZXBsYWNlKC9cXGJhdFxcYi9pLCAnJykudHJpbSgpO1xufVxuIl19","/** Generate range of given lengths using given function. */\nexport function range(length, mapFn) {\n return Array.from(new Array(length)).map((_, index) => mapFn(index));\n}\n/** Adds 0 if number is less then 10 */\nexport function _leftPad(n) {\n return n === n % 10 ? `0${n}` : `${n}`;\n}\n/** Converts date to ISO8601 */\nexport function toIso8601(fdDate) {\n return [\n [fdDate.year, _leftPad(fdDate.month), _leftPad(fdDate.day)].join('-'),\n 'T',\n [_leftPad(fdDate.hour), _leftPad(fdDate.minute), _leftPad(fdDate.second)].join(':')\n ].join('');\n}\n/**\n * @param params e.g. { year: 2020, month: 1, day: 1, hour: 0, minute: 0, second: 0 }\n */\nexport function isValidByParams(params) {\n const { year, month, day, hour, minute, second } = params;\n if (!undefinedOrInRange(month, 1, 12) ||\n !undefinedOrInRange(day, 1, 31) ||\n !undefinedOrInRange(hour, 0, 23) ||\n !undefinedOrInRange(minute, 0, 59) ||\n !undefinedOrInRange(second, 0, 59)) {\n return false;\n }\n if (!isNaN(year) && !isNaN(month) && day != null && !isNaN(day)) {\n const tempDate = new Date(year, month - 1, day);\n if (tempDate.getMonth() + 1 !== month) {\n return false;\n }\n }\n const date = new Date(year, month - 1, day, hour, minute, second);\n return !Number.isNaN(date.getTime());\n}\nfunction undefinedOrInRange(value, from, to) {\n return value == null || (value >= from && value <= to);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9mZC1kYXRlLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDREQUE0RDtBQUM1RCxNQUFNLFVBQVUsS0FBSyxDQUFJLE1BQWMsRUFBRSxLQUEyQjtJQUNoRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBRUQsdUNBQXVDO0FBQ3ZDLE1BQU0sVUFBVSxRQUFRLENBQUMsQ0FBUztJQUM5QixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQzNDLENBQUM7QUFFRCwrQkFBK0I7QUFDL0IsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQU96QjtJQUNHLE9BQU87UUFDSCxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNyRSxHQUFHO1FBQ0gsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7S0FDdEYsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDZixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BTy9CO0lBQ0csTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQzFELElBQ0ksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQy9CLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDaEMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNsQyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQ3BDLENBQUM7UUFDQyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDOUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEQsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3BDLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsS0FBeUIsRUFBRSxJQUFZLEVBQUUsRUFBVTtJQUMzRSxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztBQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEdlbmVyYXRlIHJhbmdlIG9mIGdpdmVuIGxlbmd0aHMgdXNpbmcgZ2l2ZW4gZnVuY3Rpb24uICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZ2U8VD4obGVuZ3RoOiBudW1iZXIsIG1hcEZuOiAoaW5kZXg6IG51bWJlcikgPT4gVCk6IFRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obmV3IEFycmF5KGxlbmd0aCkpLm1hcCgoXywgaW5kZXgpID0+IG1hcEZuKGluZGV4KSk7XG59XG5cbi8qKiBBZGRzIDAgaWYgbnVtYmVyIGlzIGxlc3MgdGhlbiAxMCAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9sZWZ0UGFkKG46IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIG4gPT09IG4gJSAxMCA/IGAwJHtufWAgOiBgJHtufWA7XG59XG5cbi8qKiBDb252ZXJ0cyBkYXRlIHRvIElTTzg2MDEgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0lzbzg2MDEoZmREYXRlOiB7XG4gICAgeWVhcjogbnVtYmVyO1xuICAgIG1vbnRoOiBudW1iZXI7XG4gICAgZGF5OiBudW1iZXI7XG4gICAgaG91cjogbnVtYmVyO1xuICAgIG1pbnV0ZTogbnVtYmVyO1xuICAgIHNlY29uZDogbnVtYmVyO1xufSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgW2ZkRGF0ZS55ZWFyLCBfbGVmdFBhZChmZERhdGUubW9udGgpLCBfbGVmdFBhZChmZERhdGUuZGF5KV0uam9pbignLScpLFxuICAgICAgICAnVCcsXG4gICAgICAgIFtfbGVmdFBhZChmZERhdGUuaG91ciksIF9sZWZ0UGFkKGZkRGF0ZS5taW51dGUpLCBfbGVmdFBhZChmZERhdGUuc2Vjb25kKV0uam9pbignOicpXG4gICAgXS5qb2luKCcnKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcGFyYW1zIGUuZy4geyB5ZWFyOiAyMDIwLCBtb250aDogMSwgZGF5OiAxLCBob3VyOiAwLCBtaW51dGU6IDAsIHNlY29uZDogMCB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQnlQYXJhbXMocGFyYW1zOiB7XG4gICAgeWVhcjogbnVtYmVyO1xuICAgIG1vbnRoOiBudW1iZXI7XG4gICAgZGF5PzogbnVtYmVyO1xuICAgIGhvdXI/OiBudW1iZXI7XG4gICAgbWludXRlPzogbnVtYmVyO1xuICAgIHNlY29uZD86IG51bWJlcjtcbn0pOiBib29sZWFuIHtcbiAgICBjb25zdCB7IHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kIH0gPSBwYXJhbXM7XG4gICAgaWYgKFxuICAgICAgICAhdW5kZWZpbmVkT3JJblJhbmdlKG1vbnRoLCAxLCAxMikgfHxcbiAgICAgICAgIXVuZGVmaW5lZE9ySW5SYW5nZShkYXksIDEsIDMxKSB8fFxuICAgICAgICAhdW5kZWZpbmVkT3JJblJhbmdlKGhvdXIsIDAsIDIzKSB8fFxuICAgICAgICAhdW5kZWZpbmVkT3JJblJhbmdlKG1pbnV0ZSwgMCwgNTkpIHx8XG4gICAgICAgICF1bmRlZmluZWRPckluUmFuZ2Uoc2Vjb25kLCAwLCA1OSlcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWlzTmFOKHllYXIpICYmICFpc05hTihtb250aCkgJiYgZGF5ICE9IG51bGwgJiYgIWlzTmFOKGRheSkpIHtcbiAgICAgICAgY29uc3QgdGVtcERhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XG4gICAgICAgIGlmICh0ZW1wRGF0ZS5nZXRNb250aCgpICsgMSAhPT0gbW9udGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKTtcbiAgICByZXR1cm4gIU51bWJlci5pc05hTihkYXRlLmdldFRpbWUoKSk7XG59XG5cbmZ1bmN0aW9uIHVuZGVmaW5lZE9ySW5SYW5nZSh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCAodmFsdWUgPj0gZnJvbSAmJiB2YWx1ZSA8PSB0byk7XG59XG4iXX0=","import { INVALID_DATE_ERROR } from '@fundamental-ngx/cdk/utils';\nimport { isValidByParams, toIso8601 } from './fd-date.utils';\n/**\n * FdDate class is used to represent date and time.\n *\n * It's a simplified analog of native Date instance.\n * It gives some convenience methods to work with date or time data.\n *\n */\nexport class FdDate {\n /**\n * Create FdDate\n * @param year e.g. 2020\n * @param month 1 = January, 12 = December\n * @param day 1 - 31\n * @param hour 0 - 23\n * @param minute 0 - 59\n * @param second 0 - 59\n */\n constructor(year, month = 1, day = 1, hour = 0, minute = 0, second = 0) {\n if (year === undefined) {\n return FdDate.getNow();\n }\n year = Number.parseInt(year + '', 10);\n month = Number.parseInt(month + '', 10);\n day = Number.parseInt(day + '', 10);\n hour = Number.parseInt(hour + '', 10);\n minute = Number.parseInt(minute + '', 10);\n second = Number.parseInt(second + '', 10);\n this._isValid = isValidByParams({\n year,\n month,\n day,\n hour,\n minute,\n second\n });\n this.year = this._isValid ? year : NaN;\n this.month = this._isValid ? month : NaN;\n this.day = this._isValid ? day : NaN;\n this.hour = this._isValid ? hour : NaN;\n this.minute = this._isValid ? minute : NaN;\n this.second = this._isValid ? second : NaN;\n return this;\n }\n /**\n * Create FdDate instance of the current moment\n */\n static getNow() {\n return FdDate.getFdDateByDate(new Date());\n }\n /**\n * Gets today's FdDate where hour, minute and second is set to 0\n */\n static getToday() {\n return FdDate.getNow().setTime(0, 0, 0);\n }\n /**\n * Convert js date object to FdDate model\n */\n static getFdDateByDate(date) {\n return new FdDate(date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());\n }\n /**\n * Set hour, minute and second data\n * @param hour\n * @param minute\n * @param second\n */\n setTime(hour, minute, second) {\n this._isValid = isValidByParams({\n year: this.year,\n month: this.month,\n day: this.day,\n hour,\n minute,\n second\n });\n if (!this._isValid) {\n this.hour = NaN;\n this.minute = NaN;\n this.second = NaN;\n }\n else {\n this.hour = hour || hour === 0 ? hour : this.hour;\n this.minute = minute || minute === 0 ? minute : this.minute;\n this.second = second || second === 0 ? second : this.second;\n }\n return this;\n }\n /**\n * Get amount of milliseconds from 01.01.1970\n */\n getTimeStamp() {\n return this.toDate().getTime();\n }\n /**\n * Get number of weekday ex. Sunday = 1, Monday = 2, Tuesday = 3 etc.\n */\n getDayOfWeek() {\n return this.toDate().getDay() + 1;\n }\n /**\n * Get native date object from FdDate.\n */\n toDate() {\n // We have stricter validation rules than Date object.\n // For example, Date allows values for month=100 or for day=100.\n // Therefore, we need to do this trick for the consistency of the validation status\n if (!this.isDateValid()) {\n return new Date(NaN);\n }\n return new Date(this.year, this.month - 1, this.day, this.hour, this.minute, this.second);\n }\n /**\n * Method that checks validity of current FdDate instance.\n */\n isDateValid() {\n return this instanceof FdDate && this._isValid;\n }\n /**\n * Get string representation in yyyy-mm-ddThh:mm:ss format\n */\n toString() {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n return toIso8601(this);\n }\n /**\n * The valueOf() method returns the primitive value of a FdDate.\n * Returns: The number of milliseconds between 1 January 1970 00:00:00 UTC and the given date.\n */\n valueOf() {\n return this.getTimeStamp();\n }\n /**\n * Get date string in yyyy-mm-dd format\n */\n toDateString() {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n return toIso8601(this).split('T')[0];\n }\n /**\n * Get time string in hh:mm:ss format\n */\n toTimeString() {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n return toIso8601(this).split('T')[1];\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9mZC1kYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0Q7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLE1BQU07SUFxQ2Y7Ozs7Ozs7O09BUUc7SUFDSCxZQUNJLElBQWEsRUFDYixRQUFnQixDQUFDLEVBQ2pCLE1BQWMsQ0FBQyxFQUNmLE9BQWUsQ0FBQyxFQUNoQixTQUFpQixDQUFDLEVBQ2xCLFNBQWlCLENBQUM7UUFFbEIsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckIsT0FBTyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4QyxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FB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Q0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTztRQUNILE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDdEIsT0FBTyxrQkFBa0IsQ0FBQztRQUM5QixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sa0JBQWtCLENBQUM7UUFDOUIsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN6QyxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU5WQUxJRF9EQVRFX0VSUk9SIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgaXNWYWxpZEJ5UGFyYW1zLCB0b0lzbzg2MDEgfSBmcm9tICcuL2ZkLWRhdGUudXRpbHMnO1xuXG4vKipcbiAqIEZkRGF0ZSBjbGFzcyBpcyB1c2VkIHRvIHJlcHJlc2VudCBkYXRlIGFuZCB0aW1lLlxuICpcbiAqIEl0J3MgYSBzaW1wbGlmaWVkIGFuYWxvZyBvZiBuYXRpdmUgRGF0ZSBpbnN0YW5jZS5cbiAqIEl0IGdpdmVzIHNvbWUgY29udmVuaWVuY2UgbWV0aG9kcyB0byB3b3JrIHdpdGggZGF0ZSBvciB0aW1lIGRhdGEuXG4gKlxuICovXG5leHBvcnQgY2xhc3MgRmREYXRlIHtcbiAgICAvKipcbiAgICAgKiBUaGUgeWVhciBvZiB0aGUgZGF0ZS5cbiAgICAgKi9cbiAgICB5ZWFyOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbW9udGggb2YgdGhlIGRhdGUuIDEgPSBKYW51YXJ5LCAxMiA9IERlY2VtYmVyLlxuICAgICAqL1xuICAgIG1vbnRoOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBEYXkgb2YgdGhlIGRhdGUuIFN0YXJ0cyBhdCAxLlxuICAgICAqL1xuICAgIGRheTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogRGF0ZSBob3Vycy4gMCAtIDIzLlxuICAgICAqL1xuICAgIGhvdXI6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIERhdGUgbWludXRlcy4gMCAtIDU5LlxuICAgICAqL1xuICAgIG1pbnV0ZTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogRGF0ZSBzZWNvbmRzLiAwIC0gNTkuXG4gICAgICovXG4gICAgc2Vjb25kOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0aW9uIHN0YXRlXG4gICAgICovXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc1ZhbGlkOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEZkRGF0ZVxuICAgICAqIEBwYXJhbSB5ZWFyIGUuZy4gMjAyMFxuICAgICAqIEBwYXJhbSBtb250aCAxID0gSmFudWFyeSwgMTIgPSBEZWNlbWJlclxuICAgICAqIEBwYXJhbSBkYXkgMSAtIDMxXG4gICAgICogQHBhcmFtIGhvdXIgMCAtIDIzXG4gICAgICogQHBhcmFtIG1pbnV0ZSAwIC0gNTlcbiAgICAgKiBAcGFyYW0gc2Vjb25kIDAgLSA1OVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICB5ZWFyPzogbnVtYmVyLFxuICAgICAgICBtb250aDogbnVtYmVyID0gMSxcbiAgICAgICAgZGF5OiBudW1iZXIgPSAxLFxuICAgICAgICBob3VyOiBudW1iZXIgPSAwLFxuICAgICAgICBtaW51dGU6IG51bWJlciA9IDAsXG4gICAgICAgIHNlY29uZDogbnVtYmVyID0gMFxuICAgICkge1xuICAgICAgICBpZiAoeWVhciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmREYXRlLmdldE5vdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgeWVhciA9IE51bWJlci5wYXJzZUludCh5ZWFyICsgJycsIDEwKTtcbiAgICAgICAgbW9udGggPSBOdW1iZXIucGFyc2VJbnQobW9udGggKyAnJywgMTApO1xuICAgICAgICBkYXkgPSBOdW1iZXIucGFyc2VJbnQoZGF5ICsgJycsIDEwKTtcbiAgICAgICAgaG91ciA9IE51bWJlci5wYXJzZUludChob3VyICsgJycsIDEwKTtcbiAgICAgICAgbWludXRlID0gTnVtYmVyLnBhcnNlSW50KG1pbnV0ZSArICcnLCAxMCk7XG4gICAgICAgIHNlY29uZCA9IE51bWJlci5wYXJzZUludChzZWNvbmQgKyAnJywgMTApO1xuXG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc1ZhbGlkQnlQYXJhbXMoe1xuICAgICAgICAgICAgeWVhcixcbiAgICAgICAgICAgIG1vbnRoLFxuICAgICAgICAgICAgZGF5LFxuICAgICAgICAgICAgaG91cixcbiAgICAgICAgICAgIG1pbnV0ZSxcbiAgICAgICAgICAgIHNlY29uZFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnllYXIgPSB0aGlzLl9pc1ZhbGlkID8geWVhciA6IE5hTjtcbiAgICAgICAgdGhpcy5tb250aCA9IHRoaXMuX2lzVmFsaWQgPyBtb250aCA6IE5hTjtcbiAgICAgICAgdGhpcy5kYXkgPSB0aGlzLl9pc1ZhbGlkID8gZGF5IDogTmFOO1xuICAgICAgICB0aGlzLmhvdXIgPSB0aGlzLl9pc1ZhbGlkID8gaG91ciA6IE5hTjtcbiAgICAgICAgdGhpcy5taW51dGUgPSB0aGlzLl9pc1ZhbGlkID8gbWludXRlIDogTmFOO1xuICAgICAgICB0aGlzLnNlY29uZCA9IHRoaXMuX2lzVmFsaWQgPyBzZWNvbmQgOiBOYU47XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEZkRGF0ZSBpbnN0YW5jZSBvZiB0aGUgY3VycmVudCBtb21lbnRcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0Tm93KCk6IEZkRGF0ZSB7XG4gICAgICAgIHJldHVybiBGZERhdGUuZ2V0RmREYXRlQnlEYXRlKG5ldyBEYXRlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdG9kYXkncyBGZERhdGUgd2hlcmUgaG91ciwgbWludXRlIGFuZCBzZWNvbmQgaXMgc2V0IHRvIDBcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0VG9kYXkoKTogRmREYXRlIHtcbiAgICAgICAgcmV0dXJuIEZkRGF0ZS5nZXROb3coKS5zZXRUaW1lKDAsIDAsIDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBDb252ZXJ0IGpzIGRhdGUgb2JqZWN0IHRvIEZkRGF0ZSBtb2RlbFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRGZERhdGVCeURhdGUoZGF0ZTogRGF0ZSk6IEZkRGF0ZSB7XG4gICAgICAgIHJldHVybiBuZXcgRmREYXRlKFxuICAgICAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgZGF0ZS5nZXRNb250aCgpICsgMSxcbiAgICAgICAgICAgIGRhdGUuZ2V0RGF0ZSgpLFxuICAgICAgICAgICAgZGF0ZS5nZXRIb3VycygpLFxuICAgICAgICAgICAgZGF0ZS5nZXRNaW51dGVzKCksXG4gICAgICAgICAgICBkYXRlLmdldFNlY29uZHMoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBob3VyLCBtaW51dGUgYW5kIHNlY29uZCBkYXRhXG4gICAgICogQHBhcmFtIGhvdXJcbiAgICAgKiBAcGFyYW0gbWludXRlXG4gICAgICogQHBhcmFtIHNlY29uZFxuICAgICAqL1xuICAgIHNldFRpbWUoaG91cjogbnVtYmVyLCBtaW51dGU/OiBudW1iZXIsIHNlY29uZD86IG51bWJlcik6IEZkRGF0ZSB7XG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc1ZhbGlkQnlQYXJhbXMoe1xuICAgICAgICAgICAgeWVhcjogdGhpcy55ZWFyLFxuICAgICAgICAgICAgbW9udGg6IHRoaXMubW9udGgsXG4gICAgICAgICAgICBkYXk6IHRoaXMuZGF5LFxuICAgICAgICAgICAgaG91cixcbiAgICAgICAgICAgIG1pbnV0ZSxcbiAgICAgICAgICAgIHNlY29uZFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuX2lzVmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuaG91ciA9IE5hTjtcbiAgICAgICAgICAgIHRoaXMubWludXRlID0gTmFOO1xuICAgICAgICAgICAgdGhpcy5zZWNvbmQgPSBOYU47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhvdXIgPSBob3VyIHx8IGhvdXIgPT09IDAgPyBob3VyIDogdGhpcy5ob3VyO1xuICAgICAgICAgICAgdGhpcy5taW51dGUgPSBtaW51dGUgfHwgbWludXRlID09PSAwID8gbWludXRlIDogdGhpcy5taW51dGU7XG4gICAgICAgICAgICB0aGlzLnNlY29uZCA9IHNlY29uZCB8fCBzZWNvbmQgPT09IDAgPyBzZWNvbmQgOiB0aGlzLnNlY29uZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIGZyb20gMDEuMDEuMTk3MFxuICAgICAqL1xuICAgIGdldFRpbWVTdGFtcCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50b0RhdGUoKS5nZXRUaW1lKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IG51bWJlciBvZiB3ZWVrZGF5IGV4LiBTdW5kYXkgPSAxLCBNb25kYXkgPSAyLCBUdWVzZGF5ID0gMyBldGMuXG4gICAgICovXG4gICAgZ2V0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvRGF0ZSgpLmdldERheSgpICsgMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgbmF0aXZlIGRhdGUgb2JqZWN0IGZyb20gRmREYXRlLlxuICAgICAqL1xuICAgIHRvRGF0ZSgpOiBEYXRlIHtcbiAgICAgICAgLy8gV2UgaGF2ZSBzdHJpY3RlciB2YWxpZGF0aW9uIHJ1bGVzIHRoYW4gRGF0ZSBvYmplY3QuXG4gICAgICAgIC8vIEZvciBleGFtcGxlLCBEYXRlIGFsbG93cyB2YWx1ZXMgZm9yIG1vbnRoPTEwMCBvciBmb3IgZGF5PTEwMC5cbiAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBuZWVkIHRvIGRvIHRoaXMgdHJpY2sgZm9yIHRoZSBjb25zaXN0ZW5jeSBvZiB0aGUgdmFsaWRhdGlvbiBzdGF0dXNcbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZVZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGggLSAxLCB0aGlzLmRheSwgdGhpcy5ob3VyLCB0aGlzLm1pbnV0ZSwgdGhpcy5zZWNvbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0aGF0IGNoZWNrcyB2YWxpZGl0eSBvZiBjdXJyZW50IEZkRGF0ZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBpc0RhdGVWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBGZERhdGUgJiYgdGhpcy5faXNWYWxpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGluIHl5eXktbW0tZGRUaGg6bW06c3MgZm9ybWF0XG4gICAgICovXG4gICAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZVZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEX0RBVEVfRVJST1I7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnllYXIgfHwgIXRoaXMubW9udGggfHwgIXRoaXMuZGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9Jc284NjAxKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSB2YWx1ZU9mKCkgbWV0aG9kIHJldHVybnMgdGhlIHByaW1pdGl2ZSB2YWx1ZSBvZiBhIEZkRGF0ZS5cbiAgICAgKiBSZXR1cm5zOiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQyBhbmQgdGhlIGdpdmVuIGRhdGUuXG4gICAgICovXG4gICAgdmFsdWVPZigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUaW1lU3RhbXAoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgZGF0ZSBzdHJpbmcgaW4geXl5eS1tbS1kZCBmb3JtYXRcbiAgICAgKi9cbiAgICB0b0RhdGVTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZVZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEX0RBVEVfRVJST1I7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnllYXIgfHwgIXRoaXMubW9udGggfHwgIXRoaXMuZGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9Jc284NjAxKHRoaXMpLnNwbGl0KCdUJylbMF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRpbWUgc3RyaW5nIGluIGhoOm1tOnNzIGZvcm1hdFxuICAgICAqL1xuICAgIHRvVGltZVN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfREFURV9FUlJPUjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMueWVhciB8fCAhdGhpcy5tb250aCB8fCAhdGhpcy5kYXkpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9Jc284NjAxKHRoaXMpLnNwbGl0KCdUJylbMV07XG4gICAgfVxufVxuIl19","const dateInput = { year: 'numeric', month: 'numeric', day: 'numeric' };\nconst timeInput = { hour: 'numeric', minute: '2-digit' };\nconst dateTimeInput = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit'\n};\nexport const FD_DATETIME_FORMATS = {\n parse: {\n dateInput,\n timeInput,\n dateTimeInput\n },\n display: {\n dateInput,\n timeInput,\n dateTimeInput,\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthA11yLabel: { month: 'long', year: 'numeric' },\n yearA11yLabel: { year: 'numeric' }\n },\n rangeDelimiter: ' - '\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZS1mb3JtYXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGV0aW1lL2ZkLWRhdGUtZm9ybWF0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDeEUsTUFBTSxTQUFTLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUN6RCxNQUFNLGFBQWEsR0FBRztJQUNsQixJQUFJLEVBQUUsU0FBUztJQUNmLEtBQUssRUFBRSxTQUFTO0lBQ2hCLEdBQUcsRUFBRSxTQUFTO0lBQ2QsSUFBSSxFQUFFLFNBQVM7SUFDZixNQUFNLEVBQUUsU0FBUztDQUNwQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQW9CO0lBQ2hELEtBQUssRUFBRTtRQUNILFNBQVM7UUFDVCxTQUFTO1FBQ1QsYUFBYTtLQUNoQjtJQUNELE9BQU8sRUFBRTtRQUNMLFNBQVM7UUFDVCxTQUFTO1FBQ1QsYUFBYTtRQUViLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO1FBQ2pFLGNBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtRQUNsRCxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0tBQ3JDO0lBQ0QsY0FBYyxFQUFFLEtBQUs7Q0FDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVUaW1lRm9ybWF0cyB9IGZyb20gJy4vZGF0ZXRpbWUtZm9ybWF0cyc7XG5cbmNvbnN0IGRhdGVJbnB1dCA9IHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJ251bWVyaWMnLCBkYXk6ICdudW1lcmljJyB9O1xuY29uc3QgdGltZUlucHV0ID0geyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH07XG5jb25zdCBkYXRlVGltZUlucHV0ID0ge1xuICAgIHllYXI6ICdudW1lcmljJyxcbiAgICBtb250aDogJ251bWVyaWMnLFxuICAgIGRheTogJ251bWVyaWMnLFxuICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICBtaW51dGU6ICcyLWRpZ2l0J1xufTtcblxuZXhwb3J0IGNvbnN0IEZEX0RBVEVUSU1FX0ZPUk1BVFM6IERhdGVUaW1lRm9ybWF0cyA9IHtcbiAgICBwYXJzZToge1xuICAgICAgICBkYXRlSW5wdXQsXG4gICAgICAgIHRpbWVJbnB1dCxcbiAgICAgICAgZGF0ZVRpbWVJbnB1dFxuICAgIH0sXG4gICAgZGlzcGxheToge1xuICAgICAgICBkYXRlSW5wdXQsXG4gICAgICAgIHRpbWVJbnB1dCxcbiAgICAgICAgZGF0ZVRpbWVJbnB1dCxcblxuICAgICAgICBkYXRlQTExeUxhYmVsOiB7IHllYXI6ICdudW1lcmljJywgbW9udGg6ICdsb25nJywgZGF5OiAnbnVtZXJpYycgfSxcbiAgICAgICAgbW9udGhBMTF5TGFiZWw6IHsgbW9udGg6ICdsb25nJywgeWVhcjogJ251bWVyaWMnIH0sXG4gICAgICAgIHllYXJBMTF5TGFiZWw6IHsgeWVhcjogJ251bWVyaWMnIH1cbiAgICB9LFxuICAgIHJhbmdlRGVsaW1pdGVyOiAnIC0gJ1xufTtcbiJdfQ==","import { Platform } from '@angular/cdk/platform';\nimport { Inject, Injectable, LOCALE_ID, Optional } from '@angular/core';\nimport { INVALID_DATE_ERROR, LETTERS_UNICODE_RANGE } from '@fundamental-ngx/cdk/utils';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { FdDate } from './fd-date';\nimport { range, toIso8601 } from './fd-date.utils';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/cdk/platform\";\nconst AM_DAY_PERIOD_DEFAULT = 'AM';\nconst PM_DAY_PERIOD_DEFAULT = 'PM';\n/**\n * DatetimeAdapter implementation based on FdDate.\n *\n * This uses FdDate as a date model and relies on Intl.DateTimeFormat\n * for formatting and translation purposes.\n *\n */\nexport class FdDatetimeAdapter extends DatetimeAdapter {\n /** @hidden */\n constructor(localeId, platform) {\n super();\n super.setLocale(localeId);\n this._fixYearsRangeIssue = platform.TRIDENT || platform.EDGE;\n }\n /** Get year */\n getYear(date) {\n return date.year;\n }\n /** Get month */\n getMonth(date) {\n return date.month;\n }\n /** Get date */\n getDate(date) {\n return date.day;\n }\n /** Get day of week */\n getDayOfWeek(date) {\n return this._createDateInstanceByFdDate(date).getDay() + 1;\n }\n /** Get hours */\n getHours(date) {\n return date.hour;\n }\n /** Get minutes */\n getMinutes(date) {\n return date.minute;\n }\n /** Get seconds */\n getSeconds(date) {\n return date.second;\n }\n /** Get week number */\n getWeekNumber(fdDate) {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n const firstWeek = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (1 + Math.round(((date.getTime() - firstWeek.getTime()) / 86400000 - 3 + ((firstWeek.getDay() + 6) % 7)) / 7));\n }\n /** Get month names */\n getMonthNames(style) {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\n return range(12, (i) => this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, i, 1))));\n }\n /** Get date names */\n getDateNames() {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { day: 'numeric', timeZone: 'utc' });\n return range(31, (i) => this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, 0, i + 1))));\n }\n /** Get day of week names */\n getDayOfWeekNames(style) {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { weekday: style, timeZone: 'utc' });\n return range(7, (i) => this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, 0, i + 1))));\n }\n /** Get year name */\n getYearName(date) {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { year: 'numeric', timeZone: 'utc' });\n const dateInstance = this._createDateInstanceByFdDate(date);\n return this._stripDirectionalityCharacters(this._format(dateTimeFormat, dateInstance));\n }\n /** Get week name */\n getWeekName(date) {\n const weekNumber = this.getWeekNumber(date);\n return weekNumber.toLocaleString(this.locale);\n }\n /** Get hour names */\n getHourNames({ meridian, twoDigit }) {\n return range(24, (hour) => {\n if (meridian) {\n hour = hour === 0 || hour === 12 ? 12 : hour % 12;\n }\n return hour.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 });\n });\n }\n /** Get minute names */\n getMinuteNames({ twoDigit, minuteStep = 1 }) {\n const length = Math.ceil(60 / minuteStep);\n return range(length, (index) => {\n const minute = index * minuteStep;\n return minute.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 });\n });\n }\n /** Get second names */\n getSecondNames({ twoDigit }) {\n return range(60, (second) => second.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 }));\n }\n /** Get day period names */\n getDayPeriodNames() {\n const DEFAULT_PERIODS = [AM_DAY_PERIOD_DEFAULT, PM_DAY_PERIOD_DEFAULT];\n const formatter = new Intl.DateTimeFormat(this.locale, {\n hour: 'numeric',\n minute: 'numeric',\n hour12: true\n });\n try {\n const am = formatter.formatToParts(new Date(2020, 0, 1, 6)).find(({ type }) => type === 'dayPeriod')?.value;\n const pm = formatter\n .formatToParts(new Date(2020, 0, 1, 16))\n .find(({ type }) => type === 'dayPeriod')?.value;\n return am && pm ? [am, pm] : DEFAULT_PERIODS;\n }\n catch {\n const dayPeriodRegexp = new RegExp(`(${LETTERS_UNICODE_RANGE}+\\\\.*)+`, 'g');\n const amRegExpMatch = formatter.format(new Date(2020, 0, 1, 6)).match(dayPeriodRegexp);\n const pmRegExpMatch = formatter.format(new Date(2020, 0, 1, 16)).match(dayPeriodRegexp);\n return amRegExpMatch && pmRegExpMatch\n ? [amRegExpMatch[0], pmRegExpMatch[0]]\n : [AM_DAY_PERIOD_DEFAULT, PM_DAY_PERIOD_DEFAULT];\n }\n }\n /** Set hours */\n setHours(date, hours) {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setHours(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n /** Set minutes */\n setMinutes(date, hours) {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setMinutes(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n /** Set seconds */\n setSeconds(date, hours) {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setSeconds(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n /** Get first day of week */\n getFirstDayOfWeek() {\n // can't retrieve this info from Intl object or Date object, default to Sunday.\n return 0;\n }\n /** Get number of days in a month */\n getNumDaysInMonth(fdDate) {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setMonth(date.getMonth() + 1);\n date.setDate(0);\n return date.getDate();\n }\n /** Create a date object */\n createDate(year, month = 1, date = 1) {\n return new FdDate(year, month, date);\n }\n /** Get a today date object */\n today() {\n return FdDate.getToday();\n }\n /** Get a now date object */\n now() {\n return FdDate.getNow();\n }\n /** Parse any value to date object */\n parse(value, parseFormat = {}) {\n if (!value && value !== 0) {\n return null;\n }\n if (value instanceof FdDate) {\n return this.clone(value);\n }\n /**\n * We have no way using the native JS Date to set the parse format or locale,\n * so we ignore these parameters.\n */\n let date = new Date(Date.parse(value));\n if (typeof value === 'number') {\n date = new Date(value);\n }\n // Check if we are dealing with a time string\n if (Number.isNaN(date.valueOf()) &&\n typeof value === 'string' &&\n !parseFormat.year &&\n !parseFormat.day &&\n !parseFormat.month &&\n parseFormat.hour) {\n date = this._parseTimeString(value);\n }\n return this._createFdDateFromDateInstance(date);\n }\n /** Format date object to string */\n format(date, displayFormat) {\n if (!this.isValid(date)) {\n return INVALID_DATE_ERROR;\n }\n // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n // if we attempt to format a date whose year is less than 1 or greater than 9999.\n if (this._fixYearsRangeIssue && (date.year < 1 || date.year > 9999)) {\n date = this.clone(date);\n date.year = Math.max(1, Math.min(9999, date.year));\n }\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n return displayFormat.dayPeriod\n ? this._formatWithDayPeriod(date, displayFormat)\n : this._formatWithIntl(date, displayFormat);\n }\n /** Add years to a date */\n addCalendarYears(date, years) {\n return this.addCalendarMonths(date, years * 12);\n }\n /** Add months to a date */\n addCalendarMonths(fdDate, months) {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setMonth(date.getMonth() + months);\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n if (date.getDate() !== fdDate.day) {\n date.setDate(0);\n }\n return this._createFdDateFromDateInstance(date);\n }\n /** Add days to a date */\n addCalendarDays(fdDate, days) {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setDate(date.getDate() + days);\n return this._createFdDateFromDateInstance(date);\n }\n /** Clone a date object */\n clone(date) {\n return new FdDate(date.year, date.month, date.day, date.hour, date.minute, date.second);\n }\n /** Check if date object is valid */\n isValid(date) {\n if (!(date instanceof FdDate)) {\n return false;\n }\n return date.isDateValid();\n }\n /** Check if date between given dates */\n isBetween(dateToCheck, startDate, endDate) {\n const date = this._createDateInstanceByFdDate(dateToCheck);\n const start = this._createDateInstanceByFdDate(startDate);\n const end = this._createDateInstanceByFdDate(endDate);\n return date.getTime() > start.getTime() && date.getTime() < end.getTime();\n }\n /** Check if dates are equal */\n datesEqual(date1, date2) {\n if (!date1 || !date2) {\n return false;\n }\n // skip time value\n const date1Str = this.toIso8601(date1).split('T')[0];\n const date2Str = this.toIso8601(date2).split('T')[0];\n return date1Str === date2Str;\n }\n /** Check if dates and time are equal */\n dateTimesEqual(date1, date2) {\n if (!date1 || !date2) {\n return false;\n }\n return this.toIso8601(date1) === this.toIso8601(date2);\n }\n /** Format date object to ISO8601 string */\n toIso8601(fdDate) {\n return toIso8601(fdDate);\n }\n /** Check if a time format includes a day period */\n isTimeFormatIncludesDayPeriod(displayFormat) {\n if (typeof displayFormat?.hour12 === 'boolean') {\n return displayFormat.hour12;\n }\n const formattedDateNoPeriodOption = this.format(this.createDate(2020), displayFormat);\n const formattedDateWithPeriodOption = this.format(this.createDate(2020), { ...displayFormat, hour12: true });\n return formattedDateWithPeriodOption === formattedDateNoPeriodOption;\n }\n /** Check if a time format includes hours */\n isTimeFormatIncludesHours(displayFormat) {\n return typeof displayFormat?.hour === 'string';\n }\n /** Check if a time format includes minutes */\n isTimeFormatIncludesMinutes(displayFormat) {\n return typeof displayFormat?.minute === 'string';\n }\n /** Check if a time format includes seconds */\n isTimeFormatIncludesSeconds(displayFormat) {\n return typeof displayFormat?.second === 'string';\n }\n /** Format with custom pattern including day period names */\n _formatWithDayPeriod(date, displayFormat) {\n const formattedTime = this._formatWithIntl(date, { ...displayFormat, dayPeriod: undefined });\n const dayPeriodName = this._getDayPeriodName(date);\n return this._insertDayPeriod(formattedTime, dayPeriodName, displayFormat);\n }\n /** Insert day period into the formatted string */\n _insertDayPeriod(formattedTime, dayPeriodName, displayFormat) {\n if (displayFormat.year || displayFormat.month || displayFormat.day) {\n return formattedTime\n .replace(/(\\d{1,2}:\\d{2})( [AP]M)?/, `$1 ${dayPeriodName}`)\n .replace(/,\\s*(\\d{1,2}:\\d{2})/, `, at $1 ${dayPeriodName}`);\n }\n else {\n return formattedTime.replace(/(\\d{1,2}:\\d{2}(:\\d{2})?)/, `$1 ${dayPeriodName}`);\n }\n }\n /** Get day period name based on the hour */\n _getDayPeriodName(date) {\n const hour = date.hour;\n if (hour < 6) {\n return 'coreTime.nightLabel';\n }\n else if (hour < 12) {\n return 'coreTime.morningLabel';\n }\n else if (hour < 18) {\n return 'coreTime.afternoonLabel';\n }\n else {\n return 'coreTime.eveningLabel';\n }\n }\n /** Format date using Intl.DateTimeFormat */\n _formatWithIntl(date, displayFormat) {\n const formatter = new Intl.DateTimeFormat(this.locale, displayFormat);\n const dateInstance = this._createDateInstanceByFdDate(date);\n return this._stripDirectionalityCharacters(this._format(formatter, dateInstance));\n }\n /**\n * @hidden\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n * @param str The string to strip direction characters from.\n * @returns The stripped string.\n */\n _stripDirectionalityCharacters(str) {\n return str.replace(/[\\u200e\\u200f]/g, '').replace(/\\u202f/g, ' ');\n }\n /** @hidden */\n _format(formatter, date) {\n if (Number.isNaN(date.valueOf())) {\n return INVALID_DATE_ERROR;\n }\n date = this._createUTCDateInstance(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return formatter.format(date);\n }\n /**\n * @hidden\n * Create native Date instance from FdDate\n * @param date FdDate instance\n * @returns date Native date instance\n */\n _createDateInstanceByFdDate(fdDate) {\n const { year, month, day, hour, minute, second } = fdDate;\n // We have stricter validation rules than Date object.\n // For example, Date allows values for month=100 or for day=100.\n // Therefore, we need to do this trick for the consistency of the validation status\n if (!this.isValid(fdDate)) {\n return new Date(NaN);\n }\n const date = new Date();\n date.setFullYear(year, month - 1, day);\n date.setHours(hour, minute, second, 0);\n return date;\n }\n /**\n * @hidden\n * Create native Date instance in UTC\n * @param year The year\n * @param month The month as a number between 0 and 11\n * @param day The date as a number between 1 and 31.\n * @param hours The hours as a number between 0 - 24\n * @param minutes The minutes as a number between 0 - 59\n * @param seconds The seconds as a number between 0 - 59\n * @param milliseconds The milliseconds as a number between 0 - 59\n */\n _createUTCDateInstance(year, month, day, hours = 0, minutes = 0, seconds = 0, milliseconds = 0) {\n const utcDate = new Date();\n utcDate.setUTCFullYear(year, month, day);\n utcDate.setUTCHours(hours, minutes, seconds, milliseconds);\n return utcDate;\n }\n /** @hidden */\n _createFdDateFromDateInstance(date) {\n return new FdDate(date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());\n }\n /**\n * @hidden\n *\n * Since FdDatetimeAdapter can parse only \"en-US\" locale\n * there is no reason to create comprehensive time parse\n * that can understand plenty of locales.\n *\n * @param timeStr Time string to parse (E.g. '10:30 PM')\n * @returns date Native date instance\n *\n */\n _parseTimeString(timeStr) {\n /**\n * Date.parse('10:30 AM') doesn't work so we need do a trick\n * and prepend it by a date string.\n */\n const dateStr = new Intl.DateTimeFormat('en-US').format(new Date());\n const dateTimeString = `${dateStr} ${timeStr}`;\n return new Date(Date.parse(dateTimeString));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapter, deps: [{ token: LOCALE_ID, optional: true }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapter, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: i1.Platform }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZXRpbWUtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9mZC1kYXRldGltZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUVuRCxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQztBQUNuQyxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQztBQU1uQzs7Ozs7O0dBTUc7QUFFSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBdUI7SUFJMUQsY0FBYztJQUNkLFlBQTJDLFFBQWdCLEVBQUUsUUFBa0I7UUFDM0UsS0FBSyxFQUFFLENBQUM7UUFDUixLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDakUsQ0FBQztJQUtELGVBQWU7SUFDZixPQUFPLENBQUMsSUFBWTtRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixRQUFRLENBQUMsSUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIs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LElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMzRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsY0FBYztJQUNOLDZCQUE2QixDQUFDLElBQVU7UUFDNUMsT0FBTyxJQUFJLE1BQU0sQ0FDYixJQUFJLENBQUMsV0FBVyxFQUFFLEVBQ2xCLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQ25CLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFDZCxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQ2YsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUNqQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQ3BCLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNLLGdCQUFnQixDQUFDLE9BQWU7UUFDcEM7OztXQUdHO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSxjQUFjLEdBQUcsR0FBRyxPQUFPLElBQUksT0FBTyxFQUFFLENBQUM7UUFDL0MsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs4R0F0ZlEsaUJBQWlCLGtCQUtNLFNBQVM7a0hBTGhDLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7MEJBTU0sUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBMT0NBTEVfSUQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IElOVkFMSURfREFURV9FUlJPUiwgTEVUVEVSU19VTklDT0RFX1JBTkdFIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5pbXBvcnQgeyBGZExhbmd1YWdlS2V5SWRlbnRpZmllciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBEYXRldGltZUFkYXB0ZXIgfSBmcm9tICcuL2RhdGV0aW1lLWFkYXB0ZXInO1xuaW1wb3J0IHsgRmREYXRlIH0gZnJvbSAnLi9mZC1kYXRlJztcbmltcG9ydCB7IHJhbmdlLCB0b0lzbzg2MDEgfSBmcm9tICcuL2ZkLWRhdGUudXRpbHMnO1xuXG5jb25zdCBBTV9EQVlfUEVSSU9EX0RFRkFVTFQgPSAnQU0nO1xuY29uc3QgUE1fREFZX1BFUklPRF9ERUZBVUxUID0gJ1BNJztcblxudHlwZSBDdXN0b21EYXRlVGltZUZvcm1hdE9wdGlvbnMgPSBPbWl0PEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zLCAnZGF5UGVyaW9kJz4gJiB7XG4gICAgZGF5UGVyaW9kPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogRGF0ZXRpbWVBZGFwdGVyIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIEZkRGF0ZS5cbiAqXG4gKiBUaGlzIHVzZXMgRmREYXRlIGFzIGEgZGF0ZSBtb2RlbCBhbmQgcmVsaWVzIG9uIEludGwuRGF0ZVRpbWVGb3JtYXRcbiAqIGZvciBmb3JtYXR0aW5nIGFuZCB0cmFuc2xhdGlvbiBwdXJwb3Nlcy5cbiAqXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGZERhdGV0aW1lQWRhcHRlciBleHRlbmRzIERhdGV0aW1lQWRhcHRlcjxGZERhdGU+IHtcbiAgICAvKiogV2hldGhlciB0byBjbGFtcCB0aGUgZGF0ZSBiZXR3ZWVuIDEgYW5kIDk5OTkgdG8gYXZvaWQgSUUgYW5kIEVkZ2UgZXJyb3JzLiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZpeFllYXJzUmFuZ2VJc3N1ZTogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChMT0NBTEVfSUQpIGxvY2FsZUlkOiBzdHJpbmcsIHBsYXRmb3JtOiBQbGF0Zm9ybSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBzdXBlci5zZXRMb2NhbGUobG9jYWxlSWQpO1xuICAgICAgICB0aGlzLl9maXhZZWFyc1JhbmdlSXNzdWUgPSBwbGF0Zm9ybS5UUklERU5UIHx8IHBsYXRmb3JtLkVER0U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmcm9tTm93PyhkYXRlOiBGZERhdGUpOiBzdHJpbmc7XG5cbiAgICAvKiogR2V0IHllYXIgKi9cbiAgICBnZXRZZWFyKGRhdGU6IEZkRGF0ZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBkYXRlLnllYXI7XG4gICAgfVxuXG4gICAgLyoqIEdldCBtb250aCAqL1xuICAgIGdldE1vbnRoKGRhdGU6IEZkRGF0ZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBkYXRlLm1vbnRoO1xuICAgIH1cblxuICAgIC8qKiBHZXQgZGF0ZSAqL1xuICAgIGdldERhdGUoZGF0ZTogRmREYXRlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZGF5O1xuICAgIH1cblxuICAgIC8qKiBHZXQgZGF5IG9mIHdlZWsgKi9cbiAgICBnZXREYXlPZldlZWsoZGF0ZTogRmREYXRlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZURhdGVJbnN0YW5jZUJ5RmREYXRlKGRhdGUpLmdldERheSgpICsgMTtcbiAgICB9XG5cbiAgICAvKiogR2V0IGhvdXJzICovXG4gICAgZ2V0SG91cnMoZGF0ZTogRmREYXRlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuaG91cjtcbiAgICB9XG5cbiAgICAvKiogR2V0IG1pbnV0ZXMgKi9cbiAgICBnZXRNaW51dGVzKGRhdGU6IEZkRGF0ZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBkYXRlLm1pbnV0ZTtcbiAgICB9XG5cbiAgICAvKiogR2V0IHNlY29uZHMgKi9cbiAgICBnZXRTZWNvbmRzKGRhdGU6IEZkRGF0ZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBkYXRlLnNlY29uZDtcbiAgICB9XG5cbiAgICAvKiogR2V0IHdlZWsgbnVtYmVyICovXG4gICAgZ2V0V2Vla051bWJlcihmZERhdGU6IEZkRGF0ZSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShmZERhdGUpO1xuXG4gICAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIDMgLSAoKGRhdGUuZ2V0RGF5KCkgKyA2KSAlIDcpKTtcblxuICAgICAgICAvLyBKYW51YXJ5IDQgaXMgYWx3YXlzIGluIHdlZWsgMS5cbiAgICAgICAgY29uc3QgZmlyc3RXZWVrID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCA0KTtcblxuICAgICAgICAvLyBBZGp1c3QgdG8gVGh1cnNkYXkgaW4gd2VlayAxIGFuZCBjb3VudCBudW1iZXIgb2Ygd2Vla3MgZnJvbSBkYXRlIHRvIHdlZWsxLlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgMSArIE1hdGgucm91bmQoKChkYXRlLmdldFRpbWUoKSAtIGZpcnN0V2Vlay5nZXRUaW1lKCkpIC8gODY0MDAwMDAgLSAzICsgKChmaXJzdFdlZWsuZ2V0RGF5KCkgKyA2KSAlIDcpKSAvIDcpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEdldCBtb250aCBuYW1lcyAqL1xuICAgIGdldE1vbnRoTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgZGF0ZVRpbWVGb3JtYXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSwgeyBtb250aDogc3R5bGUsIHRpbWVab25lOiAndXRjJyB9KTtcbiAgICAgICAgcmV0dXJuIHJhbmdlKDEyLCAoaSkgPT5cbiAgICAgICAgICAgIHRoaXMuX3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHRoaXMuX2Zvcm1hdChkYXRlVGltZUZvcm1hdCwgbmV3IERhdGUoMjAxNywgaSwgMSkpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBHZXQgZGF0ZSBuYW1lcyAqL1xuICAgIGdldERhdGVOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IGRhdGVUaW1lRm9ybWF0ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUsIHsgZGF5OiAnbnVtZXJpYycsIHRpbWVab25lOiAndXRjJyB9KTtcbiAgICAgICAgcmV0dXJuIHJhbmdlKDMxLCAoaSkgPT5cbiAgICAgICAgICAgIHRoaXMuX3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHRoaXMuX2Zvcm1hdChkYXRlVGltZUZvcm1hdCwgbmV3IERhdGUoMjAxNywgMCwgaSArIDEpKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IGRheSBvZiB3ZWVrIG5hbWVzICovXG4gICAgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgZGF0ZVRpbWVGb3JtYXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSwgeyB3ZWVrZGF5OiBzdHlsZSwgdGltZVpvbmU6ICd1dGMnIH0pO1xuICAgICAgICByZXR1cm4gcmFuZ2UoNywgKGkpID0+XG4gICAgICAgICAgICB0aGlzLl9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0aGlzLl9mb3JtYXQoZGF0ZVRpbWVGb3JtYXQsIG5ldyBEYXRlKDIwMTcsIDAsIGkgKyAxKSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEdldCB5ZWFyIG5hbWUgKi9cbiAgICBnZXRZZWFyTmFtZShkYXRlOiBGZERhdGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkYXRlVGltZUZvcm1hdCA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLCB7IHllYXI6ICdudW1lcmljJywgdGltZVpvbmU6ICd1dGMnIH0pO1xuICAgICAgICBjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShkYXRlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHRoaXMuX2Zvcm1hdChkYXRlVGltZUZvcm1hdCwgZGF0ZUluc3RhbmNlKSk7XG4gICAgfVxuXG4gICAgLyoqIEdldCB3ZWVrIG5hbWUgKi9cbiAgICBnZXRXZWVrTmFtZShkYXRlOiBGZERhdGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB3ZWVrTnVtYmVyID0gdGhpcy5nZXRXZWVrTnVtYmVyKGRhdGUpO1xuICAgICAgICByZXR1cm4gd2Vla051bWJlci50b0xvY2FsZVN0cmluZyh0aGlzLmxvY2FsZSk7XG4gICAgfVxuXG4gICAgLyoqIEdldCBob3VyIG5hbWVzICovXG4gICAgZ2V0SG91ck5hbWVzKHsgbWVyaWRpYW4sIHR3b0RpZ2l0IH06IHsgdHdvRGlnaXQ6IGJvb2xlYW47IG1lcmlkaWFuOiBib29sZWFuIH0pOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiByYW5nZSgyNCwgKGhvdXIpID0+IHtcbiAgICAgICAgICAgIGlmIChtZXJpZGlhbikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSBob3VyID09PSAwIHx8IGhvdXIgPT09IDEyID8gMTIgOiBob3VyICUgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaG91ci50b0xvY2FsZVN0cmluZyh0aGlzLmxvY2FsZSwgeyBtaW5pbXVtSW50ZWdlckRpZ2l0czogdHdvRGlnaXQgPyAyIDogMSB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEdldCBtaW51dGUgbmFtZXMgKi9cbiAgICBnZXRNaW51dGVOYW1lcyh7IHR3b0RpZ2l0LCBtaW51dGVTdGVwID0gMSB9OiB7IHR3b0RpZ2l0OiBib29sZWFuOyBtaW51dGVTdGVwPzogbnVtYmVyIH0pOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGguY2VpbCg2MCAvIG1pbnV0ZVN0ZXApO1xuICAgICAgICByZXR1cm4gcmFuZ2UobGVuZ3RoLCAoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1pbnV0ZSA9IGluZGV4ICogbWludXRlU3RlcDtcbiAgICAgICAgICAgIHJldHVybiBtaW51dGUudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUsIHsgbWluaW11bUludGVnZXJEaWdpdHM6IHR3b0RpZ2l0ID8gMiA6IDEgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBHZXQgc2Vjb25kIG5hbWVzICovXG4gICAgZ2V0U2Vjb25kTmFtZXMoeyB0d29EaWdpdCB9OiB7IHR3b0RpZ2l0OiBib29sZWFuIH0pOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiByYW5nZSg2MCwgKHNlY29uZCkgPT4gc2Vjb25kLnRvTG9jYWxlU3RyaW5nKHRoaXMubG9jYWxlLCB7IG1pbmltdW1JbnRlZ2VyRGlnaXRzOiB0d29EaWdpdCA/IDIgOiAxIH0pKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IGRheSBwZXJpb2QgbmFtZXMgKi9cbiAgICBnZXREYXlQZXJpb2ROYW1lcygpOiBbc3RyaW5nLCBzdHJpbmddIHtcbiAgICAgICAgY29uc3QgREVGQVVMVF9QRVJJT0RTOiBbc3RyaW5nLCBzdHJpbmddID0gW0FNX0RBWV9QRVJJT0RfREVGQVVMVCwgUE1fREFZX1BFUklPRF9ERUZBVUxUXTtcblxuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSwge1xuICAgICAgICAgICAgaG91cjogJ251bWVyaWMnLFxuICAgICAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgICAgICBob3VyMTI6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGFtID0gZm9ybWF0dGVyLmZvcm1hdFRvUGFydHMobmV3IERhdGUoMjAyMCwgMCwgMSwgNikpLmZpbmQoKHsgdHlwZSB9KSA9PiB0eXBlID09PSAnZGF5UGVyaW9kJyk/LnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgcG0gPSBmb3JtYXR0ZXJcbiAgICAgICAgICAgICAgICAuZm9ybWF0VG9QYXJ0cyhuZXcgRGF0ZSgyMDIwLCAwLCAxLCAxNikpXG4gICAgICAgICAgICAgICAgLmZpbmQoKHsgdHlwZSB9KSA9PiB0eXBlID09PSAnZGF5UGVyaW9kJyk/LnZhbHVlO1xuXG4gICAgICAgICAgICByZXR1cm4gYW0gJiYgcG0gPyBbYW0sIHBtXSA6IERFRkFVTFRfUEVSSU9EUztcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICBjb25zdCBkYXlQZXJpb2RSZWdleHAgPSBuZXcgUmVnRXhwKGAoJHtMRVRURVJTX1VOSUNPREVfUkFOR0V9K1xcXFwuKikrYCwgJ2cnKTtcbiAgICAgICAgICAgIGNvbnN0IGFtUmVnRXhwTWF0Y2ggPSBmb3JtYXR0ZXIuZm9ybWF0KG5ldyBEYXRlKDIwMjAsIDAsIDEsIDYpKS5tYXRjaChkYXlQZXJpb2RSZWdleHApO1xuICAgICAgICAgICAgY29uc3QgcG1SZWdFeHBNYXRjaCA9IGZvcm1hdHRlci5mb3JtYXQobmV3IERhdGUoMjAyMCwgMCwgMSwgMTYpKS5tYXRjaChkYXlQZXJpb2RSZWdleHApO1xuXG4gICAgICAgICAgICByZXR1cm4gYW1SZWdFeHBNYXRjaCAmJiBwbVJlZ0V4cE1hdGNoXG4gICAgICAgICAgICAgICAgPyBbYW1SZWdFeHBNYXRjaFswXSwgcG1SZWdFeHBNYXRjaFswXV1cbiAgICAgICAgICAgICAgICA6IFtBTV9EQVlfUEVSSU9EX0RFRkFVTFQsIFBNX0RBWV9QRVJJT0RfREVGQVVMVF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogU2V0IGhvdXJzICovXG4gICAgc2V0SG91cnMoZGF0ZTogRmREYXRlLCBob3VyczogbnVtYmVyKTogRmREYXRlIHtcbiAgICAgICAgY29uc3QgZGF0ZUluc3RhbmNlID0gdGhpcy5fY3JlYXRlRGF0ZUluc3RhbmNlQnlGZERhdGUoZGF0ZSk7XG4gICAgICAgIGRhdGVJbnN0YW5jZS5zZXRIb3Vycyhob3Vycyk7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVGZERhdGVGcm9tRGF0ZUluc3RhbmNlKGRhdGVJbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgLyoqIFNldCBtaW51dGVzICovXG4gICAgc2V0TWludXRlcyhkYXRlOiBGZERhdGUsIGhvdXJzOiBudW1iZXIpOiBGZERhdGUge1xuICAgICAgICBjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShkYXRlKTtcbiAgICAgICAgZGF0ZUluc3RhbmNlLnNldE1pbnV0ZXMoaG91cnMpO1xuICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRmREYXRlRnJvbURhdGVJbnN0YW5jZShkYXRlSW5zdGFuY2UpO1xuICAgIH1cblxuICAgIC8qKiBTZXQgc2Vjb25kcyAqL1xuICAgIHNldFNlY29uZHMoZGF0ZTogRmREYXRlLCBob3VyczogbnVtYmVyKTogRmREYXRlIHtcbiAgICAgICAgY29uc3QgZGF0ZUluc3RhbmNlID0gdGhpcy5fY3JlYXRlRGF0ZUluc3RhbmNlQnlGZERhdGUoZGF0ZSk7XG4gICAgICAgIGRhdGVJbnN0YW5jZS5zZXRTZWNvbmRzKGhvdXJzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUZkRGF0ZUZyb21EYXRlSW5zdGFuY2UoZGF0ZUluc3RhbmNlKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IGZpcnN0IGRheSBvZiB3ZWVrICovXG4gICAgZ2V0Rmlyc3REYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICAgICAgLy8gY2FuJ3QgcmV0cmlldmUgdGhpcyBpbmZvIGZyb20gSW50bCBvYmplY3Qgb3IgRGF0ZSBvYmplY3QsIGRlZmF1bHQgdG8gU3VuZGF5LlxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICAvKiogR2V0IG51bWJlciBvZiBkYXlzIGluIGEgbW9udGggKi9cbiAgICBnZXROdW1EYXlzSW5Nb250aChmZERhdGU6IEZkRGF0ZSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShmZERhdGUpO1xuICAgICAgICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIDEpO1xuICAgICAgICBkYXRlLnNldERhdGUoMCk7XG4gICAgICAgIHJldHVybiBkYXRlLmdldERhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlIGEgZGF0ZSBvYmplY3QgKi9cbiAgICBjcmVhdGVEYXRlKHllYXI6IG51bWJlciwgbW9udGggPSAxLCBkYXRlID0gMSk6IEZkRGF0ZSB7XG4gICAgICAgIHJldHVybiBuZXcgRmREYXRlKHllYXIsIG1vbnRoLCBkYXRlKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IGEgdG9kYXkgZGF0ZSBvYmplY3QgKi9cbiAgICB0b2RheSgpOiBGZERhdGUge1xuICAgICAgICByZXR1cm4gRmREYXRlLmdldFRvZGF5KCk7XG4gICAgfVxuXG4gICAgLyoqIEdldCBhIG5vdyBkYXRlIG9iamVjdCAqL1xuICAgIG5vdygpOiBGZERhdGUge1xuICAgICAgICByZXR1cm4gRmREYXRlLmdldE5vdygpO1xuICAgIH1cblxuICAgIC8qKiBQYXJzZSBhbnkgdmFsdWUgdG8gZGF0ZSBvYmplY3QgKi9cbiAgICBwYXJzZSh2YWx1ZTogYW55LCBwYXJzZUZvcm1hdDogSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMgPSB7fSk6IEZkRGF0ZSB8IG51bGwge1xuICAgICAgICBpZiAoIXZhbHVlICYmIHZhbHVlICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZkRGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXZSBoYXZlIG5vIHdheSB1c2luZyB0aGUgbmF0aXZlIEpTIERhdGUgdG8gc2V0IHRoZSBwYXJzZSBmb3JtYXQgb3IgbG9jYWxlLFxuICAgICAgICAgKiBzbyB3ZSBpZ25vcmUgdGhlc2UgcGFyYW1ldGVycy5cbiAgICAgICAgICovXG4gICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoRGF0ZS5wYXJzZSh2YWx1ZSkpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGlmIHdlIGFyZSBkZWFsaW5nIHdpdGggYSB0aW1lIHN0cmluZ1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBOdW1iZXIuaXNOYU4oZGF0ZS52YWx1ZU9mKCkpICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAhcGFyc2VGb3JtYXQueWVhciAmJlxuICAgICAgICAgICAgIXBhcnNlRm9ybWF0LmRheSAmJlxuICAgICAgICAgICAgIXBhcnNlRm9ybWF0Lm1vbnRoICYmXG4gICAgICAgICAgICBwYXJzZUZvcm1hdC5ob3VyXG4gICAgICAgICkge1xuICAgICAgICAgICAgZGF0ZSA9IHRoaXMuX3BhcnNlVGltZVN0cmluZyh2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRmREYXRlRnJvbURhdGVJbnN0YW5jZShkYXRlKTtcbiAgICB9XG5cbiAgICAvKiogRm9ybWF0IGRhdGUgb2JqZWN0IHRvIHN0cmluZyAqL1xuICAgIGZvcm1hdChkYXRlOiBGZERhdGUsIGRpc3BsYXlGb3JtYXQ6IEN1c3RvbURhdGVUaW1lRm9ybWF0T3B0aW9ucyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKGRhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9EQVRFX0VSUk9SO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT24gSUUgYW5kIEVkZ2UgdGhlIGkxOG4gQVBJIHdpbGwgdGhyb3cgYSBoYXJkIGVycm9yIHRoYXQgY2FuIGNyYXNoIHRoZSBlbnRpcmUgYXBwXG4gICAgICAgIC8vIGlmIHdlIGF0dGVtcHQgdG8gZm9ybWF0IGEgZGF0ZSB3aG9zZSB5ZWFyIGlzIGxlc3MgdGhhbiAxIG9yIGdyZWF0ZXIgdGhhbiA5OTk5LlxuICAgICAgICBpZiAodGhpcy5fZml4WWVhcnNSYW5nZUlzc3VlICYmIChkYXRlLnllYXIgPCAxIHx8IGRhdGUueWVhciA+IDk5OTkpKSB7XG4gICAgICAgICAgICBkYXRlID0gdGhpcy5jbG9uZShkYXRlKTtcbiAgICAgICAgICAgIGRhdGUueWVhciA9IE1hdGgubWF4KDEsIE1hdGgubWluKDk5OTksIGRhdGUueWVhcikpO1xuICAgICAgICB9XG4gICAgICAgIGRpc3BsYXlGb3JtYXQgPSB7IC4uLmRpc3BsYXlGb3JtYXQsIHRpbWVab25lOiAndXRjJyB9O1xuXG4gICAgICAgIHJldHVybiBkaXNwbGF5Rm9ybWF0LmRheVBlcmlvZFxuICAgICAgICAgICAgPyB0aGlzLl9mb3JtYXRXaXRoRGF5UGVyaW9kKGRhdGUsIGRpc3BsYXlGb3JtYXQpXG4gICAgICAgICAgICA6IHRoaXMuX2Zvcm1hdFdpdGhJbnRsKGRhdGUsIGRpc3BsYXlGb3JtYXQpO1xuICAgIH1cblxuICAgIC8qKiBBZGQgeWVhcnMgdG8gYSBkYXRlICovXG4gICAgYWRkQ2FsZW5kYXJZZWFycyhkYXRlOiBGZERhdGUsIHllYXJzOiBudW1iZXIpOiBGZERhdGUge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRDYWxlbmRhck1vbnRocyhkYXRlLCB5ZWFycyAqIDEyKTtcbiAgICB9XG5cbiAgICAvKiogQWRkIG1vbnRocyB0byBhIGRhdGUgKi9cbiAgICBhZGRDYWxlbmRhck1vbnRocyhmZERhdGU6IEZkRGF0ZSwgbW9udGhzOiBudW1iZXIpOiBGZERhdGUge1xuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5fY3JlYXRlRGF0ZUluc3RhbmNlQnlGZERhdGUoZmREYXRlKTtcblxuICAgICAgICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIG1vbnRocyk7XG5cbiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0byB3aW5kIHVwIGluIHRoZSB3cm9uZyBtb250aCBpZiB0aGUgb3JpZ2luYWwgbW9udGggaGFzIG1vcmUgZGF5cyB0aGFuIHRoZSBuZXdcbiAgICAgICAgLy8gbW9udGguIEluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIGdvIHRvIHRoZSBsYXN0IGRheSBvZiB0aGUgZGVzaXJlZCBtb250aC5cbiAgICAgICAgaWYgKGRhdGUuZ2V0RGF0ZSgpICE9PSBmZERhdGUuZGF5KSB7XG4gICAgICAgICAgICBkYXRlLnNldERhdGUoMCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRmREYXRlRnJvbURhdGVJbnN0YW5jZShkYXRlKTtcbiAgICB9XG5cbiAgICAvKiogQWRkIGRheXMgdG8gYSBkYXRlICovXG4gICAgYWRkQ2FsZW5kYXJEYXlzKGZkRGF0ZTogRmREYXRlLCBkYXlzOiBudW1iZXIpOiBGZERhdGUge1xuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5fY3JlYXRlRGF0ZUluc3RhbmNlQnlGZERhdGUoZmREYXRlKTtcbiAgICAgICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgZGF5cyk7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVGZERhdGVGcm9tRGF0ZUluc3RhbmNlKGRhdGUpO1xuICAgIH1cblxuICAgIC8qKiBDbG9uZSBhIGRhdGUgb2JqZWN0ICovXG4gICAgY2xvbmUoZGF0ZTogRmREYXRlKTogRmREYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGZERhdGUoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoLCBkYXRlLmRheSwgZGF0ZS5ob3VyLCBkYXRlLm1pbnV0ZSwgZGF0ZS5zZWNvbmQpO1xuICAgIH1cblxuICAgIC8qKiBDaGVjayBpZiBkYXRlIG9iamVjdCBpcyB2YWxpZCAqL1xuICAgIGlzVmFsaWQoZGF0ZTogRmREYXRlKTogZGF0ZSBpcyBGZERhdGUge1xuICAgICAgICBpZiAoIShkYXRlIGluc3RhbmNlb2YgRmREYXRlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRlLmlzRGF0ZVZhbGlkKCk7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIGRhdGUgYmV0d2VlbiBnaXZlbiBkYXRlcyAqL1xuICAgIGlzQmV0d2VlbihkYXRlVG9DaGVjazogRmREYXRlLCBzdGFydERhdGU6IEZkRGF0ZSwgZW5kRGF0ZTogRmREYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShkYXRlVG9DaGVjayk7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fY3JlYXRlRGF0ZUluc3RhbmNlQnlGZERhdGUoc3RhcnREYXRlKTtcbiAgICAgICAgY29uc3QgZW5kID0gdGhpcy5fY3JlYXRlRGF0ZUluc3RhbmNlQnlGZERhdGUoZW5kRGF0ZSk7XG4gICAgICAgIHJldHVybiBkYXRlLmdldFRpbWUoKSA+IHN0YXJ0LmdldFRpbWUoKSAmJiBkYXRlLmdldFRpbWUoKSA8IGVuZC5nZXRUaW1lKCk7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIGRhdGVzIGFyZSBlcXVhbCAqL1xuICAgIGRhdGVzRXF1YWwoZGF0ZTE6IEZkRGF0ZSwgZGF0ZTI6IEZkRGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWRhdGUxIHx8ICFkYXRlMikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIHNraXAgdGltZSB2YWx1ZVxuICAgICAgICBjb25zdCBkYXRlMVN0ciA9IHRoaXMudG9Jc284NjAxKGRhdGUxKS5zcGxpdCgnVCcpWzBdO1xuICAgICAgICBjb25zdCBkYXRlMlN0ciA9IHRoaXMudG9Jc284NjAxKGRhdGUyKS5zcGxpdCgnVCcpWzBdO1xuICAgICAgICByZXR1cm4gZGF0ZTFTdHIgPT09IGRhdGUyU3RyO1xuICAgIH1cblxuICAgIC8qKiBDaGVjayBpZiBkYXRlcyBhbmQgdGltZSBhcmUgZXF1YWwgKi9cbiAgICBkYXRlVGltZXNFcXVhbChkYXRlMTogRmREYXRlLCBkYXRlMjogRmREYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghZGF0ZTEgfHwgIWRhdGUyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudG9Jc284NjAxKGRhdGUxKSA9PT0gdGhpcy50b0lzbzg2MDEoZGF0ZTIpO1xuICAgIH1cblxuICAgIC8qKiBGb3JtYXQgZGF0ZSBvYmplY3QgdG8gSVNPODYwMSBzdHJpbmcgKi9cbiAgICB0b0lzbzg2MDEoZmREYXRlOiBGZERhdGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdG9Jc284NjAxKGZkRGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIGEgdGltZSBmb3JtYXQgaW5jbHVkZXMgYSBkYXkgcGVyaW9kICovXG4gICAgaXNUaW1lRm9ybWF0SW5jbHVkZXNEYXlQZXJpb2QoZGlzcGxheUZvcm1hdDogQ3VzdG9tRGF0ZVRpbWVGb3JtYXRPcHRpb25zKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0eXBlb2YgZGlzcGxheUZvcm1hdD8uaG91cjEyID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXNwbGF5Rm9ybWF0LmhvdXIxMjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtYXR0ZWREYXRlTm9QZXJpb2RPcHRpb24gPSB0aGlzLmZvcm1hdCh0aGlzLmNyZWF0ZURhdGUoMjAyMCksIGRpc3BsYXlGb3JtYXQpO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWREYXRlV2l0aFBlcmlvZE9wdGlvbiA9IHRoaXMuZm9ybWF0KHRoaXMuY3JlYXRlRGF0ZSgyMDIwKSwgeyAuLi5kaXNwbGF5Rm9ybWF0LCBob3VyMTI6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWREYXRlV2l0aFBlcmlvZE9wdGlvbiA9PT0gZm9ybWF0dGVkRGF0ZU5vUGVyaW9kT3B0aW9uO1xuICAgIH1cblxuICAgIC8qKiBDaGVjayBpZiBhIHRpbWUgZm9ybWF0IGluY2x1ZGVzIGhvdXJzICovXG4gICAgaXNUaW1lRm9ybWF0SW5jbHVkZXNIb3VycyhkaXNwbGF5Rm9ybWF0OiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIGRpc3BsYXlGb3JtYXQ/LmhvdXIgPT09ICdzdHJpbmcnO1xuICAgIH1cblxuICAgIC8qKiBDaGVjayBpZiBhIHRpbWUgZm9ybWF0IGluY2x1ZGVzIG1pbnV0ZXMgKi9cbiAgICBpc1RpbWVGb3JtYXRJbmNsdWRlc01pbnV0ZXMoZGlzcGxheUZvcm1hdDogSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBkaXNwbGF5Rm9ybWF0Py5taW51dGUgPT09ICdzdHJpbmcnO1xuICAgIH1cblxuICAgIC8qKiBDaGVjayBpZiBhIHRpbWUgZm9ybWF0IGluY2x1ZGVzIHNlY29uZHMgKi9cbiAgICBpc1RpbWVGb3JtYXRJbmNsdWRlc1NlY29uZHMoZGlzcGxheUZvcm1hdDogSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBkaXNwbGF5Rm9ybWF0Py5zZWNvbmQgPT09ICdzdHJpbmcnO1xuICAgIH1cblxuICAgIC8qKiBGb3JtYXQgd2l0aCBjdXN0b20gcGF0dGVybiBpbmNsdWRpbmcgZGF5IHBlcmlvZCBuYW1lcyAqL1xuICAgIHByaXZhdGUgX2Zvcm1hdFdpdGhEYXlQZXJpb2QoZGF0ZTogRmREYXRlLCBkaXNwbGF5Rm9ybWF0OiBDdXN0b21EYXRlVGltZUZvcm1hdE9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRUaW1lID0gdGhpcy5fZm9ybWF0V2l0aEludGwoZGF0ZSwgeyAuLi5kaXNwbGF5Rm9ybWF0LCBkYXlQZXJpb2Q6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgY29uc3QgZGF5UGVyaW9kTmFtZSA9IHRoaXMuX2dldERheVBlcmlvZE5hbWUoZGF0ZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc2VydERheVBlcmlvZChmb3JtYXR0ZWRUaW1lLCBkYXlQZXJpb2ROYW1lLCBkaXNwbGF5Rm9ybWF0KTtcbiAgICB9XG5cbiAgICAvKiogSW5zZXJ0IGRheSBwZXJpb2QgaW50byB0aGUgZm9ybWF0dGVkIHN0cmluZyAqL1xuICAgIHByaXZhdGUgX2luc2VydERheVBlcmlvZChcbiAgICAgICAgZm9ybWF0dGVkVGltZTogc3RyaW5nLFxuICAgICAgICBkYXlQZXJpb2ROYW1lOiBGZExhbmd1YWdlS2V5SWRlbnRpZmllcixcbiAgICAgICAgZGlzcGxheUZvcm1hdDogQ3VzdG9tRGF0ZVRpbWVGb3JtYXRPcHRpb25zXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGRpc3BsYXlGb3JtYXQueWVhciB8fCBkaXNwbGF5Rm9ybWF0Lm1vbnRoIHx8IGRpc3BsYXlGb3JtYXQuZGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkVGltZVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oXFxkezEsMn06XFxkezJ9KSggW0FQXU0pPy8sIGAkMSAke2RheVBlcmlvZE5hbWV9YClcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvLFxccyooXFxkezEsMn06XFxkezJ9KS8sIGAsIGF0ICQxICR7ZGF5UGVyaW9kTmFtZX1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRUaW1lLnJlcGxhY2UoLyhcXGR7MSwyfTpcXGR7Mn0oOlxcZHsyfSk/KS8sIGAkMSAke2RheVBlcmlvZE5hbWV9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogR2V0IGRheSBwZXJpb2QgbmFtZSBiYXNlZCBvbiB0aGUgaG91ciAqL1xuICAgIHByaXZhdGUgX2dldERheVBlcmlvZE5hbWUoZGF0ZTogRmREYXRlKTogRmRMYW5ndWFnZUtleUlkZW50aWZpZXIge1xuICAgICAgICBjb25zdCBob3VyID0gZGF0ZS5ob3VyO1xuICAgICAgICBpZiAoaG91ciA8IDYpIHtcbiAgICAgICAgICAgIHJldHVybiAnY29yZVRpbWUubmlnaHRMYWJlbCc7XG4gICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2NvcmVUaW1lLm1vcm5pbmdMYWJlbCc7XG4gICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE4KSB7XG4gICAgICAgICAgICByZXR1cm4gJ2NvcmVUaW1lLmFmdGVybm9vbkxhYmVsJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnY29yZVRpbWUuZXZlbmluZ0xhYmVsJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBGb3JtYXQgZGF0ZSB1c2luZyBJbnRsLkRhdGVUaW1lRm9ybWF0ICovXG4gICAgcHJpdmF0ZSBfZm9ybWF0V2l0aEludGwoZGF0ZTogRmREYXRlLCBkaXNwbGF5Rm9ybWF0OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSwgZGlzcGxheUZvcm1hdCk7XG4gICAgICAgIGNvbnN0IGRhdGVJbnN0YW5jZSA9IHRoaXMuX2NyZWF0ZURhdGVJbnN0YW5jZUJ5RmREYXRlKGRhdGUpO1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGZvcm1hdHRlciwgZGF0ZUluc3RhbmNlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFN0cmlwIG91dCB1bmljb2RlIExUUiBhbmQgUlRMIGNoYXJhY3RlcnMuIEVkZ2UgYW5kIElFIGluc2VydCB0aGVzZSBpbnRvIGZvcm1hdHRlZCBkYXRlcyB3aGlsZVxuICAgICAqIG90aGVyIGJyb3dzZXJzIGRvIG5vdC4gV2UgcmVtb3ZlIHRoZW0gdG8gbWFrZSBvdXRwdXQgY29uc2lzdGVudCBhbmQgYmVjYXVzZSB0aGV5IGludGVyZmVyZSB3aXRoXG4gICAgICogZGF0ZSBwYXJzaW5nLlxuICAgICAqIEBwYXJhbSBzdHIgVGhlIHN0cmluZyB0byBzdHJpcCBkaXJlY3Rpb24gY2hhcmFjdGVycyBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSBzdHJpcHBlZCBzdHJpbmcuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnMoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1tcXHUyMDBlXFx1MjAwZl0vZywgJycpLnJlcGxhY2UoL1xcdTIwMmYvZywgJyAnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Zvcm1hdChmb3JtYXR0ZXI6IEludGwuRGF0ZVRpbWVGb3JtYXQsIGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKGRhdGUudmFsdWVPZigpKSkge1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfREFURV9FUlJPUjtcbiAgICAgICAgfVxuICAgICAgICBkYXRlID0gdGhpcy5fY3JlYXRlVVRDRGF0ZUluc3RhbmNlKFxuICAgICAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgZGF0ZS5nZXRNb250aCgpLFxuICAgICAgICAgICAgZGF0ZS5nZXREYXRlKCksXG4gICAgICAgICAgICBkYXRlLmdldEhvdXJzKCksXG4gICAgICAgICAgICBkYXRlLmdldE1pbnV0ZXMoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0U2Vjb25kcygpLFxuICAgICAgICAgICAgZGF0ZS5nZXRNaWxsaXNlY29uZHMoKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChkYXRlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3JlYXRlIG5hdGl2ZSBEYXRlIGluc3RhbmNlIGZyb20gRmREYXRlXG4gICAgICogQHBhcmFtIGRhdGUgRmREYXRlIGluc3RhbmNlXG4gICAgICogQHJldHVybnMgZGF0ZSBOYXRpdmUgZGF0ZSBpbnN0YW5jZVxuICAgICAqL1xuICAgIHByaXZhdGUgX2NyZWF0ZURhdGVJbnN0YW5jZUJ5RmREYXRlKGZkRGF0ZTogRmREYXRlKTogRGF0ZSB7XG4gICAgICAgIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQgfSA9IGZkRGF0ZTtcbiAgICAgICAgLy8gV2UgaGF2ZSBzdHJpY3RlciB2YWxpZGF0aW9uIHJ1bGVzIHRoYW4gRGF0ZSBvYmplY3QuXG4gICAgICAgIC8vIEZvciBleGFtcGxlLCBEYXRlIGFsbG93cyB2YWx1ZXMgZm9yIG1vbnRoPTEwMCBvciBmb3IgZGF5PTEwMC5cbiAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBuZWVkIHRvIGRvIHRoaXMgdHJpY2sgZm9yIHRoZSBjb25zaXN0ZW5jeSBvZiB0aGUgdmFsaWRhdGlvbiBzdGF0dXNcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoZmREYXRlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGRhdGUuc2V0RnVsbFllYXIoeWVhciwgbW9udGggLSAxLCBkYXkpO1xuICAgICAgICBkYXRlLnNldEhvdXJzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCAwKTtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENyZWF0ZSBuYXRpdmUgRGF0ZSBpbnN0YW5jZSBpbiBVVENcbiAgICAgKiBAcGFyYW0geWVhciBUaGUgeWVhclxuICAgICAqIEBwYXJhbSBtb250aCBUaGUgbW9udGggYXMgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxMVxuICAgICAqIEBwYXJhbSBkYXkgVGhlIGRhdGUgYXMgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCAzMS5cbiAgICAgKiBAcGFyYW0gaG91cnMgVGhlIGhvdXJzIGFzIGEgbnVtYmVyIGJldHdlZW4gMCAtIDI0XG4gICAgICogQHBhcmFtIG1pbnV0ZXMgVGhlIG1pbnV0ZXMgYXMgYSBudW1iZXIgYmV0d2VlbiAwIC0gNTlcbiAgICAgKiBAcGFyYW0gc2Vjb25kcyBUaGUgc2Vjb25kcyBhcyBhIG51bWJlciBiZXR3ZWVuIDAgLSA1OVxuICAgICAqIEBwYXJhbSBtaWxsaXNlY29uZHMgVGhlIG1pbGxpc2Vjb25kcyBhcyBhIG51bWJlciBiZXR3ZWVuIDAgLSA1OVxuICAgICAqL1xuICAgIHByaXZhdGUgX2NyZWF0ZVVUQ0RhdGVJbnN0YW5jZShcbiAgICAgICAgeWVhcjogbnVtYmVyLFxuICAgICAgICBtb250aDogbnVtYmVyLFxuICAgICAgICBkYXk6IG51bWJlcixcbiAgICAgICAgaG91cnMgPSAwLFxuICAgICAgICBtaW51dGVzID0gMCxcbiAgICAgICAgc2Vjb25kcyA9IDAsXG4gICAgICAgIG1pbGxpc2Vjb25kcyA9IDBcbiAgICApOiBEYXRlIHtcbiAgICAgICAgY29uc3QgdXRjRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHV0Y0RhdGUuc2V0VVRDRnVsbFllYXIoeWVhciwgbW9udGgsIGRheSk7XG4gICAgICAgIHV0Y0RhdGUuc2V0VVRDSG91cnMoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcyk7XG4gICAgICAgIHJldHVybiB1dGNEYXRlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3JlYXRlRmREYXRlRnJvbURhdGVJbnN0YW5jZShkYXRlOiBEYXRlKTogRmREYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGZERhdGUoXG4gICAgICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICBkYXRlLmdldE1vbnRoKCkgKyAxLFxuICAgICAgICAgICAgZGF0ZS5nZXREYXRlKCksXG4gICAgICAgICAgICBkYXRlLmdldEhvdXJzKCksXG4gICAgICAgICAgICBkYXRlLmdldE1pbnV0ZXMoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0U2Vjb25kcygpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqXG4gICAgICogU2luY2UgRmREYXRldGltZUFkYXB0ZXIgY2FuIHBhcnNlIG9ubHkgXCJlbi1VU1wiIGxvY2FsZVxuICAgICAqIHRoZXJlIGlzIG5vIHJlYXNvbiB0byBjcmVhdGUgY29tcHJlaGVuc2l2ZSB0aW1lIHBhcnNlXG4gICAgICogdGhhdCBjYW4gdW5kZXJzdGFuZCBwbGVudHkgb2YgbG9jYWxlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0aW1lU3RyIFRpbWUgc3RyaW5nIHRvIHBhcnNlIChFLmcuICcxMDozMCBQTScpXG4gICAgICogQHJldHVybnMgZGF0ZSBOYXRpdmUgZGF0ZSBpbnN0YW5jZVxuICAgICAqXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcGFyc2VUaW1lU3RyaW5nKHRpbWVTdHI6IHN0cmluZyk6IERhdGUge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGF0ZS5wYXJzZSgnMTA6MzAgQU0nKSBkb2Vzbid0IHdvcmsgc28gd2UgbmVlZCBkbyBhIHRyaWNrXG4gICAgICAgICAqIGFuZCBwcmVwZW5kIGl0IGJ5IGEgZGF0ZSBzdHJpbmcuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBkYXRlU3RyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuLVVTJykuZm9ybWF0KG5ldyBEYXRlKCkpO1xuICAgICAgICBjb25zdCBkYXRlVGltZVN0cmluZyA9IGAke2RhdGVTdHJ9ICR7dGltZVN0cn1gO1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5wYXJzZShkYXRlVGltZVN0cmluZykpO1xuICAgIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { DateFormatPipe, DateFromNowPipe, DateTimeFormatPipe, DayPeriodFormatPipe, TranslateDayPeriodPipe } from './datetime-format.pipes';\nimport * as i0 from \"@angular/core\";\nconst PIPES = [\n DateFormatPipe,\n DateTimeFormatPipe,\n DateFromNowPipe,\n DayPeriodFormatPipe,\n TranslateDayPeriodPipe\n];\n/**\n * @deprecated\n * Use imports of `DateFormatPipe`, `DateTimeFormatPipe`, `DateFromNowPipe` instead.\n */\nexport class FdDatetimePipesModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimePipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimePipesModule, imports: [DateFormatPipe,\n DateTimeFormatPipe,\n DateFromNowPipe,\n DayPeriodFormatPipe,\n TranslateDayPeriodPipe], exports: [DateFormatPipe,\n DateTimeFormatPipe,\n DateFromNowPipe,\n DayPeriodFormatPipe,\n TranslateDayPeriodPipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimePipesModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimePipesModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...PIPES],\n exports: [...PIPES]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZXRpbWUtcGlwZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGV0aW1lL2ZkLWRhdGV0aW1lLXBpcGVzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFDSCxjQUFjLEVBQ2QsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3pCLE1BQU0seUJBQXlCLENBQUM7O0FBRWpDLE1BQU0sS0FBSyxHQUFvQjtJQUMzQixjQUFjO0lBQ2Qsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixtQkFBbUI7SUFDbkIsc0JBQXNCO0NBQ3pCLENBQUM7QUFFRjs7O0dBR0c7QUFLSCxNQUFNLE9BQU8scUJBQXFCOzhHQUFyQixxQkFBcUI7K0dBQXJCLHFCQUFxQixZQWY5QixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIsc0JBQXNCLGFBSnRCLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixzQkFBc0I7K0dBV2IscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUpqQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUNuQixPQUFPLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBEYXRlRm9ybWF0UGlwZSxcbiAgICBEYXRlRnJvbU5vd1BpcGUsXG4gICAgRGF0ZVRpbWVGb3JtYXRQaXBlLFxuICAgIERheVBlcmlvZEZvcm1hdFBpcGUsXG4gICAgVHJhbnNsYXRlRGF5UGVyaW9kUGlwZVxufSBmcm9tICcuL2RhdGV0aW1lLWZvcm1hdC5waXBlcyc7XG5cbmNvbnN0IFBJUEVTOiBUeXBlPHVua25vd24+W10gPSBbXG4gICAgRGF0ZUZvcm1hdFBpcGUsXG4gICAgRGF0ZVRpbWVGb3JtYXRQaXBlLFxuICAgIERhdGVGcm9tTm93UGlwZSxcbiAgICBEYXlQZXJpb2RGb3JtYXRQaXBlLFxuICAgIFRyYW5zbGF0ZURheVBlcmlvZFBpcGVcbl07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVzZSBpbXBvcnRzIG9mIGBEYXRlRm9ybWF0UGlwZWAsIGBEYXRlVGltZUZvcm1hdFBpcGVgLCBgRGF0ZUZyb21Ob3dQaXBlYCBpbnN0ZWFkLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFsuLi5QSVBFU10sXG4gICAgZXhwb3J0czogWy4uLlBJUEVTXVxufSlcbmV4cG9ydCBjbGFzcyBGZERhdGV0aW1lUGlwZXNNb2R1bGUge31cbiJdfQ==","import { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS } from './datetime-formats';\nimport { FD_DATETIME_FORMATS } from './fd-date-formats';\nimport { FdDatetimeAdapter } from './fd-datetime-adapter';\nimport { FdDatetimePipesModule } from './fd-datetime-pipes.module';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class FdDatetimeAdapterModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapterModule, imports: [PlatformModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapterModule, providers: [{ provide: DatetimeAdapter, useClass: FdDatetimeAdapter }], imports: [PlatformModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapterModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [PlatformModule],\n providers: [{ provide: DatetimeAdapter, useClass: FdDatetimeAdapter }]\n }]\n }] });\nexport class FdDatetimeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeModule, imports: [FdDatetimeAdapterModule, FdDatetimePipesModule], exports: [FdDatetimePipesModule, FdDatetimeAdapterModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeModule, providers: [{ provide: DATE_TIME_FORMATS, useValue: FD_DATETIME_FORMATS }], imports: [FdDatetimeAdapterModule, FdDatetimePipesModule, FdDatetimePipesModule, FdDatetimeAdapterModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [FdDatetimeAdapterModule, FdDatetimePipesModule],\n exports: [FdDatetimePipesModule, FdDatetimeAdapterModule],\n providers: [{ provide: DATE_TIME_FORMATS, useValue: FD_DATETIME_FORMATS }]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZXRpbWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGV0aW1lL2ZkLWRhdGV0aW1lLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRW5FOzs7R0FHRztBQUtILE1BQU0sT0FBTyx1QkFBdUI7OEdBQXZCLHVCQUF1QjsrR0FBdkIsdUJBQXVCLFlBSHRCLGNBQWM7K0dBR2YsdUJBQXVCLGFBRnJCLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLFlBRDVELGNBQWM7OzJGQUdmLHVCQUF1QjtrQkFKbkMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQ3pCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztpQkFDekU7O0FBUUQsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsWUFQaEIsdUJBQXVCLEVBR0cscUJBQXFCLGFBQzlDLHFCQUFxQixFQUp0Qix1QkFBdUI7K0dBT3ZCLGdCQUFnQixhQUZkLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLENBQUMsWUFGaEUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQzlDLHFCQUFxQixFQUp0Qix1QkFBdUI7OzJGQU92QixnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsdUJBQXVCLEVBQUUscUJBQXFCLENBQUM7b0JBQ3pELE9BQU8sRUFBRSxDQUFDLHFCQUFxQixFQUFFLHVCQUF1QixDQUFDO29CQUN6RCxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztpQkFDN0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGF0Zm9ybU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEYXRldGltZUFkYXB0ZXIgfSBmcm9tICcuL2RhdGV0aW1lLWFkYXB0ZXInO1xuaW1wb3J0IHsgREFURV9USU1FX0ZPUk1BVFMgfSBmcm9tICcuL2RhdGV0aW1lLWZvcm1hdHMnO1xuaW1wb3J0IHsgRkRfREFURVRJTUVfRk9STUFUUyB9IGZyb20gJy4vZmQtZGF0ZS1mb3JtYXRzJztcbmltcG9ydCB7IEZkRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnLi9mZC1kYXRldGltZS1hZGFwdGVyJztcbmltcG9ydCB7IEZkRGF0ZXRpbWVQaXBlc01vZHVsZSB9IGZyb20gJy4vZmQtZGF0ZXRpbWUtcGlwZXMubW9kdWxlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIGRpcmVjdCBpbXBvcnRzIG9mIGNvbXBvbmVudHMgYW5kIGRpcmVjdGl2ZXMuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1BsYXRmb3JtTW9kdWxlXSxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IERhdGV0aW1lQWRhcHRlciwgdXNlQ2xhc3M6IEZkRGF0ZXRpbWVBZGFwdGVyIH1dXG59KVxuZXhwb3J0IGNsYXNzIEZkRGF0ZXRpbWVBZGFwdGVyTW9kdWxlIHt9XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0ZkRGF0ZXRpbWVBZGFwdGVyTW9kdWxlLCBGZERhdGV0aW1lUGlwZXNNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtGZERhdGV0aW1lUGlwZXNNb2R1bGUsIEZkRGF0ZXRpbWVBZGFwdGVyTW9kdWxlXSxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IERBVEVfVElNRV9GT1JNQVRTLCB1c2VWYWx1ZTogRkRfREFURVRJTUVfRk9STUFUUyB9XVxufSlcbmV4cG9ydCBjbGFzcyBGZERhdGV0aW1lTW9kdWxlIHt9XG4iXX0=","import { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS } from './datetime-formats';\nimport { FD_DATETIME_FORMATS } from './fd-date-formats';\nimport { FdDatetimeAdapter } from './fd-datetime-adapter';\n/**\n * Provides default datetime formats and datetime adapter.\n */\nexport function provideDateTimeFormats() {\n return [\n { provide: DATE_TIME_FORMATS, useValue: FD_DATETIME_FORMATS },\n {\n provide: DatetimeAdapter,\n useClass: FdDatetimeAdapter\n }\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1kYXRlLXRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZGF0ZXRpbWUvcHJvdmlkZS1kYXRlLXRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQjtJQUNsQyxPQUFPO1FBQ0gsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFO1FBQzdEO1lBQ0ksT0FBTyxFQUFFLGVBQWU7WUFDeEIsUUFBUSxFQUFFLGlCQUFpQjtTQUM5QjtLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGV0aW1lQWRhcHRlciB9IGZyb20gJy4vZGF0ZXRpbWUtYWRhcHRlcic7XG5pbXBvcnQgeyBEQVRFX1RJTUVfRk9STUFUUyB9IGZyb20gJy4vZGF0ZXRpbWUtZm9ybWF0cyc7XG5pbXBvcnQgeyBGRF9EQVRFVElNRV9GT1JNQVRTIH0gZnJvbSAnLi9mZC1kYXRlLWZvcm1hdHMnO1xuaW1wb3J0IHsgRmREYXRldGltZUFkYXB0ZXIgfSBmcm9tICcuL2ZkLWRhdGV0aW1lLWFkYXB0ZXInO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRlZmF1bHQgZGF0ZXRpbWUgZm9ybWF0cyBhbmQgZGF0ZXRpbWUgYWRhcHRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVEYXRlVGltZUZvcm1hdHMoKTogUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgeyBwcm92aWRlOiBEQVRFX1RJTUVfRk9STUFUUywgdXNlVmFsdWU6IEZEX0RBVEVUSU1FX0ZPUk1BVFMgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRGF0ZXRpbWVBZGFwdGVyLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IEZkRGF0ZXRpbWVBZGFwdGVyXG4gICAgICAgIH1cbiAgICBdO1xufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LWNvcmUtZGF0ZXRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZGF0ZXRpbWUvZnVuZGFtZW50YWwtbmd4LWNvcmUtZGF0ZXRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":["i1.DatetimeAdapter"],"mappings":"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"}