@kepler.gl/deckgl-layers 3.1.7 → 3.1.9
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/cluster-layer/cluster-layer.js +13 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.js +10 -2
- package/dist/layer-utils/cpu-aggregator.js +2 -1
- package/dist/raster/webgl/texture/rgba-image.js +2 -2
- package/dist/wms/wms-layer.d.ts +63 -0
- package/dist/wms/wms-layer.js +351 -0
- package/package.json +6 -4
@@ -158,8 +158,11 @@ var clusterLayerDimensions = [_cpuAggregator.defaultColorDimension, {
|
|
158
158
|
getSubLayerAccessor: getSubLayerRadius,
|
159
159
|
getPickingInfo: function getPickingInfo(dimensionState, cell, layerProps) {
|
160
160
|
var radiusValue = layerProps.getRadiusValue(cell);
|
161
|
+
var scaleFunc = dimensionState.scaleFunc;
|
162
|
+
var scaledRadiusValue = scaleFunc ? scaleFunc(radiusValue) : radiusValue;
|
161
163
|
return {
|
162
|
-
radiusValue: radiusValue
|
164
|
+
radiusValue: radiusValue,
|
165
|
+
scaledRadiusValue: scaledRadiusValue
|
163
166
|
};
|
164
167
|
}
|
165
168
|
}];
|
@@ -233,9 +236,16 @@ var ClusterLayer = exports["default"] = /*#__PURE__*/function (_AggregationLayer
|
|
233
236
|
key: "getPickingInfo",
|
234
237
|
value: function getPickingInfo(_ref4) {
|
235
238
|
var info = _ref4.info;
|
236
|
-
|
239
|
+
var obj = this.state.cpuAggregator.getPickingInfo({
|
237
240
|
info: info
|
238
241
|
}, this.props);
|
242
|
+
if (obj !== null && obj !== void 0 && obj.object) {
|
243
|
+
// @ts-expect-error
|
244
|
+
var distanceScale = (0, _viewportMercatorProject.getDistanceScales)(this.context.viewport);
|
245
|
+
var metersPerPixel = distanceScale.metersPerPixel[0];
|
246
|
+
obj.object.scaledRadiusValue = obj.object.scaledRadiusValue * metersPerPixel;
|
247
|
+
}
|
248
|
+
return obj;
|
239
249
|
}
|
240
250
|
}, {
|
241
251
|
key: "_getSublayerUpdateTriggers",
|
@@ -294,4 +304,4 @@ var ClusterLayer = exports["default"] = /*#__PURE__*/function (_AggregationLayer
|
|
294
304
|
}(_aggregationLayers._AggregationLayer);
|
295
305
|
ClusterLayer.layerName = 'ClusterLayer';
|
296
306
|
ClusterLayer.defaultProps = defaultProps;
|
297
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGF5ZXJzIiwicmVxdWlyZSIsIl9hZ2dyZWdhdGlvbkxheWVycyIsIl9nZW9WaWV3cG9ydCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY3B1QWdncmVnYXRvciIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX3ZpZXdwb3J0TWVyY2F0b3JQcm9qZWN0IiwiX2QzQXJyYXkiLCJfY29uc3RhbnRzIiwiX2NsdXN0ZXJVdGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiZGVmYXVsdFJhZGl1cyIsIkxBWUVSX1ZJU19DT05GSUdTIiwiY2x1c3RlclJhZGl1cyIsImRlZmF1bHRWYWx1ZSIsImRlZmF1bHRSYWRpdXNSYW5nZSIsImNsdXN0ZXJSYWRpdXNSYW5nZSIsImRlZmF1bHRHZXRDb2xvclZhbHVlIiwicG9pbnRzIiwiZGVmYXVsdEdldFJhZGl1c1ZhbHVlIiwiY2VsbCIsImZpbHRlcmVkUG9pbnRzIiwicHJvY2Vzc0dlb0pTT04iLCJzdGVwIiwicHJvcHMiLCJhZ2dyZWdhdGlvbiIsIl9yZWYiLCJ2aWV3cG9ydCIsImRhdGEiLCJnZXRQb3NpdGlvbiIsImZpbHRlckRhdGEiLCJnZW9KU09OIiwiZ2V0R2VvSlNPTiIsImNsdXN0ZXJCdWlsZGVyIiwiQ2x1c3RlckJ1aWxkZXIiLCJzZXRTdGF0ZSIsImdldENsdXN0ZXJzIiwiX3JlZjIiLCJfdGhpcyRzdGF0ZSIsInN0YXRlIiwiem9vbSIsIndpZHRoIiwiaGVpZ2h0IiwibG9uZ2l0dWRlIiwibGF0aXR1ZGUiLCJiYm94IiwiZ2VvVmlld3BvcnQiLCJib3VuZHMiLCJjbHVzdGVycyIsImNsdXN0ZXJzQXRab29tIiwibGF5ZXJEYXRhIiwiZ2V0U3ViTGF5ZXJSYWRpdXMiLCJkaW1lbnNpb25TdGF0ZSIsImRpbWVuc2lvbiIsImxheWVyUHJvcHMiLCJnZXRSYWRpdXNWYWx1ZSIsInNjYWxlRnVuYyIsImNsdXN0ZXJBZ2dyZWdhdGlvbiIsImV4cG9ydHMiLCJrZXkiLCJ1cGRhdGVTdGVwcyIsInRyaWdnZXJzIiwicG9zaXRpb24iLCJwcm9wIiwidXBkYXRlVHJpZ2dlciIsInVwZGF0ZXIiLCJnZXRSYWRpdXNWYWx1ZURvbWFpbiIsImRpbWVuc2lvblVwZGF0ZXIiLCJ2YWx1ZURvbWFpbiIsIm1heCIsIl9zZXREaW1lbnNpb25TdGF0ZSIsImNsdXN0ZXJMYXllckRpbWVuc2lvbnMiLCJkZWZhdWx0Q29sb3JEaW1lbnNpb24iLCJhY2Nlc3NvciIsIm51bGxWYWx1ZSIsInZhbHVlIiwiZG9tYWluIiwicmFuZ2UiLCJzY2FsZVR5cGUiLCJnZXREaW1lbnNpb25TY2FsZSIsImdldFN1YkxheWVyQWNjZXNzb3IiLCJnZXRQaWNraW5nSW5mbyIsInJhZGl1c1ZhbHVlIiwiZGVmYXVsdFByb3BzIiwiY29sb3JEb21haW4iLCJjb2xvclJhbmdlIiwiREVGQVVMVF9DT0xPUl9SQU5HRSIsImNvbG9yU2NhbGVUeXBlIiwiU0NBTEVfVFlQRVMiLCJxdWFudGl6ZSIsInJhZGl1c1NjYWxlVHlwZSIsInNxcnQiLCJyYWRpdXNSYW5nZSIsInR5cGUiLCJ4IiwiZ2V0Q29sb3JWYWx1ZSIsIkNsdXN0ZXJMYXllciIsIl9BZ2dyZWdhdGlvbkxheWVyIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwiaW5pdGlhbGl6ZVN0YXRlIiwiY3B1QWdncmVnYXRvciIsIkNQVUFnZ3JlZ2F0b3IiLCJkaW1lbnNpb25zIiwiYWdncmVnYXRvclN0YXRlIiwiYXR0cmlidXRlTWFuYWdlciIsImdldEF0dHJpYnV0ZU1hbmFnZXIiLCJhZGQiLCJwb3NpdGlvbnMiLCJzaXplIiwidXBkYXRlU3RhdGUiLCJfcmVmMyIsIm9sZFByb3BzIiwiY2hhbmdlRmxhZ3MiLCJjb250ZXh0IiwiYXR0cmlidXRlcyIsImdldEF0dHJpYnV0ZXMiLCJudW1JbnN0YW5jZXMiLCJnZXROdW1JbnN0YW5jZXMiLCJfcmVmNCIsImluZm8iLCJfZ2V0U3VibGF5ZXJVcGRhdGVUcmlnZ2VycyIsImdldFVwZGF0ZVRyaWdnZXJzIiwiX2dldFN1YkxheWVyQWNjZXNzb3JzIiwiZ2V0UmFkaXVzIiwiZ2V0QWNjZXNzb3IiLCJnZXRGaWxsQ29sb3IiLCJyZW5kZXJMYXllcnMiLCJfdGhpcyRwcm9wcyIsImlkIiwicmFkaXVzU2NhbGUiLCJfdGhpcyRwcm9wczIiLCJ2aXNpYmxlIiwib3BhY2l0eSIsInBpY2thYmxlIiwiYXV0b0hpZ2hsaWdodCIsImhpZ2hsaWdodENvbG9yIiwidXBkYXRlVHJpZ2dlcnMiLCJhY2Nlc3NvcnMiLCJkaXN0YW5jZVNjYWxlIiwiZ2V0RGlzdGFuY2VTY2FsZXMiLCJtZXRlcnNQZXJQaXhlbCIsIlNjYXR0ZXJwbG90TGF5ZXIiLCJjb25jYXQiLCJwYXJhbWV0ZXJzIiwiZGVwdGhNYXNrIiwiQWdncmVnYXRpb25MYXllciIsImxheWVyTmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbHVzdGVyLWxheWVyL2NsdXN0ZXItbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtTY2F0dGVycGxvdExheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHtfQWdncmVnYXRpb25MYXllciBhcyBBZ2dyZWdhdGlvbkxheWVyfSBmcm9tICdAZGVjay5nbC9hZ2dyZWdhdGlvbi1sYXllcnMnO1xuXG5pbXBvcnQgZ2VvVmlld3BvcnQgZnJvbSAnQG1hcGJveC9nZW8tdmlld3BvcnQnO1xuaW1wb3J0IENQVUFnZ3JlZ2F0b3IsIHtcbiAgQWdncmVnYXRpb25UeXBlLFxuICBkZWZhdWx0Q29sb3JEaW1lbnNpb24sXG4gIERpbWVuc2lvblR5cGUsXG4gIGdldERpbWVuc2lvblNjYWxlXG59IGZyb20gJy4uL2xheWVyLXV0aWxzL2NwdS1hZ2dyZWdhdG9yJztcbmltcG9ydCB7Z2V0RGlzdGFuY2VTY2FsZXN9IGZyb20gJ3ZpZXdwb3J0LW1lcmNhdG9yLXByb2plY3QnO1xuaW1wb3J0IHttYXh9IGZyb20gJ2QzLWFycmF5JztcblxuaW1wb3J0IHtTQ0FMRV9UWVBFUywgREVGQVVMVF9DT0xPUl9SQU5HRSwgTEFZRVJfVklTX0NPTkZJR1N9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCBDbHVzdGVyQnVpbGRlciwge2dldEdlb0pTT059IGZyb20gJy4uL2xheWVyLXV0aWxzL2NsdXN0ZXItdXRpbHMnO1xuaW1wb3J0IHtSR0JBQ29sb3J9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtBZ2dyZWdhdGlvbkxheWVyUHJvcHN9IGZyb20gJ0BkZWNrLmdsL2FnZ3JlZ2F0aW9uLWxheWVycy9hZ2dyZWdhdGlvbi1sYXllcic7XG5cbmNvbnN0IGRlZmF1bHRSYWRpdXMgPSBMQVlFUl9WSVNfQ09ORklHUy5jbHVzdGVyUmFkaXVzLmRlZmF1bHRWYWx1ZTtcbmNvbnN0IGRlZmF1bHRSYWRpdXNSYW5nZSA9IExBWUVSX1ZJU19DT05GSUdTLmNsdXN0ZXJSYWRpdXNSYW5nZS5kZWZhdWx0VmFsdWU7XG5cbmNvbnN0IGRlZmF1bHRHZXRDb2xvclZhbHVlID0gcG9pbnRzID0+IHBvaW50cy5sZW5ndGg7XG5jb25zdCBkZWZhdWx0R2V0UmFkaXVzVmFsdWUgPSBjZWxsID0+XG4gIGNlbGwuZmlsdGVyZWRQb2ludHMgPyBjZWxsLmZpbHRlcmVkUG9pbnRzLmxlbmd0aCA6IGNlbGwucG9pbnRzLmxlbmd0aDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuZnVuY3Rpb24gcHJvY2Vzc0dlb0pTT04odGhpczogQ1BVQWdncmVnYXRvciwgc3RlcCwgcHJvcHMsIGFnZ3JlZ2F0aW9uLCB7dmlld3BvcnR9KSB7XG4gIGNvbnN0IHtkYXRhLCBnZXRQb3NpdGlvbiwgZmlsdGVyRGF0YX0gPSBwcm9wcztcbiAgY29uc3QgZ2VvSlNPTiA9IGdldEdlb0pTT04oZGF0YSwgZ2V0UG9zaXRpb24sIGZpbHRlckRhdGEpO1xuICBjb25zdCBjbHVzdGVyQnVpbGRlciA9IG5ldyBDbHVzdGVyQnVpbGRlcigpO1xuXG4gIHRoaXMuc2V0U3RhdGUoe2dlb0pTT04sIGNsdXN0ZXJCdWlsZGVyfSk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmZ1bmN0aW9uIGdldENsdXN0ZXJzKHRoaXM6IENQVUFnZ3JlZ2F0b3IsIHN0ZXAsIHByb3BzLCBhZ2dyZWdhdGlvbiwge3ZpZXdwb3J0fSkge1xuICBjb25zdCB7Z2VvSlNPTiwgY2x1c3RlckJ1aWxkZXJ9ID0gdGhpcy5zdGF0ZTtcbiAgY29uc3Qge2NsdXN0ZXJSYWRpdXMsIHpvb20sIHdpZHRoLCBoZWlnaHR9ID0gcHJvcHM7XG4gIGNvbnN0IHtsb25naXR1ZGUsIGxhdGl0dWRlfSA9IHZpZXdwb3J0O1xuXG4gIC8vIHpvb20gbmVlZHMgdG8gYmUgYW4gaW50ZWdlciBmb3IgdGhlIGRpZmZlcmVudCBtYXAgdXRpbHMuIEFsc28gaGVscHMgd2l0aCBjYWNoZSBrZXkuXG4gIGNvbnN0IGJib3ggPSBnZW9WaWV3cG9ydC5ib3VuZHMoW2xvbmdpdHVkZSwgbGF0aXR1ZGVdLCB6b29tLCBbd2lkdGgsIGhlaWdodF0pO1xuICBjb25zdCBjbHVzdGVycyA9IGNsdXN0ZXJCdWlsZGVyLmNsdXN0ZXJzQXRab29tKHtiYm94LCBjbHVzdGVyUmFkaXVzLCBnZW9KU09OLCB6b29tfSk7XG5cbiAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgbGF5ZXJEYXRhOiB7ZGF0YTogY2x1c3RlcnN9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRTdWJMYXllclJhZGl1cyhkaW1lbnNpb25TdGF0ZSwgZGltZW5zaW9uLCBsYXllclByb3BzKSB7XG4gIHJldHVybiBjZWxsID0+IHtcbiAgICBjb25zdCB7Z2V0UmFkaXVzVmFsdWV9ID0gbGF5ZXJQcm9wcztcbiAgICBjb25zdCB7c2NhbGVGdW5jfSA9IGRpbWVuc2lvblN0YXRlO1xuICAgIHJldHVybiBzY2FsZUZ1bmMoZ2V0UmFkaXVzVmFsdWUoY2VsbCkpO1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgY2x1c3RlckFnZ3JlZ2F0aW9uOiBBZ2dyZWdhdGlvblR5cGUgPSB7XG4gIGtleTogJ3Bvc2l0aW9uJyxcbiAgdXBkYXRlU3RlcHM6IFtcbiAgICB7XG4gICAgICBrZXk6ICdnZW9qc29uJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgcHJvcDogJ2dldFBvc2l0aW9uJyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnZ2V0UG9zaXRpb24nXG4gICAgICAgIH0sXG4gICAgICAgIGZpbHRlckRhdGE6IHtcbiAgICAgICAgICBwcm9wOiAnZmlsdGVyRGF0YScsXG4gICAgICAgICAgdXBkYXRlVHJpZ2dlcjogJ2ZpbHRlckRhdGEnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1cGRhdGVyOiBwcm9jZXNzR2VvSlNPTlxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnY2x1c3RlcmluZycsXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICBjbHVzdGVyUmFkaXVzOiB7XG4gICAgICAgICAgcHJvcDogJ2NsdXN0ZXJSYWRpdXMnXG4gICAgICAgIH0sXG4gICAgICAgIHpvb206IHtcbiAgICAgICAgICBwcm9wOiAnem9vbSdcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHtcbiAgICAgICAgICBwcm9wOiAnd2lkdGgnXG4gICAgICAgIH0sXG4gICAgICAgIGhlaWdodDoge1xuICAgICAgICAgIHByb3A6ICdoZWlnaHQnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1cGRhdGVyOiBnZXRDbHVzdGVyc1xuICAgIH1cbiAgXVxufTtcblxuZnVuY3Rpb24gZ2V0UmFkaXVzVmFsdWVEb21haW4odGhpczogQ1BVQWdncmVnYXRvciwgc3RlcCwgcHJvcHMsIGRpbWVuc2lvblVwZGF0ZXIpIHtcbiAgY29uc3Qge2tleX0gPSBkaW1lbnNpb25VcGRhdGVyO1xuICBjb25zdCB7Z2V0UmFkaXVzVmFsdWV9ID0gcHJvcHM7XG4gIGNvbnN0IHtsYXllckRhdGF9ID0gdGhpcy5zdGF0ZTtcblxuICBjb25zdCB2YWx1ZURvbWFpbiA9IFswLCBtYXgobGF5ZXJEYXRhLmRhdGEsIGdldFJhZGl1c1ZhbHVlKV07XG4gIHRoaXMuX3NldERpbWVuc2lvblN0YXRlKGtleSwge3ZhbHVlRG9tYWlufSk7XG59XG5cbmNvbnN0IGNsdXN0ZXJMYXllckRpbWVuc2lvbnM6IFtEaW1lbnNpb25UeXBlPFJHQkFDb2xvcj4sIERpbWVuc2lvblR5cGU8bnVtYmVyPl0gPSBbXG4gIGRlZmF1bHRDb2xvckRpbWVuc2lvbixcbiAge1xuICAgIGtleTogJ3JhZGl1cycsXG4gICAgYWNjZXNzb3I6ICdnZXRSYWRpdXMnLFxuICAgIG51bGxWYWx1ZTogMCxcbiAgICB1cGRhdGVTdGVwczogW1xuICAgICAge1xuICAgICAgICBrZXk6ICdnZXREb21haW4nLFxuICAgICAgICB0cmlnZ2Vyczoge1xuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICBwcm9wOiAnZ2V0UmFkaXVzVmFsdWUnLFxuICAgICAgICAgICAgdXBkYXRlVHJpZ2dlcjogJ2dldFJhZGl1c1ZhbHVlJ1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlcjogZ2V0UmFkaXVzVmFsdWVEb21haW5cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2dldFNjYWxlRnVuYycsXG4gICAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgICAgZG9tYWluOiB7cHJvcDogJ3JhZGl1c0RvbWFpbid9LFxuICAgICAgICAgIHJhbmdlOiB7cHJvcDogJ3JhZGl1c1JhbmdlJ30sXG4gICAgICAgICAgc2NhbGVUeXBlOiB7cHJvcDogJ3JhZGl1c1NjYWxlVHlwZSd9XG4gICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZXI6IGdldERpbWVuc2lvblNjYWxlXG4gICAgICB9XG4gICAgXSxcbiAgICBnZXRTdWJMYXllckFjY2Vzc29yOiBnZXRTdWJMYXllclJhZGl1cyxcbiAgICBnZXRQaWNraW5nSW5mbzogKGRpbWVuc2lvblN0YXRlLCBjZWxsLCBsYXllclByb3BzKSA9PiB7XG4gICAgICBjb25zdCByYWRpdXNWYWx1ZSA9IGxheWVyUHJvcHMuZ2V0UmFkaXVzVmFsdWUoY2VsbCk7XG4gICAgICByZXR1cm4ge3JhZGl1c1ZhbHVlfTtcbiAgICB9XG4gIH1cbl07XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgY2x1c3RlclJhZGl1czogZGVmYXVsdFJhZGl1cyxcbiAgY29sb3JEb21haW46IG51bGwsXG4gIGNvbG9yUmFuZ2U6IERFRkFVTFRfQ09MT1JfUkFOR0UsXG4gIGNvbG9yU2NhbGVUeXBlOiBTQ0FMRV9UWVBFUy5xdWFudGl6ZSxcbiAgcmFkaXVzU2NhbGVUeXBlOiBTQ0FMRV9UWVBFUy5zcXJ0LFxuICByYWRpdXNSYW5nZTogZGVmYXVsdFJhZGl1c1JhbmdlLFxuICBnZXRQb3NpdGlvbjoge3R5cGU6ICdhY2Nlc3NvcicsIHZhbHVlOiB4ID0+IHgucG9zaXRpb259LFxuICBnZXRDb2xvclZhbHVlOiB7dHlwZTogJ2FjY2Vzc29yJywgdmFsdWU6IGRlZmF1bHRHZXRDb2xvclZhbHVlfSxcbiAgZ2V0UmFkaXVzVmFsdWU6IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogZGVmYXVsdEdldFJhZGl1c1ZhbHVlfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2x1c3RlckxheWVyIGV4dGVuZHMgQWdncmVnYXRpb25MYXllcjxcbiAgYW55LFxuICBBZ2dyZWdhdGlvbkxheWVyUHJvcHM8YW55PiAmIHtyYWRpdXNTY2FsZTogbnVtYmVyfVxuPiB7XG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICBjb25zdCBjcHVBZ2dyZWdhdG9yID0gbmV3IENQVUFnZ3JlZ2F0b3Ioe1xuICAgICAgYWdncmVnYXRpb246IGNsdXN0ZXJBZ2dyZWdhdGlvbixcbiAgICAgIGRpbWVuc2lvbnM6IGNsdXN0ZXJMYXllckRpbWVuc2lvbnNcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBjcHVBZ2dyZWdhdG9yLFxuICAgICAgYWdncmVnYXRvclN0YXRlOiBjcHVBZ2dyZWdhdG9yLnN0YXRlXG4gICAgfTtcbiAgICBjb25zdCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5nZXRBdHRyaWJ1dGVNYW5hZ2VyKCk7XG4gICAgYXR0cmlidXRlTWFuYWdlci5hZGQoe1xuICAgICAgcG9zaXRpb25zOiB7c2l6ZTogMywgYWNjZXNzb3I6ICdnZXRQb3NpdGlvbid9XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVTdGF0ZSh7b2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFnc30pIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIC8vIG1ha2UgYSBjb3B5IG9mIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiBjcHVBZ2dyZWdhdG9yIGZvciB0ZXN0aW5nXG4gICAgICBhZ2dyZWdhdG9yU3RhdGU6IHRoaXMuc3RhdGUuY3B1QWdncmVnYXRvci51cGRhdGVTdGF0ZShcbiAgICAgICAge29sZFByb3BzLCBwcm9wcywgY2hhbmdlRmxhZ3N9LFxuICAgICAgICB7XG4gICAgICAgICAgdmlld3BvcnQ6IHRoaXMuY29udGV4dC52aWV3cG9ydCxcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB0aGlzLmdldEF0dHJpYnV0ZXMoKSxcbiAgICAgICAgICBudW1JbnN0YW5jZXM6IHRoaXMuZ2V0TnVtSW5zdGFuY2VzKHByb3BzKVxuICAgICAgICB9XG4gICAgICApXG4gICAgfSk7XG4gIH1cblxuICBnZXRQaWNraW5nSW5mbyh7aW5mb30pIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5jcHVBZ2dyZWdhdG9yLmdldFBpY2tpbmdJbmZvKHtpbmZvfSwgdGhpcy5wcm9wcyk7XG4gIH1cblxuICBfZ2V0U3VibGF5ZXJVcGRhdGVUcmlnZ2VycygpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5jcHVBZ2dyZWdhdG9yLmdldFVwZGF0ZVRyaWdnZXJzKHRoaXMucHJvcHMpO1xuICB9XG5cbiAgX2dldFN1YkxheWVyQWNjZXNzb3JzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBnZXRSYWRpdXM6IHRoaXMuc3RhdGUuY3B1QWdncmVnYXRvci5nZXRBY2Nlc3NvcigncmFkaXVzJywgdGhpcy5wcm9wcyksXG4gICAgICBnZXRGaWxsQ29sb3I6IHRoaXMuc3RhdGUuY3B1QWdncmVnYXRvci5nZXRBY2Nlc3NvcignZmlsbENvbG9yJywgdGhpcy5wcm9wcylcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyTGF5ZXJzKCkge1xuICAgIC8vIGZvciBzdWJjbGFzc2luZywgb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gcmV0dXJuXG4gICAgLy8gY3VzdG9taXplZCBzdWIgbGF5ZXIgcHJvcHNcbiAgICBjb25zdCB7aWQsIHJhZGl1c1NjYWxlfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge2NwdUFnZ3JlZ2F0b3J9ID0gdGhpcy5zdGF0ZTtcblxuICAgIC8vIGJhc2UgbGF5ZXIgcHJvcHNcbiAgICBjb25zdCB7dmlzaWJsZSwgb3BhY2l0eSwgcGlja2FibGUsIGF1dG9IaWdobGlnaHQsIGhpZ2hsaWdodENvbG9yfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgdXBkYXRlVHJpZ2dlcnMgPSB0aGlzLl9nZXRTdWJsYXllclVwZGF0ZVRyaWdnZXJzKCk7XG4gICAgY29uc3QgYWNjZXNzb3JzID0gdGhpcy5fZ2V0U3ViTGF5ZXJBY2Nlc3NvcnMoKTtcblxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBjb25zdCBkaXN0YW5jZVNjYWxlID0gZ2V0RGlzdGFuY2VTY2FsZXModGhpcy5jb250ZXh0LnZpZXdwb3J0KTtcbiAgICBjb25zdCBtZXRlcnNQZXJQaXhlbCA9IGRpc3RhbmNlU2NhbGUubWV0ZXJzUGVyUGl4ZWxbMF07XG5cbiAgICAvLyByZXR1cm4gcHJvcHMgdG8gdGhlIHN1YmxheWVyIGNvbnN0cnVjdG9yXG4gICAgcmV0dXJuIG5ldyBTY2F0dGVycGxvdExheWVyKHtcbiAgICAgIGlkOiBgJHtpZH0tY2x1c3RlcmAsXG4gICAgICBkYXRhOiBjcHVBZ2dyZWdhdG9yLnN0YXRlLmxheWVyRGF0YS5kYXRhLFxuICAgICAgcmFkaXVzU2NhbGU6IG1ldGVyc1BlclBpeGVsICogcmFkaXVzU2NhbGUsXG4gICAgICB2aXNpYmxlLFxuICAgICAgb3BhY2l0eSxcbiAgICAgIHBpY2thYmxlLFxuICAgICAgYXV0b0hpZ2hsaWdodCxcbiAgICAgIGhpZ2hsaWdodENvbG9yLFxuICAgICAgdXBkYXRlVHJpZ2dlcnMsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIGRlcHRoTWFzazogZmFsc2VcbiAgICAgIH0sXG4gICAgICAuLi5hY2Nlc3NvcnNcbiAgICB9KTtcbiAgfVxufVxuXG5DbHVzdGVyTGF5ZXIubGF5ZXJOYW1lID0gJ0NsdXN0ZXJMYXllcic7XG5DbHVzdGVyTGF5ZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGtCQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxZQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFDLHVCQUFBLENBQUFMLE9BQUE7QUFNQSxJQUFBTSx3QkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBRUEsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsYUFBQSxHQUFBSix1QkFBQSxDQUFBTCxPQUFBO0FBQXdFLFNBQUFVLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBTix3QkFBQU0sQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxD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
|
307
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGF5ZXJzIiwicmVxdWlyZSIsIl9hZ2dyZWdhdGlvbkxheWVycyIsIl9nZW9WaWV3cG9ydCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY3B1QWdncmVnYXRvciIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX3ZpZXdwb3J0TWVyY2F0b3JQcm9qZWN0IiwiX2QzQXJyYXkiLCJfY29uc3RhbnRzIiwiX2NsdXN0ZXJVdGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiZGVmYXVsdFJhZGl1cyIsIkxBWUVSX1ZJU19DT05GSUdTIiwiY2x1c3RlclJhZGl1cyIsImRlZmF1bHRWYWx1ZSIsImRlZmF1bHRSYWRpdXNSYW5nZSIsImNsdXN0ZXJSYWRpdXNSYW5nZSIsImRlZmF1bHRHZXRDb2xvclZhbHVlIiwicG9pbnRzIiwiZGVmYXVsdEdldFJhZGl1c1ZhbHVlIiwiY2VsbCIsImZpbHRlcmVkUG9pbnRzIiwicHJvY2Vzc0dlb0pTT04iLCJzdGVwIiwicHJvcHMiLCJhZ2dyZWdhdGlvbiIsIl9yZWYiLCJ2aWV3cG9ydCIsImRhdGEiLCJnZXRQb3NpdGlvbiIsImZpbHRlckRhdGEiLCJnZW9KU09OIiwiZ2V0R2VvSlNPTiIsImNsdXN0ZXJCdWlsZGVyIiwiQ2x1c3RlckJ1aWxkZXIiLCJzZXRTdGF0ZSIsImdldENsdXN0ZXJzIiwiX3JlZjIiLCJfdGhpcyRzdGF0ZSIsInN0YXRlIiwiem9vbSIsIndpZHRoIiwiaGVpZ2h0IiwibG9uZ2l0dWRlIiwibGF0aXR1ZGUiLCJiYm94IiwiZ2VvVmlld3BvcnQiLCJib3VuZHMiLCJjbHVzdGVycyIsImNsdXN0ZXJzQXRab29tIiwibGF5ZXJEYXRhIiwiZ2V0U3ViTGF5ZXJSYWRpdXMiLCJkaW1lbnNpb25TdGF0ZSIsImRpbWVuc2lvbiIsImxheWVyUHJvcHMiLCJnZXRSYWRpdXNWYWx1ZSIsInNjYWxlRnVuYyIsImNsdXN0ZXJBZ2dyZWdhdGlvbiIsImV4cG9ydHMiLCJrZXkiLCJ1cGRhdGVTdGVwcyIsInRyaWdnZXJzIiwicG9zaXRpb24iLCJwcm9wIiwidXBkYXRlVHJpZ2dlciIsInVwZGF0ZXIiLCJnZXRSYWRpdXNWYWx1ZURvbWFpbiIsImRpbWVuc2lvblVwZGF0ZXIiLCJ2YWx1ZURvbWFpbiIsIm1heCIsIl9zZXREaW1lbnNpb25TdGF0ZSIsImNsdXN0ZXJMYXllckRpbWVuc2lvbnMiLCJkZWZhdWx0Q29sb3JEaW1lbnNpb24iLCJhY2Nlc3NvciIsIm51bGxWYWx1ZSIsInZhbHVlIiwiZG9tYWluIiwicmFuZ2UiLCJzY2FsZVR5cGUiLCJnZXREaW1lbnNpb25TY2FsZSIsImdldFN1YkxheWVyQWNjZXNzb3IiLCJnZXRQaWNraW5nSW5mbyIsInJhZGl1c1ZhbHVlIiwic2NhbGVkUmFkaXVzVmFsdWUiLCJkZWZhdWx0UHJvcHMiLCJjb2xvckRvbWFpbiIsImNvbG9yUmFuZ2UiLCJERUZBVUxUX0NPTE9SX1JBTkdFIiwiY29sb3JTY2FsZVR5cGUiLCJTQ0FMRV9UWVBFUyIsInF1YW50aXplIiwicmFkaXVzU2NhbGVUeXBlIiwic3FydCIsInJhZGl1c1JhbmdlIiwidHlwZSIsIngiLCJnZXRDb2xvclZhbHVlIiwiQ2x1c3RlckxheWVyIiwiX0FnZ3JlZ2F0aW9uTGF5ZXIiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJpbml0aWFsaXplU3RhdGUiLCJjcHVBZ2dyZWdhdG9yIiwiQ1BVQWdncmVnYXRvciIsImRpbWVuc2lvbnMiLCJhZ2dyZWdhdG9yU3RhdGUiLCJhdHRyaWJ1dGVNYW5hZ2VyIiwiZ2V0QXR0cmlidXRlTWFuYWdlciIsImFkZCIsInBvc2l0aW9ucyIsInNpemUiLCJ1cGRhdGVTdGF0ZSIsIl9yZWYzIiwib2xkUHJvcHMiLCJjaGFuZ2VGbGFncyIsImNvbnRleHQiLCJhdHRyaWJ1dGVzIiwiZ2V0QXR0cmlidXRlcyIsIm51bUluc3RhbmNlcyIsImdldE51bUluc3RhbmNlcyIsIl9yZWY0IiwiaW5mbyIsIm9iaiIsIm9iamVjdCIsImRpc3RhbmNlU2NhbGUiLCJnZXREaXN0YW5jZVNjYWxlcyIsIm1ldGVyc1BlclBpeGVsIiwiX2dldFN1YmxheWVyVXBkYXRlVHJpZ2dlcnMiLCJnZXRVcGRhdGVUcmlnZ2VycyIsIl9nZXRTdWJMYXllckFjY2Vzc29ycyIsImdldFJhZGl1cyIsImdldEFjY2Vzc29yIiwiZ2V0RmlsbENvbG9yIiwicmVuZGVyTGF5ZXJzIiwiX3RoaXMkcHJvcHMiLCJpZCIsInJhZGl1c1NjYWxlIiwiX3RoaXMkcHJvcHMyIiwidmlzaWJsZSIsIm9wYWNpdHkiLCJwaWNrYWJsZSIsImF1dG9IaWdobGlnaHQiLCJoaWdobGlnaHRDb2xvciIsInVwZGF0ZVRyaWdnZXJzIiwiYWNjZXNzb3JzIiwiU2NhdHRlcnBsb3RMYXllciIsImNvbmNhdCIsInBhcmFtZXRlcnMiLCJkZXB0aE1hc2siLCJBZ2dyZWdhdGlvbkxheWVyIiwibGF5ZXJOYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsdXN0ZXItbGF5ZXIvY2x1c3Rlci1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1NjYXR0ZXJwbG90TGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQge19BZ2dyZWdhdGlvbkxheWVyIGFzIEFnZ3JlZ2F0aW9uTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2FnZ3JlZ2F0aW9uLWxheWVycyc7XG5cbmltcG9ydCBnZW9WaWV3cG9ydCBmcm9tICdAbWFwYm94L2dlby12aWV3cG9ydCc7XG5pbXBvcnQgQ1BVQWdncmVnYXRvciwge1xuICBBZ2dyZWdhdGlvblR5cGUsXG4gIGRlZmF1bHRDb2xvckRpbWVuc2lvbixcbiAgRGltZW5zaW9uVHlwZSxcbiAgZ2V0RGltZW5zaW9uU2NhbGVcbn0gZnJvbSAnLi4vbGF5ZXItdXRpbHMvY3B1LWFnZ3JlZ2F0b3InO1xuaW1wb3J0IHtnZXREaXN0YW5jZVNjYWxlc30gZnJvbSAndmlld3BvcnQtbWVyY2F0b3ItcHJvamVjdCc7XG5pbXBvcnQge21heH0gZnJvbSAnZDMtYXJyYXknO1xuXG5pbXBvcnQge1NDQUxFX1RZUEVTLCBERUZBVUxUX0NPTE9SX1JBTkdFLCBMQVlFUl9WSVNfQ09ORklHU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IENsdXN0ZXJCdWlsZGVyLCB7Z2V0R2VvSlNPTn0gZnJvbSAnLi4vbGF5ZXItdXRpbHMvY2x1c3Rlci11dGlscyc7XG5pbXBvcnQge1JHQkFDb2xvcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0FnZ3JlZ2F0aW9uTGF5ZXJQcm9wc30gZnJvbSAnQGRlY2suZ2wvYWdncmVnYXRpb24tbGF5ZXJzL2FnZ3JlZ2F0aW9uLWxheWVyJztcblxuY29uc3QgZGVmYXVsdFJhZGl1cyA9IExBWUVSX1ZJU19DT05GSUdTLmNsdXN0ZXJSYWRpdXMuZGVmYXVsdFZhbHVlO1xuY29uc3QgZGVmYXVsdFJhZGl1c1JhbmdlID0gTEFZRVJfVklTX0NPTkZJR1MuY2x1c3RlclJhZGl1c1JhbmdlLmRlZmF1bHRWYWx1ZTtcblxuY29uc3QgZGVmYXVsdEdldENvbG9yVmFsdWUgPSBwb2ludHMgPT4gcG9pbnRzLmxlbmd0aDtcbmNvbnN0IGRlZmF1bHRHZXRSYWRpdXNWYWx1ZSA9IGNlbGwgPT5cbiAgY2VsbC5maWx0ZXJlZFBvaW50cyA/IGNlbGwuZmlsdGVyZWRQb2ludHMubGVuZ3RoIDogY2VsbC5wb2ludHMubGVuZ3RoO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5mdW5jdGlvbiBwcm9jZXNzR2VvSlNPTih0aGlzOiBDUFVBZ2dyZWdhdG9yLCBzdGVwLCBwcm9wcywgYWdncmVnYXRpb24sIHt2aWV3cG9ydH0pIHtcbiAgY29uc3Qge2RhdGEsIGdldFBvc2l0aW9uLCBmaWx0ZXJEYXRhfSA9IHByb3BzO1xuICBjb25zdCBnZW9KU09OID0gZ2V0R2VvSlNPTihkYXRhLCBnZXRQb3NpdGlvbiwgZmlsdGVyRGF0YSk7XG4gIGNvbnN0IGNsdXN0ZXJCdWlsZGVyID0gbmV3IENsdXN0ZXJCdWlsZGVyKCk7XG5cbiAgdGhpcy5zZXRTdGF0ZSh7Z2VvSlNPTiwgY2x1c3RlckJ1aWxkZXJ9KTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuZnVuY3Rpb24gZ2V0Q2x1c3RlcnModGhpczogQ1BVQWdncmVnYXRvciwgc3RlcCwgcHJvcHMsIGFnZ3JlZ2F0aW9uLCB7dmlld3BvcnR9KSB7XG4gIGNvbnN0IHtnZW9KU09OLCBjbHVzdGVyQnVpbGRlcn0gPSB0aGlzLnN0YXRlO1xuICBjb25zdCB7Y2x1c3RlclJhZGl1cywgem9vbSwgd2lkdGgsIGhlaWdodH0gPSBwcm9wcztcbiAgY29uc3Qge2xvbmdpdHVkZSwgbGF0aXR1ZGV9ID0gdmlld3BvcnQ7XG5cbiAgLy8gem9vbSBuZWVkcyB0byBiZSBhbiBpbnRlZ2VyIGZvciB0aGUgZGlmZmVyZW50IG1hcCB1dGlscy4gQWxzbyBoZWxwcyB3aXRoIGNhY2hlIGtleS5cbiAgY29uc3QgYmJveCA9IGdlb1ZpZXdwb3J0LmJvdW5kcyhbbG9uZ2l0dWRlLCBsYXRpdHVkZV0sIHpvb20sIFt3aWR0aCwgaGVpZ2h0XSk7XG4gIGNvbnN0IGNsdXN0ZXJzID0gY2x1c3RlckJ1aWxkZXIuY2x1c3RlcnNBdFpvb20oe2Jib3gsIGNsdXN0ZXJSYWRpdXMsIGdlb0pTT04sIHpvb219KTtcblxuICB0aGlzLnNldFN0YXRlKHtcbiAgICBsYXllckRhdGE6IHtkYXRhOiBjbHVzdGVyc31cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFN1YkxheWVyUmFkaXVzKGRpbWVuc2lvblN0YXRlLCBkaW1lbnNpb24sIGxheWVyUHJvcHMpIHtcbiAgcmV0dXJuIGNlbGwgPT4ge1xuICAgIGNvbnN0IHtnZXRSYWRpdXNWYWx1ZX0gPSBsYXllclByb3BzO1xuICAgIGNvbnN0IHtzY2FsZUZ1bmN9ID0gZGltZW5zaW9uU3RhdGU7XG4gICAgcmV0dXJuIHNjYWxlRnVuYyhnZXRSYWRpdXNWYWx1ZShjZWxsKSk7XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBjbHVzdGVyQWdncmVnYXRpb246IEFnZ3JlZ2F0aW9uVHlwZSA9IHtcbiAga2V5OiAncG9zaXRpb24nLFxuICB1cGRhdGVTdGVwczogW1xuICAgIHtcbiAgICAgIGtleTogJ2dlb2pzb24nLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICBwcm9wOiAnZ2V0UG9zaXRpb24nLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXI6ICdnZXRQb3NpdGlvbidcbiAgICAgICAgfSxcbiAgICAgICAgZmlsdGVyRGF0YToge1xuICAgICAgICAgIHByb3A6ICdmaWx0ZXJEYXRhJyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnZmlsdGVyRGF0YSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IHByb2Nlc3NHZW9KU09OXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdjbHVzdGVyaW5nJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIGNsdXN0ZXJSYWRpdXM6IHtcbiAgICAgICAgICBwcm9wOiAnY2x1c3RlclJhZGl1cydcbiAgICAgICAgfSxcbiAgICAgICAgem9vbToge1xuICAgICAgICAgIHByb3A6ICd6b29tJ1xuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgIHByb3A6ICd3aWR0aCdcbiAgICAgICAgfSxcbiAgICAgICAgaGVpZ2h0OiB7XG4gICAgICAgICAgcHJvcDogJ2hlaWdodCdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IGdldENsdXN0ZXJzXG4gICAgfVxuICBdXG59O1xuXG5mdW5jdGlvbiBnZXRSYWRpdXNWYWx1ZURvbWFpbih0aGlzOiBDUFVBZ2dyZWdhdG9yLCBzdGVwLCBwcm9wcywgZGltZW5zaW9uVXBkYXRlcikge1xuICBjb25zdCB7a2V5fSA9IGRpbWVuc2lvblVwZGF0ZXI7XG4gIGNvbnN0IHtnZXRSYWRpdXNWYWx1ZX0gPSBwcm9wcztcbiAgY29uc3Qge2xheWVyRGF0YX0gPSB0aGlzLnN0YXRlO1xuXG4gIGNvbnN0IHZhbHVlRG9tYWluID0gWzAsIG1heChsYXllckRhdGEuZGF0YSwgZ2V0UmFkaXVzVmFsdWUpXTtcbiAgdGhpcy5fc2V0RGltZW5zaW9uU3RhdGUoa2V5LCB7dmFsdWVEb21haW59KTtcbn1cblxuY29uc3QgY2x1c3RlckxheWVyRGltZW5zaW9uczogW0RpbWVuc2lvblR5cGU8UkdCQUNvbG9yPiwgRGltZW5zaW9uVHlwZTxudW1iZXI+XSA9IFtcbiAgZGVmYXVsdENvbG9yRGltZW5zaW9uLFxuICB7XG4gICAga2V5OiAncmFkaXVzJyxcbiAgICBhY2Nlc3NvcjogJ2dldFJhZGl1cycsXG4gICAgbnVsbFZhbHVlOiAwLFxuICAgIHVwZGF0ZVN0ZXBzOiBbXG4gICAgICB7XG4gICAgICAgIGtleTogJ2dldERvbWFpbicsXG4gICAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIHByb3A6ICdnZXRSYWRpdXNWYWx1ZScsXG4gICAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnZ2V0UmFkaXVzVmFsdWUnXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVyOiBnZXRSYWRpdXNWYWx1ZURvbWFpblxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnZ2V0U2NhbGVGdW5jJyxcbiAgICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgICBkb21haW46IHtwcm9wOiAncmFkaXVzRG9tYWluJ30sXG4gICAgICAgICAgcmFuZ2U6IHtwcm9wOiAncmFkaXVzUmFuZ2UnfSxcbiAgICAgICAgICBzY2FsZVR5cGU6IHtwcm9wOiAncmFkaXVzU2NhbGVUeXBlJ31cbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlcjogZ2V0RGltZW5zaW9uU2NhbGVcbiAgICAgIH1cbiAgICBdLFxuICAgIGdldFN1YkxheWVyQWNjZXNzb3I6IGdldFN1YkxheWVyUmFkaXVzLFxuICAgIGdldFBpY2tpbmdJbmZvOiAoZGltZW5zaW9uU3RhdGUsIGNlbGwsIGxheWVyUHJvcHMpID0+IHtcbiAgICAgIGNvbnN0IHJhZGl1c1ZhbHVlID0gbGF5ZXJQcm9wcy5nZXRSYWRpdXNWYWx1ZShjZWxsKTtcbiAgICAgIGNvbnN0IHtzY2FsZUZ1bmN9ID0gZGltZW5zaW9uU3RhdGU7XG4gICAgICBjb25zdCBzY2FsZWRSYWRpdXNWYWx1ZSA9IHNjYWxlRnVuYyA/IHNjYWxlRnVuYyhyYWRpdXNWYWx1ZSkgOiByYWRpdXNWYWx1ZTtcblxuICAgICAgcmV0dXJuIHtyYWRpdXNWYWx1ZSwgc2NhbGVkUmFkaXVzVmFsdWV9O1xuICAgIH1cbiAgfVxuXTtcblxuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBjbHVzdGVyUmFkaXVzOiBkZWZhdWx0UmFkaXVzLFxuICBjb2xvckRvbWFpbjogbnVsbCxcbiAgY29sb3JSYW5nZTogREVGQVVMVF9DT0xPUl9SQU5HRSxcbiAgY29sb3JTY2FsZVR5cGU6IFNDQUxFX1RZUEVTLnF1YW50aXplLFxuICByYWRpdXNTY2FsZVR5cGU6IFNDQUxFX1RZUEVTLnNxcnQsXG4gIHJhZGl1c1JhbmdlOiBkZWZhdWx0UmFkaXVzUmFuZ2UsXG4gIGdldFBvc2l0aW9uOiB7dHlwZTogJ2FjY2Vzc29yJywgdmFsdWU6IHggPT4geC5wb3NpdGlvbn0sXG4gIGdldENvbG9yVmFsdWU6IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogZGVmYXVsdEdldENvbG9yVmFsdWV9LFxuICBnZXRSYWRpdXNWYWx1ZToge3R5cGU6ICdhY2Nlc3NvcicsIHZhbHVlOiBkZWZhdWx0R2V0UmFkaXVzVmFsdWV9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbHVzdGVyTGF5ZXIgZXh0ZW5kcyBBZ2dyZWdhdGlvbkxheWVyPFxuICBhbnksXG4gIEFnZ3JlZ2F0aW9uTGF5ZXJQcm9wczxhbnk+ICYge3JhZGl1c1NjYWxlOiBudW1iZXJ9XG4+IHtcbiAgaW5pdGlhbGl6ZVN0YXRlKCkge1xuICAgIGNvbnN0IGNwdUFnZ3JlZ2F0b3IgPSBuZXcgQ1BVQWdncmVnYXRvcih7XG4gICAgICBhZ2dyZWdhdGlvbjogY2x1c3RlckFnZ3JlZ2F0aW9uLFxuICAgICAgZGltZW5zaW9uczogY2x1c3RlckxheWVyRGltZW5zaW9uc1xuICAgIH0pO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGNwdUFnZ3JlZ2F0b3IsXG4gICAgICBhZ2dyZWdhdG9yU3RhdGU6IGNwdUFnZ3JlZ2F0b3Iuc3RhdGVcbiAgICB9O1xuICAgIGNvbnN0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmdldEF0dHJpYnV0ZU1hbmFnZXIoKTtcbiAgICBhdHRyaWJ1dGVNYW5hZ2VyLmFkZCh7XG4gICAgICBwb3NpdGlvbnM6IHtzaXplOiAzLCBhY2Nlc3NvcjogJ2dldFBvc2l0aW9uJ31cbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVN0YXRlKHtvbGRQcm9wcywgcHJvcHMsIGNoYW5nZUZsYWdzfSkge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgLy8gbWFrZSBhIGNvcHkgb2YgdGhlIGludGVybmFsIHN0YXRlIG9mIGNwdUFnZ3JlZ2F0b3IgZm9yIHRlc3RpbmdcbiAgICAgIGFnZ3JlZ2F0b3JTdGF0ZTogdGhpcy5zdGF0ZS5jcHVBZ2dyZWdhdG9yLnVwZGF0ZVN0YXRlKFxuICAgICAgICB7b2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFnc30sXG4gICAgICAgIHtcbiAgICAgICAgICB2aWV3cG9ydDogdGhpcy5jb250ZXh0LnZpZXdwb3J0LFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IHRoaXMuZ2V0QXR0cmlidXRlcygpLFxuICAgICAgICAgIG51bUluc3RhbmNlczogdGhpcy5nZXROdW1JbnN0YW5jZXMocHJvcHMpXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9KTtcbiAgfVxuXG4gIGdldFBpY2tpbmdJbmZvKHtpbmZvfSkge1xuICAgIGNvbnN0IG9iaiA9IHRoaXMuc3RhdGUuY3B1QWdncmVnYXRvci5nZXRQaWNraW5nSW5mbyh7aW5mb30sIHRoaXMucHJvcHMpO1xuICAgIGlmIChvYmo/Lm9iamVjdCkge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgY29uc3QgZGlzdGFuY2VTY2FsZSA9IGdldERpc3RhbmNlU2NhbGVzKHRoaXMuY29udGV4dC52aWV3cG9ydCk7XG4gICAgICBjb25zdCBtZXRlcnNQZXJQaXhlbCA9IGRpc3RhbmNlU2NhbGUubWV0ZXJzUGVyUGl4ZWxbMF07XG4gICAgICBvYmoub2JqZWN0LnNjYWxlZFJhZGl1c1ZhbHVlID0gb2JqLm9iamVjdC5zY2FsZWRSYWRpdXNWYWx1ZSAqIG1ldGVyc1BlclBpeGVsO1xuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBfZ2V0U3VibGF5ZXJVcGRhdGVUcmlnZ2VycygpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5jcHVBZ2dyZWdhdG9yLmdldFVwZGF0ZVRyaWdnZXJzKHRoaXMucHJvcHMpO1xuICB9XG5cbiAgX2dldFN1YkxheWVyQWNjZXNzb3JzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBnZXRSYWRpdXM6IHRoaXMuc3RhdGUuY3B1QWdncmVnYXRvci5nZXRBY2Nlc3NvcigncmFkaXVzJywgdGhpcy5wcm9wcyksXG4gICAgICBnZXRGaWxsQ29sb3I6IHRoaXMuc3RhdGUuY3B1QWdncmVnYXRvci5nZXRBY2Nlc3NvcignZmlsbENvbG9yJywgdGhpcy5wcm9wcylcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyTGF5ZXJzKCkge1xuICAgIC8vIGZvciBzdWJjbGFzc2luZywgb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gcmV0dXJuXG4gICAgLy8gY3VzdG9taXplZCBzdWIgbGF5ZXIgcHJvcHNcbiAgICBjb25zdCB7aWQsIHJhZGl1c1NjYWxlfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge2NwdUFnZ3JlZ2F0b3J9ID0gdGhpcy5zdGF0ZTtcblxuICAgIC8vIGJhc2UgbGF5ZXIgcHJvcHNcbiAgICBjb25zdCB7dmlzaWJsZSwgb3BhY2l0eSwgcGlja2FibGUsIGF1dG9IaWdobGlnaHQsIGhpZ2hsaWdodENvbG9yfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgdXBkYXRlVHJpZ2dlcnMgPSB0aGlzLl9nZXRTdWJsYXllclVwZGF0ZVRyaWdnZXJzKCk7XG4gICAgY29uc3QgYWNjZXNzb3JzID0gdGhpcy5fZ2V0U3ViTGF5ZXJBY2Nlc3NvcnMoKTtcblxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBjb25zdCBkaXN0YW5jZVNjYWxlID0gZ2V0RGlzdGFuY2VTY2FsZXModGhpcy5jb250ZXh0LnZpZXdwb3J0KTtcbiAgICBjb25zdCBtZXRlcnNQZXJQaXhlbCA9IGRpc3RhbmNlU2NhbGUubWV0ZXJzUGVyUGl4ZWxbMF07XG5cbiAgICAvLyByZXR1cm4gcHJvcHMgdG8gdGhlIHN1YmxheWVyIGNvbnN0cnVjdG9yXG4gICAgcmV0dXJuIG5ldyBTY2F0dGVycGxvdExheWVyKHtcbiAgICAgIGlkOiBgJHtpZH0tY2x1c3RlcmAsXG4gICAgICBkYXRhOiBjcHVBZ2dyZWdhdG9yLnN0YXRlLmxheWVyRGF0YS5kYXRhLFxuICAgICAgcmFkaXVzU2NhbGU6IG1ldGVyc1BlclBpeGVsICogcmFkaXVzU2NhbGUsXG4gICAgICB2aXNpYmxlLFxuICAgICAgb3BhY2l0eSxcbiAgICAgIHBpY2thYmxlLFxuICAgICAgYXV0b0hpZ2hsaWdodCxcbiAgICAgIGhpZ2hsaWdodENvbG9yLFxuICAgICAgdXBkYXRlVHJpZ2dlcnMsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIGRlcHRoTWFzazogZmFsc2VcbiAgICAgIH0sXG4gICAgICAuLi5hY2Nlc3NvcnNcbiAgICB9KTtcbiAgfVxufVxuXG5DbHVzdGVyTGF5ZXIubGF5ZXJOYW1lID0gJ0NsdXN0ZXJMYXllcic7XG5DbHVzdGVyTGF5ZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGtCQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxZQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFDLHVCQUFBLENBQUFMLE9BQUE7QUFNQSxJQUFBTSx3QkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBRUEsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsYUFBQSxHQUFBSix1QkFBQSxDQUFBTCxPQUFBO0FBQXdFLFNBQUFVLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1C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
|
package/dist/index.d.ts
CHANGED
@@ -9,6 +9,7 @@ export { default as FilterArrowExtension } from './deckgl-extensions/filter-arro
|
|
9
9
|
export { default as RasterLayer } from './raster/raster-layer/raster-layer';
|
10
10
|
export { default as RasterMeshLayer } from './raster/raster-mesh-layer/raster-mesh-layer';
|
11
11
|
export * as RasterWebGL from './raster/webgl';
|
12
|
+
export { default as WMSLayer } from './wms/wms-layer';
|
12
13
|
export * from './layer-utils/shader-utils';
|
13
14
|
export * from './3d-building-layer/types';
|
14
15
|
export * from './3d-building-layer/3d-building-utils';
|
package/dist/index.js
CHANGED
@@ -16,7 +16,8 @@ var _exportNames = {
|
|
16
16
|
FilterArrowExtension: true,
|
17
17
|
RasterLayer: true,
|
18
18
|
RasterMeshLayer: true,
|
19
|
-
RasterWebGL: true
|
19
|
+
RasterWebGL: true,
|
20
|
+
WMSLayer: true
|
20
21
|
};
|
21
22
|
Object.defineProperty(exports, "DeckGLClusterLayer", {
|
22
23
|
enumerable: true,
|
@@ -79,6 +80,12 @@ Object.defineProperty(exports, "ThreeDBuildingLayer", {
|
|
79
80
|
return _dBuildingLayer["default"];
|
80
81
|
}
|
81
82
|
});
|
83
|
+
Object.defineProperty(exports, "WMSLayer", {
|
84
|
+
enumerable: true,
|
85
|
+
get: function get() {
|
86
|
+
return _wmsLayer["default"];
|
87
|
+
}
|
88
|
+
});
|
82
89
|
var _dBuildingLayer = _interopRequireDefault(require("./3d-building-layer/3d-building-layer"));
|
83
90
|
var _clusterLayer = _interopRequireDefault(require("./cluster-layer/cluster-layer"));
|
84
91
|
var _enhancedColumnLayer = _interopRequireDefault(require("./column-layer/enhanced-column-layer"));
|
@@ -91,6 +98,7 @@ var _rasterLayer = _interopRequireDefault(require("./raster/raster-layer/raster-
|
|
91
98
|
var _rasterMeshLayer = _interopRequireDefault(require("./raster/raster-mesh-layer/raster-mesh-layer"));
|
92
99
|
var _RasterWebGL = _interopRequireWildcard(require("./raster/webgl"));
|
93
100
|
exports.RasterWebGL = _RasterWebGL;
|
101
|
+
var _wmsLayer = _interopRequireDefault(require("./wms/wms-layer"));
|
94
102
|
var _shaderUtils = require("./layer-utils/shader-utils");
|
95
103
|
Object.keys(_shaderUtils).forEach(function (key) {
|
96
104
|
if (key === "default" || key === "__esModule") return;
|
@@ -129,4 +137,4 @@ Object.keys(_dBuildingUtils).forEach(function (key) {
|
|
129
137
|
});
|
130
138
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
131
139
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
132
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
140
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZEJ1aWxkaW5nTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jbHVzdGVyTGF5ZXIiLCJfZW5oYW5jZWRDb2x1bW5MYXllciIsIl9lbmhhbmNlZENwdUdyaWRMYXllciIsIl9lbmhhbmNlZEhleGFnb25MYXllciIsIl9saW5lTGF5ZXIiLCJfc3ZnSWNvbkxheWVyIiwiX2ZpbHRlckFycm93TGF5ZXIiLCJfcmFzdGVyTGF5ZXIiLCJfcmFzdGVyTWVzaExheWVyIiwiX1Jhc3RlcldlYkdMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJleHBvcnRzIiwiUmFzdGVyV2ViR0wiLCJfd21zTGF5ZXIiLCJfc2hhZGVyVXRpbHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9leHBvcnROYW1lcyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIl90eXBlcyIsIl9kQnVpbGRpbmdVdGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsIm4iLCJfX3Byb3RvX18iLCJhIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImkiLCJzZXQiXSwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuZXhwb3J0IHtkZWZhdWx0IGFzIFRocmVlREJ1aWxkaW5nTGF5ZXJ9IGZyb20gJy4vM2QtYnVpbGRpbmctbGF5ZXIvM2QtYnVpbGRpbmctbGF5ZXInO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgRGVja0dMQ2x1c3RlckxheWVyfSBmcm9tICcuL2NsdXN0ZXItbGF5ZXIvY2x1c3Rlci1sYXllcic7XG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBFbmhhbmNlZENvbHVtbkxheWVyfSBmcm9tICcuL2NvbHVtbi1sYXllci9lbmhhbmNlZC1jb2x1bW4tbGF5ZXInO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgRW5oYW5jZWRHcmlkTGF5ZXJ9IGZyb20gJy4vZ3JpZC1sYXllci9lbmhhbmNlZC1jcHUtZ3JpZC1sYXllcic7XG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBFbmhhbmNlZEhleGFnb25MYXllcn0gZnJvbSAnLi9oZXhhZ29uLWxheWVyL2VuaGFuY2VkLWhleGFnb24tbGF5ZXInO1xuZXhwb3J0IHtkZWZhdWx0IGFzIEVuaGFuY2VkTGluZUxheWVyfSBmcm9tICcuL2xpbmUtbGF5ZXIvbGluZS1sYXllcic7XG5leHBvcnQge2RlZmF1bHQgYXMgU3ZnSWNvbkxheWVyfSBmcm9tICcuL3N2Zy1pY29uLWxheWVyL3N2Zy1pY29uLWxheWVyJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBGaWx0ZXJBcnJvd0V4dGVuc2lvbn0gZnJvbSAnLi9kZWNrZ2wtZXh0ZW5zaW9ucy9maWx0ZXItYXJyb3ctbGF5ZXInO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgUmFzdGVyTGF5ZXJ9IGZyb20gJy4vcmFzdGVyL3Jhc3Rlci1sYXllci9yYXN0ZXItbGF5ZXInO1xuZXhwb3J0IHtkZWZhdWx0IGFzIFJhc3Rlck1lc2hMYXllcn0gZnJvbSAnLi9yYXN0ZXIvcmFzdGVyLW1lc2gtbGF5ZXIvcmFzdGVyLW1lc2gtbGF5ZXInO1xuZXhwb3J0ICogYXMgUmFzdGVyV2ViR0wgZnJvbSAnLi9yYXN0ZXIvd2ViZ2wnO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgV01TTGF5ZXJ9IGZyb20gJy4vd21zL3dtcy1sYXllcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGF5ZXItdXRpbHMvc2hhZGVyLXV0aWxzJztcblxuZXhwb3J0ICogZnJvbSAnLi8zZC1idWlsZGluZy1sYXllci90eXBlcyc7XG5leHBvcnQgKiBm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
|
@@ -114,6 +114,7 @@ function getDimensionScale(step, props, dimensionUpdater) {
|
|
114
114
|
var dimensionFixed = Boolean(fixed && props[fixed.prop]);
|
115
115
|
var scaleFunctor = getScaleFunctor(scaleType && props[scaleType.prop])();
|
116
116
|
var scaleFunc = scaleFunctor.domain(dimensionDomain).range(dimensionFixed ? dimensionDomain : dimensionRange);
|
117
|
+
scaleFunc.scaleType = props.colorScaleType;
|
117
118
|
if ((0, _typeof2["default"])(onSet) === 'object' && typeof props[onSet.props] === 'function') {
|
118
119
|
var sortedBins = this.state.dimensions[key].sortedBins;
|
119
120
|
props[onSet.props]({
|
@@ -589,4 +590,4 @@ var CPUAggregator = exports["default"] = /*#__PURE__*/function () {
|
|
589
590
|
}();
|
590
591
|
(0, _defineProperty2["default"])(CPUAggregator, "getDimensionScale", void 0);
|
591
592
|
CPUAggregator.getDimensionScale = getDimensionScale;
|
592
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWdncmVnYXRpb25MYXllcnMiLCJyZXF1aXJlIiwiX3dpbmRvdyIsIl91dGlscyIsIl9jb25zdGFudHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIkRFQ0tfQUdHUkVHQVRJT05fTUFQIiwiZXhwb3J0cyIsIkFHR1JFR0FUSU9OX09QRVJBVElPTiIsIlNVTSIsIkFHR1JFR0FUSU9OX1RZUEVTIiwic3VtIiwiTUVBTiIsImF2ZXJhZ2UiLCJNSU4iLCJtaW5pbXVtIiwiTUFYIiwibWF4aW11bSIsImdldFZhbHVlRnVuYyIsImFnZ3JlZ2F0aW9uIiwiYWNjZXNzb3IiLCJ0b1VwcGVyQ2FzZSIsIkNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0Iiwib3AiLCJrZXBsZXJPcCIsInB0cyIsImFnZ3JlZ2F0ZSIsIm1hcCIsImdldFNjYWxlRnVuY3RvciIsInNjYWxlVHlwZSIsIlNDQUxFX0ZVTkMiLCJxdWFudGl6ZSIsIm5vcCIsImdldEdldFZhbHVlIiwic3RlcCIsInByb3BzIiwiZGltZW5zaW9uVXBkYXRlciIsImtleSIsIl9zdGVwJHRyaWdnZXJzIiwidHJpZ2dlcnMiLCJ2YWx1ZSIsIndlaWdodCIsImdldFZhbHVlIiwicHJvcCIsIl9zZXREaW1lbnNpb25TdGF0ZSIsImdldERpbWVuc2lvblNvcnRlZEJpbnMiLCJzdGF0ZSIsImRpbWVuc2lvbnMiLCJzb3J0ZWRCaW5zIiwiQmluU29ydGVyIiwibGF5ZXJEYXRhIiwiZGF0YSIsImZpbHRlckRhdGEiLCJfZmlsdGVyRGF0YSIsImdldERpbWVuc2lvblZhbHVlRG9tYWluIiwiX3N0ZXAkdHJpZ2dlcnMyIiwibG93ZXJQZXJjZW50aWxlIiwidXBwZXJQZXJjZW50aWxlIiwidmFsdWVEb21haW4iLCJnZXRWYWx1ZURvbWFpbkJ5U2NhbGUiLCJjb2xvclNjYWxlVHlwZSIsImNvbG9yTWFwIiwicmVkdWNlIiwicHJldiIsImN1ciIsIk51bWJlciIsImlzRmluaXRlIiwiZ2V0RGltZW5zaW9uU2NhbGUiLCJfc3RlcCR0cmlnZ2VyczMiLCJkb21haW4iLCJyYW5nZSIsImZpeGVkIiwib25TZXQiLCJkaW1lbnNpb25SYW5nZSIsImRpbWVuc2lvbkRvbWFpbiIsImRpbWVuc2lvbkZpeGVkIiwiQm9vbGVhbiIsInNjYWxlRnVuY3RvciIsInNjYWxlRnVuYyIsIl90eXBlb2YyIiwiYWdncmVnYXRlZEJpbnMiLCJiaW5NYXAiLCJub3JtYWxpemVSZXN1bHQiLCJyZXN1bHQiLCJ1bmRlZmluZWQiLCJoZXhhZ29ucyIsImFzc2lnbiIsImdldEFnZ3JlZ2F0ZWREYXRhIiwiYWdncmVnYXRpb25QYXJhbXMiLCJhZ2dyIiwiYWdncmVnYXRvciIsInNldFN0YXRlIiwiZGVmYXVsdEFnZ3JlZ2F0aW9uIiwidXBkYXRlU3RlcHMiLCJjZWxsU2l6ZSIsInBvc2l0aW9uIiwidXBkYXRlVHJpZ2dlciIsInVwZGF0ZXIiLCJnZXRTdWJMYXllckFjY2Vzc29yIiwiZGltZW5zaW9uU3RhdGUiLCJkaW1lbnNpb24iLCJjZWxsIiwiYmluIiwiaW5kZXgiLCJjb3VudHMiLCJudWxsVmFsdWUiLCJjdiIsImlzVmFsdWVJbkRvbWFpbiIsIm1pblZhbHVlIiwibWF4VmFsdWUiLCJkZWZhdWx0Q29sb3JEaW1lbnNpb24iLCJnZXRQaWNraW5nSW5mbyIsImNvbG9yVmFsdWUiLCJkZWZhdWx0RWxldmF0aW9uRGltZW5zaW9uIiwiZWxldmF0aW9uVmFsdWUiLCJkZWZhdWx0RGltZW5zaW9ucyIsIkNQVUFnZ3JlZ2F0b3IiLCJvcHRzIiwiX2NsYXNzQ2FsbENoZWNrMiIsImluaXRpYWxTdGF0ZSIsImRpbWVuc2lvblVwZGF0ZXJzIiwiYWdncmVnYXRpb25VcGRhdGVyIiwiX2FkZERpbWVuc2lvbiIsIl9jcmVhdGVDbGFzczIiLCJ1cGRhdGVBbGxEaW1lbnNpb25zIiwiZGltZW5zaW9uQ2hhbmdlcyIsImRpbSIsInVwZGF0ZXJzIiwiX2FjY3VtdWxhdGVVcGRhdGVycyIsImYiLCJ1cGRhdGVBZ2dyZWdhdGlvbiIsInVwZGF0ZVN0YXRlIiwib2xkUHJvcHMiLCJjaGFuZ2VGbGFncyIsImRhdGFDaGFuZ2VkIiwiYWdncmVnYXRpb25DaGFuZ2VzIiwiX2dldEFnZ3JlZ2F0aW9uQ2hhbmdlcyIsIl9nZXREaW1lbnNpb25DaGFuZ2VzIiwidXBkYXRlT2JqZWN0IiwiX2FkZEFnZ3JlZ2F0aW9uIiwiX3RoaXMiLCJfbmVlZFVwZGF0ZVN0ZXAiLCJkaW1lbnNpb25TdGVwIiwidmFsdWVzIiwic29tZSIsIml0ZW0iLCJ1cGRhdGVUcmlnZ2Vyc0NoYW5nZWQiLCJhbGwiLCJpIiwiYmluZCIsIl9nZXRBbGxVcGRhdGVycyIsIl90aGlzMiIsIm5lZWRVcGRhdGVTdGVwIiwiZmluZEluZGV4IiwiZ2V0VXBkYXRlVHJpZ2dlcnMiLCJfdGhpczMiLCJfdXBkYXRlVHJpZ2dlcnMiLCJ1cGRhdGVUcmlnZ2VycyIsIl9sb29wIiwiX3RoaXMzJGRpbWVuc2lvblVwZGF0IiwiX3JlZiIsImZyb21Qcm9wIiwiQXJyYXkiLCJpc0FycmF5IiwiX3JlZjIiLCJsYXllclByb3BzIiwiaW5mbyIsImlzUGlja2VkIiwicGlja2VkIiwib2JqZWN0IiwiYmluSW5mbyIsInBvaW50cyIsImZpbHRlcmVkUG9pbnRzIiwiZ2V0QWNjZXNzb3IiLCJkaW1lbnNpb25LZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGF5ZXItdXRpbHMvY3B1LWFnZ3JlZ2F0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLyogZXNsaW50LWRpc2FibGUgZ3VhcmQtZm9yLWluICovXG5pbXBvcnQge0FHR1JFR0FUSU9OX09QRVJBVElPTiwgX0JpblNvcnRlciBhcyBCaW5Tb3J0ZXJ9IGZyb20gJ0BkZWNrLmdsL2FnZ3JlZ2F0aW9uLWxheWVycyc7XG5pbXBvcnQge2NvbnNvbGUgYXMgQ29uc29sZX0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5cbmltcG9ydCB7YWdncmVnYXRlfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7QUdHUkVHQVRJT05fVFlQRVMsIFNDQUxFX0ZVTkN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7UkdCQUNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgVXBkYXRlclR5cGUgPSAodGhpczogQ1BVQWdncmVnYXRvciwgc3RlcCwgcHJvcHMsIGRpbWVuc2lvblVwZGF0ZXIpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBCaW5kZWRVcGRhdGVyVHlwZSA9ICgpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBBZ2dyZWdhdGVkVXBkYXRlclR5cGUgPSAoXG4gIHRoaXM6IENQVUFnZ3JlZ2F0b3IsXG4gIHN0ZXAsXG4gIHByb3BzLFxuICBhZ2dyZWdhdGlvbixcbiAgYWdncmVnYXRpb25QYXJhbXNcbikgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIEJpbmRlZEFnZ3JlZ2F0ZWRVcGRhdGVyVHlwZSA9IChhZ2dyZWdhdGlvblBhcmFtcykgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgVXBkYXRlU3RlcHNUeXBlID0ge1xuICBrZXk6IHN0cmluZztcbiAgdHJpZ2dlcnM6IHtcbiAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICBwcm9wOiBzdHJpbmc7XG4gICAgICB1cGRhdGVUcmlnZ2VyPzogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIG9uU2V0Pzoge1xuICAgIHByb3BzOiBzdHJpbmc7XG4gIH07XG4gIHVwZGF0ZXI6IFVwZGF0ZXJUeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgRGltZW5zaW9uVHlwZTxWYWx1ZVR5cGUgPSBhbnk+ID0ge1xuICBrZXk6IHN0cmluZztcbiAgYWNjZXNzb3I6IHN0cmluZztcbiAgZ2V0UGlja2luZ0luZm86IChkaW1lbnNpb25TdGF0ZSwgY2VsbCwgbGF5ZXJQcm9wcz8pID0+IGFueTtcbiAgbnVsbFZhbHVlOiBWYWx1ZVR5cGU7XG4gIHVwZGF0ZVN0ZXBzOiBVcGRhdGVTdGVwc1R5cGVbXTtcbiAgZ2V0U3ViTGF5ZXJBY2Nlc3Nvcjtcbn07XG5cbmV4cG9ydCB0eXBlIEFnZ3JlZ2F0aW9uVXBkYXRlU3RlcHNUeXBlID0ge1xuICBrZXk6IHN0cmluZztcbiAgdHJpZ2dlcnM6IHtcbiAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICBwcm9wOiBzdHJpbmc7XG4gICAgICB1cGRhdGVUcmlnZ2VyPzogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIHVwZGF0ZXI6IEFnZ3JlZ2F0ZWRVcGRhdGVyVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIEFnZ3JlZ2F0aW9uVHlwZSA9IHtcbiAga2V5OiBzdHJpbmc7XG4gIHVwZGF0ZVN0ZXBzOiBBZ2dyZWdhdGlvblVwZGF0ZVN0ZXBzVHlwZVtdO1xufTtcblxuZXhwb3J0IGNvbnN0IERFQ0tfQUdHUkVHQVRJT05fTUFQID0ge1xuICBbQUdHUkVHQVRJT05fT1BFUkFUSU9OLlNVTV06IEFHR1JFR0FUSU9OX1RZUEVTLnN1bSxcbiAgW0FHR1JFR0FUSU9OX09QRVJBVElPTi5NRUFOXTogQUdHUkVHQVRJT05fVFlQRVMuYXZlcmFnZSxcbiAgW0FHR1JFR0FUSU9OX09QRVJBVElPTi5NSU5dOiBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICBbQUdHUkVHQVRJT05fT1BFUkFUSU9OLk1BWF06IEFHR1JFR0FUSU9OX1RZUEVTLm1heGltdW1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWx1ZUZ1bmMoYWdncmVnYXRpb24sIGFjY2Vzc29yKSB7XG4gIGlmICghYWdncmVnYXRpb24gfHwgIUFHR1JFR0FUSU9OX09QRVJBVElPTlthZ2dyZWdhdGlvbi50b1VwcGVyQ2FzZSgpXSkge1xuICAgIENvbnNvbGUud2FybihgQWdncmVnYXRpb24gJHthZ2dyZWdhdGlvbn0gaXMgbm90IHN1cHBvcnRlZGApO1xuICB9XG5cbiAgY29uc3Qgb3AgPSBBR0dSRUdBVElPTl9PUEVSQVRJT05bYWdncmVnYXRpb24udG9VcHBlckNhc2UoKV0gfHwgQUdHUkVHQVRJT05fT1BFUkFUSU9OLlNVTTtcbiAgY29uc3Qga2VwbGVyT3AgPSBERUNLX0FHR1JFR0FUSU9OX01BUFtvcF07XG5cbiAgcmV0dXJuIHB0cyA9PiBhZ2dyZWdhdGUocHRzLm1hcChhY2Nlc3NvciksIGtlcGxlck9wKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlRnVuY3RvcihzY2FsZVR5cGUpIHtcbiAgaWYgKCFzY2FsZVR5cGUgfHwgIVNDQUxFX0ZVTkNbc2NhbGVUeXBlXSkge1xuICAgIENvbnNvbGUud2FybihgU2NhbGUgJHtzY2FsZVR5cGV9IGlzIG5vdCBzdXBwb3J0ZWRgKTtcbiAgfVxuICByZXR1cm4gU0NBTEVfRlVOQ1tzY2FsZVR5cGVdIHx8IFNDQUxFX0ZVTkMucXVhbnRpemU7XG59XG5cbmZ1bmN0aW9uIG5vcCgpIHtcbiAgcmV0dXJuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2V0VmFsdWUodGhpczogQ1BVQWdncmVnYXRvciwgc3RlcCwgcHJvcHMsIGRpbWVuc2lvblVwZGF0ZXIpIHtcbiAgY29uc3Qge2tleX0gPSBkaW1lbnNpb25VcGRhdGVyO1xuICBjb25zdCB7dmFsdWUsIHdlaWdodCwgYWdncmVnYXRpb259ID0gc3RlcC50cmlnZ2VycztcblxuICBsZXQgZ2V0VmFsdWUgPSBwcm9wc1t2YWx1ZS5wcm9wXTtcblxuICBpZiAoZ2V0VmFsdWUgPT09IG51bGwpIHtcbiAgICAvLyBJZiBgZ2V0VmFsdWVgIGlzIG5vdCBwcm92aWRlZCBmcm9tIHByb3BzLCBidWlsZCBpdCB3aXRoIGFnZ3JlZ2F0aW9uIGFuZCB3ZWlnaHQuXG4gICAgZ2V0VmFsdWUgPSBnZXRWYWx1ZUZ1bmMocHJvcHNbYWdncmVnYXRpb24ucHJvcF0sIHByb3BzW3dlaWdodC5wcm9wXSk7XG4gIH1cblxuICBpZiAoZ2V0VmFsdWUpIHtcbiAgICB0aGlzLl9zZXREaW1lbnNpb25TdGF0ZShrZXksIHtnZXRWYWx1ZX0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREaW1lbnNpb25Tb3J0ZWRCaW5zKHRoaXM6IENQVUFnZ3JlZ2F0b3IsIHN0ZXAsIHByb3BzLCBkaW1lbnNpb25VcGRhdGVyKSB7XG4gIGNvbnN0IHtrZXl9ID0gZGltZW5zaW9uVXBkYXRlcjtcbiAgY29uc3Qge2dldFZhbHVlfSA9IHRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldO1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGNvbnN0IHNvcnRlZEJpbnMgPSBuZXcgQmluU29ydGVyKHRoaXMuc3RhdGUubGF5ZXJEYXRhLmRhdGEgfHwgW10sIHtcbiAgICBnZXRWYWx1ZSxcbiAgICBmaWx0ZXJEYXRhOiBwcm9wcy5fZmlsdGVyRGF0YVxuICB9KTtcbiAgdGhpcy5fc2V0RGltZW5zaW9uU3RhdGUoa2V5LCB7c29ydGVkQmluc30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGltZW5zaW9uVmFsdWVEb21haW4odGhpczogQ1BVQWdncmVnYXRvciwgc3RlcCwgcHJvcHMsIGRpbWVuc2lvblVwZGF0ZXIpIHtcbiAgY29uc3Qge2tleX0gPSBkaW1lbnNpb25VcGRhdGVyO1xuICBjb25zdCB7XG4gICAgdHJpZ2dlcnM6IHtsb3dlclBlcmNlbnRpbGUsIHVwcGVyUGVyY2VudGlsZSwgc2NhbGVUeXBlfVxuICB9ID0gc3RlcDtcblxuICBpZiAoIXRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldLnNvcnRlZEJpbnMpIHtcbiAgICAvLyB0aGUgcHJldmlvdXMgc3RlcCBzaG91bGQgc2V0IHNvcnRlZEJpbnMsIGlmIG5vdCwgc29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgdmFsdWVEb21haW4gPVxuICAgIC8vIGZvciBsb2cgYW5kIHNxcnQgc2NhbGUsIHJldHVybnMgbGluZWFyIGRvbWFpbiBieSBkZWZhdWx0XG4gICAgLy8gVE9ETzogc3VwcG9ydCBvdGhlciBzY2FsZSBmdW5jdGlvbiBkb21haW4gaW4gYmluIHNvcnRlclxuICAgIHRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldLnNvcnRlZEJpbnMuZ2V0VmFsdWVEb21haW5CeVNjYWxlKHByb3BzW3NjYWxlVHlwZS5wcm9wXSwgW1xuICAgICAgcHJvcHNbbG93ZXJQZXJjZW50aWxlLnByb3BdLFxuICAgICAgcHJvcHNbdXBwZXJQZXJjZW50aWxlLnByb3BdXG4gICAgXSk7XG5cbiAgaWYgKHByb3BzLmNvbG9yU2NhbGVUeXBlID09PSAnY3VzdG9tJyAmJiBwcm9wcy5jb2xvck1hcCkge1xuICAgIC8vIGZvciBjdXN0b20gc2NhbGUsIHJldHVybiBjdXN0b20gYnJlYWtzIGFzIHZhbHVlIGRvbWFpbiBkaXJlY3RseVxuICAgIHZhbHVlRG9tYWluID0gcHJvcHMuY29sb3JNYXAucmVkdWNlKFxuICAgICAgKHByZXYsIGN1cikgPT4gKE51bWJlci5pc0Zpbml0ZShjdXJbMF0pID8gcHJldi5jb25jYXQoY3VyWzBdKSA6IHByZXYpLFxuICAgICAgW11cbiAgICApO1xuICB9XG5cbiAgdGhpcy5fc2V0RGltZW5zaW9uU3RhdGUoa2V5LCB7dmFsdWVEb21haW59KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpbWVuc2lvblNjYWxlKHRoaXM6IENQVUFnZ3JlZ2F0b3IsIHN0ZXAsIHByb3BzLCBkaW1lbnNpb25VcGRhdGVyKSB7XG4gIGNvbnN0IHtrZXl9ID0gZGltZW5zaW9uVXBkYXRlcjtcbiAgY29uc3Qge2RvbWFpbiwgcmFuZ2UsIHNjYWxlVHlwZSwgZml4ZWR9ID0gc3RlcC50cmlnZ2VycztcbiAgY29uc3Qge29uU2V0fSA9IHN0ZXA7XG4gIGlmICghdGhpcy5zdGF0ZS5kaW1lbnNpb25zW2tleV0udmFsdWVEb21haW4pIHtcbiAgICAvLyB0aGUgcHJldmlvdXMgc3RlcCBzaG91bGQgc2V0IHZhbHVlRG9tYWluLCBpZiBub3QsIHNvbWV0aGluZyB3ZW50IHdyb25nXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZGltZW5zaW9uUmFuZ2UgPSBwcm9wc1tyYW5nZS5wcm9wXTtcbiAgY29uc3QgZGltZW5zaW9uRG9tYWluID0gcHJvcHNbZG9tYWluLnByb3BdIHx8IHRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldLnZhbHVlRG9tYWluO1xuICBjb25zdCBkaW1lbnNpb25GaXhlZCA9IEJvb2xlYW4oZml4ZWQgJiYgcHJvcHNbZml4ZWQucHJvcF0pO1xuXG4gIGNvbnN0IHNjYWxlRnVuY3RvciA9IGdldFNjYWxlRnVuY3RvcihzY2FsZVR5cGUgJiYgcHJvcHNbc2NhbGVUeXBlLnByb3BdKSgpO1xuXG4gIGNvbnN0IHNjYWxlRnVuYyA9IHNjYWxlRnVuY3RvclxuICAgIC5kb21haW4oZGltZW5zaW9uRG9tYWluKVxuICAgIC5yYW5nZShkaW1lbnNpb25GaXhlZCA/IGRpbWVuc2lvbkRvbWFpbiA6IGRpbWVuc2lvblJhbmdlKTtcblxuICBpZiAodHlwZW9mIG9uU2V0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgcHJvcHNbb25TZXQucHJvcHNdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3Qgc29ydGVkQmlucyA9IHRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldLnNvcnRlZEJpbnM7XG4gICAgcHJvcHNbb25TZXQucHJvcHNdKHtkb21haW46IHNjYWxlRnVuYy5kb21haW4oKSwgYWdncmVnYXRlZEJpbnM6IHNvcnRlZEJpbnMuYmluTWFwfSk7XG4gIH1cbiAgdGhpcy5fc2V0RGltZW5zaW9uU3RhdGUoa2V5LCB7c2NhbGVGdW5jfSk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJlc3VsdChyZXN1bHQ6IHtoZXhhZ29ucz87IGxheWVyRGF0YT99ID0ge30pIHtcbiAgLy8gc3VwcG9ydCBwcmV2aW91cyBoZXhhZ29uQWdncmVnYXRvciBBUElcbiAgaWYgKHJlc3VsdC5oZXhhZ29ucykge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHtkYXRhOiByZXN1bHQuaGV4YWdvbnN9LCByZXN1bHQpO1xuICB9IGVsc2UgaWYgKHJlc3VsdC5sYXllckRhdGEpIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7ZGF0YTogcmVzdWx0LmxheWVyRGF0YX0sIHJlc3VsdCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWdncmVnYXRlZERhdGEoXG4gIHRoaXM6IENQVUFnZ3JlZ2F0b3IsXG4gIHN0ZXAsXG4gIHByb3BzLFxuICBhZ2dyZWdhdGlvbixcbiAgYWdncmVnYXRpb25QYXJhbXNcbikge1xuICBjb25zdCB7XG4gICAgdHJpZ2dlcnM6IHthZ2dyZWdhdG9yOiBhZ2dyfVxuICB9ID0gc3RlcDtcbiAgY29uc3QgYWdncmVnYXRvciA9IHByb3BzW2FnZ3IucHJvcF07XG5cbiAgLy8gcmVzdWx0IHNob3VsZCBjb250YWluIGEgZGF0YSBhcnJheSBhbmQgb3RoZXIgcHJvcHNcbiAgLy8gcmVzdWx0ID0ge2RhdGE6IFtdLCAuLi5vdGhlciBwcm9wc31cbiAgY29uc3QgcmVzdWx0ID0gYWdncmVnYXRvcihwcm9wcywgYWdncmVnYXRpb25QYXJhbXMpO1xuICB0aGlzLnNldFN0YXRlKHtcbiAgICBsYXllckRhdGE6IG5vcm1hbGl6ZVJlc3VsdChyZXN1bHQpXG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdEFnZ3JlZ2F0aW9uOiBBZ2dyZWdhdGlvblR5cGUgPSB7XG4gIGtleTogJ3Bvc2l0aW9uJyxcbiAgdXBkYXRlU3RlcHM6IFtcbiAgICB7XG4gICAgICBrZXk6ICdhZ2dyZWdhdGUnLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgY2VsbFNpemU6IHtcbiAgICAgICAgICBwcm9wOiAnY2VsbFNpemUnXG4gICAgICAgIH0sXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgcHJvcDogJ2dldFBvc2l0aW9uJyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnZ2V0UG9zaXRpb24nXG4gICAgICAgIH0sXG4gICAgICAgIGFnZ3JlZ2F0b3I6IHtcbiAgICAgICAgICBwcm9wOiAnZ3JpZEFnZ3JlZ2F0b3InXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1cGRhdGVyOiBnZXRBZ2dyZWdhdGVkRGF0YVxuICAgIH1cbiAgXVxufTtcblxuZnVuY3Rpb24gZ2V0U3ViTGF5ZXJBY2Nlc3NvcihkaW1lbnNpb25TdGF0ZSwgZGltZW5zaW9uKSB7XG4gIHJldHVybiBjZWxsID0+IHtcbiAgICBjb25zdCB7c29ydGVkQmlucywgc2NhbGVGdW5jfSA9IGRpbWVuc2lvblN0YXRlO1xuICAgIGNvbnN0IGJpbiA9IHNvcnRlZEJpbnMuYmluTWFwW2NlbGwuaW5kZXhdO1xuXG4gICAgaWYgKGJpbiAmJiBiaW4uY291bnRzID09PSAwKSB7XG4gICAgICAvLyBubyBwb2ludHMgbGVmdCBpbiBiaW4gYWZ0ZXIgZmlsdGVyaW5nXG4gICAgICByZXR1cm4gZGltZW5zaW9uLm51bGxWYWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjdiA9IGJpbiAmJiBiaW4udmFsdWU7XG4gICAgY29uc3QgZG9tYWluID0gc2NhbGVGdW5jLmRvbWFpbigpO1xuXG4gICAgY29uc3QgaXNWYWx1ZUluRG9tYWluID1cbiAgICAgIHNjYWxlRnVuYy5zY2FsZVR5cGUgPT09ICdjdXN0b20nXG4gICAgICAgID8gY3YgPj0gc29ydGVkQmlucy5taW5WYWx1ZSAmJiBjdiA8PSBzb3J0ZWRCaW5zLm1heFZhbHVlXG4gICAgICAgIDogY3YgPj0gZG9tYWluWzBdICYmIGN2IDw9IGRvbWFpbltkb21haW4ubGVuZ3RoIC0gMV07XG5cbiAgICAvLyBpZiBjZWxsIHZhbHVlIGlzIG91dHNpZGUgZG9tYWluLCBzZXQgYWxwaGEgdG8gMFxuICAgIHJldHVybiBpc1ZhbHVlSW5Eb21haW4gPyBzY2FsZUZ1bmMoY3YpIDogZGltZW5zaW9uLm51bGxWYWx1ZTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb2xvckRpbWVuc2lvbjogRGltZW5zaW9uVHlwZTxSR0JBQ29sb3I+ID0ge1xuICBrZXk6ICdmaWxsQ29sb3InLFxuICBhY2Nlc3NvcjogJ2dldEZpbGxDb2xvcicsXG4gIGdldFBpY2tpbmdJbmZvOiAoZGltZW5zaW9uU3RhdGUsIGNlbGwpID0+IHtcbiAgICBpZiAoIWNlbGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3Qge3NvcnRlZEJpbnN9ID0gZGltZW5zaW9uU3RhdGU7XG4gICAgY29uc3QgY29sb3JWYWx1ZSA9IHNvcnRlZEJpbnMuYmluTWFwW2NlbGwuaW5kZXhdICYmIHNvcnRlZEJpbnMuYmluTWFwW2NlbGwuaW5kZXhdLnZhbHVlO1xuICAgIHJldHVybiB7Y29sb3JWYWx1ZX07XG4gIH0sXG4gIG51bGxWYWx1ZTogWzAsIDAsIDAsIDBdLFxuICB1cGRhdGVTdGVwczogW1xuICAgIHtcbiAgICAgIGtleTogJ2dldFZhbHVlJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgcHJvcDogJ2dldENvbG9yVmFsdWUnLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXI6ICdnZXRDb2xvclZhbHVlJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWlnaHQ6IHtcbiAgICAgICAgICBwcm9wOiAnZ2V0Q29sb3JXZWlnaHQnLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXI6ICdnZXRDb2xvcldlaWdodCdcbiAgICAgICAgfSxcbiAgICAgICAgYWdncmVnYXRpb246IHtcbiAgICAgICAgICBwcm9wOiAnY29sb3JBZ2dyZWdhdGlvbidcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IGdldEdldFZhbHVlXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdnZXRCaW5zJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIF9maWx0ZXJEYXRhOiB7XG4gICAgICAgICAgcHJvcDogJ19maWx0ZXJEYXRhJyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnX2ZpbHRlckRhdGEnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1cGRhdGVyOiBnZXREaW1lbnNpb25Tb3J0ZWRCaW5zXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdnZXREb21haW4nLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgbG93ZXJQZXJjZW50aWxlOiB7XG4gICAgICAgICAgcHJvcDogJ2xvd2VyUGVyY2VudGlsZSdcbiAgICAgICAgfSxcbiAgICAgICAgdXBwZXJQZXJjZW50aWxlOiB7XG4gICAgICAgICAgcHJvcDogJ3VwcGVyUGVyY2VudGlsZSdcbiAgICAgICAgfSxcbiAgICAgICAgc2NhbGVUeXBlOiB7cHJvcDogJ2NvbG9yU2NhbGVUeXBlJ31cbiAgICAgIH0sXG4gICAgICB1cGRhdGVyOiBnZXREaW1lbnNpb25WYWx1ZURvbWFpblxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZ2V0U2NhbGVGdW5jJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIGRvbWFpbjoge3Byb3A6ICdjb2xvckRvbWFpbid9LFxuICAgICAgICByYW5nZToge3Byb3A6ICdjb2xvclJhbmdlJ30sXG4gICAgICAgIHNjYWxlVHlwZToge3Byb3A6ICdjb2xvclNjYWxlVHlwZSd9XG4gICAgICB9LFxuICAgICAgb25TZXQ6IHtcbiAgICAgICAgcHJvcHM6ICdvblNldENvbG9yRG9tYWluJ1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IGdldERpbWVuc2lvblNjYWxlXG4gICAgfVxuICBdLFxuICBnZXRTdWJMYXllckFjY2Vzc29yXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEVsZXZhdGlvbkRpbWVuc2lvbjogRGltZW5zaW9uVHlwZTxudW1iZXI+ID0ge1xuICBrZXk6ICdlbGV2YXRpb24nLFxuICBhY2Nlc3NvcjogJ2dldEVsZXZhdGlvbicsXG4gIGdldFBpY2tpbmdJbmZvOiAoZGltZW5zaW9uU3RhdGUsIGNlbGwpID0+IHtcbiAgICBpZiAoIWNlbGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3Qge3NvcnRlZEJpbnN9ID0gZGltZW5zaW9uU3RhdGU7XG4gICAgY29uc3QgZWxldmF0aW9uVmFsdWUgPSBzb3J0ZWRCaW5zLmJpbk1hcFtjZWxsLmluZGV4XSAmJiBzb3J0ZWRCaW5zLmJpbk1hcFtjZWxsLmluZGV4XS52YWx1ZTtcbiAgICByZXR1cm4ge2VsZXZhdGlvblZhbHVlfTtcbiAgfSxcbiAgbnVsbFZhbHVlOiAtMSxcbiAgdXBkYXRlU3RlcHM6IFtcbiAgICB7XG4gICAgICBrZXk6ICdnZXRWYWx1ZScsXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIHByb3A6ICdnZXRFbGV2YXRpb25WYWx1ZScsXG4gICAgICAgICAgdXBkYXRlVHJpZ2dlcjogJ2dldEVsZXZhdGlvblZhbHVlJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWlnaHQ6IHtcbiAgICAgICAgICBwcm9wOiAnZ2V0RWxldmF0aW9uV2VpZ2h0JyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnZ2V0RWxldmF0aW9uV2VpZ2h0J1xuICAgICAgICB9LFxuICAgICAgICBhZ2dyZWdhdGlvbjoge1xuICAgICAgICAgIHByb3A6ICdlbGV2YXRpb25BZ2dyZWdhdGlvbidcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IGdldEdldFZhbHVlXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdnZXRCaW5zJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIF9maWx0ZXJEYXRhOiB7XG4gICAgICAgICAgcHJvcDogJ19maWx0ZXJEYXRhJyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnX2ZpbHRlckRhdGEnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1cGRhdGVyOiBnZXREaW1lbnNpb25Tb3J0ZWRCaW5zXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdnZXREb21haW4nLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgbG93ZXJQZXJjZW50aWxlOiB7XG4gICAgICAgICAgcHJvcDogJ2VsZXZhdGlvbkxvd2VyUGVyY2VudGlsZSdcbiAgICAgICAgfSxcbiAgICAgICAgdXBwZXJQZXJjZW50aWxlOiB7XG4gICAgICAgICAgcHJvcDogJ2VsZXZhdGlvblVwcGVyUGVyY2VudGlsZSdcbiAgICAgICAgfSxcbiAgICAgICAgc2NhbGVUeXBlOiB7cHJvcDogJ2VsZXZhdGlvblNjYWxlVHlwZSd9XG4gICAgICB9LFxuICAgICAgdXBkYXRlcjogZ2V0RGltZW5zaW9uVmFsdWVEb21haW5cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2dldFNjYWxlRnVuYycsXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICBmaXhlZDoge3Byb3A6ICdlbGV2YXRpb25GaXhlZCd9LFxuICAgICAgICBkb21haW46IHtwcm9wOiAnZWxldmF0aW9uRG9tYWluJ30sXG4gICAgICAgIHJhbmdlOiB7cHJvcDogJ2VsZXZhdGlvblJhbmdlJ30sXG4gICAgICAgIHNjYWxlVHlwZToge3Byb3A6ICdlbGV2YXRpb25TY2FsZVR5cGUnfVxuICAgICAgfSxcbiAgICAgIG9uU2V0OiB7XG4gICAgICAgIHByb3BzOiAnb25TZXRFbGV2YXRpb25Eb21haW4nXG4gICAgICB9LFxuICAgICAgdXBkYXRlcjogZ2V0RGltZW5zaW9uU2NhbGVcbiAgICB9XG4gIF0sXG4gIGdldFN1YkxheWVyQWNjZXNzb3Jcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RGltZW5zaW9ucyA9IFtkZWZhdWx0Q29sb3JEaW1lbnNpb24sIGRlZmF1bHRFbGV2YXRpb25EaW1lbnNpb25dO1xuXG5leHBvcnQgdHlwZSBDUFVBZ2dyZWdhdG9yU3RhdGUgPSB7XG4gIGxheWVyRGF0YToge2RhdGE/fTtcbiAgZGltZW5zaW9uczogb2JqZWN0O1xuICBnZW9KU09OPztcbiAgY2x1c3RlckJ1aWxkZXI/O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ1BVQWdncmVnYXRvciB7XG4gIHN0YXRpYyBnZXREaW1lbnNpb25TY2FsZTogYW55O1xuICBzdGF0ZTogQ1BVQWdncmVnYXRvclN0YXRlO1xuICBkaW1lbnNpb25VcGRhdGVyczoge1trZXk6IHN0cmluZ106IERpbWVuc2lvblR5cGV9O1xuICBhZ2dyZWdhdGlvblVwZGF0ZXI6IEFnZ3JlZ2F0aW9uVHlwZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBvcHRzOiB7XG4gICAgICBpbml0aWFsU3RhdGU/OiBDUFVBZ2dyZWdhdG9yU3RhdGU7XG4gICAgICBkaW1lbnNpb25zPzogRGltZW5zaW9uVHlwZVtdO1xuICAgICAgYWdncmVnYXRpb24/OiBBZ2dyZWdhdGlvblR5cGU7XG4gICAgfSA9IHt9XG4gICkge1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBsYXllckRhdGE6IHt9LFxuICAgICAgZGltZW5zaW9uczoge1xuICAgICAgICAvLyBjb2xvcjoge1xuICAgICAgICAvLyAgIGdldFZhbHVlOiBudWxsLFxuICAgICAgICAvLyAgIGRvbWFpbjogbnVsbCxcbiAgICAgICAgLy8gICBzb3J0ZWRCaW5zOiBudWxsLFxuICAgICAgICAvLyAgIHNjYWxlRnVuYzogbm9wXG4gICAgICAgIC8vIH0sXG4gICAgICAgIC8vIGVsZXZhdGlvbjoge1xuICAgICAgICAvLyAgIGdldFZhbHVlOiBudWxsLFxuICAgICAgICAvLyAgIGRvbWFpbjogbnVsbCxcbiAgICAgICAgLy8gICBzb3J0ZWRCaW5zOiBudWxsLFxuICAgICAgICAvLyAgIHNjYWxlRnVuYzogbm9wXG4gICAgICAgIC8vIH1cbiAgICAgIH0sXG4gICAgICAuLi5vcHRzLmluaXRpYWxTdGF0ZVxuICAgIH07XG5cbiAgICB0aGlzLmRpbWVuc2lvblVwZGF0ZXJzID0ge307XG4gICAgdGhpcy5hZ2dyZWdhdGlvblVwZGF0ZXIgPSBvcHRzLmFnZ3JlZ2F0aW9uIHx8IGRlZmF1bHRBZ2dyZWdhdGlvbjtcblxuICAgIHRoaXMuX2FkZERpbWVuc2lvbihvcHRzLmRpbWVuc2lvbnMgfHwgZGVmYXVsdERpbWVuc2lvbnMpO1xuICB9XG5cbiAgc3RhdGljIGRlZmF1bHREaW1lbnNpb25zKCkge1xuICAgIHJldHVybiBkZWZhdWx0RGltZW5zaW9ucztcbiAgfVxuXG4gIHVwZGF0ZUFsbERpbWVuc2lvbnMocHJvcHMpIHtcbiAgICBsZXQgZGltZW5zaW9uQ2hhbmdlczogQmluZGVkVXBkYXRlclR5cGVbXSA9IFtdO1xuICAgIC8vIHVwZGF0ZSBhbGwgZGltZW5zaW9uc1xuICAgIGZvciAoY29uc3QgZGltIGluIHRoaXMuZGltZW5zaW9uVXBkYXRlcnMpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZXJzID0gdGhpcy5fYWNjdW11bGF0ZVVwZGF0ZXJzKDAsIHByb3BzLCB0aGlzLmRpbWVuc2lvblVwZGF0ZXJzW2RpbV0pO1xuICAgICAgZGltZW5zaW9uQ2hhbmdlcyA9IGRpbWVuc2lvbkNoYW5nZXMuY29uY2F0KHVwZGF0ZXJzKTtcbiAgICB9XG5cbiAgICBkaW1lbnNpb25DaGFuZ2VzLmZvckVhY2goZiA9PiB0eXBlb2YgZiA9PT0gJ2Z1bmN0aW9uJyAmJiBmKCkpO1xuICB9XG5cbiAgdXBkYXRlQWdncmVnYXRpb24ocHJvcHMsIGFnZ3JlZ2F0aW9uUGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlcnMgPSB0aGlzLl9hY2N1bXVsYXRlVXBkYXRlcnMoMCwgcHJvcHMsIHRoaXMuYWdncmVnYXRpb25VcGRhdGVyKTtcbiAgICB1cGRhdGVycy5mb3JFYWNoKGYgPT4gdHlwZW9mIGYgPT09ICdmdW5jdGlvbicgJiYgZihhZ2dyZWdhdGlvblBhcmFtcykpO1xuICB9XG5cbiAgdXBkYXRlU3RhdGUob3B0cywgYWdncmVnYXRpb25QYXJhbXMpIHtcbiAgICBjb25zdCB7b2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFnc30gPSBvcHRzO1xuICAgIGxldCBkaW1lbnNpb25DaGFuZ2VzOiBCaW5kZWRVcGRhdGVyVHlwZVtdID0gW107XG5cbiAgICBpZiAoY2hhbmdlRmxhZ3MuZGF0YUNoYW5nZWQpIHtcbiAgICAgIC8vIGlmIGRhdGEgY2hhbmdlZCB1cGRhdGUgZXZlcnl0aGluZ1xuICAgICAgdGhpcy51cGRhdGVBZ2dyZWdhdGlvbihwcm9wcywgYWdncmVnYXRpb25QYXJhbXMpO1xuICAgICAgdGhpcy51cGRhdGVBbGxEaW1lbnNpb25zKHByb3BzKTtcblxuICAgICAgcmV0dXJuIHRoaXMuc3RhdGU7XG4gICAgfVxuXG4gICAgY29uc3QgYWdncmVnYXRpb25DaGFuZ2VzID0gdGhpcy5fZ2V0QWdncmVnYXRpb25DaGFuZ2VzKG9sZFByb3BzLCBwcm9wcywgY2hhbmdlRmxhZ3MpO1xuXG4gICAgaWYgKGFnZ3JlZ2F0aW9uQ2hhbmdlcyAmJiBhZ2dyZWdhdGlvbkNoYW5nZXMubGVuZ3RoKSB7XG4gICAgICAvLyBnZXQgYWdncmVnYXRlZERhdGFcbiAgICAgIGFnZ3JlZ2F0aW9uQ2hhbmdlcy5mb3JFYWNoKGYgPT4gdHlwZW9mIGYgPT09ICdmdW5jdGlvbicgJiYgZihhZ2dyZWdhdGlvblBhcmFtcykpO1xuICAgICAgdGhpcy51cGRhdGVBbGxEaW1lbnNpb25zKHByb3BzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gb25seSB1cGRhdGUgZGltZW5zaW9uc1xuICAgICAgZGltZW5zaW9uQ2hhbmdlcyA9IHRoaXMuX2dldERpbWVuc2lvbkNoYW5nZXMob2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFncykgfHwgW107XG4gICAgICBkaW1lbnNpb25DaGFuZ2VzLmZvckVhY2goZiA9PiB0eXBlb2YgZiA9PT0gJ2Z1bmN0aW9uJyAmJiBmKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXRlO1xuICB9XG5cbiAgLy8gVXBkYXRlIHByaXZhdGUgc3RhdGVcbiAgc2V0U3RhdGUodXBkYXRlT2JqZWN0KSB7XG4gICAgdGhpcy5zdGF0ZSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc3RhdGUsIHVwZGF0ZU9iamVjdCk7XG4gIH1cblxuICAvLyBVcGRhdGUgcHJpdmF0ZSBzdGF0ZS5kaW1lbnNpb25zXG4gIF9zZXREaW1lbnNpb25TdGF0ZShrZXksIHVwZGF0ZU9iamVjdCkge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgZGltZW5zaW9uczogT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zdGF0ZS5kaW1lbnNpb25zLCB7XG4gICAgICAgIFtrZXldOiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnN0YXRlLmRpbWVuc2lvbnNba2V5XSwgdXBkYXRlT2JqZWN0KVxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxuXG4gIF9hZGRBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbjogQWdncmVnYXRpb25UeXBlKSB7XG4gICAgdGhpcy5hZ2dyZWdhdGlvblVwZGF0ZXIgPSBhZ2dyZWdhdGlvbjtcbiAgfVxuXG4gIF9hZGREaW1lbnNpb24oZGltZW5zaW9uczogRGltZW5zaW9uVHlwZVtdID0gW10pIHtcbiAgICBkaW1lbnNpb25zLmZvckVhY2goZGltZW5zaW9uID0+IHtcbiAgICAgIGNvbnN0IHtrZXl9ID0gZGltZW5zaW9uO1xuICAgICAgdGhpcy5kaW1lbnNpb25VcGRhdGVyc1trZXldID0gZGltZW5zaW9uO1xuICAgIH0pO1xuICB9XG5cbiAgX25lZWRVcGRhdGVTdGVwKFxuICAgIGRpbWVuc2lvblN0ZXA6IFVwZGF0ZVN0ZXBzVHlwZSB8IEFnZ3JlZ2F0aW9uVXBkYXRlU3RlcHNUeXBlLFxuICAgIG9sZFByb3BzLFxuICAgIHByb3BzLFxuICAgIGNoYW5nZUZsYWdzXG4gICkge1xuICAgIC8vIHdoZXRoZXIgbmVlZCB0byB1cGRhdGUgY3VycmVudCBkaW1lbnNpb24gc3RlcFxuICAgIC8vIGRpbWVuc2lvbiBzdGVwIGlzIHRoZSB2YWx1ZSwgZG9tYWluLCBzY2FsZUZ1bmN0aW9uIG9mIGVhY2ggZGltZW5zaW9uXG4gICAgLy8gZWFjaCBzdGVwIGlzIGFuIG9iamVjdCB3aXRoIHByb3BlcnRpZXMgbGlua3MgdG8gbGF5ZXIgcHJvcCBhbmQgd2hldGhlciB0aGUgcHJvcCBpc1xuICAgIC8vIGNvbnRyb2xsZWQgYnkgdXBkYXRlVHJpZ2dlcnNcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhkaW1lbnNpb25TdGVwLnRyaWdnZXJzKS5zb21lKGl0ZW0gPT4ge1xuICAgICAgaWYgKGl0ZW0udXBkYXRlVHJpZ2dlcikge1xuICAgICAgICAvLyBjaGVjayBiYXNlZCBvbiB1cGRhdGVUcmlnZ2VycyBjaGFuZ2UgZmlyc3RcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBjaGFuZ2VGbGFncy51cGRhdGVUcmlnZ2Vyc0NoYW5nZWQgJiZcbiAgICAgICAgICAoY2hhbmdlRmxhZ3MudXBkYXRlVHJpZ2dlcnNDaGFuZ2VkLmFsbCB8fFxuICAgICAgICAgICAgY2hhbmdlRmxhZ3MudXBkYXRlVHJpZ2dlcnNDaGFuZ2VkW2l0ZW0udXBkYXRlVHJpZ2dlcl0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICAvLyBmYWxsYmFjayB0byBkaXJlY3QgY29tcGFyaXNvblxuICAgICAgcmV0dXJuIG9sZFByb3BzW2l0ZW0ucHJvcF0gIT09IHByb3BzW2l0ZW0ucHJvcF07XG4gICAgfSk7XG4gIH1cblxuICBfYWNjdW11bGF0ZVVwZGF0ZXJzPFVwZGF0ZXJPYmplY3RUeXBlIGV4dGVuZHMgRGltZW5zaW9uVHlwZSB8IEFnZ3JlZ2F0aW9uVHlwZT4oXG4gICAgc3RlcCxcbiAgICBwcm9wcyxcbiAgICBkaW1lbnNpb246IFVwZGF0ZXJPYmplY3RUeXBlXG4gICkge1xuICAgIHR5cGUgTG9jYWxVcGRhdGVyVHlwZSA9IFVwZGF0ZXJPYmplY3RUeXBlIGV4dGVuZHMgRGltZW5zaW9uVHlwZVxuICAgICAgPyBCaW5kZWRVcGRhdGVyVHlwZVxuICAgICAgOiBCaW5kZWRBZ2dyZWdhdGVkVXBkYXRlclR5cGU7XG4gICAgY29uc3QgdXBkYXRlcnM6IExvY2FsVXBkYXRlclR5cGVbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBzdGVwOyBpIDwgZGltZW5zaW9uLnVwZGF0ZVN0ZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB1cGRhdGVyID0gZGltZW5zaW9uLnVwZGF0ZVN0ZXBzW2ldLnVwZGF0ZXI7XG4gICAgICBpZiAodHlwZW9mIHVwZGF0ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdXBkYXRlcnMucHVzaChcbiAgICAgICAgICB1cGRhdGVyLmJpbmQodGhpcywgZGltZW5zaW9uLnVwZGF0ZVN0ZXBzW2ldLCBwcm9wcywgZGltZW5zaW9uKSBhcyBMb2NhbFVwZGF0ZXJUeXBlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVwZGF0ZXJzO1xuICB9XG5cbiAgX2dldEFsbFVwZGF0ZXJzPFVwZGF0ZXJPYmplY3RUeXBlIGV4dGVuZHMgRGltZW5zaW9uVHlwZSB8IEFnZ3JlZ2F0aW9uVHlwZT4oXG4gICAgZGltZW5zaW9uOiBVcGRhdGVyT2JqZWN0VHlwZSxcbiAgICBvbGRQcm9wcyxcbiAgICBwcm9wcyxcbiAgICBjaGFuZ2VGbGFnc1xuICApIHtcbiAgICB0eXBlIExvY2FsVXBkYXRlclR5cGUgPSBVcGRhdGVyT2JqZWN0VHlwZSBleHRlbmRzIERpbWVuc2lvblR5cGVcbiAgICAgID8gQmluZGVkVXBkYXRlclR5cGVcbiAgICAgIDogQmluZGVkQWdncmVnYXRlZFVwZGF0ZXJUeXBlO1xuICAgIGxldCB1cGRhdGVyczogTG9jYWxVcGRhdGVyVHlwZVtdID0gW107XG4gICAgY29uc3QgbmVlZFVwZGF0ZVN0ZXAgPSBkaW1lbnNpb24udXBkYXRlU3RlcHMuZmluZEluZGV4KHN0ZXAgPT5cbiAgICAgIHRoaXMuX25lZWRVcGRhdGVTdGVwKHN0ZXAsIG9sZFByb3BzLCBwcm9wcywgY2hhbmdlRmxhZ3MpXG4gICAgKTtcblxuICAgIGlmIChuZWVkVXBkYXRlU3RlcCA+IC0xKSB7XG4gICAgICB1cGRhdGVycyA9IHVwZGF0ZXJzLmNvbmNhdCh0aGlzLl9hY2N1bXVsYXRlVXBkYXRlcnMobmVlZFVwZGF0ZVN0ZXAsIHByb3BzLCBkaW1lbnNpb24pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXBkYXRlcnM7XG4gIH1cblxuICBfZ2V0QWdncmVnYXRpb25DaGFuZ2VzKG9sZFByb3BzLCBwcm9wcywgY2hhbmdlRmxhZ3MpIHtcbiAgICBjb25zdCB1cGRhdGVycyA9IHRoaXMuX2dldEFsbFVwZGF0ZXJzKHRoaXMuYWdncmVnYXRpb25VcGRhdGVyLCBvbGRQcm9wcywgcHJvcHMsIGNoYW5nZUZsYWdzKTtcbiAgICByZXR1cm4gdXBkYXRlcnMubGVuZ3RoID8gdXBkYXRlcnMgOiBudWxsO1xuICB9XG5cbiAgX2dldERpbWVuc2lvbkNoYW5nZXMob2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFncykge1xuICAgIGxldCB1cGRhdGVyczogQmluZGVkVXBkYXRlclR5cGVbXSA9IFtdO1xuXG4gICAgLy8gZ2V0IGRpbWVuc2lvbiB0byBiZSB1cGRhdGVkXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5kaW1lbnNpb25VcGRhdGVycykge1xuICAgICAgLy8gcmV0dXJuIHRoZSBmaXJzdCB0cmlnZ2VyZWQgdXBkYXRlciBmb3IgZWFjaCBkaW1lbnNpb25cbiAgICAgIGNvbnN0IGRpbWVuc2lvbiA9IHRoaXMuZGltZW5zaW9uVXBkYXRlcnNba2V5XTtcbiAgICAgIGNvbnN0IGRpbWVuc2lvblVwZGF0ZXJzID0gdGhpcy5fZ2V0QWxsVXBkYXRlcnMoZGltZW5zaW9uLCBvbGRQcm9wcywgcHJvcHMsIGNoYW5nZUZsYWdzKTtcbiAgICAgIHVwZGF0ZXJzID0gdXBkYXRlcnMuY29uY2F0KGRpbWVuc2lvblVwZGF0ZXJzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXBkYXRlcnMubGVuZ3RoID8gdXBkYXRlcnMgOiBudWxsO1xuICB9XG5cbiAgZ2V0VXBkYXRlVHJpZ2dlcnMocHJvcHMpIHtcbiAgICBjb25zdCBfdXBkYXRlVHJpZ2dlcnMgPSBwcm9wcy51cGRhdGVUcmlnZ2VycyB8fCB7fTtcbiAgICBjb25zdCB1cGRhdGVUcmlnZ2VycyA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5kaW1lbnNpb25VcGRhdGVycykge1xuICAgICAgY29uc3Qge2FjY2Vzc29yLCB1cGRhdGVTdGVwc306IHthY2Nlc3NvcjsgdXBkYXRlU3RlcHM6IFVwZGF0ZVN0ZXBzVHlwZVtdfSA9XG4gICAgICAgIHRoaXMuZGltZW5zaW9uVXBkYXRlcnNba2V5XTtcbiAgICAgIC8vIGZvbGQgZGltZW5zaW9uIHRyaWdnZXJzIGludG8gZWFjaCBhY2Nlc3NvclxuICAgICAgdXBkYXRlVHJpZ2dlcnNbYWNjZXNzb3JdID0ge307XG5cbiAgICAgIHVwZGF0ZVN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICAgIE9iamVjdC52YWx1ZXMoc3RlcC50cmlnZ2VycyB8fCBbXSkuZm9yRWFjaCgoe3Byb3AsIHVwZGF0ZVRyaWdnZXJ9KSA9PiB7XG4gICAgICAgICAgaWYgKHVwZGF0ZVRyaWdnZXIpIHtcbiAgICAgICAgICAgIC8vIGlmIHByb3AgaXMgYmFzZWQgb24gdXBkYXRlVHJpZ2dlciBlLmcuIGdldENvbG9yVmFsdWUsIGdldENvbG9yV2VpZ2h0XG4gICAgICAgICAgICAvLyBhbmQgdXBkYXRlVHJpZ2dlcnMgaXMgcGFzc2VkIGluIGZyb20gbGF5ZXIgcHJvcFxuICAgICAgICAgICAgLy8gZm9sZCB0aGUgdXBkYXRlVHJpZ2dlcnMgaW50byBhY2Nlc3NvclxuICAgICAgICAgICAgY29uc3QgZnJvbVByb3AgPSBfdXBkYXRlVHJpZ2dlcnNbdXBkYXRlVHJpZ2dlcl07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGZyb21Qcm9wID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShmcm9tUHJvcCkpIHtcbiAgICAgICAgICAgICAgLy8gaWYgdXBkYXRlVHJpZ2dlciBpcyBhbiBvYmplY3Qgc3ByZWFkIGl0XG4gICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odXBkYXRlVHJpZ2dlcnNbYWNjZXNzb3JdLCBmcm9tUHJvcCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZyb21Qcm9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgdXBkYXRlVHJpZ2dlcnNbYWNjZXNzb3JdW3Byb3BdID0gZnJvbVByb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGlmIHByb3AgaXMgbm90IGJhc2VkIG9uIHVwZGF0ZVRyaWdnZXJcbiAgICAgICAgICAgIHVwZGF0ZVRyaWdnZXJzW2FjY2Vzc29yXVtwcm9wXSA9IHByb3BzW3Byb3BdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXBkYXRlVHJpZ2dlcnM7XG4gIH1cblxuICBnZXRQaWNraW5nSW5mbyh7aW5mb30sIGxheWVyUHJvcHMpIHtcbiAgICBjb25zdCBpc1BpY2tlZCA9IGluZm8ucGlja2VkICYmIGluZm8uaW5kZXggPiAtMTtcbiAgICBsZXQgb2JqZWN0ID0gbnVsbDtcbiAgICBjb25zdCBjZWxsID0gaXNQaWNrZWQgPyB0aGlzLnN0YXRlLmxheWVyRGF0YS5kYXRhW2luZm8uaW5kZXhdIDogbnVsbDtcbiAgICBpZiAoY2VsbCkge1xuICAgICAgbGV0IGJpbkluZm8gPSB7fTtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuZGltZW5zaW9uVXBkYXRlcnMpIHtcbiAgICAgICAgY29uc3Qge2dldFBpY2tpbmdJbmZvfSA9IHRoaXMuZGltZW5zaW9uVXBkYXRlcnNba2V5XTtcbiAgICAgICAgaWYgKHR5cGVvZiBnZXRQaWNraW5nSW5mbyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGJpbkluZm8gPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICBiaW5JbmZvLFxuICAgICAgICAgICAgZ2V0UGlja2luZ0luZm8odGhpcy5zdGF0ZS5kaW1lbnNpb25zW2tleV0sIGNlbGwsIGxheWVyUHJvcHMpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBvYmplY3QgPSBPYmplY3QuYXNzaWduKGJpbkluZm8sIGNlbGwsIHtcbiAgICAgICAgcG9pbnRzOiBjZWxsLmZpbHRlcmVkUG9pbnRzIHx8IGNlbGwucG9pbnRzXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBhZGQgYmluICBhbmQgIHRvIGluZm9cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihpbmZvLCB7XG4gICAgICBwaWNrZWQ6IEJvb2xlYW4ob2JqZWN0KSxcbiAgICAgIC8vIG92ZXJyaWRlIG9iamVjdCB3aXRoIHBpY2tlZCBjZWxsXG4gICAgICBvYmplY3RcbiAgICB9KTtcbiAgfVxuXG4gIGdldEFjY2Vzc29yKGRpbWVuc2lvbktleSwgbGF5ZXJQcm9wcykge1xuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuZGltZW5zaW9uVXBkYXRlcnMsIGRpbWVuc2lvbktleSkpIHtcbiAgICAgIHJldHVybiBub3A7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRpbWVuc2lvblVwZGF0ZXJzW2RpbWVuc2lvbktleV0uZ2V0U3ViTGF5ZXJBY2Nlc3NvcihcbiAgICAgIHRoaXMuc3RhdGUuZGltZW5zaW9uc1tkaW1lbnNpb25LZXldLFxuICAgICAgdGhpcy5kaW1lbnNpb25VcGRhdGVyc1tkaW1lbnNpb25LZXldLFxuICAgICAgbGF5ZXJQcm9wc1xuICAgICk7XG4gIH1cbn1cblxuQ1BVQWdncmVnYXRvci5nZXREaW1lbnNpb25TY2FsZSA9IGdldERpbWVuc2lvblNjYWxlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxrQkFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBRUEs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
|
593
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWdncmVnYXRpb25MYXllcnMiLCJyZXF1aXJlIiwiX3dpbmRvdyIsIl91dGlscyIsIl9jb25zdGFudHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIkRFQ0tfQUdHUkVHQVRJT05fTUFQIiwiZXhwb3J0cyIsIkFHR1JFR0FUSU9OX09QRVJBVElPTiIsIlNVTSIsIkFHR1JFR0FUSU9OX1RZUEVTIiwic3VtIiwiTUVBTiIsImF2ZXJhZ2UiLCJNSU4iLCJtaW5pbXVtIiwiTUFYIiwibWF4aW11bSIsImdldFZhbHVlRnVuYyIsImFnZ3JlZ2F0aW9uIiwiYWNjZXNzb3IiLCJ0b1VwcGVyQ2FzZSIsIkNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0Iiwib3AiLCJrZXBsZXJPcCIsInB0cyIsImFnZ3JlZ2F0ZSIsIm1hcCIsImdldFNjYWxlRnVuY3RvciIsInNjYWxlVHlwZSIsIlNDQUxFX0ZVTkMiLCJxdWFudGl6ZSIsIm5vcCIsImdldEdldFZhbHVlIiwic3RlcCIsInByb3BzIiwiZGltZW5zaW9uVXBkYXRlciIsImtleSIsIl9zdGVwJHRyaWdnZXJzIiwidHJpZ2dlcnMiLCJ2YWx1ZSIsIndlaWdodCIsImdldFZhbHVlIiwicHJvcCIsIl9zZXREaW1lbnNpb25TdGF0ZSIsImdldERpbWVuc2lvblNvcnRlZEJpbnMiLCJzdGF0ZSIsImRpbWVuc2lvbnMiLCJzb3J0ZWRCaW5zIiwiQmluU29ydGVyIiwibGF5ZXJEYXRhIiwiZGF0YSIsImZpbHRlckRhdGEiLCJfZmlsdGVyRGF0YSIsImdldERpbWVuc2lvblZhbHVlRG9tYWluIiwiX3N0ZXAkdHJpZ2dlcnMyIiwibG93ZXJQZXJjZW50aWxlIiwidXBwZXJQZXJjZW50aWxlIiwidmFsdWVEb21haW4iLCJnZXRWYWx1ZURvbWFpbkJ5U2NhbGUiLCJjb2xvclNjYWxlVHlwZSIsImNvbG9yTWFwIiwicmVkdWNlIiwicHJldiIsImN1ciIsIk51bWJlciIsImlzRmluaXRlIiwiZ2V0RGltZW5zaW9uU2NhbGUiLCJfc3RlcCR0cmlnZ2VyczMiLCJkb21haW4iLCJyYW5nZSIsImZpeGVkIiwib25TZXQiLCJkaW1lbnNpb25SYW5nZSIsImRpbWVuc2lvbkRvbWFpbiIsImRpbWVuc2lvbkZpeGVkIiwiQm9vbGVhbiIsInNjYWxlRnVuY3RvciIsInNjYWxlRnVuYyIsIl90eXBlb2YyIiwiYWdncmVnYXRlZEJpbnMiLCJiaW5NYXAiLCJub3JtYWxpemVSZXN1bHQiLCJyZXN1bHQiLCJ1bmRlZmluZWQiLCJoZXhhZ29ucyIsImFzc2lnbiIsImdldEFnZ3JlZ2F0ZWREYXRhIiwiYWdncmVnYXRpb25QYXJhbXMiLCJhZ2dyIiwiYWdncmVnYXRvciIsInNldFN0YXRlIiwiZGVmYXVsdEFnZ3JlZ2F0aW9uIiwidXBkYXRlU3RlcHMiLCJjZWxsU2l6ZSIsInBvc2l0aW9uIiwidXBkYXRlVHJpZ2dlciIsInVwZGF0ZXIiLCJnZXRTdWJMYXllckFjY2Vzc29yIiwiZGltZW5zaW9uU3RhdGUiLCJkaW1lbnNpb24iLCJjZWxsIiwiYmluIiwiaW5kZXgiLCJjb3VudHMiLCJudWxsVmFsdWUiLCJjdiIsImlzVmFsdWVJbkRvbWFpbiIsIm1pblZhbHVlIiwibWF4VmFsdWUiLCJkZWZhdWx0Q29sb3JEaW1lbnNpb24iLCJnZXRQaWNraW5nSW5mbyIsImNvbG9yVmFsdWUiLCJkZWZhdWx0RWxldmF0aW9uRGltZW5zaW9uIiwiZWxldmF0aW9uVmFsdWUiLCJkZWZhdWx0RGltZW5zaW9ucyIsIkNQVUFnZ3JlZ2F0b3IiLCJvcHRzIiwiX2NsYXNzQ2FsbENoZWNrMiIsImluaXRpYWxTdGF0ZSIsImRpbWVuc2lvblVwZGF0ZXJzIiwiYWdncmVnYXRpb25VcGRhdGVyIiwiX2FkZERpbWVuc2lvbiIsIl9jcmVhdGVDbGFzczIiLCJ1cGRhdGVBbGxEaW1lbnNpb25zIiwiZGltZW5zaW9uQ2hhbmdlcyIsImRpbSIsInVwZGF0ZXJzIiwiX2FjY3VtdWxhdGVVcGRhdGVycyIsImYiLCJ1cGRhdGVBZ2dyZWdhdGlvbiIsInVwZGF0ZVN0YXRlIiwib2xkUHJvcHMiLCJjaGFuZ2VGbGFncyIsImRhdGFDaGFuZ2VkIiwiYWdncmVnYXRpb25DaGFuZ2VzIiwiX2dldEFnZ3JlZ2F0aW9uQ2hhbmdlcyIsIl9nZXREaW1lbnNpb25DaGFuZ2VzIiwidXBkYXRlT2JqZWN0IiwiX2FkZEFnZ3JlZ2F0aW9uIiwiX3RoaXMiLCJfbmVlZFVwZGF0ZVN0ZXAiLCJkaW1lbnNpb25TdGVwIiwidmFsdWVzIiwic29tZSIsIml0ZW0iLCJ1cGRhdGVUcmlnZ2Vyc0NoYW5nZWQiLCJhbGwiLCJpIiwiYmluZCIsIl9nZXRBbGxVcGRhdGVycyIsIl90aGlzMiIsIm5lZWRVcGRhdGVTdGVwIiwiZmluZEluZGV4IiwiZ2V0VXBkYXRlVHJpZ2dlcnMiLCJfdGhpczMiLCJfdXBkYXRlVHJpZ2dlcnMiLCJ1cGRhdGVUcmlnZ2VycyIsIl9sb29wIiwiX3RoaXMzJGRpbWVuc2lvblVwZGF0IiwiX3JlZiIsImZyb21Qcm9wIiwiQXJyYXkiLCJpc0FycmF5IiwiX3JlZjIiLCJsYXllclByb3BzIiwiaW5mbyIsImlzUGlja2VkIiwicGlja2VkIiwib2JqZWN0IiwiYmluSW5mbyIsInBvaW50cyIsImZpbHRlcmVkUG9pbnRzIiwiZ2V0QWNjZXNzb3IiLCJkaW1lbnNpb25LZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGF5ZXItdXRpbHMvY3B1LWFnZ3JlZ2F0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLyogZXNsaW50LWRpc2FibGUgZ3VhcmQtZm9yLWluICovXG5pbXBvcnQge0FHR1JFR0FUSU9OX09QRVJBVElPTiwgX0JpblNvcnRlciBhcyBCaW5Tb3J0ZXJ9IGZyb20gJ0BkZWNrLmdsL2FnZ3JlZ2F0aW9uLWxheWVycyc7XG5pbXBvcnQge2NvbnNvbGUgYXMgQ29uc29sZX0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5cbmltcG9ydCB7YWdncmVnYXRlfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7QUdHUkVHQVRJT05fVFlQRVMsIFNDQUxFX0ZVTkN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7UkdCQUNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgVXBkYXRlclR5cGUgPSAodGhpczogQ1BVQWdncmVnYXRvciwgc3RlcCwgcHJvcHMsIGRpbWVuc2lvblVwZGF0ZXIpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBCaW5kZWRVcGRhdGVyVHlwZSA9ICgpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBBZ2dyZWdhdGVkVXBkYXRlclR5cGUgPSAoXG4gIHRoaXM6IENQVUFnZ3JlZ2F0b3IsXG4gIHN0ZXAsXG4gIHByb3BzLFxuICBhZ2dyZWdhdGlvbixcbiAgYWdncmVnYXRpb25QYXJhbXNcbikgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIEJpbmRlZEFnZ3JlZ2F0ZWRVcGRhdGVyVHlwZSA9IChhZ2dyZWdhdGlvblBhcmFtcykgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgVXBkYXRlU3RlcHNUeXBlID0ge1xuICBrZXk6IHN0cmluZztcbiAgdHJpZ2dlcnM6IHtcbiAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICBwcm9wOiBzdHJpbmc7XG4gICAgICB1cGRhdGVUcmlnZ2VyPzogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIG9uU2V0Pzoge1xuICAgIHByb3BzOiBzdHJpbmc7XG4gIH07XG4gIHVwZGF0ZXI6IFVwZGF0ZXJUeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgRGltZW5zaW9uVHlwZTxWYWx1ZVR5cGUgPSBhbnk+ID0ge1xuICBrZXk6IHN0cmluZztcbiAgYWNjZXNzb3I6IHN0cmluZztcbiAgZ2V0UGlja2luZ0luZm86IChkaW1lbnNpb25TdGF0ZSwgY2VsbCwgbGF5ZXJQcm9wcz8pID0+IGFueTtcbiAgbnVsbFZhbHVlOiBWYWx1ZVR5cGU7XG4gIHVwZGF0ZVN0ZXBzOiBVcGRhdGVTdGVwc1R5cGVbXTtcbiAgZ2V0U3ViTGF5ZXJBY2Nlc3Nvcjtcbn07XG5cbmV4cG9ydCB0eXBlIEFnZ3JlZ2F0aW9uVXBkYXRlU3RlcHNUeXBlID0ge1xuICBrZXk6IHN0cmluZztcbiAgdHJpZ2dlcnM6IHtcbiAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICBwcm9wOiBzdHJpbmc7XG4gICAgICB1cGRhdGVUcmlnZ2VyPzogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIHVwZGF0ZXI6IEFnZ3JlZ2F0ZWRVcGRhdGVyVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIEFnZ3JlZ2F0aW9uVHlwZSA9IHtcbiAga2V5OiBzdHJpbmc7XG4gIHVwZGF0ZVN0ZXBzOiBBZ2dyZWdhdGlvblVwZGF0ZVN0ZXBzVHlwZVtdO1xufTtcblxuZXhwb3J0IGNvbnN0IERFQ0tfQUdHUkVHQVRJT05fTUFQID0ge1xuICBbQUdHUkVHQVRJT05fT1BFUkFUSU9OLlNVTV06IEFHR1JFR0FUSU9OX1RZUEVTLnN1bSxcbiAgW0FHR1JFR0FUSU9OX09QRVJBVElPTi5NRUFOXTogQUdHUkVHQVRJT05fVFlQRVMuYXZlcmFnZSxcbiAgW0FHR1JFR0FUSU9OX09QRVJBVElPTi5NSU5dOiBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICBbQUdHUkVHQVRJT05fT1BFUkFUSU9OLk1BWF06IEFHR1JFR0FUSU9OX1RZUEVTLm1heGltdW1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWx1ZUZ1bmMoYWdncmVnYXRpb24sIGFjY2Vzc29yKSB7XG4gIGlmICghYWdncmVnYXRpb24gfHwgIUFHR1JFR0FUSU9OX09QRVJBVElPTlthZ2dyZWdhdGlvbi50b1VwcGVyQ2FzZSgpXSkge1xuICAgIENvbnNvbGUud2FybihgQWdncmVnYXRpb24gJHthZ2dyZWdhdGlvbn0gaXMgbm90IHN1cHBvcnRlZGApO1xuICB9XG5cbiAgY29uc3Qgb3AgPSBBR0dSRUdBVElPTl9PUEVSQVRJT05bYWdncmVnYXRpb24udG9VcHBlckNhc2UoKV0gfHwgQUdHUkVHQVRJT05fT1BFUkFUSU9OLlNVTTtcbiAgY29uc3Qga2VwbGVyT3AgPSBERUNLX0FHR1JFR0FUSU9OX01BUFtvcF07XG5cbiAgcmV0dXJuIHB0cyA9PiBhZ2dyZWdhdGUocHRzLm1hcChhY2Nlc3NvciksIGtlcGxlck9wKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlRnVuY3RvcihzY2FsZVR5cGUpIHtcbiAgaWYgKCFzY2FsZVR5cGUgfHwgIVNDQUxFX0ZVTkNbc2NhbGVUeXBlXSkge1xuICAgIENvbnNvbGUud2FybihgU2NhbGUgJHtzY2FsZVR5cGV9IGlzIG5vdCBzdXBwb3J0ZWRgKTtcbiAgfVxuICByZXR1cm4gU0NBTEVfRlVOQ1tzY2FsZVR5cGVdIHx8IFNDQUxFX0ZVTkMucXVhbnRpemU7XG59XG5cbmZ1bmN0aW9uIG5vcCgpIHtcbiAgcmV0dXJuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2V0VmFsdWUodGhpczogQ1BVQWdncmVnYXRvciwgc3RlcCwgcHJvcHMsIGRpbWVuc2lvblVwZGF0ZXIpIHtcbiAgY29uc3Qge2tleX0gPSBkaW1lbnNpb25VcGRhdGVyO1xuICBjb25zdCB7dmFsdWUsIHdlaWdodCwgYWdncmVnYXRpb259ID0gc3RlcC50cmlnZ2VycztcblxuICBsZXQgZ2V0VmFsdWUgPSBwcm9wc1t2YWx1ZS5wcm9wXTtcblxuICBpZiAoZ2V0VmFsdWUgPT09IG51bGwpIHtcbiAgICAvLyBJZiBgZ2V0VmFsdWVgIGlzIG5vdCBwcm92aWRlZCBmcm9tIHByb3BzLCBidWlsZCBpdCB3aXRoIGFnZ3JlZ2F0aW9uIGFuZCB3ZWlnaHQuXG4gICAgZ2V0VmFsdWUgPSBnZXRWYWx1ZUZ1bmMocHJvcHNbYWdncmVnYXRpb24ucHJvcF0sIHByb3BzW3dlaWdodC5wcm9wXSk7XG4gIH1cblxuICBpZiAoZ2V0VmFsdWUpIHtcbiAgICB0aGlzLl9zZXREaW1lbnNpb25TdGF0ZShrZXksIHtnZXRWYWx1ZX0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREaW1lbnNpb25Tb3J0ZWRCaW5zKHRoaXM6IENQVUFnZ3JlZ2F0b3IsIHN0ZXAsIHByb3BzLCBkaW1lbnNpb25VcGRhdGVyKSB7XG4gIGNvbnN0IHtrZXl9ID0gZGltZW5zaW9uVXBkYXRlcjtcbiAgY29uc3Qge2dldFZhbHVlfSA9IHRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldO1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGNvbnN0IHNvcnRlZEJpbnMgPSBuZXcgQmluU29ydGVyKHRoaXMuc3RhdGUubGF5ZXJEYXRhLmRhdGEgfHwgW10sIHtcbiAgICBnZXRWYWx1ZSxcbiAgICBmaWx0ZXJEYXRhOiBwcm9wcy5fZmlsdGVyRGF0YVxuICB9KTtcbiAgdGhpcy5fc2V0RGltZW5zaW9uU3RhdGUoa2V5LCB7c29ydGVkQmluc30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGltZW5zaW9uVmFsdWVEb21haW4odGhpczogQ1BVQWdncmVnYXRvciwgc3RlcCwgcHJvcHMsIGRpbWVuc2lvblVwZGF0ZXIpIHtcbiAgY29uc3Qge2tleX0gPSBkaW1lbnNpb25VcGRhdGVyO1xuICBjb25zdCB7XG4gICAgdHJpZ2dlcnM6IHtsb3dlclBlcmNlbnRpbGUsIHVwcGVyUGVyY2VudGlsZSwgc2NhbGVUeXBlfVxuICB9ID0gc3RlcDtcblxuICBpZiAoIXRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldLnNvcnRlZEJpbnMpIHtcbiAgICAvLyB0aGUgcHJldmlvdXMgc3RlcCBzaG91bGQgc2V0IHNvcnRlZEJpbnMsIGlmIG5vdCwgc29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgdmFsdWVEb21haW4gPVxuICAgIC8vIGZvciBsb2cgYW5kIHNxcnQgc2NhbGUsIHJldHVybnMgbGluZWFyIGRvbWFpbiBieSBkZWZhdWx0XG4gICAgLy8gVE9ETzogc3VwcG9ydCBvdGhlciBzY2FsZSBmdW5jdGlvbiBkb21haW4gaW4gYmluIHNvcnRlclxuICAgIHRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldLnNvcnRlZEJpbnMuZ2V0VmFsdWVEb21haW5CeVNjYWxlKHByb3BzW3NjYWxlVHlwZS5wcm9wXSwgW1xuICAgICAgcHJvcHNbbG93ZXJQZXJjZW50aWxlLnByb3BdLFxuICAgICAgcHJvcHNbdXBwZXJQZXJjZW50aWxlLnByb3BdXG4gICAgXSk7XG5cbiAgaWYgKHByb3BzLmNvbG9yU2NhbGVUeXBlID09PSAnY3VzdG9tJyAmJiBwcm9wcy5jb2xvck1hcCkge1xuICAgIC8vIGZvciBjdXN0b20gc2NhbGUsIHJldHVybiBjdXN0b20gYnJlYWtzIGFzIHZhbHVlIGRvbWFpbiBkaXJlY3RseVxuICAgIHZhbHVlRG9tYWluID0gcHJvcHMuY29sb3JNYXAucmVkdWNlKFxuICAgICAgKHByZXYsIGN1cikgPT4gKE51bWJlci5pc0Zpbml0ZShjdXJbMF0pID8gcHJldi5jb25jYXQoY3VyWzBdKSA6IHByZXYpLFxuICAgICAgW11cbiAgICApO1xuICB9XG5cbiAgdGhpcy5fc2V0RGltZW5zaW9uU3RhdGUoa2V5LCB7dmFsdWVEb21haW59KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpbWVuc2lvblNjYWxlKHRoaXM6IENQVUFnZ3JlZ2F0b3IsIHN0ZXAsIHByb3BzLCBkaW1lbnNpb25VcGRhdGVyKSB7XG4gIGNvbnN0IHtrZXl9ID0gZGltZW5zaW9uVXBkYXRlcjtcbiAgY29uc3Qge2RvbWFpbiwgcmFuZ2UsIHNjYWxlVHlwZSwgZml4ZWR9ID0gc3RlcC50cmlnZ2VycztcbiAgY29uc3Qge29uU2V0fSA9IHN0ZXA7XG4gIGlmICghdGhpcy5zdGF0ZS5kaW1lbnNpb25zW2tleV0udmFsdWVEb21haW4pIHtcbiAgICAvLyB0aGUgcHJldmlvdXMgc3RlcCBzaG91bGQgc2V0IHZhbHVlRG9tYWluLCBpZiBub3QsIHNvbWV0aGluZyB3ZW50IHdyb25nXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZGltZW5zaW9uUmFuZ2UgPSBwcm9wc1tyYW5nZS5wcm9wXTtcbiAgY29uc3QgZGltZW5zaW9uRG9tYWluID0gcHJvcHNbZG9tYWluLnByb3BdIHx8IHRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldLnZhbHVlRG9tYWluO1xuICBjb25zdCBkaW1lbnNpb25GaXhlZCA9IEJvb2xlYW4oZml4ZWQgJiYgcHJvcHNbZml4ZWQucHJvcF0pO1xuXG4gIGNvbnN0IHNjYWxlRnVuY3RvciA9IGdldFNjYWxlRnVuY3RvcihzY2FsZVR5cGUgJiYgcHJvcHNbc2NhbGVUeXBlLnByb3BdKSgpO1xuXG4gIGNvbnN0IHNjYWxlRnVuYyA9IHNjYWxlRnVuY3RvclxuICAgIC5kb21haW4oZGltZW5zaW9uRG9tYWluKVxuICAgIC5yYW5nZShkaW1lbnNpb25GaXhlZCA/IGRpbWVuc2lvbkRvbWFpbiA6IGRpbWVuc2lvblJhbmdlKTtcbiAgc2NhbGVGdW5jLnNjYWxlVHlwZSA9IHByb3BzLmNvbG9yU2NhbGVUeXBlO1xuXG4gIGlmICh0eXBlb2Ygb25TZXQgPT09ICdvYmplY3QnICYmIHR5cGVvZiBwcm9wc1tvblNldC5wcm9wc10gPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zdCBzb3J0ZWRCaW5zID0gdGhpcy5zdGF0ZS5kaW1lbnNpb25zW2tleV0uc29ydGVkQmlucztcbiAgICBwcm9wc1tvblNldC5wcm9wc10oe2RvbWFpbjogc2NhbGVGdW5jLmRvbWFpbigpLCBhZ2dyZWdhdGVkQmluczogc29ydGVkQmlucy5iaW5NYXB9KTtcbiAgfVxuICB0aGlzLl9zZXREaW1lbnNpb25TdGF0ZShrZXksIHtzY2FsZUZ1bmN9KTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplUmVzdWx0KHJlc3VsdDoge2hleGFnb25zPzsgbGF5ZXJEYXRhP30gPSB7fSkge1xuICAvLyBzdXBwb3J0IHByZXZpb3VzIGhleGFnb25BZ2dyZWdhdG9yIEFQSVxuICBpZiAocmVzdWx0LmhleGFnb25zKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe2RhdGE6IHJlc3VsdC5oZXhhZ29uc30sIHJlc3VsdCk7XG4gIH0gZWxzZSBpZiAocmVzdWx0LmxheWVyRGF0YSkge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHtkYXRhOiByZXN1bHQubGF5ZXJEYXRhfSwgcmVzdWx0KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZ2dyZWdhdGVkRGF0YShcbiAgdGhpczogQ1BVQWdncmVnYXRvcixcbiAgc3RlcCxcbiAgcHJvcHMsXG4gIGFnZ3JlZ2F0aW9uLFxuICBhZ2dyZWdhdGlvblBhcmFtc1xuKSB7XG4gIGNvbnN0IHtcbiAgICB0cmlnZ2Vyczoge2FnZ3JlZ2F0b3I6IGFnZ3J9XG4gIH0gPSBzdGVwO1xuICBjb25zdCBhZ2dyZWdhdG9yID0gcHJvcHNbYWdnci5wcm9wXTtcblxuICAvLyByZXN1bHQgc2hvdWxkIGNvbnRhaW4gYSBkYXRhIGFycmF5IGFuZCBvdGhlciBwcm9wc1xuICAvLyByZXN1bHQgPSB7ZGF0YTogW10sIC4uLm90aGVyIHByb3BzfVxuICBjb25zdCByZXN1bHQgPSBhZ2dyZWdhdG9yKHByb3BzLCBhZ2dyZWdhdGlvblBhcmFtcyk7XG4gIHRoaXMuc2V0U3RhdGUoe1xuICAgIGxheWVyRGF0YTogbm9ybWFsaXplUmVzdWx0KHJlc3VsdClcbiAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0QWdncmVnYXRpb246IEFnZ3JlZ2F0aW9uVHlwZSA9IHtcbiAga2V5OiAncG9zaXRpb24nLFxuICB1cGRhdGVTdGVwczogW1xuICAgIHtcbiAgICAgIGtleTogJ2FnZ3JlZ2F0ZScsXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICBjZWxsU2l6ZToge1xuICAgICAgICAgIHByb3A6ICdjZWxsU2l6ZSdcbiAgICAgICAgfSxcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICBwcm9wOiAnZ2V0UG9zaXRpb24nLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXI6ICdnZXRQb3NpdGlvbidcbiAgICAgICAgfSxcbiAgICAgICAgYWdncmVnYXRvcjoge1xuICAgICAgICAgIHByb3A6ICdncmlkQWdncmVnYXRvcidcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IGdldEFnZ3JlZ2F0ZWREYXRhXG4gICAgfVxuICBdXG59O1xuXG5mdW5jdGlvbiBnZXRTdWJMYXllckFjY2Vzc29yKGRpbWVuc2lvblN0YXRlLCBkaW1lbnNpb24pIHtcbiAgcmV0dXJuIGNlbGwgPT4ge1xuICAgIGNvbnN0IHtzb3J0ZWRCaW5zLCBzY2FsZUZ1bmN9ID0gZGltZW5zaW9uU3RhdGU7XG4gICAgY29uc3QgYmluID0gc29ydGVkQmlucy5iaW5NYXBbY2VsbC5pbmRleF07XG5cbiAgICBpZiAoYmluICYmIGJpbi5jb3VudHMgPT09IDApIHtcbiAgICAgIC8vIG5vIHBvaW50cyBsZWZ0IGluIGJpbiBhZnRlciBmaWx0ZXJpbmdcbiAgICAgIHJldHVybiBkaW1lbnNpb24ubnVsbFZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IGN2ID0gYmluICYmIGJpbi52YWx1ZTtcbiAgICBjb25zdCBkb21haW4gPSBzY2FsZUZ1bmMuZG9tYWluKCk7XG5cbiAgICBjb25zdCBpc1ZhbHVlSW5Eb21haW4gPVxuICAgICAgc2NhbGVGdW5jLnNjYWxlVHlwZSA9PT0gJ2N1c3RvbSdcbiAgICAgICAgPyBjdiA+PSBzb3J0ZWRCaW5zLm1pblZhbHVlICYmIGN2IDw9IHNvcnRlZEJpbnMubWF4VmFsdWVcbiAgICAgICAgOiBjdiA+PSBkb21haW5bMF0gJiYgY3YgPD0gZG9tYWluW2RvbWFpbi5sZW5ndGggLSAxXTtcblxuICAgIC8vIGlmIGNlbGwgdmFsdWUgaXMgb3V0c2lkZSBkb21haW4sIHNldCBhbHBoYSB0byAwXG4gICAgcmV0dXJuIGlzVmFsdWVJbkRvbWFpbiA/IHNjYWxlRnVuYyhjdikgOiBkaW1lbnNpb24ubnVsbFZhbHVlO1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbG9yRGltZW5zaW9uOiBEaW1lbnNpb25UeXBlPFJHQkFDb2xvcj4gPSB7XG4gIGtleTogJ2ZpbGxDb2xvcicsXG4gIGFjY2Vzc29yOiAnZ2V0RmlsbENvbG9yJyxcbiAgZ2V0UGlja2luZ0luZm86IChkaW1lbnNpb25TdGF0ZSwgY2VsbCkgPT4ge1xuICAgIGlmICghY2VsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCB7c29ydGVkQmluc30gPSBkaW1lbnNpb25TdGF0ZTtcbiAgICBjb25zdCBjb2xvclZhbHVlID0gc29ydGVkQmlucy5iaW5NYXBbY2VsbC5pbmRleF0gJiYgc29ydGVkQmlucy5iaW5NYXBbY2VsbC5pbmRleF0udmFsdWU7XG4gICAgcmV0dXJuIHtjb2xvclZhbHVlfTtcbiAgfSxcbiAgbnVsbFZhbHVlOiBbMCwgMCwgMCwgMF0sXG4gIHVwZGF0ZVN0ZXBzOiBbXG4gICAge1xuICAgICAga2V5OiAnZ2V0VmFsdWUnLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBwcm9wOiAnZ2V0Q29sb3JWYWx1ZScsXG4gICAgICAgICAgdXBkYXRlVHJpZ2dlcjogJ2dldENvbG9yVmFsdWUnXG4gICAgICAgIH0sXG4gICAgICAgIHdlaWdodDoge1xuICAgICAgICAgIHByb3A6ICdnZXRDb2xvcldlaWdodCcsXG4gICAgICAgICAgdXBkYXRlVHJpZ2dlcjogJ2dldENvbG9yV2VpZ2h0J1xuICAgICAgICB9LFxuICAgICAgICBhZ2dyZWdhdGlvbjoge1xuICAgICAgICAgIHByb3A6ICdjb2xvckFnZ3JlZ2F0aW9uJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXBkYXRlcjogZ2V0R2V0VmFsdWVcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2dldEJpbnMnLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgX2ZpbHRlckRhdGE6IHtcbiAgICAgICAgICBwcm9wOiAnX2ZpbHRlckRhdGEnLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXI6ICdfZmlsdGVyRGF0YSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IGdldERpbWVuc2lvblNvcnRlZEJpbnNcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2dldERvbWFpbicsXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICBsb3dlclBlcmNlbnRpbGU6IHtcbiAgICAgICAgICBwcm9wOiAnbG93ZXJQZXJjZW50aWxlJ1xuICAgICAgICB9LFxuICAgICAgICB1cHBlclBlcmNlbnRpbGU6IHtcbiAgICAgICAgICBwcm9wOiAndXBwZXJQZXJjZW50aWxlJ1xuICAgICAgICB9LFxuICAgICAgICBzY2FsZVR5cGU6IHtwcm9wOiAnY29sb3JTY2FsZVR5cGUnfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IGdldERpbWVuc2lvblZhbHVlRG9tYWluXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdnZXRTY2FsZUZ1bmMnLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgZG9tYWluOiB7cHJvcDogJ2NvbG9yRG9tYWluJ30sXG4gICAgICAgIHJhbmdlOiB7cHJvcDogJ2NvbG9yUmFuZ2UnfSxcbiAgICAgICAgc2NhbGVUeXBlOiB7cHJvcDogJ2NvbG9yU2NhbGVUeXBlJ31cbiAgICAgIH0sXG4gICAgICBvblNldDoge1xuICAgICAgICBwcm9wczogJ29uU2V0Q29sb3JEb21haW4nXG4gICAgICB9LFxuICAgICAgdXBkYXRlcjogZ2V0RGltZW5zaW9uU2NhbGVcbiAgICB9XG4gIF0sXG4gIGdldFN1YkxheWVyQWNjZXNzb3Jcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RWxldmF0aW9uRGltZW5zaW9uOiBEaW1lbnNpb25UeXBlPG51bWJlcj4gPSB7XG4gIGtleTogJ2VsZXZhdGlvbicsXG4gIGFjY2Vzc29yOiAnZ2V0RWxldmF0aW9uJyxcbiAgZ2V0UGlja2luZ0luZm86IChkaW1lbnNpb25TdGF0ZSwgY2VsbCkgPT4ge1xuICAgIGlmICghY2VsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCB7c29ydGVkQmluc30gPSBkaW1lbnNpb25TdGF0ZTtcbiAgICBjb25zdCBlbGV2YXRpb25WYWx1ZSA9IHNvcnRlZEJpbnMuYmluTWFwW2NlbGwuaW5kZXhdICYmIHNvcnRlZEJpbnMuYmluTWFwW2NlbGwuaW5kZXhdLnZhbHVlO1xuICAgIHJldHVybiB7ZWxldmF0aW9uVmFsdWV9O1xuICB9LFxuICBudWxsVmFsdWU6IC0xLFxuICB1cGRhdGVTdGVwczogW1xuICAgIHtcbiAgICAgIGtleTogJ2dldFZhbHVlJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgcHJvcDogJ2dldEVsZXZhdGlvblZhbHVlJyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnZ2V0RWxldmF0aW9uVmFsdWUnXG4gICAgICAgIH0sXG4gICAgICAgIHdlaWdodDoge1xuICAgICAgICAgIHByb3A6ICdnZXRFbGV2YXRpb25XZWlnaHQnLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXI6ICdnZXRFbGV2YXRpb25XZWlnaHQnXG4gICAgICAgIH0sXG4gICAgICAgIGFnZ3JlZ2F0aW9uOiB7XG4gICAgICAgICAgcHJvcDogJ2VsZXZhdGlvbkFnZ3JlZ2F0aW9uJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXBkYXRlcjogZ2V0R2V0VmFsdWVcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2dldEJpbnMnLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgX2ZpbHRlckRhdGE6IHtcbiAgICAgICAgICBwcm9wOiAnX2ZpbHRlckRhdGEnLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXI6ICdfZmlsdGVyRGF0YSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IGdldERpbWVuc2lvblNvcnRlZEJpbnNcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2dldERvbWFpbicsXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICBsb3dlclBlcmNlbnRpbGU6IHtcbiAgICAgICAgICBwcm9wOiAnZWxldmF0aW9uTG93ZXJQZXJjZW50aWxlJ1xuICAgICAgICB9LFxuICAgICAgICB1cHBlclBlcmNlbnRpbGU6IHtcbiAgICAgICAgICBwcm9wOiAnZWxldmF0aW9uVXBwZXJQZXJjZW50aWxlJ1xuICAgICAgICB9LFxuICAgICAgICBzY2FsZVR5cGU6IHtwcm9wOiAnZWxldmF0aW9uU2NhbGVUeXBlJ31cbiAgICAgIH0sXG4gICAgICB1cGRhdGVyOiBnZXREaW1lbnNpb25WYWx1ZURvbWFpblxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZ2V0U2NhbGVGdW5jJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIGZpeGVkOiB7cHJvcDogJ2VsZXZhdGlvbkZpeGVkJ30sXG4gICAgICAgIGRvbWFpbjoge3Byb3A6ICdlbGV2YXRpb25Eb21haW4nfSxcbiAgICAgICAgcmFuZ2U6IHtwcm9wOiAnZWxldmF0aW9uUmFuZ2UnfSxcbiAgICAgICAgc2NhbGVUeXBlOiB7cHJvcDogJ2VsZXZhdGlvblNjYWxlVHlwZSd9XG4gICAgICB9LFxuICAgICAgb25TZXQ6IHtcbiAgICAgICAgcHJvcHM6ICdvblNldEVsZXZhdGlvbkRvbWFpbidcbiAgICAgIH0sXG4gICAgICB1cGRhdGVyOiBnZXREaW1lbnNpb25TY2FsZVxuICAgIH1cbiAgXSxcbiAgZ2V0U3ViTGF5ZXJBY2Nlc3NvclxufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHREaW1lbnNpb25zID0gW2RlZmF1bHRDb2xvckRpbWVuc2lvbiwgZGVmYXVsdEVsZXZhdGlvbkRpbWVuc2lvbl07XG5cbmV4cG9ydCB0eXBlIENQVUFnZ3JlZ2F0b3JTdGF0ZSA9IHtcbiAgbGF5ZXJEYXRhOiB7ZGF0YT99O1xuICBkaW1lbnNpb25zOiBvYmplY3Q7XG4gIGdlb0pTT04/O1xuICBjbHVzdGVyQnVpbGRlcj87XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDUFVBZ2dyZWdhdG9yIHtcbiAgc3RhdGljIGdldERpbWVuc2lvblNjYWxlOiBhbnk7XG4gIHN0YXRlOiBDUFVBZ2dyZWdhdG9yU3RhdGU7XG4gIGRpbWVuc2lvblVwZGF0ZXJzOiB7W2tleTogc3RyaW5nXTogRGltZW5zaW9uVHlwZX07XG4gIGFnZ3JlZ2F0aW9uVXBkYXRlcjogQWdncmVnYXRpb25UeXBlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG9wdHM6IHtcbiAgICAgIGluaXRpYWxTdGF0ZT86IENQVUFnZ3JlZ2F0b3JTdGF0ZTtcbiAgICAgIGRpbWVuc2lvbnM/OiBEaW1lbnNpb25UeXBlW107XG4gICAgICBhZ2dyZWdhdGlvbj86IEFnZ3JlZ2F0aW9uVHlwZTtcbiAgICB9ID0ge31cbiAgKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGxheWVyRGF0YToge30sXG4gICAgICBkaW1lbnNpb25zOiB7XG4gICAgICAgIC8vIGNvbG9yOiB7XG4gICAgICAgIC8vICAgZ2V0VmFsdWU6IG51bGwsXG4gICAgICAgIC8vICAgZG9tYWluOiBudWxsLFxuICAgICAgICAvLyAgIHNvcnRlZEJpbnM6IG51bGwsXG4gICAgICAgIC8vICAgc2NhbGVGdW5jOiBub3BcbiAgICAgICAgLy8gfSxcbiAgICAgICAgLy8gZWxldmF0aW9uOiB7XG4gICAgICAgIC8vICAgZ2V0VmFsdWU6IG51bGwsXG4gICAgICAgIC8vICAgZG9tYWluOiBudWxsLFxuICAgICAgICAvLyAgIHNvcnRlZEJpbnM6IG51bGwsXG4gICAgICAgIC8vICAgc2NhbGVGdW5jOiBub3BcbiAgICAgICAgLy8gfVxuICAgICAgfSxcbiAgICAgIC4uLm9wdHMuaW5pdGlhbFN0YXRlXG4gICAgfTtcblxuICAgIHRoaXMuZGltZW5zaW9uVXBkYXRlcnMgPSB7fTtcbiAgICB0aGlzLmFnZ3JlZ2F0aW9uVXBkYXRlciA9IG9wdHMuYWdncmVnYXRpb24gfHwgZGVmYXVsdEFnZ3JlZ2F0aW9uO1xuXG4gICAgdGhpcy5fYWRkRGltZW5zaW9uKG9wdHMuZGltZW5zaW9ucyB8fCBkZWZhdWx0RGltZW5zaW9ucyk7XG4gIH1cblxuICBzdGF0aWMgZGVmYXVsdERpbWVuc2lvbnMoKSB7XG4gICAgcmV0dXJuIGRlZmF1bHREaW1lbnNpb25zO1xuICB9XG5cbiAgdXBkYXRlQWxsRGltZW5zaW9ucyhwcm9wcykge1xuICAgIGxldCBkaW1lbnNpb25DaGFuZ2VzOiBCaW5kZWRVcGRhdGVyVHlwZVtdID0gW107XG4gICAgLy8gdXBkYXRlIGFsbCBkaW1lbnNpb25zXG4gICAgZm9yIChjb25zdCBkaW0gaW4gdGhpcy5kaW1lbnNpb25VcGRhdGVycykge1xuICAgICAgY29uc3QgdXBkYXRlcnMgPSB0aGlzLl9hY2N1bXVsYXRlVXBkYXRlcnMoMCwgcHJvcHMsIHRoaXMuZGltZW5zaW9uVXBkYXRlcnNbZGltXSk7XG4gICAgICBkaW1lbnNpb25DaGFuZ2VzID0gZGltZW5zaW9uQ2hhbmdlcy5jb25jYXQodXBkYXRlcnMpO1xuICAgIH1cblxuICAgIGRpbWVuc2lvbkNoYW5nZXMuZm9yRWFjaChmID0+IHR5cGVvZiBmID09PSAnZnVuY3Rpb24nICYmIGYoKSk7XG4gIH1cblxuICB1cGRhdGVBZ2dyZWdhdGlvbihwcm9wcywgYWdncmVnYXRpb25QYXJhbXMpIHtcbiAgICBjb25zdCB1cGRhdGVycyA9IHRoaXMuX2FjY3VtdWxhdGVVcGRhdGVycygwLCBwcm9wcywgdGhpcy5hZ2dyZWdhdGlvblVwZGF0ZXIpO1xuICAgIHVwZGF0ZXJzLmZvckVhY2goZiA9PiB0eXBlb2YgZiA9PT0gJ2Z1bmN0aW9uJyAmJiBmKGFnZ3JlZ2F0aW9uUGFyYW1zKSk7XG4gIH1cblxuICB1cGRhdGVTdGF0ZShvcHRzLCBhZ2dyZWdhdGlvblBhcmFtcykge1xuICAgIGNvbnN0IHtvbGRQcm9wcywgcHJvcHMsIGNoYW5nZUZsYWdzfSA9IG9wdHM7XG4gICAgbGV0IGRpbWVuc2lvbkNoYW5nZXM6IEJpbmRlZFVwZGF0ZXJUeXBlW10gPSBbXTtcblxuICAgIGlmIChjaGFuZ2VGbGFncy5kYXRhQ2hhbmdlZCkge1xuICAgICAgLy8gaWYgZGF0YSBjaGFuZ2VkIHVwZGF0ZSBldmVyeXRoaW5nXG4gICAgICB0aGlzLnVwZGF0ZUFnZ3JlZ2F0aW9uKHByb3BzLCBhZ2dyZWdhdGlvblBhcmFtcyk7XG4gICAgICB0aGlzLnVwZGF0ZUFsbERpbWVuc2lvbnMocHJvcHMpO1xuXG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZTtcbiAgICB9XG5cbiAgICBjb25zdCBhZ2dyZWdhdGlvbkNoYW5nZXMgPSB0aGlzLl9nZXRBZ2dyZWdhdGlvbkNoYW5nZXMob2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFncyk7XG5cbiAgICBpZiAoYWdncmVnYXRpb25DaGFuZ2VzICYmIGFnZ3JlZ2F0aW9uQ2hhbmdlcy5sZW5ndGgpIHtcbiAgICAgIC8vIGdldCBhZ2dyZWdhdGVkRGF0YVxuICAgICAgYWdncmVnYXRpb25DaGFuZ2VzLmZvckVhY2goZiA9PiB0eXBlb2YgZiA9PT0gJ2Z1bmN0aW9uJyAmJiBmKGFnZ3JlZ2F0aW9uUGFyYW1zKSk7XG4gICAgICB0aGlzLnVwZGF0ZUFsbERpbWVuc2lvbnMocHJvcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBvbmx5IHVwZGF0ZSBkaW1lbnNpb25zXG4gICAgICBkaW1lbnNpb25DaGFuZ2VzID0gdGhpcy5fZ2V0RGltZW5zaW9uQ2hhbmdlcyhvbGRQcm9wcywgcHJvcHMsIGNoYW5nZUZsYWdzKSB8fCBbXTtcbiAgICAgIGRpbWVuc2lvbkNoYW5nZXMuZm9yRWFjaChmID0+IHR5cGVvZiBmID09PSAnZnVuY3Rpb24nICYmIGYoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RhdGU7XG4gIH1cblxuICAvLyBVcGRhdGUgcHJpdmF0ZSBzdGF0ZVxuICBzZXRTdGF0ZSh1cGRhdGVPYmplY3QpIHtcbiAgICB0aGlzLnN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zdGF0ZSwgdXBkYXRlT2JqZWN0KTtcbiAgfVxuXG4gIC8vIFVwZGF0ZSBwcml2YXRlIHN0YXRlLmRpbWVuc2lvbnNcbiAgX3NldERpbWVuc2lvblN0YXRlKGtleSwgdXBkYXRlT2JqZWN0KSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBkaW1lbnNpb25zOiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnN0YXRlLmRpbWVuc2lvbnMsIHtcbiAgICAgICAgW2tleV06IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldLCB1cGRhdGVPYmplY3QpXG4gICAgICB9KVxuICAgIH0pO1xuICB9XG5cbiAgX2FkZEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uOiBBZ2dyZWdhdGlvblR5cGUpIHtcbiAgICB0aGlzLmFnZ3JlZ2F0aW9uVXBkYXRlciA9IGFnZ3JlZ2F0aW9uO1xuICB9XG5cbiAgX2FkZERpbWVuc2lvbihkaW1lbnNpb25zOiBEaW1lbnNpb25UeXBlW10gPSBbXSkge1xuICAgIGRpbWVuc2lvbnMuZm9yRWFjaChkaW1lbnNpb24gPT4ge1xuICAgICAgY29uc3Qge2tleX0gPSBkaW1lbnNpb247XG4gICAgICB0aGlzLmRpbWVuc2lvblVwZGF0ZXJzW2tleV0gPSBkaW1lbnNpb247XG4gICAgfSk7XG4gIH1cblxuICBfbmVlZFVwZGF0ZVN0ZXAoXG4gICAgZGltZW5zaW9uU3RlcDogVXBkYXRlU3RlcHNUeXBlIHwgQWdncmVnYXRpb25VcGRhdGVTdGVwc1R5cGUsXG4gICAgb2xkUHJvcHMsXG4gICAgcHJvcHMsXG4gICAgY2hhbmdlRmxhZ3NcbiAgKSB7XG4gICAgLy8gd2hldGhlciBuZWVkIHRvIHVwZGF0ZSBjdXJyZW50IGRpbWVuc2lvbiBzdGVwXG4gICAgLy8gZGltZW5zaW9uIHN0ZXAgaXMgdGhlIHZhbHVlLCBkb21haW4sIHNjYWxlRnVuY3Rpb24gb2YgZWFjaCBkaW1lbnNpb25cbiAgICAvLyBlYWNoIHN0ZXAgaXMgYW4gb2JqZWN0IHdpdGggcHJvcGVydGllcyBsaW5rcyB0byBsYXllciBwcm9wIGFuZCB3aGV0aGVyIHRoZSBwcm9wIGlzXG4gICAgLy8gY29udHJvbGxlZCBieSB1cGRhdGVUcmlnZ2Vyc1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGRpbWVuc2lvblN0ZXAudHJpZ2dlcnMpLnNvbWUoaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbS51cGRhdGVUcmlnZ2VyKSB7XG4gICAgICAgIC8vIGNoZWNrIGJhc2VkIG9uIHVwZGF0ZVRyaWdnZXJzIGNoYW5nZSBmaXJzdFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGNoYW5nZUZsYWdzLnVwZGF0ZVRyaWdnZXJzQ2hhbmdlZCAmJlxuICAgICAgICAgIChjaGFuZ2VGbGFncy51cGRhdGVUcmlnZ2Vyc0NoYW5nZWQuYWxsIHx8XG4gICAgICAgICAgICBjaGFuZ2VGbGFncy51cGRhdGVUcmlnZ2Vyc0NoYW5nZWRbaXRlbS51cGRhdGVUcmlnZ2VyXSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIC8vIGZhbGxiYWNrIHRvIGRpcmVjdCBjb21wYXJpc29uXG4gICAgICByZXR1cm4gb2xkUHJvcHNbaXRlbS5wcm9wXSAhPT0gcHJvcHNbaXRlbS5wcm9wXTtcbiAgICB9KTtcbiAgfVxuXG4gIF9hY2N1bXVsYXRlVXBkYXRlcnM8VXBkYXRlck9iamVjdFR5cGUgZXh0ZW5kcyBEaW1lbnNpb25UeXBlIHwgQWdncmVnYXRpb25UeXBlPihcbiAgICBzdGVwLFxuICAgIHByb3BzLFxuICAgIGRpbWVuc2lvbjogVXBkYXRlck9iamVjdFR5cGVcbiAgKSB7XG4gICAgdHlwZSBMb2NhbFVwZGF0ZXJUeXBlID0gVXBkYXRlck9iamVjdFR5cGUgZXh0ZW5kcyBEaW1lbnNpb25UeXBlXG4gICAgICA/IEJpbmRlZFVwZGF0ZXJUeXBlXG4gICAgICA6IEJpbmRlZEFnZ3JlZ2F0ZWRVcGRhdGVyVHlwZTtcbiAgICBjb25zdCB1cGRhdGVyczogTG9jYWxVcGRhdGVyVHlwZVtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IHN0ZXA7IGkgPCBkaW1lbnNpb24udXBkYXRlU3RlcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHVwZGF0ZXIgPSBkaW1lbnNpb24udXBkYXRlU3RlcHNbaV0udXBkYXRlcjtcbiAgICAgIGlmICh0eXBlb2YgdXBkYXRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB1cGRhdGVycy5wdXNoKFxuICAgICAgICAgIHVwZGF0ZXIuYmluZCh0aGlzLCBkaW1lbnNpb24udXBkYXRlU3RlcHNbaV0sIHByb3BzLCBkaW1lbnNpb24pIGFzIExvY2FsVXBkYXRlclR5cGVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdXBkYXRlcnM7XG4gIH1cblxuICBfZ2V0QWxsVXBkYXRlcnM8VXBkYXRlck9iamVjdFR5cGUgZXh0ZW5kcyBEaW1lbnNpb25UeXBlIHwgQWdncmVnYXRpb25UeXBlPihcbiAgICBkaW1lbnNpb246IFVwZGF0ZXJPYmplY3RUeXBlLFxuICAgIG9sZFByb3BzLFxuICAgIHByb3BzLFxuICAgIGNoYW5nZUZsYWdzXG4gICkge1xuICAgIHR5cGUgTG9jYWxVcGRhdGVyVHlwZSA9IFVwZGF0ZXJPYmplY3RUeXBlIGV4dGVuZHMgRGltZW5zaW9uVHlwZVxuICAgICAgPyBCaW5kZWRVcGRhdGVyVHlwZVxuICAgICAgOiBCaW5kZWRBZ2dyZWdhdGVkVXBkYXRlclR5cGU7XG4gICAgbGV0IHVwZGF0ZXJzOiBMb2NhbFVwZGF0ZXJUeXBlW10gPSBbXTtcbiAgICBjb25zdCBuZWVkVXBkYXRlU3RlcCA9IGRpbWVuc2lvbi51cGRhdGVTdGVwcy5maW5kSW5kZXgoc3RlcCA9PlxuICAgICAgdGhpcy5fbmVlZFVwZGF0ZVN0ZXAoc3RlcCwgb2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFncylcbiAgICApO1xuXG4gICAgaWYgKG5lZWRVcGRhdGVTdGVwID4gLTEpIHtcbiAgICAgIHVwZGF0ZXJzID0gdXBkYXRlcnMuY29uY2F0KHRoaXMuX2FjY3VtdWxhdGVVcGRhdGVycyhuZWVkVXBkYXRlU3RlcCwgcHJvcHMsIGRpbWVuc2lvbikpO1xuICAgIH1cblxuICAgIHJldHVybiB1cGRhdGVycztcbiAgfVxuXG4gIF9nZXRBZ2dyZWdhdGlvbkNoYW5nZXMob2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFncykge1xuICAgIGNvbnN0IHVwZGF0ZXJzID0gdGhpcy5fZ2V0QWxsVXBkYXRlcnModGhpcy5hZ2dyZWdhdGlvblVwZGF0ZXIsIG9sZFByb3BzLCBwcm9wcywgY2hhbmdlRmxhZ3MpO1xuICAgIHJldHVybiB1cGRhdGVycy5sZW5ndGggPyB1cGRhdGVycyA6IG51bGw7XG4gIH1cblxuICBfZ2V0RGltZW5zaW9uQ2hhbmdlcyhvbGRQcm9wcywgcHJvcHMsIGNoYW5nZUZsYWdzKSB7XG4gICAgbGV0IHVwZGF0ZXJzOiBCaW5kZWRVcGRhdGVyVHlwZVtdID0gW107XG5cbiAgICAvLyBnZXQgZGltZW5zaW9uIHRvIGJlIHVwZGF0ZWRcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmRpbWVuc2lvblVwZGF0ZXJzKSB7XG4gICAgICAvLyByZXR1cm4gdGhlIGZpcnN0IHRyaWdnZXJlZCB1cGRhdGVyIGZvciBlYWNoIGRpbWVuc2lvblxuICAgICAgY29uc3QgZGltZW5zaW9uID0gdGhpcy5kaW1lbnNpb25VcGRhdGVyc1trZXldO1xuICAgICAgY29uc3QgZGltZW5zaW9uVXBkYXRlcnMgPSB0aGlzLl9nZXRBbGxVcGRhdGVycyhkaW1lbnNpb24sIG9sZFByb3BzLCBwcm9wcywgY2hhbmdlRmxhZ3MpO1xuICAgICAgdXBkYXRlcnMgPSB1cGRhdGVycy5jb25jYXQoZGltZW5zaW9uVXBkYXRlcnMpO1xuICAgIH1cblxuICAgIHJldHVybiB1cGRhdGVycy5sZW5ndGggPyB1cGRhdGVycyA6IG51bGw7XG4gIH1cblxuICBnZXRVcGRhdGVUcmlnZ2Vycyhwcm9wcykge1xuICAgIGNvbnN0IF91cGRhdGVUcmlnZ2VycyA9IHByb3BzLnVwZGF0ZVRyaWdnZXJzIHx8IHt9O1xuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmRpbWVuc2lvblVwZGF0ZXJzKSB7XG4gICAgICBjb25zdCB7YWNjZXNzb3IsIHVwZGF0ZVN0ZXBzfToge2FjY2Vzc29yOyB1cGRhdGVTdGVwczogVXBkYXRlU3RlcHNUeXBlW119ID1cbiAgICAgICAgdGhpcy5kaW1lbnNpb25VcGRhdGVyc1trZXldO1xuICAgICAgLy8gZm9sZCBkaW1lbnNpb24gdHJpZ2dlcnMgaW50byBlYWNoIGFjY2Vzc29yXG4gICAgICB1cGRhdGVUcmlnZ2Vyc1thY2Nlc3Nvcl0gPSB7fTtcblxuICAgICAgdXBkYXRlU3RlcHMuZm9yRWFjaChzdGVwID0+IHtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhzdGVwLnRyaWdnZXJzIHx8IFtdKS5mb3JFYWNoKCh7cHJvcCwgdXBkYXRlVHJpZ2dlcn0pID0+IHtcbiAgICAgICAgICBpZiAodXBkYXRlVHJpZ2dlcikge1xuICAgICAgICAgICAgLy8gaWYgcHJvcCBpcyBiYXNlZCBvbiB1cGRhdGVUcmlnZ2VyIGUuZy4gZ2V0Q29sb3JWYWx1ZSwgZ2V0Q29sb3JXZWlnaHRcbiAgICAgICAgICAgIC8vIGFuZCB1cGRhdGVUcmlnZ2VycyBpcyBwYXNzZWQgaW4gZnJvbSBsYXllciBwcm9wXG4gICAgICAgICAgICAvLyBmb2xkIHRoZSB1cGRhdGVUcmlnZ2VycyBpbnRvIGFjY2Vzc29yXG4gICAgICAgICAgICBjb25zdCBmcm9tUHJvcCA9IF91cGRhdGVUcmlnZ2Vyc1t1cGRhdGVUcmlnZ2VyXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZnJvbVByb3AgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGZyb21Qcm9wKSkge1xuICAgICAgICAgICAgICAvLyBpZiB1cGRhdGVUcmlnZ2VyIGlzIGFuIG9iamVjdCBzcHJlYWQgaXRcbiAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih1cGRhdGVUcmlnZ2Vyc1thY2Nlc3Nvcl0sIGZyb21Qcm9wKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZnJvbVByb3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICB1cGRhdGVUcmlnZ2Vyc1thY2Nlc3Nvcl1bcHJvcF0gPSBmcm9tUHJvcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaWYgcHJvcCBpcyBub3QgYmFzZWQgb24gdXBkYXRlVHJpZ2dlclxuICAgICAgICAgICAgdXBkYXRlVHJpZ2dlcnNbYWNjZXNzb3JdW3Byb3BdID0gcHJvcHNbcHJvcF07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB1cGRhdGVUcmlnZ2VycztcbiAgfVxuXG4gIGdldFBpY2tpbmdJbmZvKHtpbmZvfSwgbGF5ZXJQcm9wcykge1xuICAgIGNvbnN0IGlzUGlja2VkID0gaW5mby5waWNrZWQgJiYgaW5mby5pbmRleCA+IC0xO1xuICAgIGxldCBvYmplY3QgPSBudWxsO1xuICAgIGNvbnN0IGNlbGwgPSBpc1BpY2tlZCA/IHRoaXMuc3RhdGUubGF5ZXJEYXRhLmRhdGFbaW5mby5pbmRleF0gOiBudWxsO1xuICAgIGlmIChjZWxsKSB7XG4gICAgICBsZXQgYmluSW5mbyA9IHt9O1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5kaW1lbnNpb25VcGRhdGVycykge1xuICAgICAgICBjb25zdCB7Z2V0UGlja2luZ0luZm99ID0gdGhpcy5kaW1lbnNpb25VcGRhdGVyc1trZXldO1xuICAgICAgICBpZiAodHlwZW9mIGdldFBpY2tpbmdJbmZvID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgYmluSW5mbyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIGJpbkluZm8sXG4gICAgICAgICAgICBnZXRQaWNraW5nSW5mbyh0aGlzLnN0YXRlLmRpbWVuc2lvbnNba2V5XSwgY2VsbCwgbGF5ZXJQcm9wcylcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG9iamVjdCA9IE9iamVjdC5hc3NpZ24oYmluSW5mbywgY2VsbCwge1xuICAgICAgICBwb2ludHM6IGNlbGwuZmlsdGVyZWRQb2ludHMgfHwgY2VsbC5wb2ludHNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGFkZCBiaW4gIGFuZCAgdG8gaW5mb1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGluZm8sIHtcbiAgICAgIHBpY2tlZDogQm9vbGVhbihvYmplY3QpLFxuICAgICAgLy8gb3ZlcnJpZGUgb2JqZWN0IHdpdGggcGlja2VkIGNlbGxcbiAgICAgIG9iamVjdFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0QWNjZXNzb3IoZGltZW5zaW9uS2V5LCBsYXllclByb3BzKSB7XG4gICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5kaW1lbnNpb25VcGRhdGVycywgZGltZW5zaW9uS2V5KSkge1xuICAgICAgcmV0dXJuIG5vcDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGltZW5zaW9uVXBkYXRlcnNbZGltZW5zaW9uS2V5XS5nZXRTdWJMYXllckFjY2Vzc29yKFxuICAgICAgdGhpcy5zdGF0ZS5kaW1lbnNpb25zW2RpbWVuc2lvbktleV0sXG4gICAgICB0aGlzLmRpbWVuc2lvblVwZGF0ZXJzW2RpbWVuc2lvbktleV0sXG4gICAgICBsYXllclByb3BzXG4gICAgKTtcbiAgfVxufVxuXG5DUFVBZ2dyZWdhdG9yLmdldERpbWVuc2lvblNjYWxlID0gZ2V0RGltZW5zaW9uU2NhbGU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBLElBQUFBLGtC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
|
@@ -28,7 +28,7 @@ var rgbaImage = exports.rgbaImage = {
|
|
28
28
|
SAMPLER_TYPE: 'sampler2D'
|
29
29
|
},
|
30
30
|
inject: {
|
31
|
-
'fs:DECKGL_CREATE_COLOR': "\n image = vec4(texture2D(bitmapTextureRgba, coord));\n "
|
31
|
+
'fs:DECKGL_CREATE_COLOR': "\n image = vec4(texture2D(bitmapTextureRgba, coord));\n if (image.a < 0.5) {\n discard;\n }\n "
|
32
32
|
}
|
33
33
|
};
|
34
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
34
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRVbmlmb3JtcyIsIm9wdHMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJpbWFnZVJnYmEiLCJiaXRtYXBUZXh0dXJlUmdiYSIsImZzMSIsImZzMiIsInJnYmFJbWFnZSIsImV4cG9ydHMiLCJuYW1lIiwiZGVmaW5lcyIsIlNBTVBMRVJfVFlQRSIsImluamVjdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9yYXN0ZXIvd2ViZ2wvdGV4dHVyZS9yZ2JhLWltYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7VGV4dHVyZTJEfSBmcm9tICdAbHVtYS5nbC93ZWJnbCc7XG5cbmltcG9ydCB7R2V0VW5pZm9ybXNPdXRwdXQsIFNoYWRlck1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5mdW5jdGlvbiBnZXRVbmlmb3JtcyhvcHRzOiB7aW1hZ2VSZ2JhPzogVGV4dHVyZTJEfSA9IHt9KTogR2V0VW5pZm9ybXNPdXRwdXQge1xuICBjb25zdCB7aW1hZ2VSZ2JhfSA9IG9wdHM7XG5cbiAgaWYgKCFpbWFnZVJnYmEpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYml0bWFwVGV4dHVyZVJnYmE6IGltYWdlUmdiYVxuICB9O1xufVxuXG5jb25zdCBmczEgPSBgXFxcbnVuaWZvcm0gc2FtcGxlcjJEIGJpdG1hcFRleHR1cmVSZ2JhO1xuYDtcblxuY29uc3QgZnMyID0gYFxcXG5wcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbnByZWNpc2lvbiBtZWRpdW1wIGludDtcbnByZWNpc2lvbiBtZWRpdW1wIHVzYW1wbGVyMkQ7XG5cbiNpZmRlZiBTQU1QTEVSX1RZUEVcbiAgdW5pZm9ybSBTQU1QTEVSX1RZUEUgYml0bWFwVGV4dHVyZVJnYmE7XG4jZWxzZVxuICB1bmlmb3JtIHNhbXBsZXIyRCBiaXRtYXBUZXh0dXJlUmdiYTtcbiNlbmRpZlxuYDtcblxuZXhwb3J0IGNvbnN0IHJnYmFJbWFnZTogU2hhZGVyTW9kdWxlID0ge1xuICBuYW1lOiAncmdiYS1pbWFnZScsXG4gIGZzMSxcbiAgZnMyLFxuICBnZXRVbmlmb3JtcyxcbiAgZGVmaW5lczoge1xuICAgIFNBTVBMRVJfVFlQRTogJ3NhbXBsZXIyRCdcbiAgfSxcbiAgaW5qZWN0OiB7XG4gICAgJ2ZzOkRFQ0tHTF9DUkVBVEVfQ09MT1InOiBgXG4gICAgaW1hZ2UgPSB2ZWM0KHRleHR1cmUyRChiaXRtYXBUZXh0dXJlUmdiYSwgY29vcmQpKTtcbiAgICBpZiAoaW1hZ2UuYSA8IDAuNSkge1xuICAgICAgZGlzY2FyZDtcbiAgICB9XG4gICAgYFxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBOztBQU1BLFNBQVNBLFdBQVdBLENBQUEsRUFBd0Q7RUFBQSxJQUF2REMsSUFBNkIsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBQ3JELElBQU9HLFNBQVMsR0FBSUosSUFBSSxDQUFqQkksU0FBUztFQUVoQixJQUFJLENBQUNBLFNBQVMsRUFBRTtJQUNkLE9BQU8sSUFBSTtFQUNiO0VBRUEsT0FBTztJQUNMQyxpQkFBaUIsRUFBRUQ7RUFDckIsQ0FBQztBQUNIO0FBRUEsSUFBTUUsR0FBRywyQ0FFUjtBQUVELElBQU1DLEdBQUcsK01BVVI7QUFFTSxJQUFNQyxTQUF1QixHQUFBQyxPQUFBLENBQUFELFNBQUEsR0FBRztFQUNyQ0UsSUFBSSxFQUFFLFlBQVk7RUFDbEJKLEdBQUcsRUFBSEEsR0FBRztFQUNIQyxHQUFHLEVBQUhBLEdBQUc7RUFDSFIsV0FBVyxFQUFYQSxXQUFXO0VBQ1hZLE9BQU8sRUFBRTtJQUNQQyxZQUFZLEVBQUU7RUFDaEIsQ0FBQztFQUNEQyxNQUFNLEVBQUU7SUFDTix3QkFBd0I7RUFNMUI7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
|
@@ -0,0 +1,63 @@
|
|
1
|
+
import { Layer, CompositeLayer, CompositeLayerProps, UpdateParameters, DefaultProps, Viewport } from '@deck.gl/core/typed';
|
2
|
+
import { ImageSource } from '@loaders.gl/wms';
|
3
|
+
import type { ImageSourceMetadata } from '@loaders.gl/loader-utils';
|
4
|
+
import type { ImageType, ImageServiceType } from '@loaders.gl/wms';
|
5
|
+
/** All props supported by the TileLayer */
|
6
|
+
export declare type WMSLayerProps = CompositeLayerProps & _WMSLayerProps;
|
7
|
+
/** Props added by the TileLayer */
|
8
|
+
declare type _WMSLayerProps = {
|
9
|
+
data: string | ImageSource;
|
10
|
+
serviceType?: ImageServiceType | 'auto';
|
11
|
+
layers?: string[];
|
12
|
+
srs?: 'EPSG:4326' | 'EPSG:3857' | 'auto';
|
13
|
+
transparent?: boolean;
|
14
|
+
onMetadataLoad?: (metadata: ImageSourceMetadata) => void;
|
15
|
+
onMetadataLoadError?: (error: Error) => void;
|
16
|
+
onImageLoadStart?: (requestId: unknown) => void;
|
17
|
+
onImageLoad?: (requestId: unknown) => void;
|
18
|
+
onImageLoadError?: (requestId: unknown, error: Error) => void;
|
19
|
+
};
|
20
|
+
export default class WMSLayer extends CompositeLayer<Required<_WMSLayerProps>> {
|
21
|
+
static layerName: string;
|
22
|
+
static defaultProps: DefaultProps;
|
23
|
+
state: {
|
24
|
+
imageSource: ImageSource;
|
25
|
+
image: ImageType;
|
26
|
+
bounds: [number, number, number, number];
|
27
|
+
lastRequestParameters: {
|
28
|
+
bbox: [number, number, number, number];
|
29
|
+
boundingBox: [[number, number], [number, number]];
|
30
|
+
layers: string[];
|
31
|
+
srs: 'EPSG:4326' | 'EPSG:3857';
|
32
|
+
width: number;
|
33
|
+
height: number;
|
34
|
+
};
|
35
|
+
lastRequestId: number;
|
36
|
+
_nextRequestId: number;
|
37
|
+
/** TODO: Change any => setTimeout return type. Different between Node and browser... */
|
38
|
+
_timeoutId: any;
|
39
|
+
loadCounter: number;
|
40
|
+
};
|
41
|
+
/** Returns true if all async resources are loaded */
|
42
|
+
get isLoaded(): boolean;
|
43
|
+
/** Lets deck.gl know that we want viewport change events */
|
44
|
+
shouldUpdateState(): boolean;
|
45
|
+
initializeState(): void;
|
46
|
+
updateState({ changeFlags, props, oldProps }: UpdateParameters<this>): void;
|
47
|
+
renderLayers(): Layer<any>;
|
48
|
+
getFeatureInfoText(x: number, y: number): Promise<string | null>;
|
49
|
+
_createImageSource(props: WMSLayerProps): ImageSource;
|
50
|
+
/** Run a getMetadata on the image service */
|
51
|
+
_loadMetadata(): Promise<void>;
|
52
|
+
/** Load an image */
|
53
|
+
loadImage(viewport: Viewport, _reason: string): Promise<void>;
|
54
|
+
/** Global counter for issuing unique request ids */
|
55
|
+
private getRequestId;
|
56
|
+
/** Runs an action in the future, cancels it if the new action is issued before it executes */
|
57
|
+
private debounce;
|
58
|
+
}
|
59
|
+
/** Projects EPSG:4326 to EPSG:3857
|
60
|
+
* This is a lightweight replacement of proj4. Use tests to ensure conformance.
|
61
|
+
*/
|
62
|
+
export declare function WGS84ToPseudoMercator(coord: [number, number]): [number, number];
|
63
|
+
export {};
|
@@ -0,0 +1,351 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.WGS84ToPseudoMercator = WGS84ToPseudoMercator;
|
8
|
+
exports["default"] = void 0;
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
11
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
13
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
14
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
15
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
16
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
17
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
18
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
19
|
+
var _webMercator = require("@math.gl/web-mercator");
|
20
|
+
var _typed = require("@deck.gl/core/typed");
|
21
|
+
var _typed2 = require("@deck.gl/layers/typed");
|
22
|
+
var _wms = require("@loaders.gl/wms");
|
23
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
24
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
25
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
26
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
27
|
+
function _superPropGet(t, e, r, o) { var p = (0, _get2["default"])((0, _getPrototypeOf2["default"])(1 & o ? t.prototype : t), e, r); return 2 & o ? function (t) { return p.apply(r, t); } : p; } // SPDX-License-Identifier: MIT
|
28
|
+
// Copyright contributors to the kepler.gl project
|
29
|
+
// TODO: This is a modified copy of WMSLayer from deck.gl. Remove this once we upgrade deck.gl and loaders.gl.
|
30
|
+
|
31
|
+
/** All props supported by the TileLayer */
|
32
|
+
|
33
|
+
/** Props added by the TileLayer */
|
34
|
+
|
35
|
+
var defaultProps = {
|
36
|
+
id: 'imagery-layer',
|
37
|
+
data: '',
|
38
|
+
serviceType: 'auto',
|
39
|
+
srs: 'auto',
|
40
|
+
layers: {
|
41
|
+
type: 'array',
|
42
|
+
compare: true,
|
43
|
+
value: []
|
44
|
+
},
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
46
|
+
onMetadataLoad: {
|
47
|
+
type: 'function',
|
48
|
+
value: function value() {}
|
49
|
+
},
|
50
|
+
// eslint-disable-next-line
|
51
|
+
onMetadataLoadError: {
|
52
|
+
type: 'function',
|
53
|
+
value: console.error
|
54
|
+
},
|
55
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
56
|
+
onImageLoadStart: {
|
57
|
+
type: 'function',
|
58
|
+
value: function value() {}
|
59
|
+
},
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
61
|
+
onImageLoad: {
|
62
|
+
type: 'function',
|
63
|
+
value: function value() {}
|
64
|
+
},
|
65
|
+
onImageLoadError: {
|
66
|
+
type: 'function',
|
67
|
+
compare: false,
|
68
|
+
// eslint-disable-next-line
|
69
|
+
value: function value(requestId, error) {
|
70
|
+
return console.error(error, requestId);
|
71
|
+
}
|
72
|
+
}
|
73
|
+
};
|
74
|
+
var WMSLayer = exports["default"] = /*#__PURE__*/function (_CompositeLayer) {
|
75
|
+
function WMSLayer() {
|
76
|
+
(0, _classCallCheck2["default"])(this, WMSLayer);
|
77
|
+
return _callSuper(this, WMSLayer, arguments);
|
78
|
+
}
|
79
|
+
(0, _inherits2["default"])(WMSLayer, _CompositeLayer);
|
80
|
+
return (0, _createClass2["default"])(WMSLayer, [{
|
81
|
+
key: "isLoaded",
|
82
|
+
get: /** Returns true if all async resources are loaded */
|
83
|
+
function get() {
|
84
|
+
// Track the explicit loading done by this layer
|
85
|
+
return Boolean(this.state) && this.state.loadCounter === 0 && _superPropGet(WMSLayer, "isLoaded", this, 1);
|
86
|
+
}
|
87
|
+
|
88
|
+
/** Lets deck.gl know that we want viewport change events */
|
89
|
+
}, {
|
90
|
+
key: "shouldUpdateState",
|
91
|
+
value: function shouldUpdateState() {
|
92
|
+
return true;
|
93
|
+
}
|
94
|
+
}, {
|
95
|
+
key: "initializeState",
|
96
|
+
value: function initializeState() {
|
97
|
+
// intentionally empty, initialization is done in updateState
|
98
|
+
this.state._nextRequestId = 0;
|
99
|
+
this.state.lastRequestId = -1;
|
100
|
+
this.state.loadCounter = 0;
|
101
|
+
}
|
102
|
+
}, {
|
103
|
+
key: "updateState",
|
104
|
+
value: function updateState(_ref) {
|
105
|
+
var _this = this;
|
106
|
+
var changeFlags = _ref.changeFlags,
|
107
|
+
props = _ref.props,
|
108
|
+
oldProps = _ref.oldProps;
|
109
|
+
var viewport = this.context.viewport;
|
110
|
+
|
111
|
+
// Check if data source has changed
|
112
|
+
if (changeFlags.dataChanged || props.serviceType !== oldProps.serviceType) {
|
113
|
+
this.state.imageSource = this._createImageSource(props);
|
114
|
+
this._loadMetadata();
|
115
|
+
this.debounce(function () {
|
116
|
+
return _this.loadImage(viewport, 'image source changed');
|
117
|
+
}, 0);
|
118
|
+
} else if (!(0, _typed._deepEqual)(props.layers, oldProps.layers, 1)) {
|
119
|
+
this.debounce(function () {
|
120
|
+
return _this.loadImage(viewport, 'layers changed');
|
121
|
+
}, 0);
|
122
|
+
} else if (changeFlags.viewportChanged) {
|
123
|
+
this.debounce(function () {
|
124
|
+
return _this.loadImage(viewport, 'viewport changed');
|
125
|
+
});
|
126
|
+
}
|
127
|
+
}
|
128
|
+
}, {
|
129
|
+
key: "renderLayers",
|
130
|
+
value: function renderLayers() {
|
131
|
+
var _this$state = this.state,
|
132
|
+
bounds = _this$state.bounds,
|
133
|
+
image = _this$state.image,
|
134
|
+
lastRequestParameters = _this$state.lastRequestParameters;
|
135
|
+
return image && new _typed2.BitmapLayer(_objectSpread(_objectSpread({}, this.getSubLayerProps({
|
136
|
+
id: 'bitmap'
|
137
|
+
})), {}, {
|
138
|
+
_imageCoordinateSystem: lastRequestParameters.srs === 'EPSG:4326' ? _typed.COORDINATE_SYSTEM.LNGLAT : _typed.COORDINATE_SYSTEM.CARTESIAN,
|
139
|
+
bounds: bounds,
|
140
|
+
image: image,
|
141
|
+
pickable: this.props.pickable
|
142
|
+
}));
|
143
|
+
}
|
144
|
+
}, {
|
145
|
+
key: "getFeatureInfoText",
|
146
|
+
value: function () {
|
147
|
+
var _getFeatureInfoText = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(x, y) {
|
148
|
+
var lastRequestParameters, _this$state$imageSour, _this$state$imageSour2, featureInfo;
|
149
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
150
|
+
while (1) switch (_context.prev = _context.next) {
|
151
|
+
case 0:
|
152
|
+
lastRequestParameters = this.state.lastRequestParameters;
|
153
|
+
if (!lastRequestParameters) {
|
154
|
+
_context.next = 6;
|
155
|
+
break;
|
156
|
+
}
|
157
|
+
_context.next = 4;
|
158
|
+
return (_this$state$imageSour = (_this$state$imageSour2 = this.state.imageSource).getFeatureInfoText) === null || _this$state$imageSour === void 0 ? void 0 : _this$state$imageSour.call(_this$state$imageSour2, _objectSpread(_objectSpread({}, lastRequestParameters), {}, {
|
159
|
+
query_layers: lastRequestParameters.layers,
|
160
|
+
x: x,
|
161
|
+
y: y,
|
162
|
+
info_format: 'application/vnd.ogc.gml'
|
163
|
+
}));
|
164
|
+
case 4:
|
165
|
+
featureInfo = _context.sent;
|
166
|
+
return _context.abrupt("return", featureInfo);
|
167
|
+
case 6:
|
168
|
+
return _context.abrupt("return", '');
|
169
|
+
case 7:
|
170
|
+
case "end":
|
171
|
+
return _context.stop();
|
172
|
+
}
|
173
|
+
}, _callee, this);
|
174
|
+
}));
|
175
|
+
function getFeatureInfoText(_x, _x2) {
|
176
|
+
return _getFeatureInfoText.apply(this, arguments);
|
177
|
+
}
|
178
|
+
return getFeatureInfoText;
|
179
|
+
}()
|
180
|
+
}, {
|
181
|
+
key: "_createImageSource",
|
182
|
+
value: function _createImageSource(props) {
|
183
|
+
if (props.data instanceof _wms.ImageSource) {
|
184
|
+
return props.data;
|
185
|
+
}
|
186
|
+
if (typeof props.data === 'string') {
|
187
|
+
return (0, _wms.createImageSource)({
|
188
|
+
url: props.data,
|
189
|
+
loadOptions: props.loadOptions,
|
190
|
+
type: props.serviceType
|
191
|
+
});
|
192
|
+
}
|
193
|
+
throw new Error('invalid image source in props.data');
|
194
|
+
}
|
195
|
+
|
196
|
+
/** Run a getMetadata on the image service */
|
197
|
+
}, {
|
198
|
+
key: "_loadMetadata",
|
199
|
+
value: (function () {
|
200
|
+
var _loadMetadata2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
201
|
+
var imageSource, metadata, _this$getCurrentLayer, _this$getCurrentLayer2;
|
202
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
203
|
+
while (1) switch (_context2.prev = _context2.next) {
|
204
|
+
case 0:
|
205
|
+
imageSource = this.state.imageSource;
|
206
|
+
_context2.prev = 1;
|
207
|
+
this.state.loadCounter++;
|
208
|
+
_context2.next = 5;
|
209
|
+
return imageSource.getMetadata();
|
210
|
+
case 5:
|
211
|
+
metadata = _context2.sent;
|
212
|
+
// If a request takes a long time, it may no longer be expected
|
213
|
+
if (this.state.imageSource === imageSource) {
|
214
|
+
(_this$getCurrentLayer = this.getCurrentLayer()) === null || _this$getCurrentLayer === void 0 || _this$getCurrentLayer.props.onMetadataLoad(metadata);
|
215
|
+
}
|
216
|
+
_context2.next = 12;
|
217
|
+
break;
|
218
|
+
case 9:
|
219
|
+
_context2.prev = 9;
|
220
|
+
_context2.t0 = _context2["catch"](1);
|
221
|
+
(_this$getCurrentLayer2 = this.getCurrentLayer()) === null || _this$getCurrentLayer2 === void 0 || _this$getCurrentLayer2.props.onMetadataLoadError(_context2.t0);
|
222
|
+
case 12:
|
223
|
+
_context2.prev = 12;
|
224
|
+
this.state.loadCounter--;
|
225
|
+
return _context2.finish(12);
|
226
|
+
case 15:
|
227
|
+
case "end":
|
228
|
+
return _context2.stop();
|
229
|
+
}
|
230
|
+
}, _callee2, this, [[1, 9, 12, 15]]);
|
231
|
+
}));
|
232
|
+
function _loadMetadata() {
|
233
|
+
return _loadMetadata2.apply(this, arguments);
|
234
|
+
}
|
235
|
+
return _loadMetadata;
|
236
|
+
}() /** Load an image */)
|
237
|
+
}, {
|
238
|
+
key: "loadImage",
|
239
|
+
value: (function () {
|
240
|
+
var _loadImage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(viewport, _reason) {
|
241
|
+
var _this$props, layers, serviceType, transparent, bounds, width, height, requestId, srs, requestParams, _WGS84ToPseudoMercato, _WGS84ToPseudoMercato2, minX, minY, _WGS84ToPseudoMercato3, _WGS84ToPseudoMercato4, maxX, maxY, image, _this$getCurrentLayer3, _this$context$onError, _this$context, _this$getCurrentLayer4;
|
242
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
243
|
+
while (1) switch (_context3.prev = _context3.next) {
|
244
|
+
case 0:
|
245
|
+
_this$props = this.props, layers = _this$props.layers, serviceType = _this$props.serviceType, transparent = _this$props.transparent; // TODO - move to ImageSource?
|
246
|
+
if (!(serviceType === 'wms' && layers.length === 0)) {
|
247
|
+
_context3.next = 3;
|
248
|
+
break;
|
249
|
+
}
|
250
|
+
return _context3.abrupt("return");
|
251
|
+
case 3:
|
252
|
+
bounds = viewport.getBounds();
|
253
|
+
width = viewport.width, height = viewport.height;
|
254
|
+
requestId = this.getRequestId();
|
255
|
+
srs = this.props.srs;
|
256
|
+
if (srs === 'auto') {
|
257
|
+
// BitmapLayer only supports LNGLAT or CARTESIAN (Web-Mercator)
|
258
|
+
srs = viewport.resolution ? 'EPSG:4326' : 'EPSG:3857';
|
259
|
+
}
|
260
|
+
requestParams = {
|
261
|
+
width: width,
|
262
|
+
height: height,
|
263
|
+
// TODO: remove bbox once deck.gl is upgraded to ^8.10 with loaders.gl ^4
|
264
|
+
bbox: bounds,
|
265
|
+
boundingBox: [[bounds[0], bounds[1]], [bounds[2], bounds[3]]],
|
266
|
+
layers: layers,
|
267
|
+
srs: srs,
|
268
|
+
transparent: transparent
|
269
|
+
};
|
270
|
+
if (srs === 'EPSG:3857') {
|
271
|
+
_WGS84ToPseudoMercato = WGS84ToPseudoMercator([bounds[0], bounds[1]]), _WGS84ToPseudoMercato2 = (0, _slicedToArray2["default"])(_WGS84ToPseudoMercato, 2), minX = _WGS84ToPseudoMercato2[0], minY = _WGS84ToPseudoMercato2[1];
|
272
|
+
_WGS84ToPseudoMercato3 = WGS84ToPseudoMercator([bounds[2], bounds[3]]), _WGS84ToPseudoMercato4 = (0, _slicedToArray2["default"])(_WGS84ToPseudoMercato3, 2), maxX = _WGS84ToPseudoMercato4[0], maxY = _WGS84ToPseudoMercato4[1];
|
273
|
+
requestParams.boundingBox = [[minX, minY], [maxX, maxY]];
|
274
|
+
// TODO: remove bbox once deck.gl is upgraded to ^8.10 with loaders.gl ^4
|
275
|
+
requestParams.bbox = [minX, minY, maxX, maxY];
|
276
|
+
}
|
277
|
+
_context3.prev = 10;
|
278
|
+
this.state.loadCounter++;
|
279
|
+
this.props.onImageLoadStart(requestId);
|
280
|
+
_context3.next = 15;
|
281
|
+
return this.state.imageSource.getImage(requestParams);
|
282
|
+
case 15:
|
283
|
+
image = _context3.sent;
|
284
|
+
// If a request takes a long time, later requests may have already loaded.
|
285
|
+
if (this.state.lastRequestId < requestId) {
|
286
|
+
(_this$getCurrentLayer3 = this.getCurrentLayer()) === null || _this$getCurrentLayer3 === void 0 || _this$getCurrentLayer3.props.onImageLoad(requestId);
|
287
|
+
// Not type safe...
|
288
|
+
this.setState({
|
289
|
+
image: image,
|
290
|
+
bounds: bounds,
|
291
|
+
lastRequestParameters: requestParams,
|
292
|
+
lastRequestId: requestId
|
293
|
+
});
|
294
|
+
}
|
295
|
+
_context3.next = 23;
|
296
|
+
break;
|
297
|
+
case 19:
|
298
|
+
_context3.prev = 19;
|
299
|
+
_context3.t0 = _context3["catch"](10);
|
300
|
+
(_this$context$onError = (_this$context = this.context).onError) === null || _this$context$onError === void 0 || _this$context$onError.call(_this$context, _context3.t0, this);
|
301
|
+
(_this$getCurrentLayer4 = this.getCurrentLayer()) === null || _this$getCurrentLayer4 === void 0 || _this$getCurrentLayer4.props.onImageLoadError(requestId, _context3.t0);
|
302
|
+
case 23:
|
303
|
+
_context3.prev = 23;
|
304
|
+
this.state.loadCounter--;
|
305
|
+
return _context3.finish(23);
|
306
|
+
case 26:
|
307
|
+
case "end":
|
308
|
+
return _context3.stop();
|
309
|
+
}
|
310
|
+
}, _callee3, this, [[10, 19, 23, 26]]);
|
311
|
+
}));
|
312
|
+
function loadImage(_x3, _x4) {
|
313
|
+
return _loadImage.apply(this, arguments);
|
314
|
+
}
|
315
|
+
return loadImage;
|
316
|
+
}() // HELPERS
|
317
|
+
/** Global counter for issuing unique request ids */
|
318
|
+
)
|
319
|
+
}, {
|
320
|
+
key: "getRequestId",
|
321
|
+
value: function getRequestId() {
|
322
|
+
return this.state._nextRequestId++;
|
323
|
+
}
|
324
|
+
|
325
|
+
/** Runs an action in the future, cancels it if the new action is issued before it executes */
|
326
|
+
}, {
|
327
|
+
key: "debounce",
|
328
|
+
value: function debounce(fn) {
|
329
|
+
var ms = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;
|
330
|
+
clearTimeout(this.state._timeoutId);
|
331
|
+
this.state._timeoutId = setTimeout(function () {
|
332
|
+
return fn();
|
333
|
+
}, ms);
|
334
|
+
}
|
335
|
+
}]);
|
336
|
+
}(_typed.CompositeLayer); // https://epsg.io/3857
|
337
|
+
// +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs +type=crs
|
338
|
+
(0, _defineProperty2["default"])(WMSLayer, "layerName", 'WMSLayer');
|
339
|
+
(0, _defineProperty2["default"])(WMSLayer, "defaultProps", defaultProps);
|
340
|
+
var HALF_EARTH_CIRCUMFERENCE = 6378137 * Math.PI;
|
341
|
+
|
342
|
+
/** Projects EPSG:4326 to EPSG:3857
|
343
|
+
* This is a lightweight replacement of proj4. Use tests to ensure conformance.
|
344
|
+
*/
|
345
|
+
function WGS84ToPseudoMercator(coord) {
|
346
|
+
var mercator = (0, _webMercator.lngLatToWorld)(coord);
|
347
|
+
mercator[0] = (mercator[0] / 256 - 1) * HALF_EARTH_CIRCUMFERENCE;
|
348
|
+
mercator[1] = (mercator[1] / 256 - 1) * HALF_EARTH_CIRCUMFERENCE;
|
349
|
+
return mercator;
|
350
|
+
}
|
351
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2ViTWVyY2F0b3IiLCJyZXF1aXJlIiwiX3R5cGVkIiwiX3R5cGVkMiIsIl93bXMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsIl9zdXBlclByb3BHZXQiLCJwIiwiX2dldDIiLCJkZWZhdWx0UHJvcHMiLCJpZCIsImRhdGEiLCJzZXJ2aWNlVHlwZSIsInNycyIsImxheWVycyIsInR5cGUiLCJjb21wYXJlIiwidmFsdWUiLCJvbk1ldGFkYXRhTG9hZCIsIm9uTWV0YWRhdGFMb2FkRXJyb3IiLCJjb25zb2xlIiwiZXJyb3IiLCJvbkltYWdlTG9hZFN0YXJ0Iiwib25JbWFnZUxvYWQiLCJvbkltYWdlTG9hZEVycm9yIiwicmVxdWVzdElkIiwiV01TTGF5ZXIiLCJleHBvcnRzIiwiX0NvbXBvc2l0ZUxheWVyIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwiZ2V0Iiwic3RhdGUiLCJsb2FkQ291bnRlciIsInNob3VsZFVwZGF0ZVN0YXRlIiwiaW5pdGlhbGl6ZVN0YXRlIiwiX25leHRSZXF1ZXN0SWQiLCJsYXN0UmVxdWVzdElkIiwidXBkYXRlU3RhdGUiLCJfcmVmIiwiX3RoaXMiLCJjaGFuZ2VGbGFncyIsInByb3BzIiwib2xkUHJvcHMiLCJ2aWV3cG9ydCIsImNvbnRleHQiLCJkYXRhQ2hhbmdlZCIsImltYWdlU291cmNlIiwiX2NyZWF0ZUltYWdlU291cmNlIiwiX2xvYWRNZXRhZGF0YSIsImRlYm91bmNlIiwibG9hZEltYWdlIiwiZGVlcEVxdWFsIiwidmlld3BvcnRDaGFuZ2VkIiwicmVuZGVyTGF5ZXJzIiwiX3RoaXMkc3RhdGUiLCJib3VuZHMiLCJpbWFnZSIsImxhc3RSZXF1ZXN0UGFyYW1ldGVycyIsIkJpdG1hcExheWVyIiwiZ2V0U3ViTGF5ZXJQcm9wcyIsIl9pbWFnZUNvb3JkaW5hdGVTeXN0ZW0iLCJDT09SRElOQVRFX1NZU1RFTSIsIkxOR0xBVCIsIkNBUlRFU0lBTiIsInBpY2thYmxlIiwiX2dldEZlYXR1cmVJbmZvVGV4dCIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwieCIsInkiLCJfdGhpcyRzdGF0ZSRpbWFnZVNvdXIiLCJfdGhpcyRzdGF0ZSRpbWFnZVNvdXIyIiwiZmVhdHVyZUluZm8iLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiZ2V0RmVhdHVyZUluZm9UZXh0IiwicXVlcnlfbGF5ZXJzIiwiaW5mb19mb3JtYXQiLCJzZW50IiwiYWJydXB0Iiwic3RvcCIsIl94IiwiX3gyIiwiSW1hZ2VTb3VyY2UiLCJjcmVhdGVJbWFnZVNvdXJjZSIsInVybCIsImxvYWRPcHRpb25zIiwiRXJyb3IiLCJfbG9hZE1ldGFkYXRhMiIsIl9jYWxsZWUyIiwibWV0YWRhdGEiLCJfdGhpcyRnZXRDdXJyZW50TGF5ZXIiLCJfdGhpcyRnZXRDdXJyZW50TGF5ZXIyIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiZ2V0TWV0YWRhdGEiLCJnZXRDdXJyZW50TGF5ZXIiLCJ0MCIsImZpbmlzaCIsIl9sb2FkSW1hZ2UiLCJfY2FsbGVlMyIsIl9yZWFzb24iLCJfdGhpcyRwcm9wcyIsInRyYW5zcGFyZW50Iiwid2lkdGgiLCJoZWlnaHQiLCJyZXF1ZXN0UGFyYW1zIiwiX1dHUzg0VG9Qc2V1ZG9NZXJjYXRvIiwiX1dHUzg0VG9Qc2V1ZG9NZXJjYXRvMiIsIm1pblgiLCJtaW5ZIiwiX1dHUzg0VG9Qc2V1ZG9NZXJjYXRvMyIsIl9XR1M4NFRvUHNldWRvTWVyY2F0bzQiLCJtYXhYIiwibWF4WSIsIl90aGlzJGdldEN1cnJlbnRMYXllcjMiLCJfdGhpcyRjb250ZXh0JG9uRXJyb3IiLCJfdGhpcyRjb250ZXh0IiwiX3RoaXMkZ2V0Q3VycmVudExheWVyNCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsImdldEJvdW5kcyIsImdldFJlcXVlc3RJZCIsInJlc29sdXRpb24iLCJiYm94IiwiYm91bmRpbmdCb3giLCJXR1M4NFRvUHNldWRvTWVyY2F0b3IiLCJfc2xpY2VkVG9BcnJheTIiLCJnZXRJbWFnZSIsInNldFN0YXRlIiwib25FcnJvciIsIl94MyIsIl94NCIsImZuIiwibXMiLCJ1bmRlZmluZWQiLCJjbGVhclRpbWVvdXQiLCJfdGltZW91dElkIiwic2V0VGltZW91dCIsIkNvbXBvc2l0ZUxheWVyIiwiSEFMRl9FQVJUSF9DSVJDVU1GRVJFTkNFIiwiTWF0aCIsIlBJIiwiY29vcmQiLCJtZXJjYXRvciIsImxuZ0xhdFRvV29ybGQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvd21zL3dtcy1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2xuZ0xhdFRvV29ybGR9IGZyb20gJ0BtYXRoLmdsL3dlYi1tZXJjYXRvcic7XG5cbmltcG9ydCB7XG4gIExheWVyLFxuICBDb21wb3NpdGVMYXllcixcbiAgQ29tcG9zaXRlTGF5ZXJQcm9wcyxcbiAgVXBkYXRlUGFyYW1ldGVycyxcbiAgRGVmYXVsdFByb3BzLFxuICBWaWV3cG9ydCxcbiAgQ09PUkRJTkFURV9TWVNURU0sXG4gIF9kZWVwRXF1YWwgYXMgZGVlcEVxdWFsXG59IGZyb20gJ0BkZWNrLmdsL2NvcmUvdHlwZWQnO1xuaW1wb3J0IHtCaXRtYXBMYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzL3R5cGVkJztcbmltcG9ydCB7SW1hZ2VTb3VyY2UsIGNyZWF0ZUltYWdlU291cmNlfSBmcm9tICdAbG9hZGVycy5nbC93bXMnO1xuXG5pbXBvcnQgdHlwZSB7SW1hZ2VTb3VyY2VNZXRhZGF0YX0gZnJvbSAnQGxvYWRlcnMuZ2wvbG9hZGVyLXV0aWxzJztcbmltcG9ydCB0eXBlIHtJbWFnZVR5cGUsIEltYWdlU2VydmljZVR5cGV9IGZyb20gJ0Bsb2FkZXJzLmdsL3dtcyc7XG5cbi8vIFRPRE86IFRoaXMgaXMgYSBtb2RpZmllZCBjb3B5IG9mIFdNU0xheWVyIGZyb20gZGVjay5nbC4gUmVtb3ZlIHRoaXMgb25jZSB3ZSB1cGdyYWRlIGRlY2suZ2wgYW5kIGxvYWRlcnMuZ2wuXG5cbi8qKiBBbGwgcHJvcHMgc3VwcG9ydGVkIGJ5IHRoZSBUaWxlTGF5ZXIgKi9cbmV4cG9ydCB0eXBlIFdNU0xheWVyUHJvcHMgPSBDb21wb3NpdGVMYXllclByb3BzICYgX1dNU0xheWVyUHJvcHM7XG5cbi8qKiBQcm9wcyBhZGRlZCBieSB0aGUgVGlsZUxheWVyICovXG50eXBlIF9XTVNMYXllclByb3BzID0ge1xuICBkYXRhOiBzdHJpbmcgfCBJbWFnZVNvdXJjZTtcbiAgc2VydmljZVR5cGU/OiBJbWFnZVNlcnZpY2VUeXBlIHwgJ2F1dG8nO1xuICBsYXllcnM/OiBzdHJpbmdbXTtcbiAgc3JzPzogJ0VQU0c6NDMyNicgfCAnRVBTRzozODU3JyB8ICdhdXRvJztcbiAgdHJhbnNwYXJlbnQ/OiBib29sZWFuO1xuICBvbk1ldGFkYXRhTG9hZD86IChtZXRhZGF0YTogSW1hZ2VTb3VyY2VNZXRhZGF0YSkgPT4gdm9pZDtcbiAgb25NZXRhZGF0YUxvYWRFcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIG9uSW1hZ2VMb2FkU3RhcnQ/OiAocmVxdWVzdElkOiB1bmtub3duKSA9PiB2b2lkO1xuICBvbkltYWdlTG9hZD86IChyZXF1ZXN0SWQ6IHVua25vd24pID0+IHZvaWQ7XG4gIG9uSW1hZ2VMb2FkRXJyb3I/OiAocmVxdWVzdElkOiB1bmtub3duLCBlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG59O1xuXG5jb25zdCBkZWZhdWx0UHJvcHM6IERlZmF1bHRQcm9wczxXTVNMYXllclByb3BzPiA9IHtcbiAgaWQ6ICdpbWFnZXJ5LWxheWVyJyxcbiAgZGF0YTogJycsXG4gIHNlcnZpY2VUeXBlOiAnYXV0bycsXG4gIHNyczogJ2F1dG8nLFxuICBsYXllcnM6IHt0eXBlOiAnYXJyYXknLCBjb21wYXJlOiB0cnVlLCB2YWx1ZTogW119LFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uTWV0YWRhdGFMb2FkOiB7dHlwZTogJ2Z1bmN0aW9uJywgdmFsdWU6ICgpID0+IHt9fSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIG9uTWV0YWRhdGFMb2FkRXJyb3I6IHt0eXBlOiAnZnVuY3Rpb24nLCB2YWx1ZTogY29uc29sZS5lcnJvcn0sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgb25JbWFnZUxvYWRTdGFydDoge3R5cGU6ICdmdW5jdGlvbicsIHZhbHVlOiAoKSA9PiB7fX0sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgb25JbWFnZUxvYWQ6IHt0eXBlOiAnZnVuY3Rpb24nLCB2YWx1ZTogKCkgPT4ge319LFxuICBvbkltYWdlTG9hZEVycm9yOiB7XG4gICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICBjb21wYXJlOiBmYWxzZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB2YWx1ZTogKHJlcXVlc3RJZDogdW5rbm93biwgZXJyb3I6IEVycm9yKSA9PiBjb25zb2xlLmVycm9yKGVycm9yLCByZXF1ZXN0SWQpXG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdNU0xheWVyIGV4dGVuZHMgQ29tcG9zaXRlTGF5ZXI8UmVxdWlyZWQ8X1dNU0xheWVyUHJvcHM+PiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnV01TTGF5ZXInO1xuICBzdGF0aWMgZGVmYXVsdFByb3BzOiBEZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbiAgZGVjbGFyZSBzdGF0ZToge1xuICAgIGltYWdlU291cmNlOiBJbWFnZVNvdXJjZTtcbiAgICBpbWFnZTogSW1hZ2VUeXBlO1xuICAgIGJvdW5kczogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gICAgbGFzdFJlcXVlc3RQYXJhbWV0ZXJzOiB7XG4gICAgICAvLyBUT0RPOiByZW1vdmUgYmJveCBvbmNlIGRlY2suZ2wgaXMgdXBncmFkZWQgdG8gXjguMTAgd2l0aCBsb2FkZXJzLmdsIF40XG4gICAgICBiYm94OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgICAgIGJvdW5kaW5nQm94OiBbW251bWJlciwgbnVtYmVyXSwgW251bWJlciwgbnVtYmVyXV07XG4gICAgICBsYXllcnM6IHN0cmluZ1tdO1xuICAgICAgc3JzOiAnRVBTRzo0MzI2JyB8ICdFUFNHOjM4NTcnO1xuICAgICAgd2lkdGg6IG51bWJlcjtcbiAgICAgIGhlaWdodDogbnVtYmVyO1xuICAgIH07XG4gICAgbGFzdFJlcXVlc3RJZDogbnVtYmVyO1xuICAgIF9uZXh0UmVxdWVzdElkOiBudW1iZXI7XG4gICAgLyoqIFRPRE86IENoYW5nZSBhbnkgPT4gc2V0VGltZW91dCByZXR1cm4gdHlwZS4gRGlmZmVyZW50IGJldHdlZW4gTm9kZSBhbmQgYnJvd3Nlci4uLiAqL1xuICAgIF90aW1lb3V0SWQ6IGFueTtcbiAgICBsb2FkQ291bnRlcjogbnVtYmVyO1xuICB9O1xuXG4gIC8qKiBSZXR1cm5zIHRydWUgaWYgYWxsIGFzeW5jIHJlc291cmNlcyBhcmUgbG9hZGVkICovXG4gIGdldCBpc0xvYWRlZCgpOiBib29sZWFuIHtcbiAgICAvLyBUcmFjayB0aGUgZXhwbGljaXQgbG9hZGluZyBkb25lIGJ5IHRoaXMgbGF5ZXJcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnN0YXRlKSAmJiB0aGlzLnN0YXRlLmxvYWRDb3VudGVyID09PSAwICYmIHN1cGVyLmlzTG9hZGVkO1xuICB9XG5cbiAgLyoqIExldHMgZGVjay5nbCBrbm93IHRoYXQgd2Ugd2FudCB2aWV3cG9ydCBjaGFuZ2UgZXZlbnRzICovXG4gIG92ZXJyaWRlIHNob3VsZFVwZGF0ZVN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgb3ZlcnJpZGUgaW5pdGlhbGl6ZVN0YXRlKCk6IHZvaWQge1xuICAgIC8vIGludGVudGlvbmFsbHkgZW1wdHksIGluaXRpYWxpemF0aW9uIGlzIGRvbmUgaW4gdXBkYXRlU3RhdGVcbiAgICB0aGlzLnN0YXRlLl9uZXh0UmVxdWVzdElkID0gMDtcbiAgICB0aGlzLnN0YXRlLmxhc3RSZXF1ZXN0SWQgPSAtMTtcbiAgICB0aGlzLnN0YXRlLmxvYWRDb3VudGVyID0gMDtcbiAgfVxuXG4gIG92ZXJyaWRlIHVwZGF0ZVN0YXRlKHtjaGFuZ2VGbGFncywgcHJvcHMsIG9sZFByb3BzfTogVXBkYXRlUGFyYW1ldGVyczx0aGlzPik6IHZvaWQge1xuICAgIGNvbnN0IHt2aWV3cG9ydH0gPSB0aGlzLmNvbnRleHQ7XG5cbiAgICAvLyBDaGVjayBpZiBkYXRhIHNvdXJjZSBoYXMgY2hhbmdlZFxuICAgIGlmIChjaGFuZ2VGbGFncy5kYXRhQ2hhbmdlZCB8fCBwcm9wcy5zZXJ2aWNlVHlwZSAhPT0gb2xkUHJvcHMuc2VydmljZVR5cGUpIHtcbiAgICAgIHRoaXMuc3RhdGUuaW1hZ2VTb3VyY2UgPSB0aGlzLl9jcmVhdGVJbWFnZVNvdXJjZShwcm9wcyk7XG5cbiAgICAgIHRoaXMuX2xvYWRNZXRhZGF0YSgpO1xuICAgICAgdGhpcy5kZWJvdW5jZSgoKSA9PiB0aGlzLmxvYWRJbWFnZSh2aWV3cG9ydCwgJ2ltYWdlIHNvdXJjZSBjaGFuZ2VkJyksIDApO1xuICAgIH0gZWxzZSBpZiAoIWRlZXBFcXVhbChwcm9wcy5sYXllcnMsIG9sZFByb3BzLmxheWVycywgMSkpIHtcbiAgICAgIHRoaXMuZGVib3VuY2UoKCkgPT4gdGhpcy5sb2FkSW1hZ2Uodmlld3BvcnQsICdsYXllcnMgY2hhbmdlZCcpLCAwKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZUZsYWdzLnZpZXdwb3J0Q2hhbmdlZCkge1xuICAgICAgdGhpcy5kZWJvdW5jZSgoKSA9PiB0aGlzLmxvYWRJbWFnZSh2aWV3cG9ydCwgJ3ZpZXdwb3J0IGNoYW5nZWQnKSk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgcmVuZGVyTGF5ZXJzKCk6IExheWVyPGFueT4ge1xuICAgIGNvbnN0IHtib3VuZHMsIGltYWdlLCBsYXN0UmVxdWVzdFBhcmFtZXRlcnN9ID0gdGhpcy5zdGF0ZTtcblxuICAgIHJldHVybiAoXG4gICAgICBpbWFnZSAmJlxuICAgICAgbmV3IEJpdG1hcExheWVyKHtcbiAgICAgICAgLi4udGhpcy5nZXRTdWJMYXllclByb3BzKHtpZDogJ2JpdG1hcCd9KSxcbiAgICAgICAgX2ltYWdlQ29vcmRpbmF0ZVN5c3RlbTpcbiAgICAgICAgICBsYXN0UmVxdWVzdFBhcmFtZXRlcnMuc3JzID09PSAnRVBTRzo0MzI2J1xuICAgICAgICAgICAgPyBDT09SRElOQVRFX1NZU1RFTS5MTkdMQVRcbiAgICAgICAgICAgIDogQ09PUkRJTkFURV9TWVNURU0uQ0FSVEVTSUFOLFxuICAgICAgICBib3VuZHMsXG4gICAgICAgIGltYWdlLFxuICAgICAgICBwaWNrYWJsZTogdGhpcy5wcm9wcy5waWNrYWJsZVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZ2V0RmVhdHVyZUluZm9UZXh0KHg6IG51bWJlciwgeTogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3Qge2xhc3RSZXF1ZXN0UGFyYW1ldGVyc30gPSB0aGlzLnN0YXRlO1xuICAgIGlmIChsYXN0UmVxdWVzdFBhcmFtZXRlcnMpIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVW5kb2N1bWVudGVkIG1ldGhvZFxuICAgICAgY29uc3QgZmVhdHVyZUluZm8gPSBhd2FpdCB0aGlzLnN0YXRlLmltYWdlU291cmNlLmdldEZlYXR1cmVJbmZvVGV4dD8uKHtcbiAgICAgICAgLi4ubGFzdFJlcXVlc3RQYXJhbWV0ZXJzLFxuICAgICAgICBxdWVyeV9sYXllcnM6IGxhc3RSZXF1ZXN0UGFyYW1ldGVycy5sYXllcnMsXG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIGluZm9fZm9ybWF0OiAnYXBwbGljYXRpb24vdm5kLm9nYy5nbWwnXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmZWF0dXJlSW5mbztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgX2NyZWF0ZUltYWdlU291cmNlKHByb3BzOiBXTVNMYXllclByb3BzKTogSW1hZ2VTb3VyY2Uge1xuICAgIGlmIChwcm9wcy5kYXRhIGluc3RhbmNlb2YgSW1hZ2VTb3VyY2UpIHtcbiAgICAgIHJldHVybiBwcm9wcy5kYXRhO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcHJvcHMuZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBjcmVhdGVJbWFnZVNvdXJjZSh7XG4gICAgICAgIHVybDogcHJvcHMuZGF0YSxcbiAgICAgICAgbG9hZE9wdGlvbnM6IHByb3BzLmxvYWRPcHRpb25zLFxuICAgICAgICB0eXBlOiBwcm9wcy5zZXJ2aWNlVHlwZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGltYWdlIHNvdXJjZSBpbiBwcm9wcy5kYXRhJyk7XG4gIH1cblxuICAvKiogUnVuIGEgZ2V0TWV0YWRhdGEgb24gdGhlIGltYWdlIHNlcnZpY2UgKi9cbiAgYXN5bmMgX2xvYWRNZXRhZGF0YSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7aW1hZ2VTb3VyY2V9ID0gdGhpcy5zdGF0ZTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zdGF0ZS5sb2FkQ291bnRlcisrO1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBpbWFnZVNvdXJjZS5nZXRNZXRhZGF0YSgpO1xuXG4gICAgICAvLyBJZiBhIHJlcXVlc3QgdGFrZXMgYSBsb25nIHRpbWUsIGl0IG1heSBubyBsb25nZXIgYmUgZXhwZWN0ZWRcbiAgICAgIGlmICh0aGlzLnN0YXRlLmltYWdlU291cmNlID09PSBpbWFnZVNvdXJjZSkge1xuICAgICAgICB0aGlzLmdldEN1cnJlbnRMYXllcigpPy5wcm9wcy5vbk1ldGFkYXRhTG9hZChtZXRhZGF0YSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZ2V0Q3VycmVudExheWVyKCk/LnByb3BzLm9uTWV0YWRhdGFMb2FkRXJyb3IoZXJyb3IgYXMgRXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnN0YXRlLmxvYWRDb3VudGVyLS07XG4gICAgfVxuICB9XG5cbiAgLyoqIExvYWQgYW4gaW1hZ2UgKi9cbiAgYXN5bmMgbG9hZEltYWdlKHZpZXdwb3J0OiBWaWV3cG9ydCwgX3JlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qge2xheWVycywgc2VydmljZVR5cGUsIHRyYW5zcGFyZW50fSA9IHRoaXMucHJvcHM7XG5cbiAgICAvLyBUT0RPIC0gbW92ZSB0byBJbWFnZVNvdXJjZT9cbiAgICBpZiAoc2VydmljZVR5cGUgPT09ICd3bXMnICYmIGxheWVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBib3VuZHMgPSB2aWV3cG9ydC5nZXRCb3VuZHMoKTtcbiAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSB2aWV3cG9ydDtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSB0aGlzLmdldFJlcXVlc3RJZCgpO1xuICAgIGxldCB7c3JzfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKHNycyA9PT0gJ2F1dG8nKSB7XG4gICAgICAvLyBCaXRtYXBMYXllciBvbmx5IHN1cHBvcnRzIExOR0xBVCBvciBDQVJURVNJQU4gKFdlYi1NZXJjYXRvcilcbiAgICAgIHNycyA9IHZpZXdwb3J0LnJlc29sdXRpb24gPyAnRVBTRzo0MzI2JyA6ICdFUFNHOjM4NTcnO1xuICAgIH1cbiAgICBjb25zdCByZXF1ZXN0UGFyYW1zID0ge1xuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHQsXG4gICAgICAvLyBUT0RPOiByZW1vdmUgYmJveCBvbmNlIGRlY2suZ2wgaXMgdXBncmFkZWQgdG8gXjguMTAgd2l0aCBsb2FkZXJzLmdsIF40XG4gICAgICBiYm94OiBib3VuZHMsXG4gICAgICBib3VuZGluZ0JveDogW1xuICAgICAgICBbYm91bmRzWzBdLCBib3VuZHNbMV1dLFxuICAgICAgICBbYm91bmRzWzJdLCBib3VuZHNbM11dXG4gICAgICBdIGFzIFtbbnVtYmVyLCBudW1iZXJdLCBbbnVtYmVyLCBudW1iZXJdXSxcbiAgICAgIGxheWVycyxcbiAgICAgIHNycyxcbiAgICAgIHRyYW5zcGFyZW50XG4gICAgfTtcbiAgICBpZiAoc3JzID09PSAnRVBTRzozODU3Jykge1xuICAgICAgY29uc3QgW21pblgsIG1pblldID0gV0dTODRUb1BzZXVkb01lcmNhdG9yKFtib3VuZHNbMF0sIGJvdW5kc1sxXV0pO1xuICAgICAgY29uc3QgW21heFgsIG1heFldID0gV0dTODRUb1BzZXVkb01lcmNhdG9yKFtib3VuZHNbMl0sIGJvdW5kc1szXV0pO1xuICAgICAgcmVxdWVzdFBhcmFtcy5ib3VuZGluZ0JveCA9IFtcbiAgICAgICAgW21pblgsIG1pblldLFxuICAgICAgICBbbWF4WCwgbWF4WV1cbiAgICAgIF07XG4gICAgICAvLyBUT0RPOiByZW1vdmUgYmJveCBvbmNlIGRlY2suZ2wgaXMgdXBncmFkZWQgdG8gXjguMTAgd2l0aCBsb2FkZXJzLmdsIF40XG4gICAgICByZXF1ZXN0UGFyYW1zLmJib3ggPSBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV07XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhdGUubG9hZENvdW50ZXIrKztcbiAgICAgIHRoaXMucHJvcHMub25JbWFnZUxvYWRTdGFydChyZXF1ZXN0SWQpO1xuXG4gICAgICBjb25zdCBpbWFnZSA9IGF3YWl0IHRoaXMuc3RhdGUuaW1hZ2VTb3VyY2UuZ2V0SW1hZ2UocmVxdWVzdFBhcmFtcyk7XG5cbiAgICAgIC8vIElmIGEgcmVxdWVzdCB0YWtlcyBhIGxvbmcgdGltZSwgbGF0ZXIgcmVxdWVzdHMgbWF5IGhhdmUgYWxyZWFkeSBsb2FkZWQuXG4gICAgICBpZiAodGhpcy5zdGF0ZS5sYXN0UmVxdWVzdElkIDwgcmVxdWVzdElkKSB7XG4gICAgICAgIHRoaXMuZ2V0Q3VycmVudExheWVyKCk/LnByb3BzLm9uSW1hZ2VMb2FkKHJlcXVlc3RJZCk7XG4gICAgICAgIC8vIE5vdCB0eXBlIHNhZmUuLi5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaW1hZ2UsXG4gICAgICAgICAgYm91bmRzLFxuICAgICAgICAgIGxhc3RSZXF1ZXN0UGFyYW1ldGVyczogcmVxdWVzdFBhcmFtcyxcbiAgICAgICAgICBsYXN0UmVxdWVzdElkOiByZXF1ZXN0SWRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuY29udGV4dC5vbkVycm9yPy4oZXJyb3IgYXMgRXJyb3IsIHRoaXMpO1xuICAgICAgdGhpcy5nZXRDdXJyZW50TGF5ZXIoKT8ucHJvcHMub25JbWFnZUxvYWRFcnJvcihyZXF1ZXN0SWQsIGVycm9yIGFzIEVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zdGF0ZS5sb2FkQ291bnRlci0tO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhFTFBFUlNcblxuICAvKiogR2xvYmFsIGNvdW50ZXIgZm9yIGlzc3VpbmcgdW5pcXVlIHJlcXVlc3QgaWRzICovXG4gIHByaXZhdGUgZ2V0UmVxdWVzdElkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuX25leHRSZXF1ZXN0SWQrKztcbiAgfVxuXG4gIC8qKiBSdW5zIGFuIGFjdGlvbiBpbiB0aGUgZnV0dXJlLCBjYW5jZWxzIGl0IGlmIHRoZSBuZXcgYWN0aW9uIGlzIGlzc3VlZCBiZWZvcmUgaXQgZXhlY3V0ZXMgKi9cbiAgcHJpdmF0ZSBkZWJvdW5jZShmbjogKCkgPT4gdm9pZCwgbXMgPSA1MDApOiB2b2lkIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5zdGF0ZS5fdGltZW91dElkKTtcbiAgICB0aGlzLnN0YXRlLl90aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IGZuKCksIG1zKTtcbiAgfVxufVxuXG4vLyBodHRwczovL2Vwc2cuaW8vMzg1N1xuLy8gK3Byb2o9bWVyYyArYT02Mzc4MTM3ICtiPTYzNzgxMzcgK2xhdF90cz0wICtsb25fMD0wICt4XzA9MCAreV8wPTAgK2s9MSArdW5pdHM9bSArbmFkZ3JpZHM9QG51bGwgK3drdGV4dCArbm9fZGVmcyArdHlwZT1jcnNcbmNvbnN0IEhBTEZfRUFSVEhfQ0lSQ1VNRkVSRU5DRSA9IDYzNzgxMzcgKiBNYXRoLlBJO1xuXG4vKiogUHJvamVjdHMgRVBTRzo0MzI2IHRvIEVQU0c6Mzg1N1xuICogVGhpcyBpcyBhIGxpZ2h0d2VpZ2h0IHJlcGxhY2VtZW50IG9mIHByb2o0LiBVc2UgdGVzdHMgdG8gZW5zdXJlIGNvbmZvcm1hbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gV0dTODRUb1BzZXVkb01lcmNhdG9yKGNvb3JkOiBbbnVtYmVyLCBudW1iZXJdKTogW251bWJlciwgbnVtYmVyXSB7XG4gIGNvbnN0IG1lcmNhdG9yID0gbG5nTGF0VG9Xb3JsZChjb29yZCk7XG4gIG1lcmNhdG9yWzBdID0gKG1lcmNhdG9yWzBdIC8gMjU2IC0gMSkgKiBIQUxGX0VBUlRIX0NJUkNVTUZFUkVOQ0U7XG4gIG1lcmNhdG9yWzFdID0gKG1lcmNhdG9yWzFdIC8gMjU2IC0gMSkgKiBIQUxGX0VBUlRIX0NJUkNVTUZFUkVOQ0U7XG4gIHJldHVybiBtZXJjYXRvcjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsWUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBVUEsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsSUFBQSxHQUFBSCxPQUFBO0FBQStELFNBQUFJLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVosQ0FBQSxJQUFBWSxTQUFBLENBQUFaLENBQUEsUUFBQUEsQ0FBQSxPQUFBRixPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxPQUFB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
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@kepler.gl/deckgl-layers",
|
3
3
|
"author": "Shan He <shan@uber.com>",
|
4
|
-
"version": "3.1.
|
4
|
+
"version": "3.1.9",
|
5
5
|
"description": "kepler.gl constants used by kepler.gl components, actions and reducers",
|
6
6
|
"license": "MIT",
|
7
7
|
"main": "dist/index.js",
|
@@ -35,13 +35,15 @@
|
|
35
35
|
"@deck.gl/core": "^8.9.27",
|
36
36
|
"@deck.gl/geo-layers": "^8.9.27",
|
37
37
|
"@deck.gl/layers": "^8.9.27",
|
38
|
-
"@kepler.gl/constants": "3.1.
|
39
|
-
"@kepler.gl/types": "3.1.
|
40
|
-
"@kepler.gl/utils": "3.1.
|
38
|
+
"@kepler.gl/constants": "3.1.9",
|
39
|
+
"@kepler.gl/types": "3.1.9",
|
40
|
+
"@kepler.gl/utils": "3.1.9",
|
41
|
+
"@loaders.gl/wms": "4.3.2",
|
41
42
|
"@luma.gl/constants": "^8.5.20",
|
42
43
|
"@luma.gl/core": "^8.5.20",
|
43
44
|
"@mapbox/geo-viewport": "^0.4.1",
|
44
45
|
"@mapbox/vector-tile": "^1.3.1",
|
46
|
+
"@math.gl/web-mercator": "^3.6.2",
|
45
47
|
"@types/d3-array": "^2.8.0",
|
46
48
|
"@types/geojson": "^7946.0.8",
|
47
49
|
"@types/lodash": "4.17.5",
|