kepler.gl 3.1.0-alpha.6 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/dist/src/actions/src/action-types.d.ts +2 -0
  2. package/dist/src/actions/src/ui-state-actions.d.ts +16 -0
  3. package/dist/src/ai-assistant/src/actions.d.ts +1 -1
  4. package/dist/src/ai-assistant/src/components/ai-assistant-component.d.ts +2 -1
  5. package/dist/src/ai-assistant/src/constants.d.ts +3 -3
  6. package/dist/src/ai-assistant/src/reducers/index.d.ts +1 -1
  7. package/dist/src/ai-assistant/src/tools/basemap-functions.d.ts +1 -1
  8. package/dist/src/ai-assistant/src/tools/filter-function.d.ts +1 -1
  9. package/dist/src/ai-assistant/src/tools/layer-creation-function.d.ts +1 -1
  10. package/dist/src/ai-assistant/src/tools/layer-style-function.d.ts +1 -1
  11. package/dist/src/ai-assistant/src/tools/loadurl-function.d.ts +1 -1
  12. package/dist/src/ai-assistant/src/tools/utils.d.ts +73 -0
  13. package/dist/src/components/src/common/data-table/index.d.ts +1 -1
  14. package/dist/src/components/src/common/data-table/option-dropdown.d.ts +3 -3
  15. package/dist/src/components/src/common/file-uploader/file-drop.d.ts +2 -2
  16. package/dist/src/components/src/kepler-gl.d.ts +5 -0
  17. package/dist/src/components/src/loading-indicator.d.ts +13 -0
  18. package/dist/src/components/src/map-container.d.ts +3 -0
  19. package/dist/src/constants/src/default-settings.d.ts +1 -0
  20. package/dist/src/duckdb/src/plugin.d.ts +1 -0
  21. package/dist/src/duckdb/src/table/duckdb-table-utils.d.ts +13 -0
  22. package/dist/src/duckdb/src/table/duckdb-table.d.ts +7 -2
  23. package/dist/src/reducers/src/ui-state-updaters.d.ts +10 -0
  24. package/dist/src/reducers/src/vis-state-updaters.d.ts +1 -0
  25. package/dist/src/reducers/src/vis-state.d.ts +4 -0
  26. package/dist/src/utils/src/application-config.d.ts +2 -0
  27. package/dist/src/utils/src/observe-dimensions.d.ts +2 -1
  28. package/package.json +5 -3
  29. package/src/actions/dist/action-types.d.ts +2 -0
  30. package/src/actions/dist/action-types.js +2 -1
  31. package/src/actions/dist/ui-state-actions.d.ts +16 -0
  32. package/src/actions/dist/ui-state-actions.js +17 -2
  33. package/src/actions/package.json +8 -8
  34. package/src/actions/src/action-types.ts +1 -0
  35. package/src/actions/src/ui-state-actions.ts +22 -0
  36. package/src/ai-assistant/README.md +76 -0
  37. package/src/ai-assistant/dist/actions.d.ts +1 -1
  38. package/src/ai-assistant/dist/actions.js +2 -2
  39. package/src/ai-assistant/dist/components/ai-assistant-component.d.ts +2 -1
  40. package/src/ai-assistant/dist/components/ai-assistant-component.js +64 -23
  41. package/src/ai-assistant/dist/components/ai-assistant-config.js +67 -54
  42. package/src/ai-assistant/dist/constants.d.ts +3 -3
  43. package/src/ai-assistant/dist/constants.js +4 -4
  44. package/src/ai-assistant/dist/reducers/index.d.ts +1 -1
  45. package/src/ai-assistant/dist/reducers/index.js +2 -2
  46. package/src/ai-assistant/dist/tools/basemap-functions.d.ts +1 -1
  47. package/src/ai-assistant/dist/tools/basemap-functions.js +1 -1
  48. package/src/ai-assistant/dist/tools/filter-function.d.ts +1 -1
  49. package/src/ai-assistant/dist/tools/filter-function.js +9 -6
  50. package/src/ai-assistant/dist/tools/layer-creation-function.d.ts +1 -1
  51. package/src/ai-assistant/dist/tools/layer-creation-function.js +1 -1
  52. package/src/ai-assistant/dist/tools/layer-style-function.d.ts +1 -1
  53. package/src/ai-assistant/dist/tools/layer-style-function.js +1 -1
  54. package/src/ai-assistant/dist/tools/loadurl-function.d.ts +1 -1
  55. package/src/ai-assistant/dist/tools/loadurl-function.js +1 -1
  56. package/src/ai-assistant/dist/tools/utils.d.ts +73 -0
  57. package/src/ai-assistant/dist/tools/utils.js +211 -3
  58. package/src/ai-assistant/package.json +13 -9
  59. package/src/ai-assistant/src/actions.ts +2 -2
  60. package/src/ai-assistant/src/components/ai-assistant-component.tsx +56 -23
  61. package/src/ai-assistant/src/components/ai-assistant-config.tsx +63 -46
  62. package/src/ai-assistant/src/config/models.json +32 -0
  63. package/src/ai-assistant/src/constants.ts +7 -2
  64. package/src/ai-assistant/src/reducers/index.ts +2 -2
  65. package/src/ai-assistant/src/tools/basemap-functions.tsx +1 -1
  66. package/src/ai-assistant/src/tools/filter-function.tsx +11 -7
  67. package/src/ai-assistant/src/tools/layer-creation-function.tsx +1 -1
  68. package/src/ai-assistant/src/tools/layer-style-function.tsx +1 -1
  69. package/src/ai-assistant/src/tools/loadurl-function.tsx +1 -1
  70. package/src/ai-assistant/src/tools/utils.ts +212 -2
  71. package/src/cloud-providers/package.json +2 -2
  72. package/src/common-utils/package.json +3 -3
  73. package/src/components/dist/common/data-table/header-cell.js +10 -10
  74. package/src/components/dist/common/data-table/index.d.ts +1 -1
  75. package/src/components/dist/common/data-table/index.js +1 -1
  76. package/src/components/dist/common/data-table/option-dropdown.d.ts +3 -3
  77. package/src/components/dist/common/data-table/option-dropdown.js +5 -5
  78. package/src/components/dist/common/file-uploader/file-drop.d.ts +2 -2
  79. package/src/components/dist/common/file-uploader/file-drop.js +1 -1
  80. package/src/components/dist/common/portaled.js +1 -1
  81. package/src/components/dist/editor/editor.js +1 -1
  82. package/src/components/dist/kepler-gl.d.ts +5 -0
  83. package/src/components/dist/kepler-gl.js +7 -2
  84. package/src/components/dist/loading-indicator.d.ts +13 -0
  85. package/src/components/dist/loading-indicator.js +40 -0
  86. package/src/components/dist/map-container.d.ts +3 -0
  87. package/src/components/dist/map-container.js +11 -3
  88. package/src/components/dist/modals/save-map-modal.js +4 -3
  89. package/src/components/package.json +15 -15
  90. package/src/components/src/common/data-table/header-cell.tsx +5 -3
  91. package/src/components/src/common/data-table/index.tsx +1 -1
  92. package/src/components/src/common/data-table/option-dropdown.tsx +7 -7
  93. package/src/components/src/common/file-uploader/file-drop.tsx +11 -11
  94. package/src/components/src/common/portaled.tsx +12 -12
  95. package/src/components/src/editor/editor.tsx +3 -3
  96. package/src/components/src/kepler-gl.tsx +7 -2
  97. package/src/components/src/loading-indicator.tsx +49 -0
  98. package/src/components/src/map-container.tsx +19 -1
  99. package/src/components/src/modals/save-map-modal.tsx +6 -2
  100. package/src/constants/dist/default-settings.d.ts +1 -0
  101. package/src/constants/dist/default-settings.js +13 -9
  102. package/src/constants/dist/keyevent.js +1 -1
  103. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/72/80/7a7c561d7985e92aab7b9683e7baf5a0286b353a8f2609c4c71099f668d012be027929e4bbac937f9aa0c9a61be3bd4405136f582895f05aa0313c8efa42 +1 -0
  104. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/8f/f6/b66955867599392dc69ff1db64419e83c087a82c2e3d4b6418d49ac6bc80e3200dd6c86cdfd4a2cf98ce573f71a5281b86ba3df8a7210e02544f63054191 +1 -0
  105. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/bd/ba/47ea8fcb11ecd5cd47ad867052e58b1f7e0c8dc5f8918a36fe90eaf45981 +2 -0
  106. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/f0/6e/aadf3c48345aa72e7b2fb92e8c9788d04986b55caf83daa3fbd749c37c44 +2 -0
  107. package/src/constants/package.json +2 -2
  108. package/src/constants/src/default-settings.ts +11 -5
  109. package/src/constants/src/keyevent.ts +2 -2
  110. package/src/constants/umd/keplergl.min.js +1 -1
  111. package/src/deckgl-arrow-layers/package.json +1 -1
  112. package/src/deckgl-layers/package.json +4 -4
  113. package/src/duckdb/dist/components/preview-data-panel.js +2 -11
  114. package/src/duckdb/dist/components/sql-panel.js +7 -3
  115. package/src/duckdb/dist/components/tree.js +5 -4
  116. package/src/duckdb/dist/plugin.d.ts +1 -0
  117. package/src/duckdb/dist/plugin.js +9 -2
  118. package/src/duckdb/dist/processors/data-processor.js +4 -5
  119. package/src/duckdb/dist/table/duckdb-table-utils.d.ts +13 -0
  120. package/src/duckdb/dist/table/duckdb-table-utils.js +110 -0
  121. package/src/duckdb/dist/table/duckdb-table.d.ts +7 -2
  122. package/src/duckdb/dist/table/duckdb-table.js +189 -44
  123. package/src/duckdb/package.json +6 -6
  124. package/src/duckdb/src/components/preview-data-panel.tsx +0 -5
  125. package/src/duckdb/src/components/sql-panel.tsx +4 -2
  126. package/src/duckdb/src/components/tree.tsx +5 -1
  127. package/src/duckdb/src/plugin.ts +8 -1
  128. package/src/duckdb/src/processors/data-processor.ts +3 -4
  129. package/src/duckdb/src/table/duckdb-table-utils.ts +106 -0
  130. package/src/duckdb/src/table/duckdb-table.ts +134 -33
  131. package/src/effects/package.json +5 -5
  132. package/src/layers/dist/icon-layer/icon-layer.js +1 -1
  133. package/src/layers/dist/index.d.ts +3 -0
  134. package/src/layers/dist/index.js +6 -7
  135. package/src/layers/dist/point-layer/point-layer.d.ts +1 -1
  136. package/src/layers/dist/point-layer/point-layer.js +8 -2
  137. package/src/layers/package.json +9 -9
  138. package/src/layers/src/icon-layer/icon-layer.ts +8 -10
  139. package/src/layers/src/index.ts +5 -5
  140. package/src/layers/src/point-layer/point-layer.ts +6 -1
  141. package/src/localization/package.json +1 -1
  142. package/src/processors/dist/data-processor.js +2 -4
  143. package/src/processors/package.json +7 -7
  144. package/src/processors/src/data-processor.ts +1 -3
  145. package/src/reducers/dist/ui-state-updaters.d.ts +10 -0
  146. package/src/reducers/dist/ui-state-updaters.js +22 -2
  147. package/src/reducers/dist/ui-state.js +2 -2
  148. package/src/reducers/dist/vis-state-updaters.d.ts +1 -0
  149. package/src/reducers/dist/vis-state-updaters.js +21 -5
  150. package/src/reducers/dist/vis-state.d.ts +4 -0
  151. package/src/reducers/package.json +16 -16
  152. package/src/reducers/src/ui-state-updaters.ts +24 -0
  153. package/src/reducers/src/ui-state.ts +3 -1
  154. package/src/reducers/src/vis-state-updaters.ts +24 -5
  155. package/src/schemas/dist/dataset-schema.js +38 -2
  156. package/src/schemas/package.json +8 -7
  157. package/src/schemas/src/dataset-schema.ts +43 -1
  158. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/5f/aa/96c67b383dbcd2b95625113a5389c6078fd8a53e6fc73a054229709f2dac1e0a409e7117049485a569fbebf8434a319451842671398904bfe1a7f7b5991c +1 -0
  159. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/af/aa/228fbff58007b23eea5eb6cc7d2da1f0af1d8a7024129a416ea88b4df0ad7afc7aec93b09f3dd42a98f1d6a6f4dce6b53204818da85ef5becc42f928a64d +1 -0
  160. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/40/72/cac221d8459e6b743bc62ecdb370ed854b21ec30d3f7f4c06c7d1d7ffde2 +2 -0
  161. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/c1/39/f7cd1d5947ec6e5d82bfa07041271344eb02f9e67bf5823acf2f22c2d01f +2 -0
  162. package/src/styles/package.json +2 -2
  163. package/src/styles/umd/keplergl.min.js +1 -1
  164. package/src/table/dist/dataset-utils.js +10 -4
  165. package/src/table/package.json +5 -5
  166. package/src/table/src/dataset-utils.ts +7 -1
  167. package/src/tasks/package.json +2 -2
  168. package/src/types/package.json +1 -1
  169. package/src/types/reducers.d.ts +2 -0
  170. package/src/utils/dist/application-config.d.ts +2 -0
  171. package/src/utils/dist/application-config.js +4 -2
  172. package/src/utils/dist/data-utils.js +14 -2
  173. package/src/utils/dist/dataset-utils.js +5 -3
  174. package/src/utils/dist/dom-to-image.js +1 -1
  175. package/src/utils/dist/dom-utils.js +1 -1
  176. package/src/utils/dist/map-style-utils/mapbox-gl-style-editor.js +7 -1
  177. package/src/utils/dist/observe-dimensions.d.ts +2 -1
  178. package/src/utils/dist/observe-dimensions.js +10 -4
  179. package/src/utils/dist/utils.js +1 -1
  180. package/src/utils/package.json +4 -4
  181. package/src/utils/src/application-config.ts +9 -1
  182. package/src/utils/src/data-utils.ts +13 -1
  183. package/src/utils/src/dataset-utils.ts +1 -1
  184. package/src/utils/src/dom-to-image.ts +5 -6
  185. package/src/utils/src/dom-utils.ts +15 -15
  186. package/src/utils/src/map-style-utils/mapbox-gl-style-editor.ts +6 -0
  187. package/src/utils/src/observe-dimensions.ts +9 -4
  188. package/src/utils/src/utils.ts +8 -8
  189. package/umd/keplergl.min.css +1 -1
  190. package/umd/keplergl.min.js +1499 -1428
