@kepler.gl/components 3.3.0-alpha.6 → 3.3.0-alpha.8

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 (165) hide show
  1. package/dist/cjs/common/data-table/cell-size.js +40 -23
  2. package/dist/cjs/common/data-table/column-statistics-categoric.js +40 -0
  3. package/dist/cjs/common/data-table/column-statistics-components.js +65 -0
  4. package/dist/cjs/common/data-table/column-statistics-numeric.js +87 -0
  5. package/dist/cjs/common/data-table/column-statistics-time.js +69 -0
  6. package/dist/cjs/common/data-table/grid.js +2 -2
  7. package/dist/cjs/common/data-table/header-cell.js +123 -44
  8. package/dist/cjs/common/data-table/index.js +104 -31
  9. package/dist/cjs/common/file-uploader/file-upload.js +250 -40
  10. package/dist/cjs/common/histogram-plot.js +1 -1
  11. package/dist/cjs/common/icons/circle.js +54 -0
  12. package/dist/cjs/common/icons/{arrow-down-solid.js → draw-point.js} +21 -11
  13. package/dist/cjs/common/icons/index.js +22 -1
  14. package/dist/cjs/common/icons/line-string.js +60 -0
  15. package/dist/cjs/common/item-selector/item-selector.js +2 -2
  16. package/dist/cjs/common/portaled.js +3 -3
  17. package/dist/cjs/common/time-range-slider.js +2 -2
  18. package/dist/cjs/common/timeline-slider.js +2 -2
  19. package/dist/cjs/common/toolbar-item.js +24 -3
  20. package/dist/cjs/editor/editor.js +27 -9
  21. package/dist/cjs/editor/feature-action-panel.js +34 -12
  22. package/dist/cjs/editor/feature-properties-editor.js +215 -0
  23. package/dist/cjs/editor/filter-feature-badges.js +92 -0
  24. package/dist/cjs/filters/filter-panels/polygon-filter-panel.js +2 -2
  25. package/dist/cjs/filters/time-widget.js +2 -2
  26. package/dist/cjs/index.js +33 -1
  27. package/dist/cjs/kepler-gl.js +20 -3
  28. package/dist/cjs/map/layer-hover-info.js +2 -2
  29. package/dist/cjs/map/map-control-toolbar.js +2 -2
  30. package/dist/cjs/map/map-control.js +14 -8
  31. package/dist/cjs/map/map-draw-panel.js +74 -15
  32. package/dist/cjs/map/theme-toggle-button.js +64 -0
  33. package/dist/cjs/map-container.js +17 -6
  34. package/dist/cjs/map-view-state-context.js +3 -3
  35. package/dist/cjs/modal-container.js +3 -2
  36. package/dist/cjs/modals/cloud-components/cloud-item.js +55 -7
  37. package/dist/cjs/modals/cloud-components/cloud-item.spec.js +75 -3
  38. package/dist/cjs/modals/cloud-components/cloud-maps.js +2 -1
  39. package/dist/cjs/modals/cloud-components/cloud-storage-disclaimer.js +24 -0
  40. package/dist/cjs/modals/cloud-tile.js +82 -39
  41. package/dist/cjs/modals/data-table-modal.js +37 -25
  42. package/dist/cjs/modals/export-video-modal.js +28 -1
  43. package/dist/cjs/modals/export-video-modal.spec.js +56 -10
  44. package/dist/cjs/modals/globe-export-video-container.js +19 -3
  45. package/dist/cjs/modals/globe-export-video-preview.js +25 -7
  46. package/dist/cjs/modals/hubble-utils.js +8 -3
  47. package/dist/cjs/modals/image-modal-container.js +2 -2
  48. package/dist/cjs/modals/load-data-modal.js +3 -3
  49. package/dist/cjs/modals/load-storage-map.js +9 -6
  50. package/dist/cjs/modals/save-map-modal.js +4 -3
  51. package/dist/cjs/modals/share-map-modal.js +5 -4
  52. package/dist/cjs/modals/swipe-composite-utils.js +9 -1
  53. package/dist/cjs/modals/swipe-composite-utils.spec.js +69 -0
  54. package/dist/cjs/modals/swipe-export-video-preview.js +9 -5
  55. package/dist/cjs/plot-container.js +12 -5
  56. package/dist/cjs/side-panel/common/dataset-info.js +2 -2
  57. package/dist/cjs/side-panel/filter-panel/filter-panel.js +2 -2
  58. package/dist/cjs/side-panel/layer-manager.js +11 -3
  59. package/dist/cjs/side-panel/layer-panel/custom-palette.js +2 -2
  60. package/dist/cjs/side-panel/layer-panel/dataset-layer-section.js +11 -3
  61. package/dist/cjs/side-panel/layer-panel/layer-configurator.js +74 -31
  62. package/dist/cjs/side-panel/map-style-panel/globe-config-panel.js +90 -25
  63. package/dist/common/data-table/column-statistics-categoric.d.ts +9 -0
  64. package/dist/common/data-table/column-statistics-components.d.ts +31 -0
  65. package/dist/common/data-table/column-statistics-numeric.d.ts +18 -0
  66. package/dist/common/data-table/column-statistics-time.d.ts +19 -0
  67. package/dist/common/data-table/header-cell.d.ts +7 -5
  68. package/dist/common/data-table/index.d.ts +7 -24
  69. package/dist/common/histogram-plot.d.ts +24 -1
  70. package/dist/common/icons/{arrow-down-solid.d.ts → circle.d.ts} +2 -1
  71. package/dist/common/icons/draw-point.d.ts +10 -0
  72. package/dist/common/icons/index.d.ts +3 -0
  73. package/dist/common/icons/line-string.d.ts +10 -0
  74. package/dist/common/toolbar-item.d.ts +2 -0
  75. package/dist/editor/editor.d.ts +1 -0
  76. package/dist/editor/feature-action-panel.d.ts +1 -0
  77. package/dist/editor/feature-properties-editor.d.ts +8 -0
  78. package/dist/editor/filter-feature-badges.d.ts +12 -0
  79. package/dist/esm/common/data-table/cell-size.js +40 -23
  80. package/dist/esm/common/data-table/column-statistics-categoric.js +33 -0
  81. package/dist/esm/common/data-table/column-statistics-components.js +59 -0
  82. package/dist/esm/common/data-table/column-statistics-numeric.js +78 -0
  83. package/dist/esm/common/data-table/column-statistics-time.js +60 -0
  84. package/dist/esm/common/data-table/grid.js +2 -2
  85. package/dist/esm/common/data-table/header-cell.js +125 -46
  86. package/dist/esm/common/data-table/index.js +104 -31
  87. package/dist/esm/common/file-uploader/file-upload.js +251 -41
  88. package/dist/esm/common/histogram-plot.js +1 -1
  89. package/dist/esm/common/icons/circle.js +48 -0
  90. package/dist/esm/common/icons/draw-point.js +44 -0
  91. package/dist/esm/common/icons/index.js +4 -1
  92. package/dist/esm/common/icons/line-string.js +54 -0
  93. package/dist/esm/common/item-selector/item-selector.js +2 -2
  94. package/dist/esm/common/portaled.js +3 -3
  95. package/dist/esm/common/time-range-slider.js +2 -2
  96. package/dist/esm/common/timeline-slider.js +2 -2
  97. package/dist/esm/common/toolbar-item.js +24 -3
  98. package/dist/esm/editor/editor.js +27 -9
  99. package/dist/esm/editor/feature-action-panel.js +37 -15
  100. package/dist/esm/editor/feature-properties-editor.js +208 -0
  101. package/dist/esm/editor/filter-feature-badges.js +85 -0
  102. package/dist/esm/filters/filter-panels/polygon-filter-panel.js +2 -2
  103. package/dist/esm/filters/time-widget.js +2 -2
  104. package/dist/esm/index.js +5 -1
  105. package/dist/esm/kepler-gl.js +20 -3
  106. package/dist/esm/map/layer-hover-info.js +2 -2
  107. package/dist/esm/map/map-control-toolbar.js +2 -2
  108. package/dist/esm/map/map-control.js +14 -8
  109. package/dist/esm/map/map-draw-panel.js +72 -11
  110. package/dist/esm/map/theme-toggle-button.js +55 -0
  111. package/dist/esm/map-container.js +17 -6
  112. package/dist/esm/map-view-state-context.js +3 -3
  113. package/dist/esm/modal-container.js +3 -2
  114. package/dist/esm/modals/cloud-components/cloud-item.js +53 -7
  115. package/dist/esm/modals/cloud-components/cloud-item.spec.js +76 -4
  116. package/dist/esm/modals/cloud-components/cloud-maps.js +2 -1
  117. package/dist/esm/modals/cloud-components/cloud-storage-disclaimer.js +19 -0
  118. package/dist/esm/modals/cloud-tile.js +82 -39
  119. package/dist/esm/modals/data-table-modal.js +38 -26
  120. package/dist/esm/modals/export-video-modal.js +29 -2
  121. package/dist/esm/modals/export-video-modal.spec.js +56 -10
  122. package/dist/esm/modals/globe-export-video-container.js +20 -4
  123. package/dist/esm/modals/globe-export-video-preview.js +26 -8
  124. package/dist/esm/modals/hubble-utils.js +8 -3
  125. package/dist/esm/modals/image-modal-container.js +2 -2
  126. package/dist/esm/modals/load-data-modal.js +3 -3
  127. package/dist/esm/modals/load-storage-map.js +8 -3
  128. package/dist/esm/modals/save-map-modal.js +4 -3
  129. package/dist/esm/modals/share-map-modal.js +5 -4
  130. package/dist/esm/modals/swipe-composite-utils.js +9 -1
  131. package/dist/esm/modals/swipe-composite-utils.spec.js +67 -0
  132. package/dist/esm/modals/swipe-export-video-preview.js +8 -4
  133. package/dist/esm/plot-container.js +12 -5
  134. package/dist/esm/side-panel/common/dataset-info.js +2 -2
  135. package/dist/esm/side-panel/filter-panel/filter-panel.js +2 -2
  136. package/dist/esm/side-panel/layer-manager.js +11 -3
  137. package/dist/esm/side-panel/layer-panel/custom-palette.js +2 -2
  138. package/dist/esm/side-panel/layer-panel/dataset-layer-section.js +11 -3
  139. package/dist/esm/side-panel/layer-panel/layer-configurator.js +74 -31
  140. package/dist/esm/side-panel/map-style-panel/globe-config-panel.js +90 -25
  141. package/dist/index.d.ts +8 -0
  142. package/dist/kepler-gl.d.ts +3 -0
  143. package/dist/map/map-control.d.ts +6 -2
  144. package/dist/map/map-draw-panel.d.ts +1 -0
  145. package/dist/map/theme-toggle-button.d.ts +18 -0
  146. package/dist/map-container.d.ts +1 -0
  147. package/dist/modals/cloud-components/cloud-item.d.ts +2 -1
  148. package/dist/modals/cloud-components/cloud-storage-disclaimer.d.ts +2 -0
  149. package/dist/modals/data-table-modal.d.ts +1 -0
  150. package/dist/modals/globe-export-video-container.d.ts +2 -0
  151. package/dist/modals/globe-export-video-preview.d.ts +3 -0
  152. package/dist/modals/hubble-utils.d.ts +2 -1
  153. package/dist/modals/swipe-composite-utils.d.ts +1 -1
  154. package/dist/modals/swipe-composite-utils.spec.d.ts +1 -0
  155. package/package.json +20 -21
  156. package/dist/cjs/modals/cloud-components/provider-loading.js +0 -20
  157. package/dist/cjs/modals/storage-map-viewer.js +0 -98
  158. package/dist/cjs/side-panel/cloud-storage-dropdown.js +0 -40
  159. package/dist/esm/common/icons/arrow-down-solid.js +0 -34
  160. package/dist/esm/modals/cloud-components/provider-loading.js +0 -15
  161. package/dist/esm/modals/storage-map-viewer.js +0 -93
  162. package/dist/esm/side-panel/cloud-storage-dropdown.js +0 -33
  163. package/dist/modals/cloud-components/provider-loading.d.ts +0 -2
  164. package/dist/modals/storage-map-viewer.d.ts +0 -21
  165. package/dist/side-panel/cloud-storage-dropdown.d.ts +0 -6
@@ -18,7 +18,7 @@ var _reactDom = require("react-dom");
18
18
  var _styledComponents = _interopRequireDefault(require("styled-components"));
