@carto/kepler.gl 0.0.73 → 0.0.75-alpha.deckv9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/dist/actions/action-wrapper.js +20 -48
  2. package/dist/actions/actions.js +10 -19
  3. package/dist/actions/identity-actions.js +8 -17
  4. package/dist/actions/index.js +7 -24
  5. package/dist/actions/map-state-actions.js +10 -19
  6. package/dist/actions/map-style-actions.js +20 -35
  7. package/dist/actions/provider-actions.js +26 -42
  8. package/dist/actions/ui-state-actions.js +42 -70
  9. package/dist/actions/vis-state-actions.js +102 -162
  10. package/dist/cloud-providers/index.js +8 -8
  11. package/dist/cloud-providers/provider.js +55 -94
  12. package/dist/components/bottom-widget.js +47 -48
  13. package/dist/components/common/action-panel.js +39 -38
  14. package/dist/components/common/animation-control/animation-control.js +40 -38
  15. package/dist/components/common/animation-control/animation-controller.js +47 -70
  16. package/dist/components/common/animation-control/animation-speed-slider.js +28 -38
  17. package/dist/components/common/animation-control/floating-time-display.js +56 -67
  18. package/dist/components/common/animation-control/playback-controls.js +64 -80
  19. package/dist/components/common/animation-control/speed-control.js +26 -24
  20. package/dist/components/common/checkbox.js +31 -52
  21. package/dist/components/common/color-legend.js +40 -72
  22. package/dist/components/common/data-table/button.js +29 -22
  23. package/dist/components/common/data-table/canvas.js +21 -10
  24. package/dist/components/common/data-table/cell-size.js +54 -58
  25. package/dist/components/common/data-table/grid.js +30 -31
  26. package/dist/components/common/data-table/index.js +91 -133
  27. package/dist/components/common/data-table/option-dropdown.js +29 -33
  28. package/dist/components/common/dataset-label.js +21 -13
  29. package/dist/components/common/error-boundary.js +25 -30
  30. package/dist/components/common/field-selector.js +35 -69
  31. package/dist/components/common/field-token.js +21 -16
  32. package/dist/components/common/file-uploader/file-drop.js +40 -55
  33. package/dist/components/common/file-uploader/file-upload-progress.js +32 -30
  34. package/dist/components/common/file-uploader/file-upload.js +52 -91
  35. package/dist/components/common/file-uploader/upload-button.js +31 -42
  36. package/dist/components/common/histogram-plot.js +32 -27
  37. package/dist/components/common/icons/add.js +27 -27
  38. package/dist/components/common/icons/anchor_window.js +3 -9
  39. package/dist/components/common/icons/arrow-down-alt.js +27 -27
  40. package/dist/components/common/icons/arrow-down-solid .js +27 -27
  41. package/dist/components/common/icons/arrow-down.js +27 -27
  42. package/dist/components/common/icons/arrow-left.js +27 -27
  43. package/dist/components/common/icons/arrow-right.js +27 -27
  44. package/dist/components/common/icons/arrow-up-alt.js +27 -27
  45. package/dist/components/common/icons/arrow-up-solid.js +27 -27
  46. package/dist/components/common/icons/arrow-up.js +27 -27
  47. package/dist/components/common/icons/base.js +38 -42
  48. package/dist/components/common/icons/bug.js +27 -27
  49. package/dist/components/common/icons/cancel.js +27 -27
  50. package/dist/components/common/icons/checkmark.js +27 -28
  51. package/dist/components/common/icons/chevron-right.js +27 -27
  52. package/dist/components/common/icons/clipboard.js +27 -27
  53. package/dist/components/common/icons/clock.js +27 -27
  54. package/dist/components/common/icons/close.js +27 -27
  55. package/dist/components/common/icons/code-alt.js +27 -28
  56. package/dist/components/common/icons/copy.js +27 -28
  57. package/dist/components/common/icons/crosshairs.js +27 -28
  58. package/dist/components/common/icons/cube-3d.js +27 -27
  59. package/dist/components/common/icons/cursor-click.js +27 -27
  60. package/dist/components/common/icons/data-table.js +27 -27
  61. package/dist/components/common/icons/db.js +27 -27
  62. package/dist/components/common/icons/delete.js +27 -27
  63. package/dist/components/common/icons/docs.js +27 -27
  64. package/dist/components/common/icons/drag-n-drop.js +27 -27
  65. package/dist/components/common/icons/draw-polygon.js +27 -27
  66. package/dist/components/common/icons/email.js +27 -27
  67. package/dist/components/common/icons/expand.js +27 -27
  68. package/dist/components/common/icons/eye-seen.js +27 -27
  69. package/dist/components/common/icons/eye-unseen.js +27 -27
  70. package/dist/components/common/icons/file-type.js +23 -16
  71. package/dist/components/common/icons/file.js +27 -27
  72. package/dist/components/common/icons/files.js +24 -26
  73. package/dist/components/common/icons/filter-funnel.js +27 -27
  74. package/dist/components/common/icons/free-window.js +3 -9
  75. package/dist/components/common/icons/gear.js +27 -27
  76. package/dist/components/common/icons/hash.js +27 -27
  77. package/dist/components/common/icons/histogram.js +24 -25
  78. package/dist/components/common/icons/index.js +63 -138
  79. package/dist/components/common/icons/info.js +27 -28
  80. package/dist/components/common/icons/layers.js +27 -27
  81. package/dist/components/common/icons/left-arrow.js +27 -28
  82. package/dist/components/common/icons/legend.js +27 -27
  83. package/dist/components/common/icons/line-chart.js +27 -27
  84. package/dist/components/common/icons/login.js +27 -27
  85. package/dist/components/common/icons/logout.js +27 -27
  86. package/dist/components/common/icons/map-icon.js +27 -28
  87. package/dist/components/common/icons/map.js +27 -28
  88. package/dist/components/common/icons/messages.js +27 -27
  89. package/dist/components/common/icons/minus.js +27 -27
  90. package/dist/components/common/icons/pause.js +27 -27
  91. package/dist/components/common/icons/picture.js +24 -26
  92. package/dist/components/common/icons/pin.js +27 -27
  93. package/dist/components/common/icons/play.js +27 -27
  94. package/dist/components/common/icons/polygon.js +27 -27
  95. package/dist/components/common/icons/rectangle.js +27 -27
  96. package/dist/components/common/icons/reduce.js +27 -27
  97. package/dist/components/common/icons/reset.js +27 -27
  98. package/dist/components/common/icons/rocket.js +27 -27
  99. package/dist/components/common/icons/save.js +27 -27
  100. package/dist/components/common/icons/save2.js +27 -27
  101. package/dist/components/common/icons/search.js +27 -27
  102. package/dist/components/common/icons/settings.js +27 -27
  103. package/dist/components/common/icons/share.js +27 -27
  104. package/dist/components/common/icons/split.js +27 -27
  105. package/dist/components/common/icons/square-select.js +27 -27
  106. package/dist/components/common/icons/swap-horizontal.js +27 -28
  107. package/dist/components/common/icons/table.js +27 -27
  108. package/dist/components/common/icons/trash.js +27 -27
  109. package/dist/components/common/icons/upload.js +27 -27
  110. package/dist/components/common/icons/vert-dots.js +27 -27
  111. package/dist/components/common/icons/vert-three-dots.js +27 -27
  112. package/dist/components/common/icons/warning.js +27 -28
  113. package/dist/components/common/image-preview.js +36 -29
  114. package/dist/components/common/info-helper.js +26 -25
  115. package/dist/components/common/item-selector/accessor.js +3 -5
  116. package/dist/components/common/item-selector/chickleted-input.js +41 -43
  117. package/dist/components/common/item-selector/dropdown-list.js +44 -74
  118. package/dist/components/common/item-selector/item-selector-submenu.js +29 -38
  119. package/dist/components/common/item-selector/item-selector.js +36 -84
  120. package/dist/components/common/item-selector/typeahead.js +37 -83
  121. package/dist/components/common/line-chart.js +39 -36
  122. package/dist/components/common/loading-spinner.js +33 -25
  123. package/dist/components/common/logo.js +24 -22
  124. package/dist/components/common/map-layer-selector.js +23 -16
  125. package/dist/components/common/modal.js +36 -61
  126. package/dist/components/common/portaled.js +56 -97
  127. package/dist/components/common/progress-bar.js +29 -20
  128. package/dist/components/common/range-brush.js +63 -104
  129. package/dist/components/common/range-plot.js +47 -52
  130. package/dist/components/common/range-slider.js +52 -78
  131. package/dist/components/common/slider/mouse-event.js +11 -37
  132. package/dist/components/common/slider/slider-bar-handle.js +31 -39
  133. package/dist/components/common/slider/slider-handle.js +35 -44
  134. package/dist/components/common/slider/slider.js +55 -82
  135. package/dist/components/common/styled-components.js +64 -169
  136. package/dist/components/common/switch.js +22 -16
  137. package/dist/components/common/time-range-slider-time-title.js +24 -19
  138. package/dist/components/common/time-range-slider.js +41 -38
  139. package/dist/components/common/time-slider-marker.js +36 -41
  140. package/dist/components/common/toolbar-item.js +22 -16
  141. package/dist/components/common/toolbar.js +21 -10
  142. package/dist/components/common/vertical-toolbar.js +21 -10
  143. package/dist/components/container.js +49 -70
  144. package/dist/components/context.js +6 -10
  145. package/dist/components/editor/constants.js +6 -8
  146. package/dist/components/editor/editor.js +40 -72
  147. package/dist/components/editor/feature-action-panel.js +35 -43
  148. package/dist/components/editor/feature-styles.js +35 -40
  149. package/dist/components/editor/handle-style.js +35 -37
  150. package/dist/components/filters/components.js +21 -10
  151. package/dist/components/filters/filter-panels/filter-panel-with-field-select.js +14 -25
  152. package/dist/components/filters/filter-panels/multi-select-filter-panel.js +14 -21
  153. package/dist/components/filters/filter-panels/new-filter-panel.js +13 -23
  154. package/dist/components/filters/filter-panels/polygon-filter-panel.js +13 -25
  155. package/dist/components/filters/filter-panels/range-filter-panel.js +14 -21
  156. package/dist/components/filters/filter-panels/single-select-filter-panel.js +14 -21
  157. package/dist/components/filters/filter-panels/time-range-filter-panel.js +14 -23
  158. package/dist/components/filters/index.js +11 -17
  159. package/dist/components/filters/multi-select-filter.js +3 -9
  160. package/dist/components/filters/polygon-filter.js +8 -18
  161. package/dist/components/filters/range-filter.js +3 -8
  162. package/dist/components/filters/single-select-filter.js +3 -9
  163. package/dist/components/filters/time-range-filter.js +7 -18
  164. package/dist/components/filters/time-widget.js +41 -51
  165. package/dist/components/geocoder/geocoder.js +95 -128
  166. package/dist/components/geocoder-panel.js +37 -62
  167. package/dist/components/index.js +356 -498
  168. package/dist/components/injector.js +42 -58
  169. package/dist/components/kepler-gl.js +65 -158
  170. package/dist/components/map/coordinate-info.js +4 -13
  171. package/dist/components/map/layer-hover-info.js +40 -48
  172. package/dist/components/map/layer-selector-panel.js +17 -30
  173. package/dist/components/map/locale-panel.js +13 -27
  174. package/dist/components/map/map-control-panel.js +27 -24
  175. package/dist/components/map/map-control-toolbar.js +21 -11
  176. package/dist/components/map/map-control-tooltip.js +4 -11
  177. package/dist/components/map/map-control.js +26 -27
  178. package/dist/components/map/map-draw-panel.js +12 -29
  179. package/dist/components/map/map-legend-panel.js +17 -34
  180. package/dist/components/map/map-legend.js +52 -70
  181. package/dist/components/map/map-popover.js +41 -57
  182. package/dist/components/map/split-map-button.js +13 -25
  183. package/dist/components/map/toggle-3d-button.js +10 -21
  184. package/dist/components/map-container.js +98 -145
  185. package/dist/components/maps-layout.js +24 -26
  186. package/dist/components/modal-container.js +60 -112
  187. package/dist/components/modals/add-map-style-modal.js +37 -67
  188. package/dist/components/modals/cloud-tile.js +36 -36
  189. package/dist/components/modals/data-table-modal.js +51 -81
  190. package/dist/components/modals/delete-data-modal.js +24 -20
  191. package/dist/components/modals/error-display.js +3 -10
  192. package/dist/components/modals/export-data-modal.js +37 -54
  193. package/dist/components/modals/export-image-modal.js +31 -28
  194. package/dist/components/modals/export-map-modal/components.js +27 -27
  195. package/dist/components/modals/export-map-modal/export-html-map.js +27 -27
  196. package/dist/components/modals/export-map-modal/export-json-map.js +22 -22
  197. package/dist/components/modals/export-map-modal/export-map-modal.js +20 -40
  198. package/dist/components/modals/image-modal-container.js +9 -16
  199. package/dist/components/modals/load-data-modal.js +29 -33
  200. package/dist/components/modals/load-storage-map.js +42 -77
  201. package/dist/components/modals/loading-dialog.js +24 -18
  202. package/dist/components/modals/modal-dialog.js +3 -7
  203. package/dist/components/modals/modal-tabs.js +29 -29
  204. package/dist/components/modals/overwrite-map-modal.js +29 -28
  205. package/dist/components/modals/provider-modal-container.js +27 -27
  206. package/dist/components/modals/save-map-modal.js +43 -48
  207. package/dist/components/modals/share-map-modal.js +42 -53
  208. package/dist/components/modals/status-panel.js +24 -25
  209. package/dist/components/modals/storage-map-viewer.js +30 -43
  210. package/dist/components/notification-panel/notification-item.js +33 -47
  211. package/dist/components/notification-panel.js +30 -36
  212. package/dist/components/performance.js +11 -36
  213. package/dist/components/plot-container.js +42 -72
  214. package/dist/components/side-panel/cloud-storage-dropdown.js +4 -10
  215. package/dist/components/side-panel/common/dataset-info.js +20 -13
  216. package/dist/components/side-panel/common/dataset-tag.js +21 -12
  217. package/dist/components/side-panel/common/dataset-title.js +37 -52
  218. package/dist/components/side-panel/common/source-data-catalog.js +26 -22
  219. package/dist/components/side-panel/common/source-data-selector.js +34 -40
  220. package/dist/components/side-panel/custom-panel.js +5 -9
  221. package/dist/components/side-panel/filter-manager.js +18 -29
  222. package/dist/components/side-panel/filter-panel/filter-panel-header.js +30 -30
  223. package/dist/components/side-panel/filter-panel/filter-panel.js +36 -55
  224. package/dist/components/side-panel/interaction-manager.js +5 -12
  225. package/dist/components/side-panel/interaction-panel/brush-config.js +23 -19
  226. package/dist/components/side-panel/interaction-panel/interaction-panel.js +36 -59
  227. package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +34 -74
  228. package/dist/components/side-panel/interaction-panel/tooltip-config.js +28 -40
  229. package/dist/components/side-panel/layer-manager.js +51 -82
  230. package/dist/components/side-panel/layer-panel/color-dimension-scale-selector.js +3 -10
  231. package/dist/components/side-panel/layer-panel/color-palette.js +27 -23
  232. package/dist/components/side-panel/layer-panel/color-range-selector.js +52 -98
  233. package/dist/components/side-panel/layer-panel/color-selector.js +36 -67
  234. package/dist/components/side-panel/layer-panel/column-selector.js +26 -25
  235. package/dist/components/side-panel/layer-panel/custom-markers-config-group.js +2 -6
  236. package/dist/components/side-panel/layer-panel/custom-palette.js +37 -71
  237. package/dist/components/side-panel/layer-panel/custom-picker.js +32 -45
  238. package/dist/components/side-panel/layer-panel/dimension-scale-selector.js +8 -16
  239. package/dist/components/side-panel/layer-panel/hex-column-config.js +12 -34
  240. package/dist/components/side-panel/layer-panel/layer-aggregation-resolution.js +2 -10
  241. package/dist/components/side-panel/layer-panel/layer-column-config.js +31 -27
  242. package/dist/components/side-panel/layer-panel/layer-config-group.js +46 -80
  243. package/dist/components/side-panel/layer-panel/layer-configurator.js +162 -250
  244. package/dist/components/side-panel/layer-panel/layer-panel-header.js +52 -66
  245. package/dist/components/side-panel/layer-panel/layer-panel.js +33 -54
  246. package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.js +28 -22
  247. package/dist/components/side-panel/layer-panel/layer-type-list-item.js +22 -18
  248. package/dist/components/side-panel/layer-panel/layer-type-selector.js +29 -32
  249. package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +35 -40
  250. package/dist/components/side-panel/layer-panel/single-color-palette.js +32 -42
  251. package/dist/components/side-panel/layer-panel/text-label-panel.js +31 -42
  252. package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +39 -52
  253. package/dist/components/side-panel/layer-panel/vis-config-slider.js +10 -19
  254. package/dist/components/side-panel/layer-panel/vis-config-switch.js +28 -29
  255. package/dist/components/side-panel/map-manager.js +32 -46
  256. package/dist/components/side-panel/map-style-panel/map-layer-selector.js +28 -31
  257. package/dist/components/side-panel/map-style-panel/map-style-selector.js +26 -24
  258. package/dist/components/side-panel/panel-dropdown.js +28 -35
  259. package/dist/components/side-panel/panel-header-action.js +38 -43
  260. package/dist/components/side-panel/panel-header.js +54 -92
  261. package/dist/components/side-panel/panel-tab.js +24 -20
  262. package/dist/components/side-panel/panel-title.js +21 -10
  263. package/dist/components/side-panel/panel-toggle.js +26 -23
  264. package/dist/components/side-panel/side-bar.js +37 -53
  265. package/dist/components/side-panel.js +56 -65
  266. package/dist/connect/keplergl-connect.js +5 -14
  267. package/dist/connect/with-local-selector.js +33 -38
  268. package/dist/constants/action-types.js +5 -6
  269. package/dist/constants/color-palette.js +12 -23
  270. package/dist/constants/color-ranges.js +32 -31
  271. package/dist/constants/custom-color-ranges.js +9 -14
  272. package/dist/constants/default-settings.js +154 -239
  273. package/dist/constants/index.js +95 -103
  274. package/dist/constants/keyevent.js +3 -7
  275. package/dist/constants/tooltip.js +7 -10
  276. package/dist/constants/user-feedbacks.js +5 -6
  277. package/dist/constants/user-guides.js +12 -20
  278. package/dist/deckgl-layers/3d-building-layer/3d-building-layer.js +29 -32
  279. package/dist/deckgl-layers/3d-building-layer/3d-building-utils.js +10 -43
  280. package/dist/deckgl-layers/cluster-layer/cluster-layer.js +54 -75
  281. package/dist/deckgl-layers/column-layer/enhanced-column-layer.js +29 -32
  282. package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +29 -30
  283. package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +29 -30
  284. package/dist/deckgl-layers/layer-utils/cluster-utils.js +10 -21
  285. package/dist/deckgl-layers/layer-utils/cpu-aggregator.js +75 -132
  286. package/dist/deckgl-layers/layer-utils/shader-utils.js +1 -5
  287. package/dist/deckgl-layers/line-layer/line-layer.js +27 -34
  288. package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +26 -30
  289. package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.js +33 -39
  290. package/dist/index.js +4 -23
  291. package/dist/layers/aggregation-layer.js +63 -97
  292. package/dist/layers/arc-layer/arc-layer-icon.js +27 -27
  293. package/dist/layers/arc-layer/arc-layer.js +48 -73
  294. package/dist/layers/base-layer.js +257 -406
  295. package/dist/layers/cluster-layer/cluster-layer-icon.js +27 -27
  296. package/dist/layers/cluster-layer/cluster-layer.js +33 -44
  297. package/dist/layers/default-layer-icon.js +27 -27
  298. package/dist/layers/geojson-layer/geojson-layer-icon.js +27 -27
  299. package/dist/layers/geojson-layer/geojson-layer.js +54 -87
  300. package/dist/layers/geojson-layer/geojson-utils.js +35 -47
  301. package/dist/layers/grid-layer/grid-layer-icon.js +27 -27
  302. package/dist/layers/grid-layer/grid-layer.js +30 -41
  303. package/dist/layers/grid-layer/grid-utils.js +6 -9
  304. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.js +27 -27
  305. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.js +48 -80
  306. package/dist/layers/h3-hexagon-layer/h3-utils.js +10 -21
  307. package/dist/layers/heatmap-layer/heatmap-layer-icon.js +27 -27
  308. package/dist/layers/heatmap-layer/heatmap-layer.js +45 -72
  309. package/dist/layers/hexagon-layer/hexagon-layer-icon.js +27 -27
  310. package/dist/layers/hexagon-layer/hexagon-layer.js +30 -42
  311. package/dist/layers/hexagon-layer/hexagon-utils.js +3 -15
  312. package/dist/layers/icon-layer/icon-info-modal.js +23 -26
  313. package/dist/layers/icon-layer/icon-layer-icon.js +27 -27
  314. package/dist/layers/icon-layer/icon-layer.js +59 -97
  315. package/dist/layers/index.js +38 -39
  316. package/dist/layers/layer-factory.js +38 -42
  317. package/dist/layers/layer-text-label.js +7 -17
  318. package/dist/layers/layer-update.js +3 -14
  319. package/dist/layers/line-layer/line-layer-icon.js +27 -27
  320. package/dist/layers/line-layer/line-layer.js +46 -66
  321. package/dist/layers/mapbox-utils.js +38 -51
  322. package/dist/layers/mapboxgl-layer.js +43 -58
  323. package/dist/layers/point-layer/point-layer-icon.js +27 -27
  324. package/dist/layers/point-layer/point-layer.js +57 -90
  325. package/dist/layers/s2-geometry-layer/s2-geometry-layer.js +41 -73
  326. package/dist/layers/s2-geometry-layer/s2-layer-icon.js +27 -27
  327. package/dist/layers/s2-geometry-layer/s2-utils.js +5 -11
  328. package/dist/layers/scenegraph-layer/scenegraph-info-modal.js +21 -15
  329. package/dist/layers/scenegraph-layer/scenegraph-layer-icon.js +27 -27
  330. package/dist/layers/scenegraph-layer/scenegraph-layer.js +52 -75
  331. package/dist/layers/trip-layer/trip-info-modal.js +21 -16
  332. package/dist/layers/trip-layer/trip-layer-icon.js +27 -27
  333. package/dist/layers/trip-layer/trip-layer.js +51 -93
  334. package/dist/layers/trip-layer/trip-utils.js +16 -39
  335. package/dist/layers/types.js +3 -6
  336. package/dist/localization/en.js +22 -11
  337. package/dist/localization/formatted-message.js +5 -10
  338. package/dist/localization/index.js +7 -13
  339. package/dist/localization/locales.js +7 -12
  340. package/dist/middleware/index.js +2 -5
  341. package/dist/processors/data-processor.js +113 -177
  342. package/dist/processors/file-handler.js +200 -276
  343. package/dist/processors/index.js +33 -35
  344. package/dist/reducers/combined-updaters.js +35 -46
  345. package/dist/reducers/composer-helpers.js +28 -27
  346. package/dist/reducers/composers.js +25 -12
  347. package/dist/reducers/core.js +13 -46
  348. package/dist/reducers/index.js +24 -38
  349. package/dist/reducers/map-state-updaters.js +53 -65
  350. package/dist/reducers/map-state.js +31 -26
  351. package/dist/reducers/map-style-updaters.js +92 -136
  352. package/dist/reducers/map-style.js +31 -26
  353. package/dist/reducers/provider-state-updaters.js +92 -167
  354. package/dist/reducers/provider-state.js +32 -25
  355. package/dist/reducers/root.js +44 -50
  356. package/dist/reducers/ui-state-updaters.js +102 -202
  357. package/dist/reducers/ui-state.js +32 -26
  358. package/dist/reducers/vis-state-merger.js +102 -166
  359. package/dist/reducers/vis-state-selectors.js +5 -10
  360. package/dist/reducers/vis-state-updaters.js +386 -663
  361. package/dist/reducers/vis-state.js +32 -25
  362. package/dist/schemas/dataset-schema.js +36 -56
  363. package/dist/schemas/index.js +38 -45
  364. package/dist/schemas/map-state-schema.js +28 -24
  365. package/dist/schemas/map-style-schema.js +34 -48
  366. package/dist/schemas/schema-manager.js +44 -62
  367. package/dist/schemas/schema-utils.js +11 -15
  368. package/dist/schemas/schema.js +32 -27
  369. package/dist/schemas/versions.js +5 -9
  370. package/dist/schemas/vis-state-schema.js +109 -309
  371. package/dist/styles/base.js +367 -640
  372. package/dist/styles/index.js +1 -5
  373. package/dist/styles/media-breakpoints.js +21 -9
  374. package/dist/tasks/tasks.js +22 -50
  375. package/dist/templates/export-map-html.js +3 -6
  376. package/dist/utils/aggregate-utils.js +23 -27
  377. package/dist/utils/color-utils.js +36 -38
  378. package/dist/utils/custom-scales.js +1 -7
  379. package/dist/utils/data-scale-utils.js +11 -20
  380. package/dist/utils/data-utils.js +78 -137
  381. package/dist/utils/dataset-utils.js +71 -88
  382. package/dist/utils/dom-to-image.js +15 -93
  383. package/dist/utils/dom-utils.js +34 -116
  384. package/dist/utils/export-utils.js +65 -102
  385. package/dist/utils/filter-utils.js +170 -320
  386. package/dist/utils/gl-utils.js +39 -23
  387. package/dist/utils/gpu-filter-utils.js +46 -59
  388. package/dist/utils/index.js +68 -80
  389. package/dist/utils/interaction-utils.js +26 -50
  390. package/dist/utils/layer-utils.js +58 -63
  391. package/dist/utils/locale-utils.js +23 -21
  392. package/dist/utils/map-info-utils.js +2 -3
  393. package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +72 -71
  394. package/dist/utils/map-style-utils/mapbox-utils.js +3 -5
  395. package/dist/utils/mapbox-utils.js +2 -5
  396. package/dist/utils/notifications-utils.js +36 -35
  397. package/dist/utils/observe-dimensions.js +36 -41
  398. package/dist/utils/projection-utils.js +9 -20
  399. package/dist/utils/searcher-utils.js +1 -4
  400. package/dist/utils/split-map-utils.js +36 -32
  401. package/dist/utils/table-utils/data-container-utils.js +27 -23
  402. package/dist/utils/table-utils/data-row.js +2 -13
  403. package/dist/utils/table-utils/index.js +1 -2
  404. package/dist/utils/table-utils/indexed-data-container.js +65 -84
  405. package/dist/utils/table-utils/kepler-table.js +83 -126
  406. package/dist/utils/table-utils/row-data-container.js +62 -87
  407. package/dist/utils/utils.js +51 -69
  408. package/package.json +4 -3
  409. package/src/components/kepler-gl.d.ts +0 -1
  410. package/src/components/kepler-gl.js +0 -7
  411. package/src/components/map-container.js +0 -3
  412. package/src/components/modal-container.d.ts +0 -1
  413. package/src/components/modal-container.js +0 -2
  414. package/src/components/modals/add-map-style-modal.js +0 -3
  415. package/src/components/side-panel/layer-panel/layer-configurator.js +11 -9
  416. package/src/layers/base-layer.js +1 -1
  417. package/src/utils/gl-utils.js +16 -15
  418. package/CHANGELOG.md +0 -948
