kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
155 lines (131 loc) • 16.4 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _baseWidget = _interopRequireDefault(require("../base-widget"));
var _functionWidgetIcon = _interopRequireDefault(require("./function-widget-icon"));
var _geoViewport = _interopRequireDefault(require("@mapbox/geo-viewport"));
var _viewportMercatorProject = _interopRequireDefault(require("viewport-mercator-project"));
var _axios = _interopRequireDefault(require("axios"));
var _defaultSettings = require("../../constants/default-settings");
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
var FunctionWidget = exports["default"] = /*#__PURE__*/function (_Widget) {
(0, _inherits2["default"])(FunctionWidget, _Widget);
var _super = _createSuper(FunctionWidget);
function FunctionWidget(props) {
(0, _classCallCheck2["default"])(this, FunctionWidget);
return _super.call(this, props);
}
(0, _createClass2["default"])(FunctionWidget, [{
key: "type",
get: function get() {
return 'Function';
}
}, {
key: "isAggregated",
get: function get() {
return false;
}
}, {
key: "widgetIcon",
get: function get() {
return _functionWidgetIcon["default"];
}
}, {
key: "widgetAggregatedData",
get: function get() {
return null;
}
}, {
key: "calculateAggregationData",
value: function calculateAggregationData(newWidget, filters, datasets, mapState, auth, project) {
var _newWidget$config = newWidget.config,
dataId = _newWidget$config.dataId,
aggregationType = _newWidget$config.aggregationType,
bounds = _newWidget$config.bounds;
var cLL;
var cLR;
var cUL;
var cUR;
var fieldName = newWidget.config.fieldName;
var _datasets$dataId = datasets[dataId],
fields = _datasets$dataId.fields,
indexName = _datasets$dataId.indexName;
var fieldIdx = fields.findIndex(function (f) {
return f.name === fieldName;
});
var uid = auth.uid;
var isEdit = project.isEdit;
var boundingBox;
var boundingPolygon;
if (mapState && bounds) {
var longitude = mapState.longitude,
latitude = mapState.latitude,
height = mapState.height,
width = mapState.width,
zoom = mapState.zoom,
pitch = mapState.pitch,
bearing = mapState.bearing;
boundingBox = _geoViewport["default"].bounds([longitude, latitude], zoom, [width, height]);
var viewport = new _viewportMercatorProject["default"]({
width: width,
height: height,
longitude: longitude,
latitude: latitude,
zoom: zoom,
pitch: pitch,
bearing: bearing
});
cUL = viewport.unproject([0, 0]);
cUR = viewport.unproject([width, 0]);
cLR = viewport.unproject([width, height]);
cLL = viewport.unproject([0, height]);
boundingPolygon = {
type: 'Polygon',
coordinates: [[cUL, cUR, cLR, cLL, cUL]]
};
} // fieldType
// numeric
// string
var filter = filters.filter(function (f) {
return f.dataId.includes(dataId);
});
var apiCallData = {
aggregationType: aggregationType,
filters: JSON.stringify(filter),
viewport: JSON.stringify(boundingPolygon),
fieldName: fieldName,
dynamic: Boolean(bounds),
userId: uid,
indexName: indexName,
fieldType: fieldName ? fields[fieldIdx].type === 'string' ? 'string' : 'numeric' : null,
permissionType: isEdit
};
var config = {
headers: {
'Content-Type': 'application/json'
}
};
var response = _axios["default"].post("".concat(_defaultSettings.ON_PREMESIS_URL, "/geoiqutilities/widget/v1.0/fetch"), apiCallData, config).then(function (result) {
// newWidget.config.aggregatedData = result.data.aggregatedData[0];
// newWidget.config.isCalculating = false;
// this.updateWidgetConfig({
// aggregatedData: result.data.aggregatedData[0],
// isCalculating: false
// });
return result.data.aggregatedData[0];
});
return response;
}
}]);
return FunctionWidget;
}(_baseWidget["default"]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93aWRnZXRzL2Z1bmN0aW9uLXdpZGdldC9mdW5jdGlvbi13aWRnZXQuanMiXSwibmFtZXMiOlsiRnVuY3Rpb25XaWRnZXQiLCJwcm9wcyIsIkZ1bmN0aW9uV2lkZ2V0SWNvbiIsIm5ld1dpZGdldCIsImZpbHRlcnMiLCJkYXRhc2V0cyIsIm1hcFN0YXRlIiwiYXV0aCIsInByb2plY3QiLCJjb25maWciLCJkYXRhSWQiLCJhZ2dyZWdhdGlvblR5cGUiLCJib3VuZHMiLCJjTEwiLCJjTFIiLCJjVUwiLCJjVVIiLCJmaWVsZE5hbWUiLCJmaWVsZHMiLCJpbmRleE5hbWUiLCJmaWVsZElkeCIsImZpbmRJbmRleCIsImYiLCJuYW1lIiwidWlkIiwiaXNFZGl0IiwiYm91bmRpbmdCb3giLCJib3VuZGluZ1BvbHlnb24iLCJsb25naXR1ZGUiLCJsYXRpdHVkZSIsImhlaWdodCIsIndpZHRoIiwiem9vbSIsInBpdGNoIiwiYmVhcmluZyIsImdlb1ZpZXdwb3J0Iiwidmlld3BvcnQiLCJXZWJNZXJjYXRvclZpZXdwb3J0IiwidW5wcm9qZWN0IiwidHlwZSIsImNvb3JkaW5hdGVzIiwiZmlsdGVyIiwiaW5jbHVkZXMiLCJhcGlDYWxsRGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJkeW5hbWljIiwiQm9vbGVhbiIsInVzZXJJZCIsImZpZWxkVHlwZSIsInBlcm1pc3Npb25UeXBlIiwiaGVhZGVycyIsInJlc3BvbnNlIiwiYXhpb3MiLCJwb3N0IiwiT05fUFJFTUVTSVNfVVJMIiwidGhlbiIsInJlc3VsdCIsImRhdGEiLCJhZ2dyZWdhdGVkRGF0YSIsIldpZGdldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0lBRXFCQSxjOzs7OztBQUNuQiwwQkFBWUMsS0FBWixFQUFtQjtBQUFBO0FBQUEsNkJBQ1hBLEtBRFc7QUFFbEI7Ozs7U0FDRCxlQUFXO0FBQ1QsYUFBTyxVQUFQO0FBQ0Q7OztTQUNELGVBQW1CO0FBQ2pCLGFBQU8sS0FBUDtBQUNEOzs7U0FDRCxlQUFpQjtBQUNmLGFBQU9DLDhCQUFQO0FBQ0Q7OztTQUNELGVBQTJCO0FBQ3pCLGFBQU8sSUFBUDtBQUNEOzs7V0FFRCxrQ0FDRUMsU0FERixFQUVFQyxPQUZGLEVBR0VDLFFBSEYsRUFJRUMsUUFKRixFQUtFQyxJQUxGLEVBTUVDLE9BTkYsRUFPRTtBQUNBLDhCQUEwQ0wsU0FBUyxDQUFDTSxNQUFwRDtBQUFBLFVBQU9DLE1BQVAscUJBQU9BLE1BQVA7QUFBQSxVQUFlQyxlQUFmLHFCQUFlQSxlQUFmO0FBQUEsVUFBZ0NDLE1BQWhDLHFCQUFnQ0EsTUFBaEM7QUFDQSxVQUFJQyxHQUFKO0FBQVMsVUFBSUMsR0FBSjtBQUFTLFVBQUlDLEdBQUo7QUFBUyxVQUFJQyxHQUFKO0FBQzNCLFVBQU1DLFNBQVMsR0FBR2QsU0FBUyxDQUFDTSxNQUFWLENBQWlCUSxTQUFuQztBQUNBLDZCQUEwQlosUUFBUSxDQUFDSyxNQUFELENBQWxDO0FBQUEsVUFBS1EsTUFBTCxvQkFBS0EsTUFBTDtBQUFBLFVBQWFDLFNBQWIsb0JBQWFBLFNBQWI7QUFDQSxVQUFNQyxRQUFRLEdBQUdGLE1BQU0sQ0FBQ0csU0FBUCxDQUFpQixVQUFBQyxDQUFDO0FBQUEsZUFBSUEsQ0FBQyxDQUFDQyxJQUFGLEtBQVdOLFNBQWY7QUFBQSxPQUFsQixDQUFqQjtBQUNBLFVBQU9PLEdBQVAsR0FBY2pCLElBQWQsQ0FBT2lCLEdBQVA7QUFDQSxVQUFPQyxNQUFQLEdBQWlCakIsT0FBakIsQ0FBT2lCLE1BQVA7QUFDQSxVQUFJQyxXQUFKO0FBQWlCLFVBQUlDLGVBQUo7O0FBRWpCLFVBQUlyQixRQUFRLElBQUlNLE1BQWhCLEVBQXdCO0FBQ3RCLFlBQ0VnQixTQURGLEdBUUl0QixRQVJKLENBQ0VzQixTQURGO0FBQUEsWUFFRUMsUUFGRixHQVFJdkIsUUFSSixDQUVFdUIsUUFGRjtBQUFBLFlBR0VDLE1BSEYsR0FRSXhCLFFBUkosQ0FHRXdCLE1BSEY7QUFBQSxZQUlFQyxLQUpGLEdBUUl6QixRQVJKLENBSUV5QixLQUpGO0FBQUEsWUFLRUMsSUFMRixHQVFJMUIsUUFSSixDQUtFMEIsSUFMRjtBQUFBLFlBTUVDLEtBTkYsR0FRSTNCLFFBUkosQ0FNRTJCLEtBTkY7QUFBQSxZQU9FQyxPQVBGLEdBUUk1QixRQVJKLENBT0U0QixPQVBGO0FBVUFSLFFBQUFBLFdBQVcsR0FBR1Msd0JBQVl2QixNQUFaLENBQW1CLENBQUNnQixTQUFELEVBQVlDLFFBQVosQ0FBbkIsRUFBMENHLElBQTFDLEVBQWdELENBQzVERCxLQUQ0RCxFQUU1REQsTUFGNEQsQ0FBaEQsQ0FBZDtBQUtBLFlBQU1NLFFBQVEsR0FBRyxJQUFJQyxtQ0FBSixDQUF3QjtBQUN2Q04sVUFBQUEsS0FBSyxFQUFMQSxLQUR1QztBQUV2Q0QsVUFBQUEsTUFBTSxFQUFOQSxNQUZ1QztBQUd2Q0YsVUFBQUEsU0FBUyxFQUFUQSxTQUh1QztBQUl2Q0MsVUFBQUEsUUFBUSxFQUFSQSxRQUp1QztBQUt2Q0csVUFBQUEsSUFBSSxFQUFKQSxJQUx1QztBQU12Q0MsVUFBQUEsS0FBSyxFQUFMQSxLQU51QztBQU92Q0MsVUFBQUEsT0FBTyxFQUFQQTtBQVB1QyxTQUF4QixDQUFqQjtBQVNBbkIsUUFBQUEsR0FBRyxHQUFHcUIsUUFBUSxDQUFDRSxTQUFULENBQW1CLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBbkIsQ0FBTjtBQUNBdEIsUUFBQUEsR0FBRyxHQUFHb0IsUUFBUSxDQUFDRSxTQUFULENBQW1CLENBQUNQLEtBQUQsRUFBUSxDQUFSLENBQW5CLENBQU47QUFDQWpCLFFBQUFBLEdBQUcsR0FBR3NCLFFBQVEsQ0FBQ0UsU0FBVCxDQUFtQixDQUFDUCxLQUFELEVBQVFELE1BQVIsQ0FBbkIsQ0FBTjtBQUNBakIsUUFBQUEsR0FBRyxHQUFHdUIsUUFBUSxDQUFDRSxTQUFULENBQW1CLENBQUMsQ0FBRCxFQUFJUixNQUFKLENBQW5CLENBQU47QUFFQUgsUUFBQUEsZUFBZSxHQUFHO0FBQ2hCWSxVQUFBQSxJQUFJLEVBQUUsU0FEVTtBQUVoQkMsVUFBQUEsV0FBVyxFQUFFLENBQUMsQ0FBQ3pCLEdBQUQsRUFBTUMsR0FBTixFQUFXRixHQUFYLEVBQWdCRCxHQUFoQixFQUFxQkUsR0FBckIsQ0FBRDtBQUZHLFNBQWxCO0FBSUQsT0E1Q0QsQ0E2Q0E7QUFDQTtBQUNBOzs7QUFFQSxVQUFJMEIsTUFBTSxHQUFHckMsT0FBTyxDQUFDcUMsTUFBUixDQUFlLFVBQUFuQixDQUFDO0FBQUEsZUFBSUEsQ0FBQyxDQUFDWixNQUFGLENBQVNnQyxRQUFULENBQWtCaEMsTUFBbEIsQ0FBSjtBQUFBLE9BQWhCLENBQWI7QUFDQSxVQUFNaUMsV0FBVyxHQUFHO0FBQ2xCaEMsUUFBQUEsZUFBZSxFQUFmQSxlQURrQjtBQUVsQlAsUUFBQUEsT0FBTyxFQUFFd0MsSUFBSSxDQUFDQyxTQUFMLENBQWVKLE1BQWYsQ0FGUztBQUdsQkwsUUFBQUEsUUFBUSxFQUFFUSxJQUFJLENBQUNDLFNBQUwsQ0FBZWxCLGVBQWYsQ0FIUTtBQUlsQlYsUUFBQUEsU0FBUyxFQUFUQSxTQUprQjtBQUtsQjZCLFFBQUFBLE9BQU8sRUFBRUMsT0FBTyxDQUFDbkMsTUFBRCxDQUxFO0FBTWxCb0MsUUFBQUEsTUFBTSxFQUFFeEIsR0FOVTtBQU9sQkwsUUFBQUEsU0FBUyxFQUFUQSxTQVBrQjtBQVFsQjhCLFFBQUFBLFNBQVMsRUFBRWhDLFNBQVMsR0FDaEJDLE1BQU0sQ0FBQ0UsUUFBRCxDQUFOLENBQWlCbUIsSUFBakIsS0FBMEIsUUFBMUIsR0FDRSxRQURGLEdBRUUsU0FIYyxHQUloQixJQVpjO0FBYWxCVyxRQUFBQSxjQUFjLEVBQUV6QjtBQWJFLE9BQXBCO0FBZ0JBLFVBQU1oQixNQUFNLEdBQUc7QUFDYjBDLFFBQUFBLE9BQU8sRUFBRTtBQUNQLDBCQUFnQjtBQURUO0FBREksT0FBZjs7QUFLQSxVQUFNQyxRQUFRLEdBQUdDLGtCQUNkQyxJQURjLFdBRVZDLGdDQUZVLHdDQUdiWixXQUhhLEVBSWJsQyxNQUphLEVBTWQrQyxJQU5jLENBTVQsVUFBQUMsTUFBTSxFQUFJO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBT0EsTUFBTSxDQUFDQyxJQUFQLENBQVlDLGNBQVosQ0FBMkIsQ0FBM0IsQ0FBUDtBQUNELE9BZGMsQ0FBakI7O0FBZ0JBLGFBQU9QLFFBQVA7QUFDRDs7O0VBaEh5Q1Esc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjMgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgV2lkZ2V0IGZyb20gJy4uL2Jhc2Utd2lkZ2V0JztcbmltcG9ydCBGdW5jdGlvbldpZGdldEljb24gZnJvbSAnLi9mdW5jdGlvbi13aWRnZXQtaWNvbic7XG5pbXBvcnQgZ2VvVmlld3BvcnQgZnJvbSAnQG1hcGJveC9nZW8tdmlld3BvcnQnO1xuaW1wb3J0IFdlYk1lcmNhdG9yVmlld3BvcnQgZnJvbSAndmlld3BvcnQtbWVyY2F0b3ItcHJvamVjdCc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHtPTl9QUkVNRVNJU19VUkx9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRnVuY3Rpb25XaWRnZXQgZXh0ZW5kcyBXaWRnZXQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gJ0Z1bmN0aW9uJztcbiAgfVxuICBnZXQgaXNBZ2dyZWdhdGVkKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBnZXQgd2lkZ2V0SWNvbigpIHtcbiAgICByZXR1cm4gRnVuY3Rpb25XaWRnZXRJY29uO1xuICB9XG4gIGdldCB3aWRnZXRBZ2dyZWdhdGVkRGF0YSgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNhbGN1bGF0ZUFnZ3JlZ2F0aW9uRGF0YShcbiAgICBuZXdXaWRnZXQsXG4gICAgZmlsdGVycyxcbiAgICBkYXRhc2V0cyxcbiAgICBtYXBTdGF0ZSxcbiAgICBhdXRoLFxuICAgIHByb2plY3RcbiAgKSB7XG4gICAgY29uc3Qge2RhdGFJZCwgYWdncmVnYXRpb25UeXBlLCBib3VuZHN9ID0gbmV3V2lkZ2V0LmNvbmZpZztcbiAgICBsZXQgY0xMOyBsZXQgY0xSOyBsZXQgY1VMOyBsZXQgY1VSO1xuICAgIGNvbnN0IGZpZWxkTmFtZSA9IG5ld1dpZGdldC5jb25maWcuZmllbGROYW1lO1xuICAgIHZhciB7ZmllbGRzLCBpbmRleE5hbWV9ID0gZGF0YXNldHNbZGF0YUlkXTtcbiAgICBjb25zdCBmaWVsZElkeCA9IGZpZWxkcy5maW5kSW5kZXgoZiA9PiBmLm5hbWUgPT09IGZpZWxkTmFtZSk7XG4gICAgY29uc3Qge3VpZH0gPSBhdXRoO1xuICAgIGNvbnN0IHtpc0VkaXR9ID0gcHJvamVjdDtcbiAgICBsZXQgYm91bmRpbmdCb3g7IGxldCBib3VuZGluZ1BvbHlnb247XG5cbiAgICBpZiAobWFwU3RhdGUgJiYgYm91bmRzKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGxvbmdpdHVkZSxcbiAgICAgICAgbGF0aXR1ZGUsXG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIHpvb20sXG4gICAgICAgIHBpdGNoLFxuICAgICAgICBiZWFyaW5nXG4gICAgICB9ID0gbWFwU3RhdGU7XG5cbiAgICAgIGJvdW5kaW5nQm94ID0gZ2VvVmlld3BvcnQuYm91bmRzKFtsb25naXR1ZGUsIGxhdGl0dWRlXSwgem9vbSwgW1xuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0XG4gICAgICBdKTtcblxuICAgICAgY29uc3Qgdmlld3BvcnQgPSBuZXcgV2ViTWVyY2F0b3JWaWV3cG9ydCh7XG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIGxvbmdpdHVkZSxcbiAgICAgICAgbGF0aXR1ZGUsXG4gICAgICAgIHpvb20sXG4gICAgICAgIHBpdGNoLFxuICAgICAgICBiZWFyaW5nXG4gICAgICB9KTtcbiAgICAgIGNVTCA9IHZpZXdwb3J0LnVucHJvamVjdChbMCwgMF0pO1xuICAgICAgY1VSID0gdmlld3BvcnQudW5wcm9qZWN0KFt3aWR0aCwgMF0pO1xuICAgICAgY0xSID0gdmlld3BvcnQudW5wcm9qZWN0KFt3aWR0aCwgaGVpZ2h0XSk7XG4gICAgICBjTEwgPSB2aWV3cG9ydC51bnByb2plY3QoWzAsIGhlaWdodF0pO1xuXG4gICAgICBib3VuZGluZ1BvbHlnb24gPSB7XG4gICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IFtbY1VMLCBjVVIsIGNMUiwgY0xMLCBjVUxdXVxuICAgICAgfTtcbiAgICB9XG4gICAgLy8gZmllbGRUeXBlXG4gICAgLy8gbnVtZXJpY1xuICAgIC8vIHN0cmluZ1xuXG4gICAgdmFyIGZpbHRlciA9IGZpbHRlcnMuZmlsdGVyKGYgPT4gZi5kYXRhSWQuaW5jbHVkZXMoZGF0YUlkKSk7XG4gICAgY29uc3QgYXBpQ2FsbERhdGEgPSB7XG4gICAgICBhZ2dyZWdhdGlvblR5cGUsXG4gICAgICBmaWx0ZXJzOiBKU09OLnN0cmluZ2lmeShmaWx0ZXIpLFxuICAgICAgdmlld3BvcnQ6IEpTT04uc3RyaW5naWZ5KGJvdW5kaW5nUG9seWdvbiksXG4gICAgICBmaWVsZE5hbWUsXG4gICAgICBkeW5hbWljOiBCb29sZWFuKGJvdW5kcyksXG4gICAgICB1c2VySWQ6IHVpZCxcbiAgICAgIGluZGV4TmFtZSxcbiAgICAgIGZpZWxkVHlwZTogZmllbGROYW1lXG4gICAgICAgID8gZmllbGRzW2ZpZWxkSWR4XS50eXBlID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gJ3N0cmluZydcbiAgICAgICAgICA6ICdudW1lcmljJ1xuICAgICAgICA6IG51bGwsXG4gICAgICBwZXJtaXNzaW9uVHlwZTogaXNFZGl0XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgcmVzcG9uc2UgPSBheGlvc1xuICAgICAgLnBvc3QoXG4gICAgICAgIGAke09OX1BSRU1FU0lTX1VSTCAgfS9nZW9pcXV0aWxpdGllcy93aWRnZXQvdjEuMC9mZXRjaGAsXG4gICAgICAgIGFwaUNhbGxEYXRhLFxuICAgICAgICBjb25maWdcbiAgICAgIClcbiAgICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgIC8vIG5ld1dpZGdldC5jb25maWcuYWdncmVnYXRlZERhdGEgPSByZXN1bHQuZGF0YS5hZ2dyZWdhdGVkRGF0YVswXTtcbiAgICAgICAgLy8gbmV3V2lkZ2V0LmNvbmZpZy5pc0NhbGN1bGF0aW5nID0gZmFsc2U7XG4gICAgICAgIC8vIHRoaXMudXBkYXRlV2lkZ2V0Q29uZmlnKHtcbiAgICAgICAgLy8gICBhZ2dyZWdhdGVkRGF0YTogcmVzdWx0LmRhdGEuYWdncmVnYXRlZERhdGFbMF0sXG4gICAgICAgIC8vICAgaXNDYWxjdWxhdGluZzogZmFsc2VcbiAgICAgICAgLy8gfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQuZGF0YS5hZ2dyZWdhdGVkRGF0YVswXTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG59XG4iXX0=