@sbb-esta/lyne-elements-dev 5.0.0-next.3-dev.1778655126 → 5.0.0-next.3-dev.1778781274

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 (340) hide show
  1. package/development/accordion.component-xx7XabDY.js +1 -1
  2. package/development/accordion.js +1 -1
  3. package/development/action-group.component-wgXPpkQe.js +1 -1
  4. package/development/action-group.js +1 -1
  5. package/development/alert-group.component-w5PbU_4C.js +1 -1
  6. package/development/alert.component-Dzm5z0jh.js +1 -1
  7. package/development/alert.js +1 -1
  8. package/development/autocomplete/autocomplete.component.js +1 -1
  9. package/development/autocomplete-base-element-DQiZ6hhk.js +1 -1
  10. package/development/autocomplete.js +1 -1
  11. package/development/block-link-common-DNvRfeay.js +1 -1
  12. package/development/breadcrumb-group.component-BUBfl6LV.js +1 -1
  13. package/development/breadcrumb.component-D6Cd2FPo.js +1 -1
  14. package/development/breadcrumb.js +1 -1
  15. package/development/button/accent-button/accent-button.component.js +1 -1
  16. package/development/button/accent-button-link/accent-button-link.component.js +1 -1
  17. package/development/button/accent-button-static/accent-button-static.component.js +1 -1
  18. package/development/button/button/button.component.js +1 -1
  19. package/development/button/button-link/button-link.component.js +1 -1
  20. package/development/button/button-static/button-static.component.js +1 -1
  21. package/development/button/mini-button/mini-button.component.js +1 -1
  22. package/development/button/secondary-button/secondary-button.component.js +1 -1
  23. package/development/button/secondary-button-link/secondary-button-link.component.js +1 -1
  24. package/development/button/secondary-button-static/secondary-button-static.component.js +1 -1
  25. package/development/button/transparent-button/transparent-button.component.js +1 -1
  26. package/development/button/transparent-button-link/transparent-button-link.component.js +1 -1
  27. package/development/button/transparent-button-static/transparent-button-static.component.js +1 -1
  28. package/development/button-common-C-A7Dulr.js +1 -1
  29. package/development/button.js +1 -1
  30. package/development/calendar/calendar-month/calendar-month.component.js +1 -1
  31. package/development/calendar/calendar-weekday/calendar-weekday.component.js +1 -1
  32. package/development/calendar/calendar-weeknumber/calendar-weeknumber.component.js +1 -1
  33. package/development/calendar/calendar-year/calendar-year.component.js +1 -1
  34. package/development/calendar-cell-base-element-mWRSDeWc.js +1 -1
  35. package/development/calendar-day.component-BHvdRxll.js +1 -1
  36. package/development/calendar.component-CjlcDyS5.js +1 -1
  37. package/development/calendar.js +1 -1
  38. package/development/card/card-button/card-button.component.js +1 -1
  39. package/development/card/card-link/card-link.component.js +1 -1
  40. package/development/card-action-common-zS5iNz23.js +1 -1
  41. package/development/card-badge.component-CEfJdJBs.js +1 -1
  42. package/development/card.component-CL2gHoyP.js +1 -1
  43. package/development/card.js +1 -1
  44. package/development/carousel-item.component-B_0wdIAu.js +1 -1
  45. package/development/carousel-list.component-DpDh5tqB.js +1 -1
  46. package/development/carousel.component-ClWvnZ8s.js +1 -1
  47. package/development/carousel.js +1 -1
  48. package/development/checkbox-common-C3Ekixul.js +1 -1
  49. package/development/checkbox-group/checkbox-group.component.js +1 -1
  50. package/development/checkbox-group.js +1 -1
  51. package/development/checkbox-panel/checkbox-panel.component.js +1 -1
  52. package/development/checkbox-panel.js +1 -1
  53. package/development/checkbox.component-UbxCpZmi.js +1 -1
  54. package/development/checkbox.js +1 -1
  55. package/development/chip-group.component-Sgmi-kSy.js +1 -1
  56. package/development/chip-label.component-DHHNtvTt.js +1 -1
  57. package/development/chip-label.js +1 -1
  58. package/development/chip.component-Uuf3tGFz.js +1 -1
  59. package/development/chip.js +1 -1
  60. package/development/clock.component-DcM1WFTN.js +1 -1
  61. package/development/clock.js +1 -1
  62. package/development/compact-paginator.component-BgkpxaaD.js +1 -1
  63. package/development/container.component-D1Qgp4HW.js +1 -1
  64. package/development/container.js +1 -1
  65. package/development/core/a11y/arrow-navigation.js +1 -1
  66. package/development/core/a11y/fake-event-detection.js +1 -1
  67. package/development/core/a11y/focus-trap-controller.js +1 -1
  68. package/development/core/a11y/focus-visible-within-controller.js +1 -1
  69. package/development/core/a11y/focus.js +1 -1
  70. package/development/core/a11y/input-modality-detector.js +1 -1
  71. package/development/core/a11y/interactivity-checker.js +1 -1
  72. package/development/core/a11y/live-announcer.js +1 -1
  73. package/development/core/base-elements/action-base-element.js +1 -1
  74. package/development/core/base-elements/button-base-element.js +1 -1
  75. package/development/core/base-elements/link-base-element.js +1 -1
  76. package/development/core/base-elements/open-close-base-element.js +1 -1
  77. package/development/core/config/config.js +1 -1
  78. package/development/core/controllers/escapable-overlay-controller.js +1 -1
  79. package/development/core/controllers/id-reference-controller.js +1 -1
  80. package/development/core/controllers/inert-controller.js +1 -1
  81. package/development/core/controllers/language-controller.js +1 -1
  82. package/development/core/controllers/media-matchers-controller.js +1 -1
  83. package/development/core/controllers/overlay-position-controller.js +1 -1
  84. package/development/core/controllers/property-watcher-controller.js +1 -1
  85. package/development/core/datetime/date-adapter.js +1 -1
  86. package/development/core/datetime/native-date-adapter.js +1 -1
  87. package/development/core/datetime/temporal-date-adapter.js +1 -1
  88. package/development/core/decorators/force-type.js +1 -1
  89. package/development/core/decorators/get-override.js +1 -1
  90. package/development/core/decorators/handle-distinct-change.js +1 -1
  91. package/development/core/decorators/host-attributes.js +1 -1
  92. package/development/core/decorators/id-reference.js +1 -1
  93. package/development/core/decorators/omit-empty-converter.js +1 -1
  94. package/development/core/decorators/plain-date.js +1 -1
  95. package/development/core/dom/animation.js +1 -1
  96. package/development/core/dom/contains-pierce-shadow-dom.js +1 -1
  97. package/development/core/dom/platform.js +1 -1
  98. package/development/core/dom/queue-dom-content-loaded.js +1 -1
  99. package/development/core/dom/scroll.js +1 -1
  100. package/development/core/dom/set-or-remove-attribute.js +1 -1
  101. package/development/core/eventing/composed-path-has-attribute.js +1 -1
  102. package/development/core/eventing/event-target.js +1 -1
  103. package/development/core/eventing/form-element-handlers.js +1 -1
  104. package/development/core/eventing/forward-event.js +1 -1
  105. package/development/core/eventing/is-event-prevented.js +1 -1
  106. package/development/core/eventing/throttle.js +1 -1
  107. package/development/core/i18n/i18n.js +1 -1
  108. package/development/core/mixins/animation-complete-mixin.js +1 -1
  109. package/development/core/mixins/disabled-mixin.js +1 -1
  110. package/development/core/mixins/form-associated-checkbox-mixin.js +1 -1
  111. package/development/core/mixins/form-associated-input-mixin.js +1 -1
  112. package/development/core/mixins/form-associated-mixin.js +1 -1
  113. package/development/core/mixins/form-associated-radio-button-mixin.js +1 -1
  114. package/development/core/mixins/named-slot-list-mixin.js +1 -1
  115. package/development/core/mixins/negative-mixin.js +1 -1
  116. package/development/core/mixins/readonly-mixin.js +1 -1
  117. package/development/core/mixins/required-mixin.js +1 -1
  118. package/development/core/mixins/selection-panel-mixin.js +1 -1
  119. package/development/core/mixins/update-scheduler-mixin.js +1 -1
  120. package/development/core/overlay/overlay-option-panel.js +1 -1
  121. package/development/core/overlay/overlay-outside-pointer-event-listener.js +1 -1
  122. package/development/core/overlay/overlay-trigger-attributes.js +1 -1
  123. package/development/core/overlay/position.js +1 -1
  124. package/development/core/testing/event-spy.js +1 -1
  125. package/development/core/testing/mocha-extensions.js +1 -1
  126. package/development/core/testing/wait-for-condition.js +1 -1
  127. package/development/core/testing/wait-for-image-ready.js +1 -1
  128. package/development/core/testing/wait-for-render.js +1 -1
  129. package/development/date-input.component-HxRyCudr.js +1 -1
  130. package/development/date-input.js +1 -1
  131. package/development/datepicker/datepicker/datepicker.component.js +1 -1
  132. package/development/datepicker/datepicker-next-day/datepicker-next-day.component.js +1 -1
  133. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +1 -1
  134. package/development/datepicker/datepicker-toggle/datepicker-toggle.component.js +1 -1
  135. package/development/datepicker-button-BAT1ebzJ.js +1 -1
  136. package/development/datepicker.js +1 -1
  137. package/development/dialog-actions.component-e0ZTTUin.js +1 -1
  138. package/development/dialog-close-button.component-Idc00dB9.js +1 -1
  139. package/development/dialog-content.component-CThU7Z8A.js +1 -1
  140. package/development/dialog-title.component-0uNsUR2C.js +1 -1
  141. package/development/dialog.component-AItB8ixG.js +1 -1
  142. package/development/dialog.js +1 -1
  143. package/development/divider.component-Ck_0vISe.js +1 -1
  144. package/development/divider.js +1 -1
  145. package/development/element-BAsBayf5.js +1 -1
  146. package/development/error.component-WCkiwM7_.js +1 -1
  147. package/development/expansion-panel-content.component-Bs0pYNJO.js +1 -1
  148. package/development/expansion-panel-header.component-gg5A_7Pz.js +1 -1
  149. package/development/expansion-panel.component-DptYMbwV.js +1 -1
  150. package/development/expansion-panel.js +1 -1
  151. package/development/file-selector/file-selector/file-selector.component.js +1 -1
  152. package/development/file-selector-common-CGL95Rnw.js +1 -1
  153. package/development/file-selector-dropzone.component-B84OL4Xd.js +1 -1
  154. package/development/file-selector.js +1 -1
  155. package/development/flip-card-details.component-BYv_W66a.js +1 -1
  156. package/development/flip-card-summary.component-jLNjJUNl.js +1 -1
  157. package/development/flip-card.component-DujrPKzU.js +1 -1
  158. package/development/flip-card.js +1 -1
  159. package/development/footer.component-K2bWizjw.js +1 -1
  160. package/development/footer.js +1 -1
  161. package/development/form-field/form-field-clear/form-field-clear.component.js +1 -1
  162. package/development/form-field/form-field-text-counter/form-field-text-counter.component.js +1 -1
  163. package/development/form-field.component-CPWBCHer.js +1 -1
  164. package/development/form-field.js +1 -1
  165. package/development/header/header-button/header-button.component.js +1 -1
  166. package/development/header/header-link/header-link.component.js +1 -1
  167. package/development/header-action-common-Be0XQge2.js +1 -1
  168. package/development/header-environment.component-CIyxQwkQ.js +1 -1
  169. package/development/header.component-C4e7CNql.js +1 -1
  170. package/development/header.js +1 -1
  171. package/development/hint.component-BB9QLGGx.js +1 -1
  172. package/development/icon/icon-name-mixin.js +1 -1
  173. package/development/icon/icon-request.js +1 -1
  174. package/development/icon/icon-validate.js +1 -1
  175. package/development/icon/icon.component.js +1 -1
  176. package/development/icon-base-DrBHy9BT.js +1 -1
  177. package/development/icon-sidebar/icon-sidebar-button/icon-sidebar-button.component.js +1 -1
  178. package/development/icon-sidebar/icon-sidebar-link/icon-sidebar-link.component.js +1 -1
  179. package/development/icon-sidebar-container.component-CM94Spwy.js +1 -1
  180. package/development/icon-sidebar-content.component-BP9W5ZxR.js +1 -1
  181. package/development/icon-sidebar.component-B68P2aNh.js +1 -1
  182. package/development/icon-sidebar.js +1 -1
  183. package/development/icon.js +1 -1
  184. package/development/image.component-EfSMgHI_.js +1 -1
  185. package/development/image.js +1 -1
  186. package/development/inline-link-common-gmt6yz3v.js +1 -1
  187. package/development/journey-header.component-CA4juz9x.js +1 -1
  188. package/development/journey-header.js +1 -1
  189. package/development/lead-container.component-C_mFeq1B.js +1 -1
  190. package/development/lead-container.js +1 -1
  191. package/development/link/block-link/block-link.component.js +1 -1
  192. package/development/link/block-link-button/block-link-button.component.js +1 -1
  193. package/development/link/block-link-static/block-link-static.component.js +1 -1
  194. package/development/link/link/link.component.js +1 -1
  195. package/development/link/link-button/link-button.component.js +1 -1
  196. package/development/link/link-static/link-static.component.js +1 -1
  197. package/development/link-common-2RGn9Qz_.js +1 -1
  198. package/development/link-list-anchor.component-Csb-FOQL.js +1 -1
  199. package/development/link-list-anchor.js +1 -1
  200. package/development/link-list-base-CKT3c8yW.js +1 -1
  201. package/development/link-list.component-B90qHOUD.js +1 -1
  202. package/development/link-list.js +1 -1
  203. package/development/link.js +1 -1
  204. package/development/loading-indicator-circle.component-Cfjw5vyz.js +1 -1
  205. package/development/loading-indicator-circle.js +1 -1
  206. package/development/loading-indicator.component-By2VaLCf.js +1 -1
  207. package/development/loading-indicator.js +1 -1
  208. package/development/logo.component-DYKgAgq0.js +1 -1
  209. package/development/logo.js +1 -1
  210. package/development/map-container.component-D0UVTolK.js +1 -1
  211. package/development/map-container.js +1 -1
  212. package/development/menu/menu-button/menu-button.component.js +1 -1
  213. package/development/menu/menu-link/menu-link.component.js +1 -1
  214. package/development/menu-action-common-DRXQc85Y.js +1 -1
  215. package/development/menu.component-Cv9wRj4H.js +1 -1
  216. package/development/menu.js +1 -1
  217. package/development/message.component-CdO5GyE2.js +1 -1
  218. package/development/message.js +1 -1
  219. package/development/mini-button-group.component-VYKZf1rq.js +1 -1
  220. package/development/mini-button-link.component-kpRsi8I2.js +1 -1
  221. package/development/mini-calendar-day.component-BLkJ12Bw.js +1 -1
  222. package/development/mini-calendar-month.component-D8XjjLmN.js +1 -1
  223. package/development/mini-calendar.component-BOk8JovO.js +1 -1
  224. package/development/mini-calendar.js +1 -1
  225. package/development/navigation/navigation-button/navigation-button.component.js +1 -1
  226. package/development/navigation/navigation-link/navigation-link.component.js +1 -1
  227. package/development/navigation-action-common-fkYNyX19.js +1 -1
  228. package/development/navigation-list.component-Dvv-bZ2V.js +1 -1
  229. package/development/navigation-marker.component-DMqe-VlY.js +1 -1
  230. package/development/navigation-section.component-iaypc6yQ.js +1 -1
  231. package/development/navigation.component-CqNkBvEs.js +1 -1
  232. package/development/navigation.js +1 -1
  233. package/development/notification.component-BiJSo7Pl.js +1 -1
  234. package/development/notification.js +1 -1
  235. package/development/optgroup-base-element-CLfE6pmz.js +1 -1
  236. package/development/option/optgroup/optgroup.component.js +1 -1
  237. package/development/option/option/option-base-element.js +1 -1
  238. package/development/option-hint.component-DPfgcpVn.js +1 -1
  239. package/development/option.component-CV6cZnJe.js +1 -1
  240. package/development/option.js +1 -1
  241. package/development/overlay/overlay-base-element.js +1 -1
  242. package/development/overlay.component-rFmitc_r.js +1 -1
  243. package/development/overlay.js +1 -1
  244. package/development/paginator-common-BCeNUko_.js +1 -1
  245. package/development/paginator.component-BwLUSpDj.js +1 -1
  246. package/development/paginator.js +1 -1
  247. package/development/panel-mixin-DPybe45K.js +1 -1
  248. package/development/popover.component-BmTfHMFw.js +1 -1
  249. package/development/popover.js +1 -1
  250. package/development/radio-button-common-G0jLFo41.js +1 -1
  251. package/development/radio-button-group/radio-button-group.component.js +1 -1
  252. package/development/radio-button-group.js +1 -1
  253. package/development/radio-button-panel/radio-button-panel.component.js +1 -1
  254. package/development/radio-button-panel.js +1 -1
  255. package/development/radio-button.component-DnErH-1J.js +1 -1
  256. package/development/radio-button.js +1 -1
  257. package/development/select.component-CUjF11sq.js +1 -1
  258. package/development/select.js +1 -1
  259. package/development/selection-action-panel.component-BT0HmTja.js +1 -1
  260. package/development/selection-action-panel.js +1 -1
  261. package/development/selection-expansion-panel.component-BT78Qhbf.js +1 -1
  262. package/development/selection-expansion-panel.js +1 -1
  263. package/development/selection-group-base-element-DRT3Ctp2.js +1 -1
  264. package/development/sidebar/common/styles.js +1 -1
  265. package/development/sidebar-close-button.component-CXnf-P5H.js +1 -1
  266. package/development/sidebar-container.component-CxwDKxv9.js +1 -1
  267. package/development/sidebar-content.component-DbcREBUa.js +1 -1
  268. package/development/sidebar-title.component-BW04otyD.js +1 -1
  269. package/development/sidebar.component-mfXnE6WQ.js +1 -1
  270. package/development/sidebar.js +1 -1
  271. package/development/signet.component-k14RJ8FA.js +1 -1
  272. package/development/signet.js +1 -1
  273. package/development/skiplink-list.component-m7xm-pns.js +1 -1
  274. package/development/skiplink-list.js +1 -1
  275. package/development/slider.component-D_nLTlRF.js +1 -1
  276. package/development/slider.js +1 -1
  277. package/development/status.component-B9en2l26.js +1 -1
  278. package/development/status.js +1 -1
  279. package/development/step-label.component-Bo7Z0w7N.js +1 -1
  280. package/development/step.component-CcjtUFyR.js +1 -1
  281. package/development/stepper.component-80S-oXrH.js +1 -1
  282. package/development/stepper.js +1 -1
  283. package/development/sticky-bar.component-BJLtRvcd.js +1 -1
  284. package/development/styles-Cctez2BS.js +1 -1
  285. package/development/styles-WppEBrlW.js +1 -1
  286. package/development/tab-group.component-D4fvd6Uu.js +1 -1
  287. package/development/tab-label.component-CNX8bsJL.js +1 -1
  288. package/development/tab-nav-bar.component-B_mi8GGR.js +1 -1
  289. package/development/tab.component-BVhYPy5Y.js +1 -1
  290. package/development/table-wrapper.component-By59zmcU.js +1 -1
  291. package/development/table.js +1 -1
  292. package/development/tabs.js +1 -1
  293. package/development/tag-group.component-Db8prSBL.js +1 -1
  294. package/development/tag.component-DG1uxD28.js +1 -1
  295. package/development/tag.js +1 -1
  296. package/development/teaser-hero.component-BHMcPmdh.js +1 -1
  297. package/development/teaser-hero.js +1 -1
  298. package/development/teaser-panel.component-BRfbvmkb.js +1 -1
  299. package/development/teaser-panel.js +1 -1
  300. package/development/teaser-product/teaser-product-static/teaser-product-static.component.js +1 -1
  301. package/development/teaser-product-common-DOyLdTks.js +1 -1
  302. package/development/teaser-product.component-DMyuB-cH.js +1 -1
  303. package/development/teaser-product.js +1 -1
  304. package/development/teaser.component-CF_NUbwJ.js +1 -1
  305. package/development/teaser.js +1 -1
  306. package/development/time-input.component-XxzRoupm.js +1 -1
  307. package/development/time-input.js +1 -1
  308. package/development/timetable-form-details.component-BeuAZUQe.js +1 -1
  309. package/development/timetable-form-field.component-DC2z1Cwf.js +1 -1
  310. package/development/timetable-form-swap-button.component-CnbVc8Ok.js +1 -1
  311. package/development/timetable-form.component-C8DfPePn.js +1 -1
  312. package/development/timetable-form.js +1 -1
  313. package/development/timetable-occupancy-icon.component-UBmyZsTO.js +1 -1
  314. package/development/timetable-occupancy-icon.js +1 -1
  315. package/development/timetable-occupancy.component-DMm242Fr.js +1 -1
  316. package/development/timetable-occupancy.js +1 -1
  317. package/development/title-base-D_Rjyk_j.js +1 -1
  318. package/development/title.component-CMxYhTfw.js +1 -1
  319. package/development/title.js +1 -1
  320. package/development/toast.component-DonS3uQm.js +1 -1
  321. package/development/toast.js +1 -1
  322. package/development/toggle-check.component-BIV7jFIc.js +1 -1
  323. package/development/toggle-check.js +1 -1
  324. package/development/toggle-option.component-DRxwLSKU.js +1 -1
  325. package/development/toggle.component-B03k5qc1.js +1 -1
  326. package/development/toggle.js +1 -1
  327. package/development/tooltip.component-D8zik3p4.js +1 -1
  328. package/development/tooltip.js +1 -1
  329. package/development/train/train-formation-orientation-mixin.js +1 -1
  330. package/development/train/train-wagon/train-wagon.component.js +1 -1
  331. package/development/train/train-wagon-button/train-wagon-button.component.js +1 -1
  332. package/development/train/train-wagon-link/train-wagon-link.component.js +1 -1
  333. package/development/train-blocked-passage.component-Cxd7dBDC.js +1 -1
  334. package/development/train-formation.component-BEg6OPib.js +1 -1
  335. package/development/train-wagon-common-Dg-BjUtC.js +1 -1
  336. package/development/train.component-dECIGw2x.js +1 -1
  337. package/development/train.js +1 -1
  338. package/development/visual-checkbox.component-Dm8DNhH2.js +1 -1
  339. package/development/visual-checkbox.js +1 -1
  340. package/package.json +2 -2
@@ -144,4 +144,4 @@ var SbbDarkModeController = class SbbDarkModeController extends SbbMediaMatcherC
144
144
  //#endregion
145
145
  export { SbbDarkModeController, SbbMediaMatcherController, SbbMediaQueryBreakpointLargeAndAbove, SbbMediaQueryBreakpointLargeAndBelow, SbbMediaQueryBreakpointSmallAndAbove, SbbMediaQueryBreakpointSmallAndBelow, SbbMediaQueryBreakpointUltraAndAbove, SbbMediaQueryBreakpointZeroAndAbove, SbbMediaQueryDarkMode, SbbMediaQueryForcedColors, SbbMediaQueryHover, SbbMediaQueryPointerCoarse };
146
146
 