@@ -1,50 +1,59 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
7
+ exports.editTopMapStyle = exports.editBottomMapStyle = void 0;
8
8
  exports.getDefaultLayerGroupVisibility = getDefaultLayerGroupVisibility;
9
- exports.isValidStyleUrl = isValidStyleUrl;
10
9
  exports.getStyleDownloadUrl = getStyleDownloadUrl;
11
10
  exports.getStyleImageIcon = getStyleImageIcon;
12
- exports.scaleMapStyleByResolution = scaleMapStyleByResolution;
11
+ exports.isValidStyleUrl = isValidStyleUrl;
13
12
  exports.mergeLayerGroupVisibility = mergeLayerGroupVisibility;
14
- exports.editBottomMapStyle = exports.editTopMapStyle = void 0;
15
-
13
+ exports.scaleMapStyleByResolution = scaleMapStyleByResolution;
16
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
-
18
15
  var _lodash = _interopRequireDefault(require("lodash.memoize"));
19
-
20
16
  var _lodash2 = _interopRequireDefault(require("lodash.clonedeep"));
21
-
22
17
  var _defaultSettings = require("../../constants/default-settings");
23
-
24
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
25
-
26
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
27
-
18
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // Copyright (c) 2022 Uber Technologies, Inc.
20
+ //
21
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
22
+ // of this software and associated documentation files (the "Software"), to deal
23
+ // in the Software without restriction, including without limitation the rights
24
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
25
+ // copies of the Software, and to permit persons to whom the Software is
26
+ // furnished to do so, subject to the following conditions:
27
+ //
28
+ // The above copyright notice and this permission notice shall be included in
29
+ // all copies or substantial portions of the Software.
30
+ //
31
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
32
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
33
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
34
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
35
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
36
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
37
+ // THE SOFTWARE.
28
38
  var mapUrlRg = /^mapbox:\/\/styles\/[-a-z0-9]{2,256}\/[-a-z0-9]{2,256}/;