@@ -32,8 +32,8 @@ var _exportNames = {
32
32
  getS2Center: true,
33
33
  AggregationLayer: true,
34
34
  getFilterDataFunc: true,
35
- VectorTileIcon: true,
36
35
  VectorTileLayer: true,
36
+ VectorTileIcon: true,
37
37
  parseGeoJsonRawFeature: true,
38
38
  Table: true,
39
39
  getEditorLayer: true,
@@ -245,8 +245,8 @@ var _tripUtils = require("./trip-layer/trip-utils");
245
245
  var _s2GeometryLayer = _interopRequireWildcard(require("./s2-geometry-layer/s2-geometry-layer"));
246
246
  var _s2Utils = require("./s2-geometry-layer/s2-utils");
247
247
  var _aggregationLayer = _interopRequireWildcard(require("./aggregation-layer"));
248
- var _vectorTileIcon = _interopRequireDefault(require("./vector-tile/vector-tile-icon"));
249
248
  var _vectorTileLayer = _interopRequireDefault(require("./vector-tile/vector-tile-layer"));
249
+ var _vectorTileIcon = _interopRequireDefault(require("./vector-tile/vector-tile-icon"));
250
250
  var _constants = require("@kepler.gl/constants");
251
251
  var _geojsonUtils = require("./geojson-layer/geojson-utils");
252
252
  var _mapboxUtils = require("./mapbox-utils");
@@ -303,7 +303,6 @@ Object.keys(_layerUtils).forEach(function (key) {
303
303
  });
304
304
  var _LayerClasses; // SPDX-License-Identifier: MIT
305
305
  // Copyright contributors to the kepler.gl project
306
- // import {default as VectorTileLayer} from './vector-tile/vector-tile-layer';
307
306
  // base layer
308
307
  // eslint-disable-next-line prettier/prettier
309
308
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
@@ -322,10 +321,10 @@ var KeplerGlLayers = exports.KeplerGlLayers = {
322
321
  H3Layer: _h3HexagonLayer["default"],
323
322
  ScenegraphLayer: _scenegraphLayer["default"],
324
323
  TripLayer: _tripLayer["default"],
325
- S2GeometryLayer: _s2GeometryLayer["default"]
326
- // VectorTileLayer
324
+ S2GeometryLayer: _s2GeometryLayer["default"],
325
+ VectorTileLayer: _vectorTileLayer["default"]
327
326
  };
328
- var LayerClasses = exports.LayerClasses = (_LayerClasses = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_LayerClasses, _constants.LAYER_TYPES.point, _pointLayer["default"]), _constants.LAYER_TYPES.arc, _arcLayer["default"]), _constants.LAYER_TYPES.line, _lineLayer["default"]), _constants.LAYER_TYPES.grid, _gridLayer["default"]), _constants.LAYER_TYPES.hexagon, _hexagonLayer["default"]), _constants.LAYER_TYPES.geojson, _geojsonLayer["default"]), _constants.LAYER_TYPES.cluster, _clusterLayer["default"]), _constants.LAYER_TYPES.icon, _iconLayer["default"]), _constants.LAYER_TYPES.heatmap, _heatmapLayer["default"]), _constants.LAYER_TYPES.hexagonId, _h3HexagonLayer["default"]), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_LayerClasses, _constants.LAYER_TYPES['3D'], _scenegraphLayer["default"]), _constants.LAYER_TYPES.trip, _tripLayer["default"]), _constants.LAYER_TYPES.s2, _s2GeometryLayer["default"]));
327
+ var LayerClasses = exports.LayerClasses = (_LayerClasses = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_LayerClasses, _constants.LAYER_TYPES.point, _pointLayer["default"]), _constants.LAYER_TYPES.arc, _arcLayer["default"]), _constants.LAYER_TYPES.line, _lineLayer["default"]), _constants.LAYER_TYPES.grid, _gridLayer["default"]), _constants.LAYER_TYPES.hexagon, _hexagonLayer["default"]), _constants.LAYER_TYPES.geojson, _geojsonLayer["default"]), _constants.LAYER_TYPES.cluster, _clusterLayer["default"]), _constants.LAYER_TYPES.icon, _iconLayer["default"]), _constants.LAYER_TYPES.heatmap, _heatmapLayer["default"]), _constants.LAYER_TYPES.hexagonId, _h3HexagonLayer["default"]), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_LayerClasses, _constants.LAYER_TYPES['3D'], _scenegraphLayer["default"]), _constants.LAYER_TYPES.trip, _tripLayer["default"]), _constants.LAYER_TYPES.s2, _s2GeometryLayer["default"]), _constants.LAYER_TYPES['vectorTile'], _vectorTileLayer["default"]));
329
328
  var EditorLayerUtils = exports.EditorLayerUtils = {
330
329
  isDrawingActive: _editorLayerUtils.isDrawingActive,
331
330
  onClick: _editorLayerUtils.onClick,
@@ -333,4 +332,4 @@ var EditorLayerUtils = exports.EditorLayerUtils = {
333
332
  getTooltip: _editorLayerUtils.getTooltip,
334
333
  getCursor: _editorLayerUtils.getCursor
335
334
  };
336
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZUxheWVyIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfZXhwb3J0TmFtZXMiLCJleHBvcnRzIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX3BvaW50TGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2FyY0xheWVyIiwiX2xpbmVMYXllciIsIl9ncmlkTGF5ZXIiLCJfZ3JpZFV0aWxzIiwiX2hleGFnb25MYXllciIsIl9nZW9qc29uTGF5ZXIiLCJfY2x1c3RlckxheWVyIiwiX2ljb25MYXllciIsIl9oZWF0bWFwTGF5ZXIiLCJfaDNIZXhhZ29uTGF5ZXIiLCJfc2NlbmVncmFwaExheWVyIiwiX3RyaXBMYXllciIsIl90cmlwVXRpbHMiLCJfczJHZW9tZXRyeUxheWVyIiwiX3MyVXRpbHMiLCJfYWdncmVnYXRpb25MYXllciIsIl92ZWN0b3JUaWxlSWNvbiIsIl92ZWN0b3JUaWxlTGF5ZXIiLCJfY29uc3RhbnRzIiwiX2dlb2pzb25VdGlscyIsIl9tYXBib3hVdGlscyIsIl9oM0hleGFnb25MYXllcjIiLCJfdGFibGUiLCJfZWRpdG9yTGF5ZXIiLCJfc2NlbmVncmFwaExheWVySWNvbiIsIl9lZGl0b3JMYXllclV0aWxzIiwiX2xheWVyVXBkYXRlIiwiX2xheWVyVXRpbHMiLCJfTGF5ZXJDbGFzc2VzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwibiIsIl9fcHJvdG9fXyIsImEiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaSIsInNldCIsIktlcGxlckdsTGF5ZXJzIiwiUG9pbnRMYXllciIsIkFyY0xheWVyIiwiTGluZUxheWVyIiwiR3JpZExheWVyIiwiSGV4YWdvbkxheWVyIiwiR2VvanNvbkxheWVyIiwiQ2x1c3RlckxheWVyIiwiSWNvbkxheWVyIiwiSGVhdG1hcExheWVyIiwiSDNMYXllciIsIlNjZW5lZ3JhcGhMYXllciIsIlRyaXBMYXllciIsIlMyR2VvbWV0cnlMYXllciIsIkxheWVyQ2xhc3NlcyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJMQVlFUl9UWVBFUyIsInBvaW50IiwiYXJjIiwibGluZSIsImdyaWQiLCJoZXhhZ29uIiwiZ2VvanNvbiIsImNsdXN0ZXIiLCJpY29uIiwiaGVhdG1hcCIsImhleGFnb25JZCIsInRyaXAiLCJzMiIsIkVkaXRvckxheWVyVXRpbHMiLCJpc0RyYXdpbmdBY3RpdmUiLCJvbkNsaWNrIiwib25Ib3ZlciIsImdldFRvb2x0aXAiLCJnZXRDdXJzb3IiXSwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBMYXllcixcbiAgT1ZFUkxBWV9UWVBFX0NPTlNULFxuICBMQVlFUl9JRF9MRU5HVEgsXG4gIGNvbG9yTWFrZXIsXG4gIGxheWVyQ29sb3JzXG59IGZyb20gJy4vYmFzZS1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgUG9pbnRMYXllcn0gZnJvbSAnLi9wb2ludC1sYXllci9wb2ludC1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgQXJjTGF5ZXJ9IGZyb20gJy4vYXJjLWxheWVyL2FyYy1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgTGluZUxheWVyfSBmcm9tICcuL2xpbmUtbGF5ZXIvbGluZS1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgR3JpZExheWVyfSBmcm9tICcuL2dyaWQtbGF5ZXIvZ3JpZC1sYXllcic7XG5leHBvcnQge3BvaW50VG9Qb2x5Z29uR2VvfSBmcm9tICcuL2dyaWQtbGF5ZXIvZ3JpZC11dGlscyc7XG5pbXBvcnQge2RlZmF1bHQgYXMgSGV4YWdvbkxheWVyfSBmcm9tICcuL2hleGFnb24tbGF5ZXIvaGV4YWdvbi1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgR2VvanNvbkxheWVyfSBmcm9tICcuL2dlb2pzb24tbGF5ZXIvZ2VvanNvbi1sYXllcic7XG5leHBvcnQge1xuICBkZWZhdWx0RWxldmF0aW9uLFxuICBkZWZhdWx0TGluZVdpZHRoLFxuICBkZWZhdWx0UmFkaXVzLFxuICBDT0xVTU5fTU9ERV9UQUJMRVxufSBmcm9tICcuL2dlb2pzb24tbGF5ZXIvZ2VvanNvbi1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgQ2x1c3RlckxheWVyfSBmcm9tICcuL2NsdXN0ZXItbGF5ZXIvY2x1c3Rlci1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgSWNvbkxheWVyfSBmcm9tICcuL2ljb24tbGF5ZXIvaWNvbi1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgSGVhdG1hcExheWVyfSBmcm9tICcuL2hlYXRtYXAtbGF5ZXIvaGVhdG1hcC1sYXllcic7XG5leHBvcnQge01BWF9aT09NX0xFVkVMfSBmcm9tICcuL2hlYXRtYXAtbGF5ZXIvaGVhdG1hcC1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgSDNMYXllcn0gZnJvbSAnLi9oMy1oZXhhZ29uLWxheWVyL2gzLWhleGFnb24tbGF5ZXInO1xuZXhwb3J0IHtkZWZhdWx0RWxldmF0aW9uIGFzIGgzRGVmYXVsdEVsZXZhdGlvbn0gZnJvbSAnLi9oMy1oZXhhZ29uLWxheWVyL2gzLWhleGFnb24tbGF5ZXInO1xuaW1wb3J0IHtkZWZhdWx0IGFzIFNjZW5lZ3JhcGhMYXllcn0gZnJvbSAnLi9zY2VuZWdyYXBoLWxheWVyL3NjZW5lZ3JhcGgtbGF5ZXInO1xuaW1wb3J0IHtkZWZhdWx0IGFzIFRyaXBMYXllcn0gZnJvbSAnLi90cmlwLWxheWVyL3RyaXAtbGF5ZXInO1xuZXhwb3J0IHtkZWZhdWx0TGluZVdpZHRoIGFzIHRyaXBEZWZhdWx0TGluZVdpZHRofSBmcm9tICcuL3RyaXAtbGF5ZXIvdHJpcC1sYXllcic7XG5leHBvcnQge1xuICBjb29yZEhhc0xlbmd0aDQsXG4gIGlzVHJpcEdlb0pzb25GaWVsZCxcbiAgcGFyc2VUcmlwR2VvSnNvblRpbWVzdGFtcCxcbiAgZ2V0QW5pbWF0aW9uRG9tYWluRnJvbVRpbWVzdGFtcHNcbn0gZnJvbSAnLi90cmlwLWxheWVyL3RyaXAtdXRpbHMnO1xuaW1wb3J0IHtkZWZhdWx0IGFzIFMyR2VvbWV0cnlMYXllcn0gZnJvbSAnLi9zMi1nZW9tZXRyeS1sYXllci9zMi1nZW9tZXRyeS1sYXllcic7XG5leHBvcnQge2RlZmF1bHRFbGV2YXRpb24gYXMgczJEZWZhdWx0RWxldmF0aW9ufSBmcm9tICcuL3MyLWdlb21ldHJ5LWxheWVyL3MyLWdlb21ldHJ5LWxheWVyJztcbmV4cG9ydCB7Z2V0UzJDZW50ZXJ9IGZyb20gJy4vczItZ2VvbWV0cnktbGF5ZXIvczItdXRpbHMnO1xuZXhwb3J0IHtkZWZhdWx0IGFzIEFnZ3JlZ2F0aW9uTGF5ZXJ9IGZyb20gJy4vYWdncmVnYXRpb24tbGF5ZXInO1xuLy8gaW1wb3J0IHtkZWZhdWx0IGFzIFZlY3RvclRpbGVMYXllcn0gZnJvbSAnLi92ZWN0b3ItdGlsZS92ZWN0b3ItdGlsZS1sYXllcic7XG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBWZWN0b3JUaWxlSWNvbn0gZnJvbSAnLi92ZWN0b3ItdGlsZS92ZWN0b3ItdGlsZS1pY29uJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBWZWN0b3JUaWxlTGF5ZXJ9IGZyb20gJy4vdmVjdG9yLXRpbGUvdmVjdG9yLXRpbGUtbGF5ZXInO1xuXG5pbXBvcnQge0xBWUVSX1RZUEVTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5leHBvcnQge3BhcnNlR2VvSnNvblJhd0ZlYXR1cmV9IGZyb20gJy4vZ2VvanNvbi1sYXllci9nZW9qc29uLXV0aWxzJztcbi8vIGJhc2UgbGF5ZXJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxuZXhwb3J0IHR5cGUge1xuICBMYXllckJhc2VDb25maWcsXG4gIFZpc3VhbENoYW5uZWxEb21haW4sXG4gIFZpc3VhbENoYW5uZWwsXG4gIFZpc3VhbENoYW5uZWxEZXNjcmlwdGlvbixcbiAgRmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWVcbn0gZnJvbSAnLi9iYXNlLWxheWVyJztcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1sYXllcic7XG5cbi8vIGluZGl2aWR1YWwgbGF5ZXJzXG5leHBvcnQgY29uc3QgS2VwbGVyR2xMYXllcnMgPSB7XG4gIFBvaW50TGF5ZXIsXG4gIEFyY0xheWVyLFxuICBMaW5lTGF5ZXIsXG4gIEdyaWRMYXllcixcbiAgSGV4YWdvbkxheWVyLFxuICBHZW9qc29uTGF5ZXIsXG4gIENsdXN0ZXJMYXllcixcbiAgSWNvbkxheWVyLFxuICBIZWF0bWFwTGF5ZXIsXG4gIEgzTGF5ZXIsXG4gIFNjZW5lZ3JhcGhMYXllcixcbiAgVHJpcExheWVyLFxuICBTMkdlb21ldHJ5TGF5ZXJcbiAgLy8gVmVjdG9yVGlsZUxheWVyXG59O1xuXG5leHBvcnQgdHlwZSBMYXllckNsYXNzZXNUeXBlID0gdHlwZW9mIExheWVyQ2xhc3NlcztcbmV4cG9ydCBjb25zdCBMYXllckNsYXNzZXMgPSB7XG4gIFtMQVlFUl9UWVBFUy5wb2ludF06IFBvaW50TGF5ZXIsXG4gIFtMQVlFUl9UWVBFUy5hcmNdOiBBcmNMYXllcixcbiAgW0xBWUVSX1RZUEVTLmxpbmVdOiBMaW5lTGF5ZXIsXG4gIFtMQVlFUl9UWVBFUy5ncmlkXTogR3JpZExheWVyLFxuICBbTEFZRVJfVFlQRVMuaGV4YWdvbl06IEhleGFnb25MYXllcixcbiAgW0xBWUVSX1RZUEVTLmdlb2pzb25dOiBHZW9qc29uTGF5ZXIsXG4gIFtMQVlFUl9UWVBFUy5jbHVzdGVyXTogQ2x1c3RlckxheWVyLFxuICBbTEFZRVJfVFlQRVMuaWNvbl06IEljb25MYXllcixcbiAgW0xBWUVSX1RZUEVTLmhlYXRtYXBdOiBIZWF0bWFwTGF5ZXIsXG4gIFtMQVlFUl9UWVBFUy5oZXhhZ29uSWRdOiBIM0xheWVyLFxuICBbTEFZRVJfVFlQRVNbJzNEJ11dOiBTY2VuZWdyYXBoTGF5ZXIsXG4gIFtMQVlFUl9UWVBFUy50cmlwXTogVHJpcExheWVyLFxuICBbTEFZRVJfVFlQRVMuczJdOiBTMkdlb21ldHJ5TGF5ZXJcbiAgLy8gW0xBWUVSX1RZUEVTWyd2ZWN0b3JUaWxlJ11dOiBWZWN0b3JUaWxlTGF5ZXJcbn07XG5cbmV4cG9ydCAqIGZyb20gJy4vbWFwYm94LXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vaDMtaGV4YWdvbi1sYXllcic7XG5leHBvcnQge2RlZmF1bHQgYXMgVGFibGV9IGZyb20gJy4vdGFibGUnO1xuXG5leHBvcnQge2dldEVkaXRvckxheWVyfSBmcm9tICcuL2VkaXRvci1sYXllci9lZGl0b3ItbGF5ZXInO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIFNjZW5lZ3JhcGhMYXllcixcbiAgc2NlbmVncmFwaFZpc0NvbmZpZ3Ncbn0gZnJvbSAnLi9zY2VuZWdyYXBoLWxheWVyL3NjZW5lZ3JhcGgtbGF5ZXInO1xuZXhwb3J0IHtkZWZhdWx0IGFzIFNjZW5lZ3JhcGhMYXllckljb259IGZyb20gJy4vc2NlbmVncmFwaC1sYXllci9zY2VuZWdyYXBoLWxheWVyLWljb24nO1xuXG5pbXBvcnQge1xuICBpc0RyYXdpbmdBY3RpdmUsXG4gIG9uQ2xpY2ssXG4gIG9uSG92ZXIsXG4gIGdldFRvb2x0aXAsXG4gIGdldEN1cnNvclxufSBmcm9tICcuL2VkaXRvci1sYXllci9lZGl0b3ItbGF5ZXItdXRpbHMnO1xuZXhwb3J0IGNvbnN0IEVkaXRvckxheWVyVXRpbHMgPSB7XG4gIGlzRHJhd2luZ0FjdGl2ZSxcbiAgb25DbGljayxcbiAgb25Ib3ZlcixcbiAgZ2V0VG9vbHRpcCxcbiAgZ2V0Q3Vyc29yXG59O1xuXG5leHBvcnQge2dldEZpbHRlckRhdGFGdW5jfSBmcm9tICcuL2FnZ3JlZ2F0aW9uLWxheWVyJztcblxuZXhwb3J0ICogZnJvbSAnLi9sYXllci11cGRhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9sYXllci11dGlscyc7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsVUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBdURBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosVUFBQSxFQUFBSyxPQUFBLFdBQUFDLEdBQUE7RUFBQSxJQUFBQSxHQUFBLGtCQUFBQSxHQUFBO0VBQUEsSUFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBQyxZQUFBLEVBQUFKLEdBQUE7RUFBQSxJQUFBQSxHQUFBLElBQUFLLE9BQUEsSUFBQUEsT0FBQSxDQUFBTCxHQUFBLE1BQUFOLFVBQUEsQ0FBQU0sR0FBQTtFQUFBSCxNQUFBLENBQUFTLGNBQUEsQ0FBQUQsT0FBQSxFQUFBTCxHQUFBO0lBQUFPLFVBQUE7SUFBQUMsR0FBQSxXQUFBQSxJQUFBO01BQUEsT0FBQWQsVUFBQSxDQUFBTSxHQUFBO0lBQUE7RUFBQTtBQUFBO0FBaERBLElBQUFTLFdBQUEsR0FBQUMsc0JBQUEsQ0FBQWQsT0FBQTtBQUNBLElBQUFlLFNBQUEsR0FBQUQsc0JBQUEsQ0FBQWQsT0FBQTtBQUNBLElBQUFnQixVQUFBLEdBQUFGLHNCQUFBLENBQUFkLE9BQUE7QUFDQSxJQUFBaUIsVUFBQSxHQUFBSCxzQkFBQSxDQUFBZCxPQUFBO0FBQ0EsSUFBQWtCLFVBQUEsR0FBQWxCLE9B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
335
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZUxheWVyIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfZXhwb3J0TmFtZXMiLCJleHBvcnRzIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX3BvaW50TGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2FyY0xheWVyIiwiX2xpbmVMYXllciIsIl9ncmlkTGF5ZXIiLCJfZ3JpZFV0aWxzIiwiX2hleGFnb25MYXllciIsIl9nZW9qc29uTGF5ZXIiLCJfY2x1c3RlckxheWVyIiwiX2ljb25MYXllciIsIl9oZWF0bWFwTGF5ZXIiLCJfaDNIZXhhZ29uTGF5ZXIiLCJfc2NlbmVncmFwaExheWVyIiwiX3RyaXBMYXllciIsIl90cmlwVXRpbHMiLCJfczJHZW9tZXRyeUxheWVyIiwiX3MyVXRpbHMiLCJfYWdncmVnYXRpb25MYXllciIsIl92ZWN0b3JUaWxlTGF5ZXIiLCJfdmVjdG9yVGlsZUljb24iLCJfY29uc3RhbnRzIiwiX2dlb2pzb25VdGlscyIsIl9tYXBib3hVdGlscyIsIl9oM0hleGFnb25MYXllcjIiLCJfdGFibGUiLCJfZWRpdG9yTGF5ZXIiLCJfc2NlbmVncmFwaExheWVySWNvbiIsIl9lZGl0b3JMYXllclV0aWxzIiwiX2xheWVyVXBkYXRlIiwiX2xheWVyVXRpbHMiLCJfTGF5ZXJDbGFzc2VzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwibiIsIl9fcHJvdG9fXyIsImEiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaSIsInNldCIsIktlcGxlckdsTGF5ZXJzIiwiUG9pbnRMYXllciIsIkFyY0xheWVyIiwiTGluZUxheWVyIiwiR3JpZExheWVyIiwiSGV4YWdvbkxheWVyIiwiR2VvanNvbkxheWVyIiwiQ2x1c3RlckxheWVyIiwiSWNvbkxheWVyIiwiSGVhdG1hcExheWVyIiwiSDNMYXllciIsIlNjZW5lZ3JhcGhMYXllciIsIlRyaXBMYXllciIsIlMyR2VvbWV0cnlMYXllciIsIlZlY3RvclRpbGVMYXllciIsIkxheWVyQ2xhc3NlcyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJMQVlFUl9UWVBFUyIsInBvaW50IiwiYXJjIiwibGluZSIsImdyaWQiLCJoZXhhZ29uIiwiZ2VvanNvbiIsImNsdXN0ZXIiLCJpY29uIiwiaGVhdG1hcCIsImhleGFnb25JZCIsInRyaXAiLCJzMiIsIkVkaXRvckxheWVyVXRpbHMiLCJpc0RyYXdpbmdBY3RpdmUiLCJvbkNsaWNrIiwib25Ib3ZlciIsImdldFRvb2x0aXAiLCJnZXRDdXJzb3IiXSwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBMYXllcixcbiAgT1ZFUkxBWV9UWVBFX0NPTlNULFxuICBMQVlFUl9JRF9MRU5HVEgsXG4gIGNvbG9yTWFrZXIsXG4gIGxheWVyQ29sb3JzXG59IGZyb20gJy4vYmFzZS1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgUG9pbnRMYXllcn0gZnJvbSAnLi9wb2ludC1sYXllci9wb2ludC1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgQXJjTGF5ZXJ9IGZyb20gJy4vYXJjLWxheWVyL2FyYy1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgTGluZUxheWVyfSBmcm9tICcuL2xpbmUtbGF5ZXIvbGluZS1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgR3JpZExheWVyfSBmcm9tICcuL2dyaWQtbGF5ZXIvZ3JpZC1sYXllcic7XG5leHBvcnQge3BvaW50VG9Qb2x5Z29uR2VvfSBmcm9tICcuL2dyaWQtbGF5ZXIvZ3JpZC11dGlscyc7XG5pbXBvcnQge2RlZmF1bHQgYXMgSGV4YWdvbkxheWVyfSBmcm9tICcuL2hleGFnb24tbGF5ZXIvaGV4YWdvbi1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgR2VvanNvbkxheWVyfSBmcm9tICcuL2dlb2pzb24tbGF5ZXIvZ2VvanNvbi1sYXllcic7XG5leHBvcnQge1xuICBkZWZhdWx0RWxldmF0aW9uLFxuICBkZWZhdWx0TGluZVdpZHRoLFxuICBkZWZhdWx0UmFkaXVzLFxuICBDT0xVTU5fTU9ERV9UQUJMRVxufSBmcm9tICcuL2dlb2pzb24tbGF5ZXIvZ2VvanNvbi1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgQ2x1c3RlckxheWVyfSBmcm9tICcuL2NsdXN0ZXItbGF5ZXIvY2x1c3Rlci1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgSWNvbkxheWVyfSBmcm9tICcuL2ljb24tbGF5ZXIvaWNvbi1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgSGVhdG1hcExheWVyfSBmcm9tICcuL2hlYXRtYXAtbGF5ZXIvaGVhdG1hcC1sYXllcic7XG5leHBvcnQge01BWF9aT09NX0xFVkVMfSBmcm9tICcuL2hlYXRtYXAtbGF5ZXIvaGVhdG1hcC1sYXllcic7XG5pbXBvcnQge2RlZmF1bHQgYXMgSDNMYXllcn0gZnJvbSAnLi9oMy1oZXhhZ29uLWxheWVyL2gzLWhleGFnb24tbGF5ZXInO1xuZXhwb3J0IHtkZWZhdWx0RWxldmF0aW9uIGFzIGgzRGVmYXVsdEVsZXZhdGlvbn0gZnJvbSAnLi9oMy1oZXhhZ29uLWxheWVyL2gzLWhleGFnb24tbGF5ZXInO1xuaW1wb3J0IHtkZWZhdWx0IGFzIFNjZW5lZ3JhcGhMYXllcn0gZnJvbSAnLi9zY2VuZWdyYXBoLWxheWVyL3NjZW5lZ3JhcGgtbGF5ZXInO1xuaW1wb3J0IHtkZWZhdWx0IGFzIFRyaXBMYXllcn0gZnJvbSAnLi90cmlwLWxheWVyL3RyaXAtbGF5ZXInO1xuZXhwb3J0IHtkZWZhdWx0TGluZVdpZHRoIGFzIHRyaXBEZWZhdWx0TGluZVdpZHRofSBmcm9tICcuL3RyaXAtbGF5ZXIvdHJpcC1sYXllcic7XG5leHBvcnQge1xuICBjb29yZEhhc0xlbmd0aDQsXG4gIGlzVHJpcEdlb0pzb25GaWVsZCxcbiAgcGFyc2VUcmlwR2VvSnNvblRpbWVzdGFtcCxcbiAgZ2V0QW5pbWF0aW9uRG9tYWluRnJvbVRpbWVzdGFtcHNcbn0gZnJvbSAnLi90cmlwLWxheWVyL3RyaXAtdXRpbHMnO1xuaW1wb3J0IHtkZWZhdWx0IGFzIFMyR2VvbWV0cnlMYXllcn0gZnJvbSAnLi9zMi1nZW9tZXRyeS1sYXllci9zMi1nZW9tZXRyeS1sYXllcic7XG5leHBvcnQge2RlZmF1bHRFbGV2YXRpb24gYXMgczJEZWZhdWx0RWxldmF0aW9ufSBmcm9tICcuL3MyLWdlb21ldHJ5LWxheWVyL3MyLWdlb21ldHJ5LWxheWVyJztcbmV4cG9ydCB7Z2V0UzJDZW50ZXJ9IGZyb20gJy4vczItZ2VvbWV0cnktbGF5ZXIvczItdXRpbHMnO1xuZXhwb3J0IHtkZWZhdWx0IGFzIEFnZ3JlZ2F0aW9uTGF5ZXJ9IGZyb20gJy4vYWdncmVnYXRpb24tbGF5ZXInO1xuaW1wb3J0IHtkZWZhdWx0IGFzIFZlY3RvclRpbGVMYXllcn0gZnJvbSAnLi92ZWN0b3ItdGlsZS92ZWN0b3ItdGlsZS1sYXllcic7XG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBWZWN0b3JUaWxlSWNvbn0gZnJvbSAnLi92ZWN0b3ItdGlsZS92ZWN0b3ItdGlsZS1pY29uJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBWZWN0b3JUaWxlTGF5ZXJ9IGZyb20gJy4vdmVjdG9yLXRpbGUvdmVjdG9yLXRpbGUtbGF5ZXInO1xuXG5pbXBvcnQge0xBWUVSX1RZUEVTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5leHBvcnQge3BhcnNlR2VvSnNvblJhd0ZlYXR1cmV9IGZyb20gJy4vZ2VvanNvbi1sYXllci9nZW9qc29uLXV0aWxzJztcbi8vIGJhc2UgbGF5ZXJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxuZXhwb3J0IHR5cGUge1xuICBMYXllckJhc2VDb25maWcsXG4gIFZpc3VhbENoYW5uZWxEb21haW4sXG4gIFZpc3VhbENoYW5uZWwsXG4gIFZpc3VhbENoYW5uZWxEZXNjcmlwdGlvbixcbiAgRmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWVcbn0gZnJvbSAnLi9iYXNlLWxheWVyJztcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1sYXllcic7XG5cbi8vIGluZGl2aWR1YWwgbGF5ZXJzXG5leHBvcnQgY29uc3QgS2VwbGVyR2xMYXllcnMgPSB7XG4gIFBvaW50TGF5ZXIsXG4gIEFyY0xheWVyLFxuICBMaW5lTGF5ZXIsXG4gIEdyaWRMYXllcixcbiAgSGV4YWdvbkxheWVyLFxuICBHZW9qc29uTGF5ZXIsXG4gIENsdXN0ZXJMYXllcixcbiAgSWNvbkxheWVyLFxuICBIZWF0bWFwTGF5ZXIsXG4gIEgzTGF5ZXIsXG4gIFNjZW5lZ3JhcGhMYXllcixcbiAgVHJpcExheWVyLFxuICBTMkdlb21ldHJ5TGF5ZXIsXG4gIFZlY3RvclRpbGVMYXllclxufTtcblxuZXhwb3J0IHR5cGUgTGF5ZXJDbGFzc2VzVHlwZSA9IHR5cGVvZiBMYXllckNsYXNzZXM7XG5leHBvcnQgY29uc3QgTGF5ZXJDbGFzc2VzID0ge1xuICBbTEFZRVJfVFlQRVMucG9pbnRdOiBQb2ludExheWVyLFxuICBbTEFZRVJfVFlQRVMuYXJjXTogQXJjTGF5ZXIsXG4gIFtMQVlFUl9UWVBFUy5saW5lXTogTGluZUxheWVyLFxuICBbTEFZRVJfVFlQRVMuZ3JpZF06IEdyaWRMYXllcixcbiAgW0xBWUVSX1RZUEVTLmhleGFnb25dOiBIZXhhZ29uTGF5ZXIsXG4gIFtMQVlFUl9UWVBFUy5nZW9qc29uXTogR2VvanNvbkxheWVyLFxuICBbTEFZRVJfVFlQRVMuY2x1c3Rlcl06IENsdXN0ZXJMYXllcixcbiAgW0xBWUVSX1RZUEVTLmljb25dOiBJY29uTGF5ZXIsXG4gIFtMQVlFUl9UWVBFUy5oZWF0bWFwXTogSGVhdG1hcExheWVyLFxuICBbTEFZRVJfVFlQRVMuaGV4YWdvbklkXTogSDNMYXllcixcbiAgW0xBWUVSX1RZUEVTWyczRCddXTogU2NlbmVncmFwaExheWVyLFxuICBbTEFZRVJfVFlQRVMudHJpcF06IFRyaXBMYXllcixcbiAgW0xBWUVSX1RZUEVTLnMyXTogUzJHZW9tZXRyeUxheWVyLFxuICBbTEFZRVJfVFlQRVNbJ3ZlY3RvclRpbGUnXV06IFZlY3RvclRpbGVMYXllclxufTtcblxuZXhwb3J0ICogZnJvbSAnLi9tYXBib3gtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9oMy1oZXhhZ29uLWxheWVyJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBUYWJsZX0gZnJvbSAnLi90YWJsZSc7XG5cbmV4cG9ydCB7Z2V0RWRpdG9yTGF5ZXJ9IGZyb20gJy4vZWRpdG9yLWxheWVyL2VkaXRvci1sYXllcic7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgU2NlbmVncmFwaExheWVyLFxuICBzY2VuZWdyYXBoVmlzQ29uZmlnc1xufSBmcm9tICcuL3NjZW5lZ3JhcGgtbGF5ZXIvc2NlbmVncmFwaC1sYXllcic7XG5leHBvcnQge2RlZmF1bHQgYXMgU2NlbmVncmFwaExheWVySWNvbn0gZnJvbSAnLi9zY2VuZWdyYXBoLWxheWVyL3NjZW5lZ3JhcGgtbGF5ZXItaWNvbic7XG5cbmltcG9ydCB7XG4gIGlzRHJhd2luZ0FjdGl2ZSxcbiAgb25DbGljayxcbiAgb25Ib3ZlcixcbiAgZ2V0VG9vbHRpcCxcbiAgZ2V0Q3Vyc29yXG59IGZyb20gJy4vZWRpdG9yLWxheWVyL2VkaXRvci1sYXllci11dGlscyc7XG5leHBvcnQgY29uc3QgRWRpdG9yTGF5ZXJVdGlscyA9IHtcbiAgaXNEcmF3aW5nQWN0aXZlLFxuICBvbkNsaWNrLFxuICBvbkhvdmVyLFxuICBnZXRUb29sdGlwLFxuICBnZXRDdXJzb3Jcbn07XG5cbmV4cG9ydCB7Z2V0RmlsdGVyRGF0YUZ1bmN9IGZyb20gJy4vYWdncmVnYXRpb24tbGF5ZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2xheWVyLXVwZGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xheWVyLXV0aWxzJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxVQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUF1REFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixVQUFBLEVBQUFLLE9BQUEsV0FBQUMsR0FBQTtFQUFBLElBQUFBLEdBQUEsa0JBQUFBLEdBQUE7RUFBQSxJQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFDLFlBQUEsRUFBQUosR0FBQTtFQUFBLElBQUFBLEdBQUEsSUFBQUssT0FBQSxJQUFBQSxPQUFBLENBQUFMLEdBQUEsTUFBQU4sVUFBQSxDQUFBTSxHQUFBO0VBQUFILE1BQUEsQ0FBQVMsY0FBQSxDQUFBRCxPQUFBLEVBQUFMLEdBQUE7SUFBQU8sVUFBQTtJQUFBQyxHQUFBLFdBQUFBLElBQUE7TUFBQSxPQUFBZCxVQUFBLENBQUFNLEdBQUE7SUFBQTtFQUFBO0FBQUE7QUFoREEsSUFBQVMsV0FBQSxHQUFBQyxzQkFBQSxDQUFBZCxPQUFBO0FBQ0EsSUFBQWUsU0FBQSxHQUFBRCxzQkFBQSxDQUFBZCxPQUFBO0FBQ0EsSUFBQWdCLFVBQUEsR0FBQUYsc0JBQUEsQ0FBQWQsT0FBQTtBQUNBLElBQUFpQixVQUFBLEdBQUFILHNCQUFBLENBQUFkLE9BQUE7QUFDQSxJQUFBa0IsVUFB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
@@ -165,7 +165,7 @@ export default class PointLayer extends Layer {
165
165
  };
166
166
  };
