@coreui/angular-pro 5.2.23 → 5.2.25

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 (266) hide show
  1. package/esm2022/lib/accordion/accordion/accordion.component.mjs +4 -4
  2. package/esm2022/lib/accordion/accordion-button/accordion-button.directive.mjs +4 -4
  3. package/esm2022/lib/accordion/accordion-item/accordion-item.component.mjs +4 -4
  4. package/esm2022/lib/accordion/accordion.module.mjs +5 -5
  5. package/esm2022/lib/accordion/accordion.service.mjs +4 -4
  6. package/esm2022/lib/alert/alert-heading.directive.mjs +4 -4
  7. package/esm2022/lib/alert/alert-link.directive.mjs +4 -4
  8. package/esm2022/lib/alert/alert.component.mjs +4 -4
  9. package/esm2022/lib/alert/alert.module.mjs +5 -5
  10. package/esm2022/lib/avatar/avatar.component.mjs +4 -4
  11. package/esm2022/lib/avatar/avatar.module.mjs +5 -5
  12. package/esm2022/lib/backdrop/backdrop.service.mjs +4 -4
  13. package/esm2022/lib/badge/badge.component.mjs +4 -4
  14. package/esm2022/lib/badge/badge.module.mjs +5 -5
  15. package/esm2022/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +4 -4
  16. package/esm2022/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +4 -4
  17. package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +4 -4
  18. package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +4 -4
  19. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +5 -5
  20. package/esm2022/lib/button/button-close.directive.mjs +4 -4
  21. package/esm2022/lib/button/button.directive.mjs +4 -4
  22. package/esm2022/lib/button/button.module.mjs +5 -5
  23. package/esm2022/lib/button-group/button-group/button-group.component.mjs +4 -4
  24. package/esm2022/lib/button-group/button-group.module.mjs +5 -5
  25. package/esm2022/lib/button-group/button-toolbar/button-toolbar.component.mjs +4 -4
  26. package/esm2022/lib/calendar/calendar/calendar-class-view.pipe.mjs +4 -4
  27. package/esm2022/lib/calendar/calendar/calendar.component.mjs +4 -4
  28. package/esm2022/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +4 -4
  29. package/esm2022/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +4 -4
  30. package/esm2022/lib/calendar/calendar-month/calendar-class-row.pipe.mjs +4 -4
  31. package/esm2022/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +4 -4
  32. package/esm2022/lib/calendar/calendar-month/calendar-day-title.pipe.mjs +4 -4
  33. package/esm2022/lib/calendar/calendar-month/calendar-day.directive.mjs +4 -4
  34. package/esm2022/lib/calendar/calendar-month/calendar-day.pipe.mjs +4 -4
  35. package/esm2022/lib/calendar/calendar-month/calendar-month.component.mjs +4 -4
  36. package/esm2022/lib/calendar/calendar-month/calendar-row.directive.mjs +4 -4
  37. package/esm2022/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +4 -4
  38. package/esm2022/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +4 -4
  39. package/esm2022/lib/calendar/calendar.module.mjs +5 -5
  40. package/esm2022/lib/calendar/calendar.service.mjs +4 -4
  41. package/esm2022/lib/callout/callout.component.mjs +4 -4
  42. package/esm2022/lib/callout/callout.module.mjs +5 -5
  43. package/esm2022/lib/card/card-body.component.mjs +4 -4
  44. package/esm2022/lib/card/card-footer.component.mjs +4 -4
  45. package/esm2022/lib/card/card-group.component.mjs +4 -4
  46. package/esm2022/lib/card/card-header-actions.component.mjs +4 -4
  47. package/esm2022/lib/card/card-header.component.mjs +4 -4
  48. package/esm2022/lib/card/card-img-overlay/card-img-overlay.component.mjs +4 -4
  49. package/esm2022/lib/card/card-img.directive.mjs +4 -4
  50. package/esm2022/lib/card/card-link.directive.mjs +4 -4
  51. package/esm2022/lib/card/card-subtitle.directive.mjs +4 -4
  52. package/esm2022/lib/card/card-text.directive.mjs +4 -4
  53. package/esm2022/lib/card/card-title.directive.mjs +4 -4
  54. package/esm2022/lib/card/card.component.mjs +4 -4
  55. package/esm2022/lib/card/card.module.mjs +5 -5
  56. package/esm2022/lib/carousel/carousel/carousel.component.mjs +4 -4
  57. package/esm2022/lib/carousel/carousel-caption/carousel-caption.component.mjs +4 -4
  58. package/esm2022/lib/carousel/carousel-control/carousel-control.component.mjs +4 -4
  59. package/esm2022/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +4 -4
  60. package/esm2022/lib/carousel/carousel-inner/carousel-inner.component.mjs +4 -4
  61. package/esm2022/lib/carousel/carousel-item/carousel-item.component.mjs +4 -4
  62. package/esm2022/lib/carousel/carousel-state.mjs +4 -4
  63. package/esm2022/lib/carousel/carousel.config.mjs +4 -4
  64. package/esm2022/lib/carousel/carousel.module.mjs +5 -5
  65. package/esm2022/lib/carousel/carousel.service.mjs +4 -4
  66. package/esm2022/lib/collapse/collapse.directive.mjs +4 -4
  67. package/esm2022/lib/collapse/collapse.module.mjs +5 -5
  68. package/esm2022/lib/date-picker/date-picker.component.mjs +4 -4
  69. package/esm2022/lib/date-picker/date-picker.module.mjs +5 -5
  70. package/esm2022/lib/date-range-picker/date-range-picker/custom-range-key.pipe.mjs +4 -4
  71. package/esm2022/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +4 -4
  72. package/esm2022/lib/date-range-picker/date-range-picker.module.mjs +5 -5
  73. package/esm2022/lib/dropdown/dropdown/dropdown.component.mjs +7 -7
  74. package/esm2022/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +4 -4
  75. package/esm2022/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +4 -4
  76. package/esm2022/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +4 -4
  77. package/esm2022/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +4 -4
  78. package/esm2022/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +4 -4
  79. package/esm2022/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +4 -4
  80. package/esm2022/lib/dropdown/dropdown.module.mjs +5 -5
  81. package/esm2022/lib/dropdown/dropdown.service.mjs +4 -4
  82. package/esm2022/lib/element-cover/element-cover.component.mjs +4 -4
  83. package/esm2022/lib/element-cover/element-cover.module.mjs +5 -5
  84. package/esm2022/lib/footer/footer.component.mjs +4 -4
  85. package/esm2022/lib/footer/footer.module.mjs +5 -5
  86. package/esm2022/lib/form/form/form.directive.mjs +4 -4
  87. package/esm2022/lib/form/form-check/form-check-input.directive.mjs +4 -4
  88. package/esm2022/lib/form/form-check/form-check-label.directive.mjs +4 -4
  89. package/esm2022/lib/form/form-check/form-check.component.mjs +4 -4
  90. package/esm2022/lib/form/form-control/form-control.directive.mjs +4 -4
  91. package/esm2022/lib/form/form-feedback/form-feedback.component.mjs +4 -4
  92. package/esm2022/lib/form/form-floating/form-floating.directive.mjs +4 -4
  93. package/esm2022/lib/form/form-label/form-label.directive.mjs +4 -4
  94. package/esm2022/lib/form/form-select/form-select.directive.mjs +4 -4
  95. package/esm2022/lib/form/form-text/form-text.directive.mjs +4 -4
  96. package/esm2022/lib/form/form.module.mjs +5 -5
  97. package/esm2022/lib/form/input-group/input-group.component.mjs +4 -4
  98. package/esm2022/lib/form/input-group-text/input-group-text.directive.mjs +4 -4
  99. package/esm2022/lib/grid/col.component.mjs +4 -4
  100. package/esm2022/lib/grid/col.directive.mjs +4 -4
  101. package/esm2022/lib/grid/container.component.mjs +4 -4
  102. package/esm2022/lib/grid/grid.module.mjs +5 -5
  103. package/esm2022/lib/grid/gutter.directive.mjs +4 -4
  104. package/esm2022/lib/grid/row.component.mjs +4 -4
  105. package/esm2022/lib/grid/row.directive.mjs +4 -4
  106. package/esm2022/lib/header/header/header.component.mjs +4 -4
  107. package/esm2022/lib/header/header-brand/header-brand.component.mjs +4 -4
  108. package/esm2022/lib/header/header-divider/header-divider.component.mjs +4 -4
  109. package/esm2022/lib/header/header-nav/header-nav.component.mjs +4 -4
  110. package/esm2022/lib/header/header-text/header-text.component.mjs +4 -4
  111. package/esm2022/lib/header/header-toggler/header-toggler.directive.mjs +4 -4
  112. package/esm2022/lib/header/header.module.mjs +5 -5
  113. package/esm2022/lib/image/img.directive.mjs +4 -4
  114. package/esm2022/lib/image/img.module.mjs +5 -5
  115. package/esm2022/lib/list-group/list-group-item.directive.mjs +4 -4
  116. package/esm2022/lib/list-group/list-group.directive.mjs +4 -4
  117. package/esm2022/lib/list-group/list-group.module.mjs +5 -5
  118. package/esm2022/lib/loading-button/loading-button.component.mjs +4 -4
  119. package/esm2022/lib/loading-button/loading-button.module.mjs +5 -5
  120. package/esm2022/lib/modal/modal/modal.component.mjs +4 -4
  121. package/esm2022/lib/modal/modal-body/modal-body.component.mjs +4 -4
  122. package/esm2022/lib/modal/modal-content/modal-content.component.mjs +4 -4
  123. package/esm2022/lib/modal/modal-dialog/modal-dialog.component.mjs +4 -4
  124. package/esm2022/lib/modal/modal-dismiss/modal-toggle.directive.mjs +4 -4
  125. package/esm2022/lib/modal/modal-footer/modal-footer.component.mjs +4 -4
  126. package/esm2022/lib/modal/modal-header/modal-header.component.mjs +4 -4
  127. package/esm2022/lib/modal/modal-title/modal-title.directive.mjs +4 -4
  128. package/esm2022/lib/modal/modal.module.mjs +5 -5
  129. package/esm2022/lib/modal/modal.service.mjs +4 -4
  130. package/esm2022/lib/multi-select/multi-select/multi-select-search.directive.mjs +4 -4
  131. package/esm2022/lib/multi-select/multi-select/multi-select.component.mjs +4 -4
  132. package/esm2022/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +4 -4
  133. package/esm2022/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +4 -4
  134. package/esm2022/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +4 -4
  135. package/esm2022/lib/multi-select/multi-select-option/multi-select-option.component.mjs +4 -4
  136. package/esm2022/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +4 -4
  137. package/esm2022/lib/multi-select/multi-select.module.mjs +5 -5
  138. package/esm2022/lib/multi-select/multi-select.service.mjs +4 -4
  139. package/esm2022/lib/nav/nav-item.component.mjs +4 -4
  140. package/esm2022/lib/nav/nav-link.directive.mjs +4 -4
  141. package/esm2022/lib/nav/nav.component.mjs +4 -4
  142. package/esm2022/lib/nav/nav.module.mjs +5 -5
  143. package/esm2022/lib/navbar/navbar-brand/navbar-brand.directive.mjs +4 -4
  144. package/esm2022/lib/navbar/navbar-nav/navbar-nav.component.mjs +4 -4
  145. package/esm2022/lib/navbar/navbar-text/navbar-text.component.mjs +4 -4
  146. package/esm2022/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +4 -4
  147. package/esm2022/lib/navbar/navbar.component.mjs +4 -4
  148. package/esm2022/lib/navbar/navbar.module.mjs +5 -5
  149. package/esm2022/lib/offcanvas/offcanvas/offcanvas.component.mjs +4 -4
  150. package/esm2022/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +4 -4
  151. package/esm2022/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +4 -4
  152. package/esm2022/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +4 -4
  153. package/esm2022/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +4 -4
  154. package/esm2022/lib/offcanvas/offcanvas.module.mjs +5 -5
  155. package/esm2022/lib/offcanvas/offcanvas.service.mjs +4 -4
  156. package/esm2022/lib/pagination/page-item/page-item.component.mjs +4 -4
  157. package/esm2022/lib/pagination/page-item/page-item.directive.mjs +4 -4
  158. package/esm2022/lib/pagination/page-link/page-link.directive.mjs +4 -4
  159. package/esm2022/lib/pagination/pagination/pagination.component.mjs +4 -4
  160. package/esm2022/lib/pagination/pagination.module.mjs +5 -5
  161. package/esm2022/lib/placeholder/placeholder-animation.directive.mjs +4 -4
  162. package/esm2022/lib/placeholder/placeholder.directive.mjs +4 -4
  163. package/esm2022/lib/placeholder/placeholder.module.mjs +5 -5
  164. package/esm2022/lib/popover/popover/popover.component.mjs +4 -4
  165. package/esm2022/lib/popover/popover.directive.mjs +4 -4
  166. package/esm2022/lib/popover/popover.module.mjs +5 -5
  167. package/esm2022/lib/progress/progress-bar.component.mjs +4 -4
  168. package/esm2022/lib/progress/progress-bar.directive.mjs +4 -4
  169. package/esm2022/lib/progress/progress-stacked.component.mjs +4 -4
  170. package/esm2022/lib/progress/progress.component.mjs +4 -4
  171. package/esm2022/lib/progress/progress.module.mjs +5 -5
  172. package/esm2022/lib/rating/rating-item-label/rating-item-label.component.mjs +4 -4
  173. package/esm2022/lib/rating/rating.component.mjs +4 -4
  174. package/esm2022/lib/rating/rating.module.mjs +5 -5
  175. package/esm2022/lib/services/class-toggle.service.mjs +4 -4
  176. package/esm2022/lib/services/color-mode.service.mjs +4 -4
  177. package/esm2022/lib/services/in-memory-storage.service.mjs +4 -4
  178. package/esm2022/lib/services/intersection.service.mjs +4 -4
  179. package/esm2022/lib/services/listeners.service.mjs +4 -4
  180. package/esm2022/lib/services/local-storage.service.mjs +4 -4
  181. package/esm2022/lib/shared/element-ref.directive.mjs +4 -4
  182. package/esm2022/lib/shared/html-attr.directive.mjs +4 -4
  183. package/esm2022/lib/shared/shared.module.mjs +5 -5
  184. package/esm2022/lib/shared/template-id.directive.mjs +4 -4
  185. package/esm2022/lib/shared/theme.directive.mjs +4 -4
  186. package/esm2022/lib/sidebar/sidebar/sidebar.component.mjs +4 -4
  187. package/esm2022/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +4 -4
  188. package/esm2022/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +4 -4
  189. package/esm2022/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +4 -4
  190. package/esm2022/lib/sidebar/sidebar-header/sidebar-header.component.mjs +4 -4
  191. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +4 -4
  192. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +4 -4
  193. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-group.service.mjs +4 -4
  194. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +4 -4
  195. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +4 -4
  196. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +4 -4
  197. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +7 -7
  198. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +4 -4
  199. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +4 -4
  200. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +7 -7
  201. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +7 -7
  202. package/esm2022/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +4 -4
  203. package/esm2022/lib/sidebar/sidebar-toggler/sidebar-toggler.directive.mjs +4 -4
  204. package/esm2022/lib/sidebar/sidebar.module.mjs +5 -5
  205. package/esm2022/lib/sidebar/sidebar.service.mjs +4 -4
  206. package/esm2022/lib/smart-pagination/smart-pagination.component.mjs +4 -4
  207. package/esm2022/lib/smart-pagination/smart-pagination.module.mjs +5 -5
  208. package/esm2022/lib/smart-table/smart-table/smart-table.component.mjs +4 -4
  209. package/esm2022/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.mjs +4 -4
  210. package/esm2022/lib/smart-table/smart-table-filter/filter-input.directive.mjs +4 -4
  211. package/esm2022/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +4 -4
  212. package/esm2022/lib/smart-table/smart-table-head/smart-table-column-label.pipe.mjs +4 -4
  213. package/esm2022/lib/smart-table/smart-table-head/smart-table-head.component.mjs +4 -4
  214. package/esm2022/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +4 -4
  215. package/esm2022/lib/smart-table/smart-table.module.mjs +5 -5
  216. package/esm2022/lib/spinner/spinner.component.mjs +4 -4
  217. package/esm2022/lib/spinner/spinner.module.mjs +5 -5
  218. package/esm2022/lib/table/table-active.directive.mjs +4 -4
  219. package/esm2022/lib/table/table-color.directive.mjs +4 -4
  220. package/esm2022/lib/table/table.directive.mjs +4 -4
  221. package/esm2022/lib/table/table.module.mjs +5 -5
  222. package/esm2022/lib/tabs/tab-content/tab-content.component.mjs +4 -4
  223. package/esm2022/lib/tabs/tab-content-ref.directive.mjs +4 -4
  224. package/esm2022/lib/tabs/tab-pane/tab-pane.component.mjs +4 -4
  225. package/esm2022/lib/tabs/tab.service.mjs +4 -4
  226. package/esm2022/lib/tabs/tabs.module.mjs +5 -5
  227. package/esm2022/lib/tabs-2/tab/tab.directive.mjs +4 -4
  228. package/esm2022/lib/tabs-2/tab-panel/tab-panel.component.mjs +7 -7
  229. package/esm2022/lib/tabs-2/tabs-content/tabs-content.component.mjs +4 -4
  230. package/esm2022/lib/tabs-2/tabs-list/tabs-list.component.mjs +6 -6
  231. package/esm2022/lib/tabs-2/tabs.component.mjs +4 -4
  232. package/esm2022/lib/tabs-2/tabs.service.mjs +4 -4
  233. package/esm2022/lib/tabs-2/tabs2.module.mjs +5 -5
  234. package/esm2022/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +7 -7
  235. package/esm2022/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +7 -7
  236. package/esm2022/lib/time-picker/time-picker.component.mjs +4 -4
  237. package/esm2022/lib/time-picker/time-picker.module.mjs +5 -5
  238. package/esm2022/lib/toast/toast/toast.component.mjs +4 -4
  239. package/esm2022/lib/toast/toast-body/toast-body.component.mjs +4 -4
  240. package/esm2022/lib/toast/toast-close.directive.mjs +4 -4
  241. package/esm2022/lib/toast/toast-header/toast-header.component.mjs +4 -4
  242. package/esm2022/lib/toast/toast.module.mjs +5 -5
  243. package/esm2022/lib/toast/toaster/toaster-host.directive.mjs +4 -4
  244. package/esm2022/lib/toast/toaster/toaster.component.mjs +4 -4
  245. package/esm2022/lib/toast/toaster/toaster.service.mjs +4 -4
  246. package/esm2022/lib/tooltip/tooltip/tooltip.component.mjs +4 -4
  247. package/esm2022/lib/tooltip/tooltip.directive.mjs +4 -4
  248. package/esm2022/lib/tooltip/tooltip.module.mjs +5 -5
  249. package/esm2022/lib/utilities/align.directive.mjs +4 -4
  250. package/esm2022/lib/utilities/bg-color.directive.mjs +4 -4
  251. package/esm2022/lib/utilities/border.directive.mjs +4 -4
  252. package/esm2022/lib/utilities/rounded.directive.mjs +4 -4
  253. package/esm2022/lib/utilities/shadow-on-scroll.directive.mjs +4 -4
  254. package/esm2022/lib/utilities/text-bg-color.directive.mjs +4 -4
  255. package/esm2022/lib/utilities/text-color.directive.mjs +4 -4
  256. package/esm2022/lib/utilities/utilities.module.mjs +5 -5
  257. package/esm2022/lib/widget/widget-stat-a/widget-stat-a.component.mjs +4 -4
  258. package/esm2022/lib/widget/widget-stat-b/widget-stat-b.component.mjs +4 -4
  259. package/esm2022/lib/widget/widget-stat-c/widget-stat-c.component.mjs +4 -4
  260. package/esm2022/lib/widget/widget-stat-d/widget-stat-d.component.mjs +4 -4
  261. package/esm2022/lib/widget/widget-stat-e/widget-stat-e.component.mjs +4 -4
  262. package/esm2022/lib/widget/widget-stat-f/widget-stat-f.component.mjs +4 -4
  263. package/esm2022/lib/widget/widget.module.mjs +5 -5
  264. package/fesm2022/coreui-angular-pro.mjs +858 -858
  265. package/fesm2022/coreui-angular-pro.mjs.map +1 -1
  266. package/package.json +3 -3
