@kepler.gl/utils 3.1.2 → 3.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,8 +11,8 @@ exports.getStyleImageIcon = getStyleImageIcon;
11
11
  exports.mergeLayerGroupVisibility = mergeLayerGroupVisibility;
12
12
  exports.scaleMapStyleByResolution = scaleMapStyleByResolution;
13
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
- var _lodash = _interopRequireDefault(require("lodash.memoize"));
15
- var _lodash2 = _interopRequireDefault(require("lodash.clonedeep"));
14
+ var _memoize = _interopRequireDefault(require("lodash/memoize"));
15
+ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
16
16
  var _constants = require("@kepler.gl/constants");
17
17
  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; }
18
18
  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; } // SPDX-License-Identifier: MIT
@@ -40,7 +40,7 @@ var resolver = function resolver(_ref2) {
40
40
  * @param visibleLayerGroups - visible layers of top map
41
41
  * @returns top map style
42
42
  */
43
- var editTopMapStyle = exports.editTopMapStyle = (0, _lodash["default"])(function (_ref3) {
43
+ var editTopMapStyle = exports.editTopMapStyle = (0, _memoize["default"])(function (_ref3) {
44
44
  var mapStyle = _ref3.mapStyle,
45
45
  visibleLayerGroups = _ref3.visibleLayerGroups;
46
46
  var visibleFilters = (mapStyle.layerGroups || []).filter(function (lg) {
@@ -69,7 +69,7 @@ var editTopMapStyle = exports.editTopMapStyle = (0, _lodash["default"])(function
69
69
  * @param {Object} visibleLayerGroups - visible layers of bottom map
70
70
  * @returns {Object} bottom map style
71
71
  */
72
- var editBottomMapStyle = exports.editBottomMapStyle = (0, _lodash["default"])(function (_ref4) {
72
+ var editBottomMapStyle = exports.editBottomMapStyle = (0, _memoize["default"])(function (_ref4) {
73
73
  var id = _ref4.id,
74
74
  mapStyle = _ref4.mapStyle,
75
75
  visibleLayerGroups = _ref4.visibleLayerGroups;
@@ -146,7 +146,7 @@ function scaleMapStyleByResolution(mapboxStyle, scale) {
146
146
  // @ts-ignore
147
147
  var labelLayerFilter = labelLayerGroup.filter;
148
148
  var zoomOffset = Math.log2(scale);
149
- var copyStyle = (0, _lodash2["default"])(mapboxStyle);
149
+ var copyStyle = (0, _cloneDeep["default"])(mapboxStyle);
150
150
  (copyStyle.layers || []).forEach(function (d) {
151
151
  // edit minzoom and maxzoom
152
152
  if (d.maxzoom) {
@@ -191,4 +191,4 @@ function mergeLayerGroupVisibility(defaultLayerGroup, currentLayerGroup) {
191
191
  return _objectSpread(_objectSpread({}, accu), Object.prototype.hasOwnProperty.call(currentLayerGroup, key) ? (0, _defineProperty2["default"])({}, key, currentLayerGroup[key]) : {});
192
192
  }, defaultLayerGroup);
193
193
  }
194
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoMiIsIl9jb25zdGFudHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSIsIl9yZWYiLCJfcmVmJGxheWVyR3JvdXBzIiwibGF5ZXJHcm91cHMiLCJyZWR1Y2UiLCJhY2N1IiwibGF5ZXIiLCJzbHVnIiwiZGVmYXVsdFZpc2liaWxpdHkiLCJyZXNvbHZlciIsIl9yZWYyIiwiaWQiLCJfcmVmMiR2aXNpYmxlTGF5ZXJHcm8iLCJ2aXNpYmxlTGF5ZXJHcm91cHMiLCJjb25jYXQiLCJkIiwic29ydCIsImpvaW4iLCJlZGl0VG9wTWFwU3R5bGUiLCJleHBvcnRzIiwibWVtb2l6ZSIsIl9yZWYzIiwibWFwU3R5bGUiLCJ2aXNpYmxlRmlsdGVycyIsImxnIiwibWFwIiwiZmlsdGVyZWRMYXllcnMiLCJzdHlsZSIsImxheWVycyIsInNvbWUiLCJtYXRjaCIsImVkaXRCb3R0b21NYXBTdHlsZSIsIl9yZWY0IiwiTk9fTUFQX0lEIiwiRU1QVFlfTUFQQk9YX1NUWUxFIiwiaW52aXNpYmxlRmlsdGVycyIsImV2ZXJ5IiwiZ2V0U3R5bGVEb3dubG9hZFVybCIsInN0eWxlVXJsIiwiYWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJzdGFydHNXaXRoIiwic3R5bGVJZCIsInJlcGxhY2UiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwiZ2V0U3R5bGVJbWFnZUljb24iLCJfcmVmNSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiX3JlZjUkbWFwYm94QXBpVXJsIiwiX3JlZjUkbWFwU3RhdGUiLCJtYXBTdGF0ZSIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwiem9vbSIsIl9yZWY1JG1hcFciLCJtYXBXIiwiX3JlZjUkbWFwSCIsIm1hcEgiLCJzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uIiwibWFwYm94U3R5bGUiLCJzY2FsZSIsImxhYmVsTGF5ZXJHcm91cCIsIkRFRkFVTFRfTEFZRVJfR1JPVVBTIiwiZmluZCIsImxhYmVsTGF5ZXJGaWx0ZXIiLCJ6b29tT2Zmc2V0IiwiTWF0aCIsImxvZzIiLCJjb3B5U3R5bGUiLCJjbG9uZERlZXAiLCJtYXh6b29tIiwibWF4IiwibWluem9vbSIsImxheW91dCIsIkFycmF5IiwiaXNBcnJheSIsInN0b3BzIiwic3RvcCIsIm1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHkiLCJkZWZhdWx0TGF5ZXJHcm91cCIsImN1cnJlbnRMYXllckdyb3VwIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC1zdHlsZS11dGlscy9tYXBib3gtZ2wtc3R5bGUtZWRpdG9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBtZW1vaXplIGZyb20gJ2xvZGFzaC5tZW1vaXplJztcbmltcG9ydCBjbG9uZERlZXAgZnJvbSAnbG9kYXNoLmNsb25lZGVlcCc7XG5pbXBvcnQge1xuICBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgTk9fTUFQX0lELFxuICBFTVBUWV9NQVBCT1hfU1RZTEVcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtCYXNlTWFwU3R5bGUsIExheWVyR3JvdXAsIE1hcFN0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSh7bGF5ZXJHcm91cHMgPSBbXX06IHtsYXllckdyb3VwczogTGF5ZXJHcm91cFtdfSkge1xuICByZXR1cm4gbGF5ZXJHcm91cHMucmVkdWNlKFxuICAgIChhY2N1LCBsYXllcikgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbbGF5ZXIuc2x1Z106IGxheWVyLmRlZmF1bHRWaXNpYmlsaXR5XG4gICAgfSksXG4gICAge31cbiAgKTtcbn1cblxuY29uc3QgcmVzb2x2ZXIgPSAoe1xuICBpZCxcbiAgdmlzaWJsZUxheWVyR3JvdXBzID0ge31cbn06IHtcbiAgaWQ/OiBzdHJpbmc7XG4gIG1hcFN0eWxlOiBCYXNlTWFwU3R5bGU7XG4gIHZpc2libGVMYXllckdyb3Vwczoge1tpZDogc3RyaW5nXTogTGF5ZXJHcm91cCB8IGJvb2xlYW59IHwgZmFsc2U7XG59KSA9PlxuICBgJHtpZH06JHtPYmplY3Qua2V5cyh2aXNpYmxlTGF5ZXJHcm91cHMpXG4gICAgLmZpbHRlcihkID0+IHZpc2libGVMYXllckdyb3Vwc1tkXSlcbiAgICAuc29ydCgpXG4gICAgLmpvaW4oJy0nKX1gO1xuXG4vKipcbiAqIEVkaXQgcHJlc2V0IG1hcCBzdHlsZSB0byBrZWVwIG9ubHkgdmlzaWJsZSBsYXllcnNcbiAqXG4gKiBAcGFyYW0gbWFwU3R5bGUgLSBwcmVzZXQgbWFwIHN0eWxlXG4gKiBAcGFyYW0gdmlzaWJsZUxheWVyR3JvdXBzIC0gdmlzaWJsZSBsYXllcnMgb2YgdG9wIG1hcFxuICogQHJldHVybnMgdG9wIG1hcCBzdHlsZVxuICovXG5leHBvcnQgY29uc3QgZWRpdFRvcE1hcFN0eWxlID0gbWVtb2l6ZShcbiAgKHtcbiAgICBtYXBTdHlsZSxcbiAgICB2aXNpYmxlTGF5ZXJHcm91cHNcbiAgfToge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIG1hcFN0eWxlOiBCYXNlTWFwU3R5bGU7XG4gICAgdmlzaWJsZUxheWVyR3JvdXBzOiB7W2lkOiBzdHJpbmddOiBMYXllckdyb3VwIHwgYm9vbGVhbn0gfCBmYWxzZTtcbiAgfSkgPT4ge1xuICAgIGNvbnN0IHZpc2libGVGaWx0ZXJzID0gKG1hcFN0eWxlLmxheWVyR3JvdXBzIHx8IFtdKVxuICAgICAgLmZpbHRlcihsZyA9PiB2aXNpYmxlTGF5ZXJHcm91cHNbbGcuc2x1Z10pXG4gICAgICAubWFwKGxnID0+IGxnLmZpbHRlcik7XG5cbiAgICAvLyBpZiB0b3AgbWFwXG4gICAgLy8ga2VlcCBvbmx5IHZpc2libGUgbGF5ZXJzXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIGNvbnN0IGZpbHRlcmVkTGF5ZXJzID0gbWFwU3R5bGUuc3R5bGUubGF5ZXJzLmZpbHRlcihsYXllciA9PlxuICAgICAgdmlzaWJsZUZpbHRlcnMuc29tZShtYXRjaCA9PiBtYXRjaChsYXllcikpXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5tYXBTdHlsZS5zdHlsZSxcbiAgICAgIGxheWVyczogZmlsdGVyZWRMYXllcnNcbiAgICB9O1xuICB9LFxuICByZXNvbHZlclxuKTtcblxuLyoqXG4gKiBFZGl0IHByZXNldCBtYXAgc3R5bGUgdG8gZmlsdGVyIG91dCBpbnZpc2libGUgbGF5ZXJzXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG1hcFN0eWxlIC0gcHJlc2V0IG1hcCBzdHlsZVxuICogQHBhcmFtIHtPYmplY3R9IHZpc2libGVMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIGJvdHRvbSBtYXBcbiAqIEByZXR1cm5zIHtPYmplY3R9IGJvdHRvbSBtYXAgc3R5bGVcbiAqL1xuZXhwb3J0IGNvbnN0IGVkaXRCb3R0b21NYXBTdHlsZSA9IG1lbW9pemUoKHtpZCwgbWFwU3R5bGUsIHZpc2libGVMYXllckdyb3Vwc30pID0+IHtcbiAgaWYgKGlkID09PSBOT19NQVBfSUQpIHtcbiAgICByZXR1cm4gRU1QVFlfTUFQQk9YX1NUWUxFO1xuICB9XG5cbiAgY29uc3QgaW52aXNpYmxlRmlsdGVycyA9IChtYXBTdHlsZS5sYXllckdyb3VwcyB8fCBbXSlcbiAgICAuZmlsdGVyKGxnID0+ICF2aXNpYmxlTGF5ZXJHcm91cHNbbGcuc2x1Z10pXG4gICAgLm1hcChsZyA9PiBsZy5maWx0ZXIpO1xuXG4gIC8vIGlmIGJvdHRvbSBtYXBcbiAgLy8gZmlsdGVyIG91dCBpbnZpc2libGUgbGF5ZXJzXG4gIGNvbnN0IGZpbHRlcmVkTGF5ZXJzID0gbWFwU3R5bGUuc3R5bGUubGF5ZXJzLmZpbHRlcihsYXllciA9PlxuICAgIGludmlzaWJsZUZpbHRlcnMuZXZlcnkobWF0Y2ggPT4gIW1hdGNoKGxheWVyKSlcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm1hcFN0eWxlLnN0eWxlLFxuICAgIGxheWVyczogZmlsdGVyZWRMYXllcnNcbiAgfTtcbn0sIHJlc29sdmVyKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0eWxlRG93bmxvYWRVcmwoc3R5bGVVcmwsIGFjY2Vzc1Rva2VuLCBtYXBib3hBcGlVcmwpIHtcbiAgaWYgKHN0eWxlVXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgIHJldHVybiBzdHlsZVVybDtcbiAgfVxuXG4gIC8vIG1hcGJveDovL3N0eWxlcy9qY2tyL2NqaGNsMGx4djEzZGkycnBmb3l0ZGJkeWpcbiAgaWYgKHN0eWxlVXJsLnN0YXJ0c1dpdGgoJ21hcGJveDovL3N0eWxlcycpKSB7XG4gICAgY29uc3Qgc3R5bGVJZCA9IHN0eWxlVXJsLnJlcGxhY2UoJ21hcGJveDovL3N0eWxlcy8nLCAnJyk7XG5cbiAgICAvLyBodHRwczovL2FwaS5tYXBib3guY29tL3N0eWxlcy92MS9oZXNoYW4wMTMxL2NqZzFiZnVtbzFjd20ycmxyanhraW5mZ3c/cGx1Z2luTmFtZT1LZXBsZXJnbCZhY2Nlc3NfdG9rZW49PHRva2VuPlxuICAgIHJldHVybiBgJHtcbiAgICAgIG1hcGJveEFwaVVybCB8fCBERUZBVUxUX01BUEJPWF9BUElfVVJMXG4gICAgfS9zdHlsZXMvdjEvJHtzdHlsZUlkfT9wbHVnaW5OYW1lPUtlcGxlcmdsJmFjY2Vzc190b2tlbj0ke2FjY2Vzc1Rva2VufWA7XG4gIH1cblxuICAvLyBzdHlsZSB1cmwgbm90IHJlY29nbml6ZWRcbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgc3RhdGljIG1hcCBpbWFnZSBmcm9tIHN0eWxlIFVybCB0byBiZSB1c2VkIGFzIGljb25cbiAqIEBwYXJhbSBwYXJhbVxuICogQHBhcmFtIHBhcmFtLnN0eWxlVXJsXG4gKiBAcGFyYW0gcGFyYW0ubWFwYm94QXBpQWNjZXNzVG9rZW5cbiAqIEBwYXJhbSBwYXJhbS5tYXBib3hBcGlVcmxcbiAqIEBwYXJhbSBwYXJhbS5tYXBTdGF0ZVxuICogQHBhcmFtIHBhcmFtLm1hcFdcbiAqIEBwYXJhbSBwYXJhbS5tYXBIXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdHlsZUltYWdlSWNvbih7XG4gIHN0eWxlVXJsLFxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgbWFwYm94QXBpVXJsID0gREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgbWFwU3RhdGUgPSB7XG4gICAgbG9uZ2l0dWRlOiAtMTIyLjMzOTEsXG4gICAgbGF0aXR1ZGU6IDM3Ljc5MjIsXG4gICAgem9vbTogOVxuICB9LFxuICBtYXBXID0gNDAwLFxuICBtYXBIID0gMzAwXG59OiB7XG4gIHN0eWxlVXJsOiBzdHJpbmc7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIG1hcGJveEFwaVVybD86IHN0cmluZztcbiAgbWFwU3RhdGU/OiBQYXJ0aWFsPE1hcFN0YXRlPjtcbiAgbWFwVz86IG51bWJlcjtcbiAgbWFwSD86IG51bWJlcjtcbn0pIHtcbiAgY29uc3Qgc3R5bGVJZCA9IHN0eWxlVXJsLnJlcGxhY2UoJ21hcGJveDovL3N0eWxlcy8nLCAnJyk7XG5cbiAgcmV0dXJuIChcbiAgICBgJHttYXBib3hBcGlVcmx9L3N0eWxlcy92MS8ke3N0eWxlSWR9L3N0YXRpYy9gICtcbiAgICBgJHttYXBTdGF0ZS5sb25naXR1ZGV9LCR7bWFwU3RhdGUubGF0aXR1ZGV9LCR7bWFwU3RhdGUuem9vbX0sMCwwL2AgK1xuICAgIGAke21hcFd9eCR7bWFwSH1gICtcbiAgICBgP2FjY2Vzc190b2tlbj0ke21hcGJveEFwaUFjY2Vzc1Rva2VufSZsb2dvPWZhbHNlJmF0dHJpYnV0aW9uPWZhbHNlYFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvbihtYXBib3hTdHlsZSwgc2NhbGUpIHtcbiAgaWYgKHNjYWxlICE9PSAxICYmIG1hcGJveFN0eWxlKSB7XG4gICAgY29uc3QgbGFiZWxMYXllckdyb3VwID0gREVGQVVMVF9MQVlFUl9HUk9VUFMuZmluZChsZyA9PiBsZy5zbHVnID09PSAnbGFiZWwnKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qge2ZpbHRlcjogbGFiZWxMYXllckZpbHRlcn0gPSBsYWJlbExheWVyR3JvdXA7XG4gICAgY29uc3Qgem9vbU9mZnNldCA9IE1hdGgubG9nMihzY2FsZSk7XG5cbiAgICBjb25zdCBjb3B5U3R5bGUgPSBjbG9uZERlZXAobWFwYm94U3R5bGUpO1xuICAgIChjb3B5U3R5bGUubGF5ZXJzIHx8IFtdKS5mb3JFYWNoKGQgPT4ge1xuICAgICAgLy8gZWRpdCBtaW56b29tIGFuZCBtYXh6b29tXG4gICAgICBpZiAoZC5tYXh6b29tKSB7XG4gICAgICAgIGQubWF4em9vbSA9IE1hdGgubWF4KGQubWF4em9vbSArIHpvb21PZmZzZXQsIDEpO1xuXG4gICAgICAgIC8vIFRoZSBtYXhpbXVtIHpvb20gaXMgMjRcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Zpc2dsL3JlYWN0LW1hcC1nbC9ibG9iL21hc3Rlci9kb2NzL2FwaS1yZWZlcmVuY2UvbWFwLm1kI21heHpvb20tbnVtYmVyLW1heHpvb21cbiAgICAgICAgaWYgKGQubWF4em9vbSA+IDI0KSB7XG4gICAgICAgICAgZC5tYXh6b29tID0gMjQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGQubWluem9vbSkge1xuICAgICAgICBkLm1pbnpvb20gPSBNYXRoLm1heChkLm1pbnpvb20gKyB6b29tT2Zmc2V0LCAxKTtcbiAgICAgIH1cblxuICAgICAgLy8gZWRpdCB0ZXh0IHNpemVcbiAgICAgIGlmIChsYWJlbExheWVyRmlsdGVyKGQpKSB7XG4gICAgICAgIGlmIChkLmxheW91dCAmJiBkLmxheW91dFsndGV4dC1zaXplJ10gJiYgQXJyYXkuaXNBcnJheShkLmxheW91dFsndGV4dC1zaXplJ10uc3RvcHMpKSB7XG4gICAgICAgICAgZC5sYXlvdXRbJ3RleHQtc2l6ZSddLnN0b3BzLmZvckVhY2goc3RvcCA9PiB7XG4gICAgICAgICAgICAvLyB6b29tXG4gICAgICAgICAgICBzdG9wWzBdID0gTWF0aC5tYXgoc3RvcFswXSArIHpvb21PZmZzZXQsIDEpO1xuICAgICAgICAgICAgLy8gc2l6ZVxuICAgICAgICAgICAgc3RvcFsxXSAqPSBzY2FsZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvcHlTdHlsZTtcbiAgfVxuXG4gIHJldHVybiBtYXBib3hTdHlsZTtcbn1cblxuLyoqXG4gKiBXaGVuIHN3aXRjaCB0byBhIG5ldyBzdHlsZSwgdHJ5IHRvIGtlZXAgY3VycmVudCBsYXllciBncm91cCB2aXNpYmlsaXR5XG4gKiBieSBtZXJnaW5nIGRlZmF1bHQgYW5kIGN1cnJlbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0TGF5ZXJHcm91cFxuICogQHBhcmFtIHtPYmplY3R9IGN1cnJlbnRMYXllckdyb3VwXG4gKiBAcmV0dXJuIHtPYmplY3R9IG1lcmdlZExheWVyR3JvdXBzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5KGRlZmF1bHRMYXllckdyb3VwLCBjdXJyZW50TGF5ZXJHcm91cCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVmYXVsdExheWVyR3JvdXApLnJlZHVjZShcbiAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIC4uLihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY3VycmVudExheWVyR3JvdXAsIGtleSlcbiAgICAgICAgPyB7W2tleV06IGN1cnJlbnRMYXllckdyb3VwW2tleV19XG4gICAgICAgIDoge30pXG4gICAgfSksXG4gICAgZGVmYXVsdExheWVyR3JvdXBcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUs4QixTQUFBRyxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFBWixD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UUFDaEI7TUFDRjtNQUVBLElBQUl2RCxDQUFDLENBQUN5RCxPQUFPLEVBQUU7UUFDYnpELENBQUMsQ0FBQ3lELE9BQU8sR0FBR04sSUFBSSxDQUFDSyxHQUFHLENBQUN4RCxDQUFDLENBQUN5RCxPQUFPLEdBQUdQLFVBQVUsRUFBRSxDQUFDLENBQUM7TUFDakQ7O01BRUE7TUFDQSxJQUFJRCxnQkFBZ0IsQ0FBQ2pELENBQUMsQ0FBQyxFQUFFO1FBQ3ZCLElBQUlBLENBQUMsQ0FBQzBELE1BQU0sSUFBSTFELENBQUMsQ0FBQzBELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUM1RCxDQUFDLENBQUMwRCxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUNHLEtBQUssQ0FBQyxFQUFFO1VBQ25GN0QsQ0FBQyxDQUFDMEQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDRyxLQUFLLENBQUNqRixPQUFPLENBQUMsVUFBQWtGLElBQUksRUFBSTtZQUMxQztZQUNBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUdYLElBQUksQ0FBQ0ssR0FBRyxDQUFDTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUdaLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDM0M7WUFDQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJakIsS0FBSztVQUNsQixDQUFDLENBQUM7UUFDSjtNQUNGO0lBQ0YsQ0FBQyxDQUFDO0lBRUYsT0FBT1EsU0FBUztFQUNsQjtFQUVBLE9BQU9ULFdBQVc7QUFDcEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTbUIseUJBQXlCQSxDQUFDQyxpQkFBaUIsRUFBRUMsaUJBQWlCLEVBQUU7RUFDOUUsT0FBT2pHLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDK0YsaUJBQWlCLENBQUMsQ0FBQzNFLE1BQU0sQ0FDMUMsVUFBQ0MsSUFBSSxFQUFFNEUsR0FBRztJQUFBLE9BQUF6RixhQUFBLENBQUFBLGFBQUEsS0FDTGEsSUFBSSxHQUNIdEIsTUFBTSxDQUFDbUcsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ0osaUJBQWlCLEVBQUVDLEdBQUcsQ0FBQyxPQUFBckYsZ0JBQUEsaUJBQzFEcUYsR0FBRyxFQUFHRCxpQkFBaUIsQ0FBQ0MsR0FBRyxDQUFDLElBQzlCLENBQUMsQ0FBQztFQUFBLENBQ04sRUFDRkYsaUJBQ0YsQ0FBQztBQUNIIiwiaWdub3JlTGlzdCI6W119
194
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWVtb2l6ZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2Nsb25lRGVlcCIsIl9jb25zdGFudHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSIsIl9yZWYiLCJfcmVmJGxheWVyR3JvdXBzIiwibGF5ZXJHcm91cHMiLCJyZWR1Y2UiLCJhY2N1IiwibGF5ZXIiLCJzbHVnIiwiZGVmYXVsdFZpc2liaWxpdHkiLCJyZXNvbHZlciIsIl9yZWYyIiwiaWQiLCJfcmVmMiR2aXNpYmxlTGF5ZXJHcm8iLCJ2aXNpYmxlTGF5ZXJHcm91cHMiLCJjb25jYXQiLCJkIiwic29ydCIsImpvaW4iLCJlZGl0VG9wTWFwU3R5bGUiLCJleHBvcnRzIiwibWVtb2l6ZSIsIl9yZWYzIiwibWFwU3R5bGUiLCJ2aXNpYmxlRmlsdGVycyIsImxnIiwibWFwIiwiZmlsdGVyZWRMYXllcnMiLCJzdHlsZSIsImxheWVycyIsInNvbWUiLCJtYXRjaCIsImVkaXRCb3R0b21NYXBTdHlsZSIsIl9yZWY0IiwiTk9fTUFQX0lEIiwiRU1QVFlfTUFQQk9YX1NUWUxFIiwiaW52aXNpYmxlRmlsdGVycyIsImV2ZXJ5IiwiZ2V0U3R5bGVEb3dubG9hZFVybCIsInN0eWxlVXJsIiwiYWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJzdGFydHNXaXRoIiwic3R5bGVJZCIsInJlcGxhY2UiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwiZ2V0U3R5bGVJbWFnZUljb24iLCJfcmVmNSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiX3JlZjUkbWFwYm94QXBpVXJsIiwiX3JlZjUkbWFwU3RhdGUiLCJtYXBTdGF0ZSIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwiem9vbSIsIl9yZWY1JG1hcFciLCJtYXBXIiwiX3JlZjUkbWFwSCIsIm1hcEgiLCJzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uIiwibWFwYm94U3R5bGUiLCJzY2FsZSIsImxhYmVsTGF5ZXJHcm91cCIsIkRFRkFVTFRfTEFZRVJfR1JPVVBTIiwiZmluZCIsImxhYmVsTGF5ZXJGaWx0ZXIiLCJ6b29tT2Zmc2V0IiwiTWF0aCIsImxvZzIiLCJjb3B5U3R5bGUiLCJjbG9uZERlZXAiLCJtYXh6b29tIiwibWF4IiwibWluem9vbSIsImxheW91dCIsIkFycmF5IiwiaXNBcnJheSIsInN0b3BzIiwic3RvcCIsIm1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHkiLCJkZWZhdWx0TGF5ZXJHcm91cCIsImN1cnJlbnRMYXllckdyb3VwIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC1zdHlsZS11dGlscy9tYXBib3gtZ2wtc3R5bGUtZWRpdG9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBtZW1vaXplIGZyb20gJ2xvZGFzaC9tZW1vaXplJztcbmltcG9ydCBjbG9uZERlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQge1xuICBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgTk9fTUFQX0lELFxuICBFTVBUWV9NQVBCT1hfU1RZTEVcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtCYXNlTWFwU3R5bGUsIExheWVyR3JvdXAsIE1hcFN0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSh7bGF5ZXJHcm91cHMgPSBbXX06IHtsYXllckdyb3VwczogTGF5ZXJHcm91cFtdfSkge1xuICByZXR1cm4gbGF5ZXJHcm91cHMucmVkdWNlKFxuICAgIChhY2N1LCBsYXllcikgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbbGF5ZXIuc2x1Z106IGxheWVyLmRlZmF1bHRWaXNpYmlsaXR5XG4gICAgfSksXG4gICAge31cbiAgKTtcbn1cblxuY29uc3QgcmVzb2x2ZXIgPSAoe1xuICBpZCxcbiAgdmlzaWJsZUxheWVyR3JvdXBzID0ge31cbn06IHtcbiAgaWQ/OiBzdHJpbmc7XG4gIG1hcFN0eWxlOiBCYXNlTWFwU3R5bGU7XG4gIHZpc2libGVMYXllckdyb3Vwczoge1tpZDogc3RyaW5nXTogTGF5ZXJHcm91cCB8IGJvb2xlYW59IHwgZmFsc2U7XG59KSA9PlxuICBgJHtpZH06JHtPYmplY3Qua2V5cyh2aXNpYmxlTGF5ZXJHcm91cHMpXG4gICAgLmZpbHRlcihkID0+IHZpc2libGVMYXllckdyb3Vwc1tkXSlcbiAgICAuc29ydCgpXG4gICAgLmpvaW4oJy0nKX1gO1xuXG4vKipcbiAqIEVkaXQgcHJlc2V0IG1hcCBzdHlsZSB0byBrZWVwIG9ubHkgdmlzaWJsZSBsYXllcnNcbiAqXG4gKiBAcGFyYW0gbWFwU3R5bGUgLSBwcmVzZXQgbWFwIHN0eWxlXG4gKiBAcGFyYW0gdmlzaWJsZUxheWVyR3JvdXBzIC0gdmlzaWJsZSBsYXllcnMgb2YgdG9wIG1hcFxuICogQHJldHVybnMgdG9wIG1hcCBzdHlsZVxuICovXG5leHBvcnQgY29uc3QgZWRpdFRvcE1hcFN0eWxlID0gbWVtb2l6ZShcbiAgKHtcbiAgICBtYXBTdHlsZSxcbiAgICB2aXNpYmxlTGF5ZXJHcm91cHNcbiAgfToge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIG1hcFN0eWxlOiBCYXNlTWFwU3R5bGU7XG4gICAgdmlzaWJsZUxheWVyR3JvdXBzOiB7W2lkOiBzdHJpbmddOiBMYXllckdyb3VwIHwgYm9vbGVhbn0gfCBmYWxzZTtcbiAgfSkgPT4ge1xuICAgIGNvbnN0IHZpc2libGVGaWx0ZXJzID0gKG1hcFN0eWxlLmxheWVyR3JvdXBzIHx8IFtdKVxuICAgICAgLmZpbHRlcihsZyA9PiB2aXNpYmxlTGF5ZXJHcm91cHNbbGcuc2x1Z10pXG4gICAgICAubWFwKGxnID0+IGxnLmZpbHRlcik7XG5cbiAgICAvLyBpZiB0b3AgbWFwXG4gICAgLy8ga2VlcCBvbmx5IHZpc2libGUgbGF5ZXJzXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIGNvbnN0IGZpbHRlcmVkTGF5ZXJzID0gbWFwU3R5bGUuc3R5bGUubGF5ZXJzLmZpbHRlcihsYXllciA9PlxuICAgICAgdmlzaWJsZUZpbHRlcnMuc29tZShtYXRjaCA9PiBtYXRjaChsYXllcikpXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5tYXBTdHlsZS5zdHlsZSxcbiAgICAgIGxheWVyczogZmlsdGVyZWRMYXllcnNcbiAgICB9O1xuICB9LFxuICByZXNvbHZlclxuKTtcblxuLyoqXG4gKiBFZGl0IHByZXNldCBtYXAgc3R5bGUgdG8gZmlsdGVyIG91dCBpbnZpc2libGUgbGF5ZXJzXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG1hcFN0eWxlIC0gcHJlc2V0IG1hcCBzdHlsZVxuICogQHBhcmFtIHtPYmplY3R9IHZpc2libGVMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIGJvdHRvbSBtYXBcbiAqIEByZXR1cm5zIHtPYmplY3R9IGJvdHRvbSBtYXAgc3R5bGVcbiAqL1xuZXhwb3J0IGNvbnN0IGVkaXRCb3R0b21NYXBTdHlsZSA9IG1lbW9pemUoKHtpZCwgbWFwU3R5bGUsIHZpc2libGVMYXllckdyb3Vwc30pID0+IHtcbiAgaWYgKGlkID09PSBOT19NQVBfSUQpIHtcbiAgICByZXR1cm4gRU1QVFlfTUFQQk9YX1NUWUxFO1xuICB9XG5cbiAgY29uc3QgaW52aXNpYmxlRmlsdGVycyA9IChtYXBTdHlsZS5sYXllckdyb3VwcyB8fCBbXSlcbiAgICAuZmlsdGVyKGxnID0+ICF2aXNpYmxlTGF5ZXJHcm91cHNbbGcuc2x1Z10pXG4gICAgLm1hcChsZyA9PiBsZy5maWx0ZXIpO1xuXG4gIC8vIGlmIGJvdHRvbSBtYXBcbiAgLy8gZmlsdGVyIG91dCBpbnZpc2libGUgbGF5ZXJzXG4gIGNvbnN0IGZpbHRlcmVkTGF5ZXJzID0gbWFwU3R5bGUuc3R5bGUubGF5ZXJzLmZpbHRlcihsYXllciA9PlxuICAgIGludmlzaWJsZUZpbHRlcnMuZXZlcnkobWF0Y2ggPT4gIW1hdGNoKGxheWVyKSlcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm1hcFN0eWxlLnN0eWxlLFxuICAgIGxheWVyczogZmlsdGVyZWRMYXllcnNcbiAgfTtcbn0sIHJlc29sdmVyKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0eWxlRG93bmxvYWRVcmwoc3R5bGVVcmwsIGFjY2Vzc1Rva2VuLCBtYXBib3hBcGlVcmwpIHtcbiAgaWYgKHN0eWxlVXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgIHJldHVybiBzdHlsZVVybDtcbiAgfVxuXG4gIC8vIG1hcGJveDovL3N0eWxlcy9qY2tyL2NqaGNsMGx4djEzZGkycnBmb3l0ZGJkeWpcbiAgaWYgKHN0eWxlVXJsLnN0YXJ0c1dpdGgoJ21hcGJveDovL3N0eWxlcycpKSB7XG4gICAgY29uc3Qgc3R5bGVJZCA9IHN0eWxlVXJsLnJlcGxhY2UoJ21hcGJveDovL3N0eWxlcy8nLCAnJyk7XG5cbiAgICAvLyBodHRwczovL2FwaS5tYXBib3guY29tL3N0eWxlcy92MS9oZXNoYW4wMTMxL2NqZzFiZnVtbzFjd20ycmxyanhraW5mZ3c/cGx1Z2luTmFtZT1LZXBsZXJnbCZhY2Nlc3NfdG9rZW49PHRva2VuPlxuICAgIHJldHVybiBgJHtcbiAgICAgIG1hcGJveEFwaVVybCB8fCBERUZBVUxUX01BUEJPWF9BUElfVVJMXG4gICAgfS9zdHlsZXMvdjEvJHtzdHlsZUlkfT9wbHVnaW5OYW1lPUtlcGxlcmdsJmFjY2Vzc190b2tlbj0ke2FjY2Vzc1Rva2VufWA7XG4gIH1cblxuICAvLyBzdHlsZSB1cmwgbm90IHJlY29nbml6ZWRcbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgc3RhdGljIG1hcCBpbWFnZSBmcm9tIHN0eWxlIFVybCB0byBiZSB1c2VkIGFzIGljb25cbiAqIEBwYXJhbSBwYXJhbVxuICogQHBhcmFtIHBhcmFtLnN0eWxlVXJsXG4gKiBAcGFyYW0gcGFyYW0ubWFwYm94QXBpQWNjZXNzVG9rZW5cbiAqIEBwYXJhbSBwYXJhbS5tYXBib3hBcGlVcmxcbiAqIEBwYXJhbSBwYXJhbS5tYXBTdGF0ZVxuICogQHBhcmFtIHBhcmFtLm1hcFdcbiAqIEBwYXJhbSBwYXJhbS5tYXBIXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdHlsZUltYWdlSWNvbih7XG4gIHN0eWxlVXJsLFxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgbWFwYm94QXBpVXJsID0gREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgbWFwU3RhdGUgPSB7XG4gICAgbG9uZ2l0dWRlOiAtMTIyLjMzOTEsXG4gICAgbGF0aXR1ZGU6IDM3Ljc5MjIsXG4gICAgem9vbTogOVxuICB9LFxuICBtYXBXID0gNDAwLFxuICBtYXBIID0gMzAwXG59OiB7XG4gIHN0eWxlVXJsOiBzdHJpbmc7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIG1hcGJveEFwaVVybD86IHN0cmluZztcbiAgbWFwU3RhdGU/OiBQYXJ0aWFsPE1hcFN0YXRlPjtcbiAgbWFwVz86IG51bWJlcjtcbiAgbWFwSD86IG51bWJlcjtcbn0pIHtcbiAgY29uc3Qgc3R5bGVJZCA9IHN0eWxlVXJsLnJlcGxhY2UoJ21hcGJveDovL3N0eWxlcy8nLCAnJyk7XG5cbiAgcmV0dXJuIChcbiAgICBgJHttYXBib3hBcGlVcmx9L3N0eWxlcy92MS8ke3N0eWxlSWR9L3N0YXRpYy9gICtcbiAgICBgJHttYXBTdGF0ZS5sb25naXR1ZGV9LCR7bWFwU3RhdGUubGF0aXR1ZGV9LCR7bWFwU3RhdGUuem9vbX0sMCwwL2AgK1xuICAgIGAke21hcFd9eCR7bWFwSH1gICtcbiAgICBgP2FjY2Vzc190b2tlbj0ke21hcGJveEFwaUFjY2Vzc1Rva2VufSZsb2dvPWZhbHNlJmF0dHJpYnV0aW9uPWZhbHNlYFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvbihtYXBib3hTdHlsZSwgc2NhbGUpIHtcbiAgaWYgKHNjYWxlICE9PSAxICYmIG1hcGJveFN0eWxlKSB7XG4gICAgY29uc3QgbGFiZWxMYXllckdyb3VwID0gREVGQVVMVF9MQVlFUl9HUk9VUFMuZmluZChsZyA9PiBsZy5zbHVnID09PSAnbGFiZWwnKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qge2ZpbHRlcjogbGFiZWxMYXllckZpbHRlcn0gPSBsYWJlbExheWVyR3JvdXA7XG4gICAgY29uc3Qgem9vbU9mZnNldCA9IE1hdGgubG9nMihzY2FsZSk7XG5cbiAgICBjb25zdCBjb3B5U3R5bGUgPSBjbG9uZERlZXAobWFwYm94U3R5bGUpO1xuICAgIChjb3B5U3R5bGUubGF5ZXJzIHx8IFtdKS5mb3JFYWNoKGQgPT4ge1xuICAgICAgLy8gZWRpdCBtaW56b29tIGFuZCBtYXh6b29tXG4gICAgICBpZiAoZC5tYXh6b29tKSB7XG4gICAgICAgIGQubWF4em9vbSA9IE1hdGgubWF4KGQubWF4em9vbSArIHpvb21PZmZzZXQsIDEpO1xuXG4gICAgICAgIC8vIFRoZSBtYXhpbXVtIHpvb20gaXMgMjRcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Zpc2dsL3JlYWN0LW1hcC1nbC9ibG9iL21hc3Rlci9kb2NzL2FwaS1yZWZlcmVuY2UvbWFwLm1kI21heHpvb20tbnVtYmVyLW1heHpvb21cbiAgICAgICAgaWYgKGQubWF4em9vbSA+IDI0KSB7XG4gICAgICAgICAgZC5tYXh6b29tID0gMjQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGQubWluem9vbSkge1xuICAgICAgICBkLm1pbnpvb20gPSBNYXRoLm1heChkLm1pbnpvb20gKyB6b29tT2Zmc2V0LCAxKTtcbiAgICAgIH1cblxuICAgICAgLy8gZWRpdCB0ZXh0IHNpemVcbiAgICAgIGlmIChsYWJlbExheWVyRmlsdGVyKGQpKSB7XG4gICAgICAgIGlmIChkLmxheW91dCAmJiBkLmxheW91dFsndGV4dC1zaXplJ10gJiYgQXJyYXkuaXNBcnJheShkLmxheW91dFsndGV4dC1zaXplJ10uc3RvcHMpKSB7XG4gICAgICAgICAgZC5sYXlvdXRbJ3RleHQtc2l6ZSddLnN0b3BzLmZvckVhY2goc3RvcCA9PiB7XG4gICAgICAgICAgICAvLyB6b29tXG4gICAgICAgICAgICBzdG9wWzBdID0gTWF0aC5tYXgoc3RvcFswXSArIHpvb21PZmZzZXQsIDEpO1xuICAgICAgICAgICAgLy8gc2l6ZVxuICAgICAgICAgICAgc3RvcFsxXSAqPSBzY2FsZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvcHlTdHlsZTtcbiAgfVxuXG4gIHJldHVybiBtYXBib3hTdHlsZTtcbn1cblxuLyoqXG4gKiBXaGVuIHN3aXRjaCB0byBhIG5ldyBzdHlsZSwgdHJ5IHRvIGtlZXAgY3VycmVudCBsYXllciBncm91cCB2aXNpYmlsaXR5XG4gKiBieSBtZXJnaW5nIGRlZmF1bHQgYW5kIGN1cnJlbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0TGF5ZXJHcm91cFxuICogQHBhcmFtIHtPYmplY3R9IGN1cnJlbnRMYXllckdyb3VwXG4gKiBAcmV0dXJuIHtPYmplY3R9IG1lcmdlZExheWVyR3JvdXBzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5KGRlZmF1bHRMYXllckdyb3VwLCBjdXJyZW50TGF5ZXJHcm91cCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVmYXVsdExheWVyR3JvdXApLnJlZHVjZShcbiAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIC4uLihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY3VycmVudExheWVyR3JvdXAsIGtleSlcbiAgICAgICAgPyB7W2tleV06IGN1cnJlbnRMYXllckdyb3VwW2tleV19XG4gICAgICAgIDoge30pXG4gICAgfSksXG4gICAgZGVmYXVsdExheWVyR3JvdXBcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUs4QixTQUFBRyxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFB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QUU7UUFDaEI7TUFDRjtNQUVBLElBQUl2RCxDQUFDLENBQUN5RCxPQUFPLEVBQUU7UUFDYnpELENBQUMsQ0FBQ3lELE9BQU8sR0FBR04sSUFBSSxDQUFDSyxHQUFHLENBQUN4RCxDQUFDLENBQUN5RCxPQUFPLEdBQUdQLFVBQVUsRUFBRSxDQUFDLENBQUM7TUFDakQ7O01BRUE7TUFDQSxJQUFJRCxnQkFBZ0IsQ0FBQ2pELENBQUMsQ0FBQyxFQUFFO1FBQ3ZCLElBQUlBLENBQUMsQ0FBQzBELE1BQU0sSUFBSTFELENBQUMsQ0FBQzBELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUM1RCxDQUFDLENBQUMwRCxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUNHLEtBQUssQ0FBQyxFQUFFO1VBQ25GN0QsQ0FBQyxDQUFDMEQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDRyxLQUFLLENBQUNqRixPQUFPLENBQUMsVUFBQWtGLElBQUksRUFBSTtZQUMxQztZQUNBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUdYLElBQUksQ0FBQ0ssR0FBRyxDQUFDTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUdaLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDM0M7WUFDQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJakIsS0FBSztVQUNsQixDQUFDLENBQUM7UUFDSjtNQUNGO0lBQ0YsQ0FBQyxDQUFDO0lBRUYsT0FBT1EsU0FBUztFQUNsQjtFQUVBLE9BQU9ULFdBQVc7QUFDcEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTbUIseUJBQXlCQSxDQUFDQyxpQkFBaUIsRUFBRUMsaUJBQWlCLEVBQUU7RUFDOUUsT0FBT2pHLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDK0YsaUJBQWlCLENBQUMsQ0FBQzNFLE1BQU0sQ0FDMUMsVUFBQ0MsSUFBSSxFQUFFNEUsR0FBRztJQUFBLE9BQUF6RixhQUFBLENBQUFBLGFBQUEsS0FDTGEsSUFBSSxHQUNIdEIsTUFBTSxDQUFDbUcsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ0osaUJBQWlCLEVBQUVDLEdBQUcsQ0FBQyxPQUFBckYsZ0JBQUEsaUJBQzFEcUYsR0FBRyxFQUFHRCxpQkFBaUIsQ0FBQ0MsR0FBRyxDQUFDLElBQzlCLENBQUMsQ0FBQztFQUFBLENBQ04sRUFDRkYsaUJBQ0YsQ0FBQztBQUNIIiwiaWdub3JlTGlzdCI6W119
@@ -9,7 +9,7 @@ exports.observeDimensions = observeDimensions;
9
9
  exports.unobserveDimensions = unobserveDimensions;
10
10
  exports.useDimensions = useDimensions;
11
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
- var _lodash = _interopRequireDefault(require("lodash.throttle"));
12
+ var _throttle = _interopRequireDefault(require("lodash/throttle"));
13
13
  var _react = require("react");
14
14
  var _resizeObserverPolyfill = _interopRequireDefault(require("resize-observer-polyfill"));
15
15
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
@@ -60,7 +60,7 @@ function getObserverRegistry() {
60
60
  function observeDimensions(target, handleResize) {
61
61
  var throttleDelay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_THROTTLE_DELAY;
62
62
  var registry = getObserverRegistry();
63
- var handler = throttleDelay > 0 ? (0, _lodash["default"])(handleResize, throttleDelay) : handleResize;
63
+ var handler = throttleDelay > 0 ? (0, _throttle["default"])(handleResize, throttleDelay) : handleResize;
64
64
  registry.subscribe(target, function (entry) {
65
65
  return handler(getSize(target, entry));
66
66
  });
@@ -133,4 +133,4 @@ function useDimensions(nodeRef) {
133
133
  return [ref, size];
134
134
  }
135
135
  var _default = exports["default"] = useDimensions;
136
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcmVhY3QiLCJfcmVzaXplT2JzZXJ2ZXJQb2x5ZmlsbCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiciIsImUiLCJ0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJfbiIsIkYiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsImYiLCJUeXBlRXJyb3IiLCJvIiwiYSIsInUiLCJjYWxsIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwiREVGQVVMVF9USFJPVFRMRV9ERUxBWSIsIl9vYnNlcnZlclJlZ2lzdHJ5IiwiZ2V0T2JzZXJ2ZXJSZWdpc3RyeSIsInVuZGVmaW5lZCIsImNhbGxiYWNrcyIsIk1hcCIsInJlc2l6ZU9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJlbnRyaWVzIiwib2JzZXJ2ZXIiLCJfaXRlcmF0b3IiLCJfc3RlcCIsIl9jYWxsYmFja3MkZ2V0IiwiZW50cnkiLCJnZXQiLCJ0YXJnZXQiLCJlcnIiLCJzdWJzY3JpYmUiLCJjYWxsYmFjayIsIkVsZW1lbnQiLCJvYnNlcnZlIiwic2V0IiwidW5zdWJzY3JpYmUiLCJ1bm9ic2VydmUiLCJvYnNlcnZlRGltZW5zaW9ucyIsImhhbmRsZVJlc2l6ZSIsInRocm90dGxlRGVsYXkiLCJhcmd1bWVudHMiLCJyZWdpc3RyeSIsImhhbmRsZXIiLCJ0aHJvdHRsZSIsImdldFNpemUiLCJ1bm9ic2VydmVEaW1lbnNpb25zIiwibm9kZSIsImNvbnRlbnRSZWN0IiwiX2VudHJ5JGNvbnRlbnRSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJfbm9kZSRnZXRCb3VuZGluZ0NsaWUiLCJ1c2VEaW1lbnNpb25zIiwibm9kZVJlZiIsIl9yZWYyIiwicmVmIiwidXNlUmVmIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwic2l6ZSIsInNldFNpemUiLCJ1c2VFZmZlY3QiLCJfcmVmIiwiY3VycmVudCIsImRpZFVub2JzZXJ2ZSIsIm5ld1NpemUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvb2JzZXJ2ZS1kaW1lbnNpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gudGhyb3R0bGUnO1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUsIFJlZk9iamVjdH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlc2l6ZU9ic2VydmVyIGZyb20gJ3Jlc2l6ZS1vYnNlcnZlci1wb2x5ZmlsbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9ucyB7XG4gIHJlYWRvbmx5IGhlaWdodDogbnVtYmVyO1xuICByZWFkb25seSB3aWR0aDogbnVtYmVyO1xufVxuXG5jb25zdCBERUZBVUxUX1RIUk9UVExFX0RFTEFZID0gMTAwO1xuXG4vLyBVc2luZyBhIHNpbmdsZSBSZXNpemVPYnNlcnZlciBmb3IgYWxsIGVsZW1lbnRzIGNhbiBiZSAxMHhcbi8vIG1vcmUgcGVyZm9ybWFudCB0aGFuIHVzaW5nIGEgc2VwYXJhdGUgUmVzaXplT2JzZXJ2ZXIgcGVyIGVsZW1lbnRcbi8vIGh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vYS9jaHJvbWl1bS5vcmcvZm9ydW0vIyFtc2cvYmxpbmstZGV2L3o2aWVuT05VYjVBL0Y1LVZjVVp0QkFBSlxubGV0IF9vYnNlcnZlclJlZ2lzdHJ5O1xuXG5mdW5jdGlvbiBnZXRPYnNlcnZlclJlZ2lzdHJ5KCkge1xuICBpZiAoX29ic2VydmVyUmVnaXN0cnkgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGNhbGxiYWNrcyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcywgb2JzZXJ2ZXIpID0+IHtcbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICBjYWxsYmFja3MuZ2V0KGVudHJ5LnRhcmdldCk/LihlbnRyeSwgb2JzZXJ2ZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF9vYnNlcnZlclJlZ2lzdHJ5ID0ge1xuICAgICAgc3Vic2NyaWJlKHRhcmdldCwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHRhcmdldCk7XG4gICAgICAgICAgY2FsbGJhY2tzLnNldCh0YXJnZXQsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVuc3Vic2NyaWJlKHRhcmdldCkge1xuICAgICAgICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZSh0YXJnZXQpO1xuICAgICAgICAgIGNhbGxiYWNrcy5kZWxldGUodGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIF9vYnNlcnZlclJlZ2lzdHJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZURpbWVuc2lvbnMoXG4gIHRhcmdldDogRWxlbWVudCxcbiAgaGFuZGxlUmVzaXplOiAoc2l6ZTogRGltZW5zaW9ucyB8IG51bGwpID0+IHZvaWQsXG4gIHRocm90dGxlRGVsYXkgPSBERUZBVUxUX1RIUk9UVExFX0RFTEFZXG4pIHtcbiAgY29uc3QgcmVnaXN0cnkgPSBnZXRPYnNlcnZlclJlZ2lzdHJ5KCk7XG4gIGNvbnN0IGhhbmRsZXIgPSB0aHJvdHRsZURlbGF5ID4gMCA/IHRocm90dGxlKGhhbmRsZVJlc2l6ZSwgdGhyb3R0bGVEZWxheSkgOiBoYW5kbGVSZXNpemU7XG4gIHJlZ2lzdHJ5LnN1YnNjcmliZSh0YXJnZXQsIGVudHJ5ID0+IGhhbmRsZXIoZ2V0U2l6ZSh0YXJnZXQsIGVudHJ5KSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5vYnNlcnZlRGltZW5zaW9ucyh0YXJnZXQ6IEVsZW1lbnQpIHtcbiAgY29uc3QgcmVnaXN0cnkgPSBnZXRPYnNlcnZlclJlZ2lzdHJ5KCk7XG4gIHJlZ2lzdHJ5LnVuc3Vic2NyaWJlKHRhcmdldCk7XG59XG5cbmZ1bmN0aW9uIGdldFNpemUobm9kZSwgZW50cnkpOiBEaW1lbnNpb25zIHwgbnVsbCB7XG4gIGlmIChlbnRyeS5jb250ZW50UmVjdCkge1xuICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0fSA9IGVudHJ5LmNvbnRlbnRSZWN0O1xuICAgIHJldHVybiB7d2lkdGgsIGhlaWdodH07XG4gIH1cbiAgaWYgKG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSB7XG4gICAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICByZXR1cm4ge3dpZHRoLCBoZWlnaHR9O1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiBjb25zdCBbcmVmLCBkaW1lbnNpb25zXSA9IHVzZURpbWVuc2lvbnM8SFRNTERpdkVsZW1lbnQ+KCk7XG4gKlxuICogQHBhcmFtIHRocm90dGxlRGVsYXlcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VEaW1lbnNpb25zPFQgZXh0ZW5kcyBFbGVtZW50PihcbiAgbm9kZVJlZj86IFJlZk9iamVjdDxUPixcbiAgdGhyb3R0bGVEZWxheSA9IERFRkFVTFRfVEhST1RUTEVfREVMQVlcbik6IFtSZWZPYmplY3Q8VD4sIERpbWVuc2lvbnMgfCBudWxsXSB7XG4gIGxldCByZWYgPSB1c2VSZWY8VD4obnVsbCk7XG4gIGlmIChub2RlUmVmKSB7XG4gICAgcmVmID0gbm9kZVJlZjtcbiAgfVxuICBjb25zdCBbc2l6ZSwgc2V0U2l6ZV0gPSB1c2VTdGF0ZShudWxsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHtjdXJyZW50fSA9IHJlZiB8fCB7fTtcbiAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZGlkVW5vYnNlcnZlID0gZmFsc2U7XG4gICAgb2JzZXJ2ZURpbWVuc2lvbnMoXG4gICAgICBjdXJyZW50LFxuICAgICAgZW50cnkgPT4ge1xuICAgICAgICBpZiAoZGlkVW5vYnNlcnZlKSByZXR1cm47XG4gICAgICAgIGNvbnN0IG5ld1NpemUgPSBnZXRTaXplKGN1cnJlbnQsIGVudHJ5KTtcbiAgICAgICAgaWYgKG5ld1NpemUpIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgc2V0U2l6ZShuZXdTaXplKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRocm90dGxlRGVsYXlcbiAgICApO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkaWRVbm9ic2VydmUgPSB0cnVlO1xuICAgICAgdW5vYnNlcnZlRGltZW5zaW9ucyhjdXJyZW50KTtcbiAgICB9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW3Rocm90dGxlRGVsYXksIHJlZj8uY3VycmVudF0pO1xuXG4gIHJldHVybiBbcmVmIGFzIFJlZk9iamVjdDxUPiwgc2l6ZV07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZURpbWVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxP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QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNHLGFBQWFBLENBQzNCQyxPQUFzQixFQUVhO0VBQUEsSUFBQUMsS0FBQTtFQUFBLElBRG5DaEIsYUFBYSxHQUFBQyxTQUFBLENBQUFoRCxNQUFBLFFBQUFnRCxTQUFBLFFBQUF4QixTQUFBLEdBQUF3QixTQUFBLE1BQUczQixzQkFBc0I7RUFFdEMsSUFBSTJDLEdBQUcsR0FBRyxJQUFBQyxhQUFNLEVBQUksSUFBSSxDQUFDO0VBQ3pCLElBQUlILE9BQU8sRUFBRTtJQUNYRSxHQUFHLEdBQUdGLE9BQU87RUFDZjtFQUNBLElBQUFJLFNBQUEsR0FBd0IsSUFBQUMsZUFBUSxFQUFDLElBQUksQ0FBQztJQUFBQyxVQUFBLE9BQUFDLGVBQUEsYUFBQUgsU0FBQTtJQUEvQkksSUFBSSxHQUFBRixVQUFBO0lBQUVHLE9BQU8sR0FBQUgsVUFBQTtFQUVwQixJQUFBSSxnQkFBUyxFQUFDLFlBQU07SUFDZCxJQUFBQyxJQUFBLEdBQWtCVCxHQUFHLElBQUksQ0FBQyxDQUFDO01BQXBCVSxPQUFPLEdBQUFELElBQUEsQ0FBUEMsT0FBTztJQUNkLElBQUksQ0FBQ0EsT0FBTyxFQUFFO01BQ1o7SUFDRjtJQUVBLElBQUlDLFlBQVksR0FBRyxLQUFLO0lBQ3hCOUIsaUJBQWlCLENBQ2Y2QixPQUFPLEVBQ1AsVUFBQXhDLEtBQUssRUFBSTtNQUNQLElBQUl5QyxZQUFZLEVBQUU7TUFDbEIsSUFBTUMsT0FBTyxHQUFHeEIsT0FBTyxDQUFDc0IsT0FBTyxFQUFFeEMsS0FBSyxDQUFDO01BQ3ZDLElBQUkwQyxPQUFPLEVBQUU7UUFDWDtRQUNBTCxPQUFPLENBQUNLLE9BQU8sQ0FBQztNQUNsQjtJQUNGLENBQUMsRUFDRDdCLGFBQ0YsQ0FBQztJQUNELE9BQU8sWUFBTTtNQUNYNEIsWUFBWSxHQUFHLElBQUk7TUFDbkJ0QixtQkFBbUIsQ0FBQ3FCLE9BQU8sQ0FBQztJQUM5QixDQUFDO0lBQ0Q7RUFDRixDQUFDLEVBQUUsQ0FBQzNCLGFBQWEsR0FBQWdCLEtBQUEsR0FBRUMsR0FBRyxjQUFBRCxLQUFBLHVCQUFIQSxLQUFBLENBQUtXLE9BQU8sQ0FBQyxDQUFDO0VBRWpDLE9BQU8sQ0FBQ1YsR0FBRyxFQUFrQk0sSUFBSSxDQUFDO0FBQ3BDO0FBQUMsSUFBQU8sUUFBQSxHQUFBQyxPQUFBLGNBRWNqQixhQUFhIiwiaWdub3JlTGlzdCI6W119
136
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGhyb3R0bGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdCIsIl9yZXNpemVPYnNlcnZlclBvbHlmaWxsIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJERUZBVUxUX1RIUk9UVExFX0RFTEFZIiwiX29ic2VydmVyUmVnaXN0cnkiLCJnZXRPYnNlcnZlclJlZ2lzdHJ5IiwidW5kZWZpbmVkIiwiY2FsbGJhY2tzIiwiTWFwIiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsImVudHJpZXMiLCJvYnNlcnZlciIsIl9pdGVyYXRvciIsIl9zdGVwIiwiX2NhbGxiYWNrcyRnZXQiLCJlbnRyeSIsImdldCIsInRhcmdldCIsImVyciIsInN1YnNjcmliZSIsImNhbGxiYWNrIiwiRWxlbWVudCIsIm9ic2VydmUiLCJzZXQiLCJ1bnN1YnNjcmliZSIsInVub2JzZXJ2ZSIsIm9ic2VydmVEaW1lbnNpb25zIiwiaGFuZGxlUmVzaXplIiwidGhyb3R0bGVEZWxheSIsImFyZ3VtZW50cyIsInJlZ2lzdHJ5IiwiaGFuZGxlciIsInRocm90dGxlIiwiZ2V0U2l6ZSIsInVub2JzZXJ2ZURpbWVuc2lvbnMiLCJub2RlIiwiY29udGVudFJlY3QiLCJfZW50cnkkY29udGVudFJlY3QiLCJ3aWR0aCIsImhlaWdodCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIl9ub2RlJGdldEJvdW5kaW5nQ2xpZSIsInVzZURpbWVuc2lvbnMiLCJub2RlUmVmIiwiX3JlZjIiLCJyZWYiLCJ1c2VSZWYiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzaXplIiwic2V0U2l6ZSIsInVzZUVmZmVjdCIsIl9yZWYiLCJjdXJyZW50IiwiZGlkVW5vYnNlcnZlIiwibmV3U2l6ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9vYnNlcnZlLWRpbWVuc2lvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHRocm90dGxlIGZyb20gJ2xvZGFzaC90aHJvdHRsZSc7XG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgUmVmT2JqZWN0fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVzaXplT2JzZXJ2ZXIgZnJvbSAncmVzaXplLW9ic2VydmVyLXBvbHlmaWxsJztcblxuZXhwb3J0IGludGVyZmFjZSBEaW1lbnNpb25zIHtcbiAgcmVhZG9ubHkgaGVpZ2h0OiBudW1iZXI7XG4gIHJlYWRvbmx5IHdpZHRoOiBudW1iZXI7XG59XG5cbmNvbnN0IERFRkFVTFRfVEhST1RUTEVfREVMQVkgPSAxMDA7XG5cbi8vIFVzaW5nIGEgc2luZ2xlIFJlc2l6ZU9ic2VydmVyIGZvciBhbGwgZWxlbWVudHMgY2FuIGJlIDEweFxuLy8gbW9yZSBwZXJmb3JtYW50IHRoYW4gdXNpbmcgYSBzZXBhcmF0ZSBSZXNpemVPYnNlcnZlciBwZXIgZWxlbWVudFxuLy8gaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9hL2Nocm9taXVtLm9yZy9mb3J1bS8jIW1zZy9ibGluay1kZXYvejZpZW5PTlViNUEvRjUtVmNVWnRCQUFKXG5sZXQgX29ic2VydmVyUmVnaXN0cnk7XG5cbmZ1bmN0aW9uIGdldE9ic2VydmVyUmVnaXN0cnkoKSB7XG4gIGlmIChfb2JzZXJ2ZXJSZWdpc3RyeSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgY2FsbGJhY2tzID0gbmV3IE1hcCgpO1xuICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzLCBvYnNlcnZlcikgPT4ge1xuICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgIGNhbGxiYWNrcy5nZXQoZW50cnkudGFyZ2V0KT8uKGVudHJ5LCBvYnNlcnZlcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgX29ic2VydmVyUmVnaXN0cnkgPSB7XG4gICAgICBzdWJzY3JpYmUodGFyZ2V0LCBjYWxsYmFjaykge1xuICAgICAgICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGFyZ2V0KTtcbiAgICAgICAgICBjYWxsYmFja3Muc2V0KHRhcmdldCwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdW5zdWJzY3JpYmUodGFyZ2V0KSB7XG4gICAgICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgICAgcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKHRhcmdldCk7XG4gICAgICAgICAgY2FsbGJhY2tzLmRlbGV0ZSh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICByZXR1cm4gX29ic2VydmVyUmVnaXN0cnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZlRGltZW5zaW9ucyhcbiAgdGFyZ2V0OiBFbGVtZW50LFxuICBoYW5kbGVSZXNpemU6IChzaXplOiBEaW1lbnNpb25zIHwgbnVsbCkgPT4gdm9pZCxcbiAgdGhyb3R0bGVEZWxheSA9IERFRkFVTFRfVEhST1RUTEVfREVMQVlcbikge1xuICBjb25zdCByZWdpc3RyeSA9IGdldE9ic2VydmVyUmVnaXN0cnkoKTtcbiAgY29uc3QgaGFuZGxlciA9IHRocm90dGxlRGVsYXkgPiAwID8gdGhyb3R0bGUoaGFuZGxlUmVzaXplLCB0aHJvdHRsZURlbGF5KSA6IGhhbmRsZVJlc2l6ZTtcbiAgcmVnaXN0cnkuc3Vic2NyaWJlKHRhcmdldCwgZW50cnkgPT4gaGFuZGxlcihnZXRTaXplKHRhcmdldCwgZW50cnkpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bm9ic2VydmVEaW1lbnNpb25zKHRhcmdldDogRWxlbWVudCkge1xuICBjb25zdCByZWdpc3RyeSA9IGdldE9ic2VydmVyUmVnaXN0cnkoKTtcbiAgcmVnaXN0cnkudW5zdWJzY3JpYmUodGFyZ2V0KTtcbn1cblxuZnVuY3Rpb24gZ2V0U2l6ZShub2RlLCBlbnRyeSk6IERpbWVuc2lvbnMgfCBudWxsIHtcbiAgaWYgKGVudHJ5LmNvbnRlbnRSZWN0KSB7XG4gICAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gZW50cnkuY29udGVudFJlY3Q7XG4gICAgcmV0dXJuIHt3aWR0aCwgaGVpZ2h0fTtcbiAgfVxuICBpZiAobm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QpIHtcbiAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiB7d2lkdGgsIGhlaWdodH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIGNvbnN0IFtyZWYsIGRpbWVuc2lvbnNdID0gdXNlRGltZW5zaW9uczxIVE1MRGl2RWxlbWVudD4oKTtcbiAqXG4gKiBAcGFyYW0gdGhyb3R0bGVEZWxheVxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZURpbWVuc2lvbnM8VCBleHRlbmRzIEVsZW1lbnQ+KFxuICBub2RlUmVmPzogUmVmT2JqZWN0PFQ+LFxuICB0aHJvdHRsZURlbGF5ID0gREVGQVVMVF9USFJPVFRMRV9ERUxBWVxuKTogW1JlZk9iamVjdDxUPiwgRGltZW5zaW9ucyB8IG51bGxdIHtcbiAgbGV0IHJlZiA9IHVzZVJlZjxUPihudWxsKTtcbiAgaWYgKG5vZGVSZWYpIHtcbiAgICByZWYgPSBub2RlUmVmO1xuICB9XG4gIGNvbnN0IFtzaXplLCBzZXRTaXplXSA9IHVzZVN0YXRlKG51bGwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qge2N1cnJlbnR9ID0gcmVmIHx8IHt9O1xuICAgIGlmICghY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBkaWRVbm9ic2VydmUgPSBmYWxzZTtcbiAgICBvYnNlcnZlRGltZW5zaW9ucyhcbiAgICAgIGN1cnJlbnQsXG4gICAgICBlbnRyeSA9PiB7XG4gICAgICAgIGlmIChkaWRVbm9ic2VydmUpIHJldHVybjtcbiAgICAgICAgY29uc3QgbmV3U2l6ZSA9IGdldFNpemUoY3VycmVudCwgZW50cnkpO1xuICAgICAgICBpZiAobmV3U2l6ZSkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBzZXRTaXplKG5ld1NpemUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdGhyb3R0bGVEZWxheVxuICAgICk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRpZFVub2JzZXJ2ZSA9IHRydWU7XG4gICAgICB1bm9ic2VydmVEaW1lbnNpb25zKGN1cnJlbnQpO1xuICAgIH07XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbdGhyb3R0bGVEZWxheSwgcmVmPy5jdXJyZW50XSk7XG5cbiAgcmV0dXJuIFtyZWYgYXMgUmVmT2JqZWN0PFQ+LCBzaXplXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlRGltZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxTQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFE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STtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0csYUFBYUEsQ0FDM0JDLE9BQXNCLEVBRWE7RUFBQSxJQUFBQyxLQUFBO0VBQUEsSUFEbkNoQixhQUFhLEdBQUFDLFNBQUEsQ0FBQWhELE1BQUEsUUFBQWdELFNBQUEsUUFBQXhCLFNBQUEsR0FBQXdCLFNBQUEsTUFBRzNCLHNCQUFzQjtFQUV0QyxJQUFJMkMsR0FBRyxHQUFHLElBQUFDLGFBQU0sRUFBSSxJQUFJLENBQUM7RUFDekIsSUFBSUgsT0FBTyxFQUFFO0lBQ1hFLEdBQUcsR0FBR0YsT0FBTztFQUNmO0VBQ0EsSUFBQUksU0FBQSxHQUF3QixJQUFBQyxlQUFRLEVBQUMsSUFBSSxDQUFDO0lBQUFDLFVBQUEsT0FBQUMsZUFBQSxhQUFBSCxTQUFBO0lBQS9CSSxJQUFJLEdBQUFGLFVBQUE7SUFBRUcsT0FBTyxHQUFBSCxVQUFBO0VBRXBCLElBQUFJLGdCQUFTLEVBQUMsWUFBTTtJQUNkLElBQUFDLElBQUEsR0FBa0JULEdBQUcsSUFBSSxDQUFDLENBQUM7TUFBcEJVLE9BQU8sR0FBQUQsSUFBQSxDQUFQQyxPQUFPO0lBQ2QsSUFBSSxDQUFDQSxPQUFPLEVBQUU7TUFDWjtJQUNGO0lBRUEsSUFBSUMsWUFBWSxHQUFHLEtBQUs7SUFDeEI5QixpQkFBaUIsQ0FDZjZCLE9BQU8sRUFDUCxVQUFBeEMsS0FBSyxFQUFJO01BQ1AsSUFBSXlDLFlBQVksRUFBRTtNQUNsQixJQUFNQyxPQUFPLEdBQUd4QixPQUFPLENBQUNzQixPQUFPLEVBQUV4QyxLQUFLLENBQUM7TUFDdkMsSUFBSTBDLE9BQU8sRUFBRTtRQUNYO1FBQ0FMLE9BQU8sQ0FBQ0ssT0FBTyxDQUFDO01BQ2xCO0lBQ0YsQ0FBQyxFQUNEN0IsYUFDRixDQUFDO0lBQ0QsT0FBTyxZQUFNO01BQ1g0QixZQUFZLEdBQUcsSUFBSTtNQUNuQnRCLG1CQUFtQixDQUFDcUIsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFDRDtFQUNGLENBQUMsRUFBRSxDQUFDM0IsYUFBYSxHQUFBZ0IsS0FBQSxHQUFFQyxHQUFHLGNBQUFELEtBQUEsdUJBQUhBLEtBQUEsQ0FBS1csT0FBTyxDQUFDLENBQUM7RUFFakMsT0FBTyxDQUFDVixHQUFHLEVBQWtCTSxJQUFJLENBQUM7QUFDcEM7QUFBQyxJQUFBTyxRQUFBLEdBQUFDLE9BQUEsY0FFY2pCLGFBQWEiLCJpZ25vcmVMaXN0IjpbXX0=
package/dist/plot.js CHANGED
@@ -33,7 +33,7 @@ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
33
33
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
34
34
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
35
35
  var _d3Array = require("d3-array");
36
- var _lodash = _interopRequireDefault(require("lodash.isequal"));
36
+ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
37
37
  var _time = require("./time");
38
38
  var _moment = _interopRequireDefault(require("moment"));
39
39
  var _commonUtils = require("@kepler.gl/common-utils");
@@ -394,7 +394,7 @@ function getLineChart(datasets, filter) {
394
394
  var bins = (_timeBins = filter.timeBins) === null || _timeBins === void 0 || (_timeBins = _timeBins[seriesDataId]) === null || _timeBins === void 0 ? void 0 : _timeBins[interval];
395
395
  if (lineChart && lineChart.aggregation === aggregation && lineChart.interval === interval && lineChart.yAxis === (yAxis === null || yAxis === void 0 ? void 0 : yAxis.name) &&
396
396
  // we need to make sure we validate bins because of cross filter data changes
397
- (0, _lodash["default"])(bins, lineChart === null || lineChart === void 0 ? void 0 : lineChart.bins)) {
397
+ (0, _isEqual["default"])(bins, lineChart === null || lineChart === void 0 ? void 0 : lineChart.bins)) {
398
398
  // don't update lineChart if plotType hasn't change
399
399
  return lineChart;
400
400
  }
@@ -634,4 +634,4 @@ function getDefaultPlotType(filter, datasets) {
634
634
  aggregation: _constants.AGGREGATION_TYPES.sum
635
635
  };
636
636
  }
637
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl90aW1lIiwiX21vbWVudCIsIl9jb21tb25VdGlscyIsIl9jb25zdGFudHMiLCJfZGF0YVV0aWxzIiwiX2FnZ3JlZ2F0aW9uIiwiX3N0cmluZ3MiLCJfZm9ybWF0IiwiX2NvbG9yVXRpbHMiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJoaXN0b2dyYW1Gcm9tVGhyZXNob2xkIiwidGhyZXNob2xkcyIsInZhbHVlcyIsInZhbHVlQWNjZXNzb3IiLCJmaWx0ZXJFbXB0eUJpbnMiLCJ1bmRlZmluZWQiLCJnZXRCaW5zIiwiZDNIaXN0b2dyYW0iLCJkb21haW4iLCJiaW5zIiwibWFwIiwiYmluIiwiY291bnQiLCJpbmRleGVzIiwieDAiLCJ4MSIsImIiLCJoaXN0b2dyYW1Gcm9tVmFsdWVzIiwibnVtQmlucyIsImlzTnVtYmVyIiwiaGlzdG9ncmFtRnJvbU9yZGluYWwiLCJoaXN0b2dyYW1Gcm9tRG9tYWluIiwidGlja3MiLCJnZXRUaW1lQmlucyIsImRhdGFzZXRzIiwiaW50ZXJ2YWwiLCJ0aW1lQmlucyIsImRhdGFJZCIsImRhdGFzZXQiLCJydW5HcHVGaWx0ZXJGb3JQbG90IiwiYmluQnlUaW1lIiwibWFwcGVkVmFsdWUiLCJnZXRGaWx0ZXJNYXBwZWRWYWx1ZSIsImludGVydmFsQmlucyIsImdldEJpblRocmVzaG9sZHMiLCJpZHgiLCJ0aW1lSW50ZXJ2YWwiLCJpbnRlcnZhbFRvRnVuY3Rpb24iLCJfZG9tYWluIiwiX3NsaWNlZFRvQXJyYXkyIiwidDAiLCJ0MSIsImZsb29yIiwiZ2V0VGltZSIsImNlaWxpbmciLCJjZWlsIiwiZHVyYXRpb25EYXkiLCJiaW5UaHJlc2hvbGRzIiwicmFuZ2UiLCJtb21lbnQiLCJ1dGMiLCJ2YWx1ZU9mIiwibGFzdFN0ZXAiLCJvZmZzZXQiLCJza2lwSW5kZXhlcyIsImdldFNraXBJbmRleGVzIiwiX2RhdGFzZXQkZ3B1RmlsdGVyIiwiZ3B1RmlsdGVyIiwiZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyIsImZpbHRlclJhbmdlIiwiZmlsdGVyVmFsdWVBY2Nlc3NvciIsImZpbHRlcmVkSW5kZXgiLCJnZXRGaWx0ZXJWYWx1ZSIsImRhdGFDb250YWluZXIiLCJhbGxDaGFubmVscyIsIl8iLCJpIiwic2tpcEFsbCIsImluY2x1ZGVzIiwiZmlsdGVyRGF0YSIsImdldEZpbHRlckRhdGFGdW5jIiwiZ3B1RmlsdGVycyIsInZhbHVlSW5kZXgiLCJmaW5kSW5kZXgiLCJpZCIsImZpbHRlckNvbHVtbiIsInJlZHVjZSIsImFjY3UiLCJpdGVtIiwic2tpcHMiLCJpbmRleCIsImV2ZXJ5IiwidmFsIiwidmFsaWRCaW4iLCJzbmFwVG9NYXJrcyIsIm1hcmtzIiwiYmlzZWN0TGVmdCIsIm5vcm1hbGl6ZVZhbHVlIiwibWluVmFsdWUiLCJzdGVwIiwicm91bmRWYWxUb1N0ZXAiLCJpc1BlcmNlbnRGaWVsZCIsImZpZWxkIiwibWV0YWRhdGEiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsInVwZGF0ZUFnZ3JlZ2F0aW9uQnlGaWVsZCIsImFnZ3JlZ2F0aW9uIiwiQUdHUkVHQVRJT05fVFlQRVMiLCJhdmVyYWdlIiwiZ2V0QWdyZWdhdGlvblR5cGUiLCJnZXRBZ2dyZWdhdGlvbkFjY2Vzc29yIiwiZmllbGRzIiwibnVtZXJhdG9ySWR4IiwiZGVub21pbmF0b3JJZHgiLCJnZXROdW1lcmF0b3IiLCJ2YWx1ZUF0IiwiZ2V0RGVub21pbmF0b3IiLCJnZXRWYWx1ZUFnZ3JGdW5jIiwiZXhwb3J0cyIsImRhdGFzZXRGaWVsZCIsImZpbmQiLCJhZ2dyZWdhdGUiLCJnZXRBZ2dyZWdhdGlvbk9wdGlvc25CYXNlZE9uRmllbGQiLCJUSU1FX0FHR1JFR0FUSU9OIiwiX3JlZiIsInN1bSIsImdldERlbHRhIiwieSIsIl9pbnRlcnZhbCIsImxhc3RCaW4iLCJkZWx0YSIsInBjdCIsImdldFBjdENoYW5nZSIsInkwIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJnZXRMaW5lQ2hhcnQiLCJfdGltZUJpbnMiLCJ5QXhpcyIsInBsb3RUeXBlIiwibGluZUNoYXJ0Iiwic2VyaWVzRGF0YUlkIiwiaXNFcXVhbCIsImdldFlWYWx1ZSIsImluaXQiLCJzZXJpZXMiLCJ4IiwieURvbWFpbiIsImV4dGVudCIsImQiLCJ4RG9tYWluIiwic3BsaXQiLCJzcGxpdFNlcmllcyIsImFnZ3JOYW1lIiwiQUdHUkVHQVRJT05fTkFNRSIsInRpdGxlIiwiY29uY2F0IiwiZmllbGRUeXBlIiwidHlwZSIsImFsbFRpbWUiLCJsaW5lcyIsInRlbXAiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJtYXJrZXJzIiwiYWRqdXN0VmFsdWVUb0FuaW1hdGlvbldpbmRvdyIsInN0YXRlIiwiX2ZpbHRlciR2YWx1ZSIsInZhbHVlMCIsInZhbHVlMSIsImFuaW1hdGlvbldpbmRvdyIsImdldEluaXRpYWxJbnRlcnZhbCIsImRhdGFzZXRCaW5zIiwidmFsMCIsInZhbDEiLCJBTklNQVRJT05fV0lORE9XIiwiaW5kZXhPZiIsIk5hTiIsInVwZGF0ZWRGaWx0ZXIiLCJnZXRGaWx0ZXJQbG90Q29sb3JzQnlEYXRhSWQiLCJvbGRDb2xvcnNCeURhdGFJZCIsImNvbG9yc0J5RGF0YUlkIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJyZ2JUb0hleCIsImNvbG9yIiwiZXJyIiwidXBkYXRlVGltZUZpbHRlclBsb3RUeXBlIiwiX2RhdGFJZCIsIm5leHRGaWx0ZXIiLCJuZXh0UGxvdFR5cGUiLCJfdHlwZW9mMiIsImdldERlZmF1bHRQbG90VHlwZSIsIlBMT1RfVFlQRVMiLCJoaXN0b2dyYW0iLCJnZXRSYW5nZUZpbHRlckJpbnMiLCJhY2MiLCJkYXRhc2V0SWR4IiwiX2ZpbHRlciRiaW5zIiwiZmllbGROYW1lIiwiZ2V0Q29sdW1uRmllbGQiLCJ1cGRhdGVSYW5nZUZpbHRlclBsb3RUeXBlIiwiQklOUyIsImdldENoYXJ0VGl0bGUiLCJ5QXhpc05hbWUiLCJkaXNwbGF5TmFtZSIsImNhcGl0YWxpemVGaXJzdExldHRlciIsImRlZmF1bHRUaW1lRm9ybWF0IiwiZ2V0RGVmYXVsdFRpbWVGb3JtYXQiXSwic291cmNlcyI6WyIuLi9zcmMvcGxvdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2Jpc2VjdExlZnQsIGV4dGVudCwgaGlzdG9ncmFtIGFzIGQzSGlzdG9ncmFtLCB0aWNrc30gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoLmlzZXF1YWwnO1xuaW1wb3J0IHtnZXRGaWx0ZXJNYXBwZWRWYWx1ZSwgZ2V0SW5pdGlhbEludGVydmFsLCBpbnRlcnZhbFRvRnVuY3Rpb259IGZyb20gJy4vdGltZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge1xuICBCaW4sXG4gIFRpbWVCaW5zLFxuICBNaWxsaXNlY29uZCxcbiAgVGltZVJhbmdlRmlsdGVyLFxuICBSYW5nZUZpbHRlcixcbiAgUGxvdFR5cGUsXG4gIEZpbHRlcixcbiAgTGluZUNoYXJ0LFxuICBGaWVsZCxcbiAgVmFsdWVPZixcbiAgTGluZURhdHVtXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7XG4gIEFOSU1BVElPTl9XSU5ET1csXG4gIEJJTlMsXG4gIGR1cmF0aW9uRGF5LFxuICBUSU1FX0FHR1JFR0FUSU9OLFxuICBBR0dSRUdBVElPTl9UWVBFUyxcbiAgUExPVF9UWVBFUyxcbiAgQWdncmVnYXRpb25UeXBlc1xufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7aXNOdW1iZXIsIHJvdW5kVmFsVG9TdGVwfSBmcm9tICcuL2RhdGEtdXRpbHMnO1xuaW1wb3J0IHthZ2dyZWdhdGUsIEFHR1JFR0FUSU9OX05BTUV9IGZyb20gJy4vYWdncmVnYXRpb24nO1xuaW1wb3J0IHtjYXBpdGFsaXplRmlyc3RMZXR0ZXJ9IGZyb20gJy4vc3RyaW5ncyc7XG5pbXBvcnQge2dldERlZmF1bHRUaW1lRm9ybWF0fSBmcm9tICcuL2Zvcm1hdCc7XG5pbXBvcnQge3JnYlRvSGV4fSBmcm9tICcuL2NvbG9yLXV0aWxzJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnLic7XG5pbXBvcnQge0tlcGxlclRhYmxlTW9kZWx9IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBUT0RPIGtlcGxlci10YWJsZSBtb2R1bGUgaXNuJ3QgYWNjZXNzaWJsZSBmcm9tIHV0aWxzLiBBZGQgY29tcGF0aWJsZSBpbnRlcmZhY2UgdG8gdHlwZXNcbnR5cGUgRGF0YXNldHMgPSBhbnk7XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB0aHJlc2hvbGRzXG4gKiBAcGFyYW0gdmFsdWVzXG4gKiBAcGFyYW0gaW5kZXhlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGlzdG9ncmFtRnJvbVRocmVzaG9sZChcbiAgdGhyZXNob2xkczogbnVtYmVyW10sXG4gIHZhbHVlczogbnVtYmVyW10sXG4gIHZhbHVlQWNjZXNzb3I/OiAoZDogdW5rbm93bikgPT4gbnVtYmVyLFxuICBmaWx0ZXJFbXB0eUJpbnMgPSB0cnVlXG4pOiBCaW5bXSB7XG4gIGNvbnN0IGdldEJpbnMgPSBkM0hpc3RvZ3JhbSgpXG4gICAgLmRvbWFpbihbdGhyZXNob2xkc1swXSwgdGhyZXNob2xkc1t0aHJlc2hvbGRzLmxlbmd0aCAtIDFdXSlcbiAgICAudGhyZXNob2xkcyh0aHJlc2hvbGRzKTtcblxuICBpZiAodmFsdWVBY2Nlc3Nvcikge1xuICAgIGdldEJpbnMudmFsdWUodmFsdWVBY2Nlc3Nvcik7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGJpbnMgPSBnZXRCaW5zKHZhbHVlcykubWFwKGJpbiA9PiAoe1xuICAgIGNvdW50OiBiaW4ubGVuZ3RoLFxuICAgIGluZGV4ZXM6IGJpbixcbiAgICB4MDogYmluLngwLFxuICAgIHgxOiBiaW4ueDFcbiAgfSkpO1xuXG4gIC8vIGQzLWhpc3RvZ3JhbSBpZ25vcmVzIHRocmVzaG9sZCB2YWx1ZXMgb3V0c2lkZSB0aGUgZG9tYWluXG4gIC8vIFRoZSBmaXJzdCBiaW4ueDAgaXMgYWx3YXlzIGVxdWFsIHRvIHRoZSBtaW5pbXVtIGRvbWFpbiB2YWx1ZSwgYW5kIHRoZSBsYXN0IGJpbi54MSBpcyBhbHdheXMgZXF1YWwgdG8gdGhlIG1heGltdW0gZG9tYWluIHZhbHVlLlxuXG4gIC8vIGJpbnNbMF0ueDAgPSB0aHJlc2hvbGRzWzBdO1xuICAvLyBiaW5zW2JpbnMubGVuZ3RoIC0gMV0ueDEgPSB0aHJlc2hvbGRzW3RocmVzaG9sZHMubGVuZ3RoIC0gMV07XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gZmlsdGVyRW1wdHlCaW5zID8gYmlucy5maWx0ZXIoYiA9PiBiLmNvdW50ID4gMCkgOiBiaW5zO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gdmFsdWVzXG4gKiBAcGFyYW0gbnVtQmluc1xuICogQHBhcmFtIHZhbHVlQWNjZXNzb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhpc3RvZ3JhbUZyb21WYWx1ZXMoXG4gIHZhbHVlczogKE1pbGxpc2Vjb25kIHwgbnVsbCB8IG51bWJlcilbXSxcbiAgbnVtQmluczogbnVtYmVyLFxuICB2YWx1ZUFjY2Vzc29yPzogKGQ6IG51bWJlcikgPT4gbnVtYmVyXG4pIHtcbiAgY29uc3QgZ2V0QmlucyA9IGQzSGlzdG9ncmFtKCkudGhyZXNob2xkcyhudW1CaW5zKTtcblxuICBpZiAodmFsdWVBY2Nlc3Nvcikge1xuICAgIGdldEJpbnMudmFsdWUodmFsdWVBY2Nlc3Nvcik7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlIGQzLWFycmF5IHR5cGVzIGRvZXNuJ3QgbWF0Y2hcbiAgcmV0dXJuIGdldEJpbnModmFsdWVzKVxuICAgIC5tYXAoYmluID0+ICh7XG4gICAgICBjb3VudDogYmluLmxlbmd0aCxcbiAgICAgIGluZGV4ZXM6IGJpbixcbiAgICAgIHgwOiBiaW4ueDAsXG4gICAgICB4MTogYmluLngxXG4gICAgfSkpXG4gICAgLmZpbHRlcihiID0+IHtcbiAgICAgIGNvbnN0IHt4MCwgeDF9ID0gYjtcbiAgICAgIHJldHVybiBpc051bWJlcih4MCkgJiYgaXNOdW1iZXIoeDEpO1xuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGlzdG9ncmFtRnJvbU9yZGluYWwoXG4gIGRvbWFpbjogW3N0cmluZ10sXG4gIHZhbHVlczogKE1pbGxpc2Vjb25kIHwgbnVsbCB8IG51bWJlcilbXSxcbiAgdmFsdWVBY2Nlc3Nvcj86IChkOiB1bmtub3duKSA9PiBzdHJpbmdcbik6IEJpbltdIHtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciB0byB0eXBlZCB0byBleHBlY3Qgc3RyaW5nc1xuICBjb25zdCBnZXRCaW5zID0gZDNIaXN0b2dyYW0oKS50aHJlc2hvbGRzKGRvbWFpbik7XG4gIGlmICh2YWx1ZUFjY2Vzc29yKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0byB0eXBlZCB0byBleHBlY3Qgc3RyaW5nc1xuICAgIGdldEJpbnMudmFsdWUodmFsdWVBY2Nlc3Nvcik7XG4gIH1cblxuICAvLyBAdHMtZXhwZWN0LWVycm9yIG51bGwgdmFsdWVzIGFyZW4ndCBleHBlY3RlZFxuICBjb25zdCBiaW5zID0gZ2V0Qmlucyh2YWx1ZXMpO1xuXG4gIC8vIEB0cy1pZ25vcmUgZDMtYXJyYXkgdHlwZXMgZG9lc24ndCBtYXRjaFxuICByZXR1cm4gYmlucy5tYXAoYmluID0+ICh7XG4gICAgY291bnQ6IGJpbi5sZW5ndGgsXG4gICAgaW5kZXhlczogYmluLFxuICAgIHgwOiBiaW4ueDAsXG4gICAgeDE6IGJpbi54MFxuICB9KSk7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBkb21haW5cbiAqIEBwYXJhbSB2YWx1ZXNcbiAqIEBwYXJhbSBudW1CaW5zXG4gKiBAcGFyYW0gdmFsdWVBY2Nlc3NvclxuICovXG5leHBvcnQgZnVuY3Rpb24gaGlzdG9ncmFtRnJvbURvbWFpbihcbiAgZG9tYWluOiBbbnVtYmVyLCBudW1iZXJdLFxuICB2YWx1ZXM6IChNaWxsaXNlY29uZCB8IG51bGwgfCBudW1iZXIpW10sXG4gIG51bUJpbnM6IG51bWJlcixcbiAgdmFsdWVBY2Nlc3Nvcj86IChkOiB1bmtub3duKSA9PiBudW1iZXJcbik6IEJpbltdIHtcbiAgY29uc3QgZ2V0QmlucyA9IGQzSGlzdG9ncmFtKCkudGhyZXNob2xkcyh0aWNrcyhkb21haW5bMF0sIGRvbWFpblsxXSwgbnVtQmlucykpLmRvbWFpbihkb21haW4pO1xuICBpZiAodmFsdWVBY2Nlc3Nvcikge1xuICAgIGdldEJpbnMudmFsdWUodmFsdWVBY2Nlc3Nvcik7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlIGQzLWFycmF5IHR5cGVzIGRvZXNuJ3QgbWF0Y2hcbiAgcmV0dXJuIGdldEJpbnModmFsdWVzKS5tYXAoYmluID0+ICh7XG4gICAgY291bnQ6IGJpbi5sZW5ndGgsXG4gICAgaW5kZXhlczogYmluLFxuICAgIHgwOiBiaW4ueDAsXG4gICAgeDE6IGJpbi54MVxuICB9KSk7XG59XG5cbi8qKlxuICogQHBhcmFtIGZpbHRlclxuICogQHBhcmFtIGRhdGFzZXRzXG4gKiBAcGFyYW0gaW50ZXJ2YWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWVCaW5zKFxuICBmaWx0ZXI6IFRpbWVSYW5nZUZpbHRlcixcbiAgZGF0YXNldHM6IERhdGFzZXRzLFxuICBpbnRlcnZhbDogUGxvdFR5cGVbJ2ludGVydmFsJ11cbik6IFRpbWVCaW5zIHtcbiAgbGV0IGJpbnMgPSBmaWx0ZXIudGltZUJpbnMgfHwge307XG5cbiAgZmlsdGVyLmRhdGFJZC5mb3JFYWNoKGRhdGFJZCA9PiB7XG4gICAgLy8gcmV1c2UgYmlucyBpZiBmaWx0ZXJEYXRhIGRpZCBub3QgY2hhbmdlXG4gICAgaWYgKGJpbnNbZGF0YUlkXSAmJiBiaW5zW2RhdGFJZF1baW50ZXJ2YWxdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgLy8gZG8gbm90IGFwcGx5IGN1cnJlbnQgZmlsdGVyXG4gICAgY29uc3QgaW5kZXhlcyA9IHJ1bkdwdUZpbHRlckZvclBsb3QoZGF0YXNldCwgZmlsdGVyKTtcblxuICAgIGJpbnMgPSB7XG4gICAgICAuLi5iaW5zLFxuICAgICAgW2RhdGFJZF06IHtcbiAgICAgICAgLi4uYmluc1tkYXRhSWRdLFxuICAgICAgICBbaW50ZXJ2YWxdOiBiaW5CeVRpbWUoaW5kZXhlcywgZGF0YXNldCwgaW50ZXJ2YWwsIGZpbHRlcilcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4gYmlucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbkJ5VGltZShpbmRleGVzLCBkYXRhc2V0LCBpbnRlcnZhbCwgZmlsdGVyKSB7XG4gIC8vIGdwdUZpbHRlcnMgbmVlZCB0byBiZSBhcHBseSB0byBmaWx0ZXJlZEluZGV4XG4gIGNvbnN0IG1hcHBlZFZhbHVlID0gZ2V0RmlsdGVyTWFwcGVkVmFsdWUoZGF0YXNldCwgZmlsdGVyKTtcbiAgaWYgKCFtYXBwZWRWYWx1ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGludGVydmFsQmlucyA9IGdldEJpblRocmVzaG9sZHMoaW50ZXJ2YWwsIGZpbHRlci5kb21haW4pO1xuICBjb25zdCB2YWx1ZUFjY2Vzc29yID0gaWR4ID0+IG1hcHBlZFZhbHVlW2lkeF07XG4gIGNvbnN0IGJpbnMgPSBoaXN0b2dyYW1Gcm9tVGhyZXNob2xkKGludGVydmFsQmlucywgaW5kZXhlcywgdmFsdWVBY2Nlc3Nvcik7XG5cbiAgcmV0dXJuIGJpbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCaW5UaHJlc2hvbGRzKGludGVydmFsOiBzdHJpbmcsIGRvbWFpbjogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHRpbWVJbnRlcnZhbCA9IGludGVydmFsVG9GdW5jdGlvbihpbnRlcnZhbCk7XG4gIGNvbnN0IFt0MCwgdDFdID0gZG9tYWluO1xuICBjb25zdCBmbG9vciA9IHRpbWVJbnRlcnZhbC5mbG9vcih0MCkuZ2V0VGltZSgpO1xuICBjb25zdCBjZWlsaW5nID0gdGltZUludGVydmFsLmNlaWwodDEpLmdldFRpbWUoKTtcblxuICBpZiAoIXRpbWVJbnRlcnZhbCkge1xuICAgIC8vIGlmIHRpbWUgaW50ZXJ2YWwgaXMgbm90IGRlZmluZWRcbiAgICAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVuXG4gICAgcmV0dXJuIFt0MCwgdDAgKyBkdXJhdGlvbkRheV07XG4gIH1cbiAgY29uc3QgYmluVGhyZXNob2xkcyA9IHRpbWVJbnRlcnZhbC5yYW5nZShmbG9vciwgY2VpbGluZyArIDEpLm1hcCh0ID0+IG1vbWVudC51dGModCkudmFsdWVPZigpKTtcbiAgY29uc3QgbGFzdFN0ZXAgPSBiaW5UaHJlc2hvbGRzW2JpblRocmVzaG9sZHMubGVuZ3RoIC0gMV07XG4gIGlmIChsYXN0U3RlcCA9PT0gdDEpIHtcbiAgICAvLyB3aGVuIGxhc3Qgc3RlcCBlcXVhbCB0byBkb21haW4gbWF4LCBhZGQgb25lIG1vcmUgc3RlcFxuICAgIGJpblRocmVzaG9sZHMucHVzaChtb21lbnQudXRjKHRpbWVJbnRlcnZhbC5vZmZzZXQobGFzdFN0ZXApKS52YWx1ZU9mKCkpO1xuICB9XG5cbiAgcmV0dXJuIGJpblRocmVzaG9sZHM7XG59XG5cbi8qKlxuICogUnVuIEdQVSBmaWx0ZXIgb24gY3VycmVudCBmaWx0ZXIgcmVzdWx0IHRvIGdlbmVyYXRlIGluZGV4ZXMgZm9yIHBsb3RpbmcgY2hhcnRcbiAqIFNraXAgcnV1bmluZyBmb3IgdGhlIHNhbWUgZmllbGRcbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5HcHVGaWx0ZXJGb3JQbG90PEsgZXh0ZW5kcyBLZXBsZXJUYWJsZU1vZGVsPEssIEw+LCBMPihcbiAgZGF0YXNldDogSyxcbiAgZmlsdGVyPzogRmlsdGVyXG4pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHNraXBJbmRleGVzID0gZ2V0U2tpcEluZGV4ZXMoZGF0YXNldCwgZmlsdGVyKTtcblxuICBjb25zdCB7XG4gICAgZ3B1RmlsdGVyOiB7ZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycywgZmlsdGVyUmFuZ2UsIGZpbHRlclZhbHVlQWNjZXNzb3J9LFxuICAgIGZpbHRlcmVkSW5kZXhcbiAgfSA9IGRhdGFzZXQ7XG4gIGNvbnN0IGdldEZpbHRlclZhbHVlID0gZmlsdGVyVmFsdWVBY2Nlc3NvcihkYXRhc2V0LmRhdGFDb250YWluZXIpKCk7XG5cbiAgY29uc3QgYWxsQ2hhbm5lbHMgPSBPYmplY3Qua2V5cyhmaWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzKVxuICAgIC5tYXAoKF8sIGkpID0+IGkpXG4gICAgLmZpbHRlcihpID0+IE9iamVjdC52YWx1ZXMoZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycylbaV0pO1xuICBjb25zdCBza2lwQWxsID0gIWFsbENoYW5uZWxzLmZpbHRlcihpID0+ICFza2lwSW5kZXhlcy5pbmNsdWRlcyhpKSkubGVuZ3RoO1xuICBpZiAoc2tpcEFsbCkge1xuICAgIHJldHVybiBmaWx0ZXJlZEluZGV4O1xuICB9XG5cbiAgY29uc3QgZmlsdGVyRGF0YSA9IGdldEZpbHRlckRhdGFGdW5jKFxuICAgIGZpbHRlclJhbmdlLFxuICAgIGdldEZpbHRlclZhbHVlLFxuICAgIGRhdGFzZXQuZGF0YUNvbnRhaW5lcixcbiAgICBza2lwSW5kZXhlc1xuICApO1xuXG4gIHJldHVybiBmaWx0ZXJlZEluZGV4LmZpbHRlcihmaWx0ZXJEYXRhKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2tpcEluZGV4ZXMoZGF0YXNldCwgZmlsdGVyKSB7XG4gIC8vIGFycmF5IG9mIGdwdSBmaWx0ZXIgbmFtZXNcbiAgaWYgKCFmaWx0ZXIpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgZ3B1RmlsdGVycyA9IE9iamVjdC52YWx1ZXMoZGF0YXNldC5ncHVGaWx0ZXIuZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycykgYXMgKHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH0gfCBudWxsKVtdO1xuICBjb25zdCB2YWx1ZUluZGV4ID0gZmlsdGVyLmRhdGFJZC5maW5kSW5kZXgoaWQgPT4gaWQgPT09IGRhdGFzZXQuaWQpO1xuICBjb25zdCBmaWx0ZXJDb2x1bW4gPSBmaWx0ZXIubmFtZVt2YWx1ZUluZGV4XTtcblxuICByZXR1cm4gZ3B1RmlsdGVycy5yZWR1Y2UoKGFjY3UsIGl0ZW0sIGlkeCkgPT4ge1xuICAgIGlmIChpdGVtICYmIGZpbHRlckNvbHVtbiA9PT0gaXRlbS5uYW1lKSB7XG4gICAgICBhY2N1LnB1c2goaWR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3U7XG4gIH0sIFtdIGFzIG51bWJlcltdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlckRhdGFGdW5jKFxuICBmaWx0ZXJSYW5nZSxcbiAgZ2V0RmlsdGVyVmFsdWUsXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gIHNraXBzXG4pIHtcbiAgcmV0dXJuIGluZGV4ID0+XG4gICAgZ2V0RmlsdGVyVmFsdWUoe2luZGV4fSkuZXZlcnkoXG4gICAgICAodmFsLCBpKSA9PiBza2lwcy5pbmNsdWRlcyhpKSB8fCAodmFsID49IGZpbHRlclJhbmdlW2ldWzBdICYmIHZhbCA8PSBmaWx0ZXJSYW5nZVtpXVsxXSlcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRCaW4oYikge1xuICByZXR1cm4gYi54MCAhPT0gdW5kZWZpbmVkICYmIGIueDEgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBVc2UgaW4gc2xpZGVyLCBnaXZlbiBhIG51bWJlciBhbmQgYW4gYXJyYXkgb2YgbnVtYmVycywgcmV0dXJuIHRoZSBuZWFycyBudW1iZXIgZnJvbSB0aGUgYXJyYXkuXG4gKiBUYWtlcyBhIHZhbHVlLCB0aW1lc3RlcHMgYW5kIHJldHVybiB0aGUgYWN0dWFsIHN0ZXAuXG4gKiBAcGFyYW0gdmFsdWVcbiAqIEBwYXJhbSBtYXJrc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc25hcFRvTWFya3ModmFsdWU6IG51bWJlciwgbWFya3M6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgLy8gYWx3YXlzIHVzZSBiaW4geDBcbiAgaWYgKCFtYXJrcy5sZW5ndGgpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGxvb2tpbmcgYXQgdGhlIHVzYWdlIG51bGwgcmV0dXJuIHZhbHVlIGlzbid0IGV4cGVjdGVkIGFuZCByZXF1aXJlcyBleHRyYSBoYW5kbGluZyBpbiBhIGxvdCBvZiBwbGFjZXNcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBpID0gYmlzZWN0TGVmdChtYXJrcywgdmFsdWUpO1xuICBpZiAoaSA9PT0gMCkge1xuICAgIHJldHVybiBtYXJrc1tpXTtcbiAgfSBlbHNlIGlmIChpID09PSBtYXJrcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbWFya3NbaSAtIDFdO1xuICB9XG4gIGNvbnN0IGlkeCA9IG1hcmtzW2ldIC0gdmFsdWUgPCB2YWx1ZSAtIG1hcmtzW2kgLSAxXSA/IGkgOiBpIC0gMTtcbiAgcmV0dXJuIG1hcmtzW2lkeF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWwsIG1pblZhbHVlLCBzdGVwLCBtYXJrcykge1xuICBpZiAobWFya3MgJiYgbWFya3MubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHNuYXBUb01hcmtzKHZhbCwgbWFya3MpO1xuICB9XG5cbiAgcmV0dXJuIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlLCBzdGVwLCB2YWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQZXJjZW50RmllbGQoZmllbGQpIHtcbiAgcmV0dXJuIGZpZWxkLm1ldGFkYXRhICYmIGZpZWxkLm1ldGFkYXRhLm51bWVyYXRvciAmJiBmaWVsZC5tZXRhZGF0YS5kZW5vbWluYXRvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUFnZ3JlZ2F0aW9uQnlGaWVsZChmaWVsZDogRmllbGQsIGFnZ3JlZ2F0aW9uOiBWYWx1ZU9mPEFnZ3JlZ2F0aW9uVHlwZXM+KSB7XG4gIC8vIHNob3VsZG4ndCBhcHBseSBzdW0gdG8gcGVyY2VudCBmaWVsZSB0eXBlXG4gIC8vIGRlZmF1bHQgYWdncmVnYXRpb24gaXMgYXZlcmFnZVxuICByZXR1cm4gZmllbGQgJiYgaXNQZXJjZW50RmllbGQoZmllbGQpXG4gICAgPyBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlXG4gICAgOiBhZ2dyZWdhdGlvbiB8fCBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlO1xufVxuXG5jb25zdCBnZXRBZ3JlZ2F0aW9uVHlwZSA9IChmaWVsZCwgYWdncmVnYXRpb24pID0+IHtcbiAgaWYgKGlzUGVyY2VudEZpZWxkKGZpZWxkKSkge1xuICAgIHJldHVybiAnbWVhbl9vZl9wZXJjZW50JztcbiAgfVxuICByZXR1cm4gYWdncmVnYXRpb247XG59O1xuXG5jb25zdCBnZXRBZ2dyZWdhdGlvbkFjY2Vzc29yID0gKGZpZWxkLCBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBmaWVsZHMpID0+IHtcbiAgaWYgKGlzUGVyY2VudEZpZWxkKGZpZWxkKSkge1xuICAgIGNvbnN0IG51bWVyYXRvcklkeCA9IGZpZWxkcy5maW5kSW5kZXgoZiA9PiBmLm5hbWUgPT09IGZpZWxkLm1ldGFkYXRhLm51bWVyYXRvcik7XG4gICAgY29uc3QgZGVub21pbmF0b3JJZHggPSBmaWVsZHMuZmluZEluZGV4KGYgPT4gZi5uYW1lID09PSBmaWVsZC5tZXRhZGF0YS5kZW5vbWluYXRvcik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0TnVtZXJhdG9yOiBpID0+IGRhdGFDb250YWluZXIudmFsdWVBdChpLCBudW1lcmF0b3JJZHgpLFxuICAgICAgZ2V0RGVub21pbmF0b3I6IGkgPT4gZGF0YUNvbnRhaW5lci52YWx1ZUF0KGksIGRlbm9taW5hdG9ySWR4KVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gaSA9PiBmaWVsZC52YWx1ZUFjY2Vzc29yKHtpbmRleDogaX0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFZhbHVlQWdnckZ1bmMgPSAoXG4gIGZpZWxkOiBGaWVsZCB8IHN0cmluZyB8IG51bGwsXG4gIGFnZ3JlZ2F0aW9uOiBzdHJpbmcsXG4gIGRhdGFzZXQ6IEtlcGxlclRhYmxlTW9kZWw8YW55LCBhbnk+XG4pOiAoKGJpbjogQmluKSA9PiBudW1iZXIpID0+IHtcbiAgY29uc3Qge2RhdGFDb250YWluZXIsIGZpZWxkc30gPSBkYXRhc2V0O1xuXG4gIC8vIFRoZSBwYXNzZWQtaW4gZmllbGQgbWlnaHQgbm90IGhhdmUgYWxsIHRoZSBmaWVsZHMgc2V0IChlLmcuIHZhbHVlQWNjZXNzb3IpXG4gIGNvbnN0IGRhdGFzZXRGaWVsZCA9IGZpZWxkcy5maW5kKFxuICAgIGYgPT4gZmllbGQgJiYgKGYubmFtZSA9PT0gZmllbGQgfHwgZi5uYW1lID09PSAoZmllbGQgYXMgRmllbGQpLm5hbWUpXG4gICk7XG5cbiAgcmV0dXJuIGRhdGFzZXRGaWVsZCAmJiBhZ2dyZWdhdGlvblxuICAgID8gYmluID0+XG4gICAgICAgIGFnZ3JlZ2F0ZShcbiAgICAgICAgICBiaW4uaW5kZXhlcyxcbiAgICAgICAgICBnZXRBZ3JlZ2F0aW9uVHlwZShkYXRhc2V0RmllbGQsIGFnZ3JlZ2F0aW9uKSxcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGNhbiByZXR1cm4ge2dldE51bWVyYXRvciwgZ2V0RGVub21pbmF0b3J9XG4gICAgICAgICAgZ2V0QWdncmVnYXRpb25BY2Nlc3NvcihkYXRhc2V0RmllbGQsIGRhdGFDb250YWluZXIsIGZpZWxkcylcbiAgICAgICAgKVxuICAgIDogYmluID0+IGJpbi5jb3VudDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBZ2dyZWdhdGlvbk9wdGlvc25CYXNlZE9uRmllbGQgPSBmaWVsZCA9PiB7XG4gIGlmIChpc1BlcmNlbnRGaWVsZChmaWVsZCkpIHtcbiAgICAvLyBkb24ndCBzaG93IHN1bVxuICAgIHJldHVybiBUSU1FX0FHR1JFR0FUSU9OLmZpbHRlcigoe2lkfSkgPT4gaWQgIT09IEFHR1JFR0FUSU9OX1RZUEVTLnN1bSk7XG4gIH1cbiAgcmV0dXJuIFRJTUVfQUdHUkVHQVRJT047XG59O1xuXG5mdW5jdGlvbiBnZXREZWx0YShcbiAgYmluczogTGluZURhdHVtW10sXG4gIHk6IG51bWJlcixcbiAgX2ludGVydmFsOiBQbG90VHlwZVsnaW50ZXJ2YWwnXVxuKTogUGFydGlhbDxMaW5lRGF0dW0+ICYge2RlbHRhOiAnbGFzdCc7IHBjdDogbnVtYmVyIHwgbnVsbH0ge1xuICAvLyBpZiAoV09XW2ludGVydmFsXSkgcmV0dXJuIGdldFdvdyhiaW5zLCB5LCBpbnRlcnZhbCk7XG4gIGNvbnN0IGxhc3RCaW4gPSBiaW5zW2JpbnMubGVuZ3RoIC0gMV07XG5cbiAgcmV0dXJuIHtcbiAgICBkZWx0YTogJ2xhc3QnLFxuICAgIHBjdDogbGFzdEJpbiA/IGdldFBjdENoYW5nZSh5LCBsYXN0QmluLnkpIDogbnVsbFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGN0Q2hhbmdlKHk6IHVua25vd24sIHkwOiB1bmtub3duKTogbnVtYmVyIHwgbnVsbCB7XG4gIGlmIChOdW1iZXIuaXNGaW5pdGUoeSkgJiYgTnVtYmVyLmlzRmluaXRlKHkwKSAmJiB5MCAhPT0gMCkge1xuICAgIHJldHVybiAoKHkgYXMgbnVtYmVyKSAtICh5MCBhcyBudW1iZXIpKSAvICh5MCBhcyBudW1iZXIpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gZGF0YXNldHNcbiAqIEBwYXJhbSBmaWx0ZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmVDaGFydChkYXRhc2V0czogRGF0YXNldHMsIGZpbHRlcjogRmlsdGVyKTogTGluZUNoYXJ0IHtcbiAgY29uc3Qge2RhdGFJZCwgeUF4aXMsIHBsb3RUeXBlLCBsaW5lQ2hhcnR9ID0gZmlsdGVyO1xuICBjb25zdCB7YWdncmVnYXRpb24sIGludGVydmFsfSA9IHBsb3RUeXBlO1xuICBjb25zdCBzZXJpZXNEYXRhSWQgPSBkYXRhSWRbMF07XG4gIGNvbnN0IGJpbnMgPSAoZmlsdGVyIGFzIFRpbWVSYW5nZUZpbHRlcikudGltZUJpbnM/LltzZXJpZXNEYXRhSWRdPy5baW50ZXJ2YWxdO1xuXG4gIGlmIChcbiAgICBsaW5lQ2hhcnQgJiZcbiAgICBsaW5lQ2hhcnQuYWdncmVnYXRpb24gPT09IGFnZ3JlZ2F0aW9uICYmXG4gICAgbGluZUNoYXJ0LmludGVydmFsID09PSBpbnRlcnZhbCAmJlxuICAgIGxpbmVDaGFydC55QXhpcyA9PT0geUF4aXM/Lm5hbWUgJiZcbiAgICAvLyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB2YWxpZGF0ZSBiaW5zIGJlY2F1c2Ugb2YgY3Jvc3MgZmlsdGVyIGRhdGEgY2hhbmdlc1xuICAgIGlzRXF1YWwoYmlucywgbGluZUNoYXJ0Py5iaW5zKVxuICApIHtcbiAgICAvLyBkb24ndCB1cGRhdGUgbGluZUNoYXJ0IGlmIHBsb3RUeXBlIGhhc24ndCBjaGFuZ2VcbiAgICByZXR1cm4gbGluZUNoYXJ0O1xuICB9XG5cbiAgY29uc3QgZGF0YXNldCA9IGRhdGFzZXRzW3Nlcmllc0RhdGFJZF07XG4gIGNvbnN0IGdldFlWYWx1ZSA9IGdldFZhbHVlQWdnckZ1bmMoeUF4aXMsIGFnZ3JlZ2F0aW9uLCBkYXRhc2V0KTtcblxuICBjb25zdCBpbml0OiBMaW5lRGF0dW1bXSA9IFtdO1xuICBjb25zdCBzZXJpZXMgPSAoYmlucyB8fCBbXSkucmVkdWNlKChhY2N1LCBiaW4pID0+IHtcbiAgICBjb25zdCB5ID0gZ2V0WVZhbHVlKGJpbik7XG4gICAgY29uc3QgZGVsdGEgPSBnZXREZWx0YShhY2N1LCB5LCBpbnRlcnZhbCk7XG4gICAgYWNjdS5wdXNoKHtcbiAgICAgIHg6IGJpbi54MCxcbiAgICAgIHksXG4gICAgICAuLi5kZWx0YVxuICAgIH0pO1xuICAgIHJldHVybiBhY2N1O1xuICB9LCBpbml0KTtcblxuICBjb25zdCB5RG9tYWluID0gZXh0ZW50PHt5OiBhbnl9PihzZXJpZXMsIGQgPT4gZC55KTtcbiAgY29uc3QgeERvbWFpbiA9IGJpbnMgPyBbYmluc1swXS54MCwgYmluc1tiaW5zLmxlbmd0aCAtIDFdLngxXSA6IFtdO1xuXG4gIC8vIHRyZWF0IG1pc3NpbmcgZGF0YSBhcyBhbm90aGVyIHNlcmllc1xuICBjb25zdCBzcGxpdCA9IHNwbGl0U2VyaWVzKHNlcmllcyk7XG4gIGNvbnN0IGFnZ3JOYW1lID0gQUdHUkVHQVRJT05fTkFNRVthZ2dyZWdhdGlvbl07XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgeURvbWFpbixcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgeERvbWFpbixcbiAgICBpbnRlcnZhbCxcbiAgICBhZ2dyZWdhdGlvbixcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc2VyaWVzOiBzcGxpdCxcbiAgICB0aXRsZTogYCR7YWdnck5hbWV9JHsnIG9mICd9JHt5QXhpcyA/IHlBeGlzLm5hbWUgOiAnQ291bnQnfWAsXG4gICAgZmllbGRUeXBlOiB5QXhpcyA/IHlBeGlzLnR5cGUgOiAnaW50ZWdlcicsXG4gICAgeUF4aXM6IHlBeGlzID8geUF4aXMubmFtZSA6IG51bGwsXG4gICAgYWxsVGltZToge1xuICAgICAgdGl0bGU6IGBBbGwgVGltZSBBdmVyYWdlYCxcbiAgICAgIHZhbHVlOiBhZ2dyZWdhdGUoc2VyaWVzLCBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlLCBkID0+IGQueSlcbiAgICB9LFxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYmlucyBpcyBCaW5zW10sIG5vdCBhIEJpbnMgbWFwLiBSZWZhY3RvciB0byB1c2UgY29ycmVjdCB0eXBlcy5cbiAgICBiaW5zXG4gIH07XG59XG5cbi8vIHNwbGl0IGludG8gbXVsdGlwbGUgc2VyaWVzIHdoZW4gc2VlIG1pc3NpbmcgZGF0YVxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0U2VyaWVzKHNlcmllcykge1xuICBjb25zdCBsaW5lczogYW55W10gPSBbXTtcbiAgbGV0IHRlbXA6IGFueVtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZCA9IHNlcmllc1tpXTtcbiAgICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZChkLnkpICYmIHRlbXAubGVuZ3RoKSB7XG4gICAgICAvLyBlbmRzIHRlbXBcbiAgICAgIGxpbmVzLnB1c2godGVtcCk7XG4gICAgICB0ZW1wID0gW107XG4gICAgfSBlbHNlIGlmIChub3ROdWxsb3JVbmRlZmluZWQoZC55KSkge1xuICAgICAgdGVtcC5wdXNoKGQpO1xuICAgIH1cblxuICAgIGlmIChpID09PSBzZXJpZXMubGVuZ3RoIC0gMSAmJiB0ZW1wLmxlbmd0aCkge1xuICAgICAgbGluZXMucHVzaCh0ZW1wKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBtYXJrZXJzID0gbGluZXMubGVuZ3RoID4gMSA/IHNlcmllcy5maWx0ZXIoZCA9PiBub3ROdWxsb3JVbmRlZmluZWQoZC55KSkgOiBbXTtcblxuICByZXR1cm4ge2xpbmVzLCBtYXJrZXJzfTtcbn1cblxudHlwZSBNaW5WaXNTdGF0ZUZvckFuaW1hdGlvbldpbmRvdyA9IHtcbiAgZGF0YXNldHM6IERhdGFzZXRzO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFkanVzdFZhbHVlVG9BbmltYXRpb25XaW5kb3c8UyBleHRlbmRzIE1pblZpc1N0YXRlRm9yQW5pbWF0aW9uV2luZG93PihcbiAgc3RhdGU6IFMsXG4gIGZpbHRlcjogVGltZVJhbmdlRmlsdGVyXG4pIHtcbiAgY29uc3Qge1xuICAgIHBsb3RUeXBlLFxuICAgIHZhbHVlOiBbdmFsdWUwLCB2YWx1ZTFdLFxuICAgIGFuaW1hdGlvbldpbmRvd1xuICB9ID0gZmlsdGVyO1xuXG4gIGNvbnN0IGludGVydmFsID0gcGxvdFR5cGUuaW50ZXJ2YWwgfHwgZ2V0SW5pdGlhbEludGVydmFsKGZpbHRlciwgc3RhdGUuZGF0YXNldHMpO1xuICBjb25zdCBiaW5zID0gZ2V0VGltZUJpbnMoZmlsdGVyLCBzdGF0ZS5kYXRhc2V0cywgaW50ZXJ2YWwpO1xuICBjb25zdCBkYXRhc2V0QmlucyA9IGJpbnMgJiYgT2JqZWN0LmtleXMoYmlucykubGVuZ3RoICYmIE9iamVjdC52YWx1ZXMoYmlucylbMF1baW50ZXJ2YWxdO1xuICBjb25zdCB0aHJlc2hvbGRzID0gKGRhdGFzZXRCaW5zIHx8IFtdKS5tYXAoYiA9PiBiLngwKTtcblxuICBsZXQgdmFsMCA9IHZhbHVlMDtcbiAgbGV0IHZhbDEgPSB2YWx1ZTE7XG4gIGxldCBpZHg7XG4gIGlmIChhbmltYXRpb25XaW5kb3cgPT09IEFOSU1BVElPTl9XSU5ET1cuaW50ZXJ2YWwpIHtcbiAgICB2YWwwID0gc25hcFRvTWFya3ModmFsdWUxLCB0aHJlc2hvbGRzKTtcbiAgICBpZHggPSB0aHJlc2hvbGRzLmluZGV4T2YodmFsMCk7XG4gICAgdmFsMSA9IGlkeCA+IC0xID8gZGF0YXNldEJpbnNbaWR4XS54MSA6IE5hTjtcbiAgfSBlbHNlIHtcbiAgICAvLyBmaXQgY3VycmVudCB2YWx1ZSB0byB3aW5kb3dcbiAgICB2YWwwID0gc25hcFRvTWFya3ModmFsdWUwLCB0aHJlc2hvbGRzKTtcbiAgICB2YWwxID0gc25hcFRvTWFya3ModmFsdWUxLCB0aHJlc2hvbGRzKTtcblxuICAgIGlmICh2YWwwID09PSB2YWwxKSB7XG4gICAgICBpZHggPSB0aHJlc2hvbGRzLmluZGV4T2YodmFsMCk7XG4gICAgICBpZiAoaWR4ID09PSB0aHJlc2hvbGRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdmFsMCA9IHRocmVzaG9sZHNbaWR4IC0gMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwxID0gdGhyZXNob2xkc1tpZHggKyAxXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCB1cGRhdGVkRmlsdGVyID0ge1xuICAgIC4uLmZpbHRlcixcbiAgICBwbG90VHlwZToge1xuICAgICAgLi4uZmlsdGVyLnBsb3RUeXBlLFxuICAgICAgaW50ZXJ2YWxcbiAgICB9LFxuICAgIHRpbWVCaW5zOiBiaW5zLFxuICAgIHZhbHVlOiBbdmFsMCwgdmFsMV1cbiAgfTtcblxuICByZXR1cm4gdXBkYXRlZEZpbHRlcjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgb3IgdXBkYXRlIGNvbG9ycyBmb3IgYSBmaWx0ZXIgcGxvdFxuICogQHBhcmFtIGZpbHRlclxuICogQHBhcmFtIGRhdGFzZXRzXG4gKiBAcGFyYW0gb2xkQ29sb3JzQnlEYXRhSWRcbiAqL1xuZnVuY3Rpb24gZ2V0RmlsdGVyUGxvdENvbG9yc0J5RGF0YUlkKGZpbHRlciwgZGF0YXNldHMsIG9sZENvbG9yc0J5RGF0YUlkKSB7XG4gIGxldCBjb2xvcnNCeURhdGFJZCA9IG9sZENvbG9yc0J5RGF0YUlkIHx8IHt9O1xuICBmb3IgKGNvbnN0IGRhdGFJZCBvZiBmaWx0ZXIuZGF0YUlkKSB7XG4gICAgaWYgKCFjb2xvcnNCeURhdGFJZFtkYXRhSWRdICYmIGRhdGFzZXRzW2RhdGFJZF0pIHtcbiAgICAgIGNvbG9yc0J5RGF0YUlkID0ge1xuICAgICAgICAuLi5jb2xvcnNCeURhdGFJZCxcbiAgICAgICAgW2RhdGFJZF06IHJnYlRvSGV4KGRhdGFzZXRzW2RhdGFJZF0uY29sb3IpXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICByZXR1cm4gY29sb3JzQnlEYXRhSWQ7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBmaWx0ZXJcbiAqIEBwYXJhbSBwbG90VHlwZVxuICogQHBhcmFtIGRhdGFzZXRzXG4gKiBAcGFyYW0gZGF0YUlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVUaW1lRmlsdGVyUGxvdFR5cGUoXG4gIGZpbHRlcjogVGltZVJhbmdlRmlsdGVyLFxuICBwbG90VHlwZTogVGltZVJhbmdlRmlsdGVyWydwbG90VHlwZSddLFxuICBkYXRhc2V0czogRGF0YXNldHMsXG4gIF9kYXRhSWQ/OiBzdHJpbmdcbik6IFRpbWVSYW5nZUZpbHRlciB7XG4gIGxldCBuZXh0RmlsdGVyID0gZmlsdGVyO1xuICBsZXQgbmV4dFBsb3RUeXBlID0gcGxvdFR5cGU7XG4gIGlmICh0eXBlb2YgbmV4dFBsb3RUeXBlICE9PSAnb2JqZWN0JyB8fCAhbmV4dFBsb3RUeXBlLmFnZ3JlZ2F0aW9uIHx8ICFuZXh0UGxvdFR5cGUuaW50ZXJ2YWwpIHtcbiAgICBuZXh0UGxvdFR5cGUgPSBnZXREZWZhdWx0UGxvdFR5cGUoZmlsdGVyLCBkYXRhc2V0cyk7XG4gIH1cblxuICBpZiAoZmlsdGVyLmRhdGFJZC5sZW5ndGggPiAxKSB7XG4gICAgbmV4dFBsb3RUeXBlID0ge1xuICAgICAgLi4ubmV4dFBsb3RUeXBlLFxuICAgICAgY29sb3JzQnlEYXRhSWQ6IGdldEZpbHRlclBsb3RDb2xvcnNCeURhdGFJZChmaWx0ZXIsIGRhdGFzZXRzLCBuZXh0UGxvdFR5cGUuY29sb3JzQnlEYXRhSWQpXG4gICAgfTtcbiAgfVxuICBuZXh0RmlsdGVyID0ge1xuICAgIC4uLm5leHRGaWx0ZXIsXG4gICAgcGxvdFR5cGU6IG5leHRQbG90VHlwZVxuICB9O1xuXG4gIGNvbnN0IGJpbnMgPSBnZXRUaW1lQmlucyhuZXh0RmlsdGVyLCBkYXRhc2V0cywgbmV4dFBsb3RUeXBlLmludGVydmFsKTtcblxuICBuZXh0RmlsdGVyID0ge1xuICAgIC4uLm5leHRGaWx0ZXIsXG4gICAgdGltZUJpbnM6IGJpbnNcbiAgfTtcblxuICBpZiAocGxvdFR5cGUudHlwZSA9PT0gUExPVF9UWVBFUy5oaXN0b2dyYW0pIHtcbiAgICAvLyBIaXN0b2dyYW0gaXMgY2FsY3VsYXRlZCBhbmQgbWVtb2l6ZWQgaW4gdGhlIGNoYXJ0IGl0c2VsZlxuICB9IGVsc2UgaWYgKHBsb3RUeXBlLnR5cGUgPT09IFBMT1RfVFlQRVMubGluZUNoYXJ0KSB7XG4gICAgLy8gd2Ugc2hvdWxkIGJlIGFibGUgdG8gbW92ZSB0aGlzIGludG8gaXRzIG93biBjb21wb25lbnQgc28gcmVhY3Qgd2lsbCBkbyB0aGUgc2hhbGxvdyBjb21wYXJpc29uIGZvciB1cy5cbiAgICBuZXh0RmlsdGVyID0ge1xuICAgICAgLi4ubmV4dEZpbHRlcixcbiAgICAgIGxpbmVDaGFydDogZ2V0TGluZUNoYXJ0KGRhdGFzZXRzLCBuZXh0RmlsdGVyKVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbmV4dEZpbHRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJhbmdlRmlsdGVyQmlucyhmaWx0ZXIsIGRhdGFzZXRzLCBudW1CaW5zKSB7XG4gIGNvbnN0IHtkb21haW59ID0gZmlsdGVyO1xuICBpZiAoIWZpbHRlci5kYXRhSWQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBmaWx0ZXIuZGF0YUlkLnJlZHVjZSgoYWNjLCBkYXRhSWQsIGRhdGFzZXRJZHgpID0+IHtcbiAgICBpZiAoZmlsdGVyLmJpbnM/LltkYXRhSWRdKSB7XG4gICAgICAvLyBkb24ndCByZWNhbGN1bGF0ZSBiaW5zXG4gICAgICBhY2NbZGF0YUlkXSA9IGZpbHRlci5iaW5zW2RhdGFJZF07XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZE5hbWUgPSBmaWx0ZXIubmFtZVtkYXRhc2V0SWR4XTtcbiAgICBpZiAoZGF0YUlkICYmIGZpZWxkTmFtZSkge1xuICAgICAgY29uc3QgZGF0YXNldCA9IGRhdGFzZXRzW2RhdGFJZF07XG4gICAgICBjb25zdCBmaWVsZCA9IGRhdGFzZXQ/LmdldENvbHVtbkZpZWxkKGZpZWxkTmFtZSk7XG4gICAgICBpZiAoZGF0YXNldCAmJiBmaWVsZCkge1xuICAgICAgICBjb25zdCBpbmRleGVzID0gcnVuR3B1RmlsdGVyRm9yUGxvdChkYXRhc2V0LCBmaWx0ZXIpO1xuICAgICAgICBjb25zdCB2YWx1ZUFjY2Vzc29yID0gaW5kZXggPT4gZmllbGQudmFsdWVBY2Nlc3Nvcih7aW5kZXh9KTtcbiAgICAgICAgYWNjW2RhdGFJZF0gPSBoaXN0b2dyYW1Gcm9tRG9tYWluKGRvbWFpbiwgaW5kZXhlcywgbnVtQmlucywgdmFsdWVBY2Nlc3Nvcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVJhbmdlRmlsdGVyUGxvdFR5cGUoXG4gIGZpbHRlcjogUmFuZ2VGaWx0ZXIsXG4gIHBsb3RUeXBlOiBSYW5nZUZpbHRlclsncGxvdFR5cGUnXSxcbiAgZGF0YXNldHM6IERhdGFzZXRzLFxuICBfZGF0YUlkPzogc3RyaW5nXG4pOiBSYW5nZUZpbHRlciB7XG4gIGNvbnN0IG5leHRGaWx0ZXIgPSB7XG4gICAgLi4uZmlsdGVyLFxuICAgIHBsb3RUeXBlXG4gIH07XG5cbiAgLy8gaWYgKGRhdGFJZCkge1xuICAvLyAgIC8vIGNsZWFyIGJpbnNcbiAgLy8gICBuZXh0RmlsdGVyID0ge1xuICAvLyAgICAgLi4ubmV4dEZpbHRlcixcbiAgLy8gICAgIGJpbnM6IHtcbiAgLy8gICAgICAgLi4ubmV4dEZpbHRlci5iaW5zLFxuICAvLyAgICAgICBbZGF0YUlkXTogbnVsbFxuICAvLyAgICAgfVxuICAvLyAgIH07XG4gIC8vIH1cblxuICByZXR1cm4ge1xuICAgIC4uLmZpbHRlcixcbiAgICBwbG90VHlwZSxcbiAgICBiaW5zOiBnZXRSYW5nZUZpbHRlckJpbnMobmV4dEZpbHRlciwgZGF0YXNldHMsIEJJTlMpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFydFRpdGxlKHlBeGlzOiBGaWVsZCwgcGxvdFR5cGU6IFBsb3RUeXBlKTogc3RyaW5nIHtcbiAgY29uc3QgeUF4aXNOYW1lID0geUF4aXM/LmRpc3BsYXlOYW1lO1xuICBjb25zdCB7YWdncmVnYXRpb259ID0gcGxvdFR5cGU7XG5cbiAgaWYgKHlBeGlzTmFtZSkge1xuICAgIHJldHVybiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIoYCR7YWdncmVnYXRpb259ICR7eUF4aXNOYW1lfSBvdmVyIFRpbWVgKTtcbiAgfVxuXG4gIHJldHVybiBgQ291bnQgb2YgUm93cyBvdmVyIFRpbWVgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFBsb3RUeXBlKGZpbHRlciwgZGF0YXNldHMpIHtcbiAgY29uc3QgaW50ZXJ2YWwgPSBnZXRJbml0aWFsSW50ZXJ2YWwoZmlsdGVyLCBkYXRhc2V0cyk7XG4gIGNvbnN0IGRlZmF1bHRUaW1lRm9ybWF0ID0gZ2V0RGVmYXVsdFRpbWVGb3JtYXQoaW50ZXJ2YWwpO1xuICByZXR1cm4ge1xuICAgIGludGVydmFsLFxuICAgIGRlZmF1bHRUaW1lRm9ybWF0LFxuICAgIHR5cGU6IFBMT1RfVFlQRVMuaGlzdG9ncmFtLFxuICAgIGFnZ3JlZ2F0aW9uOiBBR0dSRUdBVElPTl9UWVBFUy5zdW1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFFBQUEsR0FBQUMs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QyxHQUFHTixtQkFBbUIsQ0FBQ2IsTUFBTSxFQUFFSyxPQUFPLEVBQUVLLE9BQU8sRUFBRWYsYUFBYSxDQUFDO01BQzVFO0lBQ0Y7SUFDQSxPQUFPdUwsR0FBRztFQUNaLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNSO0FBRU8sU0FBU0sseUJBQXlCQSxDQUN2QzNNLE1BQW1CLEVBQ25COEksUUFBaUMsRUFDakMxRyxRQUFrQixFQUNsQjBKLE9BQWdCLEVBQ0g7RUFDYixJQUFNQyxVQUFVLEdBQUExTCxhQUFBLENBQUFBLGFBQUEsS0FDWEwsTUFBTTtJQUNUOEksUUFBUSxFQUFSQTtFQUFRLEVBQ1Q7O0VBRUQ7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUEsT0FBQXpJLGFBQUEsQ0FBQUEsYUFBQSxLQUNLTCxNQUFNO0lBQ1Q4SSxRQUFRLEVBQVJBLFFBQVE7SUFDUnpILElBQUksRUFBRWdMLGtCQUFrQixDQUFDTixVQUFVLEVBQUUzSixRQUFRLEVBQUV3SyxlQUFJO0VBQUM7QUFFeEQ7QUFFTyxTQUFTQyxhQUFhQSxDQUFDaEUsS0FBWSxFQUFFQyxRQUFrQixFQUFVO0VBQ3RFLElBQU1nRSxTQUFTLEdBQUdqRSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWtFLFdBQVc7RUFDcEMsSUFBT2xHLFdBQVcsR0FBSWlDLFFBQVEsQ0FBdkJqQyxXQUFXO0VBRWxCLElBQUlpRyxTQUFTLEVBQUU7SUFDYixPQUFPLElBQUFFLDhCQUFxQixLQUFBakQsTUFBQSxDQUFJbEQsV0FBVyxPQUFBa0QsTUFBQSxDQUFJK0MsU0FBUyxlQUFZLENBQUM7RUFDdkU7RUFFQTtBQUNGO0FBRU8sU0FBU1osa0JBQWtCQSxDQUFDbE0sTUFBTSxFQUFFb0MsUUFBUSxFQUFFO0VBQ25ELElBQU1DLFFBQVEsR0FBRyxJQUFBd0ksd0JBQWtCLEVBQUM3SyxNQUFNLEVBQUVvQyxRQUFRLENBQUM7RUFDckQsSUFBTTZLLGlCQUFpQixHQUFHLElBQUFDLDRCQUFvQixFQUFDN0ssUUFBUSxDQUFDO0VBQ3hELE9BQU87SUFDTEEsUUFBUSxFQUFSQSxRQUFRO0lBQ1I0SyxpQkFBaUIsRUFBakJBLGlCQUFpQjtJQUNqQmhELElBQUksRUFBRWtDLHFCQUFVLENBQUNDLFNBQVM7SUFDMUJ2RixXQUFXLEVBQUVDLDRCQUFpQixDQUFDa0I7RUFDakMsQ0FBQztBQUNIIiwiaWdub3JlTGlzdCI6W119
637
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfaXNFcXVhbCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdGltZSIsIl9tb21lbnQiLCJfY29tbW9uVXRpbHMiLCJfY29uc3RhbnRzIiwiX2RhdGFVdGlscyIsIl9hZ2dyZWdhdGlvbiIsIl9zdHJpbmdzIiwiX2Zvcm1hdCIsIl9jb2xvclV0aWxzIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJvd25LZXlzIiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiaGlzdG9ncmFtRnJvbVRocmVzaG9sZCIsInRocmVzaG9sZHMiLCJ2YWx1ZXMiLCJ2YWx1ZUFjY2Vzc29yIiwiZmlsdGVyRW1wdHlCaW5zIiwidW5kZWZpbmVkIiwiZ2V0QmlucyIsImQzSGlzdG9ncmFtIiwiZG9tYWluIiwiYmlucyIsIm1hcCIsImJpbiIsImNvdW50IiwiaW5kZXhlcyIsIngwIiwieDEiLCJiIiwiaGlzdG9ncmFtRnJvbVZhbHVlcyIsIm51bUJpbnMiLCJpc051bWJlciIsImhpc3RvZ3JhbUZyb21PcmRpbmFsIiwiaGlzdG9ncmFtRnJvbURvbWFpbiIsInRpY2tzIiwiZ2V0VGltZUJpbnMiLCJkYXRhc2V0cyIsImludGVydmFsIiwidGltZUJpbnMiLCJkYXRhSWQiLCJkYXRhc2V0IiwicnVuR3B1RmlsdGVyRm9yUGxvdCIsImJpbkJ5VGltZSIsIm1hcHBlZFZhbHVlIiwiZ2V0RmlsdGVyTWFwcGVkVmFsdWUiLCJpbnRlcnZhbEJpbnMiLCJnZXRCaW5UaHJlc2hvbGRzIiwiaWR4IiwidGltZUludGVydmFsIiwiaW50ZXJ2YWxUb0Z1bmN0aW9uIiwiX2RvbWFpbiIsIl9zbGljZWRUb0FycmF5MiIsInQwIiwidDEiLCJmbG9vciIsImdldFRpbWUiLCJjZWlsaW5nIiwiY2VpbCIsImR1cmF0aW9uRGF5IiwiYmluVGhyZXNob2xkcyIsInJhbmdlIiwibW9tZW50IiwidXRjIiwidmFsdWVPZiIsImxhc3RTdGVwIiwib2Zmc2V0Iiwic2tpcEluZGV4ZXMiLCJnZXRTa2lwSW5kZXhlcyIsIl9kYXRhc2V0JGdwdUZpbHRlciIsImdwdUZpbHRlciIsImZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMiLCJmaWx0ZXJSYW5nZSIsImZpbHRlclZhbHVlQWNjZXNzb3IiLCJmaWx0ZXJlZEluZGV4IiwiZ2V0RmlsdGVyVmFsdWUiLCJkYXRhQ29udGFpbmVyIiwiYWxsQ2hhbm5lbHMiLCJfIiwiaSIsInNraXBBbGwiLCJpbmNsdWRlcyIsImZpbHRlckRhdGEiLCJnZXRGaWx0ZXJEYXRhRnVuYyIsImdwdUZpbHRlcnMiLCJ2YWx1ZUluZGV4IiwiZmluZEluZGV4IiwiaWQiLCJmaWx0ZXJDb2x1bW4iLCJyZWR1Y2UiLCJhY2N1IiwiaXRlbSIsInNraXBzIiwiaW5kZXgiLCJldmVyeSIsInZhbCIsInZhbGlkQmluIiwic25hcFRvTWFya3MiLCJtYXJrcyIsImJpc2VjdExlZnQiLCJub3JtYWxpemVWYWx1ZSIsIm1pblZhbHVlIiwic3RlcCIsInJvdW5kVmFsVG9TdGVwIiwiaXNQZXJjZW50RmllbGQiLCJmaWVsZCIsIm1ldGFkYXRhIiwibnVtZXJhdG9yIiwiZGVub21pbmF0b3IiLCJ1cGRhdGVBZ2dyZWdhdGlvbkJ5RmllbGQiLCJhZ2dyZWdhdGlvbiIsIkFHR1JFR0FUSU9OX1RZUEVTIiwiYXZlcmFnZSIsImdldEFncmVnYXRpb25UeXBlIiwiZ2V0QWdncmVnYXRpb25BY2Nlc3NvciIsImZpZWxkcyIsIm51bWVyYXRvcklkeCIsImRlbm9taW5hdG9ySWR4IiwiZ2V0TnVtZXJhdG9yIiwidmFsdWVBdCIsImdldERlbm9taW5hdG9yIiwiZ2V0VmFsdWVBZ2dyRnVuYyIsImV4cG9ydHMiLCJkYXRhc2V0RmllbGQiLCJmaW5kIiwiYWdncmVnYXRlIiwiZ2V0QWdncmVnYXRpb25PcHRpb3NuQmFzZWRPbkZpZWxkIiwiVElNRV9BR0dSRUdBVElPTiIsIl9yZWYiLCJzdW0iLCJnZXREZWx0YSIsInkiLCJfaW50ZXJ2YWwiLCJsYXN0QmluIiwiZGVsdGEiLCJwY3QiLCJnZXRQY3RDaGFuZ2UiLCJ5MCIsIk51bWJlciIsImlzRmluaXRlIiwiZ2V0TGluZUNoYXJ0IiwiX3RpbWVCaW5zIiwieUF4aXMiLCJwbG90VHlwZSIsImxpbmVDaGFydCIsInNlcmllc0RhdGFJZCIsImlzRXF1YWwiLCJnZXRZVmFsdWUiLCJpbml0Iiwic2VyaWVzIiwieCIsInlEb21haW4iLCJleHRlbnQiLCJkIiwieERvbWFpbiIsInNwbGl0Iiwic3BsaXRTZXJpZXMiLCJhZ2dyTmFtZSIsIkFHR1JFR0FUSU9OX05BTUUiLCJ0aXRsZSIsImNvbmNhdCIsImZpZWxkVHlwZSIsInR5cGUiLCJhbGxUaW1lIiwibGluZXMiLCJ0ZW1wIiwibm90TnVsbG9yVW5kZWZpbmVkIiwibWFya2VycyIsImFkanVzdFZhbHVlVG9BbmltYXRpb25XaW5kb3ciLCJzdGF0ZSIsIl9maWx0ZXIkdmFsdWUiLCJ2YWx1ZTAiLCJ2YWx1ZTEiLCJhbmltYXRpb25XaW5kb3ciLCJnZXRJbml0aWFsSW50ZXJ2YWwiLCJkYXRhc2V0QmlucyIsInZhbDAiLCJ2YWwxIiwiQU5JTUFUSU9OX1dJTkRPVyIsImluZGV4T2YiLCJOYU4iLCJ1cGRhdGVkRmlsdGVyIiwiZ2V0RmlsdGVyUGxvdENvbG9yc0J5RGF0YUlkIiwib2xkQ29sb3JzQnlEYXRhSWQiLCJjb2xvcnNCeURhdGFJZCIsIl9pdGVyYXRvciIsIl9zdGVwIiwicmdiVG9IZXgiLCJjb2xvciIsImVyciIsInVwZGF0ZVRpbWVGaWx0ZXJQbG90VHlwZSIsIl9kYXRhSWQiLCJuZXh0RmlsdGVyIiwibmV4dFBsb3RUeXBlIiwiX3R5cGVvZjIiLCJnZXREZWZhdWx0UGxvdFR5cGUiLCJQTE9UX1RZUEVTIiwiaGlzdG9ncmFtIiwiZ2V0UmFuZ2VGaWx0ZXJCaW5zIiwiYWNjIiwiZGF0YXNldElkeCIsIl9maWx0ZXIkYmlucyIsImZpZWxkTmFtZSIsImdldENvbHVtbkZpZWxkIiwidXBkYXRlUmFuZ2VGaWx0ZXJQbG90VHlwZSIsIkJJTlMiLCJnZXRDaGFydFRpdGxlIiwieUF4aXNOYW1lIiwiZGlzcGxheU5hbWUiLCJjYXBpdGFsaXplRmlyc3RMZXR0ZXIiLCJkZWZhdWx0VGltZUZvcm1hdCIsImdldERlZmF1bHRUaW1lRm9ybWF0Il0sInNvdXJjZXMiOlsiLi4vc3JjL3Bsb3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtiaXNlY3RMZWZ0LCBleHRlbnQsIGhpc3RvZ3JhbSBhcyBkM0hpc3RvZ3JhbSwgdGlja3N9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcbmltcG9ydCB7Z2V0RmlsdGVyTWFwcGVkVmFsdWUsIGdldEluaXRpYWxJbnRlcnZhbCwgaW50ZXJ2YWxUb0Z1bmN0aW9ufSBmcm9tICcuL3RpbWUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtcbiAgQmluLFxuICBUaW1lQmlucyxcbiAgTWlsbGlzZWNvbmQsXG4gIFRpbWVSYW5nZUZpbHRlcixcbiAgUmFuZ2VGaWx0ZXIsXG4gIFBsb3RUeXBlLFxuICBGaWx0ZXIsXG4gIExpbmVDaGFydCxcbiAgRmllbGQsXG4gIFZhbHVlT2YsXG4gIExpbmVEYXR1bVxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7bm90TnVsbG9yVW5kZWZpbmVkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge1xuICBBTklNQVRJT05fV0lORE9XLFxuICBCSU5TLFxuICBkdXJhdGlvbkRheSxcbiAgVElNRV9BR0dSRUdBVElPTixcbiAgQUdHUkVHQVRJT05fVFlQRVMsXG4gIFBMT1RfVFlQRVMsXG4gIEFnZ3JlZ2F0aW9uVHlwZXNcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5pbXBvcnQge2lzTnVtYmVyLCByb3VuZFZhbFRvU3RlcH0gZnJvbSAnLi9kYXRhLXV0aWxzJztcbmltcG9ydCB7YWdncmVnYXRlLCBBR0dSRUdBVElPTl9OQU1FfSBmcm9tICcuL2FnZ3JlZ2F0aW9uJztcbmltcG9ydCB7Y2FwaXRhbGl6ZUZpcnN0TGV0dGVyfSBmcm9tICcuL3N0cmluZ3MnO1xuaW1wb3J0IHtnZXREZWZhdWx0VGltZUZvcm1hdH0gZnJvbSAnLi9mb3JtYXQnO1xuaW1wb3J0IHtyZ2JUb0hleH0gZnJvbSAnLi9jb2xvci11dGlscyc7XG5pbXBvcnQge0RhdGFDb250YWluZXJJbnRlcmZhY2V9IGZyb20gJy4nO1xuaW1wb3J0IHtLZXBsZXJUYWJsZU1vZGVsfSBmcm9tICcuL3R5cGVzJztcblxuLy8gVE9ETyBrZXBsZXItdGFibGUgbW9kdWxlIGlzbid0IGFjY2Vzc2libGUgZnJvbSB1dGlscy4gQWRkIGNvbXBhdGlibGUgaW50ZXJmYWNlIHRvIHR5cGVzXG50eXBlIERhdGFzZXRzID0gYW55O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0gdGhyZXNob2xkc1xuICogQHBhcmFtIHZhbHVlc1xuICogQHBhcmFtIGluZGV4ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhpc3RvZ3JhbUZyb21UaHJlc2hvbGQoXG4gIHRocmVzaG9sZHM6IG51bWJlcltdLFxuICB2YWx1ZXM6IG51bWJlcltdLFxuICB2YWx1ZUFjY2Vzc29yPzogKGQ6IHVua25vd24pID0+IG51bWJlcixcbiAgZmlsdGVyRW1wdHlCaW5zID0gdHJ1ZVxuKTogQmluW10ge1xuICBjb25zdCBnZXRCaW5zID0gZDNIaXN0b2dyYW0oKVxuICAgIC5kb21haW4oW3RocmVzaG9sZHNbMF0sIHRocmVzaG9sZHNbdGhyZXNob2xkcy5sZW5ndGggLSAxXV0pXG4gICAgLnRocmVzaG9sZHModGhyZXNob2xkcyk7XG5cbiAgaWYgKHZhbHVlQWNjZXNzb3IpIHtcbiAgICBnZXRCaW5zLnZhbHVlKHZhbHVlQWNjZXNzb3IpO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBiaW5zID0gZ2V0Qmlucyh2YWx1ZXMpLm1hcChiaW4gPT4gKHtcbiAgICBjb3VudDogYmluLmxlbmd0aCxcbiAgICBpbmRleGVzOiBiaW4sXG4gICAgeDA6IGJpbi54MCxcbiAgICB4MTogYmluLngxXG4gIH0pKTtcblxuICAvLyBkMy1oaXN0b2dyYW0gaWdub3JlcyB0aHJlc2hvbGQgdmFsdWVzIG91dHNpZGUgdGhlIGRvbWFpblxuICAvLyBUaGUgZmlyc3QgYmluLngwIGlzIGFsd2F5cyBlcXVhbCB0byB0aGUgbWluaW11bSBkb21haW4gdmFsdWUsIGFuZCB0aGUgbGFzdCBiaW4ueDEgaXMgYWx3YXlzIGVxdWFsIHRvIHRoZSBtYXhpbXVtIGRvbWFpbiB2YWx1ZS5cblxuICAvLyBiaW5zWzBdLngwID0gdGhyZXNob2xkc1swXTtcbiAgLy8gYmluc1tiaW5zLmxlbmd0aCAtIDFdLngxID0gdGhyZXNob2xkc1t0aHJlc2hvbGRzLmxlbmd0aCAtIDFdO1xuXG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIGZpbHRlckVtcHR5QmlucyA/IGJpbnMuZmlsdGVyKGIgPT4gYi5jb3VudCA+IDApIDogYmlucztcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIHZhbHVlc1xuICogQHBhcmFtIG51bUJpbnNcbiAqIEBwYXJhbSB2YWx1ZUFjY2Vzc29yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoaXN0b2dyYW1Gcm9tVmFsdWVzKFxuICB2YWx1ZXM6IChNaWxsaXNlY29uZCB8IG51bGwgfCBudW1iZXIpW10sXG4gIG51bUJpbnM6IG51bWJlcixcbiAgdmFsdWVBY2Nlc3Nvcj86IChkOiBudW1iZXIpID0+IG51bWJlclxuKSB7XG4gIGNvbnN0IGdldEJpbnMgPSBkM0hpc3RvZ3JhbSgpLnRocmVzaG9sZHMobnVtQmlucyk7XG5cbiAgaWYgKHZhbHVlQWNjZXNzb3IpIHtcbiAgICBnZXRCaW5zLnZhbHVlKHZhbHVlQWNjZXNzb3IpO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZSBkMy1hcnJheSB0eXBlcyBkb2Vzbid0IG1hdGNoXG4gIHJldHVybiBnZXRCaW5zKHZhbHVlcylcbiAgICAubWFwKGJpbiA9PiAoe1xuICAgICAgY291bnQ6IGJpbi5sZW5ndGgsXG4gICAgICBpbmRleGVzOiBiaW4sXG4gICAgICB4MDogYmluLngwLFxuICAgICAgeDE6IGJpbi54MVxuICAgIH0pKVxuICAgIC5maWx0ZXIoYiA9PiB7XG4gICAgICBjb25zdCB7eDAsIHgxfSA9IGI7XG4gICAgICByZXR1cm4gaXNOdW1iZXIoeDApICYmIGlzTnVtYmVyKHgxKTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhpc3RvZ3JhbUZyb21PcmRpbmFsKFxuICBkb21haW46IFtzdHJpbmddLFxuICB2YWx1ZXM6IChNaWxsaXNlY29uZCB8IG51bGwgfCBudW1iZXIpW10sXG4gIHZhbHVlQWNjZXNzb3I/OiAoZDogdW5rbm93bikgPT4gc3RyaW5nXG4pOiBCaW5bXSB7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgdG8gdHlwZWQgdG8gZXhwZWN0IHN0cmluZ3NcbiAgY29uc3QgZ2V0QmlucyA9IGQzSGlzdG9ncmFtKCkudGhyZXNob2xkcyhkb21haW4pO1xuICBpZiAodmFsdWVBY2Nlc3Nvcikge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgdG8gdHlwZWQgdG8gZXhwZWN0IHN0cmluZ3NcbiAgICBnZXRCaW5zLnZhbHVlKHZhbHVlQWNjZXNzb3IpO1xuICB9XG5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBudWxsIHZhbHVlcyBhcmVuJ3QgZXhwZWN0ZWRcbiAgY29uc3QgYmlucyA9IGdldEJpbnModmFsdWVzKTtcblxuICAvLyBAdHMtaWdub3JlIGQzLWFycmF5IHR5cGVzIGRvZXNuJ3QgbWF0Y2hcbiAgcmV0dXJuIGJpbnMubWFwKGJpbiA9PiAoe1xuICAgIGNvdW50OiBiaW4ubGVuZ3RoLFxuICAgIGluZGV4ZXM6IGJpbixcbiAgICB4MDogYmluLngwLFxuICAgIHgxOiBiaW4ueDBcbiAgfSkpO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gZG9tYWluXG4gKiBAcGFyYW0gdmFsdWVzXG4gKiBAcGFyYW0gbnVtQmluc1xuICogQHBhcmFtIHZhbHVlQWNjZXNzb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhpc3RvZ3JhbUZyb21Eb21haW4oXG4gIGRvbWFpbjogW251bWJlciwgbnVtYmVyXSxcbiAgdmFsdWVzOiAoTWlsbGlzZWNvbmQgfCBudWxsIHwgbnVtYmVyKVtdLFxuICBudW1CaW5zOiBudW1iZXIsXG4gIHZhbHVlQWNjZXNzb3I/OiAoZDogdW5rbm93bikgPT4gbnVtYmVyXG4pOiBCaW5bXSB7XG4gIGNvbnN0IGdldEJpbnMgPSBkM0hpc3RvZ3JhbSgpLnRocmVzaG9sZHModGlja3MoZG9tYWluWzBdLCBkb21haW5bMV0sIG51bUJpbnMpKS5kb21haW4oZG9tYWluKTtcbiAgaWYgKHZhbHVlQWNjZXNzb3IpIHtcbiAgICBnZXRCaW5zLnZhbHVlKHZhbHVlQWNjZXNzb3IpO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZSBkMy1hcnJheSB0eXBlcyBkb2Vzbid0IG1hdGNoXG4gIHJldHVybiBnZXRCaW5zKHZhbHVlcykubWFwKGJpbiA9PiAoe1xuICAgIGNvdW50OiBiaW4ubGVuZ3RoLFxuICAgIGluZGV4ZXM6IGJpbixcbiAgICB4MDogYmluLngwLFxuICAgIHgxOiBiaW4ueDFcbiAgfSkpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBmaWx0ZXJcbiAqIEBwYXJhbSBkYXRhc2V0c1xuICogQHBhcmFtIGludGVydmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lQmlucyhcbiAgZmlsdGVyOiBUaW1lUmFuZ2VGaWx0ZXIsXG4gIGRhdGFzZXRzOiBEYXRhc2V0cyxcbiAgaW50ZXJ2YWw6IFBsb3RUeXBlWydpbnRlcnZhbCddXG4pOiBUaW1lQmlucyB7XG4gIGxldCBiaW5zID0gZmlsdGVyLnRpbWVCaW5zIHx8IHt9O1xuXG4gIGZpbHRlci5kYXRhSWQuZm9yRWFjaChkYXRhSWQgPT4ge1xuICAgIC8vIHJldXNlIGJpbnMgaWYgZmlsdGVyRGF0YSBkaWQgbm90IGNoYW5nZVxuICAgIGlmIChiaW5zW2RhdGFJZF0gJiYgYmluc1tkYXRhSWRdW2ludGVydmFsXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkYXRhc2V0ID0gZGF0YXNldHNbZGF0YUlkXTtcblxuICAgIC8vIGRvIG5vdCBhcHBseSBjdXJyZW50IGZpbHRlclxuICAgIGNvbnN0IGluZGV4ZXMgPSBydW5HcHVGaWx0ZXJGb3JQbG90KGRhdGFzZXQsIGZpbHRlcik7XG5cbiAgICBiaW5zID0ge1xuICAgICAgLi4uYmlucyxcbiAgICAgIFtkYXRhSWRdOiB7XG4gICAgICAgIC4uLmJpbnNbZGF0YUlkXSxcbiAgICAgICAgW2ludGVydmFsXTogYmluQnlUaW1lKGluZGV4ZXMsIGRhdGFzZXQsIGludGVydmFsLCBmaWx0ZXIpXG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG5cbiAgcmV0dXJuIGJpbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaW5CeVRpbWUoaW5kZXhlcywgZGF0YXNldCwgaW50ZXJ2YWwsIGZpbHRlcikge1xuICAvLyBncHVGaWx0ZXJzIG5lZWQgdG8gYmUgYXBwbHkgdG8gZmlsdGVyZWRJbmRleFxuICBjb25zdCBtYXBwZWRWYWx1ZSA9IGdldEZpbHRlck1hcHBlZFZhbHVlKGRhdGFzZXQsIGZpbHRlcik7XG4gIGlmICghbWFwcGVkVmFsdWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBpbnRlcnZhbEJpbnMgPSBnZXRCaW5UaHJlc2hvbGRzKGludGVydmFsLCBmaWx0ZXIuZG9tYWluKTtcbiAgY29uc3QgdmFsdWVBY2Nlc3NvciA9IGlkeCA9PiBtYXBwZWRWYWx1ZVtpZHhdO1xuICBjb25zdCBiaW5zID0gaGlzdG9ncmFtRnJvbVRocmVzaG9sZChpbnRlcnZhbEJpbnMsIGluZGV4ZXMsIHZhbHVlQWNjZXNzb3IpO1xuXG4gIHJldHVybiBiaW5zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmluVGhyZXNob2xkcyhpbnRlcnZhbDogc3RyaW5nLCBkb21haW46IG51bWJlcltdKTogbnVtYmVyW10ge1xuICBjb25zdCB0aW1lSW50ZXJ2YWwgPSBpbnRlcnZhbFRvRnVuY3Rpb24oaW50ZXJ2YWwpO1xuICBjb25zdCBbdDAsIHQxXSA9IGRvbWFpbjtcbiAgY29uc3QgZmxvb3IgPSB0aW1lSW50ZXJ2YWwuZmxvb3IodDApLmdldFRpbWUoKTtcbiAgY29uc3QgY2VpbGluZyA9IHRpbWVJbnRlcnZhbC5jZWlsKHQxKS5nZXRUaW1lKCk7XG5cbiAgaWYgKCF0aW1lSW50ZXJ2YWwpIHtcbiAgICAvLyBpZiB0aW1lIGludGVydmFsIGlzIG5vdCBkZWZpbmVkXG4gICAgLy8gdGhpcyBzaG91bGQgbm90IGhhcHBlblxuICAgIHJldHVybiBbdDAsIHQwICsgZHVyYXRpb25EYXldO1xuICB9XG4gIGNvbnN0IGJpblRocmVzaG9sZHMgPSB0aW1lSW50ZXJ2YWwucmFuZ2UoZmxvb3IsIGNlaWxpbmcgKyAxKS5tYXAodCA9PiBtb21lbnQudXRjKHQpLnZhbHVlT2YoKSk7XG4gIGNvbnN0IGxhc3RTdGVwID0gYmluVGhyZXNob2xkc1tiaW5UaHJlc2hvbGRzLmxlbmd0aCAtIDFdO1xuICBpZiAobGFzdFN0ZXAgPT09IHQxKSB7XG4gICAgLy8gd2hlbiBsYXN0IHN0ZXAgZXF1YWwgdG8gZG9tYWluIG1heCwgYWRkIG9uZSBtb3JlIHN0ZXBcbiAgICBiaW5UaHJlc2hvbGRzLnB1c2gobW9tZW50LnV0Yyh0aW1lSW50ZXJ2YWwub2Zmc2V0KGxhc3RTdGVwKSkudmFsdWVPZigpKTtcbiAgfVxuXG4gIHJldHVybiBiaW5UaHJlc2hvbGRzO1xufVxuXG4vKipcbiAqIFJ1biBHUFUgZmlsdGVyIG9uIGN1cnJlbnQgZmlsdGVyIHJlc3VsdCB0byBnZW5lcmF0ZSBpbmRleGVzIGZvciBwbG90aW5nIGNoYXJ0XG4gKiBTa2lwIHJ1dW5pbmcgZm9yIHRoZSBzYW1lIGZpZWxkXG4gKiBAcGFyYW0gZGF0YXNldFxuICogQHBhcmFtIGZpbHRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuR3B1RmlsdGVyRm9yUGxvdDxLIGV4dGVuZHMgS2VwbGVyVGFibGVNb2RlbDxLLCBMPiwgTD4oXG4gIGRhdGFzZXQ6IEssXG4gIGZpbHRlcj86IEZpbHRlclxuKTogbnVtYmVyW10ge1xuICBjb25zdCBza2lwSW5kZXhlcyA9IGdldFNraXBJbmRleGVzKGRhdGFzZXQsIGZpbHRlcik7XG5cbiAgY29uc3Qge1xuICAgIGdwdUZpbHRlcjoge2ZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMsIGZpbHRlclJhbmdlLCBmaWx0ZXJWYWx1ZUFjY2Vzc29yfSxcbiAgICBmaWx0ZXJlZEluZGV4XG4gIH0gPSBkYXRhc2V0O1xuICBjb25zdCBnZXRGaWx0ZXJWYWx1ZSA9IGZpbHRlclZhbHVlQWNjZXNzb3IoZGF0YXNldC5kYXRhQ29udGFpbmVyKSgpO1xuXG4gIGNvbnN0IGFsbENoYW5uZWxzID0gT2JqZWN0LmtleXMoZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycylcbiAgICAubWFwKChfLCBpKSA9PiBpKVxuICAgIC5maWx0ZXIoaSA9PiBPYmplY3QudmFsdWVzKGZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMpW2ldKTtcbiAgY29uc3Qgc2tpcEFsbCA9ICFhbGxDaGFubmVscy5maWx0ZXIoaSA9PiAhc2tpcEluZGV4ZXMuaW5jbHVkZXMoaSkpLmxlbmd0aDtcbiAgaWYgKHNraXBBbGwpIHtcbiAgICByZXR1cm4gZmlsdGVyZWRJbmRleDtcbiAgfVxuXG4gIGNvbnN0IGZpbHRlckRhdGEgPSBnZXRGaWx0ZXJEYXRhRnVuYyhcbiAgICBmaWx0ZXJSYW5nZSxcbiAgICBnZXRGaWx0ZXJWYWx1ZSxcbiAgICBkYXRhc2V0LmRhdGFDb250YWluZXIsXG4gICAgc2tpcEluZGV4ZXNcbiAgKTtcblxuICByZXR1cm4gZmlsdGVyZWRJbmRleC5maWx0ZXIoZmlsdGVyRGF0YSk7XG59XG5cbmZ1bmN0aW9uIGdldFNraXBJbmRleGVzKGRhdGFzZXQsIGZpbHRlcikge1xuICAvLyBhcnJheSBvZiBncHUgZmlsdGVyIG5hbWVzXG4gIGlmICghZmlsdGVyKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IGdwdUZpbHRlcnMgPSBPYmplY3QudmFsdWVzKGRhdGFzZXQuZ3B1RmlsdGVyLmZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMpIGFzICh7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9IHwgbnVsbClbXTtcbiAgY29uc3QgdmFsdWVJbmRleCA9IGZpbHRlci5kYXRhSWQuZmluZEluZGV4KGlkID0+IGlkID09PSBkYXRhc2V0LmlkKTtcbiAgY29uc3QgZmlsdGVyQ29sdW1uID0gZmlsdGVyLm5hbWVbdmFsdWVJbmRleF07XG5cbiAgcmV0dXJuIGdwdUZpbHRlcnMucmVkdWNlKChhY2N1LCBpdGVtLCBpZHgpID0+IHtcbiAgICBpZiAoaXRlbSAmJiBmaWx0ZXJDb2x1bW4gPT09IGl0ZW0ubmFtZSkge1xuICAgICAgYWNjdS5wdXNoKGlkeCk7XG4gICAgfVxuICAgIHJldHVybiBhY2N1O1xuICB9LCBbXSBhcyBudW1iZXJbXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWx0ZXJEYXRhRnVuYyhcbiAgZmlsdGVyUmFuZ2UsXG4gIGdldEZpbHRlclZhbHVlLFxuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICBza2lwc1xuKSB7XG4gIHJldHVybiBpbmRleCA9PlxuICAgIGdldEZpbHRlclZhbHVlKHtpbmRleH0pLmV2ZXJ5KFxuICAgICAgKHZhbCwgaSkgPT4gc2tpcHMuaW5jbHVkZXMoaSkgfHwgKHZhbCA+PSBmaWx0ZXJSYW5nZVtpXVswXSAmJiB2YWwgPD0gZmlsdGVyUmFuZ2VbaV1bMV0pXG4gICAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkQmluKGIpIHtcbiAgcmV0dXJuIGIueDAgIT09IHVuZGVmaW5lZCAmJiBiLngxICE9PSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVXNlIGluIHNsaWRlciwgZ2l2ZW4gYSBudW1iZXIgYW5kIGFuIGFycmF5IG9mIG51bWJlcnMsIHJldHVybiB0aGUgbmVhcnMgbnVtYmVyIGZyb20gdGhlIGFycmF5LlxuICogVGFrZXMgYSB2YWx1ZSwgdGltZXN0ZXBzIGFuZCByZXR1cm4gdGhlIGFjdHVhbCBzdGVwLlxuICogQHBhcmFtIHZhbHVlXG4gKiBAcGFyYW0gbWFya3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNuYXBUb01hcmtzKHZhbHVlOiBudW1iZXIsIG1hcmtzOiBudW1iZXJbXSk6IG51bWJlciB7XG4gIC8vIGFsd2F5cyB1c2UgYmluIHgwXG4gIGlmICghbWFya3MubGVuZ3RoKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBsb29raW5nIGF0IHRoZSB1c2FnZSBudWxsIHJldHVybiB2YWx1ZSBpc24ndCBleHBlY3RlZCBhbmQgcmVxdWlyZXMgZXh0cmEgaGFuZGxpbmcgaW4gYSBsb3Qgb2YgcGxhY2VzXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgaSA9IGJpc2VjdExlZnQobWFya3MsIHZhbHVlKTtcbiAgaWYgKGkgPT09IDApIHtcbiAgICByZXR1cm4gbWFya3NbaV07XG4gIH0gZWxzZSBpZiAoaSA9PT0gbWFya3MubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG1hcmtzW2kgLSAxXTtcbiAgfVxuICBjb25zdCBpZHggPSBtYXJrc1tpXSAtIHZhbHVlIDwgdmFsdWUgLSBtYXJrc1tpIC0gMV0gPyBpIDogaSAtIDE7XG4gIHJldHVybiBtYXJrc1tpZHhdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsLCBtaW5WYWx1ZSwgc3RlcCwgbWFya3MpIHtcbiAgaWYgKG1hcmtzICYmIG1hcmtzLmxlbmd0aCkge1xuICAgIHJldHVybiBzbmFwVG9NYXJrcyh2YWwsIG1hcmtzKTtcbiAgfVxuXG4gIHJldHVybiByb3VuZFZhbFRvU3RlcChtaW5WYWx1ZSwgc3RlcCwgdmFsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGVyY2VudEZpZWxkKGZpZWxkKSB7XG4gIHJldHVybiBmaWVsZC5tZXRhZGF0YSAmJiBmaWVsZC5tZXRhZGF0YS5udW1lcmF0b3IgJiYgZmllbGQubWV0YWRhdGEuZGVub21pbmF0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVBZ2dyZWdhdGlvbkJ5RmllbGQoZmllbGQ6IEZpZWxkLCBhZ2dyZWdhdGlvbjogVmFsdWVPZjxBZ2dyZWdhdGlvblR5cGVzPikge1xuICAvLyBzaG91bGRuJ3QgYXBwbHkgc3VtIHRvIHBlcmNlbnQgZmllbGUgdHlwZVxuICAvLyBkZWZhdWx0IGFnZ3JlZ2F0aW9uIGlzIGF2ZXJhZ2VcbiAgcmV0dXJuIGZpZWxkICYmIGlzUGVyY2VudEZpZWxkKGZpZWxkKVxuICAgID8gQUdHUkVHQVRJT05fVFlQRVMuYXZlcmFnZVxuICAgIDogYWdncmVnYXRpb24gfHwgQUdHUkVHQVRJT05fVFlQRVMuYXZlcmFnZTtcbn1cblxuY29uc3QgZ2V0QWdyZWdhdGlvblR5cGUgPSAoZmllbGQsIGFnZ3JlZ2F0aW9uKSA9PiB7XG4gIGlmIChpc1BlcmNlbnRGaWVsZChmaWVsZCkpIHtcbiAgICByZXR1cm4gJ21lYW5fb2ZfcGVyY2VudCc7XG4gIH1cbiAgcmV0dXJuIGFnZ3JlZ2F0aW9uO1xufTtcblxuY29uc3QgZ2V0QWdncmVnYXRpb25BY2Nlc3NvciA9IChmaWVsZCwgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSwgZmllbGRzKSA9PiB7XG4gIGlmIChpc1BlcmNlbnRGaWVsZChmaWVsZCkpIHtcbiAgICBjb25zdCBudW1lcmF0b3JJZHggPSBmaWVsZHMuZmluZEluZGV4KGYgPT4gZi5uYW1lID09PSBmaWVsZC5tZXRhZGF0YS5udW1lcmF0b3IpO1xuICAgIGNvbnN0IGRlbm9taW5hdG9ySWR4ID0gZmllbGRzLmZpbmRJbmRleChmID0+IGYubmFtZSA9PT0gZmllbGQubWV0YWRhdGEuZGVub21pbmF0b3IpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdldE51bWVyYXRvcjogaSA9PiBkYXRhQ29udGFpbmVyLnZhbHVlQXQoaSwgbnVtZXJhdG9ySWR4KSxcbiAgICAgIGdldERlbm9taW5hdG9yOiBpID0+IGRhdGFDb250YWluZXIudmFsdWVBdChpLCBkZW5vbWluYXRvcklkeClcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGkgPT4gZmllbGQudmFsdWVBY2Nlc3Nvcih7aW5kZXg6IGl9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRWYWx1ZUFnZ3JGdW5jID0gKFxuICBmaWVsZDogRmllbGQgfCBzdHJpbmcgfCBudWxsLFxuICBhZ2dyZWdhdGlvbjogc3RyaW5nLFxuICBkYXRhc2V0OiBLZXBsZXJUYWJsZU1vZGVsPGFueSwgYW55PlxuKTogKChiaW46IEJpbikgPT4gbnVtYmVyKSA9PiB7XG4gIGNvbnN0IHtkYXRhQ29udGFpbmVyLCBmaWVsZHN9ID0gZGF0YXNldDtcblxuICAvLyBUaGUgcGFzc2VkLWluIGZpZWxkIG1pZ2h0IG5vdCBoYXZlIGFsbCB0aGUgZmllbGRzIHNldCAoZS5nLiB2YWx1ZUFjY2Vzc29yKVxuICBjb25zdCBkYXRhc2V0RmllbGQgPSBmaWVsZHMuZmluZChcbiAgICBmID0+IGZpZWxkICYmIChmLm5hbWUgPT09IGZpZWxkIHx8IGYubmFtZSA9PT0gKGZpZWxkIGFzIEZpZWxkKS5uYW1lKVxuICApO1xuXG4gIHJldHVybiBkYXRhc2V0RmllbGQgJiYgYWdncmVnYXRpb25cbiAgICA/IGJpbiA9PlxuICAgICAgICBhZ2dyZWdhdGUoXG4gICAgICAgICAgYmluLmluZGV4ZXMsXG4gICAgICAgICAgZ2V0QWdyZWdhdGlvblR5cGUoZGF0YXNldEZpZWxkLCBhZ2dyZWdhdGlvbiksXG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBjYW4gcmV0dXJuIHtnZXROdW1lcmF0b3IsIGdldERlbm9taW5hdG9yfVxuICAgICAgICAgIGdldEFnZ3JlZ2F0aW9uQWNjZXNzb3IoZGF0YXNldEZpZWxkLCBkYXRhQ29udGFpbmVyLCBmaWVsZHMpXG4gICAgICAgIClcbiAgICA6IGJpbiA9PiBiaW4uY291bnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QWdncmVnYXRpb25PcHRpb3NuQmFzZWRPbkZpZWxkID0gZmllbGQgPT4ge1xuICBpZiAoaXNQZXJjZW50RmllbGQoZmllbGQpKSB7XG4gICAgLy8gZG9uJ3Qgc2hvdyBzdW1cbiAgICByZXR1cm4gVElNRV9BR0dSRUdBVElPTi5maWx0ZXIoKHtpZH0pID0+IGlkICE9PSBBR0dSRUdBVElPTl9UWVBFUy5zdW0pO1xuICB9XG4gIHJldHVybiBUSU1FX0FHR1JFR0FUSU9OO1xufTtcblxuZnVuY3Rpb24gZ2V0RGVsdGEoXG4gIGJpbnM6IExpbmVEYXR1bVtdLFxuICB5OiBudW1iZXIsXG4gIF9pbnRlcnZhbDogUGxvdFR5cGVbJ2ludGVydmFsJ11cbik6IFBhcnRpYWw8TGluZURhdHVtPiAmIHtkZWx0YTogJ2xhc3QnOyBwY3Q6IG51bWJlciB8IG51bGx9IHtcbiAgLy8gaWYgKFdPV1tpbnRlcnZhbF0pIHJldHVybiBnZXRXb3coYmlucywgeSwgaW50ZXJ2YWwpO1xuICBjb25zdCBsYXN0QmluID0gYmluc1tiaW5zLmxlbmd0aCAtIDFdO1xuXG4gIHJldHVybiB7XG4gICAgZGVsdGE6ICdsYXN0JyxcbiAgICBwY3Q6IGxhc3RCaW4gPyBnZXRQY3RDaGFuZ2UoeSwgbGFzdEJpbi55KSA6IG51bGxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBjdENoYW5nZSh5OiB1bmtub3duLCB5MDogdW5rbm93bik6IG51bWJlciB8IG51bGwge1xuICBpZiAoTnVtYmVyLmlzRmluaXRlKHkpICYmIE51bWJlci5pc0Zpbml0ZSh5MCkgJiYgeTAgIT09IDApIHtcbiAgICByZXR1cm4gKCh5IGFzIG51bWJlcikgLSAoeTAgYXMgbnVtYmVyKSkgLyAoeTAgYXMgbnVtYmVyKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIGRhdGFzZXRzXG4gKiBAcGFyYW0gZmlsdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5lQ2hhcnQoZGF0YXNldHM6IERhdGFzZXRzLCBmaWx0ZXI6IEZpbHRlcik6IExpbmVDaGFydCB7XG4gIGNvbnN0IHtkYXRhSWQsIHlBeGlzLCBwbG90VHlwZSwgbGluZUNoYXJ0fSA9IGZpbHRlcjtcbiAgY29uc3Qge2FnZ3JlZ2F0aW9uLCBpbnRlcnZhbH0gPSBwbG90VHlwZTtcbiAgY29uc3Qgc2VyaWVzRGF0YUlkID0gZGF0YUlkWzBdO1xuICBjb25zdCBiaW5zID0gKGZpbHRlciBhcyBUaW1lUmFuZ2VGaWx0ZXIpLnRpbWVCaW5zPy5bc2VyaWVzRGF0YUlkXT8uW2ludGVydmFsXTtcblxuICBpZiAoXG4gICAgbGluZUNoYXJ0ICYmXG4gICAgbGluZUNoYXJ0LmFnZ3JlZ2F0aW9uID09PSBhZ2dyZWdhdGlvbiAmJlxuICAgIGxpbmVDaGFydC5pbnRlcnZhbCA9PT0gaW50ZXJ2YWwgJiZcbiAgICBsaW5lQ2hhcnQueUF4aXMgPT09IHlBeGlzPy5uYW1lICYmXG4gICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdmFsaWRhdGUgYmlucyBiZWNhdXNlIG9mIGNyb3NzIGZpbHRlciBkYXRhIGNoYW5nZXNcbiAgICBpc0VxdWFsKGJpbnMsIGxpbmVDaGFydD8uYmlucylcbiAgKSB7XG4gICAgLy8gZG9uJ3QgdXBkYXRlIGxpbmVDaGFydCBpZiBwbG90VHlwZSBoYXNuJ3QgY2hhbmdlXG4gICAgcmV0dXJuIGxpbmVDaGFydDtcbiAgfVxuXG4gIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tzZXJpZXNEYXRhSWRdO1xuICBjb25zdCBnZXRZVmFsdWUgPSBnZXRWYWx1ZUFnZ3JGdW5jKHlBeGlzLCBhZ2dyZWdhdGlvbiwgZGF0YXNldCk7XG5cbiAgY29uc3QgaW5pdDogTGluZURhdHVtW10gPSBbXTtcbiAgY29uc3Qgc2VyaWVzID0gKGJpbnMgfHwgW10pLnJlZHVjZSgoYWNjdSwgYmluKSA9PiB7XG4gICAgY29uc3QgeSA9IGdldFlWYWx1ZShiaW4pO1xuICAgIGNvbnN0IGRlbHRhID0gZ2V0RGVsdGEoYWNjdSwgeSwgaW50ZXJ2YWwpO1xuICAgIGFjY3UucHVzaCh7XG4gICAgICB4OiBiaW4ueDAsXG4gICAgICB5LFxuICAgICAgLi4uZGVsdGFcbiAgICB9KTtcbiAgICByZXR1cm4gYWNjdTtcbiAgfSwgaW5pdCk7XG5cbiAgY29uc3QgeURvbWFpbiA9IGV4dGVudDx7eTogYW55fT4oc2VyaWVzLCBkID0+IGQueSk7XG4gIGNvbnN0IHhEb21haW4gPSBiaW5zID8gW2JpbnNbMF0ueDAsIGJpbnNbYmlucy5sZW5ndGggLSAxXS54MV0gOiBbXTtcblxuICAvLyB0cmVhdCBtaXNzaW5nIGRhdGEgYXMgYW5vdGhlciBzZXJpZXNcbiAgY29uc3Qgc3BsaXQgPSBzcGxpdFNlcmllcyhzZXJpZXMpO1xuICBjb25zdCBhZ2dyTmFtZSA9IEFHR1JFR0FUSU9OX05BTUVbYWdncmVnYXRpb25dO1xuXG4gIHJldHVybiB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHlEb21haW4sXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHhEb21haW4sXG4gICAgaW50ZXJ2YWwsXG4gICAgYWdncmVnYXRpb24sXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHNlcmllczogc3BsaXQsXG4gICAgdGl0bGU6IGAke2FnZ3JOYW1lfSR7JyBvZiAnfSR7eUF4aXMgPyB5QXhpcy5uYW1lIDogJ0NvdW50J31gLFxuICAgIGZpZWxkVHlwZTogeUF4aXMgPyB5QXhpcy50eXBlIDogJ2ludGVnZXInLFxuICAgIHlBeGlzOiB5QXhpcyA/IHlBeGlzLm5hbWUgOiBudWxsLFxuICAgIGFsbFRpbWU6IHtcbiAgICAgIHRpdGxlOiBgQWxsIFRpbWUgQXZlcmFnZWAsXG4gICAgICB2YWx1ZTogYWdncmVnYXRlKHNlcmllcywgQUdHUkVHQVRJT05fVFlQRVMuYXZlcmFnZSwgZCA9PiBkLnkpXG4gICAgfSxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGJpbnMgaXMgQmluc1tdLCBub3QgYSBCaW5zIG1hcC4gUmVmYWN0b3IgdG8gdXNlIGNvcnJlY3QgdHlwZXMuXG4gICAgYmluc1xuICB9O1xufVxuXG4vLyBzcGxpdCBpbnRvIG11bHRpcGxlIHNlcmllcyB3aGVuIHNlZSBtaXNzaW5nIGRhdGFcbmV4cG9ydCBmdW5jdGlvbiBzcGxpdFNlcmllcyhzZXJpZXMpIHtcbiAgY29uc3QgbGluZXM6IGFueVtdID0gW107XG4gIGxldCB0ZW1wOiBhbnlbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGQgPSBzZXJpZXNbaV07XG4gICAgaWYgKCFub3ROdWxsb3JVbmRlZmluZWQoZC55KSAmJiB0ZW1wLmxlbmd0aCkge1xuICAgICAgLy8gZW5kcyB0ZW1wXG4gICAgICBsaW5lcy5wdXNoKHRlbXApO1xuICAgICAgdGVtcCA9IFtdO1xuICAgIH0gZWxzZSBpZiAobm90TnVsbG9yVW5kZWZpbmVkKGQueSkpIHtcbiAgICAgIHRlbXAucHVzaChkKTtcbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gc2VyaWVzLmxlbmd0aCAtIDEgJiYgdGVtcC5sZW5ndGgpIHtcbiAgICAgIGxpbmVzLnB1c2godGVtcCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbWFya2VycyA9IGxpbmVzLmxlbmd0aCA+IDEgPyBzZXJpZXMuZmlsdGVyKGQgPT4gbm90TnVsbG9yVW5kZWZpbmVkKGQueSkpIDogW107XG5cbiAgcmV0dXJuIHtsaW5lcywgbWFya2Vyc307XG59XG5cbnR5cGUgTWluVmlzU3RhdGVGb3JBbmltYXRpb25XaW5kb3cgPSB7XG4gIGRhdGFzZXRzOiBEYXRhc2V0cztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGp1c3RWYWx1ZVRvQW5pbWF0aW9uV2luZG93PFMgZXh0ZW5kcyBNaW5WaXNTdGF0ZUZvckFuaW1hdGlvbldpbmRvdz4oXG4gIHN0YXRlOiBTLFxuICBmaWx0ZXI6IFRpbWVSYW5nZUZpbHRlclxuKSB7XG4gIGNvbnN0IHtcbiAgICBwbG90VHlwZSxcbiAgICB2YWx1ZTogW3ZhbHVlMCwgdmFsdWUxXSxcbiAgICBhbmltYXRpb25XaW5kb3dcbiAgfSA9IGZpbHRlcjtcblxuICBjb25zdCBpbnRlcnZhbCA9IHBsb3RUeXBlLmludGVydmFsIHx8IGdldEluaXRpYWxJbnRlcnZhbChmaWx0ZXIsIHN0YXRlLmRhdGFzZXRzKTtcbiAgY29uc3QgYmlucyA9IGdldFRpbWVCaW5zKGZpbHRlciwgc3RhdGUuZGF0YXNldHMsIGludGVydmFsKTtcbiAgY29uc3QgZGF0YXNldEJpbnMgPSBiaW5zICYmIE9iamVjdC5rZXlzKGJpbnMpLmxlbmd0aCAmJiBPYmplY3QudmFsdWVzKGJpbnMpWzBdW2ludGVydmFsXTtcbiAgY29uc3QgdGhyZXNob2xkcyA9IChkYXRhc2V0QmlucyB8fCBbXSkubWFwKGIgPT4gYi54MCk7XG5cbiAgbGV0IHZhbDAgPSB2YWx1ZTA7XG4gIGxldCB2YWwxID0gdmFsdWUxO1xuICBsZXQgaWR4O1xuICBpZiAoYW5pbWF0aW9uV2luZG93ID09PSBBTklNQVRJT05fV0lORE9XLmludGVydmFsKSB7XG4gICAgdmFsMCA9IHNuYXBUb01hcmtzKHZhbHVlMSwgdGhyZXNob2xkcyk7XG4gICAgaWR4ID0gdGhyZXNob2xkcy5pbmRleE9mKHZhbDApO1xuICAgIHZhbDEgPSBpZHggPiAtMSA/IGRhdGFzZXRCaW5zW2lkeF0ueDEgOiBOYU47XG4gIH0gZWxzZSB7XG4gICAgLy8gZml0IGN1cnJlbnQgdmFsdWUgdG8gd2luZG93XG4gICAgdmFsMCA9IHNuYXBUb01hcmtzKHZhbHVlMCwgdGhyZXNob2xkcyk7XG4gICAgdmFsMSA9IHNuYXBUb01hcmtzKHZhbHVlMSwgdGhyZXNob2xkcyk7XG5cbiAgICBpZiAodmFsMCA9PT0gdmFsMSkge1xuICAgICAgaWR4ID0gdGhyZXNob2xkcy5pbmRleE9mKHZhbDApO1xuICAgICAgaWYgKGlkeCA9PT0gdGhyZXNob2xkcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHZhbDAgPSB0aHJlc2hvbGRzW2lkeCAtIDFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsMSA9IHRocmVzaG9sZHNbaWR4ICsgMV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgdXBkYXRlZEZpbHRlciA9IHtcbiAgICAuLi5maWx0ZXIsXG4gICAgcGxvdFR5cGU6IHtcbiAgICAgIC4uLmZpbHRlci5wbG90VHlwZSxcbiAgICAgIGludGVydmFsXG4gICAgfSxcbiAgICB0aW1lQmluczogYmlucyxcbiAgICB2YWx1ZTogW3ZhbDAsIHZhbDFdXG4gIH07XG5cbiAgcmV0dXJuIHVwZGF0ZWRGaWx0ZXI7XG59XG5cbi8qKlxuICogQ3JlYXRlIG9yIHVwZGF0ZSBjb2xvcnMgZm9yIGEgZmlsdGVyIHBsb3RcbiAqIEBwYXJhbSBmaWx0ZXJcbiAqIEBwYXJhbSBkYXRhc2V0c1xuICogQHBhcmFtIG9sZENvbG9yc0J5RGF0YUlkXG4gKi9cbmZ1bmN0aW9uIGdldEZpbHRlclBsb3RDb2xvcnNCeURhdGFJZChmaWx0ZXIsIGRhdGFzZXRzLCBvbGRDb2xvcnNCeURhdGFJZCkge1xuICBsZXQgY29sb3JzQnlEYXRhSWQgPSBvbGRDb2xvcnNCeURhdGFJZCB8fCB7fTtcbiAgZm9yIChjb25zdCBkYXRhSWQgb2YgZmlsdGVyLmRhdGFJZCkge1xuICAgIGlmICghY29sb3JzQnlEYXRhSWRbZGF0YUlkXSAmJiBkYXRhc2V0c1tkYXRhSWRdKSB7XG4gICAgICBjb2xvcnNCeURhdGFJZCA9IHtcbiAgICAgICAgLi4uY29sb3JzQnlEYXRhSWQsXG4gICAgICAgIFtkYXRhSWRdOiByZ2JUb0hleChkYXRhc2V0c1tkYXRhSWRdLmNvbG9yKVxuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbG9yc0J5RGF0YUlkO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gZmlsdGVyXG4gKiBAcGFyYW0gcGxvdFR5cGVcbiAqIEBwYXJhbSBkYXRhc2V0c1xuICogQHBhcmFtIGRhdGFJZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlVGltZUZpbHRlclBsb3RUeXBlKFxuICBmaWx0ZXI6IFRpbWVSYW5nZUZpbHRlcixcbiAgcGxvdFR5cGU6IFRpbWVSYW5nZUZpbHRlclsncGxvdFR5cGUnXSxcbiAgZGF0YXNldHM6IERhdGFzZXRzLFxuICBfZGF0YUlkPzogc3RyaW5nXG4pOiBUaW1lUmFuZ2VGaWx0ZXIge1xuICBsZXQgbmV4dEZpbHRlciA9IGZpbHRlcjtcbiAgbGV0IG5leHRQbG90VHlwZSA9IHBsb3RUeXBlO1xuICBpZiAodHlwZW9mIG5leHRQbG90VHlwZSAhPT0gJ29iamVjdCcgfHwgIW5leHRQbG90VHlwZS5hZ2dyZWdhdGlvbiB8fCAhbmV4dFBsb3RUeXBlLmludGVydmFsKSB7XG4gICAgbmV4dFBsb3RUeXBlID0gZ2V0RGVmYXVsdFBsb3RUeXBlKGZpbHRlciwgZGF0YXNldHMpO1xuICB9XG5cbiAgaWYgKGZpbHRlci5kYXRhSWQubGVuZ3RoID4gMSkge1xuICAgIG5leHRQbG90VHlwZSA9IHtcbiAgICAgIC4uLm5leHRQbG90VHlwZSxcbiAgICAgIGNvbG9yc0J5RGF0YUlkOiBnZXRGaWx0ZXJQbG90Q29sb3JzQnlEYXRhSWQoZmlsdGVyLCBkYXRhc2V0cywgbmV4dFBsb3RUeXBlLmNvbG9yc0J5RGF0YUlkKVxuICAgIH07XG4gIH1cbiAgbmV4dEZpbHRlciA9IHtcbiAgICAuLi5uZXh0RmlsdGVyLFxuICAgIHBsb3RUeXBlOiBuZXh0UGxvdFR5cGVcbiAgfTtcblxuICBjb25zdCBiaW5zID0gZ2V0VGltZUJpbnMobmV4dEZpbHRlciwgZGF0YXNldHMsIG5leHRQbG90VHlwZS5pbnRlcnZhbCk7XG5cbiAgbmV4dEZpbHRlciA9IHtcbiAgICAuLi5uZXh0RmlsdGVyLFxuICAgIHRpbWVCaW5zOiBiaW5zXG4gIH07XG5cbiAgaWYgKHBsb3RUeXBlLnR5cGUgPT09IFBMT1RfVFlQRVMuaGlzdG9ncmFtKSB7XG4gICAgLy8gSGlzdG9ncmFtIGlzIGNhbGN1bGF0ZWQgYW5kIG1lbW9pemVkIGluIHRoZSBjaGFydCBpdHNlbGZcbiAgfSBlbHNlIGlmIChwbG90VHlwZS50eXBlID09PSBQTE9UX1RZUEVTLmxpbmVDaGFydCkge1xuICAgIC8vIHdlIHNob3VsZCBiZSBhYmxlIHRvIG1vdmUgdGhpcyBpbnRvIGl0cyBvd24gY29tcG9uZW50IHNvIHJlYWN0IHdpbGwgZG8gdGhlIHNoYWxsb3cgY29tcGFyaXNvbiBmb3IgdXMuXG4gICAgbmV4dEZpbHRlciA9IHtcbiAgICAgIC4uLm5leHRGaWx0ZXIsXG4gICAgICBsaW5lQ2hhcnQ6IGdldExpbmVDaGFydChkYXRhc2V0cywgbmV4dEZpbHRlcilcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG5leHRGaWx0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYW5nZUZpbHRlckJpbnMoZmlsdGVyLCBkYXRhc2V0cywgbnVtQmlucykge1xuICBjb25zdCB7ZG9tYWlufSA9IGZpbHRlcjtcbiAgaWYgKCFmaWx0ZXIuZGF0YUlkKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gZmlsdGVyLmRhdGFJZC5yZWR1Y2UoKGFjYywgZGF0YUlkLCBkYXRhc2V0SWR4KSA9PiB7XG4gICAgaWYgKGZpbHRlci5iaW5zPy5bZGF0YUlkXSkge1xuICAgICAgLy8gZG9uJ3QgcmVjYWxjdWxhdGUgYmluc1xuICAgICAgYWNjW2RhdGFJZF0gPSBmaWx0ZXIuYmluc1tkYXRhSWRdO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9XG4gICAgY29uc3QgZmllbGROYW1lID0gZmlsdGVyLm5hbWVbZGF0YXNldElkeF07XG4gICAgaWYgKGRhdGFJZCAmJiBmaWVsZE5hbWUpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuICAgICAgY29uc3QgZmllbGQgPSBkYXRhc2V0Py5nZXRDb2x1bW5GaWVsZChmaWVsZE5hbWUpO1xuICAgICAgaWYgKGRhdGFzZXQgJiYgZmllbGQpIHtcbiAgICAgICAgY29uc3QgaW5kZXhlcyA9IHJ1bkdwdUZpbHRlckZvclBsb3QoZGF0YXNldCwgZmlsdGVyKTtcbiAgICAgICAgY29uc3QgdmFsdWVBY2Nlc3NvciA9IGluZGV4ID0+IGZpZWxkLnZhbHVlQWNjZXNzb3Ioe2luZGV4fSk7XG4gICAgICAgIGFjY1tkYXRhSWRdID0gaGlzdG9ncmFtRnJvbURvbWFpbihkb21haW4sIGluZGV4ZXMsIG51bUJpbnMsIHZhbHVlQWNjZXNzb3IpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVSYW5nZUZpbHRlclBsb3RUeXBlKFxuICBmaWx0ZXI6IFJhbmdlRmlsdGVyLFxuICBwbG90VHlwZTogUmFuZ2VGaWx0ZXJbJ3Bsb3RUeXBlJ10sXG4gIGRhdGFzZXRzOiBEYXRhc2V0cyxcbiAgX2RhdGFJZD86IHN0cmluZ1xuKTogUmFuZ2VGaWx0ZXIge1xuICBjb25zdCBuZXh0RmlsdGVyID0ge1xuICAgIC4uLmZpbHRlcixcbiAgICBwbG90VHlwZVxuICB9O1xuXG4gIC8vIGlmIChkYXRhSWQpIHtcbiAgLy8gICAvLyBjbGVhciBiaW5zXG4gIC8vICAgbmV4dEZpbHRlciA9IHtcbiAgLy8gICAgIC4uLm5leHRGaWx0ZXIsXG4gIC8vICAgICBiaW5zOiB7XG4gIC8vICAgICAgIC4uLm5leHRGaWx0ZXIuYmlucyxcbiAgLy8gICAgICAgW2RhdGFJZF06IG51bGxcbiAgLy8gICAgIH1cbiAgLy8gICB9O1xuICAvLyB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5maWx0ZXIsXG4gICAgcGxvdFR5cGUsXG4gICAgYmluczogZ2V0UmFuZ2VGaWx0ZXJCaW5zKG5leHRGaWx0ZXIsIGRhdGFzZXRzLCBCSU5TKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hhcnRUaXRsZSh5QXhpczogRmllbGQsIHBsb3RUeXBlOiBQbG90VHlwZSk6IHN0cmluZyB7XG4gIGNvbnN0IHlBeGlzTmFtZSA9IHlBeGlzPy5kaXNwbGF5TmFtZTtcbiAgY29uc3Qge2FnZ3JlZ2F0aW9ufSA9IHBsb3RUeXBlO1xuXG4gIGlmICh5QXhpc05hbWUpIHtcbiAgICByZXR1cm4gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGAke2FnZ3JlZ2F0aW9ufSAke3lBeGlzTmFtZX0gb3ZlciBUaW1lYCk7XG4gIH1cblxuICByZXR1cm4gYENvdW50IG9mIFJvd3Mgb3ZlciBUaW1lYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRQbG90VHlwZShmaWx0ZXIsIGRhdGFzZXRzKSB7XG4gIGNvbnN0IGludGVydmFsID0gZ2V0SW5pdGlhbEludGVydmFsKGZpbHRlciwgZGF0YXNldHMpO1xuICBjb25zdCBkZWZhdWx0VGltZUZvcm1hdCA9IGdldERlZmF1bHRUaW1lRm9ybWF0KGludGVydmFsKTtcbiAgcmV0dXJuIHtcbiAgICBpbnRlcnZhbCxcbiAgICBkZWZhdWx0VGltZUZvcm1hdCxcbiAgICB0eXBlOiBQTE9UX1RZUEVTLmhpc3RvZ3JhbSxcbiAgICBhZ2dyZWdhdGlvbjogQUdHUkVHQVRJT05fVFlQRVMuc3VtXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxRQUFBLEdBQUFD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QUMsR0FBR04sbUJBQW1CLENBQUNiLE1BQU0sRUFBRUssT0FBTyxFQUFFSyxPQUFPLEVBQUVmLGFBQWEsQ0FBQztNQUM1RTtJQUNGO0lBQ0EsT0FBT3VMLEdBQUc7RUFDWixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDUjtBQUVPLFNBQVNLLHlCQUF5QkEsQ0FDdkMzTSxNQUFtQixFQUNuQjhJLFFBQWlDLEVBQ2pDMUcsUUFBa0IsRUFDbEIwSixPQUFnQixFQUNIO0VBQ2IsSUFBTUMsVUFBVSxHQUFBMUwsYUFBQSxDQUFBQSxhQUFBLEtBQ1hMLE1BQU07SUFDVDhJLFFBQVEsRUFBUkE7RUFBUSxFQUNUOztFQUVEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztFQUVBLE9BQUF6SSxhQUFBLENBQUFBLGFBQUEsS0FDS0wsTUFBTTtJQUNUOEksUUFBUSxFQUFSQSxRQUFRO0lBQ1J6SCxJQUFJLEVBQUVnTCxrQkFBa0IsQ0FBQ04sVUFBVSxFQUFFM0osUUFBUSxFQUFFd0ssZUFBSTtFQUFDO0FBRXhEO0FBRU8sU0FBU0MsYUFBYUEsQ0FBQ2hFLEtBQVksRUFBRUMsUUFBa0IsRUFBVTtFQUN0RSxJQUFNZ0UsU0FBUyxHQUFHakUsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVrRSxXQUFXO0VBQ3BDLElBQU9sRyxXQUFXLEdBQUlpQyxRQUFRLENBQXZCakMsV0FBVztFQUVsQixJQUFJaUcsU0FBUyxFQUFFO0lBQ2IsT0FBTyxJQUFBRSw4QkFBcUIsS0FBQWpELE1BQUEsQ0FBSWxELFdBQVcsT0FBQWtELE1BQUEsQ0FBSStDLFNBQVMsZUFBWSxDQUFDO0VBQ3ZFO0VBRUE7QUFDRjtBQUVPLFNBQVNaLGtCQUFrQkEsQ0FBQ2xNLE1BQU0sRUFBRW9DLFFBQVEsRUFBRTtFQUNuRCxJQUFNQyxRQUFRLEdBQUcsSUFBQXdJLHdCQUFrQixFQUFDN0ssTUFBTSxFQUFFb0MsUUFBUSxDQUFDO0VBQ3JELElBQU02SyxpQkFBaUIsR0FBRyxJQUFBQyw0QkFBb0IsRUFBQzdLLFFBQVEsQ0FBQztFQUN4RCxPQUFPO0lBQ0xBLFFBQVEsRUFBUkEsUUFBUTtJQUNSNEssaUJBQWlCLEVBQWpCQSxpQkFBaUI7SUFDakJoRCxJQUFJLEVBQUVrQyxxQkFBVSxDQUFDQyxTQUFTO0lBQzFCdkYsV0FBVyxFQUFFQyw0QkFBaUIsQ0FBQ2tCO0VBQ2pDLENBQUM7QUFDSCIsImlnbm9yZUxpc3QiOltdfQ==
@@ -22,8 +22,8 @@ export declare class RowDataContainer implements DataContainerInterface {
22
22
  flattenData(): any[][];
23
23
  getPlainIndex(): number[];
24
24
  map<T>(func: (row: DataRow, index: number) => T, sharedRow?: SharedRowOptions, options?: RangeOptions): T[];
25
- mapIndex<T>(func: ({ index: number }: {
26
- index: any;
25
+ mapIndex<T>(func: ({ index }: {
26
+ index: number;
27
27
  }, dc: DataContainerInterface) => T, options?: RangeOptions): T[];
28
28
  find(func: (row: DataRow, index: number) => boolean, sharedRow?: SharedRowOptions): DataRow | undefined;
29
29
  reduce<T>(func: (acc: T, row: DataRow, index: number) => T, initialValue: T, sharedRow?: SharedRowOptions): T;
@@ -203,4 +203,4 @@ var RowDataContainer = exports.RowDataContainer = /*#__PURE__*/function () {
203
203
  }
204
204
  }]);
205
205
  }();
206
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGF0YVJvdyIsInJlcXVpcmUiLCJfbWFya2VkIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsInJvd3NJdGVyYXRvciIsIl9tYXJrZWQyIiwiY29sdW1uSXRlcmF0b3IiLCJkYXRhQ29udGFpbmVyIiwic2hhcmVkUm93IiwibnVtUm93cyIsInJvd0luZGV4Iiwid3JhcCIsInJvd3NJdGVyYXRvciQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwicm93Iiwic3RvcCIsImNvbHVtbkluZGV4IiwiY29sdW1uSXRlcmF0b3IkIiwiX2NvbnRleHQyIiwidmFsdWVBdCIsIlJvd0RhdGFDb250YWluZXIiLCJleHBvcnRzIiwiZGF0YSIsIl9kYXRhJHJvd3MkIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJyb3dzIiwiRXJyb3IiLCJBcnJheSIsImlzQXJyYXkiLCJfcm93cyIsIl9udW1Db2x1bW5zIiwibGVuZ3RoIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwibnVtQ29sdW1ucyIsInRTaGFyZWRSb3ciLCJEYXRhUm93IiwiY3JlYXRlU2hhcmVkUm93Iiwic2V0U291cmNlIiwicm93QXNBcnJheSIsImNvbHVtbiIsImZsYXR0ZW5EYXRhIiwiZ2V0UGxhaW5JbmRleCIsIm1hcCIsIl8iLCJpIiwiZnVuYyIsIm9wdGlvbnMiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfb3B0aW9ucyRzdGFydCIsInN0YXJ0IiwiX29wdGlvbnMkZW5kIiwiZW5kIiwiZW5kUm93IiwiTWF0aCIsIm1pbiIsIm91dCIsInB1c2giLCJtYXBJbmRleCIsIl9vcHRpb25zJHN0YXJ0MiIsIl9vcHRpb25zJGVuZDIiLCJpbmRleCIsImZpbmQiLCJyZWR1Y2UiLCJpbml0aWFsVmFsdWUiXSwic291cmNlcyI6WyIuLi9zcmMvcm93LWRhdGEtY29udGFpbmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7RGF0YVJvdywgU2hhcmVkUm93T3B0aW9uc30gZnJvbSAnLi9kYXRhLXJvdyc7XG5pbXBvcnQge1Byb3RvRGF0YXNldEZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZSwgUmFuZ2VPcHRpb25zfSBmcm9tICcuL2RhdGEtY29udGFpbmVyLWludGVyZmFjZSc7XG5cbnR5cGUgUm93RGF0YUNvbnRhaW5lcklucHV0ID0ge1xuICByb3dzOiBhbnlbXVtdO1xuICBmaWVsZHM/OiBQcm90b0RhdGFzZXRGaWVsZFtdO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gZGF0YUNvbnRhaW5lclxuICogQHBhcmFtIHNoYXJlZFJvd1xuICovXG5mdW5jdGlvbiogcm93c0l0ZXJhdG9yKGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsIHNoYXJlZFJvdzogU2hhcmVkUm93T3B0aW9ucykge1xuICBjb25zdCBudW1Sb3dzID0gZGF0YUNvbnRhaW5lci5udW1Sb3dzKCk7XG4gIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCBudW1Sb3dzOyArK3Jvd0luZGV4KSB7XG4gICAgeWllbGQgZGF0YUNvbnRhaW5lci5yb3cocm93SW5kZXgsIHNoYXJlZFJvdyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0gZGF0YUNvbnRhaW5lclxuICogQHBhcmFtIGNvbHVtbkluZGV4XG4gKi9cbmZ1bmN0aW9uKiBjb2x1bW5JdGVyYXRvcihkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBjb2x1bW5JbmRleDogbnVtYmVyKSB7XG4gIGNvbnN0IG51bVJvd3MgPSBkYXRhQ29udGFpbmVyLm51bVJvd3MoKTtcbiAgZm9yIChsZXQgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IG51bVJvd3M7ICsrcm93SW5kZXgpIHtcbiAgICB5aWVsZCBkYXRhQ29udGFpbmVyLnZhbHVlQXQocm93SW5kZXgsIGNvbHVtbkluZGV4KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgZGF0YSBjb250YWluZXIgd2hlcmUgYWxsIGRhdGEgaXMgc3RvcmVkIGludGVybmFsbHkgYXMgYSAyRCBhcnJheS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJvd0RhdGFDb250YWluZXIgaW1wbGVtZW50cyBEYXRhQ29udGFpbmVySW50ZXJmYWNlIHtcbiAgX3Jvd3M6IGFueVtdW107XG4gIF9udW1Db2x1bW5zOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoZGF0YTogUm93RGF0YUNvbnRhaW5lcklucHV0KSB7XG4gICAgaWYgKCFkYXRhLnJvd3MpIHtcbiAgICAgIHRocm93IEVycm9yKCdSb3dEYXRhQ29udGFpbmVyOiBubyByb3dzIHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEucm93cykpIHtcbiAgICAgIHRocm93IEVycm9yKFwiUm93RGF0YUNvbnRhaW5lcjogcm93cyBvYmplY3QgaXNuJ3QgYW4gYXJyYXlcIik7XG4gICAgfVxuXG4gICAgdGhpcy5fcm93cyA9IGRhdGEucm93cztcbiAgICB0aGlzLl9udW1Db2x1bW5zID0gZGF0YS5yb3dzWzBdPy5sZW5ndGggfHwgMDtcbiAgfVxuXG4gIG51bVJvd3MoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcm93cy5sZW5ndGg7XG4gIH1cblxuICBudW1Db2x1bW5zKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX251bUNvbHVtbnM7XG4gIH1cblxuICB2YWx1ZUF0KHJvd0luZGV4OiBudW1iZXIsIGNvbHVtbkluZGV4OiBudW1iZXIpOiBhbnkge1xuICAgIGlmICh0aGlzLl9yb3dzW3Jvd0luZGV4XSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yb3dzW3Jvd0luZGV4XVtjb2x1bW5JbmRleF07XG4gIH1cblxuICByb3cocm93SW5kZXg6IG51bWJlciwgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9ucyk6IERhdGFSb3cge1xuICAgIGNvbnN0IHRTaGFyZWRSb3cgPSBEYXRhUm93LmNyZWF0ZVNoYXJlZFJvdyhzaGFyZWRSb3cpO1xuICAgIGlmICh0U2hhcmVkUm93KSB7XG4gICAgICB0U2hhcmVkUm93LnNldFNvdXJjZSh0aGlzLCByb3dJbmRleCk7XG4gICAgICByZXR1cm4gdFNoYXJlZFJvdztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGFSb3codGhpcywgcm93SW5kZXgpO1xuICB9XG5cbiAgcm93QXNBcnJheShyb3dJbmRleDogbnVtYmVyKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9yb3dzW3Jvd0luZGV4XTtcbiAgfVxuXG4gIHJvd3Moc2hhcmVkUm93OiBTaGFyZWRSb3dPcHRpb25zKSB7XG4gICAgY29uc3QgdFNoYXJlZFJvdyA9IERhdGFSb3cuY3JlYXRlU2hhcmVkUm93KHNoYXJlZFJvdyk7XG4gICAgcmV0dXJuIHJvd3NJdGVyYXRvcih0aGlzLCB0U2hhcmVkUm93KTtcbiAgfVxuXG4gIGNvbHVtbihjb2x1bW5JbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGNvbHVtbkl0ZXJhdG9yKHRoaXMsIGNvbHVtbkluZGV4KTtcbiAgfVxuXG4gIGZsYXR0ZW5EYXRhKCk6IGFueVtdW10ge1xuICAgIHJldHVybiB0aGlzLl9yb3dzO1xuICB9XG5cbiAgZ2V0UGxhaW5JbmRleCgpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd3MubWFwKChfLCBpKSA9PiBpKTtcbiAgfVxuXG4gIG1hcDxUPihcbiAgICBmdW5jOiAocm93OiBEYXRhUm93LCBpbmRleDogbnVtYmVyKSA9PiBULFxuICAgIHNoYXJlZFJvdz86IFNoYXJlZFJvd09wdGlvbnMsXG4gICAgb3B0aW9uczogUmFuZ2VPcHRpb25zID0ge31cbiAgKTogVFtdIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcblxuICAgIGNvbnN0IHtzdGFydCA9IDAsIGVuZCA9IHRoaXMubnVtUm93cygpfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgZW5kUm93ID0gTWF0aC5taW4odGhpcy5udW1Sb3dzKCksIGVuZCk7XG5cbiAgICBjb25zdCBvdXQ6IFRbXSA9IFtdO1xuICAgIGZvciAobGV0IHJvd0luZGV4ID0gc3RhcnQ7IHJvd0luZGV4IDwgZW5kUm93OyArK3Jvd0luZGV4KSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyhyb3dJbmRleCwgdFNoYXJlZFJvdyk7XG4gICAgICBvdXQucHVzaChmdW5jKHJvdywgcm93SW5kZXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIG1hcEluZGV4PFQ+KFxuICAgIGZ1bmM6ICh7aW5kZXg6IG51bWJlcn0sIGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiBULFxuICAgIG9wdGlvbnM6IFJhbmdlT3B0aW9ucyA9IHt9XG4gICk6IFRbXSB7XG4gICAgY29uc3Qge3N0YXJ0ID0gMCwgZW5kID0gdGhpcy5udW1Sb3dzKCl9ID0gb3B0aW9ucztcbiAgICBjb25zdCBlbmRSb3cgPSBNYXRoLm1pbih0aGlzLm51bVJvd3MoKSwgZW5kKTtcblxuICAgIGNvbnN0IG91dDogVFtdID0gW107XG4gICAgZm9yIChsZXQgcm93SW5kZXggPSBzdGFydDsgcm93SW5kZXggPCBlbmRSb3c7ICsrcm93SW5kZXgpIHtcbiAgICAgIG91dC5wdXNoKGZ1bmMoe2luZGV4OiByb3dJbmRleH0sIHRoaXMpKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIGZpbmQoXG4gICAgZnVuYzogKHJvdzogRGF0YVJvdywgaW5kZXg6IG51bWJlcikgPT4gYm9vbGVhbixcbiAgICBzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zXG4gICk6IERhdGFSb3cgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHRTaGFyZWRSb3cgPSBEYXRhUm93LmNyZWF0ZVNoYXJlZFJvdyhzaGFyZWRSb3cpO1xuXG4gICAgZm9yIChsZXQgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IHRoaXMuX3Jvd3MubGVuZ3RoOyArK3Jvd0luZGV4KSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyhyb3dJbmRleCwgdFNoYXJlZFJvdyk7XG4gICAgICBpZiAoZnVuYyhyb3csIHJvd0luZGV4KSkge1xuICAgICAgICByZXR1cm4gcm93O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmVkdWNlPFQ+KFxuICAgIGZ1bmM6IChhY2M6IFQsIHJvdzogRGF0YVJvdywgaW5kZXg6IG51bWJlcikgPT4gVCxcbiAgICBpbml0aWFsVmFsdWU6IFQsXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9uc1xuICApOiBUIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcblxuICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCB0aGlzLl9yb3dzLmxlbmd0aDsgKytyb3dJbmRleCkge1xuICAgICAgY29uc3Qgcm93ID0gdGhpcy5yb3cocm93SW5kZXgsIHRTaGFyZWRSb3cpO1xuICAgICAgaW5pdGlhbFZhbHVlID0gZnVuYyhpbml0aWFsVmFsdWUsIHJvdywgcm93SW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gaW5pdGlhbFZhbHVlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQXFELElBQUFDLE9BQUEsZ0JBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQWEzQ0MsWUFBWTtFQUFBQyxRQUFBLGdCQUFBSCxZQUFBLFlBQUFDLElBQUEsQ0FXWkcsY0FBYyxHQTNCeEI7QUFDQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBVUYsWUFBWUEsQ0FBQ0csYUFBcUMsRUFB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
206
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGF0YVJvdyIsInJlcXVpcmUiLCJfbWFya2VkIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsInJvd3NJdGVyYXRvciIsIl9tYXJrZWQyIiwiY29sdW1uSXRlcmF0b3IiLCJkYXRhQ29udGFpbmVyIiwic2hhcmVkUm93IiwibnVtUm93cyIsInJvd0luZGV4Iiwid3JhcCIsInJvd3NJdGVyYXRvciQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwicm93Iiwic3RvcCIsImNvbHVtbkluZGV4IiwiY29sdW1uSXRlcmF0b3IkIiwiX2NvbnRleHQyIiwidmFsdWVBdCIsIlJvd0RhdGFDb250YWluZXIiLCJleHBvcnRzIiwiZGF0YSIsIl9kYXRhJHJvd3MkIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJyb3dzIiwiRXJyb3IiLCJBcnJheSIsImlzQXJyYXkiLCJfcm93cyIsIl9udW1Db2x1bW5zIiwibGVuZ3RoIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwibnVtQ29sdW1ucyIsInRTaGFyZWRSb3ciLCJEYXRhUm93IiwiY3JlYXRlU2hhcmVkUm93Iiwic2V0U291cmNlIiwicm93QXNBcnJheSIsImNvbHVtbiIsImZsYXR0ZW5EYXRhIiwiZ2V0UGxhaW5JbmRleCIsIm1hcCIsIl8iLCJpIiwiZnVuYyIsIm9wdGlvbnMiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfb3B0aW9ucyRzdGFydCIsInN0YXJ0IiwiX29wdGlvbnMkZW5kIiwiZW5kIiwiZW5kUm93IiwiTWF0aCIsIm1pbiIsIm91dCIsInB1c2giLCJtYXBJbmRleCIsIl9vcHRpb25zJHN0YXJ0MiIsIl9vcHRpb25zJGVuZDIiLCJpbmRleCIsImZpbmQiLCJyZWR1Y2UiLCJpbml0aWFsVmFsdWUiXSwic291cmNlcyI6WyIuLi9zcmMvcm93LWRhdGEtY29udGFpbmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7RGF0YVJvdywgU2hhcmVkUm93T3B0aW9uc30gZnJvbSAnLi9kYXRhLXJvdyc7XG5pbXBvcnQge1Byb3RvRGF0YXNldEZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZSwgUmFuZ2VPcHRpb25zfSBmcm9tICcuL2RhdGEtY29udGFpbmVyLWludGVyZmFjZSc7XG5cbnR5cGUgUm93RGF0YUNvbnRhaW5lcklucHV0ID0ge1xuICByb3dzOiBhbnlbXVtdO1xuICBmaWVsZHM/OiBQcm90b0RhdGFzZXRGaWVsZFtdO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gZGF0YUNvbnRhaW5lclxuICogQHBhcmFtIHNoYXJlZFJvd1xuICovXG5mdW5jdGlvbiogcm93c0l0ZXJhdG9yKGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsIHNoYXJlZFJvdzogU2hhcmVkUm93T3B0aW9ucykge1xuICBjb25zdCBudW1Sb3dzID0gZGF0YUNvbnRhaW5lci5udW1Sb3dzKCk7XG4gIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCBudW1Sb3dzOyArK3Jvd0luZGV4KSB7XG4gICAgeWllbGQgZGF0YUNvbnRhaW5lci5yb3cocm93SW5kZXgsIHNoYXJlZFJvdyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0gZGF0YUNvbnRhaW5lclxuICogQHBhcmFtIGNvbHVtbkluZGV4XG4gKi9cbmZ1bmN0aW9uKiBjb2x1bW5JdGVyYXRvcihkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBjb2x1bW5JbmRleDogbnVtYmVyKSB7XG4gIGNvbnN0IG51bVJvd3MgPSBkYXRhQ29udGFpbmVyLm51bVJvd3MoKTtcbiAgZm9yIChsZXQgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IG51bVJvd3M7ICsrcm93SW5kZXgpIHtcbiAgICB5aWVsZCBkYXRhQ29udGFpbmVyLnZhbHVlQXQocm93SW5kZXgsIGNvbHVtbkluZGV4KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgZGF0YSBjb250YWluZXIgd2hlcmUgYWxsIGRhdGEgaXMgc3RvcmVkIGludGVybmFsbHkgYXMgYSAyRCBhcnJheS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJvd0RhdGFDb250YWluZXIgaW1wbGVtZW50cyBEYXRhQ29udGFpbmVySW50ZXJmYWNlIHtcbiAgX3Jvd3M6IGFueVtdW107XG4gIF9udW1Db2x1bW5zOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoZGF0YTogUm93RGF0YUNvbnRhaW5lcklucHV0KSB7XG4gICAgaWYgKCFkYXRhLnJvd3MpIHtcbiAgICAgIHRocm93IEVycm9yKCdSb3dEYXRhQ29udGFpbmVyOiBubyByb3dzIHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEucm93cykpIHtcbiAgICAgIHRocm93IEVycm9yKFwiUm93RGF0YUNvbnRhaW5lcjogcm93cyBvYmplY3QgaXNuJ3QgYW4gYXJyYXlcIik7XG4gICAgfVxuXG4gICAgdGhpcy5fcm93cyA9IGRhdGEucm93cztcbiAgICB0aGlzLl9udW1Db2x1bW5zID0gZGF0YS5yb3dzWzBdPy5sZW5ndGggfHwgMDtcbiAgfVxuXG4gIG51bVJvd3MoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcm93cy5sZW5ndGg7XG4gIH1cblxuICBudW1Db2x1bW5zKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX251bUNvbHVtbnM7XG4gIH1cblxuICB2YWx1ZUF0KHJvd0luZGV4OiBudW1iZXIsIGNvbHVtbkluZGV4OiBudW1iZXIpOiBhbnkge1xuICAgIGlmICh0aGlzLl9yb3dzW3Jvd0luZGV4XSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yb3dzW3Jvd0luZGV4XVtjb2x1bW5JbmRleF07XG4gIH1cblxuICByb3cocm93SW5kZXg6IG51bWJlciwgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9ucyk6IERhdGFSb3cge1xuICAgIGNvbnN0IHRTaGFyZWRSb3cgPSBEYXRhUm93LmNyZWF0ZVNoYXJlZFJvdyhzaGFyZWRSb3cpO1xuICAgIGlmICh0U2hhcmVkUm93KSB7XG4gICAgICB0U2hhcmVkUm93LnNldFNvdXJjZSh0aGlzLCByb3dJbmRleCk7XG4gICAgICByZXR1cm4gdFNoYXJlZFJvdztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGFSb3codGhpcywgcm93SW5kZXgpO1xuICB9XG5cbiAgcm93QXNBcnJheShyb3dJbmRleDogbnVtYmVyKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9yb3dzW3Jvd0luZGV4XTtcbiAgfVxuXG4gIHJvd3Moc2hhcmVkUm93OiBTaGFyZWRSb3dPcHRpb25zKSB7XG4gICAgY29uc3QgdFNoYXJlZFJvdyA9IERhdGFSb3cuY3JlYXRlU2hhcmVkUm93KHNoYXJlZFJvdyk7XG4gICAgcmV0dXJuIHJvd3NJdGVyYXRvcih0aGlzLCB0U2hhcmVkUm93KTtcbiAgfVxuXG4gIGNvbHVtbihjb2x1bW5JbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGNvbHVtbkl0ZXJhdG9yKHRoaXMsIGNvbHVtbkluZGV4KTtcbiAgfVxuXG4gIGZsYXR0ZW5EYXRhKCk6IGFueVtdW10ge1xuICAgIHJldHVybiB0aGlzLl9yb3dzO1xuICB9XG5cbiAgZ2V0UGxhaW5JbmRleCgpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd3MubWFwKChfLCBpKSA9PiBpKTtcbiAgfVxuXG4gIG1hcDxUPihcbiAgICBmdW5jOiAocm93OiBEYXRhUm93LCBpbmRleDogbnVtYmVyKSA9PiBULFxuICAgIHNoYXJlZFJvdz86IFNoYXJlZFJvd09wdGlvbnMsXG4gICAgb3B0aW9uczogUmFuZ2VPcHRpb25zID0ge31cbiAgKTogVFtdIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcblxuICAgIGNvbnN0IHtzdGFydCA9IDAsIGVuZCA9IHRoaXMubnVtUm93cygpfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgZW5kUm93ID0gTWF0aC5taW4odGhpcy5udW1Sb3dzKCksIGVuZCk7XG5cbiAgICBjb25zdCBvdXQ6IFRbXSA9IFtdO1xuICAgIGZvciAobGV0IHJvd0luZGV4ID0gc3RhcnQ7IHJvd0luZGV4IDwgZW5kUm93OyArK3Jvd0luZGV4KSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyhyb3dJbmRleCwgdFNoYXJlZFJvdyk7XG4gICAgICBvdXQucHVzaChmdW5jKHJvdywgcm93SW5kZXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIG1hcEluZGV4PFQ+KFxuICAgIGZ1bmM6ICh7aW5kZXh9OiB7aW5kZXg6IG51bWJlcn0sIGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiBULFxuICAgIG9wdGlvbnM6IFJhbmdlT3B0aW9ucyA9IHt9XG4gICk6IFRbXSB7XG4gICAgY29uc3Qge3N0YXJ0ID0gMCwgZW5kID0gdGhpcy5udW1Sb3dzKCl9ID0gb3B0aW9ucztcbiAgICBjb25zdCBlbmRSb3cgPSBNYXRoLm1pbih0aGlzLm51bVJvd3MoKSwgZW5kKTtcblxuICAgIGNvbnN0IG91dDogVFtdID0gW107XG4gICAgZm9yIChsZXQgcm93SW5kZXggPSBzdGFydDsgcm93SW5kZXggPCBlbmRSb3c7ICsrcm93SW5kZXgpIHtcbiAgICAgIG91dC5wdXNoKGZ1bmMoe2luZGV4OiByb3dJbmRleH0sIHRoaXMpKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIGZpbmQoXG4gICAgZnVuYzogKHJvdzogRGF0YVJvdywgaW5kZXg6IG51bWJlcikgPT4gYm9vbGVhbixcbiAgICBzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zXG4gICk6IERhdGFSb3cgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHRTaGFyZWRSb3cgPSBEYXRhUm93LmNyZWF0ZVNoYXJlZFJvdyhzaGFyZWRSb3cpO1xuXG4gICAgZm9yIChsZXQgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IHRoaXMuX3Jvd3MubGVuZ3RoOyArK3Jvd0luZGV4KSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyhyb3dJbmRleCwgdFNoYXJlZFJvdyk7XG4gICAgICBpZiAoZnVuYyhyb3csIHJvd0luZGV4KSkge1xuICAgICAgICByZXR1cm4gcm93O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmVkdWNlPFQ+KFxuICAgIGZ1bmM6IChhY2M6IFQsIHJvdzogRGF0YVJvdywgaW5kZXg6IG51bWJlcikgPT4gVCxcbiAgICBpbml0aWFsVmFsdWU6IFQsXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9uc1xuICApOiBUIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcblxuICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCB0aGlzLl9yb3dzLmxlbmd0aDsgKytyb3dJbmRleCkge1xuICAgICAgY29uc3Qgcm93ID0gdGhpcy5yb3cocm93SW5kZXgsIHRTaGFyZWRSb3cpO1xuICAgICAgaW5pdGlhbFZhbHVlID0gZnVuYyhpbml0aWFsVmFsdWUsIHJvdywgcm93SW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gaW5pdGlhbFZhbHVlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQXFELElBQUFDLE9BQUEsZ0JBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQWEzQ0MsWUFBWTtFQUFBQyxRQUFBLGdCQUFBSCxZQUFBLFlBQUFDLElBQUEsQ0FXWkcsY0FBYyxHQTNCeEI7QUFDQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBVUYsWUFBWUEsQ0FBQ0cs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