19
19
  var _window = _interopRequireDefault(require("global/window"));
20
20
  var _classnames = _interopRequireDefault(require("classnames"));
21
- var _get = _interopRequireDefault(require("lodash/get"));
21
+ var _get = _interopRequireDefault(require("es-toolkit/compat/get"));
22
22
  var _reselect = require("reselect");
23
23
  var _featureActionPanel = _interopRequireDefault(require("./feature-action-panel"));
24
24
  var _constants = require("@kepler.gl/constants");
@@ -46,6 +46,7 @@ function EditorFactory(FeatureActionPanel) {
46
46
  currentFilter = _ref.currentFilter,
47
47
  onClose = _ref.onClose,
48
48
  onDeleteFeature = _ref.onDeleteFeature,
49
+ onSetFeatureProperties = _ref.onSetFeatureProperties,
49
50
  onToggleLayer = _ref.onToggleLayer,
50
51
  position = _ref.position;
51
52
  return /*#__PURE__*/_react["default"].createElement(_context.RootContext.Consumer, null, function (context) {
@@ -60,6 +61,7 @@ function EditorFactory(FeatureActionPanel) {
60
61
  currentFilter: currentFilter,
61
62
  onClose: onClose,
62
63
  onDeleteFeature: onDeleteFeature,
64
+ onSetFeatureProperties: onSetFeatureProperties,
63
65
  onToggleLayer: onToggleLayer,
64
66
  position: position || null
65
67
  }) : null), (_context$current = context === null || context === void 0 ? void 0 : context.current) !== null && _context$current !== void 0 ? _context$current : document.body));
@@ -108,20 +110,32 @@ function EditorFactory(FeatureActionPanel) {
108
110
  var _document$activeEleme;
109
111
  return ((_document$activeEleme = document.activeElement) === null || _document$activeEleme === void 0 ? void 0 : _document$activeEleme.id) === DECKGL_RENDER_LAYER;
110
112
  });
113
+ (0, _defineProperty2["default"])(_this, "isTypingTarget", function (target) {
114
+ var element = target;
115
+ if (!element) {
116
+ return false;
117
+ }
118
+ var tagName = element.tagName;
119
+ return tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT' || Boolean(element.isContentEditable);
120
+ });
111
121
  (0, _defineProperty2["default"])(_this, "_onKeyPressed", function (event) {
122
+ var isEscape = event.keyCode === _constants.KeyEvent.DOM_VK_ESCAPE || event.key === 'Escape';
123
+ if (isEscape && !_this.isTypingTarget(event.target)) {
124
+ var drawing = _layers.EditorLayerUtils.isDrawingActive(true, _this.props.editor.mode);
125
+ if (drawing) {
126
+ _this.props.onSetEditorMode(_constants.EDITOR_MODES.EDIT);
127
+ _this.props.onSelect(null);
128
+ } else if (_this.isInFocus()) {
129
+ _this.props.onSelect(null);
130
+ }
131
+ return;
132
+ }
112
133
  if (_this.isInFocus()) {
113
134
  switch (event.keyCode) {
114
135
  case _constants.KeyEvent.DOM_VK_DELETE:
115
136
  case _constants.KeyEvent.DOM_VK_BACK_SPACE:
116
137
  _this._onDeleteSelectedFeature();
117
138
  break;
118
- case _constants.KeyEvent.DOM_VK_ESCAPE:
119
- // reset active drawing
120
- if (_layers.EditorLayerUtils.isDrawingActive(true, _this.props.editor.mode)) {
121
- _this.props.onSetEditorMode(_constants.EDITOR_MODES.EDIT);
122
- }
123
- _this.props.onSelect(null);
124
- break;
125
139
  default:
126
140
  break;
127
141
  }
@@ -145,6 +159,9 @@ function EditorFactory(FeatureActionPanel) {
145
159
  _this.props.onTogglePolygonFilter(layer, selectedFeature);
146
160
  }
147
161
  });
162
+ (0, _defineProperty2["default"])(_this, "_onSetFeatureProperties", function (feature, properties) {
163
+ _this.props.onSetFeatureProperties(feature, properties);
164
+ });
148
165
  return _this;
149
166
  }
150
167
  (0, _inherits2["default"])(EditorUnmemoized, _Component);
