@carto/kepler.gl 0.0.85 → 0.0.86-alpha.deck9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/dist/actions/action-wrapper.js +36 -41
  2. package/dist/actions/actions.js +15 -21
  3. package/dist/actions/identity-actions.js +14 -20
  4. package/dist/actions/index.js +16 -16
  5. package/dist/actions/map-state-actions.js +12 -18
  6. package/dist/actions/map-style-actions.js +30 -46
  7. package/dist/actions/provider-actions.js +49 -73
  8. package/dist/actions/ui-state-actions.js +73 -113
  9. package/dist/actions/vis-state-actions.js +152 -148
  10. package/dist/cloud-providers/index.js +6 -7
  11. package/dist/cloud-providers/provider.js +189 -279
  12. package/dist/components/bottom-widget.js +105 -117
  13. package/dist/components/common/action-panel.js +122 -74
  14. package/dist/components/common/animation-control/animation-control.js +69 -54
  15. package/dist/components/common/animation-control/animation-controller.js +134 -160
  16. package/dist/components/common/animation-control/animation-speed-slider.js +47 -54
  17. package/dist/components/common/animation-control/floating-time-display.js +120 -100
  18. package/dist/components/common/animation-control/playback-controls.js +147 -144
  19. package/dist/components/common/animation-control/speed-control.js +31 -23
  20. package/dist/components/common/checkbox.js +56 -70
  21. package/dist/components/common/color-legend.js +83 -110
  22. package/dist/components/common/data-table/button.js +31 -23
  23. package/dist/components/common/data-table/canvas.js +11 -5
  24. package/dist/components/common/data-table/cell-size.js +51 -61
  25. package/dist/components/common/data-table/grid.js +40 -59
  26. package/dist/components/common/data-table/index.js +464 -348
  27. package/dist/components/common/data-table/option-dropdown.js +50 -33
  28. package/dist/components/common/dataset-label.js +17 -13
  29. package/dist/components/common/error-boundary.js +27 -45
  30. package/dist/components/common/field-selector.js +99 -139
  31. package/dist/components/common/field-token.js +24 -9
  32. package/dist/components/common/file-uploader/file-drop.js +96 -115
  33. package/dist/components/common/file-uploader/file-upload-progress.js +68 -45
  34. package/dist/components/common/file-uploader/file-upload.js +215 -187
  35. package/dist/components/common/file-uploader/upload-button.js +35 -22
  36. package/dist/components/common/histogram-plot.js +47 -58
  37. package/dist/components/common/icons/add.js +14 -27
  38. package/dist/components/common/icons/anchor_window.js +16 -18
  39. package/dist/components/common/icons/arrow-down-alt.js +14 -27
  40. package/dist/components/common/icons/arrow-down-solid.js +14 -27
  41. package/dist/components/common/icons/arrow-down.js +14 -27
  42. package/dist/components/common/icons/arrow-left.js +17 -30
  43. package/dist/components/common/icons/arrow-right.js +14 -27
  44. package/dist/components/common/icons/arrow-up-alt.js +15 -28
  45. package/dist/components/common/icons/arrow-up-solid.js +14 -27
  46. package/dist/components/common/icons/arrow-up.js +14 -27
  47. package/dist/components/common/icons/base.js +39 -57
  48. package/dist/components/common/icons/bug.js +16 -29
  49. package/dist/components/common/icons/cancel.js +14 -27
  50. package/dist/components/common/icons/checkmark.js +18 -31
  51. package/dist/components/common/icons/chevron-right.js +20 -33
  52. package/dist/components/common/icons/clipboard.js +15 -28
  53. package/dist/components/common/icons/clock.js +16 -29
  54. package/dist/components/common/icons/close.js +19 -32
  55. package/dist/components/common/icons/code-alt.js +16 -29
  56. package/dist/components/common/icons/copy.js +18 -31
  57. package/dist/components/common/icons/crosshairs.js +16 -29
  58. package/dist/components/common/icons/cube-3d.js +18 -31
  59. package/dist/components/common/icons/cursor-click.js +18 -31
  60. package/dist/components/common/icons/data-table.js +15 -28
  61. package/dist/components/common/icons/db.js +15 -28
  62. package/dist/components/common/icons/delete.js +16 -29
  63. package/dist/components/common/icons/docs.js +30 -43
  64. package/dist/components/common/icons/drag-n-drop.js +16 -29
  65. package/dist/components/common/icons/draw-polygon.js +33 -46
  66. package/dist/components/common/icons/email.js +18 -31
  67. package/dist/components/common/icons/expand.js +16 -29
  68. package/dist/components/common/icons/eye-seen.js +16 -29
  69. package/dist/components/common/icons/eye-unseen.js +16 -29
  70. package/dist/components/common/icons/file-type.js +35 -19
  71. package/dist/components/common/icons/file.js +14 -27
  72. package/dist/components/common/icons/files.js +14 -26
  73. package/dist/components/common/icons/filter-funnel.js +14 -27
  74. package/dist/components/common/icons/free-window.js +16 -18
  75. package/dist/components/common/icons/gear.js +16 -29
  76. package/dist/components/common/icons/hash.js +14 -27
  77. package/dist/components/common/icons/histogram.js +15 -27
  78. package/dist/components/common/icons/index.js +156 -156
  79. package/dist/components/common/icons/info.js +25 -38
  80. package/dist/components/common/icons/layers.js +14 -27
  81. package/dist/components/common/icons/left-arrow.js +16 -29
  82. package/dist/components/common/icons/legend.js +14 -27
  83. package/dist/components/common/icons/line-chart.js +14 -27
  84. package/dist/components/common/icons/login.js +17 -30
  85. package/dist/components/common/icons/logout.js +16 -29
  86. package/dist/components/common/icons/map-icon.js +18 -32
  87. package/dist/components/common/icons/map.js +18 -32
  88. package/dist/components/common/icons/messages.js +14 -27
  89. package/dist/components/common/icons/minus.js +14 -27
  90. package/dist/components/common/icons/order-by-dataset.js +15 -17
  91. package/dist/components/common/icons/order-by-list.js +7 -9
  92. package/dist/components/common/icons/pause.js +14 -27
  93. package/dist/components/common/icons/picture.js +14 -26
  94. package/dist/components/common/icons/pin.js +17 -30
  95. package/dist/components/common/icons/play.js +14 -27
  96. package/dist/components/common/icons/polygon.js +35 -48
  97. package/dist/components/common/icons/rectangle.js +36 -49
  98. package/dist/components/common/icons/reduce.js +17 -30
  99. package/dist/components/common/icons/reset.js +14 -27
  100. package/dist/components/common/icons/rocket.js +14 -27
  101. package/dist/components/common/icons/save.js +16 -29
  102. package/dist/components/common/icons/save2.js +20 -33
  103. package/dist/components/common/icons/search.js +16 -29
  104. package/dist/components/common/icons/settings.js +16 -29
  105. package/dist/components/common/icons/share.js +14 -27
  106. package/dist/components/common/icons/split.js +42 -55
  107. package/dist/components/common/icons/square-select.js +16 -29
  108. package/dist/components/common/icons/swap-horizontal.js +18 -31
  109. package/dist/components/common/icons/table.js +14 -27
  110. package/dist/components/common/icons/trash.js +16 -29
  111. package/dist/components/common/icons/upload.js +14 -27
  112. package/dist/components/common/icons/vert-dots.js +52 -65
  113. package/dist/components/common/icons/vert-three-dots.js +27 -40
  114. package/dist/components/common/icons/warning.js +26 -39
  115. package/dist/components/common/image-preview.js +71 -33
  116. package/dist/components/common/info-helper.js +36 -29
  117. package/dist/components/common/item-selector/accessor.js +7 -13
  118. package/dist/components/common/item-selector/chickleted-input.js +72 -56
  119. package/dist/components/common/item-selector/dropdown-list.js +182 -214
  120. package/dist/components/common/item-selector/item-selector-submenu.js +34 -55
  121. package/dist/components/common/item-selector/item-selector.js +183 -194
  122. package/dist/components/common/item-selector/typeahead.js +236 -248
  123. package/dist/components/common/line-chart.js +80 -58
  124. package/dist/components/common/loading-spinner.js +46 -31
  125. package/dist/components/common/logo.js +61 -48
  126. package/dist/components/common/map-layer-selector.js +31 -25
  127. package/dist/components/common/modal.js +167 -106
  128. package/dist/components/common/portaled.js +169 -189
  129. package/dist/components/common/progress-bar.js +27 -24
  130. package/dist/components/common/range-brush.js +176 -215
  131. package/dist/components/common/range-plot.js +52 -63
  132. package/dist/components/common/range-slider.js +206 -231
  133. package/dist/components/common/slider/mouse-event.js +59 -66
  134. package/dist/components/common/slider/slider-bar-handle.js +51 -61
  135. package/dist/components/common/slider/slider-handle.js +127 -102
  136. package/dist/components/common/slider/slider.js +143 -162
  137. package/dist/components/common/styled-components.js +518 -256
  138. package/dist/components/common/switch.js +11 -11
  139. package/dist/components/common/time-range-slider-time-title.js +49 -32
  140. package/dist/components/common/time-range-slider.js +56 -45
  141. package/dist/components/common/time-slider-marker.js +71 -52
  142. package/dist/components/common/tippy-tooltip.js +89 -59
  143. package/dist/components/common/toolbar-item.js +53 -45
  144. package/dist/components/common/toolbar.js +24 -18
  145. package/dist/components/common/vertical-toolbar.js +13 -6
  146. package/dist/components/container.js +87 -119
  147. package/dist/components/context.js +6 -8
  148. package/dist/components/editor/constants.js +4 -4
  149. package/dist/components/editor/editor.js +122 -157
  150. package/dist/components/editor/feature-action-panel.js +52 -59
  151. package/dist/components/editor/feature-styles.js +46 -29
  152. package/dist/components/editor/handle-style.js +38 -29
  153. package/dist/components/filters/components.js +8 -4
  154. package/dist/components/filters/filter-panels/filter-panel-with-field-select.js +33 -43
  155. package/dist/components/filters/filter-panels/multi-select-filter-panel.js +20 -21
  156. package/dist/components/filters/filter-panels/new-filter-panel.js +24 -31
  157. package/dist/components/filters/filter-panels/polygon-filter-panel.js +26 -31
  158. package/dist/components/filters/filter-panels/range-filter-panel.js +20 -21
  159. package/dist/components/filters/filter-panels/single-select-filter-panel.js +20 -21
  160. package/dist/components/filters/filter-panels/time-range-filter-panel.js +28 -31
  161. package/dist/components/filters/index.js +10 -10
  162. package/dist/components/filters/multi-select-filter.js +11 -9
  163. package/dist/components/filters/polygon-filter.js +26 -41
  164. package/dist/components/filters/range-filter.js +9 -7
  165. package/dist/components/filters/single-select-filter.js +11 -13
  166. package/dist/components/filters/time-range-filter.js +16 -14
  167. package/dist/components/filters/time-widget.js +125 -84
  168. package/dist/components/geocoder/geocoder.js +158 -177
  169. package/dist/components/geocoder-panel.js +66 -87
  170. package/dist/components/index.js +328 -329
  171. package/dist/components/injector.js +44 -63
  172. package/dist/components/kepler-gl.js +325 -361
  173. package/dist/components/map/coordinate-info.js +18 -16
  174. package/dist/components/map/layer-hover-info.js +108 -86
  175. package/dist/components/map/layer-selector-panel.js +50 -48
  176. package/dist/components/map/locale-panel.js +38 -44
  177. package/dist/components/map/map-control-panel.js +70 -47
  178. package/dist/components/map/map-control-toolbar.js +9 -6
  179. package/dist/components/map/map-control-tooltip.js +10 -8
  180. package/dist/components/map/map-control.js +35 -27
  181. package/dist/components/map/map-draw-panel.js +38 -48
  182. package/dist/components/map/map-legend-panel.js +47 -50
  183. package/dist/components/map/map-legend.js +133 -116
  184. package/dist/components/map/map-popover.js +155 -100
  185. package/dist/components/map/split-map-button.js +30 -34
  186. package/dist/components/map/toggle-3d-button.js +25 -27
  187. package/dist/components/map-container.js +313 -359
  188. package/dist/components/maps-layout.js +16 -26
  189. package/dist/components/modal-container.js +359 -355
  190. package/dist/components/modals/add-map-style-modal.js +233 -194
  191. package/dist/components/modals/cloud-tile.js +96 -67
  192. package/dist/components/modals/data-table-modal.js +155 -152
  193. package/dist/components/modals/delete-data-modal.js +20 -20
  194. package/dist/components/modals/error-display.js +9 -7
  195. package/dist/components/modals/export-data-modal.js +118 -140
  196. package/dist/components/modals/export-image-modal.js +82 -69
  197. package/dist/components/modals/export-map-modal/components.js +20 -18
  198. package/dist/components/modals/export-map-modal/export-html-map.js +82 -74
  199. package/dist/components/modals/export-map-modal/export-json-map.js +65 -45
  200. package/dist/components/modals/export-map-modal/export-map-modal.js +42 -47
  201. package/dist/components/modals/image-modal-container.js +20 -21
  202. package/dist/components/modals/load-data-modal.js +28 -30
  203. package/dist/components/modals/load-storage-map.js +277 -178
  204. package/dist/components/modals/loading-dialog.js +41 -19
  205. package/dist/components/modals/modal-dialog.js +4 -6
  206. package/dist/components/modals/modal-tabs.js +83 -48
  207. package/dist/components/modals/overwrite-map-modal.js +41 -30
  208. package/dist/components/modals/provider-modal-container.js +23 -42
  209. package/dist/components/modals/save-map-modal.js +107 -83
  210. package/dist/components/modals/share-map-modal.js +101 -95
  211. package/dist/components/modals/status-panel.js +63 -43
  212. package/dist/components/modals/storage-map-viewer.js +133 -70
  213. package/dist/components/notification-panel/notification-item.js +94 -97
  214. package/dist/components/notification-panel.js +35 -43
  215. package/dist/components/performance.js +49 -53
  216. package/dist/components/plot-container.js +151 -169
  217. package/dist/components/side-panel/cloud-storage-dropdown.js +13 -15
  218. package/dist/components/side-panel/common/dataset-info.js +16 -12
  219. package/dist/components/side-panel/common/dataset-tag.js +48 -27
  220. package/dist/components/side-panel/common/dataset-title.js +119 -116
  221. package/dist/components/side-panel/common/source-data-catalog.js +31 -32
  222. package/dist/components/side-panel/common/source-data-selector.js +52 -77
  223. package/dist/components/side-panel/custom-panel.js +6 -8
  224. package/dist/components/side-panel/filter-manager.js +48 -62
  225. package/dist/components/side-panel/filter-panel/filter-panel-header.js +35 -25
  226. package/dist/components/side-panel/filter-panel/filter-panel.js +46 -64
  227. package/dist/components/side-panel/interaction-manager.js +20 -18
  228. package/dist/components/side-panel/interaction-panel/brush-config.js +17 -17
  229. package/dist/components/side-panel/interaction-panel/interaction-panel.js +76 -95
  230. package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +118 -143
  231. package/dist/components/side-panel/interaction-panel/tooltip-config.js +95 -76
  232. package/dist/components/side-panel/layer-manager.js +105 -115
  233. package/dist/components/side-panel/layer-panel/add-layer-button.js +92 -54
  234. package/dist/components/side-panel/layer-panel/color-dimension-scale-selector.js +5 -5
  235. package/dist/components/side-panel/layer-panel/color-palette.js +50 -37
  236. package/dist/components/side-panel/layer-panel/color-range-selector.js +196 -207
  237. package/dist/components/side-panel/layer-panel/color-selector.js +104 -110
  238. package/dist/components/side-panel/layer-panel/column-selector.js +34 -22
  239. package/dist/components/side-panel/layer-panel/custom-markers-config-group.js +4 -4
  240. package/dist/components/side-panel/layer-panel/custom-palette.js +248 -205
  241. package/dist/components/side-panel/layer-panel/custom-picker.js +51 -69
  242. package/dist/components/side-panel/layer-panel/dataset-layer-group.js +37 -42
  243. package/dist/components/side-panel/layer-panel/dataset-layer-section.js +31 -27
  244. package/dist/components/side-panel/layer-panel/dataset-section.js +45 -35
  245. package/dist/components/side-panel/layer-panel/dimension-scale-selector.js +14 -13
  246. package/dist/components/side-panel/layer-panel/hex-column-config.js +32 -55
  247. package/dist/components/side-panel/layer-panel/layer-aggregation-resolution.js +5 -5
  248. package/dist/components/side-panel/layer-panel/layer-column-config.js +42 -46
  249. package/dist/components/side-panel/layer-panel/layer-config-group.js +178 -144
  250. package/dist/components/side-panel/layer-panel/layer-configurator.js +826 -830
  251. package/dist/components/side-panel/layer-panel/layer-list.js +101 -94
  252. package/dist/components/side-panel/layer-panel/layer-panel-header.js +124 -82
  253. package/dist/components/side-panel/layer-panel/layer-panel.js +111 -105
  254. package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.js +67 -58
  255. package/dist/components/side-panel/layer-panel/layer-type-list-item.js +47 -32
  256. package/dist/components/side-panel/layer-panel/layer-type-selector.js +30 -41
  257. package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +42 -43
  258. package/dist/components/side-panel/layer-panel/panel-view-list-toggle.js +55 -57
  259. package/dist/components/side-panel/layer-panel/single-color-palette.js +48 -33
  260. package/dist/components/side-panel/layer-panel/text-label-panel.js +81 -116
  261. package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +88 -102
  262. package/dist/components/side-panel/layer-panel/vis-config-slider.js +99 -85
  263. package/dist/components/side-panel/layer-panel/vis-config-switch.js +38 -29
  264. package/dist/components/side-panel/map-manager.js +70 -89
  265. package/dist/components/side-panel/map-style-panel/map-layer-selector.js +72 -60
  266. package/dist/components/side-panel/map-style-panel/map-style-selector.js +64 -42
  267. package/dist/components/side-panel/panel-dropdown.js +21 -37
  268. package/dist/components/side-panel/panel-header-action.js +60 -65
  269. package/dist/components/side-panel/panel-header.js +165 -184
  270. package/dist/components/side-panel/panel-tab.js +35 -29
  271. package/dist/components/side-panel/panel-title.js +15 -18
  272. package/dist/components/side-panel/panel-toggle.js +30 -31
  273. package/dist/components/side-panel/side-bar.js +100 -91
  274. package/dist/components/side-panel.js +108 -123
  275. package/dist/connect/keplergl-connect.js +17 -26
  276. package/dist/connect/with-local-selector.js +31 -63
  277. package/dist/constants/action-types.js +113 -115
  278. package/dist/constants/color-palette.js +14 -16
  279. package/dist/constants/color-ranges.js +23 -28
  280. package/dist/constants/custom-color-ranges.js +12 -12
  281. package/dist/constants/default-settings.js +323 -254
  282. package/dist/constants/index.js +63 -63
  283. package/dist/constants/keyevent.js +4 -4
  284. package/dist/constants/tooltip.js +5 -5
  285. package/dist/constants/user-feedbacks.js +9 -5
  286. package/dist/constants/user-guides.js +10 -10
  287. package/dist/deckgl-layers/3d-building-layer/3d-building-layer.js +37 -63
  288. package/dist/deckgl-layers/3d-building-layer/3d-building-utils.js +52 -56
  289. package/dist/deckgl-layers/cluster-layer/cluster-layer.js +165 -168
  290. package/dist/deckgl-layers/column-layer/enhanced-column-layer.js +24 -43
  291. package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.d.ts +2 -2
  292. package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +27 -40
  293. package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +27 -40
  294. package/dist/deckgl-layers/layer-utils/cluster-utils.js +60 -68
  295. package/dist/deckgl-layers/layer-utils/cpu-aggregator.d.ts +4 -4
  296. package/dist/deckgl-layers/layer-utils/cpu-aggregator.js +281 -282
  297. package/dist/deckgl-layers/layer-utils/shader-utils.js +2 -2
  298. package/dist/deckgl-layers/line-layer/line-layer.js +62 -70
  299. package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +37 -51
  300. package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.js +65 -85
  301. package/dist/index.js +15 -16
  302. package/dist/layers/aggregation-layer.js +299 -331
  303. package/dist/layers/arc-layer/arc-layer-icon.js +27 -41
  304. package/dist/layers/arc-layer/arc-layer.js +174 -201
  305. package/dist/layers/base-layer.d.ts +1 -1
  306. package/dist/layers/base-layer.js +1371 -1544
  307. package/dist/layers/cluster-layer/cluster-layer-icon.js +30 -44
  308. package/dist/layers/cluster-layer/cluster-layer.js +89 -103
  309. package/dist/layers/default-layer-icon.js +39 -53
  310. package/dist/layers/geojson-layer/geojson-layer-icon.js +42 -55
  311. package/dist/layers/geojson-layer/geojson-layer.js +292 -353
  312. package/dist/layers/geojson-layer/geojson-utils.js +31 -36
  313. package/dist/layers/grid-layer/grid-layer-icon.js +87 -100
  314. package/dist/layers/grid-layer/grid-layer.js +51 -61
  315. package/dist/layers/grid-layer/grid-utils.js +13 -9
  316. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.js +21 -35
  317. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.js +225 -260
  318. package/dist/layers/h3-hexagon-layer/h3-utils.js +16 -16
  319. package/dist/layers/heatmap-layer/heatmap-layer-icon.js +39 -52
  320. package/dist/layers/heatmap-layer/heatmap-layer.js +140 -171
  321. package/dist/layers/hexagon-layer/hexagon-layer-icon.js +51 -64
  322. package/dist/layers/hexagon-layer/hexagon-layer.js +49 -63
  323. package/dist/layers/hexagon-layer/hexagon-utils.js +15 -14
  324. package/dist/layers/icon-layer/icon-info-modal.js +82 -75
  325. package/dist/layers/icon-layer/icon-layer-icon.js +24 -37
  326. package/dist/layers/icon-layer/icon-layer.js +274 -303
  327. package/dist/layers/index.js +43 -29
  328. package/dist/layers/layer-factory.js +25 -41
  329. package/dist/layers/layer-text-label.js +21 -23
  330. package/dist/layers/layer-update.js +16 -18
  331. package/dist/layers/line-layer/line-layer-icon.js +30 -43
  332. package/dist/layers/line-layer/line-layer.js +123 -142
  333. package/dist/layers/mapbox-utils.js +61 -62
  334. package/dist/layers/mapboxgl-layer.js +124 -169
  335. package/dist/layers/point-layer/point-layer-icon.js +45 -59
  336. package/dist/layers/point-layer/point-layer.d.ts +2 -2
  337. package/dist/layers/point-layer/point-layer.js +355 -386
  338. package/dist/layers/s2-geometry-layer/s2-geometry-layer.js +208 -238
  339. package/dist/layers/s2-geometry-layer/s2-layer-icon.js +21 -35
  340. package/dist/layers/s2-geometry-layer/s2-utils.js +9 -8
  341. package/dist/layers/scenegraph-layer/scenegraph-info-modal.js +24 -25
  342. package/dist/layers/scenegraph-layer/scenegraph-layer-icon.js +102 -115
  343. package/dist/layers/scenegraph-layer/scenegraph-layer.js +148 -172
  344. package/dist/layers/trip-layer/trip-info-modal.js +50 -30
  345. package/dist/layers/trip-layer/trip-layer-icon.js +40 -53
  346. package/dist/layers/trip-layer/trip-layer.js +239 -307
  347. package/dist/layers/trip-layer/trip-utils.js +34 -50
  348. package/dist/layers/types.js +2 -2
  349. package/dist/localization/formatted-message.js +8 -10
  350. package/dist/localization/index.js +7 -7
  351. package/dist/localization/locales.js +6 -9
  352. package/dist/localization/messages.js +13 -10
  353. package/dist/localization/translations/ca.js +11 -13
  354. package/dist/localization/translations/cn.js +11 -13
  355. package/dist/localization/translations/en.js +11 -13
  356. package/dist/localization/translations/es.js +11 -13
  357. package/dist/localization/translations/fi.js +11 -13
  358. package/dist/localization/translations/ja.js +11 -13
  359. package/dist/localization/translations/pt.js +11 -13
  360. package/dist/localization/translations/ru.js +11 -13
  361. package/dist/middleware/index.js +3 -5
  362. package/dist/processors/data-processor.js +164 -201
  363. package/dist/processors/file-handler.js +111 -233
  364. package/dist/processors/index.js +4 -4
  365. package/dist/reducers/combined-updaters.js +41 -41
  366. package/dist/reducers/composer-helpers.js +20 -45
  367. package/dist/reducers/composers.js +9 -8
  368. package/dist/reducers/core.js +31 -35
  369. package/dist/reducers/index.js +21 -22
  370. package/dist/reducers/map-state-updaters.js +65 -47
  371. package/dist/reducers/map-state.js +23 -15
  372. package/dist/reducers/map-style-updaters.js +233 -159
  373. package/dist/reducers/map-style.js +30 -16
  374. package/dist/reducers/provider-state-updaters.js +217 -229
  375. package/dist/reducers/provider-state.js +29 -17
  376. package/dist/reducers/root.js +86 -58
  377. package/dist/reducers/ui-state-updaters.js +337 -218
  378. package/dist/reducers/ui-state.js +45 -16
  379. package/dist/reducers/vis-state-merger.js +205 -209
  380. package/dist/reducers/vis-state-selectors.js +5 -19
  381. package/dist/reducers/vis-state-updaters.js +1003 -876
  382. package/dist/reducers/vis-state.js +75 -16
  383. package/dist/schemas/dataset-schema.js +84 -108
  384. package/dist/schemas/index.js +28 -29
  385. package/dist/schemas/map-state-schema.js +21 -18
  386. package/dist/schemas/map-style-schema.js +47 -55
  387. package/dist/schemas/schema-manager.js +147 -161
  388. package/dist/schemas/schema-utils.js +8 -9
  389. package/dist/schemas/schema.js +72 -87
  390. package/dist/schemas/versions.js +3 -3
  391. package/dist/schemas/vis-state-schema.js +441 -583
  392. package/dist/styles/base.js +1217 -1021
  393. package/dist/styles/index.js +3 -3
  394. package/dist/styles/media-breakpoints.js +23 -18
  395. package/dist/tasks/tasks.js +36 -39
  396. package/dist/templates/export-map-html.js +233 -4
  397. package/dist/utils/aggregate-utils.js +13 -16
  398. package/dist/utils/color-utils.js +29 -37
  399. package/dist/utils/custom-scales.js +3 -3
  400. package/dist/utils/data-scale-utils.js +6 -13
  401. package/dist/utils/data-utils.js +60 -83
  402. package/dist/utils/dataset-utils.js +48 -77
  403. package/dist/utils/dom-to-image.js +108 -163
  404. package/dist/utils/dom-utils.js +88 -105
  405. package/dist/utils/export-utils.js +116 -103
  406. package/dist/utils/filter-utils.js +379 -374
  407. package/dist/utils/gl-utils.js +16 -15
  408. package/dist/utils/gpu-filter-utils.js +54 -73
  409. package/dist/utils/index.js +47 -48
  410. package/dist/utils/interaction-utils.js +53 -46
  411. package/dist/utils/layer-utils.js +89 -78
  412. package/dist/utils/locale-utils.js +24 -16
  413. package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +67 -76
  414. package/dist/utils/map-style-utils/mapbox-utils.js +4 -3
  415. package/dist/utils/mapbox-utils.js +3 -4
  416. package/dist/utils/notifications-utils.js +33 -38
  417. package/dist/utils/observe-dimensions.js +42 -54
  418. package/dist/utils/projection-utils.js +14 -11
  419. package/dist/utils/split-map-utils.js +30 -33
  420. package/dist/utils/table-utils/data-container-utils.js +15 -14
  421. package/dist/utils/table-utils/data-row.js +58 -65
  422. package/dist/utils/table-utils/index.js +2 -2
  423. package/dist/utils/table-utils/indexed-data-container.js +105 -173
  424. package/dist/utils/table-utils/kepler-table.js +362 -386
  425. package/dist/utils/table-utils/row-data-container.js +99 -164
  426. package/dist/utils/utils.js +29 -30
  427. package/package.json +21 -21
  428. package/src/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.ts +2 -2
  429. package/src/deckgl-layers/layer-utils/cpu-aggregator.ts +21 -11
  430. package/src/layers/base-layer.ts +17 -10
@@ -1,17 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
- exports.getChildPos = exports["default"] = void 0;
7
+ exports.getChildPos = exports.default = void 0;
9
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
10
  var _react = _interopRequireWildcard(require("react"));
17
11
  var _debounce = _interopRequireDefault(require("lodash/debounce"));
@@ -22,12 +16,9 @@ var _reactModal = _interopRequireDefault(require("react-modal"));
22
16
  var _window = _interopRequireDefault(require("global/window"));
23
17
  var _document = _interopRequireDefault(require("global/document"));
24
18
  var _base = require("../../styles/base");
25
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
26
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
27
- function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
28
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
29
- 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; }
30
- 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.
19
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
+ // Copyright (c) 2022 Uber Technologies, Inc.
31
22
  //
32
23
  // Permission is hereby granted, free of charge, to any person obtaining a copy
33
24
  // of this software and associated documentation files (the "Software"), to deal
@@ -46,67 +37,66 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
46
37
  // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
47
38
  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
48
39
  // THE SOFTWARE.
49
- var listeners = {};
50
- var startListening = function startListening() {
51
- return Object.keys(listeners).forEach(function (key) {
52
- return listeners[key]();
53
- });
40
+
41
+ const listeners = {};
42
+ const startListening = () => Object.keys(listeners).forEach(key => listeners[key]());
43
+ const getPageOffset = () => ({
44
+ x: _window.default.pageXOffset !== undefined ? _window.default.pageXOffset : (_document.default.documentElement || _document.default.body.parentNode || _document.default.body).scrollLeft,
45
+ y: _window.default.pageYOffset !== undefined ? _window.default.pageYOffset : (_document.default.documentElement || _document.default.body.parentNode || _document.default.body).scrollTop
46
+ });
47
+ const addEventListeners = () => {
48
+ if (_document.default && _document.default.body) _document.default.body.addEventListener('mousewheel', (0, _debounce.default)(startListening, 100));
49
+ _window.default.addEventListener('resize', (0, _debounce.default)(startListening, 50));
54
50
  };
55
- var getPageOffset = function getPageOffset() {
56
- return {
57
- x: _window["default"].pageXOffset !== undefined ? _window["default"].pageXOffset : (_document["default"].documentElement || _document["default"].body.parentNode || _document["default"].body).scrollLeft,
58
- y: _window["default"].pageYOffset !== undefined ? _window["default"].pageYOffset : (_document["default"].documentElement || _document["default"].body.parentNode || _document["default"].body).scrollTop
51
+ const getChildPos = _ref => {
52
+ let {
53
+ offsets,
54
+ rect,
55
+ childRect,
56
+ pageOffset,
57
+ padding
58
+ } = _ref;
59
+ const {
60
+ topOffset,
61
+ leftOffset,
62
+ rightOffset
63
+ } = offsets;
64
+ const anchorLeft = leftOffset !== undefined;
65
+ const pos = {
66
+ top: pageOffset.y + rect.top + (topOffset || 0),
67
+ ...(anchorLeft ? {
68
+ left: pageOffset.x + rect.left + leftOffset
69
+ } : {
70
+ right: _window.default.innerWidth - rect.right - pageOffset.x + (rightOffset || 0)
71
+ })
59
72
  };
60
- };
61
- var addEventListeners = function addEventListeners() {
62
- if (_document["default"] && _document["default"].body) _document["default"].body.addEventListener('mousewheel', (0, _debounce["default"])(startListening, 100));
63
- _window["default"].addEventListener('resize', (0, _debounce["default"])(startListening, 50));
64
- };
65
- var getChildPos = exports.getChildPos = function getChildPos(_ref) {
66
- var offsets = _ref.offsets,
67
- rect = _ref.rect,
68
- childRect = _ref.childRect,
69
- pageOffset = _ref.pageOffset,
70
- padding = _ref.padding;
71
- var topOffset = offsets.topOffset,
72
- leftOffset = offsets.leftOffset,
73
- rightOffset = offsets.rightOffset;
74
- var anchorLeft = leftOffset !== undefined;
75
- var pos = _objectSpread({
76
- top: pageOffset.y + rect.top + (topOffset || 0)
77
- }, anchorLeft ? {
78
- left: pageOffset.x + rect.left + leftOffset
79
- } : {
80
- right: _window["default"].innerWidth - rect.right - pageOffset.x + (rightOffset || 0)
81
- });
82
- var leftOrRight = anchorLeft ? 'left' : 'right';
73
+ const leftOrRight = anchorLeft ? 'left' : 'right';
83
74
  if (pos[leftOrRight] && pos[leftOrRight] < 0) {
84
75
  pos[leftOrRight] = padding;
85
- } else if (pos[leftOrRight] && pos[leftOrRight] + childRect.width > _window["default"].innerWidth) {
86
- pos[leftOrRight] = _window["default"].innerWidth - childRect.width - padding;
76
+ } else if (pos[leftOrRight] && pos[leftOrRight] + childRect.width > _window.default.innerWidth) {
77
+ pos[leftOrRight] = _window.default.innerWidth - childRect.width - padding;
87
78
  }
88
79
  if (pos.top < 0) {
89
80
  pos.top = padding;
90
- } else if (pos.top + childRect.height > _window["default"].innerHeight) {
91
- pos.top = _window["default"].innerHeight - childRect.height - padding;
81
+ } else if (pos.top + childRect.height > _window.default.innerHeight) {
82
+ pos.top = _window.default.innerHeight - childRect.height - padding;
92
83
  }
93
84
  return pos;
94
85
  };
95
- if (_document["default"].body) {
86
+ exports.getChildPos = getChildPos;
87
+ if (_document.default.body) {
96
88
  addEventListeners();
97
89
  } else {
98
- _document["default"].addEventListener('DOMContentLoaded', addEventListeners);
90
+ _document.default.addEventListener('DOMContentLoaded', addEventListeners);
99
91
  }
100
- var listenerIdCounter = 0;
92
+ let listenerIdCounter = 0;
101
93
  function subscribe(fn) {
102
94
  listenerIdCounter += 1;
103
- var id = listenerIdCounter;
95
+ const id = listenerIdCounter;
104
96
  listeners[id] = fn;
105
- return function () {
106
- return delete listeners[id];
107
- };
97
+ return () => delete listeners[id];
108
98
  }
109
- var defaultModalStyle = {
99
+ const defaultModalStyle = {
110
100
  content: {
111
101
  top: 0,
112
102
  left: 0,
@@ -123,155 +113,145 @@ var defaultModalStyle = {
123
113
  backgroundColor: 'rgba(0, 0, 0, 0)'
124
114
  }
125
115
  };
126
- var WINDOW_PAD = 20;
127
- var noop = function noop() {};
128
- var Portaled = /*#__PURE__*/function (_Component) {
129
- function Portaled() {
130
- var _this;
131
- (0, _classCallCheck2["default"])(this, Portaled);
132
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
133
- args[_key] = arguments[_key];
134
- }
135
- _this = _callSuper(this, Portaled, [].concat(args));
136
- (0, _defineProperty2["default"])(_this, "state", {
116
+ const WINDOW_PAD = 20;
117
+ const noop = () => {};
118
+ class Portaled extends _react.Component {
119
+ constructor() {
120
+ super(...arguments);
121
+ (0, _defineProperty2.default)(this, "state", {
137
122
  pos: null,
138
123
  isVisible: false
139
124
  });
140
- (0, _defineProperty2["default"])(_this, "unsubscribe", undefined);
141
- (0, _defineProperty2["default"])(_this, "_unmounted", false);
142
- (0, _defineProperty2["default"])(_this, "element", /*#__PURE__*/(0, _react.createRef)());
143
- (0, _defineProperty2["default"])(_this, "child", /*#__PURE__*/(0, _react.createRef)());
125
+ (0, _defineProperty2.default)(this, "unsubscribe", undefined);
126
+ (0, _defineProperty2.default)(this, "_unmounted", false);
127
+ (0, _defineProperty2.default)(this, "element", /*#__PURE__*/(0, _react.createRef)());
128
+ (0, _defineProperty2.default)(this, "child", /*#__PURE__*/(0, _react.createRef)());
144
129
  // eslint-disable-next-line complexity
145
- (0, _defineProperty2["default"])(_this, "handleScroll", function () {
146
- if (_this.child.current && _this.element.current) {
147
- var rect = _this.element.current.getBoundingClientRect();
148
- var childRect = _this.child.current.getBoundingClientRect();
149
- var pageOffset = getPageOffset();
150
- var _this$props = _this.props,
151
- topOffset = _this$props.top,
152
- _this$props$left = _this$props.left,
153
- leftOffset = _this$props$left === void 0 ? 0 : _this$props$left,
154
- rightOffset = _this$props.right;
155
- var pos = getChildPos({
130
+ (0, _defineProperty2.default)(this, "handleScroll", () => {
131
+ if (this.child.current && this.element.current) {
132
+ const rect = this.element.current.getBoundingClientRect();
133
+ const childRect = this.child.current.getBoundingClientRect();
134
+ const pageOffset = getPageOffset();
135
+ const {
136
+ top: topOffset,
137
+ left: leftOffset = 0,
138
+ right: rightOffset
139
+ } = this.props;
140
+ const pos = getChildPos({
156
141
  offsets: {
157
- topOffset: topOffset,
158
- leftOffset: leftOffset,
159
- rightOffset: rightOffset
142
+ topOffset,
143
+ leftOffset,
144
+ rightOffset
160
145
  },
161
- rect: rect,
162
- childRect: childRect,
163
- pageOffset: pageOffset,
146
+ rect,
147
+ childRect,
148
+ pageOffset,
164
149
  padding: WINDOW_PAD
165
150
  });
166
- if (!(0, _isEqual["default"])(pos, _this.state.pos)) {
167
- _this.setState({
168
- pos: pos
151
+ if (!(0, _isEqual.default)(pos, this.state.pos)) {
152
+ this.setState({
153
+ pos
169
154
  });
170
155
  }
171
156
  }
172
157
  });
173
- return _this;
174
158
  }
175
- (0, _inherits2["default"])(Portaled, _Component);
176
- return (0, _createClass2["default"])(Portaled, [{
177
- key: "componentDidMount",
178
- value: function componentDidMount() {
179
- // relative
180
- this.unsubscribe = subscribe(this.handleScroll);
181
- this.handleScroll();
182
- }
183
- }, {
184
- key: "componentDidUpdate",
185
- value: function componentDidUpdate(prevProps) {
186
- var _this2 = this;
187
- var didOpen = this.props.isOpened && !prevProps.isOpened;
188
- var didClose = !this.props.isOpened && prevProps.isOpened;
189
- if (didOpen || didClose) {
190
- _window["default"].requestAnimationFrame(function () {
191
- if (_this2._unmounted) return;
192
- _this2.setState({
193
- isVisible: Boolean(didOpen)
194
- });
159
+ componentDidMount() {
160
+ // relative
161
+ this.unsubscribe = subscribe(this.handleScroll);
162
+ this.handleScroll();
163
+ }
164
+ componentDidUpdate(prevProps) {
165
+ const didOpen = this.props.isOpened && !prevProps.isOpened;
166
+ const didClose = !this.props.isOpened && prevProps.isOpened;
167
+ if (didOpen || didClose) {
168
+ _window.default.requestAnimationFrame(() => {
169
+ if (this._unmounted) return;
170
+ this.setState({
171
+ isVisible: Boolean(didOpen)
195
172
  });
196
- }
197
- this.handleScroll();
198
- }
199
- }, {
200
- key: "componentWillUnmount",
201
- value: function componentWillUnmount() {
202
- this._unmounted = true;
203
- // @ts-ignore
204
- this.unsubscribe();
205
- }
206
- }, {
207
- key: "render",
208
- value: function render() {
209
- var _this3 = this;
210
- var _this$props2 = this.props,
211
- Comp = _this$props2.component,
212
- overlayZIndex = _this$props2.overlayZIndex,
213
- isOpened = _this$props2.isOpened,
214
- onClose = _this$props2.onClose,
215
- children = _this$props2.children,
216
- modalProps = _this$props2.modalProps,
217
- _this$props2$modalSty = _this$props2.modalStyle,
218
- modalStyle = _this$props2$modalSty === void 0 ? {} : _this$props2$modalSty;
219
- var _this$state = this.state,
220
- isVisible = _this$state.isVisible,
221
- pos = _this$state.pos;
222
- var newModalStyle = _objectSpread(_objectSpread({}, defaultModalStyle), {}, {
223
- content: _objectSpread({}, modalStyle.content || {}),
224
- overlay: _objectSpread(_objectSpread(_objectSpread({}, defaultModalStyle.overlay), modalStyle.overlay || {}), {}, {
225
- // needs to be on top of existing modal
226
- zIndex: overlayZIndex || 9999
227
- })
228
- });
229
- return /*#__PURE__*/_react["default"].createElement(_context.RootContext.Consumer, null, function (context) {
230
- return /*#__PURE__*/_react["default"].createElement(Comp, {
231
- ref: _this3.element
232
- }, isOpened ? /*#__PURE__*/_react["default"].createElement(_reactModal["default"], (0, _extends2["default"])({
233
- className: "modal-portal"
234
- }, modalProps, {
235
- ariaHideApp: false,
236
- isOpen: true,
237
- style: newModalStyle,
238
- parentSelector: function parentSelector() {
239
- // React modal issue: https://github.com/reactjs/react-modal/issues/769
240
- // failed to execute removeChild on parent node when it is already unmounted
241
- return (
242
- // @ts-ignore
243
- context && context.current || {
244
- removeChild: function removeChild() {},
245
- appendChild: function appendChild() {}
246
- }
247
- );
248
- }
249
- }), /*#__PURE__*/_react["default"].createElement("div", {
250
- className: "portaled-content",
251
- key: "item",
252
- style: _objectSpread({
253
- position: 'fixed',
254
- opacity: isVisible ? 1 : 0,
255
- transition: _this3.props.theme.transition,
256
- // @ts-expect-error
257
- top: _this3.state.top,
258
- marginTop: isVisible ? '0px' : '14px'
259
- }, pos)
260
- }, /*#__PURE__*/_react["default"].createElement("div", {
261
- ref: _this3.child,
262
- style: {
263
- position: 'absolute',
264
- zIndex: overlayZIndex ? overlayZIndex + 1 : 10000
265
- }
266
- }, children))) : null);
267
173
  });
268
174
  }
269
- }]);
270
- }(_react.Component);
271
- (0, _defineProperty2["default"])(Portaled, "defaultProps", {
175
+ this.handleScroll();
176
+ }
177
+ componentWillUnmount() {
178
+ this._unmounted = true;
179
+ // @ts-ignore
180
+ this.unsubscribe();
181
+ }
182
+ render() {
183
+ const {
184
+ // relative
185
+ component: Comp,
186
+ overlayZIndex,
187
+ isOpened,
188
+ onClose,
189
+ // Modal
190
+ children,
191
+ modalProps,
192
+ modalStyle = {}
193
+ } = this.props;
194
+ const {
195
+ isVisible,
196
+ pos
197
+ } = this.state;
198
+ const newModalStyle = {
199
+ ...defaultModalStyle,
200
+ content: {
201
+ ...(modalStyle.content || {})
202
+ },
203
+ overlay: {
204
+ ...defaultModalStyle.overlay,
205
+ ...(modalStyle.overlay || {}),
206
+ // needs to be on top of existing modal
207
+ zIndex: overlayZIndex || 9999
208
+ }
209
+ };
210
+ return /*#__PURE__*/_react.default.createElement(_context.RootContext.Consumer, null, context => /*#__PURE__*/_react.default.createElement(Comp, {
211
+ ref: this.element
212
+ }, isOpened ? /*#__PURE__*/_react.default.createElement(_reactModal.default, (0, _extends2.default)({
213
+ className: "modal-portal"
214
+ }, modalProps, {
215
+ ariaHideApp: false,
216
+ isOpen: true,
217
+ style: newModalStyle,
218
+ parentSelector: () => {
219
+ // React modal issue: https://github.com/reactjs/react-modal/issues/769
220
+ // failed to execute removeChild on parent node when it is already unmounted
221
+ return (
222
+ // @ts-ignore
223
+ context && context.current || {
224
+ removeChild: () => {},
225
+ appendChild: () => {}
226
+ }
227
+ );
228
+ }
229
+ }), /*#__PURE__*/_react.default.createElement("div", {
230
+ className: "portaled-content",
231
+ key: "item",
232
+ style: {
233
+ position: 'fixed',
234
+ opacity: isVisible ? 1 : 0,
235
+ transition: this.props.theme.transition,
236
+ // @ts-expect-error
237
+ top: this.state.top,
238
+ marginTop: isVisible ? '0px' : '14px',
239
+ // @ts-ignore
240
+ ...pos
241
+ }
242
+ }, /*#__PURE__*/_react.default.createElement("div", {
243
+ ref: this.child,
244
+ style: {
245
+ position: 'absolute',
246
+ zIndex: overlayZIndex ? overlayZIndex + 1 : 10000
247
+ }
248
+ }, children))) : null));
249
+ }
250
+ }
251
+ (0, _defineProperty2.default)(Portaled, "defaultProps", {
272
252
  component: 'div',
273
253
  onClose: noop,
274
254
  theme: _base.theme
275
255
  });
276
- var _default = exports["default"] = (0, _styledComponents.withTheme)(Portaled);
277
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZGVib3VuY2UiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2lzRXF1YWwiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9jb250ZXh0IiwiX3JlYWN0TW9kYWwiLCJfd2luZG93IiwiX2RvY3VtZW50IiwiX2Jhc2UiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY2FsbFN1cGVyIiwibyIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImxpc3RlbmVycyIsInN0YXJ0TGlzdGVuaW5nIiwia2V5IiwiZ2V0UGFnZU9mZnNldCIsIngiLCJ3aW5kb3ciLCJwYWdlWE9mZnNldCIsInVuZGVmaW5lZCIsImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwiYm9keSIsInBhcmVudE5vZGUiLCJzY3JvbGxMZWZ0IiwieSIsInBhZ2VZT2Zmc2V0Iiwic2Nyb2xsVG9wIiwiYWRkRXZlbnRMaXN0ZW5lcnMiLCJhZGRFdmVudExpc3RlbmVyIiwiZGVib3VuY2UiLCJnZXRDaGlsZFBvcyIsImV4cG9ydHMiLCJfcmVmIiwib2Zmc2V0cyIsInJlY3QiLCJjaGlsZFJlY3QiLCJwYWdlT2Zmc2V0IiwicGFkZGluZyIsInRvcE9mZnNldCIsImxlZnRPZmZzZXQiLCJyaWdodE9mZnNldCIsImFuY2hvckxlZnQiLCJwb3MiLCJ0b3AiLCJsZWZ0IiwicmlnaHQiLCJpbm5lcldpZHRoIiwibGVmdE9yUmlnaHQiLCJ3aWR0aCIsImhlaWdodCIsImlubmVySGVpZ2h0IiwibGlzdGVuZXJJZENvdW50ZXIiLCJzdWJzY3JpYmUiLCJmbiIsImlkIiwiZGVmYXVsdE1vZGFsU3R5bGUiLCJjb250ZW50IiwiYm9yZGVyIiwiYm90dG9tIiwib3ZlcmxheSIsImJhY2tncm91bmRDb2xvciIsIldJTkRPV19QQUQiLCJub29wIiwiUG9ydGFsZWQiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2xlbiIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjb25jYXQiLCJpc1Zpc2libGUiLCJjcmVhdGVSZWYiLCJjaGlsZCIsImN1cnJlbnQiLCJlbGVtZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiX3RoaXMkcHJvcHMiLCJwcm9wcyIsIl90aGlzJHByb3BzJGxlZnQiLCJpc0VxdWFsIiwic3RhdGUiLCJzZXRTdGF0ZSIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwidmFsdWUiLCJjb21wb25lbnREaWRNb3VudCIsInVuc3Vic2NyaWJlIiwiaGFuZGxlU2Nyb2xsIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwiX3RoaXMyIiwiZGlkT3BlbiIsImlzT3BlbmVkIiwiZGlkQ2xvc2UiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJfdW5tb3VudGVkIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW5kZXIiLCJfdGhpczMiLCJfdGhpcyRwcm9wczIiLCJDb21wIiwiY29tcG9uZW50Iiwib3ZlcmxheVpJbmRleCIsIm9uQ2xvc2UiLCJjaGlsZHJlbiIsIm1vZGFsUHJvcHMiLCJfdGhpcyRwcm9wczIkbW9kYWxTdHkiLCJtb2RhbFN0eWxlIiwiX3RoaXMkc3RhdGUiLCJuZXdNb2RhbFN0eWxlIiwiekluZGV4IiwiY3JlYXRlRWxlbWVudCIsIlJvb3RDb250ZXh0IiwiQ29uc3VtZXIiLCJjb250ZXh0IiwicmVmIiwiX2V4dGVuZHMyIiwiY2xhc3NOYW1lIiwiYXJpYUhpZGVBcHAiLCJpc09wZW4iLCJzdHlsZSIsInBhcmVudFNlbGVjdG9yIiwicmVtb3ZlQ2hpbGQiLCJhcHBlbmRDaGlsZCIsInBvc2l0aW9uIiwib3BhY2l0eSIsInRyYW5zaXRpb24iLCJ0aGVtZSIsIm1hcmdpblRvcCIsIkNvbXBvbmVudCIsIl9kZWZhdWx0Iiwid2l0aFRoZW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvY29tbW9uL3BvcnRhbGVkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZiwgRWxlbWVudFR5cGUsIFByb3BzV2l0aENoaWxkcmVufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSAnbG9kYXNoL2RlYm91bmNlJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcblxuaW1wb3J0IHt3aXRoVGhlbWV9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Um9vdENvbnRleHR9IGZyb20gJ2NvbXBvbmVudHMvY29udGV4dCc7XG5pbXBvcnQgTW9kYWwgZnJvbSAncmVhY3QtbW9kYWwnO1xuaW1wb3J0IHdpbmRvdyBmcm9tICdnbG9iYWwvd2luZG93JztcbmltcG9ydCBkb2N1bWVudCBmcm9tICdnbG9iYWwvZG9jdW1lbnQnO1xuaW1wb3J0IHt0aGVtZX0gZnJvbSAnc3R5bGVzL2Jhc2UnO1xuXG5jb25zdCBsaXN0ZW5lcnMgPSB7fTtcblxuY29uc3Qgc3RhcnRMaXN0ZW5pbmcgPSAoKSA9PiBPYmplY3Qua2V5cyhsaXN0ZW5lcnMpLmZvckVhY2goa2V5ID0+IGxpc3RlbmVyc1trZXldKCkpO1xuXG5jb25zdCBnZXRQYWdlT2Zmc2V0ID0gKCkgPT4gKHtcbiAgeDpcbiAgICB3aW5kb3cucGFnZVhPZmZzZXQgIT09IHVuZGVmaW5lZFxuICAgICAgPyB3aW5kb3cucGFnZVhPZmZzZXRcbiAgICAgIDogKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCB8fCBkb2N1bWVudC5ib2R5LnBhcmVudE5vZGUgfHwgZG9jdW1lbnQuYm9keSkuc2Nyb2xsTGVmdCxcbiAgeTpcbiAgICB3aW5kb3cucGFnZVlPZmZzZXQgIT09IHVuZGVmaW5lZFxuICAgICAgPyB3aW5kb3cucGFnZVlPZmZzZXRcbiAgICAgIDogKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCB8fCBkb2N1bWVudC5ib2R5LnBhcmVudE5vZGUgfHwgZG9jdW1lbnQuYm9keSkuc2Nyb2xsVG9wXG59KTtcblxuY29uc3QgYWRkRXZlbnRMaXN0ZW5lcnMgPSAoKSA9PiB7XG4gIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5ib2R5KVxuICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V3aGVlbCcsIGRlYm91bmNlKHN0YXJ0TGlzdGVuaW5nLCAxMDApKTtcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGRlYm91bmNlKHN0YXJ0TGlzdGVuaW5nLCA1MCkpO1xufTtcblxuaW50ZXJmYWNlIEdldENoaWxkUG9zUHJvcHMge1xuICBvZmZzZXRzOiBQYXJ0aWFsPHtcbiAgICB0b3BPZmZzZXQ6IG51bWJlcjtcbiAgICBsZWZ0T2Zmc2V0OiBudW1iZXI7XG4gICAgcmlnaHRPZmZzZXQ6IG51bWJlcjtcbiAgfT47XG4gIHJlY3Q6IERPTVJlY3Q7XG4gIGNoaWxkUmVjdDogRE9NUmVjdDtcbiAgcGFnZU9mZnNldDoge1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG4gIH07XG4gIHBhZGRpbmc6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGdldENoaWxkUG9zID0gKHtvZmZzZXRzLCByZWN0LCBjaGlsZFJlY3QsIHBhZ2VPZmZzZXQsIHBhZGRpbmd9OiBHZXRDaGlsZFBvc1Byb3BzKSA9PiB7XG4gIGNvbnN0IHt0b3BPZmZzZXQsIGxlZnRPZmZzZXQsIHJpZ2h0T2Zmc2V0fSA9IG9mZnNldHM7XG5cbiAgY29uc3QgYW5jaG9yTGVmdCA9IGxlZnRPZmZzZXQgIT09IHVuZGVmaW5lZDtcbiAgY29uc3QgcG9zID0ge1xuICAgIHRvcDogcGFnZU9mZnNldC55ICsgcmVjdC50b3AgKyAodG9wT2Zmc2V0IHx8IDApLFxuICAgIC4uLihhbmNob3JMZWZ0XG4gICAgICA/IHtsZWZ0OiBwYWdlT2Zmc2V0LnggKyByZWN0LmxlZnQgKyBsZWZ0T2Zmc2V0IX1cbiAgICAgIDoge3JpZ2h0OiB3aW5kb3cuaW5uZXJXaWR0aCAtIHJlY3QucmlnaHQgLSBwYWdlT2Zmc2V0LnggKyAocmlnaHRPZmZzZXQgfHwgMCl9KVxuICB9O1xuXG4gIGNvbnN0IGxlZnRPclJpZ2h0ID0gYW5jaG9yTGVmdCA/ICdsZWZ0JyA6ICdyaWdodCc7XG5cbiAgaWYgKHBvc1tsZWZ0T3JSaWdodF0gJiYgcG9zW2xlZnRPclJpZ2h0XSA8IDApIHtcbiAgICBwb3NbbGVmdE9yUmlnaHRdID0gcGFkZGluZztcbiAgfSBlbHNlIGlmIChwb3NbbGVmdE9yUmlnaHRdICYmIHBvc1tsZWZ0T3JSaWdodF0gKyBjaGlsZFJlY3Qud2lkdGggPiB3aW5kb3cuaW5uZXJXaWR0aCkge1xuICAgIHBvc1tsZWZ0T3JSaWdodF0gPSB3aW5kb3cuaW5uZXJXaWR0aCAtIGNoaWxkUmVjdC53aWR0aCAtIHBhZGRpbmc7XG4gIH1cblxuICBpZiAocG9zLnRvcCA8IDApIHtcbiAgICBwb3MudG9wID0gcGFkZGluZztcbiAgfSBlbHNlIGlmIChwb3MudG9wICsgY2hpbGRSZWN0LmhlaWdodCA+IHdpbmRvdy5pbm5lckhlaWdodCkge1xuICAgIHBvcy50b3AgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBjaGlsZFJlY3QuaGVpZ2h0IC0gcGFkZGluZztcbiAgfVxuXG4gIHJldHVybiBwb3M7XG59O1xuXG5pZiAoZG9jdW1lbnQuYm9keSkge1xuICBhZGRFdmVudExpc3RlbmVycygpO1xufSBlbHNlIHtcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGFkZEV2ZW50TGlzdGVuZXJzKTtcbn1cblxubGV0IGxpc3RlbmVySWRDb3VudGVyID0gMDtcbmZ1bmN0aW9uIHN1YnNjcmliZShmbikge1xuICBsaXN0ZW5lcklkQ291bnRlciArPSAxO1xuICBjb25zdCBpZCA9IGxpc3RlbmVySWRDb3VudGVyO1xuICBsaXN0ZW5lcnNbaWRdID0gZm47XG4gIHJldHVybiAoKSA9PiBkZWxldGUgbGlzdGVuZXJzW2lkXTtcbn1cblxuY29uc3QgZGVmYXVsdE1vZGFsU3R5bGUgPSB7XG4gIGNvbnRlbnQ6IHtcbiAgICB0b3A6IDAsXG4gICAgbGVmdDogMCxcbiAgICBib3JkZXI6IDAsXG4gICAgcmlnaHQ6ICdhdXRvJyxcbiAgICBib3R0b206ICdhdXRvJyxcbiAgICBwYWRkaW5nOiAnMHB4IDBweCAwcHggMHB4J1xuICB9LFxuICBvdmVybGF5OiB7XG4gICAgcmlnaHQ6ICdhdXRvJyxcbiAgICBib3R0b206ICdhdXRvJyxcbiAgICB3aWR0aDogJzEwMHZ3JyxcbiAgICBoZWlnaHQ6ICcxMDB2aCcsXG4gICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwKSdcbiAgfVxufTtcblxuY29uc3QgV0lORE9XX1BBRCA9IDIwO1xuXG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbnR5cGUgUG9ydGFsZWRQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPHtcbiAgY29tcG9uZW50OiBFbGVtZW50VHlwZTtcbiAgb25DbG9zZT86IChcbiAgICBldmVudDogUmVhY3QuTW91c2VFdmVudDxFbGVtZW50LCBnbG9iYWxUaGlzLk1vdXNlRXZlbnQ+IHwgUmVhY3QuS2V5Ym9hcmRFdmVudDxFbGVtZW50PlxuICApID0+IHZvaWQ7XG4gIHRoZW1lPzogYW55O1xuICBpc09wZW5lZD86IGJvb2xlYW47XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0PzogbnVtYmVyO1xuICByaWdodD86IG51bWJlcjtcbiAgb3ZlcmxheVpJbmRleD86IG51bWJlcjtcbiAgbW9kYWxQcm9wcz86IFBhcnRpYWw8UmVhY3RNb2RhbC5Qcm9wcz47XG4gIG1vZGFsU3R5bGU/OiBQYXJ0aWFsPHR5cGVvZiBkZWZhdWx0TW9kYWxTdHlsZT47XG59PjtcblxuaW50ZXJmYWNlIFBvcnRhbGVkU3RhdGUge1xuICBwb3M6XG4gICAgfCB7XG4gICAgICAgIGxlZnQ6IG51bWJlcjtcbiAgICAgICAgdG9wOiBudW1iZXI7XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHJpZ2h0OiBudW1iZXI7XG4gICAgICAgIHRvcDogbnVtYmVyO1xuICAgICAgfVxuICAgIHwgbnVsbDtcbiAgaXNWaXNpYmxlOiBib29sZWFuO1xufVxuXG5jbGFzcyBQb3J0YWxlZCBleHRlbmRzIENvbXBvbmVudDxQb3J0YWxlZFByb3BzLCBQb3J0YWxlZFN0YXRlPiB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgY29tcG9uZW50OiAnZGl2JyxcbiAgICBvbkNsb3NlOiBub29wLFxuICAgIHRoZW1lXG4gIH07XG5cbiAgc3RhdGUgPSB7XG4gICAgcG9zOiBudWxsLFxuICAgIGlzVmlzaWJsZTogZmFsc2VcbiAgfTtcblxuICB1bnN1YnNjcmliZTogKCgpID0+IGJvb2xlYW4pIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBfdW5tb3VudGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgLy8gcmVsYXRpdmVcbiAgICB0aGlzLnVuc3Vic2NyaWJlID0gc3Vic2NyaWJlKHRoaXMuaGFuZGxlU2Nyb2xsKTtcbiAgICB0aGlzLmhhbmRsZVNjcm9sbCgpO1xuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgIGNvbnN0IGRpZE9wZW4gPSB0aGlzLnByb3BzLmlzT3BlbmVkICYmICFwcmV2UHJvcHMuaXNPcGVuZWQ7XG4gICAgY29uc3QgZGlkQ2xvc2UgPSAhdGhpcy5wcm9wcy5pc09wZW5lZCAmJiBwcmV2UHJvcHMuaXNPcGVuZWQ7XG4gICAgaWYgKGRpZE9wZW4gfHwgZGlkQ2xvc2UpIHtcbiAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fdW5tb3VudGVkKSByZXR1cm47XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2lzVmlzaWJsZTogQm9vbGVhbihkaWRPcGVuKX0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVTY3JvbGwoKTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuX3VubW91bnRlZCA9IHRydWU7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGVsZW1lbnQgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG4gIGNoaWxkID0gY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG4gIGhhbmRsZVNjcm9sbCA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5jaGlsZC5jdXJyZW50ICYmIHRoaXMuZWxlbWVudC5jdXJyZW50KSB7XG4gICAgICBjb25zdCByZWN0ID0gdGhpcy5lbGVtZW50LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjaGlsZFJlY3QgPSB0aGlzLmNoaWxkLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBwYWdlT2Zmc2V0ID0gZ2V0UGFnZU9mZnNldCgpO1xuICAgICAgY29uc3Qge3RvcDogdG9wT2Zmc2V0LCBsZWZ0OiBsZWZ0T2Zmc2V0ID0gMCwgcmlnaHQ6IHJpZ2h0T2Zmc2V0fSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IHBvcyA9IGdldENoaWxkUG9zKHtcbiAgICAgICAgb2Zmc2V0czoge3RvcE9mZnNldCwgbGVmdE9mZnNldCwgcmlnaHRPZmZzZXR9LFxuICAgICAgICByZWN0LFxuICAgICAgICBjaGlsZFJlY3QsXG4gICAgICAgIHBhZ2VPZmZzZXQsXG4gICAgICAgIHBhZGRpbmc6IFdJTkRPV19QQURcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWlzRXF1YWwocG9zLCB0aGlzLnN0YXRlLnBvcykpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7cG9zfSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICAvLyByZWxhdGl2ZVxuICAgICAgY29tcG9uZW50OiBDb21wLFxuICAgICAgb3ZlcmxheVpJbmRleCxcbiAgICAgIGlzT3BlbmVkLFxuICAgICAgb25DbG9zZSxcblxuICAgICAgLy8gTW9kYWxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgbW9kYWxQcm9wcyxcbiAgICAgIG1vZGFsU3R5bGUgPSB7fVxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3Qge2lzVmlzaWJsZSwgcG9zfSA9IHRoaXMuc3RhdGU7XG5cbiAgICBjb25zdCBuZXdNb2RhbFN0eWxlID0ge1xuICAgICAgLi4uZGVmYXVsdE1vZGFsU3R5bGUsXG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIC4uLihtb2RhbFN0eWxlLmNvbnRlbnQgfHwge30pXG4gICAgICB9LFxuICAgICAgb3ZlcmxheToge1xuICAgICAgICAuLi5kZWZhdWx0TW9kYWxTdHlsZS5vdmVybGF5LFxuICAgICAgICAuLi4obW9kYWxTdHlsZS5vdmVybGF5IHx8IHt9KSxcbiAgICAgICAgLy8gbmVlZHMgdG8gYmUgb24gdG9wIG9mIGV4aXN0aW5nIG1vZGFsXG4gICAgICAgIHpJbmRleDogb3ZlcmxheVpJbmRleCB8fCA5OTk5XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8Um9vdENvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgIHtjb250ZXh0ID0+IChcbiAgICAgICAgICA8Q29tcCByZWY9e3RoaXMuZWxlbWVudH0+XG4gICAgICAgICAgICB7aXNPcGVuZWQgPyAoXG4gICAgICAgICAgICAgIDxNb2RhbFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1vZGFsLXBvcnRhbFwiXG4gICAgICAgICAgICAgICAgey4uLm1vZGFsUHJvcHN9XG4gICAgICAgICAgICAgICAgYXJpYUhpZGVBcHA9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGlzT3BlblxuICAgICAgICAgICAgICAgIHN0eWxlPXtuZXdNb2RhbFN0eWxlfVxuICAgICAgICAgICAgICAgIHBhcmVudFNlbGVjdG9yPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBSZWFjdCBtb2RhbCBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmVhY3QtbW9kYWwvaXNzdWVzLzc2OVxuICAgICAgICAgICAgICAgICAgLy8gZmFpbGVkIHRvIGV4ZWN1dGUgcmVtb3ZlQ2hpbGQgb24gcGFyZW50IG5vZGUgd2hlbiBpdCBpcyBhbHJlYWR5IHVubW91bnRlZFxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAoKGNvbnRleHQgJiYgY29udGV4dC5jdXJyZW50KSB8fCB7XG4gICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2hpbGQ6ICgpID0+IHt9LFxuICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkOiAoKSA9PiB7fVxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBIVE1MRWxlbWVudFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicG9ydGFsZWQtY29udGVudFwiXG4gICAgICAgICAgICAgICAgICBrZXk9XCJpdGVtXCJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiBpc1Zpc2libGUgPyAxIDogMCxcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogdGhpcy5wcm9wcy50aGVtZS50cmFuc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICAgICAgICAgIHRvcDogdGhpcy5zdGF0ZS50b3AsXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogaXNWaXNpYmxlID8gJzBweCcgOiAnMTRweCcsXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgLi4ucG9zXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLmNoaWxkfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogb3ZlcmxheVpJbmRleCA/IG92ZXJsYXlaSW5kZXggKyAxIDogMTAwMDBcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvTW9kYWw+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L0NvbXA+XG4gICAgICAgICl9XG4gICAgICA8L1Jvb3RDb250ZXh0LkNvbnN1bWVyPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgd2l0aFRoZW1lKFBvcnRhbGVkKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFNBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFJLGlCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxXQUFBLEdBQUFKLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFMLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBUSxTQUFBLEdBQUFOLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBUyxLQUFBLEdBQUFULE9BQUE7QUFBa0MsU0FBQVUseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FB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
256
+ var _default = exports.default = (0, _styledComponents.withTheme)(Portaled);
257
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZGVib3VuY2UiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2lzRXF1YWwiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9jb250ZXh0IiwiX3JlYWN0TW9kYWwiLCJfd2luZG93IiwiX2RvY3VtZW50IiwiX2Jhc2UiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJsaXN0ZW5lcnMiLCJzdGFydExpc3RlbmluZyIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwiZ2V0UGFnZU9mZnNldCIsIngiLCJ3aW5kb3ciLCJwYWdlWE9mZnNldCIsInVuZGVmaW5lZCIsImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwiYm9keSIsInBhcmVudE5vZGUiLCJzY3JvbGxMZWZ0IiwieSIsInBhZ2VZT2Zmc2V0Iiwic2Nyb2xsVG9wIiwiYWRkRXZlbnRMaXN0ZW5lcnMiLCJhZGRFdmVudExpc3RlbmVyIiwiZGVib3VuY2UiLCJnZXRDaGlsZFBvcyIsIl9yZWYiLCJvZmZzZXRzIiwicmVjdCIsImNoaWxkUmVjdCIsInBhZ2VPZmZzZXQiLCJwYWRkaW5nIiwidG9wT2Zmc2V0IiwibGVmdE9mZnNldCIsInJpZ2h0T2Zmc2V0IiwiYW5jaG9yTGVmdCIsInBvcyIsInRvcCIsImxlZnQiLCJyaWdodCIsImlubmVyV2lkdGgiLCJsZWZ0T3JSaWdodCIsIndpZHRoIiwiaGVpZ2h0IiwiaW5uZXJIZWlnaHQiLCJleHBvcnRzIiwibGlzdGVuZXJJZENvdW50ZXIiLCJzdWJzY3JpYmUiLCJmbiIsImlkIiwiZGVmYXVsdE1vZGFsU3R5bGUiLCJjb250ZW50IiwiYm9yZGVyIiwiYm90dG9tIiwib3ZlcmxheSIsImJhY2tncm91bmRDb2xvciIsIldJTkRPV19QQUQiLCJub29wIiwiUG9ydGFsZWQiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJpc1Zpc2libGUiLCJjcmVhdGVSZWYiLCJjaGlsZCIsImN1cnJlbnQiLCJlbGVtZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicHJvcHMiLCJpc0VxdWFsIiwic3RhdGUiLCJzZXRTdGF0ZSIsImNvbXBvbmVudERpZE1vdW50IiwidW5zdWJzY3JpYmUiLCJoYW5kbGVTY3JvbGwiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJkaWRPcGVuIiwiaXNPcGVuZWQiLCJkaWRDbG9zZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIl91bm1vdW50ZWQiLCJCb29sZWFuIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW5kZXIiLCJjb21wb25lbnQiLCJDb21wIiwib3ZlcmxheVpJbmRleCIsIm9uQ2xvc2UiLCJjaGlsZHJlbiIsIm1vZGFsUHJvcHMiLCJtb2RhbFN0eWxlIiwibmV3TW9kYWxTdHlsZSIsInpJbmRleCIsImNyZWF0ZUVsZW1lbnQiLCJSb290Q29udGV4dCIsIkNvbnN1bWVyIiwiY29udGV4dCIsInJlZiIsIl9leHRlbmRzMiIsImNsYXNzTmFtZSIsImFyaWFIaWRlQXBwIiwiaXNPcGVuIiwic3R5bGUiLCJwYXJlbnRTZWxlY3RvciIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGQiLCJwb3NpdGlvbiIsIm9wYWNpdHkiLCJ0cmFuc2l0aW9uIiwidGhlbWUiLCJtYXJnaW5Ub3AiLCJfZGVmYXVsdCIsIndpdGhUaGVtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9wb3J0YWxlZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWYsIEVsZW1lbnRUeXBlLCBQcm9wc1dpdGhDaGlsZHJlbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC9kZWJvdW5jZSc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5cbmltcG9ydCB7d2l0aFRoZW1lfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge1Jvb3RDb250ZXh0fSBmcm9tICdjb21wb25lbnRzL2NvbnRleHQnO1xuaW1wb3J0IE1vZGFsIGZyb20gJ3JlYWN0LW1vZGFsJztcbmltcG9ydCB3aW5kb3cgZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQgZG9jdW1lbnQgZnJvbSAnZ2xvYmFsL2RvY3VtZW50JztcbmltcG9ydCB7dGhlbWV9IGZyb20gJ3N0eWxlcy9iYXNlJztcblxuY29uc3QgbGlzdGVuZXJzID0ge307XG5cbmNvbnN0IHN0YXJ0TGlzdGVuaW5nID0gKCkgPT4gT2JqZWN0LmtleXMobGlzdGVuZXJzKS5mb3JFYWNoKGtleSA9PiBsaXN0ZW5lcnNba2V5XSgpKTtcblxuY29uc3QgZ2V0UGFnZU9mZnNldCA9ICgpID0+ICh7XG4gIHg6XG4gICAgd2luZG93LnBhZ2VYT2Zmc2V0ICE9PSB1bmRlZmluZWRcbiAgICAgID8gd2luZG93LnBhZ2VYT2Zmc2V0XG4gICAgICA6IChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgfHwgZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlIHx8IGRvY3VtZW50LmJvZHkpLnNjcm9sbExlZnQsXG4gIHk6XG4gICAgd2luZG93LnBhZ2VZT2Zmc2V0ICE9PSB1bmRlZmluZWRcbiAgICAgID8gd2luZG93LnBhZ2VZT2Zmc2V0XG4gICAgICA6IChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgfHwgZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlIHx8IGRvY3VtZW50LmJvZHkpLnNjcm9sbFRvcFxufSk7XG5cbmNvbnN0IGFkZEV2ZW50TGlzdGVuZXJzID0gKCkgPT4ge1xuICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQuYm9keSlcbiAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNld2hlZWwnLCBkZWJvdW5jZShzdGFydExpc3RlbmluZywgMTAwKSk7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBkZWJvdW5jZShzdGFydExpc3RlbmluZywgNTApKTtcbn07XG5cbmludGVyZmFjZSBHZXRDaGlsZFBvc1Byb3BzIHtcbiAgb2Zmc2V0czogUGFydGlhbDx7XG4gICAgdG9wT2Zmc2V0OiBudW1iZXI7XG4gICAgbGVmdE9mZnNldDogbnVtYmVyO1xuICAgIHJpZ2h0T2Zmc2V0OiBudW1iZXI7XG4gIH0+O1xuICByZWN0OiBET01SZWN0O1xuICBjaGlsZFJlY3Q6IERPTVJlY3Q7XG4gIHBhZ2VPZmZzZXQ6IHtcbiAgICB4OiBudW1iZXI7XG4gICAgeTogbnVtYmVyO1xuICB9O1xuICBwYWRkaW5nOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRDaGlsZFBvcyA9ICh7b2Zmc2V0cywgcmVjdCwgY2hpbGRSZWN0LCBwYWdlT2Zmc2V0LCBwYWRkaW5nfTogR2V0Q2hpbGRQb3NQcm9wcykgPT4ge1xuICBjb25zdCB7dG9wT2Zmc2V0LCBsZWZ0T2Zmc2V0LCByaWdodE9mZnNldH0gPSBvZmZzZXRzO1xuXG4gIGNvbnN0IGFuY2hvckxlZnQgPSBsZWZ0T2Zmc2V0ICE9PSB1bmRlZmluZWQ7XG4gIGNvbnN0IHBvcyA9IHtcbiAgICB0b3A6IHBhZ2VPZmZzZXQueSArIHJlY3QudG9wICsgKHRvcE9mZnNldCB8fCAwKSxcbiAgICAuLi4oYW5jaG9yTGVmdFxuICAgICAgPyB7bGVmdDogcGFnZU9mZnNldC54ICsgcmVjdC5sZWZ0ICsgbGVmdE9mZnNldCF9XG4gICAgICA6IHtyaWdodDogd2luZG93LmlubmVyV2lkdGggLSByZWN0LnJpZ2h0IC0gcGFnZU9mZnNldC54ICsgKHJpZ2h0T2Zmc2V0IHx8IDApfSlcbiAgfTtcblxuICBjb25zdCBsZWZ0T3JSaWdodCA9IGFuY2hvckxlZnQgPyAnbGVmdCcgOiAncmlnaHQnO1xuXG4gIGlmIChwb3NbbGVmdE9yUmlnaHRdICYmIHBvc1tsZWZ0T3JSaWdodF0gPCAwKSB7XG4gICAgcG9zW2xlZnRPclJpZ2h0XSA9IHBhZGRpbmc7XG4gIH0gZWxzZSBpZiAocG9zW2xlZnRPclJpZ2h0XSAmJiBwb3NbbGVmdE9yUmlnaHRdICsgY2hpbGRSZWN0LndpZHRoID4gd2luZG93LmlubmVyV2lkdGgpIHtcbiAgICBwb3NbbGVmdE9yUmlnaHRdID0gd2luZG93LmlubmVyV2lkdGggLSBjaGlsZFJlY3Qud2lkdGggLSBwYWRkaW5nO1xuICB9XG5cbiAgaWYgKHBvcy50b3AgPCAwKSB7XG4gICAgcG9zLnRvcCA9IHBhZGRpbmc7XG4gIH0gZWxzZSBpZiAocG9zLnRvcCArIGNoaWxkUmVjdC5oZWlnaHQgPiB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcbiAgICBwb3MudG9wID0gd2luZG93LmlubmVySGVpZ2h0IC0gY2hpbGRSZWN0LmhlaWdodCAtIHBhZGRpbmc7XG4gIH1cblxuICByZXR1cm4gcG9zO1xufTtcblxuaWYgKGRvY3VtZW50LmJvZHkpIHtcbiAgYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbn0gZWxzZSB7XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBhZGRFdmVudExpc3RlbmVycyk7XG59XG5cbmxldCBsaXN0ZW5lcklkQ291bnRlciA9IDA7XG5mdW5jdGlvbiBzdWJzY3JpYmUoZm4pIHtcbiAgbGlzdGVuZXJJZENvdW50ZXIgKz0gMTtcbiAgY29uc3QgaWQgPSBsaXN0ZW5lcklkQ291bnRlcjtcbiAgbGlzdGVuZXJzW2lkXSA9IGZuO1xuICByZXR1cm4gKCkgPT4gZGVsZXRlIGxpc3RlbmVyc1tpZF07XG59XG5cbmNvbnN0IGRlZmF1bHRNb2RhbFN0eWxlID0ge1xuICBjb250ZW50OiB7XG4gICAgdG9wOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgYm9yZGVyOiAwLFxuICAgIHJpZ2h0OiAnYXV0bycsXG4gICAgYm90dG9tOiAnYXV0bycsXG4gICAgcGFkZGluZzogJzBweCAwcHggMHB4IDBweCdcbiAgfSxcbiAgb3ZlcmxheToge1xuICAgIHJpZ2h0OiAnYXV0bycsXG4gICAgYm90dG9tOiAnYXV0bycsXG4gICAgd2lkdGg6ICcxMDB2dycsXG4gICAgaGVpZ2h0OiAnMTAwdmgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwgMCwgMCwgMCknXG4gIH1cbn07XG5cbmNvbnN0IFdJTkRPV19QQUQgPSAyMDtcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG50eXBlIFBvcnRhbGVkUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGNvbXBvbmVudDogRWxlbWVudFR5cGU7XG4gIG9uQ2xvc2U/OiAoXG4gICAgZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8RWxlbWVudCwgZ2xvYmFsVGhpcy5Nb3VzZUV2ZW50PiB8IFJlYWN0LktleWJvYXJkRXZlbnQ8RWxlbWVudD5cbiAgKSA9PiB2b2lkO1xuICB0aGVtZT86IGFueTtcbiAgaXNPcGVuZWQ/OiBib29sZWFuO1xuICB0b3A6IG51bWJlcjtcbiAgbGVmdD86IG51bWJlcjtcbiAgcmlnaHQ/OiBudW1iZXI7XG4gIG92ZXJsYXlaSW5kZXg/OiBudW1iZXI7XG4gIG1vZGFsUHJvcHM/OiBQYXJ0aWFsPFJlYWN0TW9kYWwuUHJvcHM+O1xuICBtb2RhbFN0eWxlPzogUGFydGlhbDx0eXBlb2YgZGVmYXVsdE1vZGFsU3R5bGU+O1xufT47XG5cbmludGVyZmFjZSBQb3J0YWxlZFN0YXRlIHtcbiAgcG9zOlxuICAgIHwge1xuICAgICAgICBsZWZ0OiBudW1iZXI7XG4gICAgICAgIHRvcDogbnVtYmVyO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICByaWdodDogbnVtYmVyO1xuICAgICAgICB0b3A6IG51bWJlcjtcbiAgICAgIH1cbiAgICB8IG51bGw7XG4gIGlzVmlzaWJsZTogYm9vbGVhbjtcbn1cblxuY2xhc3MgUG9ydGFsZWQgZXh0ZW5kcyBDb21wb25lbnQ8UG9ydGFsZWRQcm9wcywgUG9ydGFsZWRTdGF0ZT4ge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGNvbXBvbmVudDogJ2RpdicsXG4gICAgb25DbG9zZTogbm9vcCxcbiAgICB0aGVtZVxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIHBvczogbnVsbCxcbiAgICBpc1Zpc2libGU6IGZhbHNlXG4gIH07XG5cbiAgdW5zdWJzY3JpYmU6ICgoKSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgX3VubW91bnRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIC8vIHJlbGF0aXZlXG4gICAgdGhpcy51bnN1YnNjcmliZSA9IHN1YnNjcmliZSh0aGlzLmhhbmRsZVNjcm9sbCk7XG4gICAgdGhpcy5oYW5kbGVTY3JvbGwoKTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICBjb25zdCBkaWRPcGVuID0gdGhpcy5wcm9wcy5pc09wZW5lZCAmJiAhcHJldlByb3BzLmlzT3BlbmVkO1xuICAgIGNvbnN0IGRpZENsb3NlID0gIXRoaXMucHJvcHMuaXNPcGVuZWQgJiYgcHJldlByb3BzLmlzT3BlbmVkO1xuICAgIGlmIChkaWRPcGVuIHx8IGRpZENsb3NlKSB7XG4gICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX3VubW91bnRlZCkgcmV0dXJuO1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtpc1Zpc2libGU6IEJvb2xlYW4oZGlkT3Blbil9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuaGFuZGxlU2Nyb2xsKCk7XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLl91bm1vdW50ZWQgPSB0cnVlO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBlbGVtZW50ID0gY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuICBjaGlsZCA9IGNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuY2hpbGQuY3VycmVudCAmJiB0aGlzLmVsZW1lbnQuY3VycmVudCkge1xuICAgICAgY29uc3QgcmVjdCA9IHRoaXMuZWxlbWVudC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY2hpbGRSZWN0ID0gdGhpcy5jaGlsZC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgcGFnZU9mZnNldCA9IGdldFBhZ2VPZmZzZXQoKTtcbiAgICAgIGNvbnN0IHt0b3A6IHRvcE9mZnNldCwgbGVmdDogbGVmdE9mZnNldCA9IDAsIHJpZ2h0OiByaWdodE9mZnNldH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICBjb25zdCBwb3MgPSBnZXRDaGlsZFBvcyh7XG4gICAgICAgIG9mZnNldHM6IHt0b3BPZmZzZXQsIGxlZnRPZmZzZXQsIHJpZ2h0T2Zmc2V0fSxcbiAgICAgICAgcmVjdCxcbiAgICAgICAgY2hpbGRSZWN0LFxuICAgICAgICBwYWdlT2Zmc2V0LFxuICAgICAgICBwYWRkaW5nOiBXSU5ET1dfUEFEXG4gICAgICB9KTtcblxuICAgICAgaWYgKCFpc0VxdWFsKHBvcywgdGhpcy5zdGF0ZS5wb3MpKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3Bvc30pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgLy8gcmVsYXRpdmVcbiAgICAgIGNvbXBvbmVudDogQ29tcCxcbiAgICAgIG92ZXJsYXlaSW5kZXgsXG4gICAgICBpc09wZW5lZCxcbiAgICAgIG9uQ2xvc2UsXG5cbiAgICAgIC8vIE1vZGFsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIG1vZGFsUHJvcHMsXG4gICAgICBtb2RhbFN0eWxlID0ge31cbiAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IHtpc1Zpc2libGUsIHBvc30gPSB0aGlzLnN0YXRlO1xuXG4gICAgY29uc3QgbmV3TW9kYWxTdHlsZSA9IHtcbiAgICAgIC4uLmRlZmF1bHRNb2RhbFN0eWxlLFxuICAgICAgY29udGVudDoge1xuICAgICAgICAuLi4obW9kYWxTdHlsZS5jb250ZW50IHx8IHt9KVxuICAgICAgfSxcbiAgICAgIG92ZXJsYXk6IHtcbiAgICAgICAgLi4uZGVmYXVsdE1vZGFsU3R5bGUub3ZlcmxheSxcbiAgICAgICAgLi4uKG1vZGFsU3R5bGUub3ZlcmxheSB8fCB7fSksXG4gICAgICAgIC8vIG5lZWRzIHRvIGJlIG9uIHRvcCBvZiBleGlzdGluZyBtb2RhbFxuICAgICAgICB6SW5kZXg6IG92ZXJsYXlaSW5kZXggfHwgOTk5OVxuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFJvb3RDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7Y29udGV4dCA9PiAoXG4gICAgICAgICAgPENvbXAgcmVmPXt0aGlzLmVsZW1lbnR9PlxuICAgICAgICAgICAge2lzT3BlbmVkID8gKFxuICAgICAgICAgICAgICA8TW9kYWxcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtb2RhbC1wb3J0YWxcIlxuICAgICAgICAgICAgICAgIHsuLi5tb2RhbFByb3BzfVxuICAgICAgICAgICAgICAgIGFyaWFIaWRlQXBwPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBpc09wZW5cbiAgICAgICAgICAgICAgICBzdHlsZT17bmV3TW9kYWxTdHlsZX1cbiAgICAgICAgICAgICAgICBwYXJlbnRTZWxlY3Rvcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgLy8gUmVhY3QgbW9kYWwgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGpzL3JlYWN0LW1vZGFsL2lzc3Vlcy83NjlcbiAgICAgICAgICAgICAgICAgIC8vIGZhaWxlZCB0byBleGVjdXRlIHJlbW92ZUNoaWxkIG9uIHBhcmVudCBub2RlIHdoZW4gaXQgaXMgYWxyZWFkeSB1bm1vdW50ZWRcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgKChjb250ZXh0ICYmIGNvbnRleHQuY3VycmVudCkgfHwge1xuICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNoaWxkOiAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZDogKCkgPT4ge31cbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgSFRNTEVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBvcnRhbGVkLWNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAga2V5PVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogaXNWaXNpYmxlID8gMSA6IDAsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IHRoaXMucHJvcHMudGhlbWUudHJhbnNpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgICAgICAgICAgICB0b3A6IHRoaXMuc3RhdGUudG9wLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IGlzVmlzaWJsZSA/ICcwcHgnIDogJzE0cHgnLFxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIC4uLnBvc1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5jaGlsZH1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IG92ZXJsYXlaSW5kZXggPyBvdmVybGF5WkluZGV4ICsgMSA6IDEwMDAwXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L01vZGFsPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9Db21wPlxuICAgICAgICApfVxuICAgICAgPC9Sb290Q29udGV4dC5Db25zdW1lcj5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhUaGVtZShQb3J0YWxlZCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQW9CQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBSSxpQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sV0FBQSxHQUFBSixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBTCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVEsU0FBQSxHQUFBTixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVMsS0FBQSxHQUFBVCxPQUFBO0FBQWtDLFNBQUFVLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFaLHdCQUFBWSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsdUJBQUFBLENBQUEseUJBQUFBLENBQUEsV0FBQUssT0FBQSxFQUFBTCxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEsSUFBQWQsQ0FBQSxvQkFBQWMsQ0FBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsQ0FBQSxTQUFBRyxDQUFBLEdBQUFQLENBQUEsR0FBQUMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFjLENBQUEsVUFBQUcsQ0FBQSxLQUFBQSxDQUFBLENBQUFWLEdBQUEsSUFBQVUsQ0FBQSxDQUFBQyxHQUFBLElBQUFQLE1BQUEsQ0FBQUMsY0FBQSxDQUFBSixDQUFBLEVBQUFNLENBQUEsRUFBQUcsQ0FBQSxJQUFBVCxDQUFBLENBQUFNLENBQUEsSUFBQWQsQ0FBQSxDQUFBYyxDQUFBLFlBQUFOLENBQUEsQ0FBQUgsT0FBQSxHQUFBTCxDQUFBLEVBQUFHLENBQUEsSUFBQUEsQ0FBQSxDQUFBZSxHQUFBLENBQUFsQixDQUFBLEVBQUFRLENBQUEsR0FBQUEsQ0FBQTtBQTdCbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBYUEsTUFBTVcsU0FBUyxHQUFHLENBQUMsQ0FBQztBQUVwQixNQUFNQyxjQUFjLEdBQUdBLENBQUEsS0FBTVQsTUFBTSxDQUFDVSxJQUFJLENBQUNGLFNBQVMsQ0FBQyxDQUFDRyxPQUFPLENBQUNDLEdBQUcsSUFBSUosU0FBUyxDQUFDSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFcEYsTUFBTUMsYUFBYSxHQUFHQSxDQUFBLE1BQU87RUFDM0JDLENBQUMsRUFDQ0MsZUFBTSxDQUFDQyxXQUFXLEtBQUtDLFNBQVMsR0FDNUJGLGVBQU0sQ0FBQ0MsV0FBVyxHQUNsQixDQUFDRSxpQkFBUSxDQUFDQyxlQUFlLElBQUlELGlCQUFRLENBQUNFLElBQUksQ0FBQ0MsVUFBVSxJQUFJSCxpQkFBUSxDQUFDRSxJQUFJLEVBQUVFLFVBQVU7RUFDeEZDLENBQUMsRUFDQ1IsZUFBTSxDQUFDUyxXQUFXLEtBQUtQLFNBQVMsR0FDNUJGLGVBQU0sQ0FBQ1MsV0FBVyxHQUNsQixDQUFDTixpQkFBUSxDQUFDQyxlQUFlLElBQUlELGlCQUFRLENBQUNFLElBQUksQ0FBQ0MsVUFBVSxJQUFJSCxpQkFBUSxDQUFDRSxJQUFJLEVBQUVLO0FBQ2hGLENBQUMsQ0FBQztBQUVGLE1BQU1DLGlCQUFpQixHQUFHQSxDQUFBLEtBQU07RUFDOUIsSUFBSVIsaUJBQVEsSUFBSUEsaUJBQVEsQ0FBQ0UsSUFBSSxFQUMzQkYsaUJBQVEsQ0FBQ0UsSUFBSSxDQUFDTyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsSUFBQUMsaUJBQVEsRUFBQ25CLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztFQUM3RU0sZUFBTSxDQUFDWSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBQUMsaUJBQVEsRUFBQ25CLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBaUJNLE1BQU1vQixXQUFXLEdBQUdDLElBQUEsSUFBdUU7RUFBQSxJQUF0RTtJQUFDQyxPQUFPO0lBQUVDLElBQUk7SUFBRUMsU0FBUztJQUFFQyxVQUFVO0lBQUVDO0VBQXlCLENBQUMsR0FBQUwsSUFBQTtFQUMzRixNQUFNO0lBQUNNLFNBQVM7SUFBRUMsVUFBVTtJQUFFQztFQUFXLENBQUMsR0FBR1AsT0FBTztFQUVwRCxNQUFNUSxVQUFVLEdBQUdGLFVBQVUsS0FBS3BCLFNBQVM7RUFDM0MsTUFBTXVCLEdBQUcsR0FBRztJQUNWQyxHQUFHLEVBQUVQLFVBQVUsQ0FBQ1gsQ0FBQyxHQUFHUyxJQUFJLENBQUNTLEdBQUcsSUFBSUwsU0FBUyxJQUFJLENBQUMsQ0FBQztJQUMvQyxJQUFJRyxVQUFVLEdBQ1Y7TUFBQ0csSUFBSSxFQUFFUixVQUFVLENBQUNwQixDQUFDLEdBQUdrQixJQUFJLENBQUNVLElBQUksR0FBR0w7SUFBVyxDQUFDLEdBQzlDO01BQUNNLEtBQUssRUFBRTVCLGVBQU0sQ0FBQzZCLFVBQVUsR0FBR1osSUFBSSxDQUFDVyxLQUFLLEdBQUdULFVBQVUsQ0FBQ3BCLENBQUMsSUFBSXdCLFdBQVcsSUFBSSxDQUFDO0lBQUMsQ0FBQztFQUNqRixDQUFDO0VBRUQsTUFBTU8sV0FBVyxHQUFHTixVQUFVLEdBQUcsTUFBTSxHQUFHLE9BQU87RUFFakQsSUFBSUMsR0FBRyxDQUFDSyxXQUFXLENBQUMsSUFBSUwsR0FBRyxDQUFDSyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDNUNMLEdBQUcsQ0FBQ0ssV0FBVyxDQUFDLEdBQUdWLE9BQU87RUFDNUIsQ0FBQyxNQUFNLElBQUlLLEdBQUcsQ0FBQ0ssV0FBVyxDQUFDLElBQUlMLEdBQUcsQ0FBQ0ssV0FBVyxDQUFDLEdBQUdaLFNBQVMsQ0FBQ2EsS0FBSyxHQUFHL0IsZUFBTSxDQUFDNkIsVUFBVSxFQUFFO0lBQ3JGSixHQUFHLENBQUNLLFdBQVcsQ0FBQyxHQUFHOUIsZUFBTSxDQUFDNkIsVUFBVSxHQUFHWCxTQUFTLENBQUNhLEtBQUssR0FBR1gsT0FBTztFQUNsRTtFQUVBLElBQUlLLEdBQUcsQ0FBQ0MsR0FBRyxHQUFHLENBQUMsRUFBRTtJQUNmRCxHQUFHLENBQUNDLEdBQUcsR0FBR04sT0FBTztFQUNuQixDQUFDLE1BQU0sSUFBSUssR0FBRyxDQUFDQyxHQUFHLEdBQUdSLFNBQVMsQ0FBQ2MsTUFBTSxHQUFHaEMsZUFBTSxDQUFDaUMsV0FBVyxFQUFFO0lBQzFEUixHQUFHLENBQUNDLEdBQUcsR0FBRzFCLGVBQU0sQ0FBQ2lDLFdBQVcsR0FBR2YsU0FBUyxDQUFDYyxNQUFNLEdBQUdaLE9BQU87RUFDM0Q7RUFFQSxPQUFPSyxHQUFHO0FBQ1osQ0FBQztBQUFDUyxPQUFBLENBQUFwQixXQUFBLEdBQUFBLFdBQUE7QUFFRixJQUFJWCxpQkFBUSxDQUFDRSxJQUFJLEVBQUU7RUFDakJNLGlCQUFpQixDQUFDLENBQUM7QUFDckIsQ0FBQyxNQUFNO0VBQ0xSLGlCQUFRLENBQUNTLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFRCxpQkFBaUIsQ0FBQztBQUNsRTtBQUVBLElBQUl3QixpQkFBaUIsR0FBRyxDQUFDO0FBQ3pCLFNBQVNDLFNBQVNBLENBQUNDLEVBQUUsRUFBRTtFQUNyQkYsaUJBQWlCLElBQUksQ0FBQztFQUN0QixNQUFNRyxFQUFFLEdBQUdILGlCQUFpQjtFQUM1QjFDLFNBQVMsQ0FBQzZDLEVBQUUsQ0FBQyxHQUFHRCxFQUFFO0VBQ2xCLE9BQU8sTUFBTSxPQUFPNUMsU0FBUyxDQUFDNkMsRUFBRSxDQUFDO0FBQ25DO0FBRUEsTUFBTUMsaUJBQWlCLEdBQUc7RUFDeEJDLE9BQU8sRUFBRTtJQUNQZCxHQUFHLEVBQUUsQ0FBQztJQUNOQyxJQUFJLEVBQUUsQ0FBQztJQUNQYyxNQUFNLEVBQUUsQ0FBQztJQUNUYixLQUFLLEVBQUUsTUFBTTtJQUNiYyxNQUFNLEVBQUUsTUFBTTtJQUNkdEIsT0FBTyxFQUFFO0VBQ1gsQ0FBQztFQUNEdUIsT0FBTyxFQUFFO0lBQ1BmLEtBQUssRUFBRSxNQUFNO0lBQ2JjLE1BQU0sRUFBRSxNQUFNO0lBQ2RYLEtBQUssRUFBRSxPQUFPO0lBQ2RDLE1BQU0sRUFBRSxPQUFPO0lBQ2ZZLGVBQWUsRUFBRTtFQUNuQjtBQUNGLENBQUM7QUFFRCxNQUFNQyxVQUFVLEdBQUcsRUFBRTtBQUVyQixNQUFNQyxJQUFJLEdBQUdBLENBQUEsS0FBTSxDQUFDLENBQUM7QUErQnJCLE1BQU1DLFFBQVEsU0FBU0MsZ0JBQVMsQ0FBK0I7RUFBQUMsWUFBQTtJQUFBLFNBQUFDLFNBQUE7SUFBQSxJQUFBQyxnQkFBQSxDQUFBeEUsT0FBQSxpQkFPckQ7TUFDTjhDLEdBQUcsRUFBRSxJQUFJO01BQ1QyQixTQUFTLEVBQUU7SUFDYixDQUFDO0lBQUEsSUFBQUQsZ0JBQUEsQ0FBQXhFLE9BQUEsdUJBRTBDdUIsU0FBUztJQUFBLElBQUFpRCxnQkFBQSxDQUFBeEUsT0FBQSxzQkFDOUIsS0FBSztJQUFBLElBQUF3RSxnQkFBQSxDQUFBeEUsT0FBQSxnQ0EyQmpCLElBQUEwRSxnQkFBUyxFQUFpQixDQUFDO0lBQUEsSUFBQUYsZ0JBQUEsQ0FBQXhFLE9BQUEsOEJBQzdCLElBQUEwRSxnQkFBUyxFQUFpQixDQUFDO0lBRW5DO0lBQUEsSUFBQUYsZ0JBQUEsQ0FBQXhFLE9BQUEsd0JBQ2UsTUFBTTtNQUNuQixJQUFJLElBQUksQ0FBQzJFLEtBQUssQ0FBQ0MsT0FBTyxJQUFJLElBQUksQ0FBQ0MsT0FBTyxDQUFDRCxPQUFPLEVBQUU7UUFDOUMsTUFBTXRDLElBQUksR0FBRyxJQUFJLENBQUN1QyxPQUFPLENBQUNELE9BQU8sQ0FBQ0UscUJBQXFCLENBQUMsQ0FBQztRQUN6RCxNQUFNdkMsU0FBUyxHQUFHLElBQUksQ0FBQ29DLEtBQUssQ0FBQ0MsT0FBTyxDQUFDRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQzVELE1BQU10QyxVQUFVLEdBQUdyQixhQUFhLENBQUMsQ0FBQztRQUNsQyxNQUFNO1VBQUM0QixHQUFHLEVBQUVMLFNBQVM7VUFBRU0sSUFBSSxFQUFFTCxVQUFVLEdBQUcsQ0FBQztVQUFFTSxLQUFLLEVBQUVMO1FBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQ21DLEtBQUs7UUFFN0UsTUFBTWpDLEdBQUcsR0FBR1gsV0FBVyxDQUFDO1VBQ3RCRSxPQUFPLEVBQUU7WUFBQ0ssU0FBUztZQUFFQyxVQUFVO1lBQUVDO1VBQVcsQ0FBQztVQUM3Q04sSUFBSTtVQUNKQyxTQUFTO1VBQ1RDLFVBQVU7VUFDVkMsT0FBTyxFQUFFeUI7UUFDWCxDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsSUFBQWMsZ0JBQU8sRUFBQ2xDLEdBQUcsRUFBRSxJQUFJLENBQUNtQyxLQUFLLENBQUNuQyxHQUFHLENBQUMsRUFBRTtVQUNqQyxJQUFJLENBQUNvQyxRQUFRLENBQUM7WUFBQ3BDO1VBQUcsQ0FBQyxDQUFDO1FBQ3RCO01BQ0Y7SUFDRixDQUFDO0VBQUE7RUFoRERxQyxpQkFBaUJBLENBQUEsRUFBRztJQUNsQjtJQUNBLElBQUksQ0FBQ0MsV0FBVyxHQUFHM0IsU0FBUyxDQUFDLElBQUksQ0FBQzRCLFlBQVksQ0FBQztJQUMvQyxJQUFJLENBQUNBLFlBQVksQ0FBQyxDQUFDO0VBQ3JCO0VBRUFDLGtCQUFrQkEsQ0FBQ0MsU0FBUyxFQUFFO0lBQzVCLE1BQU1DLE9BQU8sR0FBRyxJQUFJLENBQUNULEtBQUssQ0FBQ1UsUUFBUSxJQUFJLENBQUNGLFNBQVMsQ0FBQ0UsUUFBUTtJQUMxRCxNQUFNQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUNYLEtBQUssQ0FBQ1UsUUFBUSxJQUFJRixTQUFTLENBQUNFLFFBQVE7SUFDM0QsSUFBSUQsT0FBTyxJQUFJRSxRQUFRLEVBQUU7TUFDdkJyRSxlQUFNLENBQUNzRSxxQkFBcUIsQ0FBQyxNQUFNO1FBQ2pDLElBQUksSUFBSSxDQUFDQyxVQUFVLEVBQUU7UUFDckIsSUFBSSxDQUFDVixRQUFRLENBQUM7VUFBQ1QsU0FBUyxFQUFFb0IsT0FBTyxDQUFDTCxPQUFPO1FBQUMsQ0FBQyxDQUFDO01BQzlDLENBQUMsQ0FBQztJQUNKO0lBRUEsSUFBSSxDQUFDSCxZQUFZLENBQUMsQ0FBQztFQUNyQjtFQUVBUyxvQkFBb0JBLENBQUEsRUFBRztJQUNyQixJQUFJLENBQUNGLFVBQVUsR0FBRyxJQUFJO0lBQ3RCO0lBQ0EsSUFBSSxDQUFDUixXQUFXLENBQUMsQ0FBQztFQUNwQjtFQTJCQVcsTUFBTUEsQ0FBQSxFQUFHO0lBQ1AsTUFBTTtNQUNKO01BQ0FDLFNBQVMsRUFBRUMsSUFBSTtNQUNmQyxhQUFhO01BQ2JULFFBQVE7TUFDUlUsT0FBTztNQUVQO01BQ0FDLFFBQVE7TUFDUkMsVUFBVTtNQUNWQyxVQUFVLEdBQUcsQ0FBQztJQUNoQixDQUFDLEdBQUcsSUFBSSxDQUFDdkIsS0FBSztJQUVkLE1BQU07TUFBQ04sU0FBUztNQUFFM0I7SUFBRyxDQUFDLEdBQUcsSUFBSSxDQUFDbUMsS0FBSztJQUVuQyxNQUFNc0IsYUFBYSxHQUFHO01BQ3BCLEdBQUczQyxpQkFBaUI7TUFDcEJDLE9BQU8sRUFBRTtRQUNQLElBQUl5QyxVQUFVLENBQUN6QyxPQUFPLElBQUksQ0FBQyxDQUFDO01BQzlCLENBQUM7TUFDREcsT0FBTyxFQUFFO1FBQ1AsR0FBR0osaUJBQWlCLENBQUNJLE9BQU87UUFDNUIsSUFBSXNDLFVBQVUsQ0FBQ3RDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3QjtRQUNBd0MsTUFBTSxFQUFFTixhQUFhLElBQUk7TUFDM0I7SUFDRixDQUFDO0lBRUQsb0JBQ0VwSCxNQUFBLENBQUFrQixPQUFBLENBQUF5RyxhQUFBLENBQUNwSCxRQUFBLENBQUFxSCxXQUFXLENBQUNDLFFBQVEsUUFDbEJDLE9BQU8saUJBQ045SCxNQUFBLENBQUFrQixPQUFBLENBQUF5RyxhQUFBLENBQUNSLElBQUk7TUFBQ1ksR0FBRyxFQUFFLElBQUksQ0FBQ2hDO0lBQVEsR0FDckJZLFFBQVEsZ0JBQ1AzRyxNQUFBLENBQUFrQixPQUFBLENBQUF5RyxhQUFBLENBQUNuSCxXQUFBLENBQUFVLE9BQUssTUFBQThHLFNBQUEsQ0FBQTlHLE9BQUE7TUFDSitHLFNBQVMsRUFBQztJQUFjLEdBQ3BCVixVQUFVO01BQ2RXLFdBQVcsRUFBRSxLQUFNO01BQ25CQyxNQUFNO01BQ05DLEtBQUssRUFBRVgsYUFBYztNQUNyQlksY0FBYyxFQUFFQSxDQUFBLEtBQU07UUFDcEI7UUFDQTtRQUNBO1VBQ0U7VUFDRVAsT0FBTyxJQUFJQSxPQUFPLENBQUNoQyxPQUFPLElBQUs7WUFDL0J3QyxXQUFXLEVBQUVBLENBQUEsS0FBTSxDQUFDLENBQUM7WUFDckJDLFdBQVcsRUFBRUEsQ0FBQSxLQUFNLENBQUM7VUFDdEI7UUFBQztNQUVMO0lBQUUsaUJBRUZ2SSxNQUFBLENBQUFrQixPQUFBLENBQUF5RyxhQUFBO01BQ0VNLFNBQVMsRUFBQyxrQkFBa0I7TUFDNUI3RixHQUFHLEVBQUMsTUFBTTtNQUNWZ0csS0FBSyxFQUFFO1FBQ0xJLFFBQVEsRUFBRSxPQUFPO1FBQ2pCQyxPQUFPLEVBQUU5QyxTQUFTLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDMUIrQyxVQUFVLEVBQUUsSUFBSSxDQUFDekMsS0FBSyxDQUFDMEMsS0FBSyxDQUFDRCxVQUFVO1FBQ3ZDO1FBQ0F6RSxHQUFHLEVBQUUsSUFBSSxDQUFDa0MsS0FBSyxDQUFDbEMsR0FBRztRQUNuQjJFLFNBQVMsRUFBRWpELFNBQVMsR0FBRyxLQUFLLEdBQUcsTUFBTTtRQUNyQztRQUNBLEdBQUczQjtNQUNMO0lBQUUsZ0JBRUZoRSxNQUFBLENBQUFrQixPQUFBLENBQUF5RyxhQUFBO01BQ0VJLEdBQUcsRUFBRSxJQUFJLENBQUNsQyxLQUFNO01BQ2hCdUMsS0FBSyxFQUFFO1FBQ0xJLFFBQVEsRUFBRSxVQUFVO1FBQ3BCZCxNQUFNLEVBQUVOLGFBQWEsR0FBR0EsYUFBYSxHQUFHLENBQUMsR0FBRztNQUM5QztJQUFFLEdBRURFLFFBQ0UsQ0FDRixDQUNBLENBQUMsR0FDTixJQUNBLENBRVksQ0FBQztFQUUzQjtBQUNGO0FBQUMsSUFBQTVCLGdCQUFBLENBQUF4RSxPQUFBLEVBcEpLb0UsUUFBUSxrQkFDVTtFQUNwQjRCLFNBQVMsRUFBRSxLQUFLO0VBQ2hCRyxPQUFPLEVBQUVoQyxJQUFJO0VBQ2JzRCxLQUFLLEVBQUxBO0FBQ0YsQ0FBQztBQUFBLElBQUFFLFFBQUEsR0FBQXBFLE9BQUEsQ0FBQXZELE9BQUEsR0FpSlksSUFBQTRILDJCQUFTLEVBQUN4RCxRQUFRLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=