29
39
  var httpRg = /^(?=(http:|https:))/;
30
-
31
40
  function getDefaultLayerGroupVisibility(_ref) {
32
41
  var _ref$layerGroups = _ref.layerGroups,
33
- layerGroups = _ref$layerGroups === void 0 ? [] : _ref$layerGroups;
42
+ layerGroups = _ref$layerGroups === void 0 ? [] : _ref$layerGroups;
34
43
  return layerGroups.reduce(function (accu, layer) {
35
44
  return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, layer.slug, layer.defaultVisibility));
36
45
  }, {});
37
46
  }
38
-
39
47
  var resolver = function resolver(_ref2) {
40
48
  var id = _ref2.id,
41
- mapStyle = _ref2.mapStyle,
42
- _ref2$visibleLayerGro = _ref2.visibleLayerGroups,
43
- visibleLayerGroups = _ref2$visibleLayerGro === void 0 ? {} : _ref2$visibleLayerGro;
49
+ mapStyle = _ref2.mapStyle,
50
+ _ref2$visibleLayerGro = _ref2.visibleLayerGroups,
51
+ visibleLayerGroups = _ref2$visibleLayerGro === void 0 ? {} : _ref2$visibleLayerGro;
44
52
  return "".concat(id, ":").concat(Object.keys(visibleLayerGroups).filter(function (d) {
45
53
  return visibleLayerGroups[d];
46
54
  }).sort().join('-'));
47
55
  };
56
+
48
57
  /**
49
58
  * Edit preset map style to keep only visible layers
50
59
  *
@@ -52,19 +61,18 @@ var resolver = function resolver(_ref2) {
52
61
  * @param {Object} visibleLayerGroups - visible layers of top map
53
62
  * @returns {Object} top map style
54
63
  */
