@coreui/angular-pro 4.5.22 → 4.5.24

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 (250) hide show
  1. package/esm2022/lib/accordion/accordion/accordion.component.mjs +3 -3
  2. package/esm2022/lib/accordion/accordion-button/accordion-button.directive.mjs +3 -3
  3. package/esm2022/lib/accordion/accordion-item/accordion-item.component.mjs +3 -3
  4. package/esm2022/lib/accordion/accordion.module.mjs +4 -4
  5. package/esm2022/lib/accordion/accordion.service.mjs +3 -3
  6. package/esm2022/lib/alert/alert-heading.directive.mjs +3 -3
  7. package/esm2022/lib/alert/alert-link.directive.mjs +3 -3
  8. package/esm2022/lib/alert/alert.component.mjs +3 -3
  9. package/esm2022/lib/alert/alert.module.mjs +4 -4
  10. package/esm2022/lib/avatar/avatar.component.mjs +3 -3
  11. package/esm2022/lib/avatar/avatar.module.mjs +4 -4
  12. package/esm2022/lib/backdrop/backdrop.service.mjs +3 -3
  13. package/esm2022/lib/badge/badge.component.mjs +3 -3
  14. package/esm2022/lib/badge/badge.module.mjs +4 -4
  15. package/esm2022/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +3 -3
  16. package/esm2022/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +3 -3
  17. package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +3 -3
  18. package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +3 -3
  19. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +4 -4
  20. package/esm2022/lib/button/button-close.directive.mjs +3 -3
  21. package/esm2022/lib/button/button.directive.mjs +3 -3
  22. package/esm2022/lib/button/button.module.mjs +4 -4
  23. package/esm2022/lib/button-group/button-group/button-group.component.mjs +3 -3
  24. package/esm2022/lib/button-group/button-group.module.mjs +4 -4
  25. package/esm2022/lib/button-group/button-toolbar/button-toolbar.component.mjs +3 -3
  26. package/esm2022/lib/calendar/calendar/calendar-class-view.pipe.mjs +3 -3
  27. package/esm2022/lib/calendar/calendar/calendar.component.mjs +3 -3
  28. package/esm2022/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +3 -3
  29. package/esm2022/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +3 -3
  30. package/esm2022/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +3 -3
  31. package/esm2022/lib/calendar/calendar-month/calendar-day-title.pipe.mjs +3 -3
  32. package/esm2022/lib/calendar/calendar-month/calendar-day.directive.mjs +3 -3
  33. package/esm2022/lib/calendar/calendar-month/calendar-day.pipe.mjs +3 -3
  34. package/esm2022/lib/calendar/calendar-month/calendar-month.component.mjs +3 -3
  35. package/esm2022/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +3 -3
  36. package/esm2022/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +3 -3
  37. package/esm2022/lib/calendar/calendar.module.mjs +4 -4
  38. package/esm2022/lib/calendar/calendar.service.mjs +6 -8
  39. package/esm2022/lib/calendar/calendar.utils.mjs +9 -6
  40. package/esm2022/lib/callout/callout.component.mjs +3 -3
  41. package/esm2022/lib/callout/callout.module.mjs +4 -4
  42. package/esm2022/lib/card/card-body.component.mjs +3 -3
  43. package/esm2022/lib/card/card-footer.component.mjs +3 -3
  44. package/esm2022/lib/card/card-group.component.mjs +3 -3
  45. package/esm2022/lib/card/card-header-actions.component.mjs +3 -3
  46. package/esm2022/lib/card/card-header.component.mjs +3 -3
  47. package/esm2022/lib/card/card-img-overlay/card-img-overlay.component.mjs +3 -3
  48. package/esm2022/lib/card/card-img.directive.mjs +3 -3
  49. package/esm2022/lib/card/card-link.directive.mjs +3 -3
  50. package/esm2022/lib/card/card-subtitle.directive.mjs +3 -3
  51. package/esm2022/lib/card/card-text.directive.mjs +3 -3
  52. package/esm2022/lib/card/card-title.directive.mjs +3 -3
  53. package/esm2022/lib/card/card.component.mjs +3 -3
  54. package/esm2022/lib/card/card.module.mjs +4 -4
  55. package/esm2022/lib/carousel/carousel/carousel.component.mjs +3 -3
  56. package/esm2022/lib/carousel/carousel-caption/carousel-caption.component.mjs +3 -3
  57. package/esm2022/lib/carousel/carousel-control/carousel-control.component.mjs +3 -3
  58. package/esm2022/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +3 -3
  59. package/esm2022/lib/carousel/carousel-inner/carousel-inner.component.mjs +3 -3
  60. package/esm2022/lib/carousel/carousel-item/carousel-item.component.mjs +3 -3
  61. package/esm2022/lib/carousel/carousel-state.mjs +3 -3
  62. package/esm2022/lib/carousel/carousel.config.mjs +3 -3
  63. package/esm2022/lib/carousel/carousel.module.mjs +4 -4
  64. package/esm2022/lib/carousel/carousel.service.mjs +3 -3
  65. package/esm2022/lib/collapse/collapse.directive.mjs +3 -3
  66. package/esm2022/lib/collapse/collapse.module.mjs +4 -4
  67. package/esm2022/lib/date-picker/date-picker.component.mjs +9 -7
  68. package/esm2022/lib/date-picker/date-picker.module.mjs +4 -4
  69. package/esm2022/lib/date-range-picker/date-range-picker/custom-range-key.pipe.mjs +17 -0
  70. package/esm2022/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +46 -29
  71. package/esm2022/lib/date-range-picker/date-range-picker.module.mjs +4 -4
  72. package/esm2022/lib/dropdown/dropdown/dropdown.component.mjs +6 -6
  73. package/esm2022/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +3 -3
  74. package/esm2022/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +3 -3
  75. package/esm2022/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +3 -3
  76. package/esm2022/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +3 -3
  77. package/esm2022/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +3 -3
  78. package/esm2022/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +3 -3
  79. package/esm2022/lib/dropdown/dropdown.module.mjs +4 -4
  80. package/esm2022/lib/dropdown/dropdown.service.mjs +3 -3
  81. package/esm2022/lib/element-cover/element-cover.component.mjs +3 -3
  82. package/esm2022/lib/element-cover/element-cover.module.mjs +4 -4
  83. package/esm2022/lib/footer/footer.component.mjs +3 -3
  84. package/esm2022/lib/footer/footer.module.mjs +4 -4
  85. package/esm2022/lib/form/form/form.directive.mjs +3 -3
  86. package/esm2022/lib/form/form-check/form-check-input.directive.mjs +3 -3
  87. package/esm2022/lib/form/form-check/form-check-label.directive.mjs +3 -3
  88. package/esm2022/lib/form/form-check/form-check.component.mjs +3 -3
  89. package/esm2022/lib/form/form-control/form-control.directive.mjs +3 -3
  90. package/esm2022/lib/form/form-feedback/form-feedback.component.mjs +3 -3
  91. package/esm2022/lib/form/form-floating/form-floating.directive.mjs +3 -3
  92. package/esm2022/lib/form/form-label/form-label.directive.mjs +3 -3
  93. package/esm2022/lib/form/form-select/form-select.directive.mjs +3 -3
  94. package/esm2022/lib/form/form-text/form-text.directive.mjs +3 -3
  95. package/esm2022/lib/form/form.module.mjs +4 -4
  96. package/esm2022/lib/form/input-group/input-group.component.mjs +3 -3
  97. package/esm2022/lib/form/input-group-text/input-group-text.directive.mjs +3 -3
  98. package/esm2022/lib/grid/col.component.mjs +3 -3
  99. package/esm2022/lib/grid/col.directive.mjs +3 -3
  100. package/esm2022/lib/grid/container.component.mjs +3 -3
  101. package/esm2022/lib/grid/grid.module.mjs +4 -4
  102. package/esm2022/lib/grid/gutter.directive.mjs +3 -3
  103. package/esm2022/lib/grid/row.component.mjs +3 -3
  104. package/esm2022/lib/grid/row.directive.mjs +3 -3
  105. package/esm2022/lib/header/header/header.component.mjs +3 -3
  106. package/esm2022/lib/header/header-brand/header-brand.component.mjs +3 -3
  107. package/esm2022/lib/header/header-divider/header-divider.component.mjs +3 -3
  108. package/esm2022/lib/header/header-nav/header-nav.component.mjs +3 -3
  109. package/esm2022/lib/header/header-text/header-text.component.mjs +3 -3
  110. package/esm2022/lib/header/header-toggler/header-toggler.directive.mjs +3 -3
  111. package/esm2022/lib/header/header.module.mjs +4 -4
  112. package/esm2022/lib/image/img.directive.mjs +3 -3
  113. package/esm2022/lib/image/img.module.mjs +4 -4
  114. package/esm2022/lib/list-group/list-group-item.directive.mjs +3 -3
  115. package/esm2022/lib/list-group/list-group.directive.mjs +3 -3
  116. package/esm2022/lib/list-group/list-group.module.mjs +4 -4
  117. package/esm2022/lib/loading-button/loading-button.component.mjs +3 -3
  118. package/esm2022/lib/loading-button/loading-button.module.mjs +4 -4
  119. package/esm2022/lib/modal/modal/modal.component.mjs +3 -3
  120. package/esm2022/lib/modal/modal-body/modal-body.component.mjs +3 -3
  121. package/esm2022/lib/modal/modal-content/modal-content.component.mjs +3 -3
  122. package/esm2022/lib/modal/modal-dialog/modal-dialog.component.mjs +3 -3
  123. package/esm2022/lib/modal/modal-dismiss/modal-toggle.directive.mjs +3 -3
  124. package/esm2022/lib/modal/modal-footer/modal-footer.component.mjs +3 -3
  125. package/esm2022/lib/modal/modal-header/modal-header.component.mjs +3 -3
  126. package/esm2022/lib/modal/modal-title/modal-title.directive.mjs +3 -3
  127. package/esm2022/lib/modal/modal.module.mjs +4 -4
  128. package/esm2022/lib/modal/modal.service.mjs +3 -3
  129. package/esm2022/lib/multi-select/multi-select/multi-select-search.directive.mjs +3 -3
  130. package/esm2022/lib/multi-select/multi-select/multi-select.component.mjs +6 -6
  131. package/esm2022/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +3 -3
  132. package/esm2022/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +3 -3
  133. package/esm2022/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +3 -3
  134. package/esm2022/lib/multi-select/multi-select-option/multi-select-option.component.mjs +3 -3
  135. package/esm2022/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +3 -3
  136. package/esm2022/lib/multi-select/multi-select.module.mjs +4 -4
  137. package/esm2022/lib/multi-select/multi-select.service.mjs +3 -3
  138. package/esm2022/lib/nav/nav-item.component.mjs +3 -3
  139. package/esm2022/lib/nav/nav-link.directive.mjs +3 -3
  140. package/esm2022/lib/nav/nav.component.mjs +3 -3
  141. package/esm2022/lib/nav/nav.module.mjs +4 -4
  142. package/esm2022/lib/navbar/navbar-brand/navbar-brand.directive.mjs +3 -3
  143. package/esm2022/lib/navbar/navbar-nav/navbar-nav.component.mjs +3 -3
  144. package/esm2022/lib/navbar/navbar-text/navbar-text.component.mjs +3 -3
  145. package/esm2022/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +3 -3
  146. package/esm2022/lib/navbar/navbar.component.mjs +3 -3
  147. package/esm2022/lib/navbar/navbar.module.mjs +4 -4
  148. package/esm2022/lib/offcanvas/offcanvas/offcanvas.component.mjs +3 -3
  149. package/esm2022/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +3 -3
  150. package/esm2022/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +3 -3
  151. package/esm2022/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +3 -3
  152. package/esm2022/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +3 -3
  153. package/esm2022/lib/offcanvas/offcanvas.module.mjs +4 -4
  154. package/esm2022/lib/offcanvas/offcanvas.service.mjs +3 -3
  155. package/esm2022/lib/pagination/page-item/page-item.component.mjs +3 -3
  156. package/esm2022/lib/pagination/page-item/page-item.directive.mjs +3 -3
  157. package/esm2022/lib/pagination/page-link/page-link.directive.mjs +3 -3
  158. package/esm2022/lib/pagination/pagination/pagination.component.mjs +3 -3
  159. package/esm2022/lib/pagination/pagination.module.mjs +4 -4
  160. package/esm2022/lib/placeholder/placeholder-animation.directive.mjs +3 -3
  161. package/esm2022/lib/placeholder/placeholder.directive.mjs +3 -3
  162. package/esm2022/lib/placeholder/placeholder.module.mjs +4 -4
  163. package/esm2022/lib/popover/popover/popover.component.mjs +3 -3
  164. package/esm2022/lib/popover/popover.directive.mjs +3 -3
  165. package/esm2022/lib/popover/popover.module.mjs +4 -4
  166. package/esm2022/lib/progress/progress-bar.component.mjs +3 -3
  167. package/esm2022/lib/progress/progress.component.mjs +3 -3
  168. package/esm2022/lib/progress/progress.module.mjs +4 -4
  169. package/esm2022/lib/services/class-toggle.service.mjs +3 -3
  170. package/esm2022/lib/services/intersection.service.mjs +3 -3
  171. package/esm2022/lib/services/listeners.service.mjs +3 -3
  172. package/esm2022/lib/shared/html-attr.directive.mjs +3 -3
  173. package/esm2022/lib/shared/shared.module.mjs +4 -4
  174. package/esm2022/lib/shared/template-id.directive.mjs +3 -3
  175. package/esm2022/lib/sidebar/sidebar/sidebar.component.mjs +3 -3
  176. package/esm2022/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +3 -3
  177. package/esm2022/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +3 -3
  178. package/esm2022/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +3 -3
  179. package/esm2022/lib/sidebar/sidebar-header/sidebar-header.component.mjs +3 -3
  180. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +3 -3
  181. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +3 -3
  182. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-group.service.mjs +3 -3
  183. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +3 -3
  184. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +3 -3
  185. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +3 -3
  186. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +6 -6
  187. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +3 -3
  188. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +3 -3
  189. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +6 -6
  190. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +6 -6
  191. package/esm2022/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +3 -3
  192. package/esm2022/lib/sidebar/sidebar-toggler/sidebar-toggler.component.mjs +3 -3
  193. package/esm2022/lib/sidebar/sidebar.module.mjs +4 -4
  194. package/esm2022/lib/sidebar/sidebar.service.mjs +3 -3
  195. package/esm2022/lib/smart-pagination/smart-pagination.component.mjs +3 -3
  196. package/esm2022/lib/smart-pagination/smart-pagination.module.mjs +4 -4
  197. package/esm2022/lib/smart-table/smart-table/smart-table.component.mjs +3 -3
  198. package/esm2022/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.mjs +3 -3
  199. package/esm2022/lib/smart-table/smart-table-filter/filter-input.directive.mjs +3 -3
  200. package/esm2022/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +3 -3
  201. package/esm2022/lib/smart-table/smart-table-head/smart-table-head.component.mjs +3 -3
  202. package/esm2022/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +3 -3
  203. package/esm2022/lib/smart-table/smart-table.module.mjs +4 -4
  204. package/esm2022/lib/spinner/spinner.component.mjs +3 -3
  205. package/esm2022/lib/spinner/spinner.module.mjs +4 -4
  206. package/esm2022/lib/table/table-active.directive.mjs +3 -3
  207. package/esm2022/lib/table/table-color.directive.mjs +3 -3
  208. package/esm2022/lib/table/table.directive.mjs +3 -3
  209. package/esm2022/lib/table/table.module.mjs +4 -4
  210. package/esm2022/lib/tabs/tab-content/tab-content.component.mjs +3 -3
  211. package/esm2022/lib/tabs/tab-content-ref.directive.mjs +3 -3
  212. package/esm2022/lib/tabs/tab-pane/tab-pane.component.mjs +3 -3
  213. package/esm2022/lib/tabs/tab.service.mjs +3 -3
  214. package/esm2022/lib/tabs/tabs.module.mjs +4 -4
  215. package/esm2022/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +6 -6
  216. package/esm2022/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +6 -6
  217. package/esm2022/lib/time-picker/time-picker.component.mjs +3 -3
  218. package/esm2022/lib/time-picker/time-picker.module.mjs +4 -4
  219. package/esm2022/lib/time-picker/time.utils.mjs +13 -13
  220. package/esm2022/lib/toast/toast/toast.component.mjs +3 -3
  221. package/esm2022/lib/toast/toast-body/toast-body.component.mjs +3 -3
  222. package/esm2022/lib/toast/toast-close.directive.mjs +3 -3
  223. package/esm2022/lib/toast/toast-header/toast-header.component.mjs +3 -3
  224. package/esm2022/lib/toast/toast.module.mjs +4 -4
  225. package/esm2022/lib/toast/toaster/toaster-host.directive.mjs +3 -3
  226. package/esm2022/lib/toast/toaster/toaster.component.mjs +3 -3
  227. package/esm2022/lib/toast/toaster/toaster.service.mjs +3 -3
  228. package/esm2022/lib/tooltip/tooltip/tooltip.component.mjs +3 -3
  229. package/esm2022/lib/tooltip/tooltip.directive.mjs +3 -3
  230. package/esm2022/lib/tooltip/tooltip.module.mjs +4 -4
  231. package/esm2022/lib/utilities/align.directive.mjs +3 -3
  232. package/esm2022/lib/utilities/bg-color.directive.mjs +3 -3
  233. package/esm2022/lib/utilities/border.directive.mjs +3 -3
  234. package/esm2022/lib/utilities/rounded.directive.mjs +3 -3
  235. package/esm2022/lib/utilities/text-color.directive.mjs +3 -3
  236. package/esm2022/lib/utilities/utilities.module.mjs +4 -4
  237. package/esm2022/lib/widget/widget-stat-a/widget-stat-a.component.mjs +3 -3
  238. package/esm2022/lib/widget/widget-stat-b/widget-stat-b.component.mjs +3 -3
  239. package/esm2022/lib/widget/widget-stat-c/widget-stat-c.component.mjs +3 -3
  240. package/esm2022/lib/widget/widget-stat-d/widget-stat-d.component.mjs +3 -3
  241. package/esm2022/lib/widget/widget-stat-e/widget-stat-e.component.mjs +3 -3
  242. package/esm2022/lib/widget/widget-stat-f/widget-stat-f.component.mjs +3 -3
  243. package/esm2022/lib/widget/widget.module.mjs +4 -4
  244. package/fesm2022/coreui-angular-pro.mjs +987 -952
  245. package/fesm2022/coreui-angular-pro.mjs.map +1 -1
  246. package/lib/calendar/calendar.utils.d.ts +1 -1
  247. package/lib/date-range-picker/date-range-picker/custom-range-key.pipe.d.ts +8 -0
  248. package/lib/date-range-picker/date-range-picker/date-range-picker.component.d.ts +5 -2
  249. package/lib/time-picker/time.utils.d.ts +11 -11
  250. package/package.json +1 -2
@@ -4,15 +4,15 @@ import { TableColorDirective } from './table-color.directive';
4
4
  import { TableActiveDirective } from './table-active.directive';
5
5
  import * as i0 from "@angular/core";
6
6
  export class TableModule {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: TableModule, imports: [TableDirective,
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.8", ngImport: i0, type: TableModule, imports: [TableDirective,
9
9
  TableColorDirective,
10
10
  TableActiveDirective], exports: [TableDirective,
11
11
  TableColorDirective,
12
12
  TableActiveDirective] }); }