@@ -420,10 +420,10 @@ export class CalendarMonthComponent {
420
420
  getYearEnd(year) {
421
421
  return new Date(year, 11, 1, 0, 0, -1, 0);
422
422
  }
423
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CalendarMonthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
424
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: CalendarMonthComponent, isStandalone: true, selector: "c-calendar-month", inputs: { pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "calendarDays", predicate: CalendarDayDirective, descendants: true }, { propertyName: "calendarRows", predicate: CalendarRowDirective, descendants: true }], exportAs: ["cCalendarMonth"], ngImport: i0, template: "<table>\n @if (view() === 'days') {\n <thead>\n <tr>\n @if (showWeekNumber()) {\n <th class=\"calendar-cell\">\n <div class=\"calendar-header-cell-inner\">{{ weekNumbersLabel() }}</div>\n </th>\n }\n @for (weekDay of weekDays(); track weekDay.date; let i = $index) {\n @let date = weekDay.date ;\n <th class=\"calendar-cell\" abbr=\"{{date | calendarWeekday:'long':locale()}}\">\n <div class=\"calendar-header-cell-inner\">\n {{ date | calendarWeekday:weekdayFormat():locale() }}\n </div>\n </th>\n }\n </tr>\n </thead>\n }\n <tbody (mouseleave)=\"handleCellMouseLeave()\">\n @switch (view()) {\n @case ('years') {\n @for (yearsRow of listOfYears(); track yearsRow[0]; let rowIdx = $index) {\n <tr>\n @for (year of yearsRow; track year; let idx = $index) {\n <td\n #calendarYear=\"cCalendarDay\"\n (click)=\"!calendarYear.disabled$() && handleYearCellClick(year)\"\n (keydown)=\"calendarYear.date() && handleDayCellKeyDown($event, calendarYear.date())\"\n (keyup)=\"handleYearCellKeyUp($event, calendarYear.date())\"\n (mouseenter)=\"calendarYear.date() && handleCellMouseEnter(calendarYear.date())\"\n [attr.aria-label]=\"calendarYear.date()?.getFullYear()\"\n [date]=\"getYearStart(year)\"\n [ngClass]=\"year | calendarClassYear\"\n [tabindex]=\"calendarYear.disabled$() ? -1 : 0\"\n cCalendarDay\n >\n <div class=\"calendar-cell-inner\">\n {{ yearNumber(year) }}\n </div>\n </td>\n }\n </tr>\n }\n }\n @case ('months') {\n @for (monthsRow of listOfMonths(); track monthsRow[0]; let rowIdx = $index) {\n <tr>\n @for (month of monthsRow; track month; let idx = $index) {\n @let monthStart = getMonthStart(rowIdx*3+idx);\n <td\n #calendarMonth=\"cCalendarDay\"\n (click)=\"!calendarMonth.disabled$() && handleMonthCellClick(calendarMonth.date())\"\n (keydown)=\"calendarMonth.date() && handleDayCellKeyDown($event, calendarMonth.date())\"\n (keyup)=\"handleMonthCellKeyUp($event, calendarMonth.date())\"\n (mouseenter)=\"calendarMonth.date() && handleCellMouseEnter(calendarMonth.date())\"\n [attr.aria-label]=\"calendarMonth.date()?.getFullYear()+' '+month.month\"\n [date]=\"monthStart\"\n [ngClass]=\"monthStart | calendarClassMonth:(rowIdx*3+idx)\"\n [tabindex]=\"calendarMonth.disabled$() ? -1 : 0\"\n cCalendarDay\n >\n <div class=\"calendar-cell-inner\">\n {{ month.month }}\n </div>\n </td>\n }\n </tr>\n }\n\n }\n @default {\n @let weekSelection = selectionType() === 'week';\n @let daySelection = selectionType() === 'day';\n @for (week of monthDetails(); track week.days[0]; let i = $index) {\n <tr #calendarRow=\"cCalendarRow\"\n (click)=\"weekSelection && (calendarRow.current) && calendarRow.date && handleDayCellClick(calendarRow.date)\"\n (keydown)=\"weekSelection && (calendarRow.current) && calendarRow.date && handleDayCellKeyDown($event, calendarRow.date)\"\n (keyup)=\"weekSelection && (calendarRow.current) && calendarRow.date && handleDayCellKeyUp($event, calendarRow.date)\"\n (mouseenter)=\"weekSelection && calendarRow.date && handleCellMouseEnter(calendarRow.date)\"\n [cCalendarRow]=\"week\"\n >\n @if (showWeekNumber()) {\n <th class=\"calendar-cell-week-number\">\n {{ week.weekNumber === 0 ? 53 : week.weekNumber }}\n </th>\n }\n @for (dateObj of week.days; track dateObj.date; let idx = $index) {\n @let currentMonth = dateObj.month === 'current';\n @if (currentMonth || showAdjacentDays()) {\n @let selectable = daySelection && (currentMonth || selectAdjacentDays());\n <td #calendarCell=\"cCalendarDay\"\n (click)=\"selectable && handleDayCellClick(dateObj.date)\"\n (keydown)=\"selectable && handleDayCellKeyDown($event, dateObj.date)\"\n (keyup)=\"selectable && handleDayCellKeyUp($event, dateObj.date)\"\n (mouseenter)=\"selectable && handleCellMouseEnter(dateObj.date)\"\n [attr.aria-label]=\"dateObj.date | calendarDayTitle:locale()\"\n [date]=\"dateObj.date\"\n [month]=\"dateObj.month\"\n [ngClass]=\"dateObj | calendarClassDay:{minDate: minDate(), maxDate: maxDate(), disabledDates: disabledDates(), dateFilter: dateFilter()}\"\n [tabindex]=\"selectable && !isDateDisabled(dateObj.date) ? 0 : -1\"\n cCalendarDay\n >\n <div class=\"calendar-cell-inner\">\n {{ dateObj.date | calendarDay:dayFormat():locale() }}\n </div>\n </td>\n } @else {\n <td class=\"calendar-cell\"></td>\n }\n }\n </tr>\n }\n }\n }\n </tbody>\n</table>\n\n", styles: [".btn-transparent:focus-visible{outline:-webkit-focus-ring-color auto 1px}.calendar-row:focus-visible{box-shadow:var(--cui-calendar-cell-focus-box-shadow);border-radius:.375rem}.calendar-row:focus-within:not([tabindex=\"-1\"]){outline:0;box-shadow:var(--cui-calendar-cell-focus-box-shadow);border-radius:.375rem;outline-style:auto!important}.calendar-row:focus:not([tabindex=\"-1\"]){outline:0;box-shadow:var(--cui-calendar-cell-focus-box-shadow);border-radius:.375rem;outline-style:auto!important}.calendar-cell:focus:not(:focus-visible):not([tabindex=\"-1\"]){box-shadow:var(--cui-calendar-cell-focus-box-shadow);border-radius:.375rem}.calendar-cell-inner{-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "directive", type: CalendarDayDirective, selector: "[cCalendarDay]", inputs: ["date", "month"], exportAs: ["cCalendarDay"] }, { kind: "pipe", type: CalendarDayPipe, name: "calendarDay" }, { kind: "pipe", type: CalendarDayTitlePipe, name: "calendarDayTitle" }, { kind: "directive", type: CalendarRowDirective, selector: "[cCalendarRow]", inputs: ["cCalendarRow"], exportAs: ["cCalendarRow"] }, { kind: "pipe", type: CalendarClassDayPipe, name: "calendarClassDay" }, { kind: "pipe", type: CalendarClassMonthPipe, name: "calendarClassMonth" }, { kind: "pipe", type: CalendarClassYearPipe, name: "calendarClassYear" }, { kind: "pipe", type: CalendarWeekdayPipe, name: "calendarWeekday" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
423
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CalendarMonthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
424
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: CalendarMonthComponent, isStandalone: true, selector: "c-calendar-month", inputs: { pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "calendarDays", predicate: CalendarDayDirective, descendants: true }, { propertyName: "calendarRows", predicate: CalendarRowDirective, descendants: true }], exportAs: ["cCalendarMonth"], ngImport: i0, template: "<table>\n @if (view() === 'days') {\n <thead>\n <tr>\n @if (showWeekNumber()) {\n <th class=\"calendar-cell\">\n <div class=\"calendar-header-cell-inner\">{{ weekNumbersLabel() }}</div>\n </th>\n }\n @for (weekDay of weekDays(); track weekDay.date; let i = $index) {\n @let date = weekDay.date ;\n <th class=\"calendar-cell\" abbr=\"{{date | calendarWeekday:'long':locale()}}\">\n <div class=\"calendar-header-cell-inner\">\n {{ date | calendarWeekday:weekdayFormat():locale() }}\n </div>\n </th>\n }\n </tr>\n </thead>\n }\n <tbody (mouseleave)=\"handleCellMouseLeave()\">\n @switch (view()) {\n @case ('years') {\n @for (yearsRow of listOfYears(); track yearsRow[0]; let rowIdx = $index) {\n <tr>\n @for (year of yearsRow; track year; let idx = $index) {\n <td\n #calendarYear=\"cCalendarDay\"\n (click)=\"!calendarYear.disabled$() && handleYearCellClick(year)\"\n (keydown)=\"calendarYear.date() && handleDayCellKeyDown($event, calendarYear.date())\"\n (keyup)=\"handleYearCellKeyUp($event, calendarYear.date())\"\n (mouseenter)=\"calendarYear.date() && handleCellMouseEnter(calendarYear.date())\"\n [attr.aria-label]=\"calendarYear.date()?.getFullYear()\"\n [date]=\"getYearStart(year)\"\n [ngClass]=\"year | calendarClassYear\"\n [tabindex]=\"calendarYear.disabled$() ? -1 : 0\"\n cCalendarDay\n >\n <div class=\"calendar-cell-inner\">\n {{ yearNumber(year) }}\n </div>\n </td>\n }\n </tr>\n }\n }\n @case ('months') {\n @for (monthsRow of listOfMonths(); track monthsRow[0]; let rowIdx = $index) {\n <tr>\n @for (month of monthsRow; track month; let idx = $index) {\n @let monthStart = getMonthStart(rowIdx*3+idx);\n <td\n #calendarMonth=\"cCalendarDay\"\n (click)=\"!calendarMonth.disabled$() && handleMonthCellClick(calendarMonth.date())\"\n (keydown)=\"calendarMonth.date() && handleDayCellKeyDown($event, calendarMonth.date())\"\n (keyup)=\"handleMonthCellKeyUp($event, calendarMonth.date())\"\n (mouseenter)=\"calendarMonth.date() && handleCellMouseEnter(calendarMonth.date())\"\n [attr.aria-label]=\"calendarMonth.date()?.getFullYear()+' '+month.month\"\n [date]=\"monthStart\"\n [ngClass]=\"monthStart | calendarClassMonth:(rowIdx*3+idx)\"\n [tabindex]=\"calendarMonth.disabled$() ? -1 : 0\"\n cCalendarDay\n >\n <div class=\"calendar-cell-inner\">\n {{ month.month }}\n </div>\n </td>\n }\n </tr>\n }\n\n }\n @default {\n @let weekSelection = selectionType() === 'week';\n @let daySelection = selectionType() === 'day';\n @for (week of monthDetails(); track week.days[0]; let i = $index) {\n <tr #calendarRow=\"cCalendarRow\"\n (click)=\"weekSelection && (calendarRow.current) && calendarRow.date && handleDayCellClick(calendarRow.date)\"\n (keydown)=\"weekSelection && (calendarRow.current) && calendarRow.date && handleDayCellKeyDown($event, calendarRow.date)\"\n (keyup)=\"weekSelection && (calendarRow.current) && calendarRow.date && handleDayCellKeyUp($event, calendarRow.date)\"\n (mouseenter)=\"weekSelection && calendarRow.date && handleCellMouseEnter(calendarRow.date)\"\n [cCalendarRow]=\"week\"\n >\n @if (showWeekNumber()) {\n <th class=\"calendar-cell-week-number\">\n {{ week.weekNumber === 0 ? 53 : week.weekNumber }}\n </th>\n }\n @for (dateObj of week.days; track dateObj.date; let idx = $index) {\n @let currentMonth = dateObj.month === 'current';\n @if (currentMonth || showAdjacentDays()) {\n @let selectable = daySelection && (currentMonth || selectAdjacentDays());\n <td #calendarCell=\"cCalendarDay\"\n (click)=\"selectable && handleDayCellClick(dateObj.date)\"\n (keydown)=\"selectable && handleDayCellKeyDown($event, dateObj.date)\"\n (keyup)=\"selectable && handleDayCellKeyUp($event, dateObj.date)\"\n (mouseenter)=\"selectable && handleCellMouseEnter(dateObj.date)\"\n [attr.aria-label]=\"dateObj.date | calendarDayTitle:locale()\"\n [date]=\"dateObj.date\"\n [month]=\"dateObj.month\"\n [ngClass]=\"dateObj | calendarClassDay:{minDate: minDate(), maxDate: maxDate(), disabledDates: disabledDates(), dateFilter: dateFilter()}\"\n [tabindex]=\"selectable && !isDateDisabled(dateObj.date) ? 0 : -1\"\n cCalendarDay\n >\n <div class=\"calendar-cell-inner\">\n {{ dateObj.date | calendarDay:dayFormat():locale() }}\n </div>\n </td>\n } @else {\n <td class=\"calendar-cell\"></td>\n }\n }\n </tr>\n }\n }\n }\n </tbody>\n</table>\n\n", styles: [".btn-transparent:focus-visible{outline:-webkit-focus-ring-color auto 1px}.calendar-row:focus-visible{box-shadow:var(--cui-calendar-cell-focus-box-shadow);border-radius:.375rem}.calendar-row:focus-within:not([tabindex=\"-1\"]){outline:0;box-shadow:var(--cui-calendar-cell-focus-box-shadow);border-radius:.375rem;outline-style:auto!important}.calendar-row:focus:not([tabindex=\"-1\"]){outline:0;box-shadow:var(--cui-calendar-cell-focus-box-shadow);border-radius:.375rem;outline-style:auto!important}.calendar-cell:focus:not(:focus-visible):not([tabindex=\"-1\"]){box-shadow:var(--cui-calendar-cell-focus-box-shadow);border-radius:.375rem}.calendar-cell-inner{-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "directive", type: CalendarDayDirective, selector: "[cCalendarDay]", inputs: ["date", "month"], exportAs: ["cCalendarDay"] }, { kind: "pipe", type: CalendarDayPipe, name: "calendarDay" }, { kind: "pipe", type: CalendarDayTitlePipe, name: "calendarDayTitle" }, { kind: "directive", type: CalendarRowDirective, selector: "[cCalendarRow]", inputs: ["cCalendarRow"], exportAs: ["cCalendarRow"] }, { kind: "pipe", type: CalendarClassDayPipe, name: "calendarClassDay" }, { kind: "pipe", type: CalendarClassMonthPipe, name: "calendarClassMonth" }, { kind: "pipe", type: CalendarClassYearPipe, name: "calendarClassYear" }, { kind: "pipe", type: CalendarWeekdayPipe, name: "calendarWeekday" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
425
425
  }
