@kepler.gl/components 3.2.6 → 3.3.0-alpha.1

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 (370) hide show
  1. package/dist/annotations/annotation-node.d.ts +11 -0
  2. package/dist/annotations/annotation-node.js +145 -0
  3. package/dist/annotations/annotation-overlay.d.ts +16 -0
  4. package/dist/annotations/annotation-overlay.js +166 -0
  5. package/dist/annotations/annotation-panel.d.ts +24 -0
  6. package/dist/annotations/annotation-panel.js +362 -0
  7. package/dist/annotations/annotation-text.d.ts +16 -0
  8. package/dist/annotations/annotation-text.js +150 -0
  9. package/dist/annotations/annotation-utils.d.ts +39 -0
  10. package/dist/annotations/annotation-utils.js +156 -0
  11. package/dist/annotations/index.d.ts +7 -0
  12. package/dist/annotations/index.js +53 -0
  13. package/dist/annotations/lexical-editor/clickable-link-plugin.d.ts +3 -0
  14. package/dist/annotations/lexical-editor/clickable-link-plugin.js +71 -0
  15. package/dist/annotations/lexical-editor/floating-link-editor.d.ts +1 -0
  16. package/dist/annotations/lexical-editor/floating-link-editor.js +194 -0
  17. package/dist/annotations/lexical-editor/index.d.ts +7 -0
  18. package/dist/annotations/lexical-editor/index.js +78 -0
  19. package/dist/annotations/lexical-editor/lexical-constants.d.ts +12 -0
  20. package/dist/annotations/lexical-editor/lexical-constants.js +22 -0
  21. package/dist/annotations/lexical-editor/lexical-nodes.d.ts +3 -0
  22. package/dist/annotations/lexical-editor/lexical-nodes.js +13 -0
  23. package/dist/annotations/lexical-editor/lexical-rich-text-editor.d.ts +15 -0
  24. package/dist/annotations/lexical-editor/lexical-rich-text-editor.js +122 -0
  25. package/dist/annotations/lexical-editor/lexical-theme.d.ts +15 -0
  26. package/dist/annotations/lexical-editor/lexical-theme.js +25 -0
  27. package/dist/annotations/lexical-editor/lexical-toolbar.d.ts +7 -0
  28. package/dist/annotations/lexical-editor/lexical-toolbar.js +293 -0
  29. package/dist/annotations/lexical-editor/lexical-utils.d.ts +4 -0
  30. package/dist/annotations/lexical-editor/lexical-utils.js +45 -0
  31. package/dist/annotations/lexical-editor/use-lexical-toolbar.d.ts +36 -0
  32. package/dist/annotations/lexical-editor/use-lexical-toolbar.js +253 -0
  33. package/dist/bottom-widget.d.ts +5 -5
  34. package/dist/bottom-widget.js +12 -6
  35. package/dist/common/action-panel.d.ts +3 -3
  36. package/dist/common/animation-control/animation-control.d.ts +2 -1
  37. package/dist/common/animation-control/animation-control.js +3 -1
  38. package/dist/common/animation-control/animation-controller.js +8 -6
  39. package/dist/common/animation-control/export-video-control.d.ts +9 -0
  40. package/dist/common/animation-control/export-video-control.js +43 -0
  41. package/dist/common/animation-control/playback-controls.d.ts +5 -3
  42. package/dist/common/animation-control/playback-controls.js +7 -4
  43. package/dist/common/checkbox.d.ts +5 -21
  44. package/dist/common/checkbox.js +58 -70
  45. package/dist/common/color-legend.d.ts +4 -4
  46. package/dist/common/color-legend.js +3 -3
  47. package/dist/common/column-stats-chart.d.ts +3 -3
  48. package/dist/common/data-table/button.d.ts +1 -1
  49. package/dist/common/data-table/canvas.d.ts +0 -1
  50. package/dist/common/data-table/cell-size.d.ts +2 -2
  51. package/dist/common/data-table/display-format.d.ts +1 -1
  52. package/dist/common/data-table/header-cell.d.ts +2 -2
  53. package/dist/common/data-table/index.d.ts +8 -10
  54. package/dist/common/data-table/index.js +3 -3
  55. package/dist/common/data-table/option-dropdown.d.ts +1 -1
  56. package/dist/common/field-selector.d.ts +5 -5
  57. package/dist/common/field-token.d.ts +1 -1
  58. package/dist/common/file-uploader/file-drop.d.ts +1 -1
  59. package/dist/common/file-uploader/file-upload-progress.d.ts +1 -1
  60. package/dist/common/file-uploader/file-upload.d.ts +1 -1
  61. package/dist/common/file-uploader/file-upload.js +4 -4
  62. package/dist/common/flex-container.d.ts +2 -3
  63. package/dist/common/histogram-plot.d.ts +1 -1
  64. package/dist/common/histogram-plot.js +102 -53
  65. package/dist/common/icon-button.d.ts +16 -16
  66. package/dist/common/icons/3d-models/airplane.d.ts +14 -0
  67. package/dist/common/icons/3d-models/airplane.js +104 -0
  68. package/dist/common/icons/3d-models/bicycle.d.ts +14 -0
  69. package/dist/common/icons/3d-models/bicycle.js +426 -0
  70. package/dist/common/icons/3d-models/boeing.d.ts +14 -0
  71. package/dist/common/icons/3d-models/boeing.js +119 -0
  72. package/dist/common/icons/3d-models/car.d.ts +14 -0
  73. package/dist/common/icons/3d-models/car.js +110 -0
  74. package/dist/common/icons/3d-models/cargoship.d.ts +14 -0
  75. package/dist/common/icons/3d-models/cargoship.js +246 -0
  76. package/dist/common/icons/3d-models/evtol.d.ts +14 -0
  77. package/dist/common/icons/3d-models/evtol.js +134 -0
  78. package/dist/common/icons/3d-models/glider.d.ts +14 -0
  79. package/dist/common/icons/3d-models/glider.js +62 -0
  80. package/dist/common/icons/3d-models/helicopter.d.ts +14 -0
  81. package/dist/common/icons/3d-models/helicopter.js +110 -0
  82. package/dist/common/icons/3d-models/scooter.d.ts +14 -0
  83. package/dist/common/icons/3d-models/scooter.js +159 -0
  84. package/dist/common/icons/3d-models/semitruck.d.ts +14 -0
  85. package/dist/common/icons/3d-models/semitruck.js +177 -0
  86. package/dist/common/icons/3d-models/truck.d.ts +14 -0
  87. package/dist/common/icons/3d-models/truck.js +122 -0
  88. package/dist/common/icons/anchor_window.d.ts +1 -8
  89. package/dist/common/icons/anchor_window.js +17 -10
  90. package/dist/common/icons/annotation-text.d.ts +9 -0
  91. package/dist/common/icons/annotation-text.js +56 -0
  92. package/dist/common/icons/base.d.ts +1 -1
  93. package/dist/common/icons/close.js +1 -1
  94. package/dist/common/icons/effects/distance-fog.d.ts +14 -0
  95. package/dist/common/icons/effects/distance-fog.js +79 -0
  96. package/dist/common/icons/effects/surface-fog.d.ts +14 -0
  97. package/dist/common/icons/effects/surface-fog.js +86 -0
  98. package/dist/common/icons/index.d.ts +3 -0
  99. package/dist/common/icons/index.js +22 -1
  100. package/dist/common/item-selector/chickleted-input.d.ts +5 -5
  101. package/dist/common/item-selector/chickleted-input.js +5 -5
  102. package/dist/common/item-selector/dropdown-list.d.ts +3 -3
  103. package/dist/common/item-selector/dropdown-select.d.ts +7 -7
  104. package/dist/common/item-selector/item-selector.d.ts +2 -2
  105. package/dist/common/item-selector/typeahead.d.ts +3 -3
  106. package/dist/common/line-chart.d.ts +4 -1
  107. package/dist/common/line-chart.js +59 -12
  108. package/dist/common/loading-spinner.d.ts +2 -2
  109. package/dist/common/modal.d.ts +5 -5
  110. package/dist/common/portaled.d.ts +8 -25
  111. package/dist/common/progress-bar.d.ts +1 -1
  112. package/dist/common/radius-legend.d.ts +1 -1
  113. package/dist/common/range-brush.d.ts +1 -1
  114. package/dist/common/range-plot.d.ts +1 -1
  115. package/dist/common/range-plot.js +4 -2
  116. package/dist/common/range-slider.d.ts +2 -0
  117. package/dist/common/range-slider.js +108 -43
  118. package/dist/common/slider/mouse-event.d.ts +1 -1
  119. package/dist/common/slider/slider-bar-handle.d.ts +2 -2
  120. package/dist/common/slider/slider-handle.d.ts +3 -3
  121. package/dist/common/slider/slider.d.ts +6 -2
  122. package/dist/common/slider/slider.js +78 -35
  123. package/dist/common/styled-components.d.ts +158 -159
  124. package/dist/common/styled-components.js +2 -2
  125. package/dist/common/sync-timeline-control.d.ts +3 -3
  126. package/dist/common/time-range-slider-time-title.d.ts +2 -2
  127. package/dist/common/time-range-slider-time-title.js +5 -5
  128. package/dist/common/time-range-slider.d.ts +4 -3
  129. package/dist/common/time-range-slider.js +19 -7
  130. package/dist/common/timeline-helpers.d.ts +3 -0
  131. package/dist/common/timeline-helpers.js +57 -0
  132. package/dist/common/timeline-slider.d.ts +1 -1
  133. package/dist/common/timeline-slider.js +21 -12
  134. package/dist/common/tippy-tooltip.d.ts +1 -1
  135. package/dist/common/toolbar-item.d.ts +1 -1
  136. package/dist/common/toolbar-item.js +5 -5
  137. package/dist/common/toolbar.d.ts +2 -2
  138. package/dist/common/toolbar.js +4 -4
  139. package/dist/common/vertical-toolbar.d.ts +2 -3
  140. package/dist/container.d.ts +6 -6
  141. package/dist/context.d.ts +3 -3
  142. package/dist/dnd-context.d.ts +2 -2
  143. package/dist/editor/editor.d.ts +1 -1
  144. package/dist/editor/editor.js +1 -1
  145. package/dist/editor/feature-action-panel.d.ts +1 -1
  146. package/dist/editor/feature-action-panel.js +1 -1
  147. package/dist/effects/compact-color-picker.d.ts +1 -1
  148. package/dist/effects/effect-configurator.d.ts +5 -4
  149. package/dist/effects/effect-configurator.js +243 -44
  150. package/dist/effects/effect-list.d.ts +1 -1
  151. package/dist/effects/effect-manager.d.ts +3 -3
  152. package/dist/effects/effect-manager.js +11 -4
  153. package/dist/effects/effect-panel-header.d.ts +2 -2
  154. package/dist/effects/effect-panel-header.js +35 -18
  155. package/dist/effects/effect-panel.d.ts +6 -6
  156. package/dist/effects/effect-panel.js +61 -86
  157. package/dist/effects/effect-time-configurator.d.ts +1 -1
  158. package/dist/effects/effect-time-configurator.js +10 -10
  159. package/dist/effects/effect-time-selector.d.ts +1 -1
  160. package/dist/effects/effect-time-slider.d.ts +3 -3
  161. package/dist/effects/effect-type-dropdown-list.d.ts +3 -2
  162. package/dist/effects/effect-type-dropdown-list.js +1 -1
  163. package/dist/effects/effect-type-list-item.d.ts +2 -1
  164. package/dist/effects/effect-type-list-item.js +23 -7
  165. package/dist/effects/effect-type-selector.d.ts +3 -2
  166. package/dist/effects/effect-type-selector.js +2 -2
  167. package/dist/effects/side-panel-title.d.ts +1 -1
  168. package/dist/effects/surface-fog-section.d.ts +14 -0
  169. package/dist/effects/surface-fog-section.js +263 -0
  170. package/dist/effects/timezone-selector.d.ts +1 -1
  171. package/dist/filters/components.d.ts +2 -3
  172. package/dist/filters/filter-panels/types.d.ts +4 -4
  173. package/dist/filters/index.d.ts +1 -0
  174. package/dist/filters/index.js +8 -1
  175. package/dist/filters/polygon-filter.js +2 -2
  176. package/dist/filters/time-range-filter.js +3 -1
  177. package/dist/filters/time-widget-settings.d.ts +14 -0
  178. package/dist/filters/time-widget-settings.js +312 -0
  179. package/dist/filters/time-widget-top.d.ts +2 -3
  180. package/dist/filters/time-widget-top.js +32 -39
  181. package/dist/filters/time-widget.d.ts +3 -2
  182. package/dist/filters/time-widget.js +285 -9
  183. package/dist/filters/types.d.ts +11 -11
  184. package/dist/filters/types.js +1 -1
  185. package/dist/geocoder/geocoder.d.ts +7 -4
  186. package/dist/geocoder/geocoder.js +65 -14
  187. package/dist/geocoder-panel.d.ts +11 -2
  188. package/dist/geocoder-panel.js +8 -4
  189. package/dist/hooks/use-cloud-list-provider.d.ts +1 -1
  190. package/dist/hooks/use-dnd-effects.d.ts +1 -1
  191. package/dist/hooks/use-dnd-layers.d.ts +1 -1
  192. package/dist/hooks/use-feature-flags.d.ts +1 -1
  193. package/dist/hooks/use-fetch-raster-tile-metadata.d.ts +3 -3
  194. package/dist/hooks/use-fetch-vector-tile-metadata.d.ts +2 -2
  195. package/dist/hooks/use-legend-position.d.ts +4 -5
  196. package/dist/index.d.ts +14 -0
  197. package/dist/index.js +124 -1
  198. package/dist/injector.d.ts +5 -5
  199. package/dist/kepler-gl.d.ts +70 -67
  200. package/dist/kepler-gl.js +89 -11
  201. package/dist/loading-indicator.d.ts +6 -4
  202. package/dist/loading-indicator.js +6 -3
  203. package/dist/map/annotations/annotation-control.d.ts +16 -0
  204. package/dist/map/annotations/annotation-control.js +56 -0
  205. package/dist/map/effects/effect-control.d.ts +1 -1
  206. package/dist/map/layer-hover-info.d.ts +3 -3
  207. package/dist/map/layer-hover-info.js +69 -36
  208. package/dist/map/layer-selector-panel.d.ts +2 -2
  209. package/dist/map/lazy-tippy.js +3 -3
  210. package/dist/map/locale-panel.d.ts +2 -2
  211. package/dist/map/locale-panel.js +2 -2
  212. package/dist/map/map-control-panel.d.ts +1 -1
  213. package/dist/map/map-control-toolbar.d.ts +7 -8
  214. package/dist/map/map-control-tooltip.d.ts +1 -1
  215. package/dist/map/map-control.d.ts +8 -4
  216. package/dist/map/map-control.js +16 -7
  217. package/dist/map/map-draw-panel.d.ts +2 -2
  218. package/dist/map/map-draw-panel.js +7 -4
  219. package/dist/map/map-legend-panel.d.ts +5 -4
  220. package/dist/map/map-legend-panel.js +10 -8
  221. package/dist/map/map-legend.d.ts +11 -9
  222. package/dist/map/map-legend.js +39 -9
  223. package/dist/map/map-navigation-control.d.ts +13 -0
  224. package/dist/map/map-navigation-control.js +143 -0
  225. package/dist/map/map-popover-content.d.ts +2 -2
  226. package/dist/map/map-popover.d.ts +2 -2
  227. package/dist/map/map-popover.js +2 -2
  228. package/dist/map/split-map-button.d.ts +1 -1
  229. package/dist/map/toggle-3d-button.d.ts +1 -1
  230. package/dist/map-container.d.ts +15 -5
  231. package/dist/map-container.js +286 -73
  232. package/dist/map-view-state-context.d.ts +10 -2
  233. package/dist/map-view-state-context.js +1 -1
  234. package/dist/modal-container.d.ts +6 -8
  235. package/dist/modal-container.js +28 -6
  236. package/dist/modals/add-map-style-modal.js +173 -200
  237. package/dist/modals/cloud-components/cloud-header.d.ts +1 -1
  238. package/dist/modals/cloud-components/provider-select.d.ts +1 -1
  239. package/dist/modals/cloud-tile.d.ts +1 -1
  240. package/dist/modals/data-table-modal.d.ts +2 -2
  241. package/dist/modals/data-table-modal.js +146 -194
  242. package/dist/modals/export-data-modal.js +117 -139
  243. package/dist/modals/export-image-modal.js +1 -1
  244. package/dist/modals/export-map-modal/components.d.ts +1 -1
  245. package/dist/modals/export-map-modal/export-html-map.d.ts +1 -1
  246. package/dist/modals/export-map-modal/export-json-map.d.ts +1 -1
  247. package/dist/modals/export-video-modal.d.ts +25 -0
  248. package/dist/modals/export-video-modal.js +338 -0
  249. package/dist/modals/export-video-modal.spec.d.ts +1 -0
  250. package/dist/modals/export-video-modal.spec.js +686 -0
  251. package/dist/modals/fog-height-animation.d.ts +8 -0
  252. package/dist/modals/fog-height-animation.js +97 -0
  253. package/dist/modals/hubble-utils.d.ts +25 -0
  254. package/dist/modals/hubble-utils.js +197 -0
  255. package/dist/modals/hubble-utils.spec.d.ts +1 -0
  256. package/dist/modals/hubble-utils.spec.js +397 -0
  257. package/dist/modals/image-modal-container.d.ts +1 -1
  258. package/dist/modals/load-data-modal.d.ts +2 -2
  259. package/dist/modals/modal-dialog.d.ts +0 -2
  260. package/dist/modals/overwrite-map-modal.d.ts +1 -1
  261. package/dist/modals/save-map-modal.d.ts +3 -3
  262. package/dist/modals/share-map-modal.d.ts +1 -1
  263. package/dist/modals/tilesets-modals/common.d.ts +3 -3
  264. package/dist/modals/tilesets-modals/common.js +1 -1
  265. package/dist/modals/tilesets-modals/load-data-footer.d.ts +1 -1
  266. package/dist/modals/tilesets-modals/load-data-footer.js +2 -2
  267. package/dist/modals/tilesets-modals/load-tileset.d.ts +1 -1
  268. package/dist/modals/tilesets-modals/load-tileset.js +27 -10
  269. package/dist/modals/tilesets-modals/tileset-bitmap-form.d.ts +14 -0
  270. package/dist/modals/tilesets-modals/tileset-bitmap-form.js +284 -0
  271. package/dist/modals/tilesets-modals/tileset-icon.d.ts +1 -1
  272. package/dist/modals/tilesets-modals/tileset-raster-form.d.ts +2 -2
  273. package/dist/modals/tilesets-modals/tileset-raster-form.js +94 -11
  274. package/dist/modals/tilesets-modals/tileset-tile3d-form.d.ts +12 -0
  275. package/dist/modals/tilesets-modals/tileset-tile3d-form.js +389 -0
  276. package/dist/modals/tilesets-modals/tileset-vector-form.d.ts +3 -3
  277. package/dist/modals/tilesets-modals/tileset-vector-form.js +58 -4
  278. package/dist/modals/tilesets-modals/tileset-wms-form.d.ts +1 -1
  279. package/dist/modals/tilesets-modals/tileset-wms-form.js +55 -11
  280. package/dist/notification-panel/notification-item.d.ts +1 -53
  281. package/dist/notification-panel/notification-item.js +47 -75
  282. package/dist/notification-panel.d.ts +1 -1
  283. package/dist/notification-panel.js +20 -42
  284. package/dist/plot-container.js +55 -14
  285. package/dist/side-panel/add-by-dataset-button.d.ts +1 -1
  286. package/dist/side-panel/add-by-dataset-button.js +3 -3
  287. package/dist/side-panel/common/dataset-info.d.ts +2 -2
  288. package/dist/side-panel/common/dataset-info.js +2 -2
  289. package/dist/side-panel/common/dataset-tag.d.ts +2 -2
  290. package/dist/side-panel/common/dataset-title.d.ts +2 -2
  291. package/dist/side-panel/common/source-data-catalog.d.ts +3 -3
  292. package/dist/side-panel/common/types.d.ts +8 -8
  293. package/dist/side-panel/custom-panel.d.ts +2 -2
  294. package/dist/side-panel/filter-manager.d.ts +3 -3
  295. package/dist/side-panel/filter-panel/add-filter-button.d.ts +1 -1
  296. package/dist/side-panel/filter-panel/filter-panel-header.d.ts +2 -2
  297. package/dist/side-panel/interaction-manager.d.ts +1 -1
  298. package/dist/side-panel/interaction-panel/brush-config.d.ts +1 -1
  299. package/dist/side-panel/interaction-panel/geocoder-config.d.ts +11 -0
  300. package/dist/side-panel/interaction-panel/geocoder-config.js +45 -0
  301. package/dist/side-panel/interaction-panel/interaction-panel.d.ts +3 -2
  302. package/dist/side-panel/interaction-panel/interaction-panel.js +10 -3
  303. package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.d.ts +3 -3
  304. package/dist/side-panel/interaction-panel/tooltip-config.d.ts +1 -1
  305. package/dist/side-panel/layer-manager.d.ts +2 -2
  306. package/dist/side-panel/layer-manager.js +11 -3
  307. package/dist/side-panel/layer-panel/add-layer-button.d.ts +1 -1
  308. package/dist/side-panel/layer-panel/channel-by-value-selector.d.ts +1 -1
  309. package/dist/side-panel/layer-panel/color-breaks-panel.d.ts +4 -4
  310. package/dist/side-panel/layer-panel/color-palette-preset.d.ts +1 -1
  311. package/dist/side-panel/layer-panel/color-palette.d.ts +2 -2
  312. package/dist/side-panel/layer-panel/color-range-selector.d.ts +3 -3
  313. package/dist/side-panel/layer-panel/color-scale-selector.d.ts +5 -5
  314. package/dist/side-panel/layer-panel/color-scale-selector.js +1 -1
  315. package/dist/side-panel/layer-panel/color-selector.d.ts +3 -3
  316. package/dist/side-panel/layer-panel/column-selector.d.ts +1 -1
  317. package/dist/side-panel/layer-panel/custom-palette.d.ts +10 -10
  318. package/dist/side-panel/layer-panel/custom-palette.js +5 -5
  319. package/dist/side-panel/layer-panel/custom-picker.d.ts +1 -1
  320. package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +1 -1
  321. package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +1 -1
  322. package/dist/side-panel/layer-panel/dataset-layer-section.js +19 -3
  323. package/dist/side-panel/layer-panel/dataset-section.d.ts +2 -2
  324. package/dist/side-panel/layer-panel/dimension-scale-selector.d.ts +1 -1
  325. package/dist/side-panel/layer-panel/how-to-button.d.ts +1 -1
  326. package/dist/side-panel/layer-panel/layer-color-selector.d.ts +3 -3
  327. package/dist/side-panel/layer-panel/layer-column-config.d.ts +1 -1
  328. package/dist/side-panel/layer-panel/layer-column-mode-config.d.ts +3 -3
  329. package/dist/side-panel/layer-panel/layer-config-group.d.ts +5 -5
  330. package/dist/side-panel/layer-panel/layer-configurator.d.ts +6 -4
  331. package/dist/side-panel/layer-panel/layer-configurator.js +408 -72
  332. package/dist/side-panel/layer-panel/layer-error-message.d.ts +1 -1
  333. package/dist/side-panel/layer-panel/layer-list.d.ts +2 -2
  334. package/dist/side-panel/layer-panel/layer-panel-header.d.ts +5 -5
  335. package/dist/side-panel/layer-panel/layer-panel-header.js +2 -2
  336. package/dist/side-panel/layer-panel/layer-panel.d.ts +1 -1
  337. package/dist/side-panel/layer-panel/layer-type-dropdown-list.d.ts +2 -2
  338. package/dist/side-panel/layer-panel/layer-type-list-item.d.ts +2 -2
  339. package/dist/side-panel/layer-panel/layer-type-selector.d.ts +1 -1
  340. package/dist/side-panel/layer-panel/radius-by-zoom-input.d.ts +1 -1
  341. package/dist/side-panel/layer-panel/raster-tile-layer-configurator.d.ts +2 -2
  342. package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +127 -27
  343. package/dist/side-panel/layer-panel/scenegraph-model-selector.d.ts +24 -0
  344. package/dist/side-panel/layer-panel/scenegraph-model-selector.js +123 -0
  345. package/dist/side-panel/layer-panel/single-color-palette.d.ts +1 -1
  346. package/dist/side-panel/layer-panel/text-label-panel.d.ts +2 -2
  347. package/dist/side-panel/layer-panel/text-label-panel.js +11 -2
  348. package/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +3 -3
  349. package/dist/side-panel/layer-panel/vis-config-by-field-selector.d.ts +1 -1
  350. package/dist/side-panel/layer-panel/vis-config-slider.d.ts +3 -1
  351. package/dist/side-panel/layer-panel/vis-config-slider.js +7 -3
  352. package/dist/side-panel/layer-panel/vis-config-switch.d.ts +1 -1
  353. package/dist/side-panel/map-manager.d.ts +1 -1
  354. package/dist/side-panel/map-style-panel/map-layer-group-color-picker.d.ts +1 -1
  355. package/dist/side-panel/map-style-panel/map-layer-group-item.d.ts +2 -2
  356. package/dist/side-panel/map-style-panel/map-layer-selector.d.ts +1 -1
  357. package/dist/side-panel/map-style-panel/map-style-selector.d.ts +1 -1
  358. package/dist/side-panel/panel-header-action.d.ts +1 -1
  359. package/dist/side-panel/panel-header.d.ts +13 -12
  360. package/dist/side-panel/panel-header.js +9 -2
  361. package/dist/side-panel/panel-tab.d.ts +5 -5
  362. package/dist/side-panel/panel-tab.js +4 -4
  363. package/dist/side-panel/panel-title.d.ts +1 -1
  364. package/dist/side-panel/panel-toggle.d.ts +1 -1
  365. package/dist/side-panel/panel-view-list-toggle.d.ts +3 -3
  366. package/dist/side-panel/side-bar.d.ts +2 -2
  367. package/dist/side-panel.d.ts +1 -1
  368. package/dist/side-panel.js +5 -1
  369. package/dist/types.d.ts +3 -3
  370. package/package.json +41 -29
@@ -83,7 +83,7 @@ var StyledAddStepContainer = _styledComponents["default"].div(_templateObject8 |
83
83
  });
84
84
  var StyledInput = (0, _styledComponents["default"])(_styledComponents2.Input).withConfig({
85
85
  shouldForwardProp: _styledComponents2.shouldForwardProp
86
- })(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n text-align: ", ";\n pointer-events: ", ";\n"])), function (props) {
86
+ })(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n text-align: ", ";\n pointer-events: ", ";\n font-size: 10px;\n padding-left: 4px;\n padding-right: 4px;\n"])), function (props) {
87
87
  var _props$width;
88
88
  return (_props$width = props.width) !== null && _props$width !== void 0 ? _props$width : '100%';
89
89
  }, function (props) {
@@ -94,7 +94,7 @@ var StyledInput = (0, _styledComponents["default"])(_styledComponents2.Input).wi
94
94
  });
