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

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 (423) hide show
  1. package/dist/actions/action-wrapper.js +41 -36
  2. package/dist/actions/actions.js +21 -15
  3. package/dist/actions/identity-actions.js +20 -14
  4. package/dist/actions/index.js +16 -16
  5. package/dist/actions/map-state-actions.js +18 -12
  6. package/dist/actions/map-style-actions.js +46 -30
  7. package/dist/actions/provider-actions.js +73 -49
  8. package/dist/actions/ui-state-actions.js +113 -73
  9. package/dist/actions/vis-state-actions.js +148 -152
  10. package/dist/cloud-providers/index.js +7 -6
  11. package/dist/cloud-providers/provider.js +279 -189
  12. package/dist/components/bottom-widget.js +117 -105
  13. package/dist/components/common/action-panel.js +74 -122
  14. package/dist/components/common/animation-control/animation-control.js +54 -69
  15. package/dist/components/common/animation-control/animation-controller.js +160 -134
  16. package/dist/components/common/animation-control/animation-speed-slider.js +54 -47
  17. package/dist/components/common/animation-control/floating-time-display.js +100 -120
  18. package/dist/components/common/animation-control/playback-controls.js +144 -147
  19. package/dist/components/common/animation-control/speed-control.js +23 -31
  20. package/dist/components/common/checkbox.js +70 -56
  21. package/dist/components/common/color-legend.js +110 -83
  22. package/dist/components/common/data-table/button.js +23 -31
  23. package/dist/components/common/data-table/canvas.js +5 -11
  24. package/dist/components/common/data-table/cell-size.js +61 -51
  25. package/dist/components/common/data-table/grid.js +59 -40
  26. package/dist/components/common/data-table/index.js +348 -464
  27. package/dist/components/common/data-table/option-dropdown.js +33 -50
  28. package/dist/components/common/dataset-label.js +13 -17
  29. package/dist/components/common/error-boundary.js +45 -27
  30. package/dist/components/common/field-selector.js +139 -99
  31. package/dist/components/common/field-token.js +9 -24
  32. package/dist/components/common/file-uploader/file-drop.js +115 -96
  33. package/dist/components/common/file-uploader/file-upload-progress.js +45 -68
  34. package/dist/components/common/file-uploader/file-upload.js +187 -215
  35. package/dist/components/common/file-uploader/upload-button.js +22 -35
  36. package/dist/components/common/histogram-plot.js +58 -47
  37. package/dist/components/common/icons/add.js +27 -14
  38. package/dist/components/common/icons/anchor_window.js +18 -16
  39. package/dist/components/common/icons/arrow-down-alt.js +27 -14
  40. package/dist/components/common/icons/arrow-down-solid.js +27 -14
  41. package/dist/components/common/icons/arrow-down.js +27 -14
  42. package/dist/components/common/icons/arrow-left.js +30 -17
  43. package/dist/components/common/icons/arrow-right.js +27 -14
  44. package/dist/components/common/icons/arrow-up-alt.js +28 -15
  45. package/dist/components/common/icons/arrow-up-solid.js +27 -14
  46. package/dist/components/common/icons/arrow-up.js +27 -14
  47. package/dist/components/common/icons/base.js +57 -39
  48. package/dist/components/common/icons/bug.js +29 -16
  49. package/dist/components/common/icons/cancel.js +27 -14
  50. package/dist/components/common/icons/checkmark.js +31 -18
  51. package/dist/components/common/icons/chevron-right.js +33 -20
  52. package/dist/components/common/icons/clipboard.js +28 -15
  53. package/dist/components/common/icons/clock.js +29 -16
  54. package/dist/components/common/icons/close.js +32 -19
  55. package/dist/components/common/icons/code-alt.js +29 -16
  56. package/dist/components/common/icons/copy.js +31 -18
  57. package/dist/components/common/icons/crosshairs.js +29 -16
  58. package/dist/components/common/icons/cube-3d.js +31 -18
  59. package/dist/components/common/icons/cursor-click.js +31 -18
  60. package/dist/components/common/icons/data-table.js +28 -15
  61. package/dist/components/common/icons/db.js +28 -15
  62. package/dist/components/common/icons/delete.js +29 -16
  63. package/dist/components/common/icons/docs.js +43 -30
  64. package/dist/components/common/icons/drag-n-drop.js +29 -16
  65. package/dist/components/common/icons/draw-polygon.js +46 -33
  66. package/dist/components/common/icons/email.js +31 -18
  67. package/dist/components/common/icons/expand.js +29 -16
  68. package/dist/components/common/icons/eye-seen.js +29 -16
  69. package/dist/components/common/icons/eye-unseen.js +29 -16
  70. package/dist/components/common/icons/file-type.js +19 -35
  71. package/dist/components/common/icons/file.js +27 -14
  72. package/dist/components/common/icons/files.js +26 -14
  73. package/dist/components/common/icons/filter-funnel.js +27 -14
  74. package/dist/components/common/icons/free-window.js +18 -16
  75. package/dist/components/common/icons/gear.js +29 -16
  76. package/dist/components/common/icons/hash.js +27 -14
  77. package/dist/components/common/icons/histogram.js +27 -15
  78. package/dist/components/common/icons/index.js +156 -156
  79. package/dist/components/common/icons/info.js +38 -25
  80. package/dist/components/common/icons/layers.js +27 -14
  81. package/dist/components/common/icons/left-arrow.js +29 -16
  82. package/dist/components/common/icons/legend.js +27 -14
  83. package/dist/components/common/icons/line-chart.js +27 -14
  84. package/dist/components/common/icons/login.js +30 -17
  85. package/dist/components/common/icons/logout.js +29 -16
  86. package/dist/components/common/icons/map-icon.js +32 -18
  87. package/dist/components/common/icons/map.js +32 -18
  88. package/dist/components/common/icons/messages.js +27 -14
  89. package/dist/components/common/icons/minus.js +27 -14
  90. package/dist/components/common/icons/order-by-dataset.js +17 -15
  91. package/dist/components/common/icons/order-by-list.js +9 -7
  92. package/dist/components/common/icons/pause.js +27 -14
  93. package/dist/components/common/icons/picture.js +26 -14
  94. package/dist/components/common/icons/pin.js +30 -17
  95. package/dist/components/common/icons/play.js +27 -14
  96. package/dist/components/common/icons/polygon.js +48 -35
  97. package/dist/components/common/icons/rectangle.js +49 -36
  98. package/dist/components/common/icons/reduce.js +30 -17
  99. package/dist/components/common/icons/reset.js +27 -14
  100. package/dist/components/common/icons/rocket.js +27 -14
  101. package/dist/components/common/icons/save.js +29 -16
  102. package/dist/components/common/icons/save2.js +33 -20
  103. package/dist/components/common/icons/search.js +29 -16
  104. package/dist/components/common/icons/settings.js +29 -16
  105. package/dist/components/common/icons/share.js +27 -14
  106. package/dist/components/common/icons/split.js +55 -42
  107. package/dist/components/common/icons/square-select.js +29 -16
  108. package/dist/components/common/icons/swap-horizontal.js +31 -18
  109. package/dist/components/common/icons/table.js +27 -14
  110. package/dist/components/common/icons/trash.js +29 -16
  111. package/dist/components/common/icons/upload.js +27 -14
  112. package/dist/components/common/icons/vert-dots.js +65 -52
  113. package/dist/components/common/icons/vert-three-dots.js +40 -27
  114. package/dist/components/common/icons/warning.js +39 -26
  115. package/dist/components/common/image-preview.js +33 -71
  116. package/dist/components/common/info-helper.js +29 -36
  117. package/dist/components/common/item-selector/accessor.js +13 -7
  118. package/dist/components/common/item-selector/chickleted-input.js +56 -72
  119. package/dist/components/common/item-selector/dropdown-list.js +214 -182
  120. package/dist/components/common/item-selector/item-selector-submenu.js +55 -34
  121. package/dist/components/common/item-selector/item-selector.js +194 -183
  122. package/dist/components/common/item-selector/typeahead.js +248 -236
  123. package/dist/components/common/line-chart.js +58 -80
  124. package/dist/components/common/loading-spinner.js +31 -46
  125. package/dist/components/common/logo.js +48 -61
  126. package/dist/components/common/map-layer-selector.js +25 -31
  127. package/dist/components/common/modal.js +106 -167
  128. package/dist/components/common/portaled.js +189 -169
  129. package/dist/components/common/progress-bar.js +24 -27
  130. package/dist/components/common/range-brush.js +215 -176
  131. package/dist/components/common/range-plot.js +63 -52
  132. package/dist/components/common/range-slider.js +231 -206
  133. package/dist/components/common/slider/mouse-event.js +66 -59
  134. package/dist/components/common/slider/slider-bar-handle.js +61 -51
  135. package/dist/components/common/slider/slider-handle.js +102 -127
  136. package/dist/components/common/slider/slider.js +162 -143
  137. package/dist/components/common/styled-components.js +256 -518
  138. package/dist/components/common/switch.js +11 -11
  139. package/dist/components/common/time-range-slider-time-title.js +32 -49
  140. package/dist/components/common/time-range-slider.js +45 -56
  141. package/dist/components/common/time-slider-marker.js +52 -71
  142. package/dist/components/common/tippy-tooltip.js +59 -89
  143. package/dist/components/common/toolbar-item.js +45 -53
  144. package/dist/components/common/toolbar.js +18 -24
  145. package/dist/components/common/vertical-toolbar.js +6 -13
  146. package/dist/components/container.js +119 -87
  147. package/dist/components/context.js +8 -6
  148. package/dist/components/editor/constants.js +4 -4
  149. package/dist/components/editor/editor.js +157 -122
  150. package/dist/components/editor/feature-action-panel.js +59 -52
  151. package/dist/components/editor/feature-styles.js +29 -46
  152. package/dist/components/editor/handle-style.js +29 -38
  153. package/dist/components/filters/components.js +4 -8
  154. package/dist/components/filters/filter-panels/filter-panel-with-field-select.js +43 -33
  155. package/dist/components/filters/filter-panels/multi-select-filter-panel.js +21 -20
  156. package/dist/components/filters/filter-panels/new-filter-panel.js +31 -24
  157. package/dist/components/filters/filter-panels/polygon-filter-panel.js +31 -26
  158. package/dist/components/filters/filter-panels/range-filter-panel.js +21 -20
  159. package/dist/components/filters/filter-panels/single-select-filter-panel.js +21 -20
  160. package/dist/components/filters/filter-panels/time-range-filter-panel.js +31 -28
  161. package/dist/components/filters/index.js +10 -10
  162. package/dist/components/filters/multi-select-filter.js +9 -11
  163. package/dist/components/filters/polygon-filter.js +41 -26
  164. package/dist/components/filters/range-filter.js +7 -9
  165. package/dist/components/filters/single-select-filter.js +13 -11
  166. package/dist/components/filters/time-range-filter.js +14 -16
  167. package/dist/components/filters/time-widget.js +84 -125
  168. package/dist/components/geocoder/geocoder.js +177 -158
  169. package/dist/components/geocoder-panel.js +87 -66
  170. package/dist/components/index.js +329 -328
  171. package/dist/components/injector.js +63 -44
  172. package/dist/components/kepler-gl.js +361 -325
  173. package/dist/components/map/coordinate-info.js +16 -18
  174. package/dist/components/map/layer-hover-info.js +86 -108
  175. package/dist/components/map/layer-selector-panel.js +48 -50
  176. package/dist/components/map/locale-panel.js +44 -38
  177. package/dist/components/map/map-control-panel.js +47 -70
  178. package/dist/components/map/map-control-toolbar.js +6 -9
  179. package/dist/components/map/map-control-tooltip.js +8 -10
  180. package/dist/components/map/map-control.js +27 -35
  181. package/dist/components/map/map-draw-panel.js +48 -38
  182. package/dist/components/map/map-legend-panel.js +50 -47
  183. package/dist/components/map/map-legend.js +116 -133
  184. package/dist/components/map/map-popover.js +100 -155
  185. package/dist/components/map/split-map-button.js +34 -30
  186. package/dist/components/map/toggle-3d-button.js +27 -25
  187. package/dist/components/map-container.js +359 -313
  188. package/dist/components/maps-layout.js +26 -16
  189. package/dist/components/modal-container.js +355 -359
  190. package/dist/components/modals/add-map-style-modal.js +194 -233
  191. package/dist/components/modals/cloud-tile.js +67 -96
  192. package/dist/components/modals/data-table-modal.js +152 -155
  193. package/dist/components/modals/delete-data-modal.js +20 -20
  194. package/dist/components/modals/error-display.js +7 -9
  195. package/dist/components/modals/export-data-modal.js +140 -118
  196. package/dist/components/modals/export-image-modal.js +69 -82
  197. package/dist/components/modals/export-map-modal/components.js +18 -20
  198. package/dist/components/modals/export-map-modal/export-html-map.js +74 -82
  199. package/dist/components/modals/export-map-modal/export-json-map.js +45 -65
  200. package/dist/components/modals/export-map-modal/export-map-modal.js +47 -42
  201. package/dist/components/modals/image-modal-container.js +21 -20
  202. package/dist/components/modals/load-data-modal.js +30 -28
  203. package/dist/components/modals/load-storage-map.js +178 -277
  204. package/dist/components/modals/loading-dialog.js +19 -41
  205. package/dist/components/modals/modal-dialog.js +6 -4
  206. package/dist/components/modals/modal-tabs.js +48 -83
  207. package/dist/components/modals/overwrite-map-modal.js +30 -41
  208. package/dist/components/modals/provider-modal-container.js +42 -23
  209. package/dist/components/modals/save-map-modal.js +83 -107
  210. package/dist/components/modals/share-map-modal.js +95 -101
  211. package/dist/components/modals/status-panel.js +43 -63
  212. package/dist/components/modals/storage-map-viewer.js +70 -133
  213. package/dist/components/notification-panel/notification-item.js +97 -94
  214. package/dist/components/notification-panel.js +43 -35
  215. package/dist/components/performance.js +53 -49
  216. package/dist/components/plot-container.js +169 -151
  217. package/dist/components/side-panel/cloud-storage-dropdown.js +15 -13
  218. package/dist/components/side-panel/common/dataset-info.js +12 -16
  219. package/dist/components/side-panel/common/dataset-tag.js +27 -48
  220. package/dist/components/side-panel/common/dataset-title.js +116 -119
  221. package/dist/components/side-panel/common/source-data-catalog.js +32 -31
  222. package/dist/components/side-panel/common/source-data-selector.js +77 -52
  223. package/dist/components/side-panel/custom-panel.js +8 -6
  224. package/dist/components/side-panel/filter-manager.js +62 -48
  225. package/dist/components/side-panel/filter-panel/filter-panel-header.js +25 -35
  226. package/dist/components/side-panel/filter-panel/filter-panel.js +64 -46
  227. package/dist/components/side-panel/interaction-manager.js +18 -20
  228. package/dist/components/side-panel/interaction-panel/brush-config.js +17 -17
  229. package/dist/components/side-panel/interaction-panel/interaction-panel.js +95 -76
  230. package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +143 -118
  231. package/dist/components/side-panel/interaction-panel/tooltip-config.js +76 -95
  232. package/dist/components/side-panel/layer-manager.js +115 -105
  233. package/dist/components/side-panel/layer-panel/add-layer-button.js +54 -92
  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 +37 -50
  236. package/dist/components/side-panel/layer-panel/color-range-selector.js +207 -196
  237. package/dist/components/side-panel/layer-panel/color-selector.js +110 -104
  238. package/dist/components/side-panel/layer-panel/column-selector.js +22 -34
  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 +205 -248
  241. package/dist/components/side-panel/layer-panel/custom-picker.js +69 -51
  242. package/dist/components/side-panel/layer-panel/dataset-layer-group.js +42 -37
  243. package/dist/components/side-panel/layer-panel/dataset-layer-section.js +27 -31
  244. package/dist/components/side-panel/layer-panel/dataset-section.js +35 -45
  245. package/dist/components/side-panel/layer-panel/dimension-scale-selector.js +13 -14
  246. package/dist/components/side-panel/layer-panel/hex-column-config.js +55 -32
  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 +46 -42
  249. package/dist/components/side-panel/layer-panel/layer-config-group.js +144 -178
  250. package/dist/components/side-panel/layer-panel/layer-configurator.js +830 -826
  251. package/dist/components/side-panel/layer-panel/layer-list.js +94 -101
  252. package/dist/components/side-panel/layer-panel/layer-panel-header.js +82 -124
  253. package/dist/components/side-panel/layer-panel/layer-panel.js +105 -111
  254. package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.js +58 -67
  255. package/dist/components/side-panel/layer-panel/layer-type-list-item.js +32 -47
  256. package/dist/components/side-panel/layer-panel/layer-type-selector.js +41 -30
  257. package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +43 -42
  258. package/dist/components/side-panel/layer-panel/panel-view-list-toggle.js +57 -55
  259. package/dist/components/side-panel/layer-panel/single-color-palette.js +33 -48
  260. package/dist/components/side-panel/layer-panel/text-label-panel.js +116 -81
  261. package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +102 -88
  262. package/dist/components/side-panel/layer-panel/vis-config-slider.js +85 -99
  263. package/dist/components/side-panel/layer-panel/vis-config-switch.js +29 -38
  264. package/dist/components/side-panel/map-manager.js +89 -70
  265. package/dist/components/side-panel/map-style-panel/map-layer-selector.js +60 -72
  266. package/dist/components/side-panel/map-style-panel/map-style-selector.js +42 -64
  267. package/dist/components/side-panel/panel-dropdown.js +37 -21
  268. package/dist/components/side-panel/panel-header-action.js +65 -60
  269. package/dist/components/side-panel/panel-header.js +184 -165
  270. package/dist/components/side-panel/panel-tab.js +29 -35
  271. package/dist/components/side-panel/panel-title.js +18 -15
  272. package/dist/components/side-panel/panel-toggle.js +31 -30
  273. package/dist/components/side-panel/side-bar.js +91 -100
  274. package/dist/components/side-panel.js +123 -108
  275. package/dist/connect/keplergl-connect.js +26 -17
  276. package/dist/connect/with-local-selector.js +63 -31
  277. package/dist/constants/action-types.js +115 -113
  278. package/dist/constants/color-palette.js +16 -14
  279. package/dist/constants/color-ranges.js +28 -23
  280. package/dist/constants/custom-color-ranges.js +12 -12
  281. package/dist/constants/default-settings.js +254 -323
  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 +5 -9
  286. package/dist/constants/user-guides.js +10 -10
  287. package/dist/deckgl-layers/3d-building-layer/3d-building-layer.js +63 -37
  288. package/dist/deckgl-layers/3d-building-layer/3d-building-utils.js +56 -52
  289. package/dist/deckgl-layers/cluster-layer/cluster-layer.js +168 -165
  290. package/dist/deckgl-layers/column-layer/enhanced-column-layer.js +43 -24
  291. package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +40 -27
  292. package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +40 -27
  293. package/dist/deckgl-layers/layer-utils/cluster-utils.js +68 -60
  294. package/dist/deckgl-layers/layer-utils/cpu-aggregator.js +282 -276
  295. package/dist/deckgl-layers/layer-utils/shader-utils.js +2 -2
  296. package/dist/deckgl-layers/line-layer/line-layer.js +70 -62
  297. package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +51 -37
  298. package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.js +85 -65
  299. package/dist/index.js +16 -15
  300. package/dist/layers/aggregation-layer.js +331 -299
  301. package/dist/layers/arc-layer/arc-layer-icon.js +41 -27
  302. package/dist/layers/arc-layer/arc-layer.js +201 -174
  303. package/dist/layers/base-layer.js +1544 -1371
  304. package/dist/layers/cluster-layer/cluster-layer-icon.js +44 -30
  305. package/dist/layers/cluster-layer/cluster-layer.js +103 -89
  306. package/dist/layers/default-layer-icon.js +53 -39
  307. package/dist/layers/geojson-layer/geojson-layer-icon.js +55 -42
  308. package/dist/layers/geojson-layer/geojson-layer.js +353 -292
  309. package/dist/layers/geojson-layer/geojson-utils.js +36 -31
  310. package/dist/layers/grid-layer/grid-layer-icon.js +100 -87
  311. package/dist/layers/grid-layer/grid-layer.js +61 -51
  312. package/dist/layers/grid-layer/grid-utils.js +9 -13
  313. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.js +35 -21
  314. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.js +260 -225
  315. package/dist/layers/h3-hexagon-layer/h3-utils.js +16 -16
  316. package/dist/layers/heatmap-layer/heatmap-layer-icon.js +52 -39
  317. package/dist/layers/heatmap-layer/heatmap-layer.js +171 -140
  318. package/dist/layers/hexagon-layer/hexagon-layer-icon.js +64 -51
  319. package/dist/layers/hexagon-layer/hexagon-layer.js +63 -49
  320. package/dist/layers/hexagon-layer/hexagon-utils.js +14 -15
  321. package/dist/layers/icon-layer/icon-info-modal.js +75 -82
  322. package/dist/layers/icon-layer/icon-layer-icon.js +37 -24
  323. package/dist/layers/icon-layer/icon-layer.js +303 -274
  324. package/dist/layers/index.js +29 -43
  325. package/dist/layers/layer-factory.js +41 -25
  326. package/dist/layers/layer-text-label.js +23 -21
  327. package/dist/layers/layer-update.js +18 -16
  328. package/dist/layers/line-layer/line-layer-icon.js +43 -30
  329. package/dist/layers/line-layer/line-layer.js +142 -123
  330. package/dist/layers/mapbox-utils.js +62 -61
  331. package/dist/layers/mapboxgl-layer.js +169 -124
  332. package/dist/layers/point-layer/point-layer-icon.js +59 -45
  333. package/dist/layers/point-layer/point-layer.js +386 -355
  334. package/dist/layers/s2-geometry-layer/s2-geometry-layer.js +238 -208
  335. package/dist/layers/s2-geometry-layer/s2-layer-icon.js +35 -21
  336. package/dist/layers/s2-geometry-layer/s2-utils.js +8 -9
  337. package/dist/layers/scenegraph-layer/scenegraph-info-modal.js +25 -24
  338. package/dist/layers/scenegraph-layer/scenegraph-layer-icon.js +115 -102
  339. package/dist/layers/scenegraph-layer/scenegraph-layer.js +172 -148
  340. package/dist/layers/trip-layer/trip-info-modal.js +30 -50
  341. package/dist/layers/trip-layer/trip-layer-icon.js +53 -40
  342. package/dist/layers/trip-layer/trip-layer.js +307 -239
  343. package/dist/layers/trip-layer/trip-utils.js +50 -34
  344. package/dist/layers/types.js +2 -2
  345. package/dist/localization/formatted-message.js +10 -8
  346. package/dist/localization/index.js +7 -7
  347. package/dist/localization/locales.js +9 -6
  348. package/dist/localization/messages.js +10 -13
  349. package/dist/localization/translations/ca.js +13 -11
  350. package/dist/localization/translations/cn.js +13 -11
  351. package/dist/localization/translations/en.js +13 -11
  352. package/dist/localization/translations/es.js +13 -11
  353. package/dist/localization/translations/fi.js +13 -11
  354. package/dist/localization/translations/ja.js +13 -11
  355. package/dist/localization/translations/pt.js +13 -11
  356. package/dist/localization/translations/ru.js +13 -11
  357. package/dist/middleware/index.js +5 -3
  358. package/dist/processors/data-processor.js +201 -164
  359. package/dist/processors/file-handler.js +233 -111
  360. package/dist/processors/index.js +4 -4
  361. package/dist/reducers/combined-updaters.js +41 -41
  362. package/dist/reducers/composer-helpers.js +45 -20
  363. package/dist/reducers/composers.js +8 -9
  364. package/dist/reducers/core.js +35 -31
  365. package/dist/reducers/index.js +22 -21
  366. package/dist/reducers/map-state-updaters.js +47 -65
  367. package/dist/reducers/map-state.js +15 -23
  368. package/dist/reducers/map-style-updaters.js +159 -233
  369. package/dist/reducers/map-style.js +16 -30
  370. package/dist/reducers/provider-state-updaters.js +229 -217
  371. package/dist/reducers/provider-state.js +17 -29
  372. package/dist/reducers/root.js +58 -86
  373. package/dist/reducers/ui-state-updaters.js +218 -337
  374. package/dist/reducers/ui-state.js +16 -45
  375. package/dist/reducers/vis-state-merger.js +209 -205
  376. package/dist/reducers/vis-state-selectors.js +19 -5
  377. package/dist/reducers/vis-state-updaters.js +876 -1003
  378. package/dist/reducers/vis-state.js +16 -75
  379. package/dist/schemas/dataset-schema.js +108 -84
  380. package/dist/schemas/index.js +29 -28
  381. package/dist/schemas/map-state-schema.js +18 -21
  382. package/dist/schemas/map-style-schema.js +55 -47
  383. package/dist/schemas/schema-manager.js +161 -147
  384. package/dist/schemas/schema-utils.js +9 -8
  385. package/dist/schemas/schema.js +87 -72
  386. package/dist/schemas/versions.js +3 -3
  387. package/dist/schemas/vis-state-schema.js +583 -441
  388. package/dist/styles/base.js +1021 -1217
  389. package/dist/styles/index.js +3 -3
  390. package/dist/styles/media-breakpoints.js +18 -23
  391. package/dist/tasks/tasks.js +39 -36
  392. package/dist/templates/export-map-html.js +4 -233
  393. package/dist/utils/aggregate-utils.js +16 -13
  394. package/dist/utils/color-utils.js +37 -29
  395. package/dist/utils/custom-scales.js +3 -3
  396. package/dist/utils/data-scale-utils.js +13 -6
  397. package/dist/utils/data-utils.js +83 -60
  398. package/dist/utils/dataset-utils.js +77 -48
  399. package/dist/utils/dom-to-image.js +163 -108
  400. package/dist/utils/dom-utils.js +105 -88
  401. package/dist/utils/export-utils.js +103 -116
  402. package/dist/utils/filter-utils.js +374 -379
  403. package/dist/utils/gl-utils.js +15 -16
  404. package/dist/utils/gpu-filter-utils.js +73 -54
  405. package/dist/utils/index.js +48 -47
  406. package/dist/utils/interaction-utils.js +46 -53
  407. package/dist/utils/layer-utils.js +78 -89
  408. package/dist/utils/locale-utils.js +16 -24
  409. package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +76 -67
  410. package/dist/utils/map-style-utils/mapbox-utils.js +3 -4
  411. package/dist/utils/mapbox-utils.js +4 -3
  412. package/dist/utils/notifications-utils.js +38 -33
  413. package/dist/utils/observe-dimensions.js +54 -42
  414. package/dist/utils/projection-utils.js +11 -14
  415. package/dist/utils/split-map-utils.js +33 -30
  416. package/dist/utils/table-utils/data-container-utils.js +14 -15
  417. package/dist/utils/table-utils/data-row.js +65 -58
  418. package/dist/utils/table-utils/index.js +2 -2
  419. package/dist/utils/table-utils/indexed-data-container.js +173 -105
  420. package/dist/utils/table-utils/kepler-table.js +386 -362
  421. package/dist/utils/table-utils/row-data-container.js +164 -99
  422. package/dist/utils/utils.js +30 -29
  423. package/package.json +1 -1