13
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TableModule }); }
13
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TableModule }); }
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TableModule, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TableModule, decorators: [{
16
16
  type: NgModule,
17
17
  args: [{
18
18
  exports: [
@@ -72,10 +72,10 @@ export class TabContentComponent {
72
72
  tabPane.active = idx === index;
73
73
  });
74
74
  }
75
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TabContentComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TabService }], target: i0.ɵɵFactoryTarget.Component }); }
76
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: TabContentComponent, isStandalone: true, selector: "c-tab-content", inputs: { activeTabPaneIdx: "activeTabPaneIdx" }, outputs: { activeTabPaneIdxChange: "activeTabPaneIdxChange" }, host: { properties: { "class": "this.hostClasses" } }, queries: [{ propertyName: "panes", predicate: TabPaneComponent }], exportAs: ["cTabContent"], usesOnChanges: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TabContentComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TabService }], target: i0.ɵɵFactoryTarget.Component }); }
76
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: TabContentComponent, isStandalone: true, selector: "c-tab-content", inputs: { activeTabPaneIdx: "activeTabPaneIdx" }, outputs: { activeTabPaneIdxChange: "activeTabPaneIdxChange" }, host: { properties: { "class": "this.hostClasses" } }, queries: [{ propertyName: "panes", predicate: TabPaneComponent }], exportAs: ["cTabContent"], usesOnChanges: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
77
77
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TabContentComponent, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TabContentComponent, decorators: [{
79
79
  type: Component,
80
80
  args: [{ selector: 'c-tab-content', template: `<ng-content></ng-content>`, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cTabContent', standalone: true, styles: [":host{display:block}\n"] }]
81
81
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.TabService }]; }, propDecorators: { activeTabPaneIdx: [{
@@ -90,10 +90,10 @@ export class TabContentRefDirective {
90
90
  this.tabServiceSubscription?.unsubscribe();
91
91
  }
92
92
  }
93
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TabContentRefDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TabService }], target: i0.ɵɵFactoryTarget.Directive }); }
94
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: TabContentRefDirective, isStandalone: true, selector: "[cTabContent]", inputs: { tabContentRef: ["cTabContent", "tabContentRef"], active: "active", disabled: "disabled", tabPaneIdx: "tabPaneIdx" }, host: { listeners: { "click": "toggleOpen($event)" }, properties: { "class": "this.hostClasses", "attr.aria-disabled": "this.isDisabled", "attr.disabled": "this.attrDisabled", "attr.tabindex": "this.getTabindex" } }, usesOnChanges: true, ngImport: i0 }); }
93
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TabContentRefDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TabService }], target: i0.ɵɵFactoryTarget.Directive }); }
94
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.8", type: TabContentRefDirective, isStandalone: true, selector: "[cTabContent]", inputs: { tabContentRef: ["cTabContent", "tabContentRef"], active: "active", disabled: "disabled", tabPaneIdx: "tabPaneIdx" }, host: { listeners: { "click": "toggleOpen($event)" }, properties: { "class": "this.hostClasses", "attr.aria-disabled": "this.isDisabled", "attr.disabled": "this.attrDisabled", "attr.tabindex": "this.getTabindex" } }, usesOnChanges: true, ngImport: i0 }); }
95
95
  }
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TabContentRefDirective, decorators: [{
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TabContentRefDirective, decorators: [{
97
97
  type: Directive,
98
98
  args: [{
99
99
  selector: '[cTabContent]',
@@ -42,11 +42,11 @@ export class TabPaneComponent {
42
42
  this.tabServiceSubscription?.unsubscribe();
43
43
  }
44
44
  }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TabPaneComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TabService }], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: TabPaneComponent, isStandalone: true, selector: "c-tab-pane", host: { properties: { "class": "this.hostClasses" } }, exportAs: ["cTabPane"], ngImport: i0, template: `
45
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TabPaneComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TabService }], target: i0.ɵɵFactoryTarget.Component }); }
46
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: TabPaneComponent, isStandalone: true, selector: "c-tab-pane", host: { properties: { "class": "this.hostClasses" } }, exportAs: ["cTabPane"], ngImport: i0, template: `
47
47
  <ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"] }); }
48
48
  }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TabPaneComponent, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TabPaneComponent, decorators: [{
50
50
  type: Component,
51
51
  args: [{ selector: 'c-tab-pane', template: `
52
52
  <ng-content></ng-content>`, exportAs: 'cTabPane', standalone: true, styles: [":host{display:block}\n"] }]
@@ -9,10 +9,10 @@ export class TabService {
9
9
  setActiveTabIdx(tabContentState) {
10
10
  this.activeTabPaneIdx.next(tabContentState);
11
11
  }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TabService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
13
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TabService, providedIn: 'root' }); }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TabService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
13
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TabService, providedIn: 'root' }); }
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TabService, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TabService, decorators: [{
16
16
  type: Injectable,
17
17
  args: [{
18
18
  providedIn: 'root'
@@ -5,17 +5,17 @@ import { TabService } from './tab.service';
5
5
  import { TabContentRefDirective } from './tab-content-ref.directive';
6
6
  import * as i0 from "@angular/core";
7
7
  export class TabsModule {
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: TabsModule, imports: [TabContentComponent,
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.8", ngImport: i0, type: TabsModule, imports: [TabContentComponent,
10
10
  TabContentRefDirective,
11
11
  TabPaneComponent], exports: [TabContentComponent,
12
12
  TabPaneComponent,
13
13
  TabContentRefDirective] }); }
14
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TabsModule, providers: [
14
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TabsModule, providers: [
15
15
  TabService
16
16
  ] }); }