55
-
56
-
57
- var editTopMapStyle = (0, _lodash["default"])(function (_ref3) {
64
+ var editTopMapStyle = exports.editTopMapStyle = (0, _lodash["default"])(function (_ref3) {
58
65
  var id = _ref3.id,
59
- mapStyle = _ref3.mapStyle,
60
- visibleLayerGroups = _ref3.visibleLayerGroups;
66
+ mapStyle = _ref3.mapStyle,
67
+ visibleLayerGroups = _ref3.visibleLayerGroups;
61
68
  var visibleFilters = (mapStyle.layerGroups || []).filter(function (lg) {
62
69
  return visibleLayerGroups[lg.slug];
63
70
  }).map(function (lg) {
64
71
  return lg.filter;
65
- }); // if top map
66
- // keep only visible layers
72
+ });
67
73
 
74
+ // if top map
75
+ // keep only visible layers
68
76
  var filteredLayers = mapStyle.style.layers.filter(function (layer) {
69
77
  return visibleFilters.some(function (match) {
70
78
  return match(layer);
@@ -74,6 +82,7 @@ var editTopMapStyle = (0, _lodash["default"])(function (_ref3) {
74
82
  layers: filteredLayers
75
83
  });
76
84
  }, resolver);
85
+
77
86
  /**
78
87
  * Edit preset map style to filter out invisible layers
79
88
  *
@@ -81,19 +90,18 @@ var editTopMapStyle = (0, _lodash["default"])(function (_ref3) {
81
90
  * @param {Object} visibleLayerGroups - visible layers of bottom map
82
91
  * @returns {Object} bottom map style
83
92
  */
84
-
85
- exports.editTopMapStyle = editTopMapStyle;
86
- var editBottomMapStyle = (0, _lodash["default"])(function (_ref4) {
93
+ var editBottomMapStyle = exports.editBottomMapStyle = (0, _lodash["default"])(function (_ref4) {
87
94
  var id = _ref4.id,
88
- mapStyle = _ref4.mapStyle,
89
- visibleLayerGroups = _ref4.visibleLayerGroups;
95
+ mapStyle = _ref4.mapStyle,
96
+ visibleLayerGroups = _ref4.visibleLayerGroups;
90
97
  var invisibleFilters = (mapStyle.layerGroups || []).filter(function (lg) {
91
98
  return !visibleLayerGroups[lg.slug];
92
99
  }).map(function (lg) {
93
100
  return lg.filter;
94
- }); // if bottom map
95
- // filter out invisible layers
101
+ });
96
102
 
103
+ // if bottom map
104
+ // filter out invisible layers
97
105
  var filteredLayers = mapStyle.style.layers.filter(function (layer) {
98
106
  return invisibleFilters.every(function (match) {
99
107
  return !match(layer);
@@ -102,31 +110,31 @@ var editBottomMapStyle = (0, _lodash["default"])(function (_ref4) {
102
110
  return _objectSpread(_objectSpread({}, mapStyle.style), {}, {
103
111
  layers: filteredLayers
104
112
  });
105
- }, resolver); // valid style url
113
+ }, resolver);
114
+
115
+ // valid style url
106
116
  // mapbox://styles/uberdata/cjfyl03kp1tul2smf5v2tbdd4
107
117
  // lowercase letters, numbers and dashes only.
108
-
109
- exports.editBottomMapStyle = editBottomMapStyle;
110
-
111
118
  function isValidStyleUrl(url) {
112
119
  return typeof url === 'string' && Boolean(url.match(mapUrlRg) || url.match(httpRg));
113
120
  }
114
-
115
121
  function getStyleDownloadUrl(styleUrl, accessToken, mapboxApiUrl) {
116
122
  if (styleUrl.startsWith('http')) {
117
123
  return styleUrl;
118
- } // mapbox://styles/jckr/cjhcl0lxv13di2rpfoytdbdyj
119
-
124
+ }
120
125
 
126
+ // mapbox://styles/jckr/cjhcl0lxv13di2rpfoytdbdyj
121
127
  if (styleUrl.startsWith('mapbox://styles')) {
122
- var styleId = styleUrl.replace('mapbox://styles/', ''); // https://api.mapbox.com/styles/v1/heshan0131/cjg1bfumo1cwm2rlrjxkinfgw?pluginName=Keplergl&access_token=<token>
128
+ var styleId = styleUrl.replace('mapbox://styles/', '');
123
129
 
130
+ // https://api.mapbox.com/styles/v1/heshan0131/cjg1bfumo1cwm2rlrjxkinfgw?pluginName=Keplergl&access_token=<token>
124
131
  return "".concat(mapboxApiUrl || _defaultSettings.DEFAULT_MAPBOX_API_URL, "/styles/v1/").concat(styleId, "?pluginName=Keplergl&access_token=").concat(accessToken);
125
- } // style url not recognized
126
-
132
+ }
127
133
 
134
+ // style url not recognized
128
135
  return null;
129
136
  }
137
+
130
138
  /**
131
139
  * Generate static map image from style Url to be used as icon
132
140
  * @param {Object} param
@@ -137,34 +145,30 @@ function getStyleDownloadUrl(styleUrl, accessToken, mapboxApiUrl) {
137
145
  * @param {number} param.mapW
138
146
  * @param {number} param.mapH
139
147
  */
140
-
141
-
142
148
  function getStyleImageIcon(_ref5) {
143
149
  var styleUrl = _ref5.styleUrl,
144
- mapboxApiAccessToken = _ref5.mapboxApiAccessToken,
145
- _ref5$mapboxApiUrl = _ref5.mapboxApiUrl,
146
- mapboxApiUrl = _ref5$mapboxApiUrl === void 0 ? _defaultSettings.DEFAULT_MAPBOX_API_URL : _ref5$mapboxApiUrl,
147
- _ref5$mapState = _ref5.mapState,
148
- mapState = _ref5$mapState === void 0 ? {
149
- longitude: -122.3391,
150
- latitude: 37.7922,
151
- zoom: 9
152
- } : _ref5$mapState,
153
- _ref5$mapW = _ref5.mapW,
154
- mapW = _ref5$mapW === void 0 ? 400 : _ref5$mapW,
155
- _ref5$mapH = _ref5.mapH,
156
- mapH = _ref5$mapH === void 0 ? 300 : _ref5$mapH;
150
+ mapboxApiAccessToken = _ref5.mapboxApiAccessToken,
151
+ _ref5$mapboxApiUrl = _ref5.mapboxApiUrl,
152
+ mapboxApiUrl = _ref5$mapboxApiUrl === void 0 ? _defaultSettings.DEFAULT_MAPBOX_API_URL : _ref5$mapboxApiUrl,
153
+ _ref5$mapState = _ref5.mapState,
154
+ mapState = _ref5$mapState === void 0 ? {
155
+ longitude: -122.3391,
156
+ latitude: 37.7922,
157
+ zoom: 9
158
+ } : _ref5$mapState,
159
+ _ref5$mapW = _ref5.mapW,
160
+ mapW = _ref5$mapW === void 0 ? 400 : _ref5$mapW,
161
+ _ref5$mapH = _ref5.mapH,
162
+ mapH = _ref5$mapH === void 0 ? 300 : _ref5$mapH;
157
163
  var styleId = styleUrl.replace('mapbox://styles/', '');
158
164
  return "".concat(mapboxApiUrl, "/styles/v1/").concat(styleId, "/static/") + "".concat(mapState.longitude, ",").concat(mapState.latitude, ",").concat(mapState.zoom, ",0,0/") + "".concat(mapW, "x").concat(mapH) + "?access_token=".concat(mapboxApiAccessToken, "&logo=false&attribution=false");
159
165
  }
160
-
161
166
  function scaleMapStyleByResolution(mapboxStyle, scale) {
162
167
  if (scale !== 1 && mapboxStyle) {
163
168
  var labelLayerGroup = _defaultSettings.DEFAULT_LAYER_GROUPS.find(function (lg) {
164
169
  return lg.slug === 'label';
165
- }); // @ts-ignore
166
-
167
-
170
+ });
171
+ // @ts-ignore
168
172
  var labelLayerFilter = labelLayerGroup.filter;
169
173
  var zoomOffset = Math.log2(scale);
170
174
  var copyStyle = (0, _lodash2["default"])(mapboxStyle);
@@ -173,18 +177,17 @@ function scaleMapStyleByResolution(mapboxStyle, scale) {
173
177
  if (d.maxzoom) {
174
178
  d.maxzoom = Math.max(d.maxzoom + zoomOffset, 1);
175
179
  }
176
-
177
180
  if (d.minzoom) {
178
181
  d.minzoom = Math.max(d.minzoom + zoomOffset, 1);
179
- } // edit text size
180
-
182
+ }
181
183
 
184
+ // edit text size
182
185
  if (labelLayerFilter(d)) {
183
186
  if (d.layout && d.layout['text-size'] && Array.isArray(d.layout['text-size'].stops)) {
184
187
  d.layout['text-size'].stops.forEach(function (stop) {
185
188
  // zoom
186
- stop[0] = Math.max(stop[0] + zoomOffset, 1); // size
187
-
189
+ stop[0] = Math.max(stop[0] + zoomOffset, 1);
190
+ // size
188
191
  stop[1] *= scale;
189
192
  });
190
193
  }
@@ -192,9 +195,9 @@ function scaleMapStyleByResolution(mapboxStyle, scale) {
192
195
  });
193
196
  return copyStyle;
194
197
  }
195
-
196
198
  return mapboxStyle;
197
199
  }
200
+
198
201
  /**
199
202
  * When switch to a new style, try to keep current layer group visibility
200
203
  * by merging default and current
@@ -202,11 +205,9 @@ function scaleMapStyleByResolution(mapboxStyle, scale) {
202
205
  * @param {Object} currentLayerGroup
203
206
  * @return {Object} mergedLayerGroups
204
207
  */
205
-
206
-
207
208
  function mergeLayerGroupVisibility(defaultLayerGroup, currentLayerGroup) {
208
209
  return Object.keys(defaultLayerGroup).reduce(function (accu, key) {
209
210
  return _objectSpread(_objectSpread({}, accu), currentLayerGroup.hasOwnProperty(key) ? (0, _defineProperty2["default"])({}, key, currentLayerGroup[key]) : {});
210
211
  }, defaultLayerGroup);
211
212
  }
212
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9tYXAtc3R5bGUtdXRpbHMvbWFwYm94LWdsLXN0eWxlLWVkaXRvci5qcyJdLCJuYW1lcyI6WyJtYXBVcmxSZyIsImh0dHBSZyIsImdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSIsImxheWVyR3JvdXBzIiwicmVkdWNlIiwiYWNjdSIsImxheWVyIiwic2x1ZyIsImRlZmF1bHRWaXNpYmlsaXR5IiwicmVzb2x2ZXIiLCJpZCIsIm1hcFN0eWxlIiwidmlzaWJsZUxheWVyR3JvdXBzIiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsImQiLCJzb3J0Iiwiam9pbiIsImVkaXRUb3BNYXBTdHlsZSIsInZpc2libGVGaWx0ZXJzIiwibGciLCJtYXAiLCJmaWx0ZXJlZExheWVycyIsInN0eWxlIiwibGF5ZXJzIiwic29tZSIsIm1hdGNoIiwiZWRpdEJvdHRvbU1hcFN0eWxlIiwiaW52aXNpYmxlRmlsdGVycyIsImV2ZXJ5IiwiaXNWYWxpZFN0eWxlVXJsIiwidXJsIiwiQm9vbGVhbiIsImdldFN0eWxlRG93bmxvYWRVcmwiLCJzdHlsZVVybCIsImFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwic3RhcnRzV2l0aCIsInN0eWxlSWQiLCJyZXBsYWNlIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsImdldFN0eWxlSW1hZ2VJY29uIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtYXBTdGF0ZSIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwiem9vbSIsIm1hcFciLCJtYXBIIiwic2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvbiIsIm1hcGJveFN0eWxlIiwic2NhbGUiLCJsYWJlbExheWVyR3JvdXAiLCJERUZBVUxUX0xBWUVSX0dST1VQUyIsImZpbmQiLCJsYWJlbExheWVyRmlsdGVyIiwiem9vbU9mZnNldCIsIk1hdGgiLCJsb2cyIiwiY29weVN0eWxlIiwiZm9yRWFjaCIsIm1heHpvb20iLCJtYXgiLCJtaW56b29tIiwibGF5b3V0IiwiQXJyYXkiLCJpc0FycmF5Iiwic3RvcHMiLCJzdG9wIiwibWVyZ2VMYXllckdyb3VwVmlzaWJpbGl0eSIsImRlZmF1bHRMYXllckdyb3VwIiwiY3VycmVudExheWVyR3JvdXAiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLFFBQVEsR0FBRyx3REFBakI7QUFDQSxJQUFNQyxNQUFNLEdBQUcscUJBQWY7O0FBRU8sU0FBU0MsOEJBQVQsT0FBNEQ7QUFBQSw4QkFBbkJDLFdBQW1CO0FBQUEsTUFBbkJBLFdBQW1CLGlDQUFMLEVBQUs7QUFDakUsU0FBT0EsV0FBVyxDQUFDQyxNQUFaLENBQ0wsVUFBQ0MsSUFBRCxFQUFPQyxLQUFQO0FBQUEsMkNBQ0tELElBREwsNENBRUdDLEtBQUssQ0FBQ0MsSUFGVCxFQUVnQkQsS0FBSyxDQUFDRSxpQkFGdEI7QUFBQSxHQURLLEVBS0wsRUFMSyxDQUFQO0FBT0Q7O0FBRUQsSUFBTUMsUUFBUSxHQUFHLFNBQVhBLFFBQVc7QUFBQSxNQUFFQyxFQUFGLFNBQUVBLEVBQUY7QUFBQSxNQUFNQyxRQUFOLFNBQU1BLFFBQU47QUFBQSxvQ0FBZ0JDLGtCQUFoQjtBQUFBLE1BQWdCQSxrQkFBaEIsc0NBQXFDLEVBQXJDO0FBQUEsbUJBQ1pGLEVBRFksY0FDTkcsTUFBTSxDQUFDQyxJQUFQLENBQVlGLGtCQUFaLEVBQ05HLE1BRE0sQ0FDQyxVQUFBQyxDQUFDO0FBQUEsV0FBSUosa0JBQWtCLENBQUNJLENBQUQsQ0FBdEI7QUFBQSxHQURGLEVBRU5DLElBRk0sR0FHTkMsSUFITSxDQUdELEdBSEMsQ0FETTtBQUFBLENBQWpCO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGVBQWUsR0FBRyx3QkFBUSxpQkFBd0M7QUFBQSxNQUF0Q1QsRUFBc0MsU0FBdENBLEVBQXNDO0FBQUEsTUFBbENDLFFBQWtDLFNBQWxDQSxRQUFrQztB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QUMsQ0FBRCxDQUFKLElBQVdqQixLQUFYO0FBQ0QsV0FMRDtBQU1EO0FBQ0Y7QUFDRixLQXJCRDtBQXVCQSxXQUFPUSxTQUFQO0FBQ0Q7O0FBRUQsU0FBT1QsV0FBUDtBQUNEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFNBQVNtQix5QkFBVCxDQUFtQ0MsaUJBQW5DLEVBQXNEQyxpQkFBdEQsRUFBeUU7QUFDOUUsU0FBTzNELE1BQU0sQ0FBQ0MsSUFBUCxDQUFZeUQsaUJBQVosRUFBK0JuRSxNQUEvQixDQUNMLFVBQUNDLElBQUQsRUFBT29FLEdBQVA7QUFBQSwyQ0FDS3BFLElBREwsR0FFTW1FLGlCQUFpQixDQUFDRSxjQUFsQixDQUFpQ0QsR0FBakMseUNBQTBDQSxHQUExQyxFQUFnREQsaUJBQWlCLENBQUNDLEdBQUQsQ0FBakUsSUFBMEUsRUFGaEY7QUFBQSxHQURLLEVBS0xGLGlCQUxLLENBQVA7QUFPRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBtZW1vaXplIGZyb20gJ2xvZGFzaC5tZW1vaXplJztcbmltcG9ydCBjbG9uZERlZXAgZnJvbSAnbG9kYXNoLmNsb25lZGVlcCc7XG5pbXBvcnQge0RFRkFVTFRfTEFZRVJfR1JPVVBTLCBERUZBVUxUX01BUEJPWF9BUElfVVJMfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5cbmNvbnN0IG1hcFVybFJnID0gL15tYXBib3g6XFwvXFwvc3R5bGVzXFwvWy1hLXowLTldezIsMjU2fVxcL1stYS16MC05XXsyLDI1Nn0vO1xuY29uc3QgaHR0cFJnID0gL14oPz0oaHR0cDp8aHR0cHM6KSkvO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdExheWVyR3JvdXBWaXNpYmlsaXR5KHtsYXllckdyb3VwcyA9IFtdfSkge1xuICByZXR1cm4gbGF5ZXJHcm91cHMucmVkdWNlKFxuICAgIChhY2N1LCBsYXllcikgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbbGF5ZXIuc2x1Z106IGxheWVyLmRlZmF1bHRWaXNpYmlsaXR5XG4gICAgfSksXG4gICAge31cbiAgKTtcbn1cblxuY29uc3QgcmVzb2x2ZXIgPSAoe2lkLCBtYXBTdHlsZSwgdmlzaWJsZUxheWVyR3JvdXBzID0ge319KSA9PlxuICBgJHtpZH06JHtPYmplY3Qua2V5cyh2aXNpYmxlTGF5ZXJHcm91cHMpXG4gICAgLmZpbHRlcihkID0+IHZpc2libGVMYXllckdyb3Vwc1tkXSlcbiAgICAuc29ydCgpXG4gICAgLmpvaW4oJy0nKX1gO1xuXG4vKipcbiAqIEVkaXQgcHJlc2V0IG1hcCBzdHlsZSB0byBrZWVwIG9ubHkgdmlzaWJsZSBsYXllcnNcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwU3R5bGUgLSBwcmVzZXQgbWFwIHN0eWxlXG4gKiBAcGFyYW0ge09iamVjdH0gdmlzaWJsZUxheWVyR3JvdXBzIC0gdmlzaWJsZSBsYXllcnMgb2YgdG9wIG1hcFxuICogQHJldHVybnMge09iamVjdH0gdG9wIG1hcCBzdHlsZVxuICovXG5leHBvcnQgY29uc3QgZWRpdFRvcE1hcFN0eWxlID0gbWVtb2l6ZSgoe2lkLCBtYXBTdHlsZSwgdmlzaWJsZUxheWVyR3JvdXBzfSkgPT4ge1xuICBjb25zdCB2aXNpYmxlRmlsdGVycyA9IChtYXBTdHlsZS5sYXllckdyb3VwcyB8fCBbXSlcbiAgICAuZmlsdGVyKGxnID0+IHZpc2libGVMYXllckdyb3Vwc1tsZy5zbHVnXSlcbiAgICAubWFwKGxnID0+IGxnLmZpbHRlcik7XG5cbiAgLy8gaWYgdG9wIG1hcFxuICAvLyBrZWVwIG9ubHkgdmlzaWJsZSBsYXllcnNcbiAgY29uc3QgZmlsdGVyZWRMYXllcnMgPSBtYXBTdHlsZS5zdHlsZS5sYXllcnMuZmlsdGVyKGxheWVyID0+XG4gICAgdmlzaWJsZUZpbHRlcnMuc29tZShtYXRjaCA9PiBtYXRjaChsYXllcikpXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5tYXBTdHlsZS5zdHlsZSxcbiAgICBsYXllcnM6IGZpbHRlcmVkTGF5ZXJzXG4gIH07XG59LCByZXNvbHZlcik7XG5cbi8qKlxuICogRWRpdCBwcmVzZXQgbWFwIHN0eWxlIHRvIGZpbHRlciBvdXQgaW52aXNpYmxlIGxheWVyc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXBTdHlsZSAtIHByZXNldCBtYXAgc3R5bGVcbiAqIEBwYXJhbSB7T2JqZWN0fSB2aXNpYmxlTGF5ZXJHcm91cHMgLSB2aXNpYmxlIGxheWVycyBvZiBib3R0b20gbWFwXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBib3R0b20gbWFwIHN0eWxlXG4gKi9cbmV4cG9ydCBjb25zdCBlZGl0Qm90dG9tTWFwU3R5bGUgPSBtZW1vaXplKCh7aWQsIG1hcFN0eWxlLCB2aXNpYmxlTGF5ZXJHcm91cHN9KSA9PiB7XG4gIGNvbnN0IGludmlzaWJsZUZpbHRlcnMgPSAobWFwU3R5bGUubGF5ZXJHcm91cHMgfHwgW10pXG4gICAgLmZpbHRlcihsZyA9PiAhdmlzaWJsZUxheWVyR3JvdXBzW2xnLnNsdWddKVxuICAgIC5tYXAobGcgPT4gbGcuZmlsdGVyKTtcblxuICAvLyBpZiBib3R0b20gbWFwXG4gIC8vIGZpbHRlciBvdXQgaW52aXNpYmxlIGxheWVyc1xuICBjb25zdCBmaWx0ZXJlZExheWVycyA9IG1hcFN0eWxlLnN0eWxlLmxheWVycy5maWx0ZXIobGF5ZXIgPT5cbiAgICBpbnZpc2libGVGaWx0ZXJzLmV2ZXJ5KG1hdGNoID0+ICFtYXRjaChsYXllcikpXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5tYXBTdHlsZS5zdHlsZSxcbiAgICBsYXllcnM6IGZpbHRlcmVkTGF5ZXJzXG4gIH07XG59LCByZXNvbHZlcik7XG5cbi8vIHZhbGlkIHN0eWxlIHVybFxuLy8gbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2NqZnlsMDNrcDF0dWwyc21mNXYydGJkZDRcbi8vIGxvd2VyY2FzZSBsZXR0ZXJzLCBudW1iZXJzIGFuZCBkYXNoZXMgb25seS5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkU3R5bGVVcmwodXJsKSB7XG4gIHJldHVybiB0eXBlb2YgdXJsID09PSAnc3RyaW5nJyAmJiBCb29sZWFuKHVybC5tYXRjaChtYXBVcmxSZykgfHwgdXJsLm1hdGNoKGh0dHBSZykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3R5bGVEb3dubG9hZFVybChzdHlsZVVybCwgYWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCkge1xuICBpZiAoc3R5bGVVcmwuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgcmV0dXJuIHN0eWxlVXJsO1xuICB9XG5cbiAgLy8gbWFwYm94Oi8vc3R5bGVzL2pja3IvY2poY2wwbHh2MTNkaTJycGZveXRkYmR5alxuICBpZiAoc3R5bGVVcmwuc3RhcnRzV2l0aCgnbWFwYm94Oi8vc3R5bGVzJykpIHtcbiAgICBjb25zdCBzdHlsZUlkID0gc3R5bGVVcmwucmVwbGFjZSgnbWFwYm94Oi8vc3R5bGVzLycsICcnKTtcblxuICAgIC8vIGh0dHBzOi8vYXBpLm1hcGJveC5jb20vc3R5bGVzL3YxL2hlc2hhbjAxMzEvY2pnMWJmdW1vMWN3bTJybHJqeGtpbmZndz9wbHVnaW5OYW1lPUtlcGxlcmdsJmFjY2Vzc190b2tlbj08dG9rZW4+XG4gICAgcmV0dXJuIGAke21hcGJveEFwaVVybCB8fFxuICAgICAgREVGQVVMVF9NQVBCT1hfQVBJX1VSTH0vc3R5bGVzL3YxLyR7c3R5bGVJZH0/cGx1Z2luTmFtZT1LZXBsZXJnbCZhY2Nlc3NfdG9rZW49JHthY2Nlc3NUb2tlbn1gO1xuICB9XG5cbiAgLy8gc3R5bGUgdXJsIG5vdCByZWNvZ25pemVkXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIHN0YXRpYyBtYXAgaW1hZ2UgZnJvbSBzdHlsZSBVcmwgdG8gYmUgdXNlZCBhcyBpY29uXG4gKiBAcGFyYW0ge09iamVjdH0gcGFyYW1cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbS5zdHlsZVVybFxuICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtLm1hcGJveEFwaUFjY2Vzc1Rva2VuXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW0ubWFwYm94QXBpVXJsXG4gKiBAcGFyYW0ge09iamVjdH0gcGFyYW0ubWFwU3RhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBwYXJhbS5tYXBXXG4gKiBAcGFyYW0ge251bWJlcn0gcGFyYW0ubWFwSFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3R5bGVJbWFnZUljb24oe1xuICBzdHlsZVVybCxcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcGJveEFwaVVybCA9IERFRkFVTFRfTUFQQk9YX0FQSV9VUkwsXG4gIG1hcFN0YXRlID0ge1xuICAgIGxvbmdpdHVkZTogLTEyMi4zMzkxLFxuICAgIGxhdGl0dWRlOiAzNy43OTIyLFxuICAgIHpvb206IDlcbiAgfSxcbiAgbWFwVyA9IDQwMCxcbiAgbWFwSCA9IDMwMFxufSkge1xuICBjb25zdCBzdHlsZUlkID0gc3R5bGVVcmwucmVwbGFjZSgnbWFwYm94Oi8vc3R5bGVzLycsICcnKTtcblxuICByZXR1cm4gKFxuICAgIGAke21hcGJveEFwaVVybH0vc3R5bGVzL3YxLyR7c3R5bGVJZH0vc3RhdGljL2AgK1xuICAgIGAke21hcFN0YXRlLmxvbmdpdHVkZX0sJHttYXBTdGF0ZS5sYXRpdHVkZX0sJHttYXBTdGF0ZS56b29tfSwwLDAvYCArXG4gICAgYCR7bWFwV314JHttYXBIfWAgK1xuICAgIGA/YWNjZXNzX3Rva2VuPSR7bWFwYm94QXBpQWNjZXNzVG9rZW59JmxvZ289ZmFsc2UmYXR0cmlidXRpb249ZmFsc2VgXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uKG1hcGJveFN0eWxlLCBzY2FsZSkge1xuICBpZiAoc2NhbGUgIT09IDEgJiYgbWFwYm94U3R5bGUpIHtcbiAgICBjb25zdCBsYWJlbExheWVyR3JvdXAgPSBERUZBVUxUX0xBWUVSX0dST1VQUy5maW5kKGxnID0+IGxnLnNsdWcgPT09ICdsYWJlbCcpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7ZmlsdGVyOiBsYWJlbExheWVyRmlsdGVyfSA9IGxhYmVsTGF5ZXJHcm91cDtcbiAgICBjb25zdCB6b29tT2Zmc2V0ID0gTWF0aC5sb2cyKHNjYWxlKTtcblxuICAgIGNvbnN0IGNvcHlTdHlsZSA9IGNsb25kRGVlcChtYXBib3hTdHlsZSk7XG4gICAgKGNvcHlTdHlsZS5sYXllcnMgfHwgW10pLmZvckVhY2goZCA9PiB7XG4gICAgICAvLyBlZGl0IG1pbnpvb20gYW5kIG1heHpvb21cbiAgICAgIGlmIChkLm1heHpvb20pIHtcbiAgICAgICAgZC5tYXh6b29tID0gTWF0aC5tYXgoZC5tYXh6b29tICsgem9vbU9mZnNldCwgMSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkLm1pbnpvb20pIHtcbiAgICAgICAgZC5taW56b29tID0gTWF0aC5tYXgoZC5taW56b29tICsgem9vbU9mZnNldCwgMSk7XG4gICAgICB9XG5cbiAgICAgIC8vIGVkaXQgdGV4dCBzaXplXG4gICAgICBpZiAobGFiZWxMYXllckZpbHRlcihkKSkge1xuICAgICAgICBpZiAoZC5sYXlvdXQgJiYgZC5sYXlvdXRbJ3RleHQtc2l6ZSddICYmIEFycmF5LmlzQXJyYXkoZC5sYXlvdXRbJ3RleHQtc2l6ZSddLnN0b3BzKSkge1xuICAgICAgICAgIGQubGF5b3V0Wyd0ZXh0LXNpemUnXS5zdG9wcy5mb3JFYWNoKHN0b3AgPT4ge1xuICAgICAgICAgICAgLy8gem9vbVxuICAgICAgICAgICAgc3RvcFswXSA9IE1hdGgubWF4KHN0b3BbMF0gKyB6b29tT2Zmc2V0LCAxKTtcbiAgICAgICAgICAgIC8vIHNpemVcbiAgICAgICAgICAgIHN0b3BbMV0gKj0gc2NhbGU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb3B5U3R5bGU7XG4gIH1cblxuICByZXR1cm4gbWFwYm94U3R5bGU7XG59XG5cbi8qKlxuICogV2hlbiBzd2l0Y2ggdG8gYSBuZXcgc3R5bGUsIHRyeSB0byBrZWVwIGN1cnJlbnQgbGF5ZXIgZ3JvdXAgdmlzaWJpbGl0eVxuICogYnkgbWVyZ2luZyBkZWZhdWx0IGFuZCBjdXJyZW50XG4gKiBAcGFyYW0ge09iamVjdH0gZGVmYXVsdExheWVyR3JvdXBcbiAqIEBwYXJhbSB7T2JqZWN0fSBjdXJyZW50TGF5ZXJHcm91cFxuICogQHJldHVybiB7T2JqZWN0fSBtZXJnZWRMYXllckdyb3Vwc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VMYXllckdyb3VwVmlzaWJpbGl0eShkZWZhdWx0TGF5ZXJHcm91cCwgY3VycmVudExheWVyR3JvdXApIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGRlZmF1bHRMYXllckdyb3VwKS5yZWR1Y2UoXG4gICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICAuLi4oY3VycmVudExheWVyR3JvdXAuaGFzT3duUHJvcGVydHkoa2V5KSA/IHtba2V5XTogY3VycmVudExheWVyR3JvdXBba2V5XX0gOiB7fSlcbiAgICB9KSxcbiAgICBkZWZhdWx0TGF5ZXJHcm91cFxuICApO1xufVxuIl19
213
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoMiIsIl9kZWZhdWx0U2V0dGluZ3MiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm1hcFVybFJnIiwiaHR0cFJnIiwiZ2V0RGVmYXVsdExheWVyR3JvdXBWaXNpYmlsaXR5IiwiX3JlZiIsIl9yZWYkbGF5ZXJHcm91cHMiLCJsYXllckdyb3VwcyIsInJlZHVjZSIsImFjY3UiLCJsYXllciIsInNsdWciLCJkZWZhdWx0VmlzaWJpbGl0eSIsInJlc29sdmVyIiwiX3JlZjIiLCJpZCIsIm1hcFN0eWxlIiwiX3JlZjIkdmlzaWJsZUxheWVyR3JvIiwidmlzaWJsZUxheWVyR3JvdXBzIiwiY29uY2F0IiwiZCIsInNvcnQiLCJqb2luIiwiZWRpdFRvcE1hcFN0eWxlIiwiZXhwb3J0cyIsIm1lbW9pemUiLCJfcmVmMyIsInZpc2libGVGaWx0ZXJzIiwibGciLCJtYXAiLCJmaWx0ZXJlZExheWVycyIsInN0eWxlIiwibGF5ZXJzIiwic29tZSIsIm1hdGNoIiwiZWRpdEJvdHRvbU1hcFN0eWxlIiwiX3JlZjQiLCJpbnZpc2libGVGaWx0ZXJzIiwiZXZlcnkiLCJpc1ZhbGlkU3R5bGVVcmwiLCJ1cmwiLCJCb29sZWFuIiwiZ2V0U3R5bGVEb3dubG9hZFVybCIsInN0eWxlVXJsIiwiYWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJzdGFydHNXaXRoIiwic3R5bGVJZCIsInJlcGxhY2UiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwiZ2V0U3R5bGVJbWFnZUljb24iLCJfcmVmNSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiX3JlZjUkbWFwYm94QXBpVXJsIiwiX3JlZjUkbWFwU3RhdGUiLCJtYXBTdGF0ZSIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwiem9vbSIsIl9yZWY1JG1hcFciLCJtYXBXIiwiX3JlZjUkbWFwSCIsIm1hcEgiLCJzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uIiwibWFwYm94U3R5bGUiLCJzY2FsZSIsImxhYmVsTGF5ZXJHcm91cCIsIkRFRkFVTFRfTEFZRVJfR1JPVVBTIiwiZmluZCIsImxhYmVsTGF5ZXJGaWx0ZXIiLCJ6b29tT2Zmc2V0IiwiTWF0aCIsImxvZzIiLCJjb3B5U3R5bGUiLCJjbG9uZERlZXAiLCJtYXh6b29tIiwibWF4IiwibWluem9vbSIsImxheW91dCIsIkFycmF5IiwiaXNBcnJheSIsInN0b3BzIiwic3RvcCIsIm1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHkiLCJkZWZhdWx0TGF5ZXJHcm91cCIsImN1cnJlbnRMYXllckdyb3VwIiwia2V5IiwiaGFzT3duUHJvcGVydHkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvbWFwLXN0eWxlLXV0aWxzL21hcGJveC1nbC1zdHlsZS1lZGl0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IG1lbW9pemUgZnJvbSAnbG9kYXNoLm1lbW9pemUnO1xuaW1wb3J0IGNsb25kRGVlcCBmcm9tICdsb2Rhc2guY2xvbmVkZWVwJztcbmltcG9ydCB7REVGQVVMVF9MQVlFUl9HUk9VUFMsIERFRkFVTFRfTUFQQk9YX0FQSV9VUkx9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcblxuY29uc3QgbWFwVXJsUmcgPSAvXm1hcGJveDpcXC9cXC9zdHlsZXNcXC9bLWEtejAtOV17MiwyNTZ9XFwvWy1hLXowLTldezIsMjU2fS87XG5jb25zdCBodHRwUmcgPSAvXig/PShodHRwOnxodHRwczopKS87XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0TGF5ZXJHcm91cFZpc2liaWxpdHkoe2xheWVyR3JvdXBzID0gW119KSB7XG4gIHJldHVybiBsYXllckdyb3Vwcy5yZWR1Y2UoXG4gICAgKGFjY3UsIGxheWVyKSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtsYXllci5zbHVnXTogbGF5ZXIuZGVmYXVsdFZpc2liaWxpdHlcbiAgICB9KSxcbiAgICB7fVxuICApO1xufVxuXG5jb25zdCByZXNvbHZlciA9ICh7aWQsIG1hcFN0eWxlLCB2aXNpYmxlTGF5ZXJHcm91cHMgPSB7fX0pID0+XG4gIGAke2lkfToke09iamVjdC5rZXlzKHZpc2libGVMYXllckdyb3VwcylcbiAgICAuZmlsdGVyKGQgPT4gdmlzaWJsZUxheWVyR3JvdXBzW2RdKVxuICAgIC5zb3J0KClcbiAgICAuam9pbignLScpfWA7XG5cbi8qKlxuICogRWRpdCBwcmVzZXQgbWFwIHN0eWxlIHRvIGtlZXAgb25seSB2aXNpYmxlIGxheWVyc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXBTdHlsZSAtIHByZXNldCBtYXAgc3R5bGVcbiAqIEBwYXJhbSB7T2JqZWN0fSB2aXNpYmxlTGF5ZXJHcm91cHMgLSB2aXNpYmxlIGxheWVycyBvZiB0b3AgbWFwXG4gKiBAcmV0dXJucyB7T2JqZWN0fSB0b3AgbWFwIHN0eWxlXG4gKi9cbmV4cG9ydCBjb25zdCBlZGl0VG9wTWFwU3R5bGUgPSBtZW1vaXplKCh7aWQsIG1hcFN0eWxlLCB2aXNpYmxlTGF5ZXJHcm91cHN9KSA9PiB7XG4gIGNvbnN0IHZpc2libGVGaWx0ZXJzID0gKG1hcFN0eWxlLmxheWVyR3JvdXBzIHx8IFtdKVxuICAgIC5maWx0ZXIobGcgPT4gdmlzaWJsZUxheWVyR3JvdXBzW2xnLnNsdWddKVxuICAgIC5tYXAobGcgPT4gbGcuZmlsdGVyKTtcblxuICAvLyBpZiB0b3AgbWFwXG4gIC8vIGtlZXAgb25seSB2aXNpYmxlIGxheWVyc1xuICBjb25zdCBmaWx0ZXJlZExheWVycyA9IG1hcFN0eWxlLnN0eWxlLmxheWVycy5maWx0ZXIobGF5ZXIgPT5cbiAgICB2aXNpYmxlRmlsdGVycy5zb21lKG1hdGNoID0+IG1hdGNoKGxheWVyKSlcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm1hcFN0eWxlLnN0eWxlLFxuICAgIGxheWVyczogZmlsdGVyZWRMYXllcnNcbiAgfTtcbn0sIHJlc29sdmVyKTtcblxuLyoqXG4gKiBFZGl0IHByZXNldCBtYXAgc3R5bGUgdG8gZmlsdGVyIG91dCBpbnZpc2libGUgbGF5ZXJzXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG1hcFN0eWxlIC0gcHJlc2V0IG1hcCBzdHlsZVxuICogQHBhcmFtIHtPYmplY3R9IHZpc2libGVMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIGJvdHRvbSBtYXBcbiAqIEByZXR1cm5zIHtPYmplY3R9IGJvdHRvbSBtYXAgc3R5bGVcbiAqL1xuZXhwb3J0IGNvbnN0IGVkaXRCb3R0b21NYXBTdHlsZSA9IG1lbW9pemUoKHtpZCwgbWFwU3R5bGUsIHZpc2libGVMYXllckdyb3Vwc30pID0+IHtcbiAgY29uc3QgaW52aXNpYmxlRmlsdGVycyA9IChtYXBTdHlsZS5sYXllckdyb3VwcyB8fCBbXSlcbiAgICAuZmlsdGVyKGxnID0+ICF2aXNpYmxlTGF5ZXJHcm91cHNbbGcuc2x1Z10pXG4gICAgLm1hcChsZyA9PiBsZy5maWx0ZXIpO1xuXG4gIC8vIGlmIGJvdHRvbSBtYXBcbiAgLy8gZmlsdGVyIG91dCBpbnZpc2libGUgbGF5ZXJzXG4gIGNvbnN0IGZpbHRlcmVkTGF5ZXJzID0gbWFwU3R5bGUuc3R5bGUubGF5ZXJzLmZpbHRlcihsYXllciA9PlxuICAgIGludmlzaWJsZUZpbHRlcnMuZXZlcnkobWF0Y2ggPT4gIW1hdGNoKGxheWVyKSlcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm1hcFN0eWxlLnN0eWxlLFxuICAgIGxheWVyczogZmlsdGVyZWRMYXllcnNcbiAgfTtcbn0sIHJlc29sdmVyKTtcblxuLy8gdmFsaWQgc3R5bGUgdXJsXG4vLyBtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pmeWwwM2twMXR1bDJzbWY1djJ0YmRkNFxuLy8gbG93ZXJjYXNlIGxldHRlcnMsIG51bWJlcnMgYW5kIGRhc2hlcyBvbmx5LlxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRTdHlsZVVybCh1cmwpIHtcbiAgcmV0dXJuIHR5cGVvZiB1cmwgPT09ICdzdHJpbmcnICYmIEJvb2xlYW4odXJsLm1hdGNoKG1hcFVybFJnKSB8fCB1cmwubWF0Y2goaHR0cFJnKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdHlsZURvd25sb2FkVXJsKHN0eWxlVXJsLCBhY2Nlc3NUb2tlbiwgbWFwYm94QXBpVXJsKSB7XG4gIGlmIChzdHlsZVVybC5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICByZXR1cm4gc3R5bGVVcmw7XG4gIH1cblxuICAvLyBtYXBib3g6Ly9zdHlsZXMvamNrci9jamhjbDBseHYxM2RpMnJwZm95dGRiZHlqXG4gIGlmIChzdHlsZVVybC5zdGFydHNXaXRoKCdtYXBib3g6Ly9zdHlsZXMnKSkge1xuICAgIGNvbnN0IHN0eWxlSWQgPSBzdHlsZVVybC5yZXBsYWNlKCdtYXBib3g6Ly9zdHlsZXMvJywgJycpO1xuXG4gICAgLy8gaHR0cHM6Ly9hcGkubWFwYm94LmNvbS9zdHlsZXMvdjEvaGVzaGFuMDEzMS9jamcxYmZ1bW8xY3dtMnJscmp4a2luZmd3P3BsdWdpbk5hbWU9S2VwbGVyZ2wmYWNjZXNzX3Rva2VuPTx0b2tlbj5cbiAgICByZXR1cm4gYCR7bWFwYm94QXBpVXJsIHx8XG4gICAgICBERUZBVUxUX01BUEJPWF9BUElfVVJMfS9zdHlsZXMvdjEvJHtzdHlsZUlkfT9wbHVnaW5OYW1lPUtlcGxlcmdsJmFjY2Vzc190b2tlbj0ke2FjY2Vzc1Rva2VufWA7XG4gIH1cblxuICAvLyBzdHlsZSB1cmwgbm90IHJlY29nbml6ZWRcbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgc3RhdGljIG1hcCBpbWFnZSBmcm9tIHN0eWxlIFVybCB0byBiZSB1c2VkIGFzIGljb25cbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbVxuICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtLnN0eWxlVXJsXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW0ubWFwYm94QXBpQWNjZXNzVG9rZW5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbS5tYXBib3hBcGlVcmxcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbS5tYXBTdGF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHBhcmFtLm1hcFdcbiAqIEBwYXJhbSB7bnVtYmVyfSBwYXJhbS5tYXBIXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdHlsZUltYWdlSWNvbih7XG4gIHN0eWxlVXJsLFxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgbWFwYm94QXBpVXJsID0gREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgbWFwU3RhdGUgPSB7XG4gICAgbG9uZ2l0dWRlOiAtMTIyLjMzOTEsXG4gICAgbGF0aXR1ZGU6IDM3Ljc5MjIsXG4gICAgem9vbTogOVxuICB9LFxuICBtYXBXID0gNDAwLFxuICBtYXBIID0gMzAwXG59KSB7XG4gIGNvbnN0IHN0eWxlSWQgPSBzdHlsZVVybC5yZXBsYWNlKCdtYXBib3g6Ly9zdHlsZXMvJywgJycpO1xuXG4gIHJldHVybiAoXG4gICAgYCR7bWFwYm94QXBpVXJsfS9zdHlsZXMvdjEvJHtzdHlsZUlkfS9zdGF0aWMvYCArXG4gICAgYCR7bWFwU3RhdGUubG9uZ2l0dWRlfSwke21hcFN0YXRlLmxhdGl0dWRlfSwke21hcFN0YXRlLnpvb219LDAsMC9gICtcbiAgICBgJHttYXBXfXgke21hcEh9YCArXG4gICAgYD9hY2Nlc3NfdG9rZW49JHttYXBib3hBcGlBY2Nlc3NUb2tlbn0mbG9nbz1mYWxzZSZhdHRyaWJ1dGlvbj1mYWxzZWBcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlTWFwU3R5bGVCeVJlc29sdXRpb24obWFwYm94U3R5bGUsIHNjYWxlKSB7XG4gIGlmIChzY2FsZSAhPT0gMSAmJiBtYXBib3hTdHlsZSkge1xuICAgIGNvbnN0IGxhYmVsTGF5ZXJHcm91cCA9IERFRkFVTFRfTEFZRVJfR1JPVVBTLmZpbmQobGcgPT4gbGcuc2x1ZyA9PT0gJ2xhYmVsJyk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHtmaWx0ZXI6IGxhYmVsTGF5ZXJGaWx0ZXJ9ID0gbGFiZWxMYXllckdyb3VwO1xuICAgIGNvbnN0IHpvb21PZmZzZXQgPSBNYXRoLmxvZzIoc2NhbGUpO1xuXG4gICAgY29uc3QgY29weVN0eWxlID0gY2xvbmREZWVwKG1hcGJveFN0eWxlKTtcbiAgICAoY29weVN0eWxlLmxheWVycyB8fCBbXSkuZm9yRWFjaChkID0+IHtcbiAgICAgIC8vIGVkaXQgbWluem9vbSBhbmQgbWF4em9vbVxuICAgICAgaWYgKGQubWF4em9vbSkge1xuICAgICAgICBkLm1heHpvb20gPSBNYXRoLm1heChkLm1heHpvb20gKyB6b29tT2Zmc2V0LCAxKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGQubWluem9vbSkge1xuICAgICAgICBkLm1pbnpvb20gPSBNYXRoLm1heChkLm1pbnpvb20gKyB6b29tT2Zmc2V0LCAxKTtcbiAgICAgIH1cblxuICAgICAgLy8gZWRpdCB0ZXh0IHNpemVcbiAgICAgIGlmIChsYWJlbExheWVyRmlsdGVyKGQpKSB7XG4gICAgICAgIGlmIChkLmxheW91dCAmJiBkLmxheW91dFsndGV4dC1zaXplJ10gJiYgQXJyYXkuaXNBcnJheShkLmxheW91dFsndGV4dC1zaXplJ10uc3RvcHMpKSB7XG4gICAgICAgICAgZC5sYXlvdXRbJ3RleHQtc2l6ZSddLnN0b3BzLmZvckVhY2goc3RvcCA9PiB7XG4gICAgICAgICAgICAvLyB6b29tXG4gICAgICAgICAgICBzdG9wWzBdID0gTWF0aC5tYXgoc3RvcFswXSArIHpvb21PZmZzZXQsIDEpO1xuICAgICAgICAgICAgLy8gc2l6ZVxuICAgICAgICAgICAgc3RvcFsxXSAqPSBzY2FsZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvcHlTdHlsZTtcbiAgfVxuXG4gIHJldHVybiBtYXBib3hTdHlsZTtcbn1cblxuLyoqXG4gKiBXaGVuIHN3aXRjaCB0byBhIG5ldyBzdHlsZSwgdHJ5IHRvIGtlZXAgY3VycmVudCBsYXllciBncm91cCB2aXNpYmlsaXR5XG4gKiBieSBtZXJnaW5nIGRlZmF1bHQgYW5kIGN1cnJlbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0TGF5ZXJHcm91cFxuICogQHBhcmFtIHtPYmplY3R9IGN1cnJlbnRMYXllckdyb3VwXG4gKiBAcmV0dXJuIHtPYmplY3R9IG1lcmdlZExheWVyR3JvdXBzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5KGRlZmF1bHRMYXllckdyb3VwLCBjdXJyZW50TGF5ZXJHcm91cCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVmYXVsdExheWVyR3JvdXApLnJlZHVjZShcbiAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIC4uLihjdXJyZW50TGF5ZXJHcm91cC5oYXNPd25Qcm9wZXJ0eShrZXkpID8ge1trZXldOiBjdXJyZW50TGF5ZXJHcm91cFtrZXldfSA6IHt9KVxuICAgIH0pLFxuICAgIGRlZmF1bHRM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
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.transformRequest = void 0;
7
-
8
7
  // Copyright (c) 2022 Uber Technologies, Inc.
9
8
  //
10
9
  // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -24,12 +23,11 @@ exports.transformRequest = void 0;
24
23
  // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
24
  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
26
25
  // THE SOFTWARE.
27
- var transformRequest = function transformRequest(url) {
26
+
27
+ var transformRequest = exports.transformRequest = function transformRequest(url) {
28
28
  var isMapboxRequest = url.slice(8, 22) === 'api.mapbox.com' || url.slice(10, 26) === 'tiles.mapbox.com';
29
29
  return {
30
30
  url: isMapboxRequest ? url.replace('?', '?pluginName=Keplergl&') : url
31
31
  };
32
32
  };
33
-
34
- exports.transformRequest = transformRequest;
35
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9tYXAtc3R5bGUtdXRpbHMvbWFwYm94LXV0aWxzLmpzIl0sIm5hbWVzIjpbInRyYW5zZm9ybVJlcXVlc3QiLCJ1cmwiLCJpc01hcGJveFJlcXVlc3QiLCJzbGljZSIsInJlcGxhY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVPLElBQU1BLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBbUIsQ0FBQUMsR0FBRyxFQUFJO0FBQ3JDLE1BQU1DLGVBQWUsR0FDbkJELEdBQUcsQ0FBQ0UsS0FBSixDQUFVLENBQVYsRUFBYSxFQUFiLE1BQXFCLGdCQUFyQixJQUF5Q0YsR0FBRyxDQUFDRSxLQUFKLENBQVUsRUFBVixFQUFjLEVBQWQsTUFBc0Isa0JBRGpFO0FBR0EsU0FBTztBQUNMRixJQUFBQSxHQUFHLEVBQUVDLGVBQWUsR0FBR0QsR0FBRyxDQUFDRyxPQUFKLENBQVksR0FBWixFQUFpQix1QkFBakIsQ0FBSCxHQUErQ0g7QUFEOUQsR0FBUDtBQUdELENBUE0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtUmVxdWVzdCA9IHVybCA9PiB7XG4gIGNvbnN0IGlzTWFwYm94UmVxdWVzdCA9XG4gICAgdXJsLnNsaWNlKDgsIDIyKSA9PT0gJ2FwaS5tYXBib3guY29tJyB8fCB1cmwuc2xpY2UoMTAsIDI2KSA9PT0gJ3RpbGVzLm1hcGJveC5jb20nO1xuXG4gIHJldHVybiB7XG4gICAgdXJsOiBpc01hcGJveFJlcXVlc3QgPyB1cmwucmVwbGFjZSgnPycsICc/cGx1Z2luTmFtZT1LZXBsZXJnbCYnKSA6IHVybFxuICB9O1xufTtcbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0cmFuc2Zvcm1SZXF1ZXN0IiwiZXhwb3J0cyIsInVybCIsImlzTWFwYm94UmVxdWVzdCIsInNsaWNlIiwicmVwbGFjZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9tYXAtc3R5bGUtdXRpbHMvbWFwYm94LXV0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1SZXF1ZXN0ID0gdXJsID0+IHtcbiAgY29uc3QgaXNNYXBib3hSZXF1ZXN0ID1cbiAgICB1cmwuc2xpY2UoOCwgMjIpID09PSAnYXBpLm1hcGJveC5jb20nIHx8IHVybC5zbGljZSgxMCwgMjYpID09PSAndGlsZXMubWFwYm94LmNvbSc7XG5cbiAgcmV0dXJuIHtcbiAgICB1cmw6IGlzTWFwYm94UmVxdWVzdCA/IHVybC5yZXBsYWNlKCc/JywgJz9wbHVnaW5OYW1lPUtlcGxlcmdsJicpIDogdXJsXG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTyxJQUFNQSxnQkFBZ0IsR0FBQUMsT0FBQSxDQUFBRCxnQkFBQSxHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQUdFLEdBQUcsRUFBSTtFQUNyQyxJQUFNQyxlQUFlLEdBQ25CRCxHQUFHLENBQUNFLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssZ0JBQWdCLElBQUlGLEdBQUcsQ0FBQ0UsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxrQkFBa0I7RUFFbkYsT0FBTztJQUNMRixHQUFHLEVBQUVDLGVBQWUsR0FBR0QsR0FBRyxDQUFDRyxPQUFPLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDLEdBQUdIO0VBQ3JFLENBQUM7QUFDSCxDQUFDIn0=
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.validateToken = void 0;
7
-
8
7
  // Copyright (c) 2022 Uber Technologies, Inc.
9
8
  //
10
9
  // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -31,9 +30,7 @@ exports.validateToken = void 0;
31
30
  * @param {string} token the Mapbox token to validate
32
31
  * @return {boolean} true if token is valid, false otherwise
33
32
  */
34
- var validateToken = function validateToken(token) {
33
+ var validateToken = exports.validateToken = function validateToken(token) {
35
34
  return (token || '') !== '';
36
35
  };
37
-
38
- exports.validateToken = validateToken;
39
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9tYXBib3gtdXRpbHMuanMiXSwibmFtZXMiOlsidmFsaWRhdGVUb2tlbiIsInRva2VuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUEsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixDQUFBQyxLQUFLO0FBQUEsU0FBSSxDQUFDQSxLQUFLLElBQUksRUFBVixNQUFrQixFQUF0QjtBQUFBLENBQTNCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLyoqXG4gKiBUaGlzIG1ldGhvZCB2YWxpZGF0ZXMgbWFwYm94IHRva2VuLlxuICogVGhpcyB0b2tlbiBwcm92aWRlcyBhIHNpbXBsZSBzeW5jaHJvbm91cyB2YWxpZGF0aW9uXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9rZW4gdGhlIE1hcGJveCB0b2tlbiB0byB2YWxpZGF0ZVxuICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiB0b2tlbiBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVRva2VuID0gdG9rZW4gPT4gKHRva2VuIHx8ICcnKSAhPT0gJyc7XG4iXX0=
36
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ2YWxpZGF0ZVRva2VuIiwiZXhwb3J0cyIsInRva2VuIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL21hcGJveC11dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHZhbGlkYXRlcyBtYXBib3ggdG9rZW4uXG4gKiBUaGlzIHRva2VuIHByb3ZpZGVzIGEgc2ltcGxlIHN5bmNocm9ub3VzIHZhbGlkYXRpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlbiB0aGUgTWFwYm94IHRva2VuIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIHRva2VuIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlVG9rZW4gPSB0b2tlbiA9PiAodG9rZW4gfHwgJycpICE9PSAnJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUEsYUFBYSxHQUFBQyxPQUFBLENBQUFELGFBQUEsR0FBRyxTQUFoQkEsYUFBYUEsQ0FBR0UsS0FBSztFQUFBLE9BQUksQ0FBQ0EsS0FBSyxJQUFJLEVBQUUsTUFBTSxFQUFFO0FBQUEifQ==
@@ -1,27 +1,37 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.createNotification = createNotification;
9
- exports.exportImageError = exports.successNotification = exports.errorNotification = void 0;
10
-
8
+ exports.successNotification = exports.exportImageError = exports.errorNotification = void 0;
11
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
-
13
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
14
-
15
11
  var _utils = require("./utils");
16
-
17
12
  var _defaultSettings = require("../constants/default-settings");
18
-
19
13
  var _userGuides = require("../constants/user-guides");
20
-
21
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
22
-
23
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
24
-
14
+ var _excluded = ["message", "type", "topic", "id"]; // Copyright (c) 2022 Uber Technologies, Inc.
15
+ //
16
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
17
+ // of this software and associated documentation files (the "Software"), to deal
18
+ // in the Software without restriction, including without limitation the rights
19
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
20
+ // copies of the Software, and to permit persons to whom the Software is
21
+ // furnished to do so, subject to the following conditions:
22
+ //
23
+ // The above copyright notice and this permission notice shall be included in
24
+ // all copies or substantial portions of the Software.
25
+ //
26
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
29
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
31
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
32
+ // THE SOFTWARE.
33
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
34
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
25
35
  /**
26
36
  * Creates a notification
27
37
  * @param {object} opt
@@ -34,14 +44,14 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
34
44
  */
35
45
  function createNotification(_ref) {
36
46
  var _ref$message = _ref.message,
37
- message = _ref$message === void 0 ? _defaultSettings.DEFAULT_NOTIFICATION_MESSAGE : _ref$message,
38
- _ref$type = _ref.type,
39
- type = _ref$type === void 0 ? _defaultSettings.DEFAULT_NOTIFICATION_TYPES.info : _ref$type,
40
- _ref$topic = _ref.topic,
41
- topic = _ref$topic === void 0 ? _defaultSettings.DEFAULT_NOTIFICATION_TOPICS.global : _ref$topic,
42
- _ref$id = _ref.id,
43
- id = _ref$id === void 0 ? (0, _utils.generateHashId)(_defaultSettings.DEFAULT_UUID_COUNT) : _ref$id,
44
- options = (0, _objectWithoutProperties2["default"])(_ref, ["message", "type", "topic", "id"]);
47
+ message = _ref$message === void 0 ? _defaultSettings.DEFAULT_NOTIFICATION_MESSAGE : _ref$message,
48
+ _ref$type = _ref.type,
49
+ type = _ref$type === void 0 ? _defaultSettings.DEFAULT_NOTIFICATION_TYPES.info : _ref$type,
50
+ _ref$topic = _ref.topic,
51
+ topic = _ref$topic === void 0 ? _defaultSettings.DEFAULT_NOTIFICATION_TOPICS.global : _ref$topic,
52
+ _ref$id = _ref.id,
53
+ id = _ref$id === void 0 ? (0, _utils.generateHashId)(_defaultSettings.DEFAULT_UUID_COUNT) : _ref$id,
54
+ options = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
45
55
  return _objectSpread(_objectSpread({}, options), {}, {
46
56
  id: id,
47
57
  message: message,
@@ -49,41 +59,32 @@ function createNotification(_ref) {
49
59
  topic: topic
50
60
  });
51
61
  }
62
+
52
63
  /**
53
64
  * Creates an error notification
54
65
  * @param options
55
66
  * @returns {{topic, id, message, type: (null|number)}}
56
67
  */
57
-
58
-
59
- var errorNotification = function errorNotification(options) {
68
+ var errorNotification = exports.errorNotification = function errorNotification(options) {
60
69
  return _objectSpread(_objectSpread({}, createNotification(options)), {}, {
61
70
  type: _defaultSettings.DEFAULT_NOTIFICATION_TYPES.error
62
71
  });
63
72
  };
73
+
64
74
  /**
65
75
  * Creates a success notification
66
76
  * @param options
67
77
  * @returns {{topic, id, message, type: null}}
68
78
  */
69
-
70
-
71
- exports.errorNotification = errorNotification;
72
-
73
- var successNotification = function successNotification(options) {
79
+ var successNotification = exports.successNotification = function successNotification(options) {
74
80
  return _objectSpread(_objectSpread({}, createNotification(options)), {}, {
75
81
  type: _defaultSettings.DEFAULT_NOTIFICATION_TYPES.success
76
82
  });
77
83
  };
78
-
79
- exports.successNotification = successNotification;
80
-
81
- var exportImageError = function exportImageError(options) {
84
+ var exportImageError = exports.exportImageError = function exportImageError(options) {
82
85
  return errorNotification(_objectSpread(_objectSpread({}, options), {}, {
83
86
  topic: _defaultSettings.DEFAULT_NOTIFICATION_TOPICS.global,
84
87
  message: "Failed to export image, please take a screenshot of the javascript console, report the with [this link](".concat(_userGuides.BUG_REPORT_LINK, ") ")
85
88
  }));
86
89
  };
87
-
88
- exports.exportImageError = exportImageError;
89
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9ub3RpZmljYXRpb25zLXV0aWxzLmpzIl0sIm5hbWVzIjpbImNyZWF0ZU5vdGlmaWNhdGlvbiIsIm1lc3NhZ2UiLCJERUZBVUxUX05PVElGSUNBVElPTl9NRVNTQUdFIiwidHlwZSIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTIiwiaW5mbyIsInRvcGljIiwiREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTIiwiZ2xvYmFsIiwiaWQiLCJERUZBVUxUX1VVSURfQ09VTlQiLCJvcHRpb25zIiwiZXJyb3JOb3RpZmljYXRpb24iLCJlcnJvciIsInN1Y2Nlc3NOb3RpZmljYXRpb24iLCJzdWNjZXNzIiwiZXhwb3J0SW1hZ2VFcnJvciIsIkJVR19SRVBPUlRfTElOSyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBRUE7O0FBT0E7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0Esa0JBQVQsT0FNSjtBQUFBLDBCQUxEQyxPQUtDO0FBQUEsTUFMREEsT0FLQyw2QkFMU0MsNkNBS1Q7QUFBQSx1QkFKREMsSUFJQztBQUFBLE1BSkRBLElBSUMsMEJBSk1DLDRDQUEyQkMsSUFJakM7QUFBQSx3QkFIREMsS0FHQztBQUFBLE1BSERBLEtBR0MsMkJBSE9DLDZDQUE0QkMsTUFHbkM7QUFBQSxxQkFGREMsRUFFQztBQUFBLE1BRkRBLEVBRUMsd0JBRkksMkJBQWVDLG1DQUFmLENBRUo7QUFBQSxNQURFQyxPQUNGO0FBQ0QseUNBQ0tBLE9BREw7QUFFRUYsSUFBQUEsRUFBRSxFQUFGQSxFQUZGO0FBR0VSLElBQUFBLE9BQU8sRUFBUEEsT0FIRjtBQUlFRSxJQUFBQSxJQUFJLEVBQUpBLElBSkY7QUFLRUcsSUFBQUEsS0FBSyxFQUFMQTtBQUxGO0FBT0Q7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNTSxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQW9CLENBQUFELE9BQU87QUFBQSx5Q0FDbkNYLGtCQUFrQixDQUFDVyxPQUFELENBRGlCO0FBRXRDUixJQUFBQSxJQUFJLEVBQUVDLDRDQUEyQlM7QUFGSztBQUFBLENBQWpDO0FBS1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxJQUFNQyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQXNCLENBQUFILE9BQU87QUFBQSx5Q0FDckNYLGtCQUFrQixDQUFDVyxPQUFELENBRG1CO0FBRXhDUixJQUFBQSxJQUFJLEVBQUVDLDRDQUEyQlc7QUFGTztBQUFBLENBQW5DOzs7O0FBS0EsSUFBTUMsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFtQixDQUFBTCxPQUFPO0FBQUEsU0FDckNDLGlCQUFpQixpQ0FDWkQsT0FEWTtBQUVmTCxJQUFBQSxLQUFLLEVBQUVDLDZDQUE0QkMsTUFGcEI7QUFHZlAsSUFBQUEsT0FBTyxvSEFBNkdnQiwyQkFBN0c7QUFIUSxLQURvQjtBQUFBLENBQWhDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZH0gZnJvbSAnLi91dGlscyc7XG5cbmltcG9ydCB7XG4gIERFRkFVTFRfTk9USUZJQ0FUSU9OX01FU1NBR0UsXG4gIERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyxcbiAgREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMsXG4gIERFRkFVTFRfVVVJRF9DT1VOVFxufSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5cbmltcG9ydCB7QlVHX1JFUE9SVF9MSU5LfSBmcm9tICdjb25zdGFudHMvdXNlci1ndWlkZXMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBub3RpZmljYXRpb25cbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHQubWVzc2FnZSAtIE1lc3NhZ2UgdG8gZGlzcGxheSBkdXJpbmcgdGhlIG5vdGlmaWNhdGlvblxuICogQHBhcmFtIHtzdHJpbmd9IG9wdC50eXBlIC0gVGhlIHR5cGUgb2YgbWVzc2FnZS4gT25lIG9mIERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0LnRvcGljIC0gVGhlIHRvcGljIHRoZSBub3RpZmljYXRpb24gYmVsb25ncyB0by4gT25lIG9mIERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDU1xuICogQHBhcmFtIHtzdHJpbmd9IG9wdC5pZCBvcHRpb25hbCBpZCBmb3Igbm90aWZpY2F0aW9uLiBJZiBub3QgcHJvdmlkZWQgaXQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgdGhlIG1ldGhvZFxuICogQHBhcmFtIHtvYmplY3R9IG9wdC5vcHRpb25zIC0gRXh0cmEgcGFyYW1ldGVycyB0byBzdG9yZSBhcyBwYXJ0IG9mIGh0ZSBub3RpZmljYXRpb25cbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOb3RpZmljYXRpb24oe1xuICBtZXNzYWdlID0gREVGQVVMVF9OT1RJRklDQVRJT05fTUVTU0FHRSxcbiAgdHlwZSA9IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTLmluZm8sXG4gIHRvcGljID0gREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTLmdsb2JhbCxcbiAgaWQgPSBnZW5lcmF0ZUhhc2hJZChERUZBVUxUX1VVSURfQ09VTlQpLFxuICAuLi5vcHRpb25zXG59KSB7XG4gIHJldHVybiB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBpZCxcbiAgICBtZXNzYWdlLFxuICAgIHR5cGUsXG4gICAgdG9waWNcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVycm9yIG5vdGlmaWNhdGlvblxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zIHt7dG9waWMsIGlkLCBtZXNzYWdlLCB0eXBlOiAobnVsbHxudW1iZXIpfX1cbiAqL1xuZXhwb3J0IGNvbnN0IGVycm9yTm90aWZpY2F0aW9uID0gb3B0aW9ucyA9PiAoe1xuICAuLi5jcmVhdGVOb3RpZmljYXRpb24ob3B0aW9ucyksXG4gIHR5cGU6IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTLmVycm9yXG59KTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc3VjY2VzcyBub3RpZmljYXRpb25cbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyB7e3RvcGljLCBpZCwgbWVzc2FnZSwgdHlwZTogbnVsbH19XG4gKi9cbmV4cG9ydCBjb25zdCBzdWNjZXNzTm90aWZpY2F0aW9uID0gb3B0aW9ucyA9PiAoe1xuICAuLi5jcmVhdGVOb3RpZmljYXRpb24ob3B0aW9ucyksXG4gIHR5cGU6IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTLnN1Y2Nlc3Ncbn0pO1xuXG5leHBvcnQgY29uc3QgZXhwb3J0SW1hZ2VFcnJvciA9IG9wdGlvbnMgPT5cbiAgZXJyb3JOb3RpZmljYXRpb24oe1xuICAgIC4uLm9wdGlvbnMsXG4gICAgdG9waWM6IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUy5nbG9iYWwsXG4gICAgbWVzc2FnZTogYEZhaWxlZCB0byBleHBvcnQgaW1hZ2UsIHBsZWFzZSB0YWtlIGEgc2NyZWVuc2hvdCBvZiB0aGUgamF2YXNjcmlwdCBjb25zb2xlLCByZXBvcnQgdGhlIHdpdGggW3RoaXMgbGlua10oJHtCVUdfUkVQT1JUX0xJTkt9KSBgXG4gIH0pO1xuIl19
90
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbHMiLCJyZXF1aXJlIiwiX2RlZmF1bHRTZXR0aW5ncyIsIl91c2VyR3VpZGVzIiwiX2V4Y2x1ZGVkIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVOb3RpZmljYXRpb24iLCJfcmVmIiwiX3JlZiRtZXNzYWdlIiwibWVzc2FnZSIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX01FU1NBR0UiLCJfcmVmJHR5cGUiLCJ0eXBlIiwiREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMiLCJpbmZvIiwiX3JlZiR0b3BpYyIsInRvcGljIiwiREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTIiwiZ2xvYmFsIiwiX3JlZiRpZCIsImlkIiwiZ2VuZXJhdGVIYXNoSWQiLCJERUZBVUxUX1VVSURfQ09VTlQiLCJvcHRpb25zIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsImVycm9yTm90aWZpY2F0aW9uIiwiZXhwb3J0cyIsImVycm9yIiwic3VjY2Vzc05vdGlmaWNhdGlvbiIsInN1Y2Nlc3MiLCJleHBvcnRJbWFnZUVycm9yIiwiY29uY2F0IiwiQlVHX1JFUE9SVF9MSU5LIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL25vdGlmaWNhdGlvbnMtdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZH0gZnJvbSAnLi91dGlscyc7XG5cbmltcG9ydCB7XG4gIERFRkFVTFRfTk9USUZJQ0FUSU9OX01FU1NBR0UsXG4gIERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyxcbiAgREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMsXG4gIERFRkFVTFRfVVVJRF9DT1VOVFxufSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5cbmltcG9ydCB7QlVHX1JFUE9SVF9MSU5LfSBmcm9tICdjb25zdGFudHMvdXNlci1ndWlkZXMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBub3RpZmljYXRpb25cbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHQubWVzc2FnZSAtIE1lc3NhZ2UgdG8gZGlzcGxheSBkdXJpbmcgdGhlIG5vdGlmaWNhdGlvblxuICogQHBhcmFtIHtzdHJpbmd9IG9wdC50eXBlIC0gVGhlIHR5cGUgb2YgbWVzc2FnZS4gT25lIG9mIERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0LnRvcGljIC0gVGhlIHRvcGljIHRoZSBub3RpZmljYXRpb24gYmVsb25ncyB0by4gT25lIG9mIERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDU1xuICogQHBhcmFtIHtzdHJpbmd9IG9wdC5pZCBvcHRpb25hbCBpZCBmb3Igbm90aWZpY2F0aW9uLiBJZiBub3QgcHJvdmlkZWQgaXQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgdGhlIG1ldGhvZFxuICogQHBhcmFtIHtvYmplY3R9IG9wdC5vcHRpb25zIC0gRXh0cmEgcGFyYW1ldGVycyB0byBzdG9yZSBhcyBwYXJ0IG9mIGh0ZSBub3RpZmljYXRpb25cbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOb3RpZmljYXRpb24oe1xuICBtZXNzYWdlID0gREVGQVVMVF9OT1RJRklDQVRJT05fTUVTU0FHRSxcbiAgdHlwZSA9IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTLmluZm8sXG4gIHRvcGljID0gREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTLmdsb2JhbCxcbiAgaWQgPSBnZW5lcmF0ZUhhc2hJZChERUZBVUxUX1VVSURfQ09VTlQpLFxuICAuLi5vcHRpb25zXG59KSB7XG4gIHJldHVybiB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBpZCxcbiAgICBtZXNzYWdlLFxuICAgIHR5cGUsXG4gICAgdG9waWNcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVycm9yIG5vdGlmaWNhdGlvblxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zIHt7dG9waWMsIGlkLCBtZXNzYWdlLCB0eXBlOiAobnVsbHxudW1iZXIpfX1cbiAqL1xuZXhwb3J0IGNvbnN0IGVycm9yTm90aWZpY2F0aW9uID0gb3B0aW9ucyA9PiAoe1xuICAuLi5jcmVhdGVOb3RpZmljYXRpb24ob3B0aW9ucyksXG4gIHR5cGU6IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTLmVycm9yXG59KTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc3VjY2VzcyBub3RpZmljYXRpb25cbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyB7e3RvcGljLCBpZCwgbWVzc2FnZSwgdHlwZTogbnVsbH19XG4gKi9cbmV4cG9ydCBjb25zdCBzdWNjZXNzTm90aWZpY2F0aW9uID0gb3B0aW9ucyA9PiAoe1xuICAuLi5jcmVhdGVOb3RpZmljYXRpb24ob3B0aW9ucyksXG4gIHR5cGU6IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTLnN1Y2Nlc3Ncbn0pO1xuXG5leHBvcnQgY29uc3QgZXhwb3J0SW1hZ2VFcnJvciA9IG9wdGlvbnMgPT5cbiAgZXJyb3JOb3RpZmljYXRpb24oe1xuICAgIC4uLm9wdGlvbnMsXG4gICAgdG9waWM6IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUy5nbG9iYWwsXG4gICAgbWVzc2FnZTogYEZhaWxlZCB0byBleHBvcnQgaW1hZ2UsIHBsZWFzZSB0YWtlIGEgc2NyZWVuc2hvdCBvZiB0aGUgamF2YXNjcmlwdCBjb25zb2xlLCByZXBvcnQgdGhlIHdpdGggW3RoaXMgbGlua10oJHtCVUdfUkVQT1JUX0xJTkt9KSBgXG4gIH0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBb0JBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLGdCQUFBLEdBQUFELE9BQUE7QUFPQSxJQUFBRSxXQUFBLEdBQUFGLE9BQUE7QUFBc0QsSUFBQUcsU0FBQSx1Q0E3QnREO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEsU0FBQUMsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxF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