@@ -35,9 +35,11 @@ var _actionTypes = _interopRequireDefault(require("../constants/action-types"));
35
35
  * @param id id of side panel to be shown, one of `layer`, `filter`, `interaction`, `map`
36
36
  * @public
37
37
  */
38
- const toggleSidePanel = exports.toggleSidePanel = (0, _toolkit.createAction)(_actionTypes.default.TOGGLE_SIDE_PANEL, id => ({
39
- payload: id
40
- }));
38
+ var toggleSidePanel = exports.toggleSidePanel = (0, _toolkit.createAction)(_actionTypes["default"].TOGGLE_SIDE_PANEL, function (id) {
39
+ return {
40
+ payload: id
41
+ };
42
+ });
41
43
 
42
44
  /** TOGGLE_MODAL */
43
45
 
@@ -53,9 +55,11 @@ const toggleSidePanel = exports.toggleSidePanel = (0, _toolkit.createAction)(_ac
53
55
  * - [`ADD_MAP_STYLE_ID`](../constants/default-settings.md#add_map_style_id)
54
56
  * @public
55
57
  */
56
- const toggleModal = exports.toggleModal = (0, _toolkit.createAction)(_actionTypes.default.TOGGLE_MODAL, id => ({
57
- payload: id
58
- }));
58
+ var toggleModal = exports.toggleModal = (0, _toolkit.createAction)(_actionTypes["default"].TOGGLE_MODAL, function (id) {
59
+ return {
60
+ payload: id
61
+ };
62
+ });
59
63
 
60
64
  /** SHOW_EXPORT_DROPDOWN */
61
65
 
@@ -65,16 +69,18 @@ const toggleModal = exports.toggleModal = (0, _toolkit.createAction)(_actionType
65
69
  * @param id - id of the dropdown
66
70
  * @public
67
71
  */
68
- const showExportDropdown = exports.showExportDropdown = (0, _toolkit.createAction)(_actionTypes.default.SHOW_EXPORT_DROPDOWN, id => ({
69
- payload: id
70
- }));
72
+ var showExportDropdown = exports.showExportDropdown = (0, _toolkit.createAction)(_actionTypes["default"].SHOW_EXPORT_DROPDOWN, function (id) {
73
+ return {
74
+ payload: id
75
+ };
76
+ });
71
77
 
72
78
  /**
73
79
  * Hide side panel header dropdown, activated by clicking the share link on top of the side panel
74
80
  * @memberof uiStateActions
75
81
  * @public
76
82
  */
77
- const hideExportDropdown = exports.hideExportDropdown = (0, _toolkit.createAction)(_actionTypes.default.HIDE_EXPORT_DROPDOWN);
83
+ var hideExportDropdown = exports.hideExportDropdown = (0, _toolkit.createAction)(_actionTypes["default"].HIDE_EXPORT_DROPDOWN);
78
84
 
79
85
  /** TOGGLE_MAP_CONTROL */
80
86
 
@@ -84,12 +90,14 @@ const hideExportDropdown = exports.hideExportDropdown = (0, _toolkit.createActio
84
90
  * @param panelId - map control panel id, one of the keys of: [`DEFAULT_MAP_CONTROLS`](#default_map_controls)
85
91
  * @public
86
92
  */
87
- const toggleMapControl = exports.toggleMapControl = (0, _toolkit.createAction)(_actionTypes.default.TOGGLE_MAP_CONTROL, (panelId, index) => ({
88
- payload: {
89
- panelId,
90
- index
91
- }
92
- }));
93
+ var toggleMapControl = exports.toggleMapControl = (0, _toolkit.createAction)(_actionTypes["default"].TOGGLE_MAP_CONTROL, function (panelId, index) {
94
+ return {
95
+ payload: {
96
+ panelId: panelId,
97
+ index: index
98
+ }
99
+ };
100
+ });
93
101
 
94
102
  /** SET_MAP_CONTROL_VISIBILITY */
95
103
 
@@ -99,12 +107,14 @@ const toggleMapControl = exports.toggleMapControl = (0, _toolkit.createAction)(_
99
107
  * @param panelId - map control panel id, one of the keys of: [`DEFAULT_MAP_CONTROLS`](#default_map_controls)
100
108
  * @public
101
109
  */
102
- const setMapControlVisibility = exports.setMapControlVisibility = (0, _toolkit.createAction)(_actionTypes.default.SET_MAP_CONTROL_VISIBILITY, (panelId, show) => ({
103
- payload: {
104
- panelId,
105
- show
106
- }
107
- }));
110
+ var setMapControlVisibility = exports.setMapControlVisibility = (0, _toolkit.createAction)(_actionTypes["default"].SET_MAP_CONTROL_VISIBILITY, function (panelId, show) {
111
+ return {
112
+ payload: {
113
+ panelId: panelId,
114
+ show: show
115
+ }
116
+ };
117
+ });
108
118
 
109
119
  /** OPEN_DELETE_MODAL */
110
120
 
@@ -114,9 +124,11 @@ const setMapControlVisibility = exports.setMapControlVisibility = (0, _toolkit.c
114
124
  * @param datasetId - `id` of the dataset to be deleted
115
125
  * @public
116
126
  */
117
- const openDeleteModal = exports.openDeleteModal = (0, _toolkit.createAction)(_actionTypes.default.OPEN_DELETE_MODAL, datasetId => ({
118
- payload: datasetId
119
- }));
127
+ var openDeleteModal = exports.openDeleteModal = (0, _toolkit.createAction)(_actionTypes["default"].OPEN_DELETE_MODAL, function (datasetId) {
128
+ return {
129
+ payload: datasetId
130
+ };
131
+ });
120
132
 
121
133
  /** ADD_NOTIFICATION */
122
134
 
@@ -127,9 +139,11 @@ const openDeleteModal = exports.openDeleteModal = (0, _toolkit.createAction)(_ac
127
139
  * @param notification - The `notification` object to be added or updated
128
140
  * @public
129
141
  */
130
- const addNotification = exports.addNotification = (0, _toolkit.createAction)(_actionTypes.default.ADD_NOTIFICATION, notification => ({
131
- payload: notification
132
- }));
142
+ var addNotification = exports.addNotification = (0, _toolkit.createAction)(_actionTypes["default"].ADD_NOTIFICATION, function (notification) {
143
+ return {
144
+ payload: notification
145
+ };
146
+ });
133
147
 
134
148
  /** REMOVE_NOTIFICATION */
135
149
 
@@ -139,9 +153,11 @@ const addNotification = exports.addNotification = (0, _toolkit.createAction)(_ac
139
153
  * @param id - `id` of the notification to be removed
140
154
  * @public
141
155
  */
142
- const removeNotification = exports.removeNotification = (0, _toolkit.createAction)(_actionTypes.default.REMOVE_NOTIFICATION, id => ({
143
- payload: id
144
- }));
156
+ var removeNotification = exports.removeNotification = (0, _toolkit.createAction)(_actionTypes["default"].REMOVE_NOTIFICATION, function (id) {
157
+ return {
158
+ payload: id
159
+ };
160
+ });
145
161
 
146
162
  /** SET_EXPORT_IMAGE_SETTING */
147
163
 
@@ -151,18 +167,22 @@ const removeNotification = exports.removeNotification = (0, _toolkit.createActio
151
167
  * @param newSetting - {ratio: '1x'}
152
168
  * @public
153
169
  */
154
- const setExportImageSetting = exports.setExportImageSetting = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_IMAGE_SETTING, newSetting => ({
155
- payload: newSetting
156
- }));
170
+ var setExportImageSetting = exports.setExportImageSetting = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_IMAGE_SETTING, function (newSetting) {
171
+ return {
172
+ payload: newSetting
173
+ };
174
+ });
157
175
 
158
176
  /**
159
177
  * Start exporting image flow
160
178
  * @memberof uiStateActions
161
179
  * @public
162
180
  */
163
- const startExportingImage = exports.startExportingImage = (0, _toolkit.createAction)(_actionTypes.default.START_EXPORTING_IMAGE, payload => ({
164
- payload
165
- }));
181
+ var startExportingImage = exports.startExportingImage = (0, _toolkit.createAction)(_actionTypes["default"].START_EXPORTING_IMAGE, function (payload) {
182
+ return {
183
+ payload: payload
184
+ };
185
+ });
166
186
 
167
187
  /** SET_EXPORT_IMAGE_DATA_URI */
168
188
 
@@ -172,9 +192,11 @@ const startExportingImage = exports.startExportingImage = (0, _toolkit.createAct
172
192
  * @param dataUri - export image data uri
173
193
  * @public
174
194
  */
175
- const setExportImageDataUri = exports.setExportImageDataUri = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_IMAGE_DATA_URI, dataUri => ({
176
- payload: dataUri
177
- }));
195
+ var setExportImageDataUri = exports.setExportImageDataUri = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_IMAGE_DATA_URI, function (dataUri) {
196
+ return {
197
+ payload: dataUri
198
+ };
199
+ });
178
200
 
179
201
  /** SET_EXPORT_IMAGE_ERROR */
180
202
 
@@ -183,16 +205,18 @@ const setExportImageDataUri = exports.setExportImageDataUri = (0, _toolkit.creat
183
205
  * @memberof uiStateActions
184
206
  * @public
185
207
  */
186
- const setExportImageError = exports.setExportImageError = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_IMAGE_ERROR, error => ({
187
- payload: error
188
- }));
208
+ var setExportImageError = exports.setExportImageError = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_IMAGE_ERROR, function (error) {
209
+ return {
210
+ payload: error
211
+ };
212
+ });
189
213
 
190
214
  /**
191
215
  * Delete cached export image
192
216
  * @memberof uiStateActions
193
217
  * @public
194
218
  */
195
- const cleanupExportImage = exports.cleanupExportImage = (0, _toolkit.createAction)(_actionTypes.default.CLEANUP_EXPORT_IMAGE);
219
+ var cleanupExportImage = exports.cleanupExportImage = (0, _toolkit.createAction)(_actionTypes["default"].CLEANUP_EXPORT_IMAGE);
196
220
 
197
221
  /** SET_EXPORT_SELECTED_DATASET */
198
222
 
@@ -202,9 +226,11 @@ const cleanupExportImage = exports.cleanupExportImage = (0, _toolkit.createActio
202
226
  * @param datasetId - dataset id
203
227
  * @public
204
228
  */
205
- const setExportSelectedDataset = exports.setExportSelectedDataset = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_SELECTED_DATASET, datasetId => ({
206
- payload: datasetId
207
- }));
229
+ var setExportSelectedDataset = exports.setExportSelectedDataset = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_SELECTED_DATASET, function (datasetId) {
230
+ return {
231
+ payload: datasetId
232
+ };
233
+ });
208
234
 
209
235
  /** SET_EXPORT_DATA_TYPE */
210
236
 
@@ -214,9 +240,11 @@ const setExportSelectedDataset = exports.setExportSelectedDataset = (0, _toolkit
214
240
  * @param dataType - one of `'text/csv'`
215
241
  * @public
216
242
  */
217
- const setExportDataType = exports.setExportDataType = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_DATA_TYPE, dataType => ({
218
- payload: dataType
219
- }));
243
+ var setExportDataType = exports.setExportDataType = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_DATA_TYPE, function (dataType) {
244
+ return {
245
+ payload: dataType
246
+ };
247
+ });
220
248
 
221
249
  /** SET_EXPORT_FILTERED */
222
250
 
@@ -226,16 +254,18 @@ const setExportDataType = exports.setExportDataType = (0, _toolkit.createAction)
226
254
  * @param payload - set `true` to ony export filtered data
227
255
  * @public
228
256
  */
229
- const setExportFiltered = exports.setExportFiltered = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_FILTERED, payload => ({
230
- payload
231
- }));
257
+ var setExportFiltered = exports.setExportFiltered = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_FILTERED, function (payload) {
258
+ return {
259
+ payload: payload
260
+ };
261
+ });
232
262
 
233
263
  /**
234
264
  * Whether to including data in map config, toggle between `true` or `false`
235
265
  * @memberof uiStateActions
236
266
  * @public
237
267
  */
238
- const setExportData = exports.setExportData = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_DATA);
268
+ var setExportData = exports.setExportData = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_DATA);
239
269
 
240
270
  /** SET_USER_MAPBOX_ACCESS_TOKEN */
241
271
 
@@ -245,9 +275,11 @@ const setExportData = exports.setExportData = (0, _toolkit.createAction)(_action
245
275
  * @param payload - mapbox access token
246
276
  * @public
247
277
  */
248
- const setUserMapboxAccessToken = exports.setUserMapboxAccessToken = (0, _toolkit.createAction)(_actionTypes.default.SET_USER_MAPBOX_ACCESS_TOKEN, payload => ({
249
- payload
250
- }));
278
+ var setUserMapboxAccessToken = exports.setUserMapboxAccessToken = (0, _toolkit.createAction)(_actionTypes["default"].SET_USER_MAPBOX_ACCESS_TOKEN, function (payload) {
279
+ return {
280
+ payload: payload
281
+ };
282
+ });
251
283
 
252
284
  /** SET_EXPORT_MAP_FORMAT */
253
285
 
@@ -257,9 +289,11 @@ const setUserMapboxAccessToken = exports.setUserMapboxAccessToken = (0, _toolkit
257
289
  * @param payload - map format
258
290
  * @public
259
291
  */
260
- const setExportMapFormat = exports.setExportMapFormat = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_MAP_FORMAT, payload => ({
261
- payload
262
- }));
292
+ var setExportMapFormat = exports.setExportMapFormat = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_MAP_FORMAT, function (payload) {
293
+ return {
294
+ payload: payload
295
+ };
296
+ });
263
297
 
264
298
  /** SET_EXPORT_MAP_HTML_MODE */
265
299
 
@@ -268,9 +302,11 @@ const setExportMapFormat = exports.setExportMapFormat = (0, _toolkit.createActio
268
302
  * @memberOf uiStateActions
269
303
  * @param payload - map mode
270
304
  */
271
- const setExportHTMLMapMode = exports.setExportHTMLMapMode = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_MAP_HTML_MODE, payload => ({
272
- payload
273
- }));
305
+ var setExportHTMLMapMode = exports.setExportHTMLMapMode = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_MAP_HTML_MODE, function (payload) {
306
+ return {
307
+ payload: payload
308
+ };
309
+ });
274
310
 