426
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CalendarMonthComponent, decorators: [{
426
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CalendarMonthComponent, decorators: [{
427
427
  type: Component,
428
428
  args: [{ selector: 'c-calendar-month', exportAs: 'cCalendarMonth', standalone: true, imports: [
429
429
  CalendarDayDirective,
@@ -445,4 +445,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
445
445
  type: ViewChildren,
446
446
  args: [CalendarRowDirective]
447
447
  }] } });
448
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbW9udGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLW1vbnRoL2NhbGVuZGFyLW1vbnRoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxlQUFlLEVBRWYsTUFBTSxFQUNOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsZUFBZSxFQUNmLGNBQWMsRUFDZCxRQUFRLEVBQ1IsY0FBYyxFQUNkLHFCQUFxQixFQUN0QixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sRUFBRSxlQUFlLEVBQThELE1BQU0scUJBQXFCLENBQUM7QUFDbEgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxN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R0FDcEIsb0JBQW9CLG9EQUNwQixzQkFBc0Isc0RBRXRCLHFCQUFxQixxREFDckIsbUJBQW1CLHdEQUNuQixPQUFPOzsyRkFJRSxzQkFBc0I7a0JBcEJsQyxTQUFTOytCQUNFLGtCQUFrQixZQUdsQixnQkFBZ0IsY0FDZCxJQUFJLFdBQ1A7d0JBQ1Asb0JBQW9CO3dCQUNwQixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsb0JBQW9CO3dCQUNwQixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsT0FBTzt3QkFDUCxTQUFTO3FCQUNWO3dEQWdJbUMsWUFBWTtzQkFBL0MsWUFBWTt1QkFBQyxvQkFBb0I7Z0JBQ0UsWUFBWTtzQkFBL0MsWUFBWTt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBEZXN0cm95UmVmLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG51bWJlckF0dHJpYnV0ZSxcbiAgUXVlcnlMaXN0LFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0VG9EYXRlT2JqZWN0LFxuICBjcmVhdGVHcm91cHNJbkFycmF5LFxuICBlcXVhbERhdGVzLFxuICBnZXRNb250aERldGFpbHMsXG4gIGdldE1vbnRoc05hbWVzLFxuICBnZXRZZWFycyxcbiAgaXNEYXRlRGlzYWJsZWQsXG4gIGlzRGF0ZUluUmFuZ2VEaXNhYmxlZFxufSBmcm9tICcuLi9jYWxlbmRhci51dGlscyc7XG5cbmltcG9ydCB7IENhbGVuZGFyU2VydmljZSwgRGF0ZUZpbHRlclR5cGUsIERheUZvcm1hdFR5cGUsIE1vbnRoRGV0YWlscywgU2VsZWN0aW9uVHlwZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FsZW5kYXJXZWVrZGF5UGlwZSB9IGZyb20gJy4vY2FsZW5kYXItd2Vla2RheS5waXBlJztcbmltcG9ydCB7IENhbGVuZGFyQ2xhc3NZZWFyUGlwZSB9IGZyb20gJy4vY2FsZW5kYXItY2xhc3MteWVhci5waXBlJztcbmltcG9ydCB7IENhbGVuZGFyQ2xhc3NNb250aFBpcGUgfSBmcm9tICcuL2NhbGVuZGFyLWNsYXNzLW1vbnRoLnBpcGUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXlQaXBlIH0gZnJvbSAnLi9jYWxlbmRhci1kYXkucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhckRheURpcmVjdGl2ZSB9IGZyb20gJy4vY2FsZW5kYXItZGF5LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDYWxlbmRhckRheVRpdGxlUGlwZSB9IGZyb20gJy4vY2FsZW5kYXItZGF5LXRpdGxlLnBpcGUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJDbGFzc0RheVBpcGUgfSBmcm9tICcuL2NhbGVuZGFyLWNsYXNzLWRheS5waXBlJztcbmltcG9ydCB7IENhbGVuZGFyQ2xhc3NSb3dQaXBlIH0gZnJvbSAnLi9jYWxlbmRhci1jbGFzcy1yb3cucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhclJvd0RpcmVjdGl2ZSB9IGZyb20gJy4vY2FsZW5kYXItcm93LmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtY2FsZW5kYXItbW9udGgnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItbW9udGguY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci1tb250aC5jb21wb25lbnQuc2NzcyddLFxuICBleHBvcnRBczogJ2NDYWxlbmRhck1vbnRoJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENhbGVuZGFyRGF5RGlyZWN0aXZlLFxuICAgIENhbGVuZGFyRGF5UGlwZSxcbiAgICBDYWxlbmRhckRheVRpdGxlUGlwZSxcbiAgICBDYWxlbmRhclJvd0RpcmVjdGl2ZSxcbiAgICBDYWxlbmRhckNsYXNzRGF5UGlwZSxcbiAgICBDYWxlbmRhckNsYXNzTW9udGhQaXBlLFxuICAgIENhbGVuZGFyQ2xhc3NSb3dQaXBlLFxuICAgIENhbGVuZGFyQ2xhc3NZZWFyUGlwZSxcbiAgICBDYWxlbmRhcldlZWtkYXlQaXBlLFxuICAgIE5nQ2xhc3MsXG4gICAgQXN5bmNQaXBlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJNb250aENvbXBvbmVudCB7XG4gICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAjY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KENhbGVuZGFyU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaWJlKCk7XG4gIH1cblxuICByZWFkb25seSBwYWdlSW5kZXggPSBpbnB1dCgwLCB7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xuXG4gIHJlYWRvbmx5IGFkZE1vbnRocyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy52aWV3KCk7XG4gICAgY29uc3QgcGFnZUluZGV4ID0gdGhpcy5wYWdlSW5kZXgoKTtcbiAgICByZXR1cm4gcGFnZUluZGV4ICogKHZpZXcgPT09ICd5ZWFycycgPyAxNDQgOiB2aWV3ID09PSAnbW9udGhzJyA/IDEyIDogMSk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsIHNlbGVjdGVkIGRhdGUuXG4gICAqIEB0eXBlICAoRGF0ZSB8IG51bGwpXG4gICAqL1xuICByZWFkb25seSBzdGFydERhdGUgPSBzaWduYWw8RGF0ZSB8IG51bGw+KG51bGwsIHsgZXF1YWw6IGVxdWFsRGF0ZXMgfSk7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgc2VsZWN0ZWQgdG8gZGF0ZSAocmFuZ2UpLlxuICAgKiBAdHlwZSAgRGF0ZSB8IG51bGxcbiAgICovXG4gIHJlYWRvbmx5IGVuZERhdGUgPSBzaWduYWw8RGF0ZSB8IG51bGw+KG51bGwsIHsgZXF1YWw6IGVxdWFsRGF0ZXMgfSk7XG5cbiAgcmVhZG9ubHkgZGF0ZXNFZmZlY3QgPSBlZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGUoKTtcbiAgICAgIGNvbnN0IGVuZERhdGUgPSBzdGFydERhdGUgJiYgdGhpcy5yYW5nZSgpID8gdGhpcy5lbmREYXRlKCkgOiBudWxsO1xuICAgICAgdGhpcy4jY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IHN0YXJ0RGF0ZTogc3RhcnREYXRlLCBlbmREYXRlOiBlbmREYXRlIH0pO1xuICAgIH0sXG4gICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICk7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGxpc3Qgb2YgZGF0ZXMgdGhhdCBjYW5ub3QgYmUgc2VsZWN0ZWQuXG4gICAqIEB0eXBlICBEYXRlW10gfCBEYXRlW11bXVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZWREYXRlcyA9IHNpZ25hbDwoRGF0ZVtdIHwgRGF0ZSlbXT4oW10pO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkYXkgb2Ygc3RhcnQgd2Vlay5cbiAgICogLSAwIC0gU3VuZGF5LFxuICAgKiAtIDEgLSBNb25kYXksXG4gICAqIC0gMiAtIFR1ZXNkYXksXG4gICAqIC0gMyAtIFdlZG5lc2RheSxcbiAgICogLSA0IC0gVGh1cnNkYXksXG4gICAqIC0gNSAtIEZyaWRheSxcbiAgICogLSA2IC0gU2F0dXJkYXksXG4gICAqL1xuICByZWFkb25seSBmaXJzdERheU9mV2VlayA9IHNpZ25hbCgxKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgZGVmYXVsdCBsb2NhbGUgZm9yIGNvbXBvbmVudHMuIElmIG5vdCBzZXQsIGl0IGlzIGluaGVyaXRlZCBmcm9tIHRoZSBicm93c2VyLlxuICAgKiBAZGVmYXVsdCAnZGVmYXVsdCdcbiAgICovXG4gIHJlYWRvbmx5IGxvY2FsZSA9IHNpZ25hbCgnZGVmYXVsdCcpO1xuXG4gIC8qKlxuICAgKiBBbGxvdyByYW5nZSBzZWxlY3Rpb24uXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJhbmdlID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKipcbiAgICogU2V0IGxlbmd0aCBvciBmb3JtYXQgb2YgZGF5IG5hbWUuXG4gICAqIEB0eXBlIG51bWJlciB8ICdsb25nJyB8ICduYXJyb3cnIHwgJ3Nob3J0J1xuICAgKiBAZGVmYXVsdCAnc2hvcnQnXG4gICAqL1xuICByZWFkb25seSB3ZWVrZGF5Rm9ybWF0ID0gc2lnbmFsPG51bWJlciB8ICdsb25nJyB8ICduYXJyb3cnIHwgJ3Nob3J0Jz4oJ3Nob3J0Jyk7XG5cbiAgLyoqXG4gICAqIFNldCBjYWxlbmRhciB2aWV3LlxuICAgKiBAdHlwZSAnZGF5cycgfCAnbW9udGhzJyB8ICd5ZWFycydcbiAgICogQGRlZmF1bHQgJ2RheXMnXG4gICAqL1xuICByZWFkb25seSB2aWV3ID0gc2lnbmFsPCdkYXlzJyB8ICdtb250aHMnIHwgJ3llYXJzJz4oJ2RheXMnKTtcblxuICAvKipcbiAgICogTWF4IHNlbGVjdGFibGUgZGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IG1heERhdGUgPSBzaWduYWw8RGF0ZSB8IG51bGw+KG51bGwsIHsgZXF1YWw6IGVxdWFsRGF0ZXMgfSk7XG5cbiAgLyoqXG4gICAqIE1pbiBzZWxlY3RhYmxlIGRhdGUuXG4gICAqL1xuICByZWFkb25seSBtaW5EYXRlID0gc2lnbmFsPERhdGUgfCBudWxsPihudWxsLCB7IGVxdWFsOiBlcXVhbERhdGVzIH0pO1xuXG4gIHJlYWRvbmx5IGxpc3RPZk1vbnRocyA9IGNvbXB1dGVkPHsgeWVhcjogbnVtYmVyOyBtb250aDogc3RyaW5nIH1bXVtdPigoKSA9PiB7XG4gICAgcmV0dXJuIGNyZWF0ZUdyb3Vwc0luQXJyYXkoZ2V0TW9udGhzTmFtZXModGhpcy5sb2NhbGUoKSwgdGhpcy5kYXRlKCkuZ2V0RnVsbFllYXIoKSksIDQpO1xuICB9KTtcblxuICByZWFkb25seSBsaXN0T2ZZZWFycyA9IGNvbXB1dGVkPG51bWJlcltdW10+KCgpID0+IGNyZWF0ZUdyb3Vwc0luQXJyYXkoZ2V0WWVhcnModGhpcy5kYXRlKCkuZ2V0RnVsbFllYXIoKSksIDQpKTtcblxuICAvKipcbiAgICogRGVmYXVsdCBkYXRlIG9mIHRoZSBjb21wb25lbnRcbiAgICogQHR5cGUgRGF0ZVxuICAgKi9cblxuICByZWFkb25seSBjYWxlbmRhckRhdGUgPSBzaWduYWw8RGF0ZT4obmV3IERhdGUoKSwgeyBlcXVhbDogZXF1YWxEYXRlcyB9KTtcblxuICByZWFkb25seSBkYXRlID0gY29tcHV0ZWQoXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuY2FsZW5kYXJEYXRlKCk7XG4gICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCkgKyB0aGlzLmFkZE1vbnRocygpLCAxLCAwLCAwLCAwLCAwKTtcbiAgICB9LFxuICAgIHsgZXF1YWw6IChhOiBEYXRlLCBiOiBEYXRlKSA9PiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCkgfVxuICApO1xuXG4gIHJlYWRvbmx5IGNhbGVuZGFyRGF0ZUVmZmVjdCA9IGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICB0aGlzLiNjYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgY2FsZW5kYXJEYXRlOiB0aGlzLmNhbGVuZGFyRGF0ZSgpIH0pO1xuICAgIH0sXG4gICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICk7XG5cbiAgLy8gcmVhZG9ubHkgY2FsZW5kYXJEYXlzID0gdmlld0NoaWxkcmVuKENhbGVuZGFyRGF5RGlyZWN0aXZlKTtcbiAgLy8gcmVhZG9ubHkgY2FsZW5kYXJSb3dzID0gdmlld0NoaWxkcmVuKENhbGVuZGFyUm93RGlyZWN0aXZlKTtcbiAgLy9cbiAgLy8gcmVhZG9ubHkgY2FsZW5kYXJEYXlzJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmNhbGVuZGFyRGF5cyk7XG4gIC8vIHJlYWRvbmx5IGNhbGVuZGFyUm93cyQgPSB0b09ic2VydmFibGUodGhpcy5jYWxlbmRhclJvd3MpO1xuXG4gIEBWaWV3Q2hpbGRyZW4oQ2FsZW5kYXJEYXlEaXJlY3RpdmUpIGNhbGVuZGFyRGF5cyE6IFF1ZXJ5TGlzdDxDYWxlbmRhckRheURpcmVjdGl2ZT47XG4gIEBWaWV3Q2hpbGRyZW4oQ2FsZW5kYXJSb3dEaXJlY3RpdmUpIGNhbGVuZGFyUm93cyE6IFF1ZXJ5TGlzdDxDYWxlbmRhclJvd0RpcmVjdGl2ZT47XG5cbiAgcmVhZG9ubHkgZGF0ZUZpbHRlciA9IHNpZ25hbDxEYXRlRmlsdGVyVHlwZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZGF5Rm9ybWF0ID0gc2lnbmFsPERheUZvcm1hdFR5cGU+KCdudW1lcmljJyk7XG4gIHJlYWRvbmx5IHNlbGVjdEFkamFjZW50RGF5cyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHNob3dBZGphY2VudERheXMgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvblR5cGUgPSBzaWduYWw8U2VsZWN0aW9uVHlwZT4oJ2RheScpO1xuICByZWFkb25seSBzaG93V2Vla051bWJlciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHdlZWtOdW1iZXJzTGFiZWwgPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgcmVhZG9ubHkgbW9udGhEZXRhaWxzID0gY29tcHV0ZWQ8TW9udGhEZXRhaWxzPigoKSA9PiB7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuZGF0ZSgpO1xuICAgIHJldHVybiBnZXRNb250aERldGFpbHMoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIHRoaXMuZmlyc3REYXlPZldlZWsoKSk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHdlZWtEYXlzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1vbnRoRGV0YWlscyA9IHRoaXMubW9udGhEZXRhaWxzKCk7XG4gICAgcmV0dXJuIG1vbnRoRGV0YWlsc1swXS5kYXlzO1xuICB9KTtcblxuICB5ZWFyTnVtYmVyKHllYXI6IGFueSkge1xuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCAwKS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUoKSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gIH1cblxuICBpc0RhdGVEaXNhYmxlZChkYXRlOiBEYXRlKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uVHlwZSA9IHRoaXMuc2VsZWN0aW9uVHlwZSgpO1xuICAgIGNvbnN0IGRpc2FibGVkRGF0ZXMgPSB0aGlzLmRpc2FibGVkRGF0ZXMoKTtcbiAgICBjb25zdCBkYXRlRmlsdGVyRm4gPSB0aGlzLmRhdGVGaWx0ZXIoKTtcbiAgICBjb25zdCBtYXhEYXRlID0gdGhpcy5tYXhEYXRlKCk7XG4gICAgY29uc3QgbWluRGF0ZSA9IHRoaXMubWluRGF0ZSgpO1xuICAgIGlmIChzZWxlY3Rpb25UeXBlID09PSAneWVhcicpIHtcbiAgICAgIGNvbnN0IG1pbiA9IG1pbkRhdGUgPyBuZXcgRGF0ZShtaW5EYXRlLmdldEZ1bGxZZWFyKCksIDAsIDEsIDAsIDAsIDAsIDApIDogbnVsbDtcbiAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgPyBuZXcgRGF0ZShtYXhEYXRlLmdldEZ1bGxZZWFyKCksIDExLCAzMSwgMCwgMCwgMCwgMCkgOiBudWxsO1xuICAgICAgcmV0dXJuIGlzRGF0ZURpc2FibGVkKGRhdGUsIG1pbiwgbWF4LCBkaXNhYmxlZERhdGVzKSB8fCAoZGF0ZUZpbHRlckZuID8gIWRhdGVGaWx0ZXJGbihkYXRlKSA6IGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKHNlbGVjdGlvblR5cGUgPT09ICdtb250aCcpIHtcbiAgICAgIGNvbnN0IG1pbiA9IG1pbkRhdGUgPyBuZXcgRGF0ZShtaW5EYXRlLmdldEZ1bGxZZWFyKCksIG1pbkRhdGUuZ2V0TW9udGgoKSwgMSwgMCwgMCwgMCwgMCkgOiBudWxsO1xuICAgICAgY29uc3QgbWF4ID0gbWF4RGF0ZSA/IG5ldyBEYXRlKG1heERhdGUuZ2V0RnVsbFllYXIoKSwgbWF4RGF0ZS5nZXRNb250aCgpICsgMSwgMSwgMCwgMCwgLTEsIDApIDogbnVsbDtcbiAgICAgIHJldHVybiBpc0RhdGVEaXNhYmxlZChkYXRlLCBtaW4sIG1heCwgZGlzYWJsZWREYXRlcykgfHwgKGRhdGVGaWx0ZXJGbiA/ICFkYXRlRmlsdGVyRm4oZGF0ZSkgOiBmYWxzZSk7XG4gICAgfVxuICAgIHJldHVybiBpc0RhdGVEaXNhYmxlZChkYXRlLCBtaW5EYXRlLCBtYXhEYXRlLCBkaXNhYmxlZERhdGVzKSB8fCAoZGF0ZUZpbHRlckZuID8gIWRhdGVGaWx0ZXJGbihkYXRlKSA6IGZhbHNlKTtcbiAgfVxuXG4gIGNhbGVuZGFyQ2VsbFRpdGxlKGRhdGU6IERhdGUpIHtcbiAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUoKSk7XG4gIH1cblxuICBoYW5kbGVDZWxsTW91c2VFbnRlcihob3ZlckRhdGU6IERhdGUgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAoIWhvdmVyRGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzZWxlY3Rpb25UeXBlID0gdGhpcy5zZWxlY3Rpb25UeXBlKCk7XG4gICAgY29uc3QgdXBkYXRlSG92ZXJWYWx1ZSA9XG4gICAgICAoWydkYXknLCAnd2VlayddLmluY2x1ZGVzKHNlbGVjdGlvblR5cGUpICYmIHRoaXMudmlldygpID09PSAnZGF5cycpIHx8XG4gICAgICAoWydtb250aCddLmluY2x1ZGVzKHNlbGVjdGlvblR5cGUpICYmIHRoaXMudmlldygpID09PSAnbW9udGhzJykgfHxcbiAgICAgIChbJ3llYXInXS5pbmNsdWRlcyhzZWxlY3Rpb25UeXBlKSAmJiB0aGlzLnZpZXcoKSA9PT0gJ3llYXJzJyk7XG5cbiAgICAvLyBpZiAodXBkYXRlSG92ZXJWYWx1ZSkge1xuICAgIGNvbnN0IGhvdmVyVmFsdWUgPSB0aGlzLmlzRGF0ZURpc2FibGVkKGhvdmVyRGF0ZSkgfHwgIXVwZGF0ZUhvdmVyVmFsdWUgPyBudWxsIDogaG92ZXJEYXRlO1xuICAgIHRoaXMuI2NhbGVuZGFyU2VydmljZS51cGRhdGUoeyBob3ZlckRhdGU6IGhvdmVyVmFsdWUgfSk7XG4gICAgLy8gfVxuICB9XG5cbiAgaGFuZGxlWWVhckNlbGxDbGljayh5ZWFyOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25UeXBlKCkgPT09ICd5ZWFyJykge1xuICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxLCAwLCAwLCAwLCAwKTtcbiAgICAgIGlmICh0aGlzLnJhbmdlKCkgJiYgdGhpcy5zdGFydERhdGUoKSAmJiAhdGhpcy5lbmREYXRlKCkpIHtcbiAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgMTIsIDEsIDAsIDAsIC0xLCAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjYWxlbmRhckRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxLCAwLCAwLCAwLCAwKTtcbiAgICB0aGlzLnZpZXcuc2V0KCdtb250aHMnKTtcbiAgICB0aGlzLiNjYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgdmlldzogdGhpcy52aWV3KCksIGNhbGVuZGFyRGF0ZTogY2FsZW5kYXJEYXRlIH0pO1xuICB9XG5cbiAgaGFuZGxlWWVhckNlbGxLZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGRhdGU6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFsnU3BhY2UnLCAnRW50ZXInXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgIHRoaXMuaGFuZGxlWWVhckNlbGxDbGljayhkYXRlLmdldEZ1bGxZZWFyKCkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoWydUYWInLCAnQXJyb3dSaWdodCcsICdBcnJvd0xlZnQnLCAnQXJyb3dVcCcsICdBcnJvd0Rvd24nXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ2VsbE1vdXNlRW50ZXIobmV3IERhdGUoZGF0ZSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU1vbnRoQ2VsbEtleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCwgZGF0ZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghZGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoWydTcGFjZScsICdFbnRlciddLmluY2x1ZGVzKCRldmVudC5jb2RlKSkge1xuICAgICAgdGhpcy5oYW5kbGVNb250aENlbGxDbGljayhkYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFsnVGFiJywgJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0JywgJ0Fycm93VXAnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICB0aGlzLmhhbmRsZUNlbGxNb3VzZUVudGVyKGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU1vbnRoQ2VsbENsaWNrKHZhbHVlOiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25UeXBlKCkgPT09ICdtb250aCcpIHtcbiAgICAgIGxldCBkYXRlID0gbmV3IERhdGUodmFsdWUuZ2V0RnVsbFllYXIoKSwgdmFsdWUuZ2V0TW9udGgoKSwgMSwgMCwgMCwgMCwgMCk7XG4gICAgICBpZiAodGhpcy5yYW5nZSgpICYmIHRoaXMuc3RhcnREYXRlKCkgJiYgIXRoaXMuZW5kRGF0ZSgpKSB7XG4gICAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSArIDEsIDEsIDAsIDAsIC0xLCAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnZpZXcuc2V0KCdkYXlzJyk7XG4gICAgdGhpcy4jY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IHZpZXc6IHRoaXMudmlldygpIH0pO1xuICAgIC8vIHRoaXMuc2V0Q2FsZW5kYXJQYWdlKDAsIDAsIHZhbHVlLmdldE1vbnRoKCkgLSB0aGlzLmFkZE1vbnRocygpKTtcbiAgICBjb25zdCBjYWxlbmRhckRhdGUgPSBuZXcgRGF0ZSh2YWx1ZS5nZXRGdWxsWWVhcigpLCB2YWx1ZS5nZXRNb250aCgpIC0gdGhpcy5hZGRNb250aHMoKSwgMSwgMCwgMCwgMCwgMCk7XG4gICAgdGhpcy4jY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGNhbGVuZGFyRGF0ZTogY2FsZW5kYXJEYXRlIH0pO1xuICB9XG5cbiAgc2V0Q2FsZW5kYXJQYWdlKHllYXJzOiBudW1iZXIsIG1vbnRocyA9IDAsIHNldE1vbnRoPzogbnVtYmVyKSB7XG4gICAgY29uc3QgeWVhciA9IHRoaXMuZGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgbW9udGggPSB0aGlzLmRhdGUoKS5nZXRNb250aCgpO1xuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSwgMCwgMCwgMCwgMCk7XG5cbiAgICB5ZWFycyAmJiBkLnNldEZ1bGxZZWFyKGQuZ2V0RnVsbFllYXIoKSArIHllYXJzKTtcbiAgICBtb250aHMgJiYgZC5zZXRNb250aChkLmdldE1vbnRoKCkgKyBtb250aHMpO1xuICAgIHR5cGVvZiBzZXRNb250aCA9PT0gJ251bWJlcicgJiYgZC5zZXRNb250aChzZXRNb250aCk7XG5cbiAgICB0aGlzLiNjYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgY2FsZW5kYXJEYXRlOiBkIH0pO1xuICB9XG5cbiAgaGFuZGxlRGF5Q2VsbEtleURvd24oJGV2ZW50OiBLZXlib2FyZEV2ZW50LCBkYXRlOiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghWydUYWInLCAnQXJyb3dSaWdodCcsICdBcnJvd0xlZnQnLCAnQXJyb3dVcCcsICdBcnJvd0Rvd24nXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5oYW5kbGVDZWxsTW91c2VFbnRlcihkYXRlKTtcblxuICAgIGNvbnN0IGV2ZW50S2V5ID0gJGV2ZW50LmtleSA9PT0gJ1RhYicgPyAoJGV2ZW50LnNoaWZ0S2V5ID8gJ0Fycm93TGVmdCcgOiAnQXJyb3dSaWdodCcpIDogJGV2ZW50LmtleTtcbiAgICBjb25zdCBzZWxlY3Rpb25UeXBlID0gdGhpcy5zZWxlY3Rpb25UeXBlKCk7XG4gICAgY29uc3QgdmlldyA9IHRoaXMudmlldygpO1xuICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLm1heERhdGUoKTtcbiAgICBpZiAoXG4gICAgICBtYXhEYXRlICYmXG4gICAgICBkYXRlID49IGNvbnZlcnRUb0RhdGVPYmplY3QobWF4RGF0ZSwgc2VsZWN0aW9uVHlwZSkgJiZcbiAgICAgIFsnQXJyb3dSaWdodCcsICdBcnJvd0Rvd24nXS5pbmNsdWRlcyhldmVudEtleSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbWluRGF0ZSA9IHRoaXMubWluRGF0ZSgpO1xuICAgIGlmIChtaW5EYXRlICYmIGRhdGUgPD0gY29udmVydFRvRGF0ZU9iamVjdChtaW5EYXRlLCBzZWxlY3Rpb25UeXBlKSAmJiBbJ0Fycm93TGVmdCcsICdBcnJvd1VwJ10uaW5jbHVkZXMoZXZlbnRLZXkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGVsZW1lbnQgPSAkZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKHNlbGVjdGlvblR5cGUgPT09ICd3ZWVrJyAmJiB2aWV3ID09PSAnZGF5cycgJiYgZWxlbWVudC50YWJJbmRleCA9PT0gLTEpIHtcbiAgICAgIGVsZW1lbnQgPSBlbGVtZW50LmNsb3Nlc3QoJ3RyW3RhYmluZGV4PVwiMFwiXScpIGFzIEhUTUxFbGVtZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRzID0gWyd3ZWVrJ10uaW5jbHVkZXMoc2VsZWN0aW9uVHlwZSkgJiYgdmlldyA9PT0gJ2RheXMnID8gdGhpcy5jYWxlbmRhclJvd3MgOiB0aGlzLmNhbGVuZGFyRGF5cztcblxuICAgIGNvbnN0IGxpc3QgPSBlbGVtZW50c1xuICAgICAgLnRvQXJyYXkoKVxuICAgICAgLm1hcCgoY2FsZW5kYXJDZWxsKSA9PiBjYWxlbmRhckNlbGwuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KVxuICAgICAgLy8gLmZpbHRlcigoZWxlbWVudCkgPT4gdGhpcy5zZWxlY3Rpb25UeXBlID09PSAnd2VlaycgPyBlbGVtZW50Py50YWJJbmRleCA9PT0gMCA6IGVsZW1lbnQ/LmNsYXNzTGlzdC5jb250YWlucygnY3VycmVudCcpKVxuICAgICAgLmZpbHRlcigoZWxlbWVudCkgPT4gZWxlbWVudD8udGFiSW5kZXggPT09IDApO1xuXG4gICAgY29uc3QgaW5kZXggPSBsaXN0LmluZGV4T2YoZWxlbWVudCk7XG4gICAgY29uc3QgZmlyc3QgPSBpbmRleCA9PT0gMDtcbiAgICBjb25zdCBsYXN0ID0gaW5kZXggPT09IGxpc3QubGVuZ3RoIC0gMTtcblxuICAgIGNvbnN0IHRvQm91bmRhcnkgPSB7XG4gICAgICBzdGFydDogaW5kZXgsXG4gICAgICBlbmQ6IGxpc3QubGVuZ3RoIC0gKGluZGV4ICsgMSlcbiAgICB9O1xuXG4gICAgY29uc3QgZ2FwID0ge1xuICAgICAgQXJyb3dSaWdodDogMSxcbiAgICAgIEFycm93TGVmdDogLTEsXG4gICAgICBBcnJvd1VwOiBzZWxlY3Rpb25UeXBlID09PSAnd2VlaycgJiYgdmlldyA9PT0gJ2RheXMnID8gLTEgOiB2aWV3ID09PSAnZGF5cycgPyAtNyA6IC0zLFxuICAgICAgQXJyb3dEb3duOiBzZWxlY3Rpb25UeXBlID09PSAnd2VlaycgJiYgdmlldyA9PT0gJ2RheXMnID8gMSA6IHZpZXcgPT09ICdkYXlzJyA/IDcgOiAzXG4gICAgfTtcblxuICAgIGlmIChcbiAgICAgIChldmVudEtleSA9PT0gJ0Fycm93UmlnaHQnICYmIGxhc3QpIHx8XG4gICAgICAoZXZlbnRLZXkgPT09ICdBcnJvd0Rvd24nICYmIHRvQm91bmRhcnkuZW5kIDwgZ2FwLkFycm93RG93bikgfHxcbiAgICAgIChldmVudEtleSA9PT0gJ0Fycm93TGVmdCcgJiYgZmlyc3QpIHx8XG4gICAgICAoZXZlbnRLZXkgPT09ICdBcnJvd1VwJyAmJiB0b0JvdW5kYXJ5LnN0YXJ0IDwgTWF0aC5hYnMoZ2FwLkFycm93VXApKVxuICAgICkge1xuICAgICAgZWxlbWVudHMuY2hhbmdlc1xuICAgICAgICAucGlwZSh0YWtlKDEpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZikpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZTogUXVlcnlMaXN0PENhbGVuZGFyUm93RGlyZWN0aXZlIHwgQ2FsZW5kYXJEYXlEaXJlY3RpdmU+KSA9PiB7XG4gICAgICAgICAgY29uc3QgX2xpc3QgPSBjaGFuZ2VcbiAgICAgICAgICAgIC50b0FycmF5KClcbiAgICAgICAgICAgIC8vIC5maWx0ZXIoZWxlbWVudCA9PiB0aGlzLnNlbGVjdGlvblR5cGUgPT09ICd3ZWVrJyA/IGVsZW1lbnQ/LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50YWJJbmRleCA9PT0gMCA6IGVsZW1lbnQ/LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2N1cnJlbnQnKSk7XG4gICAgICAgICAgICAuZmlsdGVyKChkaXJlY3RpdmUpID0+IGRpcmVjdGl2ZT8uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID09PSAwKTtcblxuICAgICAgICAgIGlmIChfbGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxldCBkYXlUb0ZvY3VzOiBDYWxlbmRhckRheURpcmVjdGl2ZSB8IENhbGVuZGFyUm93RGlyZWN0aXZlIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgc3dpdGNoIChldmVudEtleSkge1xuICAgICAgICAgICAgICBjYXNlICdBcnJvd1JpZ2h0Jzoge1xuICAgICAgICAgICAgICAgIGRheVRvRm9jdXMgPSBfbGlzdFswXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOiB7XG4gICAgICAgICAgICAgICAgZGF5VG9Gb2N1cyA9IF9saXN0W19saXN0Lmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6IHtcbiAgICAgICAgICAgICAgICBkYXlUb0ZvY3VzID0gX2xpc3RbZ2FwLkFycm93RG93biAtIChsaXN0Lmxlbmd0aCAtIGluZGV4KV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6IHtcbiAgICAgICAgICAgICAgICBkYXlUb0ZvY3VzID0gX2xpc3RbX2xpc3QubGVuZ3RoIC0gKE1hdGguYWJzKGdhcC5BcnJvd1VwKSArIDEgLSAoaW5kZXggKyAxKSldO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWRheVRvRm9jdXM/LmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdkYXlUb0ZvY3VzJywgZGF5VG9Gb2N1cz8uZGF0ZSk7XG4gICAgICAgICAgICAgIGRheVRvRm9jdXM/LmZvY3VzKCdrZXlib2FyZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIHN3aXRjaCAodmlldykge1xuICAgICAgICBjYXNlICdkYXlzJzpcbiAgICAgICAgICB0aGlzLnNldENhbGVuZGFyUGFnZSgwLCBbJ0Fycm93UmlnaHQnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoZXZlbnRLZXkpID8gMSA6IC0xKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbW9udGhzJzpcbiAgICAgICAgICB0aGlzLnNldENhbGVuZGFyUGFnZShbJ0Fycm93UmlnaHQnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoZXZlbnRLZXkpID8gMSA6IC0xKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAneWVhcnMnOlxuICAgICAgICAgIHRoaXMuc2V0Q2FsZW5kYXJQYWdlKFsnQXJyb3dSaWdodCcsICdBcnJvd0Rvd24nXS5pbmNsdWRlcyhldmVudEtleSkgPyAxMiA6IC0xMik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgbmV4dEVsZW1lbnQgPSBsaXN0W2luZGV4ICsgZ2FwW2V2ZW50S2V5XV07XG4gICAgaWYgKG5leHRFbGVtZW50Py50YWJJbmRleCA9PT0gMCkge1xuICAgICAgbmV4dEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gaW5kZXg7IGkgPCBsaXN0Lmxlbmd0aDsgbGlzdC5sZW5ndGggJiYgWydBcnJvd1JpZ2h0JywgJ0Fycm93RG93biddLmluY2x1ZGVzKGV2ZW50S2V5KSA/IGkrKyA6IGktLSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgbmV4dEVsZW1lbnQgPSBsaXN0W2kgKyBnYXBbZXZlbnRLZXldXTtcbiAgICAgIGlmIChuZXh0RWxlbWVudD8udGFiSW5kZXggPT09IDApIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBuZXh0RWxlbWVudD8uZm9jdXMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAoIW5leHRFbGVtZW50KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNlbGxNb3VzZUxlYXZlKCkge1xuICAgIHRoaXMuI2NhbGVuZGFyU2VydmljZS51cGRhdGUoeyBob3ZlckRhdGU6IG51bGwgfSk7XG4gIH1cblxuICBoYW5kbGVEYXlDZWxsS2V5VXAoJGV2ZW50OiBLZXlib2FyZEV2ZW50LCBkYXRlOiBEYXRlKSB7XG4gICAgaWYgKFsnU3BhY2UnLCAnRW50ZXInXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgIHRoaXMuaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoWydUYWInLCAnQXJyb3dSaWdodCcsICdBcnJvd0xlZnQnLCAnQXJyb3dVcCcsICdBcnJvd0Rvd24nXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ2VsbE1vdXNlRW50ZXIoZGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGU6IERhdGUpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25UeXBlKCkgPT09ICdkYXknICYmIHRoaXMuaXNEYXRlRGlzYWJsZWQoZGF0ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucmFuZ2UoKSkge1xuICAgICAgdGhpcy5lbmREYXRlLnNldChudWxsKTtcbiAgICAgIHRoaXMuc3RhcnREYXRlLnNldChkYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZSgpO1xuICAgIGNvbnN0IGVuZERhdGUgPSB0aGlzLmVuZERhdGUoKTtcblxuICAgIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xuICAgICAgdGhpcy5zdGFydERhdGUuc2V0KG51bGwpO1xuICAgICAgdGhpcy5lbmREYXRlLnNldChudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoISFzdGFydERhdGUgJiYgIWVuZERhdGUpIHtcbiAgICAgIGlmIChzdGFydERhdGUgJiYgZGF0ZSA8IHN0YXJ0RGF0ZSkge1xuICAgICAgICB0aGlzLmVuZERhdGUuc2V0KG51bGwpO1xuICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQoZGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhZGREYXlzID0gdGhpcy5zZWxlY3Rpb25UeXBlKCkgIT09ICd3ZWVrJyA/IDEgOiA3O1xuICAgICAgICB0aGlzLmVuZERhdGUuc2V0KG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSArIGFkZERheXMsIDAsIDAsIC0xLCAwKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5kRGF0ZS5zZXQobnVsbCk7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQoZGF0ZSk7XG4gICAgfVxuICAgIHtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlKCk7XG4gICAgICBjb25zdCBlbmREYXRlID0gdGhpcy5lbmREYXRlKCk7XG4gICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcbiAgICAgICAgY29uc3QgZGF0ZUZpbHRlckZuID0gdGhpcy5kYXRlRmlsdGVyKCk7XG4gICAgICAgIGlmIChpc0RhdGVJblJhbmdlRGlzYWJsZWQoc3RhcnREYXRlLCBlbmREYXRlLCB0aGlzLmRpc2FibGVkRGF0ZXMoKSwgZGF0ZUZpbHRlckZuKSkge1xuICAgICAgICAgIHRoaXMuc3RhcnREYXRlLnNldChudWxsKTtcbiAgICAgICAgICB0aGlzLmVuZERhdGUuc2V0KG51bGwpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNhbGVuZGFyU3RhdGVTdWJzY3JpYmUoKTogdm9pZCB7XG4gICAgdGhpcy4jY2FsZW5kYXJTZXJ2aWNlLmNhbGVuZGFyU3RhdGUkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoc3RhdGUpO1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGlmIChrZXkgaW4gdGhpcykge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBjb25zdCBpc1dyaXRhYmxlU2lnbmFsID0gdHlwZW9mIHRoaXNba2V5XSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdGhpc1trZXldLnNldCA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgaXNXcml0YWJsZVNpZ25hbCA/IHRoaXNba2V5XS5zZXQoc3RhdGVba2V5XSkgOiAodGhpc1trZXldID0gc3RhdGVba2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldE1vbnRoU3RhcnQoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmNhbGVuZGFyRGF0ZSgpLmdldEZ1bGxZZWFyKCksIGluZGV4ICsgdGhpcy5hZGRNb250aHMoKSwgMSwgMCwgMCwgMCwgMCk7XG4gIH1cblxuICBnZXRNb250aEVuZChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuY2FsZW5kYXJEYXRlKCkuZ2V0RnVsbFllYXIoKSwgaW5kZXggKyAxICsgdGhpcy5hZGRNb250aHMoKSwgMSwgMCwgMCwgLTEsIDApO1xuICB9XG5cbiAgZ2V0WWVhclN0YXJ0KHllYXI6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcbiAgfVxuXG4gIGdldFllYXJFbmQoeWVhcjogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIDExLCAxLCAwLCAwLCAtMSwgMCk7XG4gIH1cbn1cbiIsIjx0YWJsZT5cbiAgQGlmICh2aWV3KCkgPT09ICdkYXlzJykge1xuICAgIDx0aGVhZD5cbiAgICA8dHI+XG4gICAgICBAaWYgKHNob3dXZWVrTnVtYmVyKCkpIHtcbiAgICAgICAgPHRoIGNsYXNzPVwiY2FsZW5kYXItY2VsbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXItY2VsbC1pbm5lclwiPnt7IHdlZWtOdW1iZXJzTGFiZWwoKSB9fTwvZGl2PlxuICAgICAgICA8L3RoPlxuICAgICAgfVxuICAgICAgQGZvciAod2Vla0RheSBvZiB3ZWVrRGF5cygpOyB0cmFjayB3ZWVrRGF5LmRhdGU7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIEBsZXQgZGF0ZSA9IHdlZWtEYXkuZGF0ZSA7XG4gICAgICAgIDx0aCBjbGFzcz1cImNhbGVuZGFyLWNlbGxcIiBhYmJyPVwie3tkYXRlIHwgY2FsZW5kYXJXZWVrZGF5Oidsb25nJzpsb2NhbGUoKX19XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlci1jZWxsLWlubmVyXCI+XG4gICAgICAgICAgICB7eyBkYXRlIHwgY2FsZW5kYXJXZWVrZGF5OndlZWtkYXlGb3JtYXQoKTpsb2NhbGUoKSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RoPlxuICAgICAgfVxuICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgfVxuICA8dGJvZHkgKG1vdXNlbGVhdmUpPVwiaGFuZGxlQ2VsbE1vdXNlTGVhdmUoKVwiPlxuICAgIEBzd2l0Y2ggKHZpZXcoKSkge1xuICAgICAgQGNhc2UgKCd5ZWFycycpIHtcbiAgICAgICAgQGZvciAoeWVhcnNSb3cgb2YgbGlzdE9mWWVhcnMoKTsgdHJhY2sgeWVhcnNSb3dbMF07IGxldCByb3dJZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICBAZm9yICh5ZWFyIG9mIHllYXJzUm93OyB0cmFjayB5ZWFyOyBsZXQgaWR4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICNjYWxlbmRhclllYXI9XCJjQ2FsZW5kYXJEYXlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCIhY2FsZW5kYXJZZWFyLmRpc2FibGVkJCgpICYmIGhhbmRsZVllYXJDZWxsQ2xpY2soeWVhcilcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cImNhbGVuZGFyWWVhci5kYXRlKCkgJiYgaGFuZGxlRGF5Q2VsbEtleURvd24oJGV2ZW50LCBjYWxlbmRhclllYXIuZGF0ZSgpKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwKT1cImhhbmRsZVllYXJDZWxsS2V5VXAoJGV2ZW50LCBjYWxlbmRhclllYXIuZGF0ZSgpKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwiY2FsZW5kYXJZZWFyLmRhdGUoKSAmJiBoYW5kbGVDZWxsTW91c2VFbnRlcihjYWxlbmRhclllYXIuZGF0ZSgpKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjYWxlbmRhclllYXIuZGF0ZSgpPy5nZXRGdWxsWWVhcigpXCJcbiAgICAgICAgICAgICAgICBbZGF0ZV09XCJnZXRZZWFyU3RhcnQoeWVhcilcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInllYXIgfCBjYWxlbmRhckNsYXNzWWVhclwiXG4gICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImNhbGVuZGFyWWVhci5kaXNhYmxlZCQoKSA/IC0xIDogMFwiXG4gICAgICAgICAgICAgICAgY0NhbGVuZGFyRGF5XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY2VsbC1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAge3sgeWVhck51bWJlcih5ZWFyKSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBjYXNlICgnbW9udGhzJykge1xuICAgICAgICBAZm9yIChtb250aHNSb3cgb2YgbGlzdE9mTW9udGhzKCk7IHRyYWNrIG1vbnRoc1Jvd1swXTsgbGV0IHJvd0lkeCA9ICRpbmRleCkge1xuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIEBmb3IgKG1vbnRoIG9mIG1vbnRoc1JvdzsgdHJhY2sgbW9udGg7IGxldCBpZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgQGxldCBtb250aFN0YXJ0ID0gZ2V0TW9udGhTdGFydChyb3dJZHgqMytpZHgpO1xuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAjY2FsZW5kYXJNb250aD1cImNDYWxlbmRhckRheVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiFjYWxlbmRhck1vbnRoLmRpc2FibGVkJCgpICYmIGhhbmRsZU1vbnRoQ2VsbENsaWNrKGNhbGVuZGFyTW9udGguZGF0ZSgpKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwiY2FsZW5kYXJNb250aC5kYXRlKCkgJiYgaGFuZGxlRGF5Q2VsbEtleURvd24oJGV2ZW50LCBjYWxlbmRhck1vbnRoLmRhdGUoKSlcIlxuICAgICAgICAgICAgICAgIChrZXl1cCk9XCJoYW5kbGVNb250aENlbGxLZXlVcCgkZXZlbnQsIGNhbGVuZGFyTW9udGguZGF0ZSgpKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwiY2FsZW5kYXJNb250aC5kYXRlKCkgJiYgaGFuZGxlQ2VsbE1vdXNlRW50ZXIoY2FsZW5kYXJNb250aC5kYXRlKCkpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNhbGVuZGFyTW9udGguZGF0ZSgpPy5nZXRGdWxsWWVhcigpKycgJyttb250aC5tb250aFwiXG4gICAgICAgICAgICAgICAgW2RhdGVdPVwibW9udGhTdGFydFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwibW9udGhTdGFydCB8IGNhbGVuZGFyQ2xhc3NNb250aDoocm93SWR4KjMraWR4KVwiXG4gICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImNhbGVuZGFyTW9udGguZGlzYWJsZWQkKCkgPyAtMSA6IDBcIlxuICAgICAgICAgICAgICAgIGNDYWxlbmRhckRheVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNlbGwtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgIHt7IG1vbnRoLm1vbnRoIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgICBAZGVmYXVsdCB7XG4gICAgICAgIEBsZXQgd2Vla1NlbGVjdGlvbiA9IHNlbGVjdGlvblR5cGUoKSA9PT0gJ3dlZWsnO1xuICAgICAgICBAbGV0IGRheVNlbGVjdGlvbiA9IHNlbGVjdGlvblR5cGUoKSA9PT0gJ2RheSc7XG4gICAgICAgIEBmb3IgKHdlZWsgb2YgbW9udGhEZXRhaWxzKCk7IHRyYWNrIHdlZWsuZGF5c1swXTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICA8dHIgI2NhbGVuZGFyUm93PVwiY0NhbGVuZGFyUm93XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIndlZWtTZWxlY3Rpb24gJiYgKGNhbGVuZGFyUm93LmN1cnJlbnQpICYmIGNhbGVuZGFyUm93LmRhdGUgJiYgaGFuZGxlRGF5Q2VsbENsaWNrKGNhbGVuZGFyUm93LmRhdGUpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24pPVwid2Vla1NlbGVjdGlvbiAmJiAoY2FsZW5kYXJSb3cuY3VycmVudCkgJiYgY2FsZW5kYXJSb3cuZGF0ZSAmJiBoYW5kbGVEYXlDZWxsS2V5RG93bigkZXZlbnQsIGNhbGVuZGFyUm93LmRhdGUpXCJcbiAgICAgICAgICAgICAgKGtleXVwKT1cIndlZWtTZWxlY3Rpb24gJiYgKGNhbGVuZGFyUm93LmN1cnJlbnQpICYmIGNhbGVuZGFyUm93LmRhdGUgJiYgaGFuZGxlRGF5Q2VsbEtleVVwKCRldmVudCwgY2FsZW5kYXJSb3cuZGF0ZSlcIlxuICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJ3ZWVrU2VsZWN0aW9uICYmIGNhbGVuZGFyUm93LmRhdGUgJiYgaGFuZGxlQ2VsbE1vdXNlRW50ZXIoY2FsZW5kYXJSb3cuZGF0ZSlcIlxuICAgICAgICAgICAgICBbY0NhbGVuZGFyUm93XT1cIndlZWtcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoc2hvd1dlZWtOdW1iZXIoKSkge1xuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjYWxlbmRhci1jZWxsLXdlZWstbnVtYmVyXCI+XG4gICAgICAgICAgICAgICAge3sgd2Vlay53ZWVrTnVtYmVyID09PSAwID8gNTMgOiB3ZWVrLndlZWtOdW1iZXIgfX1cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBmb3IgKGRhdGVPYmogb2Ygd2Vlay5kYXlzOyB0cmFjayBkYXRlT2JqLmRhdGU7IGxldCBpZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgQGxldCBjdXJyZW50TW9udGggPSBkYXRlT2JqLm1vbnRoID09PSAnY3VycmVudCc7XG4gICAgICAgICAgICAgIEBpZiAoY3VycmVudE1vbnRoIHx8IHNob3dBZGphY2VudERheXMoKSkge1xuICAgICAgICAgICAgICAgIEBsZXQgc2VsZWN0YWJsZSA9IGRheVNlbGVjdGlvbiAmJiAoY3VycmVudE1vbnRoIHx8IHNlbGVjdEFkamFjZW50RGF5cygpKTtcbiAgICAgICAgICAgICAgICA8dGQgI2NhbGVuZGFyQ2VsbD1cImNDYWxlbmRhckRheVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RhYmxlICYmIGhhbmRsZURheUNlbGxDbGljayhkYXRlT2JqLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwic2VsZWN0YWJsZSAmJiBoYW5kbGVEYXlDZWxsS2V5RG93bigkZXZlbnQsIGRhdGVPYmouZGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwic2VsZWN0YWJsZSAmJiBoYW5kbGVEYXlDZWxsS2V5VXAoJGV2ZW50LCBkYXRlT2JqLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2VsZWN0YWJsZSAmJiBoYW5kbGVDZWxsTW91c2VFbnRlcihkYXRlT2JqLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkYXRlT2JqLmRhdGUgfCBjYWxlbmRhckRheVRpdGxlOmxvY2FsZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2RhdGVdPVwiZGF0ZU9iai5kYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW21vbnRoXT1cImRhdGVPYmoubW9udGhcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRlT2JqIHwgY2FsZW5kYXJDbGFzc0RheTp7bWluRGF0ZTogbWluRGF0ZSgpLCBtYXhEYXRlOiBtYXhEYXRlKCksIGRpc2FibGVkRGF0ZXM6IGRpc2FibGVkRGF0ZXMoKSwgZGF0ZUZpbHRlcjogZGF0ZUZpbHRlcigpfVwiXG4gICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJzZWxlY3RhYmxlICYmICFpc0RhdGVEaXNhYmxlZChkYXRlT2JqLmRhdGUpID8gMCA6IC0xXCJcbiAgICAgICAgICAgICAgICAgICAgY0NhbGVuZGFyRGF5XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNlbGwtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZGF0ZU9iai5kYXRlIHwgY2FsZW5kYXJEYXk6ZGF5Rm9ybWF0KCk6bG9jYWxlKCkgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNhbGVuZGFyLWNlbGxcIj48L3RkPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgPC90Ym9keT5cbjwvdGFibGU+XG5cbiJdfQ==
448
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbW9udGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLW1vbnRoL2NhbGVuZGFyLW1vbnRoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxlQUFlLEVBRWYsTUFBTSxFQUNOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsZUFBZSxFQUNmLGNBQWMsRUFDZCxRQUFRLEVBQ1IsY0FBYyxFQUNkLHFCQUFxQixFQUN0QixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sRUFBRSxlQUFlLEVBQThELE1BQU0scUJBQXFCLENBQUM7QUFDbEgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxN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R0FDcEIsb0JBQW9CLG9EQUNwQixzQkFBc0Isc0RBRXRCLHFCQUFxQixxREFDckIsbUJBQW1CLHdEQUNuQixPQUFPOzs0RkFJRSxzQkFBc0I7a0JBcEJsQyxTQUFTOytCQUNFLGtCQUFrQixZQUdsQixnQkFBZ0IsY0FDZCxJQUFJLFdBQ1A7d0JBQ1Asb0JBQW9CO3dCQUNwQixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsb0JBQW9CO3dCQUNwQixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsT0FBTzt3QkFDUCxTQUFTO3FCQUNWO3dEQWdJbUMsWUFBWTtzQkFBL0MsWUFBWTt1QkFBQyxvQkFBb0I7Z0JBQ0UsWUFBWTtzQkFBL0MsWUFBWTt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBEZXN0cm95UmVmLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG51bWJlckF0dHJpYnV0ZSxcbiAgUXVlcnlMaXN0LFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0VG9EYXRlT2JqZWN0LFxuICBjcmVhdGVHcm91cHNJbkFycmF5LFxuICBlcXVhbERhdGVzLFxuICBnZXRNb250aERldGFpbHMsXG4gIGdldE1vbnRoc05hbWVzLFxuICBnZXRZZWFycyxcbiAgaXNEYXRlRGlzYWJsZWQsXG4gIGlzRGF0ZUluUmFuZ2VEaXNhYmxlZFxufSBmcm9tICcuLi9jYWxlbmRhci51dGlscyc7XG5cbmltcG9ydCB7IENhbGVuZGFyU2VydmljZSwgRGF0ZUZpbHRlclR5cGUsIERheUZvcm1hdFR5cGUsIE1vbnRoRGV0YWlscywgU2VsZWN0aW9uVHlwZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FsZW5kYXJXZWVrZGF5UGlwZSB9IGZyb20gJy4vY2FsZW5kYXItd2Vla2RheS5waXBlJztcbmltcG9ydCB7IENhbGVuZGFyQ2xhc3NZZWFyUGlwZSB9IGZyb20gJy4vY2FsZW5kYXItY2xhc3MteWVhci5waXBlJztcbmltcG9ydCB7IENhbGVuZGFyQ2xhc3NNb250aFBpcGUgfSBmcm9tICcuL2NhbGVuZGFyLWNsYXNzLW1vbnRoLnBpcGUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXlQaXBlIH0gZnJvbSAnLi9jYWxlbmRhci1kYXkucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhckRheURpcmVjdGl2ZSB9IGZyb20gJy4vY2FsZW5kYXItZGF5LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDYWxlbmRhckRheVRpdGxlUGlwZSB9IGZyb20gJy4vY2FsZW5kYXItZGF5LXRpdGxlLnBpcGUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJDbGFzc0RheVBpcGUgfSBmcm9tICcuL2NhbGVuZGFyLWNsYXNzLWRheS5waXBlJztcbmltcG9ydCB7IENhbGVuZGFyQ2xhc3NSb3dQaXBlIH0gZnJvbSAnLi9jYWxlbmRhci1jbGFzcy1yb3cucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhclJvd0RpcmVjdGl2ZSB9IGZyb20gJy4vY2FsZW5kYXItcm93LmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtY2FsZW5kYXItbW9udGgnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItbW9udGguY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci1tb250aC5jb21wb25lbnQuc2NzcyddLFxuICBleHBvcnRBczogJ2NDYWxlbmRhck1vbnRoJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENhbGVuZGFyRGF5RGlyZWN0aXZlLFxuICAgIENhbGVuZGFyRGF5UGlwZSxcbiAgICBDYWxlbmRhckRheVRpdGxlUGlwZSxcbiAgICBDYWxlbmRhclJvd0RpcmVjdGl2ZSxcbiAgICBDYWxlbmRhckNsYXNzRGF5UGlwZSxcbiAgICBDYWxlbmRhckNsYXNzTW9udGhQaXBlLFxuICAgIENhbGVuZGFyQ2xhc3NSb3dQaXBlLFxuICAgIENhbGVuZGFyQ2xhc3NZZWFyUGlwZSxcbiAgICBDYWxlbmRhcldlZWtkYXlQaXBlLFxuICAgIE5nQ2xhc3MsXG4gICAgQXN5bmNQaXBlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJNb250aENvbXBvbmVudCB7XG4gICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAjY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KENhbGVuZGFyU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaWJlKCk7XG4gIH1cblxuICByZWFkb25seSBwYWdlSW5kZXggPSBpbnB1dCgwLCB7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xuXG4gIHJlYWRvbmx5IGFkZE1vbnRocyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy52aWV3KCk7XG4gICAgY29uc3QgcGFnZUluZGV4ID0gdGhpcy5wYWdlSW5kZXgoKTtcbiAgICByZXR1cm4gcGFnZUluZGV4ICogKHZpZXcgPT09ICd5ZWFycycgPyAxNDQgOiB2aWV3ID09PSAnbW9udGhzJyA/IDEyIDogMSk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsIHNlbGVjdGVkIGRhdGUuXG4gICAqIEB0eXBlICAoRGF0ZSB8IG51bGwpXG4gICAqL1xuICByZWFkb25seSBzdGFydERhdGUgPSBzaWduYWw8RGF0ZSB8IG51bGw+KG51bGwsIHsgZXF1YWw6IGVxdWFsRGF0ZXMgfSk7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgc2VsZWN0ZWQgdG8gZGF0ZSAocmFuZ2UpLlxuICAgKiBAdHlwZSAgRGF0ZSB8IG51bGxcbiAgICovXG4gIHJlYWRvbmx5IGVuZERhdGUgPSBzaWduYWw8RGF0ZSB8IG51bGw+KG51bGwsIHsgZXF1YWw6IGVxdWFsRGF0ZXMgfSk7XG5cbiAgcmVhZG9ubHkgZGF0ZXNFZmZlY3QgPSBlZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGUoKTtcbiAgICAgIGNvbnN0IGVuZERhdGUgPSBzdGFydERhdGUgJiYgdGhpcy5yYW5nZSgpID8gdGhpcy5lbmREYXRlKCkgOiBudWxsO1xuICAgICAgdGhpcy4jY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IHN0YXJ0RGF0ZTogc3RhcnREYXRlLCBlbmREYXRlOiBlbmREYXRlIH0pO1xuICAgIH0sXG4gICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICk7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGxpc3Qgb2YgZGF0ZXMgdGhhdCBjYW5ub3QgYmUgc2VsZWN0ZWQuXG4gICAqIEB0eXBlICBEYXRlW10gfCBEYXRlW11bXVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZWREYXRlcyA9IHNpZ25hbDwoRGF0ZVtdIHwgRGF0ZSlbXT4oW10pO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkYXkgb2Ygc3RhcnQgd2Vlay5cbiAgICogLSAwIC0gU3VuZGF5LFxuICAgKiAtIDEgLSBNb25kYXksXG4gICAqIC0gMiAtIFR1ZXNkYXksXG4gICAqIC0gMyAtIFdlZG5lc2RheSxcbiAgICogLSA0IC0gVGh1cnNkYXksXG4gICAqIC0gNSAtIEZyaWRheSxcbiAgICogLSA2IC0gU2F0dXJkYXksXG4gICAqL1xuICByZWFkb25seSBmaXJzdERheU9mV2VlayA9IHNpZ25hbCgxKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgZGVmYXVsdCBsb2NhbGUgZm9yIGNvbXBvbmVudHMuIElmIG5vdCBzZXQsIGl0IGlzIGluaGVyaXRlZCBmcm9tIHRoZSBicm93c2VyLlxuICAgKiBAZGVmYXVsdCAnZGVmYXVsdCdcbiAgICovXG4gIHJlYWRvbmx5IGxvY2FsZSA9IHNpZ25hbCgnZGVmYXVsdCcpO1xuXG4gIC8qKlxuICAgKiBBbGxvdyByYW5nZSBzZWxlY3Rpb24uXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJhbmdlID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKipcbiAgICogU2V0IGxlbmd0aCBvciBmb3JtYXQgb2YgZGF5IG5hbWUuXG4gICAqIEB0eXBlIG51bWJlciB8ICdsb25nJyB8ICduYXJyb3cnIHwgJ3Nob3J0J1xuICAgKiBAZGVmYXVsdCAnc2hvcnQnXG4gICAqL1xuICByZWFkb25seSB3ZWVrZGF5Rm9ybWF0ID0gc2lnbmFsPG51bWJlciB8ICdsb25nJyB8ICduYXJyb3cnIHwgJ3Nob3J0Jz4oJ3Nob3J0Jyk7XG5cbiAgLyoqXG4gICAqIFNldCBjYWxlbmRhciB2aWV3LlxuICAgKiBAdHlwZSAnZGF5cycgfCAnbW9udGhzJyB8ICd5ZWFycydcbiAgICogQGRlZmF1bHQgJ2RheXMnXG4gICAqL1xuICByZWFkb25seSB2aWV3ID0gc2lnbmFsPCdkYXlzJyB8ICdtb250aHMnIHwgJ3llYXJzJz4oJ2RheXMnKTtcblxuICAvKipcbiAgICogTWF4IHNlbGVjdGFibGUgZGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IG1heERhdGUgPSBzaWduYWw8RGF0ZSB8IG51bGw+KG51bGwsIHsgZXF1YWw6IGVxdWFsRGF0ZXMgfSk7XG5cbiAgLyoqXG4gICAqIE1pbiBzZWxlY3RhYmxlIGRhdGUuXG4gICAqL1xuICByZWFkb25seSBtaW5EYXRlID0gc2lnbmFsPERhdGUgfCBudWxsPihudWxsLCB7IGVxdWFsOiBlcXVhbERhdGVzIH0pO1xuXG4gIHJlYWRvbmx5IGxpc3RPZk1vbnRocyA9IGNvbXB1dGVkPHsgeWVhcjogbnVtYmVyOyBtb250aDogc3RyaW5nIH1bXVtdPigoKSA9PiB7XG4gICAgcmV0dXJuIGNyZWF0ZUdyb3Vwc0luQXJyYXkoZ2V0TW9udGhzTmFtZXModGhpcy5sb2NhbGUoKSwgdGhpcy5kYXRlKCkuZ2V0RnVsbFllYXIoKSksIDQpO1xuICB9KTtcblxuICByZWFkb25seSBsaXN0T2ZZZWFycyA9IGNvbXB1dGVkPG51bWJlcltdW10+KCgpID0+IGNyZWF0ZUdyb3Vwc0luQXJyYXkoZ2V0WWVhcnModGhpcy5kYXRlKCkuZ2V0RnVsbFllYXIoKSksIDQpKTtcblxuICAvKipcbiAgICogRGVmYXVsdCBkYXRlIG9mIHRoZSBjb21wb25lbnRcbiAgICogQHR5cGUgRGF0ZVxuICAgKi9cblxuICByZWFkb25seSBjYWxlbmRhckRhdGUgPSBzaWduYWw8RGF0ZT4obmV3IERhdGUoKSwgeyBlcXVhbDogZXF1YWxEYXRlcyB9KTtcblxuICByZWFkb25seSBkYXRlID0gY29tcHV0ZWQoXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuY2FsZW5kYXJEYXRlKCk7XG4gICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCkgKyB0aGlzLmFkZE1vbnRocygpLCAxLCAwLCAwLCAwLCAwKTtcbiAgICB9LFxuICAgIHsgZXF1YWw6IChhOiBEYXRlLCBiOiBEYXRlKSA9PiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCkgfVxuICApO1xuXG4gIHJlYWRvbmx5IGNhbGVuZGFyRGF0ZUVmZmVjdCA9IGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICB0aGlzLiNjYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgY2FsZW5kYXJEYXRlOiB0aGlzLmNhbGVuZGFyRGF0ZSgpIH0pO1xuICAgIH0sXG4gICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICk7XG5cbiAgLy8gcmVhZG9ubHkgY2FsZW5kYXJEYXlzID0gdmlld0NoaWxkcmVuKENhbGVuZGFyRGF5RGlyZWN0aXZlKTtcbiAgLy8gcmVhZG9ubHkgY2FsZW5kYXJSb3dzID0gdmlld0NoaWxkcmVuKENhbGVuZGFyUm93RGlyZWN0aXZlKTtcbiAgLy9cbiAgLy8gcmVhZG9ubHkgY2FsZW5kYXJEYXlzJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmNhbGVuZGFyRGF5cyk7XG4gIC8vIHJlYWRvbmx5IGNhbGVuZGFyUm93cyQgPSB0b09ic2VydmFibGUodGhpcy5jYWxlbmRhclJvd3MpO1xuXG4gIEBWaWV3Q2hpbGRyZW4oQ2FsZW5kYXJEYXlEaXJlY3RpdmUpIGNhbGVuZGFyRGF5cyE6IFF1ZXJ5TGlzdDxDYWxlbmRhckRheURpcmVjdGl2ZT47XG4gIEBWaWV3Q2hpbGRyZW4oQ2FsZW5kYXJSb3dEaXJlY3RpdmUpIGNhbGVuZGFyUm93cyE6IFF1ZXJ5TGlzdDxDYWxlbmRhclJvd0RpcmVjdGl2ZT47XG5cbiAgcmVhZG9ubHkgZGF0ZUZpbHRlciA9IHNpZ25hbDxEYXRlRmlsdGVyVHlwZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZGF5Rm9ybWF0ID0gc2lnbmFsPERheUZvcm1hdFR5cGU+KCdudW1lcmljJyk7XG4gIHJlYWRvbmx5IHNlbGVjdEFkamFjZW50RGF5cyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHNob3dBZGphY2VudERheXMgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvblR5cGUgPSBzaWduYWw8U2VsZWN0aW9uVHlwZT4oJ2RheScpO1xuICByZWFkb25seSBzaG93V2Vla051bWJlciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHdlZWtOdW1iZXJzTGFiZWwgPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgcmVhZG9ubHkgbW9udGhEZXRhaWxzID0gY29tcHV0ZWQ8TW9udGhEZXRhaWxzPigoKSA9PiB7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuZGF0ZSgpO1xuICAgIHJldHVybiBnZXRNb250aERldGFpbHMoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIHRoaXMuZmlyc3REYXlPZldlZWsoKSk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHdlZWtEYXlzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1vbnRoRGV0YWlscyA9IHRoaXMubW9udGhEZXRhaWxzKCk7XG4gICAgcmV0dXJuIG1vbnRoRGV0YWlsc1swXS5kYXlzO1xuICB9KTtcblxuICB5ZWFyTnVtYmVyKHllYXI6IGFueSkge1xuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCAwKS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUoKSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gIH1cblxuICBpc0RhdGVEaXNhYmxlZChkYXRlOiBEYXRlKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uVHlwZSA9IHRoaXMuc2VsZWN0aW9uVHlwZSgpO1xuICAgIGNvbnN0IGRpc2FibGVkRGF0ZXMgPSB0aGlzLmRpc2FibGVkRGF0ZXMoKTtcbiAgICBjb25zdCBkYXRlRmlsdGVyRm4gPSB0aGlzLmRhdGVGaWx0ZXIoKTtcbiAgICBjb25zdCBtYXhEYXRlID0gdGhpcy5tYXhEYXRlKCk7XG4gICAgY29uc3QgbWluRGF0ZSA9IHRoaXMubWluRGF0ZSgpO1xuICAgIGlmIChzZWxlY3Rpb25UeXBlID09PSAneWVhcicpIHtcbiAgICAgIGNvbnN0IG1pbiA9IG1pbkRhdGUgPyBuZXcgRGF0ZShtaW5EYXRlLmdldEZ1bGxZZWFyKCksIDAsIDEsIDAsIDAsIDAsIDApIDogbnVsbDtcbiAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgPyBuZXcgRGF0ZShtYXhEYXRlLmdldEZ1bGxZZWFyKCksIDExLCAzMSwgMCwgMCwgMCwgMCkgOiBudWxsO1xuICAgICAgcmV0dXJuIGlzRGF0ZURpc2FibGVkKGRhdGUsIG1pbiwgbWF4LCBkaXNhYmxlZERhdGVzKSB8fCAoZGF0ZUZpbHRlckZuID8gIWRhdGVGaWx0ZXJGbihkYXRlKSA6IGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKHNlbGVjdGlvblR5cGUgPT09ICdtb250aCcpIHtcbiAgICAgIGNvbnN0IG1pbiA9IG1pbkRhdGUgPyBuZXcgRGF0ZShtaW5EYXRlLmdldEZ1bGxZZWFyKCksIG1pbkRhdGUuZ2V0TW9udGgoKSwgMSwgMCwgMCwgMCwgMCkgOiBudWxsO1xuICAgICAgY29uc3QgbWF4ID0gbWF4RGF0ZSA/IG5ldyBEYXRlKG1heERhdGUuZ2V0RnVsbFllYXIoKSwgbWF4RGF0ZS5nZXRNb250aCgpICsgMSwgMSwgMCwgMCwgLTEsIDApIDogbnVsbDtcbiAgICAgIHJldHVybiBpc0RhdGVEaXNhYmxlZChkYXRlLCBtaW4sIG1heCwgZGlzYWJsZWREYXRlcykgfHwgKGRhdGVGaWx0ZXJGbiA/ICFkYXRlRmlsdGVyRm4oZGF0ZSkgOiBmYWxzZSk7XG4gICAgfVxuICAgIHJldHVybiBpc0RhdGVEaXNhYmxlZChkYXRlLCBtaW5EYXRlLCBtYXhEYXRlLCBkaXNhYmxlZERhdGVzKSB8fCAoZGF0ZUZpbHRlckZuID8gIWRhdGVGaWx0ZXJGbihkYXRlKSA6IGZhbHNlKTtcbiAgfVxuXG4gIGNhbGVuZGFyQ2VsbFRpdGxlKGRhdGU6IERhdGUpIHtcbiAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUoKSk7XG4gIH1cblxuICBoYW5kbGVDZWxsTW91c2VFbnRlcihob3ZlckRhdGU6IERhdGUgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAoIWhvdmVyRGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzZWxlY3Rpb25UeXBlID0gdGhpcy5zZWxlY3Rpb25UeXBlKCk7XG4gICAgY29uc3QgdXBkYXRlSG92ZXJWYWx1ZSA9XG4gICAgICAoWydkYXknLCAnd2VlayddLmluY2x1ZGVzKHNlbGVjdGlvblR5cGUpICYmIHRoaXMudmlldygpID09PSAnZGF5cycpIHx8XG4gICAgICAoWydtb250aCddLmluY2x1ZGVzKHNlbGVjdGlvblR5cGUpICYmIHRoaXMudmlldygpID09PSAnbW9udGhzJykgfHxcbiAgICAgIChbJ3llYXInXS5pbmNsdWRlcyhzZWxlY3Rpb25UeXBlKSAmJiB0aGlzLnZpZXcoKSA9PT0gJ3llYXJzJyk7XG5cbiAgICAvLyBpZiAodXBkYXRlSG92ZXJWYWx1ZSkge1xuICAgIGNvbnN0IGhvdmVyVmFsdWUgPSB0aGlzLmlzRGF0ZURpc2FibGVkKGhvdmVyRGF0ZSkgfHwgIXVwZGF0ZUhvdmVyVmFsdWUgPyBudWxsIDogaG92ZXJEYXRlO1xuICAgIHRoaXMuI2NhbGVuZGFyU2VydmljZS51cGRhdGUoeyBob3ZlckRhdGU6IGhvdmVyVmFsdWUgfSk7XG4gICAgLy8gfVxuICB9XG5cbiAgaGFuZGxlWWVhckNlbGxDbGljayh5ZWFyOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25UeXBlKCkgPT09ICd5ZWFyJykge1xuICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxLCAwLCAwLCAwLCAwKTtcbiAgICAgIGlmICh0aGlzLnJhbmdlKCkgJiYgdGhpcy5zdGFydERhdGUoKSAmJiAhdGhpcy5lbmREYXRlKCkpIHtcbiAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgMTIsIDEsIDAsIDAsIC0xLCAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjYWxlbmRhckRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxLCAwLCAwLCAwLCAwKTtcbiAgICB0aGlzLnZpZXcuc2V0KCdtb250aHMnKTtcbiAgICB0aGlzLiNjYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgdmlldzogdGhpcy52aWV3KCksIGNhbGVuZGFyRGF0ZTogY2FsZW5kYXJEYXRlIH0pO1xuICB9XG5cbiAgaGFuZGxlWWVhckNlbGxLZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGRhdGU6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFsnU3BhY2UnLCAnRW50ZXInXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgIHRoaXMuaGFuZGxlWWVhckNlbGxDbGljayhkYXRlLmdldEZ1bGxZZWFyKCkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoWydUYWInLCAnQXJyb3dSaWdodCcsICdBcnJvd0xlZnQnLCAnQXJyb3dVcCcsICdBcnJvd0Rvd24nXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ2VsbE1vdXNlRW50ZXIobmV3IERhdGUoZGF0ZSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU1vbnRoQ2VsbEtleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCwgZGF0ZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghZGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoWydTcGFjZScsICdFbnRlciddLmluY2x1ZGVzKCRldmVudC5jb2RlKSkge1xuICAgICAgdGhpcy5oYW5kbGVNb250aENlbGxDbGljayhkYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFsnVGFiJywgJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0JywgJ0Fycm93VXAnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICB0aGlzLmhhbmRsZUNlbGxNb3VzZUVudGVyKGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU1vbnRoQ2VsbENsaWNrKHZhbHVlOiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25UeXBlKCkgPT09ICdtb250aCcpIHtcbiAgICAgIGxldCBkYXRlID0gbmV3IERhdGUodmFsdWUuZ2V0RnVsbFllYXIoKSwgdmFsdWUuZ2V0TW9udGgoKSwgMSwgMCwgMCwgMCwgMCk7XG4gICAgICBpZiAodGhpcy5yYW5nZSgpICYmIHRoaXMuc3RhcnREYXRlKCkgJiYgIXRoaXMuZW5kRGF0ZSgpKSB7XG4gICAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSArIDEsIDEsIDAsIDAsIC0xLCAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnZpZXcuc2V0KCdkYXlzJyk7XG4gICAgdGhpcy4jY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IHZpZXc6IHRoaXMudmlldygpIH0pO1xuICAgIC8vIHRoaXMuc2V0Q2FsZW5kYXJQYWdlKDAsIDAsIHZhbHVlLmdldE1vbnRoKCkgLSB0aGlzLmFkZE1vbnRocygpKTtcbiAgICBjb25zdCBjYWxlbmRhckRhdGUgPSBuZXcgRGF0ZSh2YWx1ZS5nZXRGdWxsWWVhcigpLCB2YWx1ZS5nZXRNb250aCgpIC0gdGhpcy5hZGRNb250aHMoKSwgMSwgMCwgMCwgMCwgMCk7XG4gICAgdGhpcy4jY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGNhbGVuZGFyRGF0ZTogY2FsZW5kYXJEYXRlIH0pO1xuICB9XG5cbiAgc2V0Q2FsZW5kYXJQYWdlKHllYXJzOiBudW1iZXIsIG1vbnRocyA9IDAsIHNldE1vbnRoPzogbnVtYmVyKSB7XG4gICAgY29uc3QgeWVhciA9IHRoaXMuZGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgbW9udGggPSB0aGlzLmRhdGUoKS5nZXRNb250aCgpO1xuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSwgMCwgMCwgMCwgMCk7XG5cbiAgICB5ZWFycyAmJiBkLnNldEZ1bGxZZWFyKGQuZ2V0RnVsbFllYXIoKSArIHllYXJzKTtcbiAgICBtb250aHMgJiYgZC5zZXRNb250aChkLmdldE1vbnRoKCkgKyBtb250aHMpO1xuICAgIHR5cGVvZiBzZXRNb250aCA9PT0gJ251bWJlcicgJiYgZC5zZXRNb250aChzZXRNb250aCk7XG5cbiAgICB0aGlzLiNjYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgY2FsZW5kYXJEYXRlOiBkIH0pO1xuICB9XG5cbiAgaGFuZGxlRGF5Q2VsbEtleURvd24oJGV2ZW50OiBLZXlib2FyZEV2ZW50LCBkYXRlOiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghWydUYWInLCAnQXJyb3dSaWdodCcsICdBcnJvd0xlZnQnLCAnQXJyb3dVcCcsICdBcnJvd0Rvd24nXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5oYW5kbGVDZWxsTW91c2VFbnRlcihkYXRlKTtcblxuICAgIGNvbnN0IGV2ZW50S2V5ID0gJGV2ZW50LmtleSA9PT0gJ1RhYicgPyAoJGV2ZW50LnNoaWZ0S2V5ID8gJ0Fycm93TGVmdCcgOiAnQXJyb3dSaWdodCcpIDogJGV2ZW50LmtleTtcbiAgICBjb25zdCBzZWxlY3Rpb25UeXBlID0gdGhpcy5zZWxlY3Rpb25UeXBlKCk7XG4gICAgY29uc3QgdmlldyA9IHRoaXMudmlldygpO1xuICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLm1heERhdGUoKTtcbiAgICBpZiAoXG4gICAgICBtYXhEYXRlICYmXG4gICAgICBkYXRlID49IGNvbnZlcnRUb0RhdGVPYmplY3QobWF4RGF0ZSwgc2VsZWN0aW9uVHlwZSkgJiZcbiAgICAgIFsnQXJyb3dSaWdodCcsICdBcnJvd0Rvd24nXS5pbmNsdWRlcyhldmVudEtleSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbWluRGF0ZSA9IHRoaXMubWluRGF0ZSgpO1xuICAgIGlmIChtaW5EYXRlICYmIGRhdGUgPD0gY29udmVydFRvRGF0ZU9iamVjdChtaW5EYXRlLCBzZWxlY3Rpb25UeXBlKSAmJiBbJ0Fycm93TGVmdCcsICdBcnJvd1VwJ10uaW5jbHVkZXMoZXZlbnRLZXkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGVsZW1lbnQgPSAkZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKHNlbGVjdGlvblR5cGUgPT09ICd3ZWVrJyAmJiB2aWV3ID09PSAnZGF5cycgJiYgZWxlbWVudC50YWJJbmRleCA9PT0gLTEpIHtcbiAgICAgIGVsZW1lbnQgPSBlbGVtZW50LmNsb3Nlc3QoJ3RyW3RhYmluZGV4PVwiMFwiXScpIGFzIEhUTUxFbGVtZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRzID0gWyd3ZWVrJ10uaW5jbHVkZXMoc2VsZWN0aW9uVHlwZSkgJiYgdmlldyA9PT0gJ2RheXMnID8gdGhpcy5jYWxlbmRhclJvd3MgOiB0aGlzLmNhbGVuZGFyRGF5cztcblxuICAgIGNvbnN0IGxpc3QgPSBlbGVtZW50c1xuICAgICAgLnRvQXJyYXkoKVxuICAgICAgLm1hcCgoY2FsZW5kYXJDZWxsKSA9PiBjYWxlbmRhckNlbGwuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KVxuICAgICAgLy8gLmZpbHRlcigoZWxlbWVudCkgPT4gdGhpcy5zZWxlY3Rpb25UeXBlID09PSAnd2VlaycgPyBlbGVtZW50Py50YWJJbmRleCA9PT0gMCA6IGVsZW1lbnQ/LmNsYXNzTGlzdC5jb250YWlucygnY3VycmVudCcpKVxuICAgICAgLmZpbHRlcigoZWxlbWVudCkgPT4gZWxlbWVudD8udGFiSW5kZXggPT09IDApO1xuXG4gICAgY29uc3QgaW5kZXggPSBsaXN0LmluZGV4T2YoZWxlbWVudCk7XG4gICAgY29uc3QgZmlyc3QgPSBpbmRleCA9PT0gMDtcbiAgICBjb25zdCBsYXN0ID0gaW5kZXggPT09IGxpc3QubGVuZ3RoIC0gMTtcblxuICAgIGNvbnN0IHRvQm91bmRhcnkgPSB7XG4gICAgICBzdGFydDogaW5kZXgsXG4gICAgICBlbmQ6IGxpc3QubGVuZ3RoIC0gKGluZGV4ICsgMSlcbiAgICB9O1xuXG4gICAgY29uc3QgZ2FwID0ge1xuICAgICAgQXJyb3dSaWdodDogMSxcbiAgICAgIEFycm93TGVmdDogLTEsXG4gICAgICBBcnJvd1VwOiBzZWxlY3Rpb25UeXBlID09PSAnd2VlaycgJiYgdmlldyA9PT0gJ2RheXMnID8gLTEgOiB2aWV3ID09PSAnZGF5cycgPyAtNyA6IC0zLFxuICAgICAgQXJyb3dEb3duOiBzZWxlY3Rpb25UeXBlID09PSAnd2VlaycgJiYgdmlldyA9PT0gJ2RheXMnID8gMSA6IHZpZXcgPT09ICdkYXlzJyA/IDcgOiAzXG4gICAgfTtcblxuICAgIGlmIChcbiAgICAgIChldmVudEtleSA9PT0gJ0Fycm93UmlnaHQnICYmIGxhc3QpIHx8XG4gICAgICAoZXZlbnRLZXkgPT09ICdBcnJvd0Rvd24nICYmIHRvQm91bmRhcnkuZW5kIDwgZ2FwLkFycm93RG93bikgfHxcbiAgICAgIChldmVudEtleSA9PT0gJ0Fycm93TGVmdCcgJiYgZmlyc3QpIHx8XG4gICAgICAoZXZlbnRLZXkgPT09ICdBcnJvd1VwJyAmJiB0b0JvdW5kYXJ5LnN0YXJ0IDwgTWF0aC5hYnMoZ2FwLkFycm93VXApKVxuICAgICkge1xuICAgICAgZWxlbWVudHMuY2hhbmdlc1xuICAgICAgICAucGlwZSh0YWtlKDEpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZikpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZTogUXVlcnlMaXN0PENhbGVuZGFyUm93RGlyZWN0aXZlIHwgQ2FsZW5kYXJEYXlEaXJlY3RpdmU+KSA9PiB7XG4gICAgICAgICAgY29uc3QgX2xpc3QgPSBjaGFuZ2VcbiAgICAgICAgICAgIC50b0FycmF5KClcbiAgICAgICAgICAgIC8vIC5maWx0ZXIoZWxlbWVudCA9PiB0aGlzLnNlbGVjdGlvblR5cGUgPT09ICd3ZWVrJyA/IGVsZW1lbnQ/LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50YWJJbmRleCA9PT0gMCA6IGVsZW1lbnQ/LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2N1cnJlbnQnKSk7XG4gICAgICAgICAgICAuZmlsdGVyKChkaXJlY3RpdmUpID0+IGRpcmVjdGl2ZT8uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID09PSAwKTtcblxuICAgICAgICAgIGlmIChfbGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxldCBkYXlUb0ZvY3VzOiBDYWxlbmRhckRheURpcmVjdGl2ZSB8IENhbGVuZGFyUm93RGlyZWN0aXZlIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgc3dpdGNoIChldmVudEtleSkge1xuICAgICAgICAgICAgICBjYXNlICdBcnJvd1JpZ2h0Jzoge1xuICAgICAgICAgICAgICAgIGRheVRvRm9jdXMgPSBfbGlzdFswXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOiB7XG4gICAgICAgICAgICAgICAgZGF5VG9Gb2N1cyA9IF9saXN0W19saXN0Lmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6IHtcbiAgICAgICAgICAgICAgICBkYXlUb0ZvY3VzID0gX2xpc3RbZ2FwLkFycm93RG93biAtIChsaXN0Lmxlbmd0aCAtIGluZGV4KV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6IHtcbiAgICAgICAgICAgICAgICBkYXlUb0ZvY3VzID0gX2xpc3RbX2xpc3QubGVuZ3RoIC0gKE1hdGguYWJzKGdhcC5BcnJvd1VwKSArIDEgLSAoaW5kZXggKyAxKSldO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWRheVRvRm9jdXM/LmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdkYXlUb0ZvY3VzJywgZGF5VG9Gb2N1cz8uZGF0ZSk7XG4gICAgICAgICAgICAgIGRheVRvRm9jdXM/LmZvY3VzKCdrZXlib2FyZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIHN3aXRjaCAodmlldykge1xuICAgICAgICBjYXNlICdkYXlzJzpcbiAgICAgICAgICB0aGlzLnNldENhbGVuZGFyUGFnZSgwLCBbJ0Fycm93UmlnaHQnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoZXZlbnRLZXkpID8gMSA6IC0xKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbW9udGhzJzpcbiAgICAgICAgICB0aGlzLnNldENhbGVuZGFyUGFnZShbJ0Fycm93UmlnaHQnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoZXZlbnRLZXkpID8gMSA6IC0xKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAneWVhcnMnOlxuICAgICAgICAgIHRoaXMuc2V0Q2FsZW5kYXJQYWdlKFsnQXJyb3dSaWdodCcsICdBcnJvd0Rvd24nXS5pbmNsdWRlcyhldmVudEtleSkgPyAxMiA6IC0xMik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgbmV4dEVsZW1lbnQgPSBsaXN0W2luZGV4ICsgZ2FwW2V2ZW50S2V5XV07XG4gICAgaWYgKG5leHRFbGVtZW50Py50YWJJbmRleCA9PT0gMCkge1xuICAgICAgbmV4dEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gaW5kZXg7IGkgPCBsaXN0Lmxlbmd0aDsgbGlzdC5sZW5ndGggJiYgWydBcnJvd1JpZ2h0JywgJ0Fycm93RG93biddLmluY2x1ZGVzKGV2ZW50S2V5KSA/IGkrKyA6IGktLSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgbmV4dEVsZW1lbnQgPSBsaXN0W2kgKyBnYXBbZXZlbnRLZXldXTtcbiAgICAgIGlmIChuZXh0RWxlbWVudD8udGFiSW5kZXggPT09IDApIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBuZXh0RWxlbWVudD8uZm9jdXMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAoIW5leHRFbGVtZW50KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNlbGxNb3VzZUxlYXZlKCkge1xuICAgIHRoaXMuI2NhbGVuZGFyU2VydmljZS51cGRhdGUoeyBob3ZlckRhdGU6IG51bGwgfSk7XG4gIH1cblxuICBoYW5kbGVEYXlDZWxsS2V5VXAoJGV2ZW50OiBLZXlib2FyZEV2ZW50LCBkYXRlOiBEYXRlKSB7XG4gICAgaWYgKFsnU3BhY2UnLCAnRW50ZXInXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgIHRoaXMuaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoWydUYWInLCAnQXJyb3dSaWdodCcsICdBcnJvd0xlZnQnLCAnQXJyb3dVcCcsICdBcnJvd0Rvd24nXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ2VsbE1vdXNlRW50ZXIoZGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGU6IERhdGUpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25UeXBlKCkgPT09ICdkYXknICYmIHRoaXMuaXNEYXRlRGlzYWJsZWQoZGF0ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucmFuZ2UoKSkge1xuICAgICAgdGhpcy5lbmREYXRlLnNldChudWxsKTtcbiAgICAgIHRoaXMuc3RhcnREYXRlLnNldChkYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZSgpO1xuICAgIGNvbnN0IGVuZERhdGUgPSB0aGlzLmVuZERhdGUoKTtcblxuICAgIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xuICAgICAgdGhpcy5zdGFydERhdGUuc2V0KG51bGwpO1xuICAgICAgdGhpcy5lbmREYXRlLnNldChudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoISFzdGFydERhdGUgJiYgIWVuZERhdGUpIHtcbiAgICAgIGlmIChzdGFydERhdGUgJiYgZGF0ZSA8IHN0YXJ0RGF0ZSkge1xuICAgICAgICB0aGlzLmVuZERhdGUuc2V0KG51bGwpO1xuICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQoZGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhZGREYXlzID0gdGhpcy5zZWxlY3Rpb25UeXBlKCkgIT09ICd3ZWVrJyA/IDEgOiA3O1xuICAgICAgICB0aGlzLmVuZERhdGUuc2V0KG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSArIGFkZERheXMsIDAsIDAsIC0xLCAwKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5kRGF0ZS5zZXQobnVsbCk7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQoZGF0ZSk7XG4gICAgfVxuICAgIHtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlKCk7XG4gICAgICBjb25zdCBlbmREYXRlID0gdGhpcy5lbmREYXRlKCk7XG4gICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcbiAgICAgICAgY29uc3QgZGF0ZUZpbHRlckZuID0gdGhpcy5kYXRlRmlsdGVyKCk7XG4gICAgICAgIGlmIChpc0RhdGVJblJhbmdlRGlzYWJsZWQoc3RhcnREYXRlLCBlbmREYXRlLCB0aGlzLmRpc2FibGVkRGF0ZXMoKSwgZGF0ZUZpbHRlckZuKSkge1xuICAgICAgICAgIHRoaXMuc3RhcnREYXRlLnNldChudWxsKTtcbiAgICAgICAgICB0aGlzLmVuZERhdGUuc2V0KG51bGwpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNhbGVuZGFyU3RhdGVTdWJzY3JpYmUoKTogdm9pZCB7XG4gICAgdGhpcy4jY2FsZW5kYXJTZXJ2aWNlLmNhbGVuZGFyU3RhdGUkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoc3RhdGUpO1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGlmIChrZXkgaW4gdGhpcykge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBjb25zdCBpc1dyaXRhYmxlU2lnbmFsID0gdHlwZW9mIHRoaXNba2V5XSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdGhpc1trZXldLnNldCA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgaXNXcml0YWJsZVNpZ25hbCA/IHRoaXNba2V5XS5zZXQoc3RhdGVba2V5XSkgOiAodGhpc1trZXldID0gc3RhdGVba2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldE1vbnRoU3RhcnQoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmNhbGVuZGFyRGF0ZSgpLmdldEZ1bGxZZWFyKCksIGluZGV4ICsgdGhpcy5hZGRNb250aHMoKSwgMSwgMCwgMCwgMCwgMCk7XG4gIH1cblxuICBnZXRNb250aEVuZChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuY2FsZW5kYXJEYXRlKCkuZ2V0RnVsbFllYXIoKSwgaW5kZXggKyAxICsgdGhpcy5hZGRNb250aHMoKSwgMSwgMCwgMCwgLTEsIDApO1xuICB9XG5cbiAgZ2V0WWVhclN0YXJ0KHllYXI6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcbiAgfVxuXG4gIGdldFllYXJFbmQoeWVhcjogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIDExLCAxLCAwLCAwLCAtMSwgMCk7XG4gIH1cbn1cbiIsIjx0YWJsZT5cbiAgQGlmICh2aWV3KCkgPT09ICdkYXlzJykge1xuICAgIDx0aGVhZD5cbiAgICA8dHI+XG4gICAgICBAaWYgKHNob3dXZWVrTnVtYmVyKCkpIHtcbiAgICAgICAgPHRoIGNsYXNzPVwiY2FsZW5kYXItY2VsbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXItY2VsbC1pbm5lclwiPnt7IHdlZWtOdW1iZXJzTGFiZWwoKSB9fTwvZGl2PlxuICAgICAgICA8L3RoPlxuICAgICAgfVxuICAgICAgQGZvciAod2Vla0RheSBvZiB3ZWVrRGF5cygpOyB0cmFjayB3ZWVrRGF5LmRhdGU7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIEBsZXQgZGF0ZSA9IHdlZWtEYXkuZGF0ZSA7XG4gICAgICAgIDx0aCBjbGFzcz1cImNhbGVuZGFyLWNlbGxcIiBhYmJyPVwie3tkYXRlIHwgY2FsZW5kYXJXZWVrZGF5Oidsb25nJzpsb2NhbGUoKX19XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlci1jZWxsLWlubmVyXCI+XG4gICAgICAgICAgICB7eyBkYXRlIHwgY2FsZW5kYXJXZWVrZGF5OndlZWtkYXlGb3JtYXQoKTpsb2NhbGUoKSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RoPlxuICAgICAgfVxuICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgfVxuICA8dGJvZHkgKG1vdXNlbGVhdmUpPVwiaGFuZGxlQ2VsbE1vdXNlTGVhdmUoKVwiPlxuICAgIEBzd2l0Y2ggKHZpZXcoKSkge1xuICAgICAgQGNhc2UgKCd5ZWFycycpIHtcbiAgICAgICAgQGZvciAoeWVhcnNSb3cgb2YgbGlzdE9mWWVhcnMoKTsgdHJhY2sgeWVhcnNSb3dbMF07IGxldCByb3dJZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICBAZm9yICh5ZWFyIG9mIHllYXJzUm93OyB0cmFjayB5ZWFyOyBsZXQgaWR4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICNjYWxlbmRhclllYXI9XCJjQ2FsZW5kYXJEYXlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCIhY2FsZW5kYXJZZWFyLmRpc2FibGVkJCgpICYmIGhhbmRsZVllYXJDZWxsQ2xpY2soeWVhcilcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cImNhbGVuZGFyWWVhci5kYXRlKCkgJiYgaGFuZGxlRGF5Q2VsbEtleURvd24oJGV2ZW50LCBjYWxlbmRhclllYXIuZGF0ZSgpKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwKT1cImhhbmRsZVllYXJDZWxsS2V5VXAoJGV2ZW50LCBjYWxlbmRhclllYXIuZGF0ZSgpKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwiY2FsZW5kYXJZZWFyLmRhdGUoKSAmJiBoYW5kbGVDZWxsTW91c2VFbnRlcihjYWxlbmRhclllYXIuZGF0ZSgpKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjYWxlbmRhclllYXIuZGF0ZSgpPy5nZXRGdWxsWWVhcigpXCJcbiAgICAgICAgICAgICAgICBbZGF0ZV09XCJnZXRZZWFyU3RhcnQoeWVhcilcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInllYXIgfCBjYWxlbmRhckNsYXNzWWVhclwiXG4gICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImNhbGVuZGFyWWVhci5kaXNhYmxlZCQoKSA/IC0xIDogMFwiXG4gICAgICAgICAgICAgICAgY0NhbGVuZGFyRGF5XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY2VsbC1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAge3sgeWVhck51bWJlcih5ZWFyKSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBjYXNlICgnbW9udGhzJykge1xuICAgICAgICBAZm9yIChtb250aHNSb3cgb2YgbGlzdE9mTW9udGhzKCk7IHRyYWNrIG1vbnRoc1Jvd1swXTsgbGV0IHJvd0lkeCA9ICRpbmRleCkge1xuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIEBmb3IgKG1vbnRoIG9mIG1vbnRoc1JvdzsgdHJhY2sgbW9udGg7IGxldCBpZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgQGxldCBtb250aFN0YXJ0ID0gZ2V0TW9udGhTdGFydChyb3dJZHgqMytpZHgpO1xuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAjY2FsZW5kYXJNb250aD1cImNDYWxlbmRhckRheVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiFjYWxlbmRhck1vbnRoLmRpc2FibGVkJCgpICYmIGhhbmRsZU1vbnRoQ2VsbENsaWNrKGNhbGVuZGFyTW9udGguZGF0ZSgpKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwiY2FsZW5kYXJNb250aC5kYXRlKCkgJiYgaGFuZGxlRGF5Q2VsbEtleURvd24oJGV2ZW50LCBjYWxlbmRhck1vbnRoLmRhdGUoKSlcIlxuICAgICAgICAgICAgICAgIChrZXl1cCk9XCJoYW5kbGVNb250aENlbGxLZXlVcCgkZXZlbnQsIGNhbGVuZGFyTW9udGguZGF0ZSgpKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwiY2FsZW5kYXJNb250aC5kYXRlKCkgJiYgaGFuZGxlQ2VsbE1vdXNlRW50ZXIoY2FsZW5kYXJNb250aC5kYXRlKCkpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNhbGVuZGFyTW9udGguZGF0ZSgpPy5nZXRGdWxsWWVhcigpKycgJyttb250aC5tb250aFwiXG4gICAgICAgICAgICAgICAgW2RhdGVdPVwibW9udGhTdGFydFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwibW9udGhTdGFydCB8IGNhbGVuZGFyQ2xhc3NNb250aDoocm93SWR4KjMraWR4KVwiXG4gICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImNhbGVuZGFyTW9udGguZGlzYWJsZWQkKCkgPyAtMSA6IDBcIlxuICAgICAgICAgICAgICAgIGNDYWxlbmRhckRheVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNlbGwtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgIHt7IG1vbnRoLm1vbnRoIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgICBAZGVmYXVsdCB7XG4gICAgICAgIEBsZXQgd2Vla1NlbGVjdGlvbiA9IHNlbGVjdGlvblR5cGUoKSA9PT0gJ3dlZWsnO1xuICAgICAgICBAbGV0IGRheVNlbGVjdGlvbiA9IHNlbGVjdGlvblR5cGUoKSA9PT0gJ2RheSc7XG4gICAgICAgIEBmb3IgKHdlZWsgb2YgbW9udGhEZXRhaWxzKCk7IHRyYWNrIHdlZWsuZGF5c1swXTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICA8dHIgI2NhbGVuZGFyUm93PVwiY0NhbGVuZGFyUm93XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIndlZWtTZWxlY3Rpb24gJiYgKGNhbGVuZGFyUm93LmN1cnJlbnQpICYmIGNhbGVuZGFyUm93LmRhdGUgJiYgaGFuZGxlRGF5Q2VsbENsaWNrKGNhbGVuZGFyUm93LmRhdGUpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24pPVwid2Vla1NlbGVjdGlvbiAmJiAoY2FsZW5kYXJSb3cuY3VycmVudCkgJiYgY2FsZW5kYXJSb3cuZGF0ZSAmJiBoYW5kbGVEYXlDZWxsS2V5RG93bigkZXZlbnQsIGNhbGVuZGFyUm93LmRhdGUpXCJcbiAgICAgICAgICAgICAgKGtleXVwKT1cIndlZWtTZWxlY3Rpb24gJiYgKGNhbGVuZGFyUm93LmN1cnJlbnQpICYmIGNhbGVuZGFyUm93LmRhdGUgJiYgaGFuZGxlRGF5Q2VsbEtleVVwKCRldmVudCwgY2FsZW5kYXJSb3cuZGF0ZSlcIlxuICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJ3ZWVrU2VsZWN0aW9uICYmIGNhbGVuZGFyUm93LmRhdGUgJiYgaGFuZGxlQ2VsbE1vdXNlRW50ZXIoY2FsZW5kYXJSb3cuZGF0ZSlcIlxuICAgICAgICAgICAgICBbY0NhbGVuZGFyUm93XT1cIndlZWtcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoc2hvd1dlZWtOdW1iZXIoKSkge1xuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjYWxlbmRhci1jZWxsLXdlZWstbnVtYmVyXCI+XG4gICAgICAgICAgICAgICAge3sgd2Vlay53ZWVrTnVtYmVyID09PSAwID8gNTMgOiB3ZWVrLndlZWtOdW1iZXIgfX1cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBmb3IgKGRhdGVPYmogb2Ygd2Vlay5kYXlzOyB0cmFjayBkYXRlT2JqLmRhdGU7IGxldCBpZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgQGxldCBjdXJyZW50TW9udGggPSBkYXRlT2JqLm1vbnRoID09PSAnY3VycmVudCc7XG4gICAgICAgICAgICAgIEBpZiAoY3VycmVudE1vbnRoIHx8IHNob3dBZGphY2VudERheXMoKSkge1xuICAgICAgICAgICAgICAgIEBsZXQgc2VsZWN0YWJsZSA9IGRheVNlbGVjdGlvbiAmJiAoY3VycmVudE1vbnRoIHx8IHNlbGVjdEFkamFjZW50RGF5cygpKTtcbiAgICAgICAgICAgICAgICA8dGQgI2NhbGVuZGFyQ2VsbD1cImNDYWxlbmRhckRheVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RhYmxlICYmIGhhbmRsZURheUNlbGxDbGljayhkYXRlT2JqLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwic2VsZWN0YWJsZSAmJiBoYW5kbGVEYXlDZWxsS2V5RG93bigkZXZlbnQsIGRhdGVPYmouZGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwic2VsZWN0YWJsZSAmJiBoYW5kbGVEYXlDZWxsS2V5VXAoJGV2ZW50LCBkYXRlT2JqLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2VsZWN0YWJsZSAmJiBoYW5kbGVDZWxsTW91c2VFbnRlcihkYXRlT2JqLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkYXRlT2JqLmRhdGUgfCBjYWxlbmRhckRheVRpdGxlOmxvY2FsZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2RhdGVdPVwiZGF0ZU9iai5kYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW21vbnRoXT1cImRhdGVPYmoubW9udGhcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRlT2JqIHwgY2FsZW5kYXJDbGFzc0RheTp7bWluRGF0ZTogbWluRGF0ZSgpLCBtYXhEYXRlOiBtYXhEYXRlKCksIGRpc2FibGVkRGF0ZXM6IGRpc2FibGVkRGF0ZXMoKSwgZGF0ZUZpbHRlcjogZGF0ZUZpbHRlcigpfVwiXG4gICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJzZWxlY3RhYmxlICYmICFpc0RhdGVEaXNhYmxlZChkYXRlT2JqLmRhdGUpID8gMCA6IC0xXCJcbiAgICAgICAgICAgICAgICAgICAgY0NhbGVuZGFyRGF5XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNlbGwtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZGF0ZU9iai5kYXRlIHwgY2FsZW5kYXJEYXk6ZGF5Rm9ybWF0KCk6bG9jYWxlKCkgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNhbGVuZGFyLWNlbGxcIj48L3RkPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgPC90Ym9keT5cbjwvdGFibGU+XG5cbiJdfQ==
@@ -102,10 +102,10 @@ export class CalendarRowDirective {
102
102
  getLabel() {
103
103
  return this.date?.toLocaleDateString(this.locale) ?? '';
104
104
  }
105
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CalendarRowDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
106
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.9", type: CalendarRowDirective, isStandalone: true, selector: "[cCalendarRow]", inputs: { week: ["cCalendarRow", "week"] }, host: { properties: { "attr.aria-selected": "ariaSelected", "attr.tabindex": "tabindex()", "class": "this.hostClasses" } }, exportAs: ["cCalendarRow"], ngImport: i0 }); }
105
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CalendarRowDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
106
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: CalendarRowDirective, isStandalone: true, selector: "[cCalendarRow]", inputs: { week: ["cCalendarRow", "week"] }, host: { properties: { "attr.aria-selected": "ariaSelected", "attr.tabindex": "tabindex()", "class": "this.hostClasses" } }, exportAs: ["cCalendarRow"], ngImport: i0 }); }
107
107
  }
