@kepler.gl/components 3.0.0-alpha.1 → 3.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/dist/bottom-widget.js +1 -21
  2. package/dist/common/action-panel.js +1 -21
  3. package/dist/common/animation-control/animation-control.js +1 -21
  4. package/dist/common/animation-control/animation-controller.js +1 -21
  5. package/dist/common/animation-control/animation-speed-slider.js +1 -21
  6. package/dist/common/animation-control/animation-window-control.js +3 -21
  7. package/dist/common/animation-control/floating-time-display.js +1 -21
  8. package/dist/common/animation-control/play-control.js +3 -21
  9. package/dist/common/animation-control/playback-controls.js +1 -21
  10. package/dist/common/animation-control/reset-control.js +3 -21
  11. package/dist/common/animation-control/speed-control.js +1 -21
  12. package/dist/common/animation-control/window-action-control.js +3 -21
  13. package/dist/common/checkbox.js +1 -21
  14. package/dist/common/color-legend.js +1 -21
  15. package/dist/common/data-table/button.js +1 -21
  16. package/dist/common/data-table/canvas.js +1 -21
  17. package/dist/common/data-table/cell-size.js +1 -21
  18. package/dist/common/data-table/display-format.js +1 -21
  19. package/dist/common/data-table/grid.js +1 -21
  20. package/dist/common/data-table/header-cell.js +1 -21
  21. package/dist/common/data-table/index.js +1 -21
  22. package/dist/common/data-table/option-dropdown.js +1 -21
  23. package/dist/common/dataset-label.js +1 -21
  24. package/dist/common/error-boundary.js +1 -21
  25. package/dist/common/field-selector.d.ts +1 -0
  26. package/dist/common/field-selector.js +3 -21
  27. package/dist/common/field-token.d.ts +4 -0
  28. package/dist/common/field-token.js +1 -21
  29. package/dist/common/file-uploader/file-drop.js +1 -21
  30. package/dist/common/file-uploader/file-upload-progress.js +1 -21
  31. package/dist/common/file-uploader/file-upload.js +1 -21
  32. package/dist/common/file-uploader/upload-button.js +1 -21
  33. package/dist/common/flex-container.d.ts +3 -0
  34. package/dist/common/flex-container.js +23 -0
  35. package/dist/common/histogram-plot.js +1 -21
  36. package/dist/common/icon-button.d.ts +1 -1
  37. package/dist/common/icon-button.js +1 -21
  38. package/dist/common/icons/add.js +1 -21
  39. package/dist/common/icons/anchor_window.js +6 -22
  40. package/dist/common/icons/arrow-down-alt.js +1 -21
  41. package/dist/common/icons/arrow-down-small.d.ts +14 -0
  42. package/dist/common/icons/arrow-down-small.js +72 -0
  43. package/dist/common/icons/arrow-down-solid.js +1 -21
  44. package/dist/common/icons/arrow-down.js +1 -21
  45. package/dist/common/icons/arrow-left.js +1 -21
  46. package/dist/common/icons/arrow-right.js +1 -21
  47. package/dist/common/icons/arrow-up-alt.js +1 -21
  48. package/dist/common/icons/arrow-up-solid.js +1 -21
  49. package/dist/common/icons/arrow-up.js +1 -21
  50. package/dist/common/icons/base.js +1 -21
  51. package/dist/common/icons/bug.js +1 -21
  52. package/dist/common/icons/calendar.d.ts +10 -0
  53. package/dist/common/icons/calendar.js +66 -0
  54. package/dist/common/icons/cancel.js +1 -21
  55. package/dist/common/icons/checkmark.js +1 -21
  56. package/dist/common/icons/clipboard.js +1 -21
  57. package/dist/common/icons/clock.js +1 -21
  58. package/dist/common/icons/close.js +1 -21
  59. package/dist/common/icons/code-alt.js +1 -21
  60. package/dist/common/icons/copy.js +1 -21
  61. package/dist/common/icons/crosshairs.js +1 -21
  62. package/dist/common/icons/cube-3d.js +1 -21
  63. package/dist/common/icons/cursor-click.js +1 -21
  64. package/dist/common/icons/cursor-point.js +1 -21
  65. package/dist/common/icons/data-table.js +1 -21
  66. package/dist/common/icons/db.js +1 -21
  67. package/dist/common/icons/delete.js +1 -21
  68. package/dist/common/icons/docs.js +1 -21
  69. package/dist/common/icons/drag-n-drop.js +1 -21
  70. package/dist/common/icons/draw-polygon.js +1 -21
  71. package/dist/common/icons/effects/brightness-contrast.d.ts +14 -0
  72. package/dist/common/icons/effects/brightness-contrast.js +88 -0
  73. package/dist/common/icons/effects/color-halftone.d.ts +14 -0
  74. package/dist/common/icons/effects/color-halftone.js +127 -0
  75. package/dist/common/icons/effects/dot-screen.d.ts +14 -0
  76. package/dist/common/icons/effects/dot-screen.js +122 -0
  77. package/dist/common/icons/effects/edge-work.d.ts +14 -0
  78. package/dist/common/icons/effects/edge-work.js +81 -0
  79. package/dist/common/icons/effects/hexagonal-pixelate.d.ts +14 -0
  80. package/dist/common/icons/effects/hexagonal-pixelate.js +148 -0
  81. package/dist/common/icons/effects/hue-saturation.d.ts +14 -0
  82. package/dist/common/icons/effects/hue-saturation.js +79 -0
  83. package/dist/common/icons/effects/ink.d.ts +14 -0
  84. package/dist/common/icons/effects/ink.js +78 -0
  85. package/dist/common/icons/effects/light-and-shadow.d.ts +14 -0
  86. package/dist/common/icons/effects/light-and-shadow.js +67 -0
  87. package/dist/common/icons/effects/magic-wand.d.ts +14 -0
  88. package/dist/common/icons/effects/magic-wand.js +79 -0
  89. package/dist/common/icons/effects/magnify.d.ts +14 -0
  90. package/dist/common/icons/effects/magnify.js +86 -0
  91. package/dist/common/icons/effects/noise.d.ts +14 -0
  92. package/dist/common/icons/effects/noise.js +132 -0
  93. package/dist/common/icons/effects/sepia.d.ts +14 -0
  94. package/dist/common/icons/effects/sepia.js +79 -0
  95. package/dist/common/icons/effects/tilt-shift.d.ts +14 -0
  96. package/dist/common/icons/effects/tilt-shift.js +88 -0
  97. package/dist/common/icons/effects/triangle-blur.d.ts +14 -0
  98. package/dist/common/icons/effects/triangle-blur.js +83 -0
  99. package/dist/common/icons/effects/vibrance.d.ts +14 -0
  100. package/dist/common/icons/effects/vibrance.js +79 -0
  101. package/dist/common/icons/effects/vignette.d.ts +14 -0
  102. package/dist/common/icons/effects/vignette.js +72 -0
  103. package/dist/common/icons/effects/zoom-blur.d.ts +14 -0
  104. package/dist/common/icons/effects/zoom-blur.js +107 -0
  105. package/dist/common/icons/email.js +1 -21
  106. package/dist/common/icons/expand.js +1 -21
  107. package/dist/common/icons/eye-seen.js +1 -21
  108. package/dist/common/icons/eye-unseen.js +1 -21
  109. package/dist/common/icons/file-type.js +1 -21
  110. package/dist/common/icons/file.js +1 -21
  111. package/dist/common/icons/files.js +1 -21
  112. package/dist/common/icons/filter-funnel.js +1 -21
  113. package/dist/common/icons/free-window.js +6 -22
  114. package/dist/common/icons/gear.js +1 -21
  115. package/dist/common/icons/globe.d.ts +15 -0
  116. package/dist/common/icons/globe.js +72 -0
  117. package/dist/common/icons/hash.js +1 -21
  118. package/dist/common/icons/histogram.js +1 -21
  119. package/dist/common/icons/index.d.ts +25 -0
  120. package/dist/common/icons/index.js +201 -21
  121. package/dist/common/icons/info.js +1 -21
  122. package/dist/common/icons/layers.js +1 -21
  123. package/dist/common/icons/left-arrow.js +1 -21
  124. package/dist/common/icons/legend.js +1 -21
  125. package/dist/common/icons/line-chart.js +1 -21
  126. package/dist/common/icons/location-marker.d.ts +14 -0
  127. package/dist/common/icons/location-marker.js +77 -0
  128. package/dist/common/icons/login.js +1 -21
  129. package/dist/common/icons/logout.js +1 -21
  130. package/dist/common/icons/map-icon.js +1 -21
  131. package/dist/common/icons/map.js +1 -21
  132. package/dist/common/icons/messages.js +1 -21
  133. package/dist/common/icons/minus.js +1 -21
  134. package/dist/common/icons/moon.d.ts +14 -0
  135. package/dist/common/icons/moon.js +77 -0
  136. package/dist/common/icons/order-by-dataset.js +6 -22
  137. package/dist/common/icons/order-by-list.js +6 -22
  138. package/dist/common/icons/pause.js +1 -21
  139. package/dist/common/icons/picture.js +1 -21
  140. package/dist/common/icons/pin.js +1 -21
  141. package/dist/common/icons/play.js +1 -21
  142. package/dist/common/icons/polygon.js +1 -21
  143. package/dist/common/icons/rectangle.js +1 -21
  144. package/dist/common/icons/reduce.js +1 -21
  145. package/dist/common/icons/reset.js +1 -21
  146. package/dist/common/icons/rocket.js +1 -21
  147. package/dist/common/icons/save.js +1 -21
  148. package/dist/common/icons/save2.js +1 -21
  149. package/dist/common/icons/search.js +1 -21
  150. package/dist/common/icons/settings.js +1 -21
  151. package/dist/common/icons/share.js +1 -21
  152. package/dist/common/icons/split.js +1 -21
  153. package/dist/common/icons/square-select.js +1 -21
  154. package/dist/common/icons/sun.d.ts +14 -0
  155. package/dist/common/icons/sun.js +93 -0
  156. package/dist/common/icons/sunrise.d.ts +14 -0
  157. package/dist/common/icons/sunrise.js +89 -0
  158. package/dist/common/icons/sunset.d.ts +14 -0
  159. package/dist/common/icons/sunset.js +89 -0
  160. package/dist/common/icons/trash.js +1 -21
  161. package/dist/common/icons/vert-dots.js +1 -21
  162. package/dist/common/icons/vert-three-dots.js +1 -21
  163. package/dist/common/icons/warning-sign.js +1 -21
  164. package/dist/common/icons/warning.js +1 -21
  165. package/dist/common/image-preview.js +1 -21
  166. package/dist/common/index.js +1 -21
  167. package/dist/common/info-helper.js +1 -21
  168. package/dist/common/item-selector/accessor.js +5 -22
  169. package/dist/common/item-selector/chickleted-input.d.ts +1 -0
  170. package/dist/common/item-selector/chickleted-input.js +104 -44
  171. package/dist/common/item-selector/dropdown-list.d.ts +2 -0
  172. package/dist/common/item-selector/dropdown-list.js +10 -25
  173. package/dist/common/item-selector/item-selector.d.ts +3 -0
  174. package/dist/common/item-selector/item-selector.js +11 -23
  175. package/dist/common/item-selector/typeahead.js +1 -21
  176. package/dist/common/line-chart.js +1 -21
  177. package/dist/common/loading-spinner.js +1 -21
  178. package/dist/common/logo.js +1 -21
  179. package/dist/common/map-layer-selector.js +1 -21
  180. package/dist/common/modal.js +25 -28
  181. package/dist/common/portaled.d.ts +15 -2
  182. package/dist/common/portaled.js +1 -21
  183. package/dist/common/progress-bar.js +1 -21
  184. package/dist/common/range-brush.js +1 -21
  185. package/dist/common/range-plot.js +1 -21
  186. package/dist/common/range-slider.d.ts +1 -1
  187. package/dist/common/range-slider.js +1 -21
  188. package/dist/common/slider/mouse-event.js +6 -22
  189. package/dist/common/slider/slider-bar-handle.js +1 -21
  190. package/dist/common/slider/slider-handle.js +1 -21
  191. package/dist/common/slider/slider.js +1 -21
  192. package/dist/common/styled-components.d.ts +3 -3
  193. package/dist/common/styled-components.js +26 -47
  194. package/dist/common/switch.js +1 -21
  195. package/dist/common/time-range-slider-time-title.js +1 -21
  196. package/dist/common/time-range-slider.js +1 -21
  197. package/dist/common/time-slider-marker.js +1 -21
  198. package/dist/common/timeline-slider.js +1 -21
  199. package/dist/common/tippy-tooltip.js +1 -21
  200. package/dist/common/toolbar-item.js +1 -21
  201. package/dist/common/toolbar.js +1 -21
  202. package/dist/common/vertical-toolbar.js +1 -21
  203. package/dist/connect/keplergl-connect.js +6 -22
  204. package/dist/connect/with-local-selector.js +1 -21
  205. package/dist/container.js +1 -21
  206. package/dist/context.d.ts +11 -0
  207. package/dist/context.js +18 -23
  208. package/dist/dnd-context.d.ts +1 -1
  209. package/dist/dnd-context.js +32 -127
  210. package/dist/editor/editor.js +1 -21
  211. package/dist/editor/feature-action-panel.js +28 -79
  212. package/dist/effects/compact-color-picker.d.ts +10 -0
  213. package/dist/effects/compact-color-picker.js +130 -0
  214. package/dist/effects/effect-configurator.d.ts +4 -5
  215. package/dist/effects/effect-configurator.js +183 -118
  216. package/dist/effects/effect-list.js +2 -22
  217. package/dist/effects/effect-manager.d.ts +2 -1
  218. package/dist/effects/effect-manager.js +43 -30
  219. package/dist/effects/effect-panel-header.d.ts +14 -2
  220. package/dist/effects/effect-panel-header.js +82 -50
  221. package/dist/effects/effect-panel.js +30 -43
  222. package/dist/effects/effect-time-configurator.d.ts +14 -7
  223. package/dist/effects/effect-time-configurator.js +258 -109
  224. package/dist/effects/effect-time-selector.d.ts +16 -0
  225. package/dist/effects/effect-time-selector.js +181 -0
  226. package/dist/effects/effect-time-slider.d.ts +34 -0
  227. package/dist/effects/effect-time-slider.js +220 -0
  228. package/dist/effects/effect-type-dropdown-list.d.ts +18 -0
  229. package/dist/effects/effect-type-dropdown-list.js +77 -0
  230. package/dist/effects/effect-type-list-item.d.ts +22 -0
  231. package/dist/effects/effect-type-list-item.js +105 -0
  232. package/dist/effects/effect-type-selector.d.ts +22 -3
  233. package/dist/effects/effect-type-selector.js +58 -83
  234. package/dist/effects/side-panel-title.js +1 -21
  235. package/dist/effects/timezone-selector.d.ts +19 -0
  236. package/dist/effects/timezone-selector.js +71 -0
  237. package/dist/filter-animation-controller.js +3 -21
  238. package/dist/filters/components.js +1 -21
  239. package/dist/filters/filter-panels/filter-panel-with-field-select.js +6 -22
  240. package/dist/filters/filter-panels/multi-select-filter-panel.js +6 -22
  241. package/dist/filters/filter-panels/new-filter-panel.js +6 -22
  242. package/dist/filters/filter-panels/polygon-filter-panel.js +6 -22
  243. package/dist/filters/filter-panels/range-filter-panel.js +6 -22
  244. package/dist/filters/filter-panels/single-select-filter-panel.js +6 -22
  245. package/dist/filters/filter-panels/time-range-filter-panel.js +1 -21
  246. package/dist/filters/filter-panels/types.js +0 -20
  247. package/dist/filters/index.js +1 -21
  248. package/dist/filters/multi-select-filter.js +6 -22
  249. package/dist/filters/polygon-filter.js +6 -22
  250. package/dist/filters/range-filter.js +6 -22
  251. package/dist/filters/single-select-filter.js +6 -22
  252. package/dist/filters/time-range-filter.js +7 -22
  253. package/dist/filters/time-widget-top.js +1 -21
  254. package/dist/filters/time-widget.js +1 -21
  255. package/dist/filters/types.js +0 -20
  256. package/dist/geocoder/geocoder.js +10 -27
  257. package/dist/geocoder-panel.js +1 -21
  258. package/dist/hooks/use-cloud-list-provider.d.ts +11 -0
  259. package/dist/hooks/use-cloud-list-provider.js +57 -0
  260. package/dist/hooks/use-dnd-effects.d.ts +9 -0
  261. package/dist/hooks/use-dnd-effects.js +88 -0
  262. package/dist/hooks/use-dnd-layers.d.ts +9 -0
  263. package/dist/hooks/use-dnd-layers.js +95 -0
  264. package/dist/hooks/use-feature-flags.d.ts +5 -0
  265. package/dist/hooks/use-feature-flags.js +21 -0
  266. package/dist/index.d.ts +10 -1
  267. package/dist/index.js +103 -24
  268. package/dist/injector.js +1 -21
  269. package/dist/kepler-gl.d.ts +2 -1
  270. package/dist/kepler-gl.js +13 -25
  271. package/dist/layer-animation-controller.js +3 -21
  272. package/dist/map/coordinate-info.js +6 -22
  273. package/dist/map/effects/effect-control.d.ts +1 -1
  274. package/dist/map/effects/effect-control.js +5 -23
  275. package/dist/map/layer-hover-info.js +2 -22
  276. package/dist/map/layer-selector-panel.js +6 -22
  277. package/dist/map/lazy-tippy.js +1 -21
  278. package/dist/map/locale-panel.js +6 -22
  279. package/dist/map/map-control-panel.js +1 -21
  280. package/dist/map/map-control-toolbar.js +1 -21
  281. package/dist/map/map-control-tooltip.js +6 -22
  282. package/dist/map/map-control.js +1 -21
  283. package/dist/map/map-draw-panel.js +6 -22
  284. package/dist/map/map-legend-panel.js +6 -22
  285. package/dist/map/map-legend.js +1 -21
  286. package/dist/map/map-popover-content.js +6 -22
  287. package/dist/map/map-popover.js +1 -21
  288. package/dist/map/split-map-button.js +6 -22
  289. package/dist/map/toggle-3d-button.js +6 -22
  290. package/dist/map-container.d.ts +1 -1
  291. package/dist/map-container.js +33 -52
  292. package/dist/map-view-state-context.d.ts +6 -1
  293. package/dist/map-view-state-context.js +34 -33
  294. package/dist/maps-layout.js +1 -21
  295. package/dist/modal-container.d.ts +2 -2
  296. package/dist/modal-container.js +13 -72
  297. package/dist/modals/add-map-style-modal.js +8 -72
  298. package/dist/modals/cloud-components/cloud-header.d.ts +8 -0
  299. package/dist/modals/cloud-components/cloud-header.js +65 -0
  300. package/dist/modals/cloud-components/cloud-item.d.ts +5 -0
  301. package/dist/modals/cloud-components/cloud-item.js +72 -0
  302. package/dist/modals/cloud-components/cloud-item.spec.d.ts +1 -0
  303. package/dist/modals/cloud-components/cloud-item.spec.js +105 -0
  304. package/dist/modals/cloud-components/cloud-maps.d.ts +8 -0
  305. package/dist/modals/cloud-components/cloud-maps.js +63 -0
  306. package/dist/modals/cloud-components/cloud-maps.spec.d.ts +1 -0
  307. package/dist/modals/cloud-components/cloud-maps.spec.js +112 -0
  308. package/dist/modals/cloud-components/provider-loading.d.ts +2 -0
  309. package/dist/modals/cloud-components/provider-loading.js +29 -0
  310. package/dist/modals/cloud-components/provider-select.d.ts +7 -0
  311. package/dist/modals/cloud-components/provider-select.js +40 -0
  312. package/dist/modals/cloud-tile.d.ts +8 -8
  313. package/dist/modals/cloud-tile.js +184 -75
  314. package/dist/modals/data-table-modal.js +1 -21
  315. package/dist/modals/delete-data-modal.js +1 -21
  316. package/dist/modals/error-display.js +15 -26
  317. package/dist/modals/export-data-modal.js +1 -21
  318. package/dist/modals/export-image-modal.js +1 -21
  319. package/dist/modals/export-map-modal/components.js +1 -21
  320. package/dist/modals/export-map-modal/export-html-map.js +1 -21
  321. package/dist/modals/export-map-modal/export-json-map.js +1 -21
  322. package/dist/modals/export-map-modal/export-map-modal.js +6 -22
  323. package/dist/modals/image-modal-container.d.ts +1 -3
  324. package/dist/modals/image-modal-container.js +12 -34
  325. package/dist/modals/load-data-modal.d.ts +0 -5
  326. package/dist/modals/load-data-modal.js +1 -21
  327. package/dist/modals/load-storage-map.d.ts +3 -24
  328. package/dist/modals/load-storage-map.js +69 -282
  329. package/dist/modals/load-storage-map.spec.d.ts +1 -0
  330. package/dist/modals/load-storage-map.spec.js +237 -0
  331. package/dist/modals/loading-dialog.js +1 -21
  332. package/dist/modals/modal-dialog.js +6 -22
  333. package/dist/modals/modal-tabs.js +1 -21
  334. package/dist/modals/overwrite-map-modal.d.ts +2 -2
  335. package/dist/modals/overwrite-map-modal.js +39 -32
  336. package/dist/modals/save-map-modal.d.ts +3 -5
  337. package/dist/modals/save-map-modal.js +99 -119
  338. package/dist/modals/save-map-modal.spec.d.ts +1 -0
  339. package/dist/modals/save-map-modal.spec.js +218 -0
  340. package/dist/modals/share-map-modal.d.ts +1 -5
  341. package/dist/modals/share-map-modal.js +57 -81
  342. package/dist/modals/share-map-modal.spec.d.ts +1 -0
  343. package/dist/modals/share-map-modal.spec.js +202 -0
  344. package/dist/modals/status-panel.js +1 -21
  345. package/dist/modals/storage-map-viewer.js +1 -21
  346. package/dist/notification-panel/notification-item.js +1 -21
  347. package/dist/notification-panel.js +1 -21
  348. package/dist/plot-container.js +7 -27
  349. package/dist/side-panel/add-by-dataset-button.js +1 -21
  350. package/dist/side-panel/cloud-storage-dropdown.js +6 -22
  351. package/dist/side-panel/common/dataset-info.js +1 -21
  352. package/dist/side-panel/common/dataset-tag.js +1 -21
  353. package/dist/side-panel/common/dataset-title.js +1 -21
  354. package/dist/side-panel/common/source-data-catalog.js +1 -21
  355. package/dist/side-panel/common/source-data-selector.js +6 -22
  356. package/dist/side-panel/common/types.js +0 -20
  357. package/dist/side-panel/custom-panel.js +6 -22
  358. package/dist/side-panel/filter-manager.js +1 -21
  359. package/dist/side-panel/filter-panel/add-filter-button.js +6 -22
  360. package/dist/side-panel/filter-panel/filter-panel-header.js +2 -22
  361. package/dist/side-panel/filter-panel/filter-panel.js +1 -21
  362. package/dist/side-panel/interaction-manager.js +6 -22
  363. package/dist/side-panel/interaction-panel/brush-config.js +1 -21
  364. package/dist/side-panel/interaction-panel/interaction-panel.js +1 -21
  365. package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.d.ts +8 -0
  366. package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +46 -27
  367. package/dist/side-panel/interaction-panel/tooltip-config.js +41 -52
  368. package/dist/side-panel/layer-manager.d.ts +5 -0
  369. package/dist/side-panel/layer-manager.js +3 -22
  370. package/dist/side-panel/layer-panel/add-layer-button.js +6 -22
  371. package/dist/side-panel/layer-panel/color-palette.js +1 -21
  372. package/dist/side-panel/layer-panel/color-range-selector.js +1 -21
  373. package/dist/side-panel/layer-panel/color-selector.js +1 -21
  374. package/dist/side-panel/layer-panel/column-selector.js +1 -21
  375. package/dist/side-panel/layer-panel/custom-palette.js +1 -21
  376. package/dist/side-panel/layer-panel/custom-picker.js +1 -21
  377. package/dist/side-panel/layer-panel/dataset-layer-group.js +6 -22
  378. package/dist/side-panel/layer-panel/dataset-layer-section.js +1 -21
  379. package/dist/side-panel/layer-panel/dataset-section.js +1 -21
  380. package/dist/side-panel/layer-panel/dimension-scale-selector.js +6 -22
  381. package/dist/side-panel/layer-panel/how-to-button.js +1 -21
  382. package/dist/side-panel/layer-panel/layer-color-selector.js +6 -22
  383. package/dist/side-panel/layer-panel/layer-column-config.js +1 -21
  384. package/dist/side-panel/layer-panel/layer-config-group.js +1 -21
  385. package/dist/side-panel/layer-panel/layer-configurator.js +16 -24
  386. package/dist/side-panel/layer-panel/layer-error-message.js +1 -21
  387. package/dist/side-panel/layer-panel/layer-list.js +1 -21
  388. package/dist/side-panel/layer-panel/layer-panel-header.js +1 -21
  389. package/dist/side-panel/layer-panel/layer-panel.js +1 -21
  390. package/dist/side-panel/layer-panel/layer-type-dropdown-list.js +1 -21
  391. package/dist/side-panel/layer-panel/layer-type-list-item.js +1 -21
  392. package/dist/side-panel/layer-panel/layer-type-selector.js +1 -21
  393. package/dist/side-panel/layer-panel/single-color-palette.js +1 -21
  394. package/dist/side-panel/layer-panel/text-label-panel.js +1 -21
  395. package/dist/side-panel/layer-panel/vis-config-by-field-selector.js +1 -21
  396. package/dist/side-panel/layer-panel/vis-config-slider.js +1 -21
  397. package/dist/side-panel/layer-panel/vis-config-switch.js +1 -21
  398. package/dist/side-panel/map-manager.js +1 -21
  399. package/dist/side-panel/map-style-panel/map-layer-group-color-picker.js +1 -21
  400. package/dist/side-panel/map-style-panel/map-layer-group-item.js +1 -21
  401. package/dist/side-panel/map-style-panel/map-layer-selector.js +1 -21
  402. package/dist/side-panel/map-style-panel/map-style-selector.js +1 -21
  403. package/dist/side-panel/panel-dropdown.js +1 -21
  404. package/dist/side-panel/panel-header-action.js +1 -21
  405. package/dist/side-panel/panel-header.js +2 -21
  406. package/dist/side-panel/panel-tab.js +1 -21
  407. package/dist/side-panel/panel-title.js +1 -21
  408. package/dist/side-panel/panel-toggle.js +1 -21
  409. package/dist/side-panel/panel-view-list-toggle.js +1 -21
  410. package/dist/side-panel/side-bar.js +1 -21
  411. package/dist/side-panel.js +7 -36
  412. package/dist/types.d.ts +2 -4
  413. package/dist/types.js +0 -20
  414. package/package.json +27 -24
  415. package/dist/hooks/useFeatureFlags.d.ts +0 -2
  416. package/dist/hooks/useFeatureFlags.js +0 -38
  417. package/dist/modals/provider-modal-container.d.ts +0 -23
  418. package/dist/modals/provider-modal-container.js +0 -101
@@ -1,23 +1,3 @@
1
- // Copyright (c) 2023 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
20
-
21
1
  "use strict";
22
2
 