167
167
  setInitialLayerConfig(dataset: any): this;
168
- static findDefaultLayerProps({ fieldPairs }: KeplerTable): {
168
+ static findDefaultLayerProps({ fieldPairs, type }: KeplerTable): {
169
169
  props: {
170
170
  label: string;
171
171
  color?: RGBColor | undefined;
@@ -496,8 +496,14 @@ var PointLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
496
496
  key: "findDefaultLayerProps",
497
497
  value: function findDefaultLayerProps(_ref5) {
498
498
  var _ref5$fieldPairs = _ref5.fieldPairs,
499
- fieldPairs = _ref5$fieldPairs === void 0 ? [] : _ref5$fieldPairs;
499
+ fieldPairs = _ref5$fieldPairs === void 0 ? [] : _ref5$fieldPairs,
500
+ type = _ref5.type;
500
501
  var props = [];
502
+ if (type === _constants.DatasetType.VECTOR_TILE) {
503
+ return {
504
+ props: props
505
+ };
506
+ }
501
507
 
502
508
  // Make layer for each pair
503
509
  fieldPairs.forEach(function (pair) {
@@ -525,4 +531,4 @@ var PointLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
525
531
  }
526
532
  }]);
527
533
  }(_baseLayer["default"]);
528
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXh0ZW5zaW9ucyIsInJlcXVpcmUiLCJfbGF5ZXJzIiwiX2RlY2tnbEFycm93TGF5ZXJzIiwiX2RlY2tnbExheWVycyIsIl9iYXNlTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3V0aWxzIiwiX3BvaW50TGF5ZXJJY29uIiwiX2NvbnN0YW50cyIsIl9sYXllclRleHRMYWJlbCIsIl9sYXllclV0aWxzIiwiX2dlb2pzb25VdGlscyIsIl9jYWxsU3VwZXIiLCJ0IiwibyIsImUiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiX3N1cGVyUHJvcEdldCIsInIiLCJwIiwiX2dldDIiLCJvd25LZXlzIiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsInBvaW50UG9zQWNjZXNzb3IiLCJleHBvcnRzIiwiX3JlZiIsImxhdCIsImxuZyIsImFsdGl0dWRlIiwiZGMiLCJkIiwidmFsdWVBdCIsImluZGV4IiwiZmllbGRJZHgiLCJnZW9qc29uUG9zQWNjZXNzb3IiLCJfcmVmMiIsImdlb2pzb24iLCJnZW9hcnJvd1Bvc0FjY2Vzc29yIiwiX3JlZjMiLCJnZW9hcnJvdyIsImRhdGFDb250YWluZXIiLCJyb3ciLCJnZXQiLCJDT0xVTU5fTU9ERV9QT0lOVFMiLCJDT0xVTU5fTU9ERV9HRU9KU09OIiwiQ09MVU1OX01PREVfR0VPQVJST1ciLCJwb2ludFJlcXVpcmVkQ29sdW1ucyIsInBvaW50T3B0aW9uYWxDb2x1bW5zIiwiZ2VvanNvblJlcXVpcmVkQ29sdW1ucyIsImdlb2Fycm93UmVxdWlyZWRDb2x1bW5zIiwiU1VQUE9SVEVEX0NPTFVNTl9NT0RFUyIsImtleSIsImxhYmVsIiwicmVxdWlyZWRDb2x1bW5zIiwib3B0aW9uYWxDb2x1bW5zIiwiREVGQVVMVF9DT0xVTU5fTU9ERSIsImJydXNoaW5nRXh0ZW5zaW9uIiwiQnJ1c2hpbmdFeHRlbnNpb24iLCJhcnJvd0NQVUZpbHRlckV4dGVuc2lvbiIsIkZpbHRlckFycm93RXh0ZW5zaW9uIiwicHVzaFBvaW50UG9zaXRpb24iLCJkYXRhIiwicG9zIiwibmVpZ2hib3JzIiwiZXZlcnkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInBvc2l0aW9uIiwicG9pbnRWaXNDb25maWdzIiwicmFkaXVzIiwiZml4ZWRSYWRpdXMiLCJvcGFjaXR5Iiwib3V0bGluZSIsInRoaWNrbmVzcyIsInN0cm9rZUNvbG9yIiwiY29sb3JSYW5nZSIsInN0cm9rZUNvbG9yUmFuZ2UiLCJyYWRpdXNSYW5nZSIsImZpbGxlZCIsIkxBWUVSX1ZJU19DT05GSUdTIiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsInByb3BlcnR5IiwiYmlsbGJvYXJkIiwiYWxsb3dIb3ZlciIsInNob3dOZWlnaGJvck9uSG92ZXIiLCJzaG93SGlnaGxpZ2h0Q29sb3IiLCJQb2ludExheWVyIiwiX0xheWVyIiwicHJvcHMiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJ1bmRlZmluZWQiLCJyZWdpc3RlclZpc0NvbmZpZyIsImdldFBvc2l0aW9uQWNjZXNzb3IiLCJjb25maWciLCJjb2x1bW5Nb2RlIiwiY29sdW1ucyIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwiUG9pbnRMYXllckljb24iLCJkZWZhdWx0UG9pbnRDb2x1bW5QYWlycyIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJjb2xvciIsImFjY2Vzc29yIiwiY29uZGl0aW9uIiwidmlzQ29uZmlnIiwiZmllbGQiLCJzY2FsZSIsImRvbWFpbiIsInJhbmdlIiwiY2hhbm5lbFNjYWxlVHlwZSIsIkNIQU5ORUxfU0NBTEVTIiwic2l6ZSIsImZpeGVkIiwidmFsdWUiLCJzZXRJbml0aWFsTGF5ZXJDb25maWciLCJkYXRhc2V0IiwibnVtUm93cyIsImRlZmF1bHRDb2xvckZpZWxkIiwiZmluZERlZmF1bHRDb2xvckZpZWxkIiwidXBkYXRlTGF5ZXJDb25maWciLCJjb2xvckZpZWxkIiwidXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsIiwiZ2V0RGVmYXVsdExheWVyQ29uZmlnIiwiX3Byb3BzJGNvbHVtbk1vZGUiLCJkZWZhdWx0TGF5ZXJDb25maWciLCJzdHJva2VDb2xvckZpZWxkIiwic3Ryb2tlQ29sb3JEb21haW4iLCJzdHJva2VDb2xvclNjYWxlIiwiY29sb3JVSSIsIkRFRkFVTFRfQ09MT1JfVUkiLCJjYWxjdWxhdGVEYXRhQXR0cmlidXRlIiwiX3JlZjQiLCJnZXRQb3NpdGlvbiIsIl90aGlzMiIsImZpbHRlcmVkSW5kZXgiLCJBcnJvd0RhdGFDb250YWluZXIiLCJnZXRGaWx0ZXJlZEluZGV4IiwiZmlsdGVyZWRJbmRleFRyaWdnZXIiLCJnZW9BcnJvd1ZlY3RvciIsImdldENvbHVtbiIsImNyZWF0ZUdlb0Fycm93UG9pbnRWZWN0b3IiLCJnZXRUYWJsZSIsIl9sb29wIiwiaSIsIl90aGlzMiRjb25maWckY29sdW1ucyIsIkFycmF5IiwiaXNBcnJheSIsImNvb3JkaW5hdGVzIiwiZGF0YVRvRmVhdHVyZSIsImNvb3JkIiwiZm9ybWF0TGF5ZXJEYXRhIiwiZGF0YXNldHMiLCJvbGRMYXllckRhdGEiLCJfdGhpczMiLCJkYXRhSWQiLCJ0ZXh0TGFiZWwiLCJfZGF0YXNldHMkdGhpcyRjb25maWciLCJncHVGaWx0ZXIiLCJfdGhpcyR1cGRhdGVEYXRhIiwidXBkYXRlRGF0YSIsInRyaWdnZXJDaGFuZ2VkIiwidGV4dExhYmVscyIsImZvcm1hdFRleHRMYWJlbERhdGEiLCJhY2Nlc3NvcnMiLCJnZXRBdHRyaWJ1dGVBY2Nlc3NvcnMiLCJpc0ZpbHRlcmVkQWNjZXNzb3IiLCJnZXRGaWx0ZXJWYWx1ZSIsImZpbHRlclZhbHVlQWNjZXNzb3IiLCJnZXRGaWx0ZXJlZCIsInVwZGF0ZUxheWVyTWV0YSIsImdldEZlYXR1cmUiLCJnZXRHZW9qc29uUG9pbnREYXRhTWFwcyIsImJvdW5kc0Zyb21NZXRhZGF0YSIsImdldEJvdW5kc0Zyb21BcnJvd01ldGFkYXRhIiwidXBkYXRlTWV0YSIsImJvdW5kcyIsImdldFBvaW50c0JvdW5kcyIsInJlbmRlckxheWVyIiwib3B0cyIsIl90aGlzJGNvbmZpZyRjb2x1bW5zJCIsIm9iamVjdEhvdmVyZWQiLCJtYXBTdGF0ZSIsImludGVyYWN0aW9uQ29uZmlnIiwic2l6ZUZpZWxkIiwicmFkaXVzU2NhbGUiLCJnZXRSYWRpdXNTY2FsZUJ5Wm9vbSIsImxheWVyUHJvcHMiLCJzdHJva2VkIiwibGluZVdpZHRoU2NhbGUiLCJyYWRpdXNNYXhQaXhlbHMiLCJ1cGRhdGVUcmlnZ2VycyIsImZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMiLCJnZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMiLCJ1c2VBcnJvd0xheWVyIiwiZGVmYXVsdExheWVyUHJvcHMiLCJnZXREZWZhdWx0RGVja0xheWVyUHJvcHMiLCJicnVzaGluZ1Byb3BzIiwiZ2V0QnJ1c2hpbmdFeHRlbnNpb25Qcm9wcyIsImdldFBpeGVsT2Zmc2V0IiwiZ2V0VGV4dE9mZnNldEJ5UmFkaXVzIiwiZ2V0UmFkaXVzIiwiZXh0ZW5zaW9ucyIsInNoYXJlZFByb3BzIiwiZmlsdGVyUmFuZ2UiLCJ2aXNpYmxlIiwiaG92ZXJlZE9iamVjdCIsImhhc0hvdmVyZWRPYmplY3QiLCJfdGhpcyRjb25maWckdmlzQ29uZmkiLCJuZWlnaGJvcnNEYXRhIiwiZ2V0TmVpZ2hib3JzIiwiU2NhdHRlcnBsb3RMYXllckNsYXNzIiwiU2NhdHRlcnBsb3RMYXllciIsImRlY2tMYXllckRhdGEiLCJHZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXIiLCJwYXJhbWV0ZXJzIiwiZGVwdGhUZXN0IiwibGluZVdpZHRoVW5pdHMiLCJwaWNrYWJsZSIsImF1dG9IaWdobGlnaHQiLCJnZXREZWZhdWx0SG92ZXJMYXllclByb3BzIiwiZ2V0TGluZUNvbG9yIiwiaGlnaGxpZ2h0Q29sb3IiLCJnZXRGaWxsQ29sb3IiLCJyZW5kZXJUZXh0TGFiZWxMYXllciIsIm9iamVjdEluZm8iLCJpc0xheWVySG92ZXJlZEZyb21BcnJvdyIsImlkIiwiZ2V0SG92ZXJEYXRhIiwib2JqZWN0IiwiZmllbGRzIiwiYW5pbWF0aW9uQ29uZmlnIiwiaG92ZXJJbmZvIiwiZmluZERlZmF1bHRMYXllclByb3BzIiwiX3JlZjUiLCJfcmVmNSRmaWVsZFBhaXJzIiwiZmllbGRQYWlycyIsInBhaXIiLCJsYXRGaWVsZCIsInByb3AiLCJkZWZhdWx0TmFtZSIsIkRFRkFVTFRfTEFZRVJfQ09MT1IiLCJoZXhUb1JnYiIsImlzVmlzaWJsZSIsImFzc2lnblBvaW50UGFpclRvTGF5ZXJDb2x1bW4iLCJMYXllciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wb2ludC1sYXllci9wb2ludC1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuXG5pbXBvcnQge0JydXNoaW5nRXh0ZW5zaW9ufSBmcm9tICdAZGVjay5nbC9leHRlbnNpb25zJztcbmltcG9ydCB7U2NhdHRlcnBsb3RMYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuaW1wb3J0IHtHZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvZGVja2dsLWFycm93LWxheWVycyc7XG5pbXBvcnQge0ZpbHRlckFycm93RXh0ZW5zaW9ufSBmcm9tICdAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMnO1xuXG5pbXBvcnQgTGF5ZXIsIHtcbiAgTGF5ZXJCYXNlQ29uZmlnLFxuICBMYXllckJhc2VDb25maWdQYXJ0aWFsLFxuICBMYXllckNvbG9yQ29uZmlnLFxuICBMYXllclNpemVDb25maWcsXG4gIExheWVyU3Ryb2tlQ29sb3JDb25maWdcbn0gZnJvbSAnLi4vYmFzZS1sYXllcic7XG5pbXBvcnQge1xuICBoZXhUb1JnYixcbiAgZmluZERlZmF1bHRDb2xvckZpZWxkLFxuICBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICBBcnJvd0RhdGFDb250YWluZXJcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2RlZmF1bHQgYXMgS2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IFBvaW50TGF5ZXJJY29uIGZyb20gJy4vcG9pbnQtbGF5ZXItaWNvbic7XG5pbXBvcnQge1xuICBMQVlFUl9WSVNfQ09ORklHUyxcbiAgREVGQVVMVF9MQVlFUl9DT0xPUixcbiAgQ0hBTk5FTF9TQ0FMRVMsXG4gIERFRkFVTFRfQ09MT1JfVUlcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtnZXRUZXh0T2Zmc2V0QnlSYWRpdXMsIGZvcm1hdFRleHRMYWJlbERhdGF9IGZyb20gJy4uL2xheWVyLXRleHQtbGFiZWwnO1xuaW1wb3J0IHtcbiAgYXNzaWduUG9pbnRQYWlyVG9MYXllckNvbHVtbixcbiAgaXNMYXllckhvdmVyZWRGcm9tQXJyb3csXG4gIGdldEJvdW5kc0Zyb21BcnJvd01ldGFkYXRhLFxuICBjcmVhdGVHZW9BcnJvd1BvaW50VmVjdG9yLFxuICBnZXRGaWx0ZXJlZEluZGV4LFxuICBnZXROZWlnaGJvcnNcbn0gZnJvbSAnLi4vbGF5ZXItdXRpbHMnO1xuaW1wb3J0IHtnZXRHZW9qc29uUG9pbnREYXRhTWFwcywgR2VvanNvblBvaW50RGF0YU1hcHN9IGZyb20gJy4uL2dlb2pzb24tbGF5ZXIvZ2VvanNvbi11dGlscyc7XG5pbXBvcnQge1xuICBDb2xvclJhbmdlLFxuICBNZXJnZSxcbiAgUkdCQ29sb3IsXG4gIFZpc0NvbmZpZ0Jvb2xlYW4sXG4gIFZpc0NvbmZpZ0NvbG9yUmFuZ2UsXG4gIFZpc0NvbmZpZ0NvbG9yU2VsZWN0LFxuICBWaXNDb25maWdOdW1iZXIsXG4gIFZpc0NvbmZpZ1JhbmdlLFxuICBMYXllckNvbHVtbixcbiAgRmllbGQsXG4gIEFuaW1hdGlvbkNvbmZpZ1xufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgUG9pbnRMYXllclZpc0NvbmZpZ1NldHRpbmdzID0ge1xuICByYWRpdXM6IFZpc0NvbmZpZ051bWJlcjtcbiAgZml4ZWRSYWRpdXM6IFZpc0NvbmZpZ0Jvb2xlYW47XG4gIG9wYWNpdHk6IFZpc0NvbmZpZ051bWJlcjtcbiAgb3V0bGluZTogVmlzQ29uZmlnQm9vbGVhbjtcbiAgdGhpY2tuZXNzOiBWaXNDb25maWdOdW1iZXI7XG4gIHN0cm9rZUNvbG9yOiBWaXNDb25maWdDb2xvclNlbGVjdDtcbiAgY29sb3JSYW5nZTogVmlzQ29uZmlnQ29sb3JSYW5nZTtcbiAgc3Ryb2tlQ29sb3JSYW5nZTogVmlzQ29uZmlnQ29sb3JSYW5nZTtcbiAgcmFkaXVzUmFuZ2U6IFZpc0NvbmZpZ1JhbmdlO1xuICBmaWxsZWQ6IFZpc0NvbmZpZ0Jvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBQb2ludExheWVyQ29sdW1uc0NvbmZpZyA9IHtcbiAgbGF0OiBMYXllckNvbHVtbjtcbiAgbG5nOiBMYXllckNvbHVtbjtcbiAgYWx0aXR1ZGU/OiBMYXllckNvbHVtbjtcbiAgbmVpZ2hib3JzPzogTGF5ZXJDb2x1bW47XG4gIGdlb2pzb246IExheWVyQ29sdW1uO1xuICBnZW9hcnJvdzogTGF5ZXJDb2x1bW47XG59O1xuXG5leHBvcnQgdHlwZSBQb2ludExheWVyVmlzQ29uZmlnID0ge1xuICByYWRpdXM6IG51bWJlcjtcbiAgZml4ZWRSYWRpdXM6IGJvb2xlYW47XG4gIG9wYWNpdHk6IG51bWJlcjtcbiAgb3V0bGluZTogYm9vbGVhbjtcbiAgdGhpY2tuZXNzOiBudW1iZXI7XG4gIHN0cm9rZUNvbG9yOiBSR0JDb2xvcjtcbiAgY29sb3JSYW5nZTogQ29sb3JSYW5nZTtcbiAgc3Ryb2tlQ29sb3JSYW5nZTogQ29sb3JSYW5nZTtcbiAgcmFkaXVzUmFuZ2U6IFtudW1iZXIsIG51bWJlcl07XG4gIGZpbGxlZDogYm9vbGVhbjtcbiAgYmlsbGJvYXJkOiBib29sZWFuO1xuICBhbGxvd0hvdmVyOiBib29sZWFuO1xuICBzaG93TmVpZ2hib3JPbkhvdmVyOiBib29sZWFuO1xuICBzaG93SGlnaGxpZ2h0Q29sb3I6IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgUG9pbnRMYXllclZpc3VhbENoYW5uZWxDb25maWcgPSBMYXllckNvbG9yQ29uZmlnICZcbiAgTGF5ZXJTaXplQ29uZmlnICZcbiAgTGF5ZXJTdHJva2VDb2xvckNvbmZpZztcbmV4cG9ydCB0eXBlIFBvaW50TGF5ZXJDb25maWcgPSBNZXJnZTxcbiAgTGF5ZXJCYXNlQ29uZmlnLFxuICB7Y29sdW1uczogUG9pbnRMYXllckNvbHVtbnNDb25maWc7IHZpc0NvbmZpZzogUG9pbnRMYXllclZpc0NvbmZpZ31cbj4gJlxuICBQb2ludExheWVyVmlzdWFsQ2hhbm5lbENvbmZpZztcblxuZXhwb3J0IHR5cGUgUG9pbnRMYXllckRhdGEgPSB7XG4gIHBvc2l0aW9uOiBudW1iZXJbXTtcbiAgaW5kZXg6IG51bWJlcjtcbiAgbmVpZ2hib3JzOiBhbnlbXTtcbn07XG5cbmV4cG9ydCBjb25zdCBwb2ludFBvc0FjY2Vzc29yID1cbiAgKHtsYXQsIGxuZywgYWx0aXR1ZGV9OiBQb2ludExheWVyQ29sdW1uc0NvbmZpZykgPT5cbiAgKGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PlxuICAoZDoge2luZGV4OiBudW1iZXJ9KSA9PlxuICAgIFtcbiAgICAgIGRjLnZhbHVlQXQoZC5pbmRleCwgbG5nLmZpZWxkSWR4KSxcbiAgICAgIGRjLnZhbHVlQXQoZC5pbmRleCwgbGF0LmZpZWxkSWR4KSxcbiAgICAgIGFsdGl0dWRlICYmIGFsdGl0dWRlLmZpZWxkSWR4ID4gLTEgPyBkYy52YWx1ZUF0KGQuaW5kZXgsIGFsdGl0dWRlLmZpZWxkSWR4KSA6IDBcbiAgICBdO1xuXG5leHBvcnQgY29uc3QgZ2VvanNvblBvc0FjY2Vzc29yID1cbiAgKHtnZW9qc29ufToge2dlb2pzb246IExheWVyQ29sdW1ufSkgPT5cbiAgZCA9PlxuICAgIGRbZ2VvanNvbi5maWVsZElkeF07XG5cbmV4cG9ydCBjb25zdCBnZW9hcnJvd1Bvc0FjY2Vzc29yID1cbiAgKHtnZW9hcnJvd306IFBvaW50TGF5ZXJDb2x1bW5zQ29uZmlnKSA9PlxuICAoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSkgPT5cbiAgKGQ6IHtpbmRleDogbnVtYmVyfSkgPT4ge1xuICAgIGNvbnN0IHJvdyA9IGRhdGFDb250YWluZXIudmFsdWVBdChkLmluZGV4LCBnZW9hcnJvdy5maWVsZElkeCk7XG4gICAgcmV0dXJuIFtyb3cuZ2V0KDApLCByb3cuZ2V0KDEpLCAwXTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IENPTFVNTl9NT0RFX1BPSU5UUyA9ICdwb2ludHMnO1xuZXhwb3J0IGNvbnN0IENPTFVNTl9NT0RFX0dFT0pTT04gPSAnZ2VvanNvbic7XG5leHBvcnQgY29uc3QgQ09MVU1OX01PREVfR0VPQVJST1cgPSAnZ2VvYXJyb3cnO1xuXG5leHBvcnQgY29uc3QgcG9pbnRSZXF1aXJlZENvbHVtbnM6IFsnbGF0JywgJ2xuZyddID0gWydsYXQnLCAnbG5nJ107XG5leHBvcnQgY29uc3QgcG9pbnRPcHRpb25hbENvbHVtbnM6IFsnYWx0aXR1ZGUnLCAnbmVpZ2hib3JzJ10gPSBbJ2FsdGl0dWRlJywgJ25laWdoYm9ycyddO1xuZXhwb3J0IGNvbnN0IGdlb2pzb25SZXF1aXJlZENvbHVtbnM6IFsnZ2VvanNvbiddID0gWydnZW9qc29uJ107XG5leHBvcnQgY29uc3QgZ2VvYXJyb3dSZXF1aXJlZENvbHVtbnM6IFsnZ2VvYXJyb3cnXSA9IFsnZ2VvYXJyb3cnXTtcblxuY29uc3QgU1VQUE9SVEVEX0NPTFVNTl9NT0RFUyA9IFtcbiAge1xuICAgIGtleTogQ09MVU1OX01PREVfUE9JTlRTLFxuICAgIGxhYmVsOiAnUG9pbnQgQ29sdW1ucycsXG4gICAgcmVxdWlyZWRDb2x1bW5zOiBwb2ludFJlcXVpcmVkQ29sdW1ucyxcbiAgICBvcHRpb25hbENvbHVtbnM6IHBvaW50T3B0aW9uYWxDb2x1bW5zXG4gIH0sXG4gIHtcbiAgICBrZXk6IENPTFVNTl9NT0RFX0dFT0pTT04sXG4gICAgbGFiZWw6ICdHZW9KU09OIEZlYXR1cmUnLFxuICAgIHJlcXVpcmVkQ29sdW1uczogZ2VvanNvblJlcXVpcmVkQ29sdW1uc1xuICB9LFxuICB7XG4gICAga2V5OiBDT0xVTU5fTU9ERV9HRU9BUlJPVyxcbiAgICBsYWJlbDogJ0dlb2Fycm93IFBvaW50cycsXG4gICAgcmVxdWlyZWRDb2x1bW5zOiBnZW9hcnJvd1JlcXVpcmVkQ29sdW1uc1xuICB9XG5dO1xuY29uc3QgREVGQVVMVF9DT0xVTU5fTU9ERSA9IENPTFVNTl9NT0RFX1BPSU5UUztcblxuY29uc3QgYnJ1c2hpbmdFeHRlbnNpb24gPSBuZXcgQnJ1c2hpbmdFeHRlbnNpb24oKTtcbmNvbnN0IGFycm93Q1BVRmlsdGVyRXh0ZW5zaW9uID0gbmV3IEZpbHRlckFycm93RXh0ZW5zaW9uKCk7XG5cbmZ1bmN0aW9uIHB1c2hQb2ludFBvc2l0aW9uKGRhdGE6IGFueVtdLCBwb3M6IG51bWJlcltdLCBpbmRleDogbnVtYmVyLCBuZWlnaGJvcnM/OiBudW1iZXJbXSkge1xuICBpZiAocG9zLmV2ZXJ5KE51bWJlci5pc0Zpbml0ZSkpIHtcbiAgICBkYXRhLnB1c2goe1xuICAgICAgcG9zaXRpb246IHBvcyxcbiAgICAgIC8vIGluZGV4IGlzIGltcG9ydGFudCBmb3IgZmlsdGVyXG4gICAgICBpbmRleCxcbiAgICAgIC4uLihuZWlnaGJvcnMgPyB7bmVpZ2hib3JzfSA6IHt9KVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBwb2ludFZpc0NvbmZpZ3M6IHtcbiAgcmFkaXVzOiAncmFkaXVzJztcbiAgZml4ZWRSYWRpdXM6ICdmaXhlZFJhZGl1cyc7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JztcbiAgb3V0bGluZTogJ291dGxpbmUnO1xuICB0aGlja25lc3M6ICd0aGlja25lc3MnO1xuICBzdHJva2VDb2xvcjogJ3N0cm9rZUNvbG9yJztcbiAgY29sb3JSYW5nZTogJ2NvbG9yUmFuZ2UnO1xuICBzdHJva2VDb2xvclJhbmdlOiAnc3Ryb2tlQ29sb3JSYW5nZSc7XG4gIHJhZGl1c1JhbmdlOiAncmFkaXVzUmFuZ2UnO1xuICBmaWxsZWQ6IFZpc0NvbmZpZ0Jvb2xlYW47XG4gIGJpbGxib2FyZDogJ2JpbGxib2FyZCc7XG4gIGFsbG93SG92ZXI6ICdhbGxvd0hvdmVyJztcbiAgc2hvd05laWdoYm9yT25Ib3ZlcjogJ3Nob3dOZWlnaGJvck9uSG92ZXInO1xuICBzaG93SGlnaGxpZ2h0Q29sb3I6ICdzaG93SGlnaGxpZ2h0Q29sb3InO1xufSA9IHtcbiAgcmFkaXVzOiAncmFkaXVzJyxcbiAgZml4ZWRSYWRpdXM6ICdmaXhlZFJhZGl1cycsXG4gIG9wYWNpdHk6ICdvcGFjaXR5JyxcbiAgb3V0bGluZTogJ291dGxpbmUnLFxuICB0aGlja25lc3M6ICd0aGlja25lc3MnLFxuICBzdHJva2VDb2xvcjogJ3N0cm9rZUNvbG9yJyxcbiAgY29sb3JSYW5nZTogJ2NvbG9yUmFuZ2UnLFxuICBzdHJva2VDb2xvclJhbmdlOiAnc3Ryb2tlQ29sb3JSYW5nZScsXG4gIHJhZGl1c1JhbmdlOiAncmFkaXVzUmFuZ2UnLFxuICBmaWxsZWQ6IHtcbiAgICAuLi5MQVlFUl9WSVNfQ09ORklHUy5maWxsZWQsXG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIGxhYmVsOiAnbGF5ZXIuZmlsbENvbG9yJyxcbiAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgcHJvcGVydHk6ICdmaWxsZWQnXG4gIH0sXG4gIGJpbGxib2FyZDogJ2JpbGxib2FyZCcsXG4gIGFsbG93SG92ZXI6ICdhbGxvd0hvdmVyJyxcbiAgc2hvd05laWdoYm9yT25Ib3ZlcjogJ3Nob3dOZWlnaGJvck9uSG92ZXInLFxuICBzaG93SGlnaGxpZ2h0Q29sb3I6ICdzaG93SGlnaGxpZ2h0Q29sb3InXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb2ludExheWVyIGV4dGVuZHMgTGF5ZXIge1xuICBkZWNsYXJlIGNvbmZpZzogUG9pbnRMYXllckNvbmZpZztcbiAgZGVjbGFyZSB2aXNDb25maWdTZXR0aW5nczogUG9pbnRMYXllclZpc0NvbmZpZ1NldHRpbmdzO1xuICBkYXRhVG9GZWF0dXJlOiBHZW9qc29uUG9pbnREYXRhTWFwcyA9IFtdO1xuXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UgfCBudWxsID0gbnVsbDtcbiAgZ2VvQXJyb3dWZWN0b3I6IGFycm93LlZlY3RvciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvKlxuICAgKiBDUFUgZmlsdGVyaW5nIGFuIGFycm93IHRhYmxlIGJ5IHZhbHVlcyBhbmQgYXNzZW1ibGluZyBhIHBhcnRpYWwgY29weSBvZiB0aGUgcmF3IHRhYmxlIGlzIGV4cGVuc2l2ZVxuICAgKiBzbyB3ZSB3aWxsIHVzZSBmaWx0ZXJlZEluZGV4IHRvIGNyZWF0ZSBhbiBhdHRyaWJ1dGUgZS5nLiBmaWx0ZXJlZEluZGV4IFswfDFdIGZvciBHUFUgZmlsdGVyaW5nXG4gICAqIGluIGRlY2suZ2wgbGF5ZXIsIHNlZTogRmlsdGVyQXJyb3dFeHRlbnNpb24gaW4gQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzLlxuICAgKiBOb3RlIHRoYXQgdGhpcyBhcHByb2FjaCBjYW4gY3JlYXRlIHZpc2libGUgbGFncyBpbiBjYXNlIG9mIGEgbG90IG9mIGRpc2NhcnRlZCBnZW9tZXRyeS5cbiAgICovXG4gIGZpbHRlcmVkSW5kZXg6IFVpbnQ4Q2xhbXBlZEFycmF5IHwgbnVsbCA9IG51bGw7XG4gIGZpbHRlcmVkSW5kZXhUcmlnZ2VyOiBudW1iZXJbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyhwb2ludFZpc0NvbmZpZ3MpO1xuICAgIHRoaXMuZ2V0UG9zaXRpb25BY2Nlc3NvciA9IChkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiB7XG4gICAgICBzd2l0Y2ggKHRoaXMuY29uZmlnLmNvbHVtbk1vZGUpIHtcbiAgICAgICAgY2FzZSBDT0xVTU5fTU9ERV9HRU9BUlJPVzpcbiAgICAgICAgICByZXR1cm4gZ2VvYXJyb3dQb3NBY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zKShkYXRhQ29udGFpbmVyKTtcbiAgICAgICAgY2FzZSBDT0xVTU5fTU9ERV9HRU9KU09OOlxuICAgICAgICAgIHJldHVybiBnZW9qc29uUG9zQWNjZXNzb3IodGhpcy5jb25maWcuY29sdW1ucyk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgLy8gQ09MVU1OX01PREVfUE9JTlRTXG4gICAgICAgICAgcmV0dXJuIHBvaW50UG9zQWNjZXNzb3IodGhpcy5jb25maWcuY29sdW1ucykoZGF0YUNvbnRhaW5lcik7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGdldCB0eXBlKCk6ICdwb2ludCcge1xuICAgIHJldHVybiAncG9pbnQnO1xuICB9XG5cbiAgZ2V0IGlzQWdncmVnYXRlZCgpOiBmYWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpIHtcbiAgICByZXR1cm4gUG9pbnRMYXllckljb247XG4gIH1cblxuICBnZXQgb3B0aW9uYWxDb2x1bW5zKCkge1xuICAgIHJldHVybiBwb2ludE9wdGlvbmFsQ29sdW1ucztcbiAgfVxuXG4gIGdldCBjb2x1bW5QYWlycygpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9pbnRDb2x1bW5QYWlycztcbiAgfVxuXG4gIGdldCBzdXBwb3J0ZWRDb2x1bW5Nb2RlcygpIHtcbiAgICByZXR1cm4gU1VQUE9SVEVEX0NPTFVNTl9NT0RFUztcbiAgfVxuXG4gIGdldCBub25lTGF5ZXJEYXRhQWZmZWN0aW5nUHJvcHMoKSB7XG4gICAgcmV0dXJuIFsuLi5zdXBlci5ub25lTGF5ZXJEYXRhQWZmZWN0aW5nUHJvcHMsICdyYWRpdXMnXTtcbiAgfVxuXG4gIGdldCB2aXN1YWxDaGFubmVscygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IHtcbiAgICAgICAgLi4uc3VwZXIudmlzdWFsQ2hhbm5lbHMuY29sb3IsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0RmlsbENvbG9yJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5maWxsZWQsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy5jb2xvclxuICAgICAgfSxcbiAgICAgIHN0cm9rZUNvbG9yOiB7XG4gICAgICAgIHByb3BlcnR5OiAnc3Ryb2tlQ29sb3InLFxuICAgICAgICBrZXk6ICdzdHJva2VDb2xvcicsXG4gICAgICAgIGZpZWxkOiAnc3Ryb2tlQ29sb3JGaWVsZCcsXG4gICAgICAgIHNjYWxlOiAnc3Ryb2tlQ29sb3JTY2FsZScsXG4gICAgICAgIGRvbWFpbjogJ3N0cm9rZUNvbG9yRG9tYWluJyxcbiAgICAgICAgcmFuZ2U6ICdzdHJva2VDb2xvclJhbmdlJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuY29sb3IsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0TGluZUNvbG9yJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5vdXRsaW5lLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLnN0cm9rZUNvbG9yIHx8IGNvbmZpZy5jb2xvclxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgLi4uc3VwZXIudmlzdWFsQ2hhbm5lbHMuc2l6ZSxcbiAgICAgICAgcHJvcGVydHk6ICdyYWRpdXMnLFxuICAgICAgICByYW5nZTogJ3JhZGl1c1JhbmdlJyxcbiAgICAgICAgZml4ZWQ6ICdmaXhlZFJhZGl1cycsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6ICdyYWRpdXMnLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldFJhZGl1cycsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzZXRJbml0aWFsTGF5ZXJDb25maWcoZGF0YXNldCkge1xuICAgIGlmICghZGF0YXNldC5kYXRhQ29udGFpbmVyLm51bVJvd3MoKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRDb2xvckZpZWxkID0gZmluZERlZmF1bHRDb2xvckZpZWxkKGRhdGFzZXQpO1xuXG4gICAgaWYgKGRlZmF1bHRDb2xvckZpZWxkKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgY29sb3JGaWVsZDogZGVmYXVsdENvbG9yRmllbGRcbiAgICAgIH0pO1xuICAgICAgdGhpcy51cGRhdGVMYXllclZpc3VhbENoYW5uZWwoZGF0YXNldCwgJ2NvbG9yJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdGF0aWMgZmluZERlZmF1bHRMYXllclByb3BzKHtmaWVsZFBhaXJzID0gW119OiBLZXBsZXJUYWJsZSkge1xuICAgIGNvbnN0IHByb3BzOiB7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgY29sb3I/OiBSR0JDb2xvcjtcbiAgICAgIGlzVmlzaWJsZT86IGJvb2xlYW47XG4gICAgICBjb2x1bW5zPzogUG9pbnRMYXllckNvbHVtbnNDb25maWc7XG4gICAgfVtdID0gW107XG5cbiAgICAvLyBNYWtlIGxheWVyIGZvciBlYWNoIHBhaXJcbiAgICBmaWVsZFBhaXJzLmZvckVhY2gocGFpciA9PiB7XG4gICAgICBjb25zdCBsYXRGaWVsZCA9IHBhaXIucGFpci5sYXQ7XG5cbiAgICAgIGNvbnN0IHByb3A6IHtcbiAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgY29sb3I/OiBSR0JDb2xvcjtcbiAgICAgICAgaXNWaXNpYmxlPzogYm9vbGVhbjtcbiAgICAgICAgY29sdW1ucz86IFBvaW50TGF5ZXJDb2x1bW5zQ29uZmlnO1xuICAgICAgfSA9IHtcbiAgICAgICAgbGFiZWw6IHBhaXIuZGVmYXVsdE5hbWUgfHwgJ1BvaW50J1xuICAgICAgfTtcblxuICAgICAgLy8gZGVmYXVsdCBsYXllciBjb2xvciBmb3IgYmVnaW50cmlwIGFuZCBkcm9wb2ZmIHBvaW50XG4gICAgICBpZiAobGF0RmllbGQudmFsdWUgaW4gREVGQVVMVF9MQVlFUl9DT0xPUikge1xuICAgICAgICBwcm9wLmNvbG9yID0gaGV4VG9SZ2IoREVGQVVMVF9MQVlFUl9DT0xPUltsYXRGaWVsZC52YWx1ZV0pO1xuICAgICAgfVxuXG4gICAgICAvLyBzZXQgdGhlIGZpcnN0IGxheWVyIHRvIGJlIHZpc2libGVcbiAgICAgIGlmIChwcm9wcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcHJvcC5pc1Zpc2libGUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBsb2dpY2FsbHkgc2VwYXJhdGUgZ2VvanNvbiBjb2x1bW4gdHlwZT9cbiAgICAgIHByb3AuY29sdW1ucyA9IGFzc2lnblBvaW50UGFpclRvTGF5ZXJDb2x1bW4ocGFpciwgdHJ1ZSk7XG5cbiAgICAgIHByb3BzLnB1c2gocHJvcCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge3Byb3BzfTtcbiAgfVxuXG4gIGdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wczogTGF5ZXJCYXNlQ29uZmlnUGFydGlhbCkge1xuICAgIGNvbnN0IGRlZmF1bHRMYXllckNvbmZpZyA9IHN1cGVyLmdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wcyA/PyB7fSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRlZmF1bHRMYXllckNvbmZpZyxcblxuICAgICAgY29sdW1uTW9kZTogcHJvcHM/LmNvbHVtbk1vZGUgPz8gREVGQVVMVF9DT0xVTU5fTU9ERSxcblxuICAgICAgLy8gYWRkIHN0cm9rZSBjb2xvciB2aXN1YWwgY2hhbm5lbFxuICAgICAgc3Ryb2tlQ29sb3JGaWVsZDogbnVsbCxcbiAgICAgIHN0cm9rZUNvbG9yRG9tYWluOiBbMCwgMV0sXG4gICAgICBzdHJva2VDb2xvclNjYWxlOiAncXVhbnRpbGUnLFxuICAgICAgY29sb3JVSToge1xuICAgICAgICAuLi5kZWZhdWx0TGF5ZXJDb25maWcuY29sb3JVSSxcbiAgICAgICAgc3Ryb2tlQ29sb3JSYW5nZTogREVGQVVMVF9DT0xPUl9VSVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBjYWxjdWxhdGVEYXRhQXR0cmlidXRlKHtmaWx0ZXJlZEluZGV4LCBkYXRhQ29udGFpbmVyfTogS2VwbGVyVGFibGUsIGdldFBvc2l0aW9uKSB7XG4gICAgY29uc3Qge2NvbHVtbk1vZGV9ID0gdGhpcy5jb25maWc7XG5cbiAgICAvLyAxKSBDT0xVTU5fTU9ERV9HRU9BUlJPVyAtIHdoZW4gd2UgaGF2ZSBhIGdlb2Fycm93IHBvaW50IGNvbHVtblxuICAgIC8vIDIpIENPTFVNTl9NT0RFX1BPSU5UUyArIEFycm93RGF0YUNvbnRhaW5lciA+IGNyZWF0ZSBnZW9hcnJvdyBwb2ludCBjb2x1bW4gb24gdGhlIGZseVxuICAgIGlmIChcbiAgICAgIGRhdGFDb250YWluZXIgaW5zdGFuY2VvZiBBcnJvd0RhdGFDb250YWluZXIgJiZcbiAgICAgIChjb2x1bW5Nb2RlID09PSBDT0xVTU5fTU9ERV9HRU9BUlJPVyB8fCBjb2x1bW5Nb2RlID09PSBDT0xVTU5fTU9ERV9QT0lOVFMpXG4gICAgKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSW5kZXggPSBnZXRGaWx0ZXJlZEluZGV4KFxuICAgICAgICBkYXRhQ29udGFpbmVyLm51bVJvd3MoKSxcbiAgICAgICAgZmlsdGVyZWRJbmRleCxcbiAgICAgICAgdGhpcy5maWx0ZXJlZEluZGV4XG4gICAgICApO1xuICAgICAgdGhpcy5maWx0ZXJlZEluZGV4VHJpZ2dlciA9IGZpbHRlcmVkSW5kZXg7XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZy5jb2x1bW5Nb2RlID09PSBDT0xVTU5fTU9ERV9HRU9BUlJPVykge1xuICAgICAgICB0aGlzLmdlb0Fycm93VmVjdG9yID0gZGF0YUNvbnRhaW5lci5nZXRDb2x1bW4odGhpcy5jb25maWcuY29sdW1ucy5nZW9hcnJvdy5maWVsZElkeCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBnZW5lcmF0ZSBhIGNvbHVtbiBjb21wYXRpYmxlIHdpdGggZ2VvYXJyb3cgcG9pbnRcbiAgICAgICAgdGhpcy5nZW9BcnJvd1ZlY3RvciA9IGNyZWF0ZUdlb0Fycm93UG9pbnRWZWN0b3IoZGF0YUNvbnRhaW5lciwgZ2V0UG9zaXRpb24pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGF0YUNvbnRhaW5lci5nZXRUYWJsZSgpO1xuICAgIH1cblxuICAgIC8vIHdlIGRvbid0IG5lZWQgdGhlc2UgaW4gbm9uLUFycm93IG1vZGVzIGF0bS5cbiAgICB0aGlzLmdlb0Fycm93VmVjdG9yID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZmlsdGVyZWRJbmRleCA9IG51bGw7XG5cbiAgICBjb25zdCBkYXRhOiBQb2ludExheWVyRGF0YVtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlcmVkSW5kZXgubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZmlsdGVyZWRJbmRleFtpXTtcbiAgICAgIGxldCBuZWlnaGJvcnM7XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZy5jb2x1bW5Nb2RlID09PSBDT0xVTU5fTU9ERV9QT0lOVFMpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmNvbHVtbnMubmVpZ2hib3JzPy52YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IHtmaWVsZElkeH0gPSB0aGlzLmNvbmZpZy5jb2x1bW5zLm5laWdoYm9ycztcbiAgICAgICAgICBuZWlnaGJvcnMgPSBBcnJheS5pc0FycmF5KGRhdGFDb250YWluZXIudmFsdWVBdChpbmRleCwgZmllbGRJZHgpKVxuICAgICAgICAgICAgPyBkYXRhQ29udGFpbmVyLnZhbHVlQXQoaW5kZXgsIGZpZWxkSWR4KVxuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb3MgPSBnZXRQb3NpdGlvbih7aW5kZXh9KTtcblxuICAgICAgICAvLyBpZiBkb2Vzbid0IGhhdmUgcG9pbnQgbGF0IG9yIGxuZywgZG8gbm90IGFkZCB0aGUgcG9pbnRcbiAgICAgICAgLy8gZGVjay5nbCBjYW4ndCBoYW5kbGUgcG9zaXRpb24gPSBudWxsXG4gICAgICAgIHB1c2hQb2ludFBvc2l0aW9uKGRhdGEsIHBvcywgaW5kZXgsIG5laWdoYm9ycyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBDT0xVTU5fTU9ERV9HRU9KU09OIG1vZGUgLSBwb2ludCBmcm9tIGdlb2pzb24gY29vcmRpbmF0ZXNcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSB0aGlzLmRhdGFUb0ZlYXR1cmVbaV07XG4gICAgICAgIC8vIGlmIG11bHRpIHBvaW50c1xuICAgICAgICBpZiAoY29vcmRpbmF0ZXMgJiYgQXJyYXkuaXNBcnJheShjb29yZGluYXRlc1swXSkpIHtcbiAgICAgICAgICBjb29yZGluYXRlcy5mb3JFYWNoKGNvb3JkID0+IHtcbiAgICAgICAgICAgIHB1c2hQb2ludFBvc2l0aW9uKGRhdGEsIGNvb3JkLCBpbmRleCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29vcmRpbmF0ZXMgJiYgTnVtYmVyLmlzRmluaXRlKGNvb3JkaW5hdGVzWzBdKSkge1xuICAgICAgICAgIHB1c2hQb2ludFBvc2l0aW9uKGRhdGEsIGNvb3JkaW5hdGVzIGFzIG51bWJlcltdLCBpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmRhdGFJZCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCB7dGV4dExhYmVsfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IHtncHVGaWx0ZXIsIGRhdGFDb250YWluZXJ9ID0gZGF0YXNldHNbdGhpcy5jb25maWcuZGF0YUlkXTtcbiAgICBjb25zdCB7ZGF0YSwgdHJpZ2dlckNoYW5nZWR9ID0gdGhpcy51cGRhdGVEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuICAgIGNvbnN0IGdldFBvc2l0aW9uID0gZCA9PiBkLnBvc2l0aW9uO1xuXG4gICAgLy8gZ2V0IGFsbCBkaXN0aW5jdCBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0IGxhYmVsc1xuICAgIGNvbnN0IHRleHRMYWJlbHMgPSBmb3JtYXRUZXh0TGFiZWxEYXRhKHtcbiAgICAgIHRleHRMYWJlbCxcbiAgICAgIHRyaWdnZXJDaGFuZ2VkLFxuICAgICAgb2xkTGF5ZXJEYXRhLFxuICAgICAgZGF0YSxcbiAgICAgIGRhdGFDb250YWluZXIsXG4gICAgICBmaWx0ZXJlZEluZGV4OiB0aGlzLmZpbHRlcmVkSW5kZXhcbiAgICB9KTtcblxuICAgIGNvbnN0IGFjY2Vzc29ycyA9IHRoaXMuZ2V0QXR0cmlidXRlQWNjZXNzb3JzKHtkYXRhQ29udGFpbmVyfSk7XG5cbiAgICBjb25zdCBpc0ZpbHRlcmVkQWNjZXNzb3IgPSAoZGF0YToge2luZGV4OiBudW1iZXJ9KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJlZEluZGV4ID8gdGhpcy5maWx0ZXJlZEluZGV4W2RhdGEuaW5kZXhdIDogMTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBnZXRQb3NpdGlvbixcbiAgICAgIGdldEZpbHRlclZhbHVlOiBncHVGaWx0ZXIuZmlsdGVyVmFsdWVBY2Nlc3NvcihkYXRhQ29udGFpbmVyKSgpLFxuICAgICAgZ2V0RmlsdGVyZWQ6IGlzRmlsdGVyZWRBY2Nlc3NvcixcbiAgICAgIHRleHRMYWJlbHMsXG4gICAgICAuLi5hY2Nlc3NvcnNcbiAgICB9O1xuICB9XG4gIC8qIGVzbGludC1lbmFibGUgY29tcGxleGl0eSAqL1xuXG4gIHVwZGF0ZUxheWVyTWV0YShkYXRhc2V0OiBLZXBsZXJUYWJsZSkge1xuICAgIGNvbnN0IHtkYXRhQ29udGFpbmVyfSA9IGRhdGFzZXQ7XG4gICAgdGhpcy5kYXRhQ29udGFpbmVyID0gZGF0YUNvbnRhaW5lcjtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5jb2x1bW5Nb2RlID09PSBDT0xVTU5fTU9ERV9HRU9KU09OKSB7XG4gICAgICBjb25zdCBnZXRGZWF0dXJlID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKCk7XG4gICAgICB0aGlzLmRhdGFUb0ZlYXR1cmUgPSBnZXRHZW9qc29uUG9pbnREYXRhTWFwcyhkYXRhQ29udGFpbmVyLCBnZXRGZWF0dXJlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLmNvbHVtbk1vZGUgPT09IENPTFVNTl9NT0RFX0dFT0FSUk9XKSB7XG4gICAgICBjb25zdCBib3VuZHNGcm9tTWV0YWRhdGEgPSBnZXRCb3VuZHNGcm9tQXJyb3dNZXRhZGF0YShcbiAgICAgICAgdGhpcy5jb25maWcuY29sdW1ucy5nZW9hcnJvdyxcbiAgICAgICAgZGF0YUNvbnRhaW5lciBhcyBBcnJvd0RhdGFDb250YWluZXJcbiAgICAgICk7XG4gICAgICBpZiAoYm91bmRzRnJvbU1ldGFkYXRhKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTWV0YSh7Ym91bmRzOiBib3VuZHNGcm9tTWV0YWRhdGF9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGdldFBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuICAgICAgICBjb25zdCBib3VuZHMgPSB0aGlzLmdldFBvaW50c0JvdW5kcyhkYXRhQ29udGFpbmVyLCBnZXRQb3NpdGlvbik7XG4gICAgICAgIHRoaXMudXBkYXRlTWV0YSh7Ym91bmRzfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGdldFBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuICAgICAgY29uc3QgYm91bmRzID0gdGhpcy5nZXRQb2ludHNCb3VuZHMoZGF0YUNvbnRhaW5lciwgZ2V0UG9zaXRpb24pO1xuICAgICAgdGhpcy51cGRhdGVNZXRhKHtib3VuZHN9KTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICByZW5kZXJMYXllcihvcHRzKSB7XG4gICAgY29uc3Qge2RhdGEsIGdwdUZpbHRlciwgb2JqZWN0SG92ZXJlZCwgbWFwU3RhdGUsIGludGVyYWN0aW9uQ29uZmlnLCBkYXRhc2V0fSA9IG9wdHM7XG5cbiAgICAvLyBpZiBubyBmaWVsZCBzaXplIGlzIGRlZmluZWQgd2UgbmVlZCB0byBwYXNzIGZpeGVkIHJhZGl1cyA9IGZhbHNlXG4gICAgY29uc3QgZml4ZWRSYWRpdXMgPSB0aGlzLmNvbmZpZy52aXNDb25maWcuZml4ZWRSYWRpdXMgJiYgQm9vbGVhbih0aGlzLmNvbmZpZy5zaXplRmllbGQpO1xuICAgIGNvbnN0IHJhZGl1c1NjYWxlID0gdGhpcy5nZXRSYWRpdXNTY2FsZUJ5Wm9vbShtYXBTdGF0ZSwgZml4ZWRSYWRpdXMpO1xuXG4gICAgY29uc3QgbGF5ZXJQcm9wcyA9IHtcbiAgICAgIHN0cm9rZWQ6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5vdXRsaW5lLFxuICAgICAgZmlsbGVkOiB0aGlzLmNvbmZpZy52aXNDb25maWcuZmlsbGVkLFxuICAgICAgbGluZVdpZHRoU2NhbGU6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy50aGlja25lc3MsXG4gICAgICBiaWxsYm9hcmQ6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5iaWxsYm9hcmQsXG4gICAgICByYWRpdXNTY2FsZSxcbiAgICAgIC4uLih0aGlzLmNvbmZpZy52aXNDb25maWcuZml4ZWRSYWRpdXMgPyB7fSA6IHtyYWRpdXNNYXhQaXhlbHM6IDUwMH0pXG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge1xuICAgICAgZ2V0UG9zaXRpb246IHRoaXMuY29uZmlnLmNvbHVtbnMsXG4gICAgICBnZXRGaWx0ZXJWYWx1ZTogZ3B1RmlsdGVyLmZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMsXG4gICAgICBnZXRGaWx0ZXJlZDogdGhpcy5maWx0ZXJlZEluZGV4VHJpZ2dlcixcbiAgICAgIC4uLnRoaXMuZ2V0VmlzdWFsQ2hhbm5lbFVwZGF0ZVRyaWdnZXJzKClcbiAgICB9O1xuXG4gICAgY29uc3QgdXNlQXJyb3dMYXllciA9IEJvb2xlYW4odGhpcy5nZW9BcnJvd1ZlY3Rvcik7XG5cbiAgICBjb25zdCBkZWZhdWx0TGF5ZXJQcm9wcyA9IHRoaXMuZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKG9wdHMpO1xuICAgIGNvbnN0IGJydXNoaW5nUHJvcHMgPSB0aGlzLmdldEJydXNoaW5nRXh0ZW5zaW9uUHJvcHMoaW50ZXJhY3Rpb25Db25maWcpO1xuICAgIGNvbnN0IGdldFBpeGVsT2Zmc2V0ID0gZ2V0VGV4dE9mZnNldEJ5UmFkaXVzKHJhZGl1c1NjYWxlLCBkYXRhLmdldFJhZGl1cywgbWFwU3RhdGUpO1xuICAgIGNvbnN0IGV4dGVuc2lvbnMgPSBbXG4gICAgICAuLi5kZWZhdWx0TGF5ZXJQcm9wcy5leHRlbnNpb25zLFxuICAgICAgYnJ1c2hpbmdFeHRlbnNpb24sXG4gICAgICAuLi4odXNlQXJyb3dMYXllciA/IFthcnJvd0NQVUZpbHRlckV4dGVuc2lvbl0gOiBbXSlcbiAgICBdO1xuXG4gICAgY29uc3Qgc2hhcmVkUHJvcHMgPSB7XG4gICAgICBnZXRGaWx0ZXJWYWx1ZTogZGF0YS5nZXRGaWx0ZXJWYWx1ZSxcbiAgICAgIGV4dGVuc2lvbnMsXG4gICAgICBmaWx0ZXJSYW5nZTogZGVmYXVsdExheWVyUHJvcHMuZmlsdGVyUmFuZ2UsXG4gICAgICB2aXNpYmxlOiBkZWZhdWx0TGF5ZXJQcm9wcy52aXNpYmxlLFxuICAgICAgLi4uYnJ1c2hpbmdQcm9wc1xuICAgIH07XG4gICAgY29uc3QgaG92ZXJlZE9iamVjdCA9IHRoaXMuaGFzSG92ZXJlZE9iamVjdChvYmplY3RIb3ZlcmVkKTtcbiAgICBjb25zdCB7c2hvd05laWdoYm9yT25Ib3ZlciwgYWxsb3dIb3Zlcn0gPSB0aGlzLmNvbmZpZy52aXNDb25maWc7XG4gICAgbGV0IG5laWdoYm9yc0RhdGE6IFJldHVyblR5cGU8dHlwZW9mIGdldE5laWdoYm9ycz4gPSBbXTtcbiAgICBpZiAoYWxsb3dIb3ZlciAmJiBzaG93TmVpZ2hib3JPbkhvdmVyICYmIGhvdmVyZWRPYmplY3QpIHtcbiAgICAgIC8vIGZpbmQgbmVpZ2hib3JzXG4gICAgICBuZWlnaGJvcnNEYXRhID0gZ2V0TmVpZ2hib3JzKFxuICAgICAgICB0aGlzLmNvbmZpZy5jb2x1bW5zLm5laWdoYm9ycyxcbiAgICAgICAgZGF0YXNldC5kYXRhQ29udGFpbmVyLFxuICAgICAgICBob3ZlcmVkT2JqZWN0LmluZGV4LFxuICAgICAgICB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YXNldC5kYXRhQ29udGFpbmVyKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgU2NhdHRlcnBsb3RMYXllckNsYXNzOiB0eXBlb2YgU2NhdHRlcnBsb3RMYXllciB8IHR5cGVvZiBHZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXIgPVxuICAgICAgU2NhdHRlcnBsb3RMYXllcjtcbiAgICBsZXQgZGVja0xheWVyRGF0YSA9IGRhdGEuZGF0YTtcbiAgICBsZXQgZ2V0UG9zaXRpb24gPSBkYXRhLmdldFBvc2l0aW9uO1xuICAgIGlmICh1c2VBcnJvd0xheWVyKSB7XG4gICAgICBTY2F0dGVycGxvdExheWVyQ2xhc3MgPSBHZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXI7XG4gICAgICBkZWNrTGF5ZXJEYXRhID0gZGF0YXNldC5kYXRhQ29udGFpbmVyLmdldFRhYmxlKCk7XG4gICAgICBnZXRQb3NpdGlvbiA9IHRoaXMuZ2VvQXJyb3dWZWN0b3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIG5ldyBTY2F0dGVycGxvdExheWVyQ2xhc3Moe1xuICAgICAgICAuLi5kZWZhdWx0TGF5ZXJQcm9wcyxcbiAgICAgICAgLi4uYnJ1c2hpbmdQcm9wcyxcbiAgICAgICAgLi4ubGF5ZXJQcm9wcyxcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgZGF0YTogZGVja0xheWVyRGF0YSxcbiAgICAgICAgZ2V0UG9zaXRpb24sXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAvLyBjaXJjbGVzIHdpbGwgYmUgZmxhdCBvbiB0aGUgbWFwIHdoZW4gdGhlIGFsdGl0dWRlIGNvbHVtbiBpcyBub3QgdXNlZFxuICAgICAgICAgIGRlcHRoVGVzdDogKHRoaXMuY29uZmlnLmNvbHVtbnMuYWx0aXR1ZGU/LmZpZWxkSWR4IGFzIG51bWJlcikgPiAtMVxuICAgICAgICB9LFxuICAgICAgICBsaW5lV2lkdGhVbml0czogJ3BpeGVscycsXG4gICAgICAgIHVwZGF0ZVRyaWdnZXJzLFxuICAgICAgICBleHRlbnNpb25zLFxuICAgICAgICBvcGFjaXR5OiBob3ZlcmVkT2JqZWN0ICYmIHNob3dOZWlnaGJvck9uSG92ZXIgPyAwLjIgOiB0aGlzLmNvbmZpZy52aXNDb25maWcub3BhY2l0eSxcbiAgICAgICAgcGlja2FibGU6IGFsbG93SG92ZXIsXG4gICAgICAgIGF1dG9IaWdobGlnaHQ6IGZhbHNlXG4gICAgICB9KSxcbiAgICAgIC8vIGhvdmVyIGxheWVyXG4gICAgICAuLi4oaG92ZXJlZE9iamVjdFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIG5ldyBTY2F0dGVycGxvdExheWVyKHtcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0SG92ZXJMYXllclByb3BzKCksXG4gICAgICAgICAgICAgIC4uLmxheWVyUHJvcHMsXG4gICAgICAgICAgICAgIHZpc2libGU6IGRlZmF1bHRMYXllclByb3BzLnZpc2libGUsXG4gICAgICAgICAgICAgIGRhdGE6IFsuLi5uZWlnaGJvcnNEYXRhLCBob3ZlcmVkT2JqZWN0XSxcbiAgICAgICAgICAgICAgZ2V0TGluZUNvbG9yOiB0aGlzLmNvbmZpZy52aXNDb25maWcuc2hvd0hpZ2hsaWdodENvbG9yXG4gICAgICAgICAgICAgICAgPyB0aGlzLmNvbmZpZy5oaWdobGlnaHRDb2xvclxuICAgICAgICAgICAgICAgIDogZGF0YS5nZXRMaW5lQ29sb3IsXG4gICAgICAgICAgICAgIGdldEZpbGxDb2xvcjogdGhpcy5jb25maWcudmlzQ29uZmlnLnNob3dIaWdobGlnaHRDb2xvclxuICAgICAgICAgICAgICAgID8gdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3JcbiAgICAgICAgICAgICAgICA6IGRhdGEuZ2V0RmlsbENvbG9yLFxuICAgICAgICAgICAgICBnZXRSYWRpdXM6IGRhdGEuZ2V0UmFkaXVzLFxuICAgICAgICAgICAgICBnZXRQb3NpdGlvbjogZGF0YS5nZXRQb3NpdGlvblxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLy8gdGV4dCBsYWJlbCBsYXllclxuICAgICAgLi4udGhpcy5yZW5kZXJUZXh0TGFiZWxMYXllcihcbiAgICAgICAge1xuICAgICAgICAgIGdldFBvc2l0aW9uLFxuICAgICAgICAgIHNoYXJlZFByb3BzLFxuICAgICAgICAgIGdldFBpeGVsT2Zmc2V0LFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXJzLFxuICAgICAgICAgIGdldEZpbHRlcmVkOiBkYXRhLmdldEZpbHRlcmVkXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuZ2VvQXJyb3dWZWN0b3JcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgICAgICAgZGF0YTogey4uLm9wdHMuZGF0YSwgZ2V0UG9zaXRpb259XG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiBvcHRzXG4gICAgICApXG4gICAgXTtcbiAgfVxuXG4gIGhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SW5mbzoge2luZGV4OiBudW1iZXJ9KSB7XG4gICAgaWYgKFxuICAgICAgaXNMYXllckhvdmVyZWRGcm9tQXJyb3cob2JqZWN0SW5mbywgdGhpcy5pZCkgJiZcbiAgICAgIG9iamVjdEluZm8uaW5kZXggPj0gMCAmJlxuICAgICAgdGhpcy5kYXRhQ29udGFpbmVyXG4gICAgKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbmRleDogb2JqZWN0SW5mby5pbmRleCxcbiAgICAgICAgcG9zaXRpb246IHRoaXMuZ2V0UG9zaXRpb25BY2Nlc3Nvcih0aGlzLmRhdGFDb250YWluZXIpKG9iamVjdEluZm8pXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5oYXNIb3ZlcmVkT2JqZWN0KG9iamVjdEluZm8pO1xuICB9XG5cbiAgZ2V0SG92ZXJEYXRhKFxuICAgIG9iamVjdDoge2luZGV4OiBudW1iZXJ9IHwgYXJyb3cuU3RydWN0Um93IHwgdW5kZWZpbmVkLFxuICAgIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gICAgZmllbGRzOiBGaWVsZFtdLFxuICAgIGFuaW1hdGlvbkNvbmZpZzogQW5pbWF0aW9uQ29uZmlnLFxuICAgIGhvdmVySW5mbzoge2luZGV4OiBudW1iZXJ9XG4gICkge1xuICAgIC8vIGZvciBhcnJvdyBmb3JtYXQsIGBvYmplY3RgIGlzIHRoZSBBcnJvdyByb3cgb2JqZWN0IFByb3h5LFxuICAgIC8vIGFuZCBpbmRleCBpcyBwYXNzZWQgaW4gYGhvdmVySW5mb2AuXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdlb0Fycm93VmVjdG9yID8gaG92ZXJJbmZvPy5pbmRleCA6IChvYmplY3QgYXMge2luZGV4OiBudW1iZXJ9KS5pbmRleDtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgcmV0dXJuIGRhdGFDb250YWluZXIucm93KGluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBS0EsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsa0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGFBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUwsT0FBQTtBQU9BLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQU9BLElBQUFPLGVBQUEsR0FBQUYsc0JBQUEsQ0FBQUwsT0FBQTtBQUNBLElBQUFRLFVBQUEsR0FBQVIsT0FBQTtBQU1BLElBQUFTLGVBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLFdBQUEsR0FBQVYsT0FBQTtBQVFBLElBQUFXLGFBQUEsR0FBQVgsT0FBQTtBQUE2RixTQUFBWSxXQUFBQyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxXQUFBRCxDQUFBLE9BQUFFLGdCQUFBLGFBQUFGLENBQUEsT0FBQUcsMkJBQUEsYUFBQUosQ0FBQSxFQUFBSyx5QkFBQSxLQUFBQyxPQUFBLENBQUFDLFNBQUEsQ0FBQU4sQ0FBQSxFQUFBQyxDQUFBLFlBQUFDLGdCQUFBLGFBQUFILENBQUEsRUFBQVEsV0FBQSxJQUFBUCxDQUFBLENBQUFRLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBRSxDQUFBO0FBQUEsU0FBQUcsMEJBQUEsY0FBQUwsQ0FBQSxJQUFBVSxPQUFB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
534
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXh0ZW5zaW9ucyIsInJlcXVpcmUiLCJfbGF5ZXJzIiwiX2RlY2tnbEFycm93TGF5ZXJzIiwiX2RlY2tnbExheWVycyIsIl9iYXNlTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3V0aWxzIiwiX3BvaW50TGF5ZXJJY29uIiwiX2NvbnN0YW50cyIsIl9sYXllclRleHRMYWJlbCIsIl9sYXllclV0aWxzIiwiX2dlb2pzb25VdGlscyIsIl9jYWxsU3VwZXIiLCJ0IiwibyIsImUiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiX3N1cGVyUHJvcEdldCIsInIiLCJwIiwiX2dldDIiLCJvd25LZXlzIiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsInBvaW50UG9zQWNjZXNzb3IiLCJleHBvcnRzIiwiX3JlZiIsImxhdCIsImxuZyIsImFsdGl0dWRlIiwiZGMiLCJkIiwidmFsdWVBdCIsImluZGV4IiwiZmllbGRJZHgiLCJnZW9qc29uUG9zQWNjZXNzb3IiLCJfcmVmMiIsImdlb2pzb24iLCJnZW9hcnJvd1Bvc0FjY2Vzc29yIiwiX3JlZjMiLCJnZW9hcnJvdyIsImRhdGFDb250YWluZXIiLCJyb3ciLCJnZXQiLCJDT0xVTU5fTU9ERV9QT0lOVFMiLCJDT0xVTU5fTU9ERV9HRU9KU09OIiwiQ09MVU1OX01PREVfR0VPQVJST1ciLCJwb2ludFJlcXVpcmVkQ29sdW1ucyIsInBvaW50T3B0aW9uYWxDb2x1bW5zIiwiZ2VvanNvblJlcXVpcmVkQ29sdW1ucyIsImdlb2Fycm93UmVxdWlyZWRDb2x1bW5zIiwiU1VQUE9SVEVEX0NPTFVNTl9NT0RFUyIsImtleSIsImxhYmVsIiwicmVxdWlyZWRDb2x1bW5zIiwib3B0aW9uYWxDb2x1bW5zIiwiREVGQVVMVF9DT0xVTU5fTU9ERSIsImJydXNoaW5nRXh0ZW5zaW9uIiwiQnJ1c2hpbmdFeHRlbnNpb24iLCJhcnJvd0NQVUZpbHRlckV4dGVuc2lvbiIsIkZpbHRlckFycm93RXh0ZW5zaW9uIiwicHVzaFBvaW50UG9zaXRpb24iLCJkYXRhIiwicG9zIiwibmVpZ2hib3JzIiwiZXZlcnkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInBvc2l0aW9uIiwicG9pbnRWaXNDb25maWdzIiwicmFkaXVzIiwiZml4ZWRSYWRpdXMiLCJvcGFjaXR5Iiwib3V0bGluZSIsInRoaWNrbmVzcyIsInN0cm9rZUNvbG9yIiwiY29sb3JSYW5nZSIsInN0cm9rZUNvbG9yUmFuZ2UiLCJyYWRpdXNSYW5nZSIsImZpbGxlZCIsIkxBWUVSX1ZJU19DT05GSUdTIiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsInByb3BlcnR5IiwiYmlsbGJvYXJkIiwiYWxsb3dIb3ZlciIsInNob3dOZWlnaGJvck9uSG92ZXIiLCJzaG93SGlnaGxpZ2h0Q29sb3IiLCJQb2ludExheWVyIiwiX0xheWVyIiwicHJvcHMiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJ1bmRlZmluZWQiLCJyZWdpc3RlclZpc0NvbmZpZyIsImdldFBvc2l0aW9uQWNjZXNzb3IiLCJjb25maWciLCJjb2x1bW5Nb2RlIiwiY29sdW1ucyIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwiUG9pbnRMYXllckljb24iLCJkZWZhdWx0UG9pbnRDb2x1bW5QYWlycyIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJjb2xvciIsImFjY2Vzc29yIiwiY29uZGl0aW9uIiwidmlzQ29uZmlnIiwiZmllbGQiLCJzY2FsZSIsImRvbWFpbiIsInJhbmdlIiwiY2hhbm5lbFNjYWxlVHlwZSIsIkNIQU5ORUxfU0NBTEVTIiwic2l6ZSIsImZpeGVkIiwidmFsdWUiLCJzZXRJbml0aWFsTGF5ZXJDb25maWciLCJkYXRhc2V0IiwibnVtUm93cyIsImRlZmF1bHRDb2xvckZpZWxkIiwiZmluZERlZmF1bHRDb2xvckZpZWxkIiwidXBkYXRlTGF5ZXJDb25maWciLCJjb2xvckZpZWxkIiwidXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsIiwiZ2V0RGVmYXVsdExheWVyQ29uZmlnIiwiX3Byb3BzJGNvbHVtbk1vZGUiLCJkZWZhdWx0TGF5ZXJDb25maWciLCJzdHJva2VDb2xvckZpZWxkIiwic3Ryb2tlQ29sb3JEb21haW4iLCJzdHJva2VDb2xvclNjYWxlIiwiY29sb3JVSSIsIkRFRkFVTFRfQ09MT1JfVUkiLCJjYWxjdWxhdGVEYXRhQXR0cmlidXRlIiwiX3JlZjQiLCJnZXRQb3NpdGlvbiIsIl90aGlzMiIsImZpbHRlcmVkSW5kZXgiLCJBcnJvd0RhdGFDb250YWluZXIiLCJnZXRGaWx0ZXJlZEluZGV4IiwiZmlsdGVyZWRJbmRleFRyaWdnZXIiLCJnZW9BcnJvd1ZlY3RvciIsImdldENvbHVtbiIsImNyZWF0ZUdlb0Fycm93UG9pbnRWZWN0b3IiLCJnZXRUYWJsZSIsIl9sb29wIiwiaSIsIl90aGlzMiRjb25maWckY29sdW1ucyIsIkFycmF5IiwiaXNBcnJheSIsImNvb3JkaW5hdGVzIiwiZGF0YVRvRmVhdHVyZSIsImNvb3JkIiwiZm9ybWF0TGF5ZXJEYXRhIiwiZGF0YXNldHMiLCJvbGRMYXllckRhdGEiLCJfdGhpczMiLCJkYXRhSWQiLCJ0ZXh0TGFiZWwiLCJfZGF0YXNldHMkdGhpcyRjb25maWciLCJncHVGaWx0ZXIiLCJfdGhpcyR1cGRhdGVEYXRhIiwidXBkYXRlRGF0YSIsInRyaWdnZXJDaGFuZ2VkIiwidGV4dExhYmVscyIsImZvcm1hdFRleHRMYWJlbERhdGEiLCJhY2Nlc3NvcnMiLCJnZXRBdHRyaWJ1dGVBY2Nlc3NvcnMiLCJpc0ZpbHRlcmVkQWNjZXNzb3IiLCJnZXRGaWx0ZXJWYWx1ZSIsImZpbHRlclZhbHVlQWNjZXNzb3IiLCJnZXRGaWx0ZXJlZCIsInVwZGF0ZUxheWVyTWV0YSIsImdldEZlYXR1cmUiLCJnZXRHZW9qc29uUG9pbnREYXRhTWFwcyIsImJvdW5kc0Zyb21NZXRhZGF0YSIsImdldEJvdW5kc0Zyb21BcnJvd01ldGFkYXRhIiwidXBkYXRlTWV0YSIsImJvdW5kcyIsImdldFBvaW50c0JvdW5kcyIsInJlbmRlckxheWVyIiwib3B0cyIsIl90aGlzJGNvbmZpZyRjb2x1bW5zJCIsIm9iamVjdEhvdmVyZWQiLCJtYXBTdGF0ZSIsImludGVyYWN0aW9uQ29uZmlnIiwic2l6ZUZpZWxkIiwicmFkaXVzU2NhbGUiLCJnZXRSYWRpdXNTY2FsZUJ5Wm9vbSIsImxheWVyUHJvcHMiLCJzdHJva2VkIiwibGluZVdpZHRoU2NhbGUiLCJyYWRpdXNNYXhQaXhlbHMiLCJ1cGRhdGVUcmlnZ2VycyIsImZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMiLCJnZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMiLCJ1c2VBcnJvd0xheWVyIiwiZGVmYXVsdExheWVyUHJvcHMiLCJnZXREZWZhdWx0RGVja0xheWVyUHJvcHMiLCJicnVzaGluZ1Byb3BzIiwiZ2V0QnJ1c2hpbmdFeHRlbnNpb25Qcm9wcyIsImdldFBpeGVsT2Zmc2V0IiwiZ2V0VGV4dE9mZnNldEJ5UmFkaXVzIiwiZ2V0UmFkaXVzIiwiZXh0ZW5zaW9ucyIsInNoYXJlZFByb3BzIiwiZmlsdGVyUmFuZ2UiLCJ2aXNpYmxlIiwiaG92ZXJlZE9iamVjdCIsImhhc0hvdmVyZWRPYmplY3QiLCJfdGhpcyRjb25maWckdmlzQ29uZmkiLCJuZWlnaGJvcnNEYXRhIiwiZ2V0TmVpZ2hib3JzIiwiU2NhdHRlcnBsb3RMYXllckNsYXNzIiwiU2NhdHRlcnBsb3RMYXllciIsImRlY2tMYXllckRhdGEiLCJHZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXIiLCJwYXJhbWV0ZXJzIiwiZGVwdGhUZXN0IiwibGluZVdpZHRoVW5pdHMiLCJwaWNrYWJsZSIsImF1dG9IaWdobGlnaHQiLCJnZXREZWZhdWx0SG92ZXJMYXllclByb3BzIiwiZ2V0TGluZUNvbG9yIiwiaGlnaGxpZ2h0Q29sb3IiLCJnZXRGaWxsQ29sb3IiLCJyZW5kZXJUZXh0TGFiZWxMYXllciIsIm9iamVjdEluZm8iLCJpc0xheWVySG92ZXJlZEZyb21BcnJvdyIsImlkIiwiZ2V0SG92ZXJEYXRhIiwib2JqZWN0IiwiZmllbGRzIiwiYW5pbWF0aW9uQ29uZmlnIiwiaG92ZXJJbmZvIiwiZmluZERlZmF1bHRMYXllclByb3BzIiwiX3JlZjUiLCJfcmVmNSRmaWVsZFBhaXJzIiwiZmllbGRQYWlycyIsIkRhdGFzZXRUeXBlIiwiVkVDVE9SX1RJTEUiLCJwYWlyIiwibGF0RmllbGQiLCJwcm9wIiwiZGVmYXVsdE5hbWUiLCJERUZBVUxUX0xBWUVSX0NPTE9SIiwiaGV4VG9SZ2IiLCJpc1Zpc2libGUiLCJhc3NpZ25Qb2ludFBhaXJUb0xheWVyQ29sdW1uIiwiTGF5ZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcG9pbnQtbGF5ZXIvcG9pbnQtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcblxuaW1wb3J0IHtCcnVzaGluZ0V4dGVuc2lvbn0gZnJvbSAnQGRlY2suZ2wvZXh0ZW5zaW9ucyc7XG5pbXBvcnQge1NjYXR0ZXJwbG90TGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5cbmltcG9ydCB7R2VvQXJyb3dTY2F0dGVycGxvdExheWVyfSBmcm9tICdAa2VwbGVyLmdsL2RlY2tnbC1hcnJvdy1sYXllcnMnO1xuaW1wb3J0IHtGaWx0ZXJBcnJvd0V4dGVuc2lvbn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcblxuaW1wb3J0IExheWVyLCB7XG4gIExheWVyQmFzZUNvbmZpZyxcbiAgTGF5ZXJCYXNlQ29uZmlnUGFydGlhbCxcbiAgTGF5ZXJDb2xvckNvbmZpZyxcbiAgTGF5ZXJTaXplQ29uZmlnLFxuICBMYXllclN0cm9rZUNvbG9yQ29uZmlnXG59IGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IHtcbiAgaGV4VG9SZ2IsXG4gIGZpbmREZWZhdWx0Q29sb3JGaWVsZCxcbiAgRGF0YUNvbnRhaW5lckludGVyZmFjZSxcbiAgQXJyb3dEYXRhQ29udGFpbmVyXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtkZWZhdWx0IGFzIEtlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCBQb2ludExheWVySWNvbiBmcm9tICcuL3BvaW50LWxheWVyLWljb24nO1xuaW1wb3J0IHtcbiAgRGF0YXNldFR5cGUsXG4gIExBWUVSX1ZJU19DT05GSUdTLFxuICBERUZBVUxUX0xBWUVSX0NPTE9SLFxuICBDSEFOTkVMX1NDQUxFUyxcbiAgREVGQVVMVF9DT0xPUl9VSVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge2dldFRleHRPZmZzZXRCeVJhZGl1cywgZm9ybWF0VGV4dExhYmVsRGF0YX0gZnJvbSAnLi4vbGF5ZXItdGV4dC1sYWJlbCc7XG5pbXBvcnQge1xuICBhc3NpZ25Qb2ludFBhaXJUb0xheWVyQ29sdW1uLFxuICBpc0xheWVySG92ZXJlZEZyb21BcnJvdyxcbiAgZ2V0Qm91bmRzRnJvbUFycm93TWV0YWRhdGEsXG4gIGNyZWF0ZUdlb0Fycm93UG9pbnRWZWN0b3IsXG4gIGdldEZpbHRlcmVkSW5kZXgsXG4gIGdldE5laWdoYm9yc1xufSBmcm9tICcuLi9sYXllci11dGlscyc7XG5pbXBvcnQge2dldEdlb2pzb25Qb2ludERhdGFNYXBzLCBHZW9qc29uUG9pbnREYXRhTWFwc30gZnJvbSAnLi4vZ2VvanNvbi1sYXllci9nZW9qc29uLXV0aWxzJztcbmltcG9ydCB7XG4gIENvbG9yUmFuZ2UsXG4gIE1lcmdlLFxuICBSR0JDb2xvcixcbiAgVmlzQ29uZmlnQm9vbGVhbixcbiAgVmlzQ29uZmlnQ29sb3JSYW5nZSxcbiAgVmlzQ29uZmlnQ29sb3JTZWxlY3QsXG4gIFZpc0NvbmZpZ051bWJlcixcbiAgVmlzQ29uZmlnUmFuZ2UsXG4gIExheWVyQ29sdW1uLFxuICBGaWVsZCxcbiAgQW5pbWF0aW9uQ29uZmlnXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBQb2ludExheWVyVmlzQ29uZmlnU2V0dGluZ3MgPSB7XG4gIHJhZGl1czogVmlzQ29uZmlnTnVtYmVyO1xuICBmaXhlZFJhZGl1czogVmlzQ29uZmlnQm9vbGVhbjtcbiAgb3BhY2l0eTogVmlzQ29uZmlnTnVtYmVyO1xuICBvdXRsaW5lOiBWaXNDb25maWdCb29sZWFuO1xuICB0aGlja25lc3M6IFZpc0NvbmZpZ051bWJlcjtcbiAgc3Ryb2tlQ29sb3I6IFZpc0NvbmZpZ0NvbG9yU2VsZWN0O1xuICBjb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICBzdHJva2VDb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICByYWRpdXNSYW5nZTogVmlzQ29uZmlnUmFuZ2U7XG4gIGZpbGxlZDogVmlzQ29uZmlnQm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFBvaW50TGF5ZXJDb2x1bW5zQ29uZmlnID0ge1xuICBsYXQ6IExheWVyQ29sdW1uO1xuICBsbmc6IExheWVyQ29sdW1uO1xuICBhbHRpdHVkZT86IExheWVyQ29sdW1uO1xuICBuZWlnaGJvcnM/OiBMYXllckNvbHVtbjtcbiAgZ2VvanNvbjogTGF5ZXJDb2x1bW47XG4gIGdlb2Fycm93OiBMYXllckNvbHVtbjtcbn07XG5cbmV4cG9ydCB0eXBlIFBvaW50TGF5ZXJWaXNDb25maWcgPSB7XG4gIHJhZGl1czogbnVtYmVyO1xuICBmaXhlZFJhZGl1czogYm9vbGVhbjtcbiAgb3BhY2l0eTogbnVtYmVyO1xuICBvdXRsaW5lOiBib29sZWFuO1xuICB0aGlja25lc3M6IG51bWJlcjtcbiAgc3Ryb2tlQ29sb3I6IFJHQkNvbG9yO1xuICBjb2xvclJhbmdlOiBDb2xvclJhbmdlO1xuICBzdHJva2VDb2xvclJhbmdlOiBDb2xvclJhbmdlO1xuICByYWRpdXNSYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgZmlsbGVkOiBib29sZWFuO1xuICBiaWxsYm9hcmQ6IGJvb2xlYW47XG4gIGFsbG93SG92ZXI6IGJvb2xlYW47XG4gIHNob3dOZWlnaGJvck9uSG92ZXI6IGJvb2xlYW47XG4gIHNob3dIaWdobGlnaHRDb2xvcjogYm9vbGVhbjtcbn07XG5leHBvcnQgdHlwZSBQb2ludExheWVyVmlzdWFsQ2hhbm5lbENvbmZpZyA9IExheWVyQ29sb3JDb25maWcgJlxuICBMYXllclNpemVDb25maWcgJlxuICBMYXllclN0cm9rZUNvbG9yQ29uZmlnO1xuZXhwb3J0IHR5cGUgUG9pbnRMYXllckNvbmZpZyA9IE1lcmdlPFxuICBMYXllckJhc2VDb25maWcsXG4gIHtjb2x1bW5zOiBQb2ludExheWVyQ29sdW1uc0NvbmZpZzsgdmlzQ29uZmlnOiBQb2ludExheWVyVmlzQ29uZmlnfVxuPiAmXG4gIFBvaW50TGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnO1xuXG5leHBvcnQgdHlwZSBQb2ludExheWVyRGF0YSA9IHtcbiAgcG9zaXRpb246IG51bWJlcltdO1xuICBpbmRleDogbnVtYmVyO1xuICBuZWlnaGJvcnM6IGFueVtdO1xufTtcblxuZXhwb3J0IGNvbnN0IHBvaW50UG9zQWNjZXNzb3IgPVxuICAoe2xhdCwgbG5nLCBhbHRpdHVkZX06IFBvaW50TGF5ZXJDb2x1bW5zQ29uZmlnKSA9PlxuICAoZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+XG4gIChkOiB7aW5kZXg6IG51bWJlcn0pID0+XG4gICAgW1xuICAgICAgZGMudmFsdWVBdChkLmluZGV4LCBsbmcuZmllbGRJZHgpLFxuICAgICAgZGMudmFsdWVBdChkLmluZGV4LCBsYXQuZmllbGRJZHgpLFxuICAgICAgYWx0aXR1ZGUgJiYgYWx0aXR1ZGUuZmllbGRJZHggPiAtMSA/IGRjLnZhbHVlQXQoZC5pbmRleCwgYWx0aXR1ZGUuZmllbGRJZHgpIDogMFxuICAgIF07XG5cbmV4cG9ydCBjb25zdCBnZW9qc29uUG9zQWNjZXNzb3IgPVxuICAoe2dlb2pzb259OiB7Z2VvanNvbjogTGF5ZXJDb2x1bW59KSA9PlxuICBkID0+XG4gICAgZFtnZW9qc29uLmZpZWxkSWR4XTtcblxuZXhwb3J0IGNvbnN0IGdlb2Fycm93UG9zQWNjZXNzb3IgPVxuICAoe2dlb2Fycm93fTogUG9pbnRMYXllckNvbHVtbnNDb25maWcpID0+XG4gIChkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PlxuICAoZDoge2luZGV4OiBudW1iZXJ9KSA9PiB7XG4gICAgY29uc3Qgcm93ID0gZGF0YUNvbnRhaW5lci52YWx1ZUF0KGQuaW5kZXgsIGdlb2Fycm93LmZpZWxkSWR4KTtcbiAgICByZXR1cm4gW3Jvdy5nZXQoMCksIHJvdy5nZXQoMSksIDBdO1xuICB9O1xuXG5leHBvcnQgY29uc3QgQ09MVU1OX01PREVfUE9JTlRTID0gJ3BvaW50cyc7XG5leHBvcnQgY29uc3QgQ09MVU1OX01PREVfR0VPSlNPTiA9ICdnZW9qc29uJztcbmV4cG9ydCBjb25zdCBDT0xVTU5fTU9ERV9HRU9BUlJPVyA9ICdnZW9hcnJvdyc7XG5cbmV4cG9ydCBjb25zdCBwb2ludFJlcXVpcmVkQ29sdW1uczogWydsYXQnLCAnbG5nJ10gPSBbJ2xhdCcsICdsbmcnXTtcbmV4cG9ydCBjb25zdCBwb2ludE9wdGlvbmFsQ29sdW1uczogWydhbHRpdHVkZScsICduZWlnaGJvcnMnXSA9IFsnYWx0aXR1ZGUnLCAnbmVpZ2hib3JzJ107XG5leHBvcnQgY29uc3QgZ2VvanNvblJlcXVpcmVkQ29sdW1uczogWydnZW9qc29uJ10gPSBbJ2dlb2pzb24nXTtcbmV4cG9ydCBjb25zdCBnZW9hcnJvd1JlcXVpcmVkQ29sdW1uczogWydnZW9hcnJvdyddID0gWydnZW9hcnJvdyddO1xuXG5jb25zdCBTVVBQT1JURURfQ09MVU1OX01PREVTID0gW1xuICB7XG4gICAga2V5OiBDT0xVTU5fTU9ERV9QT0lOVFMsXG4gICAgbGFiZWw6ICdQb2ludCBDb2x1bW5zJyxcbiAgICByZXF1aXJlZENvbHVtbnM6IHBvaW50UmVxdWlyZWRDb2x1bW5zLFxuICAgIG9wdGlvbmFsQ29sdW1uczogcG9pbnRPcHRpb25hbENvbHVtbnNcbiAgfSxcbiAge1xuICAgIGtleTogQ09MVU1OX01PREVfR0VPSlNPTixcbiAgICBsYWJlbDogJ0dlb0pTT04gRmVhdHVyZScsXG4gICAgcmVxdWlyZWRDb2x1bW5zOiBnZW9qc29uUmVxdWlyZWRDb2x1bW5zXG4gIH0sXG4gIHtcbiAgICBrZXk6IENPTFVNTl9NT0RFX0dFT0FSUk9XLFxuICAgIGxhYmVsOiAnR2VvYXJyb3cgUG9pbnRzJyxcbiAgICByZXF1aXJlZENvbHVtbnM6IGdlb2Fycm93UmVxdWlyZWRDb2x1bW5zXG4gIH1cbl07XG5jb25zdCBERUZBVUxUX0NPTFVNTl9NT0RFID0gQ09MVU1OX01PREVfUE9JTlRTO1xuXG5jb25zdCBicnVzaGluZ0V4dGVuc2lvbiA9IG5ldyBCcnVzaGluZ0V4dGVuc2lvbigpO1xuY29uc3QgYXJyb3dDUFVGaWx0ZXJFeHRlbnNpb24gPSBuZXcgRmlsdGVyQXJyb3dFeHRlbnNpb24oKTtcblxuZnVuY3Rpb24gcHVzaFBvaW50UG9zaXRpb24oZGF0YTogYW55W10sIHBvczogbnVtYmVyW10sIGluZGV4OiBudW1iZXIsIG5laWdoYm9ycz86IG51bWJlcltdKSB7XG4gIGlmIChwb3MuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSkge1xuICAgIGRhdGEucHVzaCh7XG4gICAgICBwb3NpdGlvbjogcG9zLFxuICAgICAgLy8gaW5kZXggaXMgaW1wb3J0YW50IGZvciBmaWx0ZXJcbiAgICAgIGluZGV4LFxuICAgICAgLi4uKG5laWdoYm9ycyA/IHtuZWlnaGJvcnN9IDoge30pXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHBvaW50VmlzQ29uZmlnczoge1xuICByYWRpdXM6ICdyYWRpdXMnO1xuICBmaXhlZFJhZGl1czogJ2ZpeGVkUmFkaXVzJztcbiAgb3BhY2l0eTogJ29wYWNpdHknO1xuICBvdXRsaW5lOiAnb3V0bGluZSc7XG4gIHRoaWNrbmVzczogJ3RoaWNrbmVzcyc7XG4gIHN0cm9rZUNvbG9yOiAnc3Ryb2tlQ29sb3InO1xuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZSc7XG4gIHN0cm9rZUNvbG9yUmFuZ2U6ICdzdHJva2VDb2xvclJhbmdlJztcbiAgcmFkaXVzUmFuZ2U6ICdyYWRpdXNSYW5nZSc7XG4gIGZpbGxlZDogVmlzQ29uZmlnQm9vbGVhbjtcbiAgYmlsbGJvYXJkOiAnYmlsbGJvYXJkJztcbiAgYWxsb3dIb3ZlcjogJ2FsbG93SG92ZXInO1xuICBzaG93TmVpZ2hib3JPbkhvdmVyOiAnc2hvd05laWdoYm9yT25Ib3Zlcic7XG4gIHNob3dIaWdobGlnaHRDb2xvcjogJ3Nob3dIaWdobGlnaHRDb2xvcic7XG59ID0ge1xuICByYWRpdXM6ICdyYWRpdXMnLFxuICBmaXhlZFJhZGl1czogJ2ZpeGVkUmFkaXVzJyxcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICBvdXRsaW5lOiAnb3V0bGluZScsXG4gIHRoaWNrbmVzczogJ3RoaWNrbmVzcycsXG4gIHN0cm9rZUNvbG9yOiAnc3Ryb2tlQ29sb3InLFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIHN0cm9rZUNvbG9yUmFuZ2U6ICdzdHJva2VDb2xvclJhbmdlJyxcbiAgcmFkaXVzUmFuZ2U6ICdyYWRpdXNSYW5nZScsXG4gIGZpbGxlZDoge1xuICAgIC4uLkxBWUVSX1ZJU19DT05GSUdTLmZpbGxlZCxcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgbGFiZWw6ICdsYXllci5maWxsQ29sb3InLFxuICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICBwcm9wZXJ0eTogJ2ZpbGxlZCdcbiAgfSxcbiAgYmlsbGJvYXJkOiAnYmlsbGJvYXJkJyxcbiAgYWxsb3dIb3ZlcjogJ2FsbG93SG92ZXInLFxuICBzaG93TmVpZ2hib3JPbkhvdmVyOiAnc2hvd05laWdoYm9yT25Ib3ZlcicsXG4gIHNob3dIaWdobGlnaHRDb2xvcjogJ3Nob3dIaWdobGlnaHRDb2xvcidcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvaW50TGF5ZXIgZXh0ZW5kcyBMYXllciB7XG4gIGRlY2xhcmUgY29uZmlnOiBQb2ludExheWVyQ29uZmlnO1xuICBkZWNsYXJlIHZpc0NvbmZpZ1NldHRpbmdzOiBQb2ludExheWVyVmlzQ29uZmlnU2V0dGluZ3M7XG4gIGRhdGFUb0ZlYXR1cmU6IEdlb2pzb25Qb2ludERhdGFNYXBzID0gW107XG5cbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSB8IG51bGwgPSBudWxsO1xuICBnZW9BcnJvd1ZlY3RvcjogYXJyb3cuVmVjdG9yIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIC8qXG4gICAqIENQVSBmaWx0ZXJpbmcgYW4gYXJyb3cgdGFibGUgYnkgdmFsdWVzIGFuZCBhc3NlbWJsaW5nIGEgcGFydGlhbCBjb3B5IG9mIHRoZSByYXcgdGFibGUgaXMgZXhwZW5zaXZlXG4gICAqIHNvIHdlIHdpbGwgdXNlIGZpbHRlcmVkSW5kZXggdG8gY3JlYXRlIGFuIGF0dHJpYnV0ZSBlLmcuIGZpbHRlcmVkSW5kZXggWzB8MV0gZm9yIEdQVSBmaWx0ZXJpbmdcbiAgICogaW4gZGVjay5nbCBsYXllciwgc2VlOiBGaWx0ZXJBcnJvd0V4dGVuc2lvbiBpbiBAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMuXG4gICAqIE5vdGUgdGhhdCB0aGlzIGFwcHJvYWNoIGNhbiBjcmVhdGUgdmlzaWJsZSBsYWdzIGluIGNhc2Ugb2YgYSBsb3Qgb2YgZGlzY2FydGVkIGdlb21ldHJ5LlxuICAgKi9cbiAgZmlsdGVyZWRJbmRleDogVWludDhDbGFtcGVkQXJyYXkgfCBudWxsID0gbnVsbDtcbiAgZmlsdGVyZWRJbmRleFRyaWdnZXI6IG51bWJlcltdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyVmlzQ29uZmlnKHBvaW50VmlzQ29uZmlncyk7XG4gICAgdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yID0gKGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+IHtcbiAgICAgIHN3aXRjaCAodGhpcy5jb25maWcuY29sdW1uTW9kZSkge1xuICAgICAgICBjYXNlIENPTFVNTl9NT0RFX0dFT0FSUk9XOlxuICAgICAgICAgIHJldHVybiBnZW9hcnJvd1Bvc0FjY2Vzc29yKHRoaXMuY29uZmlnLmNvbHVtbnMpKGRhdGFDb250YWluZXIpO1xuICAgICAgICBjYXNlIENPTFVNTl9NT0RFX0dFT0pTT046XG4gICAgICAgICAgcmV0dXJuIGdlb2pzb25Qb3NBY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAvLyBDT0xVTU5fTU9ERV9QT0lOVFNcbiAgICAgICAgICByZXR1cm4gcG9pbnRQb3NBY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zKShkYXRhQ29udGFpbmVyKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0IHR5cGUoKTogJ3BvaW50JyB7XG4gICAgcmV0dXJuICdwb2ludCc7XG4gIH1cblxuICBnZXQgaXNBZ2dyZWdhdGVkKCk6IGZhbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgbGF5ZXJJY29uKCkge1xuICAgIHJldHVybiBQb2ludExheWVySWNvbjtcbiAgfVxuXG4gIGdldCBvcHRpb25hbENvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHBvaW50T3B0aW9uYWxDb2x1bW5zO1xuICB9XG5cbiAgZ2V0IGNvbHVtblBhaXJzKCkge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb2ludENvbHVtblBhaXJzO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRlZENvbHVtbk1vZGVzKCkge1xuICAgIHJldHVybiBTVVBQT1JURURfQ09MVU1OX01PREVTO1xuICB9XG5cbiAgZ2V0IG5vbmVMYXllckRhdGFBZmZlY3RpbmdQcm9wcygpIHtcbiAgICByZXR1cm4gWy4uLnN1cGVyLm5vbmVMYXllckRhdGFBZmZlY3RpbmdQcm9wcywgJ3JhZGl1cyddO1xuICB9XG5cbiAgZ2V0IHZpc3VhbENoYW5uZWxzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjoge1xuICAgICAgICAuLi5zdXBlci52aXN1YWxDaGFubmVscy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRGaWxsQ29sb3InLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLmZpbGxlZCxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBjb25maWcgPT4gY29uZmlnLmNvbG9yXG4gICAgICB9LFxuICAgICAgc3Ryb2tlQ29sb3I6IHtcbiAgICAgICAgcHJvcGVydHk6ICdzdHJva2VDb2xvcicsXG4gICAgICAgIGtleTogJ3N0cm9rZUNvbG9yJyxcbiAgICAgICAgZmllbGQ6ICdzdHJva2VDb2xvckZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdzdHJva2VDb2xvclNjYWxlJyxcbiAgICAgICAgZG9tYWluOiAnc3Ryb2tlQ29sb3JEb21haW4nLFxuICAgICAgICByYW5nZTogJ3N0cm9rZUNvbG9yUmFuZ2UnLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiBDSEFOTkVMX1NDQUxFUy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRMaW5lQ29sb3InLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLm91dGxpbmUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuc3Ryb2tlQ29sb3IgfHwgY29uZmlnLmNvbG9yXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICAuLi5zdXBlci52aXN1YWxDaGFubmVscy5zaXplLFxuICAgICAgICBwcm9wZXJ0eTogJ3JhZGl1cycsXG4gICAgICAgIHJhbmdlOiAncmFkaXVzUmFuZ2UnLFxuICAgICAgICBmaXhlZDogJ2ZpeGVkUmFkaXVzJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogJ3JhZGl1cycsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0UmFkaXVzJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAxXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHNldEluaXRpYWxMYXllckNvbmZpZyhkYXRhc2V0KSB7XG4gICAgaWYgKCFkYXRhc2V0LmRhdGFDb250YWluZXIubnVtUm93cygpKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdENvbG9yRmllbGQgPSBmaW5kRGVmYXVsdENvbG9yRmllbGQoZGF0YXNldCk7XG5cbiAgICBpZiAoZGVmYXVsdENvbG9yRmllbGQpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgICBjb2xvckZpZWxkOiBkZWZhdWx0Q29sb3JGaWVsZFxuICAgICAgfSk7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbChkYXRhc2V0LCAnY29sb3InKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoe2ZpZWxkUGFpcnMgPSBbXSwgdHlwZX06IEtlcGxlclRhYmxlKSB7XG4gICAgY29uc3QgcHJvcHM6IHtcbiAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICBjb2xvcj86IFJHQkNvbG9yO1xuICAgICAgaXNWaXNpYmxlPzogYm9vbGVhbjtcbiAgICAgIGNvbHVtbnM/OiBQb2ludExheWVyQ29sdW1uc0NvbmZpZztcbiAgICB9W10gPSBbXTtcblxuICAgIGlmICh0eXBlID09PSBEYXRhc2V0VHlwZS5WRUNUT1JfVElMRSkge1xuICAgICAgcmV0dXJuIHtwcm9wc307XG4gICAgfVxuXG4gICAgLy8gTWFrZSBsYXllciBmb3IgZWFjaCBwYWlyXG4gICAgZmllbGRQYWlycy5mb3JFYWNoKHBhaXIgPT4ge1xuICAgICAgY29uc3QgbGF0RmllbGQgPSBwYWlyLnBhaXIubGF0O1xuXG4gICAgICBjb25zdCBwcm9wOiB7XG4gICAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICAgIGNvbG9yPzogUkdCQ29sb3I7XG4gICAgICAgIGlzVmlzaWJsZT86IGJvb2xlYW47XG4gICAgICAgIGNvbHVtbnM/OiBQb2ludExheWVyQ29sdW1uc0NvbmZpZztcbiAgICAgIH0gPSB7XG4gICAgICAgIGxhYmVsOiBwYWlyLmRlZmF1bHROYW1lIHx8ICdQb2ludCdcbiAgICAgIH07XG5cbiAgICAgIC8vIGRlZmF1bHQgbGF5ZXIgY29sb3IgZm9yIGJlZ2ludHJpcCBhbmQgZHJvcG9mZiBwb2ludFxuICAgICAgaWYgKGxhdEZpZWxkLnZhbHVlIGluIERFRkFVTFRfTEFZRVJfQ09MT1IpIHtcbiAgICAgICAgcHJvcC5jb2xvciA9IGhleFRvUmdiKERFRkFVTFRfTEFZRVJfQ09MT1JbbGF0RmllbGQudmFsdWVdKTtcbiAgICAgIH1cblxuICAgICAgLy8gc2V0IHRoZSBmaXJzdCBsYXllciB0byBiZSB2aXNpYmxlXG4gICAgICBpZiAocHJvcHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHByb3AuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbG9naWNhbGx5IHNlcGFyYXRlIGdlb2pzb24gY29sdW1uIHR5cGU/XG4gICAgICBwcm9wLmNvbHVtbnMgPSBhc3NpZ25Qb2ludFBhaXJUb0xheWVyQ29sdW1uKHBhaXIsIHRydWUpO1xuXG4gICAgICBwcm9wcy5wdXNoKHByb3ApO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtwcm9wc307XG4gIH1cblxuICBnZXREZWZhdWx0TGF5ZXJDb25maWcocHJvcHM6IExheWVyQmFzZUNvbmZpZ1BhcnRpYWwpIHtcbiAgICBjb25zdCBkZWZhdWx0TGF5ZXJDb25maWcgPSBzdXBlci5nZXREZWZhdWx0TGF5ZXJDb25maWcocHJvcHMgPz8ge30pO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5kZWZhdWx0TGF5ZXJDb25maWcsXG5cbiAgICAgIGNvbHVtbk1vZGU6IHByb3BzPy5jb2x1bW5Nb2RlID8/IERFRkFVTFRfQ09MVU1OX01PREUsXG5cbiAgICAgIC8vIGFkZCBzdHJva2UgY29sb3IgdmlzdWFsIGNoYW5uZWxcbiAgICAgIHN0cm9rZUNvbG9yRmllbGQ6IG51bGwsXG4gICAgICBzdHJva2VDb2xvckRvbWFpbjogWzAsIDFdLFxuICAgICAgc3Ryb2tlQ29sb3JTY2FsZTogJ3F1YW50aWxlJyxcbiAgICAgIGNvbG9yVUk6IHtcbiAgICAgICAgLi4uZGVmYXVsdExheWVyQ29uZmlnLmNvbG9yVUksXG4gICAgICAgIHN0cm9rZUNvbG9yUmFuZ2U6IERFRkFVTFRfQ09MT1JfVUlcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgY2FsY3VsYXRlRGF0YUF0dHJpYnV0ZSh7ZmlsdGVyZWRJbmRleCwgZGF0YUNvbnRhaW5lcn06IEtlcGxlclRhYmxlLCBnZXRQb3NpdGlvbikge1xuICAgIGNvbnN0IHtjb2x1bW5Nb2RlfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgLy8gMSkgQ09MVU1OX01PREVfR0VPQVJST1cgLSB3aGVuIHdlIGhhdmUgYSBnZW9hcnJvdyBwb2ludCBjb2x1bW5cbiAgICAvLyAyKSBDT0xVTU5fTU9ERV9QT0lOVFMgKyBBcnJvd0RhdGFDb250YWluZXIgPiBjcmVhdGUgZ2VvYXJyb3cgcG9pbnQgY29sdW1uIG9uIHRoZSBmbHlcbiAgICBpZiAoXG4gICAgICBkYXRhQ29udGFpbmVyIGluc3RhbmNlb2YgQXJyb3dEYXRhQ29udGFpbmVyICYmXG4gICAgICAoY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfR0VPQVJST1cgfHwgY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfUE9JTlRTKVxuICAgICkge1xuICAgICAgdGhpcy5maWx0ZXJlZEluZGV4ID0gZ2V0RmlsdGVyZWRJbmRleChcbiAgICAgICAgZGF0YUNvbnRhaW5lci5udW1Sb3dzKCksXG4gICAgICAgIGZpbHRlcmVkSW5kZXgsXG4gICAgICAgIHRoaXMuZmlsdGVyZWRJbmRleFxuICAgICAgKTtcbiAgICAgIHRoaXMuZmlsdGVyZWRJbmRleFRyaWdnZXIgPSBmaWx0ZXJlZEluZGV4O1xuXG4gICAgICBpZiAodGhpcy5jb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfR0VPQVJST1cpIHtcbiAgICAgICAgdGhpcy5nZW9BcnJvd1ZlY3RvciA9IGRhdGFDb250YWluZXIuZ2V0Q29sdW1uKHRoaXMuY29uZmlnLmNvbHVtbnMuZ2VvYXJyb3cuZmllbGRJZHgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZ2VuZXJhdGUgYSBjb2x1bW4gY29tcGF0aWJsZSB3aXRoIGdlb2Fycm93IHBvaW50XG4gICAgICAgIHRoaXMuZ2VvQXJyb3dWZWN0b3IgPSBjcmVhdGVHZW9BcnJvd1BvaW50VmVjdG9yKGRhdGFDb250YWluZXIsIGdldFBvc2l0aW9uKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGFDb250YWluZXIuZ2V0VGFibGUoKTtcbiAgICB9XG5cbiAgICAvLyB3ZSBkb24ndCBuZWVkIHRoZXNlIGluIG5vbi1BcnJvdyBtb2RlcyBhdG0uXG4gICAgdGhpcy5nZW9BcnJvd1ZlY3RvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmZpbHRlcmVkSW5kZXggPSBudWxsO1xuXG4gICAgY29uc3QgZGF0YTogUG9pbnRMYXllckRhdGFbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWx0ZXJlZEluZGV4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGZpbHRlcmVkSW5kZXhbaV07XG4gICAgICBsZXQgbmVpZ2hib3JzO1xuXG4gICAgICBpZiAodGhpcy5jb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfUE9JTlRTKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5jb2x1bW5zLm5laWdoYm9ycz8udmFsdWUpIHtcbiAgICAgICAgICBjb25zdCB7ZmllbGRJZHh9ID0gdGhpcy5jb25maWcuY29sdW1ucy5uZWlnaGJvcnM7XG4gICAgICAgICAgbmVpZ2hib3JzID0gQXJyYXkuaXNBcnJheShkYXRhQ29udGFpbmVyLnZhbHVlQXQoaW5kZXgsIGZpZWxkSWR4KSlcbiAgICAgICAgICAgID8gZGF0YUNvbnRhaW5lci52YWx1ZUF0KGluZGV4LCBmaWVsZElkeClcbiAgICAgICAgICAgIDogW107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9zID0gZ2V0UG9zaXRpb24oe2luZGV4fSk7XG5cbiAgICAgICAgLy8gaWYgZG9lc24ndCBoYXZlIHBvaW50IGxhdCBvciBsbmcsIGRvIG5vdCBhZGQgdGhlIHBvaW50XG4gICAgICAgIC8vIGRlY2suZ2wgY2FuJ3QgaGFuZGxlIHBvc2l0aW9uID0gbnVsbFxuICAgICAgICBwdXNoUG9pbnRQb3NpdGlvbihkYXRhLCBwb3MsIGluZGV4LCBuZWlnaGJvcnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ09MVU1OX01PREVfR0VPSlNPTiBtb2RlIC0gcG9pbnQgZnJvbSBnZW9qc29uIGNvb3JkaW5hdGVzXG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gdGhpcy5kYXRhVG9GZWF0dXJlW2ldO1xuICAgICAgICAvLyBpZiBtdWx0aSBwb2ludHNcbiAgICAgICAgaWYgKGNvb3JkaW5hdGVzICYmIEFycmF5LmlzQXJyYXkoY29vcmRpbmF0ZXNbMF0pKSB7XG4gICAgICAgICAgY29vcmRpbmF0ZXMuZm9yRWFjaChjb29yZCA9PiB7XG4gICAgICAgICAgICBwdXNoUG9pbnRQb3NpdGlvbihkYXRhLCBjb29yZCwgaW5kZXgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGNvb3JkaW5hdGVzICYmIE51bWJlci5pc0Zpbml0ZShjb29yZGluYXRlc1swXSkpIHtcbiAgICAgICAgICBwdXNoUG9pbnRQb3NpdGlvbihkYXRhLCBjb29yZGluYXRlcyBhcyBudW1iZXJbXSwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBmb3JtYXRMYXllckRhdGEoZGF0YXNldHMsIG9sZExheWVyRGF0YSkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5kYXRhSWQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3Qge3RleHRMYWJlbH0gPSB0aGlzLmNvbmZpZztcbiAgICBjb25zdCB7Z3B1RmlsdGVyLCBkYXRhQ29udGFpbmVyfSA9IGRhdGFzZXRzW3RoaXMuY29uZmlnLmRhdGFJZF07XG4gICAgY29uc3Qge2RhdGEsIHRyaWdnZXJDaGFuZ2VkfSA9IHRoaXMudXBkYXRlRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKTtcbiAgICBjb25zdCBnZXRQb3NpdGlvbiA9IGQgPT4gZC5wb3NpdGlvbjtcblxuICAgIC8vIGdldCBhbGwgZGlzdGluY3QgY2hhcmFjdGVycyBpbiB0aGUgdGV4dCBsYWJlbHNcbiAgICBjb25zdCB0ZXh0TGFiZWxzID0gZm9ybWF0VGV4dExhYmVsRGF0YSh7XG4gICAgICB0ZXh0TGFiZWwsXG4gICAgICB0cmlnZ2VyQ2hhbmdlZCxcbiAgICAgIG9sZExheWVyRGF0YSxcbiAgICAgIGRhdGEsXG4gICAgICBkYXRhQ29udGFpbmVyLFxuICAgICAgZmlsdGVyZWRJbmRleDogdGhpcy5maWx0ZXJlZEluZGV4XG4gICAgfSk7XG5cbiAgICBjb25zdCBhY2Nlc3NvcnMgPSB0aGlzLmdldEF0dHJpYnV0ZUFjY2Vzc29ycyh7ZGF0YUNvbnRhaW5lcn0pO1xuXG4gICAgY29uc3QgaXNGaWx0ZXJlZEFjY2Vzc29yID0gKGRhdGE6IHtpbmRleDogbnVtYmVyfSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRJbmRleCA/IHRoaXMuZmlsdGVyZWRJbmRleFtkYXRhLmluZGV4XSA6IDE7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhLFxuICAgICAgZ2V0UG9zaXRpb24sXG4gICAgICBnZXRGaWx0ZXJWYWx1ZTogZ3B1RmlsdGVyLmZpbHRlclZhbHVlQWNjZXNzb3IoZGF0YUNvbnRhaW5lcikoKSxcbiAgICAgIGdldEZpbHRlcmVkOiBpc0ZpbHRlcmVkQWNjZXNzb3IsXG4gICAgICB0ZXh0TGFiZWxzLFxuICAgICAgLi4uYWNjZXNzb3JzXG4gICAgfTtcbiAgfVxuICAvKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuICB1cGRhdGVMYXllck1ldGEoZGF0YXNldDogS2VwbGVyVGFibGUpIHtcbiAgICBjb25zdCB7ZGF0YUNvbnRhaW5lcn0gPSBkYXRhc2V0O1xuICAgIHRoaXMuZGF0YUNvbnRhaW5lciA9IGRhdGFDb250YWluZXI7XG5cbiAgICBpZiAodGhpcy5jb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfR0VPSlNPTikge1xuICAgICAgY29uc3QgZ2V0RmVhdHVyZSA9IHRoaXMuZ2V0UG9zaXRpb25BY2Nlc3NvcigpO1xuICAgICAgdGhpcy5kYXRhVG9GZWF0dXJlID0gZ2V0R2VvanNvblBvaW50RGF0YU1hcHMoZGF0YUNvbnRhaW5lciwgZ2V0RmVhdHVyZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5jb2x1bW5Nb2RlID09PSBDT0xVTU5fTU9ERV9HRU9BUlJPVykge1xuICAgICAgY29uc3QgYm91bmRzRnJvbU1ldGFkYXRhID0gZ2V0Qm91bmRzRnJvbUFycm93TWV0YWRhdGEoXG4gICAgICAgIHRoaXMuY29uZmlnLmNvbHVtbnMuZ2VvYXJyb3csXG4gICAgICAgIGRhdGFDb250YWluZXIgYXMgQXJyb3dEYXRhQ29udGFpbmVyXG4gICAgICApO1xuICAgICAgaWYgKGJvdW5kc0Zyb21NZXRhZGF0YSkge1xuICAgICAgICB0aGlzLnVwZGF0ZU1ldGEoe2JvdW5kczogYm91bmRzRnJvbU1ldGFkYXRhfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBnZXRQb3NpdGlvbiA9IHRoaXMuZ2V0UG9zaXRpb25BY2Nlc3NvcihkYXRhQ29udGFpbmVyKTtcbiAgICAgICAgY29uc3QgYm91bmRzID0gdGhpcy5nZXRQb2ludHNCb3VuZHMoZGF0YUNvbnRhaW5lciwgZ2V0UG9zaXRpb24pO1xuICAgICAgICB0aGlzLnVwZGF0ZU1ldGEoe2JvdW5kc30pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBnZXRQb3NpdGlvbiA9IHRoaXMuZ2V0UG9zaXRpb25BY2Nlc3NvcihkYXRhQ29udGFpbmVyKTtcbiAgICAgIGNvbnN0IGJvdW5kcyA9IHRoaXMuZ2V0UG9pbnRzQm91bmRzKGRhdGFDb250YWluZXIsIGdldFBvc2l0aW9uKTtcbiAgICAgIHRoaXMudXBkYXRlTWV0YSh7Ym91bmRzfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgcmVuZGVyTGF5ZXIob3B0cykge1xuICAgIGNvbnN0IHtkYXRhLCBncHVGaWx0ZXIsIG9iamVjdEhvdmVyZWQsIG1hcFN0YXRlLCBpbnRlcmFjdGlvbkNvbmZpZywgZGF0YXNldH0gPSBvcHRzO1xuXG4gICAgLy8gaWYgbm8gZmllbGQgc2l6ZSBpcyBkZWZpbmVkIHdlIG5lZWQgdG8gcGFzcyBmaXhlZCByYWRpdXMgPSBmYWxzZVxuICAgIGNvbnN0IGZpeGVkUmFkaXVzID0gdGhpcy5jb25maWcudmlzQ29uZmlnLmZpeGVkUmFkaXVzICYmIEJvb2xlYW4odGhpcy5jb25maWcuc2l6ZUZpZWxkKTtcbiAgICBjb25zdCByYWRpdXNTY2FsZSA9IHRoaXMuZ2V0UmFkaXVzU2NhbGVCeVpvb20obWFwU3RhdGUsIGZpeGVkUmFkaXVzKTtcblxuICAgIGNvbnN0IGxheWVyUHJvcHMgPSB7XG4gICAgICBzdHJva2VkOiB0aGlzLmNvbmZpZy52aXNDb25maWcub3V0bGluZSxcbiAgICAgIGZpbGxlZDogdGhpcy5jb25maWcudmlzQ29uZmlnLmZpbGxlZCxcbiAgICAgIGxpbmVXaWR0aFNjYWxlOiB0aGlzLmNvbmZpZy52aXNDb25maWcudGhpY2tuZXNzLFxuICAgICAgYmlsbGJvYXJkOiB0aGlzLmNvbmZpZy52aXNDb25maWcuYmlsbGJvYXJkLFxuICAgICAgcmFkaXVzU2NhbGUsXG4gICAgICAuLi4odGhpcy5jb25maWcudmlzQ29uZmlnLmZpeGVkUmFkaXVzID8ge30gOiB7cmFkaXVzTWF4UGl4ZWxzOiA1MDB9KVxuICAgIH07XG5cbiAgICBjb25zdCB1cGRhdGVUcmlnZ2VycyA9IHtcbiAgICAgIGdldFBvc2l0aW9uOiB0aGlzLmNvbmZpZy5jb2x1bW5zLFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzLFxuICAgICAgZ2V0RmlsdGVyZWQ6IHRoaXMuZmlsdGVyZWRJbmRleFRyaWdnZXIsXG4gICAgICAuLi50aGlzLmdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycygpXG4gICAgfTtcblxuICAgIGNvbnN0IHVzZUFycm93TGF5ZXIgPSBCb29sZWFuKHRoaXMuZ2VvQXJyb3dWZWN0b3IpO1xuXG4gICAgY29uc3QgZGVmYXVsdExheWVyUHJvcHMgPSB0aGlzLmdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyhvcHRzKTtcbiAgICBjb25zdCBicnVzaGluZ1Byb3BzID0gdGhpcy5nZXRCcnVzaGluZ0V4dGVuc2lvblByb3BzKGludGVyYWN0aW9uQ29uZmlnKTtcbiAgICBjb25zdCBnZXRQaXhlbE9mZnNldCA9IGdldFRleHRPZmZzZXRCeVJhZGl1cyhyYWRpdXNTY2FsZSwgZGF0YS5nZXRSYWRpdXMsIG1hcFN0YXRlKTtcbiAgICBjb25zdCBleHRlbnNpb25zID0gW1xuICAgICAgLi4uZGVmYXVsdExheWVyUHJvcHMuZXh0ZW5zaW9ucyxcbiAgICAgIGJydXNoaW5nRXh0ZW5zaW9uLFxuICAgICAgLi4uKHVzZUFycm93TGF5ZXIgPyBbYXJyb3dDUFVGaWx0ZXJFeHRlbnNpb25dIDogW10pXG4gICAgXTtcblxuICAgIGNvbnN0IHNoYXJlZFByb3BzID0ge1xuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGRhdGEuZ2V0RmlsdGVyVmFsdWUsXG4gICAgICBleHRlbnNpb25zLFxuICAgICAgZmlsdGVyUmFuZ2U6IGRlZmF1bHRMYXllclByb3BzLmZpbHRlclJhbmdlLFxuICAgICAgdmlzaWJsZTogZGVmYXVsdExheWVyUHJvcHMudmlzaWJsZSxcbiAgICAgIC4uLmJydXNoaW5nUHJvcHNcbiAgICB9O1xuICAgIGNvbnN0IGhvdmVyZWRPYmplY3QgPSB0aGlzLmhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SG92ZXJlZCk7XG4gICAgY29uc3Qge3Nob3dOZWlnaGJvck9uSG92ZXIsIGFsbG93SG92ZXJ9ID0gdGhpcy5jb25maWcudmlzQ29uZmlnO1xuICAgIGxldCBuZWlnaGJvcnNEYXRhOiBSZXR1cm5UeXBlPHR5cGVvZiBnZXROZWlnaGJvcnM+ID0gW107XG4gICAgaWYgKGFsbG93SG92ZXIgJiYgc2hvd05laWdoYm9yT25Ib3ZlciAmJiBob3ZlcmVkT2JqZWN0KSB7XG4gICAgICAvLyBmaW5kIG5laWdoYm9yc1xuICAgICAgbmVpZ2hib3JzRGF0YSA9IGdldE5laWdoYm9ycyhcbiAgICAgICAgdGhpcy5jb25maWcuY29sdW1ucy5uZWlnaGJvcnMsXG4gICAgICAgIGRhdGFzZXQuZGF0YUNvbnRhaW5lcixcbiAgICAgICAgaG92ZXJlZE9iamVjdC5pbmRleCxcbiAgICAgICAgdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFzZXQuZGF0YUNvbnRhaW5lcilcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IFNjYXR0ZXJwbG90TGF5ZXJDbGFzczogdHlwZW9mIFNjYXR0ZXJwbG90TGF5ZXIgfCB0eXBlb2YgR2VvQXJyb3dTY2F0dGVycGxvdExheWVyID1cbiAgICAgIFNjYXR0ZXJwbG90TGF5ZXI7XG4gICAgbGV0IGRlY2tMYXllckRhdGEgPSBkYXRhLmRhdGE7XG4gICAgbGV0IGdldFBvc2l0aW9uID0gZGF0YS5nZXRQb3NpdGlvbjtcbiAgICBpZiAodXNlQXJyb3dMYXllcikge1xuICAgICAgU2NhdHRlcnBsb3RMYXllckNsYXNzID0gR2VvQXJyb3dTY2F0dGVycGxvdExheWVyO1xuICAgICAgZGVja0xheWVyRGF0YSA9IGRhdGFzZXQuZGF0YUNvbnRhaW5lci5nZXRUYWJsZSgpO1xuICAgICAgZ2V0UG9zaXRpb24gPSB0aGlzLmdlb0Fycm93VmVjdG9yO1xuICAgIH1cblxuICAgIHJldHVybiBbXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBuZXcgU2NhdHRlcnBsb3RMYXllckNsYXNzKHtcbiAgICAgICAgLi4uZGVmYXVsdExheWVyUHJvcHMsXG4gICAgICAgIC4uLmJydXNoaW5nUHJvcHMsXG4gICAgICAgIC4uLmxheWVyUHJvcHMsXG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIGRhdGE6IGRlY2tMYXllckRhdGEsXG4gICAgICAgIGdldFBvc2l0aW9uLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgLy8gY2lyY2xlcyB3aWxsIGJlIGZsYXQgb24gdGhlIG1hcCB3aGVuIHRoZSBhbHRpdHVkZSBjb2x1bW4gaXMgbm90IHVzZWRcbiAgICAgICAgICBkZXB0aFRlc3Q6ICh0aGlzLmNvbmZpZy5jb2x1bW5zLmFsdGl0dWRlPy5maWVsZElkeCBhcyBudW1iZXIpID4gLTFcbiAgICAgICAgfSxcbiAgICAgICAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuICAgICAgICB1cGRhdGVUcmlnZ2VycyxcbiAgICAgICAgZXh0ZW5zaW9ucyxcbiAgICAgICAgb3BhY2l0eTogaG92ZXJlZE9iamVjdCAmJiBzaG93TmVpZ2hib3JPbkhvdmVyID8gMC4yIDogdGhpcy5jb25maWcudmlzQ29uZmlnLm9wYWNpdHksXG4gICAgICAgIHBpY2thYmxlOiBhbGxvd0hvdmVyLFxuICAgICAgICBhdXRvSGlnaGxpZ2h0OiBmYWxzZVxuICAgICAgfSksXG4gICAgICAvLyBob3ZlciBsYXllclxuICAgICAgLi4uKGhvdmVyZWRPYmplY3RcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBuZXcgU2NhdHRlcnBsb3RMYXllcih7XG4gICAgICAgICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcygpLFxuICAgICAgICAgICAgICAuLi5sYXllclByb3BzLFxuICAgICAgICAgICAgICB2aXNpYmxlOiBkZWZhdWx0TGF5ZXJQcm9wcy52aXNpYmxlLFxuICAgICAgICAgICAgICBkYXRhOiBbLi4ubmVpZ2hib3JzRGF0YSwgaG92ZXJlZE9iamVjdF0sXG4gICAgICAgICAgICAgIGdldExpbmVDb2xvcjogdGhpcy5jb25maWcudmlzQ29uZmlnLnNob3dIaWdobGlnaHRDb2xvclxuICAgICAgICAgICAgICAgID8gdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3JcbiAgICAgICAgICAgICAgICA6IGRhdGEuZ2V0TGluZUNvbG9yLFxuICAgICAgICAgICAgICBnZXRGaWxsQ29sb3I6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5zaG93SGlnaGxpZ2h0Q29sb3JcbiAgICAgICAgICAgICAgICA/IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yXG4gICAgICAgICAgICAgICAgOiBkYXRhLmdldEZpbGxDb2xvcixcbiAgICAgICAgICAgICAgZ2V0UmFkaXVzOiBkYXRhLmdldFJhZGl1cyxcbiAgICAgICAgICAgICAgZ2V0UG9zaXRpb246IGRhdGEuZ2V0UG9zaXRpb25cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC8vIHRleHQgbGFiZWwgbGF5ZXJcbiAgICAgIC4uLnRoaXMucmVuZGVyVGV4dExhYmVsTGF5ZXIoXG4gICAgICAgIHtcbiAgICAgICAgICBnZXRQb3NpdGlvbixcbiAgICAgICAgICBzaGFyZWRQcm9wcyxcbiAgICAgICAgICBnZXRQaXhlbE9mZnNldCxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VycyxcbiAgICAgICAgICBnZXRGaWx0ZXJlZDogZGF0YS5nZXRGaWx0ZXJlZFxuICAgICAgICB9LFxuICAgICAgICB0aGlzLmdlb0Fycm93VmVjdG9yXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgICAgIGRhdGE6IHsuLi5vcHRzLmRhdGEsIGdldFBvc2l0aW9ufVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogb3B0c1xuICAgICAgKVxuICAgIF07XG4gIH1cblxuICBoYXNIb3ZlcmVkT2JqZWN0KG9iamVjdEluZm86IHtpbmRleDogbnVtYmVyfSkge1xuICAgIGlmIChcbiAgICAgIGlzTGF5ZXJIb3ZlcmVkRnJvbUFycm93KG9iamVjdEluZm8sIHRoaXMuaWQpICYmXG4gICAgICBvYmplY3RJbmZvLmluZGV4ID49IDAgJiZcbiAgICAgIHRoaXMuZGF0YUNvbnRhaW5lclxuICAgICkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW5kZXg6IG9iamVjdEluZm8uaW5kZXgsXG4gICAgICAgIHBvc2l0aW9uOiB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IodGhpcy5kYXRhQ29udGFpbmVyKShvYmplY3RJbmZvKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIuaGFzSG92ZXJlZE9iamVjdChvYmplY3RJbmZvKTtcbiAgfVxuXG4gIGdldEhvdmVyRGF0YShcbiAgICBvYmplY3Q6IHtpbmRleDogbnVtYmVyfSB8IGFycm93LlN0cnVjdFJvdyB8IHVuZGVmaW5lZCxcbiAgICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICAgIGZpZWxkczogRmllbGRbXSxcbiAgICBhbmltYXRpb25Db25maWc6IEFuaW1hdGlvbkNvbmZpZyxcbiAgICBob3ZlckluZm86IHtpbmRleDogbnVtYmVyfVxuICApIHtcbiAgICAvLyBmb3IgYXJyb3cgZm9ybWF0LCBgb2JqZWN0YCBpcyB0aGUgQXJyb3cgcm93IG9iamVjdCBQcm94eSxcbiAgICAvLyBhbmQgaW5kZXggaXMgcGFzc2VkIGluIGBob3ZlckluZm9gLlxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZW9BcnJvd1ZlY3RvciA/IGhvdmVySW5mbz8uaW5kZXggOiAob2JqZWN0IGFzIHtpbmRleDogbnVtYmVyfSkuaW5kZXg7XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHJldHVybiBkYXRhQ29udGFpbmVyLnJvdyhpbmRleCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUtBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLGtCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxhQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxVQUFBLEdBQUFDLHNCQUFBLENBQUFMLE9BQUE7QUFPQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFPQSxJQUFBTyxlQUFBLEdBQUFGLHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBUSxVQUFBLEdBQUFSLE9BQUE7QUFPQSxJQUFBUyxlQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxXQUFBLEdBQUFWLE9BQUE7QUFRQSxJQUFBVyxhQUFBLEdBQUFYLE9BQUE7QUFBNkYsU0FBQVksV0FBQUMsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsV0FBQUQsQ0FBQSxPQUFBRSxnQkFBQSxhQUFBRixDQUFBLE9BQUFHLDJCQUFBLGFBQUFKLENBQUEsRUFBQUsseUJBQUEsS0FBQUMsT0FBQSxDQUFBQyxTQUFBLENBQUFOLENBQUEs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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/layers",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.1.0-alpha.6",
4
+ "version": "3.1.0",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -36,14 +36,14 @@
36
36
  "@deck.gl/geo-layers": "^8.9.27",
37
37
  "@deck.gl/layers": "^8.9.27",
38
38
  "@deck.gl/mesh-layers": "^8.9.27",
39
- "@kepler.gl/common-utils": "3.1.0-alpha.6",
40
- "@kepler.gl/constants": "3.1.0-alpha.6",
41
- "@kepler.gl/deckgl-arrow-layers": "3.1.0-alpha.6",
42
- "@kepler.gl/deckgl-layers": "3.1.0-alpha.6",
43
- "@kepler.gl/localization": "3.1.0-alpha.6",
44
- "@kepler.gl/table": "3.1.0-alpha.6",
45
- "@kepler.gl/types": "3.1.0-alpha.6",
46
- "@kepler.gl/utils": "3.1.0-alpha.6",
39
+ "@kepler.gl/common-utils": "3.1.0",
40
+ "@kepler.gl/constants": "3.1.0",
41
+ "@kepler.gl/deckgl-arrow-layers": "3.1.0",
42
+ "@kepler.gl/deckgl-layers": "3.1.0",
43
+ "@kepler.gl/localization": "3.1.0",
44
+ "@kepler.gl/table": "3.1.0",
45
+ "@kepler.gl/types": "3.1.0",
46
+ "@kepler.gl/utils": "3.1.0",
47
47
  "@loaders.gl/arrow": "^4.3.2",
48
48
  "@loaders.gl/core": "^4.3.2",
49
49
  "@loaders.gl/gis": "^4.3.2",
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  // Copyright contributors to the kepler.gl project
3
3
 
4
- import window from 'global/window';
4
+ import Window from 'global/window';
5
5
  import {BrushingExtension} from '@deck.gl/extensions';
6
6
  import GL from '@luma.gl/constants';
7
7
 
@@ -65,12 +65,11 @@ export const SVG_ICON_URL = `${KEPLER_UNFOLDED_BUCKET}/icons/svg-icons.json`;
65
65
  export const iconPosAccessor =
66
66
  ({lat, lng, altitude}: IconLayerColumnsConfig) =>
67
67
  (dc: DataContainerInterface) =>
68
- d =>
69
- [
70
- dc.valueAt(d.index, lng.fieldIdx),
71
- dc.valueAt(d.index, lat.fieldIdx),
72
- altitude?.fieldIdx > -1 ? dc.valueAt(d.index, altitude.fieldIdx) : 0
73
- ];
68
+ d => [
69
+ dc.valueAt(d.index, lng.fieldIdx),
70
+ dc.valueAt(d.index, lat.fieldIdx),
71
+ altitude?.fieldIdx > -1 ? dc.valueAt(d.index, altitude.fieldIdx) : 0
72
+ ];
74
73
 
75
74
  export const iconAccessor =
76
75
  ({icon}: IconLayerColumnsConfig) =>
@@ -205,9 +204,8 @@ export default class IconLayer extends Layer {
205
204
  cache: 'no-cache'
206
205
  };
207
206
 
208
- if (window.fetch && this.svgIconUrl) {
209
- window
210
- .fetch(this.svgIconUrl, fetchConfig)
207
+ if (Window.fetch && this.svgIconUrl) {
208
+ Window.fetch(this.svgIconUrl, fetchConfig)
211
209
  .then(response => response.json())
212
210
  .then((parsed: {svgIcons?: any[]} = {}) => {
213
211
  this.setSvgIcons(parsed.svgIcons);
@@ -40,7 +40,7 @@ import {default as S2GeometryLayer} from './s2-geometry-layer/s2-geometry-layer'
40
40
  export {defaultElevation as s2DefaultElevation} from './s2-geometry-layer/s2-geometry-layer';
41
41
  export {getS2Center} from './s2-geometry-layer/s2-utils';
42
42
  export {default as AggregationLayer} from './aggregation-layer';
43
- // import {default as VectorTileLayer} from './vector-tile/vector-tile-layer';
43
+ import {default as VectorTileLayer} from './vector-tile/vector-tile-layer';
44
44
 
45
45
  export {default as VectorTileIcon} from './vector-tile/vector-tile-icon';
46
46
  export {default as VectorTileLayer} from './vector-tile/vector-tile-layer';
@@ -72,8 +72,8 @@ export const KeplerGlLayers = {
72
72
  H3Layer,
73
73
  ScenegraphLayer,
74
74
  TripLayer,
75
- S2GeometryLayer
76
- // VectorTileLayer
75
+ S2GeometryLayer,
76
+ VectorTileLayer
77
77
  };
78
78
 
79
79
  export type LayerClassesType = typeof LayerClasses;
@@ -90,8 +90,8 @@ export const LayerClasses = {
90
90
  [LAYER_TYPES.hexagonId]: H3Layer,
91
91
  [LAYER_TYPES['3D']]: ScenegraphLayer,
92
92
  [LAYER_TYPES.trip]: TripLayer,
93
- [LAYER_TYPES.s2]: S2GeometryLayer
94
- // [LAYER_TYPES['vectorTile']]: VectorTileLayer
93
+ [LAYER_TYPES.s2]: S2GeometryLayer,
94
+ [LAYER_TYPES['vectorTile']]: VectorTileLayer
95
95
  };
96
96
 
97
97
  export * from './mapbox-utils';
@@ -25,6 +25,7 @@ import {
25
25
  import {default as KeplerTable} from '@kepler.gl/table';
26
26
  import PointLayerIcon from './point-layer-icon';
27
27
  import {
28
+ DatasetType,
28
29
  LAYER_VIS_CONFIGS,
29
30
  DEFAULT_LAYER_COLOR,
30
31
  CHANNEL_SCALES,
@@ -321,7 +322,7 @@ export default class PointLayer extends Layer {
321
322
  return this;
322
323
  }
323
324
 
324
- static findDefaultLayerProps({fieldPairs = []}: KeplerTable) {
325
+ static findDefaultLayerProps({fieldPairs = [], type}: KeplerTable) {
325
326
  const props: {
326
327
  label: string;
327
328
  color?: RGBColor;
@@ -329,6 +330,10 @@ export default class PointLayer extends Layer {
329
330
  columns?: PointLayerColumnsConfig;
330
331
  }[] = [];
331
332
 
333
+ if (type === DatasetType.VECTOR_TILE) {
334
+ return {props};
335
+ }
336
+
332
337
  // Make layer for each pair
333
338
  fieldPairs.forEach(pair => {
334
339
  const latField = pair.pair.lat;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/localization",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.1.0-alpha.6",
4
+ "version": "3.1.0",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",