95
95
  var InputText = _styledComponents["default"].div.withConfig({
96
96
  shouldForwardProp: _styledComponents2.shouldForwardProp
97
- })(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n background-color: transparent;\n border-color: transparent;\n width: ", ";\n text-align: ", ";\n\n &:hover {\n cursor: auto;\n background-color: transparent;\n border-color: transparent;\n }\n"])), function (props) {
97
+ })(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n background-color: transparent;\n border-color: transparent;\n width: ", ";\n text-align: ", ";\n font-size: 10px;\n padding-left: 4px;\n padding-right: 4px;\n\n &:hover {\n cursor: auto;\n background-color: transparent;\n border-color: transparent;\n }\n"])), function (props) {
98
98
  return props.theme.input;
99
99
  }, function (props) {
100
100
  var _props$width2;
@@ -234,14 +234,14 @@ var EditableColorRange = exports.EditableColorRange = function EditableColorRang
234
234
  return /*#__PURE__*/_react["default"].createElement(StyledRangeInput, null, /*#__PURE__*/_react["default"].createElement(ColorPaletteInput, {
235
235
  value: noMinBound ? 'Less' : String(leftInput !== null && leftInput !== void 0 ? leftInput : ''),
236
236
  id: "color-palette-input-".concat(index, "-left"),
237
- width: "50px",
237
+ width: "54px",
238
238
  textAlign: "end",
239
239
  editable: noMinBound ? false : editable,
240
240
  onChange: onChangeLeft
241
241
  }), /*#__PURE__*/_react["default"].createElement(Dash, null), /*#__PURE__*/_react["default"].createElement(ColorPaletteInput, {
242
242
  value: noMaxBound ? 'More' : String(rightInput !== null && rightInput !== void 0 ? rightInput : ''),
243
243
  id: "color-palette-input-".concat(index, "-right"),
244
- width: "50px",
244
+ width: "54px",
245
245
  textAlign: "end",
246
246
  onChange: onChangeRight,
247
247
  editable: noMaxBound ? false : editable
@@ -785,4 +785,4 @@ function CustomPaletteFactory() {
785
785
  return CustomPalette;
786
786
  }
787
787
  var _default = exports["default"] = CustomPaletteFactory;
788
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdW5pcSIsIl9jb3JlIiwiX3NvcnRhYmxlIiwiX3V0aWxpdGllcyIsIl9zdHlsZWRDb21wb25lbnRzIiwiX3BvcnRhbGVkIiwiX3N0eWxlZENvbXBvbmVudHMyIiwiX3R5cGVhaGVhZCIsIl9jaGlja2xldGVkSW5wdXQiLCJfZHJvcGRvd25MaXN0IiwiX2NvbW1vblV0aWxzIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl9pY29ucyIsIl9jdXN0b21QaWNrZXIiLCJfZXhjbHVkZWQiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl90ZW1wbGF0ZU9iamVjdDciLCJfdGVtcGxhdGVPYmplY3Q4IiwiX3RlbXBsYXRlT2JqZWN0OSIsIl90ZW1wbGF0ZU9iamVjdDEwIiwiX3RlbXBsYXRlT2JqZWN0MTEiLCJfdGVtcGxhdGVPYmplY3QxMiIsIl90ZW1wbGF0ZU9iamVjdDEzIiwiX3RlbXBsYXRlT2JqZWN0MTQiLCJfdGVtcGxhdGVPYmplY3QxNSIsIl90ZW1wbGF0ZU9iamVjdDE2IiwiX3RlbXBsYXRlT2JqZWN0MTciLCJfdGVtcGxhdGVPYmplY3QxOCIsIl90ZW1wbGF0ZU9iamVjdDE5IiwiX3RlbXBsYXRlT2JqZWN0MjAiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImRlZmF1bHRBY3Rpb25JY29ucyIsIlRyYXNoIiwic29ydCIsIlZlcnREb3RzIiwiYWRkIiwiQWRkIiwiZHJhZ0hhbmRsZUFjdGl2ZSIsImNzcyIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsInRleHRDb2xvckhsIiwiQ29sb3JQYWxldHRlSXRlbSIsImV4cG9ydHMiLCJzdHlsZWQiLCJkaXYiLCJkcm9wZG93bldyYXBwZXJaIiwicGFuZWxCYWNrZ3JvdW5kSG92ZXIiLCJTdHlsZWREcmFnSGFuZGxlIiwiU3R5bGVkQWN0aW9uIiwic3VidGV4dENvbG9yIiwic3VidGV4dENvbG9yQWN0aXZlIiwiRGl2aWRlckxpbmUiLCJkcm9wZG93bkxpc3RCb3JkZXJUb3AiLCJDb2xvclN3YXRjaCIsImF0dHJzIiwiY2xhc3NOYW1lIiwiY29sb3IiLCJib3hTaGFkb3ciLCJTdHlsZWRCdXR0b25Db250YWluZXIiLCJTdHlsZWRBZGRTdGVwQ29udGFpbmVyIiwiaW5wdXRDb2xvciIsIlN0eWxlZElucHV0IiwiSW5wdXQiLCJ3aXRoQ29uZmlnIiwic2hvdWxkRm9yd2FyZFByb3AiLCJfcHJvcHMkd2lkdGgiLCJ3aWR0aCIsIl9wcm9wcyR0ZXh0QWxpZ24iLCJ0ZXh0QWxpZ24iLCJkaXNhYmxlZCIsIklucHV0VGV4dCIsImlucHV0IiwiX3Byb3BzJHdpZHRoMiIsIl9wcm9wcyR0ZXh0QWxpZ24yIiwiU29ydGFibGVJdGVtIiwiX3JlZiIsImlkIiwiY2hpbGRyZW4iLCJpc1NvcnRpbmciLCJfdXNlU29ydGFibGUiLCJ1c2VTb3J0YWJsZSIsImF0dHJpYnV0ZXMiLCJsaXN0ZW5lcnMiLCJzZXROb2RlUmVmIiwidHJhbnNmb3JtIiwidHJhbnNpdGlvbiIsImlzRHJhZ2dpbmciLCJzdHlsZSIsIkNTUyIsIlRyYW5zZm9ybSIsInRvU3RyaW5nIiwiekluZGV4IiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzMiIsInJlZiIsImNsYXNzbmFtZXMiLCJzb3J0aW5nIiwiV3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyIiwiX3JlZjIiLCJvblNvcnRFbmQiLCJvblNvcnRTdGFydCIsInNlbnNvcnMiLCJ1c2VTZW5zb3JzIiwidXNlU2Vuc29yIiwiUG9pbnRlclNlbnNvciIsIktleWJvYXJkU2Vuc29yIiwiRG5kQ29udGV4dCIsImNvbGxpc2lvbkRldGVjdGlvbiIsImNsb3Nlc3RDZW50ZXIiLCJvbkRyYWdFbmQiLCJvbkRyYWdTdGFydCIsIlNvcnRhYmxlQ29udGV4dCIsIml0ZW1zIiwiUmVhY3QiLCJDaGlsZHJlbiIsIm1hcCIsIl8iLCJpbmRleCIsImNvbmNhdCIsInN0cmF0ZWd5IiwidmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwiRHJhZ0hhbmRsZSIsIl9yZWYzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsIkNvbG9yUGFsZXR0ZUlucHV0IiwiX3JlZjQiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiZWRpdGFibGUiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzdGF0ZVZhbHVlIiwic2V0VmFsdWUiLCJpbnB1dFJlZiIsInVzZVJlZiIsInVzZUVmZmVjdCIsIm9uS2V5RG93biIsInVzZUNhbGxiYWNrIiwia2V5Q29kZSIsIktleUV2ZW50IiwiRE9NX1ZLX0VOVEVSIiwiRE9NX1ZLX1JFVFVSTiIsImN1cnJlbnQiLCJibHVyIiwiX29uQ2hhbmdlIiwidGFyZ2V0Iiwib25CbHVyIiwic2Vjb25kYXJ5IiwiRGFzaCIsIlN0eWxlZFJhbmdlSW5wdXQiLCJTdHlsZWRDb2xvckhleElucHV0IiwiRWRpdGFibGVDb2xvclJhbmdlIiwiX3JlZjUiLCJpdGVtIiwiaXNMYXN0IiwiZWRpdENvbG9yTWFwIiwiaGFzSW5wdXRzIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5wdXRzIiwibGVmdElucHV0IiwidW5kZWZpbmVkIiwicmlnaHRJbnB1dCIsIm5vTWluQm91bmQiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsIm5vTWF4Qm91bmQiLCJvbkNoYW5nZUxlZnQiLCJ2YWwiLCJwYXJzZUZsb2F0Iiwib25DaGFuZ2VSaWdodCIsIlN0cmluZyIsIkFkZENvbG9yU3RvcCIsIl9yZWY2Iiwib25Db2xvckFkZCIsIkljb25Db21wb25lbnQiLCJvbkNsaWNrIiwiaGVpZ2h0IiwiRGVsZXRlQ29sb3JTdG9wIiwiX3JlZjciLCJvbkNvbG9yRGVsZXRlIiwiQ3VzdG9tUGFsZXR0ZUlucHV0IiwiX3JlZjgiLCJjb2xvckJyZWFrcyIsImlucHV0Q29sb3JIZXgiLCJlZGl0Q29sb3JNYXBWYWx1ZSIsIl9yZWY4JGFjdGlvbkljb25zIiwiYWN0aW9uSWNvbnMiLCJkaXNhYmxlQXBwZW5kIiwiZGlzYWJsZURlbGV0ZSIsIm9uRGVsZXRlIiwib25BZGQiLCJvblRvZ2dsZVNrZXRjaGVyIiwib25DbGlja1N3dGFjaCIsIm9uQ29sb3JJbnB1dCIsInYiLCJzaG93SGV4SW5wdXQiLCJGcmFnbWVudCIsInRvVXBwZXJDYXNlIiwiaXNOdW1lcmljQ29sb3JCcmVha3MiLCJTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyV3JhcHBlciIsIlN0eWxlZENhdGVnb3JpY2FsVmFsdWVQaWNrZXIiLCJub0JvcmRlciIsIkRyb3Bkb3duVmFsdWVzV3JhcHBlciIsIlNlbGVjdGVkVmFsdWVzV3JhcHBlciIsIlN0eWxlZERyb3Bkb3duSGVhZGVyIiwiU3R5bGVkVG9vbHRpcENvbnRlbnQiLCJOVU1CRVJfVkFMVUVTX0lOX1RPT0xUSVAiLCJDYXRlZ29yaWNhbFNlbGVjdG9yQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJvblNlbGVjdFJlc3QiLCJvblJlc2V0IiwiTW9kaWZpZWREcm9wZG93bkxpc3QiLCJfRHJvcGRvd25MaXN0IiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwicmVuZGVyIiwiX3RoaXMiLCJDb25zdW1lciIsImNvbnRleHQiLCJCdXR0b24iLCJsaW5rIiwic2l6ZSIsIkRyb3Bkb3duTGlzdCIsIkNhdGVnb3JpY2FsU2VsZWN0b3IiLCJfcmVmOSIsInNlbGVjdGVkVmFsdWVzIiwiYWxsVmFsdWVzIiwiYWRkQ29sb3JNYXBWYWx1ZSIsInJlbW92ZUNvbG9yTWFwVmFsdWUiLCJyZXNldENvbG9yTWFwVmFsdWUiLCJzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZSIsIl9yZWY5JGVkaXRhYmxlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJzaG93VHlwZWFoZWFkIiwic2V0U2hvd1R5cGVhaGVhZCIsIm9uT3B0aW9uU2VsZWN0ZWQiLCJwcmV2aW91c1NlbGVjdGVkIiwidG9BcnJheSIsInVuaXEiLCJvbk9wZW5Ecm9wZG93biIsIm9uQ2xvc2VEcm9wZG93biIsIm9uUmVtb3ZlSXRlbSIsIlRvb2x0aXAiLCJwbGFjZSIsImludGVyYWN0aXZlIiwic2xpY2UiLCJsZWZ0IiwidG9wIiwiaXNPcGVuZWQiLCJvbkNsb3NlIiwic2VsZWN0ZWRJdGVtcyIsInBsYWNlaG9sZGVyIiwicmVtb3ZlSXRlbSIsIkN1c3RvbUNoaWNrbGV0Q29tcG9uZW50IiwicG9zaXRpb24iLCJQcm92aWRlciIsImN1c3RvbUNsYXNzZXMiLCJyZXN1bHRzIiwibGlzdEl0ZW0iLCJsaXN0QW5jaG9yIiwib3B0aW9ucyIsImRpc3BsYXlPcHRpb24iLCJmaWx0ZXJPcHRpb24iLCJpbmNsdWRlcyIsImN1c3RvbUxpc3RDb21wb25lbnQiLCJjdXN0b21MaXN0SXRlbUNvbXBvbmVudCIsIkxpc3RJdGVtIiwic2VhcmNoYWJsZSIsInNob3dPcHRpb25zV2hlbkVtcHR5IiwiQ2F0ZWdvcmljYWxDdXN0b21QYWxldHRlSW5wdXQiLCJfcmVmMTAiLCJjb2xvck1hcCIsIl9yZWYxMCRhY3Rpb25JY29ucyIsInVzZU1lbW8iLCJ2YWx1ZXMiLCJCb3R0b21BY3Rpb24iLCJfcmVmMTEiLCJvbkNhbmNlbCIsIm9uQ29uZmlybSIsInNtYWxsIiwiU3R5bGVkQ3VzdG9tUGFsZXR0ZSIsIkN1c3RvbVBhbGV0dGVGYWN0b3J5IiwiQ3VzdG9tUGFsZXR0ZSIsIl9yZWYxMiIsIm9yZGluYWxEb21haW4iLCJjdXN0b21QYWxldHRlIiwic2V0Q29sb3JQYWxldHRlVUkiLCJzaG93U2tldGNoZXIiLCJfcmVmMTIkYWN0aW9uSWNvbnMiLCJvbkFwcGx5IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzZXRJc1NvcnRpbmciLCJjb2xvcnMiLCJ0eXBlIiwiY29sb3JNYXBUb0NvbG9yQnJlYWtzIiwiY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MiLCJvblBpY2tlclVwZGF0ZSIsIm5ld0N1c3RvbVBhbGV0dGUiLCJ1cGRhdGVDdXN0b21QYWxldHRlQ29sb3IiLCJoZXgiLCJyZW1vdmVDdXN0b21QYWxldHRlQ29sb3IiLCJhZGRDdXN0b21QYWxldHRlQ29sb3IiLCJvbkFkZENhdGVnb3JpY2FsU3RlcCIsIm9uU3dhdGNoQ2xvc2UiLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0IiwiYWN0aXZlIiwib3ZlciIsIm9sZEluZGV4IiwiZmluZEluZGV4IiwibmV3SW5kZXgiLCJzb3J0Q3VzdG9tUGFsZXR0ZUNvbG9yIiwibmV3Q29sb3JNYXAiLCJjbSIsImJyZWFrcyIsImIiLCJzb3J0ZWROZXdDb2xvck1hcCIsInJlbW92ZUNhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZSIsInJlbW92ZUNhdGVnb3JpY2FsVmFsdWVGcm9tQ29sb3JNYXAiLCJhZGRDYXRlZ29yaWNhbENvbG9yTWFwVmFsdWUiLCJhZGRDYXRlZ29yaWNhbFZhbHVlc1RvQ29sb3JNYXAiLCJyZXNldENhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZSIsInJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgiLCJzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcCIsInNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY3VzdG9tLXBhbGV0dGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFJlYWN0LCB7XG4gIEVsZW1lbnRUeXBlLFxuICBQcm9wc1dpdGhDaGlsZHJlbixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZVxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gvdW5pcSc7XG5pbXBvcnQge1xuICBEbmRDb250ZXh0LFxuICBjbG9zZXN0Q2VudGVyLFxuICBLZXlib2FyZFNlbnNvcixcbiAgUG9pbnRlclNlbnNvcixcbiAgdXNlU2Vuc29yLFxuICB1c2VTZW5zb3JzLFxuICBEcmFnRW5kRXZlbnRcbn0gZnJvbSAnQGRuZC1raXQvY29yZSc7XG5pbXBvcnQge1NvcnRhYmxlQ29udGV4dCwgdXNlU29ydGFibGUsIHZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneX0gZnJvbSAnQGRuZC1raXQvc29ydGFibGUnO1xuaW1wb3J0IHtDU1N9IGZyb20gJ0BkbmQta2l0L3V0aWxpdGllcyc7XG5pbXBvcnQgc3R5bGVkLCB7Y3NzfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgUG9ydGFsZWQgZnJvbSAnLi4vLi4vY29tbW9uL3BvcnRhbGVkJztcbmltcG9ydCB7VG9vbHRpcH0gZnJvbSAnLi4vLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBUeXBlYWhlYWQgZnJvbSAnLi4vLi4vY29tbW9uL2l0ZW0tc2VsZWN0b3IvdHlwZWFoZWFkJztcbmltcG9ydCBDaGlja2xldGVkSW5wdXQgZnJvbSAnLi4vLi4vY29tbW9uL2l0ZW0tc2VsZWN0b3IvY2hpY2tsZXRlZC1pbnB1dCc7XG5pbXBvcnQgRHJvcGRvd25MaXN0LCB7TGlzdEl0ZW19IGZyb20gJy4uLy4uL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2Ryb3Bkb3duLWxpc3QnO1xuaW1wb3J0IHtzaG91bGRGb3J3YXJkUHJvcH0gZnJvbSAnLi4vLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7dG9BcnJheX0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtLZXlFdmVudH0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtDb2xvck1hcCwgQ29sb3JVSSwgSGV4Q29sb3IsIE5lc3RlZFBhcnRpYWx9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgYWRkQ2F0ZWdvcmljYWxWYWx1ZXNUb0NvbG9yTWFwLFxuICBhZGRDdXN0b21QYWxldHRlQ29sb3IsXG4gIGNvbG9yTWFwVG9DYXRlZ29yaWNhbENvbG9yQnJlYWtzLFxuICBjb2xvck1hcFRvQ29sb3JCcmVha3MsXG4gIGlzTnVtZXJpY0NvbG9yQnJlYWtzLFxuICByZXNldENhdGVnb3JpY2FsQ29sb3JNYXBCeUluZGV4LFxuICByZW1vdmVDYXRlZ29yaWNhbFZhbHVlRnJvbUNvbG9yTWFwLFxuICByZW1vdmVDdXN0b21QYWxldHRlQ29sb3IsXG4gIHNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleCxcbiAgc29ydEN1c3RvbVBhbGV0dGVDb2xvcixcbiAgdXBkYXRlQ3VzdG9tUGFsZXR0ZUNvbG9yXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtDb2xvckJyZWFrLCBDb2xvckJyZWFrT3JkaW5hbH0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0FkZCwgVHJhc2gsIFZlcnREb3RzfSBmcm9tICcuLi8uLi9jb21tb24vaWNvbnMnO1xuaW1wb3J0IHtCdXR0b24sIElucHV0fSBmcm9tICcuLi8uLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IEN1c3RvbVBpY2tlciBmcm9tICcuL2N1c3RvbS1waWNrZXInO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25JY29ucyA9IHtcbiAgZGVsZXRlOiBFbGVtZW50VHlwZTtcbiAgc29ydDogRWxlbWVudFR5cGU7XG4gIGFkZDogRWxlbWVudFR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBFZGl0Q29sb3JNYXBGdW5jID0gKHY6IG51bWJlciwgaTogbnVtYmVyKSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgU2V0Q29sb3JVSUZ1bmMgPSAobmV3Q29uZmlnOiBOZXN0ZWRQYXJ0aWFsPENvbG9yVUk+KSA9PiB2b2lkO1xuXG4vKipcbiAqIEVkaXRhYmxlQ29sb3JSYW5nZVxuICovXG5leHBvcnQgdHlwZSBFZGl0YWJsZUNvbG9yUmFuZ2VQcm9wcyA9IHtcbiAgaXRlbTogQ29sb3JCcmVhaztcbiAgaXNMYXN0OiBib29sZWFuO1xuICBpbmRleDogbnVtYmVyO1xuICBlZGl0Q29sb3JNYXA/OiBFZGl0Q29sb3JNYXBGdW5jO1xuICBlZGl0YWJsZTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbVBhbGV0dGVQcm9wcyA9IHtcbiAgY3VzdG9tUGFsZXR0ZTogQ29sb3JVSVsnY3VzdG9tUGFsZXR0ZSddO1xuICBzZXRDb2xvclBhbGV0dGVVSTogU2V0Q29sb3JVSUZ1bmM7XG4gIHNob3dTa2V0Y2hlcjogbnVtYmVyIHwgYm9vbGVhbjtcbiAgb3JkaW5hbERvbWFpbj86IHN0cmluZ1tdIHwgbnVtYmVyW107XG4gIGFjdGlvbkljb25zPzogQWN0aW9uSWNvbnM7XG4gIG9uQXBwbHk6IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB2b2lkO1xuICBvbkNhbmNlbDogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbVBhbGV0dGVJbnB1dFByb3BzID0ge1xuICBpbmRleDogbnVtYmVyO1xuICBpc1NvcnRpbmc6IGJvb2xlYW47XG4gIGNvbG9yOiBIZXhDb2xvcjtcbiAgY29sb3JCcmVha3M6IENvbG9yQnJlYWtPcmRpbmFsW10gfCBDb2xvckJyZWFrW10gfCBudWxsO1xuICBpbnB1dENvbG9ySGV4OiAoaW5kZXg6IG51bWJlciwgdjogSGV4Q29sb3IpID0+IHZvaWQ7XG4gIGVkaXRDb2xvck1hcFZhbHVlOiBFZGl0Q29sb3JNYXBGdW5jO1xuICBhY3Rpb25JY29ucz86IEFjdGlvbkljb25zO1xuICBkaXNhYmxlQXBwZW5kPzogYm9vbGVhbjtcbiAgZGlzYWJsZURlbGV0ZT86IGJvb2xlYW47XG4gIG9uRGVsZXRlOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgb25BZGQ6IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBvblRvZ2dsZVNrZXRjaGVyOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbn07XG5cbmNvbnN0IGRlZmF1bHRBY3Rpb25JY29ucyA9IHtcbiAgZGVsZXRlOiBUcmFzaCxcbiAgc29ydDogVmVydERvdHMsXG4gIGFkZDogQWRkXG59O1xuXG5jb25zdCBkcmFnSGFuZGxlQWN0aXZlID0gY3NzYFxuICAubGF5ZXJfX2RyYWctaGFuZGxlIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgb3BhY2l0eTogMTtcbiAgICBjdXJzb3I6IG1vdmU7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBDb2xvclBhbGV0dGVJdGVtID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZy10b3A6IDJweDtcbiAgcGFkZGluZy1ib3R0b206IDJweDtcbiAgei1pbmRleDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldyYXBwZXJaICsgMX07XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAuY3VzdG9tLXBhbGV0dGUtaW5wdXRfX2xlZnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuXG4gIC5jdXN0b20tcGFsZXR0ZS1pbnB1dF9fcmlnaHQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nLXJpZ2h0OiA2cHg7XG4gIH1cblxuICAmOm5vdCguc29ydGluZyk6bm90KC5kaXNhYmxlZCkge1xuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmRIb3Zlcn07XG4gICAgICAke2RyYWdIYW5kbGVBY3RpdmV9O1xuICAgIH1cbiAgfVxuXG4gICYuc29ydGluZy1jb2xvcnMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kSG92ZXJ9O1xuICAgICR7ZHJhZ0hhbmRsZUFjdGl2ZX07XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZERyYWdIYW5kbGUgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBvcGFjaXR5OiAwO1xuYDtcblxuY29uc3QgU3R5bGVkQWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yfTtcbiAgc3ZnIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvckFjdGl2ZX07XG4gICAgfVxuICB9XG5cbiAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgJjpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgRGl2aWRlckxpbmUgPSBzdHlsZWQuZGl2YFxuICBoZWlnaHQ6IDFweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCb3JkZXJUb3B9O1xuICBtYXJnaW4tdG9wOiA4cHg7XG5gO1xuXG5leHBvcnQgY29uc3QgQ29sb3JTd2F0Y2ggPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnY3VzdG9tLXBhbGV0dGVfX3N3YXRjaCdcbn0pYFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLmNvbG9yfTtcbiAgd2lkdGg6IDMycHg7XG4gIGhlaWdodDogMThweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAmOmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmJveFNoYWRvd307XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRCdXR0b25Db250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tdG9wOiAxMXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBkaXJlY3Rpb246IHJ0bDtcbiAgcGFkZGluZzogMCAxMnB4O1xuYDtcblxuY29uc3QgU3R5bGVkQWRkU3RlcENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi10b3A6IDExcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMCAxMnB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dENvbG9yfTtcbiAgLmFkZGNvbG9yIHtcbiAgICBtYXJnaW4tdG9wOiA0cHg7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KS53aXRoQ29uZmlnKHtzaG91bGRGb3J3YXJkUHJvcH0pPHtcbiAgd2lkdGg6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG59PmBcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMud2lkdGggPz8gJzEwMCUnfTtcbiAgdGV4dC1hbGlnbjogJHtwcm9wcyA9PiBwcm9wcy50ZXh0QWxpZ24gPz8gJ2VuZCd9O1xuICBwb2ludGVyLWV2ZW50czogJHtwcm9wcyA9PiAocHJvcHMuZGlzYWJsZWQgPyAnbm9uZScgOiAnYWxsJyl9O1xuYDtcblxuY29uc3QgSW5wdXRUZXh0ID0gc3R5bGVkLmRpdi53aXRoQ29uZmlnKHtzaG91bGRGb3J3YXJkUHJvcH0pPHt3aWR0aDogc3RyaW5nOyB0ZXh0QWxpZ246IHN0cmluZ30+YFxuICAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0fTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLndpZHRoID8/ICcxMDAlJ307XG4gIHRleHQtYWxpZ246ICR7cHJvcHMgPT4gcHJvcHMudGV4dEFsaWduID8/ICdlbmQnfTtcblxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IGF1dG87XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuYDtcblxudHlwZSBTb3J0YWJsZUl0ZW1Qcm9wcyA9IHtcbiAgaWQ6IHN0cmluZztcbiAgY2hpbGRyZW46IChsaXN0ZW5lcnM6IGFueSkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGlzU29ydGluZzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IFNvcnRhYmxlSXRlbSA9ICh7aWQsIGNoaWxkcmVuLCBpc1NvcnRpbmd9OiBTb3J0YWJsZUl0ZW1Qcm9wcykgPT4ge1xuICBjb25zdCB7YXR0cmlidXRlcywgbGlzdGVuZXJzLCBzZXROb2RlUmVmLCB0cmFuc2Zvcm0sIHRyYW5zaXRpb24sIGlzRHJhZ2dpbmd9ID0gdXNlU29ydGFibGUoe2lkfSk7XG4gIGNvbnN0IHN0eWxlID0ge1xuICAgIHRyYW5zZm9ybTogQ1NTLlRyYW5zZm9ybS50b1N0cmluZyh0cmFuc2Zvcm0pLFxuICAgIHRyYW5zaXRpb24sXG4gICAgekluZGV4OiBpc0RyYWdnaW5nID8gMSA6IDBcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Q29sb3JQYWxldHRlSXRlbVxuICAgICAgcmVmPXtzZXROb2RlUmVmfVxuICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdjdXN0b20tcGFsZXR0ZV9fc29ydGFibGUtaXRlbXMnLCB7c29ydGluZzogaXNTb3J0aW5nIHx8IGlzRHJhZ2dpbmd9KX1cbiAgICAgIHsuLi5hdHRyaWJ1dGVzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbihsaXN0ZW5lcnMpfVxuICAgIDwvQ29sb3JQYWxldHRlSXRlbT5cbiAgKTtcbn07XG5cbnR5cGUgV3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyUHJvcHMgPSB7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIG9uU29ydEVuZDogKGV2ZW50OiBEcmFnRW5kRXZlbnQpID0+IHZvaWQ7XG4gIG9uU29ydFN0YXJ0OiAoKSA9PiB2b2lkO1xufTtcblxuY29uc3QgV3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgb25Tb3J0RW5kLFxuICBvblNvcnRTdGFydFxufTogV3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyUHJvcHMpID0+IHtcbiAgY29uc3Qgc2Vuc29ycyA9IHVzZVNlbnNvcnModXNlU2Vuc29yKFBvaW50ZXJTZW5zb3IpLCB1c2VTZW5zb3IoS2V5Ym9hcmRTZW5zb3IpKTtcbiAgcmV0dXJuIChcbiAgICA8RG5kQ29udGV4dFxuICAgICAgc2Vuc29ycz17c2Vuc29yc31cbiAgICAgIGNvbGxpc2lvbkRldGVjdGlvbj17Y2xvc2VzdENlbnRlcn1cbiAgICAgIG9uRHJhZ0VuZD17b25Tb3J0RW5kfVxuICAgICAgb25EcmFnU3RhcnQ9e29uU29ydFN0YXJ0fVxuICAgID5cbiAgICAgIDxTb3J0YWJsZUNvbnRleHRcbiAgICAgICAgaXRlbXM9e1JlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKF8sIGluZGV4KSA9PiBgJHtpbmRleH1gKSB8fCBbXX1cbiAgICAgICAgc3RyYXRlZ3k9e3ZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgPC9Tb3J0YWJsZUNvbnRleHQ+XG4gICAgPC9EbmRDb250ZXh0PlxuICApO1xufTtcblxudHlwZSBEcmFnSGFuZGxlUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7Y2xhc3NOYW1lPzogc3RyaW5nfT47XG5jb25zdCBEcmFnSGFuZGxlID0gKHtjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5saXN0ZW5lcnN9OiBEcmFnSGFuZGxlUHJvcHMpID0+IChcbiAgPFN0eWxlZERyYWdIYW5kbGUgY2xhc3NOYW1lPXtjbGFzc05hbWV9IHsuLi5saXN0ZW5lcnN9PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9TdHlsZWREcmFnSGFuZGxlPlxuKTtcblxuZXhwb3J0IHR5cGUgQ29sb3JQYWxldHRlSW5wdXRQcm9wcyA9IHtcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbiAgb25DaGFuZ2U6ICh2YWw6IHVua25vd24pID0+IHZvaWQ7XG4gIGlkOiBzdHJpbmc7XG4gIHdpZHRoOiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBlZGl0YWJsZTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBDb2xvclBhbGV0dGVJbnB1dCA9ICh7XG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgaWQsXG4gIHdpZHRoLFxuICB0ZXh0QWxpZ24sXG4gIGVkaXRhYmxlXG59OiBDb2xvclBhbGV0dGVJbnB1dFByb3BzKSA9PiB7XG4gIGNvbnN0IFtzdGF0ZVZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSh2YWx1ZSk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFZhbHVlKHZhbHVlKTtcbiAgfSwgW3ZhbHVlXSk7XG5cbiAgY29uc3Qgb25LZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgZSA9PiB7XG4gICAgICBzd2l0Y2ggKGUua2V5Q29kZSkge1xuICAgICAgICBjYXNlIEtleUV2ZW50LkRPTV9WS19FTlRFUjpcbiAgICAgICAgY2FzZSBLZXlFdmVudC5ET01fVktfUkVUVVJOOlxuICAgICAgICAgIG9uQ2hhbmdlKHN0YXRlVmFsdWUpO1xuICAgICAgICAgIGlmIChpbnB1dFJlZiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgaW5wdXRSZWY/LmN1cnJlbnQuYmx1cigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvbkNoYW5nZSwgc3RhdGVWYWx1ZV1cbiAgKTtcblxuICBjb25zdCBfb25DaGFuZ2UgPSB1c2VDYWxsYmFjayhlID0+IHNldFZhbHVlKGUudGFyZ2V0LnZhbHVlKSwgW3NldFZhbHVlXSk7XG4gIGNvbnN0IG9uQmx1ciA9IHVzZUNhbGxiYWNrKCgpID0+IG9uQ2hhbmdlKHN0YXRlVmFsdWUpLCBbb25DaGFuZ2UsIHN0YXRlVmFsdWVdKTtcblxuICByZXR1cm4gZWRpdGFibGUgPyAoXG4gICAgPFN0eWxlZElucHV0XG4gICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgY2xhc3NOYW1lPVwiY3VzdG9tLXBhbGV0dGUtaGV4X19pbnB1dFwiXG4gICAgICB2YWx1ZT17c3RhdGVWYWx1ZX1cbiAgICAgIG9uQ2hhbmdlPXtfb25DaGFuZ2V9XG4gICAgICBvbkJsdXI9e29uQmx1cn1cbiAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgaWQ9e2lkfVxuICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgdGV4dEFsaWduPXt0ZXh0QWxpZ259XG4gICAgICBzZWNvbmRhcnlcbiAgICAvPlxuICApIDogKFxuICAgIDxJbnB1dFRleHQgY2xhc3NOYW1lPVwiY3VzdG9tLXBhbGV0dGUtaGV4X19pbnB1dF9fdGV4dFwiIHdpZHRoPXt3aWR0aH0gdGV4dEFsaWduPXt0ZXh0QWxpZ259PlxuICAgICAge3ZhbHVlfVxuICAgIDwvSW5wdXRUZXh0PlxuICApO1xufTtcblxuY29uc3QgRGFzaCA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiA2cHg7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvcn07XG4gIG1hcmdpbi1sZWZ0OiA0cHg7XG4gIG1hcmdpbi1yaWdodDogNHB4O1xuYDtcblxuY29uc3QgU3R5bGVkUmFuZ2VJbnB1dCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1sZWZ0OiAxMnB4O1xuYDtcblxuY29uc3QgU3R5bGVkQ29sb3JIZXhJbnB1dCA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1sZWZ0OiAxMnB4O1xuYDtcblxuZXhwb3J0IGNvbnN0IEVkaXRhYmxlQ29sb3JSYW5nZTogUmVhY3QuRkM8RWRpdGFibGVDb2xvclJhbmdlUHJvcHM+ID0gKHtcbiAgaXRlbSxcbiAgaXNMYXN0LFxuICBpbmRleCxcbiAgZWRpdENvbG9yTWFwLFxuICBlZGl0YWJsZVxufSkgPT4ge1xuICBjb25zdCBoYXNJbnB1dHMgPSBBcnJheS5pc0FycmF5KGl0ZW0/LmlucHV0cyk7XG4gIGNvbnN0IGxlZnRJbnB1dCA9IGhhc0lucHV0cyA/IGl0ZW0uaW5wdXRzWzBdIDogdW5kZWZpbmVkO1xuICBjb25zdCByaWdodElucHV0ID0gaGFzSW5wdXRzID8gaXRlbS5pbnB1dHNbMV0gOiB1bmRlZmluZWQ7XG4gIGNvbnN0IG5vTWluQm91bmQgPSAhTnVtYmVyLmlzRmluaXRlKGxlZnRJbnB1dCkgJiYgaW5kZXggPT09IDA7XG4gIGNvbnN0IG5vTWF4Qm91bmQgPSAhTnVtYmVyLmlzRmluaXRlKHJpZ2h0SW5wdXQpICYmIGlzTGFzdDtcbiAgY29uc3Qgb25DaGFuZ2VMZWZ0ID0gdXNlQ2FsbGJhY2soXG4gICAgdmFsID0+IHtcbiAgICAgIGlmIChlZGl0YWJsZSAmJiBlZGl0Q29sb3JNYXApIGVkaXRDb2xvck1hcChwYXJzZUZsb2F0KHZhbCksIGluZGV4IC0gMSk7XG4gICAgfSxcbiAgICBbZWRpdENvbG9yTWFwLCBpbmRleCwgZWRpdGFibGVdXG4gICk7XG4gIGNvbnN0IG9uQ2hhbmdlUmlnaHQgPSB1c2VDYWxsYmFjayhcbiAgICB2YWwgPT4ge1xuICAgICAgaWYgKGVkaXRhYmxlICYmIGVkaXRDb2xvck1hcCkgZWRpdENvbG9yTWFwKHBhcnNlRmxvYXQodmFsKSwgaW5kZXgpO1xuICAgIH0sXG4gICAgW2VkaXRDb2xvck1hcCwgaW5kZXgsIGVkaXRhYmxlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFJhbmdlSW5wdXQ+XG4gICAgICA8Q29sb3JQYWxldHRlSW5wdXRcbiAgICAgICAgdmFsdWU9e25vTWluQm91bmQgPyAnTGVzcycgOiBTdHJpbmcobGVmdElucHV0ID8/ICcnKX1cbiAgICAgICAgaWQ9e2Bjb2xvci1wYWxldHRlLWlucHV0LSR7aW5kZXh9LWxlZnRgfVxuICAgICAgICB3aWR0aD1cIjUwcHhcIlxuICAgICAgICB0ZXh0QWxpZ249XCJlbmRcIlxuICAgICAgICBlZGl0YWJsZT17bm9NaW5Cb3VuZCA/IGZhbHNlIDogZWRpdGFibGV9XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZUxlZnR9XG4gICAgICAvPlxuICAgICAgPERhc2ggLz5cbiAgICAgIDxDb2xvclBhbGV0dGVJbnB1dFxuICAgICAgICB2YWx1ZT17bm9NYXhCb3VuZCA/ICdNb3JlJyA6IFN0cmluZyhyaWdodElucHV0ID8/ICcnKX1cbiAgICAgICAgaWQ9e2Bjb2xvci1wYWxldHRlLWlucHV0LSR7aW5kZXh9LXJpZ2h0YH1cbiAgICAgICAgd2lkdGg9XCI1MHB4XCJcbiAgICAgICAgdGV4dEFsaWduPVwiZW5kXCJcbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlUmlnaHR9XG4gICAgICAgIGVkaXRhYmxlPXtub01heEJvdW5kID8gZmFsc2UgOiBlZGl0YWJsZX1cbiAgICAgIC8+XG4gICAgPC9TdHlsZWRSYW5nZUlucHV0PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IEFkZENvbG9yU3RvcCA9ICh7b25Db2xvckFkZCwgSWNvbkNvbXBvbmVudH0pID0+IChcbiAgPFN0eWxlZEFjdGlvbiBvbkNsaWNrPXtvbkNvbG9yQWRkfSBjbGFzc05hbWU9XCJhZGRjb2xvclwiPlxuICAgIDxJY29uQ29tcG9uZW50IGhlaWdodD1cIjE0cHhcIiAvPlxuICA8L1N0eWxlZEFjdGlvbj5cbik7XG5cbmV4cG9ydCBjb25zdCBEZWxldGVDb2xvclN0b3AgPSAoe29uQ29sb3JEZWxldGUsIEljb25Db21wb25lbnR9KSA9PiAoXG4gIDxTdHlsZWRBY3Rpb24gb25DbGljaz17b25Db2xvckRlbGV0ZX0gY2xhc3NOYW1lPVwidHJhc2hiaW5cIj5cbiAgICA8SWNvbkNvbXBvbmVudCBoZWlnaHQ9XCIxNHB4XCIgLz5cbiAgPC9TdHlsZWRBY3Rpb24+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3VzdG9tUGFsZXR0ZUlucHV0OiBSZWFjdC5GQzxDdXN0b21QYWxldHRlSW5wdXRQcm9wcz4gPSAoe1xuICBpbmRleCxcbiAgaXNTb3J0aW5nLFxuICBjb2xvcixcbiAgY29sb3JCcmVha3MsXG4gIGlucHV0Q29sb3JIZXgsXG4gIGVkaXRDb2xvck1hcFZhbHVlLFxuICBhY3Rpb25JY29ucyA9IGRlZmF1bHRBY3Rpb25JY29ucyxcbiAgZGlzYWJsZUFwcGVuZCxcbiAgZGlzYWJsZURlbGV0ZSxcbiAgb25EZWxldGUsXG4gIG9uQWRkLFxuICBvblRvZ2dsZVNrZXRjaGVyXG59KSA9PiB7XG4gIGNvbnN0IG9uQ2xpY2tTd3RhY2ggPSB1c2VDYWxsYmFjaygoKSA9PiBvblRvZ2dsZVNrZXRjaGVyKGluZGV4KSwgW29uVG9nZ2xlU2tldGNoZXIsIGluZGV4XSk7XG4gIGNvbnN0IG9uQ29sb3JJbnB1dCA9IHVzZUNhbGxiYWNrKHYgPT4gaW5wdXRDb2xvckhleChpbmRleCwgdiksIFtpbnB1dENvbG9ySGV4LCBpbmRleF0pO1xuICBjb25zdCBvbkNvbG9yRGVsZXRlID0gdXNlQ2FsbGJhY2soKCkgPT4gb25EZWxldGUoaW5kZXgpLCBbb25EZWxldGUsIGluZGV4XSk7XG4gIGNvbnN0IG9uQ29sb3JBZGQgPSB1c2VDYWxsYmFjaygoKSA9PiBvbkFkZChpbmRleCksIFtvbkFkZCwgaW5kZXhdKTtcbiAgY29uc3Qgc2hvd0hleElucHV0ID0gIWNvbG9yQnJlYWtzO1xuXG4gIHJldHVybiAoXG4gICAgPFNvcnRhYmxlSXRlbSBpZD17YCR7aW5kZXh9YH0gaXNTb3J0aW5nPXtpc1NvcnRpbmd9PlxuICAgICAge2xpc3RlbmVycyA9PiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdXN0b20tcGFsZXR0ZS1pbnB1dF9fbGVmdFwiPlxuICAgICAgICAgICAgPERyYWdIYW5kbGUgY2xhc3NOYW1lPVwibGF5ZXJfX2RyYWctaGFuZGxlXCIgey4uLmxpc3RlbmVyc30+XG4gICAgICAgICAgICAgIDxhY3Rpb25JY29ucy5zb3J0IGhlaWdodD1cIjIwcHhcIiAvPlxuICAgICAgICAgICAgPC9EcmFnSGFuZGxlPlxuICAgICAgICAgICAgPENvbG9yU3dhdGNoIGNvbG9yPXtjb2xvcn0gb25DbGljaz17b25DbGlja1N3dGFjaH0gLz5cbiAgICAgICAgICAgIHtzaG93SGV4SW5wdXQgPyAoXG4gICAgICAgICAgICAgIDxTdHlsZWRDb2xvckhleElucHV0PlxuICAgICAgICAgICAgICAgIDxDb2xvclBhbGV0dGVJbnB1dFxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbG9yLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25Db2xvcklucHV0fVxuICAgICAgICAgICAgICAgICAgaWQ9e2BpbnB1dC1sYXllci1sYWJlbC0ke2luZGV4fWB9XG4gICAgICAgICAgICAgICAgICBlZGl0YWJsZVxuICAgICAgICAgICAgICAgICAgdGV4dEFsaWduPVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjcwcHhcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU3R5bGVkQ29sb3JIZXhJbnB1dD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAge2NvbG9yQnJlYWtzICYmIGluZGV4IDwgY29sb3JCcmVha3MubGVuZ3RoICYmIGlzTnVtZXJpY0NvbG9yQnJlYWtzKGNvbG9yQnJlYWtzKSA/IChcbiAgICAgICAgICAgICAgPEVkaXRhYmxlQ29sb3JSYW5nZVxuICAgICAgICAgICAgICAgIGl0ZW09e2NvbG9yQnJlYWtzW2luZGV4XX1cbiAgICAgICAgICAgICAgICBpc0xhc3Q9e2luZGV4ID09PSBjb2xvckJyZWFrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICBlZGl0Q29sb3JNYXA9e2VkaXRDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAgIGVkaXRhYmxlXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN1c3RvbS1wYWxldHRlLWlucHV0X19yaWdodFwiPlxuICAgICAgICAgICAgeyFkaXNhYmxlQXBwZW5kID8gKFxuICAgICAgICAgICAgICA8QWRkQ29sb3JTdG9wIG9uQ29sb3JBZGQ9e29uQ29sb3JBZGR9IEljb25Db21wb25lbnQ9e2FjdGlvbkljb25zLmFkZH0gLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgeyFkaXNhYmxlRGVsZXRlID8gKFxuICAgICAgICAgICAgICA8RGVsZXRlQ29sb3JTdG9wIG9uQ29sb3JEZWxldGU9e29uQ29sb3JEZWxldGV9IEljb25Db21wb25lbnQ9e2FjdGlvbkljb25zLmRlbGV0ZX0gLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC9Tb3J0YWJsZUl0ZW0+XG4gICk7XG59O1xuXG5jb25zdCBTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyV3JhcHBlciA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdjYXRlZ29yaWNhbC12YWx1ZS1waWNrZXInXG59KWBcbiAgd2lkdGg6IDE1MHB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dENvbG9yfTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgY29sdW1uLWdhcDogOHB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG5gO1xuXG50eXBlIFN0eWxlZENhdGVnb3JpY2FsVmFsdWVQaWNrZXJQcm9wcyA9IHtub0JvcmRlcjogYm9vbGVhbn07XG5jb25zdCBTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyID0gc3R5bGVkLmRpdjxTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyUHJvcHM+YFxuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgYm9yZGVyLWJvdHRvbTogJHtwcm9wcyA9PiAocHJvcHMubm9Cb3JkZXIgPyAnJyA6ICcxcHggZGFzaGVkJyl9O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtYXgtd2lkdGg6IDEwMHB4O1xuYDtcblxudHlwZSBEcm9wZG93blZhbHVlc1dyYXBwZXJQcm9wcyA9IHt3aWR0aDogbnVtYmVyfTtcbmNvbnN0IERyb3Bkb3duVmFsdWVzV3JhcHBlciA9IHN0eWxlZC5kaXY8RHJvcGRvd25WYWx1ZXNXcmFwcGVyUHJvcHM+YFxuICBib3JkZXI6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duV3JhcHBlclp9O1xuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aH1weDtcbmA7XG5cbnR5cGUgU2VsZWN0ZWRWYWx1ZXNXcmFwcGVyUHJvcHMgPSB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9O1xuY29uc3QgU2VsZWN0ZWRWYWx1ZXNXcmFwcGVyID0gc3R5bGVkKERyb3Bkb3duVmFsdWVzV3JhcHBlcik8U2VsZWN0ZWRWYWx1ZXNXcmFwcGVyUHJvcHM+YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aH1weDtcbiAgbWF4LWhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy5oZWlnaHR9cHg7XG4gIG92ZXJmbG93OiBhdXRvO1xuXG4gIC5jdXN0b20tcGFsZXR0ZS1jaGlja2xldGVkLWlucHV0IHtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldyYXBwZXJafTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkRHJvcGRvd25IZWFkZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0Q29sb3J9O1xuICBwYWRkaW5nOiAwIDhweDtcbiAgZm9udC1zaXplOiAxMHB4O1xuXG4gIC5idXR0b24ge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkVG9vbHRpcENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiA4cHg7XG4gIHdpZHRoOiAxNTBweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuXG4gIGRpdiB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB9XG5gO1xuXG5jb25zdCBOVU1CRVJfVkFMVUVTX0lOX1RPT0xUSVAgPSAxMDtcblxuY29uc3QgQ2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgb25TZWxlY3RSZXN0OiAoKSA9PiBudWxsLFxuICBvblJlc2V0OiAoKSA9PiBudWxsXG59KTtcblxuLy8gQ2F0ZWdvcmljYWwgdmFsdWVzIGRyb3Bkb3dubGlzdDpcbi8vIGV4dGVuZGluZyBEcm9wZG93bkxpc3QgYW5kIGFkZGluZyAnU2VsZWN0IHRoZSBSZXN0JyBhbmQgJ1Jlc2V0JyBidXR0b25zXG5jbGFzcyBNb2RpZmllZERyb3Bkb3duTGlzdCBleHRlbmRzIERyb3Bkb3duTGlzdCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8Q2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAge2NvbnRleHQgPT4gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPFN0eWxlZERyb3Bkb3duSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gbGluayBzaXplPVwic21hbFwiIG9uQ2xpY2s9e2NvbnRleHQub25TZWxlY3RSZXN0fT5cbiAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgUmVzdFxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gbGluayBzaXplPVwic21hbFwiIG9uQ2xpY2s9e2NvbnRleHQub25SZXNldH0+XG4gICAgICAgICAgICAgICAgICBSZXNldFxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8L1N0eWxlZERyb3Bkb3duSGVhZGVyPlxuICAgICAgICAgICAgICA8RGl2aWRlckxpbmUgLz5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTGlzdCB7Li4udGhpcy5wcm9wc30gLz5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQ2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQuQ29uc3VtZXI+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIENhdGVnb3JpY2FsU2VsZWN0b3JQcm9wcyA9IHtcbiAgaW5kZXg6IG51bWJlcjtcbiAgc2VsZWN0ZWRWYWx1ZXM6IChzdHJpbmcgfCBudW1iZXIgfCBudWxsKVtdO1xuICBhbGxWYWx1ZXM6IHN0cmluZ1tdIHwgbnVtYmVyW107XG4gIGFkZENvbG9yTWFwVmFsdWU/OiAodjogKG51bWJlciB8IHN0cmluZyB8IG51bGwpW10sIGk6IG51bWJlcikgPT4gdm9pZDtcbiAgcmVtb3ZlQ29sb3JNYXBWYWx1ZT86ICh2OiBudW1iZXIgfCBzdHJpbmcsIGk6IG51bWJlcikgPT4gdm9pZDtcbiAgcmVzZXRDb2xvck1hcFZhbHVlPzogKGk6IG51bWJlcikgPT4gdm9pZDtcbiAgc2VsZWN0UmVzdENvbG9yTWFwVmFsdWU/OiAoaTogbnVtYmVyKSA9PiB2b2lkO1xuICBlZGl0YWJsZT86IGJvb2xlYW47XG59O1xuXG4vLyBDYXRlZ29yaWNhbCB2YWx1ZXMgc2VsZWN0b3IgZm9yIGVkaXRpbmcgY2F0ZWdvcmljYWwgdmFsdWVzXG5leHBvcnQgY29uc3QgQ2F0ZWdvcmljYWxTZWxlY3RvcjogUmVhY3QuRkM8Q2F0ZWdvcmljYWxTZWxlY3RvclByb3BzPiA9ICh7XG4gIGluZGV4LFxuICBzZWxlY3RlZFZhbHVlcyxcbiAgYWxsVmFsdWVzLFxuICBhZGRDb2xvck1hcFZhbHVlLFxuICByZW1vdmVDb2xvck1hcFZhbHVlLFxuICByZXNldENvbG9yTWFwVmFsdWUsXG4gIHNlbGVjdFJlc3RDb2xvck1hcFZhbHVlLFxuICBlZGl0YWJsZSA9IHRydWVcbn06IENhdGVnb3JpY2FsU2VsZWN0b3JQcm9wcykgPT4ge1xuICBjb25zdCBbc2hvd1R5cGVhaGVhZCwgc2V0U2hvd1R5cGVhaGVhZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25PcHRpb25TZWxlY3RlZCA9IHVzZUNhbGxiYWNrKFxuICAgIHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IHByZXZpb3VzU2VsZWN0ZWQgPSB0b0FycmF5KHNlbGVjdGVkVmFsdWVzKTtcbiAgICAgIGNvbnN0IGl0ZW1zID0gdW5pcShwcmV2aW91c1NlbGVjdGVkLmNvbmNhdCh0b0FycmF5KHZhbHVlKSkpO1xuICAgICAgYWRkQ29sb3JNYXBWYWx1ZT8uKGl0ZW1zLCBpbmRleCk7XG4gICAgfSxcbiAgICBbc2VsZWN0ZWRWYWx1ZXMsIGluZGV4LCBhZGRDb2xvck1hcFZhbHVlXVxuICApO1xuXG4gIGNvbnN0IG9uT3BlbkRyb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNob3dUeXBlYWhlYWQodHJ1ZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvbkNsb3NlRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0U2hvd1R5cGVhaGVhZChmYWxzZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvblJlbW92ZUl0ZW0gPSB1c2VDYWxsYmFjayhcbiAgICB2YWx1ZSA9PiB7XG4gICAgICByZW1vdmVDb2xvck1hcFZhbHVlPy4odmFsdWUsIGluZGV4KTtcbiAgICB9LFxuICAgIFtpbmRleCwgcmVtb3ZlQ29sb3JNYXBWYWx1ZV1cbiAgKTtcblxuICBjb25zdCBvblJlc2V0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHJlc2V0Q29sb3JNYXBWYWx1ZT8uKGluZGV4KTtcbiAgICBzZXRTaG93VHlwZWFoZWFkKGZhbHNlKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSwgW3Jlc2V0Q29sb3JNYXBWYWx1ZSwgaW5kZXhdKTtcblxuICBjb25zdCBvblNlbGVjdFJlc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2VsZWN0UmVzdENvbG9yTWFwVmFsdWU/LihpbmRleCk7XG4gICAgc2V0U2hvd1R5cGVhaGVhZChmYWxzZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sIFtzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZSwgaW5kZXhdKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyV3JhcHBlcj5cbiAgICAgIHtlZGl0YWJsZSAmJiA8QWRkIGhlaWdodD1cIjEycHhcIiBvbkNsaWNrPXtvbk9wZW5Ecm9wZG93bn0gLz59XG4gICAgICA8U3R5bGVkQ2F0ZWdvcmljYWxWYWx1ZVBpY2tlclxuICAgICAgICBub0JvcmRlcj17c2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSAwIHx8ICFlZGl0YWJsZX1cbiAgICAgICAgb25DbGljaz17b25PcGVuRHJvcGRvd259XG4gICAgICAgIGRhdGEtdGlwXG4gICAgICAgIGRhdGEtZm9yPXtgY2F0ZWdvcnktdmFsdWVzLSR7aW5kZXh9YH1cbiAgICAgID5cbiAgICAgICAge3NlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gJ0FkZCBWYWx1ZSdcbiAgICAgICAgICA6IHNlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMVxuICAgICAgICAgID8gc2VsZWN0ZWRWYWx1ZXNbMF1cbiAgICAgICAgICA6IGAke3NlbGVjdGVkVmFsdWVzLmxlbmd0aH0gc2VsZWN0ZWRgfVxuICAgICAgICB7c2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgPFRvb2x0aXAgaWQ9e2BjYXRlZ29yeS12YWx1ZXMtJHtpbmRleH1gfSBwbGFjZT1cInRvcFwiIGludGVyYWN0aXZlPXt0cnVlfT5cbiAgICAgICAgICAgIDxTdHlsZWRUb29sdGlwQ29udGVudD5cbiAgICAgICAgICAgICAge3NlbGVjdGVkVmFsdWVzLnNsaWNlKDAsIE5VTUJFUl9WQUxVRVNfSU5fVE9PTFRJUCkubWFwKCh2YWx1ZSwgaSkgPT4gKFxuICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpfT57dmFsdWV9PC9kaXY+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gTlVNQkVSX1ZBTFVFU19JTl9UT09MVElQICYmIDxkaXY+Li4uPC9kaXY+fVxuICAgICAgICAgICAgPC9TdHlsZWRUb29sdGlwQ29udGVudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICl9XG4gICAgICA8L1N0eWxlZENhdGVnb3JpY2FsVmFsdWVQaWNrZXI+XG4gICAgICB7ZWRpdGFibGUgJiYgKFxuICAgICAgICA8UG9ydGFsZWQgbGVmdD17MH0gdG9wPXswfSBpc09wZW5lZD17c2hvd1R5cGVhaGVhZH0gb25DbG9zZT17b25DbG9zZURyb3Bkb3dufT5cbiAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgICA8U2VsZWN0ZWRWYWx1ZXNXcmFwcGVyIHdpZHRoPXsyNTB9IGhlaWdodD17MjAwfT5cbiAgICAgICAgICAgICAgPENoaWNrbGV0ZWRJbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J2N1c3RvbS1wYWxldHRlLWNoaWNrbGV0ZWQtaW5wdXQnfVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3NlbGVjdGVkVmFsdWVzfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsnJ31cbiAgICAgICAgICAgICAgICByZW1vdmVJdGVtPXtvblJlbW92ZUl0ZW19XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbnVsbH1cbiAgICAgICAgICAgICAgICBDdXN0b21DaGlja2xldENvbXBvbmVudD17bnVsbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0ZWRWYWx1ZXNXcmFwcGVyPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPERyb3Bkb3duVmFsdWVzV3JhcHBlciB3aWR0aD17MjUwfT5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3twb3NpdGlvbjogJ3JlbGF0aXZlJ319PlxuICAgICAgICAgICAgICA8Q2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgICAgICAgICAgb25SZXNldCxcbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0UmVzdFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VHlwZWFoZWFkXG4gICAgICAgICAgICAgICAgICBjdXN0b21DbGFzc2VzPXt7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHM6ICdsaXN0LXNlbGVjdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQ6ICd0eXBlYWhlYWRfX2lucHV0JyxcbiAgICAgICAgICAgICAgICAgICAgbGlzdEl0ZW06ICdsaXN0X19pdGVtJyxcbiAgICAgICAgICAgICAgICAgICAgbGlzdEFuY2hvcjogJ2xpc3RfX2l0ZW1fX2FuY2hvcidcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBvcHRpb25zPXthbGxWYWx1ZXN9XG4gICAgICAgICAgICAgICAgICAvLyBhZGQgc2FmZSBzdHJpbmcgY2FzdGluZyBmb3IgdGhlIFR5cGVhaGVhZCwgc28gZnV6enkgc2VhcmNoIG5ldmVyIHJlY2VpdmVzIG5vbi1zdHJpbmdzLCBwcmV2ZW50aW5nIHRoZSB0b0xvd2VyQ2FzZSBjcmFzaFxuICAgICAgICAgICAgICAgICAgZGlzcGxheU9wdGlvbj17byA9PiBTdHJpbmcobyA/PyAnJyl9XG4gICAgICAgICAgICAgICAgICBmaWx0ZXJPcHRpb249eyhpbnB1dCwgbykgPT4gU3RyaW5nKG8gPz8gJycpLmluY2x1ZGVzKFN0cmluZyhpbnB1dCA/PyAnJykpfVxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9eydTZWFyY2gnfVxuICAgICAgICAgICAgICAgICAgb25PcHRpb25TZWxlY3RlZD17b25PcHRpb25TZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGN1c3RvbUxpc3RDb21wb25lbnQ9e01vZGlmaWVkRHJvcGRvd25MaXN0fVxuICAgICAgICAgICAgICAgICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ9e0xpc3RJdGVtfVxuICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgIHNob3dPcHRpb25zV2hlbkVtcHR5XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXtzZWxlY3RlZFZhbHVlc31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0NhdGVnb3JpY2FsU2VsZWN0b3JDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9Ecm9wZG93blZhbHVlc1dyYXBwZXI+XG4gICAgICAgIDwvUG9ydGFsZWQ+XG4gICAgICApfVxuICAgIDwvU3R5bGVkQ2F0ZWdvcmljYWxWYWx1ZVBpY2tlcldyYXBwZXI+XG4gICk7XG59O1xuXG5leHBvcnQgdHlwZSBDYXRlZ29yaWNhbEN1c3RvbVBhbGV0dGVJbnB1dFByb3BzID0ge1xuICBpbmRleDogbnVtYmVyO1xuICBpc1NvcnRpbmc6IGJvb2xlYW47XG4gIGNvbG9yOiBIZXhDb2xvcjtcbiAgY29sb3JNYXA/OiBDb2xvck1hcCB8IG51bGw7XG4gIGFkZENvbG9yTWFwVmFsdWU6ICh2OiAobnVtYmVyIHwgc3RyaW5nIHwgbnVsbClbXSwgaTogbnVtYmVyKSA9PiB2b2lkO1xuICByZW1vdmVDb2xvck1hcFZhbHVlOiAodjogbnVtYmVyIHwgc3RyaW5nLCBpOiBudW1iZXIpID0+IHZvaWQ7XG4gIHJlc2V0Q29sb3JNYXBWYWx1ZTogKGk6IG51bWJlcikgPT4gdm9pZDtcbiAgc2VsZWN0UmVzdENvbG9yTWFwVmFsdWU6IChpOiBudW1iZXIpID0+IHZvaWQ7XG4gIGFjdGlvbkljb25zPzogQWN0aW9uSWNvbnM7XG4gIG9uRGVsZXRlOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgb25BZGQ6IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBvblRvZ2dsZVNrZXRjaGVyOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgYWxsVmFsdWVzOiBzdHJpbmdbXSB8IG51bWJlcltdO1xuICBkaXNhYmxlRGVsZXRlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBDYXRlZ29yaWNhbEN1c3RvbVBhbGV0dGVJbnB1dDogUmVhY3QuRkM8Q2F0ZWdvcmljYWxDdXN0b21QYWxldHRlSW5wdXRQcm9wcz4gPSAoe1xuICBpbmRleCxcbiAgaXNTb3J0aW5nLFxuICBjb2xvcixcbiAgY29sb3JNYXAsXG4gIGFjdGlvbkljb25zID0gZGVmYXVsdEFjdGlvbkljb25zLFxuICBvbkRlbGV0ZSxcbiAgZGlzYWJsZURlbGV0ZSxcbiAgb25Ub2dnbGVTa2V0Y2hlcixcbiAgYWRkQ29sb3JNYXBWYWx1ZSxcbiAgcmVtb3ZlQ29sb3JNYXBWYWx1ZSxcbiAgcmVzZXRDb2xvck1hcFZhbHVlLFxuICBzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZSxcbiAgYWxsVmFsdWVzXG59OiBDYXRlZ29yaWNhbEN1c3RvbVBhbGV0dGVJbnB1dFByb3BzKSA9PiB7XG4gIGNvbnN0IHNlbGVjdGVkVmFsdWVzOiAobnVtYmVyIHwgc3RyaW5nIHwgbnVsbClbXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghY29sb3JNYXAgfHwgIWNvbG9yTWFwW2luZGV4XSkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IHZhbHVlID0gY29sb3JNYXBbaW5kZXhdWzBdO1xuICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiB2YWx1ZSAhPT0gbnVsbCA/IFt2YWx1ZV0gOiBbXTtcbiAgICByZXR1cm4gdmFsdWVzO1xuICB9LCBbY29sb3JNYXAsIGluZGV4XSk7XG5cbiAgY29uc3Qgb25DbGlja1N3dGFjaCA9IHVzZUNhbGxiYWNrKCgpID0+IG9uVG9nZ2xlU2tldGNoZXIoaW5kZXgpLCBbb25Ub2dnbGVTa2V0Y2hlciwgaW5kZXhdKTtcbiAgY29uc3Qgb25Db2xvckRlbGV0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IG9uRGVsZXRlKGluZGV4KSwgW29uRGVsZXRlLCBpbmRleF0pO1xuXG4gIHJldHVybiAoXG4gICAgPFNvcnRhYmxlSXRlbSBpZD17YCR7aW5kZXh9YH0gaXNTb3J0aW5nPXtpc1NvcnRpbmd9PlxuICAgICAge2xpc3RlbmVycyA9PiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdXN0b20tcGFsZXR0ZS1pbnB1dF9fbGVmdFwiPlxuICAgICAgICAgICAgPERyYWdIYW5kbGUgY2xhc3NOYW1lPVwibGF5ZXJfX2RyYWctaGFuZGxlXCIgey4uLmxpc3RlbmVyc30+XG4gICAgICAgICAgICAgIDxhY3Rpb25JY29ucy5zb3J0IGhlaWdodD1cIjIwcHhcIiAvPlxuICAgICAgICAgICAgPC9EcmFnSGFuZGxlPlxuICAgICAgICAgICAgPENvbG9yU3dhdGNoIGNvbG9yPXtjb2xvcn0gb25DbGljaz17b25DbGlja1N3dGFjaH0gLz5cbiAgICAgICAgICAgIHtjb2xvck1hcCAmJiBjb2xvck1hcFtpbmRleF0gJiYgKFxuICAgICAgICAgICAgICA8Q2F0ZWdvcmljYWxTZWxlY3RvclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVzPXtzZWxlY3RlZFZhbHVlc31cbiAgICAgICAgICAgICAgICBhbGxWYWx1ZXM9e2FsbFZhbHVlc31cbiAgICAgICAgICAgICAgICBhZGRDb2xvck1hcFZhbHVlPXthZGRDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAgIHJlbW92ZUNvbG9yTWFwVmFsdWU9e3JlbW92ZUNvbG9yTWFwVmFsdWV9XG4gICAgICAgICAgICAgICAgcmVzZXRDb2xvck1hcFZhbHVlPXtyZXNldENvbG9yTWFwVmFsdWV9XG4gICAgICAgICAgICAgICAgc2VsZWN0UmVzdENvbG9yTWFwVmFsdWU9e3NlbGVjdFJlc3RDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdXN0b20tcGFsZXR0ZS1pbnB1dF9fcmlnaHRcIj5cbiAgICAgICAgICAgIHshZGlzYWJsZURlbGV0ZSA/IChcbiAgICAgICAgICAgICAgPERlbGV0ZUNvbG9yU3RvcCBvbkNvbG9yRGVsZXRlPXtvbkNvbG9yRGVsZXRlfSBJY29uQ29tcG9uZW50PXthY3Rpb25JY29ucy5kZWxldGV9IC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvU29ydGFibGVJdGVtPlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IEJvdHRvbUFjdGlvbiA9ICh7b25DYW5jZWwsIG9uQ29uZmlybX0pID0+IChcbiAgPFN0eWxlZEJ1dHRvbkNvbnRhaW5lcj5cbiAgICA8QnV0dG9uIGNsYXNzTmFtZT1cImNvbmZpcm0tYXBwbHlfX2J1dHRvblwiIHNtYWxsIG9uQ2xpY2s9e29uQ29uZmlybX0+XG4gICAgICBDb25maXJtXG4gICAgPC9CdXR0b24+XG4gICAgPEJ1dHRvbiBsaW5rIHNtYWxsIG9uQ2xpY2s9e29uQ2FuY2VsfT5cbiAgICAgIENhbmNlbFxuICAgIDwvQnV0dG9uPlxuICA8L1N0eWxlZEJ1dHRvbkNvbnRhaW5lcj5cbik7XG5cbmNvbnN0IFN0eWxlZEN1c3RvbVBhbGV0dGUgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnY3VzdG9tLXBhbGV0dGUnXG59KWBcbiAgbWFyZ2luLXRvcDogOHB4O1xuYDtcblxuZnVuY3Rpb24gQ3VzdG9tUGFsZXR0ZUZhY3RvcnkoKTogUmVhY3QuRkM8Q3VzdG9tUGFsZXR0ZVByb3BzPiB7XG4gIGNvbnN0IEN1c3RvbVBhbGV0dGU6IFJlYWN0LkZDPEN1c3RvbVBhbGV0dGVQcm9wcz4gPSAoe1xuICAgIG9yZGluYWxEb21haW4sXG4gICAgY3VzdG9tUGFsZXR0ZSxcbiAgICBzZXRDb2xvclBhbGV0dGVVSSxcbiAgICBzaG93U2tldGNoZXIsXG4gICAgYWN0aW9uSWNvbnMgPSBkZWZhdWx0QWN0aW9uSWNvbnMsXG4gICAgb25DYW5jZWwsXG4gICAgb25BcHBseVxuICB9KSA9PiB7XG4gICAgY29uc3QgW2lzU29ydGluZywgc2V0SXNTb3J0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCB7Y29sb3JzLCBjb2xvck1hcH0gPSBjdXN0b21QYWxldHRlO1xuICAgIGNvbnN0IGNvbG9yQnJlYWtzID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIGNvbG9yTWFwXG4gICAgICAgICAgPyBjdXN0b21QYWxldHRlLnR5cGUgPT09ICdjdXN0b20nXG4gICAgICAgICAgICA/IGNvbG9yTWFwVG9Db2xvckJyZWFrcyhjb2xvck1hcClcbiAgICAgICAgICAgIDogY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MoY29sb3JNYXApXG4gICAgICAgICAgOiBudWxsLFxuICAgICAgW2N1c3RvbVBhbGV0dGUudHlwZSwgY29sb3JNYXBdXG4gICAgKTtcblxuICAgIGNvbnN0IG9uUGlja2VyVXBkYXRlID0gdXNlQ2FsbGJhY2soXG4gICAgICBjb2xvciA9PiB7XG4gICAgICAgIGlmIChjb2xvciAmJiBOdW1iZXIuaXNGaW5pdGUoc2hvd1NrZXRjaGVyKSkge1xuICAgICAgICAgIGNvbnN0IG5ld0N1c3RvbVBhbGV0dGUgPSB1cGRhdGVDdXN0b21QYWxldHRlQ29sb3IoXG4gICAgICAgICAgICBjdXN0b21QYWxldHRlLFxuICAgICAgICAgICAgTnVtYmVyKHNob3dTa2V0Y2hlciksXG4gICAgICAgICAgICBjb2xvci5oZXhcbiAgICAgICAgICApO1xuICAgICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IG5ld0N1c3RvbVBhbGV0dGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtjdXN0b21QYWxldHRlLCBzaG93U2tldGNoZXIsIHNldENvbG9yUGFsZXR0ZVVJXVxuICAgICk7XG4gICAgY29uc3Qgb25Ub2dnbGVTa2V0Y2hlciA9IHVzZUNhbGxiYWNrKFxuICAgICAgdmFsID0+IHtcbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIHNob3dTa2V0Y2hlcjogdmFsXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtzZXRDb2xvclBhbGV0dGVVSV1cbiAgICApO1xuICAgIGNvbnN0IG9uRGVsZXRlID0gdXNlQ2FsbGJhY2soXG4gICAgICBpbmRleCA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0N1c3RvbVBhbGV0dGUgPSByZW1vdmVDdXN0b21QYWxldHRlQ29sb3IoY3VzdG9tUGFsZXR0ZSwgaW5kZXgpO1xuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZTogbmV3Q3VzdG9tUGFsZXR0ZVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbY3VzdG9tUGFsZXR0ZSwgc2V0Q29sb3JQYWxldHRlVUldXG4gICAgKTtcblxuICAgIGNvbnN0IG9uQWRkID0gdXNlQ2FsbGJhY2soXG4gICAgICBpbmRleCA9PiB7XG4gICAgICAgIC8vIGFkZCBjb2xvciBhdCB0aGUgZW5kXG4gICAgICAgIGNvbnN0IG5ld0N1c3RvbVBhbGV0dGUgPSBhZGRDdXN0b21QYWxldHRlQ29sb3IoY3VzdG9tUGFsZXR0ZSwgaW5kZXgpO1xuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZTogbmV3Q3VzdG9tUGFsZXR0ZVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbY3VzdG9tUGFsZXR0ZSwgc2V0Q29sb3JQYWxldHRlVUldXG4gICAgKTtcblxuICAgIGNvbnN0IG9uQWRkQ2F0ZWdvcmljYWxTdGVwID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgb25BZGQoY29sb3JzLmxlbmd0aCAtIDEpO1xuICAgIH0sIFtjb2xvcnMubGVuZ3RoLCBvbkFkZF0pO1xuXG4gICAgY29uc3Qgb25Td2F0Y2hDbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIG9uVG9nZ2xlU2tldGNoZXIoZmFsc2UpO1xuICAgIH0sIFtvblRvZ2dsZVNrZXRjaGVyXSk7XG5cbiAgICBjb25zdCBvbkNvbmZpcm0gPSB1c2VDYWxsYmFjayhcbiAgICAgIGV2ZW50ID0+IHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uQ2FuY2VsKCk7XG4gICAgICAgIG9uQXBwbHkoZXZlbnQpO1xuICAgICAgfSxcbiAgICAgIFtvbkNhbmNlbCwgb25BcHBseV1cbiAgICApO1xuXG4gICAgY29uc3Qgb25Tb3J0RW5kID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZXZlbnQ6IERyYWdFbmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCB7YWN0aXZlLCBvdmVyfSA9IGV2ZW50O1xuICAgICAgICBpZiAob3ZlciAmJiBhY3RpdmUuaWQgIT09IG92ZXIuaWQpIHtcbiAgICAgICAgICBjb25zdCBvbGRJbmRleCA9IGNvbG9ycy5maW5kSW5kZXgoKF8sIGluZGV4KSA9PiBgJHtpbmRleH1gID09PSBhY3RpdmUuaWQpO1xuICAgICAgICAgIGNvbnN0IG5ld0luZGV4ID0gY29sb3JzLmZpbmRJbmRleCgoXywgaW5kZXgpID0+IGAke2luZGV4fWAgPT09IG92ZXIuaWQpO1xuICAgICAgICAgIGNvbnN0IG5ld0N1c3RvbVBhbGV0dGUgPSBzb3J0Q3VzdG9tUGFsZXR0ZUNvbG9yKGN1c3RvbVBhbGV0dGUsIG9sZEluZGV4LCBuZXdJbmRleCk7XG4gICAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgICAgY3VzdG9tUGFsZXR0ZTogbmV3Q3VzdG9tUGFsZXR0ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHNldElzU29ydGluZyhmYWxzZSk7XG4gICAgICB9LFxuICAgICAgW2NvbG9ycywgY3VzdG9tUGFsZXR0ZSwgc2V0SXNTb3J0aW5nLCBzZXRDb2xvclBhbGV0dGVVSV1cbiAgICApO1xuXG4gICAgY29uc3Qgb25Tb3J0U3RhcnQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc1NvcnRpbmcodHJ1ZSk7XG4gICAgfSwgW3NldElzU29ydGluZ10pO1xuXG4gICAgY29uc3QgaW5wdXRDb2xvckhleCA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGluZGV4LCB2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdDdXN0b21QYWxldHRlID0gdXBkYXRlQ3VzdG9tUGFsZXR0ZUNvbG9yKGN1c3RvbVBhbGV0dGUsIGluZGV4LCB2YWx1ZSk7XG4gICAgICAgIC8vIHNldENvbG9ycyhuZXdDb2xvcnMpO1xuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZTogbmV3Q3VzdG9tUGFsZXR0ZVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbY3VzdG9tUGFsZXR0ZSwgc2V0Q29sb3JQYWxldHRlVUldXG4gICAgKTtcblxuICAgIGNvbnN0IGVkaXRDb2xvck1hcFZhbHVlID0gdXNlQ2FsbGJhY2soXG4gICAgICAodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghY3VzdG9tUGFsZXR0ZS5jb2xvck1hcCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdDb2xvck1hcCA9IGN1c3RvbVBhbGV0dGUuY29sb3JNYXAubWFwKFxuICAgICAgICAgIChjbSwgaSkgPT4gKGkgPT09IGluZGV4ID8gW3ZhbHVlLCBjbVsxXV0gOiBjbSkgYXMgW3N0cmluZywgc3RyaW5nXVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIHNvcnQgdGhlIHVzZXIgaW5wdXRzIGluIGNhc2UgdGhlIGJyZWFrIHZhbHVlcyBhcmUgbm90IG9yZGVyZWRcbiAgICAgICAgY29uc3QgYnJlYWtzID0gbmV3Q29sb3JNYXBcbiAgICAgICAgICAubWFwKGNtID0+IGNtWzBdIGFzIHN0cmluZyB8IG51bGwpXG4gICAgICAgICAgLnNsaWNlKDAsIC0xKVxuICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYSkgLSBOdW1iZXIoYikpXG4gICAgICAgICAgLmNvbmNhdChudWxsKTtcbiAgICAgICAgY29uc3Qgc29ydGVkTmV3Q29sb3JNYXA6IENvbG9yTWFwID0gbmV3Q29sb3JNYXAubWFwKChjbSwgaSkgPT4gW2JyZWFrc1tpXSwgY21bMV1dKTtcblxuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZToge1xuICAgICAgICAgICAgLi4uY3VzdG9tUGFsZXR0ZSxcbiAgICAgICAgICAgIGNvbG9yTWFwOiBzb3J0ZWROZXdDb2xvck1hcFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgW3NldENvbG9yUGFsZXR0ZVVJLCBjdXN0b21QYWxldHRlXVxuICAgICk7XG5cbiAgICAvLyByZW1vdmUgYSBzZWxlY3RlZCBjYXRlZ29yeSBpdGVtIGZyb20gYSBjb2xvciBtYXBcbiAgICBjb25zdCByZW1vdmVDYXRlZ29yaWNhbENvbG9yTWFwVmFsdWUgPSB1c2VDYWxsYmFjayhcbiAgICAgIChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICBjdXN0b21QYWxldHRlOiB7XG4gICAgICAgICAgICAuLi5jdXN0b21QYWxldHRlLFxuICAgICAgICAgICAgY29sb3JNYXA6IHJlbW92ZUNhdGVnb3JpY2FsVmFsdWVGcm9tQ29sb3JNYXAoY29sb3JNYXAsIGl0ZW0sIGluZGV4KVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgW3NldENvbG9yUGFsZXR0ZVVJLCBjdXN0b21QYWxldHRlLCBjb2xvck1hcF1cbiAgICApO1xuXG4gICAgLy8gYWRkIHNlbGVjdGVkIGNhdGVnb3JpY2FsIGl0ZW1zIHRvIGEgY29sb3IgbWFwXG4gICAgY29uc3QgYWRkQ2F0ZWdvcmljYWxDb2xvck1hcFZhbHVlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoaXRlbXMsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghY29sb3JNYXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IHtcbiAgICAgICAgICAgIC4uLmN1c3RvbVBhbGV0dGUsXG4gICAgICAgICAgICBjb2xvck1hcDogYWRkQ2F0ZWdvcmljYWxWYWx1ZXNUb0NvbG9yTWFwKGNvbG9yTWFwLCBpdGVtcywgaW5kZXgpXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbc2V0Q29sb3JQYWxldHRlVUksIGN1c3RvbVBhbGV0dGUsIGNvbG9yTWFwXVxuICAgICk7XG5cbiAgICAvLyByZXNldCBhIGNvbG9yIG1hcFxuICAgIGNvbnN0IHJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcFZhbHVlID0gdXNlQ2FsbGJhY2soXG4gICAgICBpbmRleCA9PiB7XG4gICAgICAgIGlmICghY29sb3JNYXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IHtcbiAgICAgICAgICAgIC4uLmN1c3RvbVBhbGV0dGUsXG4gICAgICAgICAgICBjb2xvck1hcDogcmVzZXRDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleChjb2xvck1hcCwgaW5kZXgpXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbc2V0Q29sb3JQYWxldHRlVUksIGN1c3RvbVBhbGV0dGUsIGNvbG9yTWFwXVxuICAgICk7XG5cbiAgICAvLyBzZWxlY3QgdGhlIHJlc3QgdmFsdWVzIGZvciBhIGNvbG9yIG1hcFxuICAgIGNvbnN0IHNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwID0gdXNlQ2FsbGJhY2soXG4gICAgICBpbmRleCA9PiB7XG4gICAgICAgIGlmICghY29sb3JNYXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IHtcbiAgICAgICAgICAgIC4uLmN1c3RvbVBhbGV0dGUsXG4gICAgICAgICAgICBjb2xvck1hcDogc2VsZWN0UmVzdENhdGVnb3JpY2FsQ29sb3JNYXBCeUluZGV4KGNvbG9yTWFwLCBpbmRleCwgb3JkaW5hbERvbWFpbilcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtzZXRDb2xvclBhbGV0dGVVSSwgY3VzdG9tUGFsZXR0ZSwgY29sb3JNYXAsIG9yZGluYWxEb21haW5dXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkQ3VzdG9tUGFsZXR0ZT5cbiAgICAgICAgPFdyYXBwZWRTb3J0YWJsZUNvbnRhaW5lclxuICAgICAgICAgIGNsYXNzTmFtZT1cImN1c3RvbS1wYWxldHRlX19zb3J0YWJsZS1jb250YWluZXJcIlxuICAgICAgICAgIG9uU29ydEVuZD17b25Tb3J0RW5kfVxuICAgICAgICAgIG9uU29ydFN0YXJ0PXtvblNvcnRTdGFydH1cbiAgICAgICAgPlxuICAgICAgICAgIHtjb2xvcnMubWFwKChjb2xvciwgaW5kZXgpID0+XG4gICAgICAgICAgICBjdXN0b21QYWxldHRlLnR5cGUgPT09ICdjdXN0b20nID8gKFxuICAgICAgICAgICAgICA8Q3VzdG9tUGFsZXR0ZUlucHV0XG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICBjb2xvckJyZWFrcz17Y29sb3JCcmVha3N9XG4gICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgIGlzU29ydGluZz17aXNTb3J0aW5nfVxuICAgICAgICAgICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgICAgICAgICBpbnB1dENvbG9ySGV4PXtpbnB1dENvbG9ySGV4fVxuICAgICAgICAgICAgICAgIGRpc2FibGVBcHBlbmQ9e2NvbG9ycy5sZW5ndGggPj0gMjB9XG4gICAgICAgICAgICAgICAgZGlzYWJsZURlbGV0ZT17Y29sb3JzLmxlbmd0aCA8PSAyfVxuICAgICAgICAgICAgICAgIGFjdGlvbkljb25zPXthY3Rpb25JY29uc31cbiAgICAgICAgICAgICAgICBvbkFkZD17b25BZGR9XG4gICAgICAgICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgICAgICAgIG9uVG9nZ2xlU2tldGNoZXI9e29uVG9nZ2xlU2tldGNoZXJ9XG4gICAgICAgICAgICAgICAgZWRpdENvbG9yTWFwVmFsdWU9e2VkaXRDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgb3JkaW5hbERvbWFpbiAmJiAoXG4gICAgICAgICAgICAgICAgPENhdGVnb3JpY2FsQ3VzdG9tUGFsZXR0ZUlucHV0XG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgY29sb3JNYXA9e2NvbG9yTWFwfVxuICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgaXNTb3J0aW5nPXtpc1NvcnRpbmd9XG4gICAgICAgICAgICAgICAgICBjb2xvcj17Y29sb3J9XG4gICAgICAgICAgICAgICAgICBhY3Rpb25JY29ucz17YWN0aW9uSWNvbnN9XG4gICAgICAgICAgICAgICAgICBvbkFkZD17b25BZGR9XG4gICAgICAgICAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlRGVsZXRlPXtjb2xvcnMubGVuZ3RoIDw9IDJ9XG4gICAgICAgICAgICAgICAgICBvblRvZ2dsZVNrZXRjaGVyPXtvblRvZ2dsZVNrZXRjaGVyfVxuICAgICAgICAgICAgICAgICAgYWRkQ29sb3JNYXBWYWx1ZT17YWRkQ2F0ZWdvcmljYWxDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAgICAgcmVtb3ZlQ29sb3JNYXBWYWx1ZT17cmVtb3ZlQ2F0ZWdvcmljYWxDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAgICAgcmVzZXRDb2xvck1hcFZhbHVlPXtyZXNldENhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZX1cbiAgICAgICAgICAgICAgICAgIHNlbGVjdFJlc3RDb2xvck1hcFZhbHVlPXtzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcH1cbiAgICAgICAgICAgICAgICAgIGFsbFZhbHVlcz17b3JkaW5hbERvbWFpbn1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9XcmFwcGVkU29ydGFibGVDb250YWluZXI+XG4gICAgICAgIHtjdXN0b21QYWxldHRlLnR5cGUgPT09ICdjdXN0b21PcmRpbmFsJyAmJiAoXG4gICAgICAgICAgPFN0eWxlZEFkZFN0ZXBDb250YWluZXI+XG4gICAgICAgICAgICA8QWRkQ29sb3JTdG9wIG9uQ29sb3JBZGQ9e29uQWRkQ2F0ZWdvcmljYWxTdGVwfSBJY29uQ29tcG9uZW50PXthY3Rpb25JY29ucy5hZGR9IC8+XG4gICAgICAgICAgICA8QnV0dG9uIGxpbmsgc2l6ZT1cInNtYWxcIiBvbkNsaWNrPXtvbkFkZENhdGVnb3JpY2FsU3RlcH0+XG4gICAgICAgICAgICAgIEFkZCBTdGVwXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L1N0eWxlZEFkZFN0ZXBDb250YWluZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxEaXZpZGVyTGluZSAvPlxuICAgICAgICB7LyogQ2FuY2VsIG9yIENvbmZpcm0gQnV0dG9ucyAqL31cbiAgICAgICAgPEJvdHRvbUFjdGlvbiBvbkNhbmNlbD17b25DYW5jZWx9IG9uQ29uZmlybT17b25Db25maXJtfSAvPlxuICAgICAgICA8UG9ydGFsZWQgaXNPcGVuZWQ9e3Nob3dTa2V0Y2hlciAhPT0gZmFsc2V9IGxlZnQ9ezI4MH0gdG9wPXstMzAwfSBvbkNsb3NlPXtvblN3YXRjaENsb3NlfT5cbiAgICAgICAgICA8Q3VzdG9tUGlja2VyIGNvbG9yPXtjb2xvcnNbTnVtYmVyKHNob3dTa2V0Y2hlcildfSBvbkNoYW5nZT17b25QaWNrZXJVcGRhdGV9IC8+XG4gICAgICAgIDwvUG9ydGFsZWQ+XG4gICAgICA8L1N0eWxlZEN1c3RvbVBhbGV0dGU+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gQ3VzdG9tUGFsZXR0ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tUGFsZXR0ZUZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFdBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQVNBLElBQUFHLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLEtBQUEsR0FBQUosT0FBQTtBQVNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGlCQUFBLEdBQUFMLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBUSxTQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyxrQkFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsVUFBQSxHQUFBWCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVcsZ0JBQUEsR0FBQVosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFZLGFBQUEsR0FBQVYsdUJBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFhLFlBQUEsR0FBQWIsT0FBQTtBQUNBLElBQUFjLFVBQUEsR0FBQWQsT0FBQTtBQUVBLElBQUFlLE1BQUEsR0FBQWYsT0FBQTtBQWNBLElBQUFnQixNQUFBLEdBQUFoQixPQUFBO0FBRUEsSUFBQWlCLGFBQUEsR0FBQWxCLHNCQUFBLENBQUFDLE9BQUE7QUFBMkMsSUFBQWtCLFNBQUE7QUFBQSxJQUFBQyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFB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
788
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdW5pcSIsIl9jb3JlIiwiX3NvcnRhYmxlIiwiX3V0aWxpdGllcyIsIl9zdHlsZWRDb21wb25lbnRzIiwiX3BvcnRhbGVkIiwiX3N0eWxlZENvbXBvbmVudHMyIiwiX3R5cGVhaGVhZCIsIl9jaGlja2xldGVkSW5wdXQiLCJfZHJvcGRvd25MaXN0IiwiX2NvbW1vblV0aWxzIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl9pY29ucyIsIl9jdXN0b21QaWNrZXIiLCJfZXhjbHVkZWQiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl90ZW1wbGF0ZU9iamVjdDciLCJfdGVtcGxhdGVPYmplY3Q4IiwiX3RlbXBsYXRlT2JqZWN0OSIsIl90ZW1wbGF0ZU9iamVjdDEwIiwiX3RlbXBsYXRlT2JqZWN0MTEiLCJfdGVtcGxhdGVPYmplY3QxMiIsIl90ZW1wbGF0ZU9iamVjdDEzIiwiX3RlbXBsYXRlT2JqZWN0MTQiLCJfdGVtcGxhdGVPYmplY3QxNSIsIl90ZW1wbGF0ZU9iamVjdDE2IiwiX3RlbXBsYXRlT2JqZWN0MTciLCJfdGVtcGxhdGVPYmplY3QxOCIsIl90ZW1wbGF0ZU9iamVjdDE5IiwiX3RlbXBsYXRlT2JqZWN0MjAiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImRlZmF1bHRBY3Rpb25JY29ucyIsIlRyYXNoIiwic29ydCIsIlZlcnREb3RzIiwiYWRkIiwiQWRkIiwiZHJhZ0hhbmRsZUFjdGl2ZSIsImNzcyIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsInRleHRDb2xvckhsIiwiQ29sb3JQYWxldHRlSXRlbSIsImV4cG9ydHMiLCJzdHlsZWQiLCJkaXYiLCJkcm9wZG93bldyYXBwZXJaIiwicGFuZWxCYWNrZ3JvdW5kSG92ZXIiLCJTdHlsZWREcmFnSGFuZGxlIiwiU3R5bGVkQWN0aW9uIiwic3VidGV4dENvbG9yIiwic3VidGV4dENvbG9yQWN0aXZlIiwiRGl2aWRlckxpbmUiLCJkcm9wZG93bkxpc3RCb3JkZXJUb3AiLCJDb2xvclN3YXRjaCIsImF0dHJzIiwiY2xhc3NOYW1lIiwiY29sb3IiLCJib3hTaGFkb3ciLCJTdHlsZWRCdXR0b25Db250YWluZXIiLCJTdHlsZWRBZGRTdGVwQ29udGFpbmVyIiwiaW5wdXRDb2xvciIsIlN0eWxlZElucHV0IiwiSW5wdXQiLCJ3aXRoQ29uZmlnIiwic2hvdWxkRm9yd2FyZFByb3AiLCJfcHJvcHMkd2lkdGgiLCJ3aWR0aCIsIl9wcm9wcyR0ZXh0QWxpZ24iLCJ0ZXh0QWxpZ24iLCJkaXNhYmxlZCIsIklucHV0VGV4dCIsImlucHV0IiwiX3Byb3BzJHdpZHRoMiIsIl9wcm9wcyR0ZXh0QWxpZ24yIiwiU29ydGFibGVJdGVtIiwiX3JlZiIsImlkIiwiY2hpbGRyZW4iLCJpc1NvcnRpbmciLCJfdXNlU29ydGFibGUiLCJ1c2VTb3J0YWJsZSIsImF0dHJpYnV0ZXMiLCJsaXN0ZW5lcnMiLCJzZXROb2RlUmVmIiwidHJhbnNmb3JtIiwidHJhbnNpdGlvbiIsImlzRHJhZ2dpbmciLCJzdHlsZSIsIkNTUyIsIlRyYW5zZm9ybSIsInRvU3RyaW5nIiwiekluZGV4IiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzMiIsInJlZiIsImNsYXNzbmFtZXMiLCJzb3J0aW5nIiwiV3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyIiwiX3JlZjIiLCJvblNvcnRFbmQiLCJvblNvcnRTdGFydCIsInNlbnNvcnMiLCJ1c2VTZW5zb3JzIiwidXNlU2Vuc29yIiwiUG9pbnRlclNlbnNvciIsIktleWJvYXJkU2Vuc29yIiwiRG5kQ29udGV4dCIsImNvbGxpc2lvbkRldGVjdGlvbiIsImNsb3Nlc3RDZW50ZXIiLCJvbkRyYWdFbmQiLCJvbkRyYWdTdGFydCIsIlNvcnRhYmxlQ29udGV4dCIsIml0ZW1zIiwiUmVhY3QiLCJDaGlsZHJlbiIsIm1hcCIsIl8iLCJpbmRleCIsImNvbmNhdCIsInN0cmF0ZWd5IiwidmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwiRHJhZ0hhbmRsZSIsIl9yZWYzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsIkNvbG9yUGFsZXR0ZUlucHV0IiwiX3JlZjQiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiZWRpdGFibGUiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzdGF0ZVZhbHVlIiwic2V0VmFsdWUiLCJpbnB1dFJlZiIsInVzZVJlZiIsInVzZUVmZmVjdCIsIm9uS2V5RG93biIsInVzZUNhbGxiYWNrIiwia2V5Q29kZSIsIktleUV2ZW50IiwiRE9NX1ZLX0VOVEVSIiwiRE9NX1ZLX1JFVFVSTiIsImN1cnJlbnQiLCJibHVyIiwiX29uQ2hhbmdlIiwidGFyZ2V0Iiwib25CbHVyIiwic2Vjb25kYXJ5IiwiRGFzaCIsIlN0eWxlZFJhbmdlSW5wdXQiLCJTdHlsZWRDb2xvckhleElucHV0IiwiRWRpdGFibGVDb2xvclJhbmdlIiwiX3JlZjUiLCJpdGVtIiwiaXNMYXN0IiwiZWRpdENvbG9yTWFwIiwiaGFzSW5wdXRzIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5wdXRzIiwibGVmdElucHV0IiwidW5kZWZpbmVkIiwicmlnaHRJbnB1dCIsIm5vTWluQm91bmQiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsIm5vTWF4Qm91bmQiLCJvbkNoYW5nZUxlZnQiLCJ2YWwiLCJwYXJzZUZsb2F0Iiwib25DaGFuZ2VSaWdodCIsIlN0cmluZyIsIkFkZENvbG9yU3RvcCIsIl9yZWY2Iiwib25Db2xvckFkZCIsIkljb25Db21wb25lbnQiLCJvbkNsaWNrIiwiaGVpZ2h0IiwiRGVsZXRlQ29sb3JTdG9wIiwiX3JlZjciLCJvbkNvbG9yRGVsZXRlIiwiQ3VzdG9tUGFsZXR0ZUlucHV0IiwiX3JlZjgiLCJjb2xvckJyZWFrcyIsImlucHV0Q29sb3JIZXgiLCJlZGl0Q29sb3JNYXBWYWx1ZSIsIl9yZWY4JGFjdGlvbkljb25zIiwiYWN0aW9uSWNvbnMiLCJkaXNhYmxlQXBwZW5kIiwiZGlzYWJsZURlbGV0ZSIsIm9uRGVsZXRlIiwib25BZGQiLCJvblRvZ2dsZVNrZXRjaGVyIiwib25DbGlja1N3dGFjaCIsIm9uQ29sb3JJbnB1dCIsInYiLCJzaG93SGV4SW5wdXQiLCJGcmFnbWVudCIsInRvVXBwZXJDYXNlIiwiaXNOdW1lcmljQ29sb3JCcmVha3MiLCJTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyV3JhcHBlciIsIlN0eWxlZENhdGVnb3JpY2FsVmFsdWVQaWNrZXIiLCJub0JvcmRlciIsIkRyb3Bkb3duVmFsdWVzV3JhcHBlciIsIlNlbGVjdGVkVmFsdWVzV3JhcHBlciIsIlN0eWxlZERyb3Bkb3duSGVhZGVyIiwiU3R5bGVkVG9vbHRpcENvbnRlbnQiLCJOVU1CRVJfVkFMVUVTX0lOX1RPT0xUSVAiLCJDYXRlZ29yaWNhbFNlbGVjdG9yQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJvblNlbGVjdFJlc3QiLCJvblJlc2V0IiwiTW9kaWZpZWREcm9wZG93bkxpc3QiLCJfRHJvcGRvd25MaXN0IiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwicmVuZGVyIiwiX3RoaXMiLCJDb25zdW1lciIsImNvbnRleHQiLCJCdXR0b24iLCJsaW5rIiwic2l6ZSIsIkRyb3Bkb3duTGlzdCIsIkNhdGVnb3JpY2FsU2VsZWN0b3IiLCJfcmVmOSIsInNlbGVjdGVkVmFsdWVzIiwiYWxsVmFsdWVzIiwiYWRkQ29sb3JNYXBWYWx1ZSIsInJlbW92ZUNvbG9yTWFwVmFsdWUiLCJyZXNldENvbG9yTWFwVmFsdWUiLCJzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZSIsIl9yZWY5JGVkaXRhYmxlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJzaG93VHlwZWFoZWFkIiwic2V0U2hvd1R5cGVhaGVhZCIsIm9uT3B0aW9uU2VsZWN0ZWQiLCJwcmV2aW91c1NlbGVjdGVkIiwidG9BcnJheSIsInVuaXEiLCJvbk9wZW5Ecm9wZG93biIsIm9uQ2xvc2VEcm9wZG93biIsIm9uUmVtb3ZlSXRlbSIsIlRvb2x0aXAiLCJwbGFjZSIsImludGVyYWN0aXZlIiwic2xpY2UiLCJsZWZ0IiwidG9wIiwiaXNPcGVuZWQiLCJvbkNsb3NlIiwic2VsZWN0ZWRJdGVtcyIsInBsYWNlaG9sZGVyIiwicmVtb3ZlSXRlbSIsIkN1c3RvbUNoaWNrbGV0Q29tcG9uZW50IiwicG9zaXRpb24iLCJQcm92aWRlciIsImN1c3RvbUNsYXNzZXMiLCJyZXN1bHRzIiwibGlzdEl0ZW0iLCJsaXN0QW5jaG9yIiwib3B0aW9ucyIsImRpc3BsYXlPcHRpb24iLCJmaWx0ZXJPcHRpb24iLCJpbmNsdWRlcyIsImN1c3RvbUxpc3RDb21wb25lbnQiLCJjdXN0b21MaXN0SXRlbUNvbXBvbmVudCIsIkxpc3RJdGVtIiwic2VhcmNoYWJsZSIsInNob3dPcHRpb25zV2hlbkVtcHR5IiwiQ2F0ZWdvcmljYWxDdXN0b21QYWxldHRlSW5wdXQiLCJfcmVmMTAiLCJjb2xvck1hcCIsIl9yZWYxMCRhY3Rpb25JY29ucyIsInVzZU1lbW8iLCJ2YWx1ZXMiLCJCb3R0b21BY3Rpb24iLCJfcmVmMTEiLCJvbkNhbmNlbCIsIm9uQ29uZmlybSIsInNtYWxsIiwiU3R5bGVkQ3VzdG9tUGFsZXR0ZSIsIkN1c3RvbVBhbGV0dGVGYWN0b3J5IiwiQ3VzdG9tUGFsZXR0ZSIsIl9yZWYxMiIsIm9yZGluYWxEb21haW4iLCJjdXN0b21QYWxldHRlIiwic2V0Q29sb3JQYWxldHRlVUkiLCJzaG93U2tldGNoZXIiLCJfcmVmMTIkYWN0aW9uSWNvbnMiLCJvbkFwcGx5IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzZXRJc1NvcnRpbmciLCJjb2xvcnMiLCJ0eXBlIiwiY29sb3JNYXBUb0NvbG9yQnJlYWtzIiwiY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MiLCJvblBpY2tlclVwZGF0ZSIsIm5ld0N1c3RvbVBhbGV0dGUiLCJ1cGRhdGVDdXN0b21QYWxldHRlQ29sb3IiLCJoZXgiLCJyZW1vdmVDdXN0b21QYWxldHRlQ29sb3IiLCJhZGRDdXN0b21QYWxldHRlQ29sb3IiLCJvbkFkZENhdGVnb3JpY2FsU3RlcCIsIm9uU3dhdGNoQ2xvc2UiLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0IiwiYWN0aXZlIiwib3ZlciIsIm9sZEluZGV4IiwiZmluZEluZGV4IiwibmV3SW5kZXgiLCJzb3J0Q3VzdG9tUGFsZXR0ZUNvbG9yIiwibmV3Q29sb3JNYXAiLCJjbSIsImJyZWFrcyIsImIiLCJzb3J0ZWROZXdDb2xvck1hcCIsInJlbW92ZUNhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZSIsInJlbW92ZUNhdGVnb3JpY2FsVmFsdWVGcm9tQ29sb3JNYXAiLCJhZGRDYXRlZ29yaWNhbENvbG9yTWFwVmFsdWUiLCJhZGRDYXRlZ29yaWNhbFZhbHVlc1RvQ29sb3JNYXAiLCJyZXNldENhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZSIsInJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgiLCJzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcCIsInNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY3VzdG9tLXBhbGV0dGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFJlYWN0LCB7XG4gIEVsZW1lbnRUeXBlLFxuICBQcm9wc1dpdGhDaGlsZHJlbixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZVxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gvdW5pcSc7XG5pbXBvcnQge1xuICBEbmRDb250ZXh0LFxuICBjbG9zZXN0Q2VudGVyLFxuICBLZXlib2FyZFNlbnNvcixcbiAgUG9pbnRlclNlbnNvcixcbiAgdXNlU2Vuc29yLFxuICB1c2VTZW5zb3JzLFxuICBEcmFnRW5kRXZlbnRcbn0gZnJvbSAnQGRuZC1raXQvY29yZSc7XG5pbXBvcnQge1NvcnRhYmxlQ29udGV4dCwgdXNlU29ydGFibGUsIHZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneX0gZnJvbSAnQGRuZC1raXQvc29ydGFibGUnO1xuaW1wb3J0IHtDU1N9IGZyb20gJ0BkbmQta2l0L3V0aWxpdGllcyc7XG5pbXBvcnQgc3R5bGVkLCB7Y3NzfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgUG9ydGFsZWQgZnJvbSAnLi4vLi4vY29tbW9uL3BvcnRhbGVkJztcbmltcG9ydCB7VG9vbHRpcH0gZnJvbSAnLi4vLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBUeXBlYWhlYWQgZnJvbSAnLi4vLi4vY29tbW9uL2l0ZW0tc2VsZWN0b3IvdHlwZWFoZWFkJztcbmltcG9ydCBDaGlja2xldGVkSW5wdXQgZnJvbSAnLi4vLi4vY29tbW9uL2l0ZW0tc2VsZWN0b3IvY2hpY2tsZXRlZC1pbnB1dCc7XG5pbXBvcnQgRHJvcGRvd25MaXN0LCB7TGlzdEl0ZW19IGZyb20gJy4uLy4uL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2Ryb3Bkb3duLWxpc3QnO1xuaW1wb3J0IHtzaG91bGRGb3J3YXJkUHJvcH0gZnJvbSAnLi4vLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7dG9BcnJheX0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtLZXlFdmVudH0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtDb2xvck1hcCwgQ29sb3JVSSwgSGV4Q29sb3IsIE5lc3RlZFBhcnRpYWx9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgYWRkQ2F0ZWdvcmljYWxWYWx1ZXNUb0NvbG9yTWFwLFxuICBhZGRDdXN0b21QYWxldHRlQ29sb3IsXG4gIGNvbG9yTWFwVG9DYXRlZ29yaWNhbENvbG9yQnJlYWtzLFxuICBjb2xvck1hcFRvQ29sb3JCcmVha3MsXG4gIGlzTnVtZXJpY0NvbG9yQnJlYWtzLFxuICByZXNldENhdGVnb3JpY2FsQ29sb3JNYXBCeUluZGV4LFxuICByZW1vdmVDYXRlZ29yaWNhbFZhbHVlRnJvbUNvbG9yTWFwLFxuICByZW1vdmVDdXN0b21QYWxldHRlQ29sb3IsXG4gIHNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleCxcbiAgc29ydEN1c3RvbVBhbGV0dGVDb2xvcixcbiAgdXBkYXRlQ3VzdG9tUGFsZXR0ZUNvbG9yXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtDb2xvckJyZWFrLCBDb2xvckJyZWFrT3JkaW5hbH0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0FkZCwgVHJhc2gsIFZlcnREb3RzfSBmcm9tICcuLi8uLi9jb21tb24vaWNvbnMnO1xuaW1wb3J0IHtCdXR0b24sIElucHV0fSBmcm9tICcuLi8uLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IEN1c3RvbVBpY2tlciBmcm9tICcuL2N1c3RvbS1waWNrZXInO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25JY29ucyA9IHtcbiAgZGVsZXRlOiBFbGVtZW50VHlwZTtcbiAgc29ydDogRWxlbWVudFR5cGU7XG4gIGFkZDogRWxlbWVudFR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBFZGl0Q29sb3JNYXBGdW5jID0gKHY6IG51bWJlciwgaTogbnVtYmVyKSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgU2V0Q29sb3JVSUZ1bmMgPSAobmV3Q29uZmlnOiBOZXN0ZWRQYXJ0aWFsPENvbG9yVUk+KSA9PiB2b2lkO1xuXG4vKipcbiAqIEVkaXRhYmxlQ29sb3JSYW5nZVxuICovXG5leHBvcnQgdHlwZSBFZGl0YWJsZUNvbG9yUmFuZ2VQcm9wcyA9IHtcbiAgaXRlbTogQ29sb3JCcmVhaztcbiAgaXNMYXN0OiBib29sZWFuO1xuICBpbmRleDogbnVtYmVyO1xuICBlZGl0Q29sb3JNYXA/OiBFZGl0Q29sb3JNYXBGdW5jO1xuICBlZGl0YWJsZTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbVBhbGV0dGVQcm9wcyA9IHtcbiAgY3VzdG9tUGFsZXR0ZTogQ29sb3JVSVsnY3VzdG9tUGFsZXR0ZSddO1xuICBzZXRDb2xvclBhbGV0dGVVSTogU2V0Q29sb3JVSUZ1bmM7XG4gIHNob3dTa2V0Y2hlcjogbnVtYmVyIHwgYm9vbGVhbjtcbiAgb3JkaW5hbERvbWFpbj86IHN0cmluZ1tdIHwgbnVtYmVyW107XG4gIGFjdGlvbkljb25zPzogQWN0aW9uSWNvbnM7XG4gIG9uQXBwbHk6IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB2b2lkO1xuICBvbkNhbmNlbDogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbVBhbGV0dGVJbnB1dFByb3BzID0ge1xuICBpbmRleDogbnVtYmVyO1xuICBpc1NvcnRpbmc6IGJvb2xlYW47XG4gIGNvbG9yOiBIZXhDb2xvcjtcbiAgY29sb3JCcmVha3M6IENvbG9yQnJlYWtPcmRpbmFsW10gfCBDb2xvckJyZWFrW10gfCBudWxsO1xuICBpbnB1dENvbG9ySGV4OiAoaW5kZXg6IG51bWJlciwgdjogSGV4Q29sb3IpID0+IHZvaWQ7XG4gIGVkaXRDb2xvck1hcFZhbHVlOiBFZGl0Q29sb3JNYXBGdW5jO1xuICBhY3Rpb25JY29ucz86IEFjdGlvbkljb25zO1xuICBkaXNhYmxlQXBwZW5kPzogYm9vbGVhbjtcbiAgZGlzYWJsZURlbGV0ZT86IGJvb2xlYW47XG4gIG9uRGVsZXRlOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgb25BZGQ6IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBvblRvZ2dsZVNrZXRjaGVyOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbn07XG5cbmNvbnN0IGRlZmF1bHRBY3Rpb25JY29ucyA9IHtcbiAgZGVsZXRlOiBUcmFzaCxcbiAgc29ydDogVmVydERvdHMsXG4gIGFkZDogQWRkXG59O1xuXG5jb25zdCBkcmFnSGFuZGxlQWN0aXZlID0gY3NzYFxuICAubGF5ZXJfX2RyYWctaGFuZGxlIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgb3BhY2l0eTogMTtcbiAgICBjdXJzb3I6IG1vdmU7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBDb2xvclBhbGV0dGVJdGVtID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZy10b3A6IDJweDtcbiAgcGFkZGluZy1ib3R0b206IDJweDtcbiAgei1pbmRleDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldyYXBwZXJaICsgMX07XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAuY3VzdG9tLXBhbGV0dGUtaW5wdXRfX2xlZnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuXG4gIC5jdXN0b20tcGFsZXR0ZS1pbnB1dF9fcmlnaHQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nLXJpZ2h0OiA2cHg7XG4gIH1cblxuICAmOm5vdCguc29ydGluZyk6bm90KC5kaXNhYmxlZCkge1xuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmRIb3Zlcn07XG4gICAgICAke2RyYWdIYW5kbGVBY3RpdmV9O1xuICAgIH1cbiAgfVxuXG4gICYuc29ydGluZy1jb2xvcnMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kSG92ZXJ9O1xuICAgICR7ZHJhZ0hhbmRsZUFjdGl2ZX07XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZERyYWdIYW5kbGUgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBvcGFjaXR5OiAwO1xuYDtcblxuY29uc3QgU3R5bGVkQWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yfTtcbiAgc3ZnIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvckFjdGl2ZX07XG4gICAgfVxuICB9XG5cbiAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgJjpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgRGl2aWRlckxpbmUgPSBzdHlsZWQuZGl2YFxuICBoZWlnaHQ6IDFweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCb3JkZXJUb3B9O1xuICBtYXJnaW4tdG9wOiA4cHg7XG5gO1xuXG5leHBvcnQgY29uc3QgQ29sb3JTd2F0Y2ggPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnY3VzdG9tLXBhbGV0dGVfX3N3YXRjaCdcbn0pYFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLmNvbG9yfTtcbiAgd2lkdGg6IDMycHg7XG4gIGhlaWdodDogMThweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAmOmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmJveFNoYWRvd307XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRCdXR0b25Db250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tdG9wOiAxMXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBkaXJlY3Rpb246IHJ0bDtcbiAgcGFkZGluZzogMCAxMnB4O1xuYDtcblxuY29uc3QgU3R5bGVkQWRkU3RlcENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi10b3A6IDExcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMCAxMnB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dENvbG9yfTtcbiAgLmFkZGNvbG9yIHtcbiAgICBtYXJnaW4tdG9wOiA0cHg7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KS53aXRoQ29uZmlnKHtzaG91bGRGb3J3YXJkUHJvcH0pPHtcbiAgd2lkdGg6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG59PmBcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMud2lkdGggPz8gJzEwMCUnfTtcbiAgdGV4dC1hbGlnbjogJHtwcm9wcyA9PiBwcm9wcy50ZXh0QWxpZ24gPz8gJ2VuZCd9O1xuICBwb2ludGVyLWV2ZW50czogJHtwcm9wcyA9PiAocHJvcHMuZGlzYWJsZWQgPyAnbm9uZScgOiAnYWxsJyl9O1xuICBmb250LXNpemU6IDEwcHg7XG4gIHBhZGRpbmctbGVmdDogNHB4O1xuICBwYWRkaW5nLXJpZ2h0OiA0cHg7XG5gO1xuXG5jb25zdCBJbnB1dFRleHQgPSBzdHlsZWQuZGl2LndpdGhDb25maWcoe3Nob3VsZEZvcndhcmRQcm9wfSk8e3dpZHRoOiBzdHJpbmc7IHRleHRBbGlnbjogc3RyaW5nfT5gXG4gICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXR9O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMud2lkdGggPz8gJzEwMCUnfTtcbiAgdGV4dC1hbGlnbjogJHtwcm9wcyA9PiBwcm9wcy50ZXh0QWxpZ24gPz8gJ2VuZCd9O1xuICBmb250LXNpemU6IDEwcHg7XG4gIHBhZGRpbmctbGVmdDogNHB4O1xuICBwYWRkaW5nLXJpZ2h0OiA0cHg7XG5cbiAgJjpob3ZlciB7XG4gICAgY3Vyc29yOiBhdXRvO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cbmA7XG5cbnR5cGUgU29ydGFibGVJdGVtUHJvcHMgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGNoaWxkcmVuOiAobGlzdGVuZXJzOiBhbnkpID0+IFJlYWN0LlJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBpc1NvcnRpbmc6IGJvb2xlYW47XG59O1xuXG5jb25zdCBTb3J0YWJsZUl0ZW0gPSAoe2lkLCBjaGlsZHJlbiwgaXNTb3J0aW5nfTogU29ydGFibGVJdGVtUHJvcHMpID0+IHtcbiAgY29uc3Qge2F0dHJpYnV0ZXMsIGxpc3RlbmVycywgc2V0Tm9kZVJlZiwgdHJhbnNmb3JtLCB0cmFuc2l0aW9uLCBpc0RyYWdnaW5nfSA9IHVzZVNvcnRhYmxlKHtpZH0pO1xuICBjb25zdCBzdHlsZSA9IHtcbiAgICB0cmFuc2Zvcm06IENTUy5UcmFuc2Zvcm0udG9TdHJpbmcodHJhbnNmb3JtKSxcbiAgICB0cmFuc2l0aW9uLFxuICAgIHpJbmRleDogaXNEcmFnZ2luZyA/IDEgOiAwXG4gIH07XG4gIHJldHVybiAoXG4gICAgPENvbG9yUGFsZXR0ZUl0ZW1cbiAgICAgIHJlZj17c2V0Tm9kZVJlZn1cbiAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnY3VzdG9tLXBhbGV0dGVfX3NvcnRhYmxlLWl0ZW1zJywge3NvcnRpbmc6IGlzU29ydGluZyB8fCBpc0RyYWdnaW5nfSl9XG4gICAgICB7Li4uYXR0cmlidXRlc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4obGlzdGVuZXJzKX1cbiAgICA8L0NvbG9yUGFsZXR0ZUl0ZW0+XG4gICk7XG59O1xuXG50eXBlIFdyYXBwZWRTb3J0YWJsZUNvbnRhaW5lclByb3BzID0ge1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBvblNvcnRFbmQ6IChldmVudDogRHJhZ0VuZEV2ZW50KSA9PiB2b2lkO1xuICBvblNvcnRTdGFydDogKCkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IFdyYXBwZWRTb3J0YWJsZUNvbnRhaW5lciA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIG9uU29ydEVuZCxcbiAgb25Tb3J0U3RhcnRcbn06IFdyYXBwZWRTb3J0YWJsZUNvbnRhaW5lclByb3BzKSA9PiB7XG4gIGNvbnN0IHNlbnNvcnMgPSB1c2VTZW5zb3JzKHVzZVNlbnNvcihQb2ludGVyU2Vuc29yKSwgdXNlU2Vuc29yKEtleWJvYXJkU2Vuc29yKSk7XG4gIHJldHVybiAoXG4gICAgPERuZENvbnRleHRcbiAgICAgIHNlbnNvcnM9e3NlbnNvcnN9XG4gICAgICBjb2xsaXNpb25EZXRlY3Rpb249e2Nsb3Nlc3RDZW50ZXJ9XG4gICAgICBvbkRyYWdFbmQ9e29uU29ydEVuZH1cbiAgICAgIG9uRHJhZ1N0YXJ0PXtvblNvcnRTdGFydH1cbiAgICA+XG4gICAgICA8U29ydGFibGVDb250ZXh0XG4gICAgICAgIGl0ZW1zPXtSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIChfLCBpbmRleCkgPT4gYCR7aW5kZXh9YCkgfHwgW119XG4gICAgICAgIHN0cmF0ZWd5PXt2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3l9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9PntjaGlsZHJlbn08L2Rpdj5cbiAgICAgIDwvU29ydGFibGVDb250ZXh0PlxuICAgIDwvRG5kQ29udGV4dD5cbiAgKTtcbn07XG5cbnR5cGUgRHJhZ0hhbmRsZVByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48e2NsYXNzTmFtZT86IHN0cmluZ30+O1xuY29uc3QgRHJhZ0hhbmRsZSA9ICh7Y2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ubGlzdGVuZXJzfTogRHJhZ0hhbmRsZVByb3BzKSA9PiAoXG4gIDxTdHlsZWREcmFnSGFuZGxlIGNsYXNzTmFtZT17Y2xhc3NOYW1lfSB7Li4ubGlzdGVuZXJzfT5cbiAgICB7Y2hpbGRyZW59XG4gIDwvU3R5bGVkRHJhZ0hhbmRsZT5cbik7XG5cbmV4cG9ydCB0eXBlIENvbG9yUGFsZXR0ZUlucHV0UHJvcHMgPSB7XG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XG4gIG9uQ2hhbmdlOiAodmFsOiB1bmtub3duKSA9PiB2b2lkO1xuICBpZDogc3RyaW5nO1xuICB3aWR0aDogc3RyaW5nO1xuICB0ZXh0QWxpZ246IHN0cmluZztcbiAgZWRpdGFibGU6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgQ29sb3JQYWxldHRlSW5wdXQgPSAoe1xuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIGlkLFxuICB3aWR0aCxcbiAgdGV4dEFsaWduLFxuICBlZGl0YWJsZVxufTogQ29sb3JQYWxldHRlSW5wdXRQcm9wcykgPT4ge1xuICBjb25zdCBbc3RhdGVWYWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUodmFsdWUpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRWYWx1ZSh2YWx1ZSk7XG4gIH0sIFt2YWx1ZV0pO1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIGUgPT4ge1xuICAgICAgc3dpdGNoIChlLmtleUNvZGUpIHtcbiAgICAgICAgY2FzZSBLZXlFdmVudC5ET01fVktfRU5URVI6XG4gICAgICAgIGNhc2UgS2V5RXZlbnQuRE9NX1ZLX1JFVFVSTjpcbiAgICAgICAgICBvbkNoYW5nZShzdGF0ZVZhbHVlKTtcbiAgICAgICAgICBpZiAoaW5wdXRSZWYgIT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGlucHV0UmVmPy5jdXJyZW50LmJsdXIoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSxcbiAgICBbb25DaGFuZ2UsIHN0YXRlVmFsdWVdXG4gICk7XG5cbiAgY29uc3QgX29uQ2hhbmdlID0gdXNlQ2FsbGJhY2soZSA9PiBzZXRWYWx1ZShlLnRhcmdldC52YWx1ZSksIFtzZXRWYWx1ZV0pO1xuICBjb25zdCBvbkJsdXIgPSB1c2VDYWxsYmFjaygoKSA9PiBvbkNoYW5nZShzdGF0ZVZhbHVlKSwgW29uQ2hhbmdlLCBzdGF0ZVZhbHVlXSk7XG5cbiAgcmV0dXJuIGVkaXRhYmxlID8gKFxuICAgIDxTdHlsZWRJbnB1dFxuICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgIGNsYXNzTmFtZT1cImN1c3RvbS1wYWxldHRlLWhleF9faW5wdXRcIlxuICAgICAgdmFsdWU9e3N0YXRlVmFsdWV9XG4gICAgICBvbkNoYW5nZT17X29uQ2hhbmdlfVxuICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgIGlkPXtpZH1cbiAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgIHRleHRBbGlnbj17dGV4dEFsaWdufVxuICAgICAgc2Vjb25kYXJ5XG4gICAgLz5cbiAgKSA6IChcbiAgICA8SW5wdXRUZXh0IGNsYXNzTmFtZT1cImN1c3RvbS1wYWxldHRlLWhleF9faW5wdXRfX3RleHRcIiB3aWR0aD17d2lkdGh9IHRleHRBbGlnbj17dGV4dEFsaWdufT5cbiAgICAgIHt2YWx1ZX1cbiAgICA8L0lucHV0VGV4dD5cbiAgKTtcbn07XG5cbmNvbnN0IERhc2ggPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogNnB4O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuICBtYXJnaW4tbGVmdDogNHB4O1xuICBtYXJnaW4tcmlnaHQ6IDRweDtcbmA7XG5cbmNvbnN0IFN0eWxlZFJhbmdlSW5wdXQgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tbGVmdDogMTJweDtcbmA7XG5cbmNvbnN0IFN0eWxlZENvbG9ySGV4SW5wdXQgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tbGVmdDogMTJweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBFZGl0YWJsZUNvbG9yUmFuZ2U6IFJlYWN0LkZDPEVkaXRhYmxlQ29sb3JSYW5nZVByb3BzPiA9ICh7XG4gIGl0ZW0sXG4gIGlzTGFzdCxcbiAgaW5kZXgsXG4gIGVkaXRDb2xvck1hcCxcbiAgZWRpdGFibGVcbn0pID0+IHtcbiAgY29uc3QgaGFzSW5wdXRzID0gQXJyYXkuaXNBcnJheShpdGVtPy5pbnB1dHMpO1xuICBjb25zdCBsZWZ0SW5wdXQgPSBoYXNJbnB1dHMgPyBpdGVtLmlucHV0c1swXSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgcmlnaHRJbnB1dCA9IGhhc0lucHV0cyA/IGl0ZW0uaW5wdXRzWzFdIDogdW5kZWZpbmVkO1xuICBjb25zdCBub01pbkJvdW5kID0gIU51bWJlci5pc0Zpbml0ZShsZWZ0SW5wdXQpICYmIGluZGV4ID09PSAwO1xuICBjb25zdCBub01heEJvdW5kID0gIU51bWJlci5pc0Zpbml0ZShyaWdodElucHV0KSAmJiBpc0xhc3Q7XG4gIGNvbnN0IG9uQ2hhbmdlTGVmdCA9IHVzZUNhbGxiYWNrKFxuICAgIHZhbCA9PiB7XG4gICAgICBpZiAoZWRpdGFibGUgJiYgZWRpdENvbG9yTWFwKSBlZGl0Q29sb3JNYXAocGFyc2VGbG9hdCh2YWwpLCBpbmRleCAtIDEpO1xuICAgIH0sXG4gICAgW2VkaXRDb2xvck1hcCwgaW5kZXgsIGVkaXRhYmxlXVxuICApO1xuICBjb25zdCBvbkNoYW5nZVJpZ2h0ID0gdXNlQ2FsbGJhY2soXG4gICAgdmFsID0+IHtcbiAgICAgIGlmIChlZGl0YWJsZSAmJiBlZGl0Q29sb3JNYXApIGVkaXRDb2xvck1hcChwYXJzZUZsb2F0KHZhbCksIGluZGV4KTtcbiAgICB9LFxuICAgIFtlZGl0Q29sb3JNYXAsIGluZGV4LCBlZGl0YWJsZV1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRSYW5nZUlucHV0PlxuICAgICAgPENvbG9yUGFsZXR0ZUlucHV0XG4gICAgICAgIHZhbHVlPXtub01pbkJvdW5kID8gJ0xlc3MnIDogU3RyaW5nKGxlZnRJbnB1dCA/PyAnJyl9XG4gICAgICAgIGlkPXtgY29sb3ItcGFsZXR0ZS1pbnB1dC0ke2luZGV4fS1sZWZ0YH1cbiAgICAgICAgd2lkdGg9XCI1NHB4XCJcbiAgICAgICAgdGV4dEFsaWduPVwiZW5kXCJcbiAgICAgICAgZWRpdGFibGU9e25vTWluQm91bmQgPyBmYWxzZSA6IGVkaXRhYmxlfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VMZWZ0fVxuICAgICAgLz5cbiAgICAgIDxEYXNoIC8+XG4gICAgICA8Q29sb3JQYWxldHRlSW5wdXRcbiAgICAgICAgdmFsdWU9e25vTWF4Qm91bmQgPyAnTW9yZScgOiBTdHJpbmcocmlnaHRJbnB1dCA/PyAnJyl9XG4gICAgICAgIGlkPXtgY29sb3ItcGFsZXR0ZS1pbnB1dC0ke2luZGV4fS1yaWdodGB9XG4gICAgICAgIHdpZHRoPVwiNTRweFwiXG4gICAgICAgIHRleHRBbGlnbj1cImVuZFwiXG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZVJpZ2h0fVxuICAgICAgICBlZGl0YWJsZT17bm9NYXhCb3VuZCA/IGZhbHNlIDogZWRpdGFibGV9XG4gICAgICAvPlxuICAgIDwvU3R5bGVkUmFuZ2VJbnB1dD5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBBZGRDb2xvclN0b3AgPSAoe29uQ29sb3JBZGQsIEljb25Db21wb25lbnR9KSA9PiAoXG4gIDxTdHlsZWRBY3Rpb24gb25DbGljaz17b25Db2xvckFkZH0gY2xhc3NOYW1lPVwiYWRkY29sb3JcIj5cbiAgICA8SWNvbkNvbXBvbmVudCBoZWlnaHQ9XCIxNHB4XCIgLz5cbiAgPC9TdHlsZWRBY3Rpb24+XG4pO1xuXG5leHBvcnQgY29uc3QgRGVsZXRlQ29sb3JTdG9wID0gKHtvbkNvbG9yRGVsZXRlLCBJY29uQ29tcG9uZW50fSkgPT4gKFxuICA8U3R5bGVkQWN0aW9uIG9uQ2xpY2s9e29uQ29sb3JEZWxldGV9IGNsYXNzTmFtZT1cInRyYXNoYmluXCI+XG4gICAgPEljb25Db21wb25lbnQgaGVpZ2h0PVwiMTRweFwiIC8+XG4gIDwvU3R5bGVkQWN0aW9uPlxuKTtcblxuZXhwb3J0IGNvbnN0IEN1c3RvbVBhbGV0dGVJbnB1dDogUmVhY3QuRkM8Q3VzdG9tUGFsZXR0ZUlucHV0UHJvcHM+ID0gKHtcbiAgaW5kZXgsXG4gIGlzU29ydGluZyxcbiAgY29sb3IsXG4gIGNvbG9yQnJlYWtzLFxuICBpbnB1dENvbG9ySGV4LFxuICBlZGl0Q29sb3JNYXBWYWx1ZSxcbiAgYWN0aW9uSWNvbnMgPSBkZWZhdWx0QWN0aW9uSWNvbnMsXG4gIGRpc2FibGVBcHBlbmQsXG4gIGRpc2FibGVEZWxldGUsXG4gIG9uRGVsZXRlLFxuICBvbkFkZCxcbiAgb25Ub2dnbGVTa2V0Y2hlclxufSkgPT4ge1xuICBjb25zdCBvbkNsaWNrU3d0YWNoID0gdXNlQ2FsbGJhY2soKCkgPT4gb25Ub2dnbGVTa2V0Y2hlcihpbmRleCksIFtvblRvZ2dsZVNrZXRjaGVyLCBpbmRleF0pO1xuICBjb25zdCBvbkNvbG9ySW5wdXQgPSB1c2VDYWxsYmFjayh2ID0+IGlucHV0Q29sb3JIZXgoaW5kZXgsIHYpLCBbaW5wdXRDb2xvckhleCwgaW5kZXhdKTtcbiAgY29uc3Qgb25Db2xvckRlbGV0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IG9uRGVsZXRlKGluZGV4KSwgW29uRGVsZXRlLCBpbmRleF0pO1xuICBjb25zdCBvbkNvbG9yQWRkID0gdXNlQ2FsbGJhY2soKCkgPT4gb25BZGQoaW5kZXgpLCBbb25BZGQsIGluZGV4XSk7XG4gIGNvbnN0IHNob3dIZXhJbnB1dCA9ICFjb2xvckJyZWFrcztcblxuICByZXR1cm4gKFxuICAgIDxTb3J0YWJsZUl0ZW0gaWQ9e2Ake2luZGV4fWB9IGlzU29ydGluZz17aXNTb3J0aW5nfT5cbiAgICAgIHtsaXN0ZW5lcnMgPT4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY3VzdG9tLXBhbGV0dGUtaW5wdXRfX2xlZnRcIj5cbiAgICAgICAgICAgIDxEcmFnSGFuZGxlIGNsYXNzTmFtZT1cImxheWVyX19kcmFnLWhhbmRsZVwiIHsuLi5saXN0ZW5lcnN9PlxuICAgICAgICAgICAgICA8YWN0aW9uSWNvbnMuc29ydCBoZWlnaHQ9XCIyMHB4XCIgLz5cbiAgICAgICAgICAgIDwvRHJhZ0hhbmRsZT5cbiAgICAgICAgICAgIDxDb2xvclN3YXRjaCBjb2xvcj17Y29sb3J9IG9uQ2xpY2s9e29uQ2xpY2tTd3RhY2h9IC8+XG4gICAgICAgICAgICB7c2hvd0hleElucHV0ID8gKFxuICAgICAgICAgICAgICA8U3R5bGVkQ29sb3JIZXhJbnB1dD5cbiAgICAgICAgICAgICAgICA8Q29sb3JQYWxldHRlSW5wdXRcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtjb2xvci50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ29sb3JJbnB1dH1cbiAgICAgICAgICAgICAgICAgIGlkPXtgaW5wdXQtbGF5ZXItbGFiZWwtJHtpbmRleH1gfVxuICAgICAgICAgICAgICAgICAgZWRpdGFibGVcbiAgICAgICAgICAgICAgICAgIHRleHRBbGlnbj1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgd2lkdGg9XCI3MHB4XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1N0eWxlZENvbG9ySGV4SW5wdXQ+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHtjb2xvckJyZWFrcyAmJiBpbmRleCA8IGNvbG9yQnJlYWtzLmxlbmd0aCAmJiBpc051bWVyaWNDb2xvckJyZWFrcyhjb2xvckJyZWFrcykgPyAoXG4gICAgICAgICAgICAgIDxFZGl0YWJsZUNvbG9yUmFuZ2VcbiAgICAgICAgICAgICAgICBpdGVtPXtjb2xvckJyZWFrc1tpbmRleF19XG4gICAgICAgICAgICAgICAgaXNMYXN0PXtpbmRleCA9PT0gY29sb3JCcmVha3MubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgZWRpdENvbG9yTWFwPXtlZGl0Q29sb3JNYXBWYWx1ZX1cbiAgICAgICAgICAgICAgICBlZGl0YWJsZVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdXN0b20tcGFsZXR0ZS1pbnB1dF9fcmlnaHRcIj5cbiAgICAgICAgICAgIHshZGlzYWJsZUFwcGVuZCA/IChcbiAgICAgICAgICAgICAgPEFkZENvbG9yU3RvcCBvbkNvbG9yQWRkPXtvbkNvbG9yQWRkfSBJY29uQ29tcG9uZW50PXthY3Rpb25JY29ucy5hZGR9IC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHshZGlzYWJsZURlbGV0ZSA/IChcbiAgICAgICAgICAgICAgPERlbGV0ZUNvbG9yU3RvcCBvbkNvbG9yRGVsZXRlPXtvbkNvbG9yRGVsZXRlfSBJY29uQ29tcG9uZW50PXthY3Rpb25JY29ucy5kZWxldGV9IC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvU29ydGFibGVJdGVtPlxuICApO1xufTtcblxuY29uc3QgU3R5bGVkQ2F0ZWdvcmljYWxWYWx1ZVBpY2tlcldyYXBwZXIgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnY2F0ZWdvcmljYWwtdmFsdWUtcGlja2VyJ1xufSlgXG4gIHdpZHRoOiAxNTBweDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRDb2xvcn07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIGNvbHVtbi1nYXA6IDhweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuYDtcblxudHlwZSBTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyUHJvcHMgPSB7bm9Cb3JkZXI6IGJvb2xlYW59O1xuY29uc3QgU3R5bGVkQ2F0ZWdvcmljYWxWYWx1ZVBpY2tlciA9IHN0eWxlZC5kaXY8U3R5bGVkQ2F0ZWdvcmljYWxWYWx1ZVBpY2tlclByb3BzPmBcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xuICBmb250LXNpemU6IDExcHg7XG4gIGJvcmRlci1ib3R0b206ICR7cHJvcHMgPT4gKHByb3BzLm5vQm9yZGVyID8gJycgOiAnMXB4IGRhc2hlZCcpfTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWF4LXdpZHRoOiAxMDBweDtcbmA7XG5cbnR5cGUgRHJvcGRvd25WYWx1ZXNXcmFwcGVyUHJvcHMgPSB7d2lkdGg6IG51bWJlcn07XG5jb25zdCBEcm9wZG93blZhbHVlc1dyYXBwZXIgPSBzdHlsZWQuZGl2PERyb3Bkb3duVmFsdWVzV3JhcHBlclByb3BzPmBcbiAgYm9yZGVyOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldyYXBwZXJafTtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMud2lkdGh9cHg7XG5gO1xuXG50eXBlIFNlbGVjdGVkVmFsdWVzV3JhcHBlclByb3BzID0ge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfTtcbmNvbnN0IFNlbGVjdGVkVmFsdWVzV3JhcHBlciA9IHN0eWxlZChEcm9wZG93blZhbHVlc1dyYXBwZXIpPFNlbGVjdGVkVmFsdWVzV3JhcHBlclByb3BzPmBcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMud2lkdGh9cHg7XG4gIG1heC1oZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMuaGVpZ2h0fXB4O1xuICBvdmVyZmxvdzogYXV0bztcblxuICAuY3VzdG9tLXBhbGV0dGUtY2hpY2tsZXRlZC1pbnB1dCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25XcmFwcGVyWn07XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZERyb3Bkb3duSGVhZGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dENvbG9yfTtcbiAgcGFkZGluZzogMCA4cHg7XG4gIGZvbnQtc2l6ZTogMTBweDtcblxuICAuYnV0dG9uIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZFRvb2x0aXBDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZzogOHB4O1xuICB3aWR0aDogMTUwcHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcblxuICBkaXYge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgfVxuYDtcblxuY29uc3QgTlVNQkVSX1ZBTFVFU19JTl9UT09MVElQID0gMTA7XG5cbmNvbnN0IENhdGVnb3JpY2FsU2VsZWN0b3JDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCh7XG4gIG9uU2VsZWN0UmVzdDogKCkgPT4gbnVsbCxcbiAgb25SZXNldDogKCkgPT4gbnVsbFxufSk7XG5cbi8vIENhdGVnb3JpY2FsIHZhbHVlcyBkcm9wZG93bmxpc3Q6XG4vLyBleHRlbmRpbmcgRHJvcGRvd25MaXN0IGFuZCBhZGRpbmcgJ1NlbGVjdCB0aGUgUmVzdCcgYW5kICdSZXNldCcgYnV0dG9uc1xuY2xhc3MgTW9kaWZpZWREcm9wZG93bkxpc3QgZXh0ZW5kcyBEcm9wZG93bkxpc3Qge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPENhdGVnb3JpY2FsU2VsZWN0b3JDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgIHtjb250ZXh0ID0+IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxTdHlsZWREcm9wZG93bkhlYWRlcj5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIGxpbmsgc2l6ZT1cInNtYWxcIiBvbkNsaWNrPXtjb250ZXh0Lm9uU2VsZWN0UmVzdH0+XG4gICAgICAgICAgICAgICAgICBTZWxlY3QgdGhlIFJlc3RcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIGxpbmsgc2l6ZT1cInNtYWxcIiBvbkNsaWNrPXtjb250ZXh0Lm9uUmVzZXR9PlxuICAgICAgICAgICAgICAgICAgUmVzZXRcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPC9TdHlsZWREcm9wZG93bkhlYWRlcj5cbiAgICAgICAgICAgICAgPERpdmlkZXJMaW5lIC8+XG4gICAgICAgICAgICAgIDxEcm9wZG93bkxpc3Qgey4uLnRoaXMucHJvcHN9IC8+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0NhdGVnb3JpY2FsU2VsZWN0b3JDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgPC8+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBDYXRlZ29yaWNhbFNlbGVjdG9yUHJvcHMgPSB7XG4gIGluZGV4OiBudW1iZXI7XG4gIHNlbGVjdGVkVmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyIHwgbnVsbClbXTtcbiAgYWxsVmFsdWVzOiBzdHJpbmdbXSB8IG51bWJlcltdO1xuICBhZGRDb2xvck1hcFZhbHVlPzogKHY6IChudW1iZXIgfCBzdHJpbmcgfCBudWxsKVtdLCBpOiBudW1iZXIpID0+IHZvaWQ7XG4gIHJlbW92ZUNvbG9yTWFwVmFsdWU/OiAodjogbnVtYmVyIHwgc3RyaW5nLCBpOiBudW1iZXIpID0+IHZvaWQ7XG4gIHJlc2V0Q29sb3JNYXBWYWx1ZT86IChpOiBudW1iZXIpID0+IHZvaWQ7XG4gIHNlbGVjdFJlc3RDb2xvck1hcFZhbHVlPzogKGk6IG51bWJlcikgPT4gdm9pZDtcbiAgZWRpdGFibGU/OiBib29sZWFuO1xufTtcblxuLy8gQ2F0ZWdvcmljYWwgdmFsdWVzIHNlbGVjdG9yIGZvciBlZGl0aW5nIGNhdGVnb3JpY2FsIHZhbHVlc1xuZXhwb3J0IGNvbnN0IENhdGVnb3JpY2FsU2VsZWN0b3I6IFJlYWN0LkZDPENhdGVnb3JpY2FsU2VsZWN0b3JQcm9wcz4gPSAoe1xuICBpbmRleCxcbiAgc2VsZWN0ZWRWYWx1ZXMsXG4gIGFsbFZhbHVlcyxcbiAgYWRkQ29sb3JNYXBWYWx1ZSxcbiAgcmVtb3ZlQ29sb3JNYXBWYWx1ZSxcbiAgcmVzZXRDb2xvck1hcFZhbHVlLFxuICBzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZSxcbiAgZWRpdGFibGUgPSB0cnVlXG59OiBDYXRlZ29yaWNhbFNlbGVjdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgW3Nob3dUeXBlYWhlYWQsIHNldFNob3dUeXBlYWhlYWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uT3B0aW9uU2VsZWN0ZWQgPSB1c2VDYWxsYmFjayhcbiAgICB2YWx1ZSA9PiB7XG4gICAgICBjb25zdCBwcmV2aW91c1NlbGVjdGVkID0gdG9BcnJheShzZWxlY3RlZFZhbHVlcyk7XG4gICAgICBjb25zdCBpdGVtcyA9IHVuaXEocHJldmlvdXNTZWxlY3RlZC5jb25jYXQodG9BcnJheSh2YWx1ZSkpKTtcbiAgICAgIGFkZENvbG9yTWFwVmFsdWU/LihpdGVtcywgaW5kZXgpO1xuICAgIH0sXG4gICAgW3NlbGVjdGVkVmFsdWVzLCBpbmRleCwgYWRkQ29sb3JNYXBWYWx1ZV1cbiAgKTtcblxuICBjb25zdCBvbk9wZW5Ecm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRTaG93VHlwZWFoZWFkKHRydWUpO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25DbG9zZURyb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNob3dUeXBlYWhlYWQoZmFsc2UpO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25SZW1vdmVJdGVtID0gdXNlQ2FsbGJhY2soXG4gICAgdmFsdWUgPT4ge1xuICAgICAgcmVtb3ZlQ29sb3JNYXBWYWx1ZT8uKHZhbHVlLCBpbmRleCk7XG4gICAgfSxcbiAgICBbaW5kZXgsIHJlbW92ZUNvbG9yTWFwVmFsdWVdXG4gICk7XG5cbiAgY29uc3Qgb25SZXNldCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICByZXNldENvbG9yTWFwVmFsdWU/LihpbmRleCk7XG4gICAgc2V0U2hvd1R5cGVhaGVhZChmYWxzZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sIFtyZXNldENvbG9yTWFwVmFsdWUsIGluZGV4XSk7XG5cbiAgY29uc3Qgb25TZWxlY3RSZXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNlbGVjdFJlc3RDb2xvck1hcFZhbHVlPy4oaW5kZXgpO1xuICAgIHNldFNob3dUeXBlYWhlYWQoZmFsc2UpO1xuICAgIHJldHVybiBudWxsO1xuICB9LCBbc2VsZWN0UmVzdENvbG9yTWFwVmFsdWUsIGluZGV4XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkQ2F0ZWdvcmljYWxWYWx1ZVBpY2tlcldyYXBwZXI+XG4gICAgICB7ZWRpdGFibGUgJiYgPEFkZCBoZWlnaHQ9XCIxMnB4XCIgb25DbGljaz17b25PcGVuRHJvcGRvd259IC8+fVxuICAgICAgPFN0eWxlZENhdGVnb3JpY2FsVmFsdWVQaWNrZXJcbiAgICAgICAgbm9Cb3JkZXI9e3NlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMCB8fCAhZWRpdGFibGV9XG4gICAgICAgIG9uQ2xpY2s9e29uT3BlbkRyb3Bkb3dufVxuICAgICAgICBkYXRhLXRpcFxuICAgICAgICBkYXRhLWZvcj17YGNhdGVnb3J5LXZhbHVlcy0ke2luZGV4fWB9XG4gICAgICA+XG4gICAgICAgIHtzZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDBcbiAgICAgICAgICA/ICdBZGQgVmFsdWUnXG4gICAgICAgICAgOiBzZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDFcbiAgICAgICAgICA/IHNlbGVjdGVkVmFsdWVzWzBdXG4gICAgICAgICAgOiBgJHtzZWxlY3RlZFZhbHVlcy5sZW5ndGh9IHNlbGVjdGVkYH1cbiAgICAgICAge3NlbGVjdGVkVmFsdWVzLmxlbmd0aCA+IDEgJiYgKFxuICAgICAgICAgIDxUb29sdGlwIGlkPXtgY2F0ZWdvcnktdmFsdWVzLSR7aW5kZXh9YH0gcGxhY2U9XCJ0b3BcIiBpbnRlcmFjdGl2ZT17dHJ1ZX0+XG4gICAgICAgICAgICA8U3R5bGVkVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgICAgIHtzZWxlY3RlZFZhbHVlcy5zbGljZSgwLCBOVU1CRVJfVkFMVUVTX0lOX1RPT0xUSVApLm1hcCgodmFsdWUsIGkpID0+IChcbiAgICAgICAgICAgICAgICA8ZGl2IGtleT17aX0+e3ZhbHVlfTwvZGl2PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAge3NlbGVjdGVkVmFsdWVzLmxlbmd0aCA+IE5VTUJFUl9WQUxVRVNfSU5fVE9PTFRJUCAmJiA8ZGl2Pi4uLjwvZGl2Pn1cbiAgICAgICAgICAgIDwvU3R5bGVkVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICApfVxuICAgICAgPC9TdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyPlxuICAgICAge2VkaXRhYmxlICYmIChcbiAgICAgICAgPFBvcnRhbGVkIGxlZnQ9ezB9IHRvcD17MH0gaXNPcGVuZWQ9e3Nob3dUeXBlYWhlYWR9IG9uQ2xvc2U9e29uQ2xvc2VEcm9wZG93bn0+XG4gICAgICAgICAge3NlbGVjdGVkVmFsdWVzLmxlbmd0aCA+IDEgJiYgKFxuICAgICAgICAgICAgPFNlbGVjdGVkVmFsdWVzV3JhcHBlciB3aWR0aD17MjUwfSBoZWlnaHQ9ezIwMH0+XG4gICAgICAgICAgICAgIDxDaGlja2xldGVkSW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydjdXN0b20tcGFsZXR0ZS1jaGlja2xldGVkLWlucHV0J31cbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXtzZWxlY3RlZFZhbHVlc31cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17Jyd9XG4gICAgICAgICAgICAgICAgcmVtb3ZlSXRlbT17b25SZW1vdmVJdGVtfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG51bGx9XG4gICAgICAgICAgICAgICAgQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQ9e251bGx9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1NlbGVjdGVkVmFsdWVzV3JhcHBlcj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxEcm9wZG93blZhbHVlc1dyYXBwZXIgd2lkdGg9ezI1MH0+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7cG9zaXRpb246ICdyZWxhdGl2ZSd9fT5cbiAgICAgICAgICAgICAgPENhdGVnb3JpY2FsU2VsZWN0b3JDb250ZXh0LlByb3ZpZGVyXG4gICAgICAgICAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICAgICAgICAgIG9uUmVzZXQsXG4gICAgICAgICAgICAgICAgICBvblNlbGVjdFJlc3RcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFR5cGVhaGVhZFxuICAgICAgICAgICAgICAgICAgY3VzdG9tQ2xhc3Nlcz17e1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRzOiAnbGlzdC1zZWxlY3RvcicsXG4gICAgICAgICAgICAgICAgICAgIGlucHV0OiAndHlwZWFoZWFkX19pbnB1dCcsXG4gICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtOiAnbGlzdF9faXRlbScsXG4gICAgICAgICAgICAgICAgICAgIGxpc3RBbmNob3I6ICdsaXN0X19pdGVtX19hbmNob3InXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17YWxsVmFsdWVzfVxuICAgICAgICAgICAgICAgICAgLy8gYWRkIHNhZmUgc3RyaW5nIGNhc3RpbmcgZm9yIHRoZSBUeXBlYWhlYWQsIHNvIGZ1enp5IHNlYXJjaCBuZXZlciByZWNlaXZlcyBub24tc3RyaW5ncywgcHJldmVudGluZyB0aGUgdG9Mb3dlckNhc2UgY3Jhc2hcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXlPcHRpb249e28gPT4gU3RyaW5nKG8gPz8gJycpfVxuICAgICAgICAgICAgICAgICAgZmlsdGVyT3B0aW9uPXsoaW5wdXQsIG8pID0+IFN0cmluZyhvID8/ICcnKS5pbmNsdWRlcyhTdHJpbmcoaW5wdXQgPz8gJycpKX1cbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsnU2VhcmNoJ31cbiAgICAgICAgICAgICAgICAgIG9uT3B0aW9uU2VsZWN0ZWQ9e29uT3B0aW9uU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICBjdXN0b21MaXN0Q29tcG9uZW50PXtNb2RpZmllZERyb3Bkb3duTGlzdH1cbiAgICAgICAgICAgICAgICAgIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50PXtMaXN0SXRlbX1cbiAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RydWV9XG4gICAgICAgICAgICAgICAgICBzaG93T3B0aW9uc1doZW5FbXB0eVxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz17c2VsZWN0ZWRWYWx1ZXN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9DYXRlZ29yaWNhbFNlbGVjdG9yQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvRHJvcGRvd25WYWx1ZXNXcmFwcGVyPlxuICAgICAgICA8L1BvcnRhbGVkPlxuICAgICAgKX1cbiAgICA8L1N0eWxlZENhdGVnb3JpY2FsVmFsdWVQaWNrZXJXcmFwcGVyPlxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgQ2F0ZWdvcmljYWxDdXN0b21QYWxldHRlSW5wdXRQcm9wcyA9IHtcbiAgaW5kZXg6IG51bWJlcjtcbiAgaXNTb3J0aW5nOiBib29sZWFuO1xuICBjb2xvcjogSGV4Q29sb3I7XG4gIGNvbG9yTWFwPzogQ29sb3JNYXAgfCBudWxsO1xuICBhZGRDb2xvck1hcFZhbHVlOiAodjogKG51bWJlciB8IHN0cmluZyB8IG51bGwpW10sIGk6IG51bWJlcikgPT4gdm9pZDtcbiAgcmVtb3ZlQ29sb3JNYXBWYWx1ZTogKHY6IG51bWJlciB8IHN0cmluZywgaTogbnVtYmVyKSA9PiB2b2lkO1xuICByZXNldENvbG9yTWFwVmFsdWU6IChpOiBudW1iZXIpID0+IHZvaWQ7XG4gIHNlbGVjdFJlc3RDb2xvck1hcFZhbHVlOiAoaTogbnVtYmVyKSA9PiB2b2lkO1xuICBhY3Rpb25JY29ucz86IEFjdGlvbkljb25zO1xuICBvbkRlbGV0ZTogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIG9uQWRkOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgb25Ub2dnbGVTa2V0Y2hlcjogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIGFsbFZhbHVlczogc3RyaW5nW10gfCBudW1iZXJbXTtcbiAgZGlzYWJsZURlbGV0ZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgQ2F0ZWdvcmljYWxDdXN0b21QYWxldHRlSW5wdXQ6IFJlYWN0LkZDPENhdGVnb3JpY2FsQ3VzdG9tUGFsZXR0ZUlucHV0UHJvcHM+ID0gKHtcbiAgaW5kZXgsXG4gIGlzU29ydGluZyxcbiAgY29sb3IsXG4gIGNvbG9yTWFwLFxuICBhY3Rpb25JY29ucyA9IGRlZmF1bHRBY3Rpb25JY29ucyxcbiAgb25EZWxldGUsXG4gIGRpc2FibGVEZWxldGUsXG4gIG9uVG9nZ2xlU2tldGNoZXIsXG4gIGFkZENvbG9yTWFwVmFsdWUsXG4gIHJlbW92ZUNvbG9yTWFwVmFsdWUsXG4gIHJlc2V0Q29sb3JNYXBWYWx1ZSxcbiAgc2VsZWN0UmVzdENvbG9yTWFwVmFsdWUsXG4gIGFsbFZhbHVlc1xufTogQ2F0ZWdvcmljYWxDdXN0b21QYWxldHRlSW5wdXRQcm9wcykgPT4ge1xuICBjb25zdCBzZWxlY3RlZFZhbHVlczogKG51bWJlciB8IHN0cmluZyB8IG51bGwpW10gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWNvbG9yTWFwIHx8ICFjb2xvck1hcFtpbmRleF0pIHJldHVybiBbXTtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbG9yTWFwW2luZGV4XVswXTtcbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogdmFsdWUgIT09IG51bGwgPyBbdmFsdWVdIDogW107XG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfSwgW2NvbG9yTWFwLCBpbmRleF0pO1xuXG4gIGNvbnN0IG9uQ2xpY2tTd3RhY2ggPSB1c2VDYWxsYmFjaygoKSA9PiBvblRvZ2dsZVNrZXRjaGVyKGluZGV4KSwgW29uVG9nZ2xlU2tldGNoZXIsIGluZGV4XSk7XG4gIGNvbnN0IG9uQ29sb3JEZWxldGUgPSB1c2VDYWxsYmFjaygoKSA9PiBvbkRlbGV0ZShpbmRleCksIFtvbkRlbGV0ZSwgaW5kZXhdKTtcblxuICByZXR1cm4gKFxuICAgIDxTb3J0YWJsZUl0ZW0gaWQ9e2Ake2luZGV4fWB9IGlzU29ydGluZz17aXNTb3J0aW5nfT5cbiAgICAgIHtsaXN0ZW5lcnMgPT4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY3VzdG9tLXBhbGV0dGUtaW5wdXRfX2xlZnRcIj5cbiAgICAgICAgICAgIDxEcmFnSGFuZGxlIGNsYXNzTmFtZT1cImxheWVyX19kcmFnLWhhbmRsZVwiIHsuLi5saXN0ZW5lcnN9PlxuICAgICAgICAgICAgICA8YWN0aW9uSWNvbnMuc29ydCBoZWlnaHQ9XCIyMHB4XCIgLz5cbiAgICAgICAgICAgIDwvRHJhZ0hhbmRsZT5cbiAgICAgICAgICAgIDxDb2xvclN3YXRjaCBjb2xvcj17Y29sb3J9IG9uQ2xpY2s9e29uQ2xpY2tTd3RhY2h9IC8+XG4gICAgICAgICAgICB7Y29sb3JNYXAgJiYgY29sb3JNYXBbaW5kZXhdICYmIChcbiAgICAgICAgICAgICAgPENhdGVnb3JpY2FsU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlcz17c2VsZWN0ZWRWYWx1ZXN9XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzPXthbGxWYWx1ZXN9XG4gICAgICAgICAgICAgICAgYWRkQ29sb3JNYXBWYWx1ZT17YWRkQ29sb3JNYXBWYWx1ZX1cbiAgICAgICAgICAgICAgICByZW1vdmVDb2xvck1hcFZhbHVlPXtyZW1vdmVDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAgIHJlc2V0Q29sb3JNYXBWYWx1ZT17cmVzZXRDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAgIHNlbGVjdFJlc3RDb2xvck1hcFZhbHVlPXtzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZX1cbiAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY3VzdG9tLXBhbGV0dGUtaW5wdXRfX3JpZ2h0XCI+XG4gICAgICAgICAgICB7IWRpc2FibGVEZWxldGUgPyAoXG4gICAgICAgICAgICAgIDxEZWxldGVDb2xvclN0b3Agb25Db2xvckRlbGV0ZT17b25Db2xvckRlbGV0ZX0gSWNvbkNvbXBvbmVudD17YWN0aW9uSWNvbnMuZGVsZXRlfSAvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L1NvcnRhYmxlSXRlbT5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBCb3R0b21BY3Rpb24gPSAoe29uQ2FuY2VsLCBvbkNvbmZpcm19KSA9PiAoXG4gIDxTdHlsZWRCdXR0b25Db250YWluZXI+XG4gICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJjb25maXJtLWFwcGx5X19idXR0b25cIiBzbWFsbCBvbkNsaWNrPXtvbkNvbmZpcm19PlxuICAgICAgQ29uZmlybVxuICAgIDwvQnV0dG9uPlxuICAgIDxCdXR0b24gbGluayBzbWFsbCBvbkNsaWNrPXtvbkNhbmNlbH0+XG4gICAgICBDYW5jZWxcbiAgICA8L0J1dHRvbj5cbiAgPC9TdHlsZWRCdXR0b25Db250YWluZXI+XG4pO1xuXG5jb25zdCBTdHlsZWRDdXN0b21QYWxldHRlID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2N1c3RvbS1wYWxldHRlJ1xufSlgXG4gIG1hcmdpbi10b3A6IDhweDtcbmA7XG5cbmZ1bmN0aW9uIEN1c3RvbVBhbGV0dGVGYWN0b3J5KCk6IFJlYWN0LkZDPEN1c3RvbVBhbGV0dGVQcm9wcz4ge1xuICBjb25zdCBDdXN0b21QYWxldHRlOiBSZWFjdC5GQzxDdXN0b21QYWxldHRlUHJvcHM+ID0gKHtcbiAgICBvcmRpbmFsRG9tYWluLFxuICAgIGN1c3RvbVBhbGV0dGUsXG4gICAgc2V0Q29sb3JQYWxldHRlVUksXG4gICAgc2hvd1NrZXRjaGVyLFxuICAgIGFjdGlvbkljb25zID0gZGVmYXVsdEFjdGlvbkljb25zLFxuICAgIG9uQ2FuY2VsLFxuICAgIG9uQXBwbHlcbiAgfSkgPT4ge1xuICAgIGNvbnN0IFtpc1NvcnRpbmcsIHNldElzU29ydGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3Qge2NvbG9ycywgY29sb3JNYXB9ID0gY3VzdG9tUGFsZXR0ZTtcbiAgICBjb25zdCBjb2xvckJyZWFrcyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PlxuICAgICAgICBjb2xvck1hcFxuICAgICAgICAgID8gY3VzdG9tUGFsZXR0ZS50eXBlID09PSAnY3VzdG9tJ1xuICAgICAgICAgICAgPyBjb2xvck1hcFRvQ29sb3JCcmVha3MoY29sb3JNYXApXG4gICAgICAgICAgICA6IGNvbG9yTWFwVG9DYXRlZ29yaWNhbENvbG9yQnJlYWtzKGNvbG9yTWFwKVxuICAgICAgICAgIDogbnVsbCxcbiAgICAgIFtjdXN0b21QYWxldHRlLnR5cGUsIGNvbG9yTWFwXVxuICAgICk7XG5cbiAgICBjb25zdCBvblBpY2tlclVwZGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgY29sb3IgPT4ge1xuICAgICAgICBpZiAoY29sb3IgJiYgTnVtYmVyLmlzRmluaXRlKHNob3dTa2V0Y2hlcikpIHtcbiAgICAgICAgICBjb25zdCBuZXdDdXN0b21QYWxldHRlID0gdXBkYXRlQ3VzdG9tUGFsZXR0ZUNvbG9yKFxuICAgICAgICAgICAgY3VzdG9tUGFsZXR0ZSxcbiAgICAgICAgICAgIE51bWJlcihzaG93U2tldGNoZXIpLFxuICAgICAgICAgICAgY29sb3IuaGV4XG4gICAgICAgICAgKTtcbiAgICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgICBjdXN0b21QYWxldHRlOiBuZXdDdXN0b21QYWxldHRlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbY3VzdG9tUGFsZXR0ZSwgc2hvd1NrZXRjaGVyLCBzZXRDb2xvclBhbGV0dGVVSV1cbiAgICApO1xuICAgIGNvbnN0IG9uVG9nZ2xlU2tldGNoZXIgPSB1c2VDYWxsYmFjayhcbiAgICAgIHZhbCA9PiB7XG4gICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICBzaG93U2tldGNoZXI6IHZhbFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbc2V0Q29sb3JQYWxldHRlVUldXG4gICAgKTtcbiAgICBjb25zdCBvbkRlbGV0ZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgaW5kZXggPT4ge1xuICAgICAgICBjb25zdCBuZXdDdXN0b21QYWxldHRlID0gcmVtb3ZlQ3VzdG9tUGFsZXR0ZUNvbG9yKGN1c3RvbVBhbGV0dGUsIGluZGV4KTtcbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IG5ld0N1c3RvbVBhbGV0dGVcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgW2N1c3RvbVBhbGV0dGUsIHNldENvbG9yUGFsZXR0ZVVJXVxuICAgICk7XG5cbiAgICBjb25zdCBvbkFkZCA9IHVzZUNhbGxiYWNrKFxuICAgICAgaW5kZXggPT4ge1xuICAgICAgICAvLyBhZGQgY29sb3IgYXQgdGhlIGVuZFxuICAgICAgICBjb25zdCBuZXdDdXN0b21QYWxldHRlID0gYWRkQ3VzdG9tUGFsZXR0ZUNvbG9yKGN1c3RvbVBhbGV0dGUsIGluZGV4KTtcbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IG5ld0N1c3RvbVBhbGV0dGVcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgW2N1c3RvbVBhbGV0dGUsIHNldENvbG9yUGFsZXR0ZVVJXVxuICAgICk7XG5cbiAgICBjb25zdCBvbkFkZENhdGVnb3JpY2FsU3RlcCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIG9uQWRkKGNvbG9ycy5sZW5ndGggLSAxKTtcbiAgICB9LCBbY29sb3JzLmxlbmd0aCwgb25BZGRdKTtcblxuICAgIGNvbnN0IG9uU3dhdGNoQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBvblRvZ2dsZVNrZXRjaGVyKGZhbHNlKTtcbiAgICB9LCBbb25Ub2dnbGVTa2V0Y2hlcl0pO1xuXG4gICAgY29uc3Qgb25Db25maXJtID0gdXNlQ2FsbGJhY2soXG4gICAgICBldmVudCA9PiB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvbkNhbmNlbCgpO1xuICAgICAgICBvbkFwcGx5KGV2ZW50KTtcbiAgICAgIH0sXG4gICAgICBbb25DYW5jZWwsIG9uQXBwbHldXG4gICAgKTtcblxuICAgIGNvbnN0IG9uU29ydEVuZCA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGV2ZW50OiBEcmFnRW5kRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qge2FjdGl2ZSwgb3Zlcn0gPSBldmVudDtcbiAgICAgICAgaWYgKG92ZXIgJiYgYWN0aXZlLmlkICE9PSBvdmVyLmlkKSB7XG4gICAgICAgICAgY29uc3Qgb2xkSW5kZXggPSBjb2xvcnMuZmluZEluZGV4KChfLCBpbmRleCkgPT4gYCR7aW5kZXh9YCA9PT0gYWN0aXZlLmlkKTtcbiAgICAgICAgICBjb25zdCBuZXdJbmRleCA9IGNvbG9ycy5maW5kSW5kZXgoKF8sIGluZGV4KSA9PiBgJHtpbmRleH1gID09PSBvdmVyLmlkKTtcbiAgICAgICAgICBjb25zdCBuZXdDdXN0b21QYWxldHRlID0gc29ydEN1c3RvbVBhbGV0dGVDb2xvcihjdXN0b21QYWxldHRlLCBvbGRJbmRleCwgbmV3SW5kZXgpO1xuICAgICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IG5ld0N1c3RvbVBhbGV0dGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBzZXRJc1NvcnRpbmcoZmFsc2UpO1xuICAgICAgfSxcbiAgICAgIFtjb2xvcnMsIGN1c3RvbVBhbGV0dGUsIHNldElzU29ydGluZywgc2V0Q29sb3JQYWxldHRlVUldXG4gICAgKTtcblxuICAgIGNvbnN0IG9uU29ydFN0YXJ0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0SXNTb3J0aW5nKHRydWUpO1xuICAgIH0sIFtzZXRJc1NvcnRpbmddKTtcblxuICAgIGNvbnN0IGlucHV0Q29sb3JIZXggPSB1c2VDYWxsYmFjayhcbiAgICAgIChpbmRleCwgdmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgbmV3Q3VzdG9tUGFsZXR0ZSA9IHVwZGF0ZUN1c3RvbVBhbGV0dGVDb2xvcihjdXN0b21QYWxldHRlLCBpbmRleCwgdmFsdWUpO1xuICAgICAgICAvLyBzZXRDb2xvcnMobmV3Q29sb3JzKTtcbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IG5ld0N1c3RvbVBhbGV0dGVcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgW2N1c3RvbVBhbGV0dGUsIHNldENvbG9yUGFsZXR0ZVVJXVxuICAgICk7XG5cbiAgICBjb25zdCBlZGl0Q29sb3JNYXBWYWx1ZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgKHZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWN1c3RvbVBhbGV0dGUuY29sb3JNYXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3Q29sb3JNYXAgPSBjdXN0b21QYWxldHRlLmNvbG9yTWFwLm1hcChcbiAgICAgICAgICAoY20sIGkpID0+IChpID09PSBpbmRleCA/IFt2YWx1ZSwgY21bMV1dIDogY20pIGFzIFtzdHJpbmcsIHN0cmluZ11cbiAgICAgICAgKTtcblxuICAgICAgICAvLyBzb3J0IHRoZSB1c2VyIGlucHV0cyBpbiBjYXNlIHRoZSBicmVhayB2YWx1ZXMgYXJlIG5vdCBvcmRlcmVkXG4gICAgICAgIGNvbnN0IGJyZWFrcyA9IG5ld0NvbG9yTWFwXG4gICAgICAgICAgLm1hcChjbSA9PiBjbVswXSBhcyBzdHJpbmcgfCBudWxsKVxuICAgICAgICAgIC5zbGljZSgwLCAtMSlcbiAgICAgICAgICAuc29ydCgoYSwgYikgPT4gTnVtYmVyKGEpIC0gTnVtYmVyKGIpKVxuICAgICAgICAgIC5jb25jYXQobnVsbCk7XG4gICAgICAgIGNvbnN0IHNvcnRlZE5ld0NvbG9yTWFwOiBDb2xvck1hcCA9IG5ld0NvbG9yTWFwLm1hcCgoY20sIGkpID0+IFticmVha3NbaV0sIGNtWzFdXSk7XG5cbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IHtcbiAgICAgICAgICAgIC4uLmN1c3RvbVBhbGV0dGUsXG4gICAgICAgICAgICBjb2xvck1hcDogc29ydGVkTmV3Q29sb3JNYXBcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtzZXRDb2xvclBhbGV0dGVVSSwgY3VzdG9tUGFsZXR0ZV1cbiAgICApO1xuXG4gICAgLy8gcmVtb3ZlIGEgc2VsZWN0ZWQgY2F0ZWdvcnkgaXRlbSBmcm9tIGEgY29sb3IgbWFwXG4gICAgY29uc3QgcmVtb3ZlQ2F0ZWdvcmljYWxDb2xvck1hcFZhbHVlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFjb2xvck1hcCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZToge1xuICAgICAgICAgICAgLi4uY3VzdG9tUGFsZXR0ZSxcbiAgICAgICAgICAgIGNvbG9yTWFwOiByZW1vdmVDYXRlZ29yaWNhbFZhbHVlRnJvbUNvbG9yTWFwKGNvbG9yTWFwLCBpdGVtLCBpbmRleClcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtzZXRDb2xvclBhbGV0dGVVSSwgY3VzdG9tUGFsZXR0ZSwgY29sb3JNYXBdXG4gICAgKTtcblxuICAgIC8vIGFkZCBzZWxlY3RlZCBjYXRlZ29yaWNhbCBpdGVtcyB0byBhIGNvbG9yIG1hcFxuICAgIGNvbnN0IGFkZENhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGl0ZW1zLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICBjdXN0b21QYWxldHRlOiB7XG4gICAgICAgICAgICAuLi5jdXN0b21QYWxldHRlLFxuICAgICAgICAgICAgY29sb3JNYXA6IGFkZENhdGVnb3JpY2FsVmFsdWVzVG9Db2xvck1hcChjb2xvck1hcCwgaXRlbXMsIGluZGV4KVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgW3NldENvbG9yUGFsZXR0ZVVJLCBjdXN0b21QYWxldHRlLCBjb2xvck1hcF1cbiAgICApO1xuXG4gICAgLy8gcmVzZXQgYSBjb2xvciBtYXBcbiAgICBjb25zdCByZXNldENhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgaW5kZXggPT4ge1xuICAgICAgICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICBjdXN0b21QYWxldHRlOiB7XG4gICAgICAgICAgICAuLi5jdXN0b21QYWxldHRlLFxuICAgICAgICAgICAgY29sb3JNYXA6IHJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgoY29sb3JNYXAsIGluZGV4KVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgW3NldENvbG9yUGFsZXR0ZVVJLCBjdXN0b21QYWxldHRlLCBjb2xvck1hcF1cbiAgICApO1xuXG4gICAgLy8gc2VsZWN0IHRoZSByZXN0IHZhbHVlcyBmb3IgYSBjb2xvciBtYXBcbiAgICBjb25zdCBzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcCA9IHVzZUNhbGxiYWNrKFxuICAgICAgaW5kZXggPT4ge1xuICAgICAgICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICBjdXN0b21QYWxldHRlOiB7XG4gICAgICAgICAgICAuLi5jdXN0b21QYWxldHRlLFxuICAgICAgICAgICAgY29sb3JNYXA6IHNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleChjb2xvck1hcCwgaW5kZXgsIG9yZGluYWxEb21haW4pXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbc2V0Q29sb3JQYWxldHRlVUksIGN1c3RvbVBhbGV0dGUsIGNvbG9yTWFwLCBvcmRpbmFsRG9tYWluXVxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEN1c3RvbVBhbGV0dGU+XG4gICAgICAgIDxXcmFwcGVkU29ydGFibGVDb250YWluZXJcbiAgICAgICAgICBjbGFzc05hbWU9XCJjdXN0b20tcGFsZXR0ZV9fc29ydGFibGUtY29udGFpbmVyXCJcbiAgICAgICAgICBvblNvcnRFbmQ9e29uU29ydEVuZH1cbiAgICAgICAgICBvblNvcnRTdGFydD17b25Tb3J0U3RhcnR9XG4gICAgICAgID5cbiAgICAgICAgICB7Y29sb3JzLm1hcCgoY29sb3IsIGluZGV4KSA9PlxuICAgICAgICAgICAgY3VzdG9tUGFsZXR0ZS50eXBlID09PSAnY3VzdG9tJyA/IChcbiAgICAgICAgICAgICAgPEN1c3RvbVBhbGV0dGVJbnB1dFxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgY29sb3JCcmVha3M9e2NvbG9yQnJlYWtzfVxuICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICBpc1NvcnRpbmc9e2lzU29ydGluZ31cbiAgICAgICAgICAgICAgICBjb2xvcj17Y29sb3J9XG4gICAgICAgICAgICAgICAgaW5wdXRDb2xvckhleD17aW5wdXRDb2xvckhleH1cbiAgICAgICAgICAgICAgICBkaXNhYmxlQXBwZW5kPXtjb2xvcnMubGVuZ3RoID49IDIwfVxuICAgICAgICAgICAgICAgIGRpc2FibGVEZWxldGU9e2NvbG9ycy5sZW5ndGggPD0gMn1cbiAgICAgICAgICAgICAgICBhY3Rpb25JY29ucz17YWN0aW9uSWNvbnN9XG4gICAgICAgICAgICAgICAgb25BZGQ9e29uQWRkfVxuICAgICAgICAgICAgICAgIG9uRGVsZXRlPXtvbkRlbGV0ZX1cbiAgICAgICAgICAgICAgICBvblRvZ2dsZVNrZXRjaGVyPXtvblRvZ2dsZVNrZXRjaGVyfVxuICAgICAgICAgICAgICAgIGVkaXRDb2xvck1hcFZhbHVlPXtlZGl0Q29sb3JNYXBWYWx1ZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIG9yZGluYWxEb21haW4gJiYgKFxuICAgICAgICAgICAgICAgIDxDYXRlZ29yaWNhbEN1c3RvbVBhbGV0dGVJbnB1dFxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgIGNvbG9yTWFwPXtjb2xvck1hcH1cbiAgICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgIGlzU29ydGluZz17aXNTb3J0aW5nfVxuICAgICAgICAgICAgICAgICAgY29sb3I9e2NvbG9yfVxuICAgICAgICAgICAgICAgICAgYWN0aW9uSWNvbnM9e2FjdGlvbkljb25zfVxuICAgICAgICAgICAgICAgICAgb25BZGQ9e29uQWRkfVxuICAgICAgICAgICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZURlbGV0ZT17Y29sb3JzLmxlbmd0aCA8PSAyfVxuICAgICAgICAgICAgICAgICAgb25Ub2dnbGVTa2V0Y2hlcj17b25Ub2dnbGVTa2V0Y2hlcn1cbiAgICAgICAgICAgICAgICAgIGFkZENvbG9yTWFwVmFsdWU9e2FkZENhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZX1cbiAgICAgICAgICAgICAgICAgIHJlbW92ZUNvbG9yTWFwVmFsdWU9e3JlbW92ZUNhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZX1cbiAgICAgICAgICAgICAgICAgIHJlc2V0Q29sb3JNYXBWYWx1ZT17cmVzZXRDYXRlZ29yaWNhbENvbG9yTWFwVmFsdWV9XG4gICAgICAgICAgICAgICAgICBzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZT17c2VsZWN0UmVzdENhdGVnb3JpY2FsQ29sb3JNYXB9XG4gICAgICAgICAgICAgICAgICBhbGxWYWx1ZXM9e29yZGluYWxEb21haW59XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICl9XG4gICAgICAgIDwvV3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyPlxuICAgICAgICB7Y3VzdG9tUGFsZXR0ZS50eXBlID09PSAnY3VzdG9tT3JkaW5hbCcgJiYgKFxuICAgICAgICAgIDxTdHlsZWRBZGRTdGVwQ29udGFpbmVyPlxuICAgICAgICAgICAgPEFkZENvbG9yU3RvcCBvbkNvbG9yQWRkPXtvbkFkZENhdGVnb3JpY2FsU3RlcH0gSWNvbkNvbXBvbmVudD17YWN0aW9uSWNvbnMuYWRkfSAvPlxuICAgICAgICAgICAgPEJ1dHRvbiBsaW5rIHNpemU9XCJzbWFsXCIgb25DbGljaz17b25BZGRDYXRlZ29yaWNhbFN0ZXB9PlxuICAgICAgICAgICAgICBBZGQgU3RlcFxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9TdHlsZWRBZGRTdGVwQ29udGFpbmVyPlxuICAgICAgICApfVxuICAgICAgICA8RGl2aWRlckxpbmUgLz5cbiAgICAgICAgey8qIENhbmNlbCBvciBDb25maXJtIEJ1dHRvbnMgKi99XG4gICAgICAgIDxCb3R0b21BY3Rpb24gb25DYW5jZWw9e29uQ2FuY2VsfSBvbkNvbmZpcm09e29uQ29uZmlybX0gLz5cbiAgICAgICAgPFBvcnRhbGVkIGlzT3BlbmVkPXtzaG93U2tldGNoZXIgIT09IGZhbHNlfSBsZWZ0PXsyODB9IHRvcD17LTMwMH0gb25DbG9zZT17b25Td2F0Y2hDbG9zZX0+XG4gICAgICAgICAgPEN1c3RvbVBpY2tlciBjb2xvcj17Y29sb3JzW051bWJlcihzaG93U2tldGNoZXIpXX0gb25DaGFuZ2U9e29uUGlja2VyVXBkYXRlfSAvPlxuICAgICAgICA8L1BvcnRhbGVkPlxuICAgICAgPC9TdHlsZWRDdXN0b21QYWxldHRlPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIEN1c3RvbVBhbGV0dGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVBhbGV0dGVGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxXQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFTQSxJQUFBRyxLQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFKLE9BQUE7QUFTQSxJQUFBSyxTQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxpQkFBQSxHQUFBTCx1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVEsU0FBQSxHQUFBVCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVMsa0JBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLFVBQUEsR0FBQVgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFXLGdCQUFBLEdBQUFaLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBWSxhQUFBLEdBQUFWLHVCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBYSxZQUFBLEdBQUFiLE9BQUE7QUFDQSxJQUFBYyxVQUFBLEdBQUFkLE9BQUE7QUFFQSxJQUFBZSxNQUFBLEdBQUFmLE9BQUE7QUFjQSxJQUFBZ0IsTUFBQSxHQUFBaEIsT0FBQTtBQUVBLElBQUFpQixhQUFBLEdBQUFsQixzQkFB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
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { ColorChangeHandler } from 'react-color';
3
3
  import { HexColor } from '@kepler.gl/types';
4
- declare type CustomPickerProps = {
4
+ type CustomPickerProps = {
5
5
  color: HexColor;
6
6
  theme: {
7
7
  panelBackground: string;
@@ -3,7 +3,7 @@ import DatasetLayerSectionFactory from './dataset-layer-section';
3
3
  import { Layer, LayerClassesType } from '@kepler.gl/layers';
4
4
  import { UIStateActions, VisStateActions, ActionHandler, MapStateActions } from '@kepler.gl/actions';
5
5
  import { Datasets } from '@kepler.gl/table';
6
- declare type DatasetLayerGroupProps = {
6
+ type DatasetLayerGroupProps = {
7
7
  datasets: Datasets;
8
8
  layers: Layer[];
9
9
  layerOrder: string[];
@@ -4,7 +4,7 @@ import LayerListFactory from './layer-list';
4
4
  import { Layer, LayerClassesType } from '@kepler.gl/layers';
5
5
  import { UIStateActions, ActionHandler, VisStateActions, MapStateActions } from '@kepler.gl/actions';
6
6
  import { KeplerTable, Datasets } from '@kepler.gl/table';
7
- declare type DatasetLayerSectionProps = {
7
+ type DatasetLayerSectionProps = {
8
8
  datasets: Datasets;
9
9
  dataset: KeplerTable;
10
10
  layers: Layer[];
@@ -15,7 +15,9 @@ var _sourceDataCatalog = _interopRequireDefault(require("../common/source-data-c
15
15
  var _layerList = _interopRequireDefault(require("./layer-list"));
16
16
  var _utils = require("@kepler.gl/utils");
17
17
  var _excluded = ["rasterTile"],
18
- _excluded2 = ["wms"];
18
+ _excluded2 = ["wms"],
19
+ _excluded3 = ["flow"],
20
+ _excluded4 = ["bitmap"];
19
21
  var _templateObject; // SPDX-License-Identifier: MIT
20
22
  // Copyright contributors to the kepler.gl project
21
23
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
@@ -45,6 +47,8 @@ function DatasetLayerSectionFactory(SourceDataCatalog, LayerList) {
45
47
  // temp patch to hide layers that are in development
46
48
  var enableRasterTileLayer = (0, _utils.getApplicationConfig)().enableRasterTileLayer;
47
49
  var enableWMSLayer = (0, _utils.getApplicationConfig)().enableWMSLayer;
50
+ var enableFlowLayer = (0, _utils.getApplicationConfig)().enableFlowLayer;
51
+ var enableBitmapLayer = (0, _utils.getApplicationConfig)().enableBitmapLayer;
48
52
  var filteredLayerClasses = (0, _react.useMemo)(function () {
49
53
  var filteredClasses = layerClasses;
50
54
  if (!enableRasterTileLayer) {
@@ -59,8 +63,20 @@ function DatasetLayerSectionFactory(SourceDataCatalog, LayerList) {
59
63
  _rest = (0, _objectWithoutProperties2["default"])(_filteredClasses2, _excluded2);
60
64
  filteredClasses = _rest;
61
65
  }
66
+ if (!enableFlowLayer) {
67
+ var _filteredClasses3 = filteredClasses,
68
+ _flow = _filteredClasses3.flow,
69
+ _rest2 = (0, _objectWithoutProperties2["default"])(_filteredClasses3, _excluded3);
70
+ filteredClasses = _rest2;
71
+ }
72
+ if (!enableBitmapLayer) {
73
+ var _filteredClasses4 = filteredClasses,
74
+ _bitmap = _filteredClasses4.bitmap,
75
+ _rest3 = (0, _objectWithoutProperties2["default"])(_filteredClasses4, _excluded4);
76
+ filteredClasses = _rest3;
77
+ }
62
78
  return filteredClasses;
63
- }, [enableRasterTileLayer, enableWMSLayer, layerClasses]);
79
+ }, [enableRasterTileLayer, enableWMSLayer, enableFlowLayer, enableBitmapLayer, layerClasses]);
64
80
  return /*#__PURE__*/_react["default"].createElement(DatasetLayerSectionWrapper, null, /*#__PURE__*/_react["default"].createElement(SourceDataCatalog, {
65
81
  datasets: datasetCatalog,
66
82
  showDatasetTable: showDatasetTable,
@@ -81,4 +97,4 @@ function DatasetLayerSectionFactory(SourceDataCatalog, LayerList) {
81
97
  return DatasetLayerSection;
82
98
  }
83
99
  var _default = exports["default"] = DatasetLayerSectionFactory;
84
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc291cmNlRGF0YUNhdGFsb2ciLCJfbGF5ZXJMaXN0IiwiX3V0aWxzIiwiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl90ZW1wbGF0ZU9iamVjdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkRhdGFzZXRMYXllclNlY3Rpb25XcmFwcGVyIiwic3R5bGVkIiwiZGl2IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsIkRhdGFzZXRMYXllclNlY3Rpb25GYWN0b3J5IiwiZGVwcyIsIlNvdXJjZURhdGFDYXRhbG9nRmFjdG9yeSIsIkxheWVyTGlzdEZhY3RvcnkiLCJTb3VyY2VEYXRhQ2F0YWxvZyIsIkxheWVyTGlzdCIsIkRhdGFzZXRMYXllclNlY3Rpb24iLCJwcm9wcyIsImRhdGFzZXQiLCJkYXRhc2V0cyIsInNob3dEYXRhc2V0VGFibGUiLCJsYXllcnMiLCJ1cGRhdGVUYWJsZUNvbG9yIiwic2hvd0RlbGV0ZURhdGFzZXQiLCJyZW1vdmVEYXRhc2V0IiwibGF5ZXJPcmRlciIsImxheWVyQ2xhc3NlcyIsInVpU3RhdGVBY3Rpb25zIiwidmlzU3RhdGVBY3Rpb25zIiwibWFwU3RhdGVBY3Rpb25zIiwiZGF0YXNldENhdGFsb2ciLCJ1c2VNZW1vIiwiX2RlZmluZVByb3BlcnR5MiIsImlkIiwiZW5hYmxlUmFzdGVyVGlsZUxheWVyIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJlbmFibGVXTVNMYXllciIsImZpbHRlcmVkTGF5ZXJDbGFzc2VzIiwiZmlsdGVyZWRDbGFzc2VzIiwiX2ZpbHRlcmVkQ2xhc3NlcyIsIl9yYXN0ZXJUaWxlIiwicmFzdGVyVGlsZSIsInJlc3QiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiX2ZpbHRlcmVkQ2xhc3NlczIiLCJfd21zIiwid21zIiwiY3JlYXRlRWxlbWVudCIsImlzU29ydGFibGUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2lkZS1wYW5lbC9sYXllci1wYW5lbC9kYXRhc2V0LWxheWVyLXNlY3Rpb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgU291cmNlRGF0YUNhdGFsb2dGYWN0b3J5IGZyb20gJy4uL2NvbW1vbi9zb3VyY2UtZGF0YS1jYXRhbG9nJztcbmltcG9ydCBMYXllckxpc3RGYWN0b3J5IGZyb20gJy4vbGF5ZXItbGlzdCc7XG5pbXBvcnQge0xheWVyLCBMYXllckNsYXNzZXNUeXBlfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge1VJU3RhdGVBY3Rpb25zLCBBY3Rpb25IYW5kbGVyLCBWaXNTdGF0ZUFjdGlvbnMsIE1hcFN0YXRlQWN0aW9uc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7S2VwbGVyVGFibGUsIERhdGFzZXRzfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7Z2V0QXBwbGljYXRpb25Db25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG50eXBlIERhdGFzZXRMYXllclNlY3Rpb25Qcm9wcyA9IHtcbiAgZGF0YXNldHM6IERhdGFzZXRzO1xuICBkYXRhc2V0OiBLZXBsZXJUYWJsZTtcbiAgbGF5ZXJzOiBMYXllcltdO1xuICBsYXllck9yZGVyOiBzdHJpbmdbXTtcbiAgbGF5ZXJDbGFzc2VzOiBMYXllckNsYXNzZXNUeXBlO1xuICBzaG93RGVsZXRlRGF0YXNldDogYm9vbGVhbjtcbiAgc2hvd0RhdGFzZXRUYWJsZTogQWN0aW9uSGFuZGxlcjx0eXBlb2YgVmlzU3RhdGVBY3Rpb25zLnNob3dEYXRhc2V0VGFibGU+O1xuICB1cGRhdGVUYWJsZUNvbG9yOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnMudXBkYXRlVGFibGVDb2xvcj47XG4gIHJlbW92ZURhdGFzZXQ6IEFjdGlvbkhhbmRsZXI8dHlwZW9mIFVJU3RhdGVBY3Rpb25zLm9wZW5EZWxldGVNb2RhbD47XG4gIHVpU3RhdGVBY3Rpb25zOiB0eXBlb2YgVUlTdGF0ZUFjdGlvbnM7XG4gIHZpc1N0YXRlQWN0aW9uczogdHlwZW9mIFZpc1N0YXRlQWN0aW9ucztcbiAgbWFwU3RhdGVBY3Rpb25zOiB0eXBlb2YgTWFwU3RhdGVBY3Rpb25zO1xufTtcblxuY29uc3QgRGF0YXNldExheWVyU2VjdGlvbldyYXBwZXIgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnZGF0YXNldC1sYXllci1zZWN0aW9uJ1xufSlgXG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG5gO1xuXG5EYXRhc2V0TGF5ZXJTZWN0aW9uRmFjdG9yeS5kZXBzID0gW1NvdXJjZURhdGFDYXRhbG9nRmFjdG9yeSwgTGF5ZXJMaXN0RmFjdG9yeV07XG5cbmZ1bmN0aW9uIERhdGFzZXRMYXllclNlY3Rpb25GYWN0b3J5KFxuICBTb3VyY2VEYXRhQ2F0YWxvZzogUmV0dXJuVHlwZTx0eXBlb2YgU291cmNlRGF0YUNhdGFsb2dGYWN0b3J5PixcbiAgTGF5ZXJMaXN0OiBSZXR1cm5UeXBlPHR5cGVvZiBMYXllckxpc3RGYWN0b3J5PlxuKSB7XG4gIGNvbnN0IERhdGFzZXRMYXllclNlY3Rpb246IFJlYWN0LkZDPERhdGFzZXRMYXllclNlY3Rpb25Qcm9wcz4gPSBwcm9wcyA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgZGF0YXNldCxcbiAgICAgIGRhdGFzZXRzLFxuICAgICAgc2hvd0RhdGFzZXRUYWJsZSxcbiAgICAgIGxheWVycyxcbiAgICAgIHVwZGF0ZVRhYmxlQ29sb3IsXG4gICAgICBzaG93RGVsZXRlRGF0YXNldCxcbiAgICAgIHJlbW92ZURhdGFzZXQsXG4gICAgICBsYXllck9yZGVyLFxuICAgICAgbGF5ZXJDbGFzc2VzLFxuICAgICAgdWlTdGF0ZUFjdGlvbnMsXG4gICAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgICBtYXBTdGF0ZUFjdGlvbnNcbiAgICB9ID0gcHJvcHM7XG5cbiAgICBjb25zdCBkYXRhc2V0Q2F0YWxvZyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgcmV0dXJuIHtbZGF0YXNldC5pZF06IGRhdGFzZXR9O1xuICAgIH0sIFtkYXRhc2V0XSk7XG5cbiAgICAvLyB0ZW1wIHBhdGNoIHRvIGhpZGUgbGF5ZXJzIHRoYXQgYXJlIGluIGRldmVsb3BtZW50XG4gICAgY29uc3QgZW5hYmxlUmFzdGVyVGlsZUxheWVyID0gZ2V0QXBwbGljYXRpb25Db25maWcoKS5lbmFibGVSYXN0ZXJUaWxlTGF5ZXI7XG4gICAgY29uc3QgZW5hYmxlV01TTGF5ZXIgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmVuYWJsZVdNU0xheWVyO1xuICAgIGNvbnN0IGZpbHRlcmVkTGF5ZXJDbGFzc2VzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBsZXQgZmlsdGVyZWRDbGFzc2VzID0gbGF5ZXJDbGFzc2VzO1xuICAgICAgaWYgKCFlbmFibGVSYXN0ZXJUaWxlTGF5ZXIpIHtcbiAgICAgICAgY29uc3Qge3Jhc3RlclRpbGU6IF9yYXN0ZXJUaWxlLCAuLi5yZXN0fSA9IGZpbHRlcmVkQ2xhc3NlcztcbiAgICAgICAgZmlsdGVyZWRDbGFzc2VzID0gcmVzdCBhcyBMYXllckNsYXNzZXNUeXBlO1xuICAgICAgfVxuICAgICAgaWYgKCFlbmFibGVXTVNMYXllcikge1xuICAgICAgICBjb25zdCB7d21zOiBfd21zLCAuLi5yZXN0fSA9IGZpbHRlcmVkQ2xhc3NlcztcbiAgICAgICAgZmlsdGVyZWRDbGFzc2VzID0gcmVzdCBhcyBMYXllckNsYXNzZXNUeXBlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpbHRlcmVkQ2xhc3NlcyBhcyBMYXllckNsYXNzZXNUeXBlO1xuICAgIH0sIFtlbmFibGVSYXN0ZXJUaWxlTGF5ZXIsIGVuYWJsZVdNU0xheWVyLCBsYXllckNsYXNzZXNdKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8RGF0YXNldExheWVyU2VjdGlvbldyYXBwZXI+XG4gICAgICAgIDxTb3VyY2VEYXRhQ2F0YWxvZ1xuICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0Q2F0YWxvZ31cbiAgICAgICAgICBzaG93RGF0YXNldFRhYmxlPXtzaG93RGF0YXNldFRhYmxlfVxuICAgICAgICAgIHVwZGF0ZVRhYmxlQ29sb3I9e3VwZGF0ZVRhYmxlQ29sb3J9XG4gICAgICAgICAgcmVtb3ZlRGF0YXNldD17cmVtb3ZlRGF0YXNldH1cbiAgICAgICAgICBzaG93RGVsZXRlRGF0YXNldD17c2hvd0RlbGV0ZURhdGFzZXR9XG4gICAgICAgIC8+XG4gICAgICAgIDxMYXllckxpc3RcbiAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgbGF5ZXJPcmRlcj17bGF5ZXJPcmRlcn1cbiAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICBsYXllckNsYXNzZXM9e2ZpbHRlcmVkTGF5ZXJDbGFzc2VzfVxuICAgICAgICAgIHVpU3RhdGVBY3Rpb25zPXt1aVN0YXRlQWN0aW9uc31cbiAgICAgICAgICB2aXNTdGF0ZUFjdGlvbnM9e3Zpc1N0YXRlQWN0aW9uc31cbiAgICAgICAgICBtYXBTdGF0ZUFjdGlvbnM9e21hcFN0YXRlQWN0aW9uc31cbiAgICAgICAgICBpc1NvcnRhYmxlPXtmYWxzZX1cbiAgICAgICAgLz5cbiAgICAgIDwvRGF0YXNldExheWVyU2VjdGlvbldyYXBwZXI+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gRGF0YXNldExheWVyU2VjdGlvbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGF0YXNldExheWVyU2VjdGlvbkZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLGtCQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFJQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFBc0QsSUFBQU0sU0FBQTtFQUFBQyxVQUFBO0FBQUEsSUFBQUMsZUFBQSxFQVh0RDtBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFYLHdCQUFBVyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFB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
100
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc291cmNlRGF0YUNhdGFsb2ciLCJfbGF5ZXJMaXN0IiwiX3V0aWxzIiwiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl9leGNsdWRlZDMiLCJfZXhjbHVkZWQ0IiwiX3RlbXBsYXRlT2JqZWN0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiRGF0YXNldExheWVyU2VjdGlvbldyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJhdHRycyIsImNsYXNzTmFtZSIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwiRGF0YXNldExheWVyU2VjdGlvbkZhY3RvcnkiLCJkZXBzIiwiU291cmNlRGF0YUNhdGFsb2dGYWN0b3J5IiwiTGF5ZXJMaXN0RmFjdG9yeSIsIlNvdXJjZURhdGFDYXRhbG9nIiwiTGF5ZXJMaXN0IiwiRGF0YXNldExheWVyU2VjdGlvbiIsInByb3BzIiwiZGF0YXNldCIsImRhdGFzZXRzIiwic2hvd0RhdGFzZXRUYWJsZSIsImxheWVycyIsInVwZGF0ZVRhYmxlQ29sb3IiLCJzaG93RGVsZXRlRGF0YXNldCIsInJlbW92ZURhdGFzZXQiLCJsYXllck9yZGVyIiwibGF5ZXJDbGFzc2VzIiwidWlTdGF0ZUFjdGlvbnMiLCJ2aXNTdGF0ZUFjdGlvbnMiLCJtYXBTdGF0ZUFjdGlvbnMiLCJkYXRhc2V0Q2F0YWxvZyIsInVzZU1lbW8iLCJfZGVmaW5lUHJvcGVydHkyIiwiaWQiLCJlbmFibGVSYXN0ZXJUaWxlTGF5ZXIiLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsImVuYWJsZVdNU0xheWVyIiwiZW5hYmxlRmxvd0xheWVyIiwiZW5hYmxlQml0bWFwTGF5ZXIiLCJmaWx0ZXJlZExheWVyQ2xhc3NlcyIsImZpbHRlcmVkQ2xhc3NlcyIsIl9maWx0ZXJlZENsYXNzZXMiLCJfcmFzdGVyVGlsZSIsInJhc3RlclRpbGUiLCJyZXN0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsIl9maWx0ZXJlZENsYXNzZXMyIiwiX3dtcyIsIndtcyIsIl9maWx0ZXJlZENsYXNzZXMzIiwiX2Zsb3ciLCJmbG93IiwiX2ZpbHRlcmVkQ2xhc3NlczQiLCJfYml0bWFwIiwiYml0bWFwIiwiY3JlYXRlRWxlbWVudCIsImlzU29ydGFibGUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2lkZS1wYW5lbC9sYXllci1wYW5lbC9kYXRhc2V0LWxheWVyLXNlY3Rpb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgU291cmNlRGF0YUNhdGFsb2dGYWN0b3J5IGZyb20gJy4uL2NvbW1vbi9zb3VyY2UtZGF0YS1jYXRhbG9nJztcbmltcG9ydCBMYXllckxpc3RGYWN0b3J5IGZyb20gJy4vbGF5ZXItbGlzdCc7XG5pbXBvcnQge0xheWVyLCBMYXllckNsYXNzZXNUeXBlfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge1VJU3RhdGVBY3Rpb25zLCBBY3Rpb25IYW5kbGVyLCBWaXNTdGF0ZUFjdGlvbnMsIE1hcFN0YXRlQWN0aW9uc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7S2VwbGVyVGFibGUsIERhdGFzZXRzfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7Z2V0QXBwbGljYXRpb25Db25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG50eXBlIERhdGFzZXRMYXllclNlY3Rpb25Qcm9wcyA9IHtcbiAgZGF0YXNldHM6IERhdGFzZXRzO1xuICBkYXRhc2V0OiBLZXBsZXJUYWJsZTtcbiAgbGF5ZXJzOiBMYXllcltdO1xuICBsYXllck9yZGVyOiBzdHJpbmdbXTtcbiAgbGF5ZXJDbGFzc2VzOiBMYXllckNsYXNzZXNUeXBlO1xuICBzaG93RGVsZXRlRGF0YXNldDogYm9vbGVhbjtcbiAgc2hvd0RhdGFzZXRUYWJsZTogQWN0aW9uSGFuZGxlcjx0eXBlb2YgVmlzU3RhdGVBY3Rpb25zLnNob3dEYXRhc2V0VGFibGU+O1xuICB1cGRhdGVUYWJsZUNvbG9yOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnMudXBkYXRlVGFibGVDb2xvcj47XG4gIHJlbW92ZURhdGFzZXQ6IEFjdGlvbkhhbmRsZXI8dHlwZW9mIFVJU3RhdGVBY3Rpb25zLm9wZW5EZWxldGVNb2RhbD47XG4gIHVpU3RhdGVBY3Rpb25zOiB0eXBlb2YgVUlTdGF0ZUFjdGlvbnM7XG4gIHZpc1N0YXRlQWN0aW9uczogdHlwZW9mIFZpc1N0YXRlQWN0aW9ucztcbiAgbWFwU3RhdGVBY3Rpb25zOiB0eXBlb2YgTWFwU3RhdGVBY3Rpb25zO1xufTtcblxuY29uc3QgRGF0YXNldExheWVyU2VjdGlvbldyYXBwZXIgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnZGF0YXNldC1sYXllci1zZWN0aW9uJ1xufSlgXG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG5gO1xuXG5EYXRhc2V0TGF5ZXJTZWN0aW9uRmFjdG9yeS5kZXBzID0gW1NvdXJjZURhdGFDYXRhbG9nRmFjdG9yeSwgTGF5ZXJMaXN0RmFjdG9yeV07XG5cbmZ1bmN0aW9uIERhdGFzZXRMYXllclNlY3Rpb25GYWN0b3J5KFxuICBTb3VyY2VEYXRhQ2F0YWxvZzogUmV0dXJuVHlwZTx0eXBlb2YgU291cmNlRGF0YUNhdGFsb2dGYWN0b3J5PixcbiAgTGF5ZXJMaXN0OiBSZXR1cm5UeXBlPHR5cGVvZiBMYXllckxpc3RGYWN0b3J5PlxuKSB7XG4gIGNvbnN0IERhdGFzZXRMYXllclNlY3Rpb246IFJlYWN0LkZDPERhdGFzZXRMYXllclNlY3Rpb25Qcm9wcz4gPSBwcm9wcyA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgZGF0YXNldCxcbiAgICAgIGRhdGFzZXRzLFxuICAgICAgc2hvd0RhdGFzZXRUYWJsZSxcbiAgICAgIGxheWVycyxcbiAgICAgIHVwZGF0ZVRhYmxlQ29sb3IsXG4gICAgICBzaG93RGVsZXRlRGF0YXNldCxcbiAgICAgIHJlbW92ZURhdGFzZXQsXG4gICAgICBsYXllck9yZGVyLFxuICAgICAgbGF5ZXJDbGFzc2VzLFxuICAgICAgdWlTdGF0ZUFjdGlvbnMsXG4gICAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgICBtYXBTdGF0ZUFjdGlvbnNcbiAgICB9ID0gcHJvcHM7XG5cbiAgICBjb25zdCBkYXRhc2V0Q2F0YWxvZyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgcmV0dXJuIHtbZGF0YXNldC5pZF06IGRhdGFzZXR9O1xuICAgIH0sIFtkYXRhc2V0XSk7XG5cbiAgICAvLyB0ZW1wIHBhdGNoIHRvIGhpZGUgbGF5ZXJzIHRoYXQgYXJlIGluIGRldmVsb3BtZW50XG4gICAgY29uc3QgZW5hYmxlUmFzdGVyVGlsZUxheWVyID0gZ2V0QXBwbGljYXRpb25Db25maWcoKS5lbmFibGVSYXN0ZXJUaWxlTGF5ZXI7XG4gICAgY29uc3QgZW5hYmxlV01TTGF5ZXIgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmVuYWJsZVdNU0xheWVyO1xuICAgIGNvbnN0IGVuYWJsZUZsb3dMYXllciA9IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuZW5hYmxlRmxvd0xheWVyO1xuICAgIGNvbnN0IGVuYWJsZUJpdG1hcExheWVyID0gZ2V0QXBwbGljYXRpb25Db25maWcoKS5lbmFibGVCaXRtYXBMYXllcjtcblxuICAgIGNvbnN0IGZpbHRlcmVkTGF5ZXJDbGFzc2VzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBsZXQgZmlsdGVyZWRDbGFzc2VzID0gbGF5ZXJDbGFzc2VzO1xuICAgICAgaWYgKCFlbmFibGVSYXN0ZXJUaWxlTGF5ZXIpIHtcbiAgICAgICAgY29uc3Qge3Jhc3RlclRpbGU6IF9yYXN0ZXJUaWxlLCAuLi5yZXN0fSA9IGZpbHRlcmVkQ2xhc3NlcztcbiAgICAgICAgZmlsdGVyZWRDbGFzc2VzID0gcmVzdCBhcyBMYXllckNsYXNzZXNUeXBlO1xuICAgICAgfVxuICAgICAgaWYgKCFlbmFibGVXTVNMYXllcikge1xuICAgICAgICBjb25zdCB7d21zOiBfd21zLCAuLi5yZXN0fSA9IGZpbHRlcmVkQ2xhc3NlcztcbiAgICAgICAgZmlsdGVyZWRDbGFzc2VzID0gcmVzdCBhcyBMYXllckNsYXNzZXNUeXBlO1xuICAgICAgfVxuICAgICAgaWYgKCFlbmFibGVGbG93TGF5ZXIpIHtcbiAgICAgICAgY29uc3Qge2Zsb3c6IF9mbG93LCAuLi5yZXN0fSA9IGZpbHRlcmVkQ2xhc3NlcztcbiAgICAgICAgZmlsdGVyZWRDbGFzc2VzID0gcmVzdCBhcyBMYXllckNsYXNzZXNUeXBlO1xuICAgICAgfVxuICAgICAgaWYgKCFlbmFibGVCaXRtYXBMYXllcikge1xuICAgICAgICBjb25zdCB7Yml0bWFwOiBfYml0bWFwLCAuLi5yZXN0fSA9IGZpbHRlcmVkQ2xhc3NlcztcbiAgICAgICAgZmlsdGVyZWRDbGFzc2VzID0gcmVzdCBhcyBMYXllckNsYXNzZXNUeXBlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpbHRlcmVkQ2xhc3NlcyBhcyBMYXllckNsYXNzZXNUeXBlO1xuICAgIH0sIFtlbmFibGVSYXN0ZXJUaWxlTGF5ZXIsIGVuYWJsZVdNU0xheWVyLCBlbmFibGVGbG93TGF5ZXIsIGVuYWJsZUJpdG1hcExheWVyLCBsYXllckNsYXNzZXNdKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8RGF0YXNldExheWVyU2VjdGlvbldyYXBwZXI+XG4gICAgICAgIDxTb3VyY2VEYXRhQ2F0YWxvZ1xuICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0Q2F0YWxvZ31cbiAgICAgICAgICBzaG93RGF0YXNldFRhYmxlPXtzaG93RGF0YXNldFRhYmxlfVxuICAgICAgICAgIHVwZGF0ZVRhYmxlQ29sb3I9e3VwZGF0ZVRhYmxlQ29sb3J9XG4gICAgICAgICAgcmVtb3ZlRGF0YXNldD17cmVtb3ZlRGF0YXNldH1cbiAgICAgICAgICBzaG93RGVsZXRlRGF0YXNldD17c2hvd0RlbGV0ZURhdGFzZXR9XG4gICAgICAgIC8+XG4gICAgICAgIDxMYXllckxpc3RcbiAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgbGF5ZXJPcmRlcj17bGF5ZXJPcmRlcn1cbiAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICBsYXllckNsYXNzZXM9e2ZpbHRlcmVkTGF5ZXJDbGFzc2VzfVxuICAgICAgICAgIHVpU3RhdGVBY3Rpb25zPXt1aVN0YXRlQWN0aW9uc31cbiAgICAgICAgICB2aXNTdGF0ZUFjdGlvbnM9e3Zpc1N0YXRlQWN0aW9uc31cbiAgICAgICAgICBtYXBTdGF0ZUFjdGlvbnM9e21hcFN0YXRlQWN0aW9uc31cbiAgICAgICAgICBpc1NvcnRhYmxlPXtmYWxzZX1cbiAgICAgICAgLz5cbiAgICAgIDwvRGF0YXNldExheWVyU2VjdGlvbldyYXBwZXI+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gRGF0YXNldExheWVyU2VjdGlvbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGF0YXNldExheWVyU2VjdGlvbkZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJB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