@carto/kepler.gl 0.0.52 → 0.0.53-alpha.interactivity.4
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.
- package/dist/components/kepler-gl.js +4 -2
- package/dist/components/map-container.js +7 -3
- package/dist/constants/default-settings.js +2 -2
- package/dist/layers/base-layer.js +27 -3
- package/dist/layers/geojson-layer/geojson-layer.js +3 -4
- package/dist/utils/layer-utils.js +7 -4
- package/package.json +7 -4
- package/src/components/kepler-gl.d.ts +2 -1
- package/src/components/kepler-gl.js +4 -1
- package/src/components/map-container.js +5 -1
- package/src/layers/base-layer.js +24 -1
- package/src/layers/geojson-layer/geojson-layer.js +2 -2
- package/src/layers/index.d.ts +16 -0
- package/src/utils/layer-utils.js +6 -2
|
@@ -352,8 +352,7 @@ var GeoJsonLayer = /*#__PURE__*/function (_Layer) {
|
|
|
352
352
|
value: function renderLayer(opts) {
|
|
353
353
|
var data = opts.data,
|
|
354
354
|
gpuFilter = opts.gpuFilter,
|
|
355
|
-
objectHovered = opts.objectHovered
|
|
356
|
-
interactionConfig = opts.interactionConfig;
|
|
355
|
+
objectHovered = opts.objectHovered;
|
|
357
356
|
var _this$meta = this.meta,
|
|
358
357
|
fixedRadius = _this$meta.fixedRadius,
|
|
359
358
|
featureTypes = _this$meta.featureTypes;
|
|
@@ -375,7 +374,7 @@ var GeoJsonLayer = /*#__PURE__*/function (_Layer) {
|
|
|
375
374
|
var opaOverwrite = {
|
|
376
375
|
opacity: visConfig.strokeOpacity
|
|
377
376
|
};
|
|
378
|
-
var pickable =
|
|
377
|
+
var pickable = this.hasInteractivity;
|
|
379
378
|
var hoveredObject = this.hasHoveredObject(objectHovered);
|
|
380
379
|
return [new _layers.GeoJsonLayer(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, defaultLayerProps), layerProps), data), {}, {
|
|
381
380
|
pickable: pickable,
|
|
@@ -452,4 +451,4 @@ var GeoJsonLayer = /*#__PURE__*/function (_Layer) {
|
|
|
452
451
|
}(_baseLayer["default"]);
|
|
453
452
|
|
|
454
453
|
exports["default"] = GeoJsonLayer;
|
|
455
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvZ2VvanNvbi1sYXllci9nZW9qc29uLWxheWVyLmpzIl0sIm5hbWVzIjpbIlNVUFBPUlRFRF9BTkFMWVpFUl9UWVBFUyIsIkRBVEFfVFlQRVMiLCJHRU9NRVRSWSIsIkdFT01FVFJZX0ZST01fU1RSSU5HIiwiZ2VvanNvblZpc0NvbmZpZ3MiLCJvcGFjaXR5Iiwic3Ryb2tlT3BhY2l0eSIsIkxBWUVSX1ZJU19DT05GSUdTIiwicHJvcGVydHkiLCJ0aGlja25lc3MiLCJkZWZhdWx0VmFsdWUiLCJzdHJva2VDb2xvciIsImNvbG9yUmFuZ2UiLCJzdHJva2VDb2xvclJhbmdlIiwicmFkaXVzIiwic2l6ZVJhbmdlIiwicmFkaXVzUmFuZ2UiLCJoZWlnaHRSYW5nZSIsImVsZXZhdGlvblNjYWxlIiwiZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvciIsInN0cm9rZWQiLCJmaWxsZWQiLCJlbmFibGUzZCIsIndpcmVmcmFtZSIsImdlb0pzb25SZXF1aXJlZENvbHVtbnMiLCJmZWF0dXJlQWNjZXNzb3IiLCJnZW9qc29uIiwiZGMiLCJkIiwidmFsdWVBdCIsImluZGV4IiwiZmllbGRJZHgiLCJkZWZhdWx0RWxldmF0aW9uIiwiZGVmYXVsdExpbmVXaWR0aCIsImRlZmF1bHRSYWRpdXMiLCJHZW9Kc29uTGF5ZXIiLCJwcm9wcyIsImRhdGFUb0ZlYXR1cmUiLCJyZWdpc3RlclZpc0NvbmZpZyIsImdldFBvc2l0aW9uQWNjZXNzb3IiLCJkYXRhQ29udGFpbmVyIiwiY29uZmlnIiwiY29sdW1ucyIsIkdlb2pzb25MYXllckljb24iLCJ2aXN1YWxDaGFubmVscyIsImNvbG9yIiwiYWNjZXNzb3IiLCJjb25kaXRpb24iLCJ2aXNDb25maWciLCJudWxsVmFsdWUiLCJnZXRBdHRyaWJ1dGVWYWx1ZSIsInByb3BlcnRpZXMiLCJmaWxsQ29sb3IiLCJmaWVsZCIsInNjYWxlIiwiZG9tYWluIiwicmFuZ2UiLCJrZXkiLCJjaGFubmVsU2NhbGVUeXBlIiwiQ0hBTk5FTF9TQ0FMRVMiLCJsaW5lQ29sb3IiLCJzaXplIiwibGluZVdpZHRoIiwiaGVpZ2h0IiwiZWxldmF0aW9uIiwiaGVpZ2h0RmllbGQiLCJoZWlnaHREb21haW4iLCJoZWlnaHRTY2FsZSIsInJhZGl1c0ZpZWxkIiwicmFkaXVzRG9tYWluIiwicmFkaXVzU2NhbGUiLCJzdHJva2VDb2xvckZpZWxkIiwic3Ryb2tlQ29sb3JEb21haW4iLCJzdHJva2VDb2xvclNjYWxlIiwib2JqZWN0Iiwicm93IiwiZ2V0UG9zaXRpb24iLCJmaWx0ZXJlZEluZGV4IiwibWFwIiwiaSIsImZpbHRlciIsImRhdGFzZXRzIiwib2xkTGF5ZXJEYXRhIiwiZGF0YUlkIiwiZ3B1RmlsdGVyIiwidXBkYXRlRGF0YSIsImRhdGEiLCJjdXN0b21GaWx0ZXJWYWx1ZUFjY2Vzc29yIiwiZmllbGRJbmRleCIsImluZGV4QWNjZXNzb3IiLCJmIiwiZGF0YUFjY2Vzc29yIiwiYWNjZXNzb3JzIiwiZ2V0QXR0cmlidXRlQWNjZXNzb3JzIiwiZ2V0RmlsdGVyVmFsdWUiLCJmaWx0ZXJWYWx1ZUFjY2Vzc29yIiwiZ2V0RmVhdHVyZSIsImJvdW5kcyIsImZpeGVkUmFkaXVzIiwiQm9vbGVhbiIsImZpbmQiLCJmZWF0dXJlVHlwZXMiLCJ1cGRhdGVNZXRhIiwidXBkYXRlTGF5ZXJNZXRhIiwibWV0YSIsInBvbHlnb24iLCJ1cGRhdGVMYXllclZpc0NvbmZpZyIsImNvbG9yTWFrZXIiLCJuZXh0IiwidmFsdWUiLCJwb2ludCIsIm9wdHMiLCJvYmplY3RIb3ZlcmVkIiwiaW50ZXJhY3Rpb25Db25maWciLCJnZXRSYWRpdXNTY2FsZSIsInJhZGl1c1VuaXRzIiwiZ2V0UmFkaXVzVW5pdCIsImxheWVyUHJvcHMiLCJsaW5lV2lkdGhTY2FsZSIsInBvaW50UmFkaXVzU2NhbGUiLCJsaW5lTWl0ZXJMaW1pdCIsInVwZGF0ZVRyaWdnZXJzIiwiZ2V0VmlzdWFsQ2hhbm5lbFVwZGF0ZVRyaWdnZXJzIiwiZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyIsImRlZmF1bHRMYXllclByb3BzIiwiZ2V0RGVmYXVsdERlY2tMYXllclByb3BzIiwib3BhT3ZlcndyaXRlIiwicGlja2FibGUiLCJ0b29sdGlwIiwiZW5hYmxlZCIsImhvdmVyZWRPYmplY3QiLCJoYXNIb3ZlcmVkT2JqZWN0IiwiRGVja0dMR2VvSnNvbkxheWVyIiwiaGlnaGxpZ2h0Q29sb3IiLCJISUdITElHSF9DT0xPUl8zRCIsImF1dG9IaWdobGlnaHQiLCJleHRydWRlZCIsIndyYXBMb25naXR1ZGUiLCJyb3VuZGVkIiwibGluZVdpZHRoVW5pdHMiLCJfc3ViTGF5ZXJQcm9wcyIsImxpbmUiLCJsaW5lc3RyaW5ncyIsInBvaW50cyIsImxpbmVPcGFjaXR5IiwiZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcyIsImdldExpbmVXaWR0aCIsImdldFJhZGl1cyIsImdldEVsZXZhdGlvbiIsImdldExpbmVDb2xvciIsImdldEZpbGxDb2xvciIsImxhYmVsIiwiZmllbGRzIiwiZ2VvanNvbkNvbHVtbnMiLCJ0eXBlIiwiYW5hbHl6ZXJUeXBlIiwibmFtZSIsImRlZmF1bHRDb2x1bW5zIiwiR0VPSlNPTl9GSUVMRFMiLCJmb3VuZENvbHVtbnMiLCJmaW5kRGVmYXVsdENvbHVtbkZpZWxkIiwibGVuZ3RoIiwicmVwbGFjZSIsImlzVmlzaWJsZSIsIkxheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLHdCQUF3Qix3RkFDM0JDLHlCQUFXQyxRQURnQixFQUNMLElBREssMkRBRTNCRCx5QkFBV0Usb0JBRmdCLEVBRU8sSUFGUCx5QkFBOUI7QUFLTyxJQUFNQyxpQkFBaUIsR0FBRztBQUMvQkMsRUFBQUEsT0FBTyxFQUFFLFNBRHNCO0FBRS9CQyxFQUFBQSxhQUFhLGtDQUNSQyxnQ0FBa0JGLE9BRFY7QUFFWEcsSUFBQUEsUUFBUSxFQUFFO0FBRkMsSUFGa0I7QUFNL0JDLEVBQUFBLFNBQVMsa0NBQ0pGLGdDQUFrQkUsU0FEZDtBQUVQQyxJQUFBQSxZQUFZLEVBQUU7QUFGUCxJQU5zQjtBQVUvQkMsRUFBQUEsV0FBVyxFQUFFLGFBVmtCO0FBVy9CQyxFQUFBQSxVQUFVLEVBQUUsWUFYbUI7QUFZL0JDLEVBQUFBLGdCQUFnQixFQUFFLGtCQVphO0FBYS9CQyxFQUFBQSxNQUFNLEVBQUUsUUFidUI7QUFlL0JDLEVBQUFBLFNBQVMsRUFBRSxrQkFmb0I7QUFnQi9CQyxFQUFBQSxXQUFXLEVBQUUsYUFoQmtCO0FBaUIvQkMsRUFBQUEsV0FBVyxFQUFFLGdCQWpCa0I7QUFrQi9CQyxFQUFBQSxjQUFjLEVBQUUsZ0JBbEJlO0FBbUIvQkMsRUFBQUEseUJBQXlCLEVBQUUsMkJBbkJJO0FBb0IvQkMsRUFBQUEsT0FBTyxFQUFFLFNBcEJzQjtBQXFCL0JDLEVBQUFBLE1BQU0sRUFBRSxRQXJCdUI7QUFzQi9CQyxFQUFBQSxRQUFRLEVBQUUsVUF0QnFCO0FBdUIvQkMsRUFBQUEsU0FBUyxFQUFFO0FBdkJvQixDQUExQjs7QUEwQkEsSUFBTUMsc0JBQXNCLEdBQUcsQ0FBQyxTQUFELENBQS9COzs7QUFDQSxJQUFNQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCO0FBQUEsTUFBRUMsT0FBRixRQUFFQSxPQUFGO0FBQUEsU0FBZSxVQUFBQyxFQUFFO0FBQUEsV0FBSSxVQUFBQyxDQUFDO0FBQUEsYUFBSUQsRUFBRSxDQUFDRSxPQUFILENBQVdELENBQUMsQ0FBQ0UsS0FBYixFQUFvQkosT0FBTyxDQUFDSyxRQUE1QixDQUFKO0FBQUEsS0FBTDtBQUFBLEdBQWpCO0FBQUEsQ0FBeEIsQyxDQUVQOzs7O0FBQ08sSUFBTUMsZ0JBQWdCLEdBQUcsR0FBekI7O0FBQ0EsSUFBTUMsZ0JBQWdCLEdBQUcsQ0FBekI7O0FBQ0EsSUFBTUMsYUFBYSxHQUFHLENBQXRCOzs7SUFFY0MsWTs7Ozs7QUFDbkIsd0JBQVlDLEtBQVosRUFBbUI7QUFBQTs7QUFBQTtBQUNqQiw4QkFBTUEsS0FBTjtBQUVBLFVBQUtDLGFBQUwsR0FBcUIsRUFBckI7O0FBQ0EsVUFBS0MsaUJBQUwsQ0FBdUJsQyxpQkFBdkI7O0FBQ0EsVUFBS21DLG1CQUFMLEdBQTJCLFVBQUFDLGFBQWE7QUFBQSxhQUFJZixlQUFlLENBQUMsTUFBS2dCLE1BQUwsQ0FBWUMsT0FBYixDQUFmLENBQXFDRixhQUFyQyxDQUFKO0FBQUEsS0FBeEM7O0FBTGlCO0FBTWxCOzs7O1NBRUQsZUFBVztBQUNULGFBQU8sU0FBUDtBQUNEOzs7U0FFRCxlQUFXO0FBQ1QsYUFBTyxTQUFQO0FBQ0Q7OztTQUVELGVBQWdCO0FBQ2QsYUFBT0csNEJBQVA7QUFDRDs7O1NBRUQsZUFBMkI7QUFDekIsYUFBT25CLHNCQUFQO0FBQ0Q7OztTQUVELGVBQXFCO0FBQ25CLFVBQU1vQixjQUFjLDBHQUFwQjtBQUNBLGFBQU87QUFDTEMsUUFBQUEsS0FBSyxrQ0FDQUQsY0FBYyxDQUFDQyxLQURmO0FBRUhDLFVBQUFBLFFBQVEsRUFBRSxjQUZQO0FBR0hDLFVBQUFBLFNBQVMsRUFBRSxtQkFBQU4sTUFBTTtBQUFBLG1CQUFJQSxNQUFNLENBQUNPLFNBQVAsQ0FBaUIzQixNQUFyQjtBQUFBLFdBSGQ7QUFJSDRCLFVBQUFBLFNBQVMsRUFBRUwsY0FBYyxDQUFDQyxLQUFmLENBQXFCSSxTQUo3QjtBQUtIQyxVQUFBQSxpQkFBaUIsRUFBRSwyQkFBQVQsTUFBTTtBQUFBLG1CQUFJLFVBQUFiLENBQUM7QUFBQSxxQkFBSUEsQ0FBQyxDQUFDdUIsVUFBRixDQUFhQyxTQUFiLElBQTBCWCxNQUFNLENBQUNJLEtBQXJDO0FBQUEsYUFBTDtBQUFBLFdBTHRCO0FBTUg7QUFDQW5DLFVBQUFBLFlBQVksRUFBRSxzQkFBQStCLE1BQU07QUFBQSxtQkFBSUEsTUFBTSxDQUFDSSxLQUFYO0FBQUE7QUFQakIsVUFEQTtBQVVMbEMsUUFBQUEsV0FBVyxFQUFFO0FBQ1hILFVBQUFBLFFBQVEsRUFBRSxhQURDO0FBRVg2QyxVQUFBQSxLQUFLLEVBQUUsa0JBRkk7QUFHWEMsVUFBQUEsS0FBSyxFQUFFLGtCQUhJO0FBSVhDLFVBQUFBLE1BQU0sRUFBRSxtQkFKRztBQUtYQyxVQUFBQSxLQUFLLEVBQUUsa0JBTEk7QUFNWEMsVUFBQUEsR0FBRyxFQUFFLGFBTk07QUFPWEMsVUFBQUEsZ0JBQWdCLEVBQUVDLGdDQUFlZCxLQVB0QjtBQVFYQyxVQUFBQSxRQUFRLEVBQUUsY0FSQztBQVNYQyxVQUFBQSxTQUFTLEVBQUUsbUJBQUFOLE1BQU07QUFBQSxtQkFBSUEsTUFBTSxDQUFDTyxTQUFQLENBQWlCNUIsT0FBckI7QUFBQSxXQVROO0FBVVg2QixVQUFBQSxTQUFTLEVBQUVMLGNBQWMsQ0FBQ0MsS0FBZixDQUFxQkksU0FWckI7QUFXWEMsVUFBQUEsaUJBQWlCLEVBQUUsMkJBQUFULE1BQU07QUFBQSxtQkFBSSxVQUFBYixDQUFDO0FBQUEscUJBQzVCQSxDQUFDLENBQUN1QixVQUFGLENBQWFTLFNBQWIsSUFBMEJuQixNQUFNLENBQUNPLFNBQVAsQ0FBaUJyQyxXQUEzQyxJQUEwRDhCLE1BQU0sQ0FBQ0ksS0FEckM7QUFBQSxhQUFMO0FBQUEsV0FYZDtBQWFYO0FBQ0FuQyxVQUFBQSxZQUFZLEVBQUUsc0JBQUErQixNQUFNO0FBQUEsbUJBQUlBLE1BQU0sQ0FBQ08sU0FBUCxDQUFpQnJDLFdBQWpCLElBQWdDOEIsTUFBTSxDQUFDSSxLQUEzQztBQUFBO0FBZFQsU0FWUjtBQTBCTGdCLFFBQUFBLElBQUksa0NBQ0NqQixjQUFjLENBQUNpQixJQURoQjtBQUVGckQsVUFBQUEsUUFBUSxFQUFFLFFBRlI7QUFHRnNDLFVBQUFBLFFBQVEsRUFBRSxjQUhSO0FBSUZDLFVBQUFBLFNBQVMsRUFBRSxtQkFBQU4sTUFBTTtBQUFBLG1CQUFJQSxNQUFNLENBQUNPLFNBQVAsQ0FBaUI1QixPQUFyQjtBQUFBLFdBSmY7QUFLRjZCLFVBQUFBLFNBQVMsRUFBRSxDQUxUO0FBTUZDLFVBQUFBLGlCQUFpQixFQUFFO0FBQUEsbUJBQU0sVUFBQXRCLENBQUM7QUFBQSxxQkFBSUEsQ0FBQyxDQUFDdUIsVUFBRixDQUFhVyxTQUFiLElBQTBCN0IsZ0JBQTlCO0FBQUEsYUFBUDtBQUFBO0FBTmpCLFVBMUJDO0FBa0NMOEIsUUFBQUEsTUFBTSxFQUFFO0FBQ052RCxVQUFBQSxRQUFRLEVBQUUsUUFESjtBQUVONkMsVUFBQUEsS0FBSyxFQUFFLGFBRkQ7QUFHTkMsVUFBQUEsS0FBSyxFQUFFLGFBSEQ7QUFJTkMsVUFBQUEsTUFBTSxFQUFFLGNBSkY7QUFLTkMsVUFBQUEsS0FBSyxFQUFFLGFBTEQ7QUFNTkMsVUFBQUEsR0FBRyxFQUFFLFFBTkM7QUFPTkMsVUFBQUEsZ0JBQWdCLEVBQUVDLGdDQUFlRSxJQVAzQjtBQVFOZixVQUFBQSxRQUFRLEVBQUUsY0FSSjtBQVNOQyxVQUFBQSxTQUFTLEVBQUUsbUJBQUFOLE1BQU07QUFBQSxtQkFBSUEsTUFBTSxDQUFDTyxTQUFQLENBQWlCMUIsUUFBckI7QUFBQSxXQVRYO0FBVU4yQixVQUFBQSxTQUFTLEVBQUUsQ0FWTDtBQVdOQyxVQUFBQSxpQkFBaUIsRUFBRTtBQUFBLG1CQUFNLFVBQUF0QixDQUFDO0FBQUEscUJBQUlBLENBQUMsQ0FBQ3VCLFVBQUYsQ0FBYWEsU0FBYixJQUEwQmhDLGdCQUE5QjtBQUFBLGFBQVA7QUFBQTtBQVhiLFNBbENIO0FBK0NMbEIsUUFBQUEsTUFBTSxFQUFFO0FBQ05OLFVBQUFBLFFBQVEsRUFBRSxRQURKO0FBRU42QyxVQUFBQSxLQUFLLEVBQUUsYUFGRDtBQUdOQyxVQUFBQSxLQUFLLEVBQUUsYUFIRDtBQUlOQyxVQUFBQSxNQUFNLEVBQUUsY0FKRjtBQUtOQyxVQUFBQSxLQUFLLEVBQUUsYUFMRDtBQU1OQyxVQUFBQSxHQUFHLEVBQUUsUUFOQztBQU9OQyxVQUFBQSxnQkFBZ0IsRUFBRUMsZ0NBQWU3QyxNQVAzQjtBQVFOZ0MsVUFBQUEsUUFBUSxFQUFFLFdBUko7QUFTTkcsVUFBQUEsU0FBUyxFQUFFLENBVEw7QUFVTkMsVUFBQUEsaUJBQWlCLEVBQUU7QUFBQSxtQkFBTSxVQUFBdEIsQ0FBQztBQUFBLHFCQUFJQSxDQUFDLENBQUN1QixVQUFGLENBQWFyQyxNQUFiLElBQXVCb0IsYUFBM0I7QUFBQSxhQUFQO0FBQUE7QUFWYjtBQS9DSCxPQUFQO0FBNEREOzs7V0F5QkQsaUNBQWtDO0FBQUEsVUFBWkUsS0FBWSx1RUFBSixFQUFJO0FBQ2hDLHVLQUNpQ0EsS0FEakM7QUFHRTtBQUNBNkIsUUFBQUEsV0FBVyxFQUFFLElBSmY7QUFLRUMsUUFBQUEsWUFBWSxFQUFFLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FMaEI7QUFNRUMsUUFBQUEsV0FBVyxFQUFFLFFBTmY7QUFRRTtBQUNBQyxRQUFBQSxXQUFXLEVBQUUsSUFUZjtBQVVFQyxRQUFBQSxZQUFZLEVBQUUsQ0FBQyxDQUFELEVBQUksQ0FBSixDQVZoQjtBQVdFQyxRQUFBQSxXQUFXLEVBQUUsUUFYZjtBQWFFO0FBQ0FDLFFBQUFBLGdCQUFnQixFQUFFLElBZHBCO0FBZUVDLFFBQUFBLGlCQUFpQixFQUFFLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FmckI7QUFnQkVDLFFBQUFBLGdCQUFnQixFQUFFO0FBaEJwQjtBQWtCRDs7O1dBRUQsc0JBQWFDLE1BQWIsRUFBcUJsQyxhQUFyQixFQUFvQztBQUNsQztBQUNBLGFBQU9BLGFBQWEsQ0FBQ21DLEdBQWQsQ0FBa0JELE1BQU0sQ0FBQ3ZCLFVBQVAsQ0FBa0JyQixLQUFwQyxDQUFQO0FBQ0Q7OztXQUVELHVDQUF1RDhDLFdBQXZELEVBQW9FO0FBQUE7O0FBQUEsVUFBNUNwQyxhQUE0QyxTQUE1Q0EsYUFBNEM7QUFBQSxVQUE3QnFDLGFBQTZCLFNBQTdCQSxhQUE2QjtBQUNsRSxhQUFPQSxhQUFhLENBQUNDLEdBQWQsQ0FBa0IsVUFBQUMsQ0FBQztBQUFBLGVBQUksTUFBSSxDQUFDMUMsYUFBTCxDQUFtQjBDLENBQW5CLENBQUo7QUFBQSxPQUFuQixFQUE4Q0MsTUFBOUMsQ0FBcUQsVUFBQXBELENBQUM7QUFBQSxlQUFJQSxDQUFKO0FBQUEsT0FBdEQsQ0FBUDtBQUNEOzs7V0FFRCx5QkFBZ0JxRCxRQUFoQixFQUEwQkMsWUFBMUIsRUFBd0M7QUFBQSxrQ0FDSEQsUUFBUSxDQUFDLEtBQUt4QyxNQUFMLENBQVkwQyxNQUFiLENBREw7QUFBQSxVQUMvQkMsU0FEK0IseUJBQy9CQSxTQUQrQjtBQUFBLFVBQ3BCNUMsYUFEb0IseUJBQ3BCQSxhQURvQjs7QUFBQSw2QkFFdkIsS0FBSzZDLFVBQUwsQ0FBZ0JKLFFBQWhCLEVBQTBCQyxZQUExQixDQUZ1QjtBQUFBLFVBRS9CSSxJQUYrQixvQkFFL0JBLElBRitCOztBQUl0QyxVQUFNQyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQTRCLENBQUM1RCxFQUFELEVBQUtDLENBQUwsRUFBUTRELFVBQVIsRUFBdUI7QUFDdkQsZUFBTzdELEVBQUUsQ0FBQ0UsT0FBSCxDQUFXRCxDQUFDLENBQUN1QixVQUFGLENBQWFyQixLQUF4QixFQUErQjBELFVBQS9CLENBQVA7QUFDRCxPQUZEOztBQUdBLFVBQU1DLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0IsQ0FBQUMsQ0FBQztBQUFBLGVBQUlBLENBQUMsQ0FBQ3ZDLFVBQUYsQ0FBYXJCLEtBQWpCO0FBQUEsT0FBdkI7O0FBRUEsVUFBTTZELFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQUFoRSxFQUFFO0FBQUEsZUFBSSxVQUFBQyxDQUFDO0FBQUEsaUJBQUs7QUFBQ0UsWUFBQUEsS0FBSyxFQUFFRixDQUFDLENBQUN1QixVQUFGLENBQWFyQjtBQUFyQixXQUFMO0FBQUEsU0FBTDtBQUFBLE9BQXZCOztBQUNBLFVBQU04RCxTQUFTLEdBQUcsS0FBS0MscUJBQUwsQ0FBMkI7QUFBQ0YsUUFBQUEsWUFBWSxFQUFaQSxZQUFEO0FBQWVuRCxRQUFBQSxhQUFhLEVBQWJBO0FBQWYsT0FBM0IsQ0FBbEI7QUFFQTtBQUNFOEMsUUFBQUEsSUFBSSxFQUFKQSxJQURGO0FBRUVRLFFBQUFBLGNBQWMsRUFBRVYsU0FBUyxDQUFDVyxtQkFBVixDQUE4QnZELGFBQTlCLEVBQ2RpRCxhQURjLEVBRWRGLHlCQUZjO0FBRmxCLFNBTUtLLFNBTkw7QUFRRDs7O1dBRUQseUJBQWdCcEQsYUFBaEIsRUFBK0I7QUFDN0IsVUFBTXdELFVBQVUsR0FBRyxLQUFLekQsbUJBQUwsQ0FBeUJDLGFBQXpCLENBQW5CO0FBQ0EsV0FBS0gsYUFBTCxHQUFxQixzQ0FBbUJHLGFBQW5CLEVBQWtDd0QsVUFBbEMsQ0FBckIsQ0FGNkIsQ0FJN0I7O0FBQ0EsVUFBTUMsTUFBTSxHQUFHLG9DQUFpQixLQUFLNUQsYUFBdEIsQ0FBZixDQUw2QixDQU03Qjs7QUFDQSxVQUFNNkQsV0FBVyxHQUFHQyxPQUFPLENBQ3pCLEtBQUs5RCxhQUFMLENBQW1CK0QsSUFBbkIsQ0FBd0IsVUFBQXhFLENBQUM7QUFBQSxlQUFJQSxDQUFDLElBQUlBLENBQUMsQ0FBQ3VCLFVBQVAsSUFBcUJ2QixDQUFDLENBQUN1QixVQUFGLENBQWFyQyxNQUF0QztBQUFBLE9BQXpCLENBRHlCLENBQTNCLENBUDZCLENBVzdCOztBQUNBLFVBQU11RixZQUFZLEdBQUcsMENBQXVCLEtBQUtoRSxhQUE1QixDQUFyQjtBQUVBLFdBQUtpRSxVQUFMLENBQWdCO0FBQUNMLFFBQUFBLE1BQU0sRUFBTkEsTUFBRDtBQUFTQyxRQUFBQSxXQUFXLEVBQVhBLFdBQVQ7QUFBc0JHLFFBQUFBLFlBQVksRUFBWkE7QUFBdEIsT0FBaEI7QUFDRDs7O1dBRUQsc0NBQXVDO0FBQUEsVUFBaEI3RCxhQUFnQixTQUFoQkEsYUFBZ0I7QUFDckMsV0FBSytELGVBQUwsQ0FBcUIvRCxhQUFyQjtBQURxQyxVQUc5QjZELFlBSDhCLEdBR2QsS0FBS0csSUFIUyxDQUc5QkgsWUFIOEIsRUFJckM7O0FBQ0EsVUFBSUEsWUFBWSxJQUFJQSxZQUFZLENBQUNJLE9BQWpDLEVBQTBDO0FBQ3hDO0FBQ0EsZUFBTyxLQUFLQyxvQkFBTCxDQUEwQjtBQUMvQnJGLFVBQUFBLE1BQU0sRUFBRSxJQUR1QjtBQUUvQkQsVUFBQUEsT0FBTyxFQUFFLElBRnNCO0FBRy9CVCxVQUFBQSxXQUFXLEVBQUVnRyxzQkFBV0MsSUFBWCxHQUFrQkM7QUFIQSxTQUExQixDQUFQO0FBS0QsT0FQRCxNQU9PLElBQUlSLFlBQVksSUFBSUEsWUFBWSxDQUFDUyxLQUFqQyxFQUF3QztBQUM3QztBQUNBLGVBQU8sS0FBS0osb0JBQUwsQ0FBMEI7QUFBQ3JGLFVBQUFBLE1BQU0sRUFBRSxJQUFUO0FBQWVELFVBQUFBLE9BQU8sRUFBRTtBQUF4QixTQUExQixDQUFQO0FBQ0Q7O0FBRUQsYUFBTyxJQUFQO0FBQ0Q7OztXQUVELHFCQUFZMkYsSUFBWixFQUFrQjtBQUFBLFVBQ1R6QixJQURTLEdBQzRDeUIsSUFENUMsQ0FDVHpCLElBRFM7QUFBQSxVQUNIRixTQURHLEdBQzRDMkIsSUFENUMsQ0FDSDNCLFNBREc7QUFBQSxVQUNRNEIsYUFEUixHQUM0Q0QsSUFENUMsQ0FDUUMsYUFEUjtBQUFBLFVBQ3VCQyxpQkFEdkIsR0FDNENGLElBRDVDLENBQ3VCRSxpQkFEdkI7QUFBQSx1QkFHb0IsS0FBS1QsSUFIekI7QUFBQSxVQUdUTixXQUhTLGNBR1RBLFdBSFM7QUFBQSxVQUdJRyxZQUhKLGNBR0lBLFlBSEo7QUFJaEIsVUFBTS9CLFdBQVcsR0FBRyxLQUFLNEMsY0FBTCxDQUFvQmhCLFdBQXBCLENBQXBCO0FBQ0EsVUFBTWlCLFdBQVcsR0FBRyxLQUFLQyxhQUFMLENBQW1CbEIsV0FBbkIsQ0FBcEI7QUFMZ0IsVUFPVGxELFNBUFMsR0FPSSxLQUFLUCxNQVBULENBT1RPLFNBUFM7QUFTaEIsVUFBTXFFLFVBQVUsR0FBRztBQUNqQkMsUUFBQUEsY0FBYyxFQUFFdEUsU0FBUyxDQUFDdkMsU0FEVDtBQUVqQlMsUUFBQUEsY0FBYyxFQUFFOEIsU0FBUyxDQUFDOUIsY0FGVDtBQUdqQnFHLFFBQUFBLGdCQUFnQixFQUFFakQsV0FIRDtBQUlqQmtELFFBQUFBLGNBQWMsRUFBRTtBQUpDLE9BQW5COztBQU9BLFVBQU1DLGNBQWMsbUNBQ2YsS0FBS0MsOEJBQUwsRUFEZTtBQUVsQjVCLFFBQUFBLGNBQWMsRUFBRVYsU0FBUyxDQUFDdUM7QUFGUixRQUFwQjs7QUFLQSxVQUFNQyxpQkFBaUIsR0FBRyxLQUFLQyx3QkFBTCxDQUE4QmQsSUFBOUIsQ0FBMUI7QUFDQSxVQUFNZSxZQUFZLEdBQUc7QUFDbkJ6SCxRQUFBQSxPQUFPLEVBQUUyQyxTQUFTLENBQUMxQztBQURBLE9BQXJCO0FBSUEsVUFBTXlILFFBQVEsR0FBR2QsaUJBQWlCLENBQUNlLE9BQWxCLENBQTBCQyxPQUEzQztBQUNBLFVBQU1DLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxDQUFzQm5CLGFBQXRCLENBQXRCO0FBRUEsY0FDRSxJQUFJb0Isb0JBQUosNkRBQ0tSLGlCQURMLEdBRUtQLFVBRkwsR0FHSy9CLElBSEw7QUFJRXlDLFFBQUFBLFFBQVEsRUFBUkEsUUFKRjtBQUtFTSxRQUFBQSxjQUFjLEVBQUVDLGtDQUxsQjtBQU1FQyxRQUFBQSxhQUFhLEVBQUV2RixTQUFTLENBQUMxQixRQUFWLElBQXNCeUcsUUFOdkM7QUFPRTNHLFFBQUFBLE9BQU8sRUFBRTRCLFNBQVMsQ0FBQzVCLE9BUHJCO0FBUUVDLFFBQUFBLE1BQU0sRUFBRTJCLFNBQVMsQ0FBQzNCLE1BUnBCO0FBU0VtSCxRQUFBQSxRQUFRLEVBQUV4RixTQUFTLENBQUMxQixRQVR0QjtBQVVFQyxRQUFBQSxTQUFTLEVBQUV5QixTQUFTLENBQUN6QixTQVZ2QjtBQVdFa0gsUUFBQUEsYUFBYSxFQUFFLEtBWGpCO0FBWUVqQixRQUFBQSxjQUFjLEVBQUUsQ0FabEI7QUFhRWtCLFFBQUFBLE9BQU8sRUFBRSxJQWJYO0FBY0V2QixRQUFBQSxXQUFXLEVBQVhBLFdBZEY7QUFlRXdCLFFBQUFBLGNBQWMsRUFBRSxRQWZsQjtBQWdCRWxCLFFBQUFBLGNBQWMsRUFBZEEsY0FoQkY7QUFpQkVtQixRQUFBQSxjQUFjLGdEQUNSdkMsWUFBWSxDQUFDSSxPQUFiLEdBQXVCO0FBQUMsNkJBQW1CcUI7QUFBcEIsU0FBdkIsR0FBMkQsRUFEbkQsR0FFUnpCLFlBQVksQ0FBQ3dDLElBQWIsR0FBb0I7QUFBQ0MsVUFBQUEsV0FBVyxFQUFFaEI7QUFBZCxTQUFwQixHQUFrRCxFQUYxQyxHQUdSekIsWUFBWSxDQUFDUyxLQUFiLEdBQ0E7QUFDRWlDLFVBQUFBLE1BQU0sRUFBRTtBQUNOQyxZQUFBQSxXQUFXLEVBQUVoRyxTQUFTLENBQUMxQztBQURqQjtBQURWLFNBREEsR0FNQSxFQVRRO0FBakJoQixTQURGLDZDQThCTTRILGFBQWEsSUFBSSxDQUFDbEYsU0FBUyxDQUFDMUIsUUFBNUIsR0FDQSxDQUNFLElBQUk4RyxvQkFBSiwrQ0FDSyxLQUFLYSx5QkFBTCxFQURMLEdBRUs1QixVQUZMO0FBR0VvQixRQUFBQSxhQUFhLEVBQUUsS0FIakI7QUFJRW5ELFFBQUFBLElBQUksRUFBRSxDQUFDNEMsYUFBRCxDQUpSO0FBS0VnQixRQUFBQSxZQUFZLEVBQUU1RCxJQUFJLENBQUM0RCxZQUxyQjtBQU1FQyxRQUFBQSxTQUFTLEVBQUU3RCxJQUFJLENBQUM2RCxTQU5sQjtBQU9FQyxRQUFBQSxZQUFZLEVBQUU5RCxJQUFJLENBQUM4RCxZQVByQjtBQVFFQyxRQUFBQSxZQUFZLEVBQUUsS0FBSzVHLE1BQUwsQ0FBWTRGLGNBUjVCO0FBU0VpQixRQUFBQSxZQUFZLEVBQUUsS0FBSzdHLE1BQUwsQ0FBWTRGLGNBVDVCO0FBVUU7QUFDQWpILFFBQUFBLE9BQU8sRUFBRSxJQVhYO0FBWUVDLFFBQUFBLE1BQU0sRUFBRTtBQVpWLFNBREYsQ0FEQSxHQWlCQSxFQS9DTjtBQWlERDs7O1dBOUxELHNDQUFtRDtBQUFBOztBQUFBLFVBQXJCa0ksS0FBcUIsU0FBckJBLEtBQXFCO0FBQUEsK0JBQWRDLE1BQWM7QUFBQSxVQUFkQSxNQUFjLDZCQUFMLEVBQUs7QUFDakQsVUFBTUMsY0FBYyxHQUFHRCxNQUFNLENBQzFCeEUsTUFEb0IsQ0FDYixVQUFBVSxDQUFDO0FBQUEsZUFBSUEsQ0FBQyxDQUFDZ0UsSUFBRixLQUFXLFNBQVgsSUFBd0IxSix3QkFBd0IsQ0FBQzBGLENBQUMsQ0FBQ2lFLFlBQUgsQ0FBcEQ7QUFBQSxPQURZLEVBRXBCN0UsR0FGb0IsQ0FFaEIsVUFBQVksQ0FBQztBQUFBLGVBQUlBLENBQUMsQ0FBQ2tFLElBQU47QUFBQSxPQUZlLENBQXZCO0FBSUEsVUFBTUMsY0FBYyxHQUFHO0FBQ3JCbkksUUFBQUEsT0FBTyxFQUFFLHNFQUFTb0ksZ0NBQWVwSSxPQUF4Qix1Q0FBb0MrSCxjQUFwQztBQURZLE9BQXZCO0FBSUEsVUFBTU0sWUFBWSxHQUFHLEtBQUtDLHNCQUFMLENBQTRCSCxjQUE1QixFQUE0Q0wsTUFBNUMsQ0FBckI7O0FBQ0EsVUFBSSxDQUFDTyxZQUFELElBQWlCLENBQUNBLFlBQVksQ0FBQ0UsTUFBbkMsRUFBMkM7QUFDekMsZUFBTztBQUFDN0gsVUFBQUEsS0FBSyxFQUFFO0FBQVIsU0FBUDtBQUNEOztBQUVELGFBQU87QUFDTEEsUUFBQUEsS0FBSyxFQUFFMkgsWUFBWSxDQUFDakYsR0FBYixDQUFpQixVQUFBcEMsT0FBTztBQUFBLGlCQUFLO0FBQ2xDNkcsWUFBQUEsS0FBSyxFQUFHLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsSUFBNkJBLEtBQUssQ0FBQ1csT0FBTixDQUFjLFdBQWQsRUFBMkIsRUFBM0IsQ0FBOUIsSUFBaUUsTUFBSSxDQUFDUixJQUQzQztBQUVsQ2hILFlBQUFBLE9BQU8sRUFBUEEsT0FGa0M7QUFHbEN5SCxZQUFBQSxTQUFTLEVBQUU7QUFIdUIsV0FBTDtBQUFBLFNBQXhCO0FBREYsT0FBUDtBQU9EOzs7RUE5R3VDQyxxQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB1bmlxIGZyb20gJ2xvZGFzaC51bmlxJztcbmltcG9ydCB7REFUQV9UWVBFU30gZnJvbSAndHlwZS1hbmFseXplcic7XG5cbmltcG9ydCBMYXllciwge2NvbG9yTWFrZXJ9IGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IHtHZW9Kc29uTGF5ZXIgYXMgRGVja0dMR2VvSnNvbkxheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHtnZXRHZW9qc29uRGF0YU1hcHMsIGdldEdlb2pzb25Cb3VuZHMsIGdldEdlb2pzb25GZWF0dXJlVHlwZXN9IGZyb20gJy4vZ2VvanNvbi11dGlscyc7XG5pbXBvcnQgR2VvanNvbkxheWVySWNvbiBmcm9tICcuL2dlb2pzb24tbGF5ZXItaWNvbic7XG5pbXBvcnQge0dFT0pTT05fRklFTERTLCBISUdITElHSF9DT0xPUl8zRCwgQ0hBTk5FTF9TQ0FMRVN9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7TEFZRVJfVklTX0NPTkZJR1N9IGZyb20gJ2xheWVycy9sYXllci1mYWN0b3J5JztcblxuY29uc3QgU1VQUE9SVEVEX0FOQUxZWkVSX1RZUEVTID0ge1xuICBbREFUQV9UWVBFUy5HRU9NRVRSWV06IHRydWUsXG4gIFtEQVRBX1RZUEVTLkdFT01FVFJZX0ZST01fU1RSSU5HXTogdHJ1ZVxufTtcblxuZXhwb3J0IGNvbnN0IGdlb2pzb25WaXNDb25maWdzID0ge1xuICBvcGFjaXR5OiAnb3BhY2l0eScsXG4gIHN0cm9rZU9wYWNpdHk6IHtcbiAgICAuLi5MQVlFUl9WSVNfQ09ORklHUy5vcGFjaXR5LFxuICAgIHByb3BlcnR5OiAnc3Ryb2tlT3BhY2l0eSdcbiAgfSxcbiAgdGhpY2tuZXNzOiB7XG4gICAgLi4uTEFZRVJfVklTX0NPTkZJR1MudGhpY2tuZXNzLFxuICAgIGRlZmF1bHRWYWx1ZTogMVxuICB9LFxuICBzdHJva2VDb2xvcjogJ3N0cm9rZUNvbG9yJyxcbiAgY29sb3JSYW5nZTogJ2NvbG9yUmFuZ2UnLFxuICBzdHJva2VDb2xvclJhbmdlOiAnc3Ryb2tlQ29sb3JSYW5nZScsXG4gIHJhZGl1czogJ3JhZGl1cycsXG5cbiAgc2l6ZVJhbmdlOiAnc3Ryb2tlV2lkdGhSYW5nZScsXG4gIHJhZGl1c1JhbmdlOiAncmFkaXVzUmFuZ2UnLFxuICBoZWlnaHRSYW5nZTogJ2VsZXZhdGlvblJhbmdlJyxcbiAgZWxldmF0aW9uU2NhbGU6ICdlbGV2YXRpb25TY2FsZScsXG4gIGVuYWJsZUVsZXZhdGlvblpvb21GYWN0b3I6ICdlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yJyxcbiAgc3Ryb2tlZDogJ3N0cm9rZWQnLFxuICBmaWxsZWQ6ICdmaWxsZWQnLFxuICBlbmFibGUzZDogJ2VuYWJsZTNkJyxcbiAgd2lyZWZyYW1lOiAnd2lyZWZyYW1lJ1xufTtcblxuZXhwb3J0IGNvbnN0IGdlb0pzb25SZXF1aXJlZENvbHVtbnMgPSBbJ2dlb2pzb24nXTtcbmV4cG9ydCBjb25zdCBmZWF0dXJlQWNjZXNzb3IgPSAoe2dlb2pzb259KSA9PiBkYyA9PiBkID0+IGRjLnZhbHVlQXQoZC5pbmRleCwgZ2VvanNvbi5maWVsZElkeCk7XG5cbi8vIGFjY2VzcyBmZWF0dXJlIHByb3BlcnRpZXMgZnJvbSBnZW9qc29uIHN1YiBsYXllclxuZXhwb3J0IGNvbnN0IGRlZmF1bHRFbGV2YXRpb24gPSA1MDA7XG5leHBvcnQgY29uc3QgZGVmYXVsdExpbmVXaWR0aCA9IDE7XG5leHBvcnQgY29uc3QgZGVmYXVsdFJhZGl1cyA9IDE7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdlb0pzb25MYXllciBleHRlbmRzIExheWVyIHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLmRhdGFUb0ZlYXR1cmUgPSBbXTtcbiAgICB0aGlzLnJlZ2lzdGVyVmlzQ29uZmlnKGdlb2pzb25WaXNDb25maWdzKTtcbiAgICB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IgPSBkYXRhQ29udGFpbmVyID0+IGZlYXR1cmVBY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zKShkYXRhQ29udGFpbmVyKTtcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiAnZ2VvanNvbic7XG4gIH1cblxuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gJ1BvbHlnb24nO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpIHtcbiAgICByZXR1cm4gR2VvanNvbkxheWVySWNvbjtcbiAgfVxuXG4gIGdldCByZXF1aXJlZExheWVyQ29sdW1ucygpIHtcbiAgICByZXR1cm4gZ2VvSnNvblJlcXVpcmVkQ29sdW1ucztcbiAgfVxuXG4gIGdldCB2aXN1YWxDaGFubmVscygpIHtcbiAgICBjb25zdCB2aXN1YWxDaGFubmVscyA9IHN1cGVyLnZpc3VhbENoYW5uZWxzO1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjoge1xuICAgICAgICAuLi52aXN1YWxDaGFubmVscy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRGaWxsQ29sb3InLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLmZpbGxlZCxcbiAgICAgICAgbnVsbFZhbHVlOiB2aXN1YWxDaGFubmVscy5jb2xvci5udWxsVmFsdWUsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiBjb25maWcgPT4gZCA9PiBkLnByb3BlcnRpZXMuZmlsbENvbG9yIHx8IGNvbmZpZy5jb2xvcixcbiAgICAgICAgLy8gdXNlZCB0aGlzIHRvIGdldCB1cGRhdGVUcmlnZ2Vyc1xuICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZyA9PiBjb25maWcuY29sb3JcbiAgICAgIH0sXG4gICAgICBzdHJva2VDb2xvcjoge1xuICAgICAgICBwcm9wZXJ0eTogJ3N0cm9rZUNvbG9yJyxcbiAgICAgICAgZmllbGQ6ICdzdHJva2VDb2xvckZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdzdHJva2VDb2xvclNjYWxlJyxcbiAgICAgICAgZG9tYWluOiAnc3Ryb2tlQ29sb3JEb21haW4nLFxuICAgICAgICByYW5nZTogJ3N0cm9rZUNvbG9yUmFuZ2UnLFxuICAgICAgICBrZXk6ICdzdHJva2VDb2xvcicsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6IENIQU5ORUxfU0NBTEVTLmNvbG9yLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldExpbmVDb2xvcicsXG4gICAgICAgIGNvbmRpdGlvbjogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuc3Ryb2tlZCxcbiAgICAgICAgbnVsbFZhbHVlOiB2aXN1YWxDaGFubmVscy5jb2xvci5udWxsVmFsdWUsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiBjb25maWcgPT4gZCA9PlxuICAgICAgICAgIGQucHJvcGVydGllcy5saW5lQ29sb3IgfHwgY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvciB8fCBjb25maWcuY29sb3IsXG4gICAgICAgIC8vIHVzZWQgdGhpcyB0byBnZXQgdXBkYXRlVHJpZ2dlcnNcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvciB8fCBjb25maWcuY29sb3JcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIC4uLnZpc3VhbENoYW5uZWxzLnNpemUsXG4gICAgICAgIHByb3BlcnR5OiAnc3Ryb2tlJyxcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRMaW5lV2lkdGgnLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLnN0cm9rZWQsXG4gICAgICAgIG51bGxWYWx1ZTogMCxcbiAgICAgICAgZ2V0QXR0cmlidXRlVmFsdWU6ICgpID0+IGQgPT4gZC5wcm9wZXJ0aWVzLmxpbmVXaWR0aCB8fCBkZWZhdWx0TGluZVdpZHRoXG4gICAgICB9LFxuICAgICAgaGVpZ2h0OiB7XG4gICAgICAgIHByb3BlcnR5OiAnaGVpZ2h0JyxcbiAgICAgICAgZmllbGQ6ICdoZWlnaHRGaWVsZCcsXG4gICAgICAgIHNjYWxlOiAnaGVpZ2h0U2NhbGUnLFxuICAgICAgICBkb21haW46ICdoZWlnaHREb21haW4nLFxuICAgICAgICByYW5nZTogJ2hlaWdodFJhbmdlJyxcbiAgICAgICAga2V5OiAnaGVpZ2h0JyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuc2l6ZSxcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRFbGV2YXRpb24nLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLmVuYWJsZTNkLFxuICAgICAgICBudWxsVmFsdWU6IDAsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiAoKSA9PiBkID0+IGQucHJvcGVydGllcy5lbGV2YXRpb24gfHwgZGVmYXVsdEVsZXZhdGlvblxuICAgICAgfSxcbiAgICAgIHJhZGl1czoge1xuICAgICAgICBwcm9wZXJ0eTogJ3JhZGl1cycsXG4gICAgICAgIGZpZWxkOiAncmFkaXVzRmllbGQnLFxuICAgICAgICBzY2FsZTogJ3JhZGl1c1NjYWxlJyxcbiAgICAgICAgZG9tYWluOiAncmFkaXVzRG9tYWluJyxcbiAgICAgICAgcmFuZ2U6ICdyYWRpdXNSYW5nZScsXG4gICAgICAgIGtleTogJ3JhZGl1cycsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6IENIQU5ORUxfU0NBTEVTLnJhZGl1cyxcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRSYWRpdXMnLFxuICAgICAgICBudWxsVmFsdWU6IDAsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiAoKSA9PiBkID0+IGQucHJvcGVydGllcy5yYWRpdXMgfHwgZGVmYXVsdFJhZGl1c1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZmluZERlZmF1bHRMYXllclByb3BzKHtsYWJlbCwgZmllbGRzID0gW119KSB7XG4gICAgY29uc3QgZ2VvanNvbkNvbHVtbnMgPSBmaWVsZHNcbiAgICAgIC5maWx0ZXIoZiA9PiBmLnR5cGUgPT09ICdnZW9qc29uJyAmJiBTVVBQT1JURURfQU5BTFlaRVJfVFlQRVNbZi5hbmFseXplclR5cGVdKVxuICAgICAgLm1hcChmID0+IGYubmFtZSk7XG5cbiAgICBjb25zdCBkZWZhdWx0Q29sdW1ucyA9IHtcbiAgICAgIGdlb2pzb246IHVuaXEoWy4uLkdFT0pTT05fRklFTERTLmdlb2pzb24sIC4uLmdlb2pzb25Db2x1bW5zXSlcbiAgICB9O1xuXG4gICAgY29uc3QgZm91bmRDb2x1bW5zID0gdGhpcy5maW5kRGVmYXVsdENvbHVtbkZpZWxkKGRlZmF1bHRDb2x1bW5zLCBmaWVsZHMpO1xuICAgIGlmICghZm91bmRDb2x1bW5zIHx8ICFmb3VuZENvbHVtbnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge3Byb3BzOiBbXX07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3BzOiBmb3VuZENvbHVtbnMubWFwKGNvbHVtbnMgPT4gKHtcbiAgICAgICAgbGFiZWw6ICh0eXBlb2YgbGFiZWwgPT09ICdzdHJpbmcnICYmIGxhYmVsLnJlcGxhY2UoL1xcLlteLy5dKyQvLCAnJykpIHx8IHRoaXMudHlwZSxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgaXNWaXNpYmxlOiB0cnVlXG4gICAgICB9KSlcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzID0ge30pIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzKSxcblxuICAgICAgLy8gYWRkIGhlaWdodCB2aXN1YWwgY2hhbm5lbFxuICAgICAgaGVpZ2h0RmllbGQ6IG51bGwsXG4gICAgICBoZWlnaHREb21haW46IFswLCAxXSxcbiAgICAgIGhlaWdodFNjYWxlOiAnbGluZWFyJyxcblxuICAgICAgLy8gYWRkIHJhZGl1cyB2aXN1YWwgY2hhbm5lbFxuICAgICAgcmFkaXVzRmllbGQ6IG51bGwsXG4gICAgICByYWRpdXNEb21haW46IFswLCAxXSxcbiAgICAgIHJhZGl1c1NjYWxlOiAnbGluZWFyJyxcblxuICAgICAgLy8gYWRkIHN0cm9rZSBjb2xvciB2aXN1YWwgY2hhbm5lbFxuICAgICAgc3Ryb2tlQ29sb3JGaWVsZDogbnVsbCxcbiAgICAgIHN0cm9rZUNvbG9yRG9tYWluOiBbMCwgMV0sXG4gICAgICBzdHJva2VDb2xvclNjYWxlOiAncXVhbnRpbGUnXG4gICAgfTtcbiAgfVxuXG4gIGdldEhvdmVyRGF0YShvYmplY3QsIGRhdGFDb250YWluZXIpIHtcbiAgICAvLyBpbmRleCBvZiBkYXRhQ29udGFpbmVyIGlzIHNhdmVkIHRvIGZlYXR1cmUucHJvcGVydGllc1xuICAgIHJldHVybiBkYXRhQ29udGFpbmVyLnJvdyhvYmplY3QucHJvcGVydGllcy5pbmRleCk7XG4gIH1cblxuICBjYWxjdWxhdGVEYXRhQXR0cmlidXRlKHtkYXRhQ29udGFpbmVyLCBmaWx0ZXJlZEluZGV4fSwgZ2V0UG9zaXRpb24pIHtcbiAgICByZXR1cm4gZmlsdGVyZWRJbmRleC5tYXAoaSA9PiB0aGlzLmRhdGFUb0ZlYXR1cmVbaV0pLmZpbHRlcihkID0+IGQpO1xuICB9XG5cbiAgZm9ybWF0TGF5ZXJEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpIHtcbiAgICBjb25zdCB7Z3B1RmlsdGVyLCBkYXRhQ29udGFpbmVyfSA9IGRhdGFzZXRzW3RoaXMuY29uZmlnLmRhdGFJZF07XG4gICAgY29uc3Qge2RhdGF9ID0gdGhpcy51cGRhdGVEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuXG4gICAgY29uc3QgY3VzdG9tRmlsdGVyVmFsdWVBY2Nlc3NvciA9IChkYywgZCwgZmllbGRJbmRleCkgPT4ge1xuICAgICAgcmV0dXJuIGRjLnZhbHVlQXQoZC5wcm9wZXJ0aWVzLmluZGV4LCBmaWVsZEluZGV4KTtcbiAgICB9O1xuICAgIGNvbnN0IGluZGV4QWNjZXNzb3IgPSBmID0+IGYucHJvcGVydGllcy5pbmRleDtcblxuICAgIGNvbnN0IGRhdGFBY2Nlc3NvciA9IGRjID0+IGQgPT4gKHtpbmRleDogZC5wcm9wZXJ0aWVzLmluZGV4fSk7XG4gICAgY29uc3QgYWNjZXNzb3JzID0gdGhpcy5nZXRBdHRyaWJ1dGVBY2Nlc3NvcnMoe2RhdGFBY2Nlc3NvciwgZGF0YUNvbnRhaW5lcn0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBnZXRGaWx0ZXJWYWx1ZTogZ3B1RmlsdGVyLmZpbHRlclZhbHVlQWNjZXNzb3IoZGF0YUNvbnRhaW5lcikoXG4gICAgICAgIGluZGV4QWNjZXNzb3IsXG4gICAgICAgIGN1c3RvbUZpbHRlclZhbHVlQWNjZXNzb3JcbiAgICAgICksXG4gICAgICAuLi5hY2Nlc3NvcnNcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJNZXRhKGRhdGFDb250YWluZXIpIHtcbiAgICBjb25zdCBnZXRGZWF0dXJlID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuICAgIHRoaXMuZGF0YVRvRmVhdHVyZSA9IGdldEdlb2pzb25EYXRhTWFwcyhkYXRhQ29udGFpbmVyLCBnZXRGZWF0dXJlKTtcblxuICAgIC8vIGdldCBib3VuZHMgZnJvbSBmZWF0dXJlc1xuICAgIGNvbnN0IGJvdW5kcyA9IGdldEdlb2pzb25Cb3VuZHModGhpcy5kYXRhVG9GZWF0dXJlKTtcbiAgICAvLyBpZiBhbnkgb2YgdGhlIGZlYXR1cmUgaGFzIHByb3BlcnRpZXMucmFkaXVzIHNldCB0byBiZSB0cnVlXG4gICAgY29uc3QgZml4ZWRSYWRpdXMgPSBCb29sZWFuKFxuICAgICAgdGhpcy5kYXRhVG9GZWF0dXJlLmZpbmQoZCA9PiBkICYmIGQucHJvcGVydGllcyAmJiBkLnByb3BlcnRpZXMucmFkaXVzKVxuICAgICk7XG5cbiAgICAvLyBrZWVwIGEgcmVjb3JkIG9mIHdoYXQgdHlwZSBvZiBnZW9tZXRyeSB0aGUgY29sbGVjdGlvbiBoYXNcbiAgICBjb25zdCBmZWF0dXJlVHlwZXMgPSBnZXRHZW9qc29uRmVhdHVyZVR5cGVzKHRoaXMuZGF0YVRvRmVhdHVyZSk7XG5cbiAgICB0aGlzLnVwZGF0ZU1ldGEoe2JvdW5kcywgZml4ZWRSYWRpdXMsIGZlYXR1cmVUeXBlc30pO1xuICB9XG5cbiAgc2V0SW5pdGlhbExheWVyQ29uZmlnKHtkYXRhQ29udGFpbmVyfSkge1xuICAgIHRoaXMudXBkYXRlTGF5ZXJNZXRhKGRhdGFDb250YWluZXIpO1xuXG4gICAgY29uc3Qge2ZlYXR1cmVUeXBlc30gPSB0aGlzLm1ldGE7XG4gICAgLy8gZGVmYXVsdCBzZXR0aW5ncyBpcyBzdHJva2U6IHRydWUsIGZpbGxlZDogZmFsc2VcbiAgICBpZiAoZmVhdHVyZVR5cGVzICYmIGZlYXR1cmVUeXBlcy5wb2x5Z29uKSB7XG4gICAgICAvLyBzZXQgYm90aCBmaWxsIGFuZCBzdHJva2UgdG8gdHJ1ZVxuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlTGF5ZXJWaXNDb25maWcoe1xuICAgICAgICBmaWxsZWQ6IHRydWUsXG4gICAgICAgIHN0cm9rZWQ6IHRydWUsXG4gICAgICAgIHN0cm9rZUNvbG9yOiBjb2xvck1ha2VyLm5leHQoKS52YWx1ZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChmZWF0dXJlVHlwZXMgJiYgZmVhdHVyZVR5cGVzLnBvaW50KSB7XG4gICAgICAvLyBzZXQgZmlsbCB0byB0cnVlIGlmIGRldGVjdCBwb2ludFxuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlTGF5ZXJWaXNDb25maWcoe2ZpbGxlZDogdHJ1ZSwgc3Ryb2tlZDogZmFsc2V9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbmRlckxheWVyKG9wdHMpIHtcbiAgICBjb25zdCB7ZGF0YSwgZ3B1RmlsdGVyLCBvYmplY3RIb3ZlcmVkLCBpbnRlcmFjdGlvbkNvbmZpZ30gPSBvcHRzO1xuXG4gICAgY29uc3Qge2ZpeGVkUmFkaXVzLCBmZWF0dXJlVHlwZXN9ID0gdGhpcy5tZXRhO1xuICAgIGNvbnN0IHJhZGl1c1NjYWxlID0gdGhpcy5nZXRSYWRpdXNTY2FsZShmaXhlZFJhZGl1cyk7XG4gICAgY29uc3QgcmFkaXVzVW5pdHMgPSB0aGlzLmdldFJhZGl1c1VuaXQoZml4ZWRSYWRpdXMpO1xuXG4gICAgY29uc3Qge3Zpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcblxuICAgIGNvbnN0IGxheWVyUHJvcHMgPSB7XG4gICAgICBsaW5lV2lkdGhTY2FsZTogdmlzQ29uZmlnLnRoaWNrbmVzcyxcbiAgICAgIGVsZXZhdGlvblNjYWxlOiB2aXNDb25maWcuZWxldmF0aW9uU2NhbGUsXG4gICAgICBwb2ludFJhZGl1c1NjYWxlOiByYWRpdXNTY2FsZSxcbiAgICAgIGxpbmVNaXRlckxpbWl0OiA0XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge1xuICAgICAgLi4udGhpcy5nZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMoKSxcbiAgICAgIGdldEZpbHRlclZhbHVlOiBncHVGaWx0ZXIuZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2Vyc1xuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0TGF5ZXJQcm9wcyA9IHRoaXMuZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKG9wdHMpO1xuICAgIGNvbnN0IG9wYU92ZXJ3cml0ZSA9IHtcbiAgICAgIG9wYWNpdHk6IHZpc0NvbmZpZy5zdHJva2VPcGFjaXR5XG4gICAgfTtcblxuICAgIGNvbnN0IHBpY2thYmxlID0gaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5lbmFibGVkO1xuICAgIGNvbnN0IGhvdmVyZWRPYmplY3QgPSB0aGlzLmhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SG92ZXJlZCk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgbmV3IERlY2tHTEdlb0pzb25MYXllcih7XG4gICAgICAgIC4uLmRlZmF1bHRMYXllclByb3BzLFxuICAgICAgICAuLi5sYXllclByb3BzLFxuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBwaWNrYWJsZSxcbiAgICAgICAgaGlnaGxpZ2h0Q29sb3I6IEhJR0hMSUdIX0NPTE9SXzNELFxuICAgICAgICBhdXRvSGlnaGxpZ2h0OiB2aXNDb25maWcuZW5hYmxlM2QgJiYgcGlja2FibGUsXG4gICAgICAgIHN0cm9rZWQ6IHZpc0NvbmZpZy5zdHJva2VkLFxuICAgICAgICBmaWxsZWQ6IHZpc0NvbmZpZy5maWxsZWQsXG4gICAgICAgIGV4dHJ1ZGVkOiB2aXNDb25maWcuZW5hYmxlM2QsXG4gICAgICAgIHdpcmVmcmFtZTogdmlzQ29uZmlnLndpcmVmcmFtZSxcbiAgICAgICAgd3JhcExvbmdpdHVkZTogZmFsc2UsXG4gICAgICAgIGxpbmVNaXRlckxpbWl0OiAyLFxuICAgICAgICByb3VuZGVkOiB0cnVlLFxuICAgICAgICByYWRpdXNVbml0cyxcbiAgICAgICAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuICAgICAgICB1cGRhdGVUcmlnZ2VycyxcbiAgICAgICAgX3N1YkxheWVyUHJvcHM6IHtcbiAgICAgICAgICAuLi4oZmVhdHVyZVR5cGVzLnBvbHlnb24gPyB7J3BvbHlnb25zLXN0cm9rZSc6IG9wYU92ZXJ3cml0ZX0gOiB7fSksXG4gICAgICAgICAgLi4uKGZlYXR1cmVUeXBlcy5saW5lID8ge2xpbmVzdHJpbmdzOiBvcGFPdmVyd3JpdGV9IDoge30pLFxuICAgICAgICAgIC4uLihmZWF0dXJlVHlwZXMucG9pbnRcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIHBvaW50czoge1xuICAgICAgICAgICAgICAgICAgbGluZU9wYWNpdHk6IHZpc0NvbmZpZy5zdHJva2VPcGFjaXR5XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHt9KVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIC4uLihob3ZlcmVkT2JqZWN0ICYmICF2aXNDb25maWcuZW5hYmxlM2RcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBuZXcgRGVja0dMR2VvSnNvbkxheWVyKHtcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0SG92ZXJMYXllclByb3BzKCksXG4gICAgICAgICAgICAgIC4uLmxheWVyUHJvcHMsXG4gICAgICAgICAgICAgIHdyYXBMb25naXR1ZGU6IGZhbHNlLFxuICAgICAgICAgICAgICBkYXRhOiBbaG92ZXJlZE9iamVjdF0sXG4gICAgICAgICAgICAgIGdldExpbmVXaWR0aDogZGF0YS5nZXRMaW5lV2lkdGgsXG4gICAgICAgICAgICAgIGdldFJhZGl1czogZGF0YS5nZXRSYWRpdXMsXG4gICAgICAgICAgICAgIGdldEVsZXZhdGlvbjogZGF0YS5nZXRFbGV2YXRpb24sXG4gICAgICAgICAgICAgIGdldExpbmVDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgIGdldEZpbGxDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgIC8vIGFsd2F5cyBkcmF3IG91dGxpbmVcbiAgICAgICAgICAgICAgc3Ryb2tlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgZmlsbGVkOiBmYWxzZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pXG4gICAgXTtcbiAgfVxufVxuIl19
|
|
454
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvZ2VvanNvbi1sYXllci9nZW9qc29uLWxheWVyLmpzIl0sIm5hbWVzIjpbIlNVUFBPUlRFRF9BTkFMWVpFUl9UWVBFUyIsIkRBVEFfVFlQRVMiLCJHRU9NRVRSWSIsIkdFT01FVFJZX0ZST01fU1RSSU5HIiwiZ2VvanNvblZpc0NvbmZpZ3MiLCJvcGFjaXR5Iiwic3Ryb2tlT3BhY2l0eSIsIkxBWUVSX1ZJU19DT05GSUdTIiwicHJvcGVydHkiLCJ0aGlja25lc3MiLCJkZWZhdWx0VmFsdWUiLCJzdHJva2VDb2xvciIsImNvbG9yUmFuZ2UiLCJzdHJva2VDb2xvclJhbmdlIiwicmFkaXVzIiwic2l6ZVJhbmdlIiwicmFkaXVzUmFuZ2UiLCJoZWlnaHRSYW5nZSIsImVsZXZhdGlvblNjYWxlIiwiZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvciIsInN0cm9rZWQiLCJmaWxsZWQiLCJlbmFibGUzZCIsIndpcmVmcmFtZSIsImdlb0pzb25SZXF1aXJlZENvbHVtbnMiLCJmZWF0dXJlQWNjZXNzb3IiLCJnZW9qc29uIiwiZGMiLCJkIiwidmFsdWVBdCIsImluZGV4IiwiZmllbGRJZHgiLCJkZWZhdWx0RWxldmF0aW9uIiwiZGVmYXVsdExpbmVXaWR0aCIsImRlZmF1bHRSYWRpdXMiLCJHZW9Kc29uTGF5ZXIiLCJwcm9wcyIsImRhdGFUb0ZlYXR1cmUiLCJyZWdpc3RlclZpc0NvbmZpZyIsImdldFBvc2l0aW9uQWNjZXNzb3IiLCJkYXRhQ29udGFpbmVyIiwiY29uZmlnIiwiY29sdW1ucyIsIkdlb2pzb25MYXllckljb24iLCJ2aXN1YWxDaGFubmVscyIsImNvbG9yIiwiYWNjZXNzb3IiLCJjb25kaXRpb24iLCJ2aXNDb25maWciLCJudWxsVmFsdWUiLCJnZXRBdHRyaWJ1dGVWYWx1ZSIsInByb3BlcnRpZXMiLCJmaWxsQ29sb3IiLCJmaWVsZCIsInNjYWxlIiwiZG9tYWluIiwicmFuZ2UiLCJrZXkiLCJjaGFubmVsU2NhbGVUeXBlIiwiQ0hBTk5FTF9TQ0FMRVMiLCJsaW5lQ29sb3IiLCJzaXplIiwibGluZVdpZHRoIiwiaGVpZ2h0IiwiZWxldmF0aW9uIiwiaGVpZ2h0RmllbGQiLCJoZWlnaHREb21haW4iLCJoZWlnaHRTY2FsZSIsInJhZGl1c0ZpZWxkIiwicmFkaXVzRG9tYWluIiwicmFkaXVzU2NhbGUiLCJzdHJva2VDb2xvckZpZWxkIiwic3Ryb2tlQ29sb3JEb21haW4iLCJzdHJva2VDb2xvclNjYWxlIiwib2JqZWN0Iiwicm93IiwiZ2V0UG9zaXRpb24iLCJmaWx0ZXJlZEluZGV4IiwibWFwIiwiaSIsImZpbHRlciIsImRhdGFzZXRzIiwib2xkTGF5ZXJEYXRhIiwiZGF0YUlkIiwiZ3B1RmlsdGVyIiwidXBkYXRlRGF0YSIsImRhdGEiLCJjdXN0b21GaWx0ZXJWYWx1ZUFjY2Vzc29yIiwiZmllbGRJbmRleCIsImluZGV4QWNjZXNzb3IiLCJmIiwiZGF0YUFjY2Vzc29yIiwiYWNjZXNzb3JzIiwiZ2V0QXR0cmlidXRlQWNjZXNzb3JzIiwiZ2V0RmlsdGVyVmFsdWUiLCJmaWx0ZXJWYWx1ZUFjY2Vzc29yIiwiZ2V0RmVhdHVyZSIsImJvdW5kcyIsImZpeGVkUmFkaXVzIiwiQm9vbGVhbiIsImZpbmQiLCJmZWF0dXJlVHlwZXMiLCJ1cGRhdGVNZXRhIiwidXBkYXRlTGF5ZXJNZXRhIiwibWV0YSIsInBvbHlnb24iLCJ1cGRhdGVMYXllclZpc0NvbmZpZyIsImNvbG9yTWFrZXIiLCJuZXh0IiwidmFsdWUiLCJwb2ludCIsIm9wdHMiLCJvYmplY3RIb3ZlcmVkIiwiZ2V0UmFkaXVzU2NhbGUiLCJyYWRpdXNVbml0cyIsImdldFJhZGl1c1VuaXQiLCJsYXllclByb3BzIiwibGluZVdpZHRoU2NhbGUiLCJwb2ludFJhZGl1c1NjYWxlIiwibGluZU1pdGVyTGltaXQiLCJ1cGRhdGVUcmlnZ2VycyIsImdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycyIsImZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMiLCJkZWZhdWx0TGF5ZXJQcm9wcyIsImdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyIsIm9wYU92ZXJ3cml0ZSIsInBpY2thYmxlIiwiaGFzSW50ZXJhY3Rpdml0eSIsImhvdmVyZWRPYmplY3QiLCJoYXNIb3ZlcmVkT2JqZWN0IiwiRGVja0dMR2VvSnNvbkxheWVyIiwiaGlnaGxpZ2h0Q29sb3IiLCJISUdITElHSF9DT0xPUl8zRCIsImF1dG9IaWdobGlnaHQiLCJleHRydWRlZCIsIndyYXBMb25naXR1ZGUiLCJyb3VuZGVkIiwibGluZVdpZHRoVW5pdHMiLCJfc3ViTGF5ZXJQcm9wcyIsImxpbmUiLCJsaW5lc3RyaW5ncyIsInBvaW50cyIsImxpbmVPcGFjaXR5IiwiZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcyIsImdldExpbmVXaWR0aCIsImdldFJhZGl1cyIsImdldEVsZXZhdGlvbiIsImdldExpbmVDb2xvciIsImdldEZpbGxDb2xvciIsImxhYmVsIiwiZmllbGRzIiwiZ2VvanNvbkNvbHVtbnMiLCJ0eXBlIiwiYW5hbHl6ZXJUeXBlIiwibmFtZSIsImRlZmF1bHRDb2x1bW5zIiwiR0VPSlNPTl9GSUVMRFMiLCJmb3VuZENvbHVtbnMiLCJmaW5kRGVmYXVsdENvbHVtbkZpZWxkIiwibGVuZ3RoIiwicmVwbGFjZSIsImlzVmlzaWJsZSIsIkxheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLHdCQUF3Qix3RkFDM0JDLHlCQUFXQyxRQURnQixFQUNMLElBREssMkRBRTNCRCx5QkFBV0Usb0JBRmdCLEVBRU8sSUFGUCx5QkFBOUI7QUFLTyxJQUFNQyxpQkFBaUIsR0FBRztBQUMvQkMsRUFBQUEsT0FBTyxFQUFFLFNBRHNCO0FBRS9CQyxFQUFBQSxhQUFhLGtDQUNSQyxnQ0FBa0JGLE9BRFY7QUFFWEcsSUFBQUEsUUFBUSxFQUFFO0FBRkMsSUFGa0I7QUFNL0JDLEVBQUFB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QjtBQUlBLFVBQU1NLFlBQVksR0FBRyxLQUFLQyxzQkFBTCxDQUE0QkgsY0FBNUIsRUFBNENMLE1BQTVDLENBQXJCOztBQUNBLFVBQUksQ0FBQ08sWUFBRCxJQUFpQixDQUFDQSxZQUFZLENBQUNFLE1BQW5DLEVBQTJDO0FBQ3pDLGVBQU87QUFBQzNILFVBQUFBLEtBQUssRUFBRTtBQUFSLFNBQVA7QUFDRDs7QUFFRCxhQUFPO0FBQ0xBLFFBQUFBLEtBQUssRUFBRXlILFlBQVksQ0FBQy9FLEdBQWIsQ0FBaUIsVUFBQXBDLE9BQU87QUFBQSxpQkFBSztBQUNsQzJHLFlBQUFBLEtBQUssRUFBRyxPQUFPQSxLQUFQLEtBQWlCLFFBQWpCLElBQTZCQSxLQUFLLENBQUNXLE9BQU4sQ0FBYyxXQUFkLEVBQTJCLEVBQTNCLENBQTlCLElBQWlFLE1BQUksQ0FBQ1IsSUFEM0M7QUFFbEM5RyxZQUFBQSxPQUFPLEVBQVBBLE9BRmtDO0FBR2xDdUgsWUFBQUEsU0FBUyxFQUFFO0FBSHVCLFdBQUw7QUFBQSxTQUF4QjtBQURGLE9BQVA7QUFPRDs7O0VBOUd1Q0MscUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gudW5pcSc7XG5pbXBvcnQge0RBVEFfVFlQRVN9IGZyb20gJ3R5cGUtYW5hbHl6ZXInO1xuXG5pbXBvcnQgTGF5ZXIsIHtjb2xvck1ha2VyfSBmcm9tICcuLi9iYXNlLWxheWVyJztcbmltcG9ydCB7R2VvSnNvbkxheWVyIGFzIERlY2tHTEdlb0pzb25MYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCB7Z2V0R2VvanNvbkRhdGFNYXBzLCBnZXRHZW9qc29uQm91bmRzLCBnZXRHZW9qc29uRmVhdHVyZVR5cGVzfSBmcm9tICcuL2dlb2pzb24tdXRpbHMnO1xuaW1wb3J0IEdlb2pzb25MYXllckljb24gZnJvbSAnLi9nZW9qc29uLWxheWVyLWljb24nO1xuaW1wb3J0IHtHRU9KU09OX0ZJRUxEUywgSElHSExJR0hfQ09MT1JfM0QsIENIQU5ORUxfU0NBTEVTfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQge0xBWUVSX1ZJU19DT05GSUdTfSBmcm9tICdsYXllcnMvbGF5ZXItZmFjdG9yeSc7XG5cbmNvbnN0IFNVUFBPUlRFRF9BTkFMWVpFUl9UWVBFUyA9IHtcbiAgW0RBVEFfVFlQRVMuR0VPTUVUUlldOiB0cnVlLFxuICBbREFUQV9UWVBFUy5HRU9NRVRSWV9GUk9NX1NUUklOR106IHRydWVcbn07XG5cbmV4cG9ydCBjb25zdCBnZW9qc29uVmlzQ29uZmlncyA9IHtcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICBzdHJva2VPcGFjaXR5OiB7XG4gICAgLi4uTEFZRVJfVklTX0NPTkZJR1Mub3BhY2l0eSxcbiAgICBwcm9wZXJ0eTogJ3N0cm9rZU9wYWNpdHknXG4gIH0sXG4gIHRoaWNrbmVzczoge1xuICAgIC4uLkxBWUVSX1ZJU19DT05GSUdTLnRoaWNrbmVzcyxcbiAgICBkZWZhdWx0VmFsdWU6IDFcbiAgfSxcbiAgc3Ryb2tlQ29sb3I6ICdzdHJva2VDb2xvcicsXG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJyxcbiAgc3Ryb2tlQ29sb3JSYW5nZTogJ3N0cm9rZUNvbG9yUmFuZ2UnLFxuICByYWRpdXM6ICdyYWRpdXMnLFxuXG4gIHNpemVSYW5nZTogJ3N0cm9rZVdpZHRoUmFuZ2UnLFxuICByYWRpdXNSYW5nZTogJ3JhZGl1c1JhbmdlJyxcbiAgaGVpZ2h0UmFuZ2U6ICdlbGV2YXRpb25SYW5nZScsXG4gIGVsZXZhdGlvblNjYWxlOiAnZWxldmF0aW9uU2NhbGUnLFxuICBlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yOiAnZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcicsXG4gIHN0cm9rZWQ6ICdzdHJva2VkJyxcbiAgZmlsbGVkOiAnZmlsbGVkJyxcbiAgZW5hYmxlM2Q6ICdlbmFibGUzZCcsXG4gIHdpcmVmcmFtZTogJ3dpcmVmcmFtZSdcbn07XG5cbmV4cG9ydCBjb25zdCBnZW9Kc29uUmVxdWlyZWRDb2x1bW5zID0gWydnZW9qc29uJ107XG5leHBvcnQgY29uc3QgZmVhdHVyZUFjY2Vzc29yID0gKHtnZW9qc29ufSkgPT4gZGMgPT4gZCA9PiBkYy52YWx1ZUF0KGQuaW5kZXgsIGdlb2pzb24uZmllbGRJZHgpO1xuXG4vLyBhY2Nlc3MgZmVhdHVyZSBwcm9wZXJ0aWVzIGZyb20gZ2VvanNvbiBzdWIgbGF5ZXJcbmV4cG9ydCBjb25zdCBkZWZhdWx0RWxldmF0aW9uID0gNTAwO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRMaW5lV2lkdGggPSAxO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRSYWRpdXMgPSAxO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHZW9Kc29uTGF5ZXIgZXh0ZW5kcyBMYXllciB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5kYXRhVG9GZWF0dXJlID0gW107XG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyhnZW9qc29uVmlzQ29uZmlncyk7XG4gICAgdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yID0gZGF0YUNvbnRhaW5lciA9PiBmZWF0dXJlQWNjZXNzb3IodGhpcy5jb25maWcuY29sdW1ucykoZGF0YUNvbnRhaW5lcik7XG4gIH1cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gJ2dlb2pzb24nO1xuICB9XG5cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuICdQb2x5Z29uJztcbiAgfVxuXG4gIGdldCBsYXllckljb24oKSB7XG4gICAgcmV0dXJuIEdlb2pzb25MYXllckljb247XG4gIH1cblxuICBnZXQgcmVxdWlyZWRMYXllckNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIGdlb0pzb25SZXF1aXJlZENvbHVtbnM7XG4gIH1cblxuICBnZXQgdmlzdWFsQ2hhbm5lbHMoKSB7XG4gICAgY29uc3QgdmlzdWFsQ2hhbm5lbHMgPSBzdXBlci52aXN1YWxDaGFubmVscztcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IHtcbiAgICAgICAgLi4udmlzdWFsQ2hhbm5lbHMuY29sb3IsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0RmlsbENvbG9yJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5maWxsZWQsXG4gICAgICAgIG51bGxWYWx1ZTogdmlzdWFsQ2hhbm5lbHMuY29sb3IubnVsbFZhbHVlLFxuICAgICAgICBnZXRBdHRyaWJ1dGVWYWx1ZTogY29uZmlnID0+IGQgPT4gZC5wcm9wZXJ0aWVzLmZpbGxDb2xvciB8fCBjb25maWcuY29sb3IsXG4gICAgICAgIC8vIHVzZWQgdGhpcyB0byBnZXQgdXBkYXRlVHJpZ2dlcnNcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBjb25maWcgPT4gY29uZmlnLmNvbG9yXG4gICAgICB9LFxuICAgICAgc3Ryb2tlQ29sb3I6IHtcbiAgICAgICAgcHJvcGVydHk6ICdzdHJva2VDb2xvcicsXG4gICAgICAgIGZpZWxkOiAnc3Ryb2tlQ29sb3JGaWVsZCcsXG4gICAgICAgIHNjYWxlOiAnc3Ryb2tlQ29sb3JTY2FsZScsXG4gICAgICAgIGRvbWFpbjogJ3N0cm9rZUNvbG9yRG9tYWluJyxcbiAgICAgICAgcmFuZ2U6ICdzdHJva2VDb2xvclJhbmdlJyxcbiAgICAgICAga2V5OiAnc3Ryb2tlQ29sb3InLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiBDSEFOTkVMX1NDQUxFUy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRMaW5lQ29sb3InLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLnN0cm9rZWQsXG4gICAgICAgIG51bGxWYWx1ZTogdmlzdWFsQ2hhbm5lbHMuY29sb3IubnVsbFZhbHVlLFxuICAgICAgICBnZXRBdHRyaWJ1dGVWYWx1ZTogY29uZmlnID0+IGQgPT5cbiAgICAgICAgICBkLnByb3BlcnRpZXMubGluZUNvbG9yIHx8IGNvbmZpZy52aXNDb25maWcuc3Ryb2tlQ29sb3IgfHwgY29uZmlnLmNvbG9yLFxuICAgICAgICAvLyB1c2VkIHRoaXMgdG8gZ2V0IHVwZGF0ZVRyaWdnZXJzXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuc3Ryb2tlQ29sb3IgfHwgY29uZmlnLmNvbG9yXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICAuLi52aXN1YWxDaGFubmVscy5zaXplLFxuICAgICAgICBwcm9wZXJ0eTogJ3N0cm9rZScsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0TGluZVdpZHRoJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5zdHJva2VkLFxuICAgICAgICBudWxsVmFsdWU6IDAsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiAoKSA9PiBkID0+IGQucHJvcGVydGllcy5saW5lV2lkdGggfHwgZGVmYXVsdExpbmVXaWR0aFxuICAgICAgfSxcbiAgICAgIGhlaWdodDoge1xuICAgICAgICBwcm9wZXJ0eTogJ2hlaWdodCcsXG4gICAgICAgIGZpZWxkOiAnaGVpZ2h0RmllbGQnLFxuICAgICAgICBzY2FsZTogJ2hlaWdodFNjYWxlJyxcbiAgICAgICAgZG9tYWluOiAnaGVpZ2h0RG9tYWluJyxcbiAgICAgICAgcmFuZ2U6ICdoZWlnaHRSYW5nZScsXG4gICAgICAgIGtleTogJ2hlaWdodCcsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6IENIQU5ORUxfU0NBTEVTLnNpemUsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0RWxldmF0aW9uJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5lbmFibGUzZCxcbiAgICAgICAgbnVsbFZhbHVlOiAwLFxuICAgICAgICBnZXRBdHRyaWJ1dGVWYWx1ZTogKCkgPT4gZCA9PiBkLnByb3BlcnRpZXMuZWxldmF0aW9uIHx8IGRlZmF1bHRFbGV2YXRpb25cbiAgICAgIH0sXG4gICAgICByYWRpdXM6IHtcbiAgICAgICAgcHJvcGVydHk6ICdyYWRpdXMnLFxuICAgICAgICBmaWVsZDogJ3JhZGl1c0ZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdyYWRpdXNTY2FsZScsXG4gICAgICAgIGRvbWFpbjogJ3JhZGl1c0RvbWFpbicsXG4gICAgICAgIHJhbmdlOiAncmFkaXVzUmFuZ2UnLFxuICAgICAgICBrZXk6ICdyYWRpdXMnLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiBDSEFOTkVMX1NDQUxFUy5yYWRpdXMsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0UmFkaXVzJyxcbiAgICAgICAgbnVsbFZhbHVlOiAwLFxuICAgICAgICBnZXRBdHRyaWJ1dGVWYWx1ZTogKCkgPT4gZCA9PiBkLnByb3BlcnRpZXMucmFkaXVzIHx8IGRlZmF1bHRSYWRpdXNcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGZpbmREZWZhdWx0TGF5ZXJQcm9wcyh7bGFiZWwsIGZpZWxkcyA9IFtdfSkge1xuICAgIGNvbnN0IGdlb2pzb25Db2x1bW5zID0gZmllbGRzXG4gICAgICAuZmlsdGVyKGYgPT4gZi50eXBlID09PSAnZ2VvanNvbicgJiYgU1VQUE9SVEVEX0FOQUxZWkVSX1RZUEVTW2YuYW5hbHl6ZXJUeXBlXSlcbiAgICAgIC5tYXAoZiA9PiBmLm5hbWUpO1xuXG4gICAgY29uc3QgZGVmYXVsdENvbHVtbnMgPSB7XG4gICAgICBnZW9qc29uOiB1bmlxKFsuLi5HRU9KU09OX0ZJRUxEUy5nZW9qc29uLCAuLi5nZW9qc29uQ29sdW1uc10pXG4gICAgfTtcblxuICAgIGNvbnN0IGZvdW5kQ29sdW1ucyA9IHRoaXMuZmluZERlZmF1bHRDb2x1bW5GaWVsZChkZWZhdWx0Q29sdW1ucywgZmllbGRzKTtcbiAgICBpZiAoIWZvdW5kQ29sdW1ucyB8fCAhZm91bmRDb2x1bW5zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHtwcm9wczogW119O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwcm9wczogZm91bmRDb2x1bW5zLm1hcChjb2x1bW5zID0+ICh7XG4gICAgICAgIGxhYmVsOiAodHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyAmJiBsYWJlbC5yZXBsYWNlKC9cXC5bXi8uXSskLywgJycpKSB8fCB0aGlzLnR5cGUsXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGlzVmlzaWJsZTogdHJ1ZVxuICAgICAgfSkpXG4gICAgfTtcbiAgfVxuXG4gIGdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wcyA9IHt9KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wcyksXG5cbiAgICAgIC8vIGFkZCBoZWlnaHQgdmlzdWFsIGNoYW5uZWxcbiAgICAgIGhlaWdodEZpZWxkOiBudWxsLFxuICAgICAgaGVpZ2h0RG9tYWluOiBbMCwgMV0sXG4gICAgICBoZWlnaHRTY2FsZTogJ2xpbmVhcicsXG5cbiAgICAgIC8vIGFkZCByYWRpdXMgdmlzdWFsIGNoYW5uZWxcbiAgICAgIHJhZGl1c0ZpZWxkOiBudWxsLFxuICAgICAgcmFkaXVzRG9tYWluOiBbMCwgMV0sXG4gICAgICByYWRpdXNTY2FsZTogJ2xpbmVhcicsXG5cbiAgICAgIC8vIGFkZCBzdHJva2UgY29sb3IgdmlzdWFsIGNoYW5uZWxcbiAgICAgIHN0cm9rZUNvbG9yRmllbGQ6IG51bGwsXG4gICAgICBzdHJva2VDb2xvckRvbWFpbjogWzAsIDFdLFxuICAgICAgc3Ryb2tlQ29sb3JTY2FsZTogJ3F1YW50aWxlJ1xuICAgIH07XG4gIH1cblxuICBnZXRIb3ZlckRhdGEob2JqZWN0LCBkYXRhQ29udGFpbmVyKSB7XG4gICAgLy8gaW5kZXggb2YgZGF0YUNvbnRhaW5lciBpcyBzYXZlZCB0byBmZWF0dXJlLnByb3BlcnRpZXNcbiAgICByZXR1cm4gZGF0YUNvbnRhaW5lci5yb3cob2JqZWN0LnByb3BlcnRpZXMuaW5kZXgpO1xuICB9XG5cbiAgY2FsY3VsYXRlRGF0YUF0dHJpYnV0ZSh7ZGF0YUNvbnRhaW5lciwgZmlsdGVyZWRJbmRleH0sIGdldFBvc2l0aW9uKSB7XG4gICAgcmV0dXJuIGZpbHRlcmVkSW5kZXgubWFwKGkgPT4gdGhpcy5kYXRhVG9GZWF0dXJlW2ldKS5maWx0ZXIoZCA9PiBkKTtcbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKSB7XG4gICAgY29uc3Qge2dwdUZpbHRlciwgZGF0YUNvbnRhaW5lcn0gPSBkYXRhc2V0c1t0aGlzLmNvbmZpZy5kYXRhSWRdO1xuICAgIGNvbnN0IHtkYXRhfSA9IHRoaXMudXBkYXRlRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKTtcblxuICAgIGNvbnN0IGN1c3RvbUZpbHRlclZhbHVlQWNjZXNzb3IgPSAoZGMsIGQsIGZpZWxkSW5kZXgpID0+IHtcbiAgICAgIHJldHVybiBkYy52YWx1ZUF0KGQucHJvcGVydGllcy5pbmRleCwgZmllbGRJbmRleCk7XG4gICAgfTtcbiAgICBjb25zdCBpbmRleEFjY2Vzc29yID0gZiA9PiBmLnByb3BlcnRpZXMuaW5kZXg7XG5cbiAgICBjb25zdCBkYXRhQWNjZXNzb3IgPSBkYyA9PiBkID0+ICh7aW5kZXg6IGQucHJvcGVydGllcy5pbmRleH0pO1xuICAgIGNvbnN0IGFjY2Vzc29ycyA9IHRoaXMuZ2V0QXR0cmlidXRlQWNjZXNzb3JzKHtkYXRhQWNjZXNzb3IsIGRhdGFDb250YWluZXJ9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhLFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZUFjY2Vzc29yKGRhdGFDb250YWluZXIpKFxuICAgICAgICBpbmRleEFjY2Vzc29yLFxuICAgICAgICBjdXN0b21GaWx0ZXJWYWx1ZUFjY2Vzc29yXG4gICAgICApLFxuICAgICAgLi4uYWNjZXNzb3JzXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZUxheWVyTWV0YShkYXRhQ29udGFpbmVyKSB7XG4gICAgY29uc3QgZ2V0RmVhdHVyZSA9IHRoaXMuZ2V0UG9zaXRpb25BY2Nlc3NvcihkYXRhQ29udGFpbmVyKTtcbiAgICB0aGlzLmRhdGFUb0ZlYXR1cmUgPSBnZXRHZW9qc29uRGF0YU1hcHMoZGF0YUNvbnRhaW5lciwgZ2V0RmVhdHVyZSk7XG5cbiAgICAvLyBnZXQgYm91bmRzIGZyb20gZmVhdHVyZXNcbiAgICBjb25zdCBib3VuZHMgPSBnZXRHZW9qc29uQm91bmRzKHRoaXMuZGF0YVRvRmVhdHVyZSk7XG4gICAgLy8gaWYgYW55IG9mIHRoZSBmZWF0dXJlIGhhcyBwcm9wZXJ0aWVzLnJhZGl1cyBzZXQgdG8gYmUgdHJ1ZVxuICAgIGNvbnN0IGZpeGVkUmFkaXVzID0gQm9vbGVhbihcbiAgICAgIHRoaXMuZGF0YVRvRmVhdHVyZS5maW5kKGQgPT4gZCAmJiBkLnByb3BlcnRpZXMgJiYgZC5wcm9wZXJ0aWVzLnJhZGl1cylcbiAgICApO1xuXG4gICAgLy8ga2VlcCBhIHJlY29yZCBvZiB3aGF0IHR5cGUgb2YgZ2VvbWV0cnkgdGhlIGNvbGxlY3Rpb24gaGFzXG4gICAgY29uc3QgZmVhdHVyZVR5cGVzID0gZ2V0R2VvanNvbkZlYXR1cmVUeXBlcyh0aGlzLmRhdGFUb0ZlYXR1cmUpO1xuXG4gICAgdGhpcy51cGRhdGVNZXRhKHtib3VuZHMsIGZpeGVkUmFkaXVzLCBmZWF0dXJlVHlwZXN9KTtcbiAgfVxuXG4gIHNldEluaXRpYWxMYXllckNvbmZpZyh7ZGF0YUNvbnRhaW5lcn0pIHtcbiAgICB0aGlzLnVwZGF0ZUxheWVyTWV0YShkYXRhQ29udGFpbmVyKTtcblxuICAgIGNvbnN0IHtmZWF0dXJlVHlwZXN9ID0gdGhpcy5tZXRhO1xuICAgIC8vIGRlZmF1bHQgc2V0dGluZ3MgaXMgc3Ryb2tlOiB0cnVlLCBmaWxsZWQ6IGZhbHNlXG4gICAgaWYgKGZlYXR1cmVUeXBlcyAmJiBmZWF0dXJlVHlwZXMucG9seWdvbikge1xuICAgICAgLy8gc2V0IGJvdGggZmlsbCBhbmQgc3Ryb2tlIHRvIHRydWVcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUxheWVyVmlzQ29uZmlnKHtcbiAgICAgICAgZmlsbGVkOiB0cnVlLFxuICAgICAgICBzdHJva2VkOiB0cnVlLFxuICAgICAgICBzdHJva2VDb2xvcjogY29sb3JNYWtlci5uZXh0KCkudmFsdWVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoZmVhdHVyZVR5cGVzICYmIGZlYXR1cmVUeXBlcy5wb2ludCkge1xuICAgICAgLy8gc2V0IGZpbGwgdG8gdHJ1ZSBpZiBkZXRlY3QgcG9pbnRcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUxheWVyVmlzQ29uZmlnKHtmaWxsZWQ6IHRydWUsIHN0cm9rZWQ6IGZhbHNlfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZW5kZXJMYXllcihvcHRzKSB7XG4gICAgY29uc3Qge2RhdGEsIGdwdUZpbHRlciwgb2JqZWN0SG92ZXJlZH0gPSBvcHRzO1xuXG4gICAgY29uc3Qge2ZpeGVkUmFkaXVzLCBmZWF0dXJlVHlwZXN9ID0gdGhpcy5tZXRhO1xuICAgIGNvbnN0IHJhZGl1c1NjYWxlID0gdGhpcy5nZXRSYWRpdXNTY2FsZShmaXhlZFJhZGl1cyk7XG4gICAgY29uc3QgcmFkaXVzVW5pdHMgPSB0aGlzLmdldFJhZGl1c1VuaXQoZml4ZWRSYWRpdXMpO1xuXG4gICAgY29uc3Qge3Zpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcblxuICAgIGNvbnN0IGxheWVyUHJvcHMgPSB7XG4gICAgICBsaW5lV2lkdGhTY2FsZTogdmlzQ29uZmlnLnRoaWNrbmVzcyxcbiAgICAgIGVsZXZhdGlvblNjYWxlOiB2aXNDb25maWcuZWxldmF0aW9uU2NhbGUsXG4gICAgICBwb2ludFJhZGl1c1NjYWxlOiByYWRpdXNTY2FsZSxcbiAgICAgIGxpbmVNaXRlckxpbWl0OiA0XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge1xuICAgICAgLi4udGhpcy5nZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMoKSxcbiAgICAgIGdldEZpbHRlclZhbHVlOiBncHVGaWx0ZXIuZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2Vyc1xuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0TGF5ZXJQcm9wcyA9IHRoaXMuZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKG9wdHMpO1xuICAgIGNvbnN0IG9wYU92ZXJ3cml0ZSA9IHtcbiAgICAgIG9wYWNpdHk6IHZpc0NvbmZpZy5zdHJva2VPcGFjaXR5XG4gICAgfTtcblxuICAgIGNvbnN0IHBpY2thYmxlID0gdGhpcy5oYXNJbnRlcmFjdGl2aXR5O1xuICAgIGNvbnN0IGhvdmVyZWRPYmplY3QgPSB0aGlzLmhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SG92ZXJlZCk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgbmV3IERlY2tHTEdlb0pzb25MYXllcih7XG4gICAgICAgIC4uLmRlZmF1bHRMYXllclByb3BzLFxuICAgICAgICAuLi5sYXllclByb3BzLFxuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBwaWNrYWJsZSxcbiAgICAgICAgaGlnaGxpZ2h0Q29sb3I6IEhJR0hMSUdIX0NPTE9SXzNELFxuICAgICAgICBhdXRvSGlnaGxpZ2h0OiB2aXNDb25maWcuZW5hYmxlM2QgJiYgcGlja2FibGUsXG4gICAgICAgIHN0cm9rZWQ6IHZpc0NvbmZpZy5zdHJva2VkLFxuICAgICAgICBmaWxsZWQ6IHZpc0NvbmZpZy5maWxsZWQsXG4gICAgICAgIGV4dHJ1ZGVkOiB2aXNDb25maWcuZW5hYmxlM2QsXG4gICAgICAgIHdpcmVmcmFtZTogdmlzQ29uZmlnLndpcmVmcmFtZSxcbiAgICAgICAgd3JhcExvbmdpdHVkZTogZmFsc2UsXG4gICAgICAgIGxpbmVNaXRlckxpbWl0OiAyLFxuICAgICAgICByb3VuZGVkOiB0cnVlLFxuICAgICAgICByYWRpdXNVbml0cyxcbiAgICAgICAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuICAgICAgICB1cGRhdGVUcmlnZ2VycyxcbiAgICAgICAgX3N1YkxheWVyUHJvcHM6IHtcbiAgICAgICAgICAuLi4oZmVhdHVyZVR5cGVzLnBvbHlnb24gPyB7J3BvbHlnb25zLXN0cm9rZSc6IG9wYU92ZXJ3cml0ZX0gOiB7fSksXG4gICAgICAgICAgLi4uKGZlYXR1cmVUeXBlcy5saW5lID8ge2xpbmVzdHJpbmdzOiBvcGFPdmVyd3JpdGV9IDoge30pLFxuICAgICAgICAgIC4uLihmZWF0dXJlVHlwZXMucG9pbnRcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIHBvaW50czoge1xuICAgICAgICAgICAgICAgICAgbGluZU9wYWNpdHk6IHZpc0NvbmZpZy5zdHJva2VPcGFjaXR5XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHt9KVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIC4uLihob3ZlcmVkT2JqZWN0ICYmICF2aXNDb25maWcuZW5hYmxlM2RcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBuZXcgRGVja0dMR2VvSnNvbkxheWVyKHtcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0SG92ZXJMYXllclByb3BzKCksXG4gICAgICAgICAgICAgIC4uLmxheWVyUHJvcHMsXG4gICAgICAgICAgICAgIHdyYXBMb25naXR1ZGU6IGZhbHNlLFxuICAgICAgICAgICAgICBkYXRhOiBbaG92ZXJlZE9iamVjdF0sXG4gICAgICAgICAgICAgIGdldExpbmVXaWR0aDogZGF0YS5nZXRMaW5lV2lkdGgsXG4gICAgICAgICAgICAgIGdldFJhZGl1czogZGF0YS5nZXRSYWRpdXMsXG4gICAgICAgICAgICAgIGdldEVsZXZhdGlvbjogZGF0YS5nZXRFbGV2YXRpb24sXG4gICAgICAgICAgICAgIGdldExpbmVDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgIGdldEZpbGxDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgIC8vIGFsd2F5cyBkcmF3IG91dGxpbmVcbiAgICAgICAgICAgICAgc3Ryb2tlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgZmlsbGVkOiBmYWxzZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pXG4gICAgXTtcbiAgfVxufVxuIl19
|
|
@@ -135,7 +135,8 @@ function renderDeckGlLayer(props, layerCallbacks, idx) {
|
|
|
135
135
|
animationConfig = props.animationConfig,
|
|
136
136
|
mapLayers = props.mapLayers,
|
|
137
137
|
maskPolygon = props.maskPolygon,
|
|
138
|
-
customMarkersStatus = props.customMarkersStatus
|
|
138
|
+
customMarkersStatus = props.customMarkersStatus,
|
|
139
|
+
popupSettings = props.popupSettings;
|
|
139
140
|
var layer = layers[idx];
|
|
140
141
|
var data = layerData[idx];
|
|
141
142
|
|
|
@@ -143,7 +144,8 @@ function renderDeckGlLayer(props, layerCallbacks, idx) {
|
|
|
143
144
|
gpuFilter = _ref2.gpuFilter;
|
|
144
145
|
|
|
145
146
|
var objectHovered = clicked || hoverInfo;
|
|
146
|
-
var visible = !mapLayers || mapLayers && mapLayers[layer.id];
|
|
147
|
+
var visible = !mapLayers || mapLayers && mapLayers[layer.id];
|
|
148
|
+
layer.interactivitySettings = popupSettings === null || popupSettings === void 0 ? void 0 : popupSettings.layers[layer.id]; // Layer is Layer class
|
|
147
149
|
|
|
148
150
|
return layer.renderLayer({
|
|
149
151
|
data: data,
|
|
@@ -156,7 +158,8 @@ function renderDeckGlLayer(props, layerCallbacks, idx) {
|
|
|
156
158
|
objectHovered: objectHovered,
|
|
157
159
|
visible: visible,
|
|
158
160
|
maskPolygon: maskPolygon,
|
|
159
|
-
customMarkersStatus: customMarkersStatus
|
|
161
|
+
customMarkersStatus: customMarkersStatus,
|
|
162
|
+
popupSettings: popupSettings
|
|
160
163
|
});
|
|
161
164
|
}
|
|
162
165
|
|
|
@@ -201,4 +204,4 @@ function negateAccessor(accessor) {
|
|
|
201
204
|
return -accessor(d, i);
|
|
202
205
|
} : -accessor;
|
|
203
206
|
}
|
|
204
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9sYXllci11dGlscy5qcyJdLCJuYW1lcyI6WyJmaW5kRGVmYXVsdExheWVyIiwiZGF0YXNldCIsImxheWVyQ2xhc3NlcyIsImxheWVyUHJvcHMiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwicHJldmlvdXMiLCJsYyIsInJlc3VsdCIsImZpbmREZWZhdWx0TGF5ZXJQcm9wcyIsInByb3BzIiwiQXJyYXkiLCJpc0FycmF5IiwiZm91bmRMYXllcnMiLCJjb25jYXQiLCJtYXAiLCJwIiwidHlwZSIsImRhdGFJZCIsImlkIiwibGF5ZXIiLCJzZXRJbml0aWFsTGF5ZXJDb25maWciLCJkYXRhQ29udGFpbmVyIiwiY2FsY3VsYXRlTGF5ZXJEYXRhIiwic3RhdGUiLCJvbGRMYXllckRhdGEiLCJoYXNBbGxDb2x1bW5zIiwiY29uZmlnIiwibGF5ZXJEYXRhIiwiZm9ybWF0TGF5ZXJEYXRhIiwiZGF0YXNldHMiLCJnZXRMYXllckhvdmVyUHJvcCIsImludGVyYWN0aW9uQ29uZmlnIiwiaG92ZXJJbmZvIiwibGF5ZXJzIiwibGF5ZXJzVG9SZW5kZXIiLCJ0b29sdGlwIiwiZW5hYmxlZCIsInBpY2tlZCIsIm9iamVjdCIsIm92ZXJsYXkiLCJpZHgiLCJnZXRIb3ZlckRhdGEiLCJmaWVsZHMiLCJkYXRhIiwiZmllbGRzVG9TaG93IiwicmVuZGVyRGVja0dsTGF5ZXIiLCJsYXllckNhbGxiYWNrcyIsImNsaWNrZWQiLCJtYXBTdGF0ZSIsImFuaW1hdGlvbkNvbmZpZyIsIm1hcExheWVycyIsIm1hc2tQb2x5Z29uIiwiY3VzdG9tTWFya2Vyc1N0YXR1cyIsImdwdUZpbHRlciIsIm9iamVjdEhvdmVyZWQiLCJ2aXNpYmxlIiwicmVuZGVyTGF5ZXIiLCJpc0xheWVyUmVuZGVyYWJsZSIsIkdFT0NPREVSX0xBWUVSX0lEIiwic2hvdWxkUmVuZGVyTGF5ZXIiLCJpc0xheWVyVmlzaWJsZSIsImlzVmlzaWJsZSIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiYWNjdSIsIm92ZXJsYXlUeXBlIiwiT1ZFUkxBWV9UWVBFIiwiZGVja2dsIiwicHJlcGFyZUxheWVyc1RvUmVuZGVyIiwibWFza0V4dGVuc2lvbiIsIk1hc2tFeHRlbnNpb24iLCJnZXRNYXNrRXh0ZW5zaW9uUHJvcHMiLCJtYXNrSWQiLCJCb29sZWFuIiwibGVuZ3RoIiwiTUFTS19MQVlFUl9JRCIsImV4dGVuc2lvbnMiLCJuZWdhdGVBY2Nlc3NvciIsImFjY2Vzc29yIiwiZCIsImkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOzs7Ozs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNBLGdCQUFULENBQTBCQyxPQUExQixFQUFtQ0MsWUFBbkMsRUFBaUQ7QUFDdEQsTUFBSSxDQUFDRCxPQUFMLEVBQWM7QUFDWixXQUFPLEVBQVA7QUFDRDs7QUFDRCxNQUFNRSxVQUFVLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZSCxZQUFaLEVBQTBCSSxNQUExQixDQUFpQyxVQUFDQyxRQUFELEVBQVdDLEVBQVgsRUFBa0I7QUFDcEUsUUFBTUMsTUFBTSxHQUNWLE9BQU9QLFlBQVksQ0FBQ00sRUFBRCxDQUFaLENBQWlCRSxxQkFBeEIsS0FBa0QsVUFBbEQsR0FDSVIsWUFBWSxDQUFDTSxFQUFELENBQVosQ0FBaUJFLHFCQUFqQixDQUF1Q1QsT0FBdkMsRUFBZ0RNLFFBQWhELENBREosR0FFSTtBQUFDSSxNQUFBQSxLQUFLLEVBQUU7QUFBUixLQUhOO0FBS0EsUUFBTUEsS0FBSyxHQUFHQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0osTUFBZCxJQUF3QkEsTUFBeEIsR0FBaUNBLE1BQU0sQ0FBQ0UsS0FBUCxJQUFnQixFQUEvRDtBQUNBLFFBQU1HLFdBQVcsR0FBR0wsTUFBTSxDQUFDSyxXQUFQLElBQXNCUCxRQUExQztBQUVBLFdBQU9PLFdBQVcsQ0FBQ0MsTUFBWixDQUNMSixLQUFLLENBQUNLLEdBQU4sQ0FBVSxVQUFBQyxDQUFDO0FBQUEsNkNBQ05BLENB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QUFPLE9BQU9BLFFBQVAsS0FBb0IsVUFBcEIsR0FBaUMsVUFBQ0MsQ0FBRCxFQUFJQyxDQUFKO0FBQUEsV0FBVSxDQUFDRixRQUFRLENBQUNDLENBQUQsRUFBSUMsQ0FBSixDQUFuQjtBQUFBLEdBQWpDLEdBQTZELENBQUNGLFFBQXJFO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge09WRVJMQVlfVFlQRX0gZnJvbSAnbGF5ZXJzL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IHtHRU9DT0RFUl9MQVlFUl9JRCwgTUFTS19MQVlFUl9JRH0gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuaW1wb3J0IHtNYXNrRXh0ZW5zaW9ufSBmcm9tICdAZGVjay5nbC9leHRlbnNpb25zJztcblxuLyoqXG4gKiBGaW5kIGRlZmF1bHQgbGF5ZXJzIGZyb20gZmllbGRzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9sYXllci11dGlscycpLmZpbmREZWZhdWx0TGF5ZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRGVmYXVsdExheWVyKGRhdGFzZXQsIGxheWVyQ2xhc3Nlcykge1xuICBpZiAoIWRhdGFzZXQpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgbGF5ZXJQcm9wcyA9IE9iamVjdC5rZXlzKGxheWVyQ2xhc3NlcykucmVkdWNlKChwcmV2aW91cywgbGMpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPVxuICAgICAgdHlwZW9mIGxheWVyQ2xhc3Nlc1tsY10uZmluZERlZmF1bHRMYXllclByb3BzID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gbGF5ZXJDbGFzc2VzW2xjXS5maW5kRGVmYXVsdExheWVyUHJvcHMoZGF0YXNldCwgcHJldmlvdXMpXG4gICAgICAgIDoge3Byb3BzOiBbXX07XG5cbiAgICBjb25zdCBwcm9wcyA9IEFycmF5LmlzQXJyYXkocmVzdWx0KSA/IHJlc3VsdCA6IHJlc3VsdC5wcm9wcyB8fCBbXTtcbiAgICBjb25zdCBmb3VuZExheWVycyA9IHJlc3VsdC5mb3VuZExheWVycyB8fCBwcmV2aW91cztcblxuICAgIHJldHVybiBmb3VuZExheWVycy5jb25jYXQoXG4gICAgICBwcm9wcy5tYXAocCA9PiAoe1xuICAgICAgICAuLi5wLFxuICAgICAgICB0eXBlOiBsYyxcbiAgICAgICAgZGF0YUlkOiBkYXRhc2V0LmlkXG4gICAgICB9KSlcbiAgICApO1xuICB9LCBbXSk7XG5cbiAgLy8gZ28gdGhyb3VnaCBhbGwgbGF5ZXJQcm9wcyB0byBjcmVhdGUgbGF5ZXJcbiAgcmV0dXJuIGxheWVyUHJvcHMubWFwKHByb3BzID0+IHtcbiAgICBjb25zdCBsYXllciA9IG5ldyBsYXllckNsYXNzZXNbcHJvcHMudHlwZV0ocHJvcHMpO1xuICAgIHJldHVybiB0eXBlb2YgbGF5ZXIuc2V0SW5pdGlhbExheWVyQ29uZmlnID09PSAnZnVuY3Rpb24nICYmIGRhdGFzZXQuZGF0YUNvbnRhaW5lclxuICAgICAgPyBsYXllci5zZXRJbml0aWFsTGF5ZXJDb25maWcoZGF0YXNldClcbiAgICAgIDogbGF5ZXI7XG4gIH0pO1xufVxuXG4vKipcbiAqIGNhbGN1bGF0ZSBsYXllciBkYXRhIGJhc2VkIG9uIGxheWVyIHR5cGUsIGNvbCBDb25maWcsXG4gKiByZXR1cm4gdXBkYXRlZCBsYXllciBpZiBjb2xvckRvbWFpbiwgZGF0YU1hcCBoYXMgY2hhbmdlZFxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbGF5ZXItdXRpbHMnKS5jYWxjdWxhdGVMYXllckRhdGF9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVMYXllckRhdGEobGF5ZXIsIHN0YXRlLCBvbGRMYXllckRhdGEpIHtcbiAgY29uc3Qge3R5cGV9ID0gbGF5ZXI7XG5cbiAgaWYgKCF0eXBlIHx8ICFsYXllci5oYXNBbGxDb2x1bW5zKCkgfHwgIWxheWVyLmNvbmZpZy5kYXRhSWQpIHtcbiAgICByZXR1cm4ge2xheWVyLCBsYXllckRhdGE6IHt9fTtcbiAgfVxuXG4gIGNvbnN0IGxheWVyRGF0YSA9IGxheWVyLmZvcm1hdExheWVyRGF0YShzdGF0ZS5kYXRhc2V0cywgb2xkTGF5ZXJEYXRhKTtcbiAgcmV0dXJuIHtsYXllckRhdGEsIGxheWVyfTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgcHJvcHMgcGFzc2VkIHRvIExheWVySG92ZXJJbmZvXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9sYXllci11dGlscycpLmdldExheWVySG92ZXJQcm9wfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF5ZXJIb3ZlclByb3Aoe1xuICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgaG92ZXJJbmZvLFxuICBsYXllcnMsXG4gIGxheWVyc1RvUmVuZGVyLFxuICBkYXRhc2V0c1xufSkge1xuICBpZiAoaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5lbmFibGVkICYmIGhvdmVySW5mbyAmJiBob3ZlckluZm8ucGlja2VkKSB7XG4gICAgLy8gaWYgYW55dGhpbmcgaG92ZXJlZFxuICAgIGNvbnN0IHtvYmplY3QsIGxheWVyOiBvdmVybGF5fSA9IGhvdmVySW5mbztcblxuICAgIC8vIGRlY2tnbCBsYXllciB0byBrZXBsZXItZ2wgbGF5ZXJcbiAgICBjb25zdCBsYXllciA9IGxheWVyc1tvdmVybGF5LnByb3BzLmlkeF07XG5cbiAgICBpZiAob2JqZWN0ICYmIGxheWVyICYmIGxheWVyLmdldEhvdmVyRGF0YSAmJiBsYXllcnNUb1JlbmRlcltsYXllci5pZF0pIHtcbiAgICAgIC8vIGlmIGxheWVyIGlzIHZpc2libGUgYW5kIGhhdmUgaG92ZXJlZCBkYXRhXG4gICAgICBjb25zdCB7XG4gICAgICAgIGNvbmZpZzoge2RhdGFJZH1cbiAgICAgIH0gPSBsYXllcjtcbiAgICAgIGlmICghZGF0YUlkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3Qge2RhdGFDb250YWluZXIsIGZpZWxkc30gPSBkYXRhc2V0c1tkYXRhSWRdO1xuICAgICAgY29uc3QgZGF0YSA9IGxheWVyLmdldEhvdmVyRGF0YShvYmplY3QsIGRhdGFDb250YWluZXIsIGZpZWxkcyk7XG4gICAgICBjb25zdCBmaWVsZHNUb1Nob3cgPSBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmNvbmZpZy5maWVsZHNUb1Nob3dbZGF0YUlkXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZmllbGRzLFxuICAgICAgICBmaWVsZHNUb1Nob3csXG4gICAgICAgIGxheWVyXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyRGVja0dsTGF5ZXIocHJvcHMsIGxheWVyQ2FsbGJhY2tzLCBpZHgpIHtcbiAgY29uc3Qge1xuICAgIGRhdGFzZXRzLFxuICAgIGxheWVycyxcbiAgICBsYXllckRhdGEsXG4gICAgaG92ZXJJbmZvLFxuICAgIGNsaWNrZWQsXG4gICAgbWFwU3RhdGUsXG4gICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgIG1hcExheWVycyxcbiAgICBtYXNrUG9seWdvbixcbiAgICBjdXN0b21NYXJrZXJzU3RhdHVzXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgbGF5ZXIgPSBsYXllcnNbaWR4XTtcbiAgY29uc3QgZGF0YSA9IGxheWVyRGF0YVtpZHhdO1xuICBjb25zdCB7Z3B1RmlsdGVyfSA9IGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdIHx8IHt9O1xuICBjb25zdCBvYmplY3RIb3ZlcmVkID0gY2xpY2tlZCB8fCBob3ZlckluZm87XG4gIGNvbnN0IHZpc2libGUgPSAhbWFwTGF5ZXJzIHx8IChtYXBMYXllcnMgJiYgbWFwTGF5ZXJzW2xheWVyLmlkXSk7XG4gIC8vIExheWVyIGlzIExheWVyIGNsYXNzXG4gIHJldHVybiBsYXllci5yZW5kZXJMYXllcih7XG4gICAgZGF0YSxcbiAgICBncHVGaWx0ZXIsXG4gICAgaWR4LFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGxheWVyQ2FsbGJhY2tzLFxuICAgIG1hcFN0YXRlLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBvYmplY3RIb3ZlcmVkLFxuICAgIHZpc2libGUsXG4gICAgbWFza1BvbHlnb24sXG4gICAgY3VzdG9tTWFya2Vyc1N0YXR1c1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGF5ZXJSZW5kZXJhYmxlKGxheWVyLCBsYXllckRhdGEpIHtcbiAgcmV0dXJuIGxheWVyLmlkICE9PSBHRU9DT0RFUl9MQVlFUl9JRCAmJiBsYXllci5zaG91bGRSZW5kZXJMYXllcihsYXllckRhdGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMYXllclZpc2libGUobGF5ZXIsIG1hcExheWVycykge1xuICByZXR1cm4gKFxuICAgIGxheWVyLmNvbmZpZy5pc1Zpc2libGUgJiZcbiAgICAvLyBpZiBsYXllci5pZCBpcyBub3QgaW4gbWFwTGF5ZXJzLCBkb24ndCByZW5kZXIgaXRcbiAgICAoIW1hcExheWVycyB8fCAobWFwTGF5ZXJzICYmIG1hcExheWVyc1tsYXllci5pZF0pKVxuICApO1xufVxuXG4vLyBQcmVwYXJlIGEgZGljdCBvZiBsYXllcnMgcmVuZGVyZWQgYnkgdGhlIGRlY2suZ2xcbi8vIE5vdGUsIGlzVmlzaWJsZTogZmFsc2UgbGF5ZXIgaXMgcGFzc2VkIHRvIGRlY2suZ2wgaGVyZVxuLy8gcmV0dXJuIHtbaWRdOiB0cnVlIFxcIGZhbHNlfVxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVMYXllcnNGb3JEZWNrKGxheWVycywgbGF5ZXJEYXRhKSB7XG4gIHJldHVybiBsYXllcnMucmVkdWNlKFxuICAgIChhY2N1LCBsYXllciwgaWR4KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtsYXllci5pZF06XG4gICAgICAgIGlzTGF5ZXJSZW5kZXJhYmxlKGxheWVyLCBsYXllckRhdGFbaWR4XSkgJiYgbGF5ZXIub3ZlcmxheVR5cGUgPT09IE9WRVJMQVlfVFlQRS5kZWNrZ2xcbiAgICB9KSxcbiAgICB7fVxuICApO1xufVxuXG4vLyBQcmVwYXJlIGEgZGljdCBvZiByZW5kZXJlZCBsYXllcnMgcmVuZGVyZWQgaW4gdGhlIG1hcFxuLy8gVGhpcyBpbmNsdWRlcyBvbmx5IHRoZSB2aXNpYmlsZSBsYXllcnMgZm9yIHNpbmdsZSBtYXAgdmlldyBhbmQgc3BsaXQgbWFwIHZpZXdcbi8vIHJldHVybiB7W2lkXTogdHJ1ZSBcXCBmYWxzZX1cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlTGF5ZXJzVG9SZW5kZXIobGF5ZXJzLCBsYXllckRhdGEsIG1hcExheWVycykge1xuICByZXR1cm4gbGF5ZXJzLnJlZHVjZShcbiAgICAoYWNjdSwgbGF5ZXIsIGlkeCkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbbGF5ZXIuaWRdOiBpc0xheWVyUmVuZGVyYWJsZShsYXllciwgbGF5ZXJEYXRhW2lkeF0pICYmIGlzTGF5ZXJWaXNpYmxlKGxheWVyLCBtYXBMYXllcnMpXG4gICAgfSksXG4gICAge31cbiAgKTtcbn1cblxuY29uc3QgbWFza0V4dGVuc2lvbiA9IG5ldyBNYXNrRXh0ZW5zaW9uKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXNrRXh0ZW5zaW9uUHJvcHMobWFza1BvbHlnb24pIHtcbiAgcmV0dXJuIHtcbiAgICBtYXNrSWQ6IEJvb2xlYW4obWFza1BvbHlnb24gJiYgbWFza1BvbHlnb24ubGVuZ3RoKSAmJiBNQVNLX0xBWUVSX0lELFxuICAgIGV4dGVuc2lvbnM6IFttYXNrRXh0ZW5zaW9uXVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlQWNjZXNzb3IoYWNjZXNzb3IpIHtcbiAgcmV0dXJuIHR5cGVvZiBhY2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJyA/IChkLCBpKSA9PiAtYWNjZXNzb3IoZCwgaSkgOiAtYWNjZXNzb3I7XG59XG4iXX0=
|
|
207
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9sYXllci11dGlscy5qcyJdLCJuYW1lcyI6WyJmaW5kRGVmYXVsdExheWVyIiwiZGF0YXNldCIsImxheWVyQ2xhc3NlcyIsImxheWVyUHJvcHMiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwicHJldmlvdXMiLCJsYyIsInJlc3VsdCIsImZpbmREZWZhdWx0TGF5ZXJQcm9wcyIsInByb3BzIiwiQXJyYXkiLCJpc0FycmF5IiwiZm91bmRMYXllcnMiLCJjb25jYXQiLCJtYXAiLCJwIiwidHlwZSIsImRhdGFJZCIsImlkIiwibGF5ZXIiLCJzZXRJbml0aWFsTGF5ZXJDb25maWciLCJkYXRhQ29udGFpbmVyIiwiY2FsY3VsYXRlTGF5ZXJEYXRhIiwic3RhdGUiLCJvbGRMYXllckRhdGEiLCJoYXNBbGxDb2x1bW5zIiwiY29uZmlnIiwibGF5ZXJEYXRhIiwiZm9ybWF0TGF5ZXJEYXRhIiwiZGF0YXNldHMiLCJnZXRMYXllckhvdmVyUHJvcCIsImludGVyYWN0aW9uQ29uZmlnIiwiaG92ZXJJbmZvIiwibGF5ZXJzIiwibGF5ZXJzVG9SZW5kZXIiLCJ0b29sdGlwIiwiZW5hYmxlZCIsInBpY2tlZCIsIm9iamVjdCIsIm92ZXJsYXkiLCJpZHgiLCJnZXRIb3ZlckRhdGEiLCJmaWVsZHMiLCJkYXRhIiwiZmllbGRzVG9TaG93IiwicmVuZGVyRGVja0dsTGF5ZXIiLCJsYXllckNhbGxiYWNrcyIsImNsaWNrZWQiLCJtYXBTdGF0ZSIsImFuaW1hdGlvbkNvbmZpZyIsIm1hcExheWVycyIsIm1hc2tQb2x5Z29uIiwiY3VzdG9tTWFya2Vyc1N0YXR1cyIsInBvcHVwU2V0dGluZ3MiLCJncHVGaWx0ZXIiLCJvYmplY3RIb3ZlcmVkIiwidmlzaWJsZSIsImludGVyYWN0aXZpdHlTZXR0aW5ncyIsInJlbmRlckxheWVyIiwiaXNMYXllclJlbmRlcmFibGUiLCJHRU9DT0RFUl9MQVlFUl9JRCIsInNob3VsZFJlbmRlckxheWVyIiwiaXNMYXllclZpc2libGUiLCJpc1Zpc2libGUiLCJwcmVwYXJlTGF5ZXJzRm9yRGVjayIsImFjY3UiLCJvdmVybGF5VHlwZSIsIk9WRVJMQVlfVFlQRSIsImRlY2tnbCIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsIm1hc2tFeHRlbnNpb24iLCJNYXNrRXh0ZW5zaW9uIiwiZ2V0TWFza0V4dGVuc2lvblByb3BzIiwibWFza0lkIiwiQm9vbGVhbiIsImxlbmd0aCIsIk1BU0tfTEFZRVJfSUQiLCJleHRlbnNpb25zIiwibmVnYXRlQWNjZXNzb3IiLCJhY2Nlc3NvciIsImQiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQSxnQkFBVCxDQUEwQkMsT0FBMUIsRUFBbUNDLFlBQW5DLEVBQWlEO0FBQ3RELE1BQUksQ0FBQ0QsT0FBTCxFQUFjO0FBQ1osV0FBTyxFQUFQO0FBQ0Q7O0FBQ0QsTUFBTUUsVUFBVSxHQUFHQyxNQUFNLENBQUNDLElBQVAsQ0FBWUgsWUFBWixFQUEwQkksTUFBMUIsQ0FBaUMsVUFBQ0MsUUFBRCxFQUFXQyxFQUFYLEVBQWtCO0FBQ3BFLFFBQU1DLE1BQU0sR0FDVixPQUFPUCxZQUFZLENBQUNNLEVBQUQsQ0FBWixDQUFpQkUscUJBQXhCLEtBQWtELFVBQWxELEdBQ0lSLFlBQVksQ0FBQ00sRUFBRCxDQUFaLENBQWlCRSxxQkFBakIsQ0FBdUNULE9BQXZDLEVBQWdETSxRQUFoRCxDQURKLEdBRUk7QUFBQ0ksTUFBQUEsS0FBSyxFQUFFO0FBQVIsS0FITjtBQUtBLFFBQU1BLEtBQUssR0FBR0MsS0FBSyxDQUFDQyxPQUFOLENBQWNKLE1BQWQsSUFBd0JBLE1BQXhCLEdBQWlDQSxNQUFNLENBQUNFLEtBQVAsSUFBZ0IsRUFBL0Q7QUFDQSxRQUFNRyxXQUFXLEdBQUdMLE1BQU0sQ0FBQ0ssV0FBUCxJQUFzQlAsUUFBMUM7QUFFQSxXQUFPTyxXQUFXLENBQUNDLE1BQVosQ0FDTEosS0FBSyxD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QUF0Qjs7QUFFTyxTQUFTQyxxQkFBVCxDQUErQnJCLFdBQS9CLEVBQTRDO0FBQ2pELFNBQU87QUFDTHNCLElBQUFBLE1BQU0sRUFBRUMsT0FBTyxDQUFDdkIsV0FBVyxJQUFJQSxXQUFXLENBQUN3QixNQUE1QixDQUFQLElBQThDQyw4QkFEakQ7QUFFTEMsSUFBQUEsVUFBVSxFQUFFLENBQUNQLGFBQUQ7QUFGUCxHQUFQO0FBSUQ7O0FBRU0sU0FBU1EsY0FBVCxDQUF3QkMsUUFBeEIsRUFBa0M7QUFDdkMsU0FBTyxPQUFPQSxRQUFQLEtBQW9CLFVBQXBCLEdBQWlDLFVBQUNDLENBQUQsRUFBSUMsQ0FBSjtBQUFBLFdBQVUsQ0FBQ0YsUUFBUSxDQUFDQyxDQUFELEVBQUlDLENBQUosQ0FBbkI7QUFBQSxHQUFqQyxHQUE2RCxDQUFDRixRQUFyRTtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtPVkVSTEFZX1RZUEV9IGZyb20gJ2xheWVycy9iYXNlLWxheWVyJztcbmltcG9ydCB7R0VPQ09ERVJfTEFZRVJfSUQsIE1BU0tfTEFZRVJfSUR9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7TWFza0V4dGVuc2lvbn0gZnJvbSAnQGRlY2suZ2wvZXh0ZW5zaW9ucyc7XG5cbi8qKlxuICogRmluZCBkZWZhdWx0IGxheWVycyBmcm9tIGZpZWxkc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbGF5ZXItdXRpbHMnKS5maW5kRGVmYXVsdExheWVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZERlZmF1bHRMYXllcihkYXRhc2V0LCBsYXllckNsYXNzZXMpIHtcbiAgaWYgKCFkYXRhc2V0KSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IGxheWVyUHJvcHMgPSBPYmplY3Qua2V5cyhsYXllckNsYXNzZXMpLnJlZHVjZSgocHJldmlvdXMsIGxjKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID1cbiAgICAgIHR5cGVvZiBsYXllckNsYXNzZXNbbGNdLmZpbmREZWZhdWx0TGF5ZXJQcm9wcyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IGxheWVyQ2xhc3Nlc1tsY10uZmluZERlZmF1bHRMYXllclByb3BzKGRhdGFzZXQsIHByZXZpb3VzKVxuICAgICAgICA6IHtwcm9wczogW119O1xuXG4gICAgY29uc3QgcHJvcHMgPSBBcnJheS5pc0FycmF5KHJlc3VsdCkgPyByZXN1bHQgOiByZXN1bHQucHJvcHMgfHwgW107XG4gICAgY29uc3QgZm91bmRMYXllcnMgPSByZXN1bHQuZm91bmRMYXllcnMgfHwgcHJldmlvdXM7XG5cbiAgICByZXR1cm4gZm91bmRMYXllcnMuY29uY2F0KFxuICAgICAgcHJvcHMubWFwKHAgPT4gKHtcbiAgICAgICAgLi4ucCxcbiAgICAgICAgdHlwZTogbGMsXG4gICAgICAgIGRhdGFJZDogZGF0YXNldC5pZFxuICAgICAgfSkpXG4gICAgKTtcbiAgfSwgW10pO1xuXG4gIC8vIGdvIHRocm91Z2ggYWxsIGxheWVyUHJvcHMgdG8gY3JlYXRlIGxheWVyXG4gIHJldHVybiBsYXllclByb3BzLm1hcChwcm9wcyA9PiB7XG4gICAgY29uc3QgbGF5ZXIgPSBuZXcgbGF5ZXJDbGFzc2VzW3Byb3BzLnR5cGVdKHByb3BzKTtcbiAgICByZXR1cm4gdHlwZW9mIGxheWVyLnNldEluaXRpYWxMYXllckNvbmZpZyA9PT0gJ2Z1bmN0aW9uJyAmJiBkYXRhc2V0LmRhdGFDb250YWluZXJcbiAgICAgID8gbGF5ZXIuc2V0SW5pdGlhbExheWVyQ29uZmlnKGRhdGFzZXQpXG4gICAgICA6IGxheWVyO1xuICB9KTtcbn1cblxuLyoqXG4gKiBjYWxjdWxhdGUgbGF5ZXIgZGF0YSBiYXNlZCBvbiBsYXllciB0eXBlLCBjb2wgQ29uZmlnLFxuICogcmV0dXJuIHVwZGF0ZWQgbGF5ZXIgaWYgY29sb3JEb21haW4sIGRhdGFNYXAgaGFzIGNoYW5nZWRcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2xheWVyLXV0aWxzJykuY2FsY3VsYXRlTGF5ZXJEYXRhfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlTGF5ZXJEYXRhKGxheWVyLCBzdGF0ZSwgb2xkTGF5ZXJEYXRhKSB7XG4gIGNvbnN0IHt0eXBlfSA9IGxheWVyO1xuXG4gIGlmICghdHlwZSB8fCAhbGF5ZXIuaGFzQWxsQ29sdW1ucygpIHx8ICFsYXllci5jb25maWcuZGF0YUlkKSB7XG4gICAgcmV0dXJuIHtsYXllciwgbGF5ZXJEYXRhOiB7fX07XG4gIH1cblxuICBjb25zdCBsYXllckRhdGEgPSBsYXllci5mb3JtYXRMYXllckRhdGEoc3RhdGUuZGF0YXNldHMsIG9sZExheWVyRGF0YSk7XG4gIHJldHVybiB7bGF5ZXJEYXRhLCBsYXllcn07XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHByb3BzIHBhc3NlZCB0byBMYXllckhvdmVySW5mb1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbGF5ZXItdXRpbHMnKS5nZXRMYXllckhvdmVyUHJvcH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExheWVySG92ZXJQcm9wKHtcbiAgaW50ZXJhY3Rpb25Db25maWcsXG4gIGhvdmVySW5mbyxcbiAgbGF5ZXJzLFxuICBsYXllcnNUb1JlbmRlcixcbiAgZGF0YXNldHNcbn0pIHtcbiAgaWYgKGludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuZW5hYmxlZCAmJiBob3ZlckluZm8gJiYgaG92ZXJJbmZvLnBpY2tlZCkge1xuICAgIC8vIGlmIGFueXRoaW5nIGhvdmVyZWRcbiAgICBjb25zdCB7b2JqZWN0LCBsYXllcjogb3ZlcmxheX0gPSBob3ZlckluZm87XG5cbiAgICAvLyBkZWNrZ2wgbGF5ZXIgdG8ga2VwbGVyLWdsIGxheWVyXG4gICAgY29uc3QgbGF5ZXIgPSBsYXllcnNbb3ZlcmxheS5wcm9wcy5pZHhdO1xuXG4gICAgaWYgKG9iamVjdCAmJiBsYXllciAmJiBsYXllci5nZXRIb3ZlckRhdGEgJiYgbGF5ZXJzVG9SZW5kZXJbbGF5ZXIuaWRdKSB7XG4gICAgICAvLyBpZiBsYXllciBpcyB2aXNpYmxlIGFuZCBoYXZlIGhvdmVyZWQgZGF0YVxuICAgICAgY29uc3Qge1xuICAgICAgICBjb25maWc6IHtkYXRhSWR9XG4gICAgICB9ID0gbGF5ZXI7XG4gICAgICBpZiAoIWRhdGFJZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtkYXRhQ29udGFpbmVyLCBmaWVsZHN9ID0gZGF0YXNldHNbZGF0YUlkXTtcbiAgICAgIGNvbnN0IGRhdGEgPSBsYXllci5nZXRIb3ZlckRhdGEob2JqZWN0LCBkYXRhQ29udGFpbmVyLCBmaWVsZHMpO1xuICAgICAgY29uc3QgZmllbGRzVG9TaG93ID0gaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5jb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGEsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgZmllbGRzVG9TaG93LFxuICAgICAgICBsYXllclxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckRlY2tHbExheWVyKHByb3BzLCBsYXllckNhbGxiYWNrcywgaWR4KSB7XG4gIGNvbnN0IHtcbiAgICBkYXRhc2V0cyxcbiAgICBsYXllcnMsXG4gICAgbGF5ZXJEYXRhLFxuICAgIGhvdmVySW5mbyxcbiAgICBjbGlja2VkLFxuICAgIG1hcFN0YXRlLFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBtYXBMYXllcnMsXG4gICAgbWFza1BvbHlnb24sXG4gICAgY3VzdG9tTWFya2Vyc1N0YXR1cyxcbiAgICBwb3B1cFNldHRpbmdzXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgbGF5ZXIgPSBsYXllcnNbaWR4XTtcbiAgY29uc3QgZGF0YSA9IGxheWVyRGF0YVtpZHhdO1xuICBjb25zdCB7Z3B1RmlsdGVyfSA9IGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdIHx8IHt9O1xuICBjb25zdCBvYmplY3RIb3ZlcmVkID0gY2xpY2tlZCB8fCBob3ZlckluZm87XG4gIGNvbnN0IHZpc2libGUgPSAhbWFwTGF5ZXJzIHx8IChtYXBMYXllcnMgJiYgbWFwTGF5ZXJzW2xheWVyLmlkXSk7XG5cbiAgbGF5ZXIuaW50ZXJhY3Rpdml0eVNldHRpbmdzID0gcG9wdXBTZXR0aW5ncz8ubGF5ZXJzW2xheWVyLmlkXTtcbiAgLy8gTGF5ZXIgaXMgTGF5ZXIgY2xhc3NcbiAgcmV0dXJuIGxheWVyLnJlbmRlckxheWVyKHtcbiAgICBkYXRhLFxuICAgIGdwdUZpbHRlcixcbiAgICBpZHgsXG4gICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgbGF5ZXJDYWxsYmFja3MsXG4gICAgbWFwU3RhdGUsXG4gICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgIG9iamVjdEhvdmVyZWQsXG4gICAgdmlzaWJsZSxcbiAgICBtYXNrUG9seWdvbixcbiAgICBjdXN0b21NYXJrZXJzU3RhdHVzLFxuICAgIHBvcHVwU2V0dGluZ3NcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xheWVyUmVuZGVyYWJsZShsYXllciwgbGF5ZXJEYXRhKSB7XG4gIHJldHVybiBsYXllci5pZCAhPT0gR0VPQ09ERVJfTEFZRVJfSUQgJiYgbGF5ZXIuc2hvdWxkUmVuZGVyTGF5ZXIobGF5ZXJEYXRhKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGF5ZXJWaXNpYmxlKGxheWVyLCBtYXBMYXllcnMpIHtcbiAgcmV0dXJuIChcbiAgICBsYXllci5jb25maWcuaXNWaXNpYmxlICYmXG4gICAgLy8gaWYgbGF5ZXIuaWQgaXMgbm90IGluIG1hcExheWVycywgZG9uJ3QgcmVuZGVyIGl0XG4gICAgKCFtYXBMYXllcnMgfHwgKG1hcExheWVycyAmJiBtYXBMYXllcnNbbGF5ZXIuaWRdKSlcbiAgKTtcbn1cblxuLy8gUHJlcGFyZSBhIGRpY3Qgb2YgbGF5ZXJzIHJlbmRlcmVkIGJ5IHRoZSBkZWNrLmdsXG4vLyBOb3RlLCBpc1Zpc2libGU6IGZhbHNlIGxheWVyIGlzIHBhc3NlZCB0byBkZWNrLmdsIGhlcmVcbi8vIHJldHVybiB7W2lkXTogdHJ1ZSBcXCBmYWxzZX1cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlTGF5ZXJzRm9yRGVjayhsYXllcnMsIGxheWVyRGF0YSkge1xuICByZXR1cm4gbGF5ZXJzLnJlZHVjZShcbiAgICAoYWNjdSwgbGF5ZXIsIGlkeCkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbbGF5ZXIuaWRdOlxuICAgICAgICBpc0xheWVyUmVuZGVyYWJsZShsYXllciwgbGF5ZXJEYXRhW2lkeF0pICYmIGxheWVyLm92ZXJsYXlUeXBlID09PSBPVkVSTEFZX1RZUEUuZGVja2dsXG4gICAgfSksXG4gICAge31cbiAgKTtcbn1cblxuLy8gUHJlcGFyZSBhIGRpY3Qgb2YgcmVuZGVyZWQgbGF5ZXJzIHJlbmRlcmVkIGluIHRoZSBtYXBcbi8vIFRoaXMgaW5jbHVkZXMgb25seSB0aGUgdmlzaWJpbGUgbGF5ZXJzIGZvciBzaW5nbGUgbWFwIHZpZXcgYW5kIHNwbGl0IG1hcCB2aWV3XG4vLyByZXR1cm4ge1tpZF06IHRydWUgXFwgZmFsc2V9XG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUxheWVyc1RvUmVuZGVyKGxheWVycywgbGF5ZXJEYXRhLCBtYXBMYXllcnMpIHtcbiAgcmV0dXJuIGxheWVycy5yZWR1Y2UoXG4gICAgKGFjY3UsIGxheWVyLCBpZHgpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2xheWVyLmlkXTogaXNMYXllclJlbmRlcmFibGUobGF5ZXIsIGxheWVyRGF0YVtpZHhdKSAmJiBpc0xheWVyVmlzaWJsZShsYXllciwgbWFwTGF5ZXJzKVxuICAgIH0pLFxuICAgIHt9XG4gICk7XG59XG5cbmNvbnN0IG1hc2tFeHRlbnNpb24gPSBuZXcgTWFza0V4dGVuc2lvbigpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFza0V4dGVuc2lvblByb3BzKG1hc2tQb2x5Z29uKSB7XG4gIHJldHVybiB7XG4gICAgbWFza0lkOiBCb29sZWFuKG1hc2tQb2x5Z29uICYmIG1hc2tQb2x5Z29uLmxlbmd0aCkgJiYgTUFTS19MQVlFUl9JRCxcbiAgICBleHRlbnNpb25zOiBbbWFza0V4dGVuc2lvbl1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lZ2F0ZUFjY2Vzc29yKGFjY2Vzc29yKSB7XG4gIHJldHVybiB0eXBlb2YgYWNjZXNzb3IgPT09ICdmdW5jdGlvbicgPyAoZCwgaSkgPT4gLWFjY2Vzc29yKGQsIGkpIDogLWFjY2Vzc29yO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@carto/kepler.gl",
|
|
3
|
-
"author": "
|
|
4
|
-
"
|
|
5
|
-
"version": "0.0.52",
|
|
3
|
+
"author": "Shan He <shan@uber.com>",
|
|
4
|
+
"version": "0.0.53-alpha.interactivity.4",
|
|
6
5
|
"description": "kepler.gl is a webgl based application to visualize large scale location data in the browser",
|
|
7
6
|
"license": "MIT",
|
|
8
7
|
"main": "dist/index.js",
|
|
@@ -16,7 +15,7 @@
|
|
|
16
15
|
],
|
|
17
16
|
"repository": {
|
|
18
17
|
"type": "git",
|
|
19
|
-
"url": "https://github.com/
|
|
18
|
+
"url": "https://github.com/keplergl/kepler.gl.git"
|
|
20
19
|
},
|
|
21
20
|
"scripts": {
|
|
22
21
|
"install:example": "cd examples/demo-app && yarn",
|
|
@@ -270,6 +269,10 @@
|
|
|
270
269
|
"engines": {
|
|
271
270
|
"node": ">=12.0.0"
|
|
272
271
|
},
|
|
272
|
+
"maintainers": [
|
|
273
|
+
"Shan He <heshan0131@gmail.com>",
|
|
274
|
+
"Giuseppe Macri <gmacri@uber.com>"
|
|
275
|
+
],
|
|
273
276
|
"volta": {
|
|
274
277
|
"node": "12.19.0"
|
|
275
278
|
}
|
|
@@ -37,7 +37,8 @@ export type KeplerGlProps = {
|
|
|
37
37
|
onExportToCloudSuccess?: OnSuccessCallBack;
|
|
38
38
|
onExportToCloudError?: OnErrorCallBack;
|
|
39
39
|
readOnly?: boolean;
|
|
40
|
-
maskPolygon?: Array<Array<number
|
|
40
|
+
maskPolygon?: Array<Array<number>>;
|
|
41
|
+
popupSettings: any;
|
|
41
42
|
};
|
|
42
43
|
|
|
43
44
|
export type UnconnectedKeplerGlProps = KeplerGlProps & {
|
|
@@ -136,7 +136,10 @@ export const mapFieldsSelector = props => ({
|
|
|
136
136
|
activeSidePanel: props.uiState.activeSidePanel,
|
|
137
137
|
mapControls: props.uiState.mapControls,
|
|
138
138
|
readOnly: props.uiState.readOnly,
|
|
139
|
-
locale: props.uiState.locale
|
|
139
|
+
locale: props.uiState.locale,
|
|
140
|
+
|
|
141
|
+
// interactivity
|
|
142
|
+
popupSettings: props.popupSettings
|
|
140
143
|
});
|
|
141
144
|
|
|
142
145
|
export const sidePanelSelector = (props, availableProviders) => ({
|
|
@@ -144,7 +144,8 @@ export default function MapContainerFactory(MapPopover, MapControl, Editor) {
|
|
|
144
144
|
onMapStyleLoaded: PropTypes.func,
|
|
145
145
|
onMapRender: PropTypes.func,
|
|
146
146
|
getMapboxRef: PropTypes.func,
|
|
147
|
-
index: PropTypes.number
|
|
147
|
+
index: PropTypes.number,
|
|
148
|
+
popupSettings: PropTypes.object
|
|
148
149
|
};
|
|
149
150
|
|
|
150
151
|
static defaultProps = {
|
|
@@ -201,10 +202,13 @@ export default function MapContainerFactory(MapPopover, MapControl, Editor) {
|
|
|
201
202
|
layerDataSelector = props => props.layerData;
|
|
202
203
|
mapLayersSelector = props => props.mapLayers;
|
|
203
204
|
layerOrderSelector = props => props.layerOrder;
|
|
205
|
+
popupSettingsSelector = props => props.popupSettings;
|
|
206
|
+
|
|
204
207
|
layersToRenderSelector = createSelector(
|
|
205
208
|
this.layersSelector,
|
|
206
209
|
this.layerDataSelector,
|
|
207
210
|
this.mapLayersSelector,
|
|
211
|
+
this.popupSettingsSelector,
|
|
208
212
|
prepareLayersToRender
|
|
209
213
|
);
|
|
210
214
|
layersForDeckSelector = createSelector(
|
package/src/layers/base-layer.js
CHANGED
|
@@ -107,6 +107,9 @@ class Layer {
|
|
|
107
107
|
// visConfigSettings
|
|
108
108
|
this.visConfigSettings = {};
|
|
109
109
|
|
|
110
|
+
// interactivitySettings
|
|
111
|
+
this._interactivitySettings = {};
|
|
112
|
+
|
|
110
113
|
// @ts-ignore
|
|
111
114
|
this.config = this.getDefaultLayerConfig({
|
|
112
115
|
columns: this.getLayerColumns(),
|
|
@@ -218,6 +221,26 @@ class Layer {
|
|
|
218
221
|
get layerInfoModal() {
|
|
219
222
|
return null;
|
|
220
223
|
}
|
|
224
|
+
|
|
225
|
+
get interactivitySettings() {
|
|
226
|
+
return this._interactivitySettings;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
set interactivitySettings(interactivitySettings) {
|
|
230
|
+
this._interactivitySettings = interactivitySettings;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
get hasTooltip() {
|
|
234
|
+
return Boolean(
|
|
235
|
+
this.interactivitySettings?.hover?.fields.length ||
|
|
236
|
+
this.interactivitySettings?.click?.fields.length
|
|
237
|
+
);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
get hasInteractivity() {
|
|
241
|
+
return Boolean(this.hasTooltip && this.interactivitySettings?.enabled);
|
|
242
|
+
}
|
|
243
|
+
|
|
221
244
|
/*
|
|
222
245
|
* Given a dataset, automatically find props to create layer based on it
|
|
223
246
|
* and return the props and previous found layers.
|
|
@@ -1274,7 +1297,7 @@ class Layer {
|
|
|
1274
1297
|
id: this.id,
|
|
1275
1298
|
idx,
|
|
1276
1299
|
coordinateSystem: COORDINATE_SYSTEM.LNGLAT,
|
|
1277
|
-
pickable:
|
|
1300
|
+
pickable: this.hasInteractivity,
|
|
1278
1301
|
wrapLongitude: true,
|
|
1279
1302
|
parameters: {depthTest: Boolean(mapState.dragRotate || this.config.visConfig.enable3d)},
|
|
1280
1303
|
hidden: this.config.hidden,
|
|
@@ -269,7 +269,7 @@ export default class GeoJsonLayer extends Layer {
|
|
|
269
269
|
}
|
|
270
270
|
|
|
271
271
|
renderLayer(opts) {
|
|
272
|
-
const {data, gpuFilter, objectHovered
|
|
272
|
+
const {data, gpuFilter, objectHovered} = opts;
|
|
273
273
|
|
|
274
274
|
const {fixedRadius, featureTypes} = this.meta;
|
|
275
275
|
const radiusScale = this.getRadiusScale(fixedRadius);
|
|
@@ -294,7 +294,7 @@ export default class GeoJsonLayer extends Layer {
|
|
|
294
294
|
opacity: visConfig.strokeOpacity
|
|
295
295
|
};
|
|
296
296
|
|
|
297
|
-
const pickable =
|
|
297
|
+
const pickable = this.hasInteractivity;
|
|
298
298
|
const hoveredObject = this.hasHoveredObject(objectHovered);
|
|
299
299
|
|
|
300
300
|
return [
|
package/src/layers/index.d.ts
CHANGED
|
@@ -2,12 +2,25 @@ import {RGBColor, RGBAColor} from '../reducers/types';
|
|
|
2
2
|
import {Field, Datasets, KeplerTable} from '../reducers/vis-state-updaters';
|
|
3
3
|
import {LayerTextLabel, ColorRange, ColorUI, LayerVisConfig} from './layer-factory';
|
|
4
4
|
|
|
5
|
+
export enum PopupEvent {
|
|
6
|
+
Hover = 'hover',
|
|
7
|
+
Click = 'click'
|
|
8
|
+
}
|
|
9
|
+
|
|
5
10
|
export type LayerColumns = {
|
|
6
11
|
[key: string]: {value: string | null; fieldIdx: number; optional?: boolean};
|
|
7
12
|
};
|
|
8
13
|
export type VisualChannelDomain = number[] | string[];
|
|
9
14
|
export type VisualChannelField = Field | null;
|
|
10
15
|
|
|
16
|
+
export interface PopupFormatSettings {
|
|
17
|
+
fields: PopupField[];
|
|
18
|
+
style: PopupStyle;
|
|
19
|
+
templateMode?: boolean;
|
|
20
|
+
template?: string;
|
|
21
|
+
templateEdited?: boolean;
|
|
22
|
+
}
|
|
23
|
+
|
|
11
24
|
export type LayerConfig = {
|
|
12
25
|
dataId: string | null;
|
|
13
26
|
label: string;
|
|
@@ -74,6 +87,9 @@ export class Layer {
|
|
|
74
87
|
visConfigSettings: any;
|
|
75
88
|
visualChannels: {[key: string]: VisualChannel};
|
|
76
89
|
_oldDataUpdateTriggers: any;
|
|
90
|
+
_interactivitySettings?: { enabled: boolean, [PopupEvent.Click]?: PopupFormatSettings, [PopupEvent.Hover]?: PopupFormatSettings };
|
|
91
|
+
hasTooltip: boolean;
|
|
92
|
+
hasInteractivity: boolean;
|
|
77
93
|
hasAllColumns(): boolean;
|
|
78
94
|
updateLayerConfig(p: Partial<LayerConfig>): Layer;
|
|
79
95
|
updateLayerDomain(datasets: Datasets, filter?: Filter): Layer;
|
package/src/utils/layer-utils.js
CHANGED
|
@@ -127,13 +127,16 @@ export function renderDeckGlLayer(props, layerCallbacks, idx) {
|
|
|
127
127
|
animationConfig,
|
|
128
128
|
mapLayers,
|
|
129
129
|
maskPolygon,
|
|
130
|
-
customMarkersStatus
|
|
130
|
+
customMarkersStatus,
|
|
131
|
+
popupSettings
|
|
131
132
|
} = props;
|
|
132
133
|
const layer = layers[idx];
|
|
133
134
|
const data = layerData[idx];
|
|
134
135
|
const {gpuFilter} = datasets[layer.config.dataId] || {};
|
|
135
136
|
const objectHovered = clicked || hoverInfo;
|
|
136
137
|
const visible = !mapLayers || (mapLayers && mapLayers[layer.id]);
|
|
138
|
+
|
|
139
|
+
layer.interactivitySettings = popupSettings?.layers[layer.id];
|
|
137
140
|
// Layer is Layer class
|
|
138
141
|
return layer.renderLayer({
|
|
139
142
|
data,
|
|
@@ -146,7 +149,8 @@ export function renderDeckGlLayer(props, layerCallbacks, idx) {
|
|
|
146
149
|
objectHovered,
|
|
147
150
|
visible,
|
|
148
151
|
maskPolygon,
|
|
149
|
-
customMarkersStatus
|
|
152
|
+
customMarkersStatus,
|
|
153
|
+
popupSettings
|
|
150
154
|
});
|
|
151
155
|
}
|
|
152
156
|
|