23
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -228,6 +208,7 @@ var DropdownList = /*#__PURE__*/function (_Component) {
228
208
  value: function render() {
229
209
  var _this$props$options,
230
210
  _this$props$customCla,
211
+ _this$props$customCla2,
231
212
  _this2 = this,
232
213
  _this$state$options;
233
214
 
@@ -249,17 +230,19 @@ var DropdownList = /*#__PURE__*/function (_Component) {
249
230
  // onMouseDown is used here as a workaround of #205 and other
250
231
 
251
232
  return /*#__PURE__*/_react["default"].createElement(DropdownListWrapper, {
252
- className: classList.list,
233
+ className: (0, _classnames["default"])(classList.list, (_this$props$customCla = this.props.customClasses) === null || _this$props$customCla === void 0 ? void 0 : _this$props$customCla.results),
253
234
  light: light
254
235
  }, this.props.customListHeaderComponent ? /*#__PURE__*/_react["default"].createElement("div", {
255
- className: (0, _classnames["default"])(classList.listHeader, (_this$props$customCla = this.props.customClasses) === null || _this$props$customCla === void 0 ? void 0 : _this$props$customCla.listHeader)
236
+ className: (0, _classnames["default"])(classList.listHeader, (_this$props$customCla2 = this.props.customClasses) === null || _this$props$customCla2 === void 0 ? void 0 : _this$props$customCla2.listHeader)
256
237
  }, /*#__PURE__*/_react["default"].createElement(this.props.customListHeaderComponent, null)) : null, valueOffset > 0 ? /*#__PURE__*/_react["default"].createElement("div", {
257
238
  className: classList.listSection
258
239
  }, fixedOptions === null || fixedOptions === void 0 ? void 0 : fixedOptions.map(function (value, i) {
240
+ var _this2$props$customCl;
241
+
259
242
  return /*#__PURE__*/_react["default"].createElement("div", {
260
243
  className: (0, _classnames["default"])(classList.listItem, (0, _defineProperty2["default"])({
261
244
  hover: _this2.props.selectionIndex === i
262
- }, classList.listItemFixed, true)),
245
+ }, classList.listItemFixed, true), (_this2$props$customCl = _this2.props.customClasses) === null || _this2$props$customCl === void 0 ? void 0 : _this2$props$customCl.listItem),
263
246
  key: "".concat(display(value), "_").concat(i),
264
247
  onMouseDown: function onMouseDown(e) {
265
248
  return _this2._onClick(value, e);
@@ -272,10 +255,12 @@ var DropdownList = /*#__PURE__*/function (_Component) {
272
255
  displayOption: display
273
256
  }));
274
257
  })) : null, (_this$state$options = this.state.options) === null || _this$state$options === void 0 ? void 0 : _this$state$options.map(function (value, i) {
258
+ var _this2$props$customCl2;
259
+
275
260
  return /*#__PURE__*/_react["default"].createElement("div", {
276
261
  className: (0, _classnames["default"])(classList.listItem, {
277
262
  hover: _this2.props.selectionIndex === i + valueOffset
278
- }),
263
+ }, (_this2$props$customCl2 = _this2.props.customClasses) === null || _this2$props$customCl2 === void 0 ? void 0 : _this2$props$customCl2.listItem),
279
264
  key: "".concat(display(value), "_").concat(i),
280
265
  onMouseDown: function onMouseDown(e) {
281
266
  return _this2._onClick(value, e);
@@ -307,4 +292,4 @@ exports["default"] = DropdownList;
307
292
  defaultClassNames: true,
308
293
  selectionIndex: null
309
294
  });
310
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vaXRlbS1zZWxlY3Rvci9kcm9wZG93bi1saXN0LnRzeCJdLCJuYW1lcyI6WyJMRUZUX0JVVFRPTiIsImNsYXNzTGlzdCIsImxpc3QiLCJsaXN0SGVhZGVyIiwibGlzdFNlY3Rpb24iLCJsaXN0SXRlbSIsImxpc3RJdGVtQW5jaG9yIiwibGlzdEl0ZW1GaXhlZCIsImRlZmF1bHREaXNwbGF5IiwiZCIsIkxpc3RJdGVtIiwidmFsdWUiLCJkaXNwbGF5T3B0aW9uIiwiZGlzYWJsZWQiLCJsaWdodCIsImRpc3BsYXlWYWx1ZSIsIkRyb3Bkb3duTGlzdFdyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsInRoZW1lIiwiZHJvcGRvd25MaXN0QmdkTFQiLCJkcm9wZG93bkxpc3RCZ2QiLCJkcm9wZG93bkxpc3RCb3JkZXJUb3BMVCIsImRyb3Bkb3duTGlzdEJvcmRlclRvcCIsImRyb3Bkb3duTGlzdExUIiwiZHJvcGRvd25MaXN0IiwiRHJvcGRvd25Gb290ZXJXcmFwcGVyIiwiRHJvcGRvd25MaXN0IiwiZW50aXRpZXMiLCJ5IiwiYm91bmRpbmdDbGllbnRSZWN0IiwicHJldlkiLCJvcHRpb25zIiwiX2dldE9wdGlvbnMiLCJwYWdlIiwic2V0U3RhdGUiLCJzdGF0ZSIsImluaXROdW1iZXJPZk9wdGlvbnMiLCJJTklUX0ZJTFRFUl9JVEVNU19JTl9EUk9QRE9XTiIsImxvYWRpbmdSZWYiLCJSZWFjdCIsImNyZWF0ZVJlZiIsImRpdk9wdGlvbnMiLCJyb290Iiwicm9vdE1hcmdpbiIsInRocmVzaG9sZCIsImN1cnJlbnQiLCJvYnNlcnZlciIsIkludGVyc2VjdGlvbk9ic2VydmVyIiwiaGFuZGxlT2JzZXJ2ZXIiLCJvYnNlcnZlIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwic25hcHNob3QiLCJ1bm9ic2VydmUiLCJuIiwibGVuZ3RoIiwic3RhcnQiLCJlbmQiLCJzbGljZSIsInJlc3VsdCIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJ0eXBlIiwiYnV0dG9uIiwib25PcHRpb25TZWxlY3RlZCIsImZpeGVkT3B0aW9ucyIsImFsbG93Q3VzdG9tVmFsdWVzIiwiY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQiLCJDdXN0b21MaXN0SXRlbUNvbXBvbmVudCIsImRpc3BsYXkiLCJ2YWx1ZU9mZnNldCIsIkFycmF5IiwiaXNBcnJheSIsImN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQiLCJjdXN0b21DbGFzc2VzIiwibWFwIiwiaSIsImhvdmVyIiwic2VsZWN0aW9uSW5kZXgiLCJlIiwiX29uQ2xpY2siLCJDb21wb25lbnQiLCJjdXN0b21WYWx1ZXMiLCJkZWZhdWx0Q2xhc3NOYW1lcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBRUEsSUFBTUEsV0FBVyxHQUFHLENBQXBCO0FBRU8sSUFBTUMsU0FBUyxHQUFHO0FBQ3ZCQyxFQUFBQSxJQUFJLEVBQUUsZUFEaUI7QUFFdkJDLEVBQUFBLFVBQVUsRUFBRSxjQUZXO0FBR3ZCQyxFQUFBQSxXQUFXLEVBQUUsZUFIVTtBQUl2QkMsRUFBQUEsUUFBUSxFQUFFLFlBSmE7QUFLdkJDLEVBQUFBLGNBQWMsRUFBRSxvQkFMTztBQU12QkMsRUFBQUEsYUFBYSxFQUFFO0FBTlEsQ0FBbEI7OztBQVNQLElBQU1DLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBQUMsQ0FBQztBQUFBLFNBQUlBLENBQUo7QUFBQSxDQUF4Qjs7QUFDTyxJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxPQUE4RDtBQUFBLE1BQTVEQyxLQUE0RCxRQUE1REEsS0FBNEQ7QUFBQSxnQ0FBckRDLGFBQXFEO0FBQUEsTUFBckRBLGFBQXFELG1DQUFyQ0osY0FBcUM7QUFBQSxNQUFyQkssUUFBcUIsUUFBckJBLFFBQXFCO0FBQUEsTUFBWEMsS0FBVyxRQUFYQSxLQUFXO0FBQ3BGLE1BQU1DLFlBQVksR0FBR0gsYUFBYSxDQUFDRCxLQUFE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RUFBQUEsaUJBQWlCLEVBQUUsSUFSQztBQVNwQkwsRUFBQUEsY0FBYyxFQUFFO0FBVEksQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMyBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgRWxlbWVudFR5cGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0lOSVRfRklMVEVSX0lURU1TX0lOX0RST1BET1dOfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmNvbnN0IExFRlRfQlVUVE9OID0gMDtcblxuZXhwb3J0IGNvbnN0IGNsYXNzTGlzdCA9IHtcbiAgbGlzdDogJ2xpc3Qtc2VsZWN0b3InLFxuICBsaXN0SGVhZGVyOiAnbGlzdF9faGVhZGVyJyxcbiAgbGlzdFNlY3Rpb246ICdsaXN0X19zZWN0aW9uJyxcbiAgbGlzdEl0ZW06ICdsaXN0X19pdGVtJyxcbiAgbGlzdEl0ZW1BbmNob3I6ICdsaXN0X19pdGVtX19hbmNob3InLFxuICBsaXN0SXRlbUZpeGVkOiAnbGlzdF9faXRlbV9fZml4ZWQnXG59O1xuXG5jb25zdCBkZWZhdWx0RGlzcGxheSA9IGQgPT4gZDtcbmV4cG9ydCBjb25zdCBMaXN0SXRlbSA9ICh7dmFsdWUsIGRpc3BsYXlPcHRpb24gPSBkZWZhdWx0RGlzcGxheSwgZGlzYWJsZWQsIGxpZ2h0fSkgPT4ge1xuICBjb25zdCBkaXNwbGF5VmFsdWUgPSBkaXNwbGF5T3B0aW9uKHZhbHVlKTtcbiAgcmV0dXJuIChcbiAgICA8c3BhbiB0aXRsZT17ZGlzcGxheVZhbHVlfSBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3NMaXN0Lmxpc3RJdGVtQW5jaG9yLCB7ZGlzYWJsZWR9KX0+XG4gICAgICB7ZGlzcGxheVZhbHVlfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn07XG5cbmludGVyZmFjZSBEcm9wZG93bkxpc3RXcmFwcGVyUHJvcHMge1xuICBsaWdodD86IGJvb2xlYW47XG59XG5cbmNvbnN0IERyb3Bkb3duTGlzdFdyYXBwZXIgPSBzdHlsZWQuZGl2PERyb3Bkb3duTGlzdFdyYXBwZXJQcm9wcz5gXG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJnZExUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkfTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PlxuICAgICAgcHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCb3JkZXJUb3BMVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJvcmRlclRvcH07XG4gICR7cHJvcHMgPT4gKHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0TFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3QpfTtcbmA7XG5cbmNvbnN0IERyb3Bkb3duRm9vdGVyV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGhlaWdodDogJzBweCc7XG5gO1xuXG5pbnRlcmZhY2UgRHJvcGRvd25MaXN0UHJvcHMge1xuICBvcHRpb25zPzogYW55W107XG4gIGFsbG93Q3VzdG9tVmFsdWVzPzogbnVtYmVyO1xuICBjdXN0b21DbGFzc2VzPzoge2xpc3RIZWFkZXI/OiBzdHJpbmd9O1xuICBjdXN0b21WYWx1ZXM/OiBhbnlbXTtcbiAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ/OiBFbGVtZW50VHlwZTtcbiAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudD86IEVsZW1lbnRUeXBlO1xuICBzZWxlY3Rpb25JbmRleD86IG51bWJlcjtcbiAgb25PcHRpb25TZWxlY3RlZD86IEZ1bmN0aW9uO1xuICBkaXNwbGF5T3B0aW9uPzogRnVuY3Rpb247XG4gIGRlZmF1bHRDbGFzc05hbWVzPzogYm9vbGVhbjtcbiAgYXJlUmVzdWx0c1RydW5jYXRlZD86IGJvb2xlYW47XG4gIHJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlPzogc3RyaW5nO1xuICBsaXN0SXRlbUNvbXBvbmVudD86IEZ1bmN0aW9uO1xuICBsaWdodD86IGJvb2xlYW47XG4gIGZpeGVkT3B0aW9ucz86IGFueVtdO1xufVxuXG5pbnRlcmZhY2UgRHJvcGRvd25MaXN0U3RhdGUge1xuICBvcHRpb25zOiBBcnJheTxhbnk+IHwgbnVsbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJvcGRvd25MaXN0IGV4dGVuZHMgQ29tcG9uZW50PERyb3Bkb3duTGlzdFByb3BzLCBEcm9wZG93bkxpc3RTdGF0ZT4ge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGN1c3RvbUNsYXNzZXM6IHt9LFxuICAgIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50OiBMaXN0SXRlbSxcbiAgICBjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50OiBudWxsLFxuICAgIGFsbG93Q3VzdG9tVmFsdWVzOiAwLFxuICAgIGN1c3RvbVZhbHVlczogW10sXG4gICAgZGlzcGxheU9wdGlvbjogZGVmYXVsdERpc3BsYXksXG4gICAgb25PcHRpb25TZWxlY3RlZDogKCkgPT4ge30sXG4gICAgZGVmYXVsdENsYXNzTmFtZXM6IHRydWUsXG4gICAgc2VsZWN0aW9uSW5kZXg6IG51bGxcbiAgfTtcblxuICBpbml0TnVtYmVyT2ZPcHRpb25zOiBudW1iZXI7XG4gIHBhZ2U6IG51bWJlcjtcbiAgcHJldlk6IG51bWJlcjtcbiAgbG9hZGluZ1JlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtvcHRpb25zOiBbXX07XG4gICAgdGhpcy5pbml0TnVtYmVyT2ZPcHRpb25zID0gSU5JVF9GSUxURVJfSVRFTVNfSU5fRFJPUERPV047XG4gICAgdGhpcy5wYWdlID0gMDtcbiAgICB0aGlzLnByZXZZID0gMDtcbiAgICB0aGlzLmxvYWRpbmdSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9nZXRPcHRpb25zKHRoaXMucGFnZSk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7b3B0aW9uc30pO1xuXG4gICAgY29uc3QgZGl2T3B0aW9ucyA9IHtcbiAgICAgIHJvb3Q6IG51bGwsXG4gICAgICByb290TWFyZ2luOiAnMCUnLFxuICAgICAgdGhyZXNob2xkOiAxLjBcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMubG9hZGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICB0aGlzLm9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKHRoaXMuaGFuZGxlT2JzZXJ2ZXIsIGRpdk9wdGlvbnMpO1xuICAgICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMubG9hZGluZ1JlZi5jdXJyZW50KTtcbiAgICB9XG4gIH1cblxuICBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShwcmV2UHJvcHM6IERyb3Bkb3duTGlzdFByb3BzLCBwcmV2U3RhdGU6IERyb3Bkb3duTGlzdFN0YXRlKSB7XG4gICAgaWYgKHByZXZQcm9wcy5vcHRpb25zICE9PSB0aGlzLnByb3BzLm9wdGlvbnMpIHtcbiAgICAgIC8vIGNoZWNrIGlmIHVzZXIgc2VhcmNoaW5nLCByZXNldCBzdGF0ZS5vcHRpb25zIGF0IHRoZSBmaXJzdCB0aW1lXG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fZ2V0T3B0aW9ucygwKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe29wdGlvbnN9KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBwcmV2ZW50IGNvbnNvbGUgd2FybmluZzogZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoKSBzaG91bGQgYmUgdXNlZCB3aXRoIGNvbXBvbmVudERpZFVwZGF0ZSgpLlxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzLCBwcmV2U3RhdGUsIHNuYXBzaG90KSB7fVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIGlmICh0aGlzLmxvYWRpbmdSZWYuY3VycmVudCkge1xuICAgICAgdGhpcy5vYnNlcnZlcj8udW5vYnNlcnZlKHRoaXMubG9hZGluZ1JlZi5jdXJyZW50KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVPYnNlcnZlciA9IGVudGl0aWVzID0+IHtcbiAgICBjb25zdCB5ID0gZW50aXRpZXNbMF0uYm91bmRpbmdDbGllbnRSZWN0Lnk7XG4gICAgaWYgKHRoaXMucHJldlkgPiB5KSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fZ2V0T3B0aW9ucyh0aGlzLnBhZ2UpO1xuICAgICAgaWYgKG9wdGlvbnMpIHRoaXMuc2V0U3RhdGUoe29wdGlvbnN9KTtcbiAgICB9XG4gICAgdGhpcy5wcmV2WSA9IHk7XG4gIH07XG5cbiAgX2dldE9wdGlvbnMocGFnZSkge1xuICAgIGlmICghdGhpcy5wcm9wcy5vcHRpb25zKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgbiA9IHRoaXMucHJvcHMub3B0aW9ucy5sZW5ndGg7XG4gICAgaWYgKG4gPT09IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3Qgc3RhcnQgPSBwYWdlICogdGhpcy5pbml0TnVtYmVyT2ZPcHRpb25zO1xuICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgdGhpcy5pbml0TnVtYmVyT2ZPcHRpb25zID4gbiA/IG4gOiBzdGFydCArIHRoaXMuaW5pdE51bWJlck9mT3B0aW9ucztcblxuICAgIGlmIChzdGFydCA8IGVuZCAmJiBlbmQgPD0gbikge1xuICAgICAgdGhpcy5wYWdlID0gcGFnZSArIDE7XG4gICAgICAvLyBpbiBjYXNlIG9mIHVzZXIgc2VhcmNoaW5nLCBwcm9wcy5vcHRpb25zIHdpbGwgYmUgdXBkYXRlZFxuICAgICAgLy8gc28gXCJwYWdlXCIgdmFsdWUgd2lsbCBiZSBzZXQgdG8gMCBhbmQgcHJldmlvdXMgc3RhdGUub3B0aW9ucyB3aWxsIGJlIGRpc2NhcmRlZFxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4uKHBhZ2UgPiAwID8gdGhpcy5zdGF0ZS5vcHRpb25zIHx8IFtdIDogW10pLFxuICAgICAgICAuLi50aGlzLnByb3BzLm9wdGlvbnMuc2xpY2Uoc3RhcnQsIGVuZClcbiAgICAgIF07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBfb25DbGljayhyZXN1bHQsIGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAvLyBvbmx5IHdvcmsgd2hlbiBsZWZ0IGlzIGNsaWNrZWRcbiAgICBpZiAoKGV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nICYmIGV2ZW50LmJ1dHRvbiA9PT0gTEVGVF9CVVRUT04pIHx8IGV2ZW50LnR5cGUgPT09ICdjbGljaycpIHtcbiAgICAgIHRoaXMucHJvcHMub25PcHRpb25TZWxlY3RlZD8uKHJlc3VsdCwgZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBmaXhlZE9wdGlvbnMsXG4gICAgICBsaWdodCxcbiAgICAgIGFsbG93Q3VzdG9tVmFsdWVzID0gMCxcbiAgICAgIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50OiBDdXN0b21MaXN0SXRlbUNvbXBvbmVudCA9IExpc3RJdGVtXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge2Rpc3BsYXlPcHRpb246IGRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheX0gPSB0aGlzLnByb3BzO1xuXG4gICAgLy8gRG9uJ3QgcmVuZGVyIGlmIHRoZXJlIGFyZSBubyBvcHRpb25zIHRvIGRpc3BsYXlcbiAgICBpZiAoIXRoaXMucHJvcHMub3B0aW9ucz8ubGVuZ3RoICYmIGFsbG93Q3VzdG9tVmFsdWVzIDw9IDApIHtcbiAgICAgIHJldHVybiA8ZGl2IC8+O1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlT2Zmc2V0ID0gQXJyYXkuaXNBcnJheShmaXhlZE9wdGlvbnMpID8gZml4ZWRPcHRpb25zLmxlbmd0aCA6IDA7XG5cbiAgICAvLyBGb3Igc29tZSByZWFzb24gb25DbGljayBpcyBub3QgZmlyZWQgd2hlbiBjbGlja2VkIG9uIGFuIG9wdGlvblxuICAgIC8vIG9uTW91c2VEb3duIGlzIHVzZWQgaGVyZSBhcyBhIHdvcmthcm91bmQgb2YgIzIwNSBhbmQgb3RoZXJcbiAgICByZXR1cm4gKFxuICAgICAgPERyb3Bkb3duTGlzdFdyYXBwZXIgY2xhc3NOYW1lPXtjbGFzc0xpc3QubGlzdH0gbGlnaHQ9e2xpZ2h0fT5cbiAgICAgICAge3RoaXMucHJvcHMuY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudCA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc0xpc3QubGlzdEhlYWRlciwgdGhpcy5wcm9wcy5jdXN0b21DbGFzc2VzPy5saXN0SGVhZGVyKX0+XG4gICAgICAgICAgICA8dGhpcy5wcm9wcy5jdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgIHt2YWx1ZU9mZnNldCA+IDAgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTGlzdC5saXN0U2VjdGlvbn0+XG4gICAgICAgICAgICB7Zml4ZWRPcHRpb25zPy5tYXAoKHZhbHVlLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3NMaXN0Lmxpc3RJdGVtLCB7XG4gICAgICAgICAgICAgICAgICBob3ZlcjogdGhpcy5wcm9wcy5zZWxlY3Rpb25JbmRleCA9PT0gaSxcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0xpc3QubGlzdEl0ZW1GaXhlZF06IHRydWVcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICBrZXk9e2Ake2Rpc3BsYXkodmFsdWUpfV8ke2l9YH1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17ZSA9PiB0aGlzLl9vbkNsaWNrKHZhbHVlLCBlKX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtlID0+IHRoaXMuX29uQ2xpY2sodmFsdWUsIGUpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEN1c3RvbUxpc3RJdGVtQ29tcG9uZW50IHZhbHVlPXt2YWx1ZX0gZGlzcGxheU9wdGlvbj17ZGlzcGxheX0gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAge3RoaXMuc3RhdGUub3B0aW9ucz8ubWFwKCh2YWx1ZSwgaSkgPT4gKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc0xpc3QubGlzdEl0ZW0sIHtcbiAgICAgICAgICAgICAgaG92ZXI6IHRoaXMucHJvcHMuc2VsZWN0aW9uSW5kZXggPT09IGkgKyB2YWx1ZU9mZnNldFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICBrZXk9e2Ake2Rpc3BsYXkodmFsdWUpfV8ke2l9YH1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+IHRoaXMuX29uQ2xpY2sodmFsdWUsIGUpfVxuICAgICAgICAgICAgb25DbGljaz17ZSA9PiB0aGlzLl9vbkNsaWNrKHZhbHVlLCBlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Q3VzdG9tTGlzdEl0ZW1Db21wb25lbnQgdmFsdWU9e3ZhbHVlfSBkaXNwbGF5T3B0aW9uPXtkaXNwbGF5fSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApKX1cblxuICAgICAgICA8RHJvcGRvd25Gb290ZXJXcmFwcGVyIHJlZj17dGhpcy5sb2FkaW5nUmVmfSAvPlxuICAgICAgPC9Ecm9wZG93bkxpc3RXcmFwcGVyPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==
295
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vaXRlbS1zZWxlY3Rvci9kcm9wZG93bi1saXN0LnRzeCJdLCJuYW1lcyI6WyJMRUZUX0JVVFRPTiIsImNsYXNzTGlzdCIsImxpc3QiLCJsaXN0SGVhZGVyIiwibGlzdFNlY3Rpb24iLCJsaXN0SXRlbSIsImxpc3RJdGVtQW5jaG9yIiwibGlzdEl0ZW1GaXhlZCIsImRlZmF1bHREaXNwbGF5IiwiZCIsIkxpc3RJdGVtIiwidmFsdWUiLCJkaXNwbGF5T3B0aW9uIiwiZGlzYWJsZWQiLCJsaWdodCIsImRpc3BsYXlWYWx1ZSIsIkRyb3Bkb3duTGlzdFdyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsInRoZW1lIiwiZHJvcGRvd25MaXN0QmdkTFQiLCJkcm9wZG93bkxpc3RCZ2QiLCJkcm9wZG93bkxpc3RCb3JkZXJUb3BMVCIsImRyb3Bkb3duTGlzdEJvcmRlclRvcCIsImRyb3Bkb3duTGlzdExUIiwiZHJvcGRvd25MaXN0IiwiRHJvcGRvd25Gb290ZXJXcmFwcGVyIiwiRHJvcGRvd25MaXN0IiwiZW50aXRpZXMiLCJ5IiwiYm91bmRpbmdDbGllbnRSZWN0IiwicHJldlkiLCJvcHRpb25zIiwiX2dldE9wdGlvbnMiLCJwYWdlIiwic2V0U3RhdGUiLCJzdGF0ZSIsImluaXROdW1iZXJPZk9wdGlvbnMiLCJJTklUX0ZJTFRFUl9JVEVNU19JTl9EUk9QRE9XTiIsImxvYWRpbmdSZWYiLCJSZWFjdCIsImNyZWF0ZVJlZiIsImRpdk9wdGlvbnMiLCJyb290Iiwicm9vdE1hcmdpbiIsInRocmVzaG9sZCIsImN1cnJlbnQiLCJvYnNlcnZlciIsIkludGVyc2VjdGlvbk9ic2VydmVyIiwiaGFuZGxlT2JzZXJ2ZXIiLCJvYnNlcnZlIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwic25hcHNob3QiLCJ1bm9ic2VydmUiLCJuIiwibGVuZ3RoIiwic3RhcnQiLCJlbmQiLCJzbGljZSIsInJlc3VsdCIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJ0eXBlIiwiYnV0dG9uIiwib25PcHRpb25TZWxlY3RlZCIsImZpeGVkT3B0aW9ucyIsImFsbG93Q3VzdG9tVmFsdWVzIiwiY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQiLCJDdXN0b21MaXN0SXRlbUNvbXBvbmVudCIsImRpc3BsYXkiLCJ2YWx1ZU9mZnNldCIsIkFycmF5IiwiaXNBcnJheSIsImN1c3RvbUNsYXNzZXMiLCJyZXN1bHRzIiwiY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudCIsIm1hcCIsImkiLCJob3ZlciIsInNlbGVjdGlvbkluZGV4IiwiZSIsIl9vbkNsaWNrIiwiQ29tcG9uZW50IiwiY3VzdG9tVmFsdWVzIiwiZGVmYXVsdENsYXNzTmFtZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBRUEsSUFBTUEsV0FBVyxHQUFHLENBQXBCO0FBRU8sSUFBTUMsU0FBUyxHQUFHO0FBQ3ZCQyxFQUFBQSxJQUFJLEVBQUUsZUFEaUI7QUFFdkJDLEVBQUFBLFVBQVUsRUFBRSxjQUZXO0FBR3ZCQyxFQUFBQSxXQUFXLEVBQUUsZUFIVTtBQUl2QkMsRUFBQUEsUUFBUSxFQUFFLFlBSmE7QUFLdkJDLEVBQUFBLGNBQWMsRUFBRSxvQkFMTztBQU12QkMsRUFBQUEsYUFBYSxFQUFFO0FBTlEsQ0FBbEI7OztBQVNQLElBQU1DLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBQUMsQ0FBQztBQUFBLFNBQUlBLENBQUo7QUFBQSxDQUF4Qjs7QUFDTyxJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxPQUE4RDtBQUFBLE1BQTVEQyxLQUE0RCxRQUE1REEsS0FBNEQ7QUFBQSxnQ0FBckRDLGFBQXFEO0FBQUEsTUFBckRBLGFBQXFELG1DQUFyQ0osY0FBcUM7QUFBQSxNQUFyQkssUUFBcUIsUUFBckJBLFFBQXFCO0FBQUEsTUFBWEMsS0FBVyxRQUFYQSxLQUFXO0FBQ3BGLE1BQU1DLFlBQVksR0FBR0gsYUFBYSxD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LEVBQUFBLHVCQUF1QixFQUFFM0QsUUFGTDtBQUdwQm1FLEVBQUFBLHlCQUF5QixFQUFFLElBSFA7QUFJcEJULEVBQUFBLGlCQUFpQixFQUFFLENBSkM7QUFLcEJpQixFQUFBQSxZQUFZLEVBQUUsRUFMTTtBQU1wQnpFLEVBQUFBLGFBQWEsRUFBRUosY0FOSztBQU9wQjBELEVBQUFBLGdCQUFnQixFQUFFLDRCQUFNLENBQUUsQ0FQTjtBQVFwQm9CLEVBQUFBLGlCQUFpQixFQUFFLElBUkM7QUFTcEJMLEVBQUFBLGNBQWMsRUFBRTtBQVRJLEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIEVsZW1lbnRUeXBlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtJTklUX0ZJTFRFUl9JVEVNU19JTl9EUk9QRE9XTn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5jb25zdCBMRUZUX0JVVFRPTiA9IDA7XG5cbmV4cG9ydCBjb25zdCBjbGFzc0xpc3QgPSB7XG4gIGxpc3Q6ICdsaXN0LXNlbGVjdG9yJyxcbiAgbGlzdEhlYWRlcjogJ2xpc3RfX2hlYWRlcicsXG4gIGxpc3RTZWN0aW9uOiAnbGlzdF9fc2VjdGlvbicsXG4gIGxpc3RJdGVtOiAnbGlzdF9faXRlbScsXG4gIGxpc3RJdGVtQW5jaG9yOiAnbGlzdF9faXRlbV9fYW5jaG9yJyxcbiAgbGlzdEl0ZW1GaXhlZDogJ2xpc3RfX2l0ZW1fX2ZpeGVkJ1xufTtcblxuY29uc3QgZGVmYXVsdERpc3BsYXkgPSBkID0+IGQ7XG5leHBvcnQgY29uc3QgTGlzdEl0ZW0gPSAoe3ZhbHVlLCBkaXNwbGF5T3B0aW9uID0gZGVmYXVsdERpc3BsYXksIGRpc2FibGVkLCBsaWdodH0pID0+IHtcbiAgY29uc3QgZGlzcGxheVZhbHVlID0gZGlzcGxheU9wdGlvbih2YWx1ZSk7XG4gIHJldHVybiAoXG4gICAgPHNwYW4gdGl0bGU9e2Rpc3BsYXlWYWx1ZX0gY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzTGlzdC5saXN0SXRlbUFuY2hvciwge2Rpc2FibGVkfSl9PlxuICAgICAge2Rpc3BsYXlWYWx1ZX1cbiAgICA8L3NwYW4+XG4gICk7XG59O1xuXG5pbnRlcmZhY2UgRHJvcGRvd25MaXN0V3JhcHBlclByb3BzIHtcbiAgbGlnaHQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBEcm9wZG93bkxpc3RXcmFwcGVyID0gc3R5bGVkLmRpdjxEcm9wZG93bkxpc3RXcmFwcGVyUHJvcHM+YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+XG4gICAgcHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCZ2RMVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJnZH07XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT5cbiAgICAgIHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0Qm9yZGVyVG9wTFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCb3JkZXJUb3B9O1xuICAke3Byb3BzID0+IChwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdExUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0KX07XG5gO1xuXG5jb25zdCBEcm9wZG93bkZvb3RlcldyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBoZWlnaHQ6ICcwcHgnO1xuYDtcblxuaW50ZXJmYWNlIERyb3Bkb3duTGlzdFByb3BzIHtcbiAgb3B0aW9ucz86IGFueVtdO1xuICBhbGxvd0N1c3RvbVZhbHVlcz86IG51bWJlcjtcbiAgY3VzdG9tQ2xhc3Nlcz86IHtsaXN0SGVhZGVyPzogc3RyaW5nOyBsaXN0SXRlbT86IHN0cmluZzsgcmVzdWx0cz86IHN0cmluZ307XG4gIGN1c3RvbVZhbHVlcz86IGFueVtdO1xuICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudD86IEVsZW1lbnRUeXBlO1xuICBjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50PzogRWxlbWVudFR5cGU7XG4gIHNlbGVjdGlvbkluZGV4PzogbnVtYmVyO1xuICBvbk9wdGlvblNlbGVjdGVkPzogRnVuY3Rpb247XG4gIGRpc3BsYXlPcHRpb24/OiBGdW5jdGlvbjtcbiAgZGVmYXVsdENsYXNzTmFtZXM/OiBib29sZWFuO1xuICBhcmVSZXN1bHRzVHJ1bmNhdGVkPzogYm9vbGVhbjtcbiAgcmVzdWx0c1RydW5jYXRlZE1lc3NhZ2U/OiBzdHJpbmc7XG4gIGxpc3RJdGVtQ29tcG9uZW50PzogRnVuY3Rpb247XG4gIGxpZ2h0PzogYm9vbGVhbjtcbiAgZml4ZWRPcHRpb25zPzogYW55W107XG59XG5cbmludGVyZmFjZSBEcm9wZG93bkxpc3RTdGF0ZSB7XG4gIG9wdGlvbnM6IEFycmF5PGFueT4gfCBudWxsO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcm9wZG93bkxpc3QgZXh0ZW5kcyBDb21wb25lbnQ8RHJvcGRvd25MaXN0UHJvcHMsIERyb3Bkb3duTGlzdFN0YXRlPiB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgY3VzdG9tQ2xhc3Nlczoge30sXG4gICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ6IExpc3RJdGVtLFxuICAgIGN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQ6IG51bGwsXG4gICAgYWxsb3dDdXN0b21WYWx1ZXM6IDAsXG4gICAgY3VzdG9tVmFsdWVzOiBbXSxcbiAgICBkaXNwbGF5T3B0aW9uOiBkZWZhdWx0RGlzcGxheSxcbiAgICBvbk9wdGlvblNlbGVjdGVkOiAoKSA9PiB7fSxcbiAgICBkZWZhdWx0Q2xhc3NOYW1lczogdHJ1ZSxcbiAgICBzZWxlY3Rpb25JbmRleDogbnVsbFxuICB9O1xuXG4gIGluaXROdW1iZXJPZk9wdGlvbnM6IG51bWJlcjtcbiAgcGFnZTogbnVtYmVyO1xuICBwcmV2WTogbnVtYmVyO1xuICBsb2FkaW5nUmVmOiBSZWFjdC5SZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+O1xuICBvYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge29wdGlvbnM6IFtdfTtcbiAgICB0aGlzLmluaXROdW1iZXJPZk9wdGlvbnMgPSBJTklUX0ZJTFRFUl9JVEVNU19JTl9EUk9QRE9XTjtcbiAgICB0aGlzLnBhZ2UgPSAwO1xuICAgIHRoaXMucHJldlkgPSAwO1xuICAgIHRoaXMubG9hZGluZ1JlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX2dldE9wdGlvbnModGhpcy5wYWdlKTtcbiAgICB0aGlzLnNldFN0YXRlKHtvcHRpb25zfSk7XG5cbiAgICBjb25zdCBkaXZPcHRpb25zID0ge1xuICAgICAgcm9vdDogbnVsbCxcbiAgICAgIHJvb3RNYXJnaW46ICcwJScsXG4gICAgICB0aHJlc2hvbGQ6IDEuMFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5sb2FkaW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIodGhpcy5oYW5kbGVPYnNlcnZlciwgZGl2T3B0aW9ucyk7XG4gICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5sb2FkaW5nUmVmLmN1cnJlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGdldFNuYXBzaG90QmVmb3JlVXBkYXRlKHByZXZQcm9wczogRHJvcGRvd25MaXN0UHJvcHMsIHByZXZTdGF0ZTogRHJvcGRvd25MaXN0U3RhdGUpIHtcbiAgICBpZiAocHJldlByb3BzLm9wdGlvbnMgIT09IHRoaXMucHJvcHMub3B0aW9ucykge1xuICAgICAgLy8gY2hlY2sgaWYgdXNlciBzZWFyY2hpbmcsIHJlc2V0IHN0YXRlLm9wdGlvbnMgYXQgdGhlIGZpcnN0IHRpbWVcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9nZXRPcHRpb25zKDApO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7b3B0aW9uc30pO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIHByZXZlbnQgY29uc29sZSB3YXJuaW5nOiBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSgpIHNob3VsZCBiZSB1c2VkIHdpdGggY29tcG9uZW50RGlkVXBkYXRlKCkuXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSwgc25hcHNob3QpIHt9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgaWYgKHRoaXMubG9hZGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICB0aGlzLm9ic2VydmVyPy51bm9ic2VydmUodGhpcy5sb2FkaW5nUmVmLmN1cnJlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU9ic2VydmVyID0gZW50aXRpZXMgPT4ge1xuICAgIGNvbnN0IHkgPSBlbnRpdGllc1swXS5ib3VuZGluZ0NsaWVudFJlY3QueTtcbiAgICBpZiAodGhpcy5wcmV2WSA+IHkpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9nZXRPcHRpb25zKHRoaXMucGFnZSk7XG4gICAgICBpZiAob3B0aW9ucykgdGhpcy5zZXRTdGF0ZSh7b3B0aW9uc30pO1xuICAgIH1cbiAgICB0aGlzLnByZXZZID0geTtcbiAgfTtcblxuICBfZ2V0T3B0aW9ucyhwYWdlKSB7XG4gICAgaWYgKCF0aGlzLnByb3BzLm9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBuID0gdGhpcy5wcm9wcy5vcHRpb25zLmxlbmd0aDtcbiAgICBpZiAobiA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBzdGFydCA9IHBhZ2UgKiB0aGlzLmluaXROdW1iZXJPZk9wdGlvbnM7XG4gICAgY29uc3QgZW5kID0gc3RhcnQgKyB0aGlzLmluaXROdW1iZXJPZk9wdGlvbnMgPiBuID8gbiA6IHN0YXJ0ICsgdGhpcy5pbml0TnVtYmVyT2ZPcHRpb25zO1xuXG4gICAgaWYgKHN0YXJ0IDwgZW5kICYmIGVuZCA8PSBuKSB7XG4gICAgICB0aGlzLnBhZ2UgPSBwYWdlICsgMTtcbiAgICAgIC8vIGluIGNhc2Ugb2YgdXNlciBzZWFyY2hpbmcsIHByb3BzLm9wdGlvbnMgd2lsbCBiZSB1cGRhdGVkXG4gICAgICAvLyBzbyBcInBhZ2VcIiB2YWx1ZSB3aWxsIGJlIHNldCB0byAwIGFuZCBwcmV2aW91cyBzdGF0ZS5vcHRpb25zIHdpbGwgYmUgZGlzY2FyZGVkXG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi4ocGFnZSA+IDAgPyB0aGlzLnN0YXRlLm9wdGlvbnMgfHwgW10gOiBbXSksXG4gICAgICAgIC4uLnRoaXMucHJvcHMub3B0aW9ucy5zbGljZShzdGFydCwgZW5kKVxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIF9vbkNsaWNrKHJlc3VsdCwgZXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIC8vIG9ubHkgd29yayB3aGVuIGxlZnQgaXMgY2xpY2tlZFxuICAgIGlmICgoZXZlbnQudHlwZSA9PT0gJ21vdXNlZG93bicgJiYgZXZlbnQuYnV0dG9uID09PSBMRUZUX0JVVFRPTikgfHwgZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgdGhpcy5wcm9wcy5vbk9wdGlvblNlbGVjdGVkPy4ocmVzdWx0LCBldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGZpeGVkT3B0aW9ucyxcbiAgICAgIGxpZ2h0LFxuICAgICAgYWxsb3dDdXN0b21WYWx1ZXMgPSAwLFxuICAgICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ6IEN1c3RvbUxpc3RJdGVtQ29tcG9uZW50ID0gTGlzdEl0ZW1cbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7ZGlzcGxheU9wdGlvbjogZGlzcGxheSA9IGRlZmF1bHREaXNwbGF5fSA9IHRoaXMucHJvcHM7XG5cbiAgICAvLyBEb24ndCByZW5kZXIgaWYgdGhlcmUgYXJlIG5vIG9wdGlvbnMgdG8gZGlzcGxheVxuICAgIGlmICghdGhpcy5wcm9wcy5vcHRpb25zPy5sZW5ndGggJiYgYWxsb3dDdXN0b21WYWx1ZXMgPD0gMCkge1xuICAgICAgcmV0dXJuIDxkaXYgLz47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVPZmZzZXQgPSBBcnJheS5pc0FycmF5KGZpeGVkT3B0aW9ucykgPyBmaXhlZE9wdGlvbnMubGVuZ3RoIDogMDtcblxuICAgIC8vIEZvciBzb21lIHJlYXNvbiBvbkNsaWNrIGlzIG5vdCBmaXJlZCB3aGVuIGNsaWNrZWQgb24gYW4gb3B0aW9uXG4gICAgLy8gb25Nb3VzZURvd24gaXMgdXNlZCBoZXJlIGFzIGEgd29ya2Fyb3VuZCBvZiAjMjA1IGFuZCBvdGhlclxuICAgIHJldHVybiAoXG4gICAgICA8RHJvcGRvd25MaXN0V3JhcHBlclxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3NMaXN0Lmxpc3QsIHRoaXMucHJvcHMuY3VzdG9tQ2xhc3Nlcz8ucmVzdWx0cyl9XG4gICAgICAgIGxpZ2h0PXtsaWdodH1cbiAgICAgID5cbiAgICAgICAge3RoaXMucHJvcHMuY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudCA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc0xpc3QubGlzdEhlYWRlciwgdGhpcy5wcm9wcy5jdXN0b21DbGFzc2VzPy5saXN0SGVhZGVyKX0+XG4gICAgICAgICAgICA8dGhpcy5wcm9wcy5jdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgIHt2YWx1ZU9mZnNldCA+IDAgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTGlzdC5saXN0U2VjdGlvbn0+XG4gICAgICAgICAgICB7Zml4ZWRPcHRpb25zPy5tYXAoKHZhbHVlLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgICAgICAgICAgICBjbGFzc0xpc3QubGlzdEl0ZW0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGhvdmVyOiB0aGlzLnByb3BzLnNlbGVjdGlvbkluZGV4ID09PSBpLFxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NMaXN0Lmxpc3RJdGVtRml4ZWRdOiB0cnVlXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5jdXN0b21DbGFzc2VzPy5saXN0SXRlbVxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAga2V5PXtgJHtkaXNwbGF5KHZhbHVlKX1fJHtpfWB9XG4gICAgICAgICAgICAgICAgb25Nb3VzZURvd249e2UgPT4gdGhpcy5fb25DbGljayh2YWx1ZSwgZSl9XG4gICAgICAgICAgICAgICAgb25DbGljaz17ZSA9PiB0aGlzLl9vbkNsaWNrKHZhbHVlLCBlKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDdXN0b21MaXN0SXRlbUNvbXBvbmVudCB2YWx1ZT17dmFsdWV9IGRpc3BsYXlPcHRpb249e2Rpc3BsYXl9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgIHt0aGlzLnN0YXRlLm9wdGlvbnM/Lm1hcCgodmFsdWUsIGkpID0+IChcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgICAgICAgIGNsYXNzTGlzdC5saXN0SXRlbSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGhvdmVyOiB0aGlzLnByb3BzLnNlbGVjdGlvbkluZGV4ID09PSBpICsgdmFsdWVPZmZzZXRcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy5jdXN0b21DbGFzc2VzPy5saXN0SXRlbVxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIGtleT17YCR7ZGlzcGxheSh2YWx1ZSl9XyR7aX1gfVxuICAgICAgICAgICAgb25Nb3VzZURvd249e2UgPT4gdGhpcy5fb25DbGljayh2YWx1ZSwgZSl9XG4gICAgICAgICAgICBvbkNsaWNrPXtlID0+IHRoaXMuX29uQ2xpY2sodmFsdWUsIGUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxDdXN0b21MaXN0SXRlbUNvbXBvbmVudCB2YWx1ZT17dmFsdWV9IGRpc3BsYXlPcHRpb249e2Rpc3BsYXl9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkpfVxuXG4gICAgICAgIDxEcm9wZG93bkZvb3RlcldyYXBwZXIgcmVmPXt0aGlzLmxvYWRpbmdSZWZ9IC8+XG4gICAgICA8L0Ryb3Bkb3duTGlzdFdyYXBwZXI+XG4gICAgKTtcbiAgfVxufVxuIl19
@@ -25,17 +25,20 @@ export declare type ItemSelectorProps = {
25
25
  isError?: boolean;
26
26
  multiSelect?: boolean;
27
27
  inputTheme?: string;
28
+ onOpen?: () => void;
28
29
  size?: string;
29
30
  onBlur?: () => void;
30
31
  placeholder?: string;
31
32
  closeOnSelect?: boolean;
32
33
  typeaheadPlaceholder?: string;
34
+ DropDownWrapperComponent?: ComponentType<any> | null;
33
35
  DropdownHeaderComponent?: ComponentType<any> | null;
34
36
  DropDownRenderComponent?: ComponentType<any>;
35
37
  DropDownLineItemRenderComponent?: ComponentType<any>;
36
38
  CustomChickletComponent?: ComponentType<any>;
37
39
  intl: IntlShape;
38
40
  className?: string;
41
+ reorderItems?: (newOrder: any) => void;
39
42
  showDropdownOnMount?: boolean;
40
43
  };
41
44
  declare const _default: React.FC<import("react-intl").WithIntlProps<ItemSelectorProps>> & {
@@ -1,23 +1,3 @@
1
- // Copyright (c) 2023 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
20
-
21
1
  "use strict";
22
2
 
23
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -214,6 +194,10 @@ var ItemSelectorUnmemoized = /*#__PURE__*/function (_Component) {
214
194
  e.stopPropagation();
215
195
 
216
196
  if (!_this.props.disabled) {
197
+ if (_this.props.onOpen) {
198
+ _this.props.onOpen();
199
+ }
200
+
217
201
  _this.setState({
218
202
  showTypeahead: true
219
203
  });
@@ -248,12 +232,13 @@ var ItemSelectorUnmemoized = /*#__PURE__*/function (_Component) {
248
232
  var _this$props$placement = this.props.placement,
249
233
  placement = _this$props$placement === void 0 ? 'bottom' : _this$props$placement;
250
234
  var dimensions = this.state.dimensions;
235
+ var DropDownWrapperComponent = this.props.DropDownWrapperComponent;
251
236
  return /*#__PURE__*/_react["default"].createElement(_portaled["default"], {
252
237
  left: 0,
253
238
  top: 0,
254
239
  isOpened: this.state.showTypeahead,
255
240
  onClose: this._hideTypeahead
256
- }, /*#__PURE__*/_react["default"].createElement(DropdownWrapper, {
241
+ }, /*#__PURE__*/_react["default"].createElement(DropDownWrapperComponent, {
257
242
  placement: placement,
258
243
  width: dimensions === null || dimensions === void 0 ? void 0 : dimensions.width
259
244
  }, /*#__PURE__*/_react["default"].createElement(_typeahead["default"], {
@@ -318,6 +303,7 @@ var ItemSelectorUnmemoized = /*#__PURE__*/function (_Component) {
318
303
  selectedItems: (0, _utils.toArray)(this.props.selectedItems),
319
304
  placeholder: this.props.placeholder,
320
305
  removeItem: this._removeItem,
306
+ reorderItems: this.props.reorderItems,
321
307
  CustomChickletComponent: this.props.CustomChickletComponent,
322
308
  inputTheme: inputTheme
323
309
  })) : /*#__PURE__*/_react["default"].createElement(StyledDropdownSelect, dropdownSelectProps, /*#__PURE__*/_react["default"].createElement(DropdownSelectValue, {
@@ -350,7 +336,9 @@ var ItemSelectorUnmemoized = /*#__PURE__*/function (_Component) {
350
336
  closeOnSelect: true,
351
337
  searchable: true,
352
338
  DropDownRenderComponent: _dropdownList["default"],
353
- DropDownLineItemRenderComponent: _dropdownList.ListItem
339
+ DropDownLineItemRenderComponent: _dropdownList.ListItem,
340
+ DropDownWrapperComponent: DropdownWrapper,
341
+ reorderItems: undefined
354
342
  });
355
343
 
356
344
  var ItemSelector = /*#__PURE__*/_react["default"].memo(ItemSelectorUnmemoized);
@@ -360,4 +348,4 @@ ItemSelector.displayName = 'ItemSelector';
360
348
  var _default = (0, _reactIntl.injectIntl)(ItemSelectorUnmemoized);
361
349
 
362
350
  exports["default"] = _default;
363
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vaXRlbS1zZWxlY3Rvci9pdGVtLXNlbGVjdG9yLnRzeCJdLCJuYW1lcyI6WyJTdHlsZWREcm9wZG93blNlbGVjdCIsInN0eWxlZCIsImRpdiIsImF0dHJzIiwicHJvcHMiLCJjbGFzc05hbWUiLCJpbnB1dFRoZW1lIiwidGhlbWUiLCJzZWNvbmRhcnlJbnB1dCIsImlucHV0TFQiLCJpbnB1dCIsInNpemUiLCJpbnB1dEJveEhlaWdodFNtYWxsIiwiaW5wdXRCb3hIZWlnaHQiLCJkcm9wZG93bkxpc3RBbmNob3IiLCJEcm9wZG93blNlbGVjdFZhbHVlIiwic3BhbiIsImhhc1BsYWNlaG9sZGVyIiwic2VsZWN0Q29sb3JQbGFjZUhvbGRlckxUIiwic2VsZWN0Q29sb3JQbGFjZUhvbGRlciIsInNlbGVjdENvbG9yTFQiLCJzZWxlY3RDb2xvciIsImRyb3Bkb3duTGlzdEl0ZW1MVCIsImRyb3Bkb3duTGlzdEl0ZW0iLCJkcm9wZG93bkxpc3RBbmNob3JMVCIsIkRyb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQiLCJzdWJ0ZXh0Q29sb3IiLCJ0ZXh0Q29sb3IiLCJEcm9wZG93bldyYXBwZXIiLCJkcm9wZG93bldyYXBwZXJaIiwid2lkdGgiLCJJdGVtU2VsZWN0b3JVbm1lbW9pemVkIiwic2hvd1R5cGVhaGVhZCIsImRpbWVuc2lvbnMiLCJfaGlkZVR5cGVhaGVhZCIsInNldFN0YXRlIiwiX29uQmx1ciIsIm9uQmx1ciIsIml0ZW0iLCJlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJtdWx0aVNlbGVjdGVkSXRlbXMiLCJzZWxlY3RlZEl0ZW1zIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJ0IiwiaXRlbXMiLCJzbGljZSIsImxlbmd0aCIsIm9uQ2hhbmdlIiwiY2xvc2VPblNlbGVjdCIsImdldFZhbHVlIiwiQWNjZXNzb3IiLCJnZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yIiwiZ2V0T3B0aW9uVmFsdWUiLCJkaXNwbGF5T3B0aW9uIiwicHJldmlvdXNTZWxlY3RlZCIsIm11bHRpU2VsZWN0IiwiY29uY2F0IiwiZGlzYWJsZWQiLCJzaG93RHJvcGRvd25Pbk1vdW50Iiwicm9vdCIsImN1cnJlbnQiLCJIVE1MRWxlbWVudCIsIl9oYW5kbGVSZXNpemUiLCJpbnRsIiwicGxhY2VtZW50Iiwic3RhdGUiLCJyZXN1bHRzIiwibGlzdEl0ZW0iLCJsaXN0QW5jaG9yIiwib3B0aW9ucyIsImZpbHRlck9wdGlvbiIsImZpeGVkT3B0aW9ucyIsInR5cGVhaGVhZFBsYWNlaG9sZGVyIiwiZm9ybWF0TWVzc2FnZSIsImlkIiwiX3NlbGVjdEl0ZW0iLCJEcm9wRG93blJlbmRlckNvbXBvbmVudCIsIkRyb3Bkb3duSGVhZGVyQ29tcG9uZW50IiwiRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudCIsInNlYXJjaGFibGUiLCJzZWFyY2hPcHRpb25zIiwic2VsZWN0ZWQiLCJoYXNWYWx1ZSIsIkxpc3RJdGVtIiwiZHJvcGRvd25TZWxlY3RQcm9wcyIsImFjdGl2ZSIsIm9uQ2xpY2siLCJfc2hvd1R5cGVhaGVhZCIsImVycm9yIiwiaXNFcnJvciIsInBvc2l0aW9uIiwicGxhY2Vob2xkZXIiLCJfcmVtb3ZlSXRlbSIsIkN1c3RvbUNoaWNrbGV0Q29tcG9uZW50IiwiZXJhc2FibGUiLCJfb25FcmFzZSIsInNob3dBcnJvdyIsIl9yZW5kZXJEcm9wZG93biIsIkNvbXBvbmVudCIsIkRyb3Bkb3duTGlzdCIsIkl0ZW1TZWxlY3RvciIsIlJlYWN0IiwibWVtbyIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OztBQVFPLElBQU1BLG9CQUFvQixHQUFHQyw2QkFBT0MsR0FBUCxDQUFXQyxLQUFYLENBQWlCLFVBQUFDLEtBQUs7QUFB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Qzs7QUFpT3hCLElBQU1pQixZQUFZLGdCQUFHQyxrQkFBTUMsSUFBTixDQUFXMUUsc0JBQVgsQ0FBckI7O0FBQ0F3RSxZQUFZLENBQUNHLFdBQWIsR0FBMkIsY0FBM0I7O2VBRWUsMkJBQVczRSxzQkFBWCxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWYsIENvbXBvbmVudFR5cGUsIE1vdXNlRXZlbnRIYW5kbGVyLCBSZWZPYmplY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHVuaXFCeSBmcm9tICdsb2Rhc2gudW5pcWJ5JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgQWNjZXNzb3IgZnJvbSAnLi9hY2Nlc3Nvcic7XG5pbXBvcnQgQ2hpY2tsZXRlZElucHV0IGZyb20gJy4vY2hpY2tsZXRlZC1pbnB1dCc7XG5pbXBvcnQgVHlwZWFoZWFkIGZyb20gJy4vdHlwZWFoZWFkJztcbmltcG9ydCB7RGVsZXRlLCBBcnJvd0Rvd259IGZyb20gJy4uL2ljb25zJztcbmltcG9ydCBEcm9wZG93bkxpc3QsIHtMaXN0SXRlbX0gZnJvbSAnLi9kcm9wZG93bi1saXN0JztcbmltcG9ydCBQb3J0YWxlZCBmcm9tICcuLi8uLi9jb21tb24vcG9ydGFsZWQnO1xuaW1wb3J0IHt0b0FycmF5LCBvYnNlcnZlRGltZW5zaW9ucywgdW5vYnNlcnZlRGltZW5zaW9uc30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2luamVjdEludGwsIEludGxTaGFwZX0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcblxuaW50ZXJmYWNlIFN0eWxlZERyb3Bkb3duU2VsZWN0UHJvcHMge1xuICBpbnB1dFRoZW1lPzogc3RyaW5nO1xuICBzaXplPzogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBTdHlsZWREcm9wZG93blNlbGVjdCA9IHN0eWxlZC5kaXYuYXR0cnMocHJvcHMgPT4gKHtcbiAgY2xhc3NOYW1lOiBjbGFzc25hbWVzKCdpdGVtLXNlbGVjdG9yX19kcm9wZG93bicsIHByb3BzLmNsYXNzTmFtZSlcbn0pKTxTdHlsZWREcm9wZG93blNlbGVjdFByb3BzPmBcbiAgJHtwcm9wcyA9PlxuICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdzZWNvbmRhcnknXG4gICAgICA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0XG4gICAgICA6IHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgID8gcHJvcHMudGhlbWUuaW5wdXRMVFxuICAgICAgOiBwcm9wcy50aGVtZS5pbnB1dH07XG5cbiAgaGVpZ2h0OiAke3Byb3BzID0+XG4gICAgcHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJyA/IHByb3BzLnRoZW1lLmlucHV0Qm94SGVpZ2h0U21hbGwgOiBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodH07XG5cbiAgLmxpc3RfX2l0ZW1fX2FuY2hvciB7XG4gICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RBbmNob3J9O1xuICB9XG5gO1xuXG5pbnRlcmZhY2UgRHJvcGRvd25TZWxlY3RWYWx1ZVByb3BzIHtcbiAgaGFzUGxhY2Vob2xkZXI/OiBib29sZWFuO1xuICBpbnB1dFRoZW1lPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmNvbnN0IERyb3Bkb3duU2VsZWN0VmFsdWUgPSBzdHlsZWQuc3BhbjxEcm9wZG93blNlbGVjdFZhbHVlUHJvcHM+YFxuICBjb2xvcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLmhhc1BsYWNlaG9sZGVyICYmIHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgID8gcHJvcHMudGhlbWUuc2VsZWN0Q29sb3JQbGFjZUhvbGRlckxUXG4gICAgICA6IHByb3BzLmhhc1BsYWNlaG9sZGVyXG4gICAgICA/IHByb3BzLnRoZW1lLnNlbGVjdENvbG9yUGxhY2VIb2xkZXJcbiAgICAgIDogcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J1xuICAgICAgPyBwcm9wcy50aGVtZS5zZWxlY3RDb2xvckxUXG4gICAgICA6IHByb3BzLnRoZW1lLnNlbGVjdENvbG9yfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgLmxpc3RfX2l0ZW0ge1xuICAgICR7cHJvcHMgPT5cbiAgICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCcgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RJdGVtTFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RJdGVtfTtcbiAgfVxuXG4gIC5saXN0X19pdGVtX19hbmNob3Ige1xuICAgICR7cHJvcHMgPT5cbiAgICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgICAgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RBbmNob3JMVFxuICAgICAgICA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEFuY2hvcn07XG4gIH1cbmA7XG5cbmNvbnN0IERyb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgZGlzcGxheTogZmxleDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yfTtcblxuICA6aG92ZXIge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIH1cbmA7XG5cbmludGVyZmFjZSBEcm9wZG93bldyYXBwZXJQcm9wcyB7XG4gIHBsYWNlbWVudD86IHN0cmluZztcbiAgd2lkdGg6IG51bWJlcjtcbn1cblxuY29uc3QgRHJvcGRvd25XcmFwcGVyID0gc3R5bGVkLmRpdjxEcm9wZG93bldyYXBwZXJQcm9wcz5gXG4gIGJvcmRlcjogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25XcmFwcGVyWn07XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLndpZHRofXB4O1xuYDtcblxuZXhwb3J0IHR5cGUgSXRlbVNlbGVjdG9yUHJvcHMgPSB7XG4gIHNlbGVjdGVkSXRlbXM/OlxuICAgIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0PlxuICAgIHwgc3RyaW5nXG4gICAgfCBudW1iZXJcbiAgICB8IGJvb2xlYW5cbiAgICB8IG9iamVjdFxuICAgIHwgbnVsbDtcbiAgb3B0aW9uczogUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0PjtcbiAgb25DaGFuZ2U6IChcbiAgICBpdGVtczpcbiAgICAgIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0PlxuICAgICAgfCBzdHJpbmdcbiAgICAgIHwgbnVtYmVyXG4gICAgICB8IGJvb2xlYW5cbiAgICAgIHwgb2JqZWN0XG4gICAgICB8IG51bGxcbiAgKSA9PiB2b2lkO1xuICBmaXhlZE9wdGlvbnM/OiBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgbnVsbDtcbiAgZXJhc2FibGU/OiBib29sZWFuO1xuICBzaG93QXJyb3c/OiBib29sZWFuO1xuICBzZWFyY2hPcHRpb25zPzogKHZhbHVlOiBhbnksIG9wdDogYW55KSA9PiBhbnk7XG4gIHNlYXJjaGFibGU/OiBib29sZWFuO1xuICBkaXNwbGF5T3B0aW9uPzogc3RyaW5nIHwgKChvcHQ6IGFueSkgPT4gYW55KTtcbiAgZ2V0T3B0aW9uVmFsdWU/OiBzdHJpbmcgfCAoKG9wdDogYW55KSA9PiBhbnkpO1xuICBmaWx0ZXJPcHRpb24/OiBzdHJpbmcgfCAoKG9wdDogYW55KSA9PiBhbnkpO1xuICBwbGFjZW1lbnQ/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgaXNFcnJvcj86IGJvb2xlYW47XG4gIG11bHRpU2VsZWN0PzogYm9vbGVhbjtcbiAgaW5wdXRUaGVtZT86IHN0cmluZztcbiAgc2l6ZT86IHN0cmluZztcbiAgb25CbHVyPzogKCkgPT4gdm9pZDtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGNsb3NlT25TZWxlY3Q/OiBib29sZWFuO1xuICB0eXBlYWhlYWRQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgRHJvcGRvd25IZWFkZXJDb21wb25lbnQ/OiBDb21wb25lbnRUeXBlPGFueT4gfCBudWxsO1xuICBEcm9wRG93blJlbmRlckNvbXBvbmVudD86IENvbXBvbmVudFR5cGU8YW55PjtcbiAgRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudD86IENvbXBvbmVudFR5cGU8YW55PjtcbiAgQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQ/OiBDb21wb25lbnRUeXBlPGFueT47XG4gIGludGw6IEludGxTaGFwZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzaG93RHJvcGRvd25Pbk1vdW50PzogYm9vbGVhbjtcbn07XG5cbmNsYXNzIEl0ZW1TZWxlY3RvclVubWVtb2l6ZWQgZXh0ZW5kcyBDb21wb25lbnQ8SXRlbVNlbGVjdG9yUHJvcHM+IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBtdWx0aVNlbGVjdDogdHJ1ZSxcbiAgICBwbGFjZWhvbGRlcjogJ3BsYWNlaG9sZGVyLmVudGVyVmFsdWUnLFxuICAgIGNsb3NlT25TZWxlY3Q6IHRydWUsXG4gICAgc2VhcmNoYWJsZTogdHJ1ZSxcbiAgICBEcm9wRG93blJlbmRlckNvbXBvbmVudDogRHJvcGRvd25MaXN0LFxuICAgIERyb3BEb3duTGluZUl0ZW1SZW5kZXJDb21wb25lbnQ6IExpc3RJdGVtXG4gIH07XG5cbiAgc3RhdGUgPSB7XG4gICAgc2hvd1R5cGVhaGVhZDogZmFsc2UsXG4gICAgZGltZW5zaW9uczoge1xuICAgICAgd2lkdGg6IDIwMFxuICAgIH1cbiAgfTtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93RHJvcGRvd25Pbk1vdW50KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtzaG93VHlwZWFoZWFkOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm9vdC5jdXJyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgIG9ic2VydmVEaW1lbnNpb25zKHRoaXMucm9vdC5jdXJyZW50LCB0aGlzLl9oYW5kbGVSZXNpemUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIGlmICh0aGlzLnJvb3QuY3VycmVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICB1bm9ic2VydmVEaW1lbnNpb25zKHRoaXMucm9vdC5jdXJyZW50KTtcbiAgICB9XG4gIH1cblxuICByb290OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+ID0gY3JlYXRlUmVmKCk7XG5cbiAgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKCkgPT4ge1xuICAgIHRoaXMuX2hpZGVUeXBlYWhlYWQoKTtcbiAgfTtcblxuICBfaGFuZGxlUmVzaXplID0gZGltZW5zaW9ucyA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7ZGltZW5zaW9uc30pO1xuICB9O1xuXG4gIF9oaWRlVHlwZWFoZWFkID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dUeXBlYWhlYWQ6IGZhbHNlfSk7XG4gICAgdGhpcy5fb25CbHVyKCk7XG4gIH07XG5cbiAgX29uQmx1ciA9ICgpID0+IHtcbiAgICAvLyBub3RlOiBjaGlja2xldGVkIGlucHV0IGlzIG5vdCBhIHJlYWwgZm9ybSBlbGVtZW50IHNvIHdlIGNhbGwgb25CbHVyKClcbiAgICAvLyB3aGVuIHdlIGZlZWwgdGhlIGV2ZW50cyBhcmUgYXBwcm9wcmlhdGVcbiAgICBpZiAodGhpcy5wcm9wcy5vbkJsdXIpIHtcbiAgICAgIHRoaXMucHJvcHMub25CbHVyKCk7XG4gICAgfVxuICB9O1xuXG4gIF9yZW1vdmVJdGVtID0gKGl0ZW0sIGUpID0+IHtcbiAgICAvLyBvbmx5IHVzZWQgd2hlbiBtdWx0aVNlbGVjdCA9IHRydWVcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBtdWx0aVNlbGVjdGVkSXRlbXMgPSB0b0FycmF5KHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgY29uc3QgaW5kZXggPSBtdWx0aVNlbGVjdGVkSXRlbXMuZmluZEluZGV4KHQgPT4gdCA9PT0gaXRlbSk7XG5cbiAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbXMgPSBbXG4gICAgICAuLi5tdWx0aVNlbGVjdGVkSXRlbXMuc2xpY2UoMCwgaW5kZXgpLFxuICAgICAgLi4ubXVsdGlTZWxlY3RlZEl0ZW1zLnNsaWNlKGluZGV4ICsgMSwgbXVsdGlTZWxlY3RlZEl0ZW1zLmxlbmd0aClcbiAgICBdO1xuXG4gICAgdGhpcy5wcm9wcy5vbkNoYW5nZShpdGVtcyk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtzaG93VHlwZWFoZWFkOiBmYWxzZX0pO1xuICAgICAgdGhpcy5fb25CbHVyKCk7XG4gICAgfVxuICB9O1xuXG4gIF9zZWxlY3RJdGVtID0gaXRlbSA9PiB7XG4gICAgY29uc3QgZ2V0VmFsdWUgPSBBY2Nlc3Nvci5nZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yKFxuICAgICAgdGhpcy5wcm9wcy5nZXRPcHRpb25WYWx1ZSB8fCB0aGlzLnByb3BzLmRpc3BsYXlPcHRpb25cbiAgICApO1xuXG4gICAgY29uc3QgcHJldmlvdXNTZWxlY3RlZCA9IHRvQXJyYXkodGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW1zKTtcblxuICAgIGlmICh0aGlzLnByb3BzLm11bHRpU2VsZWN0KSB7XG4gICAgICBjb25zdCBpdGVtcyA9IHVuaXFCeShwcmV2aW91c1NlbGVjdGVkLmNvbmNhdCh0b0FycmF5KGl0ZW0pKSwgZ2V0VmFsdWUpO1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShpdGVtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UoZ2V0VmFsdWUoaXRlbSkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dUeXBlYWhlYWQ6IGZhbHNlfSk7XG4gICAgICB0aGlzLl9vbkJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgX29uRXJhc2U6IE1vdXNlRXZlbnRIYW5kbGVyID0gZSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKG51bGwpO1xuICB9O1xuXG4gIF9zaG93VHlwZWFoZWFkOiBNb3VzZUV2ZW50SGFuZGxlciA9IGUgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKCF0aGlzLnByb3BzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc2hvd1R5cGVhaGVhZDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIF9yZW5kZXJEcm9wZG93bihpbnRsOiBJbnRsU2hhcGUpIHtcbiAgICBjb25zdCB7cGxhY2VtZW50ID0gJ2JvdHRvbSd9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7ZGltZW5zaW9uc30gPSB0aGlzLnN0YXRlO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxQb3J0YWxlZCBsZWZ0PXswfSB0b3A9ezB9IGlzT3BlbmVkPXt0aGlzLnN0YXRlLnNob3dUeXBlYWhlYWR9IG9uQ2xvc2U9e3RoaXMuX2hpZGVUeXBlYWhlYWR9PlxuICAgICAgICA8RHJvcGRvd25XcmFwcGVyIHBsYWNlbWVudD17cGxhY2VtZW50fSB3aWR0aD17ZGltZW5zaW9ucz8ud2lkdGh9PlxuICAgICAgICAgIDxUeXBlYWhlYWRcbiAgICAgICAgICAgIGN1c3RvbUNsYXNzZXM9e3tcbiAgICAgICAgICAgICAgcmVzdWx0czogJ2xpc3Qtc2VsZWN0b3InLFxuICAgICAgICAgICAgICBpbnB1dDogJ3R5cGVhaGVhZF9faW5wdXQnLFxuICAgICAgICAgICAgICBsaXN0SXRlbTogJ2xpc3RfX2l0ZW0nLFxuICAgICAgICAgICAgICBsaXN0QW5jaG9yOiAnbGlzdF9faXRlbV9fYW5jaG9yJ1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9wdGlvbnM9e3RoaXMucHJvcHMub3B0aW9uc31cbiAgICAgICAgICAgIGZpbHRlck9wdGlvbj17dGhpcy5wcm9wcy5maWx0ZXJPcHRpb259XG4gICAgICAgICAgICBmaXhlZE9wdGlvbnM9e3RoaXMucHJvcHMuZml4ZWRPcHRpb25zfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e1xuICAgICAgICAgICAgICB0aGlzLnByb3BzLnR5cGVhaGVhZFBsYWNlaG9sZGVyIHx8IGludGxcbiAgICAgICAgICAgICAgICA/IGludGwuZm9ybWF0TWVzc2FnZSh7aWQ6ICdwbGFjZWhvbGRlci5zZWFyY2gnfSlcbiAgICAgICAgICAgICAgICA6ICdTZWFyY2gnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbk9wdGlvblNlbGVjdGVkPXt0aGlzLl9zZWxlY3RJdGVtfVxuICAgICAgICAgICAgY3VzdG9tTGlzdENvbXBvbmVudD17dGhpcy5wcm9wcy5Ecm9wRG93blJlbmRlckNvbXBvbmVudH1cbiAgICAgICAgICAgIGN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQ9e3RoaXMucHJvcHMuRHJvcGRvd25IZWFkZXJDb21wb25lbnR9XG4gICAgICAgICAgICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudD17dGhpcy5wcm9wcy5Ecm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50fVxuICAgICAgICAgICAgZGlzcGxheU9wdGlvbj17QWNjZXNzb3IuZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0Zvcih0aGlzLnByb3BzLmRpc3BsYXlPcHRpb24pfVxuICAgICAgICAgICAgc2VhcmNoYWJsZT17dGhpcy5wcm9wcy5zZWFyY2hhYmxlfVxuICAgICAgICAgICAgc2VhcmNoT3B0aW9ucz17dGhpcy5wcm9wcy5zZWFyY2hPcHRpb25zfVxuICAgICAgICAgICAgc2hvd09wdGlvbnNXaGVuRW1wdHlcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3RvQXJyYXkodGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW1zKX1cbiAgICAgICAgICAgIGxpZ2h0PXt0aGlzLnByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCd9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Ecm9wZG93bldyYXBwZXI+XG4gICAgICA8L1BvcnRhbGVkPlxuICAgICk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0b0FycmF5KHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgY29uc3QgaGFzVmFsdWUgPSBzZWxlY3RlZC5sZW5ndGg7XG4gICAgY29uc3QgZGlzcGxheU9wdGlvbiA9IEFjY2Vzc29yLmdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IodGhpcy5wcm9wcy5kaXNwbGF5T3B0aW9uKTtcbiAgICBjb25zdCB7XG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGlucHV0VGhlbWUgPSAncHJpbWFyeScsXG4gICAgICBEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50ID0gTGlzdEl0ZW1cbiAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IGRyb3Bkb3duU2VsZWN0UHJvcHMgPSB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoe1xuICAgICAgICBhY3RpdmU6IHRoaXMuc3RhdGUuc2hvd1R5cGVhaGVhZFxuICAgICAgfSksXG4gICAgICBkaXNwbGF5T3B0aW9uLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBvbkNsaWNrOiB0aGlzLl9zaG93VHlwZWFoZWFkLFxuICAgICAgZXJyb3I6IHRoaXMucHJvcHMuaXNFcnJvcixcbiAgICAgIGlucHV0VGhlbWUsXG4gICAgICBzaXplOiB0aGlzLnByb3BzLnNpemVcbiAgICB9O1xuICAgIGNvbnN0IGludGwgPSB0aGlzLnByb3BzLmludGw7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2l0ZW0tc2VsZWN0b3InLCB0aGlzLnByb3BzLmNsYXNzTmFtZSl9IHJlZj17dGhpcy5yb290fT5cbiAgICAgICAgPGRpdiBzdHlsZT17e3Bvc2l0aW9uOiAncmVsYXRpdmUnfX0+XG4gICAgICAgICAgey8qIHRoaXMgcGFydCBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlIGxhYmVsICovfVxuICAgICAgICAgIHt0aGlzLnByb3BzLm11bHRpU2VsZWN0ID8gKFxuICAgICAgICAgICAgPENoaWNrbGV0ZWRJbnB1dFxuICAgICAgICAgICAgICB7Li4uZHJvcGRvd25TZWxlY3RQcm9wc31cbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz17dG9BcnJheSh0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXMpfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgcmVtb3ZlSXRlbT17dGhpcy5fcmVtb3ZlSXRlbX1cbiAgICAgICAgICAgICAgQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQ9e3RoaXMucHJvcHMuQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnR9XG4gICAgICAgICAgICAgIGlucHV0VGhlbWU9e2lucHV0VGhlbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8U3R5bGVkRHJvcGRvd25TZWxlY3Qgey4uLmRyb3Bkb3duU2VsZWN0UHJvcHN9PlxuICAgICAgICAgICAgICA8RHJvcGRvd25TZWxlY3RWYWx1ZVxuICAgICAgICAgICAgICAgIGhhc1BsYWNlaG9sZGVyPXshaGFzVmFsdWV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgIGlucHV0VGhlbWU9e2lucHV0VGhlbWV9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaXRlbS1zZWxlY3Rvcl9fZHJvcGRvd25fX3ZhbHVlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtoYXNWYWx1ZSA/IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlPcHRpb249e2Rpc3BsYXlPcHRpb259XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzZWxlY3RlZFswXX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICBsaWdodD17aW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXt0aGlzLnByb3BzLnBsYWNlaG9sZGVyIHx8ICdwbGFjZWhvbGRlci5zZWxlY3RWYWx1ZSd9IC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9Ecm9wZG93blNlbGVjdFZhbHVlPlxuICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5lcmFzYWJsZSAmJiBoYXNWYWx1ZSA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodD5cbiAgICAgICAgICAgICAgICAgIDxEZWxldGUgaGVpZ2h0PVwiMTJweFwiIG9uQ2xpY2s9e3RoaXMuX29uRXJhc2V9IC8+XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93blNlbGVjdEFjdGlvblJpZ2h0PlxuICAgICAgICAgICAgICApIDogdGhpcy5wcm9wcy5zaG93QXJyb3cgPyAoXG4gICAgICAgICAgICAgICAgPERyb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQ+XG4gICAgICAgICAgICAgICAgICA8QXJyb3dEb3duIGhlaWdodD1cIjE0cHhcIiBvbkNsaWNrPXt0aGlzLl9zaG93VHlwZWFoZWFkfSAvPlxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodD5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L1N0eWxlZERyb3Bkb3duU2VsZWN0PlxuICAgICAgICAgICl9XG4gICAgICAgICAgey8qIHRoaXMgcGFydCBpcyB1c2VkIHRvIGJ1aWx0IHRoZSBsaXN0ICovfVxuICAgICAgICAgIHt0aGlzLl9yZW5kZXJEcm9wZG93bihpbnRsKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IEl0ZW1TZWxlY3RvciA9IFJlYWN0Lm1lbW8oSXRlbVNlbGVjdG9yVW5tZW1vaXplZCk7XG5JdGVtU2VsZWN0b3IuZGlzcGxheU5hbWUgPSAnSXRlbVNlbGVjdG9yJztcblxuZXhwb3J0IGRlZmF1bHQgaW5qZWN0SW50bChJdGVtU2VsZWN0b3JVbm1lbW9pemVkKTtcbiJdfQ==
351
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vaXRlbS1zZWxlY3Rvci9pdGVtLXNlbGVjdG9yLnRzeCJdLCJuYW1lcyI6WyJTdHlsZWREcm9wZG93blNlbGVjdCIsInN0eWxlZCIsImRpdiIsImF0dHJzIiwicHJvcHMiLCJjbGFzc05hbWUiLCJpbnB1dFRoZW1lIiwidGhlbWUiLCJzZWNvbmRhcnlJbnB1dCIsImlucHV0TFQiLCJpbnB1dCIsInNpemUiLCJpbnB1dEJveEhlaWdodFNtYWxsIiwiaW5wdXRCb3hIZWlnaHQiLCJkcm9wZG93bkxpc3RBbmNob3IiLCJEcm9wZG93blNlbGVjdFZhbHVlIiwic3BhbiIsImhhc1BsYWNlaG9sZGVyIiwic2VsZWN0Q29sb3JQbGFjZUhvbGRlckxUIiwic2VsZWN0Q29sb3JQbGFjZUhvbGRlciIsInNlbGVjdENvbG9yTFQiLCJzZWxlY3RDb2xvciIsImRyb3Bkb3duTGlzdEl0ZW1MVCIsImRyb3Bkb3duTGlzdEl0ZW0iLCJkcm9wZG93bkxpc3RBbmNob3JMVCIsIkRyb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQiLCJzdWJ0ZXh0Q29sb3IiLCJ0ZXh0Q29sb3IiLCJEcm9wZG93bldyYXBwZXIiLCJkcm9wZG93bldyYXBwZXJaIiwid2lkdGgiLCJJdGVtU2VsZWN0b3JVbm1lbW9pemVkIiwic2hvd1R5cGVhaGVhZCIsImRpbWVuc2lvbnMiLCJfaGlkZVR5cGVhaGVhZCIsInNldFN0YXRlIiwiX29uQmx1ciIsIm9uQmx1ciIsIml0ZW0iLCJlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJtdWx0aVNlbGVjdGVkSXRlbXMiLCJzZWxlY3RlZEl0ZW1zIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJ0IiwiaXRlbXMiLCJzbGljZSIsImxlbmd0aCIsIm9uQ2hhbmdlIiwiY2xvc2VPblNlbGVjdCIsImdldFZhbHVlIiwiQWNjZXNzb3IiLCJnZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yIiwiZ2V0T3B0aW9uVmFsdWUiLCJkaXNwbGF5T3B0aW9uIiwicHJldmlvdXNTZWxlY3RlZCIsIm11bHRpU2VsZWN0IiwiY29uY2F0IiwiZGlzYWJsZWQiLCJvbk9wZW4iLCJzaG93RHJvcGRvd25Pbk1vdW50Iiwicm9vdCIsImN1cnJlbnQiLCJIVE1MRWxlbWVudCIsIl9oYW5kbGVSZXNpemUiLCJpbnRsIiwicGxhY2VtZW50Iiwic3RhdGUiLCJEcm9wRG93bldyYXBwZXJDb21wb25lbnQiLCJyZXN1bHRzIiwibGlzdEl0ZW0iLCJsaXN0QW5jaG9yIiwib3B0aW9ucyIsImZpbHRlck9wdGlvbiIsImZpeGVkT3B0aW9ucyIsInR5cGVhaGVhZFBsYWNlaG9sZGVyIiwiZm9ybWF0TWVzc2FnZSIsImlkIiwiX3NlbGVjdEl0ZW0iLCJEcm9wRG93blJlbmRlckNvbXBvbmVudCIsIkRyb3Bkb3duSGVhZGVyQ29tcG9uZW50IiwiRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudCIsInNlYXJjaGFibGUiLCJzZWFyY2hPcHRpb25zIiwic2VsZWN0ZWQiLCJoYXNWYWx1ZSIsIkxpc3RJdGVtIiwiZHJvcGRvd25TZWxlY3RQcm9wcyIsImFjdGl2ZSIsIm9uQ2xpY2siLCJfc2hvd1R5cGVhaGVhZCIsImVycm9yIiwiaXNFcnJvciIsInBvc2l0aW9uIiwicGxhY2Vob2xkZXIiLCJfcmVtb3ZlSXRlbSIsInJlb3JkZXJJdGVtcyIsIkN1c3RvbUNoaWNrbGV0Q29tcG9uZW50IiwiZXJhc2FibGUiLCJfb25FcmFzZSIsInNob3dBcnJvdyIsIl9yZW5kZXJEcm9wZG93biIsIkNvbXBvbmVudCIsIkRyb3Bkb3duTGlzdCIsInVuZGVmaW5lZCIsIkl0ZW1TZWxlY3RvciIsIlJlYWN0IiwibWVtbyIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBUU8s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SCxDQURGLENBREY7QUFpREQ7OztFQXpPa0NxQyxnQjs7aUNBQS9CekUsc0Isa0JBQ2tCO0FBQ3BCMkIsRUFBQUEsV0FBVyxFQUFFLElBRE87QUFFcEJzQyxFQUFBQSxXQUFXLEVBQUUsd0JBRk87QUFHcEI3QyxFQUFBQSxhQUFhLEVBQUUsSUFISztBQUlwQmlDLEVBQUFBLFVBQVUsRUFBRSxJQUpRO0FBS3BCSCxFQUFBQSx1QkFBdUIsRUFBRXdCLHdCQUxMO0FBTXBCdEIsRUFBQUEsK0JBQStCLEVBQUVLLHNCQU5iO0FBT3BCbEIsRUFBQUEsd0JBQXdCLEVBQUUxQyxlQVBOO0FBUXBCc0UsRUFBQUEsWUFBWSxFQUFFUTtBQVJNLEM7O0FBMk94QixJQUFNQyxZQUFZLGdCQUFHQyxrQkFBTUMsSUFBTixDQUFXOUUsc0JBQVgsQ0FBckI7O0FBQ0E0RSxZQUFZLENBQUNHLFdBQWIsR0FBMkIsY0FBM0I7O2VBRWUsMkJBQVcvRSxzQkFBWCxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWYsIENvbXBvbmVudFR5cGUsIE1vdXNlRXZlbnRIYW5kbGVyLCBSZWZPYmplY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHVuaXFCeSBmcm9tICdsb2Rhc2gudW5pcWJ5JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgQWNjZXNzb3IgZnJvbSAnLi9hY2Nlc3Nvcic7XG5pbXBvcnQgQ2hpY2tsZXRlZElucHV0IGZyb20gJy4vY2hpY2tsZXRlZC1pbnB1dCc7XG5pbXBvcnQgVHlwZWFoZWFkIGZyb20gJy4vdHlwZWFoZWFkJztcbmltcG9ydCB7RGVsZXRlLCBBcnJvd0Rvd259IGZyb20gJy4uL2ljb25zJztcbmltcG9ydCBEcm9wZG93bkxpc3QsIHtMaXN0SXRlbX0gZnJvbSAnLi9kcm9wZG93bi1saXN0JztcbmltcG9ydCBQb3J0YWxlZCBmcm9tICcuLi8uLi9jb21tb24vcG9ydGFsZWQnO1xuaW1wb3J0IHt0b0FycmF5LCBvYnNlcnZlRGltZW5zaW9ucywgdW5vYnNlcnZlRGltZW5zaW9uc30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2luamVjdEludGwsIEludGxTaGFwZX0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcblxuaW50ZXJmYWNlIFN0eWxlZERyb3Bkb3duU2VsZWN0UHJvcHMge1xuICBpbnB1dFRoZW1lPzogc3RyaW5nO1xuICBzaXplPzogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBTdHlsZWREcm9wZG93blNlbGVjdCA9IHN0eWxlZC5kaXYuYXR0cnMocHJvcHMgPT4gKHtcbiAgY2xhc3NOYW1lOiBjbGFzc25hbWVzKCdpdGVtLXNlbGVjdG9yX19kcm9wZG93bicsIHByb3BzLmNsYXNzTmFtZSlcbn0pKTxTdHlsZWREcm9wZG93blNlbGVjdFByb3BzPmBcbiAgJHtwcm9wcyA9PlxuICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdzZWNvbmRhcnknXG4gICAgICA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0XG4gICAgICA6IHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgID8gcHJvcHMudGhlbWUuaW5wdXRMVFxuICAgICAgOiBwcm9wcy50aGVtZS5pbnB1dH07XG5cbiAgaGVpZ2h0OiAke3Byb3BzID0+XG4gICAgcHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJyA/IHByb3BzLnRoZW1lLmlucHV0Qm94SGVpZ2h0U21hbGwgOiBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodH07XG5cbiAgLmxpc3RfX2l0ZW1fX2FuY2hvciB7XG4gICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RBbmNob3J9O1xuICB9XG5gO1xuXG5pbnRlcmZhY2UgRHJvcGRvd25TZWxlY3RWYWx1ZVByb3BzIHtcbiAgaGFzUGxhY2Vob2xkZXI/OiBib29sZWFuO1xuICBpbnB1dFRoZW1lPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmNvbnN0IERyb3Bkb3duU2VsZWN0VmFsdWUgPSBzdHlsZWQuc3BhbjxEcm9wZG93blNlbGVjdFZhbHVlUHJvcHM+YFxuICBjb2xvcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLmhhc1BsYWNlaG9sZGVyICYmIHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgID8gcHJvcHMudGhlbWUuc2VsZWN0Q29sb3JQbGFjZUhvbGRlckxUXG4gICAgICA6IHByb3BzLmhhc1BsYWNlaG9sZGVyXG4gICAgICA/IHByb3BzLnRoZW1lLnNlbGVjdENvbG9yUGxhY2VIb2xkZXJcbiAgICAgIDogcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J1xuICAgICAgPyBwcm9wcy50aGVtZS5zZWxlY3RDb2xvckxUXG4gICAgICA6IHByb3BzLnRoZW1lLnNlbGVjdENvbG9yfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgLmxpc3RfX2l0ZW0ge1xuICAgICR7cHJvcHMgPT5cbiAgICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCcgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RJdGVtTFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RJdGVtfTtcbiAgfVxuXG4gIC5saXN0X19pdGVtX19hbmNob3Ige1xuICAgICR7cHJvcHMgPT5cbiAgICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgICAgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RBbmNob3JMVFxuICAgICAgICA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEFuY2hvcn07XG4gIH1cbmA7XG5cbmNvbnN0IERyb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgZGlzcGxheTogZmxleDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yfTtcblxuICA6aG92ZXIge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIH1cbmA7XG5cbmludGVyZmFjZSBEcm9wZG93bldyYXBwZXJQcm9wcyB7XG4gIHBsYWNlbWVudD86IHN0cmluZztcbiAgd2lkdGg6IG51bWJlcjtcbn1cblxuY29uc3QgRHJvcGRvd25XcmFwcGVyID0gc3R5bGVkLmRpdjxEcm9wZG93bldyYXBwZXJQcm9wcz5gXG4gIGJvcmRlcjogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25XcmFwcGVyWn07XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLndpZHRofXB4O1xuYDtcblxuZXhwb3J0IHR5cGUgSXRlbVNlbGVjdG9yUHJvcHMgPSB7XG4gIHNlbGVjdGVkSXRlbXM/OlxuICAgIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0PlxuICAgIHwgc3RyaW5nXG4gICAgfCBudW1iZXJcbiAgICB8IGJvb2xlYW5cbiAgICB8IG9iamVjdFxuICAgIHwgbnVsbDtcbiAgb3B0aW9uczogUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0PjtcbiAgb25DaGFuZ2U6IChcbiAgICBpdGVtczpcbiAgICAgIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0PlxuICAgICAgfCBzdHJpbmdcbiAgICAgIHwgbnVtYmVyXG4gICAgICB8IGJvb2xlYW5cbiAgICAgIHwgb2JqZWN0XG4gICAgICB8IG51bGxcbiAgKSA9PiB2b2lkO1xuICBmaXhlZE9wdGlvbnM/OiBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgbnVsbDtcbiAgZXJhc2FibGU/OiBib29sZWFuO1xuICBzaG93QXJyb3c/OiBib29sZWFuO1xuICBzZWFyY2hPcHRpb25zPzogKHZhbHVlOiBhbnksIG9wdDogYW55KSA9PiBhbnk7XG4gIHNlYXJjaGFibGU/OiBib29sZWFuO1xuICBkaXNwbGF5T3B0aW9uPzogc3RyaW5nIHwgKChvcHQ6IGFueSkgPT4gYW55KTtcbiAgZ2V0T3B0aW9uVmFsdWU/OiBzdHJpbmcgfCAoKG9wdDogYW55KSA9PiBhbnkpO1xuICBmaWx0ZXJPcHRpb24/OiBzdHJpbmcgfCAoKG9wdDogYW55KSA9PiBhbnkpO1xuICBwbGFjZW1lbnQ/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgaXNFcnJvcj86IGJvb2xlYW47XG4gIG11bHRpU2VsZWN0PzogYm9vbGVhbjtcbiAgaW5wdXRUaGVtZT86IHN0cmluZztcbiAgb25PcGVuPzogKCkgPT4gdm9pZDtcbiAgc2l6ZT86IHN0cmluZztcbiAgb25CbHVyPzogKCkgPT4gdm9pZDtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGNsb3NlT25TZWxlY3Q/OiBib29sZWFuO1xuICB0eXBlYWhlYWRQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgRHJvcERvd25XcmFwcGVyQ29tcG9uZW50PzogQ29tcG9uZW50VHlwZTxhbnk+IHwgbnVsbDtcbiAgRHJvcGRvd25IZWFkZXJDb21wb25lbnQ/OiBDb21wb25lbnRUeXBlPGFueT4gfCBudWxsO1xuICBEcm9wRG93blJlbmRlckNvbXBvbmVudD86IENvbXBvbmVudFR5cGU8YW55PjtcbiAgRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudD86IENvbXBvbmVudFR5cGU8YW55PjtcbiAgQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQ/OiBDb21wb25lbnRUeXBlPGFueT47XG4gIGludGw6IEludGxTaGFwZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICByZW9yZGVySXRlbXM/OiAobmV3T3JkZXI6IGFueSkgPT4gdm9pZDtcbiAgc2hvd0Ryb3Bkb3duT25Nb3VudD86IGJvb2xlYW47XG59O1xuXG5jbGFzcyBJdGVtU2VsZWN0b3JVbm1lbW9pemVkIGV4dGVuZHMgQ29tcG9uZW50PEl0ZW1TZWxlY3RvclByb3BzPiB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgbXVsdGlTZWxlY3Q6IHRydWUsXG4gICAgcGxhY2Vob2xkZXI6ICdwbGFjZWhvbGRlci5lbnRlclZhbHVlJyxcbiAgICBjbG9zZU9uU2VsZWN0OiB0cnVlLFxuICAgIHNlYXJjaGFibGU6IHRydWUsXG4gICAgRHJvcERvd25SZW5kZXJDb21wb25lbnQ6IERyb3Bkb3duTGlzdCxcbiAgICBEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50OiBMaXN0SXRlbSxcbiAgICBEcm9wRG93bldyYXBwZXJDb21wb25lbnQ6IERyb3Bkb3duV3JhcHBlcixcbiAgICByZW9yZGVySXRlbXM6IHVuZGVmaW5lZFxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIHNob3dUeXBlYWhlYWQ6IGZhbHNlLFxuICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgIHdpZHRoOiAyMDBcbiAgICB9XG4gIH07XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2hvd0Ryb3Bkb3duT25Nb3VudCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7c2hvd1R5cGVhaGVhZDogdHJ1ZX0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJvb3QuY3VycmVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICBvYnNlcnZlRGltZW5zaW9ucyh0aGlzLnJvb3QuY3VycmVudCwgdGhpcy5faGFuZGxlUmVzaXplKTtcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICBpZiAodGhpcy5yb290LmN1cnJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgdW5vYnNlcnZlRGltZW5zaW9ucyh0aGlzLnJvb3QuY3VycmVudCk7XG4gICAgfVxuICB9XG5cbiAgcm9vdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PiA9IGNyZWF0ZVJlZigpO1xuXG4gIGhhbmRsZUNsaWNrT3V0c2lkZSA9ICgpID0+IHtcbiAgICB0aGlzLl9oaWRlVHlwZWFoZWFkKCk7XG4gIH07XG5cbiAgX2hhbmRsZVJlc2l6ZSA9IGRpbWVuc2lvbnMgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe2RpbWVuc2lvbnN9KTtcbiAgfTtcblxuICBfaGlkZVR5cGVhaGVhZCA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtzaG93VHlwZWFoZWFkOiBmYWxzZX0pO1xuICAgIHRoaXMuX29uQmx1cigpO1xuICB9O1xuXG4gIF9vbkJsdXIgPSAoKSA9PiB7XG4gICAgLy8gbm90ZTogY2hpY2tsZXRlZCBpbnB1dCBpcyBub3QgYSByZWFsIGZvcm0gZWxlbWVudCBzbyB3ZSBjYWxsIG9uQmx1cigpXG4gICAgLy8gd2hlbiB3ZSBmZWVsIHRoZSBldmVudHMgYXJlIGFwcHJvcHJpYXRlXG4gICAgaWYgKHRoaXMucHJvcHMub25CbHVyKSB7XG4gICAgICB0aGlzLnByb3BzLm9uQmx1cigpO1xuICAgIH1cbiAgfTtcblxuICBfcmVtb3ZlSXRlbSA9IChpdGVtLCBlKSA9PiB7XG4gICAgLy8gb25seSB1c2VkIHdoZW4gbXVsdGlTZWxlY3QgPSB0cnVlXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgbXVsdGlTZWxlY3RlZEl0ZW1zID0gdG9BcnJheSh0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXMpO1xuICAgIGNvbnN0IGluZGV4ID0gbXVsdGlTZWxlY3RlZEl0ZW1zLmZpbmRJbmRleCh0ID0+IHQgPT09IGl0ZW0pO1xuXG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW1zID0gW1xuICAgICAgLi4ubXVsdGlTZWxlY3RlZEl0ZW1zLnNsaWNlKDAsIGluZGV4KSxcbiAgICAgIC4uLm11bHRpU2VsZWN0ZWRJdGVtcy5zbGljZShpbmRleCArIDEsIG11bHRpU2VsZWN0ZWRJdGVtcy5sZW5ndGgpXG4gICAgXTtcblxuICAgIHRoaXMucHJvcHMub25DaGFuZ2UoaXRlbXMpO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7c2hvd1R5cGVhaGVhZDogZmFsc2V9KTtcbiAgICAgIHRoaXMuX29uQmx1cigpO1xuICAgIH1cbiAgfTtcblxuICBfc2VsZWN0SXRlbSA9IGl0ZW0gPT4ge1xuICAgIGNvbnN0IGdldFZhbHVlID0gQWNjZXNzb3IuZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0ZvcihcbiAgICAgIHRoaXMucHJvcHMuZ2V0T3B0aW9uVmFsdWUgfHwgdGhpcy5wcm9wcy5kaXNwbGF5T3B0aW9uXG4gICAgKTtcblxuICAgIGNvbnN0IHByZXZpb3VzU2VsZWN0ZWQgPSB0b0FycmF5KHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5tdWx0aVNlbGVjdCkge1xuICAgICAgY29uc3QgaXRlbXMgPSB1bmlxQnkocHJldmlvdXNTZWxlY3RlZC5jb25jYXQodG9BcnJheShpdGVtKSksIGdldFZhbHVlKTtcbiAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UoaXRlbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKGdldFZhbHVlKGl0ZW0pKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtzaG93VHlwZWFoZWFkOiBmYWxzZX0pO1xuICAgICAgdGhpcy5fb25CbHVyKCk7XG4gICAgfVxuICB9O1xuXG4gIF9vbkVyYXNlOiBNb3VzZUV2ZW50SGFuZGxlciA9IGUgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5wcm9wcy5vbkNoYW5nZShudWxsKTtcbiAgfTtcblxuICBfc2hvd1R5cGVhaGVhZDogTW91c2VFdmVudEhhbmRsZXIgPSBlID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICghdGhpcy5wcm9wcy5kaXNhYmxlZCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMub25PcGVuKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25PcGVuKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc2hvd1R5cGVhaGVhZDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIF9yZW5kZXJEcm9wZG93bihpbnRsOiBJbnRsU2hhcGUpIHtcbiAgICBjb25zdCB7cGxhY2VtZW50ID0gJ2JvdHRvbSd9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7ZGltZW5zaW9uc30gPSB0aGlzLnN0YXRlO1xuXG4gICAgY29uc3QgRHJvcERvd25XcmFwcGVyQ29tcG9uZW50ID0gdGhpcy5wcm9wcy5Ecm9wRG93bldyYXBwZXJDb21wb25lbnQgYXMgUmVhY3QuQ29tcG9uZW50VHlwZTxcbiAgICAgIGFueVxuICAgID47XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFBvcnRhbGVkIGxlZnQ9ezB9IHRvcD17MH0gaXNPcGVuZWQ9e3RoaXMuc3RhdGUuc2hvd1R5cGVhaGVhZH0gb25DbG9zZT17dGhpcy5faGlkZVR5cGVhaGVhZH0+XG4gICAgICAgIDxEcm9wRG93bldyYXBwZXJDb21wb25lbnQgcGxhY2VtZW50PXtwbGFjZW1lbnR9IHdpZHRoPXtkaW1lbnNpb25zPy53aWR0aH0+XG4gICAgICAgICAgPFR5cGVhaGVhZFxuICAgICAgICAgICAgY3VzdG9tQ2xhc3Nlcz17e1xuICAgICAgICAgICAgICByZXN1bHRzOiAnbGlzdC1zZWxlY3RvcicsXG4gICAgICAgICAgICAgIGlucHV0OiAndHlwZWFoZWFkX19pbnB1dCcsXG4gICAgICAgICAgICAgIGxpc3RJdGVtOiAnbGlzdF9faXRlbScsXG4gICAgICAgICAgICAgIGxpc3RBbmNob3I6ICdsaXN0X19pdGVtX19hbmNob3InXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb3B0aW9ucz17dGhpcy5wcm9wcy5vcHRpb25zfVxuICAgICAgICAgICAgZmlsdGVyT3B0aW9uPXt0aGlzLnByb3BzLmZpbHRlck9wdGlvbn1cbiAgICAgICAgICAgIGZpeGVkT3B0aW9ucz17dGhpcy5wcm9wcy5maXhlZE9wdGlvbnN9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17XG4gICAgICAgICAgICAgIHRoaXMucHJvcHMudHlwZWFoZWFkUGxhY2Vob2xkZXIgfHwgaW50bFxuICAgICAgICAgICAgICAgID8gaW50bC5mb3JtYXRNZXNzYWdlKHtpZDogJ3BsYWNlaG9sZGVyLnNlYXJjaCd9KVxuICAgICAgICAgICAgICAgIDogJ1NlYXJjaCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9uT3B0aW9uU2VsZWN0ZWQ9e3RoaXMuX3NlbGVjdEl0ZW19XG4gICAgICAgICAgICBjdXN0b21MaXN0Q29tcG9uZW50PXt0aGlzLnByb3BzLkRyb3BEb3duUmVuZGVyQ29tcG9uZW50fVxuICAgICAgICAgICAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudD17dGhpcy5wcm9wcy5Ecm9wZG93bkhlYWRlckNvbXBvbmVudH1cbiAgICAgICAgICAgIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50PXt0aGlzLnByb3BzLkRyb3BEb3duTGluZUl0ZW1SZW5kZXJDb21wb25lbnR9XG4gICAgICAgICAgICBkaXNwbGF5T3B0aW9uPXtBY2Nlc3Nvci5nZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yKHRoaXMucHJvcHMuZGlzcGxheU9wdGlvbil9XG4gICAgICAgICAgICBzZWFyY2hhYmxlPXt0aGlzLnByb3BzLnNlYXJjaGFibGV9XG4gICAgICAgICAgICBzZWFyY2hPcHRpb25zPXt0aGlzLnByb3BzLnNlYXJjaE9wdGlvbnN9XG4gICAgICAgICAgICBzaG93T3B0aW9uc1doZW5FbXB0eVxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz17dG9BcnJheSh0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXMpfVxuICAgICAgICAgICAgbGlnaHQ9e3RoaXMucHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J31cbiAgICAgICAgICAvPlxuICAgICAgICA8L0Ryb3BEb3duV3JhcHBlckNvbXBvbmVudD5cbiAgICAgIDwvUG9ydGFsZWQ+XG4gICAgKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRvQXJyYXkodGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICBjb25zdCBoYXNWYWx1ZSA9IHNlbGVjdGVkLmxlbmd0aDtcbiAgICBjb25zdCBkaXNwbGF5T3B0aW9uID0gQWNjZXNzb3IuZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0Zvcih0aGlzLnByb3BzLmRpc3BsYXlPcHRpb24pO1xuICAgIGNvbnN0IHtcbiAgICAgIGRpc2FibGVkLFxuICAgICAgaW5wdXRUaGVtZSA9ICdwcmltYXJ5JyxcbiAgICAgIERyb3BEb3duTGluZUl0ZW1SZW5kZXJDb21wb25lbnQgPSBMaXN0SXRlbVxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgZHJvcGRvd25TZWxlY3RQcm9wcyA9IHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NuYW1lcyh7XG4gICAgICAgIGFjdGl2ZTogdGhpcy5zdGF0ZS5zaG93VHlwZWFoZWFkXG4gICAgICB9KSxcbiAgICAgIGRpc3BsYXlPcHRpb24sXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIG9uQ2xpY2s6IHRoaXMuX3Nob3dUeXBlYWhlYWQsXG4gICAgICBlcnJvcjogdGhpcy5wcm9wcy5pc0Vycm9yLFxuICAgICAgaW5wdXRUaGVtZSxcbiAgICAgIHNpemU6IHRoaXMucHJvcHMuc2l6ZVxuICAgIH07XG4gICAgY29uc3QgaW50bCA9IHRoaXMucHJvcHMuaW50bDtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnaXRlbS1zZWxlY3RvcicsIHRoaXMucHJvcHMuY2xhc3NOYW1lKX0gcmVmPXt0aGlzLnJvb3R9PlxuICAgICAgICA8ZGl2IHN0eWxlPXt7cG9zaXRpb246ICdyZWxhdGl2ZSd9fT5cbiAgICAgICAgICB7LyogdGhpcyBwYXJ0IGlzIHVzZWQgdG8gZGlzcGxheSB0aGUgbGFiZWwgKi99XG4gICAgICAgICAge3RoaXMucHJvcHMubXVsdGlTZWxlY3QgPyAoXG4gICAgICAgICAgICA8Q2hpY2tsZXRlZElucHV0XG4gICAgICAgICAgICAgIHsuLi5kcm9wZG93blNlbGVjdFByb3BzfVxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXt0b0FycmF5KHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtcyl9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0aGlzLnByb3BzLnBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICByZW1vdmVJdGVtPXt0aGlzLl9yZW1vdmVJdGVtfVxuICAgICAgICAgICAgICByZW9yZGVySXRlbXM9e3RoaXMucHJvcHMucmVvcmRlckl0ZW1zfVxuICAgICAgICAgICAgICBDdXN0b21DaGlja2xldENvbXBvbmVudD17dGhpcy5wcm9wcy5DdXN0b21DaGlja2xldENvbXBvbmVudH1cbiAgICAgICAgICAgICAgaW5wdXRUaGVtZT17aW5wdXRUaGVtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxTdHlsZWREcm9wZG93blNlbGVjdCB7Li4uZHJvcGRvd25TZWxlY3RQcm9wc30+XG4gICAgICAgICAgICAgIDxEcm9wZG93blNlbGVjdFZhbHVlXG4gICAgICAgICAgICAgICAgaGFzUGxhY2Vob2xkZXI9eyFoYXNWYWx1ZX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgaW5wdXRUaGVtZT17aW5wdXRUaGVtZX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpdGVtLXNlbGVjdG9yX19kcm9wZG93bl9fdmFsdWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2hhc1ZhbHVlID8gKFxuICAgICAgICAgICAgICAgICAgPERyb3BEb3duTGluZUl0ZW1SZW5kZXJDb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheU9wdGlvbj17ZGlzcGxheU9wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlbGVjdGVkWzBdfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIGxpZ2h0PXtpbnB1dFRoZW1lID09PSAnbGlnaHQnfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9e3RoaXMucHJvcHMucGxhY2Vob2xkZXIgfHwgJ3BsYWNlaG9sZGVyLnNlbGVjdFZhbHVlJ30gLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duU2VsZWN0VmFsdWU+XG4gICAgICAgICAgICAgIHt0aGlzLnByb3BzLmVyYXNhYmxlICYmIGhhc1ZhbHVlID8gKFxuICAgICAgICAgICAgICAgIDxEcm9wZG93blNlbGVjdEFjdGlvblJpZ2h0PlxuICAgICAgICAgICAgICAgICAgPERlbGV0ZSBoZWlnaHQ9XCIxMnB4XCIgb25DbGljaz17dGhpcy5fb25FcmFzZX0gLz5cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQ+XG4gICAgICAgICAgICAgICkgOiB0aGlzLnByb3BzLnNob3dBcnJvdyA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodD5cbiAgICAgICAgICAgICAgICAgIDxBcnJvd0Rvd24gaGVpZ2h0PVwiMTRweFwiIG9uQ2xpY2s9e3RoaXMuX3Nob3dUeXBlYWhlYWR9IC8+XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93blNlbGVjdEFjdGlvblJpZ2h0PlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvU3R5bGVkRHJvcGRvd25TZWxlY3Q+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7LyogdGhpcyBwYXJ0IGlzIHVzZWQgdG8gYnVpbHQgdGhlIGxpc3QgKi99XG4gICAgICAgICAge3RoaXMuX3JlbmRlckRyb3Bkb3duKGludGwpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgSXRlbVNlbGVjdG9yID0gUmVhY3QubWVtbyhJdGVtU2VsZWN0b3JVbm1lbW9pemVkKTtcbkl0ZW1TZWxlY3Rvci5kaXNwbGF5TmFtZSA9ICdJdGVtU2VsZWN0b3InO1xuXG5leHBvcnQgZGVmYXVsdCBpbmplY3RJbnRsKEl0ZW1TZWxlY3RvclVubWVtb2l6ZWQpO1xuIl19
@@ -1,23 +1,3 @@
1
- // Copyright (c) 2023 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
20
-
21
1
  "use strict";
22
2
 
23
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -515,4 +495,4 @@ var Typeahead = /*#__PURE__*/function (_Component) {
515
495
  (0, _reactLifecyclesCompat.polyfill)(Typeahead);
516
496
  var _default = Typeahead;
517
497
  exports["default"] = _default;
518
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vaXRlbS1zZWxlY3Rvci90eXBlYWhlYWQudHN4Il0sIm5hbWVzIjpbIkRFRkFVTFRfQ0xBU1MiLCJUeXBlYWhlYWRXcmFwcGVyIiwic3R5bGVkIiwiZGl2IiwicHJvcHMiLCJsaWdodCIsInRoZW1lIiwiZHJvcGRvd25MaXN0QmdkTFQiLCJkcm9wZG93bkxpc3RCZ2QiLCJkcm9wZG93bkxpc3RTaGFkb3ciLCJJbnB1dEJveCIsImF0dHJzIiwiY2xhc3NOYW1lIiwiVHlwZWFoZWFkSW5wdXQiLCJpbnB1dCIsImlucHV0TFQiLCJzZWNvbmRhcnlJbnB1dCIsInNlbGVjdEJhY2tncm91bmRMVCIsInNlY29uZGFyeUlucHV0QmdkIiwiSW5wdXRJY29uIiwiaW5wdXRQbGFjZWhvbGRlckNvbG9yIiwiZ2VuZXJhdGVTZWFyY2hGdW5jdGlvbiIsInNlYXJjaE9wdGlvbnMiLCJmaWx0ZXJPcHRpb24iLCJDb25zb2xlIiwid2FybiIsInZhbHVlIiwib3B0aW9ucyIsImZpbHRlciIsIm8iLCJtYXBwZXIiLCJBY2Nlc3NvciIsImdlbmVyYXRlQWNjZXNzb3IiLCJJREVOVElUWV9GTiIsImZ1enp5IiwiZXh0cmFjdCIsIm1hcCIsInJlcyIsImluZGV4Iiwic2VhcmNoT3B0aW9uc09uSW5wdXQiLCJpbnB1dFZhbHVlIiwiZ2V0T3B0aW9uc0ZvclZhbHVlIiwic3RhdGUiLCJzaG93T3B0aW9uc1doZW5FbXB0eSIsInNlYXJjaGFibGUiLCJzaG91bGRTa2lwU2VhcmNoIiwiZW1wdHlWYWx1ZSIsInRyaW0iLCJsZW5ndGgiLCJpc0ZvY3VzZWQiLCJUeXBlYWhlYWQiLCJlbnRyeSIsImN1cnJlbnQiLCJmb2N1cyIsIk51bWJlciIsImFsbG93Q3VzdG9tVmFsdWVzIiwiZW50cnlWYWx1ZSIsInNlYXJjaFJlc3VsdHMiLCJpbmRleE9mIiwiX2hhc0N1c3RvbVZhbHVlIiwib3B0aW9uIiwiZXZlbnQiLCJzZXRTdGF0ZSIsInNlbGVjdGlvbiIsIm9uT3B0aW9uU2VsZWN0ZWQiLCJnZXRTZWxlY3Rpb24iLCJvbktleURvd24iLCJfb25PcHRpb25TZWxlY3RlZCIsInNlbGVjdGlvbkluZGV4IiwiX2dldEN1c3RvbVZhbHVlIiwiZXZlbnRzIiwiS2V5RXZlbnQiLCJET01fVktfVVAiLCJuYXZVcCIsIkRPTV9WS19ET1dOIiwibmF2RG93biIsIkRPTV9WS19SRVRVUk4iLCJET01fVktfRU5URVIiLCJfb25FbnRlciIsIkRPTV9WS19FU0NBUEUiLCJfb25Fc2NhcGUiLCJET01fVktfVEFCIiwiX29uVGFiIiwiZGVsdGEiLCJfaGFzSGludCIsIm5ld0luZGV4IiwibWF4VmlzaWJsZSIsInNsaWNlIiwiX25hdiIsIm9uQ2hhbmdlIiwiX29uVGV4dEVudHJ5VXBkYXRlZCIsInNoaWZ0S2V5IiwiaGFuZGxlciIsImV2ZW50TWFwIiwia2V5Q29kZSIsInByZXZlbnREZWZhdWx0Iiwib25Gb2N1cyIsIm9uQmx1ciIsImluaXRpYWxWYWx1ZSIsInJvb3QiLCJjdXN0b21MaXN0Q29tcG9uZW50IiwiQ3VzdG9tTGlzdENvbXBvbmVudCIsIkRyb3Bkb3duTGlzdCIsImZpeGVkT3B0aW9ucyIsInJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlIiwiY3VzdG9tQ2xhc3NlcyIsImN1c3RvbUxpc3RJdGVtQ29tcG9uZW50IiwiY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudCIsImRlZmF1bHRDbGFzc05hbWVzIiwiZGlzcGxheU9wdGlvbiIsInNlbGVjdGVkSXRlbXMiLCJfaGFzRml4ZWRPcHRpb25zIiwibmFtZSIsIkFycmF5IiwiaXNBcnJheSIsImlucHV0Q2xhc3NlcyIsIkJvb2xlYW4iLCJpbnB1dENsYXNzTGlzdCIsImNsYXNzZXMiLCJjbGFzc0xpc3QiLCJfb25LZXlEb3duIiwib25LZXlQcmVzcyIsIm9uS2V5VXAiLCJfb25Gb2N1cyIsIl9yZW5kZXJIaWRkZW5JbnB1dCIsImRpc2FibGVkIiwiaW5wdXRQcm9wcyIsInBsYWNlaG9sZGVyIiwiX29uQ2hhbmdlIiwiX29uQmx1ciIsIl9yZW5kZXJJbmNyZW1lbnRhbFNlYXJjaFJlc3VsdHMiLCJwcmV2T3B0aW9ucyIsIkNvbXBvbmVudCIsInRleHRhcmVhIiwiaW5wdXREaXNwbGF5T3B0aW9uIiwiTGlzdEl0ZW0iLCJpbnB1dEljb24iLCJTZWFyY2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVBLElBQU1BLGFBQWEsR0FBRyxXQUF0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFNQSxJQUFNQyxnQkFBZ0IsR0FBR0MsNkJBQU9DLEdBQVYsME5BR0EsVUFBQUMsS0FBSztBQUFBLFNBQ3ZCQSxLQUFLLENBQUNDLEtBQU4sR0FBY0QsS0FBSyxDQUFDRSxLQUFOLENBQVlDLGlCQUExQixHQUE4Q0gsS0FBSyxDQUFDRSxLQUFOLENBQVlFLGVBRG5DO0FBQUEsQ0FITCxFQUtOLFVBQUFKLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNFLEtBQU4sQ0FBWUcsa0JBQWhCO0FBQUEsQ0FMQyxDQUF0Qjs7QUFZQSxJQUFNQyxRQUFRLEdBQUdSLDZCQUFPQyxHQUFQLENBQVdRLEtBQVgsQ0FBaUI7QUFDaENDLEVBQUFBLFNBQVMsRUFBRTtBQURxQixDQUFqQixDQUFILDJHQUFkOztBQU1BLElBQU1DLGNBQWMsR0FBR1gsNkJBQU9ZLEtBQVYsb0tBQ2hCLFVBQUFWLEtBQUs7QUFBQSxTQUFLQSxLQUFLLENBQUNDLEtBQU4sR0FBY0QsS0FBSyxDQUFDRSxLQUFOLENBQVlTLE9BQTFCLEdBQW9DWCxLQUFLLENBQUNFLEtBQU4sQ0FBWVUsY0FBckQ7QUFBQSxDQURXLEVBR0ksVUFBQVosS0FBSztBQUFBLFNBQ3ZCQSxLQUFLLENBQUNDLEtBQU4sR0FBY0QsS0FBSyxDQUFDRSxLQUFOLENBQVlXLGtCQUExQixHQUErQ2IsS0FBSyxDQUFDRSxLQUFOLENBQVlZLGlCQURwQztB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QUFBLFNBQVMsRUFBRUMsYUF2QlM7QUF3QnBCOUIsRUFBQUEseUJBQXlCLEVBQUUsSUF4QlA7QUF5QnBCaEUsRUFBQUEsb0JBQW9CLEVBQUUsSUF6QkY7QUEwQnBCQyxFQUFBQSxVQUFVLEVBQUUsSUExQlE7QUEyQnBCNEQsRUFBQUEsdUJBQXVCLEVBQUU7QUEzQkwsQztBQTZWeEIscUNBQVN0RCxTQUFUO2VBRWVBLFMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjMgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZiwgRWxlbWVudFR5cGUsIEtleWJvYXJkRXZlbnRIYW5kbGVyfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3BvbHlmaWxsfSBmcm9tICdyZWFjdC1saWZlY3ljbGVzLWNvbXBhdCc7XG5pbXBvcnQgZnV6enkgZnJvbSAnZnV6enknO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Y29uc29sZSBhcyBDb25zb2xlfSBmcm9tICdnbG9iYWwvd2luZG93JztcblxuaW1wb3J0IEFjY2Vzc29yIGZyb20gJy4vYWNjZXNzb3InO1xuaW1wb3J0IERyb3Bkb3duTGlzdCwge0xpc3RJdGVtfSBmcm9tICcuL2Ryb3Bkb3duLWxpc3QnO1xuaW1wb3J0IHtTZWFyY2h9IGZyb20gJy4uL2ljb25zJztcbmltcG9ydCB7S2V5RXZlbnR9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuY29uc3QgREVGQVVMVF9DTEFTUyA9ICd0eXBlYWhlYWQnO1xuLyoqXG4gKiBDb3BpZWQgbW9zdGx5IGZyb20gJ3JlYWN0LXR5cGVhaGVhZCcsIGFuIGF1dG8tY29tcGxldGluZyB0ZXh0IGlucHV0XG4gKlxuICogUmVuZGVycyBhbiB0ZXh0IGlucHV0IHRoYXQgc2hvd3Mgb3B0aW9ucyBuZWFyYnkgdGhhdCB5b3UgY2FuIHVzZSB0aGVcbiAqIGtleWJvYXJkIG9yIG1vdXNlIHRvIHNlbGVjdC5cbiAqL1xuXG5pbnRlcmZhY2UgVHlwZWFoZWFkV3JhcHBlclByb3BzIHtcbiAgbGlnaHQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBUeXBlYWhlYWRXcmFwcGVyID0gc3R5bGVkLmRpdjxUeXBlYWhlYWRXcmFwcGVyUHJvcHM+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+XG4gICAgcHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCZ2RMVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJnZH07XG4gIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0U2hhZG93fTtcblxuICA6Zm9jdXMge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbmA7XG5cbmNvbnN0IElucHV0Qm94ID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ3R5cGVhaGVhZF9faW5wdXRfYm94J1xufSlgXG4gIHBhZGRpbmc6IDhweDtcbmA7XG5cbmNvbnN0IFR5cGVhaGVhZElucHV0ID0gc3R5bGVkLmlucHV0PFR5cGVhaGVhZFdyYXBwZXJQcm9wcz5gXG4gICR7cHJvcHMgPT4gKHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuaW5wdXRMVCA6IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0KX0gOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PlxuICAgICAgcHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5zZWxlY3RCYWNrZ3JvdW5kTFQgOiBwcm9wcy50aGVtZS5zZWNvbmRhcnlJbnB1dEJnZH07XG4gIH1cbmA7XG5cbmNvbnN0IElucHV0SWNvbiA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICd0eXBlYWhlYWRfX2lucHV0X2ljb24nXG59KWBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMTVweDtcbiAgdG9wOiAxNHB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dFBsYWNlaG9sZGVyQ29sb3J9O1xuYDtcblxuZnVuY3Rpb24gZ2VuZXJhdGVTZWFyY2hGdW5jdGlvbihwcm9wczogVHlwZWFoZWFkUHJvcHMpIHtcbiAgY29uc3Qge3NlYXJjaE9wdGlvbnMsIGZpbHRlck9wdGlvbn0gPSBwcm9wcztcbiAgaWYgKHR5cGVvZiBzZWFyY2hPcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKGZpbHRlck9wdGlvbiAhPT0gbnVsbCkge1xuICAgICAgQ29uc29sZS53YXJuKCdzZWFyY2hPcHRpb25zIHByb3AgaXMgYmVpbmcgdXNlZCwgZmlsdGVyT3B0aW9uIHByb3Agd2lsbCBiZSBpZ25vcmVkJyk7XG4gICAgfVxuICAgIHJldHVybiBzZWFyY2hPcHRpb25zO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBmaWx0ZXJPcHRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyB1c2UgY3VzdG9tIGZpbHRlciBvcHRpb25cbiAgICByZXR1cm4gKHZhbHVlLCBvcHRpb25zKSA9PiBvcHRpb25zLmZpbHRlcihvID0+IGZpbHRlck9wdGlvbih2YWx1ZSwgbykpO1xuICB9XG5cbiAgY29uc3QgbWFwcGVyID1cbiAgICB0eXBlb2YgZmlsdGVyT3B0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgPyBBY2Nlc3Nvci5nZW5lcmF0ZUFjY2Vzc29yKGZpbHRlck9wdGlvbilcbiAgICAgIDogQWNjZXNzb3IuSURFTlRJVFlfRk47XG5cbiAgcmV0dXJuICh2YWx1ZSwgb3B0aW9ucykgPT4ge1xuICAgIHJldHVybiBmdXp6eS5maWx0ZXIodmFsdWUsIG9wdGlvbnMsIHtleHRyYWN0OiBtYXBwZXJ9KS5tYXAocmVzID0+IG9wdGlvbnNbcmVzLmluZGV4XSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHNlYXJjaE9wdGlvbnNPbklucHV0KGlucHV0VmFsdWUsIHByb3BzKSB7XG4gIGNvbnN0IHNlYXJjaE9wdGlvbnMgPSBnZW5lcmF0ZVNlYXJjaEZ1bmN0aW9uKHByb3BzKTtcbiAgcmV0dXJuIHNlYXJjaE9wdGlvbnMoaW5wdXRWYWx1ZSwgcHJvcHMub3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIGdldE9wdGlvbnNGb3JWYWx1ZSh2YWx1ZSwgcHJvcHMsIHN0YXRlKSB7XG4gIGNvbnN0IHtvcHRpb25zLCBzaG93T3B0aW9uc1doZW5FbXB0eX0gPSBwcm9wcztcblxuICBpZiAoIXByb3BzLnNlYXJjaGFibGUpIHtcbiAgICAvLyBkaXJlY3RseSBwYXNzIHRocm91Z2ggb3B0aW9ucyBpZiBjYW4gbm90IGJlIHNlYXJjaGVkXG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cbiAgaWYgKHNob3VsZFNraXBTZWFyY2godmFsdWUsIHN0YXRlLCBzaG93T3B0aW9uc1doZW5FbXB0eSkpIHtcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIGNvbnN0IHNlYXJjaE9wdGlvbnMgPSBnZW5lcmF0ZVNlYXJjaEZ1bmN0aW9uKHByb3BzKTtcbiAgcmV0dXJuIHNlYXJjaE9wdGlvbnModmFsdWUsIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRTa2lwU2VhcmNoKGlucHV0LCBzdGF0ZSwgc2hvd09wdGlvbnNXaGVuRW1wdHkpIHtcbiAgY29uc3QgZW1wdHlWYWx1ZSA9ICFpbnB1dCB8fCBpbnB1dC50cmltKCkubGVuZ3RoID09PSAwO1xuXG4gIC8vIHRoaXMuc3RhdGUgbXVzdCBiZSBjaGVja2VkIGJlY2F1c2UgaXQgbWF5IG5vdCBiZSBkZWZpbmVkIHlldCBpZiB0aGlzIGZ1bmN0aW9uXG4gIC8vIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiBnZXRJbml0aWFsU3RhdGVcbiAgY29uc3QgaXNGb2N1c2VkID0gc3RhdGUgJiYgc3RhdGUuaXNGb2N1c2VkO1xuICByZXR1cm4gIShzaG93T3B0aW9uc1doZW5FbXB0eSAmJiBpc0ZvY3VzZWQpICYmIGVtcHR5VmFsdWU7XG59XG5cbmludGVyZmFjZSBUeXBlYWhlYWRQcm9wcyB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGN1c3RvbUNsYXNzZXM/OiBhbnk7XG4gIHJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlPzogc3RyaW5nO1xuICBvcHRpb25zPzogUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0IHwgdW5kZWZpbmVkPjtcbiAgZml4ZWRPcHRpb25zPzogUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0PiB8IG51bGw7XG4gIGFsbG93Q3VzdG9tVmFsdWVzPzogbnVtYmVyO1xuICBpbml0aWFsVmFsdWU/OiBzdHJpbmc7XG4gIHZhbHVlPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB0ZXh0YXJlYT86IGJvb2xlYW47XG4gIGlucHV0UHJvcHM/OiBvYmplY3Q7XG4gIG9uT3B0aW9uU2VsZWN0ZWQ/OiAob3B0aW9uOiBhbnksIGV2ZW50OiBhbnkpID0+IGFueTtcbiAgb25DaGFuZ2U/OiAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkO1xuICBvbktleURvd24/OiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkO1xuICBvbktleVByZXNzPzogS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xuICBvbktleVVwPzogS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xuICBvbkZvY3VzPzogKGV2ZW50OiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4gdm9pZDtcbiAgb25CbHVyPzogKGV2ZW50OiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkO1xuICBmaWx0ZXJPcHRpb24/OiBzdHJpbmcgfCBGdW5jdGlvbjtcbiAgc2VhcmNoT3B0aW9ucz86IEZ1bmN0aW9uO1xuICBkaXNwbGF5T3B0aW9uPzogc3RyaW5nIHwgRnVuY3Rpb247XG4gIGlucHV0RGlzcGxheU9wdGlvbj86IHN0cmluZyB8IEZ1bmN0aW9uO1xuICBmb3JtSW5wdXRPcHRpb24/OiBzdHJpbmcgfCBGdW5jdGlvbjtcbiAgZGVmYXVsdENsYXNzTmFtZXM/OiBib29sZWFuO1xuICBjdXN0b21MaXN0Q29tcG9uZW50PzogRWxlbWVudFR5cGU7XG4gIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50PzogRWxlbWVudFR5cGUgfCBGdW5jdGlvbjtcbiAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudD86IEVsZW1lbnRUeXBlIHwgRnVuY3Rpb24gfCBudWxsO1xuICBzaG93T3B0aW9uc1doZW5FbXB0eT86IGJvb2xlYW47XG4gIHNlYXJjaGFibGU/OiBib29sZWFuO1xuICBsaWdodD86IGJvb2xlYW47XG4gIGlucHV0SWNvbjogRWxlbWVudFR5cGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc2VsZWN0ZWRJdGVtcz86IGFueVtdIHwgbnVsbDtcbiAgLy8gZGVwcmVjYXRlZFxuICBtYXhWaXNpYmxlPzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgVHlwZWFoZWFkU3RhdGUge1xuICBzZWFyY2hSZXN1bHRzOiBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QgfCB1bmRlZmluZWQ+O1xuXG4gIC8vIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBzb21ldGhpbmcgZWxzZSwgJ2VudHJ5VmFsdWUnXG4gIGVudHJ5VmFsdWU/OiBzdHJpbmc7XG5cbiAgLy8gQSB2YWxpZCB0eXBlYWhlYWQgdmFsdWVcbiAgc2VsZWN0aW9uPzogc3RyaW5nO1xuXG4gIC8vIEluZGV4IG9mIHRoZSBzZWxlY3Rpb25cbiAgc2VsZWN0aW9uSW5kZXg6IG51bGw7XG5cbiAgLy8gS2VlcCB0cmFjayBvZiB0aGUgZm9jdXMgc3RhdGUgb2YgdGhlIGlucHV0IGVsZW1lbnQsIHRvIGRldGVybWluZVxuICAvLyB3aGV0aGVyIHRvIHNob3cgb3B0aW9ucyB3aGVuIGVtcHR5IChpZiBzaG93T3B0aW9uc1doZW5FbXB0eSBpcyB0cnVlKVxuICBpc0ZvY3VzZWQ6IGJvb2xlYW47XG59XG5cbmNsYXNzIFR5cGVhaGVhZCBleHRlbmRzIENvbXBvbmVudDxUeXBlYWhlYWRQcm9wcywgVHlwZWFoZWFkU3RhdGU+IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBvcHRpb25zOiBbXSxcbiAgICBjdXN0b21DbGFzc2VzOiB7fSxcbiAgICBhbGxvd0N1c3RvbVZhbHVlczogMCxcbiAgICBpbml0aWFsVmFsdWU6ICcnLFxuICAgIHZhbHVlOiAnJyxcbiAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIHRleHRhcmVhOiBmYWxzZSxcbiAgICBpbnB1dFByb3BzOiB7fSxcbiAgICBvbk9wdGlvblNlbGVjdGVkKG9wdGlvbikge30sXG4gICAgb25DaGFuZ2UoZXZlbnQpIHt9LFxuICAgIG9uS2V5RG93bihldmVudCkge30sXG4gICAgb25LZXlQcmVzcyhldmVudCkge30sXG4gICAgb25LZXlVcChldmVudCkge30sXG4gICAgb25Gb2N1cyhldmVudCkge30sXG4gICAgb25CbHVyKGV2ZW50KSB7fSxcbiAgICBmaWx0ZXJPcHRpb246IG51bGwsXG4gICAgc2VhcmNoT3B0aW9uczogbnVsbCxcbiAgICBpbnB1dERpc3BsYXlPcHRpb246IG51bGwsXG4gICAgZGVmYXVsdENsYXNzTmFtZXM6IHRydWUsXG4gICAgY3VzdG9tTGlzdENvbXBvbmVudDogRHJvcGRvd25MaXN0LFxuICAgIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50OiBMaXN0SXRlbSxcbiAgICBpbnB1dEljb246IFNlYXJjaCxcbiAgICBjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50OiBudWxsLFxuICAgIHNob3dPcHRpb25zV2hlbkVtcHR5OiB0cnVlLFxuICAgIHNlYXJjaGFibGU6IHRydWUsXG4gICAgcmVzdWx0c1RydW5jYXRlZE1lc3NhZ2U6IG51bGxcbiAgfTtcblxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHByb3BzLCBzdGF0ZSkge1xuICAgIGlmIChwcm9wcy5vcHRpb25zID09PSBzdGF0ZS5wcmV2T3B0aW9ucykge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8vICBpbnZva2VkIGFmdGVyIGEgY29tcG9uZW50IGlzIGluc3RhbnRpYXRlZCBhcyB3ZWxsIGFzIGJlZm9yZSBpdCBpcyByZS1yZW5kZXJlZFxuICAgIGNvbnN0IHNlYXJjaFJlc3VsdHMgPSBnZXRPcHRpb25zRm9yVmFsdWUoc3RhdGUuZW50cnlWYWx1ZSwgcHJvcHMsIHN0YXRlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzZWFyY2hSZXN1bHRzLFxuICAgICAgcHJldk9wdGlvbnM6IHByb3BzLm9wdGlvbnNcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgLy8gaW5pdGlhdGUgc2VhcmNoUmVzdWx0cyB3aXRoIG9wdGlvbnNcbiAgICAgIHNlYXJjaFJlc3VsdHM6IHRoaXMucHJvcHMub3B0aW9ucyB8fCBbXSxcblxuICAgICAgLy8gVGhpcyBzaG91bGQgYmUgY2FsbGVkIHNvbWV0aGluZyBlbHNlLCAnZW50cnlWYWx1ZSdcbiAgICAgIGVudHJ5VmFsdWU6IHRoaXMucHJvcHMudmFsdWUgfHwgdGhpcy5wcm9wcy5pbml0aWFsVmFsdWUsXG5cbiAgICAgIC8vIEEgdmFsaWQgdHlwZWFoZWFkIHZhbHVlXG4gICAgICBzZWxlY3Rpb246IHRoaXMucHJvcHMudmFsdWUsXG5cbiAgICAgIC8vIEluZGV4IG9mIHRoZSBzZWxlY3Rpb25cbiAgICAgIHNlbGVjdGlvbkluZGV4OiBudWxsLFxuXG4gICAgICAvLyBLZWVwIHRyYWNrIG9mIHRoZSBmb2N1cyBzdGF0ZSBvZiB0aGUgaW5wdXQgZWxlbWVudCwgdG8gZGV0ZXJtaW5lXG4gICAgICAvLyB3aGV0aGVyIHRvIHNob3cgb3B0aW9ucyB3aGVuIGVtcHR5IChpZiBzaG93T3B0aW9uc1doZW5FbXB0eSBpcyB0cnVlKVxuICAgICAgaXNGb2N1c2VkOiBmYWxzZVxuICAgIH07XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAvLyBjYWxsIGZvY3VzIG9uIGVudHJ5IG9yIGRpdiB0byB0cmlnZ2VyIGtleSBldmVudHMgbGlzdGVuZXJcbiAgICBpZiAodGhpcy5lbnRyeS5jdXJyZW50KSB7XG4gICAgICB0aGlzLmVudHJ5LmN1cnJlbnQuZm9jdXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb290LmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcm9vdCA9IGNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbiAgZW50cnkgPSBjcmVhdGVSZWY8SFRNTElucHV0RWxlbWVudD4oKTtcblxuICBmb2N1cyA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5lbnRyeS5jdXJyZW50KSB7XG4gICAgICB0aGlzLmVudHJ5LmN1cnJlbnQuZm9jdXMoKTtcbiAgICB9XG4gIH07XG5cbiAgX2hhc0N1c3RvbVZhbHVlID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBOdW1iZXIodGhpcy5wcm9wcy5hbGxvd0N1c3RvbVZhbHVlcykgPiAwICYmXG4gICAgICBOdW1iZXIodGhpcy5zdGF0ZS5lbnRyeVZhbHVlPy5sZW5ndGgpID49IE51bWJlcih0aGlzLnByb3BzLmFsbG93Q3VzdG9tVmFsdWVzKSAmJlxuICAgICAgdGhpcy5zdGF0ZS5zZWFyY2hSZXN1bHRzLmluZGV4T2YodGhpcy5zdGF0ZS5lbnRyeVZhbHVlKSA8IDBcbiAgICApO1xuICB9O1xuXG4gIF9nZXRDdXN0b21WYWx1ZSA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5faGFzQ3VzdG9tVmFsdWUoKSA/IHRoaXMuc3RhdGUuZW50cnlWYWx1ZSA6IG51bGw7XG4gIH07XG5cbiAgX3JlbmRlckluY3JlbWVudGFsU2VhcmNoUmVzdWx0cygpIHtcbiAgICBjb25zdCB7Y3VzdG9tTGlzdENvbXBvbmVudDogQ3VzdG9tTGlzdENvbXBvbmVudCA9IERyb3Bkb3duTGlzdH0gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiAoXG4gICAgICA8Q3VzdG9tTGlzdENvbXBvbmVudFxuICAgICAgICBmaXhlZE9wdGlvbnM9e3RoaXMucHJvcHMuZml4ZWRPcHRpb25zfVxuICAgICAgICBvcHRpb25zPXt0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHN9XG4gICAgICAgIGFyZVJlc3VsdHNUcnVuY2F0ZWQ9e2ZhbHNlfVxuICAgICAgICByZXN1bHRzVHJ1bmNhdGVkTWVzc2FnZT17dGhpcy5wcm9wcy5yZXN1bHRzVHJ1bmNhdGVkTWVzc2FnZX1cbiAgICAgICAgb25PcHRpb25TZWxlY3RlZD17dGhpcy5fb25PcHRpb25TZWxlY3RlZH1cbiAgICAgICAgYWxsb3dDdXN0b21WYWx1ZXM9e3RoaXMucHJvcHMuYWxsb3dDdXN0b21WYWx1ZXN9XG4gICAgICAgIGN1c3RvbVZhbHVlPXt0aGlzLl9nZXRDdXN0b21WYWx1ZSgpfVxuICAgICAgICBjdXN0b21DbGFzc2VzPXt0aGlzLnByb3BzLmN1c3RvbUNsYXNzZXN9XG4gICAgICAgIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50PXt0aGlzLnByb3BzLmN1c3RvbUxpc3RJdGVtQ29tcG9uZW50fVxuICAgICAgICBjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50PXt0aGlzLnByb3BzLmN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnR9XG4gICAgICAgIHNlbGVjdGlvbkluZGV4PXt0aGlzLnN0YXRlLnNlbGVjdGlvbkluZGV4fVxuICAgICAgICBkZWZhdWx0Q2xhc3NOYW1lcz17dGhpcy5wcm9wcy5kZWZhdWx0Q2xhc3NOYW1lc31cbiAgICAgICAgZGlzcGxheU9wdGlvbj17dGhpcy5wcm9wcy5kaXNwbGF5T3B0aW9ufVxuICAgICAgICBzZWxlY3RlZEl0ZW1zPXt0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXN9XG4gICAgICAgIGxpZ2h0PXt0aGlzLnByb3BzLmxpZ2h0fVxuICAgICAgLz5cbiAgICApO1xuICB9XG5cbiAgZ2V0U2VsZWN0aW9uKCkge1xuICAgIGxldCBpbmRleDogbnVtYmVyIHwgbnVsbCA9IHRoaXMuc3RhdGUuc2VsZWN0aW9uSW5kZXg7XG4gICAgaWYgKGluZGV4ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaW5kZXggPSBOdW1iZXIoaW5kZXgpO1xuXG4gICAgaWYgKHRoaXMuX2hhc0N1c3RvbVZhbHVlKCkpIHtcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5lbnRyeVZhbHVlO1xuICAgICAgfVxuICAgICAgaW5kZXgtLTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2hhc0ZpeGVkT3B0aW9ucygpKSB7XG4gICAgICByZXR1cm4gaW5kZXggPCBOdW1iZXIodGhpcy5wcm9wcy5maXhlZE9wdGlvbnM/Lmxlbmd0aClcbiAgICAgICAgPyB0aGlzLnByb3BzLmZpeGVkT3B0aW9ucz8uW2luZGV4XVxuICAgICAgICA6IHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0c1tpbmRleCAtIE51bWJlcih0aGlzLnByb3BzLmZpeGVkT3B0aW9ucz8ubGVuZ3RoKV07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHNbaW5kZXhdO1xuICB9XG5cbiAgX29uT3B0aW9uU2VsZWN0ZWQgPSAob3B0aW9uLCBldmVudCkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLnNlYXJjaGFibGUpIHtcbiAgICAgIC8vIHJlc2V0IGVudHJ5IGlucHV0XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgLy8gcmVzZXQgc2VhcmNoIG9wdGlvbnMgd2hlbiBzZWxlY3Rpb24gaGFzIGJlZW4gbWFkZVxuICAgICAgICBzZWFyY2hSZXN1bHRzOiB0aGlzLnByb3BzLm9wdGlvbnMgfHwgW10sXG4gICAgICAgIHNlbGVjdGlvbjogJycsXG4gICAgICAgIGVudHJ5VmFsdWU6ICcnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLm9uT3B0aW9uU2VsZWN0ZWQ/LihvcHRpb24sIGV2ZW50KTtcbiAgfTtcblxuICAvLyB1c2UgKCkgPT4ge30gdG8gYXZvaWQgYmluZGluZyAndGhpcydcbiAgX29uVGV4dEVudHJ5VXBkYXRlZCA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5zZWFyY2hhYmxlKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZW50cnkuY3VycmVudD8udmFsdWU7XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBzZWFyY2hSZXN1bHRzOiBzZWFyY2hPcHRpb25zT25JbnB1dCh2YWx1ZSwgdGhpcy5wcm9wcyksXG4gICAgICAgIHNlbGVjdGlvbjogJycsXG4gICAgICAgIGVudHJ5VmFsdWU6IHZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgX29uRW50ZXIgPSBldmVudCA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoIXNlbGVjdGlvbikge1xuICAgICAgdGhpcy5wcm9wcy5vbktleURvd24/LihldmVudCk7XG4gICAgfVxuICAgIHRoaXMuX29uT3B0aW9uU2VsZWN0ZWQoc2VsZWN0aW9uLCBldmVudCk7XG4gIH07XG5cbiAgX29uRXNjYXBlID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgc2VsZWN0aW9uSW5kZXg6IG51bGxcbiAgICB9KTtcbiAgfTtcblxuICBfb25UYWIgPSBldmVudCA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICBsZXQgb3B0aW9uID0gc2VsZWN0aW9uXG4gICAgICA/IHNlbGVjdGlvblxuICAgICAgOiB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHMubGVuZ3RoID4gMFxuICAgICAgPyB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHNbMF1cbiAgICAgIDogbnVsbDtcblxuICAgIGlmIChvcHRpb24gPT09IG51bGwgJiYgdGhpcy5faGFzQ3VzdG9tVmFsdWUoKSkge1xuICAgICAgb3B0aW9uID0gdGhpcy5fZ2V0Q3VzdG9tVmFsdWUoKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9uICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5fb25PcHRpb25TZWxlY3RlZChvcHRpb24sIGV2ZW50KTtcbiAgICB9XG4gIH07XG5cbiAgZXZlbnRNYXAgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnRzID0ge307XG5cbiAgICBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX1VQXSA9IHRoaXMubmF2VXA7XG4gICAgZXZlbnRzW0tleUV2ZW50LkRPTV9WS19ET1dOXSA9IHRoaXMubmF2RG93bjtcbiAgICBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX1JFVFVSTl0gPSBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX0VOVEVSXSA9IHRoaXMuX29uRW50ZXI7XG4gICAgZXZlbnRzW0tleUV2ZW50LkRPTV9WS19FU0NBUEVdID0gdGhpcy5fb25Fc2NhcGU7XG4gICAgZXZlbnRzW0tleUV2ZW50LkRPTV9WS19UQUJdID0gdGhpcy5fb25UYWI7XG5cbiAgICByZXR1cm4gZXZlbnRzO1xuICB9O1xuXG4gIF9uYXYgPSBkZWx0YSA9PiB7XG4gICAgaWYgKCF0aGlzLl9oYXNIaW50KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IG5ld0luZGV4ID1cbiAgICAgIHRoaXMuc3RhdGUuc2VsZWN0aW9uSW5kZXggPT09IG51bGxcbiAgICAgICAgPyBkZWx0YSA9PT0gMVxuICAgICAgICAgID8gMFxuICAgICAgICAgIDogZGVsdGFcbiAgICAgICAgOiB0aGlzLnN0YXRlLnNlbGVjdGlvbkluZGV4ICsgZGVsdGE7XG4gICAgbGV0IGxlbmd0aCA9IHRoaXMucHJvcHMubWF4VmlzaWJsZVxuICAgICAgPyB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHMuc2xpY2UoMCwgdGhpcy5wcm9wcy5tYXhWaXNpYmxlKS5sZW5ndGhcbiAgICAgIDogdGhpcy5zdGF0ZS5zZWFyY2hSZXN1bHRzLmxlbmd0aDtcbiAgICBpZiAodGhpcy5faGFzQ3VzdG9tVmFsdWUoKSkge1xuICAgICAgbGVuZ3RoICs9IDE7XG4gICAgfVxuXG4gICAgaWYgKG5ld0luZGV4IDwgMCkge1xuICAgICAgbmV3SW5kZXggKz0gbGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAobmV3SW5kZXggPj0gbGVuZ3RoKSB7XG4gICAgICBuZXdJbmRleCAtPSBsZW5ndGg7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7c2VsZWN0aW9uSW5kZXg6IG5ld0luZGV4fSk7XG4gIH07XG5cbiAgbmF2RG93biA9ICgpID0+IHtcbiAgICB0aGlzLl9uYXYoMSk7XG4gIH07XG5cbiAgbmF2VXAgPSAoKSA9PiB7XG4gICAgdGhpcy5fbmF2KC0xKTtcbiAgfTtcblxuICBfb25DaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IGV2ZW50ID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSkge1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShldmVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5fb25UZXh0RW50cnlVcGRhdGVkKCk7XG4gIH07XG5cbiAgX29uS2V5RG93bjogUmVhY3QuS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+ID0gZXZlbnQgPT4ge1xuICAgIC8vIElmIHRoZXJlIGFyZSBubyB2aXNpYmxlIGVsZW1lbnRzLCBkb24ndCBwZXJmb3JtIHNlbGVjdG9yIG5hdmlnYXRpb24uXG4gICAgLy8gSnVzdCBwYXNzIHRoaXMgdXAgdG8gdGhlIHVwc3RyZWFtIG9uS2V5ZG93biBoYW5kbGVyLlxuICAgIC8vIEFsc28gc2tpcCBpZiB0aGUgdXNlciBpcyBwcmVzc2luZyB0aGUgc2hpZnQga2V5LCBzaW5jZSBub25lIG9mIG91ciBoYW5kbGVycyBhcmUgbG9va2luZyBmb3Igc2hpZnRcbiAgICBpZiAoIXRoaXMuX2hhc0hpbnQoKSB8fCBldmVudC5zaGlmdEtleSkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMub25LZXlEb3duPy4oZXZlbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLmV2ZW50TWFwKClbZXZlbnQua2V5Q29kZV07XG5cbiAgICBpZiAoaGFuZGxlcikge1xuICAgICAgaGFuZGxlcihldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm9uS2V5RG93bj8uKGV2ZW50KTtcbiAgICB9XG4gICAgLy8gRG9uJ3QgcHJvcGFnYXRlIHRoZSBrZXlzdHJva2UgYmFjayB0byB0aGUgRE9NL2Jyb3dzZXJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIF9vbkZvY3VzOiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD4gPSBldmVudCA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7aXNGb2N1c2VkOiB0cnVlfSk7XG4gICAgaWYgKHRoaXMucHJvcHMub25Gb2N1cykge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMub25Gb2N1cyhldmVudCk7XG4gICAgfVxuICB9O1xuXG4gIF9vbkJsdXI6IFJlYWN0LkZvY3VzRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gZXZlbnQgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe2lzRm9jdXNlZDogZmFsc2V9KTtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkJsdXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm9uQmx1cihldmVudCk7XG4gICAgfVxuICB9O1xuXG4gIF9yZW5kZXJIaWRkZW5JbnB1dCgpIHtcbiAgICBpZiAoIXRoaXMucHJvcHMubmFtZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT17dGhpcy5wcm9wcy5uYW1lfSB2YWx1ZT17dGhpcy5zdGF0ZS5zZWxlY3Rpb259IC8+O1xuICB9XG5cbiAgX2hhc0hpbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwIHx8IHRoaXMuX2hhc0N1c3RvbVZhbHVlKCk7XG4gIH1cblxuICBfaGFzRml4ZWRPcHRpb25zKCkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMucHJvcHMuZml4ZWRPcHRpb25zKSAmJiB0aGlzLnByb3BzLmZpeGVkT3B0aW9ucy5sZW5ndGg7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgaW5wdXRDbGFzc2VzID0ge307XG4gICAgaW5wdXRDbGFzc2VzW3RoaXMucHJvcHMuY3VzdG9tQ2xhc3Nlcz8uaW5wdXRdID0gQm9vbGVhbih0aGlzLnByb3BzLmN1c3RvbUNsYXNzZXM/LmlucHV0KTtcbiAgICBjb25zdCBpbnB1dENsYXNzTGlzdCA9IGNsYXNzTmFtZXMoaW5wdXRDbGFzc2VzKTtcblxuICAgIGNvbnN0IGNsYXNzZXMgPSB7XG4gICAgICBbREVGQVVMVF9DTEFTU106IHRoaXMucHJvcHMuZGVmYXVsdENsYXNzTmFtZXNcbiAgICB9O1xuICAgIGNsYXNzZXNbdGhpcy5wcm9wcy5jbGFzc05hbWUgPyB0aGlzLnByb3BzLmNsYXNzTmFtZSA6ICcnXSA9IEJvb2xlYW4odGhpcy5wcm9wcy5jbGFzc05hbWUpO1xuICAgIGNvbnN0IGNsYXNzTGlzdCA9IGNsYXNzTmFtZXMoY2xhc3Nlcyk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFR5cGVhaGVhZFdyYXBwZXJcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc0xpc3R9XG4gICAgICAgIHJlZj17dGhpcy5yb290fVxuICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgb25LZXlEb3duPXt0aGlzLl9vbktleURvd259XG4gICAgICAgIG9uS2V5UHJlc3M9e3RoaXMucHJvcHMub25LZXlQcmVzc31cbiAgICAgICAgb25LZXlVcD17dGhpcy5wcm9wcy5vbktleVVwfVxuICAgICAgICBvbkZvY3VzPXt0aGlzLl9vbkZvY3VzfVxuICAgICAgICBsaWdodD17dGhpcy5wcm9wcy5saWdodH1cbiAgICAgID5cbiAgICAgICAge3RoaXMuX3JlbmRlckhpZGRlbklucHV0KCl9XG4gICAgICAgIHt0aGlzLnByb3BzLnNlYXJjaGFibGUgPyAoXG4gICAgICAgICAgPElucHV0Qm94PlxuICAgICAgICAgICAgPFR5cGVhaGVhZElucHV0XG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lbnRyeX1cbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5wcm9wcy5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgey4uLnRoaXMucHJvcHMuaW5wdXRQcm9wc31cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3RoaXMucHJvcHMucGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17aW5wdXRDbGFzc0xpc3R9XG4gICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLmVudHJ5VmFsdWV9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLl9vbkNoYW5nZX1cbiAgICAgICAgICAgICAgb25CbHVyPXt0aGlzLl9vbkJsdXJ9XG4gICAgICAgICAgICAgIGxpZ2h0PXt0aGlzLnByb3BzLmxpZ2h0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxJbnB1dEljb24+XG4gICAgICAgICAgICAgIDx0aGlzLnByb3BzLmlucHV0SWNvbiBoZWlnaHQ9XCIxOHB4XCIgLz5cbiAgICAgICAgICAgIDwvSW5wdXRJY29uPlxuICAgICAgICAgIDwvSW5wdXRCb3g+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7dGhpcy5fcmVuZGVySW5jcmVtZW50YWxTZWFyY2hSZXN1bHRzKCl9XG4gICAgICA8L1R5cGVhaGVhZFdyYXBwZXI+XG4gICAgKTtcbiAgfVxufVxuXG5wb2x5ZmlsbChUeXBlYWhlYWQpO1xuXG5leHBvcnQgZGVmYXVsdCBUeXBlYWhlYWQ7XG4iXX0=
498
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vaXRlbS1zZWxlY3Rvci90eXBlYWhlYWQudHN4Il0sIm5hbWVzIjpbIkRFRkFVTFRfQ0xBU1MiLCJUeXBlYWhlYWRXcmFwcGVyIiwic3R5bGVkIiwiZGl2IiwicHJvcHMiLCJsaWdodCIsInRoZW1lIiwiZHJvcGRvd25MaXN0QmdkTFQiLCJkcm9wZG93bkxpc3RCZ2QiLCJkcm9wZG93bkxpc3RTaGFkb3ciLCJJbnB1dEJveCIsImF0dHJzIiwiY2xhc3NOYW1lIiwiVHlwZWFoZWFkSW5wdXQiLCJpbnB1dCIsImlucHV0TFQiLCJzZWNvbmRhcnlJbnB1dCIsInNlbGVjdEJhY2tncm91bmRMVCIsInNlY29uZGFyeUlucHV0QmdkIiwiSW5wdXRJY29uIiwiaW5wdXRQbGFjZWhvbGRlckNvbG9yIiwiZ2VuZXJhdGVTZWFyY2hGdW5jdGlvbiIsInNlYXJjaE9wdGlvbnMiLCJmaWx0ZXJPcHRpb24iLCJDb25zb2xlIiwid2FybiIsInZhbHVlIiwib3B0aW9ucyIsImZpbHRlciIsIm8iLCJtYXBwZXIiLCJBY2Nlc3NvciIsImdlbmVyYXRlQWNjZXNzb3IiLCJJREVOVElUWV9GTiIsImZ1enp5IiwiZXh0cmFjdCIsIm1hcCIsInJlcyIsImluZGV4Iiwic2VhcmNoT3B0aW9uc09uSW5wdXQiLCJpbnB1dFZhbHVlIiwiZ2V0T3B0aW9uc0ZvclZhbHVlIiwic3RhdGUiLCJzaG93T3B0aW9uc1doZW5FbXB0eSIsInNlYXJjaGFibGUiLCJzaG91bGRTa2lwU2VhcmNoIiwiZW1wdHlWYWx1ZSIsInRyaW0iLCJsZW5ndGgiLCJpc0ZvY3VzZWQiLCJUeXBlYWhlYWQiLCJlbnRyeSIsImN1cnJlbnQiLCJmb2N1cyIsIk51bWJlciIsImFsbG93Q3VzdG9tVmFsdWVzIiwiZW50cnlWYWx1ZSIsInNlYXJjaFJlc3VsdHMiLCJpbmRleE9mIiwiX2hhc0N1c3RvbVZhbHVlIiwib3B0aW9uIiwiZXZlbnQiLCJzZXRTdGF0ZSIsInNlbGVjdGlvbiIsIm9uT3B0aW9uU2VsZWN0ZWQiLCJnZXRTZWxlY3Rpb24iLCJvbktleURvd24iLCJfb25PcHRpb25TZWxlY3RlZCIsInNlbGVjdGlvbkluZGV4IiwiX2dldEN1c3RvbVZhbHVlIiwiZXZlbnRzIiwiS2V5RXZlbnQiLCJET01fVktfVVAiLCJuYXZVcCIsIkRPTV9WS19ET1dOIiwibmF2RG93biIsIkRPTV9WS19SRVRVUk4iLCJET01fVktfRU5URVIiLCJfb25FbnRlciIsIkRPTV9WS19FU0NBUEUiLCJfb25Fc2NhcGUiLCJET01fVktfVEFCIiwiX29uVGFiIiwiZGVsdGEiLCJfaGFzSGludCIsIm5ld0luZGV4IiwibWF4VmlzaWJsZSIsInNsaWNlIiwiX25hdiIsIm9uQ2hhbmdlIiwiX29uVGV4dEVudHJ5VXBkYXRlZCIsInNoaWZ0S2V5IiwiaGFuZGxlciIsImV2ZW50TWFwIiwia2V5Q29kZSIsInByZXZlbnREZWZhdWx0Iiwib25Gb2N1cyIsIm9uQmx1ciIsImluaXRpYWxWYWx1ZSIsInJvb3QiLCJjdXN0b21MaXN0Q29tcG9uZW50IiwiQ3VzdG9tTGlzdENvbXBvbmVudCIsIkRyb3Bkb3duTGlzdCIsImZpeGVkT3B0aW9ucyIsInJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlIiwiY3VzdG9tQ2xhc3NlcyIsImN1c3RvbUxpc3RJdGVtQ29tcG9uZW50IiwiY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudCIsImRlZmF1bHRDbGFzc05hbWVzIiwiZGlzcGxheU9wdGlvbiIsInNlbGVjdGVkSXRlbXMiLCJfaGFzRml4ZWRPcHRpb25zIiwibmFtZSIsIkFycmF5IiwiaXNBcnJheSIsImlucHV0Q2xhc3NlcyIsIkJvb2xlYW4iLCJpbnB1dENsYXNzTGlzdCIsImNsYXNzZXMiLCJjbGFzc0xpc3QiLCJfb25LZXlEb3duIiwib25LZXlQcmVzcyIsIm9uS2V5VXAiLCJfb25Gb2N1cyIsIl9yZW5kZXJIaWRkZW5JbnB1dCIsImRpc2FibGVkIiwiaW5wdXRQcm9wcyIsInBsYWNlaG9sZGVyIiwiX29uQ2hhbmdlIiwiX29uQmx1ciIsIl9yZW5kZXJJbmNyZW1lbnRhbFNlYXJjaFJlc3VsdHMiLCJwcmV2T3B0aW9ucyIsIkNvbXBvbmVudCIsInRleHRhcmVhIiwiaW5wdXREaXNwbGF5T3B0aW9uIiwiTGlzdEl0ZW0iLCJpbnB1dEljb24iLCJTZWFyY2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBRUEsSUFBTUEsYUFBYSxHQUFHLFdBQXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQU1BLElBQU1DLGdCQUFnQixHQUFHQyw2QkFBT0MsR0FBViwwTkFHQSxVQUFBQyxLQUFLO0FBQUEsU0FDdkJBLEtBQUssQ0FBQ0MsS0FBTixHQUFjRCxLQUFLLENBQUNFLEtBQU4sQ0FBWUMsaUJBQTFCLEdBQThDSCxLQUFLLENBQUNFLEtBQU4sQ0FBWUUsZUFEbkM7QUFBQSxDQUhMLEVBS04sVUFBQUosS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0UsS0FBTixDQUFZRyxrQkFBaEI7QUFBQSxDQUxDLENBQXRCOztBQVlBLElBQU1DLFFBQVEsR0FBR1IsNkJBQU9DLEdBQVAsQ0FBV1EsS0FBWCxDQUFpQjtBQUNoQ0MsRUFBQUEsU0FBUyxFQUFFO0FBRHFCLENBQWpCLENBQUgsMkdBQWQ7O0FBTUEsSUFBTUMsY0FBYyxHQUFHWCw2QkFBT1ksS0FBVixvS0FDaEIsVUFBQVYsS0FBSztBQUFBLFNBQUtBLEtBQUssQ0FBQ0MsS0FBTixHQUFjRCxLQUFLLENBQUNFLEtBQU4sQ0FBWVMsT0FBMUIsR0FBb0NYLEtBQUssQ0FBQ0UsS0FBTixDQUFZVSxjQUFyRDtBQUFBLENBRFcsRUFHSSxVQUFBWixLQUFLO0FBQUEsU0FDdkJBLEtBQUssQ0FBQ0MsS0FBTixHQUFjRCxLQUFLLENBQUNFLEtBQU4sQ0FBWVcsa0JBQTFCLEdBQStDYixLQUFLLENBQUNFLEtBQU4sQ0FBWVksaUJBRHBDO0FBQUEsQ0FIVCxDQUFwQjs7QUFRQSxJQUFNQyxTQUFTLEdBQUdqQiw2QkFBT0MsR0FBUCxDQUFXUSxLQUFYLENBQWlCO0FBQ2pDQyxFQUFBQSxTQUFTLEVBQUU7QUFEc0IsQ0FBakIsQ0FBSCxnS0FNSixVQUFBUixLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDRSxLQUFOLENBQVljLHFCQUFoQjtBQUFBLENBTkQsQ0FBZjs7QUFTQSxTQUFTQyxzQkFBVCxDQUFnQ2pCLEtBQWhDLEVBQXVEO0FBQUEsTUFDOUNrQixhQUQ4QyxHQUNmbEIsS0FEZSxDQUM5Q2tCLGFBRDhDO0FBQUEsTUFDL0JDLFlBRCtCLEdBQ2ZuQixLQURlLENBQy9CbUIsWUFEK0I7O0FBRXJELE1BQUksT0FBT0QsYUFBUCxLQUF5QixVQUE3QixFQUF5QztBQUN2QyxRQUFJQyxZQUFZLEtBQUssSUFBckIsRUFBMkI7QUFDekJDLHNCQUFRQyxJQUFSLENBQWEscUVBQWI7QUFDRDs7QUFDRCxXQUFPSCxhQUFQO0FBQ0QsR0FMRCxNQUtPLElBQUksT0FBT0MsWUFBUCxLQUF3QixVQUE1QixFQUF3QztBQUM3QztBQUNBLFdBQU8sVUFBQ0csS0FBRCxFQUFRQyxPQUFSO0FBQUEsYUFBb0JBLE9BQU8sQ0FBQ0MsTUFBUixDQUFlLFVBQUFDLENBQUM7QUFBQSxlQUFJTixZQUFZLENBQUNHLEtBQUQsRUFBUUcsQ0FBUixDQUFoQjtBQUFBLE9BQWhCLENBQXBCO0FBQUEsS0FBUDtBQUNEOztBQUVELE1BQU1DLE1BQU0sR0FDVixPQUFPUCxZQUFQLEtBQXdCLFFBQXhCLEdBQ0lRLHFCQUFTQyxnQkFBVCxDQUEwQlQsWUFBMUIsQ0FESixHQUVJUSxxQkFBU0UsV0FIZjtBQUtBLFNBQU8sVUFBQ1AsS0FBRCxFQUFRQyxPQUFSLEVBQW9CO0FBQ3pCLFdBQU9PLGtCQUFNTixNQUFOLENBQWFGLEtBQWIsRUFBb0JDLE9BQXBCLEVBQTZCO0FBQUNRLE1BQUFBLE9BQU8sRUFBRUw7QUFBVixLQUE3QixFQUFnRE0sR0FBaEQsQ0FBb0QsVUFBQUMsR0FBRztBQUFBLGFBQUlWLE9BQU8sQ0FBQ1UsR0FBRyxDQUFDQyxLQUFMLENBQVg7QUFBQSxLQUF2RCxDQUFQO0FBQ0QsR0FGRDtBQUdEOztBQUVELFNBQVNDLG9CQUFULENBQThCQyxVQUE5QixFQUEwQ3BDLEtBQTFDLEVBQWlEO0FBQy9DLE1BQU1rQixhQUFhLEdBQUdELHNCQUFzQixDQUFDakIsS0FBRCxDQUE1QztBQUNBLFNBQU9rQixhQUFhLENBQUNrQixVQUFELEVBQWFwQyxLQUFLLENBQUN1QixPQUFuQixDQUFwQjtBQUNEOztBQUVELFNBQVNjLGtCQUFULENBQTRCZixLQUE1QixFQUFtQ3RCLEtBQW5DLEVBQTBDc0MsS0FBMUMsRUFBaUQ7QUFBQSxNQUN4Q2YsT0FEd0MsR0FDUHZCLEtBRE8sQ0FDeEN1QixPQUR3QztBQUFBLE1BQy9CZ0Isb0JBRCtCLEdBQ1B2QyxLQURPLENBQy9CdUMsb0JBRCtCOztBQUcvQyxNQUFJLENBQUN2QyxLQUFLLENBQUN3QyxVQUFYLEVBQXVCO0FBQ3JCO0FBQ0EsV0FBT2pCLE9BQVA7QUFDRDs7QUFDRCxNQUFJa0IsZ0JBQWdCLENBQUNuQixLQUFELEVBQVFnQixLQUFSLEVBQWVDLG9CQUFmLENBQXBCLEVBQTBEO0FBQ3hELFdBQU9oQixPQUFQO0FBQ0Q7O0FBRUQsTUFBTUwsYUFBYSxHQUFHRCxzQkFBc0IsQ0FBQ2pCLEtBQUQsQ0FBNUM7QUFDQSxTQUFPa0IsYUFBYSxDQUFDSSxLQUFELEVBQVFDLE9BQVIsQ0FBcEI7QUFDRDs7QUFFRCxTQUFTa0IsZ0JBQVQsQ0FBMEIvQixLQUExQixFQUFpQzRCLEtBQWpDLEVBQXdDQyxvQkFBeEMsRUFBOEQ7QUFDNUQsTUFBTUcsVUFBVSxHQUFHLENBQUNoQyxLQUFELElBQVVBLEtBQUssQ0FBQ2lDLElBQU4sR0FBYUMsTUFBYixLQUF3QixDQUFyRCxDQUQ0RCxDQUc1RDtBQUNBOztBQUNBLE1BQU1DLFNBQVMsR0FBR1AsS0FBSyxJQUFJQSxLQUFLLENBQUNPLFNBQWpDO0FBQ0EsU0FBTyxFQUFFTixvQkFBb0IsSUFBSU0sU0FBMUIsS0FBd0NILFVBQS9DO0FBQ0Q7O0lBMERLSSxTOzs7OztBQTZDSixxQkFBWTlDLEtBQVosRUFBbUI7QUFBQTs7QUFBQTtBQUNqQiw4QkFBTUEsS0FBTjtBQURpQiwwR0ErQlosdUJBL0JZO0FBQUEsMkdBZ0NYLHVCQWhDVztBQUFBLDhGQWtDWCxZQUFNO0FBQ1osVUFBSSxNQUFLK0MsS0FBTCxDQUFXQyxPQUFmLEVBQXdCO0FBQ3RCLGNBQUtELEtBQUwsQ0FBV0MsT0FBWCxDQUFtQkMsS0FBbkI7QUFDRDtBQUNGLEtBdENrQjtBQUFBLHdHQXdDRCxZQUFNO0FBQUE7O0FBQ3RCLGFBQ0VDLE1BQU0sQ0FBQyxNQUFLbEQsS0FBTCxDQUFXbUQsaUJBQVosQ0FBTixHQUF1QyxDQUF2QyxJQUNBRCxNQUFNLDBCQUFDLE1BQUtaLEtBQUwsQ0FBV2MsVUFBWiwwREFBQyxzQkFBdUJSLE1BQXhCLENBQU4sSUFBeUNNLE1BQU0sQ0FBQyxNQUFLbEQsS0FBTCxDQUFXbUQsaUJBQVosQ0FEL0MsSUFFQSxNQUFLYixLQUFMLENBQVdlLGFBQVgsQ0FBeUJDLE9BQXpCLENBQWlDLE1BQUtoQixLQUFMLENBQVdjLFVBQTVDLElBQTBELENBSDVEO0FBS0QsS0E5Q2tCO0FBQUEsd0dBZ0RELFlBQU07QUFDdEIsYUFBTyxNQUFLRyxlQUFMLEtBQXlCLE1BQUtqQixLQUFMLENBQVdjLFVBQXBDLEdBQWlELElBQXhEO0FBQ0QsS0FsRGtCO0FBQUEsMEdBZ0dDLFVBQUNJLE1BQUQsRUFBU0MsS0FBVCxFQUFtQjtBQUFBOztBQUNyQyxVQUFJLE1BQUt6RCxLQUFMLENBQVd3QyxVQUFmLEVBQTJCO0FBQ3pCO0FBQ0EsY0FBS2tCLFFBQUwsQ0FBYztBQUNaO0FBQ0FMLFVBQUFBLGFBQWEsRUFBRSxNQUFLckQsS0FBTCxDQUFXdUIsT0FBWCxJQUFzQixFQUZ6QjtBQUdab0MsVUFBQUEsU0FBUyxFQUFFLEVBSEM7QUFJWlAsVUFBQUEsVUFBVSxFQUFFO0FBSkEsU0FBZDtBQU1EOztBQUVELG9EQUFLcEQsS0FBTCxFQUFXNEQsZ0JBQVgsa0dBQThCSixNQUE5QixFQUFzQ0MsS0FBdEM7QUFDRCxLQTVHa0I7QUFBQSw0R0ErR0csWUFBTTtBQUMxQixVQUFJLE1BQUt6RCxLQUFMLENBQVd3QyxVQUFmLEVBQTJCO0FBQUE7O0FBQ3pCLFlBQU1sQixLQUFLLDBCQUFHLE1BQUt5QixLQUFMLENBQVdDLE9BQWQsd0RBQUcsb0JBQW9CMUIsS0FBbEM7O0FBRUEsY0FBS29DLFFBQUwsQ0FBYztBQUNaTCxVQUFBQSxhQUFhLEVBQUVsQixvQkFBb0IsQ0FBQ2IsS0FBRCxFQUFRLE1BQUt0QixLQUFiLENBRHZCO0FBRVoyRCxVQUFBQSxTQUFTLEVBQUUsRUFGQztBQUdaUCxVQUFBQSxVQUFVLEVBQUU5QjtBQUhBLFNBQWQ7QUFLRDtBQUNGLEtBekhrQjtBQUFBLGlHQTJIUixVQUFBbUMsS0FBSyxFQUFJO0FBQ2xCLFVBQU1FLFNBQVMsR0FBRyxNQUFLRSxZQUFMLEVBQWxCOztBQUNBLFVBQUksQ0FBQ0YsU0FBTCxFQUFnQjtBQUFBOztBQUNkLHVEQUFLM0QsS0FBTCxFQUFXOEQsU0FBWCxtR0FBdUJMLEtBQXZCO0FBQ0Q7O0FBQ0QsWUFBS00saUJBQUwsQ0FBdUJKLFNBQXZCLEVBQWtDRixLQUFsQztBQUNELEtBaklrQjtBQUFBLGtHQW1JUCxZQUFNO0FBQ2hCLFlBQUtDLFFBQUwsQ0FBYztBQUNaTSxRQUFBQSxjQUFjLEVBQUU7QUFESixPQUFkO0FBR0QsS0F2SWtCO0FBQUEsK0ZBeUlWLFVBQUFQLEtBQUssRUFBSTtBQUNoQixVQUFNRSxTQUFTLEdBQUcsTUFBS0UsWUFBTCxFQUFsQjs7QUFDQSxVQUFJTCxNQUFNLEdBQUdHLFNBQVMsR0FDbEJBLFNBRGtCLEdBRWxCLE1BQUtyQixLQUFMLENBQVdlLGFBQVgsQ0FBeUJULE1BQXpCLEdBQWtDLENBQWxDLEdBQ0EsTUFBS04sS0FBTCxDQUFXZSxhQUFYLENBQXlCLENBQXpCLENBREEsR0FFQSxJQUpKOztBQU1BLFVBQUlHLE1BQU0sS0FBSyxJQUFYLElBQW1CLE1BQUtELGVBQUwsRUFBdkIsRUFBK0M7QUFDN0NDLFFBQUFBLE1BQU0sR0FBRyxNQUFLUyxlQUFMLEVBQVQ7QUFDRDs7QUFFRCxVQUFJVCxNQUFNLEtBQUssSUFBZixFQUFxQjtBQUNuQixlQUFPLE1BQUtPLGlCQUFMLENBQXVCUCxNQUF2QixFQUErQkMsS0FBL0IsQ0FBUDtBQUNEO0FBQ0YsS0F4SmtCO0FBQUEsaUdBMEpSLFlBQU07QUFDZixVQUFNUyxNQUFNLEdBQUcsRUFBZjtBQUVBQSxNQUFBQSxNQUFNLENBQUNDLG9CQUFTQyxTQUFWLENBQU4sR0FBNkIsTUFBS0MsS0FBbEM7QUFDQUgsTUFBQUEsTUFBTSxDQUFDQyxvQkFBU0csV0FBVixDQUFOLEdBQStCLE1BQUtDLE9BQXBDO0FBQ0FMLE1BQUFBLE1BQU0sQ0FBQ0Msb0JBQVNLLGFBQVYsQ0FBTixHQUFpQ04sTUFBTSxDQUFDQyxvQkFBU00sWUFBVixDQUFOLEdBQWdDLE1BQUtDLFFBQXRFO0FBQ0FSLE1BQUFBLE1BQU0sQ0FBQ0Msb0JBQVNRLGFBQVYsQ0FBTixHQUFpQyxNQUFLQyxTQUF0QztBQUNBVixNQUFBQSxNQUFNLENBQUNDLG9CQUFTVSxVQUFWLENBQU4sR0FBOEIsTUFBS0MsTUFBbkM7QUFFQSxhQUFPWixNQUFQO0FBQ0QsS0FwS2tCO0FBQUEsNkZBc0taLFVBQUFhLEtBQUssRUFBSTtBQUNkLFVBQUksQ0FBQyxNQUFLQyxRQUFMLEVBQUwsRUFBc0I7QUFDcEI7QUFDRDs7QUFDRCxVQUFJQyxRQUFRLEdBQ1YsTUFBSzNDLEtBQUwsQ0FBVzBCLGNBQVgsS0FBOEIsSUFBOUIsR0FDSWUsS0FBSyxLQUFLLENBQVYsR0FDRSxDQURGLEdBRUVBLEtBSE4sR0FJSSxNQUFLekMsS0FBTCxDQUFXMEIsY0FBWCxHQUE0QmUsS0FMbEM7QUFNQSxVQUFJbkMsTUFBTSxHQUFHLE1BQUs1QyxLQUFMLENBQVdrRixVQUFYLEdBQ1QsTUFBSzVDLEtBQUwsQ0FBV2UsYUFBWCxDQUF5QjhCLEtBQXpCLENBQStCLENBQS9CLEVBQWtDLE1BQUtuRixLQUFMLENBQVdrRixVQUE3QyxFQUF5RHRDLE1BRGhELEdBRVQsTUFBS04sS0FBTCxDQUFXZSxhQUFYLENBQXlCVCxNQUY3Qjs7QUFHQSxVQUFJLE1BQUtXLGVBQUwsRUFBSixFQUE0QjtBQUMxQlgsUUFBQUEsTUFBTSxJQUFJLENBQVY7QUFDRDs7QUFFRCxVQUFJcUMsUUFBUSxHQUFHLENBQWYsRUFBa0I7QUFDaEJBLFFBQUFBLFFBQVEsSUFBSXJDLE1BQVo7QUFDRCxPQUZELE1BRU8sSUFBSXFDLFFBQVEsSUFBSXJDLE1BQWhCLEVBQXdCO0FBQzdCcUMsUUFBQUEsUUFBUSxJQUFJckMsTUFBWjtBQUNEOztBQUVELFlBQUtjLFFBQUwsQ0FBYztBQUFDTSxRQUFBQSxjQUFjLEVBQUVpQjtBQUFqQixPQUFkO0FBQ0QsS0E5TGtCO0FBQUEsZ0dBZ01ULFlBQU07QUFDZCxZQUFLRyxJQUFMLENBQVUsQ0FBVjtBQUNELEtBbE1rQjtBQUFBLDhGQW9NWCxZQUFNO0FBQ1osWUFBS0EsSUFBTCxDQUFVLENBQUMsQ0FBWDtBQUNELEtBdE1rQjtBQUFBLGtHQXdNcUMsVUFBQTNCLEtBQUssRUFBSTtBQUMvRCxVQUFJLE1BQUt6RCxLQUFMLENBQVdxRixRQUFmLEVBQXlCO0FBQ3ZCLGNBQUtyRixLQUFMLENBQVdxRixRQUFYLENBQW9CNUIsS0FBcEI7QUFDRDs7QUFFRCxZQUFLNkIsbUJBQUw7QUFDRCxLQTlNa0I7QUFBQSxtR0FnTnNDLFVBQUE3QixLQUFLLEVBQUk7QUFDaEU7QUFDQTtBQUNBO0FBQ0EsVUFBSSxDQUFDLE1BQUt1QixRQUFMLEVBQUQsSUFBb0J2QixLQUFLLENBQUM4QixRQUE5QixFQUF3QztBQUFBOztBQUN0Qyx5Q0FBTyxzQkFBS3ZGLEtBQUwsRUFBVzhELFNBQWxCLDJEQUFPLDBDQUF1QkwsS0FBdkIsQ0FBUDtBQUNEOztBQUVELFVBQU0rQixPQUFPLEdBQUcsTUFBS0MsUUFBTCxHQUFnQmhDLEtBQUssQ0FBQ2lDLE9BQXRCLENBQWhCOztBQUVBLFVBQUlGLE9BQUosRUFBYTtBQUNYQSxRQUFBQSxPQUFPLENBQUMvQixLQUFELENBQVA7QUFDRCxPQUZELE1BRU87QUFBQTs7QUFDTCx5Q0FBTyxzQkFBS3pELEtBQUwsRUFBVzhELFNBQWxCLDJEQUFPLDBDQUF1QkwsS0FBdkIsQ0FBUDtBQUNELE9BZCtELENBZWhFOzs7QUFDQUEsTUFBQUEsS0FBSyxDQUFDa0MsY0FBTjtBQUNELEtBak9rQjtBQUFBLGlHQW1PaUMsVUFBQWxDLEtBQUssRUFBSTtBQUMzRCxZQUFLQyxRQUFMLENBQWM7QUFBQ2IsUUFBQUEsU0FBUyxFQUFFO0FBQVosT0FBZDs7QUFDQSxVQUFJLE1BQUs3QyxLQUFMLENBQVc0RixPQUFmLEVBQXdCO0FBQ3RCLGVBQU8sTUFBSzVGLEtBQUwsQ0FBVzRGLE9BQVgsQ0FBbUJuQyxLQUFuQixDQUFQO0FBQ0Q7QUFDRixLQXhPa0I7QUFBQSxnR0EwT2tDLFVBQUFBLEtBQUssRUFBSTtBQUM1RCxZQUFLQyxRQUFMLENBQWM7QUFBQ2IsUUFBQUEsU0FBUyxFQUFFO0FBQVosT0FBZDs7QUFDQSxVQUFJLE1BQUs3QyxLQUFMLENBQVc2RixNQUFmLEVBQXVCO0FBQ3JCLGVBQU8sTUFBSzdGLEtBQUwsQ0FBVzZGLE1BQVgsQ0FBa0JwQyxLQUFsQixDQUFQO0FBQ0Q7QUFDRixLQS9Pa0I7QUFHakIsVUFBS25CLEtBQUwsR0FBYTtBQUNYO0FBQ0FlLE1BQUFBLGFBQWEsRUFBRSxNQUFLckQsS0FBTCxDQUFXdUIsT0FBWCxJQUFzQixFQUYxQjtBQUlYO0FBQ0E2QixNQUFBQSxVQUFVLEVBQUUsTUFBS3BELEtBQUwsQ0FBV3NCLEtBQVgsSUFBb0IsTUFBS3RCLEtBQUwsQ0FBVzhGLFlBTGhDO0FBT1g7QUFDQW5DLE1BQUFBLFNBQVMsRUFBRSxNQUFLM0QsS0FBTCxDQUFXc0IsS0FSWDtBQVVYO0FBQ0EwQyxNQUFBQSxjQUFjLEVBQUUsSUFYTDtBQWFYO0FBQ0E7QUFDQW5CLE1BQUFBLFNBQVMsRUFBRTtBQWZBLEtBQWI7QUFIaUI7QUFvQmxCOzs7O1dBRUQsNkJBQW9CO0FBQ2xCO0FBQ0EsVUFBSSxLQUFLRSxLQUFMLENBQVdDLE9BQWYsRUFBd0I7QUFDdEIsYUFBS0QsS0FBTCxDQUFXQyxPQUFYLENBQW1CQyxLQUFuQjtBQUNELE9BRkQsTUFFTztBQUFBOztBQUNMLG1DQUFLOEMsSUFBTCxDQUFVL0MsT0FBViwwRUFBbUJDLEtBQW5CO0FBQ0Q7QUFDRjs7O1dBdUJELDJDQUFrQztBQUFBLGtDQUNrQyxLQUFLakQsS0FEdkMsQ0FDekJnRyxtQkFEeUI7QUFBQSxVQUNKQyxtQkFESSxzQ0FDa0JDLHdCQURsQjtBQUVoQywwQkFDRSxnQ0FBQyxtQkFBRDtBQUNFLFFBQUEsWUFBWSxFQUFFLEtBQUtsRyxLQUFMLENBQVdtRyxZQUQzQjtBQUVFLFFBQUEsT0FBTyxFQUFFLEtBQUs3RCxLQUFMLENBQVdlLGFBRnRCO0FBR0UsUUFBQSxtQkFBbUIsRUFBRSxLQUh2QjtBQUlFLFFBQUEsdUJBQXVCLEVBQUUsS0FBS3JELEtBQUwsQ0FBV29HLHVCQUp0QztBQUtFLFFBQUEsZ0JBQWdCLEVBQUUsS0FBS3JDLGlCQUx6QjtBQU1FLFFBQUEsaUJBQWlCLEVBQUUsS0FBSy9ELEtBQUwsQ0FBV21ELGlCQU5oQztBQU9FLFFBQUEsV0FBVyxFQUFFLEtBQUtjLGVBQUwsRUFQZjtBQVFFLFFBQUEsYUFBYSxFQUFFLEtBQUtqRSxLQUFMLENBQVdxRyxhQVI1QjtBQVNFLFFBQUEsdUJBQXVCLEVBQUUsS0FBS3JHLEtBQUwsQ0FBV3NHLHVCQVR0QztBQVVFLFFBQUEseUJBQXlCLEVBQUUsS0FBS3RHLEtBQUwsQ0FBV3VHLHlCQVZ4QztBQVdFLFFBQUEsY0FBYyxFQUFFLEtBQUtqRSxLQUFMLENBQVcwQixjQVg3QjtBQVlFLFFBQUEsaUJBQWlCLEVBQUUsS0FBS2hFLEtBQUwsQ0FBV3dHLGlCQVpoQztBQWFFLFFBQUEsYUFBYSxFQUFFLEtBQUt4RyxLQUFMLENBQVd5RyxhQWI1QjtBQWNFLFFBQUEsYUFBYSxFQUFFLEtBQUt6RyxLQUFMLENBQVcwRyxhQWQ1QjtBQWVFLFFBQUEsS0FBSyxFQUFFLEtBQUsxRyxLQUFMLENBQVdDO0FBZnBCLFFBREY7QUFtQkQ7OztXQUVELHdCQUFlO0FBQ2IsVUFBSWlDLEtBQW9CLEdBQUcsS0FBS0ksS0FBTCxDQUFXMEIsY0FBdEM7O0FBQ0EsVUFBSTlCLEtBQUssS0FBSyxJQUFkLEVBQW9CO0FBQ2xCLGVBQU8sSUFBUDtBQUNEOztBQUNEQSxNQUFBQSxLQUFLLEdBQUdnQixNQUFNLENBQUNoQixLQUFELENBQWQ7O0FBRUEsVUFBSSxLQUFLcUIsZUFBTCxFQUFKLEVBQTRCO0FBQzFCLFlBQUlyQixLQUFLLEtBQUssQ0FBZCxFQUFpQjtBQUNmLGlCQUFPLEtBQUtJLEtBQUwsQ0FBV2MsVUFBbEI7QUFDRDs7QUFDRGxCLFFBQUFBLEtBQUs7QUFDTjs7QUFDRCxVQUFJLEtBQUt5RSxnQkFBTCxFQUFKLEVBQTZCO0FBQUE7O0FBQzNCLGVBQU96RSxLQUFLLEdBQUdnQixNQUFNLDBCQUFDLEtBQUtsRCxLQUFMLENBQVdtRyxZQUFaLDBEQUFDLHNCQUF5QnZELE1BQTFCLENBQWQsNkJBQ0gsS0FBSzVDLEtBQUwsQ0FBV21HLFlBRFIsMkRBQ0gsdUJBQTBCakUsS0FBMUIsQ0FERyxHQUVILEtBQUtJLEtBQUwsQ0FBV2UsYUFBWCxDQUF5Qm5CLEtBQUssR0FBR2dCLE1BQU0sMkJBQUMsS0FBS2xELEtBQUwsQ0FBV21HLFlBQVosMkRBQUMsdUJBQXlCdkQsTUFBMUIsQ0FBdkMsQ0FGSjtBQUdEOztBQUNELGFBQU8sS0FBS04sS0FBTCxDQUFXZSxhQUFYLENBQXlCbkIsS0FBekIsQ0FBUDtBQUNEOzs7V0FtSkQsOEJBQXFCO0FBQ25CLFVBQUksQ0FBQyxLQUFLbEMsS0FBTCxDQUFXNEcsSUFBaEIsRUFBc0I7QUFDcEIsZUFBTyxJQUFQO0FBQ0Q7O0FBRUQsMEJBQU87QUFBTyxRQUFBLElBQUksRUFBQyxRQUFaO0FBQXFCLFFBQUEsSUFBSSxFQUFFLEtBQUs1RyxLQUFMLENBQVc0RyxJQUF0QztBQUE0QyxRQUFBLEtBQUssRUFBRSxLQUFLdEUsS0FBTCxDQUFXcUI7QUFBOUQsUUFBUDtBQUNEOzs7V0FFRCxvQkFBVztBQUNULGFBQU8sS0FBS3JCLEtBQUwsQ0FBV2UsYUFBWCxDQUF5QlQsTUFBekIsR0FBa0MsQ0FBbEMsSUFBdUMsS0FBS1csZUFBTCxFQUE5QztBQUNEOzs7V0FFRCw0QkFBbUI7QUFDakIsYUFBT3NELEtBQUssQ0FBQ0MsT0FBTixDQUFjLEtBQUs5RyxLQUFMLENBQVdtRyxZQUF6QixLQUEwQyxLQUFLbkcsS0FBTCxDQUFXbUcsWUFBWCxDQUF3QnZELE1BQXpFO0FBQ0Q7OztXQUVELGtCQUFTO0FBQUE7O0FBQ1AsVUFBTW1FLFlBQVksR0FBRyxFQUFyQjtBQUNBQSxNQUFBQSxZQUFZLDBCQUFDLEtBQUsvRyxLQUFMLENBQVdxRyxhQUFaLDBEQUFDLHNCQUEwQjNGLEtBQTNCLENBQVosR0FBZ0RzRyxPQUFPLDJCQUFDLEtBQUtoSCxLQUFMLENBQVdxRyxhQUFaLDJEQUFDLHVCQUEwQjNGLEtBQTNCLENBQXZEO0FBQ0EsVUFBTXVHLGNBQWMsR0FBRyw0QkFBV0YsWUFBWCxDQUF2QjtBQUVBLFVBQU1HLE9BQU8sd0NBQ1Z0SCxhQURVLEVBQ00sS0FBS0ksS0FBTCxDQUFXd0csaUJBRGpCLENBQWI7QUFHQVUsTUFBQUEsT0FBTyxDQUFDLEtBQUtsSCxLQUFMLENBQVdRLFNBQVgsR0FBdUIsS0FBS1IsS0FBTCxDQUFXUSxTQUFsQyxHQUE4QyxFQUEvQyxDQUFQLEdBQTREd0csT0FBTyxDQUFDLEtBQUtoSCxLQUFMLENBQVdRLFNBQVosQ0FBbkU7QUFDQSxVQUFNMkcsU0FBUyxHQUFHLDRCQUFXRCxPQUFYLENBQWxCO0FBRUEsMEJBQ0UsZ0NBQUMsZ0JBQUQ7QUFDRSxRQUFBLFNBQVMsRUFBRUMsU0FEYjtBQUVFLFFBQUEsR0FBRyxFQUFFLEtBQUtwQixJQUZaO0FBR0UsUUFBQSxRQUFRLEVBQUUsQ0FIWjtBQUlFLFFBQUEsU0FBUyxFQUFFLEtBQUtxQixVQUpsQjtBQUtFLFFBQUEsVUFBVSxFQUFFLEtBQUtwSCxLQUFMLENBQVdxSCxVQUx6QjtBQU1FLFFBQUEsT0FBTyxFQUFFLEtBQUtySCxLQUFMLENBQVdzSCxPQU50QjtBQU9FLFFBQUEsT0FBTyxFQUFFLEtBQUtDLFFBUGhCO0FBUUUsUUFBQSxLQUFLLEVBQUUsS0FBS3ZILEtBQUwsQ0FBV0M7QUFScEIsU0FVRyxLQUFLdUgsa0JBQUwsRUFWSCxFQVdHLEtBQUt4SCxLQUFMLENBQVd3QyxVQUFYLGdCQUNDLGdDQUFDLFFBQUQscUJBQ0UsZ0NBQUMsY0FBRDtBQUNFLFFBQUEsR0FBRyxFQUFFLEtBQUtPLEtBRFo7QUFFRSxRQUFBLElBQUksRUFBQyxNQUZQO0FBR0UsUUFBQSxRQUFRLEVBQUUsS0FBSy9DLEtBQUwsQ0FBV3lIO0FBSHZCLFNBSU0sS0FBS3pILEtBQUwsQ0FBVzBILFVBSmpCO0FBS0UsUUFBQSxXQUFXLEVBQUUsS0FBSzFILEtBQUwsQ0FBVzJILFdBTDFCO0FBTUUsUUFBQSxTQUFTLEVBQUVWLGNBTmI7QUFPRSxRQUFBLEtBQUssRUFBRSxLQUFLM0UsS0FBTCxDQUFXYyxVQVBwQjtBQVFFLFFBQUEsUUFBUSxFQUFFLEtBQUt3RSxTQVJqQjtBQVNFLFFBQUEsTUFBTSxFQUFFLEtBQUtDLE9BVGY7QUFVRSxRQUFBLEtBQUssRUFBRSxLQUFLN0gsS0FBTCxDQUFXQztBQVZwQixTQURGLGVBYUUsZ0NBQUMsU0FBRCxxQkFDRSxxQ0FBTSxLQUFOLENBQVksU0FBWjtBQUFzQixRQUFBLE1BQU0sRUFBQztBQUE3QixRQURGLENBYkYsQ0FERCxHQWtCRyxJQTdCTixFQThCRyxLQUFLNkgsK0JBQUwsRUE5QkgsQ0FERjtBQWtDRDs7O1dBNVRELGtDQUFnQzlILEtBQWhDLEVBQXVDc0MsS0FBdkMsRUFBOEM7QUFDNUMsVUFBSXRDLEtBQUssQ0FBQ3VCLE9BQU4sS0FBa0JlLEtBQUssQ0FBQ3lGLFdBQTVCLEVBQXlDO0FBQ3ZDLGVBQU8sRUFBUDtBQUNELE9BSDJDLENBSzVDOzs7QUFDQSxVQUFNMUUsYUFBYSxHQUFHaEIsa0JBQWtCLENBQUNDLEtBQUssQ0FBQ2MsVUFBUCxFQUFtQnBELEtBQW5CLEVBQTBCc0MsS0FBMUIsQ0FBeEM7QUFFQSxhQUFPO0FBQ0xlLFFBQUFBLGFBQWEsRUFBYkEsYUFESztBQUVMMEUsUUFBQUEsV0FBVyxFQUFFL0gsS0FBSyxDQUFDdUI7QUFGZCxPQUFQO0FBSUQ7OztFQTNDcUJ5RyxnQjs7aUNBQWxCbEYsUyxrQkFDa0I7QUFDcEJ2QixFQUFBQSxPQUFPLEVBQUUsRUFEVztBQUVwQjhFLEVBQUFBLGFBQWEsRUFBRSxFQUZLO0FBR3BCbEQsRUFBQUEsaUJBQWlCLEVBQUUsQ0FIQztBQUlwQjJDLEVBQUFBLFlBQVksRUFBRSxFQUpNO0FBS3BCeEUsRUFBQUEsS0FBSyxFQUFFLEVBTGE7QUFNcEJxRyxFQUFBQSxXQUFXLEVBQUUsRUFOTztBQU9wQkYsRUFBQUEsUUFBUSxFQUFFLEtBUFU7QUFRcEJRLEVBQUFBLFFBQVEsRUFBRSxLQVJVO0FBU3BCUCxFQUFBQSxVQUFVLEVBQUUsRUFUUTtBQVVwQjlELEVBQUFBLGdCQVZvQiw0QkFVSEosTUFWRyxFQVVLLENBQUUsQ0FWUDtBQVdwQjZCLEVBQUFBLFFBWG9CLG9CQVdYNUIsS0FYVyxFQVdKLENBQUUsQ0FYRTtBQVlwQkssRUFBQUEsU0Fab0IscUJBWVZMLEtBWlUsRUFZSCxDQUFFLENBWkM7QUFhcEI0RCxFQUFBQSxVQWJvQixzQkFhVDVELEtBYlMsRUFhRixDQUFFLENBYkE7QUFjcEI2RCxFQUFBQSxPQWRvQixtQkFjWjdELEtBZFksRUFjTCxDQUFFLENBZEc7QUFlcEJtQyxFQUFBQSxPQWZvQixtQkFlWm5DLEtBZlksRUFlTCxDQUFFLENBZkc7QUFnQnBCb0MsRUFBQUEsTUFoQm9CLGtCQWdCYnBDLEtBaEJhLEVBZ0JOLENBQUUsQ0FoQkk7QUFpQnBCdEMsRUFBQUEsWUFBWSxFQUFFLElBakJNO0FBa0JwQkQsRUFBQUEsYUFBYSxFQUFFLElBbEJLO0FBbUJwQmdILEVBQUFBLGtCQUFrQixFQUFFLElBbkJBO0FBb0JwQjFCLEVBQUFBLGlCQUFpQixFQUFFLElBcEJDO0FBcUJwQlIsRUFBQUEsbUJBQW1CLEVBQUVFLHdCQXJCRDtBQXNCcEJJLEVBQUFBLHVCQUF1QixFQUFFNkIsc0JBdEJMO0FBdUJwQkMsRUFBQUEsU0FBUyxFQUFFQyxhQXZCUztBQXdCcEI5QixFQUFBQSx5QkFBeUIsRUFBRSxJQXhCUDtBQXlCcEJoRSxFQUFBQSxvQkFBb0IsRUFBRSxJQXpCRjtBQTBCcEJDLEVBQUFBLFVBQVUsRUFBRSxJQTFCUTtBQTJCcEI0RCxFQUFBQSx1QkFBdUIsRUFBRTtBQTNCTCxDO0FBNlZ4QixxQ0FBU3RELFNBQVQ7ZUFFZUEsUyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmLCBFbGVtZW50VHlwZSwgS2V5Ym9hcmRFdmVudEhhbmRsZXJ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7cG9seWZpbGx9IGZyb20gJ3JlYWN0LWxpZmVjeWNsZXMtY29tcGF0JztcbmltcG9ydCBmdXp6eSBmcm9tICdmdXp6eSc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtjb25zb2xlIGFzIENvbnNvbGV9IGZyb20gJ2dsb2JhbC93aW5kb3cnO1xuXG5pbXBvcnQgQWNjZXNzb3IgZnJvbSAnLi9hY2Nlc3Nvcic7XG5pbXBvcnQgRHJvcGRvd25MaXN0LCB7TGlzdEl0ZW19IGZyb20gJy4vZHJvcGRvd24tbGlzdCc7XG5pbXBvcnQge1NlYXJjaH0gZnJvbSAnLi4vaWNvbnMnO1xuaW1wb3J0IHtLZXlFdmVudH0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5jb25zdCBERUZBVUxUX0NMQVNTID0gJ3R5cGVhaGVhZCc7XG4vKipcbiAqIENvcGllZCBtb3N0bHkgZnJvbSAncmVhY3QtdHlwZWFoZWFkJywgYW4gYXV0by1jb21wbGV0aW5nIHRleHQgaW5wdXRcbiAqXG4gKiBSZW5kZXJzIGFuIHRleHQgaW5wdXQgdGhhdCBzaG93cyBvcHRpb25zIG5lYXJieSB0aGF0IHlvdSBjYW4gdXNlIHRoZVxuICoga2V5Ym9hcmQgb3IgbW91c2UgdG8gc2VsZWN0LlxuICovXG5cbmludGVyZmFjZSBUeXBlYWhlYWRXcmFwcGVyUHJvcHMge1xuICBsaWdodD86IGJvb2xlYW47XG59XG5cbmNvbnN0IFR5cGVhaGVhZFdyYXBwZXIgPSBzdHlsZWQuZGl2PFR5cGVhaGVhZFdyYXBwZXJQcm9wcz5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJnZExUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkfTtcbiAgYm94LXNoYWRvdzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RTaGFkb3d9O1xuXG4gIDpmb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbiAgfVxuYDtcblxuY29uc3QgSW5wdXRCb3ggPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAndHlwZWFoZWFkX19pbnB1dF9ib3gnXG59KWBcbiAgcGFkZGluZzogOHB4O1xuYDtcblxuY29uc3QgVHlwZWFoZWFkSW5wdXQgPSBzdHlsZWQuaW5wdXQ8VHlwZWFoZWFkV3JhcHBlclByb3BzPmBcbiAgJHtwcm9wcyA9PiAocHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5pbnB1dExUIDogcHJvcHMudGhlbWUuc2Vjb25kYXJ5SW5wdXQpfSA6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+XG4gICAgICBwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLnNlbGVjdEJhY2tncm91bmRMVCA6IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0QmdkfTtcbiAgfVxuYDtcblxuY29uc3QgSW5wdXRJY29uID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ3R5cGVhaGVhZF9faW5wdXRfaWNvbidcbn0pYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAxNXB4O1xuICB0b3A6IDE0cHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0UGxhY2Vob2xkZXJDb2xvcn07XG5gO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZVNlYXJjaEZ1bmN0aW9uKHByb3BzOiBUeXBlYWhlYWRQcm9wcykge1xuICBjb25zdCB7c2VhcmNoT3B0aW9ucywgZmlsdGVyT3B0aW9ufSA9IHByb3BzO1xuICBpZiAodHlwZW9mIHNlYXJjaE9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoZmlsdGVyT3B0aW9uICE9PSBudWxsKSB7XG4gICAgICBDb25zb2xlLndhcm4oJ3NlYXJjaE9wdGlvbnMgcHJvcCBpcyBiZWluZyB1c2VkLCBmaWx0ZXJPcHRpb24gcHJvcCB3aWxsIGJlIGlnbm9yZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlYXJjaE9wdGlvbnM7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGZpbHRlck9wdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIHVzZSBjdXN0b20gZmlsdGVyIG9wdGlvblxuICAgIHJldHVybiAodmFsdWUsIG9wdGlvbnMpID0+IG9wdGlvbnMuZmlsdGVyKG8gPT4gZmlsdGVyT3B0aW9uKHZhbHVlLCBvKSk7XG4gIH1cblxuICBjb25zdCBtYXBwZXIgPVxuICAgIHR5cGVvZiBmaWx0ZXJPcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICA/IEFjY2Vzc29yLmdlbmVyYXRlQWNjZXNzb3IoZmlsdGVyT3B0aW9uKVxuICAgICAgOiBBY2Nlc3Nvci5JREVOVElUWV9GTjtcblxuICByZXR1cm4gKHZhbHVlLCBvcHRpb25zKSA9PiB7XG4gICAgcmV0dXJuIGZ1enp5LmZpbHRlcih2YWx1ZSwgb3B0aW9ucywge2V4dHJhY3Q6IG1hcHBlcn0pLm1hcChyZXMgPT4gb3B0aW9uc1tyZXMuaW5kZXhdKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc2VhcmNoT3B0aW9uc09uSW5wdXQoaW5wdXRWYWx1ZSwgcHJvcHMpIHtcbiAgY29uc3Qgc2VhcmNoT3B0aW9ucyA9IGdlbmVyYXRlU2VhcmNoRnVuY3Rpb24ocHJvcHMpO1xuICByZXR1cm4gc2VhcmNoT3B0aW9ucyhpbnB1dFZhbHVlLCBwcm9wcy5vcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3B0aW9uc0ZvclZhbHVlKHZhbHVlLCBwcm9wcywgc3RhdGUpIHtcbiAgY29uc3Qge29wdGlvbnMsIHNob3dPcHRpb25zV2hlbkVtcHR5fSA9IHByb3BzO1xuXG4gIGlmICghcHJvcHMuc2VhcmNoYWJsZSkge1xuICAgIC8vIGRpcmVjdGx5IHBhc3MgdGhyb3VnaCBvcHRpb25zIGlmIGNhbiBub3QgYmUgc2VhcmNoZWRcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuICBpZiAoc2hvdWxkU2tpcFNlYXJjaCh2YWx1ZSwgc3RhdGUsIHNob3dPcHRpb25zV2hlbkVtcHR5KSkge1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgY29uc3Qgc2VhcmNoT3B0aW9ucyA9IGdlbmVyYXRlU2VhcmNoRnVuY3Rpb24ocHJvcHMpO1xuICByZXR1cm4gc2VhcmNoT3B0aW9ucyh2YWx1ZSwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFNraXBTZWFyY2goaW5wdXQsIHN0YXRlLCBzaG93T3B0aW9uc1doZW5FbXB0eSkge1xuICBjb25zdCBlbXB0eVZhbHVlID0gIWlucHV0IHx8IGlucHV0LnRyaW0oKS5sZW5ndGggPT09IDA7XG5cbiAgLy8gdGhpcy5zdGF0ZSBtdXN0IGJlIGNoZWNrZWQgYmVjYXVzZSBpdCBtYXkgbm90IGJlIGRlZmluZWQgeWV0IGlmIHRoaXMgZnVuY3Rpb25cbiAgLy8gaXMgY2FsbGVkIGZyb20gd2l0aGluIGdldEluaXRpYWxTdGF0ZVxuICBjb25zdCBpc0ZvY3VzZWQgPSBzdGF0ZSAmJiBzdGF0ZS5pc0ZvY3VzZWQ7XG4gIHJldHVybiAhKHNob3dPcHRpb25zV2hlbkVtcHR5ICYmIGlzRm9jdXNlZCkgJiYgZW1wdHlWYWx1ZTtcbn1cblxuaW50ZXJmYWNlIFR5cGVhaGVhZFByb3BzIHtcbiAgbmFtZT86IHN0cmluZztcbiAgY3VzdG9tQ2xhc3Nlcz86IGFueTtcbiAgcmVzdWx0c1RydW5jYXRlZE1lc3NhZ2U/OiBzdHJpbmc7XG4gIG9wdGlvbnM/OiBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QgfCB1bmRlZmluZWQ+O1xuICBmaXhlZE9wdGlvbnM/OiBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgbnVsbDtcbiAgYWxsb3dDdXN0b21WYWx1ZXM/OiBudW1iZXI7XG4gIGluaXRpYWxWYWx1ZT86IHN0cmluZztcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHRleHRhcmVhPzogYm9vbGVhbjtcbiAgaW5wdXRQcm9wcz86IG9iamVjdDtcbiAgb25PcHRpb25TZWxlY3RlZD86IChvcHRpb246IGFueSwgZXZlbnQ6IGFueSkgPT4gYW55O1xuICBvbkNoYW5nZT86IChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWQ7XG4gIG9uS2V5RG93bj86IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHZvaWQ7XG4gIG9uS2V5UHJlc3M/OiBLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG4gIG9uS2V5VXA/OiBLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG4gIG9uRm9jdXM/OiAoZXZlbnQ6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkO1xuICBvbkJsdXI/OiAoZXZlbnQ6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWQ7XG4gIGZpbHRlck9wdGlvbj86IHN0cmluZyB8IEZ1bmN0aW9uO1xuICBzZWFyY2hPcHRpb25zPzogRnVuY3Rpb247XG4gIGRpc3BsYXlPcHRpb24/OiBzdHJpbmcgfCBGdW5jdGlvbjtcbiAgaW5wdXREaXNwbGF5T3B0aW9uPzogc3RyaW5nIHwgRnVuY3Rpb247XG4gIGZvcm1JbnB1dE9wdGlvbj86IHN0cmluZyB8IEZ1bmN0aW9uO1xuICBkZWZhdWx0Q2xhc3NOYW1lcz86IGJvb2xlYW47XG4gIGN1c3RvbUxpc3RDb21wb25lbnQ/OiBFbGVtZW50VHlwZTtcbiAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ/OiBFbGVtZW50VHlwZSB8IEZ1bmN0aW9uO1xuICBjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50PzogRWxlbWVudFR5cGUgfCBGdW5jdGlvbiB8IG51bGw7XG4gIHNob3dPcHRpb25zV2hlbkVtcHR5PzogYm9vbGVhbjtcbiAgc2VhcmNoYWJsZT86IGJvb2xlYW47XG4gIGxpZ2h0PzogYm9vbGVhbjtcbiAgaW5wdXRJY29uOiBFbGVtZW50VHlwZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzZWxlY3RlZEl0ZW1zPzogYW55W10gfCBudWxsO1xuICAvLyBkZXByZWNhdGVkXG4gIG1heFZpc2libGU/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBUeXBlYWhlYWRTdGF0ZSB7XG4gIHNlYXJjaFJlc3VsdHM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdCB8IHVuZGVmaW5lZD47XG5cbiAgLy8gVGhpcyBzaG91bGQgYmUgY2FsbGVkIHNvbWV0aGluZyBlbHNlLCAnZW50cnlWYWx1ZSdcbiAgZW50cnlWYWx1ZT86IHN0cmluZztcblxuICAvLyBBIHZhbGlkIHR5cGVhaGVhZCB2YWx1ZVxuICBzZWxlY3Rpb24/OiBzdHJpbmc7XG5cbiAgLy8gSW5kZXggb2YgdGhlIHNlbGVjdGlvblxuICBzZWxlY3Rpb25JbmRleDogbnVsbDtcblxuICAvLyBLZWVwIHRyYWNrIG9mIHRoZSBmb2N1cyBzdGF0ZSBvZiB0aGUgaW5wdXQgZWxlbWVudCwgdG8gZGV0ZXJtaW5lXG4gIC8vIHdoZXRoZXIgdG8gc2hvdyBvcHRpb25zIHdoZW4gZW1wdHkgKGlmIHNob3dPcHRpb25zV2hlbkVtcHR5IGlzIHRydWUpXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbn1cblxuY2xhc3MgVHlwZWFoZWFkIGV4dGVuZHMgQ29tcG9uZW50PFR5cGVhaGVhZFByb3BzLCBUeXBlYWhlYWRTdGF0ZT4ge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIG9wdGlvbnM6IFtdLFxuICAgIGN1c3RvbUNsYXNzZXM6IHt9LFxuICAgIGFsbG93Q3VzdG9tVmFsdWVzOiAwLFxuICAgIGluaXRpYWxWYWx1ZTogJycsXG4gICAgdmFsdWU6ICcnLFxuICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgdGV4dGFyZWE6IGZhbHNlLFxuICAgIGlucHV0UHJvcHM6IHt9LFxuICAgIG9uT3B0aW9uU2VsZWN0ZWQob3B0aW9uKSB7fSxcbiAgICBvbkNoYW5nZShldmVudCkge30sXG4gICAgb25LZXlEb3duKGV2ZW50KSB7fSxcbiAgICBvbktleVByZXNzKGV2ZW50KSB7fSxcbiAgICBvbktleVVwKGV2ZW50KSB7fSxcbiAgICBvbkZvY3VzKGV2ZW50KSB7fSxcbiAgICBvbkJsdXIoZXZlbnQpIHt9LFxuICAgIGZpbHRlck9wdGlvbjogbnVsbCxcbiAgICBzZWFyY2hPcHRpb25zOiBudWxsLFxuICAgIGlucHV0RGlzcGxheU9wdGlvbjogbnVsbCxcbiAgICBkZWZhdWx0Q2xhc3NOYW1lczogdHJ1ZSxcbiAgICBjdXN0b21MaXN0Q29tcG9uZW50OiBEcm9wZG93bkxpc3QsXG4gICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ6IExpc3RJdGVtLFxuICAgIGlucHV0SWNvbjogU2VhcmNoLFxuICAgIGN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQ6IG51bGwsXG4gICAgc2hvd09wdGlvbnNXaGVuRW1wdHk6IHRydWUsXG4gICAgc2VhcmNoYWJsZTogdHJ1ZSxcbiAgICByZXN1bHRzVHJ1bmNhdGVkTWVzc2FnZTogbnVsbFxuICB9O1xuXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocHJvcHMsIHN0YXRlKSB7XG4gICAgaWYgKHByb3BzLm9wdGlvbnMgPT09IHN0YXRlLnByZXZPcHRpb25zKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgLy8gIGludm9rZWQgYWZ0ZXIgYSBjb21wb25lbnQgaXMgaW5zdGFudGlhdGVkIGFzIHdlbGwgYXMgYmVmb3JlIGl0IGlzIHJlLXJlbmRlcmVkXG4gICAgY29uc3Qgc2VhcmNoUmVzdWx0cyA9IGdldE9wdGlvbnNGb3JWYWx1ZShzdGF0ZS5lbnRyeVZhbHVlLCBwcm9wcywgc3RhdGUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNlYXJjaFJlc3VsdHMsXG4gICAgICBwcmV2T3B0aW9uczogcHJvcHMub3B0aW9uc1xuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAvLyBpbml0aWF0ZSBzZWFyY2hSZXN1bHRzIHdpdGggb3B0aW9uc1xuICAgICAgc2VhcmNoUmVzdWx0czogdGhpcy5wcm9wcy5vcHRpb25zIHx8IFtdLFxuXG4gICAgICAvLyBUaGlzIHNob3VsZCBiZSBjYWxsZWQgc29tZXRoaW5nIGVsc2UsICdlbnRyeVZhbHVlJ1xuICAgICAgZW50cnlWYWx1ZTogdGhpcy5wcm9wcy52YWx1ZSB8fCB0aGlzLnByb3BzLmluaXRpYWxWYWx1ZSxcblxuICAgICAgLy8gQSB2YWxpZCB0eXBlYWhlYWQgdmFsdWVcbiAgICAgIHNlbGVjdGlvbjogdGhpcy5wcm9wcy52YWx1ZSxcblxuICAgICAgLy8gSW5kZXggb2YgdGhlIHNlbGVjdGlvblxuICAgICAgc2VsZWN0aW9uSW5kZXg6IG51bGwsXG5cbiAgICAgIC8vIEtlZXAgdHJhY2sgb2YgdGhlIGZvY3VzIHN0YXRlIG9mIHRoZSBpbnB1dCBlbGVtZW50LCB0byBkZXRlcm1pbmVcbiAgICAgIC8vIHdoZXRoZXIgdG8gc2hvdyBvcHRpb25zIHdoZW4gZW1wdHkgKGlmIHNob3dPcHRpb25zV2hlbkVtcHR5IGlzIHRydWUpXG4gICAgICBpc0ZvY3VzZWQ6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIC8vIGNhbGwgZm9jdXMgb24gZW50cnkgb3IgZGl2IHRvIHRyaWdnZXIga2V5IGV2ZW50cyBsaXN0ZW5lclxuICAgIGlmICh0aGlzLmVudHJ5LmN1cnJlbnQpIHtcbiAgICAgIHRoaXMuZW50cnkuY3VycmVudC5mb2N1cygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvb3QuY3VycmVudD8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICByb290ID0gY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuICBlbnRyeSA9IGNyZWF0ZVJlZjxIVE1MSW5wdXRFbGVtZW50PigpO1xuXG4gIGZvY3VzID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLmVudHJ5LmN1cnJlbnQpIHtcbiAgICAgIHRoaXMuZW50cnkuY3VycmVudC5mb2N1cygpO1xuICAgIH1cbiAgfTtcblxuICBfaGFzQ3VzdG9tVmFsdWUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIE51bWJlcih0aGlzLnByb3BzLmFsbG93Q3VzdG9tVmFsdWVzKSA+IDAgJiZcbiAgICAgIE51bWJlcih0aGlzLnN0YXRlLmVudHJ5VmFsdWU/Lmxlbmd0aCkgPj0gTnVtYmVyKHRoaXMucHJvcHMuYWxsb3dDdXN0b21WYWx1ZXMpICYmXG4gICAgICB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHMuaW5kZXhPZih0aGlzLnN0YXRlLmVudHJ5VmFsdWUpIDwgMFxuICAgICk7XG4gIH07XG5cbiAgX2dldEN1c3RvbVZhbHVlID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLl9oYXNDdXN0b21WYWx1ZSgpID8gdGhpcy5zdGF0ZS5lbnRyeVZhbHVlIDogbnVsbDtcbiAgfTtcblxuICBfcmVuZGVySW5jcmVtZW50YWxTZWFyY2hSZXN1bHRzKCkge1xuICAgIGNvbnN0IHtjdXN0b21MaXN0Q29tcG9uZW50OiBDdXN0b21MaXN0Q29tcG9uZW50ID0gRHJvcGRvd25MaXN0fSA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIChcbiAgICAgIDxDdXN0b21MaXN0Q29tcG9uZW50XG4gICAgICAgIGZpeGVkT3B0aW9ucz17dGhpcy5wcm9wcy5maXhlZE9wdGlvbnN9XG4gICAgICAgIG9wdGlvbnM9e3RoaXMuc3RhdGUuc2VhcmNoUmVzdWx0c31cbiAgICAgICAgYXJlUmVzdWx0c1RydW5jYXRlZD17ZmFsc2V9XG4gICAgICAgIHJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlPXt0aGlzLnByb3BzLnJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlfVxuICAgICAgICBvbk9wdGlvblNlbGVjdGVkPXt0aGlzLl9vbk9wdGlvblNlbGVjdGVkfVxuICAgICAgICBhbGxvd0N1c3RvbVZhbHVlcz17dGhpcy5wcm9wcy5hbGxvd0N1c3RvbVZhbHVlc31cbiAgICAgICAgY3VzdG9tVmFsdWU9e3RoaXMuX2dldEN1c3RvbVZhbHVlKCl9XG4gICAgICAgIGN1c3RvbUNsYXNzZXM9e3RoaXMucHJvcHMuY3VzdG9tQ2xhc3Nlc31cbiAgICAgICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ9e3RoaXMucHJvcHMuY3VzdG9tTGlzdEl0ZW1Db21wb25lbnR9XG4gICAgICAgIGN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQ9e3RoaXMucHJvcHMuY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudH1cbiAgICAgICAgc2VsZWN0aW9uSW5kZXg9e3RoaXMuc3RhdGUuc2VsZWN0aW9uSW5kZXh9XG4gICAgICAgIGRlZmF1bHRDbGFzc05hbWVzPXt0aGlzLnByb3BzLmRlZmF1bHRDbGFzc05hbWVzfVxuICAgICAgICBkaXNwbGF5T3B0aW9uPXt0aGlzLnByb3BzLmRpc3BsYXlPcHRpb259XG4gICAgICAgIHNlbGVjdGVkSXRlbXM9e3RoaXMucHJvcHMuc2VsZWN0ZWRJdGVtc31cbiAgICAgICAgbGlnaHQ9e3RoaXMucHJvcHMubGlnaHR9XG4gICAgICAvPlxuICAgICk7XG4gIH1cblxuICBnZXRTZWxlY3Rpb24oKSB7XG4gICAgbGV0IGluZGV4OiBudW1iZXIgfCBudWxsID0gdGhpcy5zdGF0ZS5zZWxlY3Rpb25JbmRleDtcbiAgICBpZiAoaW5kZXggPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpbmRleCA9IE51bWJlcihpbmRleCk7XG5cbiAgICBpZiAodGhpcy5faGFzQ3VzdG9tVmFsdWUoKSkge1xuICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmVudHJ5VmFsdWU7XG4gICAgICB9XG4gICAgICBpbmRleC0tO1xuICAgIH1cbiAgICBpZiAodGhpcy5faGFzRml4ZWRPcHRpb25zKCkpIHtcbiAgICAgIHJldHVybiBpbmRleCA8IE51bWJlcih0aGlzLnByb3BzLmZpeGVkT3B0aW9ucz8ubGVuZ3RoKVxuICAgICAgICA/IHRoaXMucHJvcHMuZml4ZWRPcHRpb25zPy5baW5kZXhdXG4gICAgICAgIDogdGhpcy5zdGF0ZS5zZWFyY2hSZXN1bHRzW2luZGV4IC0gTnVtYmVyKHRoaXMucHJvcHMuZml4ZWRPcHRpb25zPy5sZW5ndGgpXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0c1tpbmRleF07XG4gIH1cblxuICBfb25PcHRpb25TZWxlY3RlZCA9IChvcHRpb24sIGV2ZW50KSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2VhcmNoYWJsZSkge1xuICAgICAgLy8gcmVzZXQgZW50cnkgaW5wdXRcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAvLyByZXNldCBzZWFyY2ggb3B0aW9ucyB3aGVuIHNlbGVjdGlvbiBoYXMgYmVlbiBtYWRlXG4gICAgICAgIHNlYXJjaFJlc3VsdHM6IHRoaXMucHJvcHMub3B0aW9ucyB8fCBbXSxcbiAgICAgICAgc2VsZWN0aW9uOiAnJyxcbiAgICAgICAgZW50cnlWYWx1ZTogJydcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMucHJvcHMub25PcHRpb25TZWxlY3RlZD8uKG9wdGlvbiwgZXZlbnQpO1xuICB9O1xuXG4gIC8vIHVzZSAoKSA9PiB7fSB0byBhdm9pZCBiaW5kaW5nICd0aGlzJ1xuICBfb25UZXh0RW50cnlVcGRhdGVkID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLnNlYXJjaGFibGUpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5lbnRyeS5jdXJyZW50Py52YWx1ZTtcblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHNlYXJjaFJlc3VsdHM6IHNlYXJjaE9wdGlvbnNPbklucHV0KHZhbHVlLCB0aGlzLnByb3BzKSxcbiAgICAgICAgc2VsZWN0aW9uOiAnJyxcbiAgICAgICAgZW50cnlWYWx1ZTogdmFsdWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBfb25FbnRlciA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLnByb3BzLm9uS2V5RG93bj8uKGV2ZW50KTtcbiAgICB9XG4gICAgdGhpcy5fb25PcHRpb25TZWxlY3RlZChzZWxlY3Rpb24sIGV2ZW50KTtcbiAgfTtcblxuICBfb25Fc2NhcGUgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBzZWxlY3Rpb25JbmRleDogbnVsbFxuICAgIH0pO1xuICB9O1xuXG4gIF9vblRhYiA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgIGxldCBvcHRpb24gPSBzZWxlY3Rpb25cbiAgICAgID8gc2VsZWN0aW9uXG4gICAgICA6IHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwXG4gICAgICA/IHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0c1swXVxuICAgICAgOiBudWxsO1xuXG4gICAgaWYgKG9wdGlvbiA9PT0gbnVsbCAmJiB0aGlzLl9oYXNDdXN0b21WYWx1ZSgpKSB7XG4gICAgICBvcHRpb24gPSB0aGlzLl9nZXRDdXN0b21WYWx1ZSgpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb24gIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vbk9wdGlvblNlbGVjdGVkKG9wdGlvbiwgZXZlbnQpO1xuICAgIH1cbiAgfTtcblxuICBldmVudE1hcCA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudHMgPSB7fTtcblxuICAgIGV2ZW50c1tLZXlFdmVudC5ET01fVktfVVBdID0gdGhpcy5uYXZVcDtcbiAgICBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX0RPV05dID0gdGhpcy5uYXZEb3duO1xuICAgIGV2ZW50c1tLZXlFdmVudC5ET01fVktfUkVUVVJOXSA9IGV2ZW50c1tLZXlFdmVudC5ET01fVktfRU5URVJdID0gdGhpcy5fb25FbnRlcjtcbiAgICBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX0VTQ0FQRV0gPSB0aGlzLl9vbkVzY2FwZTtcbiAgICBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX1RBQl0gPSB0aGlzLl9vblRhYjtcblxuICAgIHJldHVybiBldmVudHM7XG4gIH07XG5cbiAgX25hdiA9IGRlbHRhID0+IHtcbiAgICBpZiAoIXRoaXMuX2hhc0hpbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbmV3SW5kZXggPVxuICAgICAgdGhpcy5zdGF0ZS5zZWxlY3Rpb25JbmRleCA9PT0gbnVsbFxuICAgICAgICA/IGRlbHRhID09PSAxXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiBkZWx0YVxuICAgICAgICA6IHRoaXMuc3RhdGUuc2VsZWN0aW9uSW5kZXggKyBkZWx0YTtcbiAgICBsZXQgbGVuZ3RoID0gdGhpcy5wcm9wcy5tYXhWaXNpYmxlXG4gICAgICA/IHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0cy5zbGljZSgwLCB0aGlzLnByb3BzLm1heFZpc2libGUpLmxlbmd0aFxuICAgICAgOiB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHMubGVuZ3RoO1xuICAgIGlmICh0aGlzLl9oYXNDdXN0b21WYWx1ZSgpKSB7XG4gICAgICBsZW5ndGggKz0gMTtcbiAgICB9XG5cbiAgICBpZiAobmV3SW5kZXggPCAwKSB7XG4gICAgICBuZXdJbmRleCArPSBsZW5ndGg7XG4gICAgfSBlbHNlIGlmIChuZXdJbmRleCA+PSBsZW5ndGgpIHtcbiAgICAgIG5ld0luZGV4IC09IGxlbmd0aDtcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHtzZWxlY3Rpb25JbmRleDogbmV3SW5kZXh9KTtcbiAgfTtcblxuICBuYXZEb3duID0gKCkgPT4ge1xuICAgIHRoaXMuX25hdigxKTtcbiAgfTtcblxuICBuYXZVcCA9ICgpID0+IHtcbiAgICB0aGlzLl9uYXYoLTEpO1xuICB9O1xuXG4gIF9vbkNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gZXZlbnQgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLm9uQ2hhbmdlKSB7XG4gICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKGV2ZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLl9vblRleHRFbnRyeVVwZGF0ZWQoKTtcbiAgfTtcblxuICBfb25LZXlEb3duOiBSZWFjdC5LZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD4gPSBldmVudCA9PiB7XG4gICAgLy8gSWYgdGhlcmUgYXJlIG5vIHZpc2libGUgZWxlbWVudHMsIGRvbid0IHBlcmZvcm0gc2VsZWN0b3IgbmF2aWdhdGlvbi5cbiAgICAvLyBKdXN0IHBhc3MgdGhpcyB1cCB0byB0aGUgdXBzdHJlYW0gb25LZXlkb3duIGhhbmRsZXIuXG4gICAgLy8gQWxzbyBza2lwIGlmIHRoZSB1c2VyIGlzIHByZXNzaW5nIHRoZSBzaGlmdCBrZXksIHNpbmNlIG5vbmUgb2Ygb3VyIGhhbmRsZXJzIGFyZSBsb29raW5nIGZvciBzaGlmdFxuICAgIGlmICghdGhpcy5faGFzSGludCgpIHx8IGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5vbktleURvd24/LihldmVudCk7XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlciA9IHRoaXMuZXZlbnRNYXAoKVtldmVudC5rZXlDb2RlXTtcblxuICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICBoYW5kbGVyKGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMub25LZXlEb3duPy4oZXZlbnQpO1xuICAgIH1cbiAgICAvLyBEb24ndCBwcm9wYWdhdGUgdGhlIGtleXN0cm9rZSBiYWNrIHRvIHRoZSBET00vYnJvd3NlclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgX29uRm9jdXM6IFJlYWN0LkZvY3VzRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PiA9IGV2ZW50ID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtpc0ZvY3VzZWQ6IHRydWV9KTtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkZvY3VzKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5vbkZvY3VzKGV2ZW50KTtcbiAgICB9XG4gIH07XG5cbiAgX29uQmx1cjogUmVhY3QuRm9jdXNFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSBldmVudCA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7aXNGb2N1c2VkOiBmYWxzZX0pO1xuICAgIGlmICh0aGlzLnByb3BzLm9uQmx1cikge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMub25CbHVyKGV2ZW50KTtcbiAgICB9XG4gIH07XG5cbiAgX3JlbmRlckhpZGRlbklucHV0KCkge1xuICAgIGlmICghdGhpcy5wcm9wcy5uYW1lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPXt0aGlzLnByb3BzLm5hbWV9IHZhbHVlPXt0aGlzLnN0YXRlLnNlbGVjdGlvbn0gLz47XG4gIH1cblxuICBfaGFzSGludCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWFyY2hSZXN1bHRzLmxlbmd0aCA+IDAgfHwgdGhpcy5faGFzQ3VzdG9tVmFsdWUoKTtcbiAgfVxuXG4gIF9oYXNGaXhlZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5wcm9wcy5maXhlZE9wdGlvbnMpICYmIHRoaXMucHJvcHMuZml4ZWRPcHRpb25zLmxlbmd0aDtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBpbnB1dENsYXNzZXMgPSB7fTtcbiAgICBpbnB1dENsYXNzZXNbdGhpcy5wcm9wcy5jdXN0b21DbGFzc2VzPy5pbnB1dF0gPSBCb29sZWFuKHRoaXMucHJvcHMuY3VzdG9tQ2xhc3Nlcz8uaW5wdXQpO1xuICAgIGNvbnN0IGlucHV0Q2xhc3NMaXN0ID0gY2xhc3NOYW1lcyhpbnB1dENsYXNzZXMpO1xuXG4gICAgY29uc3QgY2xhc3NlcyA9IHtcbiAgICAgIFtERUZBVUxUX0NMQVNTXTogdGhpcy5wcm9wcy5kZWZhdWx0Q2xhc3NOYW1lc1xuICAgIH07XG4gICAgY2xhc3Nlc1t0aGlzLnByb3BzLmNsYXNzTmFtZSA/IHRoaXMucHJvcHMuY2xhc3NOYW1lIDogJyddID0gQm9vbGVhbih0aGlzLnByb3BzLmNsYXNzTmFtZSk7XG4gICAgY29uc3QgY2xhc3NMaXN0ID0gY2xhc3NOYW1lcyhjbGFzc2VzKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8VHlwZWFoZWFkV3JhcHBlclxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTGlzdH1cbiAgICAgICAgcmVmPXt0aGlzLnJvb3R9XG4gICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICBvbktleURvd249e3RoaXMuX29uS2V5RG93bn1cbiAgICAgICAgb25LZXlQcmVzcz17dGhpcy5wcm9wcy5vbktleVByZXNzfVxuICAgICAgICBvbktleVVwPXt0aGlzLnByb3BzLm9uS2V5VXB9XG4gICAgICAgIG9uRm9jdXM9e3RoaXMuX29uRm9jdXN9XG4gICAgICAgIGxpZ2h0PXt0aGlzLnByb3BzLmxpZ2h0fVxuICAgICAgPlxuICAgICAgICB7dGhpcy5fcmVuZGVySGlkZGVuSW5wdXQoKX1cbiAgICAgICAge3RoaXMucHJvcHMuc2VhcmNoYWJsZSA/IChcbiAgICAgICAgICA8SW5wdXRCb3g+XG4gICAgICAgICAgICA8VHlwZWFoZWFkSW5wdXRcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmVudHJ5fVxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnByb3BzLmRpc2FibGVkfVxuICAgICAgICAgICAgICB7Li4udGhpcy5wcm9wcy5pbnB1dFByb3BzfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtpbnB1dENsYXNzTGlzdH1cbiAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuZW50cnlWYWx1ZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuX29uQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e3RoaXMuX29uQmx1cn1cbiAgICAgICAgICAgICAgbGlnaHQ9e3RoaXMucHJvcHMubGlnaHR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPElucHV0SWNvbj5cbiAgICAgICAgICAgICAgPHRoaXMucHJvcHMuaW5wdXRJY29uIGhlaWdodD1cIjE4cHhcIiAvPlxuICAgICAgICAgICAgPC9JbnB1dEljb24+XG4gICAgICAgICAgPC9JbnB1dEJveD5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHt0aGlzLl9yZW5kZXJJbmNyZW1lbnRhbFNlYXJjaFJlc3VsdHMoKX1cbiAgICAgIDwvVHlwZWFoZWFkV3JhcHBlcj5cbiAgICApO1xuICB9XG59XG5cbnBvbHlmaWxsKFR5cGVhaGVhZCk7XG5cbmV4cG9ydCBkZWZhdWx0IFR5cGVhaGVhZDtcbiJdfQ==