@@ -183,6 +200,7 @@ function EditorFactory(FeatureActionPanel) {
183
200
  currentFilter: currentFilter,
184
201
  onClose: this._closeFeatureAction,
185
202
  onDeleteFeature: this._onDeleteSelectedFeature,
203
+ onSetFeatureProperties: this._onSetFeatureProperties,
186
204
  onToggleLayer: this._togglePolygonFilter,
187
205
  position: position || null,
188
206
  className: className,
@@ -197,4 +215,4 @@ function EditorFactory(FeatureActionPanel) {
197
215
  Editor.displayName = 'Editor';
198
216
  return Editor;
199
217
  }
200
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3REb20iLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfd2luZG93IiwiX2NsYXNzbmFtZXMiLCJfZ2V0IiwiX3Jlc2VsZWN0IiwiX2ZlYXR1cmVBY3Rpb25QYW5lbCIsIl9jb25zdGFudHMiLCJfbGF5ZXJzIiwiX2NvbnRleHQiLCJfdGVtcGxhdGVPYmplY3QiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJERUNLR0xfUkVOREVSX0xBWUVSIiwiU3R5bGVkV3JhcHBlciIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwiZWRpdG9yTGF5ZXJGaWx0ZXIiLCJsYXllciIsIkVESVRPUl9BVkFJTEFCTEVfTEFZRVJTIiwiaW5jbHVkZXMiLCJ0eXBlIiwiRWRpdG9yRmFjdG9yeSIsImRlcHMiLCJGZWF0dXJlQWN0aW9uUGFuZWxGYWN0b3J5IiwiRmVhdHVyZUFjdGlvblBhbmVsIiwiUG9ydGFsRWRpdG9yIiwiX3JlZiIsInZpc2libGVQYW5lbCIsImNsYXNzTmFtZSIsInN0eWxlIiwic2VsZWN0ZWRGZWF0dXJlIiwiZGF0YXNldHMiLCJsYXllcnMiLCJjdXJyZW50RmlsdGVyIiwib25DbG9zZSIsIm9uRGVsZXRlRmVhdHVyZSIsIm9uVG9nZ2xlTGF5ZXIiLCJwb3NpdGlvbiIsImNyZWF0ZUVsZW1lbnQiLCJSb290Q29udGV4dCIsIkNvbnN1bWVyIiwiY29udGV4dCIsIl9jb250ZXh0JGN1cnJlbnQiLCJGcmFnbWVudCIsImNyZWF0ZVBvcnRhbCIsImNsYXNzbmFtZXMiLCJjdXJyZW50IiwiZG9jdW1lbnQiLCJib2R5IiwiRWRpdG9yVW5tZW1vaXplZCIsIl9Db21wb25lbnQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNvbmNhdCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJwcm9wcyIsImZpbHRlcnMiLCJjcmVhdGVTZWxlY3RvciIsImZpbHRlclNlbGVjdG9yIiwic2VsZWN0ZWRGZWF0dXJlSWRTZWxlY3RvciIsInNlbGVjdGVkRmVhdHVyZUlkIiwiZmluZCIsInZhbHVlIiwiaWQiLCJsYXllclNlbGVjdG9yIiwiZmlsdGVyIiwiX2xheWVyJGNvbmZpZyIsImNvbmZpZyIsImlzVmlzaWJsZSIsIkdFT0NPREVSX0xBWUVSX0lEIiwiZWRpdG9yRmVhdHVyZVNlbGVjdG9yIiwiZWRpdG9yRmVhdHVyZXMiLCJGSUxURVJfVFlQRVMiLCJwb2x5Z29uIiwibWFwIiwiX2RvY3VtZW50JGFjdGl2ZUVsZW1lIiwiYWN0aXZlRWxlbWVudCIsImV2ZW50IiwiaXNJbkZvY3VzIiwia2V5Q29kZSIsIktleUV2ZW50IiwiRE9NX1ZLX0RFTEVURSIsIkRPTV9WS19CQUNLX1NQQUNFIiwiX29uRGVsZXRlU2VsZWN0ZWRGZWF0dXJlIiwiRE9NX1ZLX0VTQ0FQRSIsIkVkaXRvckxheWVyVXRpbHMiLCJpc0RyYXdpbmdBY3RpdmUiLCJlZGl0b3IiLCJtb2RlIiwib25TZXRFZGl0b3JNb2RlIiwiRURJVE9SX01PREVTIiwiRURJVCIsIm9uU2VsZWN0Iiwib25Ub2dnbGVQb2x5Z29uRmlsdGVyIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJjb21wb25lbnREaWRNb3VudCIsIldpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJfb25LZXlQcmVzc2VkIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVuZGVyIiwiX3RoaXMkcHJvcHMiLCJpbmRleCIsInNlbGVjdGlvbkNvbnRleHQiLCJjdXJyZW50RmlsdGVyU2VsZWN0b3IiLCJhdmFpbGFibGVMYXllcnMiLCJhdmFpbGFibGVMYXllcnNTZWxlY3RvciIsIl9yZWYyIiwicmlnaHRDbGljayIsIm1hcEluZGV4IiwiX2Nsb3NlRmVhdHVyZUFjdGlvbiIsIl90b2dnbGVQb2x5Z29uRmlsdGVyIiwiQ29tcG9uZW50IiwiRWRpdG9yIiwiUmVhY3QiLCJtZW1vIiwiZGlzcGxheU5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWRpdG9yL2VkaXRvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBDU1NQcm9wZXJ0aWVzLCBLZXlib2FyZEV2ZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge2NyZWF0ZVBvcnRhbH0gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFdpbmRvdyBmcm9tICdnbG9iYWwvd2luZG93JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCB7Y3JlYXRlU2VsZWN0b3J9IGZyb20gJ3Jlc2VsZWN0JztcbmltcG9ydCBGZWF0dXJlQWN0aW9uUGFuZWxGYWN0b3J5LCB7RmVhdHVyZUFjdGlvblBhbmVsUHJvcHN9IGZyb20gJy4vZmVhdHVyZS1hY3Rpb24tcGFuZWwnO1xuaW1wb3J0IHtcbiAgRURJVE9SX0FWQUlMQUJMRV9MQVlFUlMsXG4gIEZJTFRFUl9UWVBFUyxcbiAgRURJVE9SX01PREVTLFxuICBHRU9DT0RFUl9MQVlFUl9JRCxcbiAgS2V5RXZlbnRcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtMYXllciwgRWRpdG9yTGF5ZXJVdGlsc30gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtGaWx0ZXIsIEZlYXR1cmVTZWxlY3Rpb25Db250ZXh0LCBGZWF0dXJlfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RmVhdHVyZSBhcyBFZGl0YWJsZUZlYXR1cmUsIFBvbHlnb259IGZyb20gJ0BkZWNrLmdsLWNvbW11bml0eS9lZGl0YWJsZS1sYXllcnMnO1xuaW1wb3J0IHtEYXRhc2V0c30gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5cbmltcG9ydCB7Um9vdENvbnRleHR9IGZyb20gJy4uL2NvbnRleHQnO1xuXG5jb25zdCBERUNLR0xfUkVOREVSX0xBWUVSID0gJ2RlZmF1bHQtZGVja2dsLW92ZXJsYXktd3JhcHBlcic7XG5cbmNvbnN0IFN0eWxlZFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gO1xuXG5jb25zdCBlZGl0b3JMYXllckZpbHRlciA9IChsYXllcjogTGF5ZXIpID0+IEVESVRPUl9BVkFJTEFCTEVfTEFZRVJTLmluY2x1ZGVzKGxheWVyLnR5cGUgfHwgJycpO1xuXG5FZGl0b3JGYWN0b3J5LmRlcHMgPSBbRmVhdHVyZUFjdGlvblBhbmVsRmFjdG9yeV07XG5cbmludGVyZmFjZSBFZGl0b3JQcm9wcyB7XG4gIGZpbHRlcnM6IEZpbHRlcltdO1xuICBsYXllcnM6IExheWVyW107XG4gIGRhdGFzZXRzOiBEYXRhc2V0cztcbiAgZWRpdG9yOiB7c2VsZWN0ZWRGZWF0dXJlOiBGZWF0dXJlOyBtb2RlOiBzdHJpbmc7IHNlbGVjdGlvbkNvbnRleHQ/OiBGZWF0dXJlU2VsZWN0aW9uQ29udGV4dH07XG4gIGluZGV4OiBudW1iZXI7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc3R5bGU6IENTU1Byb3BlcnRpZXM7XG4gIG9uU2VsZWN0OiAoZjogRmVhdHVyZSB8IG51bGwpID0+IGFueTtcbiAgb25TZXRFZGl0b3JNb2RlOiAobTogYW55KSA9PiB2b2lkO1xuICBvbkRlbGV0ZUZlYXR1cmU6IChmOiBGZWF0dXJlKSA9PiBhbnk7XG4gIG9uVG9nZ2xlUG9seWdvbkZpbHRlcjogKGw6IExheWVyLCBmOiBGZWF0dXJlKSA9PiBhbnk7XG59XG5cbmV4cG9ydCB0eXBlIFBvcnRhbEVkaXRvclByb3BzID0gRmVhdHVyZUFjdGlvblBhbmVsUHJvcHMgJiB7XG4gIHZpc2libGVQYW5lbDogYm9vbGVhbjtcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRWRpdG9yRmFjdG9yeShcbiAgRmVhdHVyZUFjdGlvblBhbmVsOiBSZWFjdC5GQzxGZWF0dXJlQWN0aW9uUGFuZWxQcm9wcz5cbik6IFJlYWN0LkNvbXBvbmVudENsYXNzPEVkaXRvclByb3BzPiB7XG4gIGNvbnN0IFBvcnRhbEVkaXRvcjogUmVhY3QuRkM8UG9ydGFsRWRpdG9yUHJvcHM+ID0gKHtcbiAgICB2aXNpYmxlUGFuZWwsXG4gICAgY2xhc3NOYW1lLFxuICAgIHN0eWxlLFxuICAgIHNlbGVjdGVkRmVhdHVyZSxcbiAgICBkYXRhc2V0cyxcbiAgICBsYXllcnMsXG4gICAgY3VycmVudEZpbHRlcixcbiAgICBvbkNsb3NlLFxuICAgIG9uRGVsZXRlRmVhdHVyZSxcbiAgICBvblRvZ2dsZUxheWVyLFxuICAgIHBvc2l0aW9uXG4gIH0pID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPFJvb3RDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7Y29udGV4dCA9PiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHtjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICAgIDxTdHlsZWRXcmFwcGVyIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnZWRpdG9yJywgY2xhc3NOYW1lKX0gc3R5bGU9e3N0eWxlfT5cbiAgICAgICAgICAgICAgICB7dmlzaWJsZVBhbmVsID8gKFxuICAgICAgICAgICAgICAgICAgPEZlYXR1cmVBY3Rpb25QYW5lbFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEZlYXR1cmU9e3NlbGVjdGVkRmVhdHVyZSBhcyBFZGl0YWJsZUZlYXR1cmU8UG9seWdvbj59XG4gICAgICAgICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgICAgICAgbGF5ZXJzPXtsYXllcnN9XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGaWx0ZXI9e2N1cnJlbnRGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlRmVhdHVyZT17b25EZWxldGVGZWF0dXJlfVxuICAgICAgICAgICAgICAgICAgICBvblRvZ2dsZUxheWVyPXtvblRvZ2dsZUxheWVyfVxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj17cG9zaXRpb24gfHwgbnVsbH1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDwvU3R5bGVkV3JhcHBlcj4sXG4gICAgICAgICAgICAgIGNvbnRleHQ/LmN1cnJlbnQgPz8gZG9jdW1lbnQuYm9keVxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvUm9vdENvbnRleHQuQ29uc3VtZXI+XG4gICAgKTtcbiAgfTtcbiAgY2xhc3MgRWRpdG9yVW5tZW1vaXplZCBleHRlbmRzIENvbXBvbmVudDxFZGl0b3JQcm9wcz4ge1xuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7fTtcblxuICAgIHN0YXRpYyBkaXNwbGF5TmFtZSA9ICdFZGl0b3InO1xuXG4gICAgc3RhdGUgPSB7fTtcblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLl9vbktleVByZXNzZWQpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLl9vbktleVByZXNzZWQpO1xuICAgIH1cblxuICAgIGxheWVyU2VsZWN0b3IgPSAocHJvcHM6IEVkaXRvclByb3BzKSA9PiBwcm9wcy5sYXllcnM7XG4gICAgZmlsdGVyU2VsZWN0b3IgPSAocHJvcHM6IEVkaXRvclByb3BzKSA9PiBwcm9wcy5maWx0ZXJzO1xuICAgIHNlbGVjdGVkRmVhdHVyZUlkU2VsZWN0b3IgPSAocHJvcHM6IEVkaXRvclByb3BzKSA9PlxuICAgICAgZ2V0KHByb3BzLCBbJ2VkaXRvcicsICdzZWxlY3RlZEZlYXR1cmUnLCAnaWQnXSk7XG4gICAgZWRpdG9yRmVhdHVyZVNlbGVjdG9yID0gKHByb3BzOiBFZGl0b3JQcm9wcykgPT4gZ2V0KHByb3BzLCBbJ2VkaXRvcicsICdmZWF0dXJlcyddKTtcblxuICAgIGN1cnJlbnRGaWx0ZXJTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5maWx0ZXJTZWxlY3RvcixcbiAgICAgIHRoaXMuc2VsZWN0ZWRGZWF0dXJlSWRTZWxlY3RvcixcbiAgICAgIChmaWx0ZXJzLCBzZWxlY3RlZEZlYXR1cmVJZCkgPT4gZmlsdGVycy5maW5kKGYgPT4gZi52YWx1ZSAmJiBmLnZhbHVlLmlkID09PSBzZWxlY3RlZEZlYXR1cmVJZClcbiAgICApO1xuXG4gICAgYXZhaWxhYmxlTGF5ZXJzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3Rvcih0aGlzLmxheWVyU2VsZWN0b3IsIGxheWVycyA9PlxuICAgICAgbGF5ZXJzXG4gICAgICAgIC5maWx0ZXIoZWRpdG9yTGF5ZXJGaWx0ZXIpXG4gICAgICAgIC5maWx0ZXIobGF5ZXIgPT4gbGF5ZXIuY29uZmlnPy5pc1Zpc2libGUgJiYgbGF5ZXIuaWQgIT09IEdFT0NPREVSX0xBWUVSX0lEKVxuICAgICk7XG5cbiAgICBhbGxGZWF0dXJlc1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmZpbHRlclNlbGVjdG9yLFxuICAgICAgdGhpcy5lZGl0b3JGZWF0dXJlU2VsZWN0b3IsXG4gICAgICAoZmlsdGVycywgZWRpdG9yRmVhdHVyZXMpID0+XG4gICAgICAgIGZpbHRlcnNcbiAgICAgICAgICAuZmlsdGVyKGYgPT4gZi50eXBlID09PSBGSUxURVJfVFlQRVMucG9seWdvbilcbiAgICAgICAgICAubWFwKGYgPT4gZi52YWx1ZSlcbiAgICAgICAgICAuY29uY2F0KGVkaXRvckZlYXR1cmVzKVxuICAgICk7XG5cbiAgICBpc0luRm9jdXMgPSAoKSA9PiBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5pZCA9PT0gREVDS0dMX1JFTkRFUl9MQVlFUjtcblxuICAgIF9vbktleVByZXNzZWQgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzSW5Gb2N1cygpKSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgICAgIGNhc2UgS2V5RXZlbnQuRE9NX1ZLX0RFTEVURTpcbiAgICAgICAgICBjYXNlIEtleUV2ZW50LkRPTV9WS19CQUNLX1NQQUNFOlxuICAgICAgICAgICAgdGhpcy5fb25EZWxldGVTZWxlY3RlZEZlYXR1cmUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgS2V5RXZlbnQuRE9NX1ZLX0VTQ0FQRTpcbiAgICAgICAgICAgIC8vIHJlc2V0IGFjdGl2ZSBkcmF3aW5nXG4gICAgICAgICAgICBpZiAoRWRpdG9yTGF5ZXJVdGlscy5pc0RyYXdpbmdBY3RpdmUodHJ1ZSwgdGhpcy5wcm9wcy5lZGl0b3IubW9kZSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblNldEVkaXRvck1vZGUoRURJVE9SX01PREVTLkVESVQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uU2VsZWN0KG51bGwpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9vbkRlbGV0ZVNlbGVjdGVkRmVhdHVyZSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHtlZGl0b3J9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHtzZWxlY3RlZEZlYXR1cmV9ID0gZWRpdG9yO1xuICAgICAgaWYgKHNlbGVjdGVkRmVhdHVyZSkge1xuICAgICAgICB0aGlzLnByb3BzLm9uRGVsZXRlRmVhdHVyZShzZWxlY3RlZEZlYXR1cmUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfY2xvc2VGZWF0dXJlQWN0aW9uID0gKCkgPT4ge1xuICAgICAgLy8gcmVzZXQgc2VsZWN0aW9uIGNvbnRleHRcbiAgICAgIGNvbnN0IHtzZWxlY3RlZEZlYXR1cmV9ID0gdGhpcy5wcm9wcy5lZGl0b3I7XG4gICAgICB0aGlzLnByb3BzLm9uU2VsZWN0KHNlbGVjdGVkRmVhdHVyZSk7XG4gICAgfTtcblxuICAgIF90b2dnbGVQb2x5Z29uRmlsdGVyID0gKGxheWVyOiBMYXllcikgPT4ge1xuICAgICAgY29uc3Qge3NlbGVjdGVkRmVhdHVyZX0gPSB0aGlzLnByb3BzLmVkaXRvcjtcbiAgICAgIGlmIChzZWxlY3RlZEZlYXR1cmUpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblRvZ2dsZVBvbHlnb25GaWx0ZXIobGF5ZXIsIHNlbGVjdGVkRmVhdHVyZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtjbGFzc05hbWUsIGRhdGFzZXRzLCBlZGl0b3IsIHN0eWxlLCBpbmRleH0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3Qge3NlbGVjdGVkRmVhdHVyZSwgc2VsZWN0aW9uQ29udGV4dH0gPSBlZGl0b3I7XG4gICAgICBjb25zdCBjdXJyZW50RmlsdGVyID0gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBhdmFpbGFibGVMYXllcnMgPSB0aGlzLmF2YWlsYWJsZUxheWVyc1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCB7cmlnaHRDbGljaywgcG9zaXRpb24sIG1hcEluZGV4fSA9IHNlbGVjdGlvbkNvbnRleHQgfHwge307XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxQb3J0YWxFZGl0b3JcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmU9e3NlbGVjdGVkRmVhdHVyZSBhcyBFZGl0YWJsZUZlYXR1cmU8UG9seWdvbj59XG4gICAgICAgICAgdmlzaWJsZVBhbmVsPXtCb29sZWFuKHJpZ2h0Q2xpY2spICYmIHNlbGVjdGVkRmVhdHVyZSAmJiBpbmRleCA9PT0gbWFwSW5kZXh9XG4gICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgIGxheWVycz17YXZhaWxhYmxlTGF5ZXJzfVxuICAgICAgICAgIGN1cnJlbnRGaWx0ZXI9e2N1cnJlbnRGaWx0ZXJ9XG4gICAgICAgICAgb25DbG9zZT17dGhpcy5fY2xvc2VGZWF0dXJlQWN0aW9ufVxuICAgICAgICAgIG9uRGVsZXRlRmVhdHVyZT17dGhpcy5fb25EZWxldGVTZWxlY3RlZEZlYXR1cmV9XG4gICAgICAgICAgb25Ub2dnbGVMYXllcj17dGhpcy5fdG9nZ2xlUG9seWdvbkZpbHRlcn1cbiAgICAgICAgICBwb3NpdGlvbj17cG9zaXRpb24gfHwgbnVsbH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IEVkaXRvciA9IFJlYWN0Lm1lbW8oRWRpdG9yVW5tZW1vaXplZCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWRpdG9yVW5tZW1vaXplZDtcbiAgRWRpdG9yLmRpc3BsYXlOYW1lID0gJ0VkaXRvcic7XG4gIHJldHVybiBFZGl0b3I7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFGLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTSxJQUFBLEdBQUFILHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTyxTQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxtQkFBQSxHQUFBTCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQVMsVUFBQSxHQUFBVCxPQUFBO0FBT0EsSUFBQVUsT0FBQSxHQUFBVixPQUFBO0FBS0EsSUFBQVcsUUFBQSxHQUFBWCxPQUFBO0FBQXVDLElBQUFZLGVBQUEsRUF2QnZDO0FBQ0E7QUFBQSxTQUFBYix3QkFBQWMsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQWhCLHVCQUFBLFlBQUFBLHdCQUFBYyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENBQUEsaUJBQUFBLENBQUEsZ0JBQUFVLE9BQUEsQ0FBQVYsQ0FBQSwwQkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEs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
218
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3REb20iLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfd2luZG93IiwiX2NsYXNzbmFtZXMiLCJfZ2V0IiwiX3Jlc2VsZWN0IiwiX2ZlYXR1cmVBY3Rpb25QYW5lbCIsIl9jb25zdGFudHMiLCJfbGF5ZXJzIiwiX2NvbnRleHQiLCJfdGVtcGxhdGVPYmplY3QiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJERUNLR0xfUkVOREVSX0xBWUVSIiwiU3R5bGVkV3JhcHBlciIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwiZWRpdG9yTGF5ZXJGaWx0ZXIiLCJsYXllciIsIkVESVRPUl9BVkFJTEFCTEVfTEFZRVJTIiwiaW5jbHVkZXMiLCJ0eXBlIiwiRWRpdG9yRmFjdG9yeSIsImRlcHMiLCJGZWF0dXJlQWN0aW9uUGFuZWxGYWN0b3J5IiwiRmVhdHVyZUFjdGlvblBhbmVsIiwiUG9ydGFsRWRpdG9yIiwiX3JlZiIsInZpc2libGVQYW5lbCIsImNsYXNzTmFtZSIsInN0eWxlIiwic2VsZWN0ZWRGZWF0dXJlIiwiZGF0YXNldHMiLCJsYXllcnMiLCJjdXJyZW50RmlsdGVyIiwib25DbG9zZSIsIm9uRGVsZXRlRmVhdHVyZSIsIm9uU2V0RmVhdHVyZVByb3BlcnRpZXMiLCJvblRvZ2dsZUxheWVyIiwicG9zaXRpb24iLCJjcmVhdGVFbGVtZW50IiwiUm9vdENvbnRleHQiLCJDb25zdW1lciIsImNvbnRleHQiLCJfY29udGV4dCRjdXJyZW50IiwiRnJhZ21lbnQiLCJjcmVhdGVQb3J0YWwiLCJjbGFzc25hbWVzIiwiY3VycmVudCIsImRvY3VtZW50IiwiYm9keSIsIkVkaXRvclVubWVtb2l6ZWQiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjb25jYXQiLCJfZGVmaW5lUHJvcGVydHkyIiwicHJvcHMiLCJmaWx0ZXJzIiwiY3JlYXRlU2VsZWN0b3IiLCJmaWx0ZXJTZWxlY3RvciIsInNlbGVjdGVkRmVhdHVyZUlkU2VsZWN0b3IiLCJzZWxlY3RlZEZlYXR1cmVJZCIsImZpbmQiLCJ2YWx1ZSIsImlkIiwibGF5ZXJTZWxlY3RvciIsImZpbHRlciIsIl9sYXllciRjb25maWciLCJjb25maWciLCJpc1Zpc2libGUiLCJHRU9DT0RFUl9MQVlFUl9JRCIsImVkaXRvckZlYXR1cmVTZWxlY3RvciIsImVkaXRvckZlYXR1cmVzIiwiRklMVEVSX1RZUEVTIiwicG9seWdvbiIsIm1hcCIsIl9kb2N1bWVudCRhY3RpdmVFbGVtZSIsImFjdGl2ZUVsZW1lbnQiLCJ0YXJnZXQiLCJlbGVtZW50IiwidGFnTmFtZSIsImlzQ29udGVudEVkaXRhYmxlIiwiZXZlbnQiLCJpc0VzY2FwZSIsImtleUNvZGUiLCJLZXlFdmVudCIsIkRPTV9WS19FU0NBUEUiLCJrZXkiLCJpc1R5cGluZ1RhcmdldCIsImRyYXdpbmciLCJFZGl0b3JMYXllclV0aWxzIiwiaXNEcmF3aW5nQWN0aXZlIiwiZWRpdG9yIiwibW9kZSIsIm9uU2V0RWRpdG9yTW9kZSIsIkVESVRPUl9NT0RFUyIsIkVESVQiLCJvblNlbGVjdCIsImlzSW5Gb2N1cyIsIkRPTV9WS19ERUxFVEUiLCJET01fVktfQkFDS19TUEFDRSIsIl9vbkRlbGV0ZVNlbGVjdGVkRmVhdHVyZSIsIm9uVG9nZ2xlUG9seWdvbkZpbHRlciIsImZlYXR1cmUiLCJwcm9wZXJ0aWVzIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJjb21wb25lbnREaWRNb3VudCIsIldpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJfb25LZXlQcmVzc2VkIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVuZGVyIiwiX3RoaXMkcHJvcHMiLCJpbmRleCIsInNlbGVjdGlvbkNvbnRleHQiLCJjdXJyZW50RmlsdGVyU2VsZWN0b3IiLCJhdmFpbGFibGVMYXllcnMiLCJhdmFpbGFibGVMYXllcnNTZWxlY3RvciIsIl9yZWYyIiwicmlnaHRDbGljayIsIm1hcEluZGV4IiwiX2Nsb3NlRmVhdHVyZUFjdGlvbiIsIl9vblNldEZlYXR1cmVQcm9wZXJ0aWVzIiwiX3RvZ2dsZVBvbHlnb25GaWx0ZXIiLCJDb21wb25lbnQiLCJFZGl0b3IiLCJSZWFjdCIsIm1lbW8iLCJkaXNwbGF5TmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lZGl0b3IvZWRpdG9yLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIENTU1Byb3BlcnRpZXMsIEtleWJvYXJkRXZlbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Y3JlYXRlUG9ydGFsfSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgV2luZG93IGZyb20gJ2dsb2JhbC93aW5kb3cnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgZ2V0IGZyb20gJ2VzLXRvb2xraXQvY29tcGF0L2dldCc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQgRmVhdHVyZUFjdGlvblBhbmVsRmFjdG9yeSwge0ZlYXR1cmVBY3Rpb25QYW5lbFByb3BzfSBmcm9tICcuL2ZlYXR1cmUtYWN0aW9uLXBhbmVsJztcbmltcG9ydCB7XG4gIEVESVRPUl9BVkFJTEFCTEVfTEFZRVJTLFxuICBGSUxURVJfVFlQRVMsXG4gIEVESVRPUl9NT0RFUyxcbiAgR0VPQ09ERVJfTEFZRVJfSUQsXG4gIEtleUV2ZW50XG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7TGF5ZXIsIEVkaXRvckxheWVyVXRpbHN9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7RmlsdGVyLCBGZWF0dXJlU2VsZWN0aW9uQ29udGV4dCwgRmVhdHVyZX0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0ZlYXR1cmUgYXMgRWRpdGFibGVGZWF0dXJlLCBQb2x5Z29ufSBmcm9tICdAZGVjay5nbC1jb21tdW5pdHkvZWRpdGFibGUtbGF5ZXJzJztcbmltcG9ydCB7RGF0YXNldHN9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuXG5pbXBvcnQge1Jvb3RDb250ZXh0fSBmcm9tICcuLi9jb250ZXh0JztcblxuY29uc3QgREVDS0dMX1JFTkRFUl9MQVlFUiA9ICdkZWZhdWx0LWRlY2tnbC1vdmVybGF5LXdyYXBwZXInO1xuXG5jb25zdCBTdHlsZWRXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuY29uc3QgZWRpdG9yTGF5ZXJGaWx0ZXIgPSAobGF5ZXI6IExheWVyKSA9PiBFRElUT1JfQVZBSUxBQkxFX0xBWUVSUy5pbmNsdWRlcyhsYXllci50eXBlIHx8ICcnKTtcblxuRWRpdG9yRmFjdG9yeS5kZXBzID0gW0ZlYXR1cmVBY3Rpb25QYW5lbEZhY3RvcnldO1xuXG5pbnRlcmZhY2UgRWRpdG9yUHJvcHMge1xuICBmaWx0ZXJzOiBGaWx0ZXJbXTtcbiAgbGF5ZXJzOiBMYXllcltdO1xuICBkYXRhc2V0czogRGF0YXNldHM7XG4gIGVkaXRvcjoge3NlbGVjdGVkRmVhdHVyZTogRmVhdHVyZTsgbW9kZTogc3RyaW5nOyBzZWxlY3Rpb25Db250ZXh0PzogRmVhdHVyZVNlbGVjdGlvbkNvbnRleHR9O1xuICBpbmRleDogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHN0eWxlOiBDU1NQcm9wZXJ0aWVzO1xuICBvblNlbGVjdDogKGY6IEZlYXR1cmUgfCBudWxsKSA9PiBhbnk7XG4gIG9uU2V0RWRpdG9yTW9kZTogKG06IGFueSkgPT4gdm9pZDtcbiAgb25EZWxldGVGZWF0dXJlOiAoZjogRmVhdHVyZSkgPT4gYW55O1xuICBvblNldEZlYXR1cmVQcm9wZXJ0aWVzOiAoZjogRmVhdHVyZSwgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IGFueTtcbiAgb25Ub2dnbGVQb2x5Z29uRmlsdGVyOiAobDogTGF5ZXIsIGY6IEZlYXR1cmUpID0+IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgUG9ydGFsRWRpdG9yUHJvcHMgPSBGZWF0dXJlQWN0aW9uUGFuZWxQcm9wcyAmIHtcbiAgdmlzaWJsZVBhbmVsOiBib29sZWFuO1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBFZGl0b3JGYWN0b3J5KFxuICBGZWF0dXJlQWN0aW9uUGFuZWw6IFJlYWN0LkZDPEZlYXR1cmVBY3Rpb25QYW5lbFByb3BzPlxuKTogUmVhY3QuQ29tcG9uZW50Q2xhc3M8RWRpdG9yUHJvcHM+IHtcbiAgY29uc3QgUG9ydGFsRWRpdG9yOiBSZWFjdC5GQzxQb3J0YWxFZGl0b3JQcm9wcz4gPSAoe1xuICAgIHZpc2libGVQYW5lbCxcbiAgICBjbGFzc05hbWUsXG4gICAgc3R5bGUsXG4gICAgc2VsZWN0ZWRGZWF0dXJlLFxuICAgIGRhdGFzZXRzLFxuICAgIGxheWVycyxcbiAgICBjdXJyZW50RmlsdGVyLFxuICAgIG9uQ2xvc2UsXG4gICAgb25EZWxldGVGZWF0dXJlLFxuICAgIG9uU2V0RmVhdHVyZVByb3BlcnRpZXMsXG4gICAgb25Ub2dnbGVMYXllcixcbiAgICBwb3NpdGlvblxuICB9KSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxSb290Q29udGV4dC5Db25zdW1lcj5cbiAgICAgICAge2NvbnRleHQgPT4gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7Y3JlYXRlUG9ydGFsKFxuICAgICAgICAgICAgICA8U3R5bGVkV3JhcHBlciBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2VkaXRvcicsIGNsYXNzTmFtZSl9IHN0eWxlPXtzdHlsZX0+XG4gICAgICAgICAgICAgICAge3Zpc2libGVQYW5lbCA/IChcbiAgICAgICAgICAgICAgICAgIDxGZWF0dXJlQWN0aW9uUGFuZWxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlPXtzZWxlY3RlZEZlYXR1cmUgYXMgRWRpdGFibGVGZWF0dXJlPFBvbHlnb24+fVxuICAgICAgICAgICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICAgICAgICAgIGxheWVycz17bGF5ZXJzfVxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RmlsdGVyPXtjdXJyZW50RmlsdGVyfVxuICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUZlYXR1cmU9e29uRGVsZXRlRmVhdHVyZX1cbiAgICAgICAgICAgICAgICAgICAgb25TZXRGZWF0dXJlUHJvcGVydGllcz17b25TZXRGZWF0dXJlUHJvcGVydGllc31cbiAgICAgICAgICAgICAgICAgICAgb25Ub2dnbGVMYXllcj17b25Ub2dnbGVMYXllcn1cbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249e3Bvc2l0aW9uIHx8IG51bGx9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8L1N0eWxlZFdyYXBwZXI+LFxuICAgICAgICAgICAgICBjb250ZXh0Py5jdXJyZW50ID8/IGRvY3VtZW50LmJvZHlcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L1Jvb3RDb250ZXh0LkNvbnN1bWVyPlxuICAgICk7XG4gIH07XG4gIGNsYXNzIEVkaXRvclVubWVtb2l6ZWQgZXh0ZW5kcyBDb21wb25lbnQ8RWRpdG9yUHJvcHM+IHtcbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge307XG5cbiAgICBzdGF0aWMgZGlzcGxheU5hbWUgPSAnRWRpdG9yJztcblxuICAgIHN0YXRlID0ge307XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fb25LZXlQcmVzc2VkKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIFdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fb25LZXlQcmVzc2VkKTtcbiAgICB9XG5cbiAgICBsYXllclNlbGVjdG9yID0gKHByb3BzOiBFZGl0b3JQcm9wcykgPT4gcHJvcHMubGF5ZXJzO1xuICAgIGZpbHRlclNlbGVjdG9yID0gKHByb3BzOiBFZGl0b3JQcm9wcykgPT4gcHJvcHMuZmlsdGVycztcbiAgICBzZWxlY3RlZEZlYXR1cmVJZFNlbGVjdG9yID0gKHByb3BzOiBFZGl0b3JQcm9wcykgPT5cbiAgICAgIGdldChwcm9wcywgWydlZGl0b3InLCAnc2VsZWN0ZWRGZWF0dXJlJywgJ2lkJ10pO1xuICAgIGVkaXRvckZlYXR1cmVTZWxlY3RvciA9IChwcm9wczogRWRpdG9yUHJvcHMpID0+IGdldChwcm9wcywgWydlZGl0b3InLCAnZmVhdHVyZXMnXSk7XG5cbiAgICBjdXJyZW50RmlsdGVyU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMuZmlsdGVyU2VsZWN0b3IsXG4gICAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZUlkU2VsZWN0b3IsXG4gICAgICAoZmlsdGVycywgc2VsZWN0ZWRGZWF0dXJlSWQpID0+IGZpbHRlcnMuZmluZChmID0+IGYudmFsdWUgJiYgZi52YWx1ZS5pZCA9PT0gc2VsZWN0ZWRGZWF0dXJlSWQpXG4gICAgKTtcblxuICAgIGF2YWlsYWJsZUxheWVyc1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IodGhpcy5sYXllclNlbGVjdG9yLCBsYXllcnMgPT5cbiAgICAgIGxheWVyc1xuICAgICAgICAuZmlsdGVyKGVkaXRvckxheWVyRmlsdGVyKVxuICAgICAgICAuZmlsdGVyKGxheWVyID0+IGxheWVyLmNvbmZpZz8uaXNWaXNpYmxlICYmIGxheWVyLmlkICE9PSBHRU9DT0RFUl9MQVlFUl9JRClcbiAgICApO1xuXG4gICAgYWxsRmVhdHVyZXNTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5maWx0ZXJTZWxlY3RvcixcbiAgICAgIHRoaXMuZWRpdG9yRmVhdHVyZVNlbGVjdG9yLFxuICAgICAgKGZpbHRlcnMsIGVkaXRvckZlYXR1cmVzKSA9PlxuICAgICAgICBmaWx0ZXJzXG4gICAgICAgICAgLmZpbHRlcihmID0+IGYudHlwZSA9PT0gRklMVEVSX1RZUEVTLnBvbHlnb24pXG4gICAgICAgICAgLm1hcChmID0+IGYudmFsdWUpXG4gICAgICAgICAgLmNvbmNhdChlZGl0b3JGZWF0dXJlcylcbiAgICApO1xuXG4gICAgaXNJbkZvY3VzID0gKCkgPT4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudD8uaWQgPT09IERFQ0tHTF9SRU5ERVJfTEFZRVI7XG5cbiAgICBpc1R5cGluZ1RhcmdldCA9ICh0YXJnZXQ6IEV2ZW50VGFyZ2V0IHwgbnVsbCkgPT4ge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHRhcmdldCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgdGFnTmFtZSA9IGVsZW1lbnQudGFnTmFtZTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRhZ05hbWUgPT09ICdJTlBVVCcgfHxcbiAgICAgICAgdGFnTmFtZSA9PT0gJ1RFWFRBUkVBJyB8fFxuICAgICAgICB0YWdOYW1lID09PSAnU0VMRUNUJyB8fFxuICAgICAgICBCb29sZWFuKGVsZW1lbnQuaXNDb250ZW50RWRpdGFibGUpXG4gICAgICApO1xuICAgIH07XG5cbiAgICBfb25LZXlQcmVzc2VkID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBpc0VzY2FwZSA9IGV2ZW50LmtleUNvZGUgPT09IEtleUV2ZW50LkRPTV9WS19FU0NBUEUgfHwgZXZlbnQua2V5ID09PSAnRXNjYXBlJztcbiAgICAgIGlmIChpc0VzY2FwZSAmJiAhdGhpcy5pc1R5cGluZ1RhcmdldChldmVudC50YXJnZXQpKSB7XG4gICAgICAgIGNvbnN0IGRyYXdpbmcgPSBFZGl0b3JMYXllclV0aWxzLmlzRHJhd2luZ0FjdGl2ZSh0cnVlLCB0aGlzLnByb3BzLmVkaXRvci5tb2RlKTtcbiAgICAgICAgaWYgKGRyYXdpbmcpIHtcbiAgICAgICAgICB0aGlzLnByb3BzLm9uU2V0RWRpdG9yTW9kZShFRElUT1JfTU9ERVMuRURJVCk7XG4gICAgICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdChudWxsKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzSW5Gb2N1cygpKSB7XG4gICAgICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdChudWxsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmlzSW5Gb2N1cygpKSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgICAgIGNhc2UgS2V5RXZlbnQuRE9NX1ZLX0RFTEVURTpcbiAgICAgICAgICBjYXNlIEtleUV2ZW50LkRPTV9WS19CQUNLX1NQQUNFOlxuICAgICAgICAgICAgdGhpcy5fb25EZWxldGVTZWxlY3RlZEZlYXR1cmUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBfb25EZWxldGVTZWxlY3RlZEZlYXR1cmUgPSAoKSA9PiB7XG4gICAgICBjb25zdCB7ZWRpdG9yfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCB7c2VsZWN0ZWRGZWF0dXJlfSA9IGVkaXRvcjtcbiAgICAgIGlmIChzZWxlY3RlZEZlYXR1cmUpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkRlbGV0ZUZlYXR1cmUoc2VsZWN0ZWRGZWF0dXJlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX2Nsb3NlRmVhdHVyZUFjdGlvbiA9ICgpID0+IHtcbiAgICAgIC8vIHJlc2V0IHNlbGVjdGlvbiBjb250ZXh0XG4gICAgICBjb25zdCB7c2VsZWN0ZWRGZWF0dXJlfSA9IHRoaXMucHJvcHMuZWRpdG9yO1xuICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdChzZWxlY3RlZEZlYXR1cmUpO1xuICAgIH07XG5cbiAgICBfdG9nZ2xlUG9seWdvbkZpbHRlciA9IChsYXllcjogTGF5ZXIpID0+IHtcbiAgICAgIGNvbnN0IHtzZWxlY3RlZEZlYXR1cmV9ID0gdGhpcy5wcm9wcy5lZGl0b3I7XG4gICAgICBpZiAoc2VsZWN0ZWRGZWF0dXJlKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25Ub2dnbGVQb2x5Z29uRmlsdGVyKGxheWVyLCBzZWxlY3RlZEZlYXR1cmUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfb25TZXRGZWF0dXJlUHJvcGVydGllcyA9IChmZWF0dXJlOiBGZWF0dXJlLCBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgICAgdGhpcy5wcm9wcy5vblNldEZlYXR1cmVQcm9wZXJ0aWVzKGZlYXR1cmUsIHByb3BlcnRpZXMpO1xuICAgIH07XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7Y2xhc3NOYW1lLCBkYXRhc2V0cywgZWRpdG9yLCBzdHlsZSwgaW5kZXh9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHtzZWxlY3RlZEZlYXR1cmUsIHNlbGVjdGlvbkNvbnRleHR9ID0gZWRpdG9yO1xuICAgICAgY29uc3QgY3VycmVudEZpbHRlciA9IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgYXZhaWxhYmxlTGF5ZXJzID0gdGhpcy5hdmFpbGFibGVMYXllcnNTZWxlY3Rvcih0aGlzLnByb3BzKTtcblxuICAgICAgY29uc3Qge3JpZ2h0Q2xpY2ssIHBvc2l0aW9uLCBtYXBJbmRleH0gPSBzZWxlY3Rpb25Db250ZXh0IHx8IHt9O1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8UG9ydGFsRWRpdG9yXG4gICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlPXtzZWxlY3RlZEZlYXR1cmUgYXMgRWRpdGFibGVGZWF0dXJlPFBvbHlnb24+fVxuICAgICAgICAgIHZpc2libGVQYW5lbD17Qm9vbGVhbihyaWdodENsaWNrKSAmJiBzZWxlY3RlZEZlYXR1cmUgJiYgaW5kZXggPT09IG1hcEluZGV4fVxuICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICBsYXllcnM9e2F2YWlsYWJsZUxheWVyc31cbiAgICAgICAgICBjdXJyZW50RmlsdGVyPXtjdXJyZW50RmlsdGVyfVxuICAgICAgICAgIG9uQ2xvc2U9e3RoaXMuX2Nsb3NlRmVhdHVyZUFjdGlvbn1cbiAgICAgICAgICBvbkRlbGV0ZUZlYXR1cmU9e3RoaXMuX29uRGVsZXRlU2VsZWN0ZWRGZWF0dXJlfVxuICAgICAgICAgIG9uU2V0RmVhdHVyZVByb3BlcnRpZXM9e1xuICAgICAgICAgICAgdGhpcy5fb25TZXRGZWF0dXJlUHJvcGVydGllcyBhcyBGZWF0dXJlQWN0aW9uUGFuZWxQcm9wc1snb25TZXRGZWF0dXJlUHJvcGVydGllcyddXG4gICAgICAgICAgfVxuICAgICAgICAgIG9uVG9nZ2xlTGF5ZXI9e3RoaXMuX3RvZ2dsZVBvbHlnb25GaWx0ZXJ9XG4gICAgICAgICAgcG9zaXRpb249e3Bvc2l0aW9uIHx8IG51bGx9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICAvPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBFZGl0b3IgPSBSZWFjdC5tZW1vKEVkaXRvclVubWVtb2l6ZWQpIGFzIHVua25vd24gYXMgdHlwZW9mIEVkaXRvclVubWVtb2l6ZWQ7XG4gIEVkaXRvci5kaXNwbGF5TmFtZSA9ICdFZGl0b3InO1xuICByZXR1cm4gRWRpdG9yO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBRixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU0sSUFBQSxHQUFBSCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU8sU0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsbUJBQUEsR0FBQUwsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFTLFVBQUEsR0FBQVQsT0FBQTtBQU9BLElBQUFVLE9BQUEsR0FBQVYsT0FBQTtBQUtBLElBQUFXLFFBQUEsR0FBQVgsT0FBQTtBQUF1QyxJQUFBWSxl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
@@ -19,18 +19,20 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
19
19
  var _utils = require("@kepler.gl/utils");
20
20
  var _actionPanel = _interopRequireWildcard(require("../common/action-panel"));
21
21
  var _icons = require("../common/icons");
22
+ var _featurePropertiesEditor = _interopRequireDefault(require("./feature-properties-editor"));
22
23
  var _templateObject; // SPDX-License-Identifier: MIT
23
24
  // Copyright contributors to the kepler.gl project
24
25
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
25
26
  var LAYOVER_OFFSET = 4;
26
- var StyledActionsLayer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n .layer-panel-item-disabled {\n color: ", ";\n }\n"])), function (props) {
27
+ var StyledActionsLayer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n gap: 4px;\n .layer-panel-item-disabled {\n color: ", ";\n }\n"])), function (props) {
27
28
  return props.theme.textColor;
28
29
  });