17
17
  }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TabsModule, decorators: [{
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TabsModule, decorators: [{
19
19
  type: NgModule,
20
20
  args: [{
21
21
  imports: [
@@ -6,10 +6,10 @@ export class DayPeriodElementDirective {
6
6
  constructor(elementRef) {
7
7
  this.elementRef = elementRef;
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: DayPeriodElementDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: DayPeriodElementDirective, isStandalone: true, selector: "[cDayPeriodElement]", inputs: { cDayPeriodElement: "cDayPeriodElement" }, exportAs: ["cDayPeriodElement"], ngImport: i0 }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: DayPeriodElementDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.8", type: DayPeriodElementDirective, isStandalone: true, selector: "[cDayPeriodElement]", inputs: { cDayPeriodElement: "cDayPeriodElement" }, exportAs: ["cDayPeriodElement"], ngImport: i0 }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: DayPeriodElementDirective, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: DayPeriodElementDirective, decorators: [{
13
13
  type: Directive,
14
14
  args: [{
15
15
  selector: '[cDayPeriodElement]',
@@ -77,10 +77,10 @@ export class TimePickerRollAmPmComponent {
77
77
  trackByElement(index, element) {
78
78
  return element.value;
79
79
  }
80
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TimePickerRollAmPmComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
81
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: TimePickerRollAmPmComponent, isStandalone: true, selector: "c-time-picker-roll-am-pm", inputs: { disabled: "disabled", elements: "elements", onClick: "onClick", selected: "selected", refresh: "refresh" }, outputs: { selectedChange: "selectedChange" }, host: { properties: { "class": "this.hostClasses" } }, viewQueries: [{ propertyName: "dayPeriodElements", predicate: DayPeriodElementDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div (click)=\"handleElementClick($event, element)\"\n *ngFor=\"let element of elements; index as i; trackBy: trackByElement\"\n [attr.disabled]=\"element.disabled || null\"\n [cDayPeriodElement]=\"element\"\n [ngClass]=\"{'time-picker-roll-cell': true, selected: element.value === selected, disabled: element.disabled}\"\n [ngStyle]=\"{'width': 'fit-content'}\"\n role=\"button\">\n {{element.label}}\n</div>\n", styles: [":host{display:block}:host .disabled{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: DayPeriodElementDirective, selector: "[cDayPeriodElement]", inputs: ["cDayPeriodElement"], exportAs: ["cDayPeriodElement"] }] }); }
80
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TimePickerRollAmPmComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
81
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: TimePickerRollAmPmComponent, isStandalone: true, selector: "c-time-picker-roll-am-pm", inputs: { disabled: "disabled", elements: "elements", onClick: "onClick", selected: "selected", refresh: "refresh" }, outputs: { selectedChange: "selectedChange" }, host: { properties: { "class": "this.hostClasses" } }, viewQueries: [{ propertyName: "dayPeriodElements", predicate: DayPeriodElementDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div (click)=\"handleElementClick($event, element)\"\n *ngFor=\"let element of elements; index as i; trackBy: trackByElement\"\n [attr.disabled]=\"element.disabled || null\"\n [cDayPeriodElement]=\"element\"\n [ngClass]=\"{'time-picker-roll-cell': true, selected: element.value === selected, disabled: element.disabled}\"\n [ngStyle]=\"{'width': 'fit-content'}\"\n role=\"button\">\n {{element.label}}\n</div>\n", styles: [":host{display:block}:host .disabled{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: DayPeriodElementDirective, selector: "[cDayPeriodElement]", inputs: ["cDayPeriodElement"], exportAs: ["cDayPeriodElement"] }] }); }
82
82
  }
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TimePickerRollAmPmComponent, decorators: [{
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TimePickerRollAmPmComponent, decorators: [{
84
84
  type: Component,
85
85
  args: [{ selector: 'c-time-picker-roll-am-pm', standalone: true, imports: [CommonModule, DayPeriodElementDirective], template: "<div (click)=\"handleElementClick($event, element)\"\n *ngFor=\"let element of elements; index as i; trackBy: trackByElement\"\n [attr.disabled]=\"element.disabled || null\"\n [cDayPeriodElement]=\"element\"\n [ngClass]=\"{'time-picker-roll-cell': true, selected: element.value === selected, disabled: element.disabled}\"\n [ngStyle]=\"{'width': 'fit-content'}\"\n role=\"button\">\n {{element.label}}\n</div>\n", styles: [":host{display:block}:host .disabled{pointer-events:none}\n"] }]
86
86
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { disabled: [{
@@ -6,10 +6,10 @@ export class TimeElementDirective {
6
6
  constructor(elementRef) {
7
7
  this.elementRef = elementRef;
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TimeElementDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: TimeElementDirective, isStandalone: true, selector: "[cTimeElement]", inputs: { cTimeElement: "cTimeElement" }, exportAs: ["cTimeElement"], ngImport: i0 }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TimeElementDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.8", type: TimeElementDirective, isStandalone: true, selector: "[cTimeElement]", inputs: { cTimeElement: "cTimeElement" }, exportAs: ["cTimeElement"], ngImport: i0 }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TimeElementDirective, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TimeElementDirective, decorators: [{
13
13
  type: Directive,
14
14
  args: [{
15
15
  selector: '[cTimeElement]',
@@ -78,10 +78,10 @@ export class TimePickerRollColComponent {
78
78
  trackByElement(index, element) {
79
79
  return element.value;
80
80
  }
81
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TimePickerRollColComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
82
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: TimePickerRollColComponent, isStandalone: true, selector: "c-time-picker-roll-col", inputs: { disabled: "disabled", elements: "elements", onClick: "onClick", selected: "selected", refresh: "refresh" }, outputs: { selectedChange: "selectedChange" }, host: { properties: { "class": "this.hostClasses" } }, viewQueries: [{ propertyName: "timeElements", predicate: TimeElementDirective, descendants: true }], exportAs: ["cTimePickerRollCol"], usesOnChanges: true, ngImport: i0, template: "<div (click)=\"handleElementClick($event, element)\"\n *ngFor=\"let element of elements; index as i; trackBy: trackByElement\"\n [attr.disabled]=\"element.disabled || null\"\n [cTimeElement]=\"element\"\n [ngClass]=\"{'time-picker-roll-cell': true, selected: element.value === selected, disabled: element.disabled}\"\n [ngStyle]=\"{'width': 'fit-content'}\"\n role=\"button\"\n>\n {{element.label}}\n</div>\n", styles: [":host{display:block}:host .disabled{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: TimeElementDirective, selector: "[cTimeElement]", inputs: ["cTimeElement"], exportAs: ["cTimeElement"] }] }); }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TimePickerRollColComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
82
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: TimePickerRollColComponent, isStandalone: true, selector: "c-time-picker-roll-col", inputs: { disabled: "disabled", elements: "elements", onClick: "onClick", selected: "selected", refresh: "refresh" }, outputs: { selectedChange: "selectedChange" }, host: { properties: { "class": "this.hostClasses" } }, viewQueries: [{ propertyName: "timeElements", predicate: TimeElementDirective, descendants: true }], exportAs: ["cTimePickerRollCol"], usesOnChanges: true, ngImport: i0, template: "<div (click)=\"handleElementClick($event, element)\"\n *ngFor=\"let element of elements; index as i; trackBy: trackByElement\"\n [attr.disabled]=\"element.disabled || null\"\n [cTimeElement]=\"element\"\n [ngClass]=\"{'time-picker-roll-cell': true, selected: element.value === selected, disabled: element.disabled}\"\n [ngStyle]=\"{'width': 'fit-content'}\"\n role=\"button\"\n>\n {{element.label}}\n</div>\n", styles: [":host{display:block}:host .disabled{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: TimeElementDirective, selector: "[cTimeElement]", inputs: ["cTimeElement"], exportAs: ["cTimeElement"] }] }); }
83
83
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TimePickerRollColComponent, decorators: [{
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TimePickerRollColComponent, decorators: [{
85
85
  type: Component,
86
86
  args: [{ selector: 'c-time-picker-roll-col', exportAs: 'cTimePickerRollCol', standalone: true, imports: [CommonModule, TimeElementDirective], template: "<div (click)=\"handleElementClick($event, element)\"\n *ngFor=\"let element of elements; index as i; trackBy: trackByElement\"\n [attr.disabled]=\"element.disabled || null\"\n [cTimeElement]=\"element\"\n [ngClass]=\"{'time-picker-roll-cell': true, selected: element.value === selected, disabled: element.disabled}\"\n [ngStyle]=\"{'width': 'fit-content'}\"\n role=\"button\"\n>\n {{element.label}}\n</div>\n", styles: [":host{display:block}:host .disabled{pointer-events:none}\n"] }]
87
87
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { disabled: [{
@@ -461,8 +461,8 @@ export class TimePickerComponent {
461
461
  }), takeUntilDestroyed(this.#destroyRef))
462
462
  .subscribe();
463
463
  }
464
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
465
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: TimePickerComponent, isStandalone: true, selector: "c-time-picker", inputs: { cleaner: "cleaner", dateTimeFormatOptions: "dateTimeFormatOptions", disabled: "disabled", filterHours: "filterHours", filterMinutes: "filterMinutes", filterSeconds: "filterSeconds", indicator: "indicator", inputReadOnly: "inputReadOnly", locale: "locale", placeholder: "placeholder", seconds: "seconds", size: "size", time: "time", variant: "variant", valid: "valid", visible: "visible" }, outputs: { timeChange: "timeChange" }, host: { listeners: { "blur": "onBlur()" } }, providers: [
464
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
465
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: TimePickerComponent, isStandalone: true, selector: "c-time-picker", inputs: { cleaner: "cleaner", dateTimeFormatOptions: "dateTimeFormatOptions", disabled: "disabled", filterHours: "filterHours", filterMinutes: "filterMinutes", filterSeconds: "filterSeconds", indicator: "indicator", inputReadOnly: "inputReadOnly", locale: "locale", placeholder: "placeholder", seconds: "seconds", size: "size", time: "time", variant: "variant", valid: "valid", visible: "visible" }, outputs: { timeChange: "timeChange" }, host: { listeners: { "blur": "onBlur()" } }, providers: [
466
466
  {
467
467
  provide: NG_VALUE_ACCESSOR,
468
468
  useExisting: forwardRef(() => TimePickerComponent),
@@ -470,7 +470,7 @@ export class TimePickerComponent {
470
470
  }
471
471
  ], queries: [{ propertyName: "contentTemplates", predicate: TemplateIdDirective, descendants: true }], viewQueries: [{ propertyName: "dropdownRef", first: true, predicate: DropdownComponent, descendants: true, read: ElementRef }], exportAs: ["cTimePicker"], usesOnChanges: true, ngImport: i0, template: "<div class=\"date-picker-timepickers\" *ngIf=\"variant==='select'\">\n <div class=\"picker time-picker\">\n <div [formGroup]=\"selectTime\" class=\"time-picker-body\" [ngClass]=\"timePickerClasses\">\n <span class=\"time-picker-inline-icon\"></span>\n <select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectHours\" (blur)=\"onBlur()\" [sizing]=\"size ?? ''\">\n <option *ngFor=\"let hour of listOfHours12; index as i; trackBy: trackByHour\" [ngValue]=\"hour.value\" [attr.disabled]=\"hour.disabled || null\">{{hour.label}}</option>\n </select>\n {{' :'}}<select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectMinutes\" (blur)=\"onBlur()\" [sizing]=\"size ?? ''\">\n <option *ngFor=\"let minute of listOfMinutes\" [ngValue]=\"minute.value\" [attr.disabled]=\"minute.disabled || null\">{{minute.label}}</option>\n </select>\n <ng-template [ngIf]=\"seconds\">\n {{' :'}}<select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectSeconds\" (blur)=\"onBlur()\" [sizing]=\"size ?? ''\">\n <option *ngFor=\"let second of listOfSeconds\" [ngValue]=\"second.value\" [attr.disabled]=\"second.disabled || null\">{{second.label}}</option>\n </select>\n </ng-template>\n <ng-template [ngIf]=\"hour12\">\n <select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectDayPeriod\" (blur)=\"onBlur()\" [sizing]=\"size ?? ''\">\n <option *ngFor=\"let dayPeriod of dayPeriods\" [ngValue]=\"dayPeriod.value\" class=\"time-picker-roll-cell\">{{dayPeriod.label}}</option>\n </select>\n </ng-template>\n </div>\n </div>\n</div>\n\n<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"time-picker picker\" [ngClass]=\"timePickerClasses\" *ngIf=\"variant==='roll'\" [visible]=\"visible\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\">\n <input (blur)=\"handleBlur($event);\"\n (change)=\"handleTimeInputChange($event)\"\n (focus)=\"handleFocus($event)\"\n [formControl]=\"timeInput\"\n [placeholder]=\"placeholder\"\n cFormControl\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.pattern]=\"hour12 ? '(((0[1-9])|(1[0-2])):([0-5])([0-9])\\\\s(A|P)M)' : '([01]?[0-9]|2[0-3]):[0-5][0-9]'\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon time-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && time && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon time-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu #dropdownMenu=\"cDropdownMenu\">\n <div class=\"time-picker-body time-picker-roll\" style=\"position: relative;\">\n <c-time-picker-roll-col\n [elements]=\"listOfHours12\"\n [selected]=\"hour\"\n (selectedChange)=\"handleSelectHoursChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n role=\"listbox\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-col\n [elements]=\"listOfMinutes\"\n [selected]=\"minute\"\n (selectedChange)=\"handleSelectMinutesChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n role=\"listbox\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-col\n *ngIf=\"seconds\"\n [elements]=\"listOfSeconds\"\n [selected]=\"second\"\n (selectedChange)=\"handleSelectSecondsChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n role=\"listbox\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-am-pm\n *ngIf=\"hour12\" [elements]=\"dayPeriods\"\n [selected]=\"dayPeriod\"\n (selectedChange)=\"handleSelectDayPeriodChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n role=\"listbox\"\n >\n </c-time-picker-roll-am-pm>\n </div>\n <div *ngIf=\"templates?.timePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.timePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n</c-dropdown>\n", styles: [".disabled{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: DropdownComponent, selector: "c-dropdown", inputs: ["alignment", "autoClose", "dark", "direction", "placement", "popper", "popperOptions", "variant", "visible"], outputs: ["visibleChange"], exportAs: ["cDropdown"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[cDropdownToggle]", inputs: ["dropdownComponent", "disabled", "caret", "split"], exportAs: ["cDropdownToggle"] }, { kind: "directive", type: DropdownMenuDirective, selector: "[cDropdownMenu]", inputs: ["alignment", "visible", "dark"], exportAs: ["cDropdownMenu"] }, { kind: "directive", type: FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "directive", type: FormSelectDirective, selector: "select[cSelect]", inputs: ["sizing", "valid"] }, { kind: "component", type: InputGroupComponent, selector: "c-input-group", inputs: ["sizing"] }, { kind: "directive", type: InputGroupTextDirective, selector: "[cInputGroupText]" }, { kind: "component", type: TimePickerRollColComponent, selector: "c-time-picker-roll-col", inputs: ["disabled", "elements", "onClick", "selected", "refresh"], outputs: ["selectedChange"], exportAs: ["cTimePickerRollCol"] }, { kind: "component", type: TimePickerRollAmPmComponent, selector: "c-time-picker-roll-am-pm", inputs: ["disabled", "elements", "onClick", "selected", "refresh"], outputs: ["selectedChange"] }] }); }
472
472
  }
473
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TimePickerComponent, decorators: [{
473
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TimePickerComponent, decorators: [{
474
474
  type: Component,
475
475
  args: [{ selector: 'c-time-picker', exportAs: 'cTimePicker', standalone: true, imports: [
476
476
  NgClass,
@@ -9,8 +9,8 @@ import { DayPeriodElementDirective, TimePickerRollAmPmComponent } from './time-p
9
9
  import { TimePickerComponent } from './time-picker.component';
10
10
  import * as i0 from "@angular/core";
11
11
  export class TimePickerModule {
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: TimePickerModule, imports: [CommonModule,
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.8", ngImport: i0, type: TimePickerModule, imports: [CommonModule,
14
14
  ReactiveFormsModule,
15
15
  FormModule,
16
16
  ButtonModule,
@@ -20,7 +20,7 @@ export class TimePickerModule {
20
20
  TimePickerComponent,
21
21
  TimePickerRollAmPmComponent,
22
22
  TimePickerRollColComponent], exports: [TimePickerComponent] }); }
23
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TimePickerModule, imports: [CommonModule,
23
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TimePickerModule, imports: [CommonModule,
24
24
  ReactiveFormsModule,
25
25
  FormModule,
26
26
  ButtonModule,
@@ -29,7 +29,7 @@ export class TimePickerModule {
29
29
  TimePickerRollAmPmComponent,
30
30
  TimePickerRollColComponent] }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TimePickerModule, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: TimePickerModule, decorators: [{
33
33
  type: NgModule,
34
34
  args: [{
35
35
  declarations: [],
@@ -1,4 +1,4 @@
1
- import { isValid } from 'date-fns';
1
+ import { isValidDate } from '../calendar/calendar.utils';
2
2
  export const getSupportedLocale = (locale = 'default') => {
3
3
  let supportedLocale;
4
4
  try {
@@ -39,7 +39,7 @@ export const convertTimeToDate = (time) => time ? (time instanceof Date ? new Da
39
39
  // }
40
40
  export const getAmPm = (date, locale, options = {}) => {
41
41
  const dayPeriods = getDayPeriods('en-US', options);
42
- const time = new Intl.DateTimeFormat('en-US', { timeStyle: "short", hour12: true }).format(date);
42
+ const time = new Intl.DateTimeFormat('en-US', { timeStyle: 'short', hour12: true }).format(date);
43
43
  const dayPeriod = dayPeriods.find(element => time.includes(element.label));
44
44
  return (dayPeriod?.value ?? (date.getHours() >= 12 ? 'pm' : 'am'));
45
45
  };
@@ -87,8 +87,8 @@ export const getListOfHours = (locale, options = {}) => {
87
87
  hour: '2-digit',
88
88
  hour12: hour12,
89
89
  minute: '2-digit',
90
- second: '2-digit',
91
- }).split(':')[0],
90
+ second: '2-digit'
91
+ }).split(':')[0]
92
92
  };
93
93
  });
94
94
  };
@@ -104,8 +104,8 @@ export const getListOfMinutes = (locale, options = {}, valueAsString = false) =>
104
104
  hour: '2-digit',
105
105
  hour12: false,
106
106
  minute: '2-digit',
107
- second: '2-digit',
108
- }).split(':')[1],
107
+ second: '2-digit'
108
+ }).split(':')[1]
109
109
  };
110
110
  });
111
111
  };
@@ -120,8 +120,8 @@ export const getListOfSeconds = (locale, options = {}, valueAsString = false) =>
120
120
  hour: '2-digit',
121
121
  hour12: false,
122
122
  minute: '2-digit',
123
- second: '2-digit',
124
- }).split(':')[2],
123
+ second: '2-digit'
124
+ }).split(':')[2]
125
125
  };
126
126
  });
127
127
  export const getSelectedHour = (date, locale) => date instanceof Date ? (isHour12(locale) ? convert24hTo12h(date.getHours()) : date.getHours()) : '';
@@ -132,15 +132,15 @@ export const getSelectedSeconds = (date) => (date ? date.getSeconds() : '');
132
132
  export const isAmPm = (locale = 'default') => {
133
133
  const supportedLocale = getSupportedLocale(locale);
134
134
  const date = new Date();
135
- const time = new Intl.DateTimeFormat(supportedLocale, { timeStyle: "short" }).format(date);
135
+ const time = new Intl.DateTimeFormat(supportedLocale, { timeStyle: 'short' }).format(date);
136
136
  const isAmPm = time.match(/(?:\p{L}\p{M}\p{P}*)+|(?:\p{L}\p{P}*)+/gu) ?? [];
137
137
  return isAmPm.length > 0;
138
138
  };
139
139
  export const isValidTime = (time) => {
140
140
  if (typeof time === 'string') {
141
- return isValid(time) || isValid(new Date(`1970-01-01 ${time}`));
141
+ return isValidDate(time) || isValidDate(new Date(`1970-01-01 ${time}`));
142
142
  }
143
- return isValid(time);
143
+ return isValidDate(time);
144
144
  // const d = new Date(`1970-01-01 ${time}`)
145
145
  // return d instanceof Date && d.getTime()
146
146
  };
@@ -166,7 +166,7 @@ export const getDayPeriods = (locale = 'default', options = {}) => {
166
166
  const supportedLocale = getSupportedLocale(locale);
167
167
  const dayPeriods = [
168
168
  { value: 'am', label: 'am' },
169
- { value: 'pm', label: 'pm' },
169
+ { value: 'pm', label: 'pm' }
170
170
  ];
171
171
  const hour12 = isHour12(supportedLocale);
172
172
  if (!hour12) {
@@ -642,4 +642,4 @@ export const getDayPeriods = (locale = 'default', options = {}) => {
642
642
  // };
643
643
  //
644
644
  // Object.keys(formats).forEach(lang => {const period = getDayPeriods(lang); if (period.am === 'AM') return; console.log(lang, period )})
645
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvdGltZS1waWNrZXIvdGltZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBZ0NuQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFNBQWlCLFNBQVMsRUFBRSxFQUFFO0lBQy9ELElBQUksZUFBdUIsQ0FBQztJQUM1QixJQUFJO1FBQ0YsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztLQUM5RjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsZUFBZSxHQUFHLFNBQVMsQ0FBQztLQUM3QjtJQUNELE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLFNBQWlCLFNBQVMsRUFBVyxFQUFFO0lBQzlELE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ25HLE9BQU8sTUFBTSxJQUFJLEtBQUssQ0FBQztBQUN6QixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFpQixFQUFFLElBQVksRUFBRSxFQUFFO0lBQ2pFLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO1FBQ2hDLE9BQU8sQ0FBQyxDQUFBO0tBQ1Q7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SUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE9BQU8sVUFBVSxDQUFDO0tBQ25CO0lBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqSCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztJQUN2RyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztJQUV2RyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRTtRQUNoRCxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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O0FBQzFCLDZCQUE2QjtBQUM3Qiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQiwyQkFBMkI7QUFDM0IsMEJBQTBCO0FBQzFCLDBCQUEwQjtBQUMxQiwwQkFBMEI7QUFDMUIsNEJBQTRCO0FBQzVCLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFDL0IsNEJBQTRCO0FBQzVCLCtCQUErQjtBQUMvQiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1QiwwQkFBMEI7QUFDMUIsMkJBQTJCO0FBQzNCLDRCQUE0QjtBQUM1QiwwQkFBMEI7QUFDMUIsNEJBQTRCO0FBQzVCLDBCQUEwQjtBQUMxQiwwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQiw0QkFBNEI7QUFDNUIsK0JBQStCO0FBQy9CLDBCQUEwQjtBQUMxQiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFDL0IsNkJBQTZCO0FBQzdCLDRCQUE0QjtBQUM1Qiw2QkFBNkI7QUFDN0IsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUM3QiwyQkFBMkI7QUFDM0IsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3QiwwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQix5QkFBeUI7QUFDekIsS0FBSztBQUNMLEVBQUU7QUFDRix5SUFBeUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1ZhbGlkIH0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lRm9ybWF0T3B0aW9ucyB7XG4gIGxvY2FsZU1hdGNoZXI/OiBcImJlc3QgZml0XCIgfCBcImxvb2t1cFwiIHwgdW5kZWZpbmVkO1xuICB3ZWVrZGF5PzogXCJsb25nXCIgfCBcInNob3J0XCIgfCBcIm5hcnJvd1wiIHwgdW5kZWZpbmVkO1xuICBlcmE/OiBcImxvbmdcIiB8IFwic2hvcnRcIiB8IFwibmFycm93XCIgfCB1bmRlZmluZWQ7XG4gIHllYXI/OiBcIm51bWVyaWNcIiB8IFwiMi1kaWdpdFwiIHwgdW5kZWZpbmVkO1xuICBtb250aD86IFwibnVtZXJpY1wiIHwgXCIyLWRpZ2l0XCIgfCBcImxvbmdcIiB8IFwic2hvcnRcIiB8IFwibmFycm93XCIgfCB1bmRlZmluZWQ7XG4gIGRheT86IFwibnVtZXJpY1wiIHwgXCIyLWRpZ2l0XCIgfCB1bmRlZmluZWQ7XG4gIGhvdXI/OiBcIm51bWVyaWNcIiB8IFwiMi1kaWdpdFwiIHwgdW5kZWZpbmVkO1xuICBtaW51dGU/OiBcIm51bWVyaWNcIiB8IFwiMi1kaWdpdFwiIHwgdW5kZWZpbmVkO1xuICBzZWNvbmQ/OiBcIm51bWVyaWNcIiB8IFwiMi1kaWdpdFwiIHwgdW5kZWZpbmVkO1xuICB0aW1lWm9uZU5hbWU/OiBcImxvbmdcIiB8IFwic2hvcnRcIiB8IHVuZGVmaW5lZDtcbiAgZm9ybWF0TWF0Y2hlcj86IFwiYmVzdCBmaXRcIiB8IFwiYmFzaWNcIiB8IHVuZGVmaW5lZDtcbiAgaG91cjEyPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgdGltZVpvbmU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCB0eXBlIERheVBlcmlvZCA9ICgnYW0nIHwgJ3BtJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRpbWVWYWx1ZSB7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRheVBlcmlvZD86IERheVBlcmlvZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEYXlQZXJpb2RzIHtcbiAgYW06IHN0cmluZztcbiAgcG06IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGdldFN1cHBvcnRlZExvY2FsZSA9IChsb2NhbGU6IHN0cmluZyA9ICdkZWZhdWx0JykgPT4ge1xuICBsZXQgc3VwcG9ydGVkTG9jYWxlOiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgc3VwcG9ydGVkTG9jYWxlID0gSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YobG9jYWxlKS5sZW5ndGggPyBsb2NhbGUgOiAnZGVmYXVsdCc7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBzdXBwb3J0ZWRMb2NhbGUgPSAnZGVmYXVsdCc7XG4gIH1cbiAgcmV0dXJuIHN1cHBvcnRlZExvY2FsZTtcbn1cblxuZXhwb3J0IGNvbnN0IGlzSG91cjEyID0gKGxvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xuICBjb25zdCBob3VyMTIgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KHN1cHBvcnRlZExvY2FsZSwge3RpbWVTdHlsZTogJ3Nob3J0J30pLnJlc29sdmVkT3B0aW9ucygpLmhvdXIxMjtcbiAgcmV0dXJuIGhvdXIxMiA/PyBmYWxzZTtcbn1cblxuZXhwb3J0IGNvbnN0IGNvbnZlcnQxMmhUbzI0aCA9IChhYmJyOiAnYW0nIHwgJ3BtJywgaG91cjogbnVtYmVyKSA9PiB7XG4gIGlmIChhYmJyID09PSAnYW0nICYmIGhvdXIgPT09IDEyKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuICBpZiAoYWJiciA9PT0gJ2FtJykge1xuICAgIHJldHVybiBob3VyXG4gIH1cbiAgaWYgKGFiYnIgPT09ICdwbScgJiYgaG91ciA9PT0gMTIpIHtcbiAgICByZXR1cm4gMTJcbiAgfVxuICByZXR1cm4gaG91ciArIDEyXG59XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0MjRoVG8xMmggPSAoaG91cjogbnVtYmVyKSA9PiBob3VyICUgMTIgfHwgMTJcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRUaW1lVG9EYXRlID0gKHRpbWU6IERhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSA9PlxuICB0aW1lID8gKHRpbWUgaW5zdGFuY2VvZiBEYXRlID8gbmV3IERhdGUodGltZSkgOiBuZXcgRGF0ZShgMTk3MC0wMS0wMSAke3RpbWV9YCkpIDogbnVsbFxuXG4vLyBleHBvcnQgY29uc3QgZ2V0QW1QbSA9IChkYXRlOiBEYXRlLCBsb2NhbGU6IHN0cmluZykgPT4ge1xuLy8gICBpZiAoZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcobG9jYWxlKS5pbmNsdWRlcygnQU0nKSkge1xuLy8gICAgIHJldHVybiAnYW0nXG4vLyAgIH1cbi8vICAgaWYgKGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSkuaW5jbHVkZXMoJ1BNJykpIHtcbi8vICAgICByZXR1cm4gJ3BtJ1xuLy8gICB9XG4vLyAgIHJldHVybiBkYXRlLmdldEhvdXJzKCkgPj0gMTIgPyAncG0nIDogJ2FtJ1xuLy8gfVxuXG5leHBvcnQgY29uc3QgZ2V0QW1QbSA9IChkYXRlOiBEYXRlLCBsb2NhbGU6IHN0cmluZywgb3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge30pOiBEYXlQZXJpb2QgPT4ge1xuXG4gIGNvbnN0IGRheVBlcmlvZHMgPSBnZXREYXlQZXJpb2RzKCdlbi1VUycsIG9wdGlvbnMpO1xuICBjb25zdCB0aW1lID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuLVVTJywge3RpbWVTdHlsZTogXCJzaG9ydFwiLCBob3VyMTI6IHRydWV9KS5mb3JtYXQoZGF0ZSk7XG5cbiAgY29uc3QgZGF5UGVyaW9kID0gZGF5UGVyaW9kcy5maW5kKGVsZW1lbnQgPT4gdGltZS5pbmNsdWRlcyhlbGVtZW50LmxhYmVsKSk7XG5cbiAgcmV0dXJuIDxEYXlQZXJpb2Q+KGRheVBlcmlvZD8udmFsdWUgPz8gKGRhdGUuZ2V0SG91cnMoKSA+PSAxMiA/ICdwbScgOiAnYW0nKSk7XG59XG5cbmV4cG9ydCBjb25zdCBpc0FtID0gKGRhdGU6IERhdGUpID0+IHtcbiAgcmV0dXJuIGRhdGUuZ2V0SG91cnMoKSA8IDEyO1xufVxuZXhwb3J0IGNvbnN0IGlzUG0gPSAoZGF0ZTogRGF0ZSkgPT4ge1xuICByZXR1cm4gZGF0ZS5nZXRIb3VycygpID4gMTE7XG59XG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkVGltZVpvbmUgPSAodGltZVpvbmU6IHVua25vd24pOiBib29sZWFuID0+IHtcbiAgdHJ5IHtcbiAgICBpZiAodGltZVpvbmUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghSW50bCB8fCAhSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RpbWUgem9uZXMgbm90IHN1cHBvcnRlZC4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRpbWVab25lICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRpbWVab25lIHR5cGUgc3BlY2lmaWVkOiAke3RpbWVab25lfWApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyB0aHJvd3MgYW4gZXJyb3IgaWYgdGltZXpvbmUgaXMgbm90IHZhbGlkXG4gICAgICBJbnRsLkRhdGVUaW1lRm9ybWF0KHVuZGVmaW5lZCwgeyB0aW1lWm9uZTogdGltZVpvbmUgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0aW1lWm9uZSBzdHJpbmcgc3BlY2lmaWVkOiAke3RpbWVab25lfWApO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihlcnJvcik7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGlzdE9mSG91cnMgPSAobG9jYWxlOiBzdHJpbmcsIG9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IGhvdXIxMiA9IGlzSG91cjEyKGxvY2FsZSk7XG4gIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSgwKTtcbiAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IDI0IH0sIChfLCBpKSA9PiB7XG4gICAgdGltZS5zZXRIb3VycyhpKTtcbiAgICBjb25zdCBkYXlQZXJpb2QgPSBnZXRBbVBtKHRpbWUsIGxvY2FsZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBpLFxuICAgICAgZGF5UGVyaW9kOiA8RGF5UGVyaW9kPmRheVBlcmlvZCxcbiAgICAgIGxhYmVsOiB0aW1lLnRvTG9jYWxlVGltZVN0cmluZyhsb2NhbGUsIHtcbiAgICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgICBob3VyMTI6IGhvdXIxMixcbiAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICAgIHNlY29uZDogJzItZGlnaXQnLFxuICAgICAgfSkuc3BsaXQoJzonKVswXSxcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCBnZXRMaXN0T2ZNaW51dGVzID0gKGxvY2FsZTogc3RyaW5nLCBvcHRpb25zOiBEYXRlVGltZUZvcm1hdE9wdGlvbnMgPSB7fSwgdmFsdWVBc1N0cmluZyA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSgwKTtcbiAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IDYwIH0sIChfLCBpKSA9PiB7XG4gICAgZC5zZXRNaW51dGVzKGkpXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBpLFxuICAgICAgLy8gdmFsdWU6IHZhbHVlQXNTdHJpbmcgPyBpLnRvU3RyaW5nKCkgOiBpLFxuICAgICAgbGFiZWw6IGQudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSwge1xuICAgICAgICAvLyAuLi5vcHRpb25zLFxuICAgICAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgICAgIGhvdXIxMjogZmFsc2UsXG4gICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0JyxcbiAgICAgIH0pLnNwbGl0KCc6JylbMV0sXG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgY29uc3QgZ2V0TGlzdE9mU2Vjb25kcyA9IChsb2NhbGU6IHN0cmluZywgb3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge30sICB2YWx1ZUFzU3RyaW5nID0gZmFsc2UpID0+XG4gIEFycmF5LmZyb20oeyBsZW5ndGg6IDYwIH0sIChfLCBpKSA9PiB7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKDApXG4gICAgZC5zZXRTZWNvbmRzKGkpXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBpLFxuICAgICAgLy8gdmFsdWU6IHZhbHVlQXNTdHJpbmcgPyBpLnRvU3RyaW5nKCkgOiBpLFxuICAgICAgbGFiZWw6IGQudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSwge1xuICAgICAgICAvLyAuLi5vcHRpb25zLFxuICAgICAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgICAgIGhvdXIxMjogZmFsc2UsXG4gICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0JyxcbiAgICAgIH0pLnNwbGl0KCc6JylbMl0sXG4gICAgfVxuICB9KVxuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRIb3VyID0gKGRhdGU6IERhdGUgfCBudWxsLCBsb2NhbGU6IHN0cmluZykgPT5cbiAgZGF0ZSBpbnN0YW5jZW9mIERhdGUgPyAoaXNIb3VyMTIobG9jYWxlKSA/IGNvbnZlcnQyNGhUbzEyaChkYXRlLmdldEhvdXJzKCkpIDogZGF0ZS5nZXRIb3VycygpKSA6ICcnO1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRNaW51dGVzID0gKGRhdGU6IERhdGUgfCBudWxsKSA9PiAoZGF0ZSA/IGRhdGUuZ2V0TWludXRlcygpIDogJycpXG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZFNlY29uZHMgPSAoZGF0ZTogRGF0ZSB8IG51bGwpID0+IChkYXRlID8gZGF0ZS5nZXRTZWNvbmRzKCkgOiAnJylcblxuLy8gZXhwb3J0IGNvbnN0IGlzQW1QbSA9IChsb2NhbGU6IHN0cmluZykgPT5cbi8vICAgWydhbScsICdBTScsICdwbScsICdQTSddLnNvbWUoKGVsKSA9PiBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKGxvY2FsZSkuaW5jbHVkZXMoZWwpKVxuXG5leHBvcnQgY29uc3QgaXNBbVBtID0gKGxvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnKSA9PiB7XG4gIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgY29uc3QgdGltZSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHN1cHBvcnRlZExvY2FsZSwge3RpbWVTdHlsZTogXCJzaG9ydFwifSkuZm9ybWF0KGRhdGUpO1xuICBjb25zdCBpc0FtUG0gPSB0aW1lLm1hdGNoKC8oPzpcXHB7TH1cXHB7TX1cXHB7UH0qKSt8KD86XFxwe0x9XFxwe1B9KikrL2d1KSA/PyBbXTtcbiAgcmV0dXJuIGlzQW1QbS5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgY29uc3QgaXNWYWxpZFRpbWUgPSAodGltZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlciB8IGFueSkgPT4ge1xuICBpZiAodHlwZW9mIHRpbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGlzVmFsaWQodGltZSkgfHwgaXNWYWxpZChuZXcgRGF0ZShgMTk3MC0wMS0wMSAke3RpbWV9YCkpO1xuICB9XG4gIHJldHVybiBpc1ZhbGlkKHRpbWUpO1xuICAvLyBjb25zdCBkID0gbmV3IERhdGUoYDE5NzAtMDEtMDEgJHt0aW1lfWApXG4gIC8vIHJldHVybiBkIGluc3RhbmNlb2YgRGF0ZSAmJiBkLmdldFRpbWUoKVxufVxuXG4vLyBleHBvcnQgY29uc3QgX2dldERheVBlcmlvZHMgPSAobG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCcsIG9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9KSA9PiB7XG4vLyAgIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xuLy9cbi8vICAgY29uc3QgZGF5UGVyaW9kcyA9IHsgYW06ICdhbScsIHBtOiAncG0nIH07XG4vL1xuLy8gICBjb25zdCBob3VyMTIgPSBpc0hvdXIxMihzdXBwb3J0ZWRMb2NhbGUpO1xuLy8gICBpZiAoIWhvdXIxMikge1xuLy8gICAgIHJldHVybiBkYXlQZXJpb2RzO1xuLy8gICB9XG4vL1xuLy8gICBjb25zdCBhbSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5NzAsIDAsIDEsIDAsIDAsIDApKTtcbi8vICAgY29uc3QgcG0gPSBuZXcgRGF0ZShEYXRlLlVUQygxOTcwLCAwLCAxLCAxMywgMCwgMCkpO1xuLy9cbi8vICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoc3VwcG9ydGVkTG9jYWxlLCB7IGhvdXIxMjogaG91cjEyLCBob3VyOiAnbnVtZXJpYycsIHRpbWVab25lOiAnVVRDJyB9KTtcbi8vICAgZGF5UGVyaW9kcy5hbSA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKGFtKS5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAnZGF5UGVyaW9kJyk/LnZhbHVlID8/ICdhbSc7XG4vLyAgIGRheVBlcmlvZHMucG0gPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cyhwbSkuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ2RheVBlcmlvZCcpPy52YWx1ZSA/PyAncG0nXG4vLyAgIHJldHVybiBkYXlQZXJpb2RzO1xuLy8gfTtcblxuZXhwb3J0IGNvbnN0IGdldERheVBlcmlvZHMgPSAobG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCcsIG9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xuXG4gIGNvbnN0IGRheVBlcmlvZHMgPSBbXG4gICAgeyB2YWx1ZTogJ2FtJywgbGFiZWw6ICdhbScgfSxcbiAgICB7IHZhbHVlOiAncG0nLCBsYWJlbDogJ3BtJyB9LFxuICBdO1xuXG4gIGNvbnN0IGhvdXIxMiA9IGlzSG91cjEyKHN1cHBvcnRlZExvY2FsZSk7XG4gIGlmICghaG91cjEyKSB7XG4gICAgcmV0dXJuIGRheVBlcmlvZHM7XG4gIH1cblxuICBjb25zdCBhbSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5NzAsIDAsIDEsIDAsIDAsIDApKTtcbiAgY29uc3QgcG0gPSBuZXcgRGF0ZShEYXRlLlVUQygxOTcwLCAwLCAxLCAxMywgMCwgMCkpO1xuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChzdXBwb3J0ZWRMb2NhbGUsIHsgaG91cjEyOiBob3VyMTIsIGhvdXI6ICdudW1lcmljJywgdGltZVpvbmU6ICdVVEMnIH0pO1xuICBjb25zdCBmb3JtYXR0ZWRBbSA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKGFtKS5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAnZGF5UGVyaW9kJyk/LnZhbHVlID8/ICdhbSc7XG4gIGNvbnN0IGZvcm1hdHRlZFBtID0gZm9ybWF0dGVyLmZvcm1hdFRvUGFydHMocG0pLmZpbmQocGFydCA9PiBwYXJ0LnR5cGUgPT09ICdkYXlQZXJpb2QnKT8udmFsdWUgPz8gJ3BtJztcblxuICBkYXlQZXJpb2RzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4LCBkYXlQZXJpb2RzKSA9PiB7XG4gICAgZGF5UGVyaW9kc1tpbmRleF0ubGFiZWwgPSBlbGVtZW50LnZhbHVlID09PSAnYW0nID8gKGZvcm1hdHRlZEFtID8/ICdhbScpIDogKGZvcm1hdHRlZFBtID8/ICdwbScpO1xuICB9KVxuXG4gIHJldHVybiBkYXlQZXJpb2RzO1xufTtcblxuXG5cbi8vIHRlc3Rpbmdcbi8vIGNvbnN0IGxhbmdzID0gW1xuLy8gICBbJ0Fia2hhemlhbicsICdhYiddLFxuLy8gICBbJ0FmYXInLCAnYWEnXSxcbi8vICAgWydBZnJpa2FhbnMnLCAnYWYnXSxcbi8vICAgWydBa2FuJywgJ2FrJ10sXG4vLyAgIFsnQWxiYW5pYW4nLCAnc3EnXSxcbi8vICAgWydBbWhhcmljJywgJ2FtJ10sXG4vLyAgIFsnQXJhYmljJywgJ2FyJ10sXG4vLyAgIFsnQXJhZ29uZXNlJywgJ2FuJ10sXG4vLyAgIFsnQXJnZW50aW5hJywgJ2VzLWFyJ10sXG4vLyAgIFsnQXJtZW5pYW4nLCAnaHknXSxcbi8vICAgWydBc3NhbWVzZScsICdhcyddLFxuLy8gICBbJ0F2YXJpYycsICdhdiddLFxuLy8gICBbJ0F2ZXN0YW4nLCAnYWUnXSxcbi8vICAgWydBeW1hcmEnLCAnYXknXSxcbi8vICAgWydBemVyYmFpamFuaScsICdheiddLFxuLy8gICBbJ0JhbWJhcmEnLCAnYm0nXSxcbi8vICAgWydCYXNoa2lyJywgJ2JhJ10sXG4vLyAgIFsnQmFzcXVlJywgJ2V1J10sXG4vLyAgIFsnQmVsYXJ1c2lhbicsICdiZSddLFxuLy8gICBbJ0JlbmdhbGkgKEJhbmdsYSknLCAnYm4nXSxcbi8vICAgWydCaWhhcmknLCAnYmgnXSxcbi8vICAgWydCaXNsYW1hJywgJ2JpJ10sXG4vLyAgIFsnQm9zbmlhbicsICdicyddLFxuLy8gICBbJ0JyZXRvbicsICdiciddLFxuLy8gICBbJ0J1bGdhcmlhbicsICdiZyddLFxuLy8gICBbJ0J1cm1lc2UnLCAnbXknXSxcbi8vICAgWydDYXRhbGFuJywgJ2NhJ10sXG4vLyAgIFsnQ2hhbW9ycm8nLCAnY2gnXSxcbi8vICAgWydDaGVjaGVuJywgJ2NlJ10sXG4vLyAgIFsnQ2hpY2hld2EsIENoZXdhLCBOeWFuamEnLCAnbnknXSxcbi8vICAgWydDaGluZXNlJywgJ3poJ10sXG4vLyAgIFsnQ2hpbmVzZSAoU2ltcGxpZmllZCknLCAnemgtSGFucyddLFxuLy8gICBbJ0NoaW5lc2UgKFRyYWRpdGlvbmFsKScsICd6aC1IYW50J10sXG4vLyAgIFsnQ2h1dmFzaCcsICdjdiddLFxuLy8gICBbJ0Nvcm5pc2gnLCAna3cnXSxcbi8vICAgWydDb3JzaWNhbicsICdjbyddLFxuLy8gICBbJ0NyZWUnLCAnY3InXSxcbi8vICAgWydDcm9hdGlhbicsICdociddLFxuLy8gICBbJ0N6ZWNoJywgJ2NzJ10sXG4vLyAgIFsnRGFuaXNoJywgJ2RhJ10sXG4vLyAgIFsnRGl2ZWhpLCBEaGl2ZWhpLCBNYWxkaXZpYW4nLCAnZHYnXSxcbi8vICAgWydEdXRjaCcsICdubCddLFxuLy8gICBbJ0R6b25na2hhJywgJ2R6J10sXG4vLyAgIFsnRW5nbGlzaCcsICdlbiddLFxuLy8gICBbJ0VzcGVyYW50bycsICdlbyddLFxuLy8gICBbJ0VzdG9uaWFuJywgJ2V0J10sXG4vLyAgIFsnRXdlJywgJ2VlJ10sXG4vLyAgIFsnRmFyb2VzZScsICdmbyddLFxuLy8gICBbJ0ZpamlhbicsICdmaiddLFxuLy8gICBbJ0Zpbm5pc2gnLCAnZmknXSxcbi8vICAgWydGcmVuY2gnLCAnZnInXSxcbi8vICAgWydGdWxhLCBGdWxhaCwgUHVsYWFyLCBQdWxhcicsICdmZiddLFxuLy8gICBbJ0dhbGljaWFuJywgJ2dsJ10sXG4vLyAgIFsnR2FlbGljIChTY290dGlzaCknLCAnZ2QnXSxcbi8vICAgWydHYWVsaWMgKE1hbngpJywgJ2d2J10sXG4vLyAgIFsnR2VvcmdpYW4nLCAna2EnXSxcbi8vICAgWydHZXJtYW4nLCAnZGUnXSxcbi8vICAgWydHcmVlaycsICdlbCddLFxuLy8gICBbJ0dyZWVubGFuZGljJywgJ2tsJ10sXG4vLyAgIFsnR3VhcmFuaScsICdnbiddLFxuLy8gICBbJ0d1amFyYXRpJywgJ2d1J10sXG4vLyAgIFsnSGFpdGlhbiBDcmVvbGUnLCAnaHQnXSxcbi8vICAgWydIYXVzYScsICdoYSddLFxuLy8gICBbJ0hlYnJldycsICdoZSddLFxuLy8gICBbJ0hlcmVybycsICdoeiddLFxuLy8gICBbJ0hpbmRpJywgJ2hpJ10sXG4vLyAgIFsnSGlyaSBNb3R1JywgJ2hvJ10sXG4vLyAgIFsnSHVuZ2FyaWFuJywgJ2h1J10sXG4vLyAgIFsnSWNlbGFuZGljJywgJ2lzJ10sXG4vLyAgIFsnSWRvJywgJ2lvJ10sXG4vLyAgIFsnSWdibycsICdpZyddLFxuLy8gICBbJ0luZG9uZXNpYW4nLCAnaWQnLCAnaW4nXSxcbi8vICAgWydJbnRlcmxpbmd1YScsICdpYSddLFxuLy8gICBbJ0ludGVybGluZ3VlJywgJ2llJ10sXG4vLyAgIFsnSW51a3RpdHV0JywgJ2l1J10sXG4vLyAgIFsnSW51cGlhaycsICdpayddLFxuLy8gICBbJ0lyaXNoJywgJ2dhJ10sXG4vLyAgIFsnSXRhbGlhbicsICdpdCddLFxuLy8gICBbJ0phcGFuZXNlJywgJ2phJ10sXG4vLyAgIFsnSmF2YW5lc2UnLCAnanYnXSxcbi8vICAgWydLYWxhYWxsaXN1dCwgR3JlZW5sYW5kaWMnLCAna2wnXSxcbi8vICAgWydLYW5uYWRhJywgJ2tuJ10sXG4vLyAgIFsnS2FudXJpJywgJ2tyJ10sXG4vLyAgIFsnS2FzaG1pcmknLCAna3MnXSxcbi8vICAgWydLYXpha2gnLCAna2snXSxcbi8vICAgWydLaG1lcicsICdrbSddLFxuLy8gICBbJ0tpa3V5dScsICdraSddLFxuLy8gICBbJ0tpbnlhcndhbmRhIChSd2FuZGEpJywgJ3J3J10sXG4vLyAgIFsnS2lydW5kaScsICdybiddLFxuLy8gICBbJ0t5cmd5eicsICdreSddLFxuLy8gICBbJ0tvbWknLCAna3YnXSxcbi8vICAgWydLb25nbycsICdrZyddLFxuLy8gICBbJ0tvcmVhbicsICdrbyddLFxuLy8gICBbJ0t1cmRpc2gnLCAna3UnXSxcbi8vICAgWydLd2FueWFtYScsICdraiddLFxuLy8gICBbJ0xhbycsICdsbyddLFxuLy8gICBbJ0xhdGluJywgJ2xhJ10sXG4vLyAgIFsnTGF0dmlhbiAoTGV0dGlzaCknLCAnbHYnXSxcbi8vICAgWydMaW1idXJnaXNoIChMaW1idXJnZXIpJywgJ2xpJ10sXG4vLyAgIFsnTGluZ2FsYScsICdsbiddLFxuLy8gICBbJ0xpdGh1YW5pYW4nLCAnbHQnXSxcbi8vICAgWydMdWdhLUthdGFuZ2EnLCAnbHUnXSxcbi8vICAgWydMdWdhbmRhLCBHYW5kYScsICdsZyddLFxuLy8gICBbJ0x1eGVtYm91cmdpc2gnLCAnbGInXSxcbi8vICAgWydNYW54JywgJ2d2J10sXG4vLyAgIFsnTWFjZWRvbmlhbicsICdtayddLFxuLy8gICBbJ01hbGFnYXN5JywgJ21nJ10sXG4vLyAgIFsnTWFsYXknLCAnbXMnXSxcbi8vICAgWydNYWxheWFsYW0nLCAnbWwnXSxcbi8vICAgWydNYWx0ZXNlJywgJ210J10sXG4vLyAgIFsnTWFvcmknLCAnbWknXSxcbi8vICAgWydNYXJhdGhpJywgJ21yJ10sXG4vLyAgIFsnTWFyc2hhbGxlc2UnLCAnbWgnXSxcbi8vICAgWydNb2xkYXZpYW4nLCAnbW8nXSxcbi8vICAgWydNb25nb2xpYW4nLCAnbW4nXSxcbi8vICAgWydOYXVydScsICduYSddLFxuLy8gICBbJ05hdmFqbycsICdudiddLFxuLy8gICBbJ05kb25nYScsICduZyddLFxuLy8gICBbJ05vcnRoZXJuIE5kZWJlbGUnLCAnbmQnXSxcbi8vICAgWydOZXBhbGknLCAnbmUnXSxcbi8vICAgWydOb3J3ZWdpYW4nLCAnbm8nXSxcbi8vICAgWydOb3J3ZWdpYW4gYm9rbcOlbCcsICduYiddLFxuLy8gICBbJ05vcndlZ2lhbiBueW5vcnNrJywgJ25uJ10sXG4vLyAgIFsnTnVvc3UnLCAnaWknXSxcbi8vICAgWydPY2NpdGFuJywgJ29jJ10sXG4vLyAgIFsnT2ppYndlJywgJ29qJ10sXG4vLyAgIFsnT2xkIENodXJjaCBTbGF2b25pYywgT2xkIEJ1bGdhcmlhbicsICdjdSddLFxuLy8gICBbJ09yaXlhJywgJ29yJ10sXG4vLyAgIFsnT3JvbW8gKEFmYWFuIE9yb21vKScsICdvbSddLFxuLy8gICBbJ09zc2V0aWFuJywgJ29zJ10sXG4vLyAgIFsnUMSBbGknLCAncGknXSxcbi8vICAgWydQYXNodG8sIFB1c2h0bycsICdwcyddLFxuLy8gICBbJ1BlcnNpYW4gKEZhcnNpKScsICdmYSddLFxuLy8gICBbJ1BvbGlzaCcsICdwbCddLFxuLy8gICBbJ1BvcnR1Z3Vlc2UnLCAncHQnXSxcbi8vICAgWydQdW5qYWJpIChFYXN0ZXJuKScsICdwYSddLFxuLy8gICBbJ1F1ZWNodWEnLCAncXUnXSxcbi8vICAgWydSb21hbnNoJywgJ3JtJ10sXG4vLyAgIFsnUm9tYW5pYW4nLCAncm8nXSxcbi8vICAgWydSdXNzaWFuJywgJ3J1J10sXG4vLyAgIFsnU2FtaScsICdzZSddLFxuLy8gICBbJ1NhbW9hbicsICdzbSddLFxuLy8gICBbJ1NhbmdvJywgJ3NnJ10sXG4vLyAgIFsnU2Fuc2tyaXQnLCAnc2EnXSxcbi8vICAgWydTZXJiaWFuJywgJ3NyJ10sXG4vLyAgIFsnU2VyYm8tQ3JvYXRpYW4nLCAnc2gnXSxcbi8vICAgWydTZXNvdGhvJywgJ3N0J10sXG4vLyAgIFsnU2V0c3dhbmEnLCAndG4nXSxcbi8vICAgWydTaG9uYScsICdzbiddLFxuLy8gICBbJ1NpY2h1YW4gWWknLCAnaWknXSxcbi8vICAgWydTaW5kaGknLCAnc2QnXSxcbi8vICAgWydTaW5oYWxlc2UnLCAnc2knXSxcbi8vICAgWydTaXN3YXRpJywgJ3NzJ10sXG4vLyAgIFsnU2xvdmFrJywgJ3NrJ10sXG4vLyAgIFsnU2xvdmVuaWFuJywgJ3NsJ10sXG4vLyAgIFsnU29tYWxpJywgJ3NvJ10sXG4vLyAgIFsnU291dGhlcm4gTmRlYmVsZScsICduciddLFxuLy8gICBbJ1NwYW5pc2gnLCAnZXMnXSxcbi8vICAgWydTdW5kYW5lc2UnLCAnc3UnXSxcbi8vICAgWydTd2FoaWxpIChLaXN3YWhpbGkpJywgJ3N3J10sXG4vLyAgIFsnU3dhdGknLCAnc3MnXSxcbi8vICAgWydTd2VkaXNoJywgJ3N2J10sXG4vLyAgIFsnVGFnYWxvZycsICd0bCddLFxuLy8gICBbJ1RhaGl0aWFuJywgJ3R5J10sXG4vLyAgIFsnVGFqaWsnLCAndGcnXSxcbi8vICAgWydUYW1pbCcsICd0YSddLFxuLy8gICBbJ1RhdGFyJywgJ3R0J10sXG4vLyAgIFsnVGVsdWd1JywgJ3RlJ10sXG4vLyAgIFsnVGhhaScsICd0aCddLFxuLy8gICBbJ1RpYmV0YW4nLCAnYm8nXSxcbi8vICAgWydUaWdyaW55YScsICd0aSddLFxuLy8gICBbJ1RvbmdhJywgJ3RvJ10sXG4vLyAgIFsnVHNvbmdhJywgJ3RzJ10sXG4vLyAgIFsnVHVya2lzaCcsICd0ciddLFxuLy8gICBbJ1R1cmttZW4nLCAndGsnXSxcbi8vICAgWydUd2knLCAndHcnXSxcbi8vICAgWydVeWdodXInLCAndWcnXSxcbi8vICAgWydVa3JhaW5pYW4nLCAndWsnXSxcbi8vICAgWydVcmR1JywgJ3VyJ10sXG4vLyAgIFsnVXpiZWsnLCAndXonXSxcbi8vICAgWydWZW5kYScsICd2ZSddLFxuLy8gICBbJ1ZpZXRuYW1lc2UnLCAndmknXSxcbi8vICAgWydWb2xhcMO8aycsICd2byddLFxuLy8gICBbJ1dhbGxvbicsICd3YSddLFxuLy8gICBbJ1dlbHNoJywgJ2N5J10sXG4vLyAgIFsnV29sb2YnLCAnd28nXSxcbi8vICAgWydXZXN0ZXJuIEZyaXNpYW4nLCAnZnknXSxcbi8vICAgWydYaG9zYScsICd4aCddLFxuLy8gICBbJ1lpZGRpc2gnLCAneWknLCAnamknXSxcbi8vICAgWydZb3J1YmEnLCAneW8nXSxcbi8vICAgWydaaHVhbmcsIENodWFuZycsICd6YSddLFxuLy8gICBbJ1p1bHUnLCAnenUnXSxcbi8vIF1cbi8vXG4vLyBsYW5ncy5mb3JFYWNoKGxhbmcgPT4ge2NvbnN0IHBlcmlvZCA9IGdldERheVBlcmlvZHMobGFuZ1sxXSk7IGlmIChwZXJpb2QuYW0gPT09ICdBTScpIHJldHVybjsgY29uc29sZS5sb2cobGFuZ1sxXSwgcGVyaW9kICl9KVxuXG5cbi8vIENocm9tZSAvIE9wZXJhXG4vLyBBbWhhcmljIGFtIHthbTogJ+GMpeGLi+GJtScsIHBtOiAn4Yqo4Yiw4YuT4Ym1J31cbi8vIEFyYWJpYyBhciB7YW06ICfYtScsIHBtOiAn2YUnfVxuLy8gQnVsZ2FyaWFuIGJnIHthbTogJ9C/0YAu0L7QsS4nLCBwbTogJ9GB0Lsu0L7QsS4nfVxuLy8gQ2hpbmVzZSAoVHJhZGl0aW9uYWwpIHpoLUhhbnQge2FtOiAn5LiK5Y2IJywgcG06ICfkuIvljYgnfVxuLy8gR3JlZWsgZWwge2FtOiAnz4AuzrwuJywgcG06ICfOvC7OvC4nfVxuLy8gSGluZGkgaGkge2FtOiAnYW0nLCBwbTogJ3BtJ31cbi8vIEthbm5hZGEga24ge2FtOiAn4LKq4LOC4LKw4LON4LK14LK+4LK54LON4LKoJywgcG06ICfgsoXgsqrgsrDgsr7gsrngs43gsqgnfVxuLy8gS29yZWFuIGtvIHthbTogJ+yYpOyghCcsIHBtOiAn7Jik7ZuEJ31cbi8vIE1hbGF5IG1zIHthbTogJ1BHJywgcG06ICdQVEcnfVxuLy8gVGFtaWwgdGEge2FtOiAn4K6u4K+B4K6x4K+N4K6q4K6V4K6y4K+NJywgcG06ICfgrqrgrr/grrHgr43grqrgrpXgrrLgr40nfVxuXG4vLyBFZGdlIENocm9taXVtXG4vLyBBbGJhbmlhbiBzcSB7YW06ICdlIHBhcmFkaXRlcycsIHBtOiAnZSBwYXNkaXRlcyd9XG4vLyBBbWhhcmljIGFtIHthbTogJ+GMpeGLi+GJtScsIHBtOiAn4Yqo4Yiw4YuT4Ym1J31cbi8vIEFyYWJpYyBhciB7YW06ICfYtScsIHBtOiAn2YUnfVxuLy8gQnVsZ2FyaWFuIGJnIHthbTogJ9C/0YAu0L7QsS4nLCBwbTogJ9GB0Lsu0L7QsS4nfVxuLy8gQ2hpbmVzZSAoVHJhZGl0aW9uYWwpIHpoLUhhbnQge2FtOiAn5LiK5Y2IJywgcG06ICfkuIvljYgnfVxuLy8gR3JlZWsgZWwge2FtOiAnz4AuzrwuJywgcG06ICfOvC7OvC4nfVxuLy8gSGluZGkgaGkge2FtOiAnYW0nLCBwbTogJ3BtJ31cbi8vIEthbm5hZGEga24ge2FtOiAn4LKq4LOC4LKw4LON4LK14LK+4LK54LON4LKoJywgcG06ICfgsoXgsqrgsrDgsr7gsrngs43gsqgnfVxuLy8gS29yZWFuIGtvIHthbTogJ+yYpOyghCcsIHBtOiAn7Jik7ZuEJ31cbi8vIE1hbGF5IG1zIHthbTogJ1BHJywgcG06ICdQVEcnfVxuLy8gUHVuamFiaSAoRWFzdGVybikgcGEge2FtOiAn4Kiq4KmCLuCopuCpgS4nLCBwbTogJ+CorOCovi7gqKbgqYEuJ31cbi8vIFNpbmRoaSBzZCB7YW06ICfYtdio2K3YjCDZhdmG2KzZh9mG2K8nLCBwbTogJ9mF2YbYrNmH2YbYr9iMINi02KfZhSd9XG4vLyBUYW1pbCB0YSB7YW06ICfgrq7gr4HgrrHgr43grqrgrpXgrrLgr40nLCBwbTogJ+CuquCuv+CuseCvjeCuquCuleCusuCvjSd9XG5cblxuLy8gRmlyZWZveFxuLy8gQWthbiBhayB7IGFtOiBcIkFOXCIsIHBtOiBcIkVXXCIgfVxuLy8gQWxiYW5pYW4gc3EgeyBhbTogXCJlIHBhcmFkaXRlc1wiLCBwbTogXCJlIHBhc2RpdGVzXCIgfVxuLy8gQW1oYXJpYyBhbSB7IGFtOiBcIuGMpeGLi+GJtVwiLCBwbTogXCLhiqjhiLDhi5PhibVcIiB9XG4vLyBBcmFiaWMgYXIgeyBhbTogXCLYtVwiLCBwbTogXCLZhVwiIH1cbi8vIEFzc2FtZXNlIGFzIHsgYW06IFwi4Kaq4KeC4Kew4KeN4Kas4Ka+4Ka54KeN4KaoXCIsIHBtOiBcIuCmheCmquCnsOCmvuCmueCnjeCmqFwiIH1cbi8vIEJ1bGdhcmlhbiBiZyB7IGFtOiBcItC/0YAu0L7QsS5cIiwgcG06IFwi0YHQuy7QvtCxLlwiIH1cbi8vIENoaW5lc2UgKFRyYWRpdGlvbmFsKSB6aC1IYW50IHsgYW06IFwi5LiK5Y2IXCIsIHBtOiBcIuS4i+WNiFwiIH1cbi8vIER6b25na2hhIGR6IHsgYW06IFwi4L2m4L6U4LyL4L2G4LyLXCIsIHBtOiBcIuC9leC+seC9suC8i+C9huC8i1wiIH1cbi8vIEV3ZSBlZSB7IGFtOiBcIsWLZGlcIiwgcG06IFwiyaNldHLJlFwiIH1cbi8vIEdyZWVrIGVsIHsgYW06IFwiz4AuzrwuXCIsIHBtOiBcIs68Ls68LlwiIH1cbi8vIEhpbmRpIGhpIHsgYW06IFwiYW1cIiwgcG06IFwicG1cIiB9XG4vLyBLYW5uYWRhIGtuIHsgYW06IFwi4LKq4LOC4LKw4LON4LK14LK+4LK54LON4LKoXCIsIHBtOiBcIuCyheCyquCysOCyvuCyueCzjeCyqFwiIH1cbi8vIEtvcmVhbiBrbyB7IGFtOiBcIuyYpOyghFwiLCBwbTogXCLsmKTtm4RcIiB9XG4vLyBNYWxheSBtcyB7IGFtOiBcIlBHXCIsIHBtOiBcIlBUR1wiIH1cbi8vIE9yb21vIChBZmFhbiBPcm9tbykgb20geyBhbTogXCJXRFwiLCBwbTogXCJXQlwiIH1cbi8vIFB1bmphYmkgKEVhc3Rlcm4pIHBhIHsgYW06IFwi4Kiq4KmCLuCopuCpgS5cIiwgcG06IFwi4Kis4Ki+LuCopuCpgS5cIiB9XG4vLyBTYW5za3JpdCBzYSB7IGFtOiBcIuCkquClguCksOCljeCkteCkvuCkueCljeCkqFwiLCBwbTogXCLgpIXgpKrgpLDgpL7gpLngpY3gpKhcIiB9XG4vLyBTaW5kaGkgc2QgeyBhbTogXCLYtdio2K3YjCDZhdmG2KzZh9mG2K9cIiwgcG06IFwi2YXZhtis2YfZhtiv2Iwg2LTYp9mFXCIgfVxuLy8gU29tYWxpIHNvIHsgYW06IFwiR0hcIiwgcG06IFwiR0RcIiB9XG4vLyBUYW1pbCB0YSB7IGFtOiBcIuCuruCvgeCuseCvjeCuquCuleCusuCvjVwiLCBwbTogXCLgrqrgrr/grrHgr43grqrgrpXgrrLgr41cIiB9XG4vLyBUaWdyaW55YSB0aSB7IGFtOiBcIuGJhS7hiYAuXCIsIHBtOiBcIuGLtS7hiYAuXCIgfVxuLy8gVG9uZ2EgdG8geyBhbTogXCJoZW5naWhlbmdpXCIsIHBtOiBcImVmaWFmaVwiIH1cbi8vIFR3aSB0dyB7IGFtOiBcIkFOXCIsIHBtOiBcIkVXXCIgfVxuXG5cblxuLy8gY29uc3QgZm9ybWF0cyA9IHtcbi8vICAgXCJhci1TQVwiIDogXCJkZC9NTS95eVwiLFxuLy8gICBcImJnLUJHXCIgOiBcImRkLk0ueXl5eVwiLFxuLy8gICBcImNhLUVTXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJ6aC1UV1wiIDogXCJ5eXl5L00vZFwiLFxuLy8gICBcImNzLUNaXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwiZGEtREtcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImRlLURFXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJlbC1HUlwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcImVuLVVTXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwiZmktRklcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJmci1GUlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiaGUtSUxcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImh1LUhVXCIgOiBcInl5eXkuIE1NLiBkZC5cIixcbi8vICAgXCJpcy1JU1wiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcIml0LUlUXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJqYS1KUFwiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwia28tS1JcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcIm5sLU5MXCIgOiBcImQtTS15eXl5XCIsXG4vLyAgIFwibmItTk9cIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcInBsLVBMXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJwdC1CUlwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcInJvLVJPXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJydS1SVVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiaHItSFJcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJzay1TS1wiIDogXCJkLiBNLiB5eXl5XCIsXG4vLyAgIFwic3EtQUxcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcInN2LVNFXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJ0aC1USFwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcInRyLVRSXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJ1ci1QS1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiaWQtSURcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInVrLVVBXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJiZS1CWVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwic2wtU0lcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJldC1FRVwiIDogXCJkLk1NLnl5eXlcIixcbi8vICAgXCJsdi1MVlwiIDogXCJ5eXl5Lk1NLmRkLlwiLFxuLy8gICBcImx0LUxUXCIgOiBcInl5eXkuTU0uZGRcIixcbi8vICAgXCJmYS1JUlwiIDogXCJNTS9kZC95eXl5XCIsXG4vLyAgIFwidmktVk5cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImh5LUFNXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJhei1MYXRuLUFaXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJldS1FU1wiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwibWstTUtcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImFmLVpBXCIgOiBcInl5eXkvTU0vZGRcIixcbi8vICAgXCJrYS1HRVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiZm8tRk9cIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImhpLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJtcy1NWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwia2stS1pcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImt5LUtHXCIgOiBcImRkLk1NLnl5XCIsXG4vLyAgIFwic3ctS0VcIiA6IFwiTS9kL3l5eXlcIixcbi8vICAgXCJ1ei1MYXRuLVVaXCIgOiBcImRkL01NIHl5eXlcIixcbi8vICAgXCJ0dC1SVVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwicGEtSU5cIiA6IFwiZGQtTU0teXlcIixcbi8vICAgXCJndS1JTlwiIDogXCJkZC1NTS15eVwiLFxuLy8gICBcInRhLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJ0ZS1JTlwiIDogXCJkZC1NTS15eVwiLFxuLy8gICBcImtuLUlOXCIgOiBcImRkLU1NLXl5XCIsXG4vLyAgIFwibXItSU5cIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcInNhLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJtbi1NTlwiIDogXCJ5eS5NTS5kZFwiLFxuLy8gICBcImdsLUVTXCIgOiBcImRkL01NL3l5XCIsXG4vLyAgIFwia29rLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJzeXItU1lcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImR2LU1WXCIgOiBcImRkL01NL3l5XCIsXG4vLyAgIFwiYXItSVFcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInpoLUNOXCIgOiBcInl5eXkvTS9kXCIsXG4vLyAgIFwiZGUtQ0hcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImVuLUdCXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1NWFwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZnItQkVcIiA6IFwiZC9NTS95eXl5XCIsXG4vLyAgIFwiaXQtQ0hcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcIm5sLUJFXCIgOiBcImQvTU0veXl5eVwiLFxuLy8gICBcIm5uLU5PXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJwdC1QVFwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwic3ItTGF0bi1DU1wiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcInN2LUZJXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwiYXotQ3lybC1BWlwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwibXMtQk5cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInV6LUN5cmwtVVpcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImFyLUVHXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJ6aC1IS1wiIDogXCJkL00veXl5eVwiLFxuLy8gICBcImRlLUFUXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJlbi1BVVwiIDogXCJkL01NL3l5eXlcIixcbi8vICAgXCJlcy1FU1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZnItQ0FcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcInNyLUN5cmwtQ1NcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJhci1MWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiemgtU0dcIiA6IFwiZC9NL3l5eXlcIixcbi8vICAgXCJkZS1MVVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiZW4tQ0FcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLUdUXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJmci1DSFwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiYXItRFpcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcInpoLU1PXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwiZGUtTElcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImVuLU5aXCIgOiBcImQvTU0veXl5eVwiLFxuLy8gICBcImVzLUNSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJmci1MVVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYXItTUFcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImVuLUlFXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1QQVwiIDogXCJNTS9kZC95eXl5XCIsXG4vLyAgIFwiZnItTUNcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFyLVROXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJlbi1aQVwiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwiZXMtRE9cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFyLU9NXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlbi1KTVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtVkVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFyLVlFXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlbi0wMjlcIiA6IFwiTU0vZGQveXl5eVwiLFxuLy8gICBcImVzLUNPXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1TWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZW4tQlpcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVBFXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1KT1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZW4tVFRcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLUFSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1MQlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZW4tWldcIiA6IFwiTS9kL3l5eXlcIixcbi8vICAgXCJlcy1FQ1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYXItS1dcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVuLVBIXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwiZXMtQ0xcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImFyLUFFXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1VWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYXItQkhcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVBZXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1RQVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtQk9cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVNWXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1ITlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtTklcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVBSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhbS1FVFwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcInR6bS1MYXRuLURaXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJpdS1MYXRuLUNBXCIgOiBcImQvTU0veXl5eVwiLFxuLy8gICBcInNtYS1OT1wiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwibW4tTW9uZy1DTlwiIDogXCJ5eXl5L00vZFwiLFxuLy8gICBcImdkLUdCXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlbi1NWVwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcInBycy1BRlwiIDogXCJkZC9NTS95eVwiLFxuLy8gICBcImJuLUJEXCIgOiBcImRkLU1NLXl5XCIsXG4vLyAgIFwid28tU05cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInJ3LVJXXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwicXV0LUdUXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJzYWgtUlVcIiA6IFwiTU0uZGQueXl5eVwiLFxuLy8gICBcImdzdy1GUlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiY28tRlJcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcIm9jLUZSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJtaS1OWlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZ2EtSUVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInNlLVNFXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJici1GUlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwic21uLUZJXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwibW9oLUNBXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwiYXJuLUNMXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJpaS1DTlwiIDogXCJ5eXl5L00vZFwiLFxuLy8gICBcImRzYi1ERVwiIDogXCJkLiBNLiB5eXl5XCIsXG4vLyAgIFwiaWctTkdcIiA6IFwiZC9NL3l5eXlcIixcbi8vICAgXCJrbC1HTFwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwibGItTFVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImJhLVJVXCIgOiBcImRkLk1NLnl5XCIsXG4vLyAgIFwibnNvLVpBXCIgOiBcInl5eXkvTU0vZGRcIixcbi8vICAgXCJxdXotQk9cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInlvLU5HXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwiaGEtTGF0bi1OR1wiIDogXCJkL00veXl5eVwiLFxuLy8gICBcImZpbC1QSFwiIDogXCJNL2QveXl5eVwiLFxuLy8gICBcInBzLUFGXCIgOiBcImRkL01NL3l5XCIsXG4vLyAgIFwiZnktTkxcIiA6IFwiZC1NLXl5eXlcIixcbi8vICAgXCJuZS1OUFwiIDogXCJNL2QveXl5eVwiLFxuLy8gICBcInNlLU5PXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJpdS1DYW5zLUNBXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwic3ItTGF0bi1SU1wiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcInNpLUxLXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJzci1DeXJsLVJTXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwibG8tTEFcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImttLUtIXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJjeS1HQlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYm8tQ05cIiA6IFwieXl5eS9NL2RcIixcbi8vICAgXCJzbXMtRklcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJhcy1JTlwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwibWwtSU5cIiA6IFwiZGQtTU0teXlcIixcbi8vICAgXCJlbi1JTlwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwib3ItSU5cIiA6IFwiZGQtTU0teXlcIixcbi8vICAgXCJibi1JTlwiIDogXCJkZC1NTS15eVwiLFxuLy8gICBcInRrLVRNXCIgOiBcImRkLk1NLnl5XCIsXG4vLyAgIFwiYnMtTGF0bi1CQVwiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcIm10LU1UXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJzci1DeXJsLU1FXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwic2UtRklcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJ6dS1aQVwiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwieGgtWkFcIiA6IFwieXl5eS9NTS9kZFwiLFxuLy8gICBcInRuLVpBXCIgOiBcInl5eXkvTU0vZGRcIixcbi8vICAgXCJoc2ItREVcIiA6IFwiZC4gTS4geXl5eVwiLFxuLy8gICBcImJzLUN5cmwtQkFcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJ0Zy1DeXJsLVRKXCIgOiBcImRkLk1NLnl5XCIsXG4vLyAgIFwic3ItTGF0bi1CQVwiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcInNtai1OT1wiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwicm0tQ0hcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInNtai1TRVwiIDogXCJ5eXl5LU1NLWRkXCIsXG4vLyAgIFwicXV6LUVDXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJxdXotUEVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImhyLUJBXCIgOiBcImQuTS55eXl5LlwiLFxuLy8gICBcInNyLUxhdG4tTUVcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJzbWEtU0VcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcImVuLVNHXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwidWctQ05cIiA6IFwieXl5eS1NLWRcIixcbi8vICAgXCJzci1DeXJsLUJBXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwiZXMtVVNcIiA6IFwiTS9kL3l5eXlcIlxuLy8gfTtcbi8vXG4vLyBPYmplY3Qua2V5cyhmb3JtYXRzKS5mb3JFYWNoKGxhbmcgPT4ge2NvbnN0IHBlcmlvZCA9IGdldERheVBlcmlvZHMobGFuZyk7IGlmIChwZXJpb2QuYW0gPT09ICdBTScpIHJldHVybjsgY29uc29sZS5sb2cobGFuZywgcGVyaW9kICl9KVxuIl19
645
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvdGltZS1waWNrZXIvdGltZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFnQ3pELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsU0FBaUIsU0FBUyxFQUFFLEVBQUU7SUFDL0QsSUFBSSxlQUF1QixDQUFDO0lBQzVCLElBQUk7UUFDRixlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0tBQzlGO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixlQUFlLEdBQUcsU0FBUyxDQUFDO0tBQzdCO0lBQ0QsT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsU0FBaUIsU0FBUyxFQUFXLEVBQUU7SUFDOUQsTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDckcsT0FBTyxNQUFNLElBQUksS0FBSyxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLElBQWlCLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDakUsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUU7UUFDaEMsT0FBTyxDQUFDLENBQUM7S0FD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LDRCQUE0QjtBQUM1QiwwQkFBMEI7QUFDMUIsNEJBQTRCO0FBQzVCLDJCQUEyQjtBQUMzQiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsNkJBQTZCO0FBQzdCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsMEJBQTBCO0FBQzFCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsMEJBQTBCO0FBQzFCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsMEJBQTBCO0FBQzFCLGtDQUFrQztBQUNsQyxnQ0FBZ0M7QUFDaEMsNkJBQTZCO0FBQzdCLCtCQUErQjtBQUMvQiw0QkFBNEI7QUFDNUIsMEJBQTBCO0FBQzFCLDJCQUEyQjtBQUMzQiwwQkFBMEI7QUFDMUIsNEJBQTRCO0FBQzVCLDBCQUEwQjtBQUMxQiw2QkFBNkI7QUFDN0IsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUM3Qiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1QiwyQkFBMkI7QUFDM0IsMkJBQTJCO0FBQzNCLDZCQUE2QjtBQUM3QiwwQkFBMEI7QUFDMUIsNkJBQTZCO0FBQzdCLDBCQUEwQjtBQUMxQiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDBCQUEwQjtBQUMxQiw2QkFBNkI7QUFDN0IsNkJBQTZCO0FBQzdCLDBCQUEwQjtBQUMxQiwrQkFBK0I7QUFDL0IsMkJBQTJCO0FBQzNCLDBCQUEwQjtBQUMxQiwwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCLDRCQUE0QjtBQUM1QiwrQkFBK0I7QUFDL0IsK0JBQStCO0FBQy9CLDRCQUE0QjtBQUM1QiwrQkFBK0I7QUFDL0IsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsMEJBQTBCO0FBQzFCLDJCQUEyQjtBQUMzQiw0QkFBNEI7QUFDNUIsMEJBQTBCO0FBQzFCLDRCQUE0QjtBQUM1QiwwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCLDBCQUEwQjtBQUMxQiwrQkFBK0I7QUFDL0IsNEJBQTRCO0FBQzVCLCtCQUErQjtBQUMvQiwwQkFBMEI7QUFDMUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsNkJBQTZCO0FBQzdCLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFDL0IsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3Qiw0QkFBNEI7QUFDNUIsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUM3Qiw2QkFBNkI7QUFDN0IsMkJBQTJCO0FBQzNCLCtCQUErQjtBQUMvQiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLDBCQUEwQjtBQUMxQiwrQkFBK0I7QUFDL0IseUJBQXlCO0FBQ3pCLEtBQUs7QUFDTCxFQUFFO0FBQ0YseUlBQXlJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNWYWxpZERhdGUgfSBmcm9tICcuLi9jYWxlbmRhci9jYWxlbmRhci51dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVRpbWVGb3JtYXRPcHRpb25zIHtcbiAgbG9jYWxlTWF0Y2hlcj86ICdiZXN0IGZpdCcgfCAnbG9va3VwJyB8IHVuZGVmaW5lZDtcbiAgd2Vla2RheT86ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93JyB8IHVuZGVmaW5lZDtcbiAgZXJhPzogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnIHwgdW5kZWZpbmVkO1xuICB5ZWFyPzogJ251bWVyaWMnIHwgJzItZGlnaXQnIHwgdW5kZWZpbmVkO1xuICBtb250aD86ICdudW1lcmljJyB8ICcyLWRpZ2l0JyB8ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93JyB8IHVuZGVmaW5lZDtcbiAgZGF5PzogJ251bWVyaWMnIHwgJzItZGlnaXQnIHwgdW5kZWZpbmVkO1xuICBob3VyPzogJ251bWVyaWMnIHwgJzItZGlnaXQnIHwgdW5kZWZpbmVkO1xuICBtaW51dGU/OiAnbnVtZXJpYycgfCAnMi1kaWdpdCcgfCB1bmRlZmluZWQ7XG4gIHNlY29uZD86ICdudW1lcmljJyB8ICcyLWRpZ2l0JyB8IHVuZGVmaW5lZDtcbiAgdGltZVpvbmVOYW1lPzogJ2xvbmcnIHwgJ3Nob3J0JyB8IHVuZGVmaW5lZDtcbiAgZm9ybWF0TWF0Y2hlcj86ICdiZXN0IGZpdCcgfCAnYmFzaWMnIHwgdW5kZWZpbmVkO1xuICBob3VyMTI/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICB0aW1lWm9uZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IHR5cGUgRGF5UGVyaW9kID0gKCdhbScgfCAncG0nKTtcblxuZXhwb3J0IGludGVyZmFjZSBJVGltZVZhbHVlIHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgZGF5UGVyaW9kPzogRGF5UGVyaW9kO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURheVBlcmlvZHMge1xuICBhbTogc3RyaW5nO1xuICBwbTogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0U3VwcG9ydGVkTG9jYWxlID0gKGxvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnKSA9PiB7XG4gIGxldCBzdXBwb3J0ZWRMb2NhbGU6IHN0cmluZztcbiAgdHJ5IHtcbiAgICBzdXBwb3J0ZWRMb2NhbGUgPSBJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGUpLmxlbmd0aCA/IGxvY2FsZSA6ICdkZWZhdWx0JztcbiAgfSBjYXRjaCAoZSkge1xuICAgIHN1cHBvcnRlZExvY2FsZSA9ICdkZWZhdWx0JztcbiAgfVxuICByZXR1cm4gc3VwcG9ydGVkTG9jYWxlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSG91cjEyID0gKGxvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xuICBjb25zdCBob3VyMTIgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KHN1cHBvcnRlZExvY2FsZSwgeyB0aW1lU3R5bGU6ICdzaG9ydCcgfSkucmVzb2x2ZWRPcHRpb25zKCkuaG91cjEyO1xuICByZXR1cm4gaG91cjEyID8/IGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnQxMmhUbzI0aCA9IChhYmJyOiAnYW0nIHwgJ3BtJywgaG91cjogbnVtYmVyKSA9PiB7XG4gIGlmIChhYmJyID09PSAnYW0nICYmIGhvdXIgPT09IDEyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgaWYgKGFiYnIgPT09ICdhbScpIHtcbiAgICByZXR1cm4gaG91cjtcbiAgfVxuICBpZiAoYWJiciA9PT0gJ3BtJyAmJiBob3VyID09PSAxMikge1xuICAgIHJldHVybiAxMjtcbiAgfVxuICByZXR1cm4gaG91ciArIDEyO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnQyNGhUbzEyaCA9IChob3VyOiBudW1iZXIpID0+IGhvdXIgJSAxMiB8fCAxMjtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRUaW1lVG9EYXRlID0gKHRpbWU6IERhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSA9PlxuICB0aW1lID8gKHRpbWUgaW5zdGFuY2VvZiBEYXRlID8gbmV3IERhdGUodGltZSkgOiBuZXcgRGF0ZShgMTk3MC0wMS0wMSAke3RpbWV9YCkpIDogbnVsbDtcblxuLy8gZXhwb3J0IGNvbnN0IGdldEFtUG0gPSAoZGF0ZTogRGF0ZSwgbG9jYWxlOiBzdHJpbmcpID0+IHtcbi8vICAgaWYgKGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSkuaW5jbHVkZXMoJ0FNJykpIHtcbi8vICAgICByZXR1cm4gJ2FtJ1xuLy8gICB9XG4vLyAgIGlmIChkYXRlLnRvTG9jYWxlVGltZVN0cmluZyhsb2NhbGUpLmluY2x1ZGVzKCdQTScpKSB7XG4vLyAgICAgcmV0dXJuICdwbSdcbi8vICAgfVxuLy8gICByZXR1cm4gZGF0ZS5nZXRIb3VycygpID49IDEyID8gJ3BtJyA6ICdhbSdcbi8vIH1cblxuZXhwb3J0IGNvbnN0IGdldEFtUG0gPSAoZGF0ZTogRGF0ZSwgbG9jYWxlOiBzdHJpbmcsIG9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9KTogRGF5UGVyaW9kID0+IHtcblxuICBjb25zdCBkYXlQZXJpb2RzID0gZ2V0RGF5UGVyaW9kcygnZW4tVVMnLCBvcHRpb25zKTtcbiAgY29uc3QgdGltZSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCdlbi1VUycsIHsgdGltZVN0eWxlOiAnc2hvcnQnLCBob3VyMTI6IHRydWUgfSkuZm9ybWF0KGRhdGUpO1xuXG4gIGNvbnN0IGRheVBlcmlvZCA9IGRheVBlcmlvZHMuZmluZChlbGVtZW50ID0+IHRpbWUuaW5jbHVkZXMoZWxlbWVudC5sYWJlbCkpO1xuXG4gIHJldHVybiA8RGF5UGVyaW9kPihkYXlQZXJpb2Q/LnZhbHVlID8/IChkYXRlLmdldEhvdXJzKCkgPj0gMTIgPyAncG0nIDogJ2FtJykpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQW0gPSAoZGF0ZTogRGF0ZSkgPT4ge1xuICByZXR1cm4gZGF0ZS5nZXRIb3VycygpIDwgMTI7XG59O1xuZXhwb3J0IGNvbnN0IGlzUG0gPSAoZGF0ZTogRGF0ZSkgPT4ge1xuICByZXR1cm4gZGF0ZS5nZXRIb3VycygpID4gMTE7XG59O1xuXG5leHBvcnQgY29uc3QgaXNWYWxpZFRpbWVab25lID0gKHRpbWVab25lOiB1bmtub3duKTogYm9vbGVhbiA9PiB7XG4gIHRyeSB7XG4gICAgaWYgKHRpbWVab25lID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIUludGwgfHwgIUludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaW1lIHpvbmVzIG5vdCBzdXBwb3J0ZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aW1lWm9uZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0aW1lWm9uZSB0eXBlIHNwZWNpZmllZDogJHt0aW1lWm9uZX1gKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gdGhyb3dzIGFuIGVycm9yIGlmIHRpbWV6b25lIGlzIG5vdCB2YWxpZFxuICAgICAgSW50bC5EYXRlVGltZUZvcm1hdCh1bmRlZmluZWQsIHsgdGltZVpvbmU6IHRpbWVab25lIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGltZVpvbmUgc3RyaW5nIHNwZWNpZmllZDogJHt0aW1lWm9uZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLndhcm4oZXJyb3IpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldExpc3RPZkhvdXJzID0gKGxvY2FsZTogc3RyaW5nLCBvcHRpb25zOiBEYXRlVGltZUZvcm1hdE9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCBob3VyMTIgPSBpc0hvdXIxMihsb2NhbGUpO1xuICBjb25zdCB0aW1lID0gbmV3IERhdGUoMCk7XG4gIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiAyNCB9LCAoXywgaSkgPT4ge1xuICAgIHRpbWUuc2V0SG91cnMoaSk7XG4gICAgY29uc3QgZGF5UGVyaW9kID0gZ2V0QW1QbSh0aW1lLCBsb2NhbGUpO1xuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogaSxcbiAgICAgIGRheVBlcmlvZDogPERheVBlcmlvZD5kYXlQZXJpb2QsXG4gICAgICBsYWJlbDogdGltZS50b0xvY2FsZVRpbWVTdHJpbmcobG9jYWxlLCB7XG4gICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcbiAgICAgICAgaG91cjEyOiBob3VyMTIsXG4gICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0J1xuICAgICAgfSkuc3BsaXQoJzonKVswXVxuICAgIH07XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExpc3RPZk1pbnV0ZXMgPSAobG9jYWxlOiBzdHJpbmcsIG9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9LCB2YWx1ZUFzU3RyaW5nID0gZmFsc2UpID0+IHtcbiAgY29uc3QgZCA9IG5ldyBEYXRlKDApO1xuICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogNjAgfSwgKF8sIGkpID0+IHtcbiAgICBkLnNldE1pbnV0ZXMoaSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBpLFxuICAgICAgLy8gdmFsdWU6IHZhbHVlQXNTdHJpbmcgPyBpLnRvU3RyaW5nKCkgOiBpLFxuICAgICAgbGFiZWw6IGQudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSwge1xuICAgICAgICAvLyAuLi5vcHRpb25zLFxuICAgICAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgICAgIGhvdXIxMjogZmFsc2UsXG4gICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0J1xuICAgICAgfSkuc3BsaXQoJzonKVsxXVxuICAgIH07XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExpc3RPZlNlY29uZHMgPSAobG9jYWxlOiBzdHJpbmcsIG9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9LCB2YWx1ZUFzU3RyaW5nID0gZmFsc2UpID0+XG4gIEFycmF5LmZyb20oeyBsZW5ndGg6IDYwIH0sIChfLCBpKSA9PiB7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKDApO1xuICAgIGQuc2V0U2Vjb25kcyhpKTtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IGksXG4gICAgICAvLyB2YWx1ZTogdmFsdWVBc1N0cmluZyA/IGkudG9TdHJpbmcoKSA6IGksXG4gICAgICBsYWJlbDogZC50b0xvY2FsZVRpbWVTdHJpbmcobG9jYWxlLCB7XG4gICAgICAgIC8vIC4uLm9wdGlvbnMsXG4gICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcbiAgICAgICAgaG91cjEyOiBmYWxzZSxcbiAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICAgIHNlY29uZDogJzItZGlnaXQnXG4gICAgICB9KS5zcGxpdCgnOicpWzJdXG4gICAgfTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZEhvdXIgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIGxvY2FsZTogc3RyaW5nKSA9PlxuICBkYXRlIGluc3RhbmNlb2YgRGF0ZSA/IChpc0hvdXIxMihsb2NhbGUpID8gY29udmVydDI0aFRvMTJoKGRhdGUuZ2V0SG91cnMoKSkgOiBkYXRlLmdldEhvdXJzKCkpIDogJyc7XG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZE1pbnV0ZXMgPSAoZGF0ZTogRGF0ZSB8IG51bGwpID0+IChkYXRlID8gZGF0ZS5nZXRNaW51dGVzKCkgOiAnJyk7XG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZFNlY29uZHMgPSAoZGF0ZTogRGF0ZSB8IG51bGwpID0+IChkYXRlID8gZGF0ZS5nZXRTZWNvbmRzKCkgOiAnJyk7XG5cbi8vIGV4cG9ydCBjb25zdCBpc0FtUG0gPSAobG9jYWxlOiBzdHJpbmcpID0+XG4vLyAgIFsnYW0nLCAnQU0nLCAncG0nLCAnUE0nXS5zb21lKChlbCkgPT4gbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZyhsb2NhbGUpLmluY2x1ZGVzKGVsKSlcblxuZXhwb3J0IGNvbnN0IGlzQW1QbSA9IChsb2NhbGU6IHN0cmluZyA9ICdkZWZhdWx0JykgPT4ge1xuICBjb25zdCBzdXBwb3J0ZWRMb2NhbGUgPSBnZXRTdXBwb3J0ZWRMb2NhbGUobG9jYWxlKTtcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IHRpbWUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChzdXBwb3J0ZWRMb2NhbGUsIHsgdGltZVN0eWxlOiAnc2hvcnQnIH0pLmZvcm1hdChkYXRlKTtcbiAgY29uc3QgaXNBbVBtID0gdGltZS5tYXRjaCgvKD86XFxwe0x9XFxwe019XFxwe1B9KikrfCg/OlxccHtMfVxccHtQfSopKy9ndSkgPz8gW107XG4gIHJldHVybiBpc0FtUG0ubGVuZ3RoID4gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkVGltZSA9ICh0aW1lOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyIHwgYW55KSA9PiB7XG4gIGlmICh0eXBlb2YgdGltZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gaXNWYWxpZERhdGUodGltZSkgfHwgaXNWYWxpZERhdGUobmV3IERhdGUoYDE5NzAtMDEtMDEgJHt0aW1lfWApKTtcbiAgfVxuICByZXR1cm4gaXNWYWxpZERhdGUodGltZSk7XG4gIC8vIGNvbnN0IGQgPSBuZXcgRGF0ZShgMTk3MC0wMS0wMSAke3RpbWV9YClcbiAgLy8gcmV0dXJuIGQgaW5zdGFuY2VvZiBEYXRlICYmIGQuZ2V0VGltZSgpXG59O1xuXG4vLyBleHBvcnQgY29uc3QgX2dldERheVBlcmlvZHMgPSAobG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCcsIG9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9KSA9PiB7XG4vLyAgIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xuLy9cbi8vICAgY29uc3QgZGF5UGVyaW9kcyA9IHsgYW06ICdhbScsIHBtOiAncG0nIH07XG4vL1xuLy8gICBjb25zdCBob3VyMTIgPSBpc0hvdXIxMihzdXBwb3J0ZWRMb2NhbGUpO1xuLy8gICBpZiAoIWhvdXIxMikge1xuLy8gICAgIHJldHVybiBkYXlQZXJpb2RzO1xuLy8gICB9XG4vL1xuLy8gICBjb25zdCBhbSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5NzAsIDAsIDEsIDAsIDAsIDApKTtcbi8vICAgY29uc3QgcG0gPSBuZXcgRGF0ZShEYXRlLlVUQygxOTcwLCAwLCAxLCAxMywgMCwgMCkpO1xuLy9cbi8vICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoc3VwcG9ydGVkTG9jYWxlLCB7IGhvdXIxMjogaG91cjEyLCBob3VyOiAnbnVtZXJpYycsIHRpbWVab25lOiAnVVRDJyB9KTtcbi8vICAgZGF5UGVyaW9kcy5hbSA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKGFtKS5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAnZGF5UGVyaW9kJyk/LnZhbHVlID8/ICdhbSc7XG4vLyAgIGRheVBlcmlvZHMucG0gPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cyhwbSkuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ2RheVBlcmlvZCcpPy52YWx1ZSA/PyAncG0nXG4vLyAgIHJldHVybiBkYXlQZXJpb2RzO1xuLy8gfTtcblxuZXhwb3J0IGNvbnN0IGdldERheVBlcmlvZHMgPSAobG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCcsIG9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xuXG4gIGNvbnN0IGRheVBlcmlvZHMgPSBbXG4gICAgeyB2YWx1ZTogJ2FtJywgbGFiZWw6ICdhbScgfSxcbiAgICB7IHZhbHVlOiAncG0nLCBsYWJlbDogJ3BtJyB9XG4gIF07XG5cbiAgY29uc3QgaG91cjEyID0gaXNIb3VyMTIoc3VwcG9ydGVkTG9jYWxlKTtcbiAgaWYgKCFob3VyMTIpIHtcbiAgICByZXR1cm4gZGF5UGVyaW9kcztcbiAgfVxuXG4gIGNvbnN0IGFtID0gbmV3IERhdGUoRGF0ZS5VVEMoMTk3MCwgMCwgMSwgMCwgMCwgMCkpO1xuICBjb25zdCBwbSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5NzAsIDAsIDEsIDEzLCAwLCAwKSk7XG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHN1cHBvcnRlZExvY2FsZSwgeyBob3VyMTI6IGhvdXIxMiwgaG91cjogJ251bWVyaWMnLCB0aW1lWm9uZTogJ1VUQycgfSk7XG4gIGNvbnN0IGZvcm1hdHRlZEFtID0gZm9ybWF0dGVyLmZvcm1hdFRvUGFydHMoYW0pLmZpbmQocGFydCA9PiBwYXJ0LnR5cGUgPT09ICdkYXlQZXJpb2QnKT8udmFsdWUgPz8gJ2FtJztcbiAgY29uc3QgZm9ybWF0dGVkUG0gPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cyhwbSkuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ2RheVBlcmlvZCcpPy52YWx1ZSA/PyAncG0nO1xuXG4gIGRheVBlcmlvZHMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgsIGRheVBlcmlvZHMpID0+IHtcbiAgICBkYXlQZXJpb2RzW2luZGV4XS5sYWJlbCA9IGVsZW1lbnQudmFsdWUgPT09ICdhbScgPyAoZm9ybWF0dGVkQW0gPz8gJ2FtJykgOiAoZm9ybWF0dGVkUG0gPz8gJ3BtJyk7XG4gIH0pO1xuXG4gIHJldHVybiBkYXlQZXJpb2RzO1xufTtcblxuLy8gdGVzdGluZ1xuLy8gY29uc3QgbGFuZ3MgPSBbXG4vLyAgIFsnQWJraGF6aWFuJywgJ2FiJ10sXG4vLyAgIFsnQWZhcicsICdhYSddLFxuLy8gICBbJ0FmcmlrYWFucycsICdhZiddLFxuLy8gICBbJ0FrYW4nLCAnYWsnXSxcbi8vICAgWydBbGJhbmlhbicsICdzcSddLFxuLy8gICBbJ0FtaGFyaWMnLCAnYW0nXSxcbi8vICAgWydBcmFiaWMnLCAnYXInXSxcbi8vICAgWydBcmFnb25lc2UnLCAnYW4nXSxcbi8vICAgWydBcmdlbnRpbmEnLCAnZXMtYXInXSxcbi8vICAgWydBcm1lbmlhbicsICdoeSddLFxuLy8gICBbJ0Fzc2FtZXNlJywgJ2FzJ10sXG4vLyAgIFsnQXZhcmljJywgJ2F2J10sXG4vLyAgIFsnQXZlc3RhbicsICdhZSddLFxuLy8gICBbJ0F5bWFyYScsICdheSddLFxuLy8gICBbJ0F6ZXJiYWlqYW5pJywgJ2F6J10sXG4vLyAgIFsnQmFtYmFyYScsICdibSddLFxuLy8gICBbJ0Jhc2hraXInLCAnYmEnXSxcbi8vICAgWydCYXNxdWUnLCAnZXUnXSxcbi8vICAgWydCZWxhcnVzaWFuJywgJ2JlJ10sXG4vLyAgIFsnQmVuZ2FsaSAoQmFuZ2xhKScsICdibiddLFxuLy8gICBbJ0JpaGFyaScsICdiaCddLFxuLy8gICBbJ0Jpc2xhbWEnLCAnYmknXSxcbi8vICAgWydCb3NuaWFuJywgJ2JzJ10sXG4vLyAgIFsnQnJldG9uJywgJ2JyJ10sXG4vLyAgIFsnQnVsZ2FyaWFuJywgJ2JnJ10sXG4vLyAgIFsnQnVybWVzZScsICdteSddLFxuLy8gICBbJ0NhdGFsYW4nLCAnY2EnXSxcbi8vICAgWydDaGFtb3JybycsICdjaCddLFxuLy8gICBbJ0NoZWNoZW4nLCAnY2UnXSxcbi8vICAgWydDaGljaGV3YSwgQ2hld2EsIE55YW5qYScsICdueSddLFxuLy8gICBbJ0NoaW5lc2UnLCAnemgnXSxcbi8vICAgWydDaGluZXNlIChTaW1wbGlmaWVkKScsICd6aC1IYW5zJ10sXG4vLyAgIFsnQ2hpbmVzZSAoVHJhZGl0aW9uYWwpJywgJ3poLUhhbnQnXSxcbi8vICAgWydDaHV2YXNoJywgJ2N2J10sXG4vLyAgIFsnQ29ybmlzaCcsICdrdyddLFxuLy8gICBbJ0NvcnNpY2FuJywgJ2NvJ10sXG4vLyAgIFsnQ3JlZScsICdjciddLFxuLy8gICBbJ0Nyb2F0aWFuJywgJ2hyJ10sXG4vLyAgIFsnQ3plY2gnLCAnY3MnXSxcbi8vICAgWydEYW5pc2gnLCAnZGEnXSxcbi8vICAgWydEaXZlaGksIERoaXZlaGksIE1hbGRpdmlhbicsICdkdiddLFxuLy8gICBbJ0R1dGNoJywgJ25sJ10sXG4vLyAgIFsnRHpvbmdraGEnLCAnZHonXSxcbi8vICAgWydFbmdsaXNoJywgJ2VuJ10sXG4vLyAgIFsnRXNwZXJhbnRvJywgJ2VvJ10sXG4vLyAgIFsnRXN0b25pYW4nLCAnZXQnXSxcbi8vICAgWydFd2UnLCAnZWUnXSxcbi8vICAgWydGYXJvZXNlJywgJ2ZvJ10sXG4vLyAgIFsnRmlqaWFuJywgJ2ZqJ10sXG4vLyAgIFsnRmlubmlzaCcsICdmaSddLFxuLy8gICBbJ0ZyZW5jaCcsICdmciddLFxuLy8gICBbJ0Z1bGEsIEZ1bGFoLCBQdWxhYXIsIFB1bGFyJywgJ2ZmJ10sXG4vLyAgIFsnR2FsaWNpYW4nLCAnZ2wnXSxcbi8vICAgWydHYWVsaWMgKFNjb3R0aXNoKScsICdnZCddLFxuLy8gICBbJ0dhZWxpYyAoTWFueCknLCAnZ3YnXSxcbi8vICAgWydHZW9yZ2lhbicsICdrYSddLFxuLy8gICBbJ0dlcm1hbicsICdkZSddLFxuLy8gICBbJ0dyZWVrJywgJ2VsJ10sXG4vLyAgIFsnR3JlZW5sYW5kaWMnLCAna2wnXSxcbi8vICAgWydHdWFyYW5pJywgJ2duJ10sXG4vLyAgIFsnR3VqYXJhdGknLCAnZ3UnXSxcbi8vICAgWydIYWl0aWFuIENyZW9sZScsICdodCddLFxuLy8gICBbJ0hhdXNhJywgJ2hhJ10sXG4vLyAgIFsnSGVicmV3JywgJ2hlJ10sXG4vLyAgIFsnSGVyZXJvJywgJ2h6J10sXG4vLyAgIFsnSGluZGknLCAnaGknXSxcbi8vICAgWydIaXJpIE1vdHUnLCAnaG8nXSxcbi8vICAgWydIdW5nYXJpYW4nLCAnaHUnXSxcbi8vICAgWydJY2VsYW5kaWMnLCAnaXMnXSxcbi8vICAgWydJZG8nLCAnaW8nXSxcbi8vICAgWydJZ2JvJywgJ2lnJ10sXG4vLyAgIFsnSW5kb25lc2lhbicsICdpZCcsICdpbiddLFxuLy8gICBbJ0ludGVybGluZ3VhJywgJ2lhJ10sXG4vLyAgIFsnSW50ZXJsaW5ndWUnLCAnaWUnXSxcbi8vICAgWydJbnVrdGl0dXQnLCAnaXUnXSxcbi8vICAgWydJbnVwaWFrJywgJ2lrJ10sXG4vLyAgIFsnSXJpc2gnLCAnZ2EnXSxcbi8vICAgWydJdGFsaWFuJywgJ2l0J10sXG4vLyAgIFsnSmFwYW5lc2UnLCAnamEnXSxcbi8vICAgWydKYXZhbmVzZScsICdqdiddLFxuLy8gICBbJ0thbGFhbGxpc3V0LCBHcmVlbmxhbmRpYycsICdrbCddLFxuLy8gICBbJ0thbm5hZGEnLCAna24nXSxcbi8vICAgWydLYW51cmknLCAna3InXSxcbi8vICAgWydLYXNobWlyaScsICdrcyddLFxuLy8gICBbJ0themFraCcsICdrayddLFxuLy8gICBbJ0tobWVyJywgJ2ttJ10sXG4vLyAgIFsnS2lrdXl1JywgJ2tpJ10sXG4vLyAgIFsnS2lueWFyd2FuZGEgKFJ3YW5kYSknLCAncncnXSxcbi8vICAgWydLaXJ1bmRpJywgJ3JuJ10sXG4vLyAgIFsnS3lyZ3l6JywgJ2t5J10sXG4vLyAgIFsnS29taScsICdrdiddLFxuLy8gICBbJ0tvbmdvJywgJ2tnJ10sXG4vLyAgIFsnS29yZWFuJywgJ2tvJ10sXG4vLyAgIFsnS3VyZGlzaCcsICdrdSddLFxuLy8gICBbJ0t3YW55YW1hJywgJ2tqJ10sXG4vLyAgIFsnTGFvJywgJ2xvJ10sXG4vLyAgIFsnTGF0aW4nLCAnbGEnXSxcbi8vICAgWydMYXR2aWFuIChMZXR0aXNoKScsICdsdiddLFxuLy8gICBbJ0xpbWJ1cmdpc2ggKExpbWJ1cmdlciknLCAnbGknXSxcbi8vICAgWydMaW5nYWxhJywgJ2xuJ10sXG4vLyAgIFsnTGl0aHVhbmlhbicsICdsdCddLFxuLy8gICBbJ0x1Z2EtS2F0YW5nYScsICdsdSddLFxuLy8gICBbJ0x1Z2FuZGEsIEdhbmRhJywgJ2xnJ10sXG4vLyAgIFsnTHV4ZW1ib3VyZ2lzaCcsICdsYiddLFxuLy8gICBbJ01hbngnLCAnZ3YnXSxcbi8vICAgWydNYWNlZG9uaWFuJywgJ21rJ10sXG4vLyAgIFsnTWFsYWdhc3knLCAnbWcnXSxcbi8vICAgWydNYWxheScsICdtcyddLFxuLy8gICBbJ01hbGF5YWxhbScsICdtbCddLFxuLy8gICBbJ01hbHRlc2UnLCAnbXQnXSxcbi8vICAgWydNYW9yaScsICdtaSddLFxuLy8gICBbJ01hcmF0aGknLCAnbXInXSxcbi8vICAgWydNYXJzaGFsbGVzZScsICdtaCddLFxuLy8gICBbJ01vbGRhdmlhbicsICdtbyddLFxuLy8gICBbJ01vbmdvbGlhbicsICdtbiddLFxuLy8gICBbJ05hdXJ1JywgJ25hJ10sXG4vLyAgIFsnTmF2YWpvJywgJ252J10sXG4vLyAgIFsnTmRvbmdhJywgJ25nJ10sXG4vLyAgIFsnTm9ydGhlcm4gTmRlYmVsZScsICduZCddLFxuLy8gICBbJ05lcGFsaScsICduZSddLFxuLy8gICBbJ05vcndlZ2lhbicsICdubyddLFxuLy8gICBbJ05vcndlZ2lhbiBib2ttw6VsJywgJ25iJ10sXG4vLyAgIFsnTm9yd2VnaWFuIG55bm9yc2snLCAnbm4nXSxcbi8vICAgWydOdW9zdScsICdpaSddLFxuLy8gICBbJ09jY2l0YW4nLCAnb2MnXSxcbi8vICAgWydPamlid2UnLCAnb2onXSxcbi8vICAgWydPbGQgQ2h1cmNoIFNsYXZvbmljLCBPbGQgQnVsZ2FyaWFuJywgJ2N1J10sXG4vLyAgIFsnT3JpeWEnLCAnb3InXSxcbi8vICAgWydPcm9tbyAoQWZhYW4gT3JvbW8pJywgJ29tJ10sXG4vLyAgIFsnT3NzZXRpYW4nLCAnb3MnXSxcbi8vICAgWydQxIFsaScsICdwaSddLFxuLy8gICBbJ1Bhc2h0bywgUHVzaHRvJywgJ3BzJ10sXG4vLyAgIFsnUGVyc2lhbiAoRmFyc2kpJywgJ2ZhJ10sXG4vLyAgIFsnUG9saXNoJywgJ3BsJ10sXG4vLyAgIFsnUG9ydHVndWVzZScsICdwdCddLFxuLy8gICBbJ1B1bmphYmkgKEVhc3Rlcm4pJywgJ3BhJ10sXG4vLyAgIFsnUXVlY2h1YScsICdxdSddLFxuLy8gICBbJ1JvbWFuc2gnLCAncm0nXSxcbi8vICAgWydSb21hbmlhbicsICdybyddLFxuLy8gICBbJ1J1c3NpYW4nLCAncnUnXSxcbi8vICAgWydTYW1pJywgJ3NlJ10sXG4vLyAgIFsnU2Ftb2FuJywgJ3NtJ10sXG4vLyAgIFsnU2FuZ28nLCAnc2cnXSxcbi8vICAgWydTYW5za3JpdCcsICdzYSddLFxuLy8gICBbJ1NlcmJpYW4nLCAnc3InXSxcbi8vICAgWydTZXJiby1Dcm9hdGlhbicsICdzaCddLFxuLy8gICBbJ1Nlc290aG8nLCAnc3QnXSxcbi8vICAgWydTZXRzd2FuYScsICd0biddLFxuLy8gICBbJ1Nob25hJywgJ3NuJ10sXG4vLyAgIFsnU2ljaHVhbiBZaScsICdpaSddLFxuLy8gICBbJ1NpbmRoaScsICdzZCddLFxuLy8gICBbJ1NpbmhhbGVzZScsICdzaSddLFxuLy8gICBbJ1Npc3dhdGknLCAnc3MnXSxcbi8vICAgWydTbG92YWsnLCAnc2snXSxcbi8vICAgWydTbG92ZW5pYW4nLCAnc2wnXSxcbi8vICAgWydTb21hbGknLCAnc28nXSxcbi8vICAgWydTb3V0aGVybiBOZGViZWxlJywgJ25yJ10sXG4vLyAgIFsnU3BhbmlzaCcsICdlcyddLFxuLy8gICBbJ1N1bmRhbmVzZScsICdzdSddLFxuLy8gICBbJ1N3YWhpbGkgKEtpc3dhaGlsaSknLCAnc3cnXSxcbi8vICAgWydTd2F0aScsICdzcyddLFxuLy8gICBbJ1N3ZWRpc2gnLCAnc3YnXSxcbi8vICAgWydUYWdhbG9nJywgJ3RsJ10sXG4vLyAgIFsnVGFoaXRpYW4nLCAndHknXSxcbi8vICAgWydUYWppaycsICd0ZyddLFxuLy8gICBbJ1RhbWlsJywgJ3RhJ10sXG4vLyAgIFsnVGF0YXInLCAndHQnXSxcbi8vICAgWydUZWx1Z3UnLCAndGUnXSxcbi8vICAgWydUaGFpJywgJ3RoJ10sXG4vLyAgIFsnVGliZXRhbicsICdibyddLFxuLy8gICBbJ1RpZ3JpbnlhJywgJ3RpJ10sXG4vLyAgIFsnVG9uZ2EnLCAndG8nXSxcbi8vICAgWydUc29uZ2EnLCAndHMnXSxcbi8vICAgWydUdXJraXNoJywgJ3RyJ10sXG4vLyAgIFsnVHVya21lbicsICd0ayddLFxuLy8gICBbJ1R3aScsICd0dyddLFxuLy8gICBbJ1V5Z2h1cicsICd1ZyddLFxuLy8gICBbJ1VrcmFpbmlhbicsICd1ayddLFxuLy8gICBbJ1VyZHUnLCAndXInXSxcbi8vICAgWydVemJlaycsICd1eiddLFxuLy8gICBbJ1ZlbmRhJywgJ3ZlJ10sXG4vLyAgIFsnVmlldG5hbWVzZScsICd2aSddLFxuLy8gICBbJ1ZvbGFww7xrJywgJ3ZvJ10sXG4vLyAgIFsnV2FsbG9uJywgJ3dhJ10sXG4vLyAgIFsnV2Vsc2gnLCAnY3knXSxcbi8vICAgWydXb2xvZicsICd3byddLFxuLy8gICBbJ1dlc3Rlcm4gRnJpc2lhbicsICdmeSddLFxuLy8gICBbJ1hob3NhJywgJ3hoJ10sXG4vLyAgIFsnWWlkZGlzaCcsICd5aScsICdqaSddLFxuLy8gICBbJ1lvcnViYScsICd5byddLFxuLy8gICBbJ1podWFuZywgQ2h1YW5nJywgJ3phJ10sXG4vLyAgIFsnWnVsdScsICd6dSddLFxuLy8gXVxuLy9cbi8vIGxhbmdzLmZvckVhY2gobGFuZyA9PiB7Y29uc3QgcGVyaW9kID0gZ2V0RGF5UGVyaW9kcyhsYW5nWzFdKTsgaWYgKHBlcmlvZC5hbSA9PT0gJ0FNJykgcmV0dXJuOyBjb25zb2xlLmxvZyhsYW5nWzFdLCBwZXJpb2QgKX0pXG5cbi8vIENocm9tZSAvIE9wZXJhXG4vLyBBbWhhcmljIGFtIHthbTogJ+GMpeGLi+GJtScsIHBtOiAn4Yqo4Yiw4YuT4Ym1J31cbi8vIEFyYWJpYyBhciB7YW06ICfYtScsIHBtOiAn2YUnfVxuLy8gQnVsZ2FyaWFuIGJnIHthbTogJ9C/0YAu0L7QsS4nLCBwbTogJ9GB0Lsu0L7QsS4nfVxuLy8gQ2hpbmVzZSAoVHJhZGl0aW9uYWwpIHpoLUhhbnQge2FtOiAn5LiK5Y2IJywgcG06ICfkuIvljYgnfVxuLy8gR3JlZWsgZWwge2FtOiAnz4AuzrwuJywgcG06ICfOvC7OvC4nfVxuLy8gSGluZGkgaGkge2FtOiAnYW0nLCBwbTogJ3BtJ31cbi8vIEthbm5hZGEga24ge2FtOiAn4LKq4LOC4LKw4LON4LK14LK+4LK54LON4LKoJywgcG06ICfgsoXgsqrgsrDgsr7gsrngs43gsqgnfVxuLy8gS29yZWFuIGtvIHthbTogJ+yYpOyghCcsIHBtOiAn7Jik7ZuEJ31cbi8vIE1hbGF5IG1zIHthbTogJ1BHJywgcG06ICdQVEcnfVxuLy8gVGFtaWwgdGEge2FtOiAn4K6u4K+B4K6x4K+N4K6q4K6V4K6y4K+NJywgcG06ICfgrqrgrr/grrHgr43grqrgrpXgrrLgr40nfVxuXG4vLyBFZGdlIENocm9taXVtXG4vLyBBbGJhbmlhbiBzcSB7YW06ICdlIHBhcmFkaXRlcycsIHBtOiAnZSBwYXNkaXRlcyd9XG4vLyBBbWhhcmljIGFtIHthbTogJ+GMpeGLi+GJtScsIHBtOiAn4Yqo4Yiw4YuT4Ym1J31cbi8vIEFyYWJpYyBhciB7YW06ICfYtScsIHBtOiAn2YUnfVxuLy8gQnVsZ2FyaWFuIGJnIHthbTogJ9C/0YAu0L7QsS4nLCBwbTogJ9GB0Lsu0L7QsS4nfVxuLy8gQ2hpbmVzZSAoVHJhZGl0aW9uYWwpIHpoLUhhbnQge2FtOiAn5LiK5Y2IJywgcG06ICfkuIvljYgnfVxuLy8gR3JlZWsgZWwge2FtOiAnz4AuzrwuJywgcG06ICfOvC7OvC4nfVxuLy8gSGluZGkgaGkge2FtOiAnYW0nLCBwbTogJ3BtJ31cbi8vIEthbm5hZGEga24ge2FtOiAn4LKq4LOC4LKw4LON4LK14LK+4LK54LON4LKoJywgcG06ICfgsoXgsqrgsrDgsr7gsrngs43gsqgnfVxuLy8gS29yZWFuIGtvIHthbTogJ+yYpOyghCcsIHBtOiAn7Jik7ZuEJ31cbi8vIE1hbGF5IG1zIHthbTogJ1BHJywgcG06ICdQVEcnfVxuLy8gUHVuamFiaSAoRWFzdGVybikgcGEge2FtOiAn4Kiq4KmCLuCopuCpgS4nLCBwbTogJ+CorOCovi7gqKbgqYEuJ31cbi8vIFNpbmRoaSBzZCB7YW06ICfYtdio2K3YjCDZhdmG2KzZh9mG2K8nLCBwbTogJ9mF2YbYrNmH2YbYr9iMINi02KfZhSd9XG4vLyBUYW1pbCB0YSB7YW06ICfgrq7gr4HgrrHgr43grqrgrpXgrrLgr40nLCBwbTogJ+CuquCuv+CuseCvjeCuquCuleCusuCvjSd9XG5cbi8vIEZpcmVmb3hcbi8vIEFrYW4gYWsgeyBhbTogXCJBTlwiLCBwbTogXCJFV1wiIH1cbi8vIEFsYmFuaWFuIHNxIHsgYW06IFwiZSBwYXJhZGl0ZXNcIiwgcG06IFwiZSBwYXNkaXRlc1wiIH1cbi8vIEFtaGFyaWMgYW0geyBhbTogXCLhjKXhi4vhibVcIiwgcG06IFwi4Yqo4Yiw4YuT4Ym1XCIgfVxuLy8gQXJhYmljIGFyIHsgYW06IFwi2LVcIiwgcG06IFwi2YVcIiB9XG4vLyBBc3NhbWVzZSBhcyB7IGFtOiBcIuCmquCnguCnsOCnjeCmrOCmvuCmueCnjeCmqFwiLCBwbTogXCLgpoXgpqrgp7Dgpr7gprngp43gpqhcIiB9XG4vLyBCdWxnYXJpYW4gYmcgeyBhbTogXCLQv9GALtC+0LEuXCIsIHBtOiBcItGB0Lsu0L7QsS5cIiB9XG4vLyBDaGluZXNlIChUcmFkaXRpb25hbCkgemgtSGFudCB7IGFtOiBcIuS4iuWNiFwiLCBwbTogXCLkuIvljYhcIiB9XG4vLyBEem9uZ2toYSBkeiB7IGFtOiBcIuC9puC+lOC8i+C9huC8i1wiLCBwbTogXCLgvZXgvrHgvbLgvIvgvYbgvItcIiB9XG4vLyBFd2UgZWUgeyBhbTogXCLFi2RpXCIsIHBtOiBcIsmjZXRyyZRcIiB9XG4vLyBHcmVlayBlbCB7IGFtOiBcIs+ALs68LlwiLCBwbTogXCLOvC7OvC5cIiB9XG4vLyBIaW5kaSBoaSB7IGFtOiBcImFtXCIsIHBtOiBcInBtXCIgfVxuLy8gS2FubmFkYSBrbiB7IGFtOiBcIuCyquCzguCysOCzjeCyteCyvuCyueCzjeCyqFwiLCBwbTogXCLgsoXgsqrgsrDgsr7gsrngs43gsqhcIiB9XG4vLyBLb3JlYW4ga28geyBhbTogXCLsmKTsoIRcIiwgcG06IFwi7Jik7ZuEXCIgfVxuLy8gTWFsYXkgbXMgeyBhbTogXCJQR1wiLCBwbTogXCJQVEdcIiB9XG4vLyBPcm9tbyAoQWZhYW4gT3JvbW8pIG9tIHsgYW06IFwiV0RcIiwgcG06IFwiV0JcIiB9XG4vLyBQdW5qYWJpIChFYXN0ZXJuKSBwYSB7IGFtOiBcIuCoquCpgi7gqKbgqYEuXCIsIHBtOiBcIuCorOCovi7gqKbgqYEuXCIgfVxuLy8gU2Fuc2tyaXQgc2EgeyBhbTogXCLgpKrgpYLgpLDgpY3gpLXgpL7gpLngpY3gpKhcIiwgcG06IFwi4KSF4KSq4KSw4KS+4KS54KWN4KSoXCIgfVxuLy8gU2luZGhpIHNkIHsgYW06IFwi2LXYqNit2Iwg2YXZhtis2YfZhtivXCIsIHBtOiBcItmF2YbYrNmH2YbYr9iMINi02KfZhVwiIH1cbi8vIFNvbWFsaSBzbyB7IGFtOiBcIkdIXCIsIHBtOiBcIkdEXCIgfVxuLy8gVGFtaWwgdGEgeyBhbTogXCLgrq7gr4HgrrHgr43grqrgrpXgrrLgr41cIiwgcG06IFwi4K6q4K6/4K6x4K+N4K6q4K6V4K6y4K+NXCIgfVxuLy8gVGlncmlueWEgdGkgeyBhbTogXCLhiYUu4YmALlwiLCBwbTogXCLhi7Uu4YmALlwiIH1cbi8vIFRvbmdhIHRvIHsgYW06IFwiaGVuZ2loZW5naVwiLCBwbTogXCJlZmlhZmlcIiB9XG4vLyBUd2kgdHcgeyBhbTogXCJBTlwiLCBwbTogXCJFV1wiIH1cblxuLy8gY29uc3QgZm9ybWF0cyA9IHtcbi8vICAgXCJhci1TQVwiIDogXCJkZC9NTS95eVwiLFxuLy8gICBcImJnLUJHXCIgOiBcImRkLk0ueXl5eVwiLFxuLy8gICBcImNhLUVTXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJ6aC1UV1wiIDogXCJ5eXl5L00vZFwiLFxuLy8gICBcImNzLUNaXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwiZGEtREtcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImRlLURFXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJlbC1HUlwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcImVuLVVTXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwiZmktRklcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJmci1GUlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiaGUtSUxcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImh1LUhVXCIgOiBcInl5eXkuIE1NLiBkZC5cIixcbi8vICAgXCJpcy1JU1wiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcIml0LUlUXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJqYS1KUFwiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwia28tS1JcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcIm5sLU5MXCIgOiBcImQtTS15eXl5XCIsXG4vLyAgIFwibmItTk9cIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcInBsLVBMXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJwdC1CUlwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcInJvLVJPXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJydS1SVVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiaHItSFJcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJzay1TS1wiIDogXCJkLiBNLiB5eXl5XCIsXG4vLyAgIFwic3EtQUxcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcInN2LVNFXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJ0aC1USFwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcInRyLVRSXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJ1ci1QS1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiaWQtSURcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInVrLVVBXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJiZS1CWVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwic2wtU0lcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJldC1FRVwiIDogXCJkLk1NLnl5eXlcIixcbi8vICAgXCJsdi1MVlwiIDogXCJ5eXl5Lk1NLmRkLlwiLFxuLy8gICBcImx0LUxUXCIgOiBcInl5eXkuTU0uZGRcIixcbi8vICAgXCJmYS1JUlwiIDogXCJNTS9kZC95eXl5XCIsXG4vLyAgIFwidmktVk5cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImh5LUFNXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJhei1MYXRuLUFaXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJldS1FU1wiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwibWstTUtcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImFmLVpBXCIgOiBcInl5eXkvTU0vZGRcIixcbi8vICAgXCJrYS1HRVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiZm8tRk9cIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImhpLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJtcy1NWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwia2stS1pcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImt5LUtHXCIgOiBcImRkLk1NLnl5XCIsXG4vLyAgIFwic3ctS0VcIiA6IFwiTS9kL3l5eXlcIixcbi8vICAgXCJ1ei1MYXRuLVVaXCIgOiBcImRkL01NIHl5eXlcIixcbi8vICAgXCJ0dC1SVVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwicGEtSU5cIiA6IFwiZGQtTU0teXlcIixcbi8vICAgXCJndS1JTlwiIDogXCJkZC1NTS15eVwiLFxuLy8gICBcInRhLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJ0ZS1JTlwiIDogXCJkZC1NTS15eVwiLFxuLy8gICBcImtuLUlOXCIgOiBcImRkLU1NLXl5XCIsXG4vLyAgIFwibXItSU5cIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcInNhLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJtbi1NTlwiIDogXCJ5eS5NTS5kZFwiLFxuLy8gICBcImdsLUVTXCIgOiBcImRkL01NL3l5XCIsXG4vLyAgIFwia29rLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJzeXItU1lcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImR2LU1WXCIgOiBcImRkL01NL3l5XCIsXG4vLyAgIFwiYXItSVFcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInpoLUNOXCIgOiBcInl5eXkvTS9kXCIsXG4vLyAgIFwiZGUtQ0hcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImVuLUdCXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1NWFwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZnItQkVcIiA6IFwiZC9NTS95eXl5XCIsXG4vLyAgIFwiaXQtQ0hcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcIm5sLUJFXCIgOiBcImQvTU0veXl5eVwiLFxuLy8gICBcIm5uLU5PXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJwdC1QVFwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwic3ItTGF0bi1DU1wiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcInN2LUZJXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwiYXotQ3lybC1BWlwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwibXMtQk5cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInV6LUN5cmwtVVpcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImFyLUVHXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJ6aC1IS1wiIDogXCJkL00veXl5eVwiLFxuLy8gICBcImRlLUFUXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJlbi1BVVwiIDogXCJkL01NL3l5eXlcIixcbi8vICAgXCJlcy1FU1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZnItQ0FcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcInNyLUN5cmwtQ1NcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJhci1MWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiemgtU0dcIiA6IFwiZC9NL3l5eXlcIixcbi8vICAgXCJkZS1MVVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiZW4tQ0FcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLUdUXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJmci1DSFwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiYXItRFpcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcInpoLU1PXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwiZGUtTElcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImVuLU5aXCIgOiBcImQvTU0veXl5eVwiLFxuLy8gICBcImVzLUNSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJmci1MVVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYXItTUFcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImVuLUlFXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1QQVwiIDogXCJNTS9kZC95eXl5XCIsXG4vLyAgIFwiZnItTUNcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFyLVROXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJlbi1aQVwiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwiZXMtRE9cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFyLU9NXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlbi1KTVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtVkVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFyLVlFXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlbi0wMjlcIiA6IFwiTU0vZGQveXl5eVwiLFxuLy8gICBcImVzLUNPXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1TWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZW4tQlpcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVBFXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1KT1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZW4tVFRcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLUFSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1MQlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZW4tWldcIiA6IFwiTS9kL3l5eXlcIixcbi8vICAgXCJlcy1FQ1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYXItS1dcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVuLVBIXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwiZXMtQ0xcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImFyLUFFXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1VWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYXItQkhcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVBZXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1RQVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtQk9cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVNWXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1ITlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtTklcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVBSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhbS1FVFwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcInR6bS1MYXRuLURaXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJpdS1MYXRuLUNBXCIgOiBcImQvTU0veXl5eVwiLFxuLy8gICBcInNtYS1OT1wiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwibW4tTW9uZy1DTlwiIDogXCJ5eXl5L00vZFwiLFxuLy8gICBcImdkLUdCXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlbi1NWVwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcInBycy1BRlwiIDogXCJkZC9NTS95eVwiLFxuLy8gICBcImJuLUJEXCIgOiBcImRkLU1NLXl5XCIsXG4vLyAgIFwid28tU05cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInJ3LVJXXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwicXV0LUdUXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJzYWgtUlVcIiA6IFwiTU0uZGQueXl5eVwiLFxuLy8gICBcImdzdy1GUlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiY28tRlJcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcIm9jLUZSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJtaS1OWlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZ2EtSUVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInNlLVNFXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJici1GUlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwic21uLUZJXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwibW9oLUNBXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwiYXJuLUNMXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJpaS1DTlwiIDogXCJ5eXl5L00vZFwiLFxuLy8gICBcImRzYi1ERVwiIDogXCJkLiBNLiB5eXl5XCIsXG4vLyAgIFwiaWctTkdcIiA6IFwiZC9NL3l5eXlcIixcbi8vICAgXCJrbC1HTFwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwibGItTFVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImJhLVJVXCIgOiBcImRkLk1NLnl5XCIsXG4vLyAgIFwibnNvLVpBXCIgOiBcInl5eXkvTU0vZGRcIixcbi8vICAgXCJxdXotQk9cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInlvLU5HXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwiaGEtTGF0bi1OR1wiIDogXCJkL00veXl5eVwiLFxuLy8gICBcImZpbC1QSFwiIDogXCJNL2QveXl5eVwiLFxuLy8gICBcInBzLUFGXCIgOiBcImRkL01NL3l5XCIsXG4vLyAgIFwiZnktTkxcIiA6IFwiZC1NLXl5eXlcIixcbi8vICAgXCJuZS1OUFwiIDogXCJNL2QveXl5eVwiLFxuLy8gICBcInNlLU5PXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJpdS1DYW5zLUNBXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwic3ItTGF0bi1SU1wiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcInNpLUxLXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJzci1DeXJsLVJTXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwibG8tTEFcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImttLUtIXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJjeS1HQlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYm8tQ05cIiA6IFwieXl5eS9NL2RcIixcbi8vICAgXCJzbXMtRklcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJhcy1JTlwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwibWwtSU5cIiA6IFwiZGQtTU0teXlcIixcbi8vICAgXCJlbi1JTlwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwib3ItSU5cIiA6IFwiZGQtTU0teXlcIixcbi8vICAgXCJibi1JTlwiIDogXCJkZC1NTS15eVwiLFxuLy8gICBcInRrLVRNXCIgOiBcImRkLk1NLnl5XCIsXG4vLyAgIFwiYnMtTGF0bi1CQVwiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcIm10LU1UXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJzci1DeXJsLU1FXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwic2UtRklcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJ6dS1aQVwiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwieGgtWkFcIiA6IFwieXl5eS9NTS9kZFwiLFxuLy8gICBcInRuLVpBXCIgOiBcInl5eXkvTU0vZGRcIixcbi8vICAgXCJoc2ItREVcIiA6IFwiZC4gTS4geXl5eVwiLFxuLy8gICBcImJzLUN5cmwtQkFcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJ0Zy1DeXJsLVRKXCIgOiBcImRkLk1NLnl5XCIsXG4vLyAgIFwic3ItTGF0bi1CQVwiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcInNtai1OT1wiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwicm0tQ0hcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInNtai1TRVwiIDogXCJ5eXl5LU1NLWRkXCIsXG4vLyAgIFwicXV6LUVDXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJxdXotUEVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImhyLUJBXCIgOiBcImQuTS55eXl5LlwiLFxuLy8gICBcInNyLUxhdG4tTUVcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJzbWEtU0VcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcImVuLVNHXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwidWctQ05cIiA6IFwieXl5eS1NLWRcIixcbi8vICAgXCJzci1DeXJsLUJBXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwiZXMtVVNcIiA6IFwiTS9kL3l5eXlcIlxuLy8gfTtcbi8vXG4vLyBPYmplY3Qua2V5cyhmb3JtYXRzKS5mb3JFYWNoKGxhbmcgPT4ge2NvbnN0IHBlcmlvZCA9IGdldERheVBlcmlvZHMobGFuZyk7IGlmIChwZXJpb2QuYW0gPT09ICdBTScpIHJldHVybjsgY29uc29sZS5sb2cobGFuZywgcGVyaW9kICl9KVxuIl19