108
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CalendarRowDirective, decorators: [{
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CalendarRowDirective, decorators: [{
109
109
  type: Directive,
110
110
  args: [{
111
111
  selector: '[cCalendarRow]',
@@ -120,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
120
120
  type: HostBinding,
121
121
  args: ['class']
122
122
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItcm93LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItbW9udGgvY2FsZW5kYXItcm93LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBbUIsWUFBWSxFQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBaUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFRdEQsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixXQUFXLENBQXNCO0lBQ2pDLGdCQUFnQixDQUEyQjtJQUkzQztRQUxBLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMzQyxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBZ0Q3QixTQUFJLEdBQWdCLElBQUksQ0FBQztRQUN4QixjQUFTLEdBQWdCLElBQUksQ0FBQztRQUM5QixZQUFPLEdBQWdCLElBQUksQ0FBQztRQUM1QixjQUFTLEdBQWdCLElBQUksQ0FBQztRQUM5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QUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxNQUFNLElBQUksVUFBVSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxRCxDQUFDOzhHQXRJVSxvQkFBb0I7a0dBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFOaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLElBQUksRUFBRSxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUU7aUJBQ2xGO3dEQXlDSyxJQUFJO3NCQURQLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBbUM1QyxXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIGluamVjdCwgSW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNhYmxlT3B0aW9uLCBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlLCBEYXRlRmlsdGVyVHlwZSwgU2VsZWN0aW9uVHlwZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgY29udmVydFRvRGF0ZU9iamVjdCwgaXNEYXRlRGlzYWJsZWQsIGlzRGF0ZUluUmFuZ2UsIGlzRGF0ZVNlbGVjdGVkIH0gZnJvbSAnLi4vY2FsZW5kYXIudXRpbHMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjQ2FsZW5kYXJSb3ddJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZXhwb3J0QXM6ICdjQ2FsZW5kYXJSb3cnLFxuICBob3N0OiB7ICdbYXR0ci5hcmlhLXNlbGVjdGVkXSc6ICdhcmlhU2VsZWN0ZWQnLCAnW2F0dHIudGFiaW5kZXhdJzogJ3RhYmluZGV4KCknIH1cbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJSb3dEaXJlY3RpdmUgaW1wbGVtZW50cyBGb2N1c2FibGVPcHRpb24ge1xuICAjZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgI2NhbGVuZGFyU2VydmljZSA9IGluamVjdChDYWxlbmRhclNlcnZpY2UpO1xuICBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBmb2N1c01vbml0b3IgPSBpbmplY3QoRm9jdXNNb25pdG9yKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLiNjYWxlbmRhclNlcnZpY2UuY2FsZW5kYXJTdGF0ZSRcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBzdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZSxcbiAgICAgICAgICBlbmREYXRlID0gdGhpcy5lbmREYXRlLFxuICAgICAgICAgIGhvdmVyRGF0ZSA9IHRoaXMuaG92ZXJEYXRlLFxuICAgICAgICAgIG1heERhdGUgPSB0aGlzLm1heERhdGUsXG4gICAgICAgICAgbWluRGF0ZSA9IHRoaXMubWluRGF0ZSxcbiAgICAgICAgICByYW5nZSA9IHRoaXMucmFuZ2UsXG4gICAgICAgICAgZGlzYWJsZWREYXRlcyA9IHRoaXMuZGlzYWJsZWREYXRlcyxcbiAgICAgICAgICBkYXRlRmlsdGVyID0gdGhpcy5kYXRlRmlsdGVyLFxuICAgICAgICAgIHNlbGVjdGlvblR5cGUgPSB0aGlzLnNlbGVjdGlvblR5cGUsXG4gICAgICAgICAgY2FsZW5kYXJEYXRlID0gdGhpcy5jYWxlbmRhckRhdGUsXG4gICAgICAgICAgbG9jYWxlID0gdGhpcy5sb2NhbGVcbiAgICAgICAgfSA9IHsgLi4uc3RhdGUgfTtcbiAgICAgICAgdGhpcy5zdGFydERhdGUgPSBzdGFydERhdGU7XG4gICAgICAgIHRoaXMuZW5kRGF0ZSA9IGVuZERhdGU7XG4gICAgICAgIHRoaXMuaG92ZXJEYXRlID0gaG92ZXJEYXRlO1xuICAgICAgICB0aGlzLm1heERhdGUgPSBtYXhEYXRlO1xuICAgICAgICB0aGlzLm1pbkRhdGUgPSBtaW5EYXRlO1xuICAgICAgICB0aGlzLnJhbmdlID0gcmFuZ2U7XG4gICAgICAgIHRoaXMuZGlzYWJsZWREYXRlcyA9IGRpc2FibGVkRGF0ZXM7XG4gICAgICAgIHRoaXMuZGF0ZUZpbHRlciA9IGRhdGVGaWx0ZXI7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uVHlwZSA9IHNlbGVjdGlvblR5cGU7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJEYXRlID0gY2FsZW5kYXJEYXRlID8/IG5ldyBEYXRlKCk7XG4gICAgICAgIHRoaXMubG9jYWxlID0gbG9jYWxlID8/ICdkZWZhdWx0JztcblxuICAgICAgICAvLyB0aGlzLiN0YWJpbmRleC5zZXQodGhpcy5zZWxlY3Rpb25UeXBlID09PSAnd2VlaycgJiYgdGhpcy5jdXJyZW50ICYmICF0aGlzLmRpc2FibGVkID8gMCA6IC0xKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgQElucHV0KHsgYWxpYXM6ICdjQ2FsZW5kYXJSb3cnLCByZXF1aXJlZDogdHJ1ZSB9KVxuICBzZXQgd2Vlayh2YWx1ZTogeyB3ZWVrTnVtYmVyOiBudW1iZXI7IGRheXM6IHsgZGF0ZTogRGF0ZTsgbW9udGg6IHN0cmluZyB9W10gfSkge1xuICAgIHRoaXMuY3VycmVudCA9IHZhbHVlLmRheXMuc29tZSgoZGF5KSA9PiBkYXkubW9udGggPT09ICdjdXJyZW50Jyk7XG4gICAgdGhpcy50YWJpbmRleC5zZXQodGhpcy5zZWxlY3Rpb25UeXBlID09PSAnd2VlaycgJiYgdGhpcy5jdXJyZW50ICYmICF0aGlzLmRpc2FibGVkID8gMCA6IC0xKTtcbiAgICB0aGlzLiN3ZWVrID0gdmFsdWU7XG4gIH1cblxuICBnZXQgd2VlaygpIHtcbiAgICByZXR1cm4gdGhpcy4jd2VlaztcbiAgfVxuXG4gICN3ZWVrOiBhbnk7XG5cbiAgcHVibGljIGRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGFydERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBlbmREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgaG92ZXJEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbWF4RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIG1pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIHNlbGVjdGlvblR5cGU6IFNlbGVjdGlvblR5cGUgPSAnd2Vlayc7XG4gIHByaXZhdGUgZGlzYWJsZWREYXRlcyE6IChEYXRlIHwgRGF0ZVtdKVtdO1xuICBwcml2YXRlIGRhdGVGaWx0ZXIhOiBEYXRlRmlsdGVyVHlwZTtcbiAgcHJpdmF0ZSBjYWxlbmRhckRhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBwcml2YXRlIGxvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnO1xuICBkaXNhYmxlZCE6IGJvb2xlYW47XG4gIGN1cnJlbnQhOiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IHRhYmluZGV4ID0gc2lnbmFsKC0xKTtcblxuICBnZXQgc2VsZWN0RW5kRGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yYW5nZSAmJiAhIXRoaXMuc3RhcnREYXRlICYmICF0aGlzLmVuZERhdGU7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGhvc3RDbGFzc2VzKCk6IGFueSB7XG4gICAgaWYgKCF0aGlzLndlZWspIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICdjYWxlbmRhci1yb3cnOiB0cnVlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHdlZWsgPSB0aGlzLndlZWs7XG4gICAgY29uc3QgY2FsZW5kYXJEYXRlID0gdGhpcy5jYWxlbmRhckRhdGU7XG4gICAgY29uc3Qgc2VsZWN0aW9uVHlwZSA9IHRoaXMuc2VsZWN0aW9uVHlwZTtcblxuICAgIHRoaXMuY3VycmVudCA9IHdlZWsuZGF5cy5zb21lKChkYXkpID0+IGRheS5tb250aCA9PT0gJ2N1cnJlbnQnKTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGlvblR5cGUgPT09ICd3ZWVrJykge1xuICAgICAgdGhpcy5kYXRlID0gY29udmVydFRvRGF0ZU9iamVjdChcbiAgICAgICAgd2Vlay53ZWVrTnVtYmVyID09PSAwID8gYCR7Y2FsZW5kYXJEYXRlLmdldEZ1bGxZZWFyKCl9VzUzYCA6IGAke2NhbGVuZGFyRGF0ZS5nZXRGdWxsWWVhcigpfVcke3dlZWsud2Vla051bWJlcn1gLFxuICAgICAgICAnd2VlaydcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGluUmFuZ2UgPSBpc0RhdGVJblJhbmdlKHRoaXMuZGF0ZSwgdGhpcy5zdGFydERhdGUsIHRoaXMuZW5kRGF0ZSk7XG4gICAgICBjb25zdCByYW5nZUhvdmVyID1cbiAgICAgICAgdGhpcy5ob3ZlckRhdGUgJiZcbiAgICAgICAgKHRoaXMuc2VsZWN0RW5kRGF0ZVxuICAgICAgICAgID8gaXNEYXRlSW5SYW5nZSh0aGlzLmRhdGUsIHRoaXMuc3RhcnREYXRlLCB0aGlzLmhvdmVyRGF0ZSlcbiAgICAgICAgICA6IGlzRGF0ZUluUmFuZ2UodGhpcy5kYXRlLCB0aGlzLmhvdmVyRGF0ZSwgdGhpcy5lbmREYXRlKSk7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IGlzRGF0ZVNlbGVjdGVkKHRoaXMuZGF0ZSwgdGhpcy5zdGFydERhdGUsIHRoaXMuZW5kRGF0ZSk7XG4gICAgICBjb25zdCBkaXNhYmxlZERhdGUgPSBpc0RhdGVEaXNhYmxlZCh0aGlzLmRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCB0aGlzLmRpc2FibGVkRGF0ZXMpO1xuICAgICAgY29uc3QgZGlzYWJsZWRCeUZpbHRlciA9XG4gICAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0aGlzLmRhdGVGaWx0ZXIpID09PSAnW29iamVjdCBGdW5jdGlvbl0nICYmIHRoaXMuZGF0ZVxuICAgICAgICAgID8gIXRoaXMuZGF0ZUZpbHRlcih0aGlzLmRhdGUpXG4gICAgICAgICAgOiBmYWxzZTtcblxuICAgICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkRGF0ZSB8fCBkaXNhYmxlZEJ5RmlsdGVyO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAnY2FsZW5kYXItcm93JzogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQsXG4gICAgICAgIHJhbmdlOiBpblJhbmdlLFxuICAgICAgICAncmFuZ2UtaG92ZXInOiByYW5nZUhvdmVyLFxuICAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWQsXG4gICAgICAgIGN1cnJlbnQ6IHRoaXMuY3VycmVudFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ2NhbGVuZGFyLXJvdyc6IHRydWUsXG4gICAgICAgIGN1cnJlbnQ6IHRoaXMuY3VycmVudFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBnZXQgYXJpYVNlbGVjdGVkKCkge1xuICAgIHJldHVybiB0aGlzLmhvc3RDbGFzc2VzPy5bJ3NlbGVjdGVkJ10gPyB0cnVlIDogbnVsbDtcbiAgfVxuXG4gIGZvY3VzKG9yaWdpbj86IEZvY3VzT3JpZ2luKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIG9yaWdpbiA/PyAna2V5Ym9hcmQnKTtcbiAgfVxuXG4gIGdldExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZT8udG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlKSA/PyAnJztcbiAgfVxufVxuIl19
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItcm93LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItbW9udGgvY2FsZW5kYXItcm93LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBbUIsWUFBWSxFQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBaUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFRdEQsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixXQUFXLENBQXNCO0lBQ2pDLGdCQUFnQixDQUEyQjtJQUkzQztRQUxBLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMzQyxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBZ0Q3QixTQUFJLEdBQWdCLElBQUksQ0FBQztRQUN4QixjQUFTLEdBQWdCLElBQUksQ0FBQztRQUM5QixZQUFPLEdBQWdCLElBQUksQ0FBQztRQUM1QixjQUFTLEdBQWdCLElBQUksQ0FBQztRQUM5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QUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxNQUFNLElBQUksVUFBVSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxRCxDQUFDOytHQXRJVSxvQkFBb0I7bUdBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFOaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLElBQUksRUFBRSxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUU7aUJBQ2xGO3dEQXlDSyxJQUFJO3NCQURQLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBbUM1QyxXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIGluamVjdCwgSW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNhYmxlT3B0aW9uLCBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlLCBEYXRlRmlsdGVyVHlwZSwgU2VsZWN0aW9uVHlwZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgY29udmVydFRvRGF0ZU9iamVjdCwgaXNEYXRlRGlzYWJsZWQsIGlzRGF0ZUluUmFuZ2UsIGlzRGF0ZVNlbGVjdGVkIH0gZnJvbSAnLi4vY2FsZW5kYXIudXRpbHMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjQ2FsZW5kYXJSb3ddJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZXhwb3J0QXM6ICdjQ2FsZW5kYXJSb3cnLFxuICBob3N0OiB7ICdbYXR0ci5hcmlhLXNlbGVjdGVkXSc6ICdhcmlhU2VsZWN0ZWQnLCAnW2F0dHIudGFiaW5kZXhdJzogJ3RhYmluZGV4KCknIH1cbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJSb3dEaXJlY3RpdmUgaW1wbGVtZW50cyBGb2N1c2FibGVPcHRpb24ge1xuICAjZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgI2NhbGVuZGFyU2VydmljZSA9IGluamVjdChDYWxlbmRhclNlcnZpY2UpO1xuICBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBmb2N1c01vbml0b3IgPSBpbmplY3QoRm9jdXNNb25pdG9yKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLiNjYWxlbmRhclNlcnZpY2UuY2FsZW5kYXJTdGF0ZSRcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBzdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZSxcbiAgICAgICAgICBlbmREYXRlID0gdGhpcy5lbmREYXRlLFxuICAgICAgICAgIGhvdmVyRGF0ZSA9IHRoaXMuaG92ZXJEYXRlLFxuICAgICAgICAgIG1heERhdGUgPSB0aGlzLm1heERhdGUsXG4gICAgICAgICAgbWluRGF0ZSA9IHRoaXMubWluRGF0ZSxcbiAgICAgICAgICByYW5nZSA9IHRoaXMucmFuZ2UsXG4gICAgICAgICAgZGlzYWJsZWREYXRlcyA9IHRoaXMuZGlzYWJsZWREYXRlcyxcbiAgICAgICAgICBkYXRlRmlsdGVyID0gdGhpcy5kYXRlRmlsdGVyLFxuICAgICAgICAgIHNlbGVjdGlvblR5cGUgPSB0aGlzLnNlbGVjdGlvblR5cGUsXG4gICAgICAgICAgY2FsZW5kYXJEYXRlID0gdGhpcy5jYWxlbmRhckRhdGUsXG4gICAgICAgICAgbG9jYWxlID0gdGhpcy5sb2NhbGVcbiAgICAgICAgfSA9IHsgLi4uc3RhdGUgfTtcbiAgICAgICAgdGhpcy5zdGFydERhdGUgPSBzdGFydERhdGU7XG4gICAgICAgIHRoaXMuZW5kRGF0ZSA9IGVuZERhdGU7XG4gICAgICAgIHRoaXMuaG92ZXJEYXRlID0gaG92ZXJEYXRlO1xuICAgICAgICB0aGlzLm1heERhdGUgPSBtYXhEYXRlO1xuICAgICAgICB0aGlzLm1pbkRhdGUgPSBtaW5EYXRlO1xuICAgICAgICB0aGlzLnJhbmdlID0gcmFuZ2U7XG4gICAgICAgIHRoaXMuZGlzYWJsZWREYXRlcyA9IGRpc2FibGVkRGF0ZXM7XG4gICAgICAgIHRoaXMuZGF0ZUZpbHRlciA9IGRhdGVGaWx0ZXI7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uVHlwZSA9IHNlbGVjdGlvblR5cGU7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJEYXRlID0gY2FsZW5kYXJEYXRlID8/IG5ldyBEYXRlKCk7XG4gICAgICAgIHRoaXMubG9jYWxlID0gbG9jYWxlID8/ICdkZWZhdWx0JztcblxuICAgICAgICAvLyB0aGlzLiN0YWJpbmRleC5zZXQodGhpcy5zZWxlY3Rpb25UeXBlID09PSAnd2VlaycgJiYgdGhpcy5jdXJyZW50ICYmICF0aGlzLmRpc2FibGVkID8gMCA6IC0xKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgQElucHV0KHsgYWxpYXM6ICdjQ2FsZW5kYXJSb3cnLCByZXF1aXJlZDogdHJ1ZSB9KVxuICBzZXQgd2Vlayh2YWx1ZTogeyB3ZWVrTnVtYmVyOiBudW1iZXI7IGRheXM6IHsgZGF0ZTogRGF0ZTsgbW9udGg6IHN0cmluZyB9W10gfSkge1xuICAgIHRoaXMuY3VycmVudCA9IHZhbHVlLmRheXMuc29tZSgoZGF5KSA9PiBkYXkubW9udGggPT09ICdjdXJyZW50Jyk7XG4gICAgdGhpcy50YWJpbmRleC5zZXQodGhpcy5zZWxlY3Rpb25UeXBlID09PSAnd2VlaycgJiYgdGhpcy5jdXJyZW50ICYmICF0aGlzLmRpc2FibGVkID8gMCA6IC0xKTtcbiAgICB0aGlzLiN3ZWVrID0gdmFsdWU7XG4gIH1cblxuICBnZXQgd2VlaygpIHtcbiAgICByZXR1cm4gdGhpcy4jd2VlaztcbiAgfVxuXG4gICN3ZWVrOiBhbnk7XG5cbiAgcHVibGljIGRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGFydERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBlbmREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgaG92ZXJEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbWF4RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIG1pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIHNlbGVjdGlvblR5cGU6IFNlbGVjdGlvblR5cGUgPSAnd2Vlayc7XG4gIHByaXZhdGUgZGlzYWJsZWREYXRlcyE6IChEYXRlIHwgRGF0ZVtdKVtdO1xuICBwcml2YXRlIGRhdGVGaWx0ZXIhOiBEYXRlRmlsdGVyVHlwZTtcbiAgcHJpdmF0ZSBjYWxlbmRhckRhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBwcml2YXRlIGxvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnO1xuICBkaXNhYmxlZCE6IGJvb2xlYW47XG4gIGN1cnJlbnQhOiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IHRhYmluZGV4ID0gc2lnbmFsKC0xKTtcblxuICBnZXQgc2VsZWN0RW5kRGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yYW5nZSAmJiAhIXRoaXMuc3RhcnREYXRlICYmICF0aGlzLmVuZERhdGU7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGhvc3RDbGFzc2VzKCk6IGFueSB7XG4gICAgaWYgKCF0aGlzLndlZWspIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICdjYWxlbmRhci1yb3cnOiB0cnVlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHdlZWsgPSB0aGlzLndlZWs7XG4gICAgY29uc3QgY2FsZW5kYXJEYXRlID0gdGhpcy5jYWxlbmRhckRhdGU7XG4gICAgY29uc3Qgc2VsZWN0aW9uVHlwZSA9IHRoaXMuc2VsZWN0aW9uVHlwZTtcblxuICAgIHRoaXMuY3VycmVudCA9IHdlZWsuZGF5cy5zb21lKChkYXkpID0+IGRheS5tb250aCA9PT0gJ2N1cnJlbnQnKTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGlvblR5cGUgPT09ICd3ZWVrJykge1xuICAgICAgdGhpcy5kYXRlID0gY29udmVydFRvRGF0ZU9iamVjdChcbiAgICAgICAgd2Vlay53ZWVrTnVtYmVyID09PSAwID8gYCR7Y2FsZW5kYXJEYXRlLmdldEZ1bGxZZWFyKCl9VzUzYCA6IGAke2NhbGVuZGFyRGF0ZS5nZXRGdWxsWWVhcigpfVcke3dlZWsud2Vla051bWJlcn1gLFxuICAgICAgICAnd2VlaydcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGluUmFuZ2UgPSBpc0RhdGVJblJhbmdlKHRoaXMuZGF0ZSwgdGhpcy5zdGFydERhdGUsIHRoaXMuZW5kRGF0ZSk7XG4gICAgICBjb25zdCByYW5nZUhvdmVyID1cbiAgICAgICAgdGhpcy5ob3ZlckRhdGUgJiZcbiAgICAgICAgKHRoaXMuc2VsZWN0RW5kRGF0ZVxuICAgICAgICAgID8gaXNEYXRlSW5SYW5nZSh0aGlzLmRhdGUsIHRoaXMuc3RhcnREYXRlLCB0aGlzLmhvdmVyRGF0ZSlcbiAgICAgICAgICA6IGlzRGF0ZUluUmFuZ2UodGhpcy5kYXRlLCB0aGlzLmhvdmVyRGF0ZSwgdGhpcy5lbmREYXRlKSk7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IGlzRGF0ZVNlbGVjdGVkKHRoaXMuZGF0ZSwgdGhpcy5zdGFydERhdGUsIHRoaXMuZW5kRGF0ZSk7XG4gICAgICBjb25zdCBkaXNhYmxlZERhdGUgPSBpc0RhdGVEaXNhYmxlZCh0aGlzLmRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCB0aGlzLmRpc2FibGVkRGF0ZXMpO1xuICAgICAgY29uc3QgZGlzYWJsZWRCeUZpbHRlciA9XG4gICAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0aGlzLmRhdGVGaWx0ZXIpID09PSAnW29iamVjdCBGdW5jdGlvbl0nICYmIHRoaXMuZGF0ZVxuICAgICAgICAgID8gIXRoaXMuZGF0ZUZpbHRlcih0aGlzLmRhdGUpXG4gICAgICAgICAgOiBmYWxzZTtcblxuICAgICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkRGF0ZSB8fCBkaXNhYmxlZEJ5RmlsdGVyO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAnY2FsZW5kYXItcm93JzogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQsXG4gICAgICAgIHJhbmdlOiBpblJhbmdlLFxuICAgICAgICAncmFuZ2UtaG92ZXInOiByYW5nZUhvdmVyLFxuICAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWQsXG4gICAgICAgIGN1cnJlbnQ6IHRoaXMuY3VycmVudFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ2NhbGVuZGFyLXJvdyc6IHRydWUsXG4gICAgICAgIGN1cnJlbnQ6IHRoaXMuY3VycmVudFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBnZXQgYXJpYVNlbGVjdGVkKCkge1xuICAgIHJldHVybiB0aGlzLmhvc3RDbGFzc2VzPy5bJ3NlbGVjdGVkJ10gPyB0cnVlIDogbnVsbDtcbiAgfVxuXG4gIGZvY3VzKG9yaWdpbj86IEZvY3VzT3JpZ2luKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIG9yaWdpbiA/PyAna2V5Ym9hcmQnKTtcbiAgfVxuXG4gIGdldExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZT8udG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlKSA/PyAnJztcbiAgfVxufVxuIl19
@@ -8,14 +8,14 @@ export class CalendarWeekdayPipe {
8
8
  ? date.toLocaleDateString(locale, { weekday: weekdayFormat })
9
9
  : date.toLocaleDateString(locale, { weekday: 'long' }).slice(0, weekdayFormat);
10
10
  }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CalendarWeekdayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
12
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: CalendarWeekdayPipe, isStandalone: true, name: "calendarWeekday" }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CalendarWeekdayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
12
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: CalendarWeekdayPipe, isStandalone: true, name: "calendarWeekday" }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CalendarWeekdayPipe, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CalendarWeekdayPipe, decorators: [{
15
15
  type: Pipe,
16
16
  args: [{
17
17
  name: 'calendarWeekday',
18
18
  standalone: true
19
19
  }]
20
20
  }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItd2Vla2RheS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci1tb250aC9jYWxlbmRhci13ZWVrZGF5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBT3BELE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsU0FBUyxDQUFDLElBQVUsRUFBRSxnQkFBbUMsT0FBTyxFQUFFLFNBQWlCLFNBQVM7UUFDMUYsT0FBTyxPQUFPLGFBQWEsS0FBSyxVQUFVO1lBQ3hDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxPQUFPLGFBQWEsS0FBSyxRQUFRO2dCQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztnQkFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7OEdBUlUsbUJBQW1COzRHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSi9CLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2Vla2RheUZvcm1hdFR5cGUgfSBmcm9tICcuLi9jYWxlbmRhci5zZXJ2aWNlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnY2FsZW5kYXJXZWVrZGF5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhcldlZWtkYXlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgdHJhbnNmb3JtKGRhdGU6IERhdGUsIHdlZWtkYXlGb3JtYXQ6IFdlZWtkYXlGb3JtYXRUeXBlID0gJ3Nob3J0JywgbG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCcpOiAoc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB3ZWVrZGF5Rm9ybWF0ID09PSAnZnVuY3Rpb24nXG4gICAgICA/IHdlZWtkYXlGb3JtYXQoZGF0ZSlcbiAgICAgIDogdHlwZW9mIHdlZWtkYXlGb3JtYXQgPT09ICdzdHJpbmcnXG4gICAgICAgID8gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlLCB7IHdlZWtkYXk6IHdlZWtkYXlGb3JtYXQgfSlcbiAgICAgICAgOiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUsIHsgd2Vla2RheTogJ2xvbmcnIH0pLnNsaWNlKDAsIHdlZWtkYXlGb3JtYXQpO1xuICB9XG59XG4iXX0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItd2Vla2RheS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci1tb250aC9jYWxlbmRhci13ZWVrZGF5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBT3BELE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsU0FBUyxDQUFDLElBQVUsRUFBRSxnQkFBbUMsT0FBTyxFQUFFLFNBQWlCLFNBQVM7UUFDMUYsT0FBTyxPQUFPLGFBQWEsS0FBSyxVQUFVO1lBQ3hDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxPQUFPLGFBQWEsS0FBSyxRQUFRO2dCQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztnQkFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7K0dBUlUsbUJBQW1COzZHQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBSi9CLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2Vla2RheUZvcm1hdFR5cGUgfSBmcm9tICcuLi9jYWxlbmRhci5zZXJ2aWNlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnY2FsZW5kYXJXZWVrZGF5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhcldlZWtkYXlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgdHJhbnNmb3JtKGRhdGU6IERhdGUsIHdlZWtkYXlGb3JtYXQ6IFdlZWtkYXlGb3JtYXRUeXBlID0gJ3Nob3J0JywgbG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCcpOiAoc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB3ZWVrZGF5Rm9ybWF0ID09PSAnZnVuY3Rpb24nXG4gICAgICA/IHdlZWtkYXlGb3JtYXQoZGF0ZSlcbiAgICAgIDogdHlwZW9mIHdlZWtkYXlGb3JtYXQgPT09ICdzdHJpbmcnXG4gICAgICAgID8gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlLCB7IHdlZWtkYXk6IHdlZWtkYXlGb3JtYXQgfSlcbiAgICAgICAgOiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUsIHsgd2Vla2RheTogJ2xvbmcnIH0pLnNsaWNlKDAsIHdlZWtkYXlGb3JtYXQpO1xuICB9XG59XG4iXX0=
@@ -75,13 +75,13 @@ export class CalendarNavigationComponent {
75
75
  this.handleNavigationClick(direction, years);
76
76
  }
77
77
  }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CalendarNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: CalendarNavigationComponent, isStandalone: true, selector: "c-calendar-navigation", inputs: { pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null }, navigation: { classPropertyName: "navigation", publicName: "navigation", isSignal: true, isRequired: false, transformFunction: null }, ariaNextMonthLabel: { classPropertyName: "ariaNextMonthLabel", publicName: "ariaNextMonthLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaNextYearLabel: { classPropertyName: "ariaNextYearLabel", publicName: "ariaNextYearLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaPrevMonthLabel: { classPropertyName: "ariaPrevMonthLabel", publicName: "ariaPrevMonthLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaPrevYearLabel: { classPropertyName: "ariaPrevYearLabel", publicName: "ariaPrevYearLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { navigationClick: "navigationClick" }, host: { classAttribute: "calendar-nav" }, ngImport: i0, template: "@if (navigation()) {\n <div class=\"calendar-nav-prev\">\n <button\n (click)=\"handleNavigationClick('prev', true)\"\n (keyup)=\"handleNavigationKeyUp($event, 'prev', true)\"\n cButton\n [disabled]=\"disablePrevYear()\"\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaPrevYearLabel()\"\n >\n <span class=\"calendar-nav-icon calendar-nav-icon-double-prev\"></span>\n </button>\n @if (view() === 'days') {\n <button\n (click)=\"handleNavigationClick('prev')\"\n (keyup)=\"handleNavigationKeyUp($event, 'prev')\"\n cButton\n [disabled]=\"disablePrevMonth()\"\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaPrevMonthLabel()\"\n >\n <span class=\"calendar-nav-icon calendar-nav-icon-prev\"></span>\n </button>\n }\n </div>\n}\n<div [ngStyle]=\"navYearFirst() ? { display: 'flex', justifyContent: 'center' } : {}\" aria-live=\"polite\" class=\"calendar-nav-date\">\n @if (view() === 'days') {\n <button\n (click)=\"setView('months')\"\n cButton\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n >\n {{ date().toLocaleDateString(locale(), { month: 'long' }) }}\n </button>\n }\n <button\n (click)=\"setView('years')\"\n [ngStyle]=\"navYearFirst() ? { order: '-1' } : {}\"\n cButton\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n >\n {{ date().toLocaleDateString(locale(), { year: 'numeric' }) }}\n </button>\n</div>\n@if (navigation()) {\n <div class=\"calendar-nav-next\">\n @if (view() === 'days') {\n <button\n (click)=\"handleNavigationClick('next')\"\n (keyup)=\"handleNavigationKeyUp($event, 'next')\"\n [disabled]=\"disableNextMonth()\"\n cButton\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaNextMonthLabel()\"\n >\n <span class=\"calendar-nav-icon calendar-nav-icon-next\"></span>\n </button>\n }\n <button\n (click)=\"handleNavigationClick('next', true)\"\n (keyup)=\"handleNavigationKeyUp($event, 'next', true)\"\n cButton\n [disabled]=\"disableNextYear()\"\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaNextYearLabel()\"\n >\n <span class=\"calendar-nav-icon calendar-nav-icon-double-next\"></span>\n </button>\n </div>\n}\n", styles: [""], dependencies: [{ kind: "directive", type: ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "type", "variant"], exportAs: ["cButton"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CalendarNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: CalendarNavigationComponent, isStandalone: true, selector: "c-calendar-navigation", inputs: { pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null }, navigation: { classPropertyName: "navigation", publicName: "navigation", isSignal: true, isRequired: false, transformFunction: null }, ariaNextMonthLabel: { classPropertyName: "ariaNextMonthLabel", publicName: "ariaNextMonthLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaNextYearLabel: { classPropertyName: "ariaNextYearLabel", publicName: "ariaNextYearLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaPrevMonthLabel: { classPropertyName: "ariaPrevMonthLabel", publicName: "ariaPrevMonthLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaPrevYearLabel: { classPropertyName: "ariaPrevYearLabel", publicName: "ariaPrevYearLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { navigationClick: "navigationClick" }, host: { classAttribute: "calendar-nav" }, ngImport: i0, template: "@if (navigation()) {\n <div class=\"calendar-nav-prev\">\n <button\n (click)=\"handleNavigationClick('prev', true)\"\n (keyup)=\"handleNavigationKeyUp($event, 'prev', true)\"\n cButton\n [disabled]=\"disablePrevYear()\"\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaPrevYearLabel()\"\n >\n <span class=\"calendar-nav-icon calendar-nav-icon-double-prev\"></span>\n </button>\n @if (view() === 'days') {\n <button\n (click)=\"handleNavigationClick('prev')\"\n (keyup)=\"handleNavigationKeyUp($event, 'prev')\"\n cButton\n [disabled]=\"disablePrevMonth()\"\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaPrevMonthLabel()\"\n >\n <span class=\"calendar-nav-icon calendar-nav-icon-prev\"></span>\n </button>\n }\n </div>\n}\n<div [ngStyle]=\"navYearFirst() ? { display: 'flex', justifyContent: 'center' } : {}\" aria-live=\"polite\" class=\"calendar-nav-date\">\n @if (view() === 'days') {\n <button\n (click)=\"setView('months')\"\n cButton\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n >\n {{ date().toLocaleDateString(locale(), { month: 'long' }) }}\n </button>\n }\n <button\n (click)=\"setView('years')\"\n [ngStyle]=\"navYearFirst() ? { order: '-1' } : {}\"\n cButton\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n >\n {{ date().toLocaleDateString(locale(), { year: 'numeric' }) }}\n </button>\n</div>\n@if (navigation()) {\n <div class=\"calendar-nav-next\">\n @if (view() === 'days') {\n <button\n (click)=\"handleNavigationClick('next')\"\n (keyup)=\"handleNavigationKeyUp($event, 'next')\"\n [disabled]=\"disableNextMonth()\"\n cButton\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaNextMonthLabel()\"\n >\n <span class=\"calendar-nav-icon calendar-nav-icon-next\"></span>\n </button>\n }\n <button\n (click)=\"handleNavigationClick('next', true)\"\n (keyup)=\"handleNavigationKeyUp($event, 'next', true)\"\n cButton\n [disabled]=\"disableNextYear()\"\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaNextYearLabel()\"\n >\n <span class=\"calendar-nav-icon calendar-nav-icon-double-next\"></span>\n </button>\n </div>\n}\n", styles: [""], dependencies: [{ kind: "directive", type: ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "type", "variant"], exportAs: ["cButton"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
80
80
  }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CalendarNavigationComponent, decorators: [{
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CalendarNavigationComponent, decorators: [{
82
82
  type: Component,
83
83
  args: [{ selector: 'c-calendar-navigation', standalone: true, imports: [ButtonDirective, NgStyle], host: {
84
84
  class: 'calendar-nav'
85
85
  }, template: "@if (navigation()) {\n <div class=\"calendar-nav-prev\">\n <button\n (click)=\"handleNavigationClick('prev', true)\"\n (keyup)=\"handleNavigationKeyUp($event, 'prev', true)\"\n cButton\n [disabled]=\"disablePrevYear()\"\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaPrevYearLabel()\"\n >\n <span class=\"calendar-nav-icon calendar-nav-icon-double-prev\"></span>\n </button>\n @if (view() === 'days') {\n <button\n (click)=\"handleNavigationClick('prev')\"\n (keyup)=\"handleNavigationKeyUp($event, 'prev')\"\n cButton\n [disabled]=\"disablePrevMonth()\"\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaPrevMonthLabel()\"\n >\n <span class=\"calendar-nav-icon calendar-nav-icon-prev\"></span>\n </button>\n }\n </div>\n}\n<div [ngStyle]=\"navYearFirst() ? { display: 'flex', justifyContent: 'center' } : {}\" aria-live=\"polite\" class=\"calendar-nav-date\">\n @if (view() === 'days') {\n <button\n (click)=\"setView('months')\"\n cButton\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n >\n {{ date().toLocaleDateString(locale(), { month: 'long' }) }}\n </button>\n }\n <button\n (click)=\"setView('years')\"\n [ngStyle]=\"navYearFirst() ? { order: '-1' } : {}\"\n cButton\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n >\n {{ date().toLocaleDateString(locale(), { year: 'numeric' }) }}\n </button>\n</div>\n@if (navigation()) {\n <div class=\"calendar-nav-next\">\n @if (view() === 'days') {\n <button\n (click)=\"handleNavigationClick('next')\"\n (keyup)=\"handleNavigationKeyUp($event, 'next')\"\n [disabled]=\"disableNextMonth()\"\n cButton\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaNextMonthLabel()\"\n >\n <span class=\"calendar-nav-icon calendar-nav-icon-next\"></span>\n </button>\n }\n <button\n (click)=\"handleNavigationClick('next', true)\"\n (keyup)=\"handleNavigationKeyUp($event, 'next', true)\"\n cButton\n [disabled]=\"disableNextYear()\"\n color=\"transparent\"\n size=\"sm\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaNextYearLabel()\"\n >\n <span class=\"calendar-nav-icon calendar-nav-icon-double-next\"></span>\n </button>\n </div>\n}\n" }]
86
86
  }], ctorParameters: () => [] });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbmF2aWdhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLW5hdmlnYXRpb24vY2FsZW5kYXItbmF2aWdhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLW5hdmlnYXRpb24vY2FsZW5kYXItbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFpQixNQUFNLHFCQUFxQixDQUFDOztBQWlCckUsTUFBTSxPQUFPLDJCQUEyQjtJQUM3QixXQUFXLENBQXNCO0lBQ2pDLGdCQUFnQixDQUEyQjtJQUVwRDtRQUhTLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQU0zQyxjQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2pDLE1BQU0sSUFBSSxHQUFHLElB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QUFxQixFQUFFLFNBQTBCLEVBQUUsS0FBZTtRQUN0RixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDOzhHQTdFVSwyQkFBMkI7a0dBQTNCLDJCQUEyQix5akNDdEJ4QyxrK0VBbUZBLDBERGxFWSxlQUFlLDBKQUFFLE9BQU87OzJGQUt2QiwyQkFBMkI7a0JBVnZDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBR3JCLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsUUFDN0I7d0JBQ0osS0FBSyxFQUFFLGNBQWM7cUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgRGVzdHJveVJlZiwgaW5qZWN0LCBpbnB1dCwgbnVtYmVyQXR0cmlidXRlLCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2J1dHRvbic7XG5pbXBvcnQgeyBDYWxlbmRhclNlcnZpY2UsIFNlbGVjdGlvblR5cGUgfSBmcm9tICcuLi9jYWxlbmRhci5zZXJ2aWNlJztcblxuaW50ZXJmYWNlIElOYXZpZ2F0aW9uQ2xpY2sge1xuICBkaXJlY3Rpb246ICdwcmV2JyB8ICduZXh0JztcbiAgeWVhcnM6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtY2FsZW5kYXItbmF2aWdhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1uYXZpZ2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItbmF2aWdhdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQnV0dG9uRGlyZWN0aXZlLCBOZ1N0eWxlXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnY2FsZW5kYXItbmF2J1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyTmF2aWdhdGlvbkNvbXBvbmVudCB7XG4gIHJlYWRvbmx5ICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICByZWFkb25seSAjY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KENhbGVuZGFyU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaWJlKCk7XG4gIH1cblxuICByZWFkb25seSBwYWdlSW5kZXggPSBpbnB1dCgwLCB7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xuICByZWFkb25seSBhZGRNb250aHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdmlldyA9IHRoaXMudmlldygpO1xuICAgIGNvbnN0IHBhZ2VJbmRleCA9IHRoaXMucGFnZUluZGV4KCk7XG4gICAgcmV0dXJuIHBhZ2VJbmRleCAqICh2aWV3ID09PSAneWVhcnMnID8gMTQ0IDogdmlldyA9PT0gJ21vbnRocycgPyAxMiA6IDEpO1xuICB9KTtcbiAgcmVhZG9ubHkgbmF2aWdhdGlvbiA9IGlucHV0KHRydWUpO1xuICByZWFkb25seSBtYXhEYXRlID0gc2lnbmFsPERhdGUgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgbWluRGF0ZSA9IHNpZ25hbDxEYXRlIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGNhbGVuZGFyRGF0ZSA9IHNpZ25hbChuZXcgRGF0ZSgpKTtcbiAgcmVhZG9ubHkgbmF2WWVhckZpcnN0ID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9jYWxlID0gc2lnbmFsKCdkZWZhdWx0Jyk7XG4gIHJlYWRvbmx5IHZpZXcgPSBzaWduYWw8J2RheXMnIHwgJ21vbnRocycgfCAneWVhcnMnPignZGF5cycpO1xuICByZWFkb25seSBzZWxlY3Rpb25UeXBlID0gc2lnbmFsPFNlbGVjdGlvblR5cGU+KCdkYXknKTtcblxuICByZWFkb25seSBhcmlhTmV4dE1vbnRoTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCdOZXh0IG1vbnRoJyk7XG4gIHJlYWRvbmx5IGFyaWFOZXh0WWVhckxhYmVsID0gaW5wdXQ8c3RyaW5nPignTmV4dCB5ZWFyJyk7XG4gIHJlYWRvbmx5IGFyaWFQcmV2TW9udGhMYWJlbCA9IGlucHV0PHN0cmluZz4oJ1ByZXZpb3VzIG1vbnRoJyk7XG4gIHJlYWRvbmx5IGFyaWFQcmV2WWVhckxhYmVsID0gaW5wdXQ8c3RyaW5nPignUHJldmlvdXMgeWVhcicpO1xuXG4gIHJlYWRvbmx5IG5hdmlnYXRpb25DbGljayA9IG91dHB1dDxJTmF2aWdhdGlvbkNsaWNrPigpO1xuXG4gIHJlYWRvbmx5IGRhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuY2FsZW5kYXJEYXRlKCkuZ2V0RnVsbFllYXIoKSwgdGhpcy5jYWxlbmRhckRhdGUoKS5nZXRNb250aCgpICsgdGhpcy5hZGRNb250aHMoKSk7XG4gIH0pO1xuICByZWFkb25seSBkaXNhYmxlTmV4dE1vbnRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLm1heERhdGUoKTtcbiAgICByZXR1cm4gbWF4RGF0ZSA/IHRoaXMuZGF0ZSgpID49IG1heERhdGUgOiBmYWxzZTtcbiAgfSk7XG4gIHJlYWRvbmx5IGRpc2FibGVQcmV2TW9udGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbWluRGF0ZSA9IHRoaXMubWluRGF0ZSgpO1xuICAgIHJldHVybiBtaW5EYXRlID8gdGhpcy5kYXRlKCkgPD0gbWluRGF0ZSA6IGZhbHNlO1xuICB9KTtcbiAgcmVhZG9ubHkgZGlzYWJsZU5leHRZZWFyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLm1heERhdGUoKTtcbiAgICByZXR1cm4gbWF4RGF0ZSA/IHRoaXMuZGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyAxID49IG1heERhdGUuZ2V0RnVsbFllYXIoKSA6IGZhbHNlO1xuICB9KTtcbiAgcmVhZG9ubHkgZGlzYWJsZVByZXZZZWFyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1pbkRhdGUgPSB0aGlzLm1pbkRhdGUoKTtcbiAgICByZXR1cm4gbWluRGF0ZSA/IHRoaXMuZGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAxIDw9IG1pbkRhdGUuZ2V0RnVsbFllYXIoKSA6IGZhbHNlO1xuICB9KTtcblxuICBjYWxlbmRhclN0YXRlU3Vic2NyaWJlKCk6IHZvaWQge1xuICAgIHRoaXMuI2NhbGVuZGFyU2VydmljZS5jYWxlbmRhclN0YXRlJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKSkuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHN0YXRlKTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgaWYgKGtleSBpbiB0aGlzKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHR5cGVvZiB0aGlzW2tleV0gPT09ICdmdW5jdGlvbicgPyB0aGlzW2tleV0uc2V0KHN0YXRlW2tleV0pIDogKHRoaXNba2V5XSA9IHN0YXRlW2tleV0pO1xuICAgICAgICAgIC8vIHRoaXNba2V5XSA9IHN0YXRlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNldFZpZXcodmlldzogJ2RheXMnIHwgJ21vbnRocycgfCAneWVhcnMnKSB7XG4gICAgdGhpcy52aWV3LnNldCh2aWV3KTtcbiAgICB0aGlzLiNjYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgdmlldzogdmlldyB9KTtcbiAgfVxuXG4gIGhhbmRsZU5hdmlnYXRpb25DbGljayhkaXJlY3Rpb246ICdwcmV2JyB8ICduZXh0JywgeWVhcnMgPSBmYWxzZSkge1xuICAgIHRoaXMubmF2aWdhdGlvbkNsaWNrLmVtaXQoeyBkaXJlY3Rpb24sIHllYXJzOiB5ZWFycyB9KTtcbiAgfVxuXG4gIGhhbmRsZU5hdmlnYXRpb25LZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGRpcmVjdGlvbjogJ3ByZXYnIHwgJ25leHQnLCB5ZWFycz86IGJvb2xlYW4pIHtcbiAgICBpZiAoWydTcGFjZSddLmluY2x1ZGVzKCRldmVudC5jb2RlKSkge1xuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmhhbmRsZU5hdmlnYXRpb25DbGljayhkaXJlY3Rpb24sIHllYXJzKTtcbiAgICB9XG4gIH1cbn1cbiIsIkBpZiAobmF2aWdhdGlvbigpKSB7XG4gIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1uYXYtcHJldlwiPlxuICAgIDxidXR0b25cbiAgICAgIChjbGljayk9XCJoYW5kbGVOYXZpZ2F0aW9uQ2xpY2soJ3ByZXYnLCB0cnVlKVwiXG4gICAgICAoa2V5dXApPVwiaGFuZGxlTmF2aWdhdGlvbktleVVwKCRldmVudCwgJ3ByZXYnLCB0cnVlKVwiXG4gICAgICBjQnV0dG9uXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVByZXZZZWFyKClcIlxuICAgICAgY29sb3I9XCJ0cmFuc3BhcmVudFwiXG4gICAgICBzaXplPVwic21cIlxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYVByZXZZZWFyTGFiZWwoKVwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjYWxlbmRhci1uYXYtaWNvbiBjYWxlbmRhci1uYXYtaWNvbi1kb3VibGUtcHJldlwiPjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICBAaWYgKHZpZXcoKSA9PT0gJ2RheXMnKSB7XG4gICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVOYXZpZ2F0aW9uQ2xpY2soJ3ByZXYnKVwiXG4gICAgICAgIChrZXl1cCk9XCJoYW5kbGVOYXZpZ2F0aW9uS2V5VXAoJGV2ZW50LCAncHJldicpXCJcbiAgICAgICAgY0J1dHRvblxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVByZXZNb250aCgpXCJcbiAgICAgICAgY29sb3I9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYVByZXZNb250aExhYmVsKClcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNhbGVuZGFyLW5hdi1pY29uIGNhbGVuZGFyLW5hdi1pY29uLXByZXZcIj48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gIDwvZGl2PlxufVxuPGRpdiBbbmdTdHlsZV09XCJuYXZZZWFyRmlyc3QoKSA/IHsgZGlzcGxheTogJ2ZsZXgnLCBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicgfSA6IHt9XCIgYXJpYS1saXZlPVwicG9saXRlXCIgY2xhc3M9XCJjYWxlbmRhci1uYXYtZGF0ZVwiPlxuICBAaWYgKHZpZXcoKSA9PT0gJ2RheXMnKSB7XG4gICAgPGJ1dHRvblxuICAgICAgKGNsaWNrKT1cInNldFZpZXcoJ21vbnRocycpXCJcbiAgICAgIGNCdXR0b25cbiAgICAgIGNvbG9yPVwidHJhbnNwYXJlbnRcIlxuICAgICAgc2l6ZT1cInNtXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgPlxuICAgICAge3sgZGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUoKSwgeyBtb250aDogJ2xvbmcnIH0pIH19XG4gICAgPC9idXR0b24+XG4gIH1cbiAgPGJ1dHRvblxuICAgIChjbGljayk9XCJzZXRWaWV3KCd5ZWFycycpXCJcbiAgICBbbmdTdHlsZV09XCJuYXZZZWFyRmlyc3QoKSA/IHsgb3JkZXI6ICctMScgfSA6IHt9XCJcbiAgICBjQnV0dG9uXG4gICAgY29sb3I9XCJ0cmFuc3BhcmVudFwiXG4gICAgc2l6ZT1cInNtXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICA+XG4gICAge3sgZGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUoKSwgeyB5ZWFyOiAnbnVtZXJpYycgfSkgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cbkBpZiAobmF2aWdhdGlvbigpKSB7XG4gIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1uYXYtbmV4dFwiPlxuICAgIEBpZiAodmlldygpID09PSAnZGF5cycpIHtcbiAgICAgIDxidXR0b25cbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZU5hdmlnYXRpb25DbGljaygnbmV4dCcpXCJcbiAgICAgICAgKGtleXVwKT1cImhhbmRsZU5hdmlnYXRpb25LZXlVcCgkZXZlbnQsICduZXh0JylcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZU5leHRNb250aCgpXCJcbiAgICAgICAgY0J1dHRvblxuICAgICAgICBjb2xvcj1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTmV4dE1vbnRoTGFiZWwoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2FsZW5kYXItbmF2LWljb24gY2FsZW5kYXItbmF2LWljb24tbmV4dFwiPjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgICA8YnV0dG9uXG4gICAgICAoY2xpY2spPVwiaGFuZGxlTmF2aWdhdGlvbkNsaWNrKCduZXh0JywgdHJ1ZSlcIlxuICAgICAgKGtleXVwKT1cImhhbmRsZU5hdmlnYXRpb25LZXlVcCgkZXZlbnQsICduZXh0JywgdHJ1ZSlcIlxuICAgICAgY0J1dHRvblxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVOZXh0WWVhcigpXCJcbiAgICAgIGNvbG9yPVwidHJhbnNwYXJlbnRcIlxuICAgICAgc2l6ZT1cInNtXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFOZXh0WWVhckxhYmVsKClcIlxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY2FsZW5kYXItbmF2LWljb24gY2FsZW5kYXItbmF2LWljb24tZG91YmxlLW5leHRcIj48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxufVxuIl19
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbmF2aWdhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLW5hdmlnYXRpb24vY2FsZW5kYXItbmF2aWdhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLW5hdmlnYXRpb24vY2FsZW5kYXItbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFpQixNQUFNLHFCQUFxQixDQUFDOztBQWlCckUsTUFBTSxPQUFPLDJCQUEyQjtJQUM3QixXQUFXLENBQXNCO0lBQ2pDLGdCQUFnQixDQUEyQjtJQUVwRDtRQUhTLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQU0zQyxjQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2pDLE1BQU0sSUFBSSxHQUFHLElB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QUFxQixFQUFFLFNBQTBCLEVBQUUsS0FBZTtRQUN0RixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDOytHQTdFVSwyQkFBMkI7bUdBQTNCLDJCQUEyQix5akNDdEJ4QyxrK0VBbUZBLDBERGxFWSxlQUFlLDBKQUFFLE9BQU87OzRGQUt2QiwyQkFBMkI7a0JBVnZDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBR3JCLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsUUFDN0I7d0JBQ0osS0FBSyxFQUFFLGNBQWM7cUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgRGVzdHJveVJlZiwgaW5qZWN0LCBpbnB1dCwgbnVtYmVyQXR0cmlidXRlLCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2J1dHRvbic7XG5pbXBvcnQgeyBDYWxlbmRhclNlcnZpY2UsIFNlbGVjdGlvblR5cGUgfSBmcm9tICcuLi9jYWxlbmRhci5zZXJ2aWNlJztcblxuaW50ZXJmYWNlIElOYXZpZ2F0aW9uQ2xpY2sge1xuICBkaXJlY3Rpb246ICdwcmV2JyB8ICduZXh0JztcbiAgeWVhcnM6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtY2FsZW5kYXItbmF2aWdhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1uYXZpZ2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItbmF2aWdhdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQnV0dG9uRGlyZWN0aXZlLCBOZ1N0eWxlXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnY2FsZW5kYXItbmF2J1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyTmF2aWdhdGlvbkNvbXBvbmVudCB7XG4gIHJlYWRvbmx5ICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICByZWFkb25seSAjY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KENhbGVuZGFyU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaWJlKCk7XG4gIH1cblxuICByZWFkb25seSBwYWdlSW5kZXggPSBpbnB1dCgwLCB7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xuICByZWFkb25seSBhZGRNb250aHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdmlldyA9IHRoaXMudmlldygpO1xuICAgIGNvbnN0IHBhZ2VJbmRleCA9IHRoaXMucGFnZUluZGV4KCk7XG4gICAgcmV0dXJuIHBhZ2VJbmRleCAqICh2aWV3ID09PSAneWVhcnMnID8gMTQ0IDogdmlldyA9PT0gJ21vbnRocycgPyAxMiA6IDEpO1xuICB9KTtcbiAgcmVhZG9ubHkgbmF2aWdhdGlvbiA9IGlucHV0KHRydWUpO1xuICByZWFkb25seSBtYXhEYXRlID0gc2lnbmFsPERhdGUgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgbWluRGF0ZSA9IHNpZ25hbDxEYXRlIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGNhbGVuZGFyRGF0ZSA9IHNpZ25hbChuZXcgRGF0ZSgpKTtcbiAgcmVhZG9ubHkgbmF2WWVhckZpcnN0ID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9jYWxlID0gc2lnbmFsKCdkZWZhdWx0Jyk7XG4gIHJlYWRvbmx5IHZpZXcgPSBzaWduYWw8J2RheXMnIHwgJ21vbnRocycgfCAneWVhcnMnPignZGF5cycpO1xuICByZWFkb25seSBzZWxlY3Rpb25UeXBlID0gc2lnbmFsPFNlbGVjdGlvblR5cGU+KCdkYXknKTtcblxuICByZWFkb25seSBhcmlhTmV4dE1vbnRoTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCdOZXh0IG1vbnRoJyk7XG4gIHJlYWRvbmx5IGFyaWFOZXh0WWVhckxhYmVsID0gaW5wdXQ8c3RyaW5nPignTmV4dCB5ZWFyJyk7XG4gIHJlYWRvbmx5IGFyaWFQcmV2TW9udGhMYWJlbCA9IGlucHV0PHN0cmluZz4oJ1ByZXZpb3VzIG1vbnRoJyk7XG4gIHJlYWRvbmx5IGFyaWFQcmV2WWVhckxhYmVsID0gaW5wdXQ8c3RyaW5nPignUHJldmlvdXMgeWVhcicpO1xuXG4gIHJlYWRvbmx5IG5hdmlnYXRpb25DbGljayA9IG91dHB1dDxJTmF2aWdhdGlvbkNsaWNrPigpO1xuXG4gIHJlYWRvbmx5IGRhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuY2FsZW5kYXJEYXRlKCkuZ2V0RnVsbFllYXIoKSwgdGhpcy5jYWxlbmRhckRhdGUoKS5nZXRNb250aCgpICsgdGhpcy5hZGRNb250aHMoKSk7XG4gIH0pO1xuICByZWFkb25seSBkaXNhYmxlTmV4dE1vbnRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLm1heERhdGUoKTtcbiAgICByZXR1cm4gbWF4RGF0ZSA/IHRoaXMuZGF0ZSgpID49IG1heERhdGUgOiBmYWxzZTtcbiAgfSk7XG4gIHJlYWRvbmx5IGRpc2FibGVQcmV2TW9udGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbWluRGF0ZSA9IHRoaXMubWluRGF0ZSgpO1xuICAgIHJldHVybiBtaW5EYXRlID8gdGhpcy5kYXRlKCkgPD0gbWluRGF0ZSA6IGZhbHNlO1xuICB9KTtcbiAgcmVhZG9ubHkgZGlzYWJsZU5leHRZZWFyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLm1heERhdGUoKTtcbiAgICByZXR1cm4gbWF4RGF0ZSA/IHRoaXMuZGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyAxID49IG1heERhdGUuZ2V0RnVsbFllYXIoKSA6IGZhbHNlO1xuICB9KTtcbiAgcmVhZG9ubHkgZGlzYWJsZVByZXZZZWFyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1pbkRhdGUgPSB0aGlzLm1pbkRhdGUoKTtcbiAgICByZXR1cm4gbWluRGF0ZSA/IHRoaXMuZGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAxIDw9IG1pbkRhdGUuZ2V0RnVsbFllYXIoKSA6IGZhbHNlO1xuICB9KTtcblxuICBjYWxlbmRhclN0YXRlU3Vic2NyaWJlKCk6IHZvaWQge1xuICAgIHRoaXMuI2NhbGVuZGFyU2VydmljZS5jYWxlbmRhclN0YXRlJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKSkuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHN0YXRlKTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgaWYgKGtleSBpbiB0aGlzKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHR5cGVvZiB0aGlzW2tleV0gPT09ICdmdW5jdGlvbicgPyB0aGlzW2tleV0uc2V0KHN0YXRlW2tleV0pIDogKHRoaXNba2V5XSA9IHN0YXRlW2tleV0pO1xuICAgICAgICAgIC8vIHRoaXNba2V5XSA9IHN0YXRlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNldFZpZXcodmlldzogJ2RheXMnIHwgJ21vbnRocycgfCAneWVhcnMnKSB7XG4gICAgdGhpcy52aWV3LnNldCh2aWV3KTtcbiAgICB0aGlzLiNjYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgdmlldzogdmlldyB9KTtcbiAgfVxuXG4gIGhhbmRsZU5hdmlnYXRpb25DbGljayhkaXJlY3Rpb246ICdwcmV2JyB8ICduZXh0JywgeWVhcnMgPSBmYWxzZSkge1xuICAgIHRoaXMubmF2aWdhdGlvbkNsaWNrLmVtaXQoeyBkaXJlY3Rpb24sIHllYXJzOiB5ZWFycyB9KTtcbiAgfVxuXG4gIGhhbmRsZU5hdmlnYXRpb25LZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGRpcmVjdGlvbjogJ3ByZXYnIHwgJ25leHQnLCB5ZWFycz86IGJvb2xlYW4pIHtcbiAgICBpZiAoWydTcGFjZSddLmluY2x1ZGVzKCRldmVudC5jb2RlKSkge1xuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmhhbmRsZU5hdmlnYXRpb25DbGljayhkaXJlY3Rpb24sIHllYXJzKTtcbiAgICB9XG4gIH1cbn1cbiIsIkBpZiAobmF2aWdhdGlvbigpKSB7XG4gIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1uYXYtcHJldlwiPlxuICAgIDxidXR0b25cbiAgICAgIChjbGljayk9XCJoYW5kbGVOYXZpZ2F0aW9uQ2xpY2soJ3ByZXYnLCB0cnVlKVwiXG4gICAgICAoa2V5dXApPVwiaGFuZGxlTmF2aWdhdGlvbktleVVwKCRldmVudCwgJ3ByZXYnLCB0cnVlKVwiXG4gICAgICBjQnV0dG9uXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVByZXZZZWFyKClcIlxuICAgICAgY29sb3I9XCJ0cmFuc3BhcmVudFwiXG4gICAgICBzaXplPVwic21cIlxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYVByZXZZZWFyTGFiZWwoKVwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjYWxlbmRhci1uYXYtaWNvbiBjYWxlbmRhci1uYXYtaWNvbi1kb3VibGUtcHJldlwiPjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICBAaWYgKHZpZXcoKSA9PT0gJ2RheXMnKSB7XG4gICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVOYXZpZ2F0aW9uQ2xpY2soJ3ByZXYnKVwiXG4gICAgICAgIChrZXl1cCk9XCJoYW5kbGVOYXZpZ2F0aW9uS2V5VXAoJGV2ZW50LCAncHJldicpXCJcbiAgICAgICAgY0J1dHRvblxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVByZXZNb250aCgpXCJcbiAgICAgICAgY29sb3I9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYVByZXZNb250aExhYmVsKClcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNhbGVuZGFyLW5hdi1pY29uIGNhbGVuZGFyLW5hdi1pY29uLXByZXZcIj48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gIDwvZGl2PlxufVxuPGRpdiBbbmdTdHlsZV09XCJuYXZZZWFyRmlyc3QoKSA/IHsgZGlzcGxheTogJ2ZsZXgnLCBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicgfSA6IHt9XCIgYXJpYS1saXZlPVwicG9saXRlXCIgY2xhc3M9XCJjYWxlbmRhci1uYXYtZGF0ZVwiPlxuICBAaWYgKHZpZXcoKSA9PT0gJ2RheXMnKSB7XG4gICAgPGJ1dHRvblxuICAgICAgKGNsaWNrKT1cInNldFZpZXcoJ21vbnRocycpXCJcbiAgICAgIGNCdXR0b25cbiAgICAgIGNvbG9yPVwidHJhbnNwYXJlbnRcIlxuICAgICAgc2l6ZT1cInNtXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgPlxuICAgICAge3sgZGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUoKSwgeyBtb250aDogJ2xvbmcnIH0pIH19XG4gICAgPC9idXR0b24+XG4gIH1cbiAgPGJ1dHRvblxuICAgIChjbGljayk9XCJzZXRWaWV3KCd5ZWFycycpXCJcbiAgICBbbmdTdHlsZV09XCJuYXZZZWFyRmlyc3QoKSA/IHsgb3JkZXI6ICctMScgfSA6IHt9XCJcbiAgICBjQnV0dG9uXG4gICAgY29sb3I9XCJ0cmFuc3BhcmVudFwiXG4gICAgc2l6ZT1cInNtXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICA+XG4gICAge3sgZGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUoKSwgeyB5ZWFyOiAnbnVtZXJpYycgfSkgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cbkBpZiAobmF2aWdhdGlvbigpKSB7XG4gIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1uYXYtbmV4dFwiPlxuICAgIEBpZiAodmlldygpID09PSAnZGF5cycpIHtcbiAgICAgIDxidXR0b25cbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZU5hdmlnYXRpb25DbGljaygnbmV4dCcpXCJcbiAgICAgICAgKGtleXVwKT1cImhhbmRsZU5hdmlnYXRpb25LZXlVcCgkZXZlbnQsICduZXh0JylcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZU5leHRNb250aCgpXCJcbiAgICAgICAgY0J1dHRvblxuICAgICAgICBjb2xvcj1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTmV4dE1vbnRoTGFiZWwoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2FsZW5kYXItbmF2LWljb24gY2FsZW5kYXItbmF2LWljb24tbmV4dFwiPjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgICA8YnV0dG9uXG4gICAgICAoY2xpY2spPVwiaGFuZGxlTmF2aWdhdGlvbkNsaWNrKCduZXh0JywgdHJ1ZSlcIlxuICAgICAgKGtleXVwKT1cImhhbmRsZU5hdmlnYXRpb25LZXlVcCgkZXZlbnQsICduZXh0JywgdHJ1ZSlcIlxuICAgICAgY0J1dHRvblxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVOZXh0WWVhcigpXCJcbiAgICAgIGNvbG9yPVwidHJhbnNwYXJlbnRcIlxuICAgICAgc2l6ZT1cInNtXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFOZXh0WWVhckxhYmVsKClcIlxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY2FsZW5kYXItbmF2LWljb24gY2FsZW5kYXItbmF2LWljb24tZG91YmxlLW5leHRcIj48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxufVxuIl19
@@ -13,8 +13,8 @@ import { CalendarDayTitlePipe } from './calendar-month/calendar-day-title.pipe';
13
13
  import { CalendarClassRowPipe } from './calendar-month/calendar-class-row.pipe';
14
14
  import * as i0 from "@angular/core";
15
15
  export class CalendarModule {
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: CalendarModule, imports: [CalendarComponent,
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: CalendarModule, imports: [CalendarComponent,
18
18
  CalendarClassYearPipe,
19
19
  CalendarClassDayPipe,
20
20
  CalendarClassMonthPipe,
@@ -28,9 +28,9 @@ export class CalendarModule {
28
28
  CalendarClassRowPipe], exports: [CalendarComponent,
29
29
  CalendarMonthComponent,
30
30
  CalendarNavigationComponent] }); }
31
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CalendarModule, imports: [CalendarComponent] }); }
31
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CalendarModule, imports: [CalendarComponent] }); }
32
32
  }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CalendarModule, decorators: [{
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CalendarModule, decorators: [{
34
34
  type: NgModule,
35
35
  args: [{
36
36
  imports: [
@@ -54,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
54
54
  ]
55
55
  }]
56
56
  }] });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDaEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBdUJoRixNQUFNLE9BQU8sY0FBYzs4R0FBZCxjQUFjOytHQUFkLGNBQWMsWUFuQnZCLGlCQUFpQjtZQUNqQixxQkFBcUI7WUFDckIsb0JBQW9CO1lBQ3BCLHNCQUFzQjtZQUN0QixvQkFBb0I7WUFDcEIscUJBQXFCO1lBQ3JCLDJCQUEyQjtZQUMzQixzQkFBc0I7WUFDdEIsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixvQkFBb0I7WUFDcEIsb0JBQW9CLGFBR3BCLGlCQUFpQjtZQUNqQixzQkFBc0I7WUFDdEIsMkJBQTJCOytHQUdsQixjQUFjLFlBbkJ2QixpQkFBaUI7OzJGQW1CUixjQUFjO2tCQXJCMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QixvQkFBb0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIsMkJBQTJCO3dCQUMzQixzQkFBc0I7d0JBQ3RCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLG9CQUFvQjtxQkFDckI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGlCQUFpQjt3QkFDakIsc0JBQXNCO3dCQUN0QiwyQkFBMkI7cUJBQzVCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhckNsYXNzVmlld1BpcGUgfSBmcm9tICcuL2NhbGVuZGFyL2NhbGVuZGFyLWNsYXNzLXZpZXcucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhckNsYXNzWWVhclBpcGUgfSBmcm9tICcuL2NhbGVuZGFyLW1vbnRoL2NhbGVuZGFyLWNsYXNzLXllYXIucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhckRheURpcmVjdGl2ZSB9IGZyb20gJy4vY2FsZW5kYXItbW9udGgvY2FsZW5kYXItZGF5LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDYWxlbmRhckNsYXNzRGF5UGlwZSB9IGZyb20gJy4vY2FsZW5kYXItbW9udGgvY2FsZW5kYXItY2xhc3MtZGF5LnBpcGUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJDbGFzc01vbnRoUGlwZSB9IGZyb20gJy4vY2FsZW5kYXItbW9udGgvY2FsZW5kYXItY2xhc3MtbW9udGgucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhck1vbnRoQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsZW5kYXJOYXZpZ2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci1uYXZpZ2F0aW9uL2NhbGVuZGFyLW5hdmlnYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IENhbGVuZGFyRGF5UGlwZSB9IGZyb20gJy4vY2FsZW5kYXItbW9udGgvY2FsZW5kYXItZGF5LnBpcGUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJXZWVrZGF5UGlwZSB9IGZyb20gJy4vY2FsZW5kYXItbW9udGgvY2FsZW5kYXItd2Vla2RheS5waXBlJztcbmltcG9ydCB7IENhbGVuZGFyRGF5VGl0bGVQaXBlIH0gZnJvbSAnLi9jYWxlbmRhci1tb250aC9jYWxlbmRhci1kYXktdGl0bGUucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhckNsYXNzUm93UGlwZSB9IGZyb20gJy4vY2FsZW5kYXItbW9udGgvY2FsZW5kYXItY2xhc3Mtcm93LnBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgQ2FsZW5kYXJDbGFzc1llYXJQaXBlLFxuICAgIENhbGVuZGFyQ2xhc3NEYXlQaXBlLFxuICAgIENhbGVuZGFyQ2xhc3NNb250aFBpcGUsXG4gICAgQ2FsZW5kYXJEYXlEaXJlY3RpdmUsXG4gICAgQ2FsZW5kYXJDbGFzc1ZpZXdQaXBlLFxuICAgIENhbGVuZGFyTmF2aWdhdGlvbkNvbXBvbmVudCxcbiAgICBDYWxlbmRhck1vbnRoQ29tcG9uZW50LFxuICAgIENhbGVuZGFyRGF5UGlwZSxcbiAgICBDYWxlbmRhcldlZWtkYXlQaXBlLFxuICAgIENhbGVuZGFyRGF5VGl0bGVQaXBlLFxuICAgIENhbGVuZGFyQ2xhc3NSb3dQaXBlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBDYWxlbmRhckNvbXBvbmVudCxcbiAgICBDYWxlbmRhck1vbnRoQ29tcG9uZW50LFxuICAgIENhbGVuZGFyTmF2aWdhdGlvbkNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyTW9kdWxlIHt9XG4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDaEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBdUJoRixNQUFNLE9BQU8sY0FBYzsrR0FBZCxjQUFjO2dIQUFkLGNBQWMsWUFuQnZCLGlCQUFpQjtZQUNqQixxQkFBcUI7WUFDckIsb0JBQW9CO1lBQ3BCLHNCQUFzQjtZQUN0QixvQkFBb0I7WUFDcEIscUJBQXFCO1lBQ3JCLDJCQUEyQjtZQUMzQixzQkFBc0I7WUFDdEIsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixvQkFBb0I7WUFDcEIsb0JBQW9CLGFBR3BCLGlCQUFpQjtZQUNqQixzQkFBc0I7WUFDdEIsMkJBQTJCO2dIQUdsQixjQUFjLFlBbkJ2QixpQkFBaUI7OzRGQW1CUixjQUFjO2tCQXJCMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QixvQkFBb0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIsMkJBQTJCO3dCQUMzQixzQkFBc0I7d0JBQ3RCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLG9CQUFvQjtxQkFDckI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGlCQUFpQjt3QkFDakIsc0JBQXNCO3dCQUN0QiwyQkFBMkI7cUJBQzVCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhckNsYXNzVmlld1BpcGUgfSBmcm9tICcuL2NhbGVuZGFyL2NhbGVuZGFyLWNsYXNzLXZpZXcucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhckNsYXNzWWVhclBpcGUgfSBmcm9tICcuL2NhbGVuZGFyLW1vbnRoL2NhbGVuZGFyLWNsYXNzLXllYXIucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhckRheURpcmVjdGl2ZSB9IGZyb20gJy4vY2FsZW5kYXItbW9udGgvY2FsZW5kYXItZGF5LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDYWxlbmRhckNsYXNzRGF5UGlwZSB9IGZyb20gJy4vY2FsZW5kYXItbW9udGgvY2FsZW5kYXItY2xhc3MtZGF5LnBpcGUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJDbGFzc01vbnRoUGlwZSB9IGZyb20gJy4vY2FsZW5kYXItbW9udGgvY2FsZW5kYXItY2xhc3MtbW9udGgucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhck1vbnRoQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsZW5kYXJOYXZpZ2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci1uYXZpZ2F0aW9uL2NhbGVuZGFyLW5hdmlnYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IENhbGVuZGFyRGF5UGlwZSB9IGZyb20gJy4vY2FsZW5kYXItbW9udGgvY2FsZW5kYXItZGF5LnBpcGUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJXZWVrZGF5UGlwZSB9IGZyb20gJy4vY2FsZW5kYXItbW9udGgvY2FsZW5kYXItd2Vla2RheS5waXBlJztcbmltcG9ydCB7IENhbGVuZGFyRGF5VGl0bGVQaXBlIH0gZnJvbSAnLi9jYWxlbmRhci1tb250aC9jYWxlbmRhci1kYXktdGl0bGUucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhckNsYXNzUm93UGlwZSB9IGZyb20gJy4vY2FsZW5kYXItbW9udGgvY2FsZW5kYXItY2xhc3Mtcm93LnBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgQ2FsZW5kYXJDbGFzc1llYXJQaXBlLFxuICAgIENhbGVuZGFyQ2xhc3NEYXlQaXBlLFxuICAgIENhbGVuZGFyQ2xhc3NNb250aFBpcGUsXG4gICAgQ2FsZW5kYXJEYXlEaXJlY3RpdmUsXG4gICAgQ2FsZW5kYXJDbGFzc1ZpZXdQaXBlLFxuICAgIENhbGVuZGFyTmF2aWdhdGlvbkNvbXBvbmVudCxcbiAgICBDYWxlbmRhck1vbnRoQ29tcG9uZW50LFxuICAgIENhbGVuZGFyRGF5UGlwZSxcbiAgICBDYWxlbmRhcldlZWtkYXlQaXBlLFxuICAgIENhbGVuZGFyRGF5VGl0bGVQaXBlLFxuICAgIENhbGVuZGFyQ2xhc3NSb3dQaXBlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBDYWxlbmRhckNvbXBvbmVudCxcbiAgICBDYWxlbmRhck1vbnRoQ29tcG9uZW50LFxuICAgIENhbGVuZGFyTmF2aWdhdGlvbkNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyTW9kdWxlIHt9XG4iXX0=