29
30
  var defaultActionIcons = {
30
31
  remove: _icons.Trash,
31
32
  layer: _icons.Layers,
32
33
  copy: _icons.Copy,
33
- copied: _icons.Checkmark
34
+ copied: _icons.Checkmark,
35
+ edit: _icons.Edit
34
36
  };
35
37
  PureFeatureActionPanelFactory.deps = [];
36
38
  function PureFeatureActionPanelFactory() {
@@ -44,6 +46,7 @@ function PureFeatureActionPanelFactory() {
44
46
  currentFilter = _ref.currentFilter,
45
47
  onToggleLayer = _ref.onToggleLayer,
46
48
  onDeleteFeature = _ref.onDeleteFeature,
49
+ onSetFeatureProperties = _ref.onSetFeatureProperties,
47
50
  _ref$actionIcons = _ref.actionIcons,
48
51
  actionIcons = _ref$actionIcons === void 0 ? defaultActionIcons : _ref$actionIcons,
49
52
  children = _ref.children,
@@ -52,6 +55,10 @@ function PureFeatureActionPanelFactory() {
52
55
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
53
56
  copied = _useState2[0],
54
57
  setCopied = _useState2[1];
58
+ var _useState3 = (0, _react.useState)(false),
59
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
60
+ showProperties = _useState4[0],
61
+ setShowProperties = _useState4[1];
55
62
  var _ref2 = currentFilter || {},
56
63
  _ref2$layerId = _ref2.layerId,
57
64
  layerId = _ref2$layerId === void 0 ? [] : _ref2$layerId;
@@ -73,10 +80,14 @@ function PureFeatureActionPanelFactory() {
73
80
  if (selectedFeature !== null && selectedFeature !== void 0 && selectedFeature.geometry) (0, _copyToClipboard["default"])(JSON.stringify(selectedFeature.geometry));
74
81
  setCopied(true);
75
82
  }, [selectedFeature === null || selectedFeature === void 0 ? void 0 : selectedFeature.geometry]);
83
+ (0, _react.useEffect)(function () {
84
+ setShowProperties(false);
85
+ }, [selectedFeature === null || selectedFeature === void 0 ? void 0 : selectedFeature.id]);
76
86
  if (!position) {
77
87
  return null;
78
88
  }
79
- var isFilterLayerDisabled = !(0, _utils.canApplyFeatureFilter)(selectedFeature);
89
+ var canFilterLayers = (0, _utils.canApplyFeatureFilter)(selectedFeature);
90
+ var enableSketches = (0, _utils.getApplicationConfig)().enableDrawOnMapSketches;
80
91
  return /*#__PURE__*/_react["default"].createElement(StyledActionsLayer, (0, _extends2["default"])({
81
92
  ref: refs.setFloating
82
93
  }, getFloatingProps(), {
@@ -85,17 +96,13 @@ function PureFeatureActionPanelFactory() {
85
96
  top: "".concat(position.y + LAYOVER_OFFSET, "px"),
86
97
  left: "".concat(position.x + LAYOVER_OFFSET, "px")
87
98
  }
88
- }), /*#__PURE__*/_react["default"].createElement(_actionPanel["default"], null, /*#__PURE__*/_react["default"].createElement(_actionPanel.ActionPanelItem, {
99
+ }), /*#__PURE__*/_react["default"].createElement(_actionPanel["default"], null, canFilterLayers ? /*#__PURE__*/_react["default"].createElement(_actionPanel.ActionPanelItem, {
89
100
  className: "editor-layers-list",
90
101
  label: intl.formatMessage({
91
102
  id: 'editor.filterLayer',
92
103
  defaultMessage: 'Filter layers'
93
104
  }),
94
- Icon: actionIcons.layer,
95
- isDisabled: isFilterLayerDisabled,
96
- tooltipText: isFilterLayerDisabled ? intl.formatMessage({
97
- id: 'editor.filterLayerDisabled'
98
- }) : null
105
+ Icon: actionIcons.layer
99
106
  }, layers.length ? layers.map(function (layer, index) {
100
107
  return /*#__PURE__*/_react["default"].createElement(_actionPanel.ActionPanelItem, {
101
108
  key: index,
@@ -119,7 +126,19 @@ function PureFeatureActionPanelFactory() {
119
126
  isSelection: false,
120
127
  isActive: false,
121
128
  className: "layer-panel-item-disabled"
122
- })), /*#__PURE__*/_react["default"].createElement(_actionPanel.ActionPanelItem, {
129
+ })) : null, enableSketches ? /*#__PURE__*/_react["default"].createElement(_actionPanel.ActionPanelItem, {
130
+ label: intl.formatMessage({
131
+ id: 'editor.editProperties',
132
+ defaultMessage: 'Edit Properties'
133
+ }),
134
+ className: "edit-properties-panel-item",
135
+ Icon: actionIcons.edit,
136
+ onClick: function onClick() {
137
+ return setShowProperties(function (open) {
138
+ return !open;
139
+ });
140
+ }
141
+ }) : null, /*#__PURE__*/_react["default"].createElement(_actionPanel.ActionPanelItem, {
123
142
  label: intl.formatMessage({
124
143
  id: 'editor.copyGeometry',
125
144
  defaultMessage: 'Copy Geometry'
@@ -135,7 +154,10 @@ function PureFeatureActionPanelFactory() {
135
154
  className: "delete-panel-item",
136
155
  Icon: actionIcons.remove,
137
156
  onClick: onDeleteFeature
138
- })));
157
+ })), enableSketches && showProperties ? /*#__PURE__*/_react["default"].createElement(_featurePropertiesEditor["default"], {
158
+ selectedFeature: selectedFeature,
159
+ onSetFeatureProperties: onSetFeatureProperties
160
+ }) : null);
139
161
  };
140
162
  FeatureActionPanel.displayName = 'FeatureActionPanel';
141
163
  return FeatureActionPanel;
@@ -144,4 +166,4 @@ FeatureActionPanelFactory.deps = PureFeatureActionPanelFactory.deps;
144
166
  function FeatureActionPanelFactory() {
145
167
  return PureFeatureActionPanelFactory();
146
168
  }
147
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RJbnRsIiwiX2NvcHlUb0NsaXBib2FyZCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3QyIiwiX2NsYXNzbmFtZXMiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl91dGlscyIsIl9hY3Rpb25QYW5lbCIsIl9pY29ucyIsIl90ZW1wbGF0ZU9iamVjdCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiTEFZT1ZFUl9PRkZTRVQiLCJTdHlsZWRBY3Rpb25zTGF5ZXIiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJ0ZXh0Q29sb3IiLCJkZWZhdWx0QWN0aW9uSWNvbnMiLCJyZW1vdmUiLCJUcmFzaCIsImxheWVyIiwiTGF5ZXJzIiwiY29weSIsIkNvcHkiLCJjb3BpZWQiLCJDaGVja21hcmsiLCJQdXJlRmVhdHVyZUFjdGlvblBhbmVsRmFjdG9yeSIsImRlcHMiLCJGZWF0dXJlQWN0aW9uUGFuZWwiLCJfcmVmIiwiY2xhc3NOYW1lIiwiZGF0YXNldHMiLCJzZWxlY3RlZEZlYXR1cmUiLCJfcmVmJHBvc2l0aW9uIiwicG9zaXRpb24iLCJsYXllcnMiLCJjdXJyZW50RmlsdGVyIiwib25Ub2dnbGVMYXllciIsIm9uRGVsZXRlRmVhdHVyZSIsIl9yZWYkYWN0aW9uSWNvbnMiLCJhY3Rpb25JY29ucyIsImNoaWxkcmVuIiwib25DbG9zZSIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInNldENvcGllZCIsIl9yZWYyIiwiX3JlZjIkbGF5ZXJJZCIsImxheWVySWQiLCJpbnRsIiwidXNlSW50bCIsIl91c2VGbG9hdGluZyIsInVzZUZsb2F0aW5nIiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsInYiLCJyZWZzIiwiY29udGV4dCIsImRpc21pc3MiLCJ1c2VEaXNtaXNzIiwiX3VzZUludGVyYWN0aW9ucyIsInVzZUludGVyYWN0aW9ucyIsImdldEZsb2F0aW5nUHJvcHMiLCJjb3B5R2VvbWV0cnkiLCJ1c2VDYWxsYmFjayIsImdlb21ldHJ5IiwiSlNPTiIsInN0cmluZ2lmeSIsImlzRmlsdGVyTGF5ZXJEaXNhYmxlZCIsImNhbkFwcGx5RmVhdHVyZUZpbHRlciIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kczIiLCJyZWYiLCJzZXRGbG9hdGluZyIsImNsYXNzbmFtZXMiLCJzdHlsZSIsInRvcCIsImNvbmNhdCIsInkiLCJsZWZ0IiwieCIsIkFjdGlvblBhbmVsSXRlbSIsImxhYmVsIiwiZm9ybWF0TWVzc2FnZSIsImlkIiwiZGVmYXVsdE1lc3NhZ2UiLCJJY29uIiwiaXNEaXNhYmxlZCIsInRvb2x0aXBUZXh0IiwibGVuZ3RoIiwibWFwIiwiaW5kZXgiLCJrZXkiLCJjb25maWciLCJjb2xvciIsImRhdGFJZCIsImlzU2VsZWN0aW9uIiwiaXNBY3RpdmUiLCJpbmNsdWRlcyIsIm9uQ2xpY2siLCJkaXNwbGF5TmFtZSIsIkZlYXR1cmVBY3Rpb25QYW5lbEZhY3RvcnkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWRpdG9yL2ZlYXR1cmUtYWN0aW9uLXBhbmVsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlU3RhdGUsIENvbXBvbmVudFR5cGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dXNlSW50bH0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQgY29weSBmcm9tICdjb3B5LXRvLWNsaXBib2FyZCc7XG5pbXBvcnQge3VzZURpc21pc3MsIHVzZUZsb2F0aW5nLCB1c2VJbnRlcmFjdGlvbnN9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge0xheWVyfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge0ZpbHRlcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0ZlYXR1cmV9IGZyb20gJ0BkZWNrLmdsLWNvbW11bml0eS9lZGl0YWJsZS1sYXllcnMnO1xuaW1wb3J0IHtEYXRhc2V0c30gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge2NhbkFwcGx5RmVhdHVyZUZpbHRlcn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCBBY3Rpb25QYW5lbCwge0FjdGlvblBhbmVsSXRlbX0gZnJvbSAnLi4vY29tbW9uL2FjdGlvbi1wYW5lbCc7XG5pbXBvcnQge1RyYXNoLCBMYXllcnMsIENvcHksIENoZWNrbWFya30gZnJvbSAnLi4vY29tbW9uL2ljb25zJztcblxuY29uc3QgTEFZT1ZFUl9PRkZTRVQgPSA0O1xuXG5jb25zdCBTdHlsZWRBY3Rpb25zTGF5ZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIC5sYXllci1wYW5lbC1pdGVtLWRpc2FibGVkIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICB9XG5gO1xuY29uc3QgZGVmYXVsdEFjdGlvbkljb25zID0ge1xuICByZW1vdmU6IFRyYXNoLFxuICBsYXllcjogTGF5ZXJzLFxuICBjb3B5OiBDb3B5LFxuICBjb3BpZWQ6IENoZWNrbWFya1xufTtcblB1cmVGZWF0dXJlQWN0aW9uUGFuZWxGYWN0b3J5LmRlcHMgPSBbXTtcblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlQWN0aW9uUGFuZWxQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgZGF0YXNldHM6IERhdGFzZXRzO1xuICBzZWxlY3RlZEZlYXR1cmU6IEZlYXR1cmUgfCBudWxsO1xuICBwb3NpdGlvbjoge1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG4gIH0gfCBudWxsO1xuICBsYXllcnM6IExheWVyW107XG4gIGN1cnJlbnRGaWx0ZXI/OiBGaWx0ZXI7XG4gIG9uVG9nZ2xlTGF5ZXI6IChsYXllcjogTGF5ZXIpID0+IHZvaWQ7XG4gIG9uRGVsZXRlRmVhdHVyZTogKCkgPT4gdm9pZDtcbiAgb25DbG9zZT86ICgpID0+IHZvaWQ7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICBhY3Rpb25JY29ucz86IHtcbiAgICBbaWQ6IHN0cmluZ106IFJlYWN0LkVsZW1lbnRUeXBlO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUHVyZUZlYXR1cmVBY3Rpb25QYW5lbEZhY3RvcnkoKTogUmVhY3QuRkM8RmVhdHVyZUFjdGlvblBhbmVsUHJvcHM+IHtcbiAgY29uc3QgRmVhdHVyZUFjdGlvblBhbmVsID0gKHtcbiAgICBjbGFzc05hbWUsXG4gICAgZGF0YXNldHMsXG4gICAgc2VsZWN0ZWRGZWF0dXJlLFxuICAgIHBvc2l0aW9uID0gbnVsbCxcbiAgICBsYXllcnMsXG4gICAgY3VycmVudEZpbHRlcixcbiAgICBvblRvZ2dsZUxheWVyLFxuICAgIG9uRGVsZXRlRmVhdHVyZSxcbiAgICBhY3Rpb25JY29ucyA9IGRlZmF1bHRBY3Rpb25JY29ucyxcbiAgICBjaGlsZHJlbixcbiAgICBvbkNsb3NlXG4gIH06IEZlYXR1cmVBY3Rpb25QYW5lbFByb3BzKSA9PiB7XG4gICAgY29uc3QgW2NvcGllZCwgc2V0Q29waWVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCB7bGF5ZXJJZCA9IFtdfSA9IGN1cnJlbnRGaWx0ZXIgfHwge307XG4gICAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcblxuICAgIGNvbnN0IHtyZWZzLCBjb250ZXh0fSA9IHVzZUZsb2F0aW5nKHtcbiAgICAgIG9wZW46IHRydWUsXG4gICAgICBvbk9wZW5DaGFuZ2U6IHYgPT4ge1xuICAgICAgICBpZiAoIXYgJiYgb25DbG9zZSkge1xuICAgICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGRpc21pc3MgPSB1c2VEaXNtaXNzKGNvbnRleHQpO1xuXG4gICAgY29uc3Qge2dldEZsb2F0aW5nUHJvcHN9ID0gdXNlSW50ZXJhY3Rpb25zKFtkaXNtaXNzXSk7XG5cbiAgICBjb25zdCBjb3B5R2VvbWV0cnkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoc2VsZWN0ZWRGZWF0dXJlPy5nZW9tZXRyeSkgY29weShKU09OLnN0cmluZ2lmeShzZWxlY3RlZEZlYXR1cmUuZ2VvbWV0cnkpKTtcbiAgICAgIHNldENvcGllZCh0cnVlKTtcbiAgICB9LCBbc2VsZWN0ZWRGZWF0dXJlPy5nZW9tZXRyeV0pO1xuXG4gICAgaWYgKCFwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgaXNGaWx0ZXJMYXllckRpc2FibGVkID0gIWNhbkFwcGx5RmVhdHVyZUZpbHRlcihzZWxlY3RlZEZlYXR1cmUgYXMgYW55KTtcbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEFjdGlvbnNMYXllclxuICAgICAgICByZWY9e3JlZnMuc2V0RmxvYXRpbmd9XG4gICAgICAgIHsuLi5nZXRGbG9hdGluZ1Byb3BzKCl9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnZmVhdHVyZS1hY3Rpb24tcGFuZWwnLCBjbGFzc05hbWUpfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHRvcDogYCR7cG9zaXRpb24ueSArIExBWU9WRVJfT0ZGU0VUfXB4YCxcbiAgICAgICAgICBsZWZ0OiBgJHtwb3NpdGlvbi54ICsgTEFZT1ZFUl9PRkZTRVR9cHhgXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxBY3Rpb25QYW5lbD5cbiAgICAgICAgICA8QWN0aW9uUGFuZWxJdGVtXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJlZGl0b3ItbGF5ZXJzLWxpc3RcIlxuICAgICAgICAgICAgbGFiZWw9e2ludGwuZm9ybWF0TWVzc2FnZSh7aWQ6ICdlZGl0b3IuZmlsdGVyTGF5ZXInLCBkZWZhdWx0TWVzc2FnZTogJ0ZpbHRlciBsYXllcnMnfSl9XG4gICAgICAgICAgICBJY29uPXthY3Rpb25JY29ucy5sYXllcn1cbiAgICAgICAgICAgIGlzRGlzYWJsZWQ9e2lzRmlsdGVyTGF5ZXJEaXNhYmxlZH1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXtcbiAgICAgICAgICAgICAgaXNGaWx0ZXJMYXllckRpc2FibGVkID8gaW50bC5mb3JtYXRNZXNzYWdlKHtpZDogJ2VkaXRvci5maWx0ZXJMYXllckRpc2FibGVkJ30pIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYXllcnMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICBsYXllcnMubWFwKChsYXllciwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICA8QWN0aW9uUGFuZWxJdGVtXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2xheWVyLmNvbmZpZy5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgIGNvbG9yPXtkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXS5jb2xvcn1cbiAgICAgICAgICAgICAgICAgIGlzU2VsZWN0aW9uPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e2xheWVySWQuaW5jbHVkZXMobGF5ZXIuaWQpfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Ub2dnbGVMYXllcihsYXllcil9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1wYW5lbC1pdGVtXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPEFjdGlvblBhbmVsSXRlbVxuICAgICAgICAgICAgICAgIGtleT17J25vLWxheWVycyd9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICBpZDogJ2VkaXRvci5ub0xheWVyc1RvRmlsdGVyJyxcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiAnTm8gbGF5ZXJzIHRvIGZpbHRlcidcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICBpc1NlbGVjdGlvbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgaXNBY3RpdmU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLXBhbmVsLWl0ZW0tZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0FjdGlvblBhbmVsSXRlbT5cbiAgICAgICAgICA8QWN0aW9uUGFuZWxJdGVtXG4gICAgICAgICAgICBsYWJlbD17aW50bC5mb3JtYXRNZXNzYWdlKHtpZDogJ2VkaXRvci5jb3B5R2VvbWV0cnknLCBkZWZhdWx0TWVzc2FnZTogJ0NvcHkgR2VvbWV0cnknfSl9XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJkZWxldGUtcGFuZWwtaXRlbVwiXG4gICAgICAgICAgICBJY29uPXtjb3BpZWQgPyBhY3Rpb25JY29ucy5jb3BpZWQgOiBhY3Rpb25JY29ucy5jb3B5fVxuICAgICAgICAgICAgb25DbGljaz17Y29weUdlb21ldHJ5fVxuICAgICAgICAgIC8+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIDxBY3Rpb25QYW5lbEl0ZW1cbiAgICAgICAgICAgIGxhYmVsPXtpbnRsLmZvcm1hdE1lc3NhZ2Uoe2lkOiAndG9vbHRpcC5kZWxldGUnLCBkZWZhdWx0TWVzc2FnZTogJ0RlbGV0ZSd9KX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImRlbGV0ZS1wYW5lbC1pdGVtXCJcbiAgICAgICAgICAgIEljb249e2FjdGlvbkljb25zLnJlbW92ZX1cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uRGVsZXRlRmVhdHVyZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0FjdGlvblBhbmVsPlxuICAgICAgPC9TdHlsZWRBY3Rpb25zTGF5ZXI+XG4gICAgKTtcbiAgfTtcblxuICBGZWF0dXJlQWN0aW9uUGFuZWwuZGlzcGxheU5hbWUgPSAnRmVhdHVyZUFjdGlvblBhbmVsJztcblxuICByZXR1cm4gRmVhdHVyZUFjdGlvblBhbmVsO1xufVxuXG5GZWF0dXJlQWN0aW9uUGFuZWxGYWN0b3J5LmRlcHMgPSBQdXJlRmVhdHVyZUFjdGlvblBhbmVsRmFjdG9yeS5kZXBzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBGZWF0dXJlQWN0aW9uUGFuZWxGYWN0b3J5KCk6IENvbXBvbmVudFR5cGU8RmVhdHVyZUFjdGlvblBhbmVsUHJvcHM+IHtcbiAgcmV0dXJuIFB1cmVGZWF0dXJlQWN0aW9uUGFuZWxGYWN0b3J5KCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGdCQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFGLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTSxpQkFBQSxHQUFBSCxzQkFBQSxDQUFBSCxPQUFBO0FBTUEsSUFB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
169
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RJbnRsIiwiX2NvcHlUb0NsaXBib2FyZCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3QyIiwiX2NsYXNzbmFtZXMiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl91dGlscyIsIl9hY3Rpb25QYW5lbCIsIl9pY29ucyIsIl9mZWF0dXJlUHJvcGVydGllc0VkaXRvciIsIl90ZW1wbGF0ZU9iamVjdCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiTEFZT1ZFUl9PRkZTRVQiLCJTdHlsZWRBY3Rpb25zTGF5ZXIiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJ0ZXh0Q29sb3IiLCJkZWZhdWx0QWN0aW9uSWNvbnMiLCJyZW1vdmUiLCJUcmFzaCIsImxheWVyIiwiTGF5ZXJzIiwiY29weSIsIkNvcHkiLCJjb3BpZWQiLCJDaGVja21hcmsiLCJlZGl0IiwiRWRpdCIsIlB1cmVGZWF0dXJlQWN0aW9uUGFuZWxGYWN0b3J5IiwiZGVwcyIsIkZlYXR1cmVBY3Rpb25QYW5lbCIsIl9yZWYiLCJjbGFzc05hbWUiLCJkYXRhc2V0cyIsInNlbGVjdGVkRmVhdHVyZSIsIl9yZWYkcG9zaXRpb24iLCJwb3NpdGlvbiIsImxheWVycyIsImN1cnJlbnRGaWx0ZXIiLCJvblRvZ2dsZUxheWVyIiwib25EZWxldGVGZWF0dXJlIiwib25TZXRGZWF0dXJlUHJvcGVydGllcyIsIl9yZWYkYWN0aW9uSWNvbnMiLCJhY3Rpb25JY29ucyIsImNoaWxkcmVuIiwib25DbG9zZSIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInNldENvcGllZCIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2hvd1Byb3BlcnRpZXMiLCJzZXRTaG93UHJvcGVydGllcyIsIl9yZWYyIiwiX3JlZjIkbGF5ZXJJZCIsImxheWVySWQiLCJpbnRsIiwidXNlSW50bCIsIl91c2VGbG9hdGluZyIsInVzZUZsb2F0aW5nIiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsInYiLCJyZWZzIiwiY29udGV4dCIsImRpc21pc3MiLCJ1c2VEaXNtaXNzIiwiX3VzZUludGVyYWN0aW9ucyIsInVzZUludGVyYWN0aW9ucyIsImdldEZsb2F0aW5nUHJvcHMiLCJjb3B5R2VvbWV0cnkiLCJ1c2VDYWxsYmFjayIsImdlb21ldHJ5IiwiSlNPTiIsInN0cmluZ2lmeSIsInVzZUVmZmVjdCIsImlkIiwiY2FuRmlsdGVyTGF5ZXJzIiwiY2FuQXBwbHlGZWF0dXJlRmlsdGVyIiwiZW5hYmxlU2tldGNoZXMiLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsImVuYWJsZURyYXdPbk1hcFNrZXRjaGVzIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzMiIsInJlZiIsInNldEZsb2F0aW5nIiwiY2xhc3NuYW1lcyIsInN0eWxlIiwidG9wIiwiY29uY2F0IiwieSIsImxlZnQiLCJ4IiwiQWN0aW9uUGFuZWxJdGVtIiwibGFiZWwiLCJmb3JtYXRNZXNzYWdlIiwiZGVmYXVsdE1lc3NhZ2UiLCJJY29uIiwibGVuZ3RoIiwibWFwIiwiaW5kZXgiLCJrZXkiLCJjb25maWciLCJjb2xvciIsImRhdGFJZCIsImlzU2VsZWN0aW9uIiwiaXNBY3RpdmUiLCJpbmNsdWRlcyIsIm9uQ2xpY2siLCJkaXNwbGF5TmFtZSIsIkZlYXR1cmVBY3Rpb25QYW5lbEZhY3RvcnkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWRpdG9yL2ZlYXR1cmUtYWN0aW9uLXBhbmVsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSwgQ29tcG9uZW50VHlwZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHt1c2VJbnRsfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCBjb3B5IGZyb20gJ2NvcHktdG8tY2xpcGJvYXJkJztcbmltcG9ydCB7dXNlRGlzbWlzcywgdXNlRmxvYXRpbmcsIHVzZUludGVyYWN0aW9uc30gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7TGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RmVhdHVyZX0gZnJvbSAnQGRlY2suZ2wtY29tbXVuaXR5L2VkaXRhYmxlLWxheWVycyc7XG5pbXBvcnQge0RhdGFzZXRzfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7Y2FuQXBwbHlGZWF0dXJlRmlsdGVyLCBnZXRBcHBsaWNhdGlvbkNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCBBY3Rpb25QYW5lbCwge0FjdGlvblBhbmVsSXRlbX0gZnJvbSAnLi4vY29tbW9uL2FjdGlvbi1wYW5lbCc7XG5pbXBvcnQge1RyYXNoLCBMYXllcnMsIENvcHksIENoZWNrbWFyaywgRWRpdH0gZnJvbSAnLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCBGZWF0dXJlUHJvcGVydGllc0VkaXRvciBmcm9tICcuL2ZlYXR1cmUtcHJvcGVydGllcy1lZGl0b3InO1xuXG5jb25zdCBMQVlPVkVSX09GRlNFVCA9IDQ7XG5cbmNvbnN0IFN0eWxlZEFjdGlvbnNMYXllciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGdhcDogNHB4O1xuICAubGF5ZXItcGFuZWwtaXRlbS1kaXNhYmxlZCB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgfVxuYDtcbmNvbnN0IGRlZmF1bHRBY3Rpb25JY29ucyA9IHtcbiAgcmVtb3ZlOiBUcmFzaCxcbiAgbGF5ZXI6IExheWVycyxcbiAgY29weTogQ29weSxcbiAgY29waWVkOiBDaGVja21hcmssXG4gIGVkaXQ6IEVkaXRcbn07XG5QdXJlRmVhdHVyZUFjdGlvblBhbmVsRmFjdG9yeS5kZXBzID0gW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZUFjdGlvblBhbmVsUHJvcHMge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRhdGFzZXRzOiBEYXRhc2V0cztcbiAgc2VsZWN0ZWRGZWF0dXJlOiBGZWF0dXJlIHwgbnVsbDtcbiAgcG9zaXRpb246IHtcbiAgICB4OiBudW1iZXI7XG4gICAgeTogbnVtYmVyO1xuICB9IHwgbnVsbDtcbiAgbGF5ZXJzOiBMYXllcltdO1xuICBjdXJyZW50RmlsdGVyPzogRmlsdGVyO1xuICBvblRvZ2dsZUxheWVyOiAobGF5ZXI6IExheWVyKSA9PiB2b2lkO1xuICBvbkRlbGV0ZUZlYXR1cmU6ICgpID0+IHZvaWQ7XG4gIG9uU2V0RmVhdHVyZVByb3BlcnRpZXM/OiAoZmVhdHVyZTogRmVhdHVyZSwgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHZvaWQ7XG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgYWN0aW9uSWNvbnM/OiB7XG4gICAgW2lkOiBzdHJpbmddOiBSZWFjdC5FbGVtZW50VHlwZTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFB1cmVGZWF0dXJlQWN0aW9uUGFuZWxGYWN0b3J5KCk6IFJlYWN0LkZDPEZlYXR1cmVBY3Rpb25QYW5lbFByb3BzPiB7XG4gIGNvbnN0IEZlYXR1cmVBY3Rpb25QYW5lbCA9ICh7XG4gICAgY2xhc3NOYW1lLFxuICAgIGRhdGFzZXRzLFxuICAgIHNlbGVjdGVkRmVhdHVyZSxcbiAgICBwb3NpdGlvbiA9IG51bGwsXG4gICAgbGF5ZXJzLFxuICAgIGN1cnJlbnRGaWx0ZXIsXG4gICAgb25Ub2dnbGVMYXllcixcbiAgICBvbkRlbGV0ZUZlYXR1cmUsXG4gICAgb25TZXRGZWF0dXJlUHJvcGVydGllcyxcbiAgICBhY3Rpb25JY29ucyA9IGRlZmF1bHRBY3Rpb25JY29ucyxcbiAgICBjaGlsZHJlbixcbiAgICBvbkNsb3NlXG4gIH06IEZlYXR1cmVBY3Rpb25QYW5lbFByb3BzKSA9PiB7XG4gICAgY29uc3QgW2NvcGllZCwgc2V0Q29waWVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc2hvd1Byb3BlcnRpZXMsIHNldFNob3dQcm9wZXJ0aWVzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCB7bGF5ZXJJZCA9IFtdfSA9IGN1cnJlbnRGaWx0ZXIgfHwge307XG4gICAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcblxuICAgIGNvbnN0IHtyZWZzLCBjb250ZXh0fSA9IHVzZUZsb2F0aW5nKHtcbiAgICAgIG9wZW46IHRydWUsXG4gICAgICBvbk9wZW5DaGFuZ2U6IHYgPT4ge1xuICAgICAgICBpZiAoIXYgJiYgb25DbG9zZSkge1xuICAgICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGRpc21pc3MgPSB1c2VEaXNtaXNzKGNvbnRleHQpO1xuXG4gICAgY29uc3Qge2dldEZsb2F0aW5nUHJvcHN9ID0gdXNlSW50ZXJhY3Rpb25zKFtkaXNtaXNzXSk7XG5cbiAgICBjb25zdCBjb3B5R2VvbWV0cnkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoc2VsZWN0ZWRGZWF0dXJlPy5nZW9tZXRyeSkgY29weShKU09OLnN0cmluZ2lmeShzZWxlY3RlZEZlYXR1cmUuZ2VvbWV0cnkpKTtcbiAgICAgIHNldENvcGllZCh0cnVlKTtcbiAgICB9LCBbc2VsZWN0ZWRGZWF0dXJlPy5nZW9tZXRyeV0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIHNldFNob3dQcm9wZXJ0aWVzKGZhbHNlKTtcbiAgICB9LCBbc2VsZWN0ZWRGZWF0dXJlPy5pZF0pO1xuXG4gICAgaWYgKCFwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY2FuRmlsdGVyTGF5ZXJzID0gY2FuQXBwbHlGZWF0dXJlRmlsdGVyKHNlbGVjdGVkRmVhdHVyZSBhcyBhbnkpO1xuICAgIGNvbnN0IGVuYWJsZVNrZXRjaGVzID0gZ2V0QXBwbGljYXRpb25Db25maWcoKS5lbmFibGVEcmF3T25NYXBTa2V0Y2hlcztcbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEFjdGlvbnNMYXllclxuICAgICAgICByZWY9e3JlZnMuc2V0RmxvYXRpbmd9XG4gICAgICAgIHsuLi5nZXRGbG9hdGluZ1Byb3BzKCl9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnZmVhdHVyZS1hY3Rpb24tcGFuZWwnLCBjbGFzc05hbWUpfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHRvcDogYCR7cG9zaXRpb24ueSArIExBWU9WRVJfT0ZGU0VUfXB4YCxcbiAgICAgICAgICBsZWZ0OiBgJHtwb3NpdGlvbi54ICsgTEFZT1ZFUl9PRkZTRVR9cHhgXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxBY3Rpb25QYW5lbD5cbiAgICAgICAgICB7Y2FuRmlsdGVyTGF5ZXJzID8gKFxuICAgICAgICAgICAgPEFjdGlvblBhbmVsSXRlbVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJlZGl0b3ItbGF5ZXJzLWxpc3RcIlxuICAgICAgICAgICAgICBsYWJlbD17aW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICBpZDogJ2VkaXRvci5maWx0ZXJMYXllcicsXG4gICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6ICdGaWx0ZXIgbGF5ZXJzJ1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgSWNvbj17YWN0aW9uSWNvbnMubGF5ZXJ9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtsYXllcnMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIGxheWVycy5tYXAoKGxheWVyLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgPEFjdGlvblBhbmVsSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17bGF5ZXIuY29uZmlnLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPXtkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXS5jb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3Rpb249e3RydWV9XG4gICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlPXtsYXllcklkLmluY2x1ZGVzKGxheWVyLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Ub2dnbGVMYXllcihsYXllcil9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLXBhbmVsLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxBY3Rpb25QYW5lbEl0ZW1cbiAgICAgICAgICAgICAgICAgIGtleT17J25vLWxheWVycyd9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17aW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdlZGl0b3Iubm9MYXllcnNUb0ZpbHRlcicsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiAnTm8gbGF5ZXJzIHRvIGZpbHRlcidcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgaXNTZWxlY3Rpb249e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItcGFuZWwtaXRlbS1kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQWN0aW9uUGFuZWxJdGVtPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIHtlbmFibGVTa2V0Y2hlcyA/IChcbiAgICAgICAgICAgIDxBY3Rpb25QYW5lbEl0ZW1cbiAgICAgICAgICAgICAgbGFiZWw9e2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgaWQ6ICdlZGl0b3IuZWRpdFByb3BlcnRpZXMnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiAnRWRpdCBQcm9wZXJ0aWVzJ1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZWRpdC1wcm9wZXJ0aWVzLXBhbmVsLWl0ZW1cIlxuICAgICAgICAgICAgICBJY29uPXthY3Rpb25JY29ucy5lZGl0fVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93UHJvcGVydGllcyhvcGVuID0+ICFvcGVuKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPEFjdGlvblBhbmVsSXRlbVxuICAgICAgICAgICAgbGFiZWw9e2ludGwuZm9ybWF0TWVzc2FnZSh7aWQ6ICdlZGl0b3IuY29weUdlb21ldHJ5JywgZGVmYXVsdE1lc3NhZ2U6ICdDb3B5IEdlb21ldHJ5J30pfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZGVsZXRlLXBhbmVsLWl0ZW1cIlxuICAgICAgICAgICAgSWNvbj17Y29waWVkID8gYWN0aW9uSWNvbnMuY29waWVkIDogYWN0aW9uSWNvbnMuY29weX1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2NvcHlHZW9tZXRyeX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICA8QWN0aW9uUGFuZWxJdGVtXG4gICAgICAgICAgICBsYWJlbD17aW50bC5mb3JtYXRNZXNzYWdlKHtpZDogJ3Rvb2x0aXAuZGVsZXRlJywgZGVmYXVsdE1lc3NhZ2U6ICdEZWxldGUnfSl9XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJkZWxldGUtcGFuZWwtaXRlbVwiXG4gICAgICAgICAgICBJY29uPXthY3Rpb25JY29ucy5yZW1vdmV9XG4gICAgICAgICAgICBvbkNsaWNrPXtvbkRlbGV0ZUZlYXR1cmV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9BY3Rpb25QYW5lbD5cbiAgICAgICAge2VuYWJsZVNrZXRjaGVzICYmIHNob3dQcm9wZXJ0aWVzID8gKFxuICAgICAgICAgIDxGZWF0dXJlUHJvcGVydGllc0VkaXRvclxuICAgICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlPXtzZWxlY3RlZEZlYXR1cmV9XG4gICAgICAgICAgICBvblNldEZlYXR1cmVQcm9wZXJ0aWVzPXtvblNldEZlYXR1cmVQcm9wZXJ0aWVzfVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TdHlsZWRBY3Rpb25zTGF5ZXI+XG4gICAgKTtcbiAgfTtcblxuICBGZWF0dXJlQWN0aW9uUGFuZWwuZGlzcGxheU5hbWUgPSAnRmVhdHVyZUFjdGlvblBhbmVsJztcblxuICByZXR1cm4gRmVhdHVyZUFjdGlvblBhbmVsO1xufVxuXG5GZWF0dXJlQWN0aW9uUGFuZWxGYWN0b3J5LmRlcHMgPSBQdXJlRmVhdHVyZUFjdGlvblBhbmVsRmFjdG9yeS5kZXBzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBGZWF0dXJlQWN0aW9uUGFuZWxGYWN0b3J5KCk6IENvbXBvbmVudFR5cGU8RmVhdHVyZUFjdGlvblBhbmVsUHJvcHM+IHtcbiAgcmV0dXJuIFB1cmVGZWF0dXJlQWN0aW9uUGFuZWxGYWN0b3J5KCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGdCQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFGLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTSxpQkFBQSxHQUFBSCxzQkFBQSxDQUFBSCxPQUFBO0FBTUEsSUFBQU8sTUFBQSxHQUFBUCxPQUFBO0FBRUEsSUFBQVEsWUFBQSxHQUFBVCx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVMsTUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsd0JBQUEsR0FBQVAsc0JBQUEsQ0FBQUgsT0FBQTtBQUFrRSxJQUFBVyxlQUFBLEVBbEJsRTtBQUNBO0FBQUEsU0FBQVosd0JBQUFhLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFmLHVCQUFBLFlBQUFBLHdCQUFBYSxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENBQUEsaUJBQUFBLENBQUEsZ0JBQUFVLE9BQUEsQ0FBQVYsQ0FBQSwwQkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFG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