147
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtbWF0Y2hlcnMtY29udHJvbGxlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9jb250cm9sbGVycy9tZWRpYS1tYXRjaGVycy1jb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNiYkJyZWFrcG9pbnRMYXJnZU1heCxcbiAgU2JiQnJlYWtwb2ludExhcmdlTWluLFxuICBTYmJCcmVha3BvaW50U21hbGxNYXgsXG4gIFNiYkJyZWFrcG9pbnRTbWFsbE1pbixcbiAgU2JiQnJlYWtwb2ludFVsdHJhTWluLFxuICBTYmJCcmVha3BvaW50WmVyb01pbixcbn0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZGVzaWduLXRva2Vucyc7XG5pbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgU2JiRWxlbWVudCB9IGZyb20gJy4uL2Jhc2UtZWxlbWVudHMvZWxlbWVudC50cyc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlGb3JjZWRDb2xvcnMgPSAnKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSknO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlEYXJrTW9kZSA9ICcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJztcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5SG92ZXIgPSAnKGFueS1ob3ZlcjogaG92ZXIpJztcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5UG9pbnRlckNvYXJzZSA9ICcocG9pbnRlcjogY29hcnNlKSc7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRaZXJvQW5kQWJvdmUgPSBgKG1pbi13aWR0aDogJHtTYmJCcmVha3BvaW50WmVyb01pbn0pYDtcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQWJvdmUgPSBgKG1pbi13aWR0aDogJHtTYmJCcmVha3BvaW50U21hbGxNaW59KWA7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRMYXJnZUFuZEFib3ZlID0gYChtaW4td2lkdGg6ICR7U2JiQnJlYWtwb2ludExhcmdlTWlufSlgO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50VWx0cmFBbmRBYm92ZSA9IGAobWluLXdpZHRoOiAke1NiYkJyZWFrcG9pbnRVbHRyYU1pbn0pYDtcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQmVsb3cgPSBgKG1heC13aWR0aDogJHtTYmJCcmVha3BvaW50U21hbGxNYXh9KWA7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRMYXJnZUFuZEJlbG93ID0gYChtYXgtd2lkdGg6ICR7U2JiQnJlYWtwb2ludExhcmdlTWF4fSlgO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cblxuLyoqXG4gKiBBIGNhbGxiYWNrLCB3aGljaCBpcyBpbnZva2VkIHdoZW4gdGhlIGFzc29jaWF0ZWQgbWVkaWEgcXVlcnkgbWF0Y2hcbiAqIHN0YXR1cyBjaGFuZ2VzLlxuICovXG5leHBvcnQgdHlwZSBTYmJNZWRpYU1hdGNoZXJIYW5kbGVyID0gKG1hdGNoZXM6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbmludGVyZmFjZSBNZWRpYVF1ZXJ5RW50cnkge1xuICBtZWRpYVF1ZXJ5TGlzdDogTWVkaWFRdWVyeUxpc3Q7XG4gIGV2ZW50SGFuZGxlcjogKGV2ZW50OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KSA9PiB2b2lkO1xuICBoYW5kbGVyczogU2V0PFNiYk1lZGlhTWF0Y2hlckhhbmRsZXI+O1xufVxuXG4vKipcbiAqIFdlIHdhbnQgdG8gY2FjaGUgTWVkaWFRdWVyeUxpc3QgaW5zdGFuY2VzIGFuZCBjb3JyZXNwb25kaW5nXG4gKiBldmVudCBoYW5kbGVycywgYXMgYSBtdWx0aXR1ZGUgb2YgZXZlbnQgaGFuZGxlcnMgb24gZ2xvYmFsIG9iamVjdHNcbiAqIGNhbiBkZWdyYWRlIHBlcmZvcm1hbmNlIHdpdGggdGltZS5cbiAqL1xuY29uc3QgbWVkaWFRdWVyeVJlZ2lzdHJ5ID0gbmV3IE1hcDxzdHJpbmcsIE1lZGlhUXVlcnlFbnRyeT4oKTtcblxuLyoqXG4gKiBUaGlzIGNvbnRyb2xsZXIgYWxsb3dzIGxpc3RlbmluZyB0byBtZWRpYSBxdWVyeSBjaGFuZ2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBuZXcgU2JiTWVkaWFNYXRjaGVyQ29udHJvbGxlcih0aGlzLCB7XG4gKiAgIFtTYmJGb3JjZWRDb2xvcnNRdWVyeV06IChtYXRjaGVzKSA9PiBkb1NvbWV0aGluZyhtYXRjaGVzKSxcbiAqIH0pXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIGhvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QsXG4gICAgcHJpdmF0ZSBfcXVlcmllczogUmVjb3JkPHN0cmluZywgU2JiTWVkaWFNYXRjaGVySGFuZGxlcj4sXG4gICkge1xuICAgIGhvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIHF1ZXJ5IG1hdGNoZXMuIFJldHVybnMgbnVsbCB3aXRoIFNTUi5cbiAgICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSB0byBjaGVjayBhZ2FpbnN0LlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBxdWVyeSBtYXRjaGVzIG9yIG51bGwgd2l0aCBTU1IuXG4gICAqL1xuICBwdWJsaWMgbWF0Y2hlcyhxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB8IG51bGwge1xuICAgIC8vIElmIHdlIHVzZSB0aGUgY2FjaGVkIGluc3RhbmNlLCBXZWJraXQgc2VlbXMgdG8gdXBkYXRlIHRoZSBzdGF0ZSBhIHRpY2sgdG9vIGxhdGUuXG4gICAgLy8gRHVlIHRvIHRoaXMgd2UgZGlyZWN0bHkgdXNlIG1hdGNoTWVkaWEgaGVyZS5cbiAgICByZXR1cm4gaXNTZXJ2ZXIgPyBudWxsIDogbWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlcztcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3F1ZXJ5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9xdWVyaWVzKSkge1xuICAgICAgY29uc3QgbWVkaWFRdWVyeSA9IG1lZGlhUXVlcnlSZWdpc3RyeS5nZXQocXVlcnkpO1xuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgbWVkaWFRdWVyeS5oYW5kbGVycy5hZGQoaGFuZGxlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtZWRpYVF1ZXJ5TGlzdCA9IG1hdGNoTWVkaWEocXVlcnkpO1xuICAgICAgICBjb25zdCBoYW5kbGVycyA9IG5ldyBTZXQoW2hhbmRsZXJdKTtcbiAgICAgICAgY29uc3QgZXZlbnRIYW5kbGVyID0gKGU6IE1lZGlhUXVlcnlMaXN0RXZlbnQpOiB2b2lkID0+XG4gICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaCgoaCkgPT4gaChlLm1hdGNoZXMpKTtcbiAgICAgICAgbWVkaWFRdWVyeUxpc3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgbWVkaWFRdWVyeVJlZ2lzdHJ5LnNldChxdWVyeSwgeyBtZWRpYVF1ZXJ5TGlzdCwgaGFuZGxlcnMsIGV2ZW50SGFuZGxlciB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFtxdWVyeSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fcXVlcmllcykpIHtcbiAgICAgIGNvbnN0IG1lZGlhUXVlcnkgPSBtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KHF1ZXJ5KTtcbiAgICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICAgIG1lZGlhUXVlcnkuaGFuZGxlcnMuZGVsZXRlKGhhbmRsZXIpO1xuICAgICAgICBpZiAoIW1lZGlhUXVlcnkuaGFuZGxlcnMuc2l6ZSkge1xuICAgICAgICAgIG1lZGlhUXVlcnlSZWdpc3RyeS5kZWxldGUocXVlcnkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyLCB3aGljaFxuICogdGFrZXMgdGhlIGNvbG9yLXNjaGVtZSBDU1MgcHJvcGVydHkgaW50byBhY2NvdW50IHdoZW4gZGV0ZXJtaW5pbmdcbiAqIHRoZSBkYXJrIG1vZGUgc3RhdGUgYW5kIHVwZGF0ZXMgYSA6c3RhdGUoZGFyaykgb24gdGhlIGhvc3QuXG4gKlxuICogQGV4YW1wbGVcbiAqIG5ldyBTYmJEYXJrTW9kZUNvbnRyb2xsZXIodGhpcywgKGlzRGFya01vZGUpID0+IGRvU29tZXRoaW5nKGlzRGFya01vZGUpKTtcbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkRhcmtNb2RlQ29udHJvbGxlciBleHRlbmRzIFNiYk1lZGlhTWF0Y2hlckNvbnRyb2xsZXIge1xuICAvKiogVGhlIGN1cnJlbnQgbW9kZSBiYXNlZCBvbiB0aGUgY2xhc3MgYXR0cmlidXRlIG9mIHRoZSA8aHRtbD4gZWxlbWVudC4gKi9cbiAgcHJpdmF0ZSBzdGF0aWMgX2N1cnJlbnRNb2RlOiAnc2JiLWxpZ2h0LWRhcmsnIHwgJ3NiYi1saWdodCcgfCAnc2JiLWRhcmsnIHwgbnVsbCA9XG4gICAgdGhpcy5fcmVhZExpZ2h0RGFya0NsYXNzKCk7XG5cbiAgLyoqIE11dGF0aW9uT2JzZXJ2ZXIgdGhhdCBvYnNlcnZlcyB0aGUgXCJjbGFzc1wiIGF0dHJpYnV0ZSBvZiB0aGUgPGh0bWw+IGVsZW1lbnQuICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9vYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgICAgICBpZiAobXV0YXRpb25zWzBdLm9sZFZhbHVlICE9PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpKSB7XG4gICAgICAgICAgY29uc3QgbmV3TW9kZSA9IHRoaXMuX3JlYWRMaWdodERhcmtDbGFzcygpO1xuICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50TW9kZSAhPT0gbmV3TW9kZSkge1xuICAgICAgICAgICAgU2JiRGFya01vZGVDb250cm9sbGVyLnJlcXVlc3RVcGRhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRNb2RlID0gbmV3TW9kZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9vYnNlcnZlckNvbmZpZyA9IHtcbiAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnY2xhc3MnXSxcbiAgICBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSxcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXI6ICgpID0+IHZvaWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2hvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QgJiBTYmJFbGVtZW50LFxuICAgIG9uQ2hhbmdlOiBTYmJNZWRpYU1hdGNoZXJIYW5kbGVyLFxuICApIHtcbiAgICBjb25zdCBvbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXI6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgICBvbkNoYW5nZSh0aGlzLm1hdGNoZXMoKSk7XG4gICAgICB0aGlzLl9ob3N0Wyd0b2dnbGVTdGF0ZSddPy4oJ2RhcmsnLCB0aGlzLm1hdGNoZXMoKSk7XG4gICAgfTtcbiAgICBzdXBlcihfaG9zdCwge1xuICAgICAgW1NiYk1lZGlhUXVlcnlEYXJrTW9kZV06IG9uQ2hhbmdlV2l0aFN0YXRlVXBkYXRlcixcbiAgICB9KTtcbiAgICB0aGlzLl9vbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXIgPSBvbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXI7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfcmVhZExpZ2h0RGFya0NsYXNzKCk6ICdzYmItbGlnaHQtZGFyaycgfCAnc2JiLWxpZ2h0JyB8ICdzYmItZGFyaycgfCBudWxsIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBjbGFzc0xpc3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0O1xuICAgIHJldHVybiAoXG4gICAgICAoWydzYmItbGlnaHQtZGFyaycsICdzYmItZGFyaycsICdzYmItbGlnaHQnXSBhcyBjb25zdCkuZmluZCgobW9kZSkgPT5cbiAgICAgICAgY2xhc3NMaXN0LmNvbnRhaW5zKG1vZGUpLFxuICAgICAgKSA/PyBudWxsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyBhbiB1cGRhdGUgb2YgdGhlIGRhcmsgbW9kZSBzdGF0ZS4gVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGUgY29sb3Itc2NoZW1lXG4gICAqIENTUyBwcm9wZXJ0eSBjaGFuZ2VzLCBhcyB0aGUgbWVkaWEgcXVlcnkgZG9lcyBub3QgcGljayB0aGlzIHVwIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbHluZS9uZWVkcy1zdXBlci1jYWxsLXJ1bGVcbiAgcHVibGljIHN0YXRpYyByZXF1ZXN0VXBkYXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVudHJ5ID0gbWVkaWFRdWVyeVJlZ2lzdHJ5LmdldChTYmJNZWRpYVF1ZXJ5RGFya01vZGUpO1xuICAgIGlmIChlbnRyeSkge1xuICAgICAgZW50cnkuaGFuZGxlcnMuZm9yRWFjaCgoaCkgPT4gaChlbnRyeS5tZWRpYVF1ZXJ5TGlzdC5tYXRjaGVzKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3RDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgY29uc3QgaXNGaXJzdExpc3RlbmVyID1cbiAgICAgIChtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KFNiYk1lZGlhUXVlcnlEYXJrTW9kZSk/LmhhbmRsZXJzLnNpemUgPz8gMCkgPT09IDA7XG4gICAgc3VwZXIuaG9zdENvbm5lY3RlZCgpO1xuXG4gICAgaWYgKGlzRmlyc3RMaXN0ZW5lcikge1xuICAgICAgU2JiRGFya01vZGVDb250cm9sbGVyLl9vYnNlcnZlciEub2JzZXJ2ZShcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgICBTYmJEYXJrTW9kZUNvbnRyb2xsZXIuX29ic2VydmVyQ29uZmlnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9vbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBob3N0RGlzY29ubmVjdGVkKCk6IHZvaWQge1xuICAgIHN1cGVyLmhvc3REaXNjb25uZWN0ZWQoKTtcblxuICAgIGlmICgobWVkaWFRdWVyeVJlZ2lzdHJ5LmdldChTYmJNZWRpYVF1ZXJ5RGFya01vZGUpPy5oYW5kbGVycy5zaXplID8/IDApID09PSAwKSB7XG4gICAgICBTYmJEYXJrTW9kZUNvbnRyb2xsZXIuX29ic2VydmVyIS5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIG1hdGNoZXMoKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGNvbG9yU2NoZW1lID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9ob3N0KS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvci1zY2hlbWUnKTtcbiAgICBjb25zdCBkYXJrQXZhaWxhYmxlID0gY29sb3JTY2hlbWUuaW5jbHVkZXMoJ2RhcmsnKTtcbiAgICBjb25zdCBkYXJrT25seSA9IGNvbG9yU2NoZW1lLnRyaW0oKSA9PT0gJ2RhcmsnO1xuICAgIGNvbnN0IHByZWZlcnJlZERhcmtNb2RlID0gc3VwZXIubWF0Y2hlcyhTYmJNZWRpYVF1ZXJ5RGFya01vZGUpIGFzIGJvb2xlYW47XG5cbiAgICByZXR1cm4gKHByZWZlcnJlZERhcmtNb2RlICYmIGRhcmtBdmFpbGFibGUpIHx8IGRhcmtPbmx5O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7OztBQWFBLElBQWEsNEJBQTRCO0FBQ3pDLElBQWEsd0JBQXdCO0FBQ3JDLElBQWEscUJBQXFCO0FBQ2xDLElBQWEsNkJBQTZCO0FBQzFDLElBQWEsc0NBQXNDLGVBQWUscUJBQW9CO0FBQ3RGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCOzs7Ozs7QUFvQnhGLElBQU0scUNBQXFCLElBQUksS0FBOEI7Ozs7Ozs7OztBQVU3RCxJQUFhLDRCQUFiLE1BQXNDO0NBQ3BDLFlBQ0UsTUFDUSxVQUFnRDtFQUFoRCxLQUFBLFdBQUE7RUFFUixLQUFLLGNBQWMsS0FBSzs7Ozs7OztDQVFuQixRQUFRLE9BQWE7RUFHMUIsT0FBTyxXQUFXLE9BQU8sV0FBVyxNQUFNLENBQUM7O0NBR3RDLGdCQUFhO0VBQ2xCLElBQUksVUFDRjtFQUdGLEtBQUssTUFBTSxDQUFDLE9BQU8sWUFBWSxPQUFPLFFBQVEs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
147
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtbWF0Y2hlcnMtY29udHJvbGxlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9jb250cm9sbGVycy9tZWRpYS1tYXRjaGVycy1jb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNiYkJyZWFrcG9pbnRMYXJnZU1heCxcbiAgU2JiQnJlYWtwb2ludExhcmdlTWluLFxuICBTYmJCcmVha3BvaW50U21hbGxNYXgsXG4gIFNiYkJyZWFrcG9pbnRTbWFsbE1pbixcbiAgU2JiQnJlYWtwb2ludFVsdHJhTWluLFxuICBTYmJCcmVha3BvaW50WmVyb01pbixcbn0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZGVzaWduLXRva2Vucyc7XG5pbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgU2JiRWxlbWVudCB9IGZyb20gJy4uL2Jhc2UtZWxlbWVudHMvZWxlbWVudC50cyc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlGb3JjZWRDb2xvcnMgPSAnKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSknO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlEYXJrTW9kZSA9ICcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJztcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5SG92ZXIgPSAnKGFueS1ob3ZlcjogaG92ZXIpJztcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5UG9pbnRlckNvYXJzZSA9ICcocG9pbnRlcjogY29hcnNlKSc7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRaZXJvQW5kQWJvdmUgPSBgKG1pbi13aWR0aDogJHtTYmJCcmVha3BvaW50WmVyb01pbn0pYDtcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQWJvdmUgPSBgKG1pbi13aWR0aDogJHtTYmJCcmVha3BvaW50U21hbGxNaW59KWA7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRMYXJnZUFuZEFib3ZlID0gYChtaW4td2lkdGg6ICR7U2JiQnJlYWtwb2ludExhcmdlTWlufSlgO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50VWx0cmFBbmRBYm92ZSA9IGAobWluLXdpZHRoOiAke1NiYkJyZWFrcG9pbnRVbHRyYU1pbn0pYDtcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQmVsb3cgPSBgKG1heC13aWR0aDogJHtTYmJCcmVha3BvaW50U21hbGxNYXh9KWA7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRMYXJnZUFuZEJlbG93ID0gYChtYXgtd2lkdGg6ICR7U2JiQnJlYWtwb2ludExhcmdlTWF4fSlgO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cblxuLyoqXG4gKiBBIGNhbGxiYWNrLCB3aGljaCBpcyBpbnZva2VkIHdoZW4gdGhlIGFzc29jaWF0ZWQgbWVkaWEgcXVlcnkgbWF0Y2hcbiAqIHN0YXR1cyBjaGFuZ2VzLlxuICovXG5leHBvcnQgdHlwZSBTYmJNZWRpYU1hdGNoZXJIYW5kbGVyID0gKG1hdGNoZXM6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbmludGVyZmFjZSBNZWRpYVF1ZXJ5RW50cnkge1xuICBtZWRpYVF1ZXJ5TGlzdDogTWVkaWFRdWVyeUxpc3Q7XG4gIGV2ZW50SGFuZGxlcjogKGV2ZW50OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KSA9PiB2b2lkO1xuICBoYW5kbGVyczogU2V0PFNiYk1lZGlhTWF0Y2hlckhhbmRsZXI+O1xufVxuXG4vKipcbiAqIFdlIHdhbnQgdG8gY2FjaGUgTWVkaWFRdWVyeUxpc3QgaW5zdGFuY2VzIGFuZCBjb3JyZXNwb25kaW5nXG4gKiBldmVudCBoYW5kbGVycywgYXMgYSBtdWx0aXR1ZGUgb2YgZXZlbnQgaGFuZGxlcnMgb24gZ2xvYmFsIG9iamVjdHNcbiAqIGNhbiBkZWdyYWRlIHBlcmZvcm1hbmNlIHdpdGggdGltZS5cbiAqL1xuY29uc3QgbWVkaWFRdWVyeVJlZ2lzdHJ5ID0gbmV3IE1hcDxzdHJpbmcsIE1lZGlhUXVlcnlFbnRyeT4oKTtcblxuLyoqXG4gKiBUaGlzIGNvbnRyb2xsZXIgYWxsb3dzIGxpc3RlbmluZyB0byBtZWRpYSBxdWVyeSBjaGFuZ2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBuZXcgU2JiTWVkaWFNYXRjaGVyQ29udHJvbGxlcih0aGlzLCB7XG4gKiAgIFtTYmJGb3JjZWRDb2xvcnNRdWVyeV06IChtYXRjaGVzKSA9PiBkb1NvbWV0aGluZyhtYXRjaGVzKSxcbiAqIH0pXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIGhvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QsXG4gICAgcHJpdmF0ZSBfcXVlcmllczogUmVjb3JkPHN0cmluZywgU2JiTWVkaWFNYXRjaGVySGFuZGxlcj4sXG4gICkge1xuICAgIGhvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIHF1ZXJ5IG1hdGNoZXMuIFJldHVybnMgbnVsbCB3aXRoIFNTUi5cbiAgICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSB0byBjaGVjayBhZ2FpbnN0LlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBxdWVyeSBtYXRjaGVzIG9yIG51bGwgd2l0aCBTU1IuXG4gICAqL1xuICBwdWJsaWMgbWF0Y2hlcyhxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB8IG51bGwge1xuICAgIC8vIElmIHdlIHVzZSB0aGUgY2FjaGVkIGluc3RhbmNlLCBXZWJraXQgc2VlbXMgdG8gdXBkYXRlIHRoZSBzdGF0ZSBhIHRpY2sgdG9vIGxhdGUuXG4gICAgLy8gRHVlIHRvIHRoaXMgd2UgZGlyZWN0bHkgdXNlIG1hdGNoTWVkaWEgaGVyZS5cbiAgICByZXR1cm4gaXNTZXJ2ZXIgPyBudWxsIDogbWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlcztcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3F1ZXJ5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9xdWVyaWVzKSkge1xuICAgICAgY29uc3QgbWVkaWFRdWVyeSA9IG1lZGlhUXVlcnlSZWdpc3RyeS5nZXQocXVlcnkpO1xuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgbWVkaWFRdWVyeS5oYW5kbGVycy5hZGQoaGFuZGxlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtZWRpYVF1ZXJ5TGlzdCA9IG1hdGNoTWVkaWEocXVlcnkpO1xuICAgICAgICBjb25zdCBoYW5kbGVycyA9IG5ldyBTZXQoW2hhbmRsZXJdKTtcbiAgICAgICAgY29uc3QgZXZlbnRIYW5kbGVyID0gKGU6IE1lZGlhUXVlcnlMaXN0RXZlbnQpOiB2b2lkID0+XG4gICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaCgoaCkgPT4gaChlLm1hdGNoZXMpKTtcbiAgICAgICAgbWVkaWFRdWVyeUxpc3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgbWVkaWFRdWVyeVJlZ2lzdHJ5LnNldChxdWVyeSwgeyBtZWRpYVF1ZXJ5TGlzdCwgaGFuZGxlcnMsIGV2ZW50SGFuZGxlciB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFtxdWVyeSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fcXVlcmllcykpIHtcbiAgICAgIGNvbnN0IG1lZGlhUXVlcnkgPSBtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KHF1ZXJ5KTtcbiAgICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICAgIG1lZGlhUXVlcnkuaGFuZGxlcnMuZGVsZXRlKGhhbmRsZXIpO1xuICAgICAgICBpZiAoIW1lZGlhUXVlcnkuaGFuZGxlcnMuc2l6ZSkge1xuICAgICAgICAgIG1lZGlhUXVlcnlSZWdpc3RyeS5kZWxldGUocXVlcnkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyLCB3aGljaFxuICogdGFrZXMgdGhlIGNvbG9yLXNjaGVtZSBDU1MgcHJvcGVydHkgaW50byBhY2NvdW50IHdoZW4gZGV0ZXJtaW5pbmdcbiAqIHRoZSBkYXJrIG1vZGUgc3RhdGUgYW5kIHVwZGF0ZXMgYSA6c3RhdGUoZGFyaykgb24gdGhlIGhvc3QuXG4gKlxuICogQGV4YW1wbGVcbiAqIG5ldyBTYmJEYXJrTW9kZUNvbnRyb2xsZXIodGhpcywgKGlzRGFya01vZGUpID0+IGRvU29tZXRoaW5nKGlzRGFya01vZGUpKTtcbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkRhcmtNb2RlQ29udHJvbGxlciBleHRlbmRzIFNiYk1lZGlhTWF0Y2hlckNvbnRyb2xsZXIge1xuICAvKiogVGhlIGN1cnJlbnQgbW9kZSBiYXNlZCBvbiB0aGUgY2xhc3MgYXR0cmlidXRlIG9mIHRoZSA8aHRtbD4gZWxlbWVudC4gKi9cbiAgcHJpdmF0ZSBzdGF0aWMgX2N1cnJlbnRNb2RlOiAnc2JiLWxpZ2h0LWRhcmsnIHwgJ3NiYi1saWdodCcgfCAnc2JiLWRhcmsnIHwgbnVsbCA9XG4gICAgdGhpcy5fcmVhZExpZ2h0RGFya0NsYXNzKCk7XG5cbiAgLyoqIE11dGF0aW9uT2JzZXJ2ZXIgdGhhdCBvYnNlcnZlcyB0aGUgXCJjbGFzc1wiIGF0dHJpYnV0ZSBvZiB0aGUgPGh0bWw+IGVsZW1lbnQuICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9vYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgICAgICBpZiAobXV0YXRpb25zWzBdLm9sZFZhbHVlICE9PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpKSB7XG4gICAgICAgICAgY29uc3QgbmV3TW9kZSA9IHRoaXMuX3JlYWRMaWdodERhcmtDbGFzcygpO1xuICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50TW9kZSAhPT0gbmV3TW9kZSkge1xuICAgICAgICAgICAgU2JiRGFya01vZGVDb250cm9sbGVyLnJlcXVlc3RVcGRhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRNb2RlID0gbmV3TW9kZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9vYnNlcnZlckNvbmZpZyA9IHtcbiAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnY2xhc3MnXSxcbiAgICBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSxcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXI6ICgpID0+IHZvaWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2hvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QgJiBTYmJFbGVtZW50LFxuICAgIG9uQ2hhbmdlOiBTYmJNZWRpYU1hdGNoZXJIYW5kbGVyLFxuICApIHtcbiAgICBjb25zdCBvbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXI6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgICBvbkNoYW5nZSh0aGlzLm1hdGNoZXMoKSk7XG4gICAgICB0aGlzLl9ob3N0Wyd0b2dnbGVTdGF0ZSddPy4oJ2RhcmsnLCB0aGlzLm1hdGNoZXMoKSk7XG4gICAgfTtcbiAgICBzdXBlcihfaG9zdCwge1xuICAgICAgW1NiYk1lZGlhUXVlcnlEYXJrTW9kZV06IG9uQ2hhbmdlV2l0aFN0YXRlVXBkYXRlcixcbiAgICB9KTtcbiAgICB0aGlzLl9vbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXIgPSBvbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXI7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfcmVhZExpZ2h0RGFya0NsYXNzKCk6ICdzYmItbGlnaHQtZGFyaycgfCAnc2JiLWxpZ2h0JyB8ICdzYmItZGFyaycgfCBudWxsIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBjbGFzc0xpc3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0O1xuICAgIHJldHVybiAoXG4gICAgICAoWydzYmItbGlnaHQtZGFyaycsICdzYmItZGFyaycsICdzYmItbGlnaHQnXSBhcyBjb25zdCkuZmluZCgobW9kZSkgPT5cbiAgICAgICAgY2xhc3NMaXN0LmNvbnRhaW5zKG1vZGUpLFxuICAgICAgKSA/PyBudWxsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyBhbiB1cGRhdGUgb2YgdGhlIGRhcmsgbW9kZSBzdGF0ZS4gVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGUgY29sb3Itc2NoZW1lXG4gICAqIENTUyBwcm9wZXJ0eSBjaGFuZ2VzLCBhcyB0aGUgbWVkaWEgcXVlcnkgZG9lcyBub3QgcGljayB0aGlzIHVwIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbHluZS9uZWVkcy1zdXBlci1jYWxsLXJ1bGVcbiAgcHVibGljIHN0YXRpYyByZXF1ZXN0VXBkYXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVudHJ5ID0gbWVkaWFRdWVyeVJlZ2lzdHJ5LmdldChTYmJNZWRpYVF1ZXJ5RGFya01vZGUpO1xuICAgIGlmIChlbnRyeSkge1xuICAgICAgZW50cnkuaGFuZGxlcnMuZm9yRWFjaCgoaCkgPT4gaChlbnRyeS5tZWRpYVF1ZXJ5TGlzdC5tYXRjaGVzKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3RDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgY29uc3QgaXNGaXJzdExpc3RlbmVyID1cbiAgICAgIChtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KFNiYk1lZGlhUXVlcnlEYXJrTW9kZSk/LmhhbmRsZXJzLnNpemUgPz8gMCkgPT09IDA7XG4gICAgc3VwZXIuaG9zdENvbm5lY3RlZCgpO1xuXG4gICAgaWYgKGlzRmlyc3RMaXN0ZW5lcikge1xuICAgICAgU2JiRGFya01vZGVDb250cm9sbGVyLl9vYnNlcnZlciEub2JzZXJ2ZShcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgICBTYmJEYXJrTW9kZUNvbnRyb2xsZXIuX29ic2VydmVyQ29uZmlnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9vbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBob3N0RGlzY29ubmVjdGVkKCk6IHZvaWQge1xuICAgIHN1cGVyLmhvc3REaXNjb25uZWN0ZWQoKTtcblxuICAgIGlmICgobWVkaWFRdWVyeVJlZ2lzdHJ5LmdldChTYmJNZWRpYVF1ZXJ5RGFya01vZGUpPy5oYW5kbGVycy5zaXplID8/IDApID09PSAwKSB7XG4gICAgICBTYmJEYXJrTW9kZUNvbnRyb2xsZXIuX29ic2VydmVyIS5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIG1hdGNoZXMoKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGNvbG9yU2NoZW1lID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9ob3N0KS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvci1zY2hlbWUnKTtcbiAgICBjb25zdCBkYXJrQXZhaWxhYmxlID0gY29sb3JTY2hlbWUuaW5jbHVkZXMoJ2RhcmsnKTtcbiAgICBjb25zdCBkYXJrT25seSA9IGNvbG9yU2NoZW1lLnRyaW0oKSA9PT0gJ2RhcmsnO1xuICAgIGNvbnN0IHByZWZlcnJlZERhcmtNb2RlID0gc3VwZXIubWF0Y2hlcyhTYmJNZWRpYVF1ZXJ5RGFya01vZGUpIGFzIGJvb2xlYW47XG5cbiAgICByZXR1cm4gKHByZWZlcnJlZERhcmtNb2RlICYmIGRhcmtBdmFpbGFibGUpIHx8IGRhcmtPbmx5O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7OztBQWFBLElBQWEsNEJBQTRCO0FBQ3pDLElBQWEsd0JBQXdCO0FBQ3JDLElBQWEscUJBQXFCO0FBQ2xDLElBQWEsNkJBQTZCO0FBQzFDLElBQWEsc0NBQXNDLGVBQWUscUJBQW9CO0FBQ3RGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCOzs7Ozs7QUFvQnhGLElBQU0scUNBQXFCLElBQUksSUFBRzs7Ozs7Ozs7O0FBVWxDLElBQWEsNEJBQWIsTUFBc0M7Q0FDcEMsWUFDRSxNQUNRLFVBQWdEO0VBQWhELEtBQUEsV0FBQTtFQUVSLEtBQUssY0FBYyxJQUFJO0NBQ3pCOzs7Ozs7Q0FPTyxRQUFRLE9BQWE7RUFHMUIsT0FBTyxXQUFXLE9BQU8sV0FBVyxLQUFLLEVBQUU7Q0FDN0M7Q0FFTyxnQkFBYTtFQUNsQixJQUFJLFVBQ0Y7RUFHRixLQUFLLE1BQU0sQ0FBQyxPQUFPLFlBQVksT0FB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
@@ -299,4 +299,4 @@ var SbbOverlayPositionController = class {
299
299
  //#endregion
300
300
  export { SbbOverlayPositionController };
301
301
 
302
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1wb3NpdGlvbi1jb250cm9sbGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL292ZXJsYXktcG9zaXRpb24tY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmNvbnN0IGNzc0FuY2hvclBvc2l0aW9uU3VwcG9ydGVkID0gIWlzU2VydmVyICYmIENTUy5zdXBwb3J0cygnYW5jaG9yLW5hbWUnLCAnLS10ZXN0Jyk7XG5cbmNvbnN0IHBoeXNpY2FsU3VwcG9ydGVkUG9zaXRpb25zID0gW1xuICAndG9wJyxcbiAgJ2JvdHRvbScsXG4gICdsZWZ0JyxcbiAgJ3JpZ2h0JyxcbiAgJ3RvcCBzcGFuLWxlZnQnLFxuICAndG9wIHNwYW4tcmlnaHQnLFxuICAnYm90dG9tIHNwYW4tbGVmdCcsXG4gICdib3R0b20gc3Bhbi1yaWdodCcsXG4gICdsZWZ0IHNwYW4tdG9wJyxcbiAgJ2xlZnQgc3Bhbi1ib3R0b20nLFxuICAncmlnaHQgc3Bhbi10b3AnLFxuICAncmlnaHQgc3Bhbi1ib3R0b20nLFxuXTtcblxuLy8gTm90ZTogaWYgeW91IGFkZCBuZXcgbG9naWNhbCBzdXBwb3J0ZWQgcG9zaXRpb25zLCB1cGRhdGUgYWxzbyB0aGUgJ3J0bFBvc2l0aW9uTWFwcGluZydcbmNvbnN0IGxvZ2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnMgPSBbXG4gICdibG9jay1zdGFydCcsXG4gICdibG9jay1lbmQnLFxuICAnaW5saW5lLXN0YXJ0JyxcbiAgJ2lubGluZS1lbmQnLFxuICAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtZW5kJyxcbiAgJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1zdGFydCcsXG4gICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtZW5kJyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLXN0YXJ0JyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCcsXG4gICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stc3RhcnQnLFxuICAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLWVuZCcsXG5dO1xuXG5jb25zdCBydGxQb3NpdGlvbk1hcHBpbmc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICdibG9jay1zdGFydCc6ICdibG9jay1zdGFydCcsXG4gICdibG9jay1lbmQnOiAnYmxvY2stZW5kJyxcbiAgJ2lubGluZS1zdGFydCc6ICdpbmxpbmUtZW5kJyxcbiAgJ2lubGluZS1lbmQnOiAnaW5saW5lLXN0YXJ0JyxcbiAgJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLXN0YXJ0JzogJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLWVuZCcsXG4gICdibG9jay1zdGFydCBzcGFuLWlubGluZS1lbmQnOiAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnYmxvY2stZW5kIHNwYW4taW5saW5lLXN0YXJ0JzogJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1lbmQnLFxuICAnYmxvY2stZW5kIHNwYW4taW5saW5lLWVuZCc6ICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stc3RhcnQnOiAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLXN0YXJ0JyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCc6ICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJyxcbiAgJ2lubGluZS1lbmQgc3Bhbi1ibG9jay1zdGFydCc6ICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1zdGFydCcsXG4gICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJzogJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCcsXG59O1xuXG5jb25zdCBzdXBwb3J0ZWRQb3NpdGlvbnMgPSBbLi4ucGh5c2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnMsIC4uLmxvZ2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnNdO1xubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQ29udHJvbGxlciBmb3IgbWFuYWdpbmcgb3ZlcmxheXMgcG9zaXRpb25pbmcuIEFsc28gYWN0cyBhcyBhIHBvbHlmaWxsIHdoZW4gbmF0aXZlXG4gKiBDU1MgQW5jaG9yIFBvc2l0aW9uaW5nIGlzIG5vdCBzdXBwb3J0ZWQgKGVub3VnaCkuXG4gKiBBcHBsaWVzIHVuaXF1ZSBhbmNob3IgbmFtZXMgd2hlbiB1c2luZyBuYXRpdmUgQ1NTIEFuY2hvciBQb3NpdGlvbmluZ1xuICogb3IgY2FsY3VsYXRlcyBhbmQgYXBwbGllcyBjb3JyZWN0IHBvc2l0aW9ucyBpbiBwb2x5ZmlsbCBtb2RlLlxuICpcbiAqIEFsc28sIHRoZSBjb250cm9sbGVyIHNldHMgdGhlICdkYXRhLXBvc2l0aW9uJyBhdHRyaWJ1dGUgb24gdGhlIG92ZXJsYXkgZWxlbWVudC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXBwbHkgc3BlY2lmaWMgc3R5bGVzIGJhc2VkIG9uIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBvdmVybGF5LlxuICpcbiAqICMjIyBJbXBsZW1lbnRhdGlvblxuICogRGVmaW5lIGFuZCBhcHBseSB0aGUgZm9sbG93aW5nIENTUyB2YXJpYWJsZXMgb24gdGhlIG92ZXJsYXkgZWxlbWVudDpcbiAqIGBgYHNjc3NcbiAqICAgLS1zYmItb3ZlcmxheS1wb3NpdGlvbi1hcmVhOiBibG9jay1lbmQ7IC8vIERlZmF1bHRcbiAqICAgLS1zYmItb3ZlcmxheS1wb3NpdGlvbi10cnktZmFsbGJhY2tzOiBibG9jay1zdGFydCwgaW5saW5lLWVuZCwgaW5saW5lLXN0YXJ0OyAvLyBGYWxsYmFja3NcbiAqXG4gKiAgIHBvc2l0aW9uLWFyZWE6IHZhcigtLXNiYi1vdmVybGF5LXBvc2l0aW9uLWFyZWEpO1xuICogICBwb3NpdGlvbi10cnktZmFsbGJhY2tzOiB2YXIoLS1zYmItb3ZlcmxheS1wb3NpdGlvbi10cnktZmFsbGJhY2tzKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU2JiT3ZlcmxheVBvc2l0aW9uQ29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc2l6ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy5fcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCkpXG4gICAgOiBudWxsITtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcmxheTogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9hYm9ydENvbnRyb2xsZXI/OiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2FuY2hvcj86IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9vdmVybGF5U3R5bGVzPzogQ1NTU3R5bGVEZWNsYXJhdGlvbjtcbiAgcHJpdmF0ZSBfZnJhbWU/OiBSZXR1cm5UeXBlPHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU+O1xuICBwcml2YXRlIF9hbmNob3JOYW1lID0gYC0tc2JiLW92ZXJsYXktYW5jaG9yLSR7KytuZXh0SWR9YDtcbiAgcHJpdmF0ZSBfcG9zaXRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIF9sYXN0UG9zaXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqIEdldCB0aGUgY3VycmVudCBwb3NpdGlvbi4gKGUuZy4gYmxvY2stZW5kLCBibG9jay1zdGFydCwgZXRjLikgKi9cbiAgcHVibGljIGdldCBjdXJyZW50UG9zaXRpb24oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fdXNlUG9seWZpbGwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9sYXN0UG9zaXRpb24gPz8gdGhpcy5fcG9zaXRpb25zWzBdID8/ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9vdmVybGF5U3R5bGVzID8/PSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX292ZXJsYXkpO1xuICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXlTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgncG9zaXRpb24tYXJlYScpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0ICYgSFRNTEVsZW1lbnQsXG4gICAgcHJpdmF0ZSBfdXNlUG9seWZpbGwgPSAhY3NzQW5jaG9yUG9zaXRpb25TdXBwb3J0ZWQsXG4gICkge1xuICAgIGhvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgICB0aGlzLl9vdmVybGF5ID0gaG9zdDtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdXNlUG9seWZpbGwpIHtcbiAgICAgIHRoaXMuX292ZXJsYXkuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uLWFuY2hvcicsIHRoaXMuX2FuY2hvck5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNldCB0aGUgJ3Bvc2l0aW9uLWFyZWEnIHZhbHVlIHRvIGF2b2lkIGFueSB1bndhbnRlZCBzaWRlIGVmZmVjdCB3aGVuIHVzaW5nIHRoZSBwb2x5ZmlsbC5cbiAgICAgIHRoaXMuX292ZXJsYXkuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uLWFyZWEnLCAnaW5pdGlhbCcpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBob3N0VXBkYXRlKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9yZWFkUG9zaXRpb25zRnJvbUNzcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbm5lY3RzIHRoZSBvdmVybGF5IHRvIHRoZSBnaXZlbiB0cmlnZ2VyIGVsZW1lbnQgYW5kIGRldGVybWluZXMgdGhlIG9wdGltYWwgcG9zaXRpb24uXG4gICAqIFVzdWFsbHksIHRoaXMgaXMgY2FsbGVkIHdoZW4gdGhlIG92ZXJsYXkgaXMgb3BlbmVkLlxuICAgKiBAcGFyYW0gYW5jaG9yIFRoZSBhbmNob3IgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBjb25uZWN0KGFuY2hvcjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYW5jaG9yKSB7XG4gICAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gICAgdGhpcy5fYW5jaG9yID0gYW5jaG9yO1xuXG4gICAgaWYgKCF0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgdGhpcy5fYW5jaG9yLnN0eWxlLnNldFByb3BlcnR5KCdhbmNob3ItbmFtZScsIHRoaXMuX2FuY2hvck5hbWUhKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWFkUG9zaXRpb25zRnJvbUNzcygpO1xuICAgIHRoaXMuX2NhbGN1bGF0ZVBvc2l0aW9uKCk7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIC8vIFdlIG5lZWQgdG8gdXNlIGNhcHR1cmUgaGVyZSB0byByZWFjdCB0byBhbGwgc2Nyb2xsIGV2ZW50cy5cbiAgICAvLyBJZiBjYXB0dXJlIHdhcyBub3QgdXNlZCwgdGhlbiBzY3JvbGwgZXZlbnRzIGluc2lkZSBzZXBhcmF0ZSBzY3JvbGxcbiAgICAvLyBjb250YWluZXJzIHdvdWxkIG5vdCBiZSBjYXVnaHQuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCksIHtcbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9hYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB0aGlzLl9yZXF1ZXN0Q2FsY3VsYXRlUG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKGFuY2hvciwgeyBib3g6ICdib3JkZXItYm94JyB9KTtcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX292ZXJsYXksIHsgYm94OiAnYm9yZGVyLWJveCcgfSk7XG4gIH1cblxuICBwdWJsaWMgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbmNob3I/LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdhbmNob3ItbmFtZScpO1xuICAgIHRoaXMuX2FuY2hvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZyYW1lID8/PSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5fY2FsY3VsYXRlUG9zaXRpb24oKTtcbiAgICAgIHRoaXMuX2ZyYW1lID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FsY3VsYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbmNob3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdXNlUG9seWZpbGwpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5fZ2V0T3B0aW1hbFBvc2l0aW9uKHRoaXMuX3Bvc2l0aW9ucyk7XG4gICAgICB0aGlzLl9hcHBseU92ZXJsYXlQb3NpdGlvbihwb3NpdGlvbi5wb3NpdGlvbiwgcG9zaXRpb24ubGVmdCwgcG9zaXRpb24udG9wKTtcbiAgICB9XG5cbiAgICB0aGlzLl9vdmVybGF5LnNldEF0dHJpYnV0ZSgnZGF0YS1wb3NpdGlvbicsIHRoaXMuY3VycmVudFBvc2l0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBvcHRpbWFsIHBvc2l0aW9uIHRoYXQgZml0cyB0aGUgb3ZlcmxheS5cbiAgICogQHBhcmFtIHBvc2l0aW9ucyBUaGUgbGlzdCBvZiBwb3NpdGlvbnMgdG8gY2hlY2suXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9nZXRPcHRpbWFsUG9zaXRpb24ocG9zaXRpb25zOiBzdHJpbmdbXSk6IHtcbiAgICBsZWZ0OiBudW1iZXI7XG4gICAgdG9wOiBudW1iZXI7XG4gICAgcG9zaXRpb246IHN0cmluZztcbiAgICBmaXRzPzogYm9vbGVhbjtcbiAgfSB7XG4gICAgY29uc3QgeyBvZmZzZXRIZWlnaHQ6IG92ZXJsYXlIZWlnaHQsIG9mZnNldFdpZHRoOiBvdmVybGF5V2lkdGggfSA9IHRoaXMuX292ZXJsYXk7XG4gICAgY29uc3QgeyBpbm5lckhlaWdodDogdmlld3BvcnRIZWlnaHQsIGlubmVyV2lkdGg6IHZpZXdwb3J0V2lkdGggfSA9IHdpbmRvdztcbiAgICBjb25zdCB7XG4gICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AsXG4gICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCxcbiAgICAgIGhlaWdodDogdHJpZ2dlckhlaWdodCxcbiAgICAgIHdpZHRoOiB0cmlnZ2VyV2lkdGgsXG4gICAgfSA9IHRoaXMuX2FuY2hvciEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBpc1J0bCA9IHRoaXMuX292ZXJsYXkubWF0Y2hlcygnOmRpcihydGwpJyk7XG4gICAgY29uc3QgdG9wU3BhY2UgPSB0cmlnZ2VyT2Zmc2V0VG9wO1xuICAgIGNvbnN0IGJvdHRvbVNwYWNlID0gdmlld3BvcnRIZWlnaHQgLSB0cmlnZ2VySGVpZ2h0IC0gdHJpZ2dlck9mZnNldFRvcDtcbiAgICBjb25zdCBsZWZ0U3BhY2UgPSB0cmlnZ2VyT2Zmc2V0TGVmdDtcbiAgICBjb25zdCByaWdodFNwYWNlID0gdmlld3BvcnRXaWR0aCAtIHRyaWdnZXJXaWR0aCAtIHRyaWdnZXJPZmZzZXRMZWZ0O1xuXG4gICAgLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgb3ZlcmxheSBhbmQgdGhlIHRyaWdnZXIgd2lkdGgvaGVpZ2h0LlxuICAgIGNvbnN0IG92ZXJsYXlXaWR0aE5ldCA9IG92ZXJsYXlXaWR0aCAtIHRyaWdnZXJXaWR0aDtcbiAgICBjb25zdCBvdmVybGF5SGVpZ2h0TmV0ID0gb3ZlcmxheUhlaWdodCAtIHRyaWdnZXJIZWlnaHQ7XG5cbiAgICAvLyBUaGUgYW1vdW50IHRoYXQgd291bGQgZXhjZWVkIHRoZSB0cmlnZ2VyIGlmIHRoZSBvdmVybGF5IHdlcmUgY2VudGVyZWQgb24gaXQuXG4gICAgY29uc3Qgb3ZlcmxheVdpZHRoT3ZlcmxhcCA9IG92ZXJsYXlXaWR0aE5ldCAvIDI7XG4gICAgY29uc3Qgb3ZlcmxheUhlaWdodE92ZXJsYXAgPSBvdmVybGF5SGVpZ2h0TmV0IC8gMjtcblxuICAgIHRoaXMuX292ZXJsYXkuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAnLS1zYmItb3ZlcmxheS1jb250cm9sbGVyLXRyaWdnZXItaGVpZ2h0JyxcbiAgICAgIGAke3RyaWdnZXJIZWlnaHR9cHhgLFxuICAgICk7XG4gICAgdGhpcy5fb3ZlcmxheS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3ZlcmxheS1jb250cm9sbGVyLXRyaWdnZXItd2lkdGgnLCBgJHt0cmlnZ2VyV2lkdGh9cHhgKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWFzc2lnbm1lbnRcbiAgICBsZXQgcmVzdWx0OiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLl9nZXRPcHRpbWFsUG9zaXRpb24+ID0geyBsZWZ0OiAwLCB0b3A6IDAsIHBvc2l0aW9uOiAnJyB9O1xuICAgIGxldCBmaXJzdFBvc2l0aW9uOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLl9nZXRPcHRpbWFsUG9zaXRpb24+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGZvciAoY29uc3QgcG9zaXRpb24gb2YgcG9zaXRpb25zKSB7XG4gICAgICAvLyBJZiBydGwgaXMgZW5hYmxlZCwgd2UgbWFwIHRoZSBsb2dpY2FsIHBvc2l0aW9uIHRvIHRoZWlyIFJUTCBlcXVpdmFsZW50LiAoZS5nLiAnaW5saW5lLXN0YXJ0JyAtPiAnaW5saW5lLWVuZCcpXG4gICAgICBjb25zdCBwaHlzaWNhbFBvc2l0aW9uID1cbiAgICAgICAgaXNSdGwgJiYgbG9naWNhbFN1cHBvcnRlZFBvc2l0aW9ucy5pbmNsdWRlcyhwb3NpdGlvbilcbiAgICAgICAgICA/IHJ0bFBvc2l0aW9uTWFwcGluZ1twb3NpdGlvbl1cbiAgICAgICAgICA6IHBvc2l0aW9uO1xuXG4gICAgICBzd2l0Y2ggKHBoeXNpY2FsUG9zaXRpb24pIHtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgY2FzZSAnYmxvY2stZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoT3ZlcmxhcCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCArIHRyaWdnZXJIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0IDw9IGJvdHRvbVNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aE92ZXJsYXAgPD0gbGVmdFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aE92ZXJsYXAgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICBjYXNlICdibG9jay1zdGFydCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCAtIG92ZXJsYXlXaWR0aE92ZXJsYXAsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgLSBvdmVybGF5SGVpZ2h0LFxuICAgICAgICAgICAgZml0czpcbiAgICAgICAgICAgICAgb3ZlcmxheUhlaWdodCA8PSB0b3BTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGhPdmVybGFwIDw9IGxlZnRTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGhPdmVybGFwIDw9IHJpZ2h0U3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICBjYXNlICdpbmxpbmUtZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0ICsgdHJpZ2dlcldpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wIC0gb3ZlcmxheUhlaWdodE92ZXJsYXAsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGggPD0gcmlnaHRTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0T3ZlcmxhcCA8PSB0b3BTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0T3ZlcmxhcCA8PSBib3R0b21TcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgY2FzZSAnaW5saW5lLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wIC0gb3ZlcmxheUhlaWdodE92ZXJsYXAsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGggPD0gbGVmdFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHRPdmVybGFwIDw9IHRvcFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHRPdmVybGFwIDw9IGJvdHRvbVNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3RvcCBzcGFuLWxlZnQnOlxuICAgICAgICBjYXNlICdibG9jay1zdGFydCBzcGFuLWlubGluZS1zdGFydCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCAtIG92ZXJsYXlXaWR0aE5ldCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCAtIG92ZXJsYXlIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5SGVpZ2h0IDw9IHRvcFNwYWNlICYmIG92ZXJsYXlXaWR0aE5ldCA8PSBsZWZ0U3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndG9wIHNwYW4tcmlnaHQnOlxuICAgICAgICBjYXNlICdibG9jay1zdGFydCBzcGFuLWlubGluZS1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgLSBvdmVybGF5SGVpZ2h0LFxuICAgICAgICAgICAgZml0czogb3ZlcmxheUhlaWdodCA8PSB0b3BTcGFjZSAmJiBvdmVybGF5V2lkdGhOZXQgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20gc3Bhbi1sZWZ0JzpcbiAgICAgICAgY2FzZSAnYmxvY2stZW5kIHNwYW4taW5saW5lLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoTmV0LFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wICsgdHJpZ2dlckhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlIZWlnaHQgPD0gYm90dG9tU3BhY2UgJiYgb3ZlcmxheVdpZHRoTmV0IDw9IGxlZnRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20gc3Bhbi1yaWdodCc6XG4gICAgICAgIGNhc2UgJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgKyB0cmlnZ2VySGVpZ2h0LFxuICAgICAgICAgICAgZml0czogb3ZlcmxheUhlaWdodCA8PSBib3R0b21TcGFjZSAmJiBvdmVybGF5V2lkdGhOZXQgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0IHNwYW4tdG9wJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stc3RhcnQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgKyB0cmlnZ2VySGVpZ2h0IC0gb3ZlcmxheUhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlXaWR0aCA8PSBsZWZ0U3BhY2UgJiYgb3ZlcmxheUhlaWdodE5ldCA8PSB0b3BTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0IHNwYW4tYm90dG9tJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wLFxuICAgICAgICAgICAgZml0czogb3ZlcmxheVdpZHRoIDw9IGxlZnRTcGFjZSAmJiBvdmVybGF5SGVpZ2h0TmV0IDw9IGJvdHRvbVNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0IHNwYW4tdG9wJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0ICsgdHJpZ2dlcldpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wICsgdHJpZ2dlckhlaWdodCAtIG92ZXJsYXlIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5V2lkdGggPD0gcmlnaHRTcGFjZSAmJiBvdmVybGF5SGVpZ2h0TmV0IDw9IHRvcFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0IHNwYW4tYm90dG9tJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLWVuZCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCArIHRyaWdnZXJXaWR0aCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlXaWR0aCA8PSByaWdodFNwYWNlICYmIG92ZXJsYXlIZWlnaHROZXQgPD0gYm90dG9tU3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQuZml0cykge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgZmlyc3RQb3NpdGlvbiA/Pz0gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIElmIG5vIHBvc2l0aW9uIGZpdHMsIHdlIHJldHVybiB0aGUgZmlyc3Qgb25lLlxuICAgIHJldHVybiBmaXJzdFBvc2l0aW9uITtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5T3ZlcmxheVBvc2l0aW9uKHBvc2l0aW9uOiBzdHJpbmcsIGxlZnQ6IG51bWJlciwgdG9wOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9sYXN0UG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICB0aGlzLl9vdmVybGF5LnN0eWxlLmxlZnQgPSBgJHtsZWZ0fXB4YDtcbiAgICB0aGlzLl9vdmVybGF5LnN0eWxlLnRvcCA9IGAke3RvcH1weGA7XG4gIH1cblxuICAvKipcbiAgICogT25seSB1c2VkIGluIHBvbHlmaWxsIG1vZGUuXG4gICAqIFJlYWRzIHRoZSBsaXN0IG9mIHRoZSBjb25maWd1cmVkIHBvc2l0aW9ucyBmcm9tIHRoZSBDU1MgdmFyaWFibGVzLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfcmVhZFBvc2l0aW9uc0Zyb21Dc3MoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9vdmVybGF5U3R5bGVzID8/PSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX292ZXJsYXkpO1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IFtcbiAgICAgIHRoaXMuX292ZXJsYXlTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zYmItb3ZlcmxheS1wb3NpdGlvbi1hcmVhJykgfHwgJ2Jsb2NrLWVuZCcsXG4gICAgICAuLi50aGlzLl9vdmVybGF5U3R5bGVzXG4gICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXNiYi1vdmVybGF5LXBvc2l0aW9uLXRyeS1mYWxsYmFja3MnKVxuICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAubWFwKChmKSA9PiBmLnRyaW0oKSlcbiAgICAgICAgLmZpbHRlcigoZikgPT4gISFmKSxcbiAgICBdO1xuXG4gICAgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYgJiYgcG9zaXRpb25zLnNvbWUoKHApID0+ICFzdXBwb3J0ZWRQb3NpdGlvbnMuaW5jbHVkZXMocCkpKSB7XG4gICAgICBjb25zdCB1bnN1cHBvcnRlZFBvc2l0aW9ucyA9IHBvc2l0aW9uc1xuICAgICAgICAuZmlsdGVyKChwKSA9PiAhc3VwcG9ydGVkUG9zaXRpb25zLmluY2x1ZGVzKHApKVxuICAgICAgICAuc29ydCgpXG4gICAgICAgIC5qb2luKCcsICcpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5zdXBwb3J0ZWQgcG9zaXRpb24tdHJ5LWZhbGxiYWNrcyAke3Vuc3VwcG9ydGVkUG9zaXRpb25zfSAoU3VwcG9ydGVkOiAke3N1cHBvcnRlZFBvc2l0aW9ucy5qb2luKCcsICcpfSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wb3NpdGlvbnMgPSBwb3NpdGlvbnM7XG4gICAgaWYgKHRoaXMuX2xhc3RQb3NpdGlvbiAmJiAhdGhpcy5fcG9zaXRpb25zLmluY2x1ZGVzKHRoaXMuX2xhc3RQb3NpdGlvbikpIHtcbiAgICAgIHRoaXMuX2xhc3RQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFFQSxJQUFNLDZCQUE2QixDQUFDLFlBQVksSUFBSSxTQUFTLGVBQWUsU0FBUztBQUVyRixJQUFNLDZCQUE2QjtDQUNqQztDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDRDtBQUdELElBQU0sNEJBQTRCO0NBQ2hDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNEO0FBRUQsSUFBTSxxQkFBZ0Q7Q0FDcEQsZUFBZTtDQUNmLGFBQWE7Q0FDYixnQkFBZ0I7Q0FDaEIsY0FBYztDQUNkLGlDQUFpQztDQUNqQywrQkFBK0I7Q0FDL0IsK0JBQStCO0NBQy9CLDZCQUE2QjtDQUM3QixpQ0FBaUM7Q0FDakMsK0JBQStCO0NBQy9CLCtCQUErQjtDQUMvQiw2QkFBNkI7Q0FDOUI7QUFFMEIsQ0FBQyxHQUFHLDRCQUE0QixHQUFHLDBCQUEwQjtBQUN4RixJQUFJLFNBQVM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJiLElBQWEsK0JBQWIsTUFBeUM7O0NBY3ZDLElBQVcsa0JBQWU7RUFDeEIsSUFBSSxLQUFLLGNBQ1AsT0FBTyxLQUFLLGlCQUFpQixLQUFLLFdBQVcsTUFBTTtPQUM5QztHQUNMLEtBQUssbUJBQW1CLGlCQUFpQixLQUFLLFNBQVM7R0FDdkQsT0FBTyxLQUFLLGVBQWUsaUJBQWlCLGdCQUFnQjs7O0NBSWhFLFlBQ0UsTUFDUSxlQUFlLENBQUMsNEJBQTBCO0VBQTFDLEtBQUEsZUFBQTtFQXhCTyxLQUFBLGtCQUFrQixDQUFDLFdBQ2hDLElBQUkscUJBQXFCLEtBQUssMkJBQTJCLENBQUMsR0FDMUQ7RUFNSSxLQUFB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
302
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1wb3NpdGlvbi1jb250cm9sbGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL292ZXJsYXktcG9zaXRpb24tY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmNvbnN0IGNzc0FuY2hvclBvc2l0aW9uU3VwcG9ydGVkID0gIWlzU2VydmVyICYmIENTUy5zdXBwb3J0cygnYW5jaG9yLW5hbWUnLCAnLS10ZXN0Jyk7XG5cbmNvbnN0IHBoeXNpY2FsU3VwcG9ydGVkUG9zaXRpb25zID0gW1xuICAndG9wJyxcbiAgJ2JvdHRvbScsXG4gICdsZWZ0JyxcbiAgJ3JpZ2h0JyxcbiAgJ3RvcCBzcGFuLWxlZnQnLFxuICAndG9wIHNwYW4tcmlnaHQnLFxuICAnYm90dG9tIHNwYW4tbGVmdCcsXG4gICdib3R0b20gc3Bhbi1yaWdodCcsXG4gICdsZWZ0IHNwYW4tdG9wJyxcbiAgJ2xlZnQgc3Bhbi1ib3R0b20nLFxuICAncmlnaHQgc3Bhbi10b3AnLFxuICAncmlnaHQgc3Bhbi1ib3R0b20nLFxuXTtcblxuLy8gTm90ZTogaWYgeW91IGFkZCBuZXcgbG9naWNhbCBzdXBwb3J0ZWQgcG9zaXRpb25zLCB1cGRhdGUgYWxzbyB0aGUgJ3J0bFBvc2l0aW9uTWFwcGluZydcbmNvbnN0IGxvZ2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnMgPSBbXG4gICdibG9jay1zdGFydCcsXG4gICdibG9jay1lbmQnLFxuICAnaW5saW5lLXN0YXJ0JyxcbiAgJ2lubGluZS1lbmQnLFxuICAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtZW5kJyxcbiAgJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1zdGFydCcsXG4gICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtZW5kJyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLXN0YXJ0JyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCcsXG4gICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stc3RhcnQnLFxuICAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLWVuZCcsXG5dO1xuXG5jb25zdCBydGxQb3NpdGlvbk1hcHBpbmc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICdibG9jay1zdGFydCc6ICdibG9jay1zdGFydCcsXG4gICdibG9jay1lbmQnOiAnYmxvY2stZW5kJyxcbiAgJ2lubGluZS1zdGFydCc6ICdpbmxpbmUtZW5kJyxcbiAgJ2lubGluZS1lbmQnOiAnaW5saW5lLXN0YXJ0JyxcbiAgJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLXN0YXJ0JzogJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLWVuZCcsXG4gICdibG9jay1zdGFydCBzcGFuLWlubGluZS1lbmQnOiAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnYmxvY2stZW5kIHNwYW4taW5saW5lLXN0YXJ0JzogJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1lbmQnLFxuICAnYmxvY2stZW5kIHNwYW4taW5saW5lLWVuZCc6ICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stc3RhcnQnOiAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLXN0YXJ0JyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCc6ICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJyxcbiAgJ2lubGluZS1lbmQgc3Bhbi1ibG9jay1zdGFydCc6ICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1zdGFydCcsXG4gICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJzogJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCcsXG59O1xuXG5jb25zdCBzdXBwb3J0ZWRQb3NpdGlvbnMgPSBbLi4ucGh5c2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnMsIC4uLmxvZ2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnNdO1xubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQ29udHJvbGxlciBmb3IgbWFuYWdpbmcgb3ZlcmxheXMgcG9zaXRpb25pbmcuIEFsc28gYWN0cyBhcyBhIHBvbHlmaWxsIHdoZW4gbmF0aXZlXG4gKiBDU1MgQW5jaG9yIFBvc2l0aW9uaW5nIGlzIG5vdCBzdXBwb3J0ZWQgKGVub3VnaCkuXG4gKiBBcHBsaWVzIHVuaXF1ZSBhbmNob3IgbmFtZXMgd2hlbiB1c2luZyBuYXRpdmUgQ1NTIEFuY2hvciBQb3NpdGlvbmluZ1xuICogb3IgY2FsY3VsYXRlcyBhbmQgYXBwbGllcyBjb3JyZWN0IHBvc2l0aW9ucyBpbiBwb2x5ZmlsbCBtb2RlLlxuICpcbiAqIEFsc28sIHRoZSBjb250cm9sbGVyIHNldHMgdGhlICdkYXRhLXBvc2l0aW9uJyBhdHRyaWJ1dGUgb24gdGhlIG92ZXJsYXkgZWxlbWVudC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXBwbHkgc3BlY2lmaWMgc3R5bGVzIGJhc2VkIG9uIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBvdmVybGF5LlxuICpcbiAqICMjIyBJbXBsZW1lbnRhdGlvblxuICogRGVmaW5lIGFuZCBhcHBseSB0aGUgZm9sbG93aW5nIENTUyB2YXJpYWJsZXMgb24gdGhlIG92ZXJsYXkgZWxlbWVudDpcbiAqIGBgYHNjc3NcbiAqICAgLS1zYmItb3ZlcmxheS1wb3NpdGlvbi1hcmVhOiBibG9jay1lbmQ7IC8vIERlZmF1bHRcbiAqICAgLS1zYmItb3ZlcmxheS1wb3NpdGlvbi10cnktZmFsbGJhY2tzOiBibG9jay1zdGFydCwgaW5saW5lLWVuZCwgaW5saW5lLXN0YXJ0OyAvLyBGYWxsYmFja3NcbiAqXG4gKiAgIHBvc2l0aW9uLWFyZWE6IHZhcigtLXNiYi1vdmVybGF5LXBvc2l0aW9uLWFyZWEpO1xuICogICBwb3NpdGlvbi10cnktZmFsbGJhY2tzOiB2YXIoLS1zYmItb3ZlcmxheS1wb3NpdGlvbi10cnktZmFsbGJhY2tzKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU2JiT3ZlcmxheVBvc2l0aW9uQ29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc2l6ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy5fcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCkpXG4gICAgOiBudWxsITtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcmxheTogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9hYm9ydENvbnRyb2xsZXI/OiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2FuY2hvcj86IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9vdmVybGF5U3R5bGVzPzogQ1NTU3R5bGVEZWNsYXJhdGlvbjtcbiAgcHJpdmF0ZSBfZnJhbWU/OiBSZXR1cm5UeXBlPHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU+O1xuICBwcml2YXRlIF9hbmNob3JOYW1lID0gYC0tc2JiLW92ZXJsYXktYW5jaG9yLSR7KytuZXh0SWR9YDtcbiAgcHJpdmF0ZSBfcG9zaXRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIF9sYXN0UG9zaXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqIEdldCB0aGUgY3VycmVudCBwb3NpdGlvbi4gKGUuZy4gYmxvY2stZW5kLCBibG9jay1zdGFydCwgZXRjLikgKi9cbiAgcHVibGljIGdldCBjdXJyZW50UG9zaXRpb24oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fdXNlUG9seWZpbGwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9sYXN0UG9zaXRpb24gPz8gdGhpcy5fcG9zaXRpb25zWzBdID8/ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9vdmVybGF5U3R5bGVzID8/PSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX292ZXJsYXkpO1xuICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXlTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgncG9zaXRpb24tYXJlYScpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0ICYgSFRNTEVsZW1lbnQsXG4gICAgcHJpdmF0ZSBfdXNlUG9seWZpbGwgPSAhY3NzQW5jaG9yUG9zaXRpb25TdXBwb3J0ZWQsXG4gICkge1xuICAgIGhvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgICB0aGlzLl9vdmVybGF5ID0gaG9zdDtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdXNlUG9seWZpbGwpIHtcbiAgICAgIHRoaXMuX292ZXJsYXkuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uLWFuY2hvcicsIHRoaXMuX2FuY2hvck5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNldCB0aGUgJ3Bvc2l0aW9uLWFyZWEnIHZhbHVlIHRvIGF2b2lkIGFueSB1bndhbnRlZCBzaWRlIGVmZmVjdCB3aGVuIHVzaW5nIHRoZSBwb2x5ZmlsbC5cbiAgICAgIHRoaXMuX292ZXJsYXkuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uLWFyZWEnLCAnaW5pdGlhbCcpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBob3N0VXBkYXRlKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9yZWFkUG9zaXRpb25zRnJvbUNzcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbm5lY3RzIHRoZSBvdmVybGF5IHRvIHRoZSBnaXZlbiB0cmlnZ2VyIGVsZW1lbnQgYW5kIGRldGVybWluZXMgdGhlIG9wdGltYWwgcG9zaXRpb24uXG4gICAqIFVzdWFsbHksIHRoaXMgaXMgY2FsbGVkIHdoZW4gdGhlIG92ZXJsYXkgaXMgb3BlbmVkLlxuICAgKiBAcGFyYW0gYW5jaG9yIFRoZSBhbmNob3IgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBjb25uZWN0KGFuY2hvcjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYW5jaG9yKSB7XG4gICAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gICAgdGhpcy5fYW5jaG9yID0gYW5jaG9yO1xuXG4gICAgaWYgKCF0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgdGhpcy5fYW5jaG9yLnN0eWxlLnNldFByb3BlcnR5KCdhbmNob3ItbmFtZScsIHRoaXMuX2FuY2hvck5hbWUhKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWFkUG9zaXRpb25zRnJvbUNzcygpO1xuICAgIHRoaXMuX2NhbGN1bGF0ZVBvc2l0aW9uKCk7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIC8vIFdlIG5lZWQgdG8gdXNlIGNhcHR1cmUgaGVyZSB0byByZWFjdCB0byBhbGwgc2Nyb2xsIGV2ZW50cy5cbiAgICAvLyBJZiBjYXB0dXJlIHdhcyBub3QgdXNlZCwgdGhlbiBzY3JvbGwgZXZlbnRzIGluc2lkZSBzZXBhcmF0ZSBzY3JvbGxcbiAgICAvLyBjb250YWluZXJzIHdvdWxkIG5vdCBiZSBjYXVnaHQuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCksIHtcbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9hYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB0aGlzLl9yZXF1ZXN0Q2FsY3VsYXRlUG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKGFuY2hvciwgeyBib3g6ICdib3JkZXItYm94JyB9KTtcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX292ZXJsYXksIHsgYm94OiAnYm9yZGVyLWJveCcgfSk7XG4gIH1cblxuICBwdWJsaWMgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbmNob3I/LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdhbmNob3ItbmFtZScpO1xuICAgIHRoaXMuX2FuY2hvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZyYW1lID8/PSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5fY2FsY3VsYXRlUG9zaXRpb24oKTtcbiAgICAgIHRoaXMuX2ZyYW1lID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FsY3VsYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbmNob3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdXNlUG9seWZpbGwpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5fZ2V0T3B0aW1hbFBvc2l0aW9uKHRoaXMuX3Bvc2l0aW9ucyk7XG4gICAgICB0aGlzLl9hcHBseU92ZXJsYXlQb3NpdGlvbihwb3NpdGlvbi5wb3NpdGlvbiwgcG9zaXRpb24ubGVmdCwgcG9zaXRpb24udG9wKTtcbiAgICB9XG5cbiAgICB0aGlzLl9vdmVybGF5LnNldEF0dHJpYnV0ZSgnZGF0YS1wb3NpdGlvbicsIHRoaXMuY3VycmVudFBvc2l0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBvcHRpbWFsIHBvc2l0aW9uIHRoYXQgZml0cyB0aGUgb3ZlcmxheS5cbiAgICogQHBhcmFtIHBvc2l0aW9ucyBUaGUgbGlzdCBvZiBwb3NpdGlvbnMgdG8gY2hlY2suXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9nZXRPcHRpbWFsUG9zaXRpb24ocG9zaXRpb25zOiBzdHJpbmdbXSk6IHtcbiAgICBsZWZ0OiBudW1iZXI7XG4gICAgdG9wOiBudW1iZXI7XG4gICAgcG9zaXRpb246IHN0cmluZztcbiAgICBmaXRzPzogYm9vbGVhbjtcbiAgfSB7XG4gICAgY29uc3QgeyBvZmZzZXRIZWlnaHQ6IG92ZXJsYXlIZWlnaHQsIG9mZnNldFdpZHRoOiBvdmVybGF5V2lkdGggfSA9IHRoaXMuX292ZXJsYXk7XG4gICAgY29uc3QgeyBpbm5lckhlaWdodDogdmlld3BvcnRIZWlnaHQsIGlubmVyV2lkdGg6IHZpZXdwb3J0V2lkdGggfSA9IHdpbmRvdztcbiAgICBjb25zdCB7XG4gICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AsXG4gICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCxcbiAgICAgIGhlaWdodDogdHJpZ2dlckhlaWdodCxcbiAgICAgIHdpZHRoOiB0cmlnZ2VyV2lkdGgsXG4gICAgfSA9IHRoaXMuX2FuY2hvciEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBpc1J0bCA9IHRoaXMuX292ZXJsYXkubWF0Y2hlcygnOmRpcihydGwpJyk7XG4gICAgY29uc3QgdG9wU3BhY2UgPSB0cmlnZ2VyT2Zmc2V0VG9wO1xuICAgIGNvbnN0IGJvdHRvbVNwYWNlID0gdmlld3BvcnRIZWlnaHQgLSB0cmlnZ2VySGVpZ2h0IC0gdHJpZ2dlck9mZnNldFRvcDtcbiAgICBjb25zdCBsZWZ0U3BhY2UgPSB0cmlnZ2VyT2Zmc2V0TGVmdDtcbiAgICBjb25zdCByaWdodFNwYWNlID0gdmlld3BvcnRXaWR0aCAtIHRyaWdnZXJXaWR0aCAtIHRyaWdnZXJPZmZzZXRMZWZ0O1xuXG4gICAgLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgb3ZlcmxheSBhbmQgdGhlIHRyaWdnZXIgd2lkdGgvaGVpZ2h0LlxuICAgIGNvbnN0IG92ZXJsYXlXaWR0aE5ldCA9IG92ZXJsYXlXaWR0aCAtIHRyaWdnZXJXaWR0aDtcbiAgICBjb25zdCBvdmVybGF5SGVpZ2h0TmV0ID0gb3ZlcmxheUhlaWdodCAtIHRyaWdnZXJIZWlnaHQ7XG5cbiAgICAvLyBUaGUgYW1vdW50IHRoYXQgd291bGQgZXhjZWVkIHRoZSB0cmlnZ2VyIGlmIHRoZSBvdmVybGF5IHdlcmUgY2VudGVyZWQgb24gaXQuXG4gICAgY29uc3Qgb3ZlcmxheVdpZHRoT3ZlcmxhcCA9IG92ZXJsYXlXaWR0aE5ldCAvIDI7XG4gICAgY29uc3Qgb3ZlcmxheUhlaWdodE92ZXJsYXAgPSBvdmVybGF5SGVpZ2h0TmV0IC8gMjtcblxuICAgIHRoaXMuX292ZXJsYXkuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAnLS1zYmItb3ZlcmxheS1jb250cm9sbGVyLXRyaWdnZXItaGVpZ2h0JyxcbiAgICAgIGAke3RyaWdnZXJIZWlnaHR9cHhgLFxuICAgICk7XG4gICAgdGhpcy5fb3ZlcmxheS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3ZlcmxheS1jb250cm9sbGVyLXRyaWdnZXItd2lkdGgnLCBgJHt0cmlnZ2VyV2lkdGh9cHhgKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWFzc2lnbm1lbnRcbiAgICBsZXQgcmVzdWx0OiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLl9nZXRPcHRpbWFsUG9zaXRpb24+ID0geyBsZWZ0OiAwLCB0b3A6IDAsIHBvc2l0aW9uOiAnJyB9O1xuICAgIGxldCBmaXJzdFBvc2l0aW9uOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLl9nZXRPcHRpbWFsUG9zaXRpb24+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGZvciAoY29uc3QgcG9zaXRpb24gb2YgcG9zaXRpb25zKSB7XG4gICAgICAvLyBJZiBydGwgaXMgZW5hYmxlZCwgd2UgbWFwIHRoZSBsb2dpY2FsIHBvc2l0aW9uIHRvIHRoZWlyIFJUTCBlcXVpdmFsZW50LiAoZS5nLiAnaW5saW5lLXN0YXJ0JyAtPiAnaW5saW5lLWVuZCcpXG4gICAgICBjb25zdCBwaHlzaWNhbFBvc2l0aW9uID1cbiAgICAgICAgaXNSdGwgJiYgbG9naWNhbFN1cHBvcnRlZFBvc2l0aW9ucy5pbmNsdWRlcyhwb3NpdGlvbilcbiAgICAgICAgICA/IHJ0bFBvc2l0aW9uTWFwcGluZ1twb3NpdGlvbl1cbiAgICAgICAgICA6IHBvc2l0aW9uO1xuXG4gICAgICBzd2l0Y2ggKHBoeXNpY2FsUG9zaXRpb24pIHtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgY2FzZSAnYmxvY2stZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoT3ZlcmxhcCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCArIHRyaWdnZXJIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0IDw9IGJvdHRvbVNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aE92ZXJsYXAgPD0gbGVmdFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aE92ZXJsYXAgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICBjYXNlICdibG9jay1zdGFydCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCAtIG92ZXJsYXlXaWR0aE92ZXJsYXAsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgLSBvdmVybGF5SGVpZ2h0LFxuICAgICAgICAgICAgZml0czpcbiAgICAgICAgICAgICAgb3ZlcmxheUhlaWdodCA8PSB0b3BTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGhPdmVybGFwIDw9IGxlZnRTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGhPdmVybGFwIDw9IHJpZ2h0U3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICBjYXNlICdpbmxpbmUtZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0ICsgdHJpZ2dlcldpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wIC0gb3ZlcmxheUhlaWdodE92ZXJsYXAsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGggPD0gcmlnaHRTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0T3ZlcmxhcCA8PSB0b3BTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0T3ZlcmxhcCA8PSBib3R0b21TcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgY2FzZSAnaW5saW5lLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wIC0gb3ZlcmxheUhlaWdodE92ZXJsYXAsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGggPD0gbGVmdFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHRPdmVybGFwIDw9IHRvcFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHRPdmVybGFwIDw9IGJvdHRvbVNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3RvcCBzcGFuLWxlZnQnOlxuICAgICAgICBjYXNlICdibG9jay1zdGFydCBzcGFuLWlubGluZS1zdGFydCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCAtIG92ZXJsYXlXaWR0aE5ldCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCAtIG92ZXJsYXlIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5SGVpZ2h0IDw9IHRvcFNwYWNlICYmIG92ZXJsYXlXaWR0aE5ldCA8PSBsZWZ0U3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndG9wIHNwYW4tcmlnaHQnOlxuICAgICAgICBjYXNlICdibG9jay1zdGFydCBzcGFuLWlubGluZS1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgLSBvdmVybGF5SGVpZ2h0LFxuICAgICAgICAgICAgZml0czogb3ZlcmxheUhlaWdodCA8PSB0b3BTcGFjZSAmJiBvdmVybGF5V2lkdGhOZXQgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20gc3Bhbi1sZWZ0JzpcbiAgICAgICAgY2FzZSAnYmxvY2stZW5kIHNwYW4taW5saW5lLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoTmV0LFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wICsgdHJpZ2dlckhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlIZWlnaHQgPD0gYm90dG9tU3BhY2UgJiYgb3ZlcmxheVdpZHRoTmV0IDw9IGxlZnRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20gc3Bhbi1yaWdodCc6XG4gICAgICAgIGNhc2UgJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgKyB0cmlnZ2VySGVpZ2h0LFxuICAgICAgICAgICAgZml0czogb3ZlcmxheUhlaWdodCA8PSBib3R0b21TcGFjZSAmJiBvdmVybGF5V2lkdGhOZXQgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0IHNwYW4tdG9wJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stc3RhcnQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgKyB0cmlnZ2VySGVpZ2h0IC0gb3ZlcmxheUhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlXaWR0aCA8PSBsZWZ0U3BhY2UgJiYgb3ZlcmxheUhlaWdodE5ldCA8PSB0b3BTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0IHNwYW4tYm90dG9tJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wLFxuICAgICAgICAgICAgZml0czogb3ZlcmxheVdpZHRoIDw9IGxlZnRTcGFjZSAmJiBvdmVybGF5SGVpZ2h0TmV0IDw9IGJvdHRvbVNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0IHNwYW4tdG9wJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0ICsgdHJpZ2dlcldpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wICsgdHJpZ2dlckhlaWdodCAtIG92ZXJsYXlIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5V2lkdGggPD0gcmlnaHRTcGFjZSAmJiBvdmVybGF5SGVpZ2h0TmV0IDw9IHRvcFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0IHNwYW4tYm90dG9tJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLWVuZCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCArIHRyaWdnZXJXaWR0aCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlXaWR0aCA8PSByaWdodFNwYWNlICYmIG92ZXJsYXlIZWlnaHROZXQgPD0gYm90dG9tU3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQuZml0cykge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgZmlyc3RQb3NpdGlvbiA/Pz0gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIElmIG5vIHBvc2l0aW9uIGZpdHMsIHdlIHJldHVybiB0aGUgZmlyc3Qgb25lLlxuICAgIHJldHVybiBmaXJzdFBvc2l0aW9uITtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5T3ZlcmxheVBvc2l0aW9uKHBvc2l0aW9uOiBzdHJpbmcsIGxlZnQ6IG51bWJlciwgdG9wOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9sYXN0UG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICB0aGlzLl9vdmVybGF5LnN0eWxlLmxlZnQgPSBgJHtsZWZ0fXB4YDtcbiAgICB0aGlzLl9vdmVybGF5LnN0eWxlLnRvcCA9IGAke3RvcH1weGA7XG4gIH1cblxuICAvKipcbiAgICogT25seSB1c2VkIGluIHBvbHlmaWxsIG1vZGUuXG4gICAqIFJlYWRzIHRoZSBsaXN0IG9mIHRoZSBjb25maWd1cmVkIHBvc2l0aW9ucyBmcm9tIHRoZSBDU1MgdmFyaWFibGVzLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfcmVhZFBvc2l0aW9uc0Zyb21Dc3MoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9vdmVybGF5U3R5bGVzID8/PSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX292ZXJsYXkpO1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IFtcbiAgICAgIHRoaXMuX292ZXJsYXlTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zYmItb3ZlcmxheS1wb3NpdGlvbi1hcmVhJykgfHwgJ2Jsb2NrLWVuZCcsXG4gICAgICAuLi50aGlzLl9vdmVybGF5U3R5bGVzXG4gICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXNiYi1vdmVybGF5LXBvc2l0aW9uLXRyeS1mYWxsYmFja3MnKVxuICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAubWFwKChmKSA9PiBmLnRyaW0oKSlcbiAgICAgICAgLmZpbHRlcigoZikgPT4gISFmKSxcbiAgICBdO1xuXG4gICAgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYgJiYgcG9zaXRpb25zLnNvbWUoKHApID0+ICFzdXBwb3J0ZWRQb3NpdGlvbnMuaW5jbHVkZXMocCkpKSB7XG4gICAgICBjb25zdCB1bnN1cHBvcnRlZFBvc2l0aW9ucyA9IHBvc2l0aW9uc1xuICAgICAgICAuZmlsdGVyKChwKSA9PiAhc3VwcG9ydGVkUG9zaXRpb25zLmluY2x1ZGVzKHApKVxuICAgICAgICAuc29ydCgpXG4gICAgICAgIC5qb2luKCcsICcpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5zdXBwb3J0ZWQgcG9zaXRpb24tdHJ5LWZhbGxiYWNrcyAke3Vuc3VwcG9ydGVkUG9zaXRpb25zfSAoU3VwcG9ydGVkOiAke3N1cHBvcnRlZFBvc2l0aW9ucy5qb2luKCcsICcpfSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wb3NpdGlvbnMgPSBwb3NpdGlvbnM7XG4gICAgaWYgKHRoaXMuX2xhc3RQb3NpdGlvbiAmJiAhdGhpcy5fcG9zaXRpb25zLmluY2x1ZGVzKHRoaXMuX2xhc3RQb3NpdGlvbikpIHtcbiAgICAgIHRoaXMuX2xhc3RQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFFQSxJQUFNLDZCQUE2QixDQUFDLFlBQVksSUFBSSxTQUFTLGVBQWUsUUFBUTtBQUVwRixJQUFNLDZCQUE2QjtDQUNqQztDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7O0FBSUYsSUFBTSw0QkFBNEI7Q0FDaEM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBOztBQUdGLElBQU0scUJBQWdEO0NBQ3BELGVBQWU7Q0FDZixhQUFhO0NBQ2IsZ0JBQWdCO0NBQ2hCLGNBQWM7Q0FDZCxpQ0FBaUM7Q0FDakMsK0JBQStCO0NBQy9CLCtCQUErQjtDQUMvQiw2QkFBNkI7Q0FDN0IsaUNBQWlDO0NBQ2pDLCtCQUErQjtDQUMvQiwrQkFBK0I7Q0FDL0IsNkJBQTZCOztBQUdKLENBQUMsR0FBRyw0QkFBNEIsR0FBRyx5QkFBeUI7QUFDdkYsSUFBSSxTQUFTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCYixJQUFhLCtCQUFiLE1BQXlDOztDQWN2QyxJQUFXLGtCQUFlO0VBQ3hCLElBQUksS0FBSyxjQUNQLE9BQU8sS0FBSyxpQkFBaUIsS0FBSyxXQUFXLE1BQU07T0FDOUM7R0FDTCxLQUFLLG1CQUFtQixpQkFBaUIsS0FBSyxRQUFRO0dBQ3RELE9BQU8sS0FBSyxlQUFlLGlCQUFpQixlQUFlO0VBQzdEO0NBQ0Y7Q0FFQSxZQUNFLE1BQ1EsZUFBZSxDQUFDLDRCQUEwQjtFQUExQyxLQUFBLGVBQUE7RUF4Qk8sS0FBQSxrQkFBa0IsQ0FBQyxXQUNoQyxJQUFJLHFCQUFxQixLQUFLLDBCQUF5QixDQUFFLElBQ3pEO0VBTUksS0FBQSxjQUFjLHdC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
@@ -93,4 +93,4 @@ var SbbPropertyWatcherController = class {
93
93
  //#endregion
94
94
  export { SbbPropertyWatcherController };
95
95
 
96
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktd2F0Y2hlci1jb250cm9sbGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL3Byb3BlcnR5LXdhdGNoZXItY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc1NlcnZlcixcbiAgdHlwZSBMaXRFbGVtZW50LFxuICB0eXBlIFJlYWN0aXZlQ29udHJvbGxlcixcbiAgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0LFxufSBmcm9tICdsaXQnO1xuXG50eXBlIFByb3BlcnR5V2F0Y2hlckhhbmRsZXI8VCBleHRlbmRzIExpdEVsZW1lbnQ+ID0gKHJlZmVyZW5jZTogVCkgPT4gdm9pZDtcblxuY2xhc3MgUHJvcGVydHlXYXRjaGVyPFQgZXh0ZW5kcyBMaXRFbGVtZW50PiBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHByaXZhdGUgX3ZhbHVlOiB1bmtub3duO1xuICBwcml2YXRlIF9oYW5kbGVycyA9IG5ldyBTZXQ8UHJvcGVydHlXYXRjaGVySGFuZGxlcjxUPj4oKTtcbiAgcHJpdmF0ZSBfaG9zdERlZmluZWRQcm9taXNlOiBQcm9taXNlPHZvaWQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2hhbmRsZXJzLnNpemU7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaG9zdDogVCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcm9wZXJ0eTogc3RyaW5nLFxuICApIHtcbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICBpZiAoY3VzdG9tRWxlbWVudHMuZ2V0KHRoaXMuX2hvc3QubG9jYWxOYW1lKSkge1xuICAgICAgICBjdXN0b21FbGVtZW50cy51cGdyYWRlKHRoaXMuX2hvc3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhlIGhvc3QgZWxlbWVudCBpcyBub3QgeWV0IGRlZmluZWQsIHdhaXQgZm9yIGl0cyBkZWZpbml0aW9uIGJlZm9yZSB1cGdyYWRpbmdcbiAgICAgICAgdGhpcy5faG9zdERlZmluZWRQcm9taXNlID0gY3VzdG9tRWxlbWVudHMud2hlbkRlZmluZWQodGhpcy5faG9zdC5sb2NhbE5hbWUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGN1c3RvbUVsZW1lbnRzLnVwZ3JhZGUodGhpcy5faG9zdCk7XG4gICAgICAgICAgdGhpcy5faG9zdERlZmluZWRQcm9taXNlID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3ZhbHVlID0gKHRoaXMuX2hvc3QgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbdGhpcy5fcHJvcGVydHldO1xuICB9XG5cbiAgcHVibGljIGFkZEhhbmRsZXIoaGFuZGxlcjogUHJvcGVydHlXYXRjaGVySGFuZGxlcjxUPik6IHZvaWQge1xuICAgIGlmICghdGhpcy5faGFuZGxlcnMuc2l6ZSkge1xuICAgICAgLy8gV2UgY2hlY2sgaWYgdGhlIGFkZENvbnRyb2xsZXIgbWV0aG9kIGlzIGF2YWlsYWJsZSAoZWxlbWVudCB3YXMgZGVmaW5lZCAmJiB1cGdyYWRlZCksIG90aGVyd2lzZSB3ZSB3YWl0IGZvciB0aGUgaG9zdCB0byBiZSBkZWZpbmVkXG4gICAgICBpZiAodGhpcy5faG9zdC5hZGRDb250cm9sbGVyKSB7XG4gICAgICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5faG9zdERlZmluZWRQcm9taXNlKSB7XG4gICAgICAgIHRoaXMuX2hvc3REZWZpbmVkUHJvbWlzZS50aGVuKCgpID0+IHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2hhbmRsZXJzLmFkZChoYW5kbGVyKTtcblxuICAgIGlmICghdGhpcy5faG9zdERlZmluZWRQcm9taXNlKSB7XG4gICAgICBoYW5kbGVyKHRoaXMuX2hvc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9ob3N0RGVmaW5lZFByb21pc2UudGhlbigoKSA9PiBoYW5kbGVyKHRoaXMuX2hvc3QpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlSGFuZGxlcihoYW5kbGVyOiBQcm9wZXJ0eVdhdGNoZXJIYW5kbGVyPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5faGFuZGxlcnMuZGVsZXRlKGhhbmRsZXIpO1xuICAgIGlmICghdGhpcy5faGFuZGxlcnMuc2l6ZSkge1xuICAgICAgLy8gV2UgY2hlY2sgaWYgdGhlIHJlbW92ZUNvbnRyb2xsZXIgbWV0aG9kIGlzIGF2YWlsYWJsZSAoZWxlbWVudCB3YXMgZGVmaW5lZCAmJiB1cGdyYWRlZCksIG90aGVyd2lzZSB3ZSB3YWl0IGZvciB0aGUgaG9zdCB0byBiZSBkZWZpbmVkXG4gICAgICBpZiAodGhpcy5faG9zdC5yZW1vdmVDb250cm9sbGVyKSB7XG4gICAgICAgIHRoaXMuX2hvc3QucmVtb3ZlQ29udHJvbGxlcih0aGlzKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5faG9zdERlZmluZWRQcm9taXNlKSB7XG4gICAgICAgIHRoaXMuX2hvc3REZWZpbmVkUHJvbWlzZS50aGVuKCgpID0+IHRoaXMuX2hvc3QucmVtb3ZlQ29udHJvbGxlcih0aGlzKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvc3RVcGRhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gKHRoaXMuX2hvc3QgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbdGhpcy5fcHJvcGVydHldO1xuICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IGN1cnJlbnRWYWx1ZTtcbiAgICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiB0aGlzLl9oYW5kbGVycykge1xuICAgICAgICBoYW5kbGVyKHRoaXMuX2hvc3QpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBwcm9wZXJ0eVdhdGNoZXJzID0gbmV3IFdlYWtNYXA8TGl0RWxlbWVudCwgTWFwPHN0cmluZywgUHJvcGVydHlXYXRjaGVyPGFueT4+PigpO1xuXG5leHBvcnQgY2xhc3MgU2JiUHJvcGVydHlXYXRjaGVyQ29udHJvbGxlcjxUIGV4dGVuZHMgTGl0RWxlbWVudD4gaW1wbGVtZW50cyBSZWFjdGl2ZUNvbnRyb2xsZXIge1xuICBwcml2YXRlIF9yZWZlcmVuY2U/OiBUIHwgbnVsbDtcbiAgcHJpdmF0ZSBfd2F0Y2hlcnM/OiBNYXA8c3RyaW5nLCBQcm9wZXJ0eVdhdGNoZXI8VD4+O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0ICYgSFRNTEVsZW1lbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVmZXJlbmNlUmVzb2x2ZXI6ICgpID0+IFQgfCBudWxsLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZXJzOiBQYXJ0aWFsPFJlY29yZDxrZXlvZiBULCBQcm9wZXJ0eVdhdGNoZXJIYW5kbGVyPFQ+Pj4sXG4gICkge1xuICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuY29ubmVjdCgpO1xuICB9XG5cbiAgcHVibGljIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JlZmVyZW5jZSAhPT0gdGhpcy5fcmVmZXJlbmNlUmVzb2x2ZXIoKSkge1xuICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNvbm5lY3QoKTogdm9pZCB7XG4gICAgY29uc3QgcmVmZXJlbmNlID0gdGhpcy5fcmVmZXJlbmNlUmVzb2x2ZXIoKTtcbiAgICBpZiAodGhpcy5fcmVmZXJlbmNlID09PSByZWZlcmVuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fcmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICAgIGlmICghdGhpcy5fcmVmZXJlbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCB3YXRjaGVycyA9IHByb3BlcnR5V2F0Y2hlcnMuZ2V0KHRoaXMuX3JlZmVyZW5jZSkgYXNcbiAgICAgIHwgTWFwPHN0cmluZywgUHJvcGVydHlXYXRjaGVyPFQ+PlxuICAgICAgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCF3YXRjaGVycykge1xuICAgICAgd2F0Y2hlcnMgPSBuZXcgTWFwKCk7XG4gICAgICBwcm9wZXJ0eVdhdGNoZXJzLnNldCh0aGlzLl9yZWZlcmVuY2UsIHdhdGNoZXJzKTtcbiAgICB9XG4gICAgdGhpcy5fd2F0Y2hlcnMgPSB3YXRjaGVycztcblxuICAgIGZvciAoY29uc3QgW3Byb3BlcnR5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9oYW5kbGVycykpIHtcbiAgICAgIGxldCB3YXRjaGVyID0gdGhpcy5fd2F0Y2hlcnMuZ2V0KHByb3BlcnR5KTtcbiAgICAgIGlmICghd2F0Y2hlcikge1xuICAgICAgICB3YXRjaGVyID0gbmV3IFByb3BlcnR5V2F0Y2hlcjxUPih0aGlzLl9yZWZlcmVuY2UsIHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fd2F0Y2hlcnMuc2V0KHByb3BlcnR5LCB3YXRjaGVyKTtcbiAgICAgIH1cbiAgICAgIHdhdGNoZXIuYWRkSGFuZGxlcihoYW5kbGVyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3JlZmVyZW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3Byb3BlcnR5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9oYW5kbGVycykpIHtcbiAgICAgIGNvbnN0IHdhdGNoZXIgPSB0aGlzLl93YXRjaGVycz8uZ2V0KHByb3BlcnR5KTtcbiAgICAgIGlmICh3YXRjaGVyKSB7XG4gICAgICAgIHdhdGNoZXIucmVtb3ZlSGFuZGxlcihoYW5kbGVyKTtcbiAgICAgICAgaWYgKCF3YXRjaGVyLnNpemUpIHtcbiAgICAgICAgICB0aGlzLl93YXRjaGVycyEuZGVsZXRlKHByb3BlcnR5KTtcbiAgICAgICAgICBpZiAoIXRoaXMuX3dhdGNoZXJzIS5zaXplICYmIHRoaXMuX3JlZmVyZW5jZSkge1xuICAgICAgICAgICAgcHJvcGVydHlXYXRjaGVycy5kZWxldGUodGhpcy5fcmVmZXJlbmNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fcmVmZXJlbmNlID0gbnVsbDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQVNBLElBQU0sa0JBQU4sTUFBcUI7Q0FLbkIsSUFBVyxPQUFJO0VBQ2IsT0FBTyxLQUFLLFVBQVU7O0NBR3hCLFlBQ21CLE9BQ0EsV0FBaUI7RUFEakIsS0FBQSxRQUFBO0VBQ0EsS0FBQSxZQUFBO0VBVFgsS0FBQSw0QkFBWSxJQUFJLEtBQWdDO0VBQ2hELEtBQUEsc0JBQTRDO0VBVWxELElBQUksQ0FBQyxVQUNILElBQUksZUFBZSxJQUFJLEtBQUssTUFBTSxVQUFVLEVBQzFDLGVBQWUsUUFBUSxLQUFLLE1BQU07T0FHbEMsS0FBSyxzQkFBc0IsZUFBZSxZQUFZLEtBQUssTUFBTSxVQUFVLENBQUMsV0FBVTtHQUNwRixlQUFlLFFBQVEsS0FBSyxNQUFNO0dBQ2xDLEtBQUssc0JBQXNCO0lBQzNCO0VBR04sS0FBSyxTQUFVLEtBQUssTUFBNkMsS0FBSzs7Q0FHakUsV0FBVyxTQUFrQztFQUNsRCxJQUFJLENBQUMsS0FBSyxVQUFVO09BRWQsS0FBSyxNQUFNLGVBQ2IsS0FBSyxNQUFNLGNBQWMsS0FBSztRQUN6QixJQUFJLEtBQUsscUJBQ2QsS0FBSyxvQkFBb0IsV0FBVyxLQUFLLE1BQU0sY0FBYyxLQUFLLENBQUM7O0VBR3ZFLEtBQUssVUFBVSxJQUFJLFFBQVE7RUFFM0IsSUFBSSxDQUFDLEtBQUsscUJBQ1IsUUFBUSxLQUFLLE1BQU07T0FFbkIsS0FBSyxvQkFBb0IsV0FBVyxRQUFRLEtBQUssTUFBTSxDQUFDOztDQUlyRCxjQUFjLFNBQWtDO0VBQ3JELEtBQUssVUFBVSxPQUFPLFFBQVE7RUFDOUIsSUFBSSxDQUFDLEtBQUssVUFBVTtPQUVkLEtBQUssTUFBTSxrQkFDYixLQUFLLE1BQU0saUJBQWlCLEtBQUs7UUFDNUIsSUFBSSxLQUFLLHFCQUNkLEtBQUssb0JBQW9CLFdBQVcsS0FBSyxNQUFNLGlCQUFpQixLQUFLLENBQUM7OztDQUtyRSxhQUFVO0VBQ2YsTUFBTSxlQUFnQixLQUFLLE1BQTZDLEtBQUs7RUFDN0UsSUFBSSxLQUFLLFdBQVcsY0FBYztHQUNoQyxLQUFLLFNBQVM7R0FDZCxLQUFLLE1BQU0sV0FBVyxLQUFLLFdBQ3pCLFFBQVEsS0FBSyxNQUFNOzs7O0FBTTNCLElBQU0sbUNBQW1CLElBQUksU0FBd0Q7QUFFckYsSUFBYSwrQkFBYixNQUF5QztDQUl2QyxZQUNtQixPQUNBLG9CQUNBLFdBQThEO0VBRjlELEtBQUEsUUFBQTtFQUNBLEtBQUEscUJBQUE7RUFDQSxLQUFBLFlBQUE7RUFFakIsS0FBSyxNQUFNLGNBQWMsS0FBSzs7Q0FHekIsZ0JBQWE7RUFDbEIsS0FBSyxTQUFTOztDQUdULG1CQUFnQjtFQUNyQixJQUFJLEtBQUssZUFBZSxLQUFLLG9CQUFvQixFQUMvQyxLQUFLLFlBQVk7O0NBSWQsVUFBTztFQUNaLE1BQU0sWUFBWSxLQUFLLG9CQUFvQjtFQUMzQyxJQUFJLEtBQUssZUFBZSxXQUN0QjtFQUVGLEtBQUssWUFBWTtFQUNqQixLQUFLLGFBQWE7RUFDbEIsSUFBSSxDQUFDLEtBQUssWUFDUjtFQUVGLElBQUksV0FBVyxpQkFBaUIsSUFBSSxLQUFLLFdBRTVCO0VBQ2IsSUFBSSxDQUFDLFVBQVU7R0FDYiwyQkFBVyxJQUFJLEtBQUs7R0FDcEIsaUJBQWlCLElBQUksS0FBSyxZQUFZLFNBQVM7O0VBRWpELEtBQUssWUFBWTtFQUVqQixLQUFLLE1BQU0sQ0FBQyxVQUFVLFlBQVksT0FBTyxRQUFRLEtBQUssVUFBVSxFQUFFO0dBQ2hFLElBQUksVUFBVSxLQUFLLFVBQVUsSUFBSSxTQUFTO0dBQzFDLElBQUksQ0FBQyxTQUFTO0lBQ1osVUFBVSxJQUFJLGdCQUFtQixLQUFLLFlBQVksU0FBUztJQUMzRCxLQUFLLFVBQVUsSUFBSSxVQUFVLFFBQVE7O0dBRXZDLFFBQVEsV0FBVyxRQUFROzs7Q0FJeEIsYUFBVTtFQUNmLElBQUksQ0FBQyxLQUFLLFlBQ1I7RUFHRixLQUFLLE1BQU0sQ0FBQyxVQUFVLFlBQVksT0FBTyxRQUFRLEtBQUssVUFBVSxFQUFFO0dBQ2hFLE1BQU0sVUFBVSxLQUFLLFdBQVcsSUFBSSxTQUFTO0dBQzdDLElBQUksU0FBUztJQUNYLFFBQVEsY0FBYyxRQUFRO0lBQzlCLElBQUksQ0FBQyxRQUFRLE1BQU07S0FDakIsS0FBSyxVQUFXLE9BQU8sU0FBUztLQUNoQyxJQUFJLENBQUMsS0FBSyxVQUFXLFFBQVEsS0FBSyxZQUNoQyxpQkFBaUIsT0FBTyxLQUFLLFdBQVc7Ozs7RUFLaEQsS0FBSyxhQUFhIn0=
96
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktd2F0Y2hlci1jb250cm9sbGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL3Byb3BlcnR5LXdhdGNoZXItY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc1NlcnZlcixcbiAgdHlwZSBMaXRFbGVtZW50LFxuICB0eXBlIFJlYWN0aXZlQ29udHJvbGxlcixcbiAgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0LFxufSBmcm9tICdsaXQnO1xuXG50eXBlIFByb3BlcnR5V2F0Y2hlckhhbmRsZXI8VCBleHRlbmRzIExpdEVsZW1lbnQ+ID0gKHJlZmVyZW5jZTogVCkgPT4gdm9pZDtcblxuY2xhc3MgUHJvcGVydHlXYXRjaGVyPFQgZXh0ZW5kcyBMaXRFbGVtZW50PiBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHByaXZhdGUgX3ZhbHVlOiB1bmtub3duO1xuICBwcml2YXRlIF9oYW5kbGVycyA9IG5ldyBTZXQ8UHJvcGVydHlXYXRjaGVySGFuZGxlcjxUPj4oKTtcbiAgcHJpdmF0ZSBfaG9zdERlZmluZWRQcm9taXNlOiBQcm9taXNlPHZvaWQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2hhbmRsZXJzLnNpemU7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaG9zdDogVCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcm9wZXJ0eTogc3RyaW5nLFxuICApIHtcbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICBpZiAoY3VzdG9tRWxlbWVudHMuZ2V0KHRoaXMuX2hvc3QubG9jYWxOYW1lKSkge1xuICAgICAgICBjdXN0b21FbGVtZW50cy51cGdyYWRlKHRoaXMuX2hvc3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhlIGhvc3QgZWxlbWVudCBpcyBub3QgeWV0IGRlZmluZWQsIHdhaXQgZm9yIGl0cyBkZWZpbml0aW9uIGJlZm9yZSB1cGdyYWRpbmdcbiAgICAgICAgdGhpcy5faG9zdERlZmluZWRQcm9taXNlID0gY3VzdG9tRWxlbWVudHMud2hlbkRlZmluZWQodGhpcy5faG9zdC5sb2NhbE5hbWUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGN1c3RvbUVsZW1lbnRzLnVwZ3JhZGUodGhpcy5faG9zdCk7XG4gICAgICAgICAgdGhpcy5faG9zdERlZmluZWRQcm9taXNlID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3ZhbHVlID0gKHRoaXMuX2hvc3QgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbdGhpcy5fcHJvcGVydHldO1xuICB9XG5cbiAgcHVibGljIGFkZEhhbmRsZXIoaGFuZGxlcjogUHJvcGVydHlXYXRjaGVySGFuZGxlcjxUPik6IHZvaWQge1xuICAgIGlmICghdGhpcy5faGFuZGxlcnMuc2l6ZSkge1xuICAgICAgLy8gV2UgY2hlY2sgaWYgdGhlIGFkZENvbnRyb2xsZXIgbWV0aG9kIGlzIGF2YWlsYWJsZSAoZWxlbWVudCB3YXMgZGVmaW5lZCAmJiB1cGdyYWRlZCksIG90aGVyd2lzZSB3ZSB3YWl0IGZvciB0aGUgaG9zdCB0byBiZSBkZWZpbmVkXG4gICAgICBpZiAodGhpcy5faG9zdC5hZGRDb250cm9sbGVyKSB7XG4gICAgICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5faG9zdERlZmluZWRQcm9taXNlKSB7XG4gICAgICAgIHRoaXMuX2hvc3REZWZpbmVkUHJvbWlzZS50aGVuKCgpID0+IHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2hhbmRsZXJzLmFkZChoYW5kbGVyKTtcblxuICAgIGlmICghdGhpcy5faG9zdERlZmluZWRQcm9taXNlKSB7XG4gICAgICBoYW5kbGVyKHRoaXMuX2hvc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9ob3N0RGVmaW5lZFByb21pc2UudGhlbigoKSA9PiBoYW5kbGVyKHRoaXMuX2hvc3QpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlSGFuZGxlcihoYW5kbGVyOiBQcm9wZXJ0eVdhdGNoZXJIYW5kbGVyPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5faGFuZGxlcnMuZGVsZXRlKGhhbmRsZXIpO1xuICAgIGlmICghdGhpcy5faGFuZGxlcnMuc2l6ZSkge1xuICAgICAgLy8gV2UgY2hlY2sgaWYgdGhlIHJlbW92ZUNvbnRyb2xsZXIgbWV0aG9kIGlzIGF2YWlsYWJsZSAoZWxlbWVudCB3YXMgZGVmaW5lZCAmJiB1cGdyYWRlZCksIG90aGVyd2lzZSB3ZSB3YWl0IGZvciB0aGUgaG9zdCB0byBiZSBkZWZpbmVkXG4gICAgICBpZiAodGhpcy5faG9zdC5yZW1vdmVDb250cm9sbGVyKSB7XG4gICAgICAgIHRoaXMuX2hvc3QucmVtb3ZlQ29udHJvbGxlcih0aGlzKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5faG9zdERlZmluZWRQcm9taXNlKSB7XG4gICAgICAgIHRoaXMuX2hvc3REZWZpbmVkUHJvbWlzZS50aGVuKCgpID0+IHRoaXMuX2hvc3QucmVtb3ZlQ29udHJvbGxlcih0aGlzKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvc3RVcGRhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gKHRoaXMuX2hvc3QgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbdGhpcy5fcHJvcGVydHldO1xuICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IGN1cnJlbnRWYWx1ZTtcbiAgICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiB0aGlzLl9oYW5kbGVycykge1xuICAgICAgICBoYW5kbGVyKHRoaXMuX2hvc3QpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBwcm9wZXJ0eVdhdGNoZXJzID0gbmV3IFdlYWtNYXA8TGl0RWxlbWVudCwgTWFwPHN0cmluZywgUHJvcGVydHlXYXRjaGVyPGFueT4+PigpO1xuXG5leHBvcnQgY2xhc3MgU2JiUHJvcGVydHlXYXRjaGVyQ29udHJvbGxlcjxUIGV4dGVuZHMgTGl0RWxlbWVudD4gaW1wbGVtZW50cyBSZWFjdGl2ZUNvbnRyb2xsZXIge1xuICBwcml2YXRlIF9yZWZlcmVuY2U/OiBUIHwgbnVsbDtcbiAgcHJpdmF0ZSBfd2F0Y2hlcnM/OiBNYXA8c3RyaW5nLCBQcm9wZXJ0eVdhdGNoZXI8VD4+O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0ICYgSFRNTEVsZW1lbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVmZXJlbmNlUmVzb2x2ZXI6ICgpID0+IFQgfCBudWxsLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZXJzOiBQYXJ0aWFsPFJlY29yZDxrZXlvZiBULCBQcm9wZXJ0eVdhdGNoZXJIYW5kbGVyPFQ+Pj4sXG4gICkge1xuICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuY29ubmVjdCgpO1xuICB9XG5cbiAgcHVibGljIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JlZmVyZW5jZSAhPT0gdGhpcy5fcmVmZXJlbmNlUmVzb2x2ZXIoKSkge1xuICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNvbm5lY3QoKTogdm9pZCB7XG4gICAgY29uc3QgcmVmZXJlbmNlID0gdGhpcy5fcmVmZXJlbmNlUmVzb2x2ZXIoKTtcbiAgICBpZiAodGhpcy5fcmVmZXJlbmNlID09PSByZWZlcmVuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fcmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICAgIGlmICghdGhpcy5fcmVmZXJlbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCB3YXRjaGVycyA9IHByb3BlcnR5V2F0Y2hlcnMuZ2V0KHRoaXMuX3JlZmVyZW5jZSkgYXNcbiAgICAgIHwgTWFwPHN0cmluZywgUHJvcGVydHlXYXRjaGVyPFQ+PlxuICAgICAgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCF3YXRjaGVycykge1xuICAgICAgd2F0Y2hlcnMgPSBuZXcgTWFwKCk7XG4gICAgICBwcm9wZXJ0eVdhdGNoZXJzLnNldCh0aGlzLl9yZWZlcmVuY2UsIHdhdGNoZXJzKTtcbiAgICB9XG4gICAgdGhpcy5fd2F0Y2hlcnMgPSB3YXRjaGVycztcblxuICAgIGZvciAoY29uc3QgW3Byb3BlcnR5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9oYW5kbGVycykpIHtcbiAgICAgIGxldCB3YXRjaGVyID0gdGhpcy5fd2F0Y2hlcnMuZ2V0KHByb3BlcnR5KTtcbiAgICAgIGlmICghd2F0Y2hlcikge1xuICAgICAgICB3YXRjaGVyID0gbmV3IFByb3BlcnR5V2F0Y2hlcjxUPih0aGlzLl9yZWZlcmVuY2UsIHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fd2F0Y2hlcnMuc2V0KHByb3BlcnR5LCB3YXRjaGVyKTtcbiAgICAgIH1cbiAgICAgIHdhdGNoZXIuYWRkSGFuZGxlcihoYW5kbGVyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3JlZmVyZW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3Byb3BlcnR5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9oYW5kbGVycykpIHtcbiAgICAgIGNvbnN0IHdhdGNoZXIgPSB0aGlzLl93YXRjaGVycz8uZ2V0KHByb3BlcnR5KTtcbiAgICAgIGlmICh3YXRjaGVyKSB7XG4gICAgICAgIHdhdGNoZXIucmVtb3ZlSGFuZGxlcihoYW5kbGVyKTtcbiAgICAgICAgaWYgKCF3YXRjaGVyLnNpemUpIHtcbiAgICAgICAgICB0aGlzLl93YXRjaGVycyEuZGVsZXRlKHByb3BlcnR5KTtcbiAgICAgICAgICBpZiAoIXRoaXMuX3dhdGNoZXJzIS5zaXplICYmIHRoaXMuX3JlZmVyZW5jZSkge1xuICAgICAgICAgICAgcHJvcGVydHlXYXRjaGVycy5kZWxldGUodGhpcy5fcmVmZXJlbmNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fcmVmZXJlbmNlID0gbnVsbDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQVNBLElBQU0sa0JBQU4sTUFBcUI7Q0FLbkIsSUFBVyxPQUFJO0VBQ2IsT0FBTyxLQUFLLFVBQVU7Q0FDeEI7Q0FFQSxZQUNtQixPQUNBLFdBQWlCO0VBRGpCLEtBQUEsUUFBQTtFQUNBLEtBQUEsWUFBQTtFQVRYLEtBQUEsNEJBQVksSUFBSSxJQUFHO0VBQ25CLEtBQUEsc0JBQTRDO0VBVWxELElBQUksQ0FBQyxVQUNILElBQUksZUFBZSxJQUFJLEtBQUssTUFBTSxTQUFTLEdBQ3pDLGVBQWUsUUFBUSxLQUFLLEtBQUs7T0FHakMsS0FBSyxzQkFBc0IsZUFBZSxZQUFZLEtBQUssTUFBTSxTQUFTLEVBQUUsV0FBVTtHQUNwRixlQUFlLFFBQVEsS0FBSyxLQUFLO0dBQ2pDLEtBQUssc0JBQXNCO0VBQzdCLENBQUM7RUFHTCxLQUFLLFNBQVUsS0FBSyxNQUE2QyxLQUFLO0NBQ3hFO0NBRU8sV0FBVyxTQUFrQztFQUNsRCxJQUFJLENBQUMsS0FBSyxVQUFVO09BRWQsS0FBSyxNQUFNLGVBQ2IsS0FB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
@@ -148,4 +148,4 @@ var DateAdapter = class {
148
148
  //#endregion
149
149
  export { DAYS_PER_ROW, DateAdapter, FORMAT_DATE, FRIDAY, ISO8601_FORMAT_DATE, MONDAY, MONTHS_PER_PAGE, MONTHS_PER_ROW, SATURDAY, SUNDAY, THURSDAY, TUESDAY, WEDNESDAY, YEARS_PER_PAGE, YEARS_PER_ROW };
150
150
 
151
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1hZGFwdGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RhdGV0aW1lL2RhdGUtYWRhcHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRk9STUFUX0RBVEUgPVxuICAvKDA/WzEtOV18WzEyXVswLTldfDNbMDFdKVsuLFxcXFwvXFwtXFxzXSgwP1sxLTldfDFbMC0yXSlbLixcXFxcL1xcLVxcc10oWzAtOV17MSw0fSQpPy87XG5leHBvcnQgY29uc3QgSVNPODYwMV9GT1JNQVRfREFURSA9IC9eKFswLTldezR9KS0oMFsxLTldfDFbMC0yXSktKDBbMS05XXxbMS0zXVswLTldKSQvO1xuZXhwb3J0IGNvbnN0IE1PTkRBWSA9IDE7XG5leHBvcnQgY29uc3QgVFVFU0RBWSA9IDI7XG5leHBvcnQgY29uc3QgV0VETkVTREFZID0gMztcbmV4cG9ydCBjb25zdCBUSFVSU0RBWSA9IDQ7XG5leHBvcnQgY29uc3QgRlJJREFZID0gNTtcbmV4cG9ydCBjb25zdCBTQVRVUkRBWSA9IDY7XG5leHBvcnQgY29uc3QgU1VOREFZID0gMDtcblxuLy8gVE9ETyhicmVha2luZy1jaGFuZ2UpOiBNb3ZlIHRoZXNlIHZhcmlhYmxlcyB0byBjYWxlbmRhclxuZXhwb3J0IGNvbnN0IERBWVNfUEVSX1JPVzogbnVtYmVyID0gNztcbmV4cG9ydCBjb25zdCBNT05USFNfUEVSX1JPVzogbnVtYmVyID0gNDtcbmV4cG9ydCBjb25zdCBZRUFSU19QRVJfUk9XOiBudW1iZXIgPSA0O1xuZXhwb3J0IGNvbnN0IE1PTlRIU19QRVJfUEFHRTogbnVtYmVyID0gMTI7XG5leHBvcnQgY29uc3QgWUVBUlNfUEVSX1BBR0U6IG51bWJlciA9IDI0O1xuXG4vKipcbiAqIEFic3RyYWN0IGRhdGUgZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21haW4vc3JjL21hdGVyaWFsL2NvcmUvZGF0ZXRpbWUvZGF0ZS1hZGFwdGVyLnRzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRlQWRhcHRlcjxUID0gYW55PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1dG9mZlllYXJPZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQHBhcmFtIGN1dG9mZlllYXJPZmZzZXQgVGhlIHRocmVzaG9sZCBvbiB3aGV0aGVyIGEgdHdvLWRpZ2l0IHllYXJcbiAgICogc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYmVsb25naW5nIHRvIDIwMDAgb3IgMTkwMC4gZS5nLiB3aXRoIDE1IChkZWZhdWx0KVxuICAgKiB0aGUgY3VycmVudCB5ZWFyIHBsdXMgMTUgd2lsbCBiZSB0cmVhdGVkIGFzIGJlbG9uZ2luZyB0byAyMDAwLCBhbmQgdGhlIHJlc3QgdG8gMTkwMC5cbiAgICogU28gZS5nLiB3aXRoIHRoZSBjdXJyZW50IHllYXIgMjAyNSwgNDAgd2lsbCBiZSB0cmVhdGVkIGFzIDIwNDAsIHdoaWxlIDQxIHdpbGwgYmUgdHJlYXRlZCBhcyAxOTQxLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGN1dG9mZlllYXJPZmZzZXQ6IG51bWJlciA9IDE1KSB7XG4gICAgdGhpcy5fY3V0b2ZmWWVhck9mZnNldCA9IGN1dG9mZlllYXJPZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB5ZWFyIGFzIGEgbnVtYmVyLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldFllYXIoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBtb250aCBhcyBhIG51bWJlci5cbiAgICogQXR0ZW50aW9uOiBUaGlzIHJldHVybnMgMS0xMiBhbmQgbWl0aWdhdGVzIHRoZSBkZWZhdWx0IEphdmFTY3JpcHQgRGF0ZSBiZWhhdmlvci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRNb250aChkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRheSBvZiB0aGUgbW9udGggYXMgYSBudW1iZXIuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF0ZShkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIERheSBvZiB0aGUgd2VlayBhcyBhIG51bWJlci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXlPZldlZWsoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKiogR2V0IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDA6IHN1bmRheTsgMTogbW9uZGF5OyBldGMuKS4gKi9cbiAgcHVibGljIGFic3RyYWN0IGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldE51bURheXNJbk1vbnRoKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSBtb250aHMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW107XG5cbiAgLyoqIEdldCBhIHN0cmluZyBhcnJheSB3aXRoIGxlbmd0aCA9IDMxLCBmaWxsZWQgd2l0aCB0aGUgZGF5cyBpbiBhIG1vbnRoLCBzdGFydGluZyBmcm9tIDEuICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXRlTmFtZXMoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSB3ZWVrIGRheXMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdO1xuXG4gIC8qKiBDcmVhdGVzIHRvZGF5J3MgZGF0ZS4gKi9cbiAgcHVibGljIGFic3RyYWN0IHRvZGF5KCk6IFQ7XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gYGRhdGVgIGlzIHZhbGlkLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzVmFsaWQoZGF0ZTogVCB8IG51bGwgfCB1bmRlZmluZWQpOiBkYXRlIGlzIFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBjbG9uaW5nIHRoZSBnaXZlbiBvbmUuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY2xvbmUoZGF0ZTogVCk6IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSwgZ2l2ZW4gZGF5LCBtb250aCBhbmQgeWVhcjsgd2l0aG91dCBkYXRlJ3Mgb3ZlcmZsb3cuXG4gICAqIEBwYXJhbSB5ZWFyXG4gICAqIEBwYXJhbSBtb250aCBUaGUgbW9udGggb2YgdGhlIGRhdGUgKDEtaW5kZXhlZCwgMSA9IEphbnVhcnkpLiBNdXN0IGJlIGFuIGludGVnZXIgMSAtIDEyLlxuICAgKiBAcGFyYW0gZGF5XG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogQXR0ZW1wdHMgdG8gZGVzZXJpYWxpemUgYSB2YWx1ZSB0byBhIHZhbGlkIGRhdGUgb2JqZWN0LiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHBhcnNpbmcgaW4gdGhhdFxuICAgKiBkZXNlcmlhbGl6ZSBzaG91bGQgb25seSBhY2NlcHQgbm9uLWFtYmlndW91cywgbG9jYWxlLWluZGVwZW5kZW50IGZvcm1hdHMgKGUuZy4gYSBJU08gODYwMVxuICAgKiBzdHJpbmcpLiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBhbGxvdyBhbnkgZGVzZXJpYWxpemF0aW9uLCBpdCBzaW1wbHkgY2hlY2tzIHRoYXRcbiAgICogdGhlIGdpdmVuIHZhbHVlIGlzIGFscmVhZHkgYSB2YWxpZCBkYXRlIG9iamVjdCBvciBudWxsLlxuICAgKiBAcGFyYW0gdmFsdWUgRWl0aGVyIGEgZGF0ZSBvYmplY3QsIElTTyBzdHJpbmcgb3IgYW4gZW1wdHkgdmFsdWUuXG4gICAqIEByZXR1cm5zIFRoZSBkYXRlIGlmIHRoZSBpbnB1dCBpcyB2YWxpZCwgYG51bGxgIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBkZXNlcmlhbGl6ZSh2YWx1ZTogVCB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBUIHwgbnVsbCB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgPT0gbnVsbCB8fFxuICAgICAgKHRoaXMuaXNEYXRlSW5zdGFuY2UodmFsdWUpICYmIHRoaXMuaXNWYWxpZCh2YWx1ZSBhcyBUIHwgbnVsbCB8IHVuZGVmaW5lZCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdmFsdWUgYXMgVCB8IG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmludmFsaWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYHllYXJzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZS5cbiAgICogQHBhcmFtIHllYXJzIFRoZSBudW1iZXIgb2YgeWVhcnMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGFkZENhbGVuZGFyWWVhcnMoZGF0ZTogVCwgeWVhcnM6IG51bWJlcik6IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgbW9udGhzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBJZiB0aGUgY2FsY3VsYXRlZCBtb250aCBoYXMgZmV3ZXIgZGF5cyB0aGFuIHRoZSBvcmlnaW5hbCBvbmUsIHRoZSBkYXRlIGlzIHNldCB0byB0aGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLlxuICAgKiBFLmcuIHdpdGggYGRhdGVgID0gbmV3IERhdGUoMjAyMiwgMCwgMzEpIGFuZCBgbW9udGhzYCA9IDEsIGl0IHJldHVybnMgbmV3IERhdGUoMjAyMiwgMSwgMjgpLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZS5cbiAgICogQHBhcmFtIG1vbnRocyBUaGUgbnVtYmVyIG9mIG1vbnRocyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogVCwgbW9udGhzOiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYnkgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYGRheXNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlLlxuICAgKiBAcGFyYW0gZGF5cyBUaGUgbnVtYmVyIG9mIGRheXMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGFkZENhbGVuZGFyRGF5cyhkYXRlOiBULCBkYXlzOiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRhdGUgaW4gdGhlIGxvY2FsIGZvcm1hdC5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZm9ybWF0XG4gICAqIEByZXR1cm5zIFRoZSBgZGF0ZWAgaW4gdGhlIGxvY2FsIGZvcm1hdCBhcyBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0QWNjZXNzaWJpbGl0eUZvcm1hdERhdGUoZGF0ZTogVCB8IHN0cmluZyk6IHN0cmluZztcblxuICAvKipcbiAgICogR2V0IHRoZSBnaXZlbiBzdHJpbmcgYXMgRGF0ZS5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBkYXRlIGluIHRoZSBmb3JtYXQgREQuTU0uWVlZWS5cbiAgICovXG4gIHB1YmxpYyBwYXJzZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFQgfCBudWxsIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgZGF0ZTogVCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGlzb01hdGNoID0gdmFsdWUubWF0Y2goSVNPODYwMV9GT1JNQVRfREFURSk7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGUgPSBpc29NYXRjaCA/IHRoaXMuY3JlYXRlRGF0ZSgraXNvTWF0Y2hbMV0sICtpc29NYXRjaFsyXSwgK2lzb01hdGNoWzNdKSA6IG51bGw7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBlbXB0eSAqL1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1ZhbGlkKGRhdGUpKSB7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJpcHBlZFZhbHVlID0gdmFsdWUucmVwbGFjZSgvXFxEL2csICcgJykudHJpbSgpO1xuXG4gICAgY29uc3QgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsIHwgdW5kZWZpbmVkID0gc3RyaXBwZWRWYWx1ZT8ubWF0Y2goRk9STUFUX0RBVEUpO1xuICAgIGlmIChcbiAgICAgICFtYXRjaCB8fFxuICAgICAgbWF0Y2guaW5kZXggIT09IDAgfHxcbiAgICAgIG1hdGNoLmxlbmd0aCA8PSAyIHx8XG4gICAgICBtYXRjaC5zb21lKChlKSA9PiBlID09PSB1bmRlZmluZWQpIHx8XG4gICAgICAhdGhpcy5pc1ZhbGlkKHRoaXMuY3JlYXRlRGF0ZSgrbWF0Y2hbM10sICttYXRjaFsyXSwgK21hdGNoWzFdKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB5ZWFyID0gK21hdGNoWzNdO1xuXG4gICAgaWYgKHR5cGVvZiB5ZWFyID09PSAnbnVtYmVyJyAmJiB5ZWFyIDwgMTAwICYmIHllYXIgPj0gMCkge1xuICAgICAgY29uc3Qgc2hpZnQgPSB0aGlzLmdldFllYXIodGhpcy50b2RheSgpKSAtIDIwMDAgKyB0aGlzLl9jdXRvZmZZZWFyT2Zmc2V0O1xuICAgICAgeWVhciA9IHllYXIgPD0gc2hpZnQgPyAyMDAwICsgeWVhciA6IDE5MDAgKyB5ZWFyO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZURhdGUoeWVhciwgK21hdGNoWzJdLCArbWF0Y2hbMV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCB0aGUgZ2l2ZW4gZGF0ZSBhcyBzdHJpbmcuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGZvcm1hdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9ucyBvYmplY3Qgd2l0aCB3ZWVrZGF5U3R5bGUgYXMgcHJvcGVydHlcbiAgICovXG4gIHB1YmxpYyBmb3JtYXQoXG4gICAgZGF0ZTogVCB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgb3B0aW9ucz86IHsgd2Vla2RheVN0eWxlPzogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnIHwgJ25vbmUnIH0sXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IG5ldyBEYXRlKHRoaXMudG9Jc284NjAxKGRhdGUhKSArICdUMDA6MDA6MDAnKTtcbiAgICBjb25zdCBkYXRlRm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2RlLUNIJywge1xuICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICBtb250aDogJzItZGlnaXQnLFxuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnM/LndlZWtkYXlTdHlsZSA9PT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gZGF0ZUZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHdlZWtkYXlTdHlsZSA9IG9wdGlvbnM/LndlZWtkYXlTdHlsZSA/PyAnc2hvcnQnO1xuICAgIGxldCB3ZWVrZGF5ID0gdGhpcy5nZXREYXlPZldlZWtOYW1lcyh3ZWVrZGF5U3R5bGUpW3RoaXMuZ2V0RGF5T2ZXZWVrKGRhdGUhKV07XG4gICAgd2Vla2RheSA9IHdlZWtkYXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3ZWVrZGF5LnN1YnN0cmluZygxKTtcbiAgICAvLyBXZSBoYXZlIHRoZSBzcGVjaWFsIHJlcXVpcmVtZW50IGZvciBkYXRlIGZvcm1hdHMgYXQgU0JCLCB3aGVyZSB0aGUgc2hvcnQgZm9ybVxuICAgIC8vIGZvciB3ZWVrZGF5cyBzaG91bGQgYmUgdHdvIGNoYXJhY3RlcnMgaW4gbGVuZ3RoLlxuICAgIGlmICh3ZWVrZGF5U3R5bGUgPT09ICdzaG9ydCcpIHtcbiAgICAgIHdlZWtkYXkgPSB3ZWVrZGF5LnN1YnN0cmluZygwLCAyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7d2Vla2RheX0sICR7ZGF0ZUZvcm1hdHRlci5mb3JtYXQodmFsdWUpfWA7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBvYmpgIGlzIGEgRGF0ZS5cbiAgICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzRGF0ZUluc3RhbmNlKG9iajogYW55KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2V0cyBkYXRlIGluc3RhbmNlIHRoYXQgaXMgbm90IHZhbGlkLlxuICAgKiBAcmV0dXJucyBBbiBpbnZhbGlkIGRhdGUuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaW52YWxpZCgpOiBUO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGdpdmVuIGRhdGUgYXMgSVNPIFN0cmluZy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY29udmVydCB0byBJU08gU3RyaW5nLlxuICAgKi9cbiAgcHVibGljIHRvSXNvODYwMShkYXRlOiBUKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYWQgPSAodmFsdWU6IG51bWJlciwgbGVuZ3RoID0gMik6IHN0cmluZyA9PiBgJHt2YWx1ZX1gLnBhZFN0YXJ0KGxlbmd0aCwgJzAnKTtcbiAgICByZXR1cm4gYCR7cGFkKHRoaXMuZ2V0WWVhcihkYXRlKSwgNCl9LSR7cGFkKHRoaXMuZ2V0TW9udGgoZGF0ZSkpfS0ke3BhZCh0aGlzLmdldERhdGUoZGF0ZSkpfWA7XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBwb3RlbnRpYWwgZGF0ZSBvYmplY3QsIHJldHVybnMgdGhhdCBzYW1lIGRhdGUgb2JqZWN0IGlmIGl0IGlzXG4gICAqIGEgdmFsaWQgZGF0ZSwgb3IgYG51bGxgIGlmIGl0J3Mgbm90IGEgdmFsaWQgZGF0ZS5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBvYmplY3QgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIEEgZGF0ZSBvciBgbnVsbGAuXG4gICAqL1xuICBwdWJsaWMgZ2V0VmFsaWREYXRlT3JOdWxsKHZhbHVlOiB1bmtub3duKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmlzRGF0ZUluc3RhbmNlKHZhbHVlKSAmJiB0aGlzLmlzVmFsaWQodmFsdWUgYXMgVCkgPyAodmFsdWUgYXMgVCkgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aCwgYW5kIHRoZW4gaXRzIG9mZnNldCBmcm9tIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAqL1xuICBwdWJsaWMgZ2V0Rmlyc3RXZWVrT2Zmc2V0KGRhdGU6IFQpOiBudW1iZXIge1xuICAgIGNvbnN0IGZpcnN0T2ZNb250aCA9IHRoaXMuY3JlYXRlRGF0ZSh0aGlzLmdldFllYXIoZGF0ZSksIHRoaXMuZ2V0TW9udGgoZGF0ZSksIDEpITtcbiAgICByZXR1cm4gKDcgKyB0aGlzLmdldERheU9mV2VlayhmaXJzdE9mTW9udGgpIC0gdGhpcy5nZXRGaXJzdERheU9mV2VlaygpKSAlIDc7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgdHdvIGRhdGVzLlxuICAgKiBAcGFyYW0gZmlyc3QgVGhlIGZpcnN0IGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHJldHVybnMgMCBpZiB0aGUgZGF0ZXMgYXJlIGVxdWFsLCBhIG51bWJlciBsZXNzIHRoYW4gMCBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBlYXJsaWVyLFxuICAgKiAgICAgYSBudW1iZXIgZ3JlYXRlciB0aGFuIDAgaWYgdGhlIGZpcnN0IGRhdGUgaXMgbGF0ZXIuXG4gICAqL1xuICBwdWJsaWMgY29tcGFyZURhdGUoZmlyc3Q6IFQsIHNlY29uZDogVCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZ2V0WWVhcihmaXJzdCkgLSB0aGlzLmdldFllYXIoc2Vjb25kKSB8fFxuICAgICAgdGhpcy5nZXRNb250aChmaXJzdCkgLSB0aGlzLmdldE1vbnRoKHNlY29uZCkgfHxcbiAgICAgIHRoaXMuZ2V0RGF0ZShmaXJzdCkgLSB0aGlzLmdldERhdGUoc2Vjb25kKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqIEBwYXJhbSBmaXJzdCBUaGUgZmlyc3QgZGF0ZSB0byBjaGVjay5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqICAgICBOdWxsIGRhdGVzIGFyZSBjb25zaWRlcmVkIGVxdWFsIHRvIG90aGVyIG51bGwgZGF0ZXMuXG4gICAqL1xuICBwdWJsaWMgc2FtZURhdGUoZmlyc3Q6IFQgfCBudWxsLCBzZWNvbmQ6IFQgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKGZpcnN0ICYmIHNlY29uZCkge1xuICAgICAgY29uc3QgZmlyc3RWYWxpZCA9IHRoaXMuaXNWYWxpZChmaXJzdCk7XG4gICAgICBjb25zdCBzZWNvbmRWYWxpZCA9IHRoaXMuaXNWYWxpZChzZWNvbmQpO1xuICAgICAgaWYgKGZpcnN0VmFsaWQgJiYgc2Vjb25kVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNvbXBhcmVEYXRlKGZpcnN0LCBzZWNvbmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpcnN0VmFsaWQgPT0gc2Vjb25kVmFsaWQ7XG4gICAgfVxuICAgIHJldHVybiBmaXJzdCA9PSBzZWNvbmQ7XG4gIH1cblxuICAvKipcbiAgICogQ2xhbXAgdGhlIGdpdmVuIGRhdGUgYmV0d2VlbiBtaW4gYW5kIG1heCBkYXRlcy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2xhbXAuXG4gICAqIEBwYXJhbSBtaW4gVGhlIG1pbmltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtaW4gaXMgZW5mb3JjZWQuXG4gICAqIEBwYXJhbSBtYXggVGhlIG1heGltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtYXggaXMgZW5mb3JjZWQuXG4gICAqIEByZXR1cm5zIGBtaW5gIGlmIGBkYXRlYCBpcyBsZXNzIHRoYW4gYG1pbmAsIGBtYXhgIGlmIGRhdGUgaXMgZ3JlYXRlciB0aGFuIGBtYXhgLFxuICAgKiAgICAgb3RoZXJ3aXNlIGBkYXRlYC5cbiAgICovXG4gIHB1YmxpYyBjbGFtcERhdGUoZGF0ZTogVCwgbWluPzogVCB8IG51bGwsIG1heD86IFQgfCBudWxsKTogVCB7XG4gICAgaWYgKG1pbiAmJiB0aGlzLmNvbXBhcmVEYXRlKGRhdGUsIG1pbikgPCAwKSB7XG4gICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICBpZiAobWF4ICYmIHRoaXMuY29tcGFyZURhdGUoZGF0ZSwgbWF4KSA+IDApIHtcbiAgICAgIHJldHVybiBtYXg7XG4gICAgfVxuICAgIHJldHVybiBkYXRlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFhLGNBQ1g7QUFDRixJQUFhLHNCQUFzQjtBQUNuQyxJQUFhLFNBQVM7QUFDdEIsSUFBYSxVQUFVO0FBQ3ZCLElBQWEsWUFBWTtBQUN6QixJQUFhLFdBQVc7QUFDeEIsSUFBYSxTQUFTO0FBQ3RCLElBQWEsV0FBVztBQUN4QixJQUFhLFNBQVM7QUFHdEIsSUFBYSxlQUF1QjtBQUNwQyxJQUFhLGlCQUF5QjtBQUN0QyxJQUFhLGdCQUF3QjtBQUNyQyxJQUFhLGtCQUEwQjtBQUN2QyxJQUFhLGlCQUF5Qjs7Ozs7O0FBT3RDLElBQXNCLGNBQXRCLE1BQWlDOzs7Ozs7O0NBUy9CLFlBQW1CLG1CQUEyQixJQUFFO0VBQzlDLEtBQUssb0JBQW9COzs7Ozs7Ozs7O0NBbUZwQixZQUFZLE9BQW9DO0VBQ3JELElBQ0UsU0FBUyxRQUNSLEtBQUssZUFBZSxNQUFNLElBQUksS0FBSyxRQUFRLE1BQThCLEVBRTFFLE9BQU87RUFFVCxPQUFPLEtBQUssU0FBUzs7Ozs7O0NBcUNoQixNQUFNLE9BQWdDO0VBQzNDLElBQUksQ0FBQyxPQUNILE9BQU87RUFHVCxJQUFJLE9BQWlCO0VBQ3JCLE1BQU0sV0FBVyxNQUFNLE1BQU0sb0JBQW9CO0VBQ2pELElBQUk7R0FDRixPQUFPLFdBQVcsS0FBSyxXQUFXLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUc7VUFDeEU7RUFHUixJQUFJLEtBQUssUUFBUSxLQUFLLEVBQ3BCLE9BQU87RUFLVCxNQUFNLFFBRmdCLE1BQU0sUUFBUSxPQUFPLElBQUksQ0FBQyxNQUVHLEVBQWUsTUFBTSxZQUFZO0VBQ3BGLElBQ0UsQ0FBQyxTQUNELE1BQU0sVUFBVSxLQUNoQixNQUFNLFVBQVUsS0FDaEIsTUFBTSxNQUFNLE1BQU0sTUFBTSxLQUFBLEVBQVUsSUFDbEMsQ0FBQyxLQUFLLFFBQVEsS0FBSyxXQUFXLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFFL0QsT0FBTztFQUdULElBQUksT0FBTyxDQUFDLE1BQU07RUFFbEIsSUFBSSxPQUFPLFNBQVMsWUFBWSxPQUFPLE9BQU8sUUFBUSxHQUFHO0dBQ3ZELE1BQU0sUUFBUSxLQUFLLFFBQVEsS0FBSyxPQUFPLENBQUMsR0FBRyxNQUFPLEtBQUs7R0FDdkQsT0FBTyxRQUFRLFFBQVEsTUFBTyxPQUFPLE9BQU87O0VBRzlDLE9BQU8sS0FBSyxXQUFXLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLEdBQUc7Ozs7Ozs7Q0FRN0MsT0FDTCxNQUNBLFNBQWlFO0VBRWpFLElBQUksQ0FBQyxLQUFLLFFBQVEsS0FBSyxFQUNyQixPQUFPO0VBR1QsTUFBTSx3QkFBUSxJQUFJLEtBQUssS0FBSyxVQUFVLEtBQU0sR0FBRyxZQUFZO0VBQzNELE1BQU0sZ0JBQWdCLElBQUksS0FBSyxlQUFlLFNBQVM7R0FDckQsS0FBSztHQUNMLE9BQU87R0FDUCxNQUFNO0dBQ1AsQ0FBQztFQUVGLElBQUksU0FBUyxpQkFBaUIsUUFDNUIsT0FBTyxjQUFjLE9BQU8sTUFBTTtFQUdwQyxNQUFNLGVBQWUsU0FBUyxnQkFBZ0I7RUFDOUMsSUFBSSxVQUFVLEtBQUssa0JBQWtCLGFBQWEsQ0FBQyxLQUFLLGFBQWEsS0FBTTtFQUMzRSxVQUFVLFFBQVEsT0FBTyxFQUFFLENBQUMsYUFBYSxHQUFHLFFBQVEsVUFBVSxFQUFFO0VBR2hFLElBQUksaUJBQWlCLFNBQ25CLFVBQVUsUUFBUSxVQUFVLEdBQUcsRUFBRTtFQUduQyxPQUFPLEdBQUcsUUFBTyxJQUFLLGNBQWMsT0FBTyxNQUFNOzs7Ozs7Q0FtQjVDLFVBQVUsTUFBTztFQUN0QixNQUFNLE9BQU8sT0FBZSxTQUFTLE1BQWMsR0FBRyxRQUFRLFNBQVMsUUFBUSxJQUFJO0VBQ25GLE9BQU8sR0FBRyxJQUFJLEtBQUssUUFBUSxLQUFLLEVBQUUsRUFBRSxDQUFBLEdBQUksSUFBSSxLQUFLLFNBQVMsS0FBSyxDQUFDLENBQUEsR0FBSSxJQUFJLEtBQUssUUFBUSxLQUFLLENBQUM7Ozs7Ozs7O0NBU3RGLG1CQUFtQixPQUFjO0VBQ3RDLE9BQU8sS0FBSyxlQUFlLE1BQU0sSUFBSSxLQUFLLFFBQVEsTUFBVyxHQUFJLFFBQWM7Ozs7O0NBTTFFLG1CQUFtQixNQUFPO0VBQy9CLE1BQU0sZUFBZSxLQUFLLFdBQVcsS0FBSyxRQUFRLEtBQUssRUFBRSxLQUFLLFNBQVMsS0FBSyxFQUFFLEVBQUc7RUFDakYsUUFBUSxJQUFJLEtBQUssYUFBYSxhQUFhLEdBQUcsS0FBSyxtQkFBbUIsSUFBSTs7Ozs7Ozs7O0NBVXJFLFlBQVksT0FBVSxRQUFTO0VBQ3BDLE9BQ0UsS0FBSyxRQUFRLE1BQU0sR0FBRyxLQUFLLFFBQVEsT0FBTyxJQUMxQyxLQUFLLFNBQVMsTUFBTSxHQUFHLEtBQUssU0FBUyxPQUFPLElBQzVDLEtBQUssUUFBUSxNQUFNLEdBQUcsS0FBSyxRQUFRLE9BQU87Ozs7Ozs7OztDQVd2QyxTQUFTLE9BQWlCLFFBQWdCO0VBQy9DLElBQUksU0FBUyxRQUFRO0dBQ25CLE1BQU0sYUFBYSxLQUFLLFFBQVEsTUFBTTtHQUN0QyxNQUFNLGNBQWMsS0FBSyxRQUFRLE9BQU87R0FDeEMsSUFBSSxjQUFjLGFBQ2hCLE9BQU8sQ0FBQyxLQUFLLFlBQVksT0FBTyxPQUFPO0dBRXpDLE9BQU8sY0FBYzs7RUFFdkIsT0FBTyxTQUFTOzs7Ozs7Ozs7O0NBV1gsVUFBVSxNQUFTLEtBQWdCLEtBQWM7RUFDdEQsSUFBSSxPQUFPLEtBQUssWUFBWSxNQUFNLElBQUksR0FBRyxHQUN2QyxPQUFPO0VBRVQsSUFBSSxPQUFPLEtBQUssWUFBWSxNQUFNLElBQUksR0FBRyxHQUN2QyxPQUFPO0VBRVQsT0FBTyJ9
151
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1hZGFwdGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RhdGV0aW1lL2RhdGUtYWRhcHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRk9STUFUX0RBVEUgPVxuICAvKDA/WzEtOV18WzEyXVswLTldfDNbMDFdKVsuLFxcXFwvXFwtXFxzXSgwP1sxLTldfDFbMC0yXSlbLixcXFxcL1xcLVxcc10oWzAtOV17MSw0fSQpPy87XG5leHBvcnQgY29uc3QgSVNPODYwMV9GT1JNQVRfREFURSA9IC9eKFswLTldezR9KS0oMFsxLTldfDFbMC0yXSktKDBbMS05XXxbMS0zXVswLTldKSQvO1xuZXhwb3J0IGNvbnN0IE1PTkRBWSA9IDE7XG5leHBvcnQgY29uc3QgVFVFU0RBWSA9IDI7XG5leHBvcnQgY29uc3QgV0VETkVTREFZID0gMztcbmV4cG9ydCBjb25zdCBUSFVSU0RBWSA9IDQ7XG5leHBvcnQgY29uc3QgRlJJREFZID0gNTtcbmV4cG9ydCBjb25zdCBTQVRVUkRBWSA9IDY7XG5leHBvcnQgY29uc3QgU1VOREFZID0gMDtcblxuLy8gVE9ETyhicmVha2luZy1jaGFuZ2UpOiBNb3ZlIHRoZXNlIHZhcmlhYmxlcyB0byBjYWxlbmRhclxuZXhwb3J0IGNvbnN0IERBWVNfUEVSX1JPVzogbnVtYmVyID0gNztcbmV4cG9ydCBjb25zdCBNT05USFNfUEVSX1JPVzogbnVtYmVyID0gNDtcbmV4cG9ydCBjb25zdCBZRUFSU19QRVJfUk9XOiBudW1iZXIgPSA0O1xuZXhwb3J0IGNvbnN0IE1PTlRIU19QRVJfUEFHRTogbnVtYmVyID0gMTI7XG5leHBvcnQgY29uc3QgWUVBUlNfUEVSX1BBR0U6IG51bWJlciA9IDI0O1xuXG4vKipcbiAqIEFic3RyYWN0IGRhdGUgZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21haW4vc3JjL21hdGVyaWFsL2NvcmUvZGF0ZXRpbWUvZGF0ZS1hZGFwdGVyLnRzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRlQWRhcHRlcjxUID0gYW55PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1dG9mZlllYXJPZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQHBhcmFtIGN1dG9mZlllYXJPZmZzZXQgVGhlIHRocmVzaG9sZCBvbiB3aGV0aGVyIGEgdHdvLWRpZ2l0IHllYXJcbiAgICogc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYmVsb25naW5nIHRvIDIwMDAgb3IgMTkwMC4gZS5nLiB3aXRoIDE1IChkZWZhdWx0KVxuICAgKiB0aGUgY3VycmVudCB5ZWFyIHBsdXMgMTUgd2lsbCBiZSB0cmVhdGVkIGFzIGJlbG9uZ2luZyB0byAyMDAwLCBhbmQgdGhlIHJlc3QgdG8gMTkwMC5cbiAgICogU28gZS5nLiB3aXRoIHRoZSBjdXJyZW50IHllYXIgMjAyNSwgNDAgd2lsbCBiZSB0cmVhdGVkIGFzIDIwNDAsIHdoaWxlIDQxIHdpbGwgYmUgdHJlYXRlZCBhcyAxOTQxLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGN1dG9mZlllYXJPZmZzZXQ6IG51bWJlciA9IDE1KSB7XG4gICAgdGhpcy5fY3V0b2ZmWWVhck9mZnNldCA9IGN1dG9mZlllYXJPZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB5ZWFyIGFzIGEgbnVtYmVyLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldFllYXIoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBtb250aCBhcyBhIG51bWJlci5cbiAgICogQXR0ZW50aW9uOiBUaGlzIHJldHVybnMgMS0xMiBhbmQgbWl0aWdhdGVzIHRoZSBkZWZhdWx0IEphdmFTY3JpcHQgRGF0ZSBiZWhhdmlvci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRNb250aChkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRheSBvZiB0aGUgbW9udGggYXMgYSBudW1iZXIuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF0ZShkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIERheSBvZiB0aGUgd2VlayBhcyBhIG51bWJlci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXlPZldlZWsoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKiogR2V0IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDA6IHN1bmRheTsgMTogbW9uZGF5OyBldGMuKS4gKi9cbiAgcHVibGljIGFic3RyYWN0IGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldE51bURheXNJbk1vbnRoKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSBtb250aHMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW107XG5cbiAgLyoqIEdldCBhIHN0cmluZyBhcnJheSB3aXRoIGxlbmd0aCA9IDMxLCBmaWxsZWQgd2l0aCB0aGUgZGF5cyBpbiBhIG1vbnRoLCBzdGFydGluZyBmcm9tIDEuICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXRlTmFtZXMoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSB3ZWVrIGRheXMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdO1xuXG4gIC8qKiBDcmVhdGVzIHRvZGF5J3MgZGF0ZS4gKi9cbiAgcHVibGljIGFic3RyYWN0IHRvZGF5KCk6IFQ7XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gYGRhdGVgIGlzIHZhbGlkLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzVmFsaWQoZGF0ZTogVCB8IG51bGwgfCB1bmRlZmluZWQpOiBkYXRlIGlzIFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBjbG9uaW5nIHRoZSBnaXZlbiBvbmUuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY2xvbmUoZGF0ZTogVCk6IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSwgZ2l2ZW4gZGF5LCBtb250aCBhbmQgeWVhcjsgd2l0aG91dCBkYXRlJ3Mgb3ZlcmZsb3cuXG4gICAqIEBwYXJhbSB5ZWFyXG4gICAqIEBwYXJhbSBtb250aCBUaGUgbW9udGggb2YgdGhlIGRhdGUgKDEtaW5kZXhlZCwgMSA9IEphbnVhcnkpLiBNdXN0IGJlIGFuIGludGVnZXIgMSAtIDEyLlxuICAgKiBAcGFyYW0gZGF5XG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogQXR0ZW1wdHMgdG8gZGVzZXJpYWxpemUgYSB2YWx1ZSB0byBhIHZhbGlkIGRhdGUgb2JqZWN0LiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHBhcnNpbmcgaW4gdGhhdFxuICAgKiBkZXNlcmlhbGl6ZSBzaG91bGQgb25seSBhY2NlcHQgbm9uLWFtYmlndW91cywgbG9jYWxlLWluZGVwZW5kZW50IGZvcm1hdHMgKGUuZy4gYSBJU08gODYwMVxuICAgKiBzdHJpbmcpLiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBhbGxvdyBhbnkgZGVzZXJpYWxpemF0aW9uLCBpdCBzaW1wbHkgY2hlY2tzIHRoYXRcbiAgICogdGhlIGdpdmVuIHZhbHVlIGlzIGFscmVhZHkgYSB2YWxpZCBkYXRlIG9iamVjdCBvciBudWxsLlxuICAgKiBAcGFyYW0gdmFsdWUgRWl0aGVyIGEgZGF0ZSBvYmplY3QsIElTTyBzdHJpbmcgb3IgYW4gZW1wdHkgdmFsdWUuXG4gICAqIEByZXR1cm5zIFRoZSBkYXRlIGlmIHRoZSBpbnB1dCBpcyB2YWxpZCwgYG51bGxgIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBkZXNlcmlhbGl6ZSh2YWx1ZTogVCB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBUIHwgbnVsbCB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgPT0gbnVsbCB8fFxuICAgICAgKHRoaXMuaXNEYXRlSW5zdGFuY2UodmFsdWUpICYmIHRoaXMuaXNWYWxpZCh2YWx1ZSBhcyBUIHwgbnVsbCB8IHVuZGVmaW5lZCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdmFsdWUgYXMgVCB8IG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmludmFsaWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYHllYXJzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZS5cbiAgICogQHBhcmFtIHllYXJzIFRoZSBudW1iZXIgb2YgeWVhcnMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGFkZENhbGVuZGFyWWVhcnMoZGF0ZTogVCwgeWVhcnM6IG51bWJlcik6IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgbW9udGhzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBJZiB0aGUgY2FsY3VsYXRlZCBtb250aCBoYXMgZmV3ZXIgZGF5cyB0aGFuIHRoZSBvcmlnaW5hbCBvbmUsIHRoZSBkYXRlIGlzIHNldCB0byB0aGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLlxuICAgKiBFLmcuIHdpdGggYGRhdGVgID0gbmV3IERhdGUoMjAyMiwgMCwgMzEpIGFuZCBgbW9udGhzYCA9IDEsIGl0IHJldHVybnMgbmV3IERhdGUoMjAyMiwgMSwgMjgpLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZS5cbiAgICogQHBhcmFtIG1vbnRocyBUaGUgbnVtYmVyIG9mIG1vbnRocyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogVCwgbW9udGhzOiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYnkgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYGRheXNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlLlxuICAgKiBAcGFyYW0gZGF5cyBUaGUgbnVtYmVyIG9mIGRheXMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGFkZENhbGVuZGFyRGF5cyhkYXRlOiBULCBkYXlzOiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRhdGUgaW4gdGhlIGxvY2FsIGZvcm1hdC5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZm9ybWF0XG4gICAqIEByZXR1cm5zIFRoZSBgZGF0ZWAgaW4gdGhlIGxvY2FsIGZvcm1hdCBhcyBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0QWNjZXNzaWJpbGl0eUZvcm1hdERhdGUoZGF0ZTogVCB8IHN0cmluZyk6IHN0cmluZztcblxuICAvKipcbiAgICogR2V0IHRoZSBnaXZlbiBzdHJpbmcgYXMgRGF0ZS5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBkYXRlIGluIHRoZSBmb3JtYXQgREQuTU0uWVlZWS5cbiAgICovXG4gIHB1YmxpYyBwYXJzZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFQgfCBudWxsIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgZGF0ZTogVCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGlzb01hdGNoID0gdmFsdWUubWF0Y2goSVNPODYwMV9GT1JNQVRfREFURSk7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGUgPSBpc29NYXRjaCA/IHRoaXMuY3JlYXRlRGF0ZSgraXNvTWF0Y2hbMV0sICtpc29NYXRjaFsyXSwgK2lzb01hdGNoWzNdKSA6IG51bGw7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBlbXB0eSAqL1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1ZhbGlkKGRhdGUpKSB7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJpcHBlZFZhbHVlID0gdmFsdWUucmVwbGFjZSgvXFxEL2csICcgJykudHJpbSgpO1xuXG4gICAgY29uc3QgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsIHwgdW5kZWZpbmVkID0gc3RyaXBwZWRWYWx1ZT8ubWF0Y2goRk9STUFUX0RBVEUpO1xuICAgIGlmIChcbiAgICAgICFtYXRjaCB8fFxuICAgICAgbWF0Y2guaW5kZXggIT09IDAgfHxcbiAgICAgIG1hdGNoLmxlbmd0aCA8PSAyIHx8XG4gICAgICBtYXRjaC5zb21lKChlKSA9PiBlID09PSB1bmRlZmluZWQpIHx8XG4gICAgICAhdGhpcy5pc1ZhbGlkKHRoaXMuY3JlYXRlRGF0ZSgrbWF0Y2hbM10sICttYXRjaFsyXSwgK21hdGNoWzFdKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB5ZWFyID0gK21hdGNoWzNdO1xuXG4gICAgaWYgKHR5cGVvZiB5ZWFyID09PSAnbnVtYmVyJyAmJiB5ZWFyIDwgMTAwICYmIHllYXIgPj0gMCkge1xuICAgICAgY29uc3Qgc2hpZnQgPSB0aGlzLmdldFllYXIodGhpcy50b2RheSgpKSAtIDIwMDAgKyB0aGlzLl9jdXRvZmZZZWFyT2Zmc2V0O1xuICAgICAgeWVhciA9IHllYXIgPD0gc2hpZnQgPyAyMDAwICsgeWVhciA6IDE5MDAgKyB5ZWFyO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZURhdGUoeWVhciwgK21hdGNoWzJdLCArbWF0Y2hbMV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCB0aGUgZ2l2ZW4gZGF0ZSBhcyBzdHJpbmcuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGZvcm1hdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9ucyBvYmplY3Qgd2l0aCB3ZWVrZGF5U3R5bGUgYXMgcHJvcGVydHlcbiAgICovXG4gIHB1YmxpYyBmb3JtYXQoXG4gICAgZGF0ZTogVCB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgb3B0aW9ucz86IHsgd2Vla2RheVN0eWxlPzogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnIHwgJ25vbmUnIH0sXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IG5ldyBEYXRlKHRoaXMudG9Jc284NjAxKGRhdGUhKSArICdUMDA6MDA6MDAnKTtcbiAgICBjb25zdCBkYXRlRm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2RlLUNIJywge1xuICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICBtb250aDogJzItZGlnaXQnLFxuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnM/LndlZWtkYXlTdHlsZSA9PT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gZGF0ZUZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHdlZWtkYXlTdHlsZSA9IG9wdGlvbnM/LndlZWtkYXlTdHlsZSA/PyAnc2hvcnQnO1xuICAgIGxldCB3ZWVrZGF5ID0gdGhpcy5nZXREYXlPZldlZWtOYW1lcyh3ZWVrZGF5U3R5bGUpW3RoaXMuZ2V0RGF5T2ZXZWVrKGRhdGUhKV07XG4gICAgd2Vla2RheSA9IHdlZWtkYXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3ZWVrZGF5LnN1YnN0cmluZygxKTtcbiAgICAvLyBXZSBoYXZlIHRoZSBzcGVjaWFsIHJlcXVpcmVtZW50IGZvciBkYXRlIGZvcm1hdHMgYXQgU0JCLCB3aGVyZSB0aGUgc2hvcnQgZm9ybVxuICAgIC8vIGZvciB3ZWVrZGF5cyBzaG91bGQgYmUgdHdvIGNoYXJhY3RlcnMgaW4gbGVuZ3RoLlxuICAgIGlmICh3ZWVrZGF5U3R5bGUgPT09ICdzaG9ydCcpIHtcbiAgICAgIHdlZWtkYXkgPSB3ZWVrZGF5LnN1YnN0cmluZygwLCAyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7d2Vla2RheX0sICR7ZGF0ZUZvcm1hdHRlci5mb3JtYXQodmFsdWUpfWA7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBvYmpgIGlzIGEgRGF0ZS5cbiAgICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzRGF0ZUluc3RhbmNlKG9iajogYW55KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2V0cyBkYXRlIGluc3RhbmNlIHRoYXQgaXMgbm90IHZhbGlkLlxuICAgKiBAcmV0dXJucyBBbiBpbnZhbGlkIGRhdGUuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaW52YWxpZCgpOiBUO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGdpdmVuIGRhdGUgYXMgSVNPIFN0cmluZy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY29udmVydCB0byBJU08gU3RyaW5nLlxuICAgKi9cbiAgcHVibGljIHRvSXNvODYwMShkYXRlOiBUKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYWQgPSAodmFsdWU6IG51bWJlciwgbGVuZ3RoID0gMik6IHN0cmluZyA9PiBgJHt2YWx1ZX1gLnBhZFN0YXJ0KGxlbmd0aCwgJzAnKTtcbiAgICByZXR1cm4gYCR7cGFkKHRoaXMuZ2V0WWVhcihkYXRlKSwgNCl9LSR7cGFkKHRoaXMuZ2V0TW9udGgoZGF0ZSkpfS0ke3BhZCh0aGlzLmdldERhdGUoZGF0ZSkpfWA7XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBwb3RlbnRpYWwgZGF0ZSBvYmplY3QsIHJldHVybnMgdGhhdCBzYW1lIGRhdGUgb2JqZWN0IGlmIGl0IGlzXG4gICAqIGEgdmFsaWQgZGF0ZSwgb3IgYG51bGxgIGlmIGl0J3Mgbm90IGEgdmFsaWQgZGF0ZS5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBvYmplY3QgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIEEgZGF0ZSBvciBgbnVsbGAuXG4gICAqL1xuICBwdWJsaWMgZ2V0VmFsaWREYXRlT3JOdWxsKHZhbHVlOiB1bmtub3duKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmlzRGF0ZUluc3RhbmNlKHZhbHVlKSAmJiB0aGlzLmlzVmFsaWQodmFsdWUgYXMgVCkgPyAodmFsdWUgYXMgVCkgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aCwgYW5kIHRoZW4gaXRzIG9mZnNldCBmcm9tIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAqL1xuICBwdWJsaWMgZ2V0Rmlyc3RXZWVrT2Zmc2V0KGRhdGU6IFQpOiBudW1iZXIge1xuICAgIGNvbnN0IGZpcnN0T2ZNb250aCA9IHRoaXMuY3JlYXRlRGF0ZSh0aGlzLmdldFllYXIoZGF0ZSksIHRoaXMuZ2V0TW9udGgoZGF0ZSksIDEpITtcbiAgICByZXR1cm4gKDcgKyB0aGlzLmdldERheU9mV2VlayhmaXJzdE9mTW9udGgpIC0gdGhpcy5nZXRGaXJzdERheU9mV2VlaygpKSAlIDc7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgdHdvIGRhdGVzLlxuICAgKiBAcGFyYW0gZmlyc3QgVGhlIGZpcnN0IGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHJldHVybnMgMCBpZiB0aGUgZGF0ZXMgYXJlIGVxdWFsLCBhIG51bWJlciBsZXNzIHRoYW4gMCBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBlYXJsaWVyLFxuICAgKiAgICAgYSBudW1iZXIgZ3JlYXRlciB0aGFuIDAgaWYgdGhlIGZpcnN0IGRhdGUgaXMgbGF0ZXIuXG4gICAqL1xuICBwdWJsaWMgY29tcGFyZURhdGUoZmlyc3Q6IFQsIHNlY29uZDogVCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZ2V0WWVhcihmaXJzdCkgLSB0aGlzLmdldFllYXIoc2Vjb25kKSB8fFxuICAgICAgdGhpcy5nZXRNb250aChmaXJzdCkgLSB0aGlzLmdldE1vbnRoKHNlY29uZCkgfHxcbiAgICAgIHRoaXMuZ2V0RGF0ZShmaXJzdCkgLSB0aGlzLmdldERhdGUoc2Vjb25kKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqIEBwYXJhbSBmaXJzdCBUaGUgZmlyc3QgZGF0ZSB0byBjaGVjay5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqICAgICBOdWxsIGRhdGVzIGFyZSBjb25zaWRlcmVkIGVxdWFsIHRvIG90aGVyIG51bGwgZGF0ZXMuXG4gICAqL1xuICBwdWJsaWMgc2FtZURhdGUoZmlyc3Q6IFQgfCBudWxsLCBzZWNvbmQ6IFQgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKGZpcnN0ICYmIHNlY29uZCkge1xuICAgICAgY29uc3QgZmlyc3RWYWxpZCA9IHRoaXMuaXNWYWxpZChmaXJzdCk7XG4gICAgICBjb25zdCBzZWNvbmRWYWxpZCA9IHRoaXMuaXNWYWxpZChzZWNvbmQpO1xuICAgICAgaWYgKGZpcnN0VmFsaWQgJiYgc2Vjb25kVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNvbXBhcmVEYXRlKGZpcnN0LCBzZWNvbmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpcnN0VmFsaWQgPT0gc2Vjb25kVmFsaWQ7XG4gICAgfVxuICAgIHJldHVybiBmaXJzdCA9PSBzZWNvbmQ7XG4gIH1cblxuICAvKipcbiAgICogQ2xhbXAgdGhlIGdpdmVuIGRhdGUgYmV0d2VlbiBtaW4gYW5kIG1heCBkYXRlcy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2xhbXAuXG4gICAqIEBwYXJhbSBtaW4gVGhlIG1pbmltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtaW4gaXMgZW5mb3JjZWQuXG4gICAqIEBwYXJhbSBtYXggVGhlIG1heGltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtYXggaXMgZW5mb3JjZWQuXG4gICAqIEByZXR1cm5zIGBtaW5gIGlmIGBkYXRlYCBpcyBsZXNzIHRoYW4gYG1pbmAsIGBtYXhgIGlmIGRhdGUgaXMgZ3JlYXRlciB0aGFuIGBtYXhgLFxuICAgKiAgICAgb3RoZXJ3aXNlIGBkYXRlYC5cbiAgICovXG4gIHB1YmxpYyBjbGFtcERhdGUoZGF0ZTogVCwgbWluPzogVCB8IG51bGwsIG1heD86IFQgfCBudWxsKTogVCB7XG4gICAgaWYgKG1pbiAmJiB0aGlzLmNvbXBhcmVEYXRlKGRhdGUsIG1pbikgPCAwKSB7XG4gICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICBpZiAobWF4ICYmIHRoaXMuY29tcGFyZURhdGUoZGF0ZSwgbWF4KSA+IDApIHtcbiAgICAgIHJldHVybiBtYXg7XG4gICAgfVxuICAgIHJldHVybiBkYXRlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFhLGNBQ1g7QUFDRixJQUFhLHNCQUFzQjtBQUNuQyxJQUFhLFNBQVM7QUFDdEIsSUFBYSxVQUFVO0FBQ3ZCLElBQWEsWUFBWTtBQUN6QixJQUFhLFdBQVc7QUFDeEIsSUFBYSxTQUFTO0FBQ3RCLElBQWEsV0FBVztBQUN4QixJQUFhLFNBQVM7QUFHdEIsSUFBYSxlQUF1QjtBQUNwQyxJQUFhLGlCQUF5QjtBQUN0QyxJQUFhLGdCQUF3QjtBQUNyQyxJQUFhLGtCQUEwQjtBQUN2QyxJQUFhLGlCQUF5Qjs7Ozs7O0FBT3RDLElBQXNCLGNBQXRCLE1BQWlDOzs7Ozs7O0NBUy9CLFlBQW1CLG1CQUEyQixJQUFFO0VBQzlDLEtBQUssb0JBQW9CO0NBQzNCOzs7Ozs7Ozs7Q0FrRk8sWUFBWSxPQUFvQztFQUNyRCxJQUNFLFNBQVMsUUFDUixLQUFLLGVBQWUsS0FBSyxLQUFLLEtBQUssUUFBUSxLQUE2QixHQUV6RSxPQUFPO0VBRVQsT0FBTyxLQUFLLFFBQU87Q0FDckI7Ozs7O0NBb0NPLE1BQU0sT0FBZ0M7RUFDM0MsSUFBSSxDQUFDLE9BQ0gsT0FBTztFQUdULElBQUksT0FBaUI7RUFDckIsTUFBTSxXQUFXLE1BQU0sTUFBTSxtQkFBbUI7RUFDaEQsSUFBSTtHQUNGLE9BQU8sV0FBVyxLQUFLLFdBQVcsQ0FBQyxTQUFTLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSTtFQUNoRixRQUFRLENBRVI7RUFDQSxJQUFJLEtBQUssUUFBUSxJQUFJLEdBQ25CLE9BQU87RUFLVCxNQUFNLFFBRmdCLE1BQU0sUUFBUSxPQUFPLEdBQUcsRUFBRSxLQUVHLEdBQWUsTUFBTSxXQUFXO0VB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
@@ -141,4 +141,4 @@ var defaultDateAdapter = new NativeDateAdapter();
141
141
  //#endregion
142
142
  export { NativeDateAdapter, defaultDateAdapter };
143
143
 
144
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWRhdGUtYWRhcHRlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kYXRldGltZS9uYXRpdmUtZGF0ZS1hZGFwdGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uL2NvbnRyb2xsZXJzL2xhbmd1YWdlLWNvbnRyb2xsZXIudHMnO1xuXG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJy4vZGF0ZS1hZGFwdGVyLnRzJztcblxuLyoqXG4gKiBNYXRjaGVzIHN0cmluZ3MgdGhhdCBoYXZlIHRoZSBmb3JtIG9mIGEgdmFsaWQgUkZDIDMzMzkgc3RyaW5nXG4gKiAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkpLiBOb3RlIHRoYXQgdGhlIHN0cmluZyBtYXkgbm90IGFjdHVhbGx5IGJlIGEgdmFsaWQgZGF0ZVxuICogYmVjYXVzZSB0aGUgcmVnZXggd2lsbCBtYXRjaCBzdHJpbmdzIGFuZCB3aXRob3V0IG9mIGJvdW5kcyBtb250aCwgZGF0ZSwgZXRjLlxuICovXG5jb25zdCBJU09fODYwMV9SRUdFWCA9XG4gIC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0oPzpUXFxkezJ9OlxcZHsyfTpcXGR7Mn0oPzpcXC5cXGQrKT8oPzpafCg/Oig/OlxcK3wtKVxcZHsyfTpcXGR7Mn0pKT8pPyQvO1xuXG5leHBvcnQgY2xhc3MgTmF0aXZlRGF0ZUFkYXB0ZXIgZXh0ZW5kcyBEYXRlQWRhcHRlcjxEYXRlPiB7XG4gIC8qKiBHZXRzIHRoZSB5ZWFyIG9mIHRoZSBpbnB1dCBkYXRlLiAqL1xuICBwdWJsaWMgZ2V0WWVhcihkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIG1vbnRoIG9mIHRoZSBpbnB1dCBkYXRlLiAqL1xuICBwdWJsaWMgZ2V0TW9udGgoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0TW9udGgoKSArIDE7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgZGF5IG9mIHRoZSBpbnB1dCBkYXRlLiAqL1xuICBwdWJsaWMgZ2V0RGF0ZShkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXREYXRlKCk7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgZGF5IG9mIHRoZSB3ZWVrIG9mIHRoZSBpbnB1dCBkYXRlLiAqL1xuICBwdWJsaWMgZ2V0RGF5T2ZXZWVrKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldERheSgpO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRhdGUgaW4gdGhlIGxvY2FsIGZvcm1hdC4gKi9cbiAgcHVibGljIGdldEFjY2Vzc2liaWxpdHlGb3JtYXREYXRlKGRhdGU6IERhdGUgfCBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG9wdGlvbnM6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge1xuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgbW9udGg6ICdsb25nJyxcbiAgICAgIGRheTogJ251bWVyaWMnLFxuICAgIH07XG4gICAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFNiYkxhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50LCBvcHRpb25zKS5mb3JtYXQobmV3IERhdGUoZGF0ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygc3RyaW5ncyB3aXRoIGxlbmd0aCA9IDEyLCBmaWxsZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbW9udGhzIHN0YXJ0aW5nIGZyb20gSmFudWFyeSwgaW4gdGhlIGRvY3VtZW50IGxhbmd1YWdlLlxuICAgKiBAcGFyYW0gc3R5bGUgU2VlIGBtb250aGAgaW4gYERhdGVUaW1lRm9ybWF0T3B0aW9uc2A6IGBsb25nYCBmb3IgZnVsbCBuYW1lLCBgc2hvcnRgIGZvciBzaG9ydCBuYW1lLCBgbmFycm93YCBmb3Igc2luZ2xlIGxldHRlcixcbiAgICogRS5nLiwgd2l0aCBKYW51YXJ5IGluIGVuLWdiOiBgbG9uZ2AgcmV0dXJucyBcIkphbnVhcnlcIiwgYHNob3J0YCByZXR1cm5zIFwiSmFuXCIsIGBuYXJyb3dgIHJldHVybnMgXCJKXCIuXG4gICAqL1xuICBwdWJsaWMgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFNiYkxhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50LCB7IG1vbnRoOiBzdHlsZSB9KTtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2UoMTIsIChpKSA9PiBmb3JtYXR0ZXIuZm9ybWF0KG5ldyBEYXRlKDIwMTcsIGksIDEpKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIHN0cmluZyBhcnJheSB3aXRoIGxlbmd0aCA9IDMxLCBmaWxsZWQgd2l0aCB0aGUgZGF5cyBpbiBhIG1vbnRoLCBzdGFydGluZyBmcm9tIDEuICovXG4gIHB1YmxpYyBnZXREYXRlTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFNiYkxhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50LCB7IGRheTogJ251bWVyaWMnIH0pO1xuICAgIHJldHVybiB0aGlzLl9yYW5nZSgzMSwgKGkpID0+IGZvcm1hdHRlci5mb3JtYXQobmV3IERhdGUoMjAxNywgMCwgaSArIDEpKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHN0cmluZyBhcnJheSB3aXRoIGxlbmd0aCA9IDcsIGZpbGxlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBkYXlzIGluIGEgd2VlayBzdGFydGluZyBmcm9tIFN1bmRheSwgaW4gdGhlIGRvY3VtZW50IGxhbmd1YWdlLlxuICAgKiBAcGFyYW0gc3R5bGUgU2VlIGB3ZWVrZGF5YCBpbiBgRGF0ZVRpbWVGb3JtYXRPcHRpb25zYCAtICdsb25nJyBmb3IgZnVsbCBuYW1lLCAnc2hvcnQnIGZvciBzaG9ydCBuYW1lLCAnbmFycm93JyBmb3Igc2luZ2xlIGxldHRlcjtcbiAgICogRS5nLiwgd2l0aCBNb25kYXkgaW4gZW4tZ2I6IGBsb25nYCByZXR1cm5zIFwiTW9uZGF5XCIsIGBzaG9ydGAgcmV0dXJucyBcIk1vblwiLCBgbmFycm93YCByZXR1cm5zIFwiTVwiLlxuICAgKi9cbiAgcHVibGljIGdldERheU9mV2Vla05hbWVzKHN0eWxlOiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoU2JiTGFuZ3VhZ2VDb250cm9sbGVyLmN1cnJlbnQsIHsgd2Vla2RheTogc3R5bGUgfSk7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlKDcsIChpKSA9PiBmb3JtYXR0ZXIuZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDAsIGkgKyAxKSkpO1xuICB9XG5cbiAgLyoqIERlZmluZXMgd2hpY2ggaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMDogc3VuZGF5OyAxOiBtb25kYXk7IGV0Yy4pLiAqL1xuICBwdWJsaWMgZ2V0Rmlyc3REYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8qKiBDYWxjdWxhdGVzIHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoIGdpdmVuIHRoZSB5ZWFyIGFuZCB0aGUgbW9udGguICovXG4gIHB1YmxpYyBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXREYXRlKHRoaXMuX2NyZWF0ZURhdGVXaXRoT3ZlcmZsb3codGhpcy5nZXRZZWFyKGRhdGUpLCB0aGlzLmdldE1vbnRoKGRhdGUpLCAwKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyB0b2RheSdzIGRhdGUuICovXG4gIHB1YmxpYyB0b2RheSgpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUobmV3IERhdGUoKS5zZXRIb3VycygwLCAwLCAwLCAwKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkYXRlLCBnaXZlbiBkYXksIG1vbnRoIGFuZCB5ZWFyOyB0aGUgbWV0aG9kIGRvZXNuJ3QgYWxsb3cgZGF0ZSdzIG92ZXJmbG93LiAqL1xuICBwdWJsaWMgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKTogRGF0ZSB7XG4gICAgLy8gQ2hlY2sgZm9yIGludmFsaWQgbW9udGggYW5kIGRhdGUgKGV4Y2VwdCB1cHBlciBib3VuZCBvbiBkYXRlIHdoaWNoIHdlIGhhdmUgdG8gY2hlY2sgYWZ0ZXIgY3JlYXRpbmcgdGhlIERhdGUpLlxuICAgIGlmIChtb250aCA8IDEgfHwgbW9udGggPiAxMikge1xuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgbW9udGggXCIke21vbnRofVwiLiBNb250aCBoYXMgdG8gYmUgYmV0d2VlbiAxIGFuZCAxMi5gKTtcbiAgICB9IGVsc2UgaWYgKGRheSA8IDEpIHtcbiAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIGRheSBcIiR7ZGF5fVwiLiBEYXkgaGFzIHRvIGJlIGdyZWF0ZXIgdGhhbiAwLmApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2NyZWF0ZURhdGVXaXRoT3ZlcmZsb3coeWVhciwgbW9udGggLSAxLCBkYXkpO1xuICAgIC8vIENoZWNrIHRoYXQgdGhlIGRhdGUgd2Fzbid0IGFib3ZlIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlIG1vbnRoLCBjYXVzaW5nIHRoZSBtb250aCB0byBvdmVyZmxvd1xuICAgIGlmIChyZXN1bHQuZ2V0TW9udGgoKSArIDEgIT09IG1vbnRoKSB7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBkYXkgXCIke2RheX1cIiBmb3IgbW9udGggXCIke21vbnRofVwiLmApO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBvYmpgIGlzIGEgRGF0ZS4gKi9cbiAgcHVibGljIGlzRGF0ZUluc3RhbmNlKG9iajogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIERhdGU7XG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBkYXRlYCBpcyBhIHZhbGlkIERhdGUuICovXG4gIHB1YmxpYyBpc1ZhbGlkKGRhdGU6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogZGF0ZSBpcyBEYXRlIHtcbiAgICByZXR1cm4gISFkYXRlICYmICFpc05hTihkYXRlLnZhbHVlT2YoKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkYXRlIGJ5IGNsb25pbmcgdGhlIGdpdmVuIG9uZS4gKi9cbiAgcHVibGljIGNsb25lKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgeWVhcnNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlLlxuICAgKiBAcGFyYW0geWVhcnMgVGhlIG51bWJlciBvZiB5ZWFycyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkQ2FsZW5kYXJZZWFycyhkYXRlOiBEYXRlLCB5ZWFyczogbnVtYmVyKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ2FsZW5kYXJNb250aHMoZGF0ZSwgeWVhcnMgKiAxMik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBkYXRlIGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGBtb250aHNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIElmIHRoZSBjYWxjdWxhdGVkIG1vbnRoIGhhcyBmZXdlciBkYXlzIHRoYW4gdGhlIG9yaWdpbmFsIG9uZSwgdGhlIGRhdGUgaXMgc2V0IHRvIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG4gICAqIEUuZy4sIHdpdGggYGRhdGVgID0gbmV3IERhdGUoMjAyMiwgMCwgMzEpIGFuZCBgbW9udGhzYCA9IDEsIGl0IHJldHVybnMgbmV3IERhdGUoMjAyMiwgMSwgMjgpLlxuICAgKi9cbiAgcHVibGljIGFkZENhbGVuZGFyTW9udGhzKGRhdGU6IERhdGUsIG1vbnRoczogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgdGFyZ2V0TW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyBtb250aHM7XG4gICAgY29uc3QgZGF0ZVdpdGhDb3JyZWN0TW9udGggPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIHRhcmdldE1vbnRoLCAxLCAwLCAwLCAwLCAwKTtcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IHRoaXMuZ2V0TnVtRGF5c0luTW9udGgoZGF0ZVdpdGhDb3JyZWN0TW9udGgpO1xuICAgIC8vIEFkYXB0IHRoZSBsYXN0IGRheSBvZiBtb250aCBmb3Igc2hvcnRlciBtb250aHNcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5jbG9uZShkYXRlKS5zZXRNb250aCh0YXJnZXRNb250aCwgTWF0aC5taW4oZGF5c0luTW9udGgsIGRhdGUuZ2V0RGF0ZSgpKSkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgZGF5c2AgdG8gdGhlIHByb3ZpZGVkIGBkYXRlYC4gKi9cbiAgcHVibGljIGFkZENhbGVuZGFyRGF5cyhkYXRlOiBEYXRlLCBkYXlzOiBudW1iZXIpOiBEYXRlIHtcbiAgICBjb25zdCB0YXJnZXREYXkgPSBkYXRlLmdldERhdGUoKSArIGRheXM7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCB0YXJnZXREYXksIDAsIDAsIDAsIDApO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBEYXRlIGZyb20gYSB2YWxpZCBpbnB1dCAoRGF0ZSBvciBJU08gc3RyaW5nKS4gKi9cbiAgcHVibGljIG92ZXJyaWRlIGRlc2VyaWFsaXplKGRhdGU6IERhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogRGF0ZSB8IG51bGwge1xuICAgIGlmICh0eXBlb2YgZGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoSVNPXzg2MDFfUkVHRVgudGVzdChkYXRlKSkge1xuICAgICAgICAvLyBUaGUgYERhdGVgIGNvbnN0cnVjdG9yIGFjY2VwdHMgZm9ybWF0cyBvdGhlciB0aGFuIElTTyA4NjAxLCBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVcbiAgICAgICAgLy8gc3RyaW5nIGlzIHRoZSByaWdodCBmb3JtYXQgZmlyc3QuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbGlkRGF0ZU9yTnVsbChuZXcgRGF0ZShkYXRlLmluY2x1ZGVzKCdUJykgPyBkYXRlIDogZGF0ZSArICdUMDA6MDA6MDAnKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5kZXNlcmlhbGl6ZShkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBpbnZhbGlkKCk6IERhdGUge1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gYXJyYXkgd2l0aCB0aGUgZ2l2ZW4gbGVuZ3RoIGFuZCBmaWxscyBpdCBieSBtYXBwaW5nIHdpdGggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIGFycmF5IHRvIGJlIGNyZWF0ZWQuXG4gICAqIEBwYXJhbSB2YWx1ZUZ1bmN0aW9uIFRoZSBmdW5jdGlvbiBvZiBhcnJheSdzIGluZGV4IHVzZWQgdG8gZmlsbCB0aGUgYXJyYXkuXG4gICAqL1xuICBwcml2YXRlIF9yYW5nZTxUPihsZW5ndGg6IG51bWJlciwgdmFsdWVGdW5jdGlvbjogKGluZGV4OiBudW1iZXIpID0+IFQpOiBUW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoIH0sIChfLCBpKSA9PiB2YWx1ZUZ1bmN0aW9uKGkpKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgZGF0ZSBidXQgYWxsb3dzIHRoZSBtb250aCBhbmQgZGF0ZSB0byBvdmVyZmxvdy4gKi9cbiAgcHJpdmF0ZSBfY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRhdGU6IG51bWJlcik6IERhdGUge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXRlKTtcbiAgICAvLyBXZSBuZWVkIHRvIGNvcnJlY3QgZm9yIHRoZSBmYWN0IHRoYXQgSlMgbmF0aXZlIERhdGUgdHJlYXRzIHllYXJzIGluIHJhbmdlIFswLCA5OV0gYXNcbiAgICAvLyBhYmJyZXZpYXRpb25zIGZvciAxOXh4LlxuICAgIGlmICh5ZWFyID49IDAgJiYgeWVhciA8IDEwMCkge1xuICAgICAgcmVzdWx0LnNldEZ1bGxZZWFyKHRoaXMuZ2V0WWVhcihyZXN1bHQpIC0gMTkwMCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHREYXRlQWRhcHRlciA9IG5ldyBOYXRpdmVEYXRlQWRhcHRlcigpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVNBLElBQU0saUJBQ0o7QUFFRixJQUFhLG9CQUFiLGNBQXVDLFlBQWlCOztDQUUvQyxRQUFRLE1BQVU7RUFDdkIsT0FBTyxLQUFLLGFBQWE7OztDQUlwQixTQUFTLE1BQVU7RUFDeEIsT0FBTyxLQUFLLFVBQVUsR0FBRzs7O0NBSXBCLFFBQVEsTUFBVTtFQUN2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
144
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWRhdGUtYWRhcHRlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kYXRldGltZS9uYXRpdmUtZGF0ZS1hZGFwdGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uL2NvbnRyb2xsZXJzL2xhbmd1YWdlLWNvbnRyb2xsZXIudHMnO1xuXG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJy4vZGF0ZS1hZGFwdGVyLnRzJztcblxuLyoqXG4gKiBNYXRjaGVzIHN0cmluZ3MgdGhhdCBoYXZlIHRoZSBmb3JtIG9mIGEgdmFsaWQgUkZDIDMzMzkgc3RyaW5nXG4gKiAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkpLiBOb3RlIHRoYXQgdGhlIHN0cmluZyBtYXkgbm90IGFjdHVhbGx5IGJlIGEgdmFsaWQgZGF0ZVxuICogYmVjYXVzZSB0aGUgcmVnZXggd2lsbCBtYXRjaCBzdHJpbmdzIGFuZCB3aXRob3V0IG9mIGJvdW5kcyBtb250aCwgZGF0ZSwgZXRjLlxuICovXG5jb25zdCBJU09fODYwMV9SRUdFWCA9XG4gIC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0oPzpUXFxkezJ9OlxcZHsyfTpcXGR7Mn0oPzpcXC5cXGQrKT8oPzpafCg/Oig/OlxcK3wtKVxcZHsyfTpcXGR7Mn0pKT8pPyQvO1xuXG5leHBvcnQgY2xhc3MgTmF0aXZlRGF0ZUFkYXB0ZXIgZXh0ZW5kcyBEYXRlQWRhcHRlcjxEYXRlPiB7XG4gIC8qKiBHZXRzIHRoZSB5ZWFyIG9mIHRoZSBpbnB1dCBkYXRlLiAqL1xuICBwdWJsaWMgZ2V0WWVhcihkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIG1vbnRoIG9mIHRoZSBpbnB1dCBkYXRlLiAqL1xuICBwdWJsaWMgZ2V0TW9udGgoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0TW9udGgoKSArIDE7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgZGF5IG9mIHRoZSBpbnB1dCBkYXRlLiAqL1xuICBwdWJsaWMgZ2V0RGF0ZShkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXREYXRlKCk7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgZGF5IG9mIHRoZSB3ZWVrIG9mIHRoZSBpbnB1dCBkYXRlLiAqL1xuICBwdWJsaWMgZ2V0RGF5T2ZXZWVrKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldERheSgpO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRhdGUgaW4gdGhlIGxvY2FsIGZvcm1hdC4gKi9cbiAgcHVibGljIGdldEFjY2Vzc2liaWxpdHlGb3JtYXREYXRlKGRhdGU6IERhdGUgfCBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG9wdGlvbnM6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge1xuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgbW9udGg6ICdsb25nJyxcbiAgICAgIGRheTogJ251bWVyaWMnLFxuICAgIH07XG4gICAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFNiYkxhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50LCBvcHRpb25zKS5mb3JtYXQobmV3IERhdGUoZGF0ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygc3RyaW5ncyB3aXRoIGxlbmd0aCA9IDEyLCBmaWxsZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbW9udGhzIHN0YXJ0aW5nIGZyb20gSmFudWFyeSwgaW4gdGhlIGRvY3VtZW50IGxhbmd1YWdlLlxuICAgKiBAcGFyYW0gc3R5bGUgU2VlIGBtb250aGAgaW4gYERhdGVUaW1lRm9ybWF0T3B0aW9uc2A6IGBsb25nYCBmb3IgZnVsbCBuYW1lLCBgc2hvcnRgIGZvciBzaG9ydCBuYW1lLCBgbmFycm93YCBmb3Igc2luZ2xlIGxldHRlcixcbiAgICogRS5nLiwgd2l0aCBKYW51YXJ5IGluIGVuLWdiOiBgbG9uZ2AgcmV0dXJucyBcIkphbnVhcnlcIiwgYHNob3J0YCByZXR1cm5zIFwiSmFuXCIsIGBuYXJyb3dgIHJldHVybnMgXCJKXCIuXG4gICAqL1xuICBwdWJsaWMgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFNiYkxhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50LCB7IG1vbnRoOiBzdHlsZSB9KTtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2UoMTIsIChpKSA9PiBmb3JtYXR0ZXIuZm9ybWF0KG5ldyBEYXRlKDIwMTcsIGksIDEpKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIHN0cmluZyBhcnJheSB3aXRoIGxlbmd0aCA9IDMxLCBmaWxsZWQgd2l0aCB0aGUgZGF5cyBpbiBhIG1vbnRoLCBzdGFydGluZyBmcm9tIDEuICovXG4gIHB1YmxpYyBnZXREYXRlTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFNiYkxhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50LCB7IGRheTogJ251bWVyaWMnIH0pO1xuICAgIHJldHVybiB0aGlzLl9yYW5nZSgzMSwgKGkpID0+IGZvcm1hdHRlci5mb3JtYXQobmV3IERhdGUoMjAxNywgMCwgaSArIDEpKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHN0cmluZyBhcnJheSB3aXRoIGxlbmd0aCA9IDcsIGZpbGxlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBkYXlzIGluIGEgd2VlayBzdGFydGluZyBmcm9tIFN1bmRheSwgaW4gdGhlIGRvY3VtZW50IGxhbmd1YWdlLlxuICAgKiBAcGFyYW0gc3R5bGUgU2VlIGB3ZWVrZGF5YCBpbiBgRGF0ZVRpbWVGb3JtYXRPcHRpb25zYCAtICdsb25nJyBmb3IgZnVsbCBuYW1lLCAnc2hvcnQnIGZvciBzaG9ydCBuYW1lLCAnbmFycm93JyBmb3Igc2luZ2xlIGxldHRlcjtcbiAgICogRS5nLiwgd2l0aCBNb25kYXkgaW4gZW4tZ2I6IGBsb25nYCByZXR1cm5zIFwiTW9uZGF5XCIsIGBzaG9ydGAgcmV0dXJucyBcIk1vblwiLCBgbmFycm93YCByZXR1cm5zIFwiTVwiLlxuICAgKi9cbiAgcHVibGljIGdldERheU9mV2Vla05hbWVzKHN0eWxlOiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoU2JiTGFuZ3VhZ2VDb250cm9sbGVyLmN1cnJlbnQsIHsgd2Vla2RheTogc3R5bGUgfSk7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlKDcsIChpKSA9PiBmb3JtYXR0ZXIuZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDAsIGkgKyAxKSkpO1xuICB9XG5cbiAgLyoqIERlZmluZXMgd2hpY2ggaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMDogc3VuZGF5OyAxOiBtb25kYXk7IGV0Yy4pLiAqL1xuICBwdWJsaWMgZ2V0Rmlyc3REYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8qKiBDYWxjdWxhdGVzIHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoIGdpdmVuIHRoZSB5ZWFyIGFuZCB0aGUgbW9udGguICovXG4gIHB1YmxpYyBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXREYXRlKHRoaXMuX2NyZWF0ZURhdGVXaXRoT3ZlcmZsb3codGhpcy5nZXRZZWFyKGRhdGUpLCB0aGlzLmdldE1vbnRoKGRhdGUpLCAwKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyB0b2RheSdzIGRhdGUuICovXG4gIHB1YmxpYyB0b2RheSgpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUobmV3IERhdGUoKS5zZXRIb3VycygwLCAwLCAwLCAwKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkYXRlLCBnaXZlbiBkYXksIG1vbnRoIGFuZCB5ZWFyOyB0aGUgbWV0aG9kIGRvZXNuJ3QgYWxsb3cgZGF0ZSdzIG92ZXJmbG93LiAqL1xuICBwdWJsaWMgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKTogRGF0ZSB7XG4gICAgLy8gQ2hlY2sgZm9yIGludmFsaWQgbW9udGggYW5kIGRhdGUgKGV4Y2VwdCB1cHBlciBib3VuZCBvbiBkYXRlIHdoaWNoIHdlIGhhdmUgdG8gY2hlY2sgYWZ0ZXIgY3JlYXRpbmcgdGhlIERhdGUpLlxuICAgIGlmIChtb250aCA8IDEgfHwgbW9udGggPiAxMikge1xuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgbW9udGggXCIke21vbnRofVwiLiBNb250aCBoYXMgdG8gYmUgYmV0d2VlbiAxIGFuZCAxMi5gKTtcbiAgICB9IGVsc2UgaWYgKGRheSA8IDEpIHtcbiAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIGRheSBcIiR7ZGF5fVwiLiBEYXkgaGFzIHRvIGJlIGdyZWF0ZXIgdGhhbiAwLmApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2NyZWF0ZURhdGVXaXRoT3ZlcmZsb3coeWVhciwgbW9udGggLSAxLCBkYXkpO1xuICAgIC8vIENoZWNrIHRoYXQgdGhlIGRhdGUgd2Fzbid0IGFib3ZlIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlIG1vbnRoLCBjYXVzaW5nIHRoZSBtb250aCB0byBvdmVyZmxvd1xuICAgIGlmIChyZXN1bHQuZ2V0TW9udGgoKSArIDEgIT09IG1vbnRoKSB7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBkYXkgXCIke2RheX1cIiBmb3IgbW9udGggXCIke21vbnRofVwiLmApO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBvYmpgIGlzIGEgRGF0ZS4gKi9cbiAgcHVibGljIGlzRGF0ZUluc3RhbmNlKG9iajogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIERhdGU7XG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBkYXRlYCBpcyBhIHZhbGlkIERhdGUuICovXG4gIHB1YmxpYyBpc1ZhbGlkKGRhdGU6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogZGF0ZSBpcyBEYXRlIHtcbiAgICByZXR1cm4gISFkYXRlICYmICFpc05hTihkYXRlLnZhbHVlT2YoKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkYXRlIGJ5IGNsb25pbmcgdGhlIGdpdmVuIG9uZS4gKi9cbiAgcHVibGljIGNsb25lKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgeWVhcnNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlLlxuICAgKiBAcGFyYW0geWVhcnMgVGhlIG51bWJlciBvZiB5ZWFycyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkQ2FsZW5kYXJZZWFycyhkYXRlOiBEYXRlLCB5ZWFyczogbnVtYmVyKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ2FsZW5kYXJNb250aHMoZGF0ZSwgeWVhcnMgKiAxMik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBkYXRlIGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGBtb250aHNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIElmIHRoZSBjYWxjdWxhdGVkIG1vbnRoIGhhcyBmZXdlciBkYXlzIHRoYW4gdGhlIG9yaWdpbmFsIG9uZSwgdGhlIGRhdGUgaXMgc2V0IHRvIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG4gICAqIEUuZy4sIHdpdGggYGRhdGVgID0gbmV3IERhdGUoMjAyMiwgMCwgMzEpIGFuZCBgbW9udGhzYCA9IDEsIGl0IHJldHVybnMgbmV3IERhdGUoMjAyMiwgMSwgMjgpLlxuICAgKi9cbiAgcHVibGljIGFkZENhbGVuZGFyTW9udGhzKGRhdGU6IERhdGUsIG1vbnRoczogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgdGFyZ2V0TW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyBtb250aHM7XG4gICAgY29uc3QgZGF0ZVdpdGhDb3JyZWN0TW9udGggPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIHRhcmdldE1vbnRoLCAxLCAwLCAwLCAwLCAwKTtcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IHRoaXMuZ2V0TnVtRGF5c0luTW9udGgoZGF0ZVdpdGhDb3JyZWN0TW9udGgpO1xuICAgIC8vIEFkYXB0IHRoZSBsYXN0IGRheSBvZiBtb250aCBmb3Igc2hvcnRlciBtb250aHNcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5jbG9uZShkYXRlKS5zZXRNb250aCh0YXJnZXRNb250aCwgTWF0aC5taW4oZGF5c0luTW9udGgsIGRhdGUuZ2V0RGF0ZSgpKSkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgZGF5c2AgdG8gdGhlIHByb3ZpZGVkIGBkYXRlYC4gKi9cbiAgcHVibGljIGFkZENhbGVuZGFyRGF5cyhkYXRlOiBEYXRlLCBkYXlzOiBudW1iZXIpOiBEYXRlIHtcbiAgICBjb25zdCB0YXJnZXREYXkgPSBkYXRlLmdldERhdGUoKSArIGRheXM7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCB0YXJnZXREYXksIDAsIDAsIDAsIDApO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBEYXRlIGZyb20gYSB2YWxpZCBpbnB1dCAoRGF0ZSBvciBJU08gc3RyaW5nKS4gKi9cbiAgcHVibGljIG92ZXJyaWRlIGRlc2VyaWFsaXplKGRhdGU6IERhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogRGF0ZSB8IG51bGwge1xuICAgIGlmICh0eXBlb2YgZGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoSVNPXzg2MDFfUkVHRVgudGVzdChkYXRlKSkge1xuICAgICAgICAvLyBUaGUgYERhdGVgIGNvbnN0cnVjdG9yIGFjY2VwdHMgZm9ybWF0cyBvdGhlciB0aGFuIElTTyA4NjAxLCBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVcbiAgICAgICAgLy8gc3RyaW5nIGlzIHRoZSByaWdodCBmb3JtYXQgZmlyc3QuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbGlkRGF0ZU9yTnVsbChuZXcgRGF0ZShkYXRlLmluY2x1ZGVzKCdUJykgPyBkYXRlIDogZGF0ZSArICdUMDA6MDA6MDAnKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5kZXNlcmlhbGl6ZShkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBpbnZhbGlkKCk6IERhdGUge1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gYXJyYXkgd2l0aCB0aGUgZ2l2ZW4gbGVuZ3RoIGFuZCBmaWxscyBpdCBieSBtYXBwaW5nIHdpdGggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIGFycmF5IHRvIGJlIGNyZWF0ZWQuXG4gICAqIEBwYXJhbSB2YWx1ZUZ1bmN0aW9uIFRoZSBmdW5jdGlvbiBvZiBhcnJheSdzIGluZGV4IHVzZWQgdG8gZmlsbCB0aGUgYXJyYXkuXG4gICAqL1xuICBwcml2YXRlIF9yYW5nZTxUPihsZW5ndGg6IG51bWJlciwgdmFsdWVGdW5jdGlvbjogKGluZGV4OiBudW1iZXIpID0+IFQpOiBUW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoIH0sIChfLCBpKSA9PiB2YWx1ZUZ1bmN0aW9uKGkpKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgZGF0ZSBidXQgYWxsb3dzIHRoZSBtb250aCBhbmQgZGF0ZSB0byBvdmVyZmxvdy4gKi9cbiAgcHJpdmF0ZSBfY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRhdGU6IG51bWJlcik6IERhdGUge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXRlKTtcbiAgICAvLyBXZSBuZWVkIHRvIGNvcnJlY3QgZm9yIHRoZSBmYWN0IHRoYXQgSlMgbmF0aXZlIERhdGUgdHJlYXRzIHllYXJzIGluIHJhbmdlIFswLCA5OV0gYXNcbiAgICAvLyBhYmJyZXZpYXRpb25zIGZvciAxOXh4LlxuICAgIGlmICh5ZWFyID49IDAgJiYgeWVhciA8IDEwMCkge1xuICAgICAgcmVzdWx0LnNldEZ1bGxZZWFyKHRoaXMuZ2V0WWVhcihyZXN1bHQpIC0gMTkwMCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHREYXRlQWRhcHRlciA9IG5ldyBOYXRpdmVEYXRlQWRhcHRlcigpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVNBLElBQU0saUJBQ0o7QUFFRixJQUFhLG9CQUFiLGNBQXVDLFlBQWlCOztDQUUvQyxRQUFRLE1BQVU7RUFDdkIsT0FBTyxLQUFLLFlBQVc7Q0FDekI7O0NBR08sU0FBUyxNQUFVO0VBQ3hCLE9BQU8sS0FBSyxTQUFRLElBQUs7Q0FDM0I7O0NBR08sUUFBUSxN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
@@ -161,4 +161,4 @@ var TemporalDateAdapter = class extends DateAdapter {
161
161
  //#endregion
162
162
  export { TemporalDateAdapter };
163
163
 
164
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG9yYWwtZGF0ZS1hZGFwdGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RhdGV0aW1lL3RlbXBvcmFsLWRhdGUtYWRhcHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSB0eXBlcz1cInRlbXBvcmFsLXBvbHlmaWxsL2dsb2JhbFwiIC8+XG5cbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uL2NvbnRyb2xsZXJzL2xhbmd1YWdlLWNvbnRyb2xsZXIudHMnO1xuXG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJy4vZGF0ZS1hZGFwdGVyLnRzJztcblxuLyoqXG4gKiBNYXRjaGVzIHN0cmluZ3MgdGhhdCBoYXZlIHRoZSBmb3JtIG9mIGEgdmFsaWQgUkZDIDMzMzkgc3RyaW5nXG4gKiAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkpLiBOb3RlIHRoYXQgdGhlIHN0cmluZyBtYXkgbm90IGFjdHVhbGx5IGJlIGEgdmFsaWQgZGF0ZVxuICogYmVjYXVzZSB0aGUgcmVnZXggd2lsbCBtYXRjaCBzdHJpbmdzIGFuZCB3aXRob3V0IG9mIGJvdW5kcyBtb250aCwgZGF0ZSwgZXRjLlxuICovXG5jb25zdCBJU09fODYwMV9SRUdFWCA9XG4gIC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0oPzpUXFxkezJ9OlxcZHsyfTpcXGR7Mn0oPzpcXC5cXGQrKT8oPzpafCg/Oig/OlxcK3wtKVxcZHsyfTpcXGR7Mn0pKT8pPyQvO1xuXG5leHBvcnQgY2xhc3MgVGVtcG9yYWxEYXRlQWRhcHRlciBleHRlbmRzIERhdGVBZGFwdGVyPFRlbXBvcmFsLlBsYWluRGF0ZT4ge1xuICAvKipcbiAgICogQHBhcmFtIGN1dG9mZlllYXJPZmZzZXQgVGhlIHRocmVzaG9sZCBvbiB3aGV0aGVyIGEgdHdvLWRpZ2l0IHllYXJcbiAgICogc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYmVsb25naW5nIHRvIDIwMDAgb3IgMTkwMC4gZS5nLiB3aXRoIDE1IChkZWZhdWx0KVxuICAgKiB0aGUgY3VycmVudCB5ZWFyIHBsdXMgMTUgd2lsbCBiZSB0cmVhdGVkIGFzIGJlbG9uZ2luZyB0byAyMDAwLCBhbmQgdGhlIHJlc3QgdG8gMTkwMC5cbiAgICogU28gZS5nLiB3aXRoIHRoZSBjdXJyZW50IHllYXIgMjAyNSwgNDAgd2lsbCBiZSB0cmVhdGVkIGFzIDIwNDAsIHdoaWxlIDQxIHdpbGwgYmUgdHJlYXRlZCBhcyAxOTQxLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGN1dG9mZlllYXJPZmZzZXQ/OiBudW1iZXIpIHtcbiAgICBzdXBlcihjdXRvZmZZZWFyT2Zmc2V0KTtcbiAgICBpZiAodHlwZW9mIFRlbXBvcmFsICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVGVtcG9yYWwgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBlbnZpcm9ubWVudC4gUGxlYXNlIG1ha2Ugc3VyZSB0byBpbmNsdWRlIHRoZSB0ZW1wb3JhbCBwb2x5ZmlsbC4nLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKiogR2V0cyB0aGUgeWVhciBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldFllYXIoZGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS55ZWFyO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIG1vbnRoIG9mIHRoZSBpbnB1dCBkYXRlLiAqL1xuICBwdWJsaWMgZ2V0TW9udGgoZGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5tb250aDtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBkYXkgb2YgdGhlIGlucHV0IGRhdGUuICovXG4gIHB1YmxpYyBnZXREYXRlKGRhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZGF5O1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldERheU9mV2VlayhkYXRlOiBUZW1wb3JhbC5QbGFpbkRhdGUpOiBudW1iZXIge1xuICAgIC8vIE91ciBleHBlY3RhdGlvbiBpcyAwID0gU3VuZGF5IGJ1dCBUZW1wb3JhbC5QbGFpbkRhdGUuZGF5T2ZXZWVrIHJldHVybnMgNyA9IFN1bmRheVxuICAgIC8vIFRPRE86IFJlbW92ZSB0aGlzIHdpdGggYSBmdXR1cmUgcmVsZWFzZS5cbiAgICByZXR1cm4gZGF0ZS5kYXlPZldlZWsgJSA3O1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRhdGUgaW4gdGhlIGxvY2FsIGZvcm1hdC4gKi9cbiAgcHVibGljIGdldEFjY2Vzc2liaWxpdHlGb3JtYXREYXRlKGRhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSB8IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3B0aW9uczogSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMgPSB7XG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICBtb250aDogJ2xvbmcnLFxuICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5kZXNlcmlhbGl6ZShkYXRlKSEudG9Mb2NhbGVTdHJpbmcoU2JiTGFuZ3VhZ2VDb250cm9sbGVyLmN1cnJlbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygc3RyaW5ncyB3aXRoIGxlbmd0aCA9IDEyLCBmaWxsZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbW9udGhzIHN0YXJ0aW5nIGZyb20gSmFudWFyeSwgaW4gdGhlIGRvY3VtZW50IGxhbmd1YWdlLlxuICAgKiBAcGFyYW0gc3R5bGUgU2VlIGBtb250aGAgaW4gYERhdGVUaW1lRm9ybWF0T3B0aW9uc2A6IGBsb25nYCBmb3IgZnVsbCBuYW1lLCBgc2hvcnRgIGZvciBzaG9ydCBuYW1lLCBgbmFycm93YCBmb3Igc2luZ2xlIGxldHRlcixcbiAgICogRS5nLiwgd2l0aCBKYW51YXJ5IGluIGVuLWdiOiBgbG9uZ2AgcmV0dXJucyBcIkphbnVhcnlcIiwgYHNob3J0YCByZXR1cm5zIFwiSmFuXCIsIGBuYXJyb3dgIHJldHVybnMgXCJKXCIuXG4gICAqL1xuICBwdWJsaWMgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFNiYkxhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50LCB7IG1vbnRoOiBzdHlsZSB9KTtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2UoMTIsIChpKSA9PlxuICAgICAgZm9ybWF0dGVyLmZvcm1hdChUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSh7IHllYXI6IDIwMTcsIG1vbnRoOiBpICsgMSwgZGF5OiAxIH0pKSxcbiAgICApO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBzdHJpbmcgYXJyYXkgd2l0aCBsZW5ndGggPSAzMSwgZmlsbGVkIHdpdGggdGhlIGRheXMgaW4gYSBtb250aCwgc3RhcnRpbmcgZnJvbSAxLiAqL1xuICBwdWJsaWMgZ2V0RGF0ZU5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgeyBkYXk6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2UoMzEsIChpKSA9PlxuICAgICAgZm9ybWF0dGVyLmZvcm1hdChUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSh7IHllYXI6IDIwMTcsIG1vbnRoOiAxLCBkYXk6IGkgKyAxIH0pKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdHJpbmcgYXJyYXkgd2l0aCBsZW5ndGggPSA3LCBmaWxsZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZGF5cyBpbiBhIHdlZWsgc3RhcnRpbmcgZnJvbSBTdW5kYXksIGluIHRoZSBkb2N1bWVudCBsYW5ndWFnZS5cbiAgICogQHBhcmFtIHN0eWxlIFNlZSBgd2Vla2RheWAgaW4gYERhdGVUaW1lRm9ybWF0T3B0aW9uc2AgLSAnbG9uZycgZm9yIGZ1bGwgbmFtZSwgJ3Nob3J0JyBmb3Igc2hvcnQgbmFtZSwgJ25hcnJvdycgZm9yIHNpbmdsZSBsZXR0ZXI7XG4gICAqIEUuZy4sIHdpdGggTW9uZGF5IGluIGVuLWdiOiBgbG9uZ2AgcmV0dXJucyBcIk1vbmRheVwiLCBgc2hvcnRgIHJldHVybnMgXCJNb25cIiwgYG5hcnJvd2AgcmV0dXJucyBcIk1cIi5cbiAgICovXG4gIHB1YmxpYyBnZXREYXlPZldlZWtOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFNiYkxhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50LCB7IHdlZWtkYXk6IHN0eWxlIH0pO1xuICAgIHJldHVybiB0aGlzLl9yYW5nZSg3LCAoaSkgPT5cbiAgICAgIGZvcm1hdHRlci5mb3JtYXQoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oeyB5ZWFyOiAyMDE3LCBtb250aDogMSwgZGF5OiBpICsgMSB9KSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBEZWZpbmVzIHdoaWNoIGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDA6IHN1bmRheTsgMTogbW9uZGF5OyBldGMuKS4gKi9cbiAgcHVibGljIGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvKiogQ2FsY3VsYXRlcyB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBtb250aCBnaXZlbiB0aGUgeWVhciBhbmQgdGhlIG1vbnRoLiAqL1xuICBwdWJsaWMgZ2V0TnVtRGF5c0luTW9udGgoZGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5kYXlzSW5Nb250aDtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIHRvZGF5J3MgZGF0ZS4gKi9cbiAgcHVibGljIHRvZGF5KCk6IFRlbXBvcmFsLlBsYWluRGF0ZSB7XG4gICAgcmV0dXJuIFRlbXBvcmFsLk5vdy5wbGFpbkRhdGVJU08oKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgbmV3IGRhdGUsIGdpdmVuIGRheSwgbW9udGggYW5kIHllYXI7IHRoZSBtZXRob2QgZG9lc24ndCBhbGxvdyBkYXRlJ3Mgb3ZlcmZsb3cuICovXG4gIHB1YmxpYyBjcmVhdGVEYXRlKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5OiBudW1iZXIpOiBUZW1wb3JhbC5QbGFpbkRhdGUge1xuICAgIC8vIENoZWNrIGZvciBpbnZhbGlkIG1vbnRoIGFuZCBkYXRlIChleGNlcHQgdXBwZXIgYm91bmQgb24gZGF0ZSB3aGljaCB3ZSBoYXZlIHRvIGNoZWNrIGFmdGVyIGNyZWF0aW5nIHRoZSBUZW1wb3JhbC5QbGFpbkRhdGUpLlxuICAgIGlmIChtb250aCA8IDEgfHwgbW9udGggPiAxMikge1xuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgbW9udGggXCIke21vbnRofVwiLiBNb250aCBoYXMgdG8gYmUgYmV0d2VlbiAxIGFuZCAxMi5gKTtcbiAgICB9IGVsc2UgaWYgKGRheSA8IDEpIHtcbiAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIGRheSBcIiR7ZGF5fVwiLiBEYXkgaGFzIHRvIGJlIGdyZWF0ZXIgdGhhbiAwLmApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oeyB5ZWFyLCBtb250aCwgZGF5OiBkYXkgfSwgeyBvdmVyZmxvdzogJ3JlamVjdCcgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlIFwiJHtkYXl9XCIgZm9yIG1vbnRoIHdpdGggaW5kZXggXCIke21vbnRofVwiLmApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gYG9iamAgaXMgYSBUZW1wb3JhbC5QbGFpbkRhdGUuICovXG4gIHB1YmxpYyBpc0RhdGVJbnN0YW5jZShvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBUZW1wb3JhbC5QbGFpbkRhdGU7XG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBkYXRlYCBpcyBhIHZhbGlkIFRlbXBvcmFsLlBsYWluRGF0ZS4gKi9cbiAgcHVibGljIGlzVmFsaWQoZGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGRhdGUgaXMgVGVtcG9yYWwuUGxhaW5EYXRlIHtcbiAgICByZXR1cm4gdGhpcy5pc0RhdGVJbnN0YW5jZShkYXRlKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgbmV3IGRhdGUgYnkgY2xvbmluZyB0aGUgZ2l2ZW4gb25lLiAqL1xuICBwdWJsaWMgY2xvbmUoZGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlKTogVGVtcG9yYWwuUGxhaW5EYXRlIHtcbiAgICByZXR1cm4gVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oZGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBkYXRlIGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGB5ZWFyc2AgdG8gdGhlIHByb3ZpZGVkIGBkYXRlYC5cbiAgICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUuXG4gICAqIEBwYXJhbSB5ZWFycyBUaGUgbnVtYmVyIG9mIHllYXJzIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGRDYWxlbmRhclllYXJzKGRhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSwgeWVhcnM6IG51bWJlcik6IFRlbXBvcmFsLlBsYWluRGF0ZSB7XG4gICAgcmV0dXJuIGRhdGUuYWRkKHsgeWVhcnMgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBkYXRlIGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGBtb250aHNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIElmIHRoZSBjYWxjdWxhdGVkIG1vbnRoIGhhcyBmZXdlciBkYXlzIHRoYW4gdGhlIG9yaWdpbmFsIG9uZSwgdGhlIGRhdGUgaXMgc2V0IHRvIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG4gICAqIEUuZy4sIHdpdGggYGRhdGVgID0gbmV3IFRlbXBvcmFsLlBsYWluRGF0ZSgyMDIyLCAwLCAzMSkgYW5kIGBtb250aHNgID0gMSwgaXQgcmV0dXJucyBuZXcgVGVtcG9yYWwuUGxhaW5EYXRlKDIwMjIsIDEsIDI4KS5cbiAgICovXG4gIHB1YmxpYyBhZGRDYWxlbmRhck1vbnRocyhkYXRlOiBUZW1wb3JhbC5QbGFpbkRhdGUsIG1vbnRoczogbnVtYmVyKTogVGVtcG9yYWwuUGxhaW5EYXRlIHtcbiAgICByZXR1cm4gZGF0ZS5hZGQoeyBtb250aHMgfSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkYXRlIGJ5IGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGBkYXlzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLiAqL1xuICBwdWJsaWMgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSwgZGF5czogbnVtYmVyKTogVGVtcG9yYWwuUGxhaW5EYXRlIHtcbiAgICByZXR1cm4gZGF0ZS5hZGQoeyBkYXlzIH0pO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBUZW1wb3JhbC5QbGFpbkRhdGUgZnJvbSBhIHZhbGlkIGlucHV0IChUZW1wb3JhbC5QbGFpbkRhdGUgb3IgSVNPIHN0cmluZykuICovXG4gIHB1YmxpYyBvdmVycmlkZSBkZXNlcmlhbGl6ZShcbiAgICBkYXRlOiBUZW1wb3JhbC5QbGFpbkRhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICApOiBUZW1wb3JhbC5QbGFpbkRhdGUgfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGVsc2UgaWYgKElTT184NjAxX1JFR0VYLnRlc3QoZGF0ZSkpIHtcbiAgICAgICAgLy8gYFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tYCBvbmx5IGFjY2VwdHMgSVNPIDg2MDEgZGF0ZSBzdHJpbmdzIHdpdGhvdXQgdGltZSBjb21wb25lbnRzLlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWxpZERhdGVPck51bGwoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oZGF0ZS5zcGxpdCgnVCcpWzBdKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5kZXNlcmlhbGl6ZShkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBpbnZhbGlkKCk6IFRlbXBvcmFsLlBsYWluRGF0ZSB7XG4gICAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSBhbiBpbnZhbGlkIFRlbXBvcmFsLlBsYWluRGF0ZSwgc28gd2UgcmV0dXJuIG51bGwuXG4gICAgcmV0dXJuIG51bGwhO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHRvSXNvODYwMShkYXRlOiBUZW1wb3JhbC5QbGFpbkRhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlLnRvSlNPTigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gYXJyYXkgd2l0aCB0aGUgZ2l2ZW4gbGVuZ3RoIGFuZCBmaWxscyBpdCBieSBtYXBwaW5nIHdpdGggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIGFycmF5IHRvIGJlIGNyZWF0ZWQuXG4gICAqIEBwYXJhbSB2YWx1ZUZ1bmN0aW9uIFRoZSBmdW5jdGlvbiBvZiBhcnJheSdzIGluZGV4IHVzZWQgdG8gZmlsbCB0aGUgYXJyYXkuXG4gICAqL1xuICBwcml2YXRlIF9yYW5nZTxUPihsZW5ndGg6IG51bWJlciwgdmFsdWVGdW5jdGlvbjogKGluZGV4OiBudW1iZXIpID0+IFQpOiBUW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoIH0sIChfLCBpKSA9PiB2YWx1ZUZ1bmN0aW9uKGkpKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVdBLElBQU0saUJBQ0o7QUFFRixJQUFhLHNCQUFiLGNBQXlDLFlBQStCOzs7Ozs7O0NBT3RFLFlBQW1CLGtCQUF5QjtFQUMxQyxNQUFNLGlCQUFpQjtFQUN2QixJQUFJLE9BQU8sYUFBYSxVQUN0QixNQUFNLElBQUksTUFDUiwyR0FDRDs7O0NBS0UsUUFBUSxNQUF3QjtFQUNyQyxPQUFPLEtBQUs7OztDQUlQLFNBQVMsTUFBd0I7RUFDdEMsT0FBTyxLQUFLOzs7Q0FJUCxRQUFRLE1BQXdCO0VBQ3JDLE9BQU8sS0FBSzs7O0NBSVAsYUFBYSxNQUF3QjtFQUcxQyxPQUFPLEtBQUssWUFBWTs7O0NBSW5CLDJCQUEyQixNQUFpQztFQU1qRSxPQUFPLEtBQUssWUFBWSxLQUFNLENBQUMsZUFBZSxzQkFBc0IsU0FBUztHQUozRSxNQUFNO0dBQ04sT0FBTztHQUNQLEtBQUs7R0FFc0UsQ0FBUTs7Ozs7OztDQVFoRixjQUFjLE9BQWtDO0VBQ3JELE1BQU0sWUFBWSxJQUFJLEtBQUssZUFBZSxzQkFBc0IsU0FBUyxFQUFFLE9BQU8sT0FBTyxDQUFDO0VBQzFGLE9BQU8sS0FBSyxPQUFPLEtBQUssTUFDdEIsVUFBVSxPQUFPLFNBQVMsVUFBVSxLQUFLO0dBQUUsTUFBTTtHQUFNLE9BQU8sSUFBSTtHQUFHLEtBQUs7R0FBRyxDQUFDLENBQUMsQ0FDaEY7OztDQUlJLGVBQVk7RUFDakIsTUFBTSxZQUFZLElBQUksS0FBSyxlQUFlLHNCQUFzQixTQUFTLEVBQUUsS0FBSyxXQUFXLENBQUM7RUFDNUYsT0FBTyxLQUFLLE9BQU8sS0FBSyxNQUN0QixVQUFVLE9BQU8sU0FBUyxVQUFVLEtBQUs7R0FBRSxNQUFNO0dBQU0sT0FBTztHQUFHLEtBQUssSUFBSTtHQUFHLENBQUMsQ0FBQyxDQUNoRjs7Ozs7OztDQVFJLGtCQUFrQixPQUFrQztFQUN6RCxNQUFNLFlBQVksSUFBSSxLQUFLLGVBQWUsc0JBQXNCLFNBQVMsRUFBRSxTQUFTLE9BQU8sQ0FBQztFQUM1RixPQUFPLEtBQUssT0FBTyxJQUFJLE1BQ3JCLFVBQVUsT0FBTyxTQUFTLFVBQVUsS0FBSztHQUFFLE1BQU07R0FBTSxPQUFPO0dBQUcsS0FBSyxJQUFJO0dBQUcsQ0FBQyxDQUFDLENBQ2hGOzs7Q0FJSSxvQkFBaUI7RUFDdEIsT0FBTzs7O0NBSUYsa0JBQWtCLE1BQXdCO0VBQy9DLE9BQU8sS0FBSzs7O0NBSVAsUUFBSztFQUNWLE9BQU8sU0FBUyxJQUFJLGNBQWM7OztDQUk3QixXQUFXLE1BQWMsT0FBZSxLQUFXO0VBRXhELElBQUksUUFBUSxLQUFLLFFBQVEsSUFDdkIsTUFBTSxNQUFNLGtCQUFrQixNQUFLLHNDQUF1QztPQUNyRSxJQUFJLE1BQU0sR0FDZixNQUFNLE1BQU0sZ0JBQWdCLElBQUcsa0NBQW1DO0VBR3BFLElBQUk7R0FDRixPQUFPLFNBQVMsVUFBVSxLQUFLO0lBQUU7SUFBTTtJQUFZO0lBQUssRUFBRSxFQUFFLFVBQVUsVUFBVSxDQUFDO1VBQzNFO0dBQ04sTUFBTSxNQUFNLGlCQUFpQixJQUFHLDBCQUEyQixNQUFLLElBQUs7Ozs7Q0FLbEUsZUFBZSxLQUFRO0VBQzVCLE9BQU8sZUFBZSxTQUFTOzs7Q0FJMUIsUUFBUSxNQUEyQztFQUN4RCxPQUFPLEtBQUssZUFBZSxLQUFLOzs7Q0FJM0IsTUFBTSxNQUF3QjtFQUNuQyxPQUFPLFNBQVMsVUFBVSxLQUFLLEtBQUs7Ozs7Ozs7Q0FRL0IsaUJBQWlCLE1BQTBCLE9BQWE7RUFDN0QsT0FBTyxLQUFLLElBQUksRUFBRSxPQUFPLENBQUM7Ozs7Ozs7Q0FRckIsa0JBQWtCLE1BQTBCLFFBQWM7RUFDL0QsT0FBTyxLQUFLLElBQUksRUFBRSxRQUFRLENBQUM7OztDQUl0QixnQkFBZ0IsTUFBMEIsTUFBWTtFQUMzRCxPQUFPLEtBQUssSUFBSSxFQUFFLE1BQU0sQ0FBQzs7O0NBSVgsWUFDZCxNQUFvRDtFQUVwRCxJQUFJLE9BQU8sU0FBUztPQUNkLENBQUMsTUFDSCxPQUFPO1FBQ0YsSUFBSSxlQUFlLEtBQUssS0FBSyxFQUVsQyxPQUFPLEtBQUssbUJBQW1CLFNBQVMsVUFBVSxLQUFLLEtBQUssTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDOztFQUcvRSxPQUFPLE1BQU0sWUFBWSxLQUFLOztDQUdoQixVQUFPO0VBRXJCLE9BQU87O0NBR08sVUFBVSxNQUF3QjtFQUNoRCxPQUFPLEtBQUssUUFBUTs7Ozs7OztDQVFkLE9BQVUsUUFBZ0IsZUFBbUM7RUFDbkUsT0FBTyxNQUFNLEtBQUssRUFBRSxRQUFRLEdBQUcsR0FBRyxNQUFNLGNBQWMsRUFBRSxDQUFDIn0=
164
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG9yYWwtZGF0ZS1hZGFwdGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RhdGV0aW1lL3RlbXBvcmFsLWRhdGUtYWRhcHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSB0eXBlcz1cInRlbXBvcmFsLXBvbHlmaWxsL2dsb2JhbFwiIC8+XG5cbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uL2NvbnRyb2xsZXJzL2xhbmd1YWdlLWNvbnRyb2xsZXIudHMnO1xuXG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJy4vZGF0ZS1hZGFwdGVyLnRzJztcblxuLyoqXG4gKiBNYXRjaGVzIHN0cmluZ3MgdGhhdCBoYXZlIHRoZSBmb3JtIG9mIGEgdmFsaWQgUkZDIDMzMzkgc3RyaW5nXG4gKiAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkpLiBOb3RlIHRoYXQgdGhlIHN0cmluZyBtYXkgbm90IGFjdHVhbGx5IGJlIGEgdmFsaWQgZGF0ZVxuICogYmVjYXVzZSB0aGUgcmVnZXggd2lsbCBtYXRjaCBzdHJpbmdzIGFuZCB3aXRob3V0IG9mIGJvdW5kcyBtb250aCwgZGF0ZSwgZXRjLlxuICovXG5jb25zdCBJU09fODYwMV9SRUdFWCA9XG4gIC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0oPzpUXFxkezJ9OlxcZHsyfTpcXGR7Mn0oPzpcXC5cXGQrKT8oPzpafCg/Oig/OlxcK3wtKVxcZHsyfTpcXGR7Mn0pKT8pPyQvO1xuXG5leHBvcnQgY2xhc3MgVGVtcG9yYWxEYXRlQWRhcHRlciBleHRlbmRzIERhdGVBZGFwdGVyPFRlbXBvcmFsLlBsYWluRGF0ZT4ge1xuICAvKipcbiAgICogQHBhcmFtIGN1dG9mZlllYXJPZmZzZXQgVGhlIHRocmVzaG9sZCBvbiB3aGV0aGVyIGEgdHdvLWRpZ2l0IHllYXJcbiAgICogc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYmVsb25naW5nIHRvIDIwMDAgb3IgMTkwMC4gZS5nLiB3aXRoIDE1IChkZWZhdWx0KVxuICAgKiB0aGUgY3VycmVudCB5ZWFyIHBsdXMgMTUgd2lsbCBiZSB0cmVhdGVkIGFzIGJlbG9uZ2luZyB0byAyMDAwLCBhbmQgdGhlIHJlc3QgdG8gMTkwMC5cbiAgICogU28gZS5nLiB3aXRoIHRoZSBjdXJyZW50IHllYXIgMjAyNSwgNDAgd2lsbCBiZSB0cmVhdGVkIGFzIDIwNDAsIHdoaWxlIDQxIHdpbGwgYmUgdHJlYXRlZCBhcyAxOTQxLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGN1dG9mZlllYXJPZmZzZXQ/OiBudW1iZXIpIHtcbiAgICBzdXBlcihjdXRvZmZZZWFyT2Zmc2V0KTtcbiAgICBpZiAodHlwZW9mIFRlbXBvcmFsICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVGVtcG9yYWwgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBlbnZpcm9ubWVudC4gUGxlYXNlIG1ha2Ugc3VyZSB0byBpbmNsdWRlIHRoZSB0ZW1wb3JhbCBwb2x5ZmlsbC4nLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKiogR2V0cyB0aGUgeWVhciBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldFllYXIoZGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS55ZWFyO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIG1vbnRoIG9mIHRoZSBpbnB1dCBkYXRlLiAqL1xuICBwdWJsaWMgZ2V0TW9udGgoZGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5tb250aDtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBkYXkgb2YgdGhlIGlucHV0IGRhdGUuICovXG4gIHB1YmxpYyBnZXREYXRlKGRhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZGF5O1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldERheU9mV2VlayhkYXRlOiBUZW1wb3JhbC5QbGFpbkRhdGUpOiBudW1iZXIge1xuICAgIC8vIE91ciBleHBlY3RhdGlvbiBpcyAwID0gU3VuZGF5IGJ1dCBUZW1wb3JhbC5QbGFpbkRhdGUuZGF5T2ZXZWVrIHJldHVybnMgNyA9IFN1bmRheVxuICAgIC8vIFRPRE86IFJlbW92ZSB0aGlzIHdpdGggYSBmdXR1cmUgcmVsZWFzZS5cbiAgICByZXR1cm4gZGF0ZS5kYXlPZldlZWsgJSA3O1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRhdGUgaW4gdGhlIGxvY2FsIGZvcm1hdC4gKi9cbiAgcHVibGljIGdldEFjY2Vzc2liaWxpdHlGb3JtYXREYXRlKGRhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSB8IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3B0aW9uczogSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMgPSB7XG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICBtb250aDogJ2xvbmcnLFxuICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5kZXNlcmlhbGl6ZShkYXRlKSEudG9Mb2NhbGVTdHJpbmcoU2JiTGFuZ3VhZ2VDb250cm9sbGVyLmN1cnJlbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygc3RyaW5ncyB3aXRoIGxlbmd0aCA9IDEyLCBmaWxsZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbW9udGhzIHN0YXJ0aW5nIGZyb20gSmFudWFyeSwgaW4gdGhlIGRvY3VtZW50IGxhbmd1YWdlLlxuICAgKiBAcGFyYW0gc3R5bGUgU2VlIGBtb250aGAgaW4gYERhdGVUaW1lRm9ybWF0T3B0aW9uc2A6IGBsb25nYCBmb3IgZnVsbCBuYW1lLCBgc2hvcnRgIGZvciBzaG9ydCBuYW1lLCBgbmFycm93YCBmb3Igc2luZ2xlIGxldHRlcixcbiAgICogRS5nLiwgd2l0aCBKYW51YXJ5IGluIGVuLWdiOiBgbG9uZ2AgcmV0dXJucyBcIkphbnVhcnlcIiwgYHNob3J0YCByZXR1cm5zIFwiSmFuXCIsIGBuYXJyb3dgIHJldHVybnMgXCJKXCIuXG4gICAqL1xuICBwdWJsaWMgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFNiYkxhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50LCB7IG1vbnRoOiBzdHlsZSB9KTtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2UoMTIsIChpKSA9PlxuICAgICAgZm9ybWF0dGVyLmZvcm1hdChUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSh7IHllYXI6IDIwMTcsIG1vbnRoOiBpICsgMSwgZGF5OiAxIH0pKSxcbiAgICApO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBzdHJpbmcgYXJyYXkgd2l0aCBsZW5ndGggPSAzMSwgZmlsbGVkIHdpdGggdGhlIGRheXMgaW4gYSBtb250aCwgc3RhcnRpbmcgZnJvbSAxLiAqL1xuICBwdWJsaWMgZ2V0RGF0ZU5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgeyBkYXk6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2UoMzEsIChpKSA9PlxuICAgICAgZm9ybWF0dGVyLmZvcm1hdChUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSh7IHllYXI6IDIwMTcsIG1vbnRoOiAxLCBkYXk6IGkgKyAxIH0pKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdHJpbmcgYXJyYXkgd2l0aCBsZW5ndGggPSA3LCBmaWxsZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZGF5cyBpbiBhIHdlZWsgc3RhcnRpbmcgZnJvbSBTdW5kYXksIGluIHRoZSBkb2N1bWVudCBsYW5ndWFnZS5cbiAgICogQHBhcmFtIHN0eWxlIFNlZSBgd2Vla2RheWAgaW4gYERhdGVUaW1lRm9ybWF0T3B0aW9uc2AgLSAnbG9uZycgZm9yIGZ1bGwgbmFtZSwgJ3Nob3J0JyBmb3Igc2hvcnQgbmFtZSwgJ25hcnJvdycgZm9yIHNpbmdsZSBsZXR0ZXI7XG4gICAqIEUuZy4sIHdpdGggTW9uZGF5IGluIGVuLWdiOiBgbG9uZ2AgcmV0dXJucyBcIk1vbmRheVwiLCBgc2hvcnRgIHJldHVybnMgXCJNb25cIiwgYG5hcnJvd2AgcmV0dXJucyBcIk1cIi5cbiAgICovXG4gIHB1YmxpYyBnZXREYXlPZldlZWtOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFNiYkxhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50LCB7IHdlZWtkYXk6IHN0eWxlIH0pO1xuICAgIHJldHVybiB0aGlzLl9yYW5nZSg3LCAoaSkgPT5cbiAgICAgIGZvcm1hdHRlci5mb3JtYXQoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oeyB5ZWFyOiAyMDE3LCBtb250aDogMSwgZGF5OiBpICsgMSB9KSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBEZWZpbmVzIHdoaWNoIGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDA6IHN1bmRheTsgMTogbW9uZGF5OyBldGMuKS4gKi9cbiAgcHVibGljIGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvKiogQ2FsY3VsYXRlcyB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBtb250aCBnaXZlbiB0aGUgeWVhciBhbmQgdGhlIG1vbnRoLiAqL1xuICBwdWJsaWMgZ2V0TnVtRGF5c0luTW9udGgoZGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5kYXlzSW5Nb250aDtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIHRvZGF5J3MgZGF0ZS4gKi9cbiAgcHVibGljIHRvZGF5KCk6IFRlbXBvcmFsLlBsYWluRGF0ZSB7XG4gICAgcmV0dXJuIFRlbXBvcmFsLk5vdy5wbGFpbkRhdGVJU08oKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgbmV3IGRhdGUsIGdpdmVuIGRheSwgbW9udGggYW5kIHllYXI7IHRoZSBtZXRob2QgZG9lc24ndCBhbGxvdyBkYXRlJ3Mgb3ZlcmZsb3cuICovXG4gIHB1YmxpYyBjcmVhdGVEYXRlKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5OiBudW1iZXIpOiBUZW1wb3JhbC5QbGFpbkRhdGUge1xuICAgIC8vIENoZWNrIGZvciBpbnZhbGlkIG1vbnRoIGFuZCBkYXRlIChleGNlcHQgdXBwZXIgYm91bmQgb24gZGF0ZSB3aGljaCB3ZSBoYXZlIHRvIGNoZWNrIGFmdGVyIGNyZWF0aW5nIHRoZSBUZW1wb3JhbC5QbGFpbkRhdGUpLlxuICAgIGlmIChtb250aCA8IDEgfHwgbW9udGggPiAxMikge1xuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgbW9udGggXCIke21vbnRofVwiLiBNb250aCBoYXMgdG8gYmUgYmV0d2VlbiAxIGFuZCAxMi5gKTtcbiAgICB9IGVsc2UgaWYgKGRheSA8IDEpIHtcbiAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIGRheSBcIiR7ZGF5fVwiLiBEYXkgaGFzIHRvIGJlIGdyZWF0ZXIgdGhhbiAwLmApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oeyB5ZWFyLCBtb250aCwgZGF5OiBkYXkgfSwgeyBvdmVyZmxvdzogJ3JlamVjdCcgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlIFwiJHtkYXl9XCIgZm9yIG1vbnRoIHdpdGggaW5kZXggXCIke21vbnRofVwiLmApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gYG9iamAgaXMgYSBUZW1wb3JhbC5QbGFpbkRhdGUuICovXG4gIHB1YmxpYyBpc0RhdGVJbnN0YW5jZShvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBUZW1wb3JhbC5QbGFpbkRhdGU7XG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBkYXRlYCBpcyBhIHZhbGlkIFRlbXBvcmFsLlBsYWluRGF0ZS4gKi9cbiAgcHVibGljIGlzVmFsaWQoZGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGRhdGUgaXMgVGVtcG9yYWwuUGxhaW5EYXRlIHtcbiAgICByZXR1cm4gdGhpcy5pc0RhdGVJbnN0YW5jZShkYXRlKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgbmV3IGRhdGUgYnkgY2xvbmluZyB0aGUgZ2l2ZW4gb25lLiAqL1xuICBwdWJsaWMgY2xvbmUoZGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlKTogVGVtcG9yYWwuUGxhaW5EYXRlIHtcbiAgICByZXR1cm4gVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oZGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBkYXRlIGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGB5ZWFyc2AgdG8gdGhlIHByb3ZpZGVkIGBkYXRlYC5cbiAgICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUuXG4gICAqIEBwYXJhbSB5ZWFycyBUaGUgbnVtYmVyIG9mIHllYXJzIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGRDYWxlbmRhclllYXJzKGRhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSwgeWVhcnM6IG51bWJlcik6IFRlbXBvcmFsLlBsYWluRGF0ZSB7XG4gICAgcmV0dXJuIGRhdGUuYWRkKHsgeWVhcnMgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBkYXRlIGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGBtb250aHNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIElmIHRoZSBjYWxjdWxhdGVkIG1vbnRoIGhhcyBmZXdlciBkYXlzIHRoYW4gdGhlIG9yaWdpbmFsIG9uZSwgdGhlIGRhdGUgaXMgc2V0IHRvIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG4gICAqIEUuZy4sIHdpdGggYGRhdGVgID0gbmV3IFRlbXBvcmFsLlBsYWluRGF0ZSgyMDIyLCAwLCAzMSkgYW5kIGBtb250aHNgID0gMSwgaXQgcmV0dXJucyBuZXcgVGVtcG9yYWwuUGxhaW5EYXRlKDIwMjIsIDEsIDI4KS5cbiAgICovXG4gIHB1YmxpYyBhZGRDYWxlbmRhck1vbnRocyhkYXRlOiBUZW1wb3JhbC5QbGFpbkRhdGUsIG1vbnRoczogbnVtYmVyKTogVGVtcG9yYWwuUGxhaW5EYXRlIHtcbiAgICByZXR1cm4gZGF0ZS5hZGQoeyBtb250aHMgfSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkYXRlIGJ5IGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGBkYXlzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLiAqL1xuICBwdWJsaWMgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSwgZGF5czogbnVtYmVyKTogVGVtcG9yYWwuUGxhaW5EYXRlIHtcbiAgICByZXR1cm4gZGF0ZS5hZGQoeyBkYXlzIH0pO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBUZW1wb3JhbC5QbGFpbkRhdGUgZnJvbSBhIHZhbGlkIGlucHV0IChUZW1wb3JhbC5QbGFpbkRhdGUgb3IgSVNPIHN0cmluZykuICovXG4gIHB1YmxpYyBvdmVycmlkZSBkZXNlcmlhbGl6ZShcbiAgICBkYXRlOiBUZW1wb3JhbC5QbGFpbkRhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICApOiBUZW1wb3JhbC5QbGFpbkRhdGUgfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGVsc2UgaWYgKElTT184NjAxX1JFR0VYLnRlc3QoZGF0ZSkpIHtcbiAgICAgICAgLy8gYFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tYCBvbmx5IGFjY2VwdHMgSVNPIDg2MDEgZGF0ZSBzdHJpbmdzIHdpdGhvdXQgdGltZSBjb21wb25lbnRzLlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWxpZERhdGVPck51bGwoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oZGF0ZS5zcGxpdCgnVCcpWzBdKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5kZXNlcmlhbGl6ZShkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBpbnZhbGlkKCk6IFRlbXBvcmFsLlBsYWluRGF0ZSB7XG4gICAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSBhbiBpbnZhbGlkIFRlbXBvcmFsLlBsYWluRGF0ZSwgc28gd2UgcmV0dXJuIG51bGwuXG4gICAgcmV0dXJuIG51bGwhO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHRvSXNvODYwMShkYXRlOiBUZW1wb3JhbC5QbGFpbkRhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlLnRvSlNPTigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gYXJyYXkgd2l0aCB0aGUgZ2l2ZW4gbGVuZ3RoIGFuZCBmaWxscyBpdCBieSBtYXBwaW5nIHdpdGggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIGFycmF5IHRvIGJlIGNyZWF0ZWQuXG4gICAqIEBwYXJhbSB2YWx1ZUZ1bmN0aW9uIFRoZSBmdW5jdGlvbiBvZiBhcnJheSdzIGluZGV4IHVzZWQgdG8gZmlsbCB0aGUgYXJyYXkuXG4gICAqL1xuICBwcml2YXRlIF9yYW5nZTxUPihsZW5ndGg6IG51bWJlciwgdmFsdWVGdW5jdGlvbjogKGluZGV4OiBudW1iZXIpID0+IFQpOiBUW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoIH0sIChfLCBpKSA9PiB2YWx1ZUZ1bmN0aW9uKGkpKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVdBLElBQU0saUJBQ0o7QUFFRixJQUFhLHNCQUFiLGNBQXlDLFlBQStCOzs7Ozs7O0NBT3RFLFlBQW1CLGtCQUF5QjtFQUMxQyxNQUFNLGdCQUFnQjtFQUN0QixJQUFJLE9BQU8sYUFBYSxVQUN0QixNQUFNLElBQUksTUFDUiwwR0FBMEc7Q0FHaEg7O0NBR08sUUFBUSxNQUF3QjtFQUNyQyxPQUFPLEtBQUs7Q0FDZDs7Q0FHTyxTQUFTLE1BQXdCO0VBQ3RDLE9BQU8sS0FBSztDQUNkOztDQUdPLFFBQVEsTUFBd0I7RUFDckMsT0FBTyxLQUFLO0NBQ2Q7O0NBR08sYUFBYSxNQUF3QjtFQUcxQyxPQUFPLEtBQUssWUFBWTtDQUMxQjs7Q0FHTywyQkFBMkIsTUFBaUM7RUFNakUsT0FBTyxLQUFLLFlBQVksSUFBSSxFQUFHLGVBQWUsc0JBQXNCLFNBQVM7R0FKM0UsTUFBTTtHQUNOLE9BQU87R0FDUCxLQUFLO0VBRXNFLENBQU87Q0FDdEY7Ozs7OztDQU9PLGNBQWMsT0FBa0M7RUFDckQsTUFBTSxZQUFZLElBQUksS0FBSyxlQUFlLHNCQUFzQixTQUFTLEVBQUUsT0FBTyxNQUFLLENBQUU7RUFDekYsT0FBTyxLQUFLLE9BQU8sS0FBSyxNQUN0QixVQUFVLE9BQU8sU0FBUyxVQUFVLEtBQUs7R0FBRSxNQUFNO0dBQU0sT0FBTyxJQUFJO0dBQUcsS0FBSztFQUFDLENBQUUsQ0FBQyxDQUFDO0NBRW5GOztDQUdPLGVBQVk7RUFDakIsTUFBTSxZQUFZLElBQUksS0FBSyxlQUFlLHNCQUFzQixTQUFTLEVBQUUsS0FBSyxVQUFTLENBQUU7RUFDM0YsT0FBTyxLQUFLLE9BQU8sS0FBSyxNQUN0QixVQUFVLE9BQU8sU0FBUyxVQUFVLEtBQUs7R0FBRSxNQUFNO0dBQU0sT0FBTztHQUFHLEtBQUssSUFBSTtFQUFDLENBQUUsQ0FBQyxDQUFDO0NBRW5GOzs7Ozs7Q0FPTyxrQkFBa0IsT0FBa0M7RUFDekQsTUFBTSxZQUFZLElBQUksS0FBSyxlQUFlLHNCQUFzQixTQUFTLEVBQUUsU0FBUyxNQUFLLENBQUU7RUFDM0YsT0FBTyxLQUFLLE9BQU8sSUFBSSxNQUNyQixVQUFVLE9BQU8sU0FBUyxVQUFVLEtBQUs7R0FBRSxNQUFNO0dBQU0sT0FBTztHQUFHLEtBQUssSUFBSTtFQUFDLENBQUUsQ0FBQyxDQUFDO0NBRW5GOztDQUdPLG9CQUFpQjtFQUN0QixPQUFPO0NBQ1Q7O0NBR08sa0JBQWtCLE1BQXdCO0VBQy9DLE9BQU8sS0FBSztDQUNkOztDQUdPLFFBQUs7RUFDVixPQUFPLFNBQVMsSUFBSSxhQUFZO0NBQ2xDOztDQUdPLFdBQVcsTUFBYyxPQUFlLEtBQVc7RUFFeEQsSUFBSSxRQUFRLEtBQUssUUFBUSxJQUN2QixNQUFNLE1BQU0sa0JBQWtCLE1BQUsscUNBQXNDO09BQ3BFLElBQUksTUFBTSxHQUNmLE1BQU0sTUFBTSxnQkFBZ0IsSUFBRyxpQ0FBa0M7RUFHbkUsSUFBSTtHQUNGLE9BQU8sU0FBUyxVQUFVLEtBQUs7SUFBRTtJQUFNO0lBQVk7R0FBRyxHQUFJLEVBQUUsVUFBVSxTQUFRLENBQUU7RUFDbEYsUUFBUTtHQUNOLE1BQU0sTUFBTSxpQkFBaUIsSUFBRywwQkFBMkIsTUFBSyxHQUFJO0VBQ3RFO0NBQ0Y7O0NBR08sZUFBZSxLQUFRO0VBQzVCLE9BQU8sZUFBZSxTQUFTO0NBQ2pDOztDQUdPLFFBQVEsTUFBMkM7RUFDeEQsT0FBTyxLQUFLLGVBQWUsSUFBSTtDQUNqQzs7Q0FHTyxNQUFNLE1BQXdCO0VBQ25DLE9BQU8sU0FBUyxVQUFVLEtBQUssSUFBSTtDQUNyQzs7Ozs7O0NBT08saUJBQWlCLE1BQTBCLE9BQWE7RUFDN0QsT0FBTyxLQUFLLElBQUksRUFBRSxNQUFLLENBQUU7Q0FDM0I7Ozs7OztDQU9PLGtCQUFrQixNQUEwQixRQUFjO0VBQy9ELE9BQU8sS0FBSyxJQUFJLEVBQUUsT0FBTSxDQUFFO0NBQzVCOztDQUdPLGdCQUFnQixNQUEwQixNQUFZO0VBQzNELE9BQU8sS0FBSyxJQUFJLEVBQUUsS0FBSSxDQUFFO0NBQzFCOztDQUdnQixZQUNkLE1BQW9EO0VBRXBELElBQUksT0FBTyxTQUFTO09BQ2QsQ0FBQyxNQUNILE9BQU87UUFDRixJQUFJLGVBQWUsS0FBSyxJQUFJLEdBRWpDLE9BQU8sS0FBSyxtQkFBbUIsU0FBUyxVQUFVLEtBQUssS0FBSyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7RUFBQTtFQUc5RSxPQUFPLE1BQU0sWUFBWSxJQUFJO0NBQy9CO0NBRWdCLFVBQU87RUFFckIsT0FBTztDQUNUO0NBRWdCLFVBQVUsTUFBd0I7RUFDaEQsT0FBTyxLQUFLLE9BQU07Q0FDcEI7Ozs7OztDQU9RLE9BQVUsUUFBZ0IsZUFBbUM7RUFDbkUsT0FBTyxNQUFNLEtBQUssRUFBRSxPQUFNLElBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQyxDQUFDO0NBQzFEIn0=
@@ -22,4 +22,4 @@ var forceType = (convert) => {
22
22
  //#endregion
23
23
  export { forceType };
24
24
 
25
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yY2UtdHlwZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzL2ZvcmNlLXR5cGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUVsZW1lbnQgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IEludGVyZmFjZSwgUHJvcGVydHlEZWNvcmF0b3IgfSBmcm9tICcuL2Jhc2UudHMnO1xuXG4vKipcbiAqIERlY29yYXRvciB0aGF0IGZvcmNlcyB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eSBvciBnZXR0ZXIvc2V0dGVyXG4gKiB0byB0aGUgZGVmaW5lZCB0eXBlLlxuICovXG5leHBvcnQgY29uc3QgZm9yY2VUeXBlID0gPEMgZXh0ZW5kcyBJbnRlcmZhY2U8UmVhY3RpdmVFbGVtZW50PiwgVj4oXG4gIGNvbnZlcnQ/OiAodjogdW5rbm93bikgPT4gVixcbik6IFByb3BlcnR5RGVjb3JhdG9yID0+IHtcbiAgcmV0dXJuIChcbiAgICB0YXJnZXQ6IENsYXNzQWNjZXNzb3JEZWNvcmF0b3JUYXJnZXQ8QywgVj4gfCAoKHZhbHVlOiBWKSA9PiB2b2lkKSxcbiAgICBjb250ZXh0OiBDbGFzc0FjY2Vzc29yRGVjb3JhdG9yQ29udGV4dDxDLCBWPiB8IENsYXNzU2V0dGVyRGVjb3JhdG9yQ29udGV4dDxDLCBWPixcbiAgKTogYW55ID0+IHtcbiAgICBjb25zdCB7IGtpbmQsIG1ldGFkYXRhLCBuYW1lIH0gPSBjb250ZXh0O1xuXG4gICAgY29uc3QgdHlwZSA9IChnbG9iYWxUaGlzLmxpdFByb3BlcnR5TWV0YWRhdGEuZ2V0KG1ldGFkYXRhKT8uZ2V0KG5hbWUpPy50eXBlID8/IFN0cmluZykgYXMgKFxuICAgICAgdjogdW5rbm93bixcbiAgICApID0+IFY7XG5cbiAgICBjb252ZXJ0ID8/PSB0eXBlO1xuXG4gICAgaWYgKChjb252ZXJ0IGFzIHVua25vd24pID09PSBTdHJpbmcpIHtcbiAgICAgIC8vIEluIGNhc2Ugb2YgU3RyaW5nLCB3ZSB3YW50IHRvIGhhbmRsZSBudWxsL3VuZGVmaW5lZCBkaWZmZXJlbnRseVxuICAgICAgLy8gZnJvbSB0aGUgbmF0aXZlIGJlaGF2aW9yIGluIHRoYXQgd2Ugd2FudCB0byB0cmVhdCB0aGVzZSB2YWx1ZXNcbiAgICAgIC8vIGFzIGVtcHR5IHN0cmluZ3MuXG4gICAgICBjb252ZXJ0ID0gKHYpID0+ICh2ID09IG51bGwgPyAnJyA6IFN0cmluZyh2KSkgYXMgVjtcbiAgICB9IGVsc2UgaWYgKChjb252ZXJ0IGFzIHVua25vd24pID09PSBOdW1iZXIpIHtcbiAgICAgIC8vIEluIGNhc2Ugb2YgTnVtYmVyLCB3ZSB3YW50IHRvIGhhbmRsZSBudWxsIGRpZmZlcmVudGx5XG4gICAgICAvLyBmcm9tIHRoZSBuYXRpdmUgYmVoYXZpb3IgaW4gdGhhdCB3ZSB3YW50IHRvIHRyZWF0IG51bGwgYXMgTmFOLlxuICAgICAgY29udmVydCA9ICh2KSA9PiAodiA9PSBudWxsID8gTmFOIDogTnVtYmVyKHYpKSBhcyBWO1xuICAgIH1cbiAgICBpZiAoa2luZCA9PT0gJ2FjY2Vzc29yJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2V0KHRoaXM6IEMsIHZhbHVlKSB7XG4gICAgICAgICAgKHRhcmdldCBhcyBDbGFzc0FjY2Vzc29yRGVjb3JhdG9yVGFyZ2V0PEMsIFY+KS5zZXQuY2FsbChcbiAgICAgICAgICAgIHRoaXMgYXMgdW5rbm93biBhcyBDLFxuICAgICAgICAgICAgY29udmVydCEodmFsdWUpIGFzIFYsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIH0gc2F0aXNmaWVzIENsYXNzQWNjZXNzb3JEZWNvcmF0b3JSZXN1bHQ8QywgVj47XG4gICAgfSBlbHNlIGlmIChraW5kID09PSAnc2V0dGVyJykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZTogdW5rbm93bikge1xuICAgICAgICAodGFyZ2V0IGFzICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCkuY2FsbCh0aGlzLCBjb252ZXJ0ISh2YWx1ZSkpO1xuICAgICAgfSBzYXRpc2ZpZXMgKHRoaXM6IEMsIHZhbHVlOiBWKSA9PiB2b2lkO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZGVjb3JhdG9yIGxvY2F0aW9uOiAke2tpbmR9YCk7XG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQVFBLElBQWEsYUFDWCxZQUNxQjtDQUNyQixRQUNFLFFBQ0EsWUFDTztFQUNQLE1BQU0sRUFBRSxNQUFNLFVBQVUsU0FBUztFQUVqQyxNQUFNLE9BQVEsV0FBVyxvQkFBb0IsSUFBSSxTQUFTLEVBQUUsSUFBSSxLQUFLLEVBQUUsUUFBUTtFQUkvRSxZQUFZO0VBRVosSUFBSyxZQUF3QixRQUkzQixXQUFXLE1BQU8sS0FBSyxPQUFPLEtBQUssT0FBTyxFQUFFO09BQ3ZDLElBQUssWUFBd0IsUUFHbEMsV0FBVyxNQUFPLEtBQUssT0FBTyxNQUFNLE9BQU8sRUFBRTtFQUUvQyxJQUFJLFNBQVMsWUFDWCxPQUFPLEVBQ0wsSUFBYSxPQUFLO0dBQ2YsT0FBOEMsSUFBSSxLQUNqRCxNQUNBLFFBQVMsTUFBVyxDQUNyQjtLQUV5QztPQUN6QyxJQUFJLFNBQVMsVUFDbEIsT0FBTyxTQUFVLE9BQWM7R0FDNUIsT0FBb0MsS0FBSyxNQUFNLFFBQVMsTUFBTSxDQUFDOztFQUlwRSxNQUFNLElBQUksTUFBTSxtQ0FBbUMsT0FBTyJ9
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yY2UtdHlwZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzL2ZvcmNlLXR5cGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUVsZW1lbnQgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IEludGVyZmFjZSwgUHJvcGVydHlEZWNvcmF0b3IgfSBmcm9tICcuL2Jhc2UudHMnO1xuXG4vKipcbiAqIERlY29yYXRvciB0aGF0IGZvcmNlcyB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eSBvciBnZXR0ZXIvc2V0dGVyXG4gKiB0byB0aGUgZGVmaW5lZCB0eXBlLlxuICovXG5leHBvcnQgY29uc3QgZm9yY2VUeXBlID0gPEMgZXh0ZW5kcyBJbnRlcmZhY2U8UmVhY3RpdmVFbGVtZW50PiwgVj4oXG4gIGNvbnZlcnQ/OiAodjogdW5rbm93bikgPT4gVixcbik6IFByb3BlcnR5RGVjb3JhdG9yID0+IHtcbiAgcmV0dXJuIChcbiAgICB0YXJnZXQ6IENsYXNzQWNjZXNzb3JEZWNvcmF0b3JUYXJnZXQ8QywgVj4gfCAoKHZhbHVlOiBWKSA9PiB2b2lkKSxcbiAgICBjb250ZXh0OiBDbGFzc0FjY2Vzc29yRGVjb3JhdG9yQ29udGV4dDxDLCBWPiB8IENsYXNzU2V0dGVyRGVjb3JhdG9yQ29udGV4dDxDLCBWPixcbiAgKTogYW55ID0+IHtcbiAgICBjb25zdCB7IGtpbmQsIG1ldGFkYXRhLCBuYW1lIH0gPSBjb250ZXh0O1xuXG4gICAgY29uc3QgdHlwZSA9IChnbG9iYWxUaGlzLmxpdFByb3BlcnR5TWV0YWRhdGEuZ2V0KG1ldGFkYXRhKT8uZ2V0KG5hbWUpPy50eXBlID8/IFN0cmluZykgYXMgKFxuICAgICAgdjogdW5rbm93bixcbiAgICApID0+IFY7XG5cbiAgICBjb252ZXJ0ID8/PSB0eXBlO1xuXG4gICAgaWYgKChjb252ZXJ0IGFzIHVua25vd24pID09PSBTdHJpbmcpIHtcbiAgICAgIC8vIEluIGNhc2Ugb2YgU3RyaW5nLCB3ZSB3YW50IHRvIGhhbmRsZSBudWxsL3VuZGVmaW5lZCBkaWZmZXJlbnRseVxuICAgICAgLy8gZnJvbSB0aGUgbmF0aXZlIGJlaGF2aW9yIGluIHRoYXQgd2Ugd2FudCB0byB0cmVhdCB0aGVzZSB2YWx1ZXNcbiAgICAgIC8vIGFzIGVtcHR5IHN0cmluZ3MuXG4gICAgICBjb252ZXJ0ID0gKHYpID0+ICh2ID09IG51bGwgPyAnJyA6IFN0cmluZyh2KSkgYXMgVjtcbiAgICB9IGVsc2UgaWYgKChjb252ZXJ0IGFzIHVua25vd24pID09PSBOdW1iZXIpIHtcbiAgICAgIC8vIEluIGNhc2Ugb2YgTnVtYmVyLCB3ZSB3YW50IHRvIGhhbmRsZSBudWxsIGRpZmZlcmVudGx5XG4gICAgICAvLyBmcm9tIHRoZSBuYXRpdmUgYmVoYXZpb3IgaW4gdGhhdCB3ZSB3YW50IHRvIHRyZWF0IG51bGwgYXMgTmFOLlxuICAgICAgY29udmVydCA9ICh2KSA9PiAodiA9PSBudWxsID8gTmFOIDogTnVtYmVyKHYpKSBhcyBWO1xuICAgIH1cbiAgICBpZiAoa2luZCA9PT0gJ2FjY2Vzc29yJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2V0KHRoaXM6IEMsIHZhbHVlKSB7XG4gICAgICAgICAgKHRhcmdldCBhcyBDbGFzc0FjY2Vzc29yRGVjb3JhdG9yVGFyZ2V0PEMsIFY+KS5zZXQuY2FsbChcbiAgICAgICAgICAgIHRoaXMgYXMgdW5rbm93biBhcyBDLFxuICAgICAgICAgICAgY29udmVydCEodmFsdWUpIGFzIFYsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIH0gc2F0aXNmaWVzIENsYXNzQWNjZXNzb3JEZWNvcmF0b3JSZXN1bHQ8QywgVj47XG4gICAgfSBlbHNlIGlmIChraW5kID09PSAnc2V0dGVyJykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZTogdW5rbm93bikge1xuICAgICAgICAodGFyZ2V0IGFzICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCkuY2FsbCh0aGlzLCBjb252ZXJ0ISh2YWx1ZSkpO1xuICAgICAgfSBzYXRpc2ZpZXMgKHRoaXM6IEMsIHZhbHVlOiBWKSA9PiB2b2lkO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZGVjb3JhdG9yIGxvY2F0aW9uOiAke2tpbmR9YCk7XG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQVFBLElBQWEsYUFDWCxZQUNxQjtDQUNyQixRQUNFLFFBQ0EsWUFDTztFQUNQLE1BQU0sRUFBRSxNQUFNLFVBQVUsU0FBUztFQUVqQyxNQUFNLE9BQVEsV0FBVyxvQkFBb0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxJQUFJLEdBQUcsUUFBUTtFQUkvRSxZQUFZO0VBRVosSUFBSyxZQUF3QixRQUkzQixXQUFXLE1BQU8sS0FBSyxPQUFPLEtBQUssT0FBTyxDQUFDO09BQ3RDLElBQUssWUFBd0IsUUFHbEMsV0FBVyxNQUFPLEtBQUssT0FBTyxNQUFNLE9BQU8sQ0FBQztFQUU5QyxJQUFJLFNBQVMsWUFDWCxPQUFPLEVBQ0wsSUFBYSxPQUFLO0dBQ2YsT0FBOEMsSUFBSSxLQUNqRCxNQUNBLFFBQVMsS0FBSyxDQUFNO0VBRXhCLEVBQUE7T0FFRyxJQUFJLFNBQVMsVUFDbEIsT0FBTyxTQUFVLE9BQWM7R0FDNUIsT0FBb0MsS0FBSyxNQUFNLFFBQVMsS0FBSyxDQUFDO0VBQ2pFO0VBR0YsTUFBTSxJQUFJLE1BQU0sbUNBQW1DLE1BQU07Q0FDM0Q7QUFDRiJ9
@@ -15,4 +15,4 @@ var getOverride = (callback) => {
15
15
  //#endregion
16
16
  export { getOverride };
17
17
 
18
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW92ZXJyaWRlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RlY29yYXRvcnMvZ2V0LW92ZXJyaWRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUmVhY3RpdmVFbGVtZW50IH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHR5cGUgeyBJbnRlcmZhY2UgfSBmcm9tICcuL2Jhc2UudHMnO1xuXG4vKipcbiAqIERlY29yYXRvciB0aGF0IG92ZXJyaWRlcyB0aGUgdW5kZXJseWluZyBnZXR0ZXIgb2YgdGhlIGFjY2Vzc29yLlxuICovXG5leHBvcnQgY29uc3QgZ2V0T3ZlcnJpZGUgPSA8QyBleHRlbmRzIEludGVyZmFjZTxSZWFjdGl2ZUVsZW1lbnQ+LCBWPihcbiAgY2FsbGJhY2s6IChpbnN0YW5jZTogQywgaW5uZXJWYWx1ZTogVikgPT4gVixcbikgPT4ge1xuICByZXR1cm4gKFxuICAgIHRhcmdldDogQ2xhc3NBY2Nlc3NvckRlY29yYXRvclRhcmdldDxDLCBWPixcbiAgICBjb250ZXh0OiBDbGFzc0FjY2Vzc29yRGVjb3JhdG9yQ29udGV4dDxDLCBWPixcbiAgKTogYW55ID0+IHtcbiAgICBjb25zdCB7IGtpbmQgfSA9IGNvbnRleHQ7XG4gICAgaWYgKGtpbmQgPT09ICdhY2Nlc3NvcicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGdldCh0aGlzOiBDKSB7XG4gICAgICAgICAgY29uc3QgaW5uZXJWYWx1ZSA9ICh0YXJnZXQgYXMgQ2xhc3NBY2Nlc3NvckRlY29yYXRvclRhcmdldDxDLCBWPikuZ2V0LmNhbGwoXG4gICAgICAgICAgICB0aGlzIGFzIHVua25vd24gYXMgQyxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayh0aGlzLCBpbm5lclZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgIH0gc2F0aXNmaWVzIENsYXNzQWNjZXNzb3JEZWNvcmF0b3JSZXN1bHQ8QywgVj47XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBkZWNvcmF0b3IgbG9jYXRpb246ICR7a2luZH1gKTtcbiAgfTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFPQSxJQUFhLGVBQ1gsYUFDRTtDQUNGLFFBQ0UsUUFDQSxZQUNPO0VBQ1AsTUFBTSxFQUFFLFNBQVM7RUFDakIsSUFBSSxTQUFTLFlBQ1gsT0FBTyxFQUNMLE1BQUc7R0FDRCxNQUFNLGFBQWMsT0FBOEMsSUFBSSxLQUNwRSxLQUNEO0dBQ0QsT0FBTyxTQUFTLE1BQU0sV0FBVztLQUVTO0VBR2hELE1BQU0sSUFBSSxNQUFNLG1DQUFtQyxPQUFPIn0=
18
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW92ZXJyaWRlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RlY29yYXRvcnMvZ2V0LW92ZXJyaWRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUmVhY3RpdmVFbGVtZW50IH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHR5cGUgeyBJbnRlcmZhY2UgfSBmcm9tICcuL2Jhc2UudHMnO1xuXG4vKipcbiAqIERlY29yYXRvciB0aGF0IG92ZXJyaWRlcyB0aGUgdW5kZXJseWluZyBnZXR0ZXIgb2YgdGhlIGFjY2Vzc29yLlxuICovXG5leHBvcnQgY29uc3QgZ2V0T3ZlcnJpZGUgPSA8QyBleHRlbmRzIEludGVyZmFjZTxSZWFjdGl2ZUVsZW1lbnQ+LCBWPihcbiAgY2FsbGJhY2s6IChpbnN0YW5jZTogQywgaW5uZXJWYWx1ZTogVikgPT4gVixcbikgPT4ge1xuICByZXR1cm4gKFxuICAgIHRhcmdldDogQ2xhc3NBY2Nlc3NvckRlY29yYXRvclRhcmdldDxDLCBWPixcbiAgICBjb250ZXh0OiBDbGFzc0FjY2Vzc29yRGVjb3JhdG9yQ29udGV4dDxDLCBWPixcbiAgKTogYW55ID0+IHtcbiAgICBjb25zdCB7IGtpbmQgfSA9IGNvbnRleHQ7XG4gICAgaWYgKGtpbmQgPT09ICdhY2Nlc3NvcicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGdldCh0aGlzOiBDKSB7XG4gICAgICAgICAgY29uc3QgaW5uZXJWYWx1ZSA9ICh0YXJnZXQgYXMgQ2xhc3NBY2Nlc3NvckRlY29yYXRvclRhcmdldDxDLCBWPikuZ2V0LmNhbGwoXG4gICAgICAgICAgICB0aGlzIGFzIHVua25vd24gYXMgQyxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayh0aGlzLCBpbm5lclZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgIH0gc2F0aXNmaWVzIENsYXNzQWNjZXNzb3JEZWNvcmF0b3JSZXN1bHQ8QywgVj47XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBkZWNvcmF0b3IgbG9jYXRpb246ICR7a2luZH1gKTtcbiAgfTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFPQSxJQUFhLGVBQ1gsYUFDRTtDQUNGLFFBQ0UsUUFDQSxZQUNPO0VBQ1AsTUFBTSxFQUFFLFNBQVM7RUFDakIsSUFBSSxTQUFTLFlBQ1gsT0FBTyxFQUNMLE1BQUc7R0FDRCxNQUFNLGFBQWMsT0FBOEMsSUFBSSxLQUNwRSxJQUFvQjtHQUV0QixPQUFPLFNBQVMsTUFBTSxVQUFVO0VBQ2xDLEVBQUE7RUFJSixNQUFNLElBQUksTUFBTSxtQ0FBbUMsTUFBTTtDQUMzRDtBQUNGIn0=
@@ -18,4 +18,4 @@ var handleDistinctChange = (callback) => {
18
18
  //#endregion
19
19
  export { handleDistinctChange };
20
20
 
21
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLWRpc3RpbmN0LWNoYW5nZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzL2hhbmRsZS1kaXN0aW5jdC1jaGFuZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUVsZW1lbnQgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IEludGVyZmFjZSB9IGZyb20gJy4vYmFzZS50cyc7XG5cbi8qKlxuICogRGVjb3JhdG9yIHRoYXQgY2FsbHMgdGhlIGdpdmVuIGNhbGxiYWNrIHdoZW4gdGhlIHZhbHVlXG4gKiBvZiB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSBpcyBjaGFuZ2VkLlxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlRGlzdGluY3RDaGFuZ2UgPSA8QyBleHRlbmRzIEludGVyZmFjZTxSZWFjdGl2ZUVsZW1lbnQ+LCBWPihcbiAgY2FsbGJhY2s6IChpbnN0YW5jZTogQywgbmV3VmFsdWU6IFYsIG9sZFZhbHVlOiBWIHwgdW5kZWZpbmVkKSA9PiB2b2lkLFxuKSA9PiB7XG4gIHJldHVybiAoXG4gICAgdGFyZ2V0OiBDbGFzc0FjY2Vzc29yRGVjb3JhdG9yVGFyZ2V0PEMsIFY+LFxuICAgIGNvbnRleHQ6IENsYXNzQWNjZXNzb3JEZWNvcmF0b3JDb250ZXh0PEMsIFY+LFxuICApOiBhbnkgPT4ge1xuICAgIGNvbnN0IHsga2luZCB9ID0gY29udGV4dDtcbiAgICBpZiAoa2luZCA9PT0gJ2FjY2Vzc29yJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2V0KHRoaXM6IEMsIHZhbHVlKSB7XG4gICAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSBjb250ZXh0LmFjY2Vzcy5nZXQodGhpcyk7XG4gICAgICAgICAgKHRhcmdldCBhcyBDbGFzc0FjY2Vzc29yRGVjb3JhdG9yVGFyZ2V0PEMsIFY+KS5zZXQuY2FsbCh0aGlzIGFzIHVua25vd24gYXMgQywgdmFsdWUpO1xuICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29udGV4dC5hY2Nlc3MuZ2V0KHRoaXMpO1xuICAgICAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMsIG5ld1ZhbHVlLCBvbGRWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSBzYXRpc2ZpZXMgQ2xhc3NBY2Nlc3NvckRlY29yYXRvclJlc3VsdDxDLCBWPjtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGRlY29yYXRvciBsb2NhdGlvbjogJHtraW5kfWApO1xuICB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFRQSxJQUFhLHdCQUNYLGFBQ0U7Q0FDRixRQUNFLFFBQ0EsWUFDTztFQUNQLE1BQU0sRUFBRSxTQUFTO0VBQ2pCLElBQUksU0FBUyxZQUNYLE9BQU8sRUFDTCxJQUFhLE9BQUs7R0FDaEIsTUFBTSxXQUFXLFFBQVEsT0FBTyxJQUFJLEtBQUs7R0FDeEMsT0FBOEMsSUFBSSxLQUFLLE1BQXNCLE1BQU07R0FDcEYsTUFBTSxXQUFXLFFBQVEsT0FBTyxJQUFJLEtBQUs7R0FDekMsSUFBSSxhQUFhLFVBQ2YsU0FBUyxNQUFNLFVBQVUsU0FBUztLQUdNO0VBR2hELE1BQU0sSUFBSSxNQUFNLG1DQUFtQyxPQUFPIn0=
21
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLWRpc3RpbmN0LWNoYW5nZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzL2hhbmRsZS1kaXN0aW5jdC1jaGFuZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUVsZW1lbnQgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IEludGVyZmFjZSB9IGZyb20gJy4vYmFzZS50cyc7XG5cbi8qKlxuICogRGVjb3JhdG9yIHRoYXQgY2FsbHMgdGhlIGdpdmVuIGNhbGxiYWNrIHdoZW4gdGhlIHZhbHVlXG4gKiBvZiB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSBpcyBjaGFuZ2VkLlxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlRGlzdGluY3RDaGFuZ2UgPSA8QyBleHRlbmRzIEludGVyZmFjZTxSZWFjdGl2ZUVsZW1lbnQ+LCBWPihcbiAgY2FsbGJhY2s6IChpbnN0YW5jZTogQywgbmV3VmFsdWU6IFYsIG9sZFZhbHVlOiBWIHwgdW5kZWZpbmVkKSA9PiB2b2lkLFxuKSA9PiB7XG4gIHJldHVybiAoXG4gICAgdGFyZ2V0OiBDbGFzc0FjY2Vzc29yRGVjb3JhdG9yVGFyZ2V0PEMsIFY+LFxuICAgIGNvbnRleHQ6IENsYXNzQWNjZXNzb3JEZWNvcmF0b3JDb250ZXh0PEMsIFY+LFxuICApOiBhbnkgPT4ge1xuICAgIGNvbnN0IHsga2luZCB9ID0gY29udGV4dDtcbiAgICBpZiAoa2luZCA9PT0gJ2FjY2Vzc29yJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2V0KHRoaXM6IEMsIHZhbHVlKSB7XG4gICAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSBjb250ZXh0LmFjY2Vzcy5nZXQodGhpcyk7XG4gICAgICAgICAgKHRhcmdldCBhcyBDbGFzc0FjY2Vzc29yRGVjb3JhdG9yVGFyZ2V0PEMsIFY+KS5zZXQuY2FsbCh0aGlzIGFzIHVua25vd24gYXMgQywgdmFsdWUpO1xuICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29udGV4dC5hY2Nlc3MuZ2V0KHRoaXMpO1xuICAgICAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMsIG5ld1ZhbHVlLCBvbGRWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSBzYXRpc2ZpZXMgQ2xhc3NBY2Nlc3NvckRlY29yYXRvclJlc3VsdDxDLCBWPjtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGRlY29yYXRvciBsb2NhdGlvbjogJHtraW5kfWApO1xuICB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFRQSxJQUFhLHdCQUNYLGFBQ0U7Q0FDRixRQUNFLFFBQ0EsWUFDTztFQUNQLE1BQU0sRUFBRSxTQUFTO0VBQ2pCLElBQUksU0FBUyxZQUNYLE9BQU8sRUFDTCxJQUFhLE9BQUs7R0FDaEIsTUFBTSxXQUFXLFFBQVEsT0FBTyxJQUFJLElBQUk7R0FDdkMsT0FBOEMsSUFBSSxLQUFLLE1BQXNCLEtBQUs7R0FDbkYsTUFBTSxXQUFXLFFBQVEsT0FBTyxJQUFJLElBQUk7R0FDeEMsSUFBSSxhQUFhLFVBQ2YsU0FBUyxNQUFNLFVBQVUsUUFBUTtFQUVyQyxFQUFBO0VBSUosTUFBTSxJQUFJLE1BQU0sbUNBQW1DLE1BQU07Q0FDM0Q7QUFDRiJ9
@@ -38,4 +38,4 @@ var hostAttributes = (attributes) => (target) => target.addInitializer((instance
38
38
  //#endregion
39
39
  export { hostAttributes };
40
40
 
41
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC1hdHRyaWJ1dGVzLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RlY29yYXRvcnMvaG9zdC1hdHRyaWJ1dGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU2VydmVyLCB0eXBlIFJlYWN0aXZlRWxlbWVudCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uL21peGlucy9jb25zdHJ1Y3Rvci50cyc7XG5cbmZ1bmN0aW9uIGFwcGx5QXR0cmlidXRlcyhcbiAgaW5zdGFuY2U6IFJlYWN0aXZlRWxlbWVudCxcbiAgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVsbD4sXG4pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBpbnN0YW5jZS5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnN0YW5jZS50b2dnbGVBdHRyaWJ1dGUobmFtZSwgdmFsdWUgIT09IG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFwcGxpZXMgdGhlIGdpdmVuIGF0dHJpYnV0ZXMgdG8gdGhlIHJlbGF0ZWQgZWxlbWVudC5cbiAqIElmIGFuIGVtcHR5IHN0cmluZyBpcyBwYXNzZWQgYXMgYSB2YWx1ZSwgdGhlIGF0dHJpYnV0ZSB3aWxsIGJlIHNldFxuICogd2l0aG91dCB2YWx1ZS5cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIEBjdXN0b21FbGVtZW50KCdteS1lbGVtZW50KVxuICogQGhvc3RBdHRyaWJ1dGVzKHtcbiAqICAgcm9sZTogJ3JlZ2lvbidcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgTXlFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gKiAgIC4uLlxuICogfVxuICpcbiAqIEBwYXJhbSBhdHRyaWJ1dGVzIEEgcmVjb3JkIG9mIGF0dHJpYnV0ZXMgdG8gYXBwbHkgdG8gdGhlIGVsZW1lbnQuXG4gKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgd2l0aCBuZXh0IG1ham9yIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBob3N0QXR0cmlidXRlcyA9XG4gIChhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudWxsPikgPT4gKHRhcmdldDogQWJzdHJhY3RDb25zdHJ1Y3RvcjxSZWFjdGl2ZUVsZW1lbnQ+KSA9PlxuICAgICh0YXJnZXQgYXMgdHlwZW9mIFJlYWN0aXZlRWxlbWVudCkuYWRkSW5pdGlhbGl6ZXIoKGluc3RhbmNlOiBSZWFjdGl2ZUVsZW1lbnQpID0+IHtcbiAgICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgICBhcHBseUF0dHJpYnV0ZXMoaW5zdGFuY2UsIGF0dHJpYnV0ZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSXQgaXMgbm90IGFsbG93ZWQgdG8gc2V0IGF0dHJpYnV0ZXMgZHVyaW5nIGNvbnN0cnVjdG9yIHBoYXNlLiBEdWUgdG8gdGhpcyB3ZSB1c2UgYVxuICAgICAgICAvLyBjb250cm9sbGVyIHRvIGFzc2lnbiB0aGUgYXR0cmlidXRlcyBkdXJpbmcgbGl0IGluaXRpYWxpemF0aW9uIHBoYXNlLlxuICAgICAgICAvLyBIb3N0Q29ubmVjdGVkIG9yIGhvc3RVcGRhdGUgY2FuIGJlIGNhbGxlZCBlaXRoZXIgb3JkZXIuIER1ZSB0byB0aGF0IHdlIGFwcGx5IGluIHRoZVxuICAgICAgICAvLyBmaXJzdCBvY2N1cnJlbmNlIGFuZCBkaXJlY3RseSByZW1vdmUgdGhlIGNvbnRyb2xsZXIsIHNvIGl0J3Mgb25seSBjYWxsZWQgb25jZS5cbiAgICAgICAgaW5zdGFuY2UuYWRkQ29udHJvbGxlcih7XG4gICAgICAgICAgaG9zdENvbm5lY3RlZCgpIHtcbiAgICAgICAgICAgIGFwcGx5QXR0cmlidXRlcyhpbnN0YW5jZSwgYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBpbnN0YW5jZS5yZW1vdmVDb250cm9sbGVyKHRoaXMpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaG9zdFVwZGF0ZSgpIHtcbiAgICAgICAgICAgIGFwcGx5QXR0cmlidXRlcyhpbnN0YW5jZSwgYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBpbnN0YW5jZS5yZW1vdmVDb250cm9sbGVyKHRoaXMpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUlBLFNBQVMsZ0JBQ1AsVUFDQSxZQUF5QztDQUV6QyxLQUFLLE1BQU0sQ0FBQyxNQUFNLFVBQVUsT0FBTyxRQUFRLFdBQVcsRUFDcEQsSUFBSSxPQUNGLFNBQVMsYUFBYSxNQUFNLE1BQU07TUFFbEMsU0FBUyxnQkFBZ0IsTUFBTSxVQUFVLEtBQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJwRCxJQUFhLGtCQUNWLGdCQUErQyxXQUM3QyxPQUFrQyxnQkFBZ0IsYUFBNkI7Q0FDOUUsSUFBSSxVQUNGLGdCQUFnQixVQUFVLFdBQVc7TUFNckMsU0FBUyxjQUFjO0VBQ3JCLGdCQUFhO0dBQ1gsZ0JBQWdCLFVBQVUsV0FBVztHQUNyQyxTQUFTLGlCQUFpQixLQUFLOztFQUVqQyxhQUFVO0dBQ1IsZ0JBQWdCLFVBQVUsV0FBVztHQUNyQyxTQUFTLGlCQUFpQixLQUFLOztFQUVsQyxDQUFDO0VBRUoifQ==
41
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC1hdHRyaWJ1dGVzLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RlY29yYXRvcnMvaG9zdC1hdHRyaWJ1dGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU2VydmVyLCB0eXBlIFJlYWN0aXZlRWxlbWVudCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uL21peGlucy9jb25zdHJ1Y3Rvci50cyc7XG5cbmZ1bmN0aW9uIGFwcGx5QXR0cmlidXRlcyhcbiAgaW5zdGFuY2U6IFJlYWN0aXZlRWxlbWVudCxcbiAgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVsbD4sXG4pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBpbnN0YW5jZS5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnN0YW5jZS50b2dnbGVBdHRyaWJ1dGUobmFtZSwgdmFsdWUgIT09IG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFwcGxpZXMgdGhlIGdpdmVuIGF0dHJpYnV0ZXMgdG8gdGhlIHJlbGF0ZWQgZWxlbWVudC5cbiAqIElmIGFuIGVtcHR5IHN0cmluZyBpcyBwYXNzZWQgYXMgYSB2YWx1ZSwgdGhlIGF0dHJpYnV0ZSB3aWxsIGJlIHNldFxuICogd2l0aG91dCB2YWx1ZS5cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIEBjdXN0b21FbGVtZW50KCdteS1lbGVtZW50KVxuICogQGhvc3RBdHRyaWJ1dGVzKHtcbiAqICAgcm9sZTogJ3JlZ2lvbidcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgTXlFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gKiAgIC4uLlxuICogfVxuICpcbiAqIEBwYXJhbSBhdHRyaWJ1dGVzIEEgcmVjb3JkIG9mIGF0dHJpYnV0ZXMgdG8gYXBwbHkgdG8gdGhlIGVsZW1lbnQuXG4gKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgd2l0aCBuZXh0IG1ham9yIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBob3N0QXR0cmlidXRlcyA9XG4gIChhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudWxsPikgPT4gKHRhcmdldDogQWJzdHJhY3RDb25zdHJ1Y3RvcjxSZWFjdGl2ZUVsZW1lbnQ+KSA9PlxuICAgICh0YXJnZXQgYXMgdHlwZW9mIFJlYWN0aXZlRWxlbWVudCkuYWRkSW5pdGlhbGl6ZXIoKGluc3RhbmNlOiBSZWFjdGl2ZUVsZW1lbnQpID0+IHtcbiAgICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgICBhcHBseUF0dHJpYnV0ZXMoaW5zdGFuY2UsIGF0dHJpYnV0ZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSXQgaXMgbm90IGFsbG93ZWQgdG8gc2V0IGF0dHJpYnV0ZXMgZHVyaW5nIGNvbnN0cnVjdG9yIHBoYXNlLiBEdWUgdG8gdGhpcyB3ZSB1c2UgYVxuICAgICAgICAvLyBjb250cm9sbGVyIHRvIGFzc2lnbiB0aGUgYXR0cmlidXRlcyBkdXJpbmcgbGl0IGluaXRpYWxpemF0aW9uIHBoYXNlLlxuICAgICAgICAvLyBIb3N0Q29ubmVjdGVkIG9yIGhvc3RVcGRhdGUgY2FuIGJlIGNhbGxlZCBlaXRoZXIgb3JkZXIuIER1ZSB0byB0aGF0IHdlIGFwcGx5IGluIHRoZVxuICAgICAgICAvLyBmaXJzdCBvY2N1cnJlbmNlIGFuZCBkaXJlY3RseSByZW1vdmUgdGhlIGNvbnRyb2xsZXIsIHNvIGl0J3Mgb25seSBjYWxsZWQgb25jZS5cbiAgICAgICAgaW5zdGFuY2UuYWRkQ29udHJvbGxlcih7XG4gICAgICAgICAgaG9zdENvbm5lY3RlZCgpIHtcbiAgICAgICAgICAgIGFwcGx5QXR0cmlidXRlcyhpbnN0YW5jZSwgYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBpbnN0YW5jZS5yZW1vdmVDb250cm9sbGVyKHRoaXMpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaG9zdFVwZGF0ZSgpIHtcbiAgICAgICAgICAgIGFwcGx5QXR0cmlidXRlcyhpbnN0YW5jZSwgYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBpbnN0YW5jZS5yZW1vdmVDb250cm9sbGVyKHRoaXMpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUlBLFNBQVMsZ0JBQ1AsVUFDQSxZQUF5QztDQUV6QyxLQUFLLE1BQU0sQ0FBQyxNQUFNLFVBQVUsT0FBTyxRQUFRLFVBQVUsR0FDbkQsSUFBSSxPQUNGLFNBQVMsYUFBYSxNQUFNLEtBQUs7TUFFakMsU0FBUyxnQkFBZ0IsTUFBTSxVQUFVLElBQUk7QUFHbkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkEsSUFBYSxrQkFDVixnQkFBK0MsV0FDN0MsT0FBa0MsZ0JBQWdCLGFBQTZCO0NBQzlFLElBQUksVUFDRixnQkFBZ0IsVUFBVSxVQUFVO01BTXBDLFNBQVMsY0FBYztFQUNyQixnQkFBYTtHQUNYLGdCQUFnQixVQUFVLFVBQVU7R0FDcEMsU0FBUyxpQkFBaUIsSUFBSTtFQUNoQztFQUNBLGFBQVU7R0FDUixnQkFBZ0IsVUFBVSxVQUFVO0dBQ3BDLFNBQVMsaUJBQWlCLElBQUk7RUFDaEM7RUFDRDtBQUVMLENBQUMifQ==