275
311
  /** SET_LOCALE */
276
312
 
@@ -280,11 +316,13 @@ const setExportHTMLMapMode = exports.setExportHTMLMapMode = (0, _toolkit.createA
280
316
  * @param locale - locale of the UI
281
317
  * @public
282
318
  */
283
- const setLocale = exports.setLocale = (0, _toolkit.createAction)(_actionTypes.default.SET_LOCALE, locale => ({
284
- payload: {
285
- locale
286
- }
287
- }));
319
+ var setLocale = exports.setLocale = (0, _toolkit.createAction)(_actionTypes["default"].SET_LOCALE, function (locale) {
320
+ return {
321
+ payload: {
322
+ locale: locale
323
+ }
324
+ };
325
+ });
288
326
 
289
327
  /** TOGGLE_LAYER_PANEL_LIST_VIEW */
290
328
 
@@ -294,9 +332,11 @@ const setLocale = exports.setLocale = (0, _toolkit.createAction)(_actionTypes.de
294
332
  * @param listView layer panel listView value. Can be 'list' or 'sortByDataset'
295
333
  * @public
296
334
  */
297
- const toggleLayerPanelListView = exports.toggleLayerPanelListView = (0, _toolkit.createAction)(_actionTypes.default.TOGGLE_LAYER_PANEL_LIST_VIEW, listView => ({
298
- payload: listView
299
- }));
335
+ var toggleLayerPanelListView = exports.toggleLayerPanelListView = (0, _toolkit.createAction)(_actionTypes["default"].TOGGLE_LAYER_PANEL_LIST_VIEW, function (listView) {
336
+ return {
337
+ payload: listView
338
+ };
339
+ });
300
340
 
301
341
  /**
302
342
  * This declaration is needed to group actions in docs
@@ -311,6 +351,6 @@ const toggleLayerPanelListView = exports.toggleLayerPanelListView = (0, _toolkit
311
351
  */
312
352
  /* eslint-disable no-unused-vars */
313
353
  // @ts-ignore
314
- const uiStateActions = null;
354
+ var uiStateActions = null;
315
355
  /* eslint-enable no-unused-vars */
316
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9vbGtpdCIsInJlcXVpcmUiLCJfYWN0aW9uVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwidG9nZ2xlU2lkZVBhbmVsIiwiZXhwb3J0cyIsImNyZWF0ZUFjdGlvbiIsIkFjdGlvblR5cGVzIiwiVE9HR0xFX1NJREVfUEFORUwiLCJpZCIsInBheWxvYWQiLCJ0b2dnbGVNb2RhbCIsIlRPR0dMRV9NT0RBTCIsInNob3dFeHBvcnREcm9wZG93biIsIlNIT1dfRVhQT1JUX0RST1BET1dOIiwiaGlkZUV4cG9ydERyb3Bkb3duIiwiSElERV9FWFBPUlRfRFJPUERPV04iLCJ0b2dnbGVNYXBDb250cm9sIiwiVE9HR0xFX01BUF9DT05UUk9MIiwicGFuZWxJZCIsImluZGV4Iiwic2V0TWFwQ29udHJvbFZpc2liaWxpdHkiLCJTRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWSIsInNob3ciLCJvcGVuRGVsZXRlTW9kYWwiLCJPUEVOX0RFTEVURV9NT0RBTCIsImRhdGFzZXRJZCIsImFkZE5vdGlmaWNhdGlvbiIsIkFERF9OT1RJRklDQVRJT04iLCJub3RpZmljYXRpb24iLCJyZW1vdmVOb3RpZmljYXRpb24iLCJSRU1PVkVfTk9USUZJQ0FUSU9OIiwic2V0RXhwb3J0SW1hZ2VTZXR0aW5nIiwiU0VUX0VYUE9SVF9JTUFHRV9TRVRUSU5HIiwibmV3U2V0dGluZyIsInN0YXJ0RXhwb3J0aW5nSW1hZ2UiLCJTVEFSVF9FWFBPUlRJTkdfSU1BR0UiLCJzZXRFeHBvcnRJbWFnZURhdGFVcmkiLCJTRVRfRVhQT1JUX0lNQUdFX0RBVEFfVVJJIiwiZGF0YVVyaSIsInNldEV4cG9ydEltYWdlRXJyb3IiLCJTRVRfRVhQT1JUX0lNQUdFX0VSUk9SIiwiZXJyb3IiLCJjbGVhbnVwRXhwb3J0SW1hZ2UiLCJDTEVBTlVQX0VYUE9SVF9JTUFHRSIsInNldEV4cG9ydFNlbGVjdGVkRGF0YXNldCIsIlNFVF9FWFBPUlRfU0VMRUNURURfREFUQVNFVCIsInNldEV4cG9ydERhdGFUeXBlIiwiU0VUX0VYUE9SVF9EQVRBX1RZUEUiLCJkYXRhVHlwZSIsInNldEV4cG9ydEZpbHRlcmVkIiwiU0VUX0VYUE9SVF9GSUxURVJFRCIsInNldEV4cG9ydERhdGEiLCJTRVRfRVhQT1JUX0RBVEEiLCJzZXRVc2VyTWFwYm94QWNjZXNzVG9rZW4iLCJTRVRfVVNFUl9NQVBCT1hfQUNDRVNTX1RPS0VOIiwic2V0RXhwb3J0TWFwRm9ybWF0IiwiU0VUX0VYUE9SVF9NQVBfRk9STUFUIiwic2V0RXhwb3J0SFRNTE1hcE1vZGUiLCJTRVRfRVhQT1JUX01BUF9IVE1MX01PREUiLCJzZXRMb2NhbGUiLCJTRVRfTE9DQUxFIiwibG9jYWxlIiwidG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3IiwiVE9HR0xFX0xBWUVSX1BBTkVMX0xJU1RfVklFVyIsImxpc3RWaWV3IiwidWlTdGF0ZUFjdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9ucy91aS1zdGF0ZS1hY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7Y3JlYXRlQWN0aW9ufSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCBBY3Rpb25UeXBlcyBmcm9tICdjb25zdGFudHMvYWN0aW9uLXR5cGVzJztcbmltcG9ydCB7TWVyZ2V9IGZyb20gJy4uL3JlZHVjZXJzL3R5cGVzJztcbmltcG9ydCB7RXhwb3J0SW1hZ2V9IGZyb20gJy4uL3JlZHVjZXJzL3VpLXN0YXRlLXVwZGF0ZXJzJztcblxuLyoqIFRPR0dMRV9TSURFX1BBTkVMICovXG5leHBvcnQgdHlwZSBUb2dnbGVTaWRlUGFuZWxVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkICBpZCBvZiBzaWRlIHBhbmVsIHRvIGJlIHNob3duLCBvbmUgb2YgYGxheWVyYCwgYGZpbHRlcmAsIGBpbnRlcmFjdGlvbmAsIGBtYXBgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWw6IChcbiAgaWQ6IHN0cmluZ1xuKSA9PiBNZXJnZTxcbiAgVG9nZ2xlU2lkZVBhbmVsVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfU0lERV9QQU5FTH1cbj4gPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuVE9HR0xFX1NJREVfUEFORUwsIChpZDogc3RyaW5nKSA9PiAoe3BheWxvYWQ6IGlkfSkpO1xuXG4vKiogVE9HR0xFX01PREFMICovXG5leHBvcnQgdHlwZSBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZyB8IG51bGw7XG59O1xuLyoqXG4gKiBTaG93IGFuZCBoaWRlIG1vZGFsIGRpYWxvZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgLSBpZCBvZiBtb2RhbCB0byBiZSBzaG93biwgbnVsbCB0byBoaWRlIG1vZGFscy4gT25lIG9mOlxuICogIC0gW2BEQVRBX1RBQkxFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZGF0YV90YWJsZV9pZClcbiAqICAtIFtgREVMRVRFX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNkZWxldGVfZGF0YV9pZClcbiAqICAtIFtgQUREX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNhZGRfZGF0YV9pZClcbiAqICAtIFtgRVhQT1JUX0lNQUdFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZXhwb3J0X2ltYWdlX2lkKVxuICogIC0gW2BFWFBPUlRfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2V4cG9ydF9kYXRhX2lkKVxuICogIC0gW2BBRERfTUFQX1NUWUxFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjYWRkX21hcF9zdHlsZV9pZClcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZU1vZGFsOiAoXG4gIGlkOiBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVE9HR0xFX01PREFMfT4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlRPR0dMRV9NT0RBTCxcbiAgKGlkOiBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtcbiAgICBwYXlsb2FkOiBpZFxuICB9KVxuKTtcblxuLyoqIFNIT1dfRVhQT1JUX0RST1BET1dOICovXG5leHBvcnQgdHlwZSBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBIaWRlIGFuZCBzaG93IHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZCAtIGlkIG9mIHRoZSBkcm9wZG93blxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0V4cG9ydERyb3Bkb3duOiAoXG4gIGlkOiBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNob3dFeHBvcnREcm9wZG93blVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0hPV19FWFBPUlRfRFJPUERPV059XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TSE9XX0VYUE9SVF9EUk9QRE9XTixcbiAgKGlkOiBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ10pID0+ICh7cGF5bG9hZDogaWR9KVxuKTtcblxuLyoqXG4gKiBIaWRlIHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGhpZGVFeHBvcnREcm9wZG93bjogKCkgPT4ge1xuICB0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuSElERV9FWFBPUlRfRFJPUERPV047XG59ID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLkhJREVfRVhQT1JUX0RST1BET1dOKTtcblxuLyoqIFRPR0dMRV9NQVBfQ09OVFJPTCAqL1xuZXhwb3J0IHR5cGUgVG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHtcbiAgICBwYW5lbElkOiBzdHJpbmc7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgfTtcbn07XG4vKipcbiAqIFRvZ2dsZSBhY3RpdmUgbWFwIGNvbnRyb2wgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBhbmVsSWQgLSBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTWFwQ29udHJvbDogKFxuICBwYW5lbElkOiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gIGluZGV4OiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydpbmRleCddXG4pID0+IE1lcmdlPFxuICBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfTUFQX0NPTlRST0x9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5UT0dHTEVfTUFQX0NPTlRST0wsXG4gIChcbiAgICBwYW5lbElkOiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gICAgaW5kZXg6IFRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2luZGV4J11cbiAgKSA9PiAoe1xuICAgIHBheWxvYWQ6IHtcbiAgICAgIHBhbmVsSWQsXG4gICAgICBpbmRleFxuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBTRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWSAqL1xuZXhwb3J0IHR5cGUgc2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiB7XG4gICAgcGFuZWxJZDogc3RyaW5nO1xuICAgIHNob3c6IGJvb2xlYW47XG4gIH07XG59O1xuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYW5lbElkIC0gbWFwIGNvbnRyb2wgcGFuZWwgaWQsIG9uZSBvZiB0aGUga2V5cyBvZjogW2BERUZBVUxUX01BUF9DT05UUk9MU2BdKCNkZWZhdWx0X21hcF9jb250cm9scylcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5OiAoXG4gIHBhbmVsSWQ6IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gIHNob3c6IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvblsncGF5bG9hZCddWydzaG93J11cbikgPT4gTWVyZ2U8XG4gIHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWX1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9NQVBfQ09OVFJPTF9WSVNJQklMSVRZLFxuICAoXG4gICAgcGFuZWxJZDogc2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ3BhbmVsSWQnXSxcbiAgICBzaG93OiBzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVsnc2hvdyddXG4gICkgPT4gKHtcbiAgICBwYXlsb2FkOiB7XG4gICAgICBwYW5lbElkLFxuICAgICAgc2hvd1xuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBPUEVOX0RFTEVURV9NT0RBTCAqL1xuZXhwb3J0IHR5cGUgT3BlbkRlbGV0ZU1vZGFsVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBtYXAgY29udHJvbCBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YXNldElkIC0gYGlkYCBvZiB0aGUgZGF0YXNldCB0byBiZSBkZWxldGVkXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWw6IChcbiAgZGF0YXNldElkOiBPcGVuRGVsZXRlTW9kYWxVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIE9wZW5EZWxldGVNb2RhbFVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuT1BFTl9ERUxFVEVfTU9EQUx9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5PUEVOX0RFTEVURV9NT0RBTCxcbiAgKGRhdGFzZXRJZDogT3BlbkRlbGV0ZU1vZGFsVXBkYXRlckFjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGRhdGFzZXRJZH0pXG4pO1xuXG4vKiogQUREX05PVElGSUNBVElPTiAqL1xuZXhwb3J0IHR5cGUgQWRkTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogb2JqZWN0O1xufTtcbi8qKlxuICogQWRkIGEgbm90aWZpY2F0aW9uIHRvIGJlIGRpc3BsYXllZC5cbiAqIEV4aXN0aW5nIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHVwZGF0ZWQgaW4gY2FzZSBvZiBtYXRjaGluZyBpZC5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIG5vdGlmaWNhdGlvbiAtIFRoZSBgbm90aWZpY2F0aW9uYCBvYmplY3QgdG8gYmUgYWRkZWQgb3IgdXBkYXRlZFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgYWRkTm90aWZpY2F0aW9uOiAoXG4gIG5vdGlmaWNhdGlvbjogQWRkTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBBZGROb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uLFxuICB7XG4gICAgdHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkFERF9OT1RJRklDQVRJT047XG4gIH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLkFERF9OT1RJRklDQVRJT04sXG4gIChub3RpZmljYXRpb246IEFkZE5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBub3RpZmljYXRpb259KVxuKTtcblxuLyoqIFJFTU9WRV9OT1RJRklDQVRJT04gKi9cbmV4cG9ydCB0eXBlIFJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFJlbW92ZSBhIG5vdGlmaWNhdGlvblxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgLSBgaWRgIG9mIHRoZSBub3RpZmljYXRpb24gdG8gYmUgcmVtb3ZlZFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlTm90aWZpY2F0aW9uOiAoXG4gIGlkOiBSZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVNT1ZFX05PVElGSUNBVElPTn1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlJFTU9WRV9OT1RJRklDQVRJT04sXG4gIChpZDogUmVtb3ZlTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGlkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX0lNQUdFX1NFVFRJTkcgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IFBhcnRpYWw8RXhwb3J0SW1hZ2U+O1xufTtcbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZWAgc2V0dGluZ3M6IHJhdGlvLCByZXNvbHV0aW9uLCBsZWdlbmRcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIG5ld1NldHRpbmcgLSB7cmF0aW86ICcxeCd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZVNldHRpbmc6IChcbiAgbmV3U2V0dGluZzogU2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfU0VUVElOR31cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfU0VUVElORyxcbiAgKG5ld1NldHRpbmc6IFNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBuZXdTZXR0aW5nfSlcbik7XG5cbi8qKlxuICogU3RhcnQgZXhwb3J0aW5nIGltYWdlIGZsb3dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc3RhcnRFeHBvcnRpbmdJbWFnZTogKG9wdGlvbnM/OiB7XG4gIHJhdGlvPzogc3RyaW5nO1xuICByZXNvbHV0aW9uPzogc3RyaW5nO1xuICBsZWdlbmQ/OiBzdHJpbmc7XG4gIGNlbnRlcj86IGJvb2xlYW47XG59KSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TVEFSVF9FWFBPUlRJTkdfSU1BR0V9XG4+ID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLlNUQVJUX0VYUE9SVElOR19JTUFHRSwgKHBheWxvYWQ6IGFueSkgPT4gKHtwYXlsb2FkfSkpO1xuXG4vKiogU0VUX0VYUE9SVF9JTUFHRV9EQVRBX1VSSSAqL1xuZXhwb3J0IHR5cGUgU2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YVVyaSAtIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpOiAoXG4gIGRhdGFVcmk6IFNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX0RBVEFfVVJJfVxuPiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9JTUFHRV9EQVRBX1VSSSxcbiAgKGRhdGFVcmk6IFNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhVXJpfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX0lNQUdFX0VSUk9SICovXG5leHBvcnQgdHlwZSBTZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogRXJyb3I7XG59O1xuLyoqXG4gKiBTZXQgRXhwb3J0IGltYWdlIGVycm9yXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEltYWdlRXJyb3I6IChcbiAgZXJyb3I6IFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfRVJST1J9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX0VSUk9SLFxuICAoZXJyb3I6IFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ10pID0+ICh7cGF5bG9hZDogZXJyb3J9KVxuKTtcblxuLyoqXG4gKiBEZWxldGUgY2FjaGVkIGV4cG9ydCBpbWFnZVxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2U6ICgpID0+IHtcbiAgdHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkNMRUFOVVBfRVhQT1JUX0lNQUdFO1xufSA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5DTEVBTlVQX0VYUE9SVF9JTUFHRSk7XG5cbi8qKiBTRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVQgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCBzZWxlY3RlZCBkYXRhc2V0IGZvciBleHBvcnRcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFzZXRJZCAtIGRhdGFzZXQgaWRcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydFNlbGVjdGVkRGF0YXNldDogKFxuICBkYXRhc2V0SWQ6IFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVR9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVQsXG4gIChkYXRhc2V0SWQ6IFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhc2V0SWR9KVxuKTtcblxuLyoqIFNFVF9FWFBPUlRfREFUQV9UWVBFICovXG5leHBvcnQgdHlwZSBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCBkYXRhIGZvcm1hdCBmb3IgZXhwb3J0aW5nIGRhdGFcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFUeXBlIC0gb25lIG9mIGAndGV4dC9jc3YnYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVR5cGU6IChcbiAgZGF0YVR5cGU6IFNldEV4cG9ydERhdGFUeXBlVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9EQVRBX1RZUEV9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0RBVEFfVFlQRSxcbiAgKGRhdGFUeXBlOiBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhVHlwZX0pXG4pO1xuXG4vKiogU0VUX0VYUE9SVF9GSUxURVJFRCAqL1xuZXhwb3J0IHR5cGUgU2V0RXhwb3J0RmlsdGVyZWRVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBib29sZWFuO1xufTtcbi8qKlxuICogV2hldGhlciB0byBleHBvcnQgZmlsdGVyZWQgZGF0YSwgYHRydWVgIG9yIGBmYWxzZWBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBheWxvYWQgLSBzZXQgYHRydWVgIHRvIG9ueSBleHBvcnQgZmlsdGVyZWQgZGF0YVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RmlsdGVyZWQ6IChcbiAgZXhwb3J0RmlsdGVyZWQ6IFNldEV4cG9ydEZpbHRlcmVkVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9GSUxURVJFRH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfRklMVEVSRUQsXG4gIChwYXlsb2FkOiBTZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKlxuICogV2hldGhlciB0byBpbmNsdWRpbmcgZGF0YSBpbiBtYXAgY29uZmlnLCB0b2dnbGUgYmV0d2VlbiBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhOiAoKSA9PiB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfREFUQX0gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfREFUQVxuKTtcblxuLyoqIFNFVF9VU0VSX01BUEJPWF9BQ0NFU1NfVE9LRU4gKi9cbmV4cG9ydCB0eXBlIFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFdoZXRoZXIgd2UgZXhwb3J0IGEgbWFwYm94IGFjY2VzcyB0b2tlbiB1c2VkIHRvIGNyZWF0ZSBhIHNpbmdsZSBtYXAgaHRtbCBmaWxlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYXlsb2FkIC0gbWFwYm94IGFjY2VzcyB0b2tlblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuOiAoXG4gIHBheWxvYWQ6IFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfVVNFUl9NQVBCT1hfQUNDRVNTX1RPS0VOfVxuPiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuU0VUX1VTRVJfTUFQQk9YX0FDQ0VTU19UT0tFTixcbiAgKHBheWxvYWQ6IFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX01BUF9GT1JNQVQgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCB0aGUgZXhwb3J0IG1hcCBmb3JtYXQgKGh0bWwsIGpzb24pXG4gKiBAbWVtYmVyT2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYXlsb2FkIC0gbWFwIGZvcm1hdFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwRm9ybWF0OiAoXG4gIG1hcEZvcm1hdDogU2V0RXhwb3J0TWFwRm9ybWF0VXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfTUFQX0ZPUk1BVH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfTUFQX0ZPUk1BVCxcbiAgKHBheWxvYWQ6IFNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX01BUF9IVE1MX01PREUgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydEhUTUxNYXBNb2RlVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogU2V0IHRoZSBIVE1MIG1vZGUgdG8gdXNlIHRvIGV4cG9ydCBIVE1MIG1vZGVcbiAqIEBtZW1iZXJPZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBheWxvYWQgLSBtYXAgbW9kZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SFRNTE1hcE1vZGU6IChcbiAgbW9kZTogU2V0RXhwb3J0SFRNTE1hcE1vZGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNldEV4cG9ydEhUTUxNYXBNb2RlVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX01BUF9IVE1MX01PREV9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX01BUF9IVE1MX01PREUsXG4gIChwYXlsb2FkOiBTZXRFeHBvcnRIVE1MTWFwTW9kZVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfTE9DQUxFICovXG5leHBvcnQgdHlwZSBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiB7bG9jYWxlOiBzdHJpbmd9O1xufTtcbi8qKlxuICogU2V0IGBsb2NhbGVgIHZhbHVlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBsb2NhbGUgLSBsb2NhbGUgb2YgdGhlIFVJXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRMb2NhbGU6IChcbiAgbG9jYWxlOiBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2xvY2FsZSddXG4pID0+IE1lcmdlPFNldExvY2FsZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0xPQ0FMRX0+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfTE9DQUxFLFxuICAobG9jYWxlOiBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2xvY2FsZSddKSA9PiAoe1xuICAgIHBheWxvYWQ6IHtcbiAgICAgIGxvY2FsZVxuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBUT0dHTEVfTEFZRVJfUEFORUxfTElTVF9WSUVXICovXG5leHBvcnQgdHlwZSBUb2dnbGVMYXllclBhbmVsTGlzdFZpZXdBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFRvZ2dsZSBsYXllciBwYW5lbCBsaXN0IHZpZXdcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGxpc3RWaWV3IGxheWVyIHBhbmVsIGxpc3RWaWV3IHZhbHVlLiBDYW4gYmUgJ2xpc3QnIG9yICdzb3J0QnlEYXRhc2V0J1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3OiAoXG4gIGxpc3RWaWV3OiBUb2dnbGVMYXllclBhbmVsTGlzdFZpZXdBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgVG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3QWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9MQVlFUl9QQU5FTF9MSVNUX1ZJRVd9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5UT0dHTEVfTEFZRVJfUEFORUxfTElTVF9WSUVXLFxuICAobGlzdFZpZXc6IFRvZ2dsZUxheWVyUGFuZWxMaXN0Vmlld0FjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGxpc3RWaWV3fSlcbik7XG5cbi8qKlxuICogVGhpcyBkZWNsYXJhdGlvbiBpcyBuZWVkZWQgdG8gZ3JvdXAgYWN0aW9ucyBpbiBkb2NzXG4gKi9cbi8qKlxuICogQWN0aW9ucyBoYW5kbGVkIG1vc3RseSBieSAgYHVpU3RhdGVgIHJlZHVjZXIuXG4gKiBUaGV5IG1hbmFnZSBVSSBjaGFuZ2VzIGluIHRoYSBhcHAsIHN1Y2ggYXMgb3BlbiBhbmQgY2xvc2Ugc2lkZSBwYW5lbCxcbiAqIHN3aXRjaCBiZXR3ZWVuIHRhYnMgaW4gdGhlIHNpZGUgcGFuZWwsIG9wZW4gYW5kIGNsb3NlIG1vZGFsIGRpYWxvZyBmb3IgZXhwb3J0aW5nIGRhdGEgLyBpbWFnZXMgZXRjLlxuICogSXQgYWxzbyBtYW5nZXMgd2hpY2ggc2V0dGluZ3MgYXJlIHNlbGVjdGVkIGR1cmluZyBpbWFnZSBhbmQgbWFwIGV4cG9ydFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IHVpU3RhdGVBY3Rpb25zID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQW9CQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBT0E7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUcsZUFLWixHQUFBQyxPQUFBLENBQUFELGVBQUEsR0FBRyxJQUFBRSxxQkFBWSxFQUFDQyxvQkFBVyxDQUFDQyxpQkFBaUIsRUFBR0MsRUFBVSxLQUFNO0VBQUNDLE9BQU8sRUFBRUQ7QUFBRSxDQUFDLENBQUMsQ0FBQzs7QUFFaEY7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUUsV0FFZ0UsR0FBQU4sT0FBQSxDQUFBTSxXQUFBLEdBQUcsSUFBQUwscUJBQVksRUFDMUZDLG9CQUFXLENBQUNLLFlBQVksRUFDdkJILEVBQXVDLEtBQU07RUFDNUNDLE9BQU8sRUFBRUQ7QUFDWCxDQUFDLENBQ0gsQ0FBQzs7QUFFRDs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNSSxrQkFLWixHQUFBUixPQUFBLENBQUFRLGtCQUFBLEdBQUcsSUFBQVAscUJBQVksRUFDZEMsb0JBQVcsQ0FBQ08sb0JBQW9CLEVBQy9CTCxFQUE4QyxLQUFNO0VBQUNDLE9BQU8sRUFBRUQ7QUFBRSxDQUFDLENBQ3BFLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1NLGtCQUVaLEdBQUFWLE9BQUEsQ0FBQVUsa0JBQUEsR0FBRyxJQUFBVCxxQkFBWSxFQUFDQyxvQkFBVyxDQUFDUyxvQkFBb0IsQ0FBQzs7QUFFbEQ7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUMsZ0JBTVosR0FBQVosT0FBQSxDQUFBWSxnQkFBQSxHQUFHLElBQUFYLHFCQUFZLEVBQ2RDLG9CQUFXLENBQUNXLGtCQUFrQixFQUM5QixDQUNFQyxPQUE0RCxFQUM1REMsS0FBd0QsTUFDcEQ7RUFDSlYsT0FBTyxFQUFFO0lBQ1BTLE9BQU87SUFDUEM7RUFDRjtBQUNGLENBQUMsQ0FDSCxDQUFDOztBQUVEOztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1DLHVCQU1aLEdBQUFoQixPQUFBLENBQUFnQix1QkFBQSxHQUFHLElBQUFmLHFCQUFZLEVBQ2RDLG9CQUFXLENBQUNlLDBCQUEwQixFQUN0QyxDQUNFSCxPQUFtRSxFQUNuRUksSUFBNkQsTUFDekQ7RUFDSmIsT0FBTyxFQUFFO0lBQ1BTLE9BQU87SUFDUEk7RUFDRjtBQUNGLENBQUMsQ0FDSCxDQUFDOztBQUVEOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1DLGVBS1osR0FBQW5CLE9BQUEsQ0FBQW1CLGVBQUEsR0FBRyxJQUFBbEIscUJBQVksRUFDZEMsb0JBQVcsQ0FBQ2tCLGlCQUFpQixFQUM1QkMsU0FBa0QsS0FBTTtFQUFDaEIsT0FBTyxFQUFFZ0I7QUFBUyxDQUFDLENBQy9FLENBQUM7O0FBRUQ7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNQyxlQU9aLEdBQUF0QixPQUFBLENBQUFzQixlQUFBLEdBQUcsSUFBQXJCLHFCQUFZLEVBQ2RDLG9CQUFXLENBQUNxQixnQkFBZ0IsRUFDM0JDLFlBQXFELEtBQU07RUFBQ25CLE9BQU8sRUFBRW1CO0FBQVksQ0FBQyxDQUNyRixDQUFDOztBQUVEOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1DLGtCQUtaLEdBQUF6QixPQUFBLENBQUF5QixrQkFBQSxHQUFHLElBQUF4QixxQkFBWSxFQUNkQyxvQkFBVyxDQUFDd0IsbUJBQW1CLEVBQzlCdEIsRUFBOEMsS0FBTTtFQUFDQyxPQUFPLEVBQUVEO0FBQUUsQ0FBQyxDQUNwRSxDQUFDOztBQUVEOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU11QixxQkFLWixHQUFBM0IsT0FBQSxDQUFBMkIscUJBQUEsR0FBRyxJQUFBMUIscUJBQVksRUFDZEMsb0JBQVcsQ0FBQzBCLHdCQUF3QixFQUNuQ0MsVUFBeUQsS0FBTTtFQUFDeEIsT0FBTyxFQUFFd0I7QUFBVSxDQUFDLENBQ3ZGLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1DLG1CQVFaLEdBQUE5QixPQUFBLENBQUE4QixtQkFBQSxHQUFHLElBQUE3QixxQkFBWSxFQUFDQyxvQkFBVyxDQUFDNkIscUJBQXFCLEVBQUcxQixPQUFZLEtBQU07RUFBQ0E7QUFBTyxDQUFDLENBQUMsQ0FBQzs7QUFFbEY7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTTJCLHFCQUtaLEdBQUFoQyxPQUFBLENBQUFnQyxxQkFBQSxHQUFHLElBQUEvQixxQkFBWSxFQUNkQyxvQkFBVyxDQUFDK0IseUJBQXlCLEVBQ3BDQyxPQUFzRCxLQUFNO0VBQUM3QixPQUFPLEVBQUU2QjtBQUFPLENBQUMsQ0FDakYsQ0FBQzs7QUFFRDs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUMsbUJBS1osR0FBQW5DLE9BQUEsQ0FBQW1DLG1CQUFBLEdBQUcsSUFBQWxDLHFCQUFZLEVBQ2RDLG9CQUFXLENBQUNrQyxzQkFBc0IsRUFDakNDLEtBQWtELEtBQU07RUFBQ2hDLE9BQU8sRUFBRWdDO0FBQUssQ0FBQyxDQUMzRSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNQyxrQkFFWixHQUFBdEMsT0FBQSxDQUFBc0Msa0JBQUEsR0FBRyxJQUFBckMscUJBQVksRUFBQ0Msb0JBQVcsQ0FBQ3FDLG9CQUFvQixDQUFDOztBQUVsRDs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNQyx3QkFLWixHQUFBeEMsT0FBQSxDQUFBd0Msd0JBQUEsR0FBRyxJQUFBdkMscUJBQVksRUFDZEMsb0JBQVcsQ0FBQ3VDLDJCQUEyQixFQUN0Q3BCLFNBQTJELEtBQU07RUFBQ2hCLE9BQU8sRUFBRWdCO0FBQVMsQ0FBQyxDQUN4RixDQUFDOztBQUVEOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1xQixpQkFLWixHQUFBMUMsT0FBQSxDQUFBMEMsaUJBQUEsR0FBRyxJQUFBekMscUJBQVksRUFDZEMsb0JBQVcsQ0FBQ3lDLG9CQUFvQixFQUMvQkMsUUFBbUQsS0FBTTtFQUFDdkMsT0FBTyxFQUFFdUM7QUFBUSxDQUFDLENBQy9FLENBQUM7O0FBRUQ7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUMsaUJBS1osR0FBQTdDLE9BQUEsQ0FBQTZDLGlCQUFBLEdBQUcsSUFBQTVDLHFCQUFZLEVBQ2RDLG9CQUFXLENBQUM0QyxtQkFBbUIsRUFDOUJ6QyxPQUFrRCxLQUFNO0VBQUNBO0FBQU8sQ0FBQyxDQUNwRSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNMEMsYUFBK0QsR0FBQS9DLE9BQUEsQ0FBQStDLGFBQUEsR0FBRyxJQUFBOUMscUJBQVksRUFDekZDLG9CQUFXLENBQUM4QyxlQUNkLENBQUM7O0FBRUQ7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUMsd0JBS1osR0FBQWpELE9BQUEsQ0FBQWlELHdCQUFBLEdBQUcsSUFBQWhELHFCQUFZLEVBQ2RDLG9CQUFXLENBQUNnRCw0QkFBNEIsRUFDdkM3QyxPQUF5RCxLQUFNO0VBQUNBO0FBQU8sQ0FBQyxDQUMzRSxDQUFDOztBQUVEOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU04QyxrQkFLWixHQUFBbkQsT0FBQSxDQUFBbUQsa0JBQUEsR0FBRyxJQUFBbEQscUJBQVksRUFDZEMsb0JBQVcsQ0FBQ2tELHFCQUFxQixFQUNoQy9DLE9BQW1ELEtBQU07RUFBQ0E7QUFBTyxDQUFDLENBQ3JFLENBQUM7O0FBRUQ7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1nRCxvQkFLWixHQUFBckQsT0FBQSxDQUFBcUQsb0JBQUEsR0FBRyxJQUFBcEQscUJBQVksRUFDZEMsb0JBQVcsQ0FBQ29ELHdCQUF3QixFQUNuQ2pELE9BQXFELEtBQU07RUFBQ0E7QUFBTyxDQUFDLENBQ3ZFLENBQUM7O0FBRUQ7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTWtELFNBRTRELEdBQUF2RCxPQUFBLENBQUF1RCxTQUFBLEdBQUcsSUFBQXRELHFCQUFZLEVBQ3RGQyxvQkFBVyxDQUFDc0QsVUFBVSxFQUNyQkMsTUFBbUQsS0FBTTtFQUN4RHBELE9BQU8sRUFBRTtJQUNQb0Q7RUFDRjtBQUNGLENBQUMsQ0FDSCxDQUFDOztBQUVEOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1DLHdCQUtaLEdBQUExRCxPQUFBLENBQUEwRCx3QkFBQSxHQUFHLElBQUF6RCxxQkFBWSxFQUNkQyxvQkFBVyxDQUFDeUQsNEJBQTRCLEVBQ3ZDQyxRQUFtRCxLQUFNO0VBQUN2RCxPQUFPLEVBQUV1RDtBQUFRLENBQUMsQ0FDL0UsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU1DLGNBQWMsR0FBRyxJQUFJO0FBQzNCIiwiaWdub3JlTGlzdCI6W119
356
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9vbGtpdCIsInJlcXVpcmUiLCJfYWN0aW9uVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwidG9nZ2xlU2lkZVBhbmVsIiwiZXhwb3J0cyIsImNyZWF0ZUFjdGlvbiIsIkFjdGlvblR5cGVzIiwiVE9HR0xFX1NJREVfUEFORUwiLCJpZCIsInBheWxvYWQiLCJ0b2dnbGVNb2RhbCIsIlRPR0dMRV9NT0RBTCIsInNob3dFeHBvcnREcm9wZG93biIsIlNIT1dfRVhQT1JUX0RST1BET1dOIiwiaGlkZUV4cG9ydERyb3Bkb3duIiwiSElERV9FWFBPUlRfRFJPUERPV04iLCJ0b2dnbGVNYXBDb250cm9sIiwiVE9HR0xFX01BUF9DT05UUk9MIiwicGFuZWxJZCIsImluZGV4Iiwic2V0TWFwQ29udHJvbFZpc2liaWxpdHkiLCJTRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWSIsInNob3ciLCJvcGVuRGVsZXRlTW9kYWwiLCJPUEVOX0RFTEVURV9NT0RBTCIsImRhdGFzZXRJZCIsImFkZE5vdGlmaWNhdGlvbiIsIkFERF9OT1RJRklDQVRJT04iLCJub3RpZmljYXRpb24iLCJyZW1vdmVOb3RpZmljYXRpb24iLCJSRU1PVkVfTk9USUZJQ0FUSU9OIiwic2V0RXhwb3J0SW1hZ2VTZXR0aW5nIiwiU0VUX0VYUE9SVF9JTUFHRV9TRVRUSU5HIiwibmV3U2V0dGluZyIsInN0YXJ0RXhwb3J0aW5nSW1hZ2UiLCJTVEFSVF9FWFBPUlRJTkdfSU1BR0UiLCJzZXRFeHBvcnRJbWFnZURhdGFVcmkiLCJTRVRfRVhQT1JUX0lNQUdFX0RBVEFfVVJJIiwiZGF0YVVyaSIsInNldEV4cG9ydEltYWdlRXJyb3IiLCJTRVRfRVhQT1JUX0lNQUdFX0VSUk9SIiwiZXJyb3IiLCJjbGVhbnVwRXhwb3J0SW1hZ2UiLCJDTEVBTlVQX0VYUE9SVF9JTUFHRSIsInNldEV4cG9ydFNlbGVjdGVkRGF0YXNldCIsIlNFVF9FWFBPUlRfU0VMRUNURURfREFUQVNFVCIsInNldEV4cG9ydERhdGFUeXBlIiwiU0VUX0VYUE9SVF9EQVRBX1RZUEUiLCJkYXRhVHlwZSIsInNldEV4cG9ydEZpbHRlcmVkIiwiU0VUX0VYUE9SVF9GSUxURVJFRCIsInNldEV4cG9ydERhdGEiLCJTRVRfRVhQT1JUX0RBVEEiLCJzZXRVc2VyTWFwYm94QWNjZXNzVG9rZW4iLCJTRVRfVVNFUl9NQVBCT1hfQUNDRVNTX1RPS0VOIiwic2V0RXhwb3J0TWFwRm9ybWF0IiwiU0VUX0VYUE9SVF9NQVBfRk9STUFUIiwic2V0RXhwb3J0SFRNTE1hcE1vZGUiLCJTRVRfRVhQT1JUX01BUF9IVE1MX01PREUiLCJzZXRMb2NhbGUiLCJTRVRfTE9DQUxFIiwibG9jYWxlIiwidG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3IiwiVE9HR0xFX0xBWUVSX1BBTkVMX0xJU1RfVklFVyIsImxpc3RWaWV3IiwidWlTdGF0ZUFjdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9ucy91aS1zdGF0ZS1hY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7Y3JlYXRlQWN0aW9ufSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCBBY3Rpb25UeXBlcyBmcm9tICdjb25zdGFudHMvYWN0aW9uLXR5cGVzJztcbmltcG9ydCB7TWVyZ2V9IGZyb20gJy4uL3JlZHVjZXJzL3R5cGVzJztcbmltcG9ydCB7RXhwb3J0SW1hZ2V9IGZyb20gJy4uL3JlZHVjZXJzL3VpLXN0YXRlLXVwZGF0ZXJzJztcblxuLyoqIFRPR0dMRV9TSURFX1BBTkVMICovXG5leHBvcnQgdHlwZSBUb2dnbGVTaWRlUGFuZWxVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkICBpZCBvZiBzaWRlIHBhbmVsIHRvIGJlIHNob3duLCBvbmUgb2YgYGxheWVyYCwgYGZpbHRlcmAsIGBpbnRlcmFjdGlvbmAsIGBtYXBgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWw6IChcbiAgaWQ6IHN0cmluZ1xuKSA9PiBNZXJnZTxcbiAgVG9nZ2xlU2lkZVBhbmVsVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfU0lERV9QQU5FTH1cbj4gPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuVE9HR0xFX1NJREVfUEFORUwsIChpZDogc3RyaW5nKSA9PiAoe3BheWxvYWQ6IGlkfSkpO1xuXG4vKiogVE9HR0xFX01PREFMICovXG5leHBvcnQgdHlwZSBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZyB8IG51bGw7XG59O1xuLyoqXG4gKiBTaG93IGFuZCBoaWRlIG1vZGFsIGRpYWxvZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgLSBpZCBvZiBtb2RhbCB0byBiZSBzaG93biwgbnVsbCB0byBoaWRlIG1vZGFscy4gT25lIG9mOlxuICogIC0gW2BEQVRBX1RBQkxFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZGF0YV90YWJsZV9pZClcbiAqICAtIFtgREVMRVRFX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNkZWxldGVfZGF0YV9pZClcbiAqICAtIFtgQUREX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNhZGRfZGF0YV9pZClcbiAqICAtIFtgRVhQT1JUX0lNQUdFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZXhwb3J0X2ltYWdlX2lkKVxuICogIC0gW2BFWFBPUlRfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2V4cG9ydF9kYXRhX2lkKVxuICogIC0gW2BBRERfTUFQX1NUWUxFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjYWRkX21hcF9zdHlsZV9pZClcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZU1vZGFsOiAoXG4gIGlkOiBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVE9HR0xFX01PREFMfT4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlRPR0dMRV9NT0RBTCxcbiAgKGlkOiBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtcbiAgICBwYXlsb2FkOiBpZFxuICB9KVxuKTtcblxuLyoqIFNIT1dfRVhQT1JUX0RST1BET1dOICovXG5leHBvcnQgdHlwZSBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBIaWRlIGFuZCBzaG93IHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZCAtIGlkIG9mIHRoZSBkcm9wZG93blxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0V4cG9ydERyb3Bkb3duOiAoXG4gIGlkOiBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNob3dFeHBvcnREcm9wZG93blVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0hPV19FWFBPUlRfRFJPUERPV059XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TSE9XX0VYUE9SVF9EUk9QRE9XTixcbiAgKGlkOiBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ10pID0+ICh7cGF5bG9hZDogaWR9KVxuKTtcblxuLyoqXG4gKiBIaWRlIHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGhpZGVFeHBvcnREcm9wZG93bjogKCkgPT4ge1xuICB0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuSElERV9FWFBPUlRfRFJPUERPV047XG59ID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLkhJREVfRVhQT1JUX0RST1BET1dOKTtcblxuLyoqIFRPR0dMRV9NQVBfQ09OVFJPTCAqL1xuZXhwb3J0IHR5cGUgVG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHtcbiAgICBwYW5lbElkOiBzdHJpbmc7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgfTtcbn07XG4vKipcbiAqIFRvZ2dsZSBhY3RpdmUgbWFwIGNvbnRyb2wgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBhbmVsSWQgLSBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTWFwQ29udHJvbDogKFxuICBwYW5lbElkOiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gIGluZGV4OiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydpbmRleCddXG4pID0+IE1lcmdlPFxuICBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfTUFQX0NPTlRST0x9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5UT0dHTEVfTUFQX0NPTlRST0wsXG4gIChcbiAgICBwYW5lbElkOiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gICAgaW5kZXg6IFRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2luZGV4J11cbiAgKSA9PiAoe1xuICAgIHBheWxvYWQ6IHtcbiAgICAgIHBhbmVsSWQsXG4gICAgICBpbmRleFxuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBTRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWSAqL1xuZXhwb3J0IHR5cGUgc2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiB7XG4gICAgcGFuZWxJZDogc3RyaW5nO1xuICAgIHNob3c6IGJvb2xlYW47XG4gIH07XG59O1xuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYW5lbElkIC0gbWFwIGNvbnRyb2wgcGFuZWwgaWQsIG9uZSBvZiB0aGUga2V5cyBvZjogW2BERUZBVUxUX01BUF9DT05UUk9MU2BdKCNkZWZhdWx0X21hcF9jb250cm9scylcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5OiAoXG4gIHBhbmVsSWQ6IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gIHNob3c6IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvblsncGF5bG9hZCddWydzaG93J11cbikgPT4gTWVyZ2U8XG4gIHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWX1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9NQVBfQ09OVFJPTF9WSVNJQklMSVRZLFxuICAoXG4gICAgcGFuZWxJZDogc2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ3BhbmVsSWQnXSxcbiAgICBzaG93OiBzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVsnc2hvdyddXG4gICkgPT4gKHtcbiAgICBwYXlsb2FkOiB7XG4gICAgICBwYW5lbElkLFxuICAgICAgc2hvd1xuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBPUEVOX0RFTEVURV9NT0RBTCAqL1xuZXhwb3J0IHR5cGUgT3BlbkRlbGV0ZU1vZGFsVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBtYXAgY29udHJvbCBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YXNldElkIC0gYGlkYCBvZiB0aGUgZGF0YXNldCB0byBiZSBkZWxldGVkXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWw6IChcbiAgZGF0YXNldElkOiBPcGVuRGVsZXRlTW9kYWxVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIE9wZW5EZWxldGVNb2RhbFVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuT1BFTl9ERUxFVEVfTU9EQUx9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5PUEVOX0RFTEVURV9NT0RBTCxcbiAgKGRhdGFzZXRJZDogT3BlbkRlbGV0ZU1vZGFsVXBkYXRlckFjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGRhdGFzZXRJZH0pXG4pO1xuXG4vKiogQUREX05PVElGSUNBVElPTiAqL1xuZXhwb3J0IHR5cGUgQWRkTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogb2JqZWN0O1xufTtcbi8qKlxuICogQWRkIGEgbm90aWZpY2F0aW9uIHRvIGJlIGRpc3BsYXllZC5cbiAqIEV4aXN0aW5nIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHVwZGF0ZWQgaW4gY2FzZSBvZiBtYXRjaGluZyBpZC5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIG5vdGlmaWNhdGlvbiAtIFRoZSBgbm90aWZpY2F0aW9uYCBvYmplY3QgdG8gYmUgYWRkZWQgb3IgdXBkYXRlZFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgYWRkTm90aWZpY2F0aW9uOiAoXG4gIG5vdGlmaWNhdGlvbjogQWRkTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBBZGROb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uLFxuICB7XG4gICAgdHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkFERF9OT1RJRklDQVRJT047XG4gIH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLkFERF9OT1RJRklDQVRJT04sXG4gIChub3RpZmljYXRpb246IEFkZE5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBub3RpZmljYXRpb259KVxuKTtcblxuLyoqIFJFTU9WRV9OT1RJRklDQVRJT04gKi9cbmV4cG9ydCB0eXBlIFJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFJlbW92ZSBhIG5vdGlmaWNhdGlvblxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgLSBgaWRgIG9mIHRoZSBub3RpZmljYXRpb24gdG8gYmUgcmVtb3ZlZFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlTm90aWZpY2F0aW9uOiAoXG4gIGlkOiBSZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVNT1ZFX05PVElGSUNBVElPTn1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlJFTU9WRV9OT1RJRklDQVRJT04sXG4gIChpZDogUmVtb3ZlTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGlkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX0lNQUdFX1NFVFRJTkcgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IFBhcnRpYWw8RXhwb3J0SW1hZ2U+O1xufTtcbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZWAgc2V0dGluZ3M6IHJhdGlvLCByZXNvbHV0aW9uLCBsZWdlbmRcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIG5ld1NldHRpbmcgLSB7cmF0aW86ICcxeCd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZVNldHRpbmc6IChcbiAgbmV3U2V0dGluZzogU2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfU0VUVElOR31cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfU0VUVElORyxcbiAgKG5ld1NldHRpbmc6IFNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBuZXdTZXR0aW5nfSlcbik7XG5cbi8qKlxuICogU3RhcnQgZXhwb3J0aW5nIGltYWdlIGZsb3dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc3RhcnRFeHBvcnRpbmdJbWFnZTogKG9wdGlvbnM/OiB7XG4gIHJhdGlvPzogc3RyaW5nO1xuICByZXNvbHV0aW9uPzogc3RyaW5nO1xuICBsZWdlbmQ/OiBzdHJpbmc7XG4gIGNlbnRlcj86IGJvb2xlYW47XG59KSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TVEFSVF9FWFBPUlRJTkdfSU1BR0V9XG4+ID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLlNUQVJUX0VYUE9SVElOR19JTUFHRSwgKHBheWxvYWQ6IGFueSkgPT4gKHtwYXlsb2FkfSkpO1xuXG4vKiogU0VUX0VYUE9SVF9JTUFHRV9EQVRBX1VSSSAqL1xuZXhwb3J0IHR5cGUgU2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YVVyaSAtIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpOiAoXG4gIGRhdGFVcmk6IFNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX0RBVEFfVVJJfVxuPiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9JTUFHRV9EQVRBX1VSSSxcbiAgKGRhdGFVcmk6IFNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhVXJpfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX0lNQUdFX0VSUk9SICovXG5leHBvcnQgdHlwZSBTZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogRXJyb3I7XG59O1xuLyoqXG4gKiBTZXQgRXhwb3J0IGltYWdlIGVycm9yXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEltYWdlRXJyb3I6IChcbiAgZXJyb3I6IFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfRVJST1J9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX0VSUk9SLFxuICAoZXJyb3I6IFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ10pID0+ICh7cGF5bG9hZDogZXJyb3J9KVxuKTtcblxuLyoqXG4gKiBEZWxldGUgY2FjaGVkIGV4cG9ydCBpbWFnZVxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2U6ICgpID0+IHtcbiAgdHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkNMRUFOVVBfRVhQT1JUX0lNQUdFO1xufSA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5DTEVBTlVQX0VYUE9SVF9JTUFHRSk7XG5cbi8qKiBTRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVQgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCBzZWxlY3RlZCBkYXRhc2V0IGZvciBleHBvcnRcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFzZXRJZCAtIGRhdGFzZXQgaWRcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydFNlbGVjdGVkRGF0YXNldDogKFxuICBkYXRhc2V0SWQ6IFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVR9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVQsXG4gIChkYXRhc2V0SWQ6IFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhc2V0SWR9KVxuKTtcblxuLyoqIFNFVF9FWFBPUlRfREFUQV9UWVBFICovXG5leHBvcnQgdHlwZSBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCBkYXRhIGZvcm1hdCBmb3IgZXhwb3J0aW5nIGRhdGFcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFUeXBlIC0gb25lIG9mIGAndGV4dC9jc3YnYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVR5cGU6IChcbiAgZGF0YVR5cGU6IFNldEV4cG9ydERhdGFUeXBlVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9EQVRBX1RZUEV9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0RBVEFfVFlQRSxcbiAgKGRhdGFUeXBlOiBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhVHlwZX0pXG4pO1xuXG4vKiogU0VUX0VYUE9SVF9GSUxURVJFRCAqL1xuZXhwb3J0IHR5cGUgU2V0RXhwb3J0RmlsdGVyZWRVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBib29sZWFuO1xufTtcbi8qKlxuICogV2hldGhlciB0byBleHBvcnQgZmlsdGVyZWQgZGF0YSwgYHRydWVgIG9yIGBmYWxzZWBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBheWxvYWQgLSBzZXQgYHRydWVgIHRvIG9ueSBleHBvcnQgZmlsdGVyZWQgZGF0YVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RmlsdGVyZWQ6IChcbiAgZXhwb3J0RmlsdGVyZWQ6IFNldEV4cG9ydEZpbHRlcmVkVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9GSUxURVJFRH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfRklMVEVSRUQsXG4gIChwYXlsb2FkOiBTZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKlxuICogV2hldGhlciB0byBpbmNsdWRpbmcgZGF0YSBpbiBtYXAgY29uZmlnLCB0b2dnbGUgYmV0d2VlbiBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhOiAoKSA9PiB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfREFUQX0gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfREFUQVxuKTtcblxuLyoqIFNFVF9VU0VSX01BUEJPWF9BQ0NFU1NfVE9LRU4gKi9cbmV4cG9ydCB0eXBlIFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFdoZXRoZXIgd2UgZXhwb3J0IGEgbWFwYm94IGFjY2VzcyB0b2tlbiB1c2VkIHRvIGNyZWF0ZSBhIHNpbmdsZSBtYXAgaHRtbCBmaWxlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYXlsb2FkIC0gbWFwYm94IGFjY2VzcyB0b2tlblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuOiAoXG4gIHBheWxvYWQ6IFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfVVNFUl9NQVBCT1hfQUNDRVNTX1RPS0VOfVxuPiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuU0VUX1VTRVJfTUFQQk9YX0FDQ0VTU19UT0tFTixcbiAgKHBheWxvYWQ6IFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX01BUF9GT1JNQVQgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCB0aGUgZXhwb3J0IG1hcCBmb3JtYXQgKGh0bWwsIGpzb24pXG4gKiBAbWVtYmVyT2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYXlsb2FkIC0gbWFwIGZvcm1hdFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwRm9ybWF0OiAoXG4gIG1hcEZvcm1hdDogU2V0RXhwb3J0TWFwRm9ybWF0VXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfTUFQX0ZPUk1BVH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfTUFQX0ZPUk1BVCxcbiAgKHBheWxvYWQ6IFNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX01BUF9IVE1MX01PREUgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydEhUTUxNYXBNb2RlVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogU2V0IHRoZSBIVE1MIG1vZGUgdG8gdXNlIHRvIGV4cG9ydCBIVE1MIG1vZGVcbiAqIEBtZW1iZXJPZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBheWxvYWQgLSBtYXAgbW9kZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SFRNTE1hcE1vZGU6IChcbiAgbW9kZTogU2V0RXhwb3J0SFRNTE1hcE1vZGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNldEV4cG9ydEhUTUxNYXBNb2RlVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX01BUF9IVE1MX01PREV9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX01BUF9IVE1MX01PREUsXG4gIChwYXlsb2FkOiBTZXRFeHBvcnRIVE1MTWFwTW9kZVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfTE9DQUxFICovXG5leHBvcnQgdHlwZSBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiB7bG9jYWxlOiBzdHJpbmd9O1xufTtcbi8qKlxuICogU2V0IGBsb2NhbGVgIHZhbHVlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBsb2NhbGUgLSBsb2NhbGUgb2YgdGhlIFVJXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRMb2NhbGU6IChcbiAgbG9jYWxlOiBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2xvY2FsZSddXG4pID0+IE1lcmdlPFNldExvY2FsZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0xPQ0FMRX0+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfTE9DQUxFLFxuICAobG9jYWxlOiBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2xvY2FsZSddKSA9PiAoe1xuICAgIHBheWxvYWQ6IHtcbiAgICAgIGxvY2FsZVxuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBUT0dHTEVfTEFZRVJfUEFORUxfTElTVF9WSUVXICovXG5leHBvcnQgdHlwZSBUb2dnbGVMYXllclBhbmVsTGlzdFZpZXdBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFRvZ2dsZSBsYXllciBwYW5lbCBsaXN0IHZpZXdcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGxpc3RWaWV3IGxheWVyIHBhbmVsIGxpc3RWaWV3IHZhbHVlLiBDYW4gYmUgJ2xpc3QnIG9yICdzb3J0QnlEYXRhc2V0J1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3OiAoXG4gIGxpc3RWaWV3OiBUb2dnbGVMYXllclBhbmVsTGlzdFZpZXdBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgVG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3QWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9MQVlFUl9QQU5FTF9MSVNUX1ZJRVd9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5UT0dHTEVfTEFZRVJfUEFORUxfTElTVF9WSUVXLFxuICAobGlzdFZpZXc6IFRvZ2dsZUxheWVyUGFuZWxMaXN0Vmlld0FjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGxpc3RWaWV3fSlcbik7XG5cbi8qKlxuICogVGhpcyBkZWNsYXJhdGlvbiBpcyBuZWVkZWQgdG8gZ3JvdXAgYWN0aW9ucyBpbiBkb2NzXG4gKi9cbi8qKlxuICogQWN0aW9ucyBoYW5kbGVkIG1vc3RseSBieSAgYHVpU3RhdGVgIHJlZHVjZXIuXG4gKiBUaGV5IG1hbmFnZSBVSSBjaGFuZ2VzIGluIHRoYSBhcHAsIHN1Y2ggYXMgb3BlbiBhbmQgY2xvc2Ugc2lkZSBwYW5lbCxcbiAqIHN3aXRjaCBiZXR3ZWVuIHRhYnMgaW4gdGhlIHNpZGUgcGFuZWwsIG9wZW4gYW5kIGNsb3NlIG1vZGFsIGRpYWxvZyBmb3IgZXhwb3J0aW5nIGRhdGEgLyBpbWFnZXMgZXRjLlxuICogSXQgYWxzbyBtYW5nZXMgd2hpY2ggc2V0dGluZ3MgYXJlIHNlbGVjdGVkIGR1cmluZyBpbWFnZSBhbmQgbWFwIGV4cG9ydFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IHVpU3RhdGVBY3Rpb25zID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQW9CQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBT0E7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUcsZUFLWixHQUFBQyxPQUFBLENBQUFELGVBQUEsR0FBRyxJQUFBRSxxQkFBWSxFQUFDQyx1QkFBVyxDQUFDQyxpQkFBaUIsRUFBRSxVQUFDQyxFQUFVO0VBQUEsT0FBTTtJQUFDQyxPQUFPLEVBQUVEO0VBQUUsQ0FBQztBQUFBLENBQUMsQ0FBQzs7QUFFaEY7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUUsV0FFZ0UsR0FBQU4sT0FBQSxDQUFBTSxXQUFBLEdBQUcsSUFBQUwscUJBQVksRUFDMUZDLHVCQUFXLENBQUNLLFlBQVksRUFDeEIsVUFBQ0gsRUFBdUM7RUFBQSxPQUFNO0lBQzVDQyxPQUFPLEVBQUVEO0VBQ1gsQ0FBQztBQUFBLENBQ0gs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