@kepler.gl/deckgl-layers 3.3.0-alpha.4 → 3.3.0-alpha.5

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.
@@ -418,7 +418,8 @@ var getGlobeBaseLayers = exports.getGlobeBaseLayers = function getGlobeBaseLayer
418
418
  globe = _ref2.globe,
419
419
  mapStyleType = _ref2.mapStyleType,
420
420
  basemapProvider = _ref2.basemapProvider,
421
- latitude = _ref2.latitude;
421
+ latitude = _ref2.latitude,
422
+ zoom = _ref2.zoom;
422
423
  var config = globe.config;
423
424
  var isSatellite = mapStyleType === 'satellite';
424
425
  var isSatelliteStreet = mapStyleType === 'satellite-street';
@@ -432,7 +433,8 @@ var getGlobeBaseLayers = exports.getGlobeBaseLayers = function getGlobeBaseLayer
432
433
  var useCarto = provider === 'carto';
433
434
  var hasTileAccess = useCarto || Boolean(mapboxApiAccessToken);
434
435
  return [config.atmosphere ? (0, _atmosphereLayer.getGlobeAtmosphereSkyLayer)({
435
- config: config
436
+ config: config,
437
+ zoom: zoom
436
438
  }) : null,
437
439
  // Depth-only cross-section disk: writes depth at the globe's silhouette so
438
440
  // far-side geometry (arcs/lines) is occluded by the planet.
@@ -556,10 +558,12 @@ var getGlobeBaseLayers = exports.getGlobeBaseLayers = function getGlobeBaseLayer
556
558
  })].filter(Boolean);
557
559
  };
558
560
  var getGlobeTopLayers = exports.getGlobeTopLayers = function getGlobeTopLayers(_ref3) {
559
- var globe = _ref3.globe;
561
+ var globe = _ref3.globe,
562
+ zoom = _ref3.zoom;
560
563
  var config = globe.config;
561
564
  return [config.atmosphere ? (0, _atmosphereLayer.getGlobeAtmosphereLayer)({
562
- config: config
565
+ config: config,
566
+ zoom: zoom
563
567
  }) : null].filter(Boolean);
564
568
  };
565
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfbGF5ZXJzIiwiX2dlb0xheWVycyIsIl9hdG1vc3BoZXJlTGF5ZXIiLCJfZ2xvYmVEZXB0aERpc2tMYXllciIsIl9tdnRMYWJlbExheWVyIiwiZGV2aWNlUGl4ZWxSYXRpbyIsIk1hdGgiLCJtaW4iLCJ3aW5kb3ciLCJCQUNLR1JPVU5EX1BBUkFNRVRFUlMiLCJkZXB0aFRlc3QiLCJjdWxsIiwiZGVwdGhNYXNrIiwiQkFTRU1BUF9SQVNURVJfUEFSQU1FVEVSUyIsIkJBQ0tHUk9VTkRfREFUQSIsIkJBQ0tHUk9VTkRfTk9SVEhfUE9MRV9EQVRBIiwiREVGQVVMVF9CQVNFTUFQX0NPTE9SIiwiZXhwb3J0cyIsImJhY2tncm91bmRGaWxsQ29sb3IiLCJiYXNlbWFwRGVmYXVsdEZpbGxDb2xvciIsImJhc2VtYXBXYXRlckZpbGxDb2xvciIsImJhc2VtYXBEZWZhdWx0TGluZUNvbG9yIiwiYmFzZW1hcEFkbWluTGluZUNvbG9yIiwiYmFzZW1hcExhYmVsQ29sb3IiLCJnZXRQYWludENvbG9yIiwiY29sb3IiLCJBcnJheSIsImlzQXJyYXkiLCJjb2xvclN0cmluZ1RvUkdCIiwiaHNsTWF0Y2giLCJtYXRjaCIsImgiLCJwYXJzZUludCIsInMiLCJsIiwiciIsImciLCJiIiwiaHVlMnJnYiIsInAiLCJxIiwidCIsInJvdW5kIiwicmdiTWF0Y2giLCJoZXhNYXRjaCIsImhleCIsInNsaWNlIiwiZmluZEZpcnN0TGF5ZXJCeUdyb3VwIiwibGF5ZXJzIiwibGF5ZXJHcm91cHMiLCJncm91cFNsdWciLCJsYXllckdyb3VwIiwiZmluZCIsImdyb3VwIiwic2x1ZyIsImxheWVyIiwiZmlsdGVyIiwiZmluZEJhY2tncm91bmRDb2xvciIsInN0eWxlIiwiX2ZvdW5kIiwiZm91bmQiLCJpZCIsInR5cGUiLCJwYWludCIsImZpbmRXYXRlckNvbG9yIiwiX2ZvdW5kJHBhaW50IiwiZmluZEFkbWluQ29sb3IiLCJfYm9yZGVyTGF5ZXJzJHBhaW50IiwiYm9yZGVyTGF5ZXJzIiwibHlyIiwiZmluZExhYmVsQ29sb3IiLCJfbGFiZWxMYXllciIsImxhYmVsTGF5ZXIiLCJnZXRCYXNlbWFwQ29sb3JzIiwibWFwU3R5bGUiLCJfZmluZEJhY2tncm91bmRDb2xvciIsIl9maW5kV2F0ZXJDb2xvciIsIl9maW5kQWRtaW5Db2xvciIsIl9maW5kTGFiZWxDb2xvciIsIl9tYXBTdHlsZSRzdHlsZSIsInN0eWxlSnNvbiIsIl9tYXBTdHlsZSRsYXllckdyb3VwcyIsIktOT1dOX1NUWUxFX0NPTE9SUyIsImRhcmsiLCJsaWdodCIsInBvc2l0cm9uIiwidm95YWdlciIsIm11dGVkIiwibXV0ZWRfbmlnaHQiLCJnZXRCYXNlbWFwQ29sb3JzRm9yU3R5bGUiLCJzdHlsZVR5cGUiLCJfbWFwU3R5bGUkc3R5bGUyIiwibGVuZ3RoIiwiZ2V0R2xvYmVDbGVhckNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwiSU5WSVNJQkxFX0NPTE9SIiwiQkFTRU1BUF9NVlRfUEFSQU1FVEVSUyIsIk1BUEJPWF9HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQiLCJDQVJUT19HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQiLCJHTE9CRV9TQVRFTExJVEVfWk9PTV9PRkZTRVQiLCJHTE9CRV9USUxFX0VYVEVOVCIsIk1BUEJPWF9WRUNUT1JfTUFYX0RBVEFfWk9PTSIsIkNBUlRPX1ZFQ1RPUl9NQVhfREFUQV9aT09NIiwiem9vbUFkanVzdCIsImxhdGl0dWRlIiwibG9nMiIsIlBJIiwiY29zIiwiZ2xvYmVMYXRpdHVkZVpvb21Db21wZW5zYXRpb24iLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImNsYW1wZWQiLCJtYXgiLCJyZXNvbHZlR2xvYmVCYXNlbWFwUHJvdmlkZXIiLCJiYXNlTWFwTGlicmFyeSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiQ0FSVE9fVkVDVE9SX1RJTEVfVVJMUyIsIkVTUklfV09STERfSU1BR0VSWV9VUkwiLCJnZXRCYXNlbWFwTGF5ZXJLaW5kIiwibGF5ZXJOYW1lIiwiTUFQQk9YX0FUVFJJQlVUSU9OIiwibGFiZWwiLCJocmVmIiwiT1NNX0FUVFJJQlVUSU9OIiwiQ0FSVE9fQVRUUklCVVRJT04iLCJFU1JJX0FUVFJJQlVUSU9OIiwiZ2V0R2xvYmVCYXNlbWFwQXR0cmlidXRpb25zIiwiX3JlZiIsIl9nbG9iZSRjb25maWciLCJnbG9iZSIsIm1hcFN0eWxlVHlwZSIsImJhc2VtYXBQcm92aWRlciIsImVuYWJsZWQiLCJjb25maWciLCJiYXNlbWFwIiwicHJvdmlkZXIiLCJ1bmRlZmluZWQiLCJpc1NhdGVsbGl0ZSIsImdldEdsb2JlQmFzZUxheWVycyIsIl9yZWYyIiwiaXNTYXRlbGxpdGVTdHJlZXQiLCJsYXRab29tQ29tcGVuc2F0aW9uIiwidXNlQ2FydG8iLCJoYXNUaWxlQWNjZXNzIiwiQm9vbGVhbiIsImF0bW9zcGhlcmUiLCJnZXRHbG9iZUF0bW9zcGhlcmVTa3lMYXllciIsImdldEdsb2JlRGVwdGhEaXNrTGF5ZXIiLCJmaWxsQ29sb3IiLCJzdXJmYWNlQ29sb3IiLCJTb2xpZFBvbHlnb25MYXllciIsImRhdGEiLCJnZXRQb2x5Z29uIiwiZCIsImZpbGxlZCIsImdldEZpbGxDb2xvciIsInBhcmFtZXRlcnMiLCJ3YXRlciIsIndhdGVyQ29sb3IiLCJUaWxlTGF5ZXIiLCJjb25jYXQiLCJtaW5ab29tIiwibWF4Wm9vbSIsInpvb21PZmZzZXQiLCJleHRlbnQiLCJ0aWxlU2l6ZSIsInJlbmRlclN1YkxheWVycyIsInByb3BzIiwiX3Byb3BzJHRpbGUkYmJveCIsInRpbGUiLCJiYm94Iiwid2VzdCIsInNvdXRoIiwiZWFzdCIsIm5vcnRoIiwiQml0bWFwTGF5ZXIiLCJfaW1hZ2VDb29yZGluYXRlU3lzdGVtIiwiQ09PUkRJTkFURV9TWVNURU0iLCJDQVJURVNJQU4iLCJpbWFnZSIsImJvdW5kcyIsIk1WVExheWVyIiwiYmluYXJ5IiwibG9hZE9wdGlvbnMiLCJtdnQiLCJNVlRMYWJlbExheWVyIiwiZiIsInByb3BlcnRpZXMiLCJnZXRMaW5lQ29sb3IiLCJhZG1pbkxpbmVzIiwiYWRtaW5MaW5lc0NvbG9yIiwiZ2V0TGluZVdpZHRoIiwiYWRtaW5fbGV2ZWwiLCJ1cGRhdGVUcmlnZ2VycyIsImxpbmVXaWR0aFVuaXRzIiwibGluZVdpZHRoTWluUGl4ZWxzIiwibGluZVdpZHRoTWF4UGl4ZWxzIiwiZ2V0UG9pbnRSYWRpdXMiLCJwb2ludFJhZGl1c01pblBpeGVscyIsImdldEdsb2JlVG9wTGF5ZXJzIiwiX3JlZjMiLCJnZXRHbG9iZUF0bW9zcGhlcmVMYXllciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nbG9iZS9nbG9iZS1sYXllcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtDT09SRElOQVRFX1NZU1RFTSwgTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtTb2xpZFBvbHlnb25MYXllciwgQml0bWFwTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQge1RpbGVMYXllciwgTVZUTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2dlby1sYXllcnMnO1xuXG5pbXBvcnQgdHlwZSB7R2xvYmV9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHtSR0JDb2xvcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7Z2V0R2xvYmVBdG1vc3BoZXJlTGF5ZXIsIGdldEdsb2JlQXRtb3NwaGVyZVNreUxheWVyfSBmcm9tICcuL2F0bW9zcGhlcmUtbGF5ZXInO1xuaW1wb3J0IHtnZXRHbG9iZURlcHRoRGlza0xheWVyfSBmcm9tICcuL2dsb2JlLWRlcHRoLWRpc2stbGF5ZXInO1xuaW1wb3J0IHtNVlRMYWJlbExheWVyfSBmcm9tICcuL212dC1sYWJlbC1sYXllcic7XG5cbnR5cGUgTGF5ZXJHcm91cCA9IHtzbHVnOiBzdHJpbmc7IGZpbHRlcjogKGxheWVyOiBhbnkpID0+IGJvb2xlYW59O1xuXG5jb25zdCBkZXZpY2VQaXhlbFJhdGlvID0gTWF0aC5taW4oXG4gIDIsXG4gICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbykgfHwgMVxuKTtcblxuY29uc3QgQkFDS0dST1VORF9QQVJBTUVURVJTID0ge1xuICBkZXB0aFRlc3Q6IHRydWUsXG4gIGN1bGw6IHRydWUsXG4gIGRlcHRoTWFzazogZmFsc2Vcbn07XG5cbmNvbnN0IEJBU0VNQVBfUkFTVEVSX1BBUkFNRVRFUlMgPSB7XG4gIGRlcHRoTWFzazogZmFsc2Vcbn07XG5cbmNvbnN0IEJBQ0tHUk9VTkRfREFUQSA9IFtcbiAgW1xuICAgIFstMTgwLCA5MF0sXG4gICAgWzAsIDkwXSxcbiAgICBbMTgwLCA5MF0sXG4gICAgWzE4MCwgLTkwXSxcbiAgICBbMCwgLTkwXSxcbiAgICBbLTE4MCwgLTkwXVxuICBdXG5dO1xuXG5jb25zdCBCQUNLR1JPVU5EX05PUlRIX1BPTEVfREFUQSA9IFtcbiAgW1xuICAgIFstMTgwLCA5MF0sXG4gICAgWzAsIDkwXSxcbiAgICBbMTgwLCA5MF0sXG4gICAgWzE4MCwgODVdLFxuICAgIFswLCA4NV0sXG4gICAgWy0xODAsIDg1XVxuICBdXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CQVNFTUFQX0NPTE9SID0ge1xuICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBbOSwgMTYsIDI5XSBhcyBSR0JDb2xvcixcbiAgYmFzZW1hcERlZmF1bHRGaWxsQ29sb3I6IFsyNTUsIDI1NSwgMjU1XSBhcyBSR0JDb2xvcixcbiAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBbMTcsIDM1LCA0OF0gYXMgUkdCQ29sb3IsXG4gIGJhc2VtYXBEZWZhdWx0TGluZUNvbG9yOiBbNDAsIDYzLCA5M10gYXMgUkdCQ29sb3IsXG4gIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzQwLCA2MywgOTNdIGFzIFJHQkNvbG9yLFxuICBiYXNlbWFwTGFiZWxDb2xvcjogWzExNC43NSwgMTE0Ljc1LCAxMTQuNzVdIGFzIFJHQkNvbG9yXG59O1xuXG5mdW5jdGlvbiBnZXRQYWludENvbG9yKGNvbG9yOiBhbnkpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29sb3IpICYmIGNvbG9yWzBdID09PSAnaW50ZXJwb2xhdGUnKSB7XG4gICAgcmV0dXJuIGNvbG9yWzRdO1xuICB9XG4gIHJldHVybiBjb2xvcjtcbn1cblxuZnVuY3Rpb24gY29sb3JTdHJpbmdUb1JHQihjb2xvcjogc3RyaW5nIHwgbnVsbCk6IFJHQkNvbG9yIHwgbnVsbCB7XG4gIGlmICghY29sb3IpIHJldHVybiBudWxsO1xuICBpZiAodHlwZW9mIGNvbG9yICE9PSAnc3RyaW5nJykgcmV0dXJuIG51bGw7XG5cbiAgLy8gSGFuZGxlIGhzbCgpIGZvcm1hdFxuICBjb25zdCBoc2xNYXRjaCA9IGNvbG9yLm1hdGNoKC9oc2xcXChcXHMqKFxcZCspXFxzKixcXHMqKFxcZCspJVxccyosXFxzKihcXGQrKSVcXHMqXFwpLyk7XG4gIGlmIChoc2xNYXRjaCkge1xuICAgIGNvbnN0IGggPSBwYXJzZUludChoc2xNYXRjaFsxXSwgMTApIC8gMzYwO1xuICAgIGNvbnN0IHMgPSBwYXJzZUludChoc2xNYXRjaFsyXSwgMTApIC8gMTAwO1xuICAgIGNvbnN0IGwgPSBwYXJzZUludChoc2xNYXRjaFszXSwgMTApIC8gMTAwO1xuICAgIC8vIEhTTCB0byBSR0IgY29udmVyc2lvblxuICAgIGxldCByOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyO1xuICAgIGlmIChzID09PSAwKSB7XG4gICAgICByID0gZyA9IGIgPSBsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBodWUycmdiID0gKHA6IG51bWJlciwgcTogbnVtYmVyLCB0OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKHQgPCAwKSB0ICs9IDE7XG4gICAgICAgIGlmICh0ID4gMSkgdCAtPSAxO1xuICAgICAgICBpZiAodCA8IDEgLyA2KSByZXR1cm4gcCArIChxIC0gcCkgKiA2ICogdDtcbiAgICAgICAgaWYgKHQgPCAxIC8gMikgcmV0dXJuIHE7XG4gICAgICAgIGlmICh0IDwgMiAvIDMpIHJldHVybiBwICsgKHEgLSBwKSAqICgyIC8gMyAtIHQpICogNjtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgICB9O1xuICAgICAgY29uc3QgcSA9IGwgPCAwLjUgPyBsICogKDEgKyBzKSA6IGwgKyBzIC0gbCAqIHM7XG4gICAgICBjb25zdCBwID0gMiAqIGwgLSBxO1xuICAgICAgciA9IGh1ZTJyZ2IocCwgcSwgaCArIDEgLyAzKTtcbiAgICAgIGcgPSBodWUycmdiKHAsIHEsIGgpO1xuICAgICAgYiA9IGh1ZTJyZ2IocCwgcSwgaCAtIDEgLyAzKTtcbiAgICB9XG4gICAgcmV0dXJuIFtNYXRoLnJvdW5kKHIgKiAyNTUpLCBNYXRoLnJvdW5kKGcgKiAyNTUpLCBNYXRoLnJvdW5kKGIgKiAyNTUpXSBhcyBSR0JDb2xvcjtcbiAgfVxuXG4gIC8vIEhhbmRsZSByZ2IoKSBmb3JtYXRcbiAgY29uc3QgcmdiTWF0Y2ggPSBjb2xvci5tYXRjaCgvcmdiXFwoXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccypcXCkvKTtcbiAgaWYgKHJnYk1hdGNoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHBhcnNlSW50KHJnYk1hdGNoWzFdLCAxMCksXG4gICAgICBwYXJzZUludChyZ2JNYXRjaFsyXSwgMTApLFxuICAgICAgcGFyc2VJbnQocmdiTWF0Y2hbM10sIDEwKVxuICAgIF0gYXMgUkdCQ29sb3I7XG4gIH1cblxuICAvLyBIYW5kbGUgaGV4IGZvcm1hdFxuICBjb25zdCBoZXhNYXRjaCA9IGNvbG9yLm1hdGNoKC9eIyhbMC05YS1mXXs2fSkkL2kpO1xuICBpZiAoaGV4TWF0Y2gpIHtcbiAgICBjb25zdCBoZXggPSBoZXhNYXRjaFsxXTtcbiAgICByZXR1cm4gW1xuICAgICAgcGFyc2VJbnQoaGV4LnNsaWNlKDAsIDIpLCAxNiksXG4gICAgICBwYXJzZUludChoZXguc2xpY2UoMiwgNCksIDE2KSxcbiAgICAgIHBhcnNlSW50KGhleC5zbGljZSg0LCA2KSwgMTYpXG4gICAgXSBhcyBSR0JDb2xvcjtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBmaW5kRmlyc3RMYXllckJ5R3JvdXAobGF5ZXJzOiBhbnlbXSwgbGF5ZXJHcm91cHM6IExheWVyR3JvdXBbXSwgZ3JvdXBTbHVnOiBzdHJpbmcpIHtcbiAgY29uc3QgbGF5ZXJHcm91cCA9IGxheWVyR3JvdXBzLmZpbmQoZ3JvdXAgPT4gZ3JvdXAuc2x1ZyA9PT0gZ3JvdXBTbHVnKTtcbiAgaWYgKCFsYXllckdyb3VwKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIGxheWVycy5maW5kKGxheWVyID0+IGxheWVyR3JvdXAuZmlsdGVyKGxheWVyKSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRCYWNrZ3JvdW5kQ29sb3Ioc3R5bGU6IGFueSk6IFJHQkNvbG9yIHwgbnVsbCB7XG4gIGxldCBmb3VuZCA9IHN0eWxlLmxheWVycy5maW5kKChsOiBhbnkpID0+IGwuaWQgPT09ICdiYWNrZ3JvdW5kJyB8fCBsLmlkID09PSAnbGFuZCcpO1xuICBmb3VuZCA9IGZvdW5kIHx8IHN0eWxlLmxheWVycy5maW5kKChsOiBhbnkpID0+IGwudHlwZSA9PT0gJ2JhY2tncm91bmQnKTtcbiAgcmV0dXJuIGNvbG9yU3RyaW5nVG9SR0IoZ2V0UGFpbnRDb2xvcihmb3VuZD8ucGFpbnQ/LlsnYmFja2dyb3VuZC1jb2xvciddKSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRXYXRlckNvbG9yKHN0eWxlOiBhbnksIGxheWVyR3JvdXBzOiBMYXllckdyb3VwW10pOiBSR0JDb2xvciB8IG51bGwge1xuICBjb25zdCBmb3VuZCA9XG4gICAgc3R5bGUubGF5ZXJzLmZpbmQoKGw6IGFueSkgPT4gbC5pZCA9PT0gJ3dhdGVyJykgfHxcbiAgICBmaW5kRmlyc3RMYXllckJ5R3JvdXAoc3R5bGUubGF5ZXJzLCBsYXllckdyb3VwcywgJ3dhdGVyJyk7XG4gIHJldHVybiBjb2xvclN0cmluZ1RvUkdCKGZvdW5kPy5wYWludD8uWydmaWxsLWNvbG9yJ10pO1xufVxuXG5mdW5jdGlvbiBmaW5kQWRtaW5Db2xvcihzdHlsZTogYW55LCBsYXllckdyb3VwczogTGF5ZXJHcm91cFtdKTogUkdCQ29sb3IgfCBudWxsIHtcbiAgY29uc3QgYm9yZGVyTGF5ZXJzID1cbiAgICBzdHlsZS5sYXllcnMuZmluZCgobHlyOiBhbnkpID0+IGx5ci5pZCA9PT0gJ2FkbWluLTMtNC1ib3VuZGFyaWVzJykgfHxcbiAgICBmaW5kRmlyc3RMYXllckJ5R3JvdXAoc3R5bGUubGF5ZXJzLCBsYXllckdyb3VwcywgJ2JvcmRlcicpO1xuICByZXR1cm4gY29sb3JTdHJpbmdUb1JHQihib3JkZXJMYXllcnM/LnBhaW50Py5bJ2xpbmUtY29sb3InXSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRMYWJlbENvbG9yKHN0eWxlOiBhbnksIGxheWVyR3JvdXBzOiBMYXllckdyb3VwW10pOiBSR0JDb2xvciB8IG51bGwge1xuICBsZXQgbGFiZWxMYXllciA9IHN0eWxlLmxheWVycy5maW5kKFxuICAgIChseXI6IGFueSkgPT4gbHlyLmlkID09PSAnY291bnRyeS1sYWJlbC1sZycgJiYgbHlyLnR5cGUgPT09ICdzeW1ib2wnXG4gICk7XG4gIGxhYmVsTGF5ZXIgPVxuICAgIGxhYmVsTGF5ZXIgfHxcbiAgICBzdHlsZS5sYXllcnMuZmluZCgobHlyOiBhbnkpID0+IGx5ci5pZCA9PT0gJ2NvdW50cnktbGFiZWwnICYmIGx5ci50eXBlID09PSAnc3ltYm9sJyk7XG4gIGxhYmVsTGF5ZXIgPSBsYWJlbExheWVyIHx8IGZpbmRGaXJzdExheWVyQnlHcm91cChzdHlsZS5sYXllcnMsIGxheWVyR3JvdXBzLCAnbGFiZWwnKTtcbiAgcmV0dXJuIGNvbG9yU3RyaW5nVG9SR0IobGFiZWxMYXllcj8ucGFpbnQ/LlsndGV4dC1jb2xvciddKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEJhc2VtYXBDb2xvcnMgPSAoXG4gIG1hcFN0eWxlOiBQYXJ0aWFsPHtzdHlsZTogYW55OyBsYXllckdyb3VwczogTGF5ZXJHcm91cFtdfT5cbik6IHtcbiAgYmFja2dyb3VuZEZpbGxDb2xvcjogUkdCQ29sb3I7XG4gIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogUkdCQ29sb3I7XG4gIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogUkdCQ29sb3I7XG4gIGJhc2VtYXBMYWJlbENvbG9yOiBSR0JDb2xvcjtcbn0gPT4ge1xuICBjb25zdCB7c3R5bGU6IHN0eWxlSnNvbiA9IHtsYXllcnM6IFtdfSwgbGF5ZXJHcm91cHMgPSBbXX0gPSBtYXBTdHlsZTtcblxuICByZXR1cm4ge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6XG4gICAgICBmaW5kQmFja2dyb3VuZENvbG9yKHN0eWxlSnNvbikgPz8gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhY2tncm91bmRGaWxsQ29sb3IsXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOlxuICAgICAgZmluZFdhdGVyQ29sb3Ioc3R5bGVKc29uLCBsYXllckdyb3VwcykgPz8gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBXYXRlckZpbGxDb2xvcixcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6XG4gICAgICBmaW5kQWRtaW5Db2xvcihzdHlsZUpzb24sIGxheWVyR3JvdXBzKSA/PyBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFzZW1hcEFkbWluTGluZUNvbG9yLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOlxuICAgICAgZmluZExhYmVsQ29sb3Ioc3R5bGVKc29uLCBsYXllckdyb3VwcykgPz8gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBMYWJlbENvbG9yXG4gIH07XG59O1xuXG4vLyBQcmVkZWZpbmVkIGNvbG9yIHNjaGVtZXMgZm9yIHdlbGwta25vd24gYmFzZW1hcCBzdHlsZXNcbmNvbnN0IEtOT1dOX1NUWUxFX0NPTE9SUzogUmVjb3JkPFxuICBzdHJpbmcsXG4gIHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBSR0JDb2xvcjtcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFJHQkNvbG9yO1xuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogUkdCQ29sb3I7XG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IFJHQkNvbG9yO1xuICB9XG4+ID0ge1xuICBkYXJrOiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzE1LCAxNSwgMTVdLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzEwLCAyMCwgMzVdLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzYwLCA2MCwgODBdLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBbMTUwLCAxNTAsIDE1MF1cbiAgfSxcbiAgJ2RhcmstbWF0dGVyJzoge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IFsxOCwgMTgsIDE4XSxcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFsxNCwgMTksIDI5XSxcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFs1MCwgNTAsIDYwXSxcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogWzEzMCwgMTMwLCAxMzBdXG4gIH0sXG4gIGxpZ2h0OiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzIzNSwgMjMzLCAyMjhdLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzE3MCwgMjExLCAyMjNdLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzE4MCwgMTc1LCAxNzBdLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBbODAsIDgwLCA4MF1cbiAgfSxcbiAgcG9zaXRyb246IHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBbMjQyLCAyMzksIDIzM10sXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBbMTc0LCAyMDksIDIyMF0sXG4gICAgYmFzZW1hcEFkbWluTGluZUNvbG9yOiBbMTkwLCAxODUsIDE4MF0sXG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IFs5MCwgOTAsIDkwXVxuICB9LFxuICB2b3lhZ2VyOiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzIzNCwgMjI5LCAyMjBdLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzE3MCwgMjExLCAyMjNdLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzE4MCwgMTcwLCAxNjBdLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBbNzAsIDcwLCA3MF1cbiAgfSxcbiAgbXV0ZWQ6IHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBbMjI1LCAyMjUsIDIxOF0sXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBbMTgwLCAyMTAsIDIyMF0sXG4gICAgYmFzZW1hcEFkbWluTGluZUNvbG9yOiBbMTcwLCAxNjUsIDE2MF0sXG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IFs5MCwgOTAsIDkwXVxuICB9LFxuICBtdXRlZF9uaWdodDoge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IFsyMiwgMjYsIDMwXSxcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFsxNSwgMjUsIDQwXSxcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFs1NSwgNjAsIDcwXSxcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogWzE0MCwgMTQwLCAxNDBdXG4gIH1cbn07XG5cbi8qKlxuICogR2V0IGJhc2VtYXAgY29sb3JzIGVpdGhlciBmcm9tIHRoZSBzdHlsZSBKU09OIG9yIGZyb20ga25vd24gc3R5bGUgcHJlc2V0cy5cbiAqIEZhbGxzIGJhY2sgdG8gZGVmYXVsdCBkYXJrIGNvbG9ycyBpZiBzdHlsZSBpcyB1bmtub3duIGFuZCBubyBKU09OIGlzIGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEJhc2VtYXBDb2xvcnNGb3JTdHlsZSA9IChcbiAgc3R5bGVUeXBlOiBzdHJpbmcsXG4gIG1hcFN0eWxlPzogUGFydGlhbDx7c3R5bGU6IGFueTsgbGF5ZXJHcm91cHM6IExheWVyR3JvdXBbXX0+XG4pOiB7XG4gIGJhY2tncm91bmRGaWxsQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwTGFiZWxDb2xvcjogUkdCQ29sb3I7XG59ID0+IHtcbiAgLy8gVHJ5IHRvIGV4dHJhY3QgZnJvbSBzdHlsZSBKU09OIGZpcnN0XG4gIGlmIChtYXBTdHlsZT8uc3R5bGU/LmxheWVycz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGdldEJhc2VtYXBDb2xvcnMobWFwU3R5bGUpO1xuICB9XG4gIC8vIEZhbGwgYmFjayB0byBrbm93biBzdHlsZSBwcmVzZXRzXG4gIGlmIChLTk9XTl9TVFlMRV9DT0xPUlNbc3R5bGVUeXBlXSkge1xuICAgIHJldHVybiBLTk9XTl9TVFlMRV9DT0xPUlNbc3R5bGVUeXBlXTtcbiAgfVxuICAvLyBEZWZhdWx0IGRhcmsgY29sb3JzXG4gIHJldHVybiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhY2tncm91bmRGaWxsQ29sb3IsXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFzZW1hcFdhdGVyRmlsbENvbG9yLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBBZG1pbkxpbmVDb2xvcixcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBMYWJlbENvbG9yXG4gIH07XG59O1xuXG4vKipcbiAqIENsZWFyIGNvbG9yIChiYWNrZ3JvdW5kIGFyb3VuZCB0aGUgZ2xvYmUpIGZvciBnbG9iZSBtb2RlLCBpbiBSR0JBIDAtMjU1IGFzXG4gKiBleHBlY3RlZCBieSBkZWNrLmdsJ3MgVmlldyBgY2xlYXJDb2xvcmAgcHJvcCAoZGVjay5nbCA+PSA5IG5vIGxvbmdlciBzdXBwb3J0c1xuICogdGhlIGdsb2JhbCBgcGFyYW1ldGVycy5jbGVhckNvbG9yYDsgaXQgbXVzdCBiZSBzZXQgcGVyLXZpZXcgd2l0aCBgY2xlYXI6IHRydWVgKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdsb2JlQ2xlYXJDb2xvcihcbiAgYmFja2dyb3VuZENvbG9yPzogW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgbnVtYmVyW11cbik6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgaWYgKGJhY2tncm91bmRDb2xvcikge1xuICAgIHJldHVybiBbYmFja2dyb3VuZENvbG9yWzBdLCBiYWNrZ3JvdW5kQ29sb3JbMV0sIGJhY2tncm91bmRDb2xvclsyXSwgMjU1XTtcbiAgfVxuICAvLyBEZWZhdWx0IG1hdGNoZXMgdGhlIHByZXZpb3VzIGhhcmRjb2RlZCBjbGVhciBjb2xvciBbMC4wMTUsIDAuMDM1LCAwLjA2NV0gaW4gMC0xIHNwYWNlLlxuICByZXR1cm4gWzQsIDksIDE3LCAyNTVdO1xufVxuXG5jb25zdCBJTlZJU0lCTEVfQ09MT1I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzAsIDAsIDAsIDBdO1xuXG5jb25zdCBCQVNFTUFQX01WVF9QQVJBTUVURVJTID0ge1xuICAvLyBPY2NsdWRlIHRoZSBmYXIgc2lkZSBvZiB0aGUgZ2xvYmUgdmlhIHRoZSBERVBUSCBESVNLIChnZXRHbG9iZURlcHRoRGlza0xheWVyKVxuICAvLyByYXRoZXIgdGhhbiBiYWNrLWZhY2UgY3VsbGluZy4gR2xvYmUgbW9kZSBzZXRzIGEgZ2xvYmFsIGBjdWxsOiB0cnVlYCBmb3IgdGhlXG4gIC8vIG9wYXF1ZSBzcGhlcmUgc3VyZmFjZSwgYnV0IGJhY2stZmFjZSBjdWxsaW5nIHJlbGllcyBvbiBzdGFibGUgdHJpYW5nbGVcbiAgLy8gd2luZGluZyDigJQgYW5kIGRlY2suZ2wgOSdzIGdsb2JlIHByb2plY3Rpb24gbG9zZXMgcHJlY2lzaW9uIGF0IGhpZ2ggem9vbVxuICAvLyAoZmxvYXQzMiksIGZsaXBwaW5nIHRoZSB3aW5kaW5nIG9mIHRoZSBzbWFsbCBhZG1pbi93YXRlciB0cmlhbmdsZXMgc28gdGhleVxuICAvLyBnZXQgd3JvbmdseSBjdWxsZWQgYW5kIHRoZSBnZW9tZXRyeSB2YW5pc2hlcyBwYXN0IH56b29tIDEyICh5b3UgdGhlbiBzZWVcbiAgLy8gdGhyb3VnaCB0byB0aGUgZmFyIHNpZGUgLyBcImRpZmZlcmVudCBnZW9tZXRyeVwiKS4gRGVwdGggdGVzdGluZyBhZ2FpbnN0IHRoZSBkaXNrXG4gIC8vIGlzIGEgcHJlY2lzaW9uLXJvYnVzdCBvY2NsdWRlciB0aGF0IHdvcmtzIGF0IGFueSB6b29tLCBzbzpcbiAgLy8gICAtIGN1bGw6IGZhbHNlICAgICDihpIgZG9uJ3Qgd2luZGluZy1jdWxsIHRoZSBuZWFyLXNpZGUgZ2VvbWV0cnlcbiAgLy8gICAtIGRlcHRoVGVzdDogdHJ1ZSDihpIgZmFyLXNpZGUgZ2VvbWV0cnkgKGJlaGluZCB0aGUgZGlzaykgZmFpbHMgZGVwdGgsIGhpZGRlblxuICAvLyAgIC0gZGVwdGhNYXNrOiBmYWxzZSDihpIgZG9uJ3Qgd3JpdGUgZGVwdGggKGF2b2lkIHNlbGYgei1maWdodGluZyBvbiB0aGUgc2hlbGwpXG4gIC8vIFJhc3RlciB0aWxlcyBhcmUgdW5hZmZlY3RlZCAodGhlaXIgNC1jb3JuZXIgcXVhZHMga2VlcCBzdGFibGUgd2luZGluZyksIHdoaWNoXG4gIC8vIGlzIHdoeSBzYXRlbGxpdGUgYWxyZWFkeSB6b29tcyB0byBtYXggY2xlYW5seS4gTGFiZWxzIGRpc2FibGUgY3VsbCBmb3IgdGhlXG4gIC8vIHNhbWUgcmVhc29uIChzZWUgbXZ0LWxhYmVsLWxheWVyLnRzKS5cbiAgZGVwdGhUZXN0OiB0cnVlLFxuICBkZXB0aE1hc2s6IGZhbHNlLFxuICBjdWxsOiBmYWxzZVxufTtcblxuLy8gZGVjay5nbCA5J3MgZ2xvYmUgc2VsZWN0cyBmaW5lciB0aWxlcyB0aGFuIG5lZWRlZCBmb3IgYSBnaXZlbiB2aWV3IChpdHNcbi8vIEdsb2JlVmlld3BvcnQgc2NhbGUgaXMgfjN4IHNtYWxsZXIgdGhhbiB0aGUgZXF1aXZhbGVudCBtZXJjYXRvciB6b29tKSwgc28gYmlhc1xuLy8gdmVjdG9yIHRpbGUgc2VsZWN0aW9uIGNvYXJzZXIgdG8ga2VlcCB0aGUgdGlsZSBjb3VudCDigJQgYW5kIHRodXMgcGVyZm9ybWFuY2Ug4oCUXG4vLyBpbiBjaGVjay4gVGhpcyB0cmFkZXMgYSBsaXR0bGUgZGV0YWlsIGZvciBmYXIgZmV3ZXIgdGlsZXM7IG1ha2UgaXQgbGVzcyBuZWdhdGl2ZVxuLy8gKHRvd2FyZCAwKSBmb3Igc2hhcnBlciBkZXRhaWwsIG9yIG1vcmUgbmVnYXRpdmUgZm9yIG1vcmUgcGVyZi5cbi8vIFRoZXNlIGFyZSAqYmFzZSogb2Zmc2V0czogZ2xvYmVMYXRpdHVkZVpvb21Db21wZW5zYXRpb24gaXMgYWRkZWQgb24gdG9wIGF0IGRyYXdcbi8vIHRpbWUsIHNvIHRoZSBlZmZlY3RpdmUgem9vbU9mZnNldCBvbmx5IGVxdWFscyB0aGVzZSBleGFjdCB2YWx1ZXMgYXQgdGhlIGVxdWF0b3IuXG4vLyBTYXRlbGxpdGUgcmFzdGVyIHVzZXMgYmFzZSAwIOKAlCBpdCBkb2Vzbid0IG5lZWQgdGhlIHZlY3RvciBiaWFzIChhIGNvYXJzZXIgcmFzdGVyXG4vLyB0aWxlIGp1c3QgbG9va3Mgc29mdGVyIHJhdGhlciB0aGFuIGRyb3BwaW5nIGZlYXR1cmVzKS5cbmNvbnN0IE1BUEJPWF9HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQgPSAtMjtcbmNvbnN0IENBUlRPX0dMT0JFX1ZFQ1RPUl9aT09NX09GRlNFVCA9IC0yO1xuY29uc3QgR0xPQkVfU0FURUxMSVRFX1pPT01fT0ZGU0VUID0gMDtcblxuLy8gV2hvbGUtd29ybGQgdGlsZSBleHRlbnQgKFdlYiBNZXJjYXRvciBsYXRpdHVkZSBsaW1pdCkuIFJlcXVpcmVkIHdoZW5ldmVyIGFcbi8vIG5lZ2F0aXZlIGB6b29tT2Zmc2V0YCBpcyB1c2VkOiBkZWNrJ3MgYGdldFRpbGVJbmRpY2VzYCByZXR1cm5zIE5PIHRpbGVzIHdoZW5cbi8vIHRoZSB0YXJnZXQgem9vbSBkcm9wcyBiZWxvdyBgbWluWm9vbWAgKnVubGVzcyogYW4gYGV4dGVudGAgaXMgc2V0IChpbiB3aGljaFxuLy8gY2FzZSBpdCBjbGFtcHMgdG8gYG1pblpvb21gIGluc3RlYWQpLiBXaXRob3V0IHRoaXMsIHpvb21pbmcgb3V0IG9yIHBhbm5pbmdcbi8vIHRvd2FyZCB0aGUgcG9sZXMgKHdoZXJlIGRlY2sgOSdzIGdsb2JlIGNvbnRyb2xsZXIgbG93ZXJzIHRoZSBlZmZlY3RpdmUgem9vbSlcbi8vIG1ha2VzIHRoZSB3aG9sZSBnbG9iZSBiYXNlbWFwIGRpc2FwcGVhci5cbmNvbnN0IEdMT0JFX1RJTEVfRVhURU5UOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFtcbiAgLTE4MCwgLTg1LjA1MTEyOSwgMTgwLCA4NS4wNTExMjlcbl07XG5cbi8vIE1heCAqbmF0aXZlKiB6b29tIG9mIGVhY2ggdmVjdG9yIHRpbGUgc291cmNlLiBTZXQgdGhpcyAobm90IGFuIGFyYml0cmFyaWx5XG4vLyBoaWdoIG51bWJlcikgc28gZGVjayBvdmVyem9vbXMg4oCUIGkuZS4ga2VlcHMgcmVuZGVyaW5nIHRoZSBkZWVwZXN0IHJlYWwgdGlsZVxuLy8gd2hlbiB0aGUgdmlldyB6b29tcyBwYXN0IGl0IOKAlCBpbnN0ZWFkIG9mIHJlcXVlc3RpbmcgdGlsZXMgdGhhdCBkb24ndCBleGlzdFxuLy8gYW5kIDQwNCAod2hpY2ggc2hvd3MgdXAgYXMgZW1wdHkgcmVjdGFuZ2xlcykuIFRoZSByYXcgYC52ZWN0b3IucGJmYCAvYC5tdnRgXG4vLyBlbmRwb2ludHMgZG8gTk9UIGF1dG8tb3Zlcnpvb20gdGhlIHdheSBNYXBib3ggR0wgZG9lcy5cbi8vICAgLSBtYXBib3gtc3RyZWV0cy12OCBoYXMgZGF0YSB1cCB0byB6MTZcbi8vICAgLSBDQVJUTyBjYXJ0by5zdHJlZXRzIHYxIGhhcyBkYXRhIHVwIHRvIHoxNFxuY29uc3QgTUFQQk9YX1ZFQ1RPUl9NQVhfREFUQV9aT09NID0gMTY7XG5jb25zdCBDQVJUT19WRUNUT1JfTUFYX0RBVEFfWk9PTSA9IDE0O1xuXG4vKipcbiAqIGRlY2suZ2wgOSdzIGdsb2JlIGNvdXBsZXMgem9vbSB0byBsYXRpdHVkZSB2aWEgYHpvb21BZGp1c3RgIChzZWVcbiAqIGdsb2JlLXZpZXdwb3J0LmpzKTogYHNjYWxlID0gMl4oem9vbSAtIHpvb21BZGp1c3QobGF0KSlgLCBhbmQgaXRzIGNvbnRyb2xsZXJcbiAqICpsb3dlcnMqIHRoZSBzdG9yZWQgYHpvb21gIGFzIHlvdSBwYW4gdG93YXJkIHRoZSBwb2xlcyB0byBrZWVwIHRoZSBnbG9iZSdzXG4gKiBvbi1zY3JlZW4gc2l6ZSBjb25zdGFudC4gVGlsZSBMT0QsIGhvd2V2ZXIsIGlzIHNlbGVjdGVkIGZyb20gdGhlIHJhdyBgem9vbWAsXG4gKiBzbyByb3RhdGluZyB0b3dhcmQgYSBwb2xlIHNpbGVudGx5IGRyb3BzIHRoZSBMT0QgYW5kIHRoaW5zIG91dCBsYWJlbHMuXG4gKiBSZXBsaWNhdGVkIGZyb20gYEBkZWNrLmdsL2NvcmVgIGdsb2JlLXZpZXdwb3J0LmpzIGB6b29tQWRqdXN0YC5cbiAqL1xuZnVuY3Rpb24gem9vbUFkanVzdChsYXRpdHVkZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubG9nMihNYXRoLlBJICogTWF0aC5jb3MoKGxhdGl0dWRlICogTWF0aC5QSSkgLyAxODApKTtcbn1cblxuLyoqXG4gKiBMYXRpdHVkZSBjb21wZW5zYXRpb24gdG8gYWRkIHRvIGEgZ2xvYmUgdGlsZSBsYXllcidzIGB6b29tT2Zmc2V0YCwgc28gdGlsZSBMT0RcbiAqIHRyYWNrcyB0aGUgKnZpc3VhbCogKG9uLXNjcmVlbikgc2NhbGUgaW5zdGVhZCBvZiB0aGUgbGF0aXR1ZGUtYWRqdXN0ZWQgbWVyY2F0b3JcbiAqIHpvb20uIFRoaXMgY2FuY2VscyB0aGUgcGFuLWluZHVjZWQgem9vbSBkcm9wLCBrZWVwaW5nIHRpbGUgZGV0YWlsL2xhYmVsc1xuICogY29uc3RhbnQgd2hpbGUgcm90YXRpbmcgdG93YXJkIHRoZSBwb2xlcy5cbiAqL1xuZnVuY3Rpb24gZ2xvYmVMYXRpdHVkZVpvb21Db21wZW5zYXRpb24obGF0aXR1ZGU/OiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAobGF0aXR1ZGUgPT0gbnVsbCB8fCAhTnVtYmVyLmlzRmluaXRlKGxhdGl0dWRlKSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIC8vIENsYW1wIGF3YXkgZnJvbSB0aGUgcG9sZXMgdG8gYXZvaWQgbG9nMigwKSA9IC1JbmZpbml0eSBhdCB8bGF0fCA9IDkwLlxuICBjb25zdCBjbGFtcGVkID0gTWF0aC5tYXgoLTg1LCBNYXRoLm1pbig4NSwgbGF0aXR1ZGUpKTtcbiAgcmV0dXJuIHpvb21BZGp1c3QoMCkgLSB6b29tQWRqdXN0KGNsYW1wZWQpO1xufVxuXG4vKipcbiAqIEdsb2JlIGJhc2VtYXAgdGlsZSBwcm92aWRlci5cbiAqXG4gKiAtIGBtYXBib3hgIHVzZXMgTWFwYm94IHZlY3Rvci9yYXN0ZXIgdGlsZXMgYW5kIHJlcXVpcmVzIGFuIGFjY2VzcyB0b2tlbi5cbiAqIC0gYGNhcnRvYCB1c2VzIENBUlRPJ3MgZnJlZSBPcGVuTWFwVGlsZXMgdmVjdG9yIHRpbGVzICsgRXNyaSBXb3JsZCBJbWFnZXJ5XG4gKiAgIHJhc3RlciwgYW5kIG5lZWRzIG5vIHRva2VuLiBVc2VkIGFzIGFuIGF1dG9tYXRpYyBmYWxsYmFjayB3aGVuIG5vIE1hcGJveFxuICogICB0b2tlbiBpcyBhdmFpbGFibGUgKGUuZy4gTWFwTGlicmUgLyBDQVJUTyBiYXNlbWFwIHNldHVwcyksIHNvIHRoZSBnbG9iZVxuICogICBiYXNlbWFwIHN0aWxsIHJlbmRlcnMgaW5zdGVhZCBvZiBzaG93aW5nIGEgc29saWQtY29sb3Igc3BoZXJlLlxuICovXG5leHBvcnQgdHlwZSBHbG9iZUJhc2VtYXBQcm92aWRlciA9ICdtYXBib3gnIHwgJ2NhcnRvJztcblxuLyoqXG4gKiBSZXNvbHZlIHdoaWNoIGdsb2JlIGJhc2VtYXAgdGlsZSBwcm92aWRlciB0byB1c2UuXG4gKlxuICogVGhlIGdsb2JlIHNob3VsZCBmb2xsb3cgdGhlICpzZWxlY3RlZCBiYXNlbWFwIHN0eWxlJ3MqIHJlbmRlcmluZyBsaWJyYXJ5IHNvXG4gKiBpdCBzdGF5cyBjb25zaXN0ZW50IHdpdGggdGhlIGZsYXQgMkQgbWFwOiBhIE1hcExpYnJlL0NBUlRPIHN0eWxlIHVzZXMgdGhlXG4gKiBmcmVlIENBUlRPIHRpbGVzIChldmVuIHdoZW4gYSBNYXBib3ggdG9rZW4gaXMgYXZhaWxhYmxlKSwgYW5kIGEgTWFwYm94IHN0eWxlXG4gKiB1c2VzIE1hcGJveCB0aWxlcy4gQSBNYXBib3ggc3R5bGUgd2l0aCBubyB0b2tlbiBmYWxscyBiYWNrIHRvIENBUlRPIHNvIHRoZVxuICogZ2xvYmUgc3RpbGwgcmVuZGVycyBpbnN0ZWFkIG9mIHNob3dpbmcgYSBiYXJlIGNvbG9yZWQgc3BoZXJlLlxuICpcbiAqIEBwYXJhbSBiYXNlTWFwTGlicmFyeSB0aGUgc2VsZWN0ZWQgc3R5bGUncyBsaWJyYXJ5ICgnbWFwYm94JyB8ICdtYXBsaWJyZScpLFxuICogICBlLmcuIGZyb20gYGdldEJhc2VNYXBMaWJyYXJ5KGN1cnJlbnRTdHlsZSlgLlxuICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZUdsb2JlQmFzZW1hcFByb3ZpZGVyID0gKFxuICBiYXNlTWFwTGlicmFyeTogJ21hcGJveCcgfCAnbWFwbGlicmUnIHwgdW5kZWZpbmVkLFxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbj86IHN0cmluZ1xuKTogR2xvYmVCYXNlbWFwUHJvdmlkZXIgPT4ge1xuICBpZiAoYmFzZU1hcExpYnJhcnkgPT09ICdtYXBsaWJyZScpIHtcbiAgICByZXR1cm4gJ2NhcnRvJztcbiAgfVxuICBpZiAoYmFzZU1hcExpYnJhcnkgPT09ICdtYXBib3gnKSB7XG4gICAgcmV0dXJuIG1hcGJveEFwaUFjY2Vzc1Rva2VuID8gJ21hcGJveCcgOiAnY2FydG8nO1xuICB9XG4gIC8vIFVua25vd24gbGlicmFyeTogcHJlZmVyIE1hcGJveCB3aGVuIGEgdG9rZW4gZXhpc3RzLCBvdGhlcndpc2UgQ0FSVE8uXG4gIHJldHVybiBtYXBib3hBcGlBY2Nlc3NUb2tlbiA/ICdtYXBib3gnIDogJ2NhcnRvJztcbn07XG5cbi8vIENBUlRPIGZyZWUgdmVjdG9yIHRpbGVzIChPcGVuTWFwVGlsZXMgc2NoZW1hLCBubyBBUEkga2V5IHJlcXVpcmVkKS5cbmNvbnN0IENBUlRPX1ZFQ1RPUl9USUxFX1VSTFMgPSBbXG4gICdodHRwczovL3RpbGVzLWEuYmFzZW1hcHMuY2FydG9jZG4uY29tL3ZlY3RvcnRpbGVzL2NhcnRvLnN0cmVldHMvdjEve3p9L3t4fS97eX0ubXZ0JyxcbiAgJ2h0dHBzOi8vdGlsZXMtYi5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vdmVjdG9ydGlsZXMvY2FydG8uc3RyZWV0cy92MS97en0ve3h9L3t5fS5tdnQnLFxuICAnaHR0cHM6Ly90aWxlcy1jLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS92ZWN0b3J0aWxlcy9jYXJ0by5zdHJlZXRzL3YxL3t6fS97eH0ve3l9Lm12dCcsXG4gICdodHRwczovL3RpbGVzLWQuYmFzZW1hcHMuY2FydG9jZG4uY29tL3ZlY3RvcnRpbGVzL2NhcnRvLnN0cmVldHMvdjEve3p9L3t4fS97eX0ubXZ0J1xuXTtcblxuLy8gRnJlZSBzYXRlbGxpdGUgcmFzdGVyIGZhbGxiYWNrIChFc3JpIFdvcmxkIEltYWdlcnksIG5vIEFQSSBrZXkgcmVxdWlyZWQpLlxuY29uc3QgRVNSSV9XT1JMRF9JTUFHRVJZX1VSTCA9XG4gICdodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX0ltYWdlcnkvTWFwU2VydmVyL3RpbGUve3p9L3t5fS97eH0nO1xuXG4vKipcbiAqIE1hcHMgYSByYXcgTVZUIHNvdXJjZS1sYXllciBuYW1lIHRvIGEgbm9ybWFsaXplZCBzZW1hbnRpYyBsYXllciBraW5kLCBzbyB0aGVcbiAqIGZpbGwvbGluZS9sYWJlbCBhY2Nlc3NvcnMgd29yayBhY3Jvc3MgYm90aCB0aGUgTWFwYm94IChgbWFwYm94LXN0cmVldHMtdjhgKVxuICogYW5kIENBUlRPL09wZW5NYXBUaWxlcyBzY2hlbWFzLlxuICpcbiAqIHwgc2VtYW50aWMgfCBtYXBib3ggICAgICAgIHwgb3Blbm1hcHRpbGVzIHxcbiAqIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tIHxcbiAqIHwgd2F0ZXIgICAgfCBgd2F0ZXJgICAgICAgIHwgYHdhdGVyYCAgICAgIHxcbiAqIHwgYWRtaW4gICAgfCBgYWRtaW5gICAgICAgIHwgYGJvdW5kYXJ5YCAgIHxcbiAqIHwgbGFiZWwgICAgfCBgcGxhY2VfbGFiZWxgIHwgYHBsYWNlYCAgICAgIHxcbiAqL1xudHlwZSBCYXNlbWFwTGF5ZXJLaW5kID0gJ3dhdGVyJyB8ICdhZG1pbicgfCAnbGFiZWwnIHwgJ290aGVyJztcblxuZnVuY3Rpb24gZ2V0QmFzZW1hcExheWVyS2luZChsYXllck5hbWU/OiBzdHJpbmcpOiBCYXNlbWFwTGF5ZXJLaW5kIHtcbiAgc3dpdGNoIChsYXllck5hbWUpIHtcbiAgICBjYXNlICd3YXRlcic6XG4gICAgICByZXR1cm4gJ3dhdGVyJztcbiAgICBjYXNlICdhZG1pbic6XG4gICAgY2FzZSAnYm91bmRhcnknOlxuICAgICAgcmV0dXJuICdhZG1pbic7XG4gICAgY2FzZSAncGxhY2VfbGFiZWwnOlxuICAgIGNhc2UgJ3BsYWNlJzpcbiAgICAgIHJldHVybiAnbGFiZWwnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ290aGVyJztcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBHbG9iZUF0dHJpYnV0aW9uID0ge2xhYmVsOiBzdHJpbmc7IGhyZWY6IHN0cmluZ307XG5cbmNvbnN0IE1BUEJPWF9BVFRSSUJVVElPTjogR2xvYmVBdHRyaWJ1dGlvbiA9IHtcbiAgbGFiZWw6ICfCqSBNYXBib3gnLFxuICBocmVmOiAnaHR0cHM6Ly93d3cubWFwYm94LmNvbS9hYm91dC9tYXBzLydcbn07XG5jb25zdCBPU01fQVRUUklCVVRJT046IEdsb2JlQXR0cmlidXRpb24gPSB7XG4gIGxhYmVsOiAnwqkgT3BlblN0cmVldE1hcCcsXG4gIGhyZWY6ICdodHRwczovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHQnXG59O1xuY29uc3QgQ0FSVE9fQVRUUklCVVRJT046IEdsb2JlQXR0cmlidXRpb24gPSB7XG4gIGxhYmVsOiAnwqkgQ0FSVE8nLFxuICBocmVmOiAnaHR0cHM6Ly9jYXJ0by5jb20vYXR0cmlidXRpb25zJ1xufTtcbmNvbnN0IEVTUklfQVRUUklCVVRJT046IEdsb2JlQXR0cmlidXRpb24gPSB7XG4gIGxhYmVsOiAnUG93ZXJlZCBieSBFc3JpJyxcbiAgaHJlZjogJ2h0dHBzOi8vd3d3LmVzcmkuY29tLydcbn07XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgdGlsZS1zb3VyY2UgYXR0cmlidXRpb24gZW50cmllcyBmb3IgdGhlIGdsb2JlIGJhc2VtYXAuIGRlY2suZ2xcbiAqIHJlbmRlcnMgdGhlIGdsb2JlIGJhc2VtYXAgdGlsZXMgaXRzZWxmIChub3QgdGhlIGJhc2UgTWFwbGlicmUvTWFwYm94IG1hcCksIHNvXG4gKiB0aGUgYmFzZSBtYXAncyBhdHRyaWJ1dGlvbiBtYWNoaW5lcnkgbmV2ZXIgc2VlcyB0aGVtLiBUaGlzIGxldHMgdGhlIFVJIGNyZWRpdFxuICogdGhlIGFjdHVhbCB0aWxlIHByb3ZpZGVyKHMpIGluIGdsb2JlIG1vZGUuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRHbG9iZUJhc2VtYXBBdHRyaWJ1dGlvbnMgPSAoe1xuICBnbG9iZSxcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcFN0eWxlVHlwZSxcbiAgYmFzZW1hcFByb3ZpZGVyXG59OiB7XG4gIGdsb2JlPzogR2xvYmU7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICBtYXBTdHlsZVR5cGU/OiBzdHJpbmc7XG4gIGJhc2VtYXBQcm92aWRlcj86IEdsb2JlQmFzZW1hcFByb3ZpZGVyO1xufSk6IEdsb2JlQXR0cmlidXRpb25bXSA9PiB7XG4gIGlmICghZ2xvYmU/LmVuYWJsZWQgfHwgIWdsb2JlLmNvbmZpZz8uYmFzZW1hcCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHByb3ZpZGVyOiBHbG9iZUJhc2VtYXBQcm92aWRlciA9XG4gICAgYmFzZW1hcFByb3ZpZGVyID8/IHJlc29sdmVHbG9iZUJhc2VtYXBQcm92aWRlcih1bmRlZmluZWQsIG1hcGJveEFwaUFjY2Vzc1Rva2VuKTtcblxuICBpZiAocHJvdmlkZXIgPT09ICdtYXBib3gnKSB7XG4gICAgcmV0dXJuIG1hcGJveEFwaUFjY2Vzc1Rva2VuID8gW01BUEJPWF9BVFRSSUJVVElPTiwgT1NNX0FUVFJJQlVUSU9OXSA6IFtdO1xuICB9XG5cbiAgY29uc3QgaXNTYXRlbGxpdGUgPSBtYXBTdHlsZVR5cGUgPT09ICdzYXRlbGxpdGUnIHx8IG1hcFN0eWxlVHlwZSA9PT0gJ3NhdGVsbGl0ZS1zdHJlZXQnO1xuICAvLyBDQVJUTyB2ZWN0b3IgdGlsZXMgYXJlIE9wZW5TdHJlZXRNYXAtZGVyaXZlZDsgRXNyaSBpbWFnZXJ5IGlzIGNyZWRpdGVkIHNlcGFyYXRlbHkuXG4gIHJldHVybiBpc1NhdGVsbGl0ZVxuICAgID8gW0VTUklfQVRUUklCVVRJT04sIENBUlRPX0FUVFJJQlVUSU9OLCBPU01fQVRUUklCVVRJT05dXG4gICAgOiBbQ0FSVE9fQVRUUklCVVRJT04sIE9TTV9BVFRSSUJVVElPTl07XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZXhwb3J0IGNvbnN0IGdldEdsb2JlQmFzZUxheWVycyA9ICh7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBnbG9iZSxcbiAgbWFwU3R5bGVUeXBlLFxuICBiYXNlbWFwUHJvdmlkZXIsXG4gIGxhdGl0dWRlXG59OiB7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIGdsb2JlOiBHbG9iZTtcbiAgbWFwU3R5bGVUeXBlPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hpY2ggdGlsZSBwcm92aWRlciB0byB1c2UgZm9yIHRoZSBnbG9iZSBiYXNlbWFwLiBEZWZhdWx0cyB0byBgbWFwYm94YCB3aGVuXG4gICAqIGEgdG9rZW4gaXMgcHJlc2VudCwgb3RoZXJ3aXNlIGZhbGxzIGJhY2sgdG8gdGhlIHRva2VuLWZyZWUgYGNhcnRvYCB0aWxlcy5cbiAgICovXG4gIGJhc2VtYXBQcm92aWRlcj86IEdsb2JlQmFzZW1hcFByb3ZpZGVyO1xuICAvKipcbiAgICogQ3VycmVudCBjYW1lcmEgY2VudGVyIGxhdGl0dWRlLiBVc2VkIHRvIGtlZXAgdGlsZSBMT0QgY29uc3RhbnQgd2hpbGUgcm90YXRpbmdcbiAgICogdG93YXJkIHRoZSBwb2xlcyAoZGVjay5nbCA5IGxvd2VycyB0aGUgZWZmZWN0aXZlIHpvb20gbmVhciB0aGUgcG9sZXMpLiBXaGVuXG4gICAqIG9taXR0ZWQsIG5vIGxhdGl0dWRlIGNvbXBlbnNhdGlvbiBpcyBhcHBsaWVkIChlcXVhdG9yIGJlaGF2aW9yKS5cbiAgICovXG4gIGxhdGl0dWRlPzogbnVtYmVyO1xufSk6IExheWVyW10gPT4ge1xuICBjb25zdCB7Y29uZmlnfSA9IGdsb2JlO1xuXG4gIGNvbnN0IGlzU2F0ZWxsaXRlID0gbWFwU3R5bGVUeXBlID09PSAnc2F0ZWxsaXRlJztcbiAgY29uc3QgaXNTYXRlbGxpdGVTdHJlZXQgPSBtYXBTdHlsZVR5cGUgPT09ICdzYXRlbGxpdGUtc3RyZWV0JztcblxuICBjb25zdCBsYXRab29tQ29tcGVuc2F0aW9uID0gZ2xvYmVMYXRpdHVkZVpvb21Db21wZW5zYXRpb24obGF0aXR1ZGUpO1xuXG4gIC8vIEZhbGwgYmFjayB0byB0aGUgZnJlZSBDQVJUTyB0aWxlcyB3aGVuZXZlciBubyBNYXBib3ggdG9rZW4gaXMgYXZhaWxhYmxlIHNvXG4gIC8vIHRoZSBnbG9iZSBiYXNlbWFwIHN0aWxsIHJlbmRlcnMgKG1hdGNoZXMga2VwbGVyJ3MgZGVmYXVsdCB0b2tlbi1mcmVlXG4gIC8vIE1hcExpYnJlL0NBUlRPIGJhc2VtYXBzKS4gQ2FsbGVycyBzaG91bGQgcGFzcyBhbiBleHBsaWNpdCBgYmFzZW1hcFByb3ZpZGVyYFxuICAvLyAoZGVyaXZlZCBmcm9tIHRoZSBzZWxlY3RlZCBzdHlsZSkgc28gdGhlIGdsb2JlIGZvbGxvd3MgdGhlIDJEIGJhc2VtYXAuXG4gIGNvbnN0IHByb3ZpZGVyOiBHbG9iZUJhc2VtYXBQcm92aWRlciA9XG4gICAgYmFzZW1hcFByb3ZpZGVyID8/IHJlc29sdmVHbG9iZUJhc2VtYXBQcm92aWRlcih1bmRlZmluZWQsIG1hcGJveEFwaUFjY2Vzc1Rva2VuKTtcbiAgY29uc3QgdXNlQ2FydG8gPSBwcm92aWRlciA9PT0gJ2NhcnRvJztcbiAgY29uc3QgaGFzVGlsZUFjY2VzcyA9IHVzZUNhcnRvIHx8IEJvb2xlYW4obWFwYm94QXBpQWNjZXNzVG9rZW4pO1xuXG4gIHJldHVybiBbXG4gICAgY29uZmlnLmF0bW9zcGhlcmUgPyBnZXRHbG9iZUF0bW9zcGhlcmVTa3lMYXllcih7Y29uZmlnfSkgOiBudWxsLFxuXG4gICAgLy8gRGVwdGgtb25seSBjcm9zcy1zZWN0aW9uIGRpc2s6IHdyaXRlcyBkZXB0aCBhdCB0aGUgZ2xvYmUncyBzaWxob3VldHRlIHNvXG4gICAgLy8gZmFyLXNpZGUgZ2VvbWV0cnkgKGFyY3MvbGluZXMpIGlzIG9jY2x1ZGVkIGJ5IHRoZSBwbGFuZXQuXG4gICAgZ2V0R2xvYmVEZXB0aERpc2tMYXllcih7ZmlsbENvbG9yOiBjb25maWcuc3VyZmFjZUNvbG9yfSksXG5cbiAgICAvLyBCYWNrZ3JvdW5kIHN1cmZhY2UgcG9seWdvblxuICAgICghY29uZmlnLmJhc2VtYXAgfHwgKCFpc1NhdGVsbGl0ZSAmJiAhaXNTYXRlbGxpdGVTdHJlZXQpKSAmJlxuICAgICAgbmV3IFNvbGlkUG9seWdvbkxheWVyKHtcbiAgICAgICAgaWQ6ICdnbG9iZS1iYWNrZ3JvdW5kJyxcbiAgICAgICAgZGF0YTogQkFDS0dST1VORF9EQVRBLFxuICAgICAgICBnZXRQb2x5Z29uOiAoKGQ6IG51bWJlcltdW10pID0+IGQpIGFzIGFueSxcbiAgICAgICAgZmlsbGVkOiB0cnVlLFxuICAgICAgICBnZXRGaWxsQ29sb3I6IGNvbmZpZy5zdXJmYWNlQ29sb3IgYXMgYW55LFxuICAgICAgICBwYXJhbWV0ZXJzOiBCQUNLR1JPVU5EX1BBUkFNRVRFUlNcbiAgICAgIH0pLFxuXG4gICAgLy8gRmlsbCBob2xlIGF0IG5vcnRoIHBvbGVcbiAgICBjb25maWcuYmFzZW1hcCAmJlxuICAgICAgbmV3IFNvbGlkUG9seWdvbkxheWVyKHtcbiAgICAgICAgaWQ6ICdnbG9iZS1iYWNrZ3JvdW5kLW5vcnRoLXBvbGUnLFxuICAgICAgICBkYXRhOiBCQUNLR1JPVU5EX05PUlRIX1BPTEVfREFUQSxcbiAgICAgICAgZ2V0UG9seWdvbjogKChkOiBudW1iZXJbXVtdKSA9PiBkKSBhcyBhbnksXG4gICAgICAgIGZpbGxlZDogdHJ1ZSxcbiAgICAgICAgZ2V0RmlsbENvbG9yOiAoY29uZmlnLndhdGVyID8gY29uZmlnLndhdGVyQ29sb3IgOiBjb25maWcuc3VyZmFjZUNvbG9yKSBhcyBhbnksXG4gICAgICAgIHBhcmFtZXRlcnM6IEJBQ0tHUk9VTkRfUEFSQU1FVEVSU1xuICAgICAgfSksXG5cbiAgICAvLyBTYXRlbGxpdGUgdGlsZXNcbiAgICBjb25maWcuYmFzZW1hcCAmJlxuICAgICAgKGlzU2F0ZWxsaXRlIHx8IGlzU2F0ZWxsaXRlU3RyZWV0KSAmJlxuICAgICAgaGFzVGlsZUFjY2VzcyAmJlxuICAgICAgbmV3IFRpbGVMYXllcih7XG4gICAgICAgIGlkOiBgZ2xvYmUtc2F0ZWxsaXRlLXRpbGVzLSR7cHJvdmlkZXJ9YCxcbiAgICAgICAgZGF0YTogdXNlQ2FydG9cbiAgICAgICAgICA/IFtFU1JJX1dPUkxEX0lNQUdFUllfVVJMXVxuICAgICAgICAgIDogW1xuICAgICAgICAgICAgICBgaHR0cHM6Ly9hcGkubWFwYm94LmNvbS92NC9tYXBib3guc2F0ZWxsaXRlL3t6fS97eH0ve3l9QDJ4LnBuZz9hY2Nlc3NfdG9rZW49JHttYXBib3hBcGlBY2Nlc3NUb2tlbn1gXG4gICAgICAgICAgICBdLFxuICAgICAgICBtaW5ab29tOiAwLFxuICAgICAgICBtYXhab29tOiB1c2VDYXJ0byA/IDE4IDogMTksXG4gICAgICAgIHpvb21PZmZzZXQ6IEdMT0JFX1NBVEVMTElURV9aT09NX09GRlNFVCArIGxhdFpvb21Db21wZW5zYXRpb24sXG4gICAgICAgIGV4dGVudDogR0xPQkVfVElMRV9FWFRFTlQsXG4gICAgICAgIC8vIEVzcmkgdGlsZXMgYXJlIDI1NnB4OyBNYXBib3ggQDJ4IHRpbGVzIGFyZSA1MTJweC5cbiAgICAgICAgdGlsZVNpemU6IHVzZUNhcnRvID8gMjU2IDogNTEyIC8gZGV2aWNlUGl4ZWxSYXRpbyxcbiAgICAgICAgcmVuZGVyU3ViTGF5ZXJzOiAocHJvcHM6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGJib3g6IHt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGh9XG4gICAgICAgICAgfSA9IHByb3BzLnRpbGU7XG5cbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3IEJpdG1hcExheWVyKHByb3BzLCB7XG4gICAgICAgICAgICAgIF9pbWFnZUNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTixcbiAgICAgICAgICAgICAgZGF0YTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBpbWFnZTogcHJvcHMuZGF0YSxcbiAgICAgICAgICAgICAgYm91bmRzOiBbd2VzdCwgc291dGgsIGVhc3QsIG5vcnRoXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdO1xuICAgICAgICB9LFxuICAgICAgICBwYXJhbWV0ZXJzOiBCQVNFTUFQX1JBU1RFUl9QQVJBTUVURVJTXG4gICAgICB9KSxcblxuICAgIC8vIFZlY3RvciBiYXNlbWFwIChNVlQgbGFiZWxzL2FkbWluL3dhdGVyKVxuICAgIGNvbmZpZy5iYXNlbWFwICYmXG4gICAgICAhaXNTYXRlbGxpdGUgJiZcbiAgICAgIGhhc1RpbGVBY2Nlc3MgJiZcbiAgICAgIG5ldyBNVlRMYXllcih7XG4gICAgICAgIC8vIGZvcmNlIHRoZSBsYXllciB0byB1cGRhdGUgd2hlbiB0aGUgc3R5bGUvbGFiZWwvcHJvdmlkZXIgY29uZmlnIGNoYW5nZXNcbiAgICAgICAgaWQ6IGBnbG9iZS1iYXNlbWFwLW12dC1sYXllci0ke3Byb3ZpZGVyfS0ke21hcFN0eWxlVHlwZX1gLFxuICAgICAgICBkYXRhOiB1c2VDYXJ0b1xuICAgICAgICAgID8gQ0FSVE9fVkVDVE9SX1RJTEVfVVJMU1xuICAgICAgICAgIDogYGh0dHBzOi8vYS50aWxlcy5tYXBib3guY29tL3Y0L21hcGJveC5tYXBib3gtc3RyZWV0cy12OC97en0ve3h9L3t5fS52ZWN0b3IucGJmP2FjY2Vzc190b2tlbj0ke21hcGJveEFwaUFjY2Vzc1Rva2VufWAsXG4gICAgICAgIG1pblpvb206IDAsXG4gICAgICAgIC8vIE92ZXJ6b29tIHBhc3QgdGhlIHNvdXJjZSdzIG5hdGl2ZSBtYXggaW5zdGVhZCBvZiA0MDQtaW5nIG9uIHRpbGVzIHRoYXRcbiAgICAgICAgLy8gZG9uJ3QgZXhpc3QgKHdoaWNoIHJlbmRlcnMgYXMgZW1wdHkgcmVjdGFuZ2xlcyBhdCBoaWdoIHpvb20pLlxuICAgICAgICBtYXhab29tOiB1c2VDYXJ0byA/IENBUlRPX1ZFQ1RPUl9NQVhfREFUQV9aT09NIDogTUFQQk9YX1ZFQ1RPUl9NQVhfREFUQV9aT09NLFxuICAgICAgICB6b29tT2Zmc2V0OlxuICAgICAgICAgICh1c2VDYXJ0byA/IENBUlRPX0dMT0JFX1ZFQ1RPUl9aT09NX09GRlNFVCA6IE1BUEJPWF9HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQpICtcbiAgICAgICAgICBsYXRab29tQ29tcGVuc2F0aW9uLFxuICAgICAgICBleHRlbnQ6IEdMT0JFX1RJTEVfRVhURU5ULFxuICAgICAgICBiaW5hcnk6IGZhbHNlLFxuICAgICAgICBwYXJhbWV0ZXJzOiBCQVNFTUFQX01WVF9QQVJBTUVURVJTLFxuICAgICAgICBsb2FkT3B0aW9uczogdXNlQ2FydG9cbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLy8gT3Blbk1hcFRpbGVzIHNjaGVtYTogYGJvdW5kYXJ5YCA9IGFkbWluIGxpbmVzLCBgcGxhY2VgID0gbGFiZWxzLlxuICAgICAgICAgICAgICBtdnQ6IHtcbiAgICAgICAgICAgICAgICBsYXllcnM6IGlzU2F0ZWxsaXRlU3RyZWV0XG4gICAgICAgICAgICAgICAgICA/IFsncGxhY2UnLCAnYm91bmRhcnknXVxuICAgICAgICAgICAgICAgICAgOiBbJ3BsYWNlJywgJ2JvdW5kYXJ5JywgJ3dhdGVyJywgJ3RyYW5zcG9ydGF0aW9uJ11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBtdnQ6IHtcbiAgICAgICAgICAgICAgICBsYXllcnM6IGlzU2F0ZWxsaXRlU3RyZWV0XG4gICAgICAgICAgICAgICAgICA/IFsncGxhY2VfbGFiZWwnLCAnYWRtaW4nXVxuICAgICAgICAgICAgICAgICAgOiBbJ3BsYWNlX2xhYmVsJywgJ2FkbWluJywgJ3dhdGVyJywgJ3JvYWQnXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAvLyBSZW5kZXIgYWRtaW4vd2F0ZXIgdmlhIEdlb0pzb25MYXllciBhbmQgcGxhY2UgbGFiZWxzIHZpYSBUZXh0TGF5ZXIuXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVuZGVyU3ViTGF5ZXJzOiAocHJvcHM6IGFueSkgPT4gbmV3IE1WVExhYmVsTGF5ZXIocHJvcHMpLFxuICAgICAgICBnZXRGaWxsQ29sb3I6IChmOiBhbnkpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGdldEJhc2VtYXBMYXllcktpbmQoZi5wcm9wZXJ0aWVzLmxheWVyTmFtZSkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3dhdGVyJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy53YXRlciA/IGNvbmZpZy53YXRlckNvbG9yIDogSU5WSVNJQkxFX0NPTE9SO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5zdXJmYWNlQ29sb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnZXRMaW5lQ29sb3I6IChmOiBhbnkpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGdldEJhc2VtYXBMYXllcktpbmQoZi5wcm9wZXJ0aWVzLmxheWVyTmFtZSkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2FkbWluJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5hZG1pbkxpbmVzID8gY29uZmlnLmFkbWluTGluZXNDb2xvciA6IElOVklTSUJMRV9DT0xPUjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBjb25maWcuc3VyZmFjZUNvbG9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ2V0TGluZVdpZHRoOiAoZjogYW55KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChnZXRCYXNlbWFwTGF5ZXJLaW5kKGYucHJvcGVydGllcy5sYXllck5hbWUpKSB7XG4gICAgICAgICAgICBjYXNlICdhZG1pbic6XG4gICAgICAgICAgICAgIHN3aXRjaCAoZi5wcm9wZXJ0aWVzLmFkbWluX2xldmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gMC43NTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgIGdldEZpbGxDb2xvcjogW2NvbmZpZy53YXRlckNvbG9yLCBjb25maWcuc3VyZmFjZUNvbG9yLCBjb25maWcud2F0ZXJdLFxuICAgICAgICAgIGdldExpbmVDb2xvcjogW2NvbmZpZy5hZG1pbkxpbmVzQ29sb3IsIGNvbmZpZy5zdXJmYWNlQ29sb3IsIGNvbmZpZy5hZG1pbkxpbmVzXVxuICAgICAgICB9LFxuICAgICAgICBsaW5lV2lkdGhVbml0czogJ3BpeGVscycsXG4gICAgICAgIGxpbmVXaWR0aE1pblBpeGVsczogMCxcbiAgICAgICAgbGluZVdpZHRoTWF4UGl4ZWxzOiAyMCxcbiAgICAgICAgZ2V0UG9pbnRSYWRpdXM6IDAsXG4gICAgICAgIHBvaW50UmFkaXVzTWluUGl4ZWxzOiAwXG4gICAgICB9IGFzIGFueSlcbiAgXS5maWx0ZXIoQm9vbGVhbikgYXMgTGF5ZXJbXTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHbG9iZVRvcExheWVycyA9ICh7Z2xvYmV9OiB7Z2xvYmU6IEdsb2JlfSk6IExheWVyW10gPT4ge1xuICBjb25zdCB7Y29uZmlnfSA9IGdsb2JlO1xuICByZXR1cm4gW2NvbmZpZy5hdG1vc3BoZXJlID8gZ2V0R2xvYmVBdG1vc3BoZXJlTGF5ZXIoe2NvbmZpZ30pIDogbnVsbF0uZmlsdGVyKEJvb2xlYW4pIGFzIExheWVyW107XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUdBLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUtBLElBQUFHLGdCQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxvQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssY0FBQSxHQUFBTCxPQUFBO0FBWkE7QUFDQTs7QUFlQSxJQUFNTSxnQkFBZ0IsR0FBR0MsSUFBSSxDQUFDQyxHQUFHLENBQy9CLENBQUMsRUFDQSxPQUFPQyxNQUFNLEtBQUss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
569
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfbGF5ZXJzIiwiX2dlb0xheWVycyIsIl9hdG1vc3BoZXJlTGF5ZXIiLCJfZ2xvYmVEZXB0aERpc2tMYXllciIsIl9tdnRMYWJlbExheWVyIiwiZGV2aWNlUGl4ZWxSYXRpbyIsIk1hdGgiLCJtaW4iLCJ3aW5kb3ciLCJCQUNLR1JPVU5EX1BBUkFNRVRFUlMiLCJkZXB0aFRlc3QiLCJjdWxsIiwiZGVwdGhNYXNrIiwiQkFTRU1BUF9SQVNURVJfUEFSQU1FVEVSUyIsIkJBQ0tHUk9VTkRfREFUQSIsIkJBQ0tHUk9VTkRfTk9SVEhfUE9MRV9EQVRBIiwiREVGQVVMVF9CQVNFTUFQX0NPTE9SIiwiZXhwb3J0cyIsImJhY2tncm91bmRGaWxsQ29sb3IiLCJiYXNlbWFwRGVmYXVsdEZpbGxDb2xvciIsImJhc2VtYXBXYXRlckZpbGxDb2xvciIsImJhc2VtYXBEZWZhdWx0TGluZUNvbG9yIiwiYmFzZW1hcEFkbWluTGluZUNvbG9yIiwiYmFzZW1hcExhYmVsQ29sb3IiLCJnZXRQYWludENvbG9yIiwiY29sb3IiLCJBcnJheSIsImlzQXJyYXkiLCJjb2xvclN0cmluZ1RvUkdCIiwiaHNsTWF0Y2giLCJtYXRjaCIsImgiLCJwYXJzZUludCIsInMiLCJsIiwiciIsImciLCJiIiwiaHVlMnJnYiIsInAiLCJxIiwidCIsInJvdW5kIiwicmdiTWF0Y2giLCJoZXhNYXRjaCIsImhleCIsInNsaWNlIiwiZmluZEZpcnN0TGF5ZXJCeUdyb3VwIiwibGF5ZXJzIiwibGF5ZXJHcm91cHMiLCJncm91cFNsdWciLCJsYXllckdyb3VwIiwiZmluZCIsImdyb3VwIiwic2x1ZyIsImxheWVyIiwiZmlsdGVyIiwiZmluZEJhY2tncm91bmRDb2xvciIsInN0eWxlIiwiX2ZvdW5kIiwiZm91bmQiLCJpZCIsInR5cGUiLCJwYWludCIsImZpbmRXYXRlckNvbG9yIiwiX2ZvdW5kJHBhaW50IiwiZmluZEFkbWluQ29sb3IiLCJfYm9yZGVyTGF5ZXJzJHBhaW50IiwiYm9yZGVyTGF5ZXJzIiwibHlyIiwiZmluZExhYmVsQ29sb3IiLCJfbGFiZWxMYXllciIsImxhYmVsTGF5ZXIiLCJnZXRCYXNlbWFwQ29sb3JzIiwibWFwU3R5bGUiLCJfZmluZEJhY2tncm91bmRDb2xvciIsIl9maW5kV2F0ZXJDb2xvciIsIl9maW5kQWRtaW5Db2xvciIsIl9maW5kTGFiZWxDb2xvciIsIl9tYXBTdHlsZSRzdHlsZSIsInN0eWxlSnNvbiIsIl9tYXBTdHlsZSRsYXllckdyb3VwcyIsIktOT1dOX1NUWUxFX0NPTE9SUyIsImRhcmsiLCJsaWdodCIsInBvc2l0cm9uIiwidm95YWdlciIsIm11dGVkIiwibXV0ZWRfbmlnaHQiLCJnZXRCYXNlbWFwQ29sb3JzRm9yU3R5bGUiLCJzdHlsZVR5cGUiLCJfbWFwU3R5bGUkc3R5bGUyIiwibGVuZ3RoIiwiZ2V0R2xvYmVDbGVhckNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwiSU5WSVNJQkxFX0NPTE9SIiwiQkFTRU1BUF9NVlRfUEFSQU1FVEVSUyIsIk1BUEJPWF9HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQiLCJDQVJUT19HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQiLCJHTE9CRV9TQVRFTExJVEVfWk9PTV9PRkZTRVQiLCJHTE9CRV9USUxFX0VYVEVOVCIsIk1BUEJPWF9WRUNUT1JfTUFYX0RBVEFfWk9PTSIsIkNBUlRPX1ZFQ1RPUl9NQVhfREFUQV9aT09NIiwiem9vbUFkanVzdCIsImxhdGl0dWRlIiwibG9nMiIsIlBJIiwiY29zIiwiZ2xvYmVMYXRpdHVkZVpvb21Db21wZW5zYXRpb24iLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImNsYW1wZWQiLCJtYXgiLCJyZXNvbHZlR2xvYmVCYXNlbWFwUHJvdmlkZXIiLCJiYXNlTWFwTGlicmFyeSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiQ0FSVE9fVkVDVE9SX1RJTEVfVVJMUyIsIkVTUklfV09STERfSU1BR0VSWV9VUkwiLCJnZXRCYXNlbWFwTGF5ZXJLaW5kIiwibGF5ZXJOYW1lIiwiTUFQQk9YX0FUVFJJQlVUSU9OIiwibGFiZWwiLCJocmVmIiwiT1NNX0FUVFJJQlVUSU9OIiwiQ0FSVE9fQVRUUklCVVRJT04iLCJFU1JJX0FUVFJJQlVUSU9OIiwiZ2V0R2xvYmVCYXNlbWFwQXR0cmlidXRpb25zIiwiX3JlZiIsIl9nbG9iZSRjb25maWciLCJnbG9iZSIsIm1hcFN0eWxlVHlwZSIsImJhc2VtYXBQcm92aWRlciIsImVuYWJsZWQiLCJjb25maWciLCJiYXNlbWFwIiwicHJvdmlkZXIiLCJ1bmRlZmluZWQiLCJpc1NhdGVsbGl0ZSIsImdldEdsb2JlQmFzZUxheWVycyIsIl9yZWYyIiwiem9vbSIsImlzU2F0ZWxsaXRlU3RyZWV0IiwibGF0Wm9vbUNvbXBlbnNhdGlvbiIsInVzZUNhcnRvIiwiaGFzVGlsZUFjY2VzcyIsIkJvb2xlYW4iLCJhdG1vc3BoZXJlIiwiZ2V0R2xvYmVBdG1vc3BoZXJlU2t5TGF5ZXIiLCJnZXRHbG9iZURlcHRoRGlza0xheWVyIiwiZmlsbENvbG9yIiwic3VyZmFjZUNvbG9yIiwiU29saWRQb2x5Z29uTGF5ZXIiLCJkYXRhIiwiZ2V0UG9seWdvbiIsImQiLCJmaWxsZWQiLCJnZXRGaWxsQ29sb3IiLCJwYXJhbWV0ZXJzIiwid2F0ZXIiLCJ3YXRlckNvbG9yIiwiVGlsZUxheWVyIiwiY29uY2F0IiwibWluWm9vbSIsIm1heFpvb20iLCJ6b29tT2Zmc2V0IiwiZXh0ZW50IiwidGlsZVNpemUiLCJyZW5kZXJTdWJMYXllcnMiLCJwcm9wcyIsIl9wcm9wcyR0aWxlJGJib3giLCJ0aWxlIiwiYmJveCIsIndlc3QiLCJzb3V0aCIsImVhc3QiLCJub3J0aCIsIkJpdG1hcExheWVyIiwiX2ltYWdlQ29vcmRpbmF0ZVN5c3RlbSIsIkNPT1JESU5BVEVfU1lTVEVNIiwiQ0FSVEVTSUFOIiwiaW1hZ2UiLCJib3VuZHMiLCJNVlRMYXllciIsImJpbmFyeSIsImxvYWRPcHRpb25zIiwibXZ0IiwiTVZUTGFiZWxMYXllciIsImYiLCJwcm9wZXJ0aWVzIiwiZ2V0TGluZUNvbG9yIiwiYWRtaW5MaW5lcyIsImFkbWluTGluZXNDb2xvciIsImdldExpbmVXaWR0aCIsImFkbWluX2xldmVsIiwidXBkYXRlVHJpZ2dlcnMiLCJsaW5lV2lkdGhVbml0cyIsImxpbmVXaWR0aE1pblBpeGVscyIsImxpbmVXaWR0aE1heFBpeGVscyIsImdldFBvaW50UmFkaXVzIiwicG9pbnRSYWRpdXNNaW5QaXhlbHMiLCJnZXRHbG9iZVRvcExheWVycyIsIl9yZWYzIiwiZ2V0R2xvYmVBdG1vc3BoZXJlTGF5ZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2xvYmUvZ2xvYmUtbGF5ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7Q09PUkRJTkFURV9TWVNURU0sIExheWVyfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7U29saWRQb2x5Z29uTGF5ZXIsIEJpdG1hcExheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHtUaWxlTGF5ZXIsIE1WVExheWVyfSBmcm9tICdAZGVjay5nbC9nZW8tbGF5ZXJzJztcblxuaW1wb3J0IHR5cGUge0dsb2JlfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7UkdCQ29sb3J9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge2dldEdsb2JlQXRtb3NwaGVyZUxheWVyLCBnZXRHbG9iZUF0bW9zcGhlcmVTa3lMYXllcn0gZnJvbSAnLi9hdG1vc3BoZXJlLWxheWVyJztcbmltcG9ydCB7Z2V0R2xvYmVEZXB0aERpc2tMYXllcn0gZnJvbSAnLi9nbG9iZS1kZXB0aC1kaXNrLWxheWVyJztcbmltcG9ydCB7TVZUTGFiZWxMYXllcn0gZnJvbSAnLi9tdnQtbGFiZWwtbGF5ZXInO1xuXG50eXBlIExheWVyR3JvdXAgPSB7c2x1Zzogc3RyaW5nOyBmaWx0ZXI6IChsYXllcjogYW55KSA9PiBib29sZWFufTtcblxuY29uc3QgZGV2aWNlUGl4ZWxSYXRpbyA9IE1hdGgubWluKFxuICAyLFxuICAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRldmljZVBpeGVsUmF0aW8pIHx8IDFcbik7XG5cbmNvbnN0IEJBQ0tHUk9VTkRfUEFSQU1FVEVSUyA9IHtcbiAgZGVwdGhUZXN0OiB0cnVlLFxuICBjdWxsOiB0cnVlLFxuICBkZXB0aE1hc2s6IGZhbHNlXG59O1xuXG5jb25zdCBCQVNFTUFQX1JBU1RFUl9QQVJBTUVURVJTID0ge1xuICBkZXB0aE1hc2s6IGZhbHNlXG59O1xuXG5jb25zdCBCQUNLR1JPVU5EX0RBVEEgPSBbXG4gIFtcbiAgICBbLTE4MCwgOTBdLFxuICAgIFswLCA5MF0sXG4gICAgWzE4MCwgOTBdLFxuICAgIFsxODAsIC05MF0sXG4gICAgWzAsIC05MF0sXG4gICAgWy0xODAsIC05MF1cbiAgXVxuXTtcblxuY29uc3QgQkFDS0dST1VORF9OT1JUSF9QT0xFX0RBVEEgPSBbXG4gIFtcbiAgICBbLTE4MCwgOTBdLFxuICAgIFswLCA5MF0sXG4gICAgWzE4MCwgOTBdLFxuICAgIFsxODAsIDg1XSxcbiAgICBbMCwgODVdLFxuICAgIFstMTgwLCA4NV1cbiAgXVxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQkFTRU1BUF9DT0xPUiA9IHtcbiAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzksIDE2LCAyOV0gYXMgUkdCQ29sb3IsXG4gIGJhc2VtYXBEZWZhdWx0RmlsbENvbG9yOiBbMjU1LCAyNTUsIDI1NV0gYXMgUkdCQ29sb3IsXG4gIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzE3LCAzNSwgNDhdIGFzIFJHQkNvbG9yLFxuICBiYXNlbWFwRGVmYXVsdExpbmVDb2xvcjogWzQwLCA2MywgOTNdIGFzIFJHQkNvbG9yLFxuICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFs0MCwgNjMsIDkzXSBhcyBSR0JDb2xvcixcbiAgYmFzZW1hcExhYmVsQ29sb3I6IFsxMTQuNzUsIDExNC43NSwgMTE0Ljc1XSBhcyBSR0JDb2xvclxufTtcblxuZnVuY3Rpb24gZ2V0UGFpbnRDb2xvcihjb2xvcjogYW55KTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSAmJiBjb2xvclswXSA9PT0gJ2ludGVycG9sYXRlJykge1xuICAgIHJldHVybiBjb2xvcls0XTtcbiAgfVxuICByZXR1cm4gY29sb3I7XG59XG5cbmZ1bmN0aW9uIGNvbG9yU3RyaW5nVG9SR0IoY29sb3I6IHN0cmluZyB8IG51bGwpOiBSR0JDb2xvciB8IG51bGwge1xuICBpZiAoIWNvbG9yKSByZXR1cm4gbnVsbDtcbiAgaWYgKHR5cGVvZiBjb2xvciAhPT0gJ3N0cmluZycpIHJldHVybiBudWxsO1xuXG4gIC8vIEhhbmRsZSBoc2woKSBmb3JtYXRcbiAgY29uc3QgaHNsTWF0Y2ggPSBjb2xvci5tYXRjaCgvaHNsXFwoXFxzKihcXGQrKVxccyosXFxzKihcXGQrKSVcXHMqLFxccyooXFxkKyklXFxzKlxcKS8pO1xuICBpZiAoaHNsTWF0Y2gpIHtcbiAgICBjb25zdCBoID0gcGFyc2VJbnQoaHNsTWF0Y2hbMV0sIDEwKSAvIDM2MDtcbiAgICBjb25zdCBzID0gcGFyc2VJbnQoaHNsTWF0Y2hbMl0sIDEwKSAvIDEwMDtcbiAgICBjb25zdCBsID0gcGFyc2VJbnQoaHNsTWF0Y2hbM10sIDEwKSAvIDEwMDtcbiAgICAvLyBIU0wgdG8gUkdCIGNvbnZlcnNpb25cbiAgICBsZXQgcjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcjtcbiAgICBpZiAocyA9PT0gMCkge1xuICAgICAgciA9IGcgPSBiID0gbDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaHVlMnJnYiA9IChwOiBudW1iZXIsIHE6IG51bWJlciwgdDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGlmICh0IDwgMCkgdCArPSAxO1xuICAgICAgICBpZiAodCA+IDEpIHQgLT0gMTtcbiAgICAgICAgaWYgKHQgPCAxIC8gNikgcmV0dXJuIHAgKyAocSAtIHApICogNiAqIHQ7XG4gICAgICAgIGlmICh0IDwgMSAvIDIpIHJldHVybiBxO1xuICAgICAgICBpZiAodCA8IDIgLyAzKSByZXR1cm4gcCArIChxIC0gcCkgKiAoMiAvIDMgLSB0KSAqIDY7XG4gICAgICAgIHJldHVybiBwO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHEgPSBsIDwgMC41ID8gbCAqICgxICsgcykgOiBsICsgcyAtIGwgKiBzO1xuICAgICAgY29uc3QgcCA9IDIgKiBsIC0gcTtcbiAgICAgIHIgPSBodWUycmdiKHAsIHEsIGggKyAxIC8gMyk7XG4gICAgICBnID0gaHVlMnJnYihwLCBxLCBoKTtcbiAgICAgIGIgPSBodWUycmdiKHAsIHEsIGggLSAxIC8gMyk7XG4gICAgfVxuICAgIHJldHVybiBbTWF0aC5yb3VuZChyICogMjU1KSwgTWF0aC5yb3VuZChnICogMjU1KSwgTWF0aC5yb3VuZChiICogMjU1KV0gYXMgUkdCQ29sb3I7XG4gIH1cblxuICAvLyBIYW5kbGUgcmdiKCkgZm9ybWF0XG4gIGNvbnN0IHJnYk1hdGNoID0gY29sb3IubWF0Y2goL3JnYlxcKFxccyooXFxkKylcXHMqLFxccyooXFxkKylcXHMqLFxccyooXFxkKylcXHMqXFwpLyk7XG4gIGlmIChyZ2JNYXRjaCkge1xuICAgIHJldHVybiBbXG4gICAgICBwYXJzZUludChyZ2JNYXRjaFsxXSwgMTApLFxuICAgICAgcGFyc2VJbnQocmdiTWF0Y2hbMl0sIDEwKSxcbiAgICAgIHBhcnNlSW50KHJnYk1hdGNoWzNdLCAxMClcbiAgICBdIGFzIFJHQkNvbG9yO1xuICB9XG5cbiAgLy8gSGFuZGxlIGhleCBmb3JtYXRcbiAgY29uc3QgaGV4TWF0Y2ggPSBjb2xvci5tYXRjaCgvXiMoWzAtOWEtZl17Nn0pJC9pKTtcbiAgaWYgKGhleE1hdGNoKSB7XG4gICAgY29uc3QgaGV4ID0gaGV4TWF0Y2hbMV07XG4gICAgcmV0dXJuIFtcbiAgICAgIHBhcnNlSW50KGhleC5zbGljZSgwLCAyKSwgMTYpLFxuICAgICAgcGFyc2VJbnQoaGV4LnNsaWNlKDIsIDQpLCAxNiksXG4gICAgICBwYXJzZUludChoZXguc2xpY2UoNCwgNiksIDE2KVxuICAgIF0gYXMgUkdCQ29sb3I7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZmluZEZpcnN0TGF5ZXJCeUdyb3VwKGxheWVyczogYW55W10sIGxheWVyR3JvdXBzOiBMYXllckdyb3VwW10sIGdyb3VwU2x1Zzogc3RyaW5nKSB7XG4gIGNvbnN0IGxheWVyR3JvdXAgPSBsYXllckdyb3Vwcy5maW5kKGdyb3VwID0+IGdyb3VwLnNsdWcgPT09IGdyb3VwU2x1Zyk7XG4gIGlmICghbGF5ZXJHcm91cCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiBsYXllcnMuZmluZChsYXllciA9PiBsYXllckdyb3VwLmZpbHRlcihsYXllcikpO1xufVxuXG5mdW5jdGlvbiBmaW5kQmFja2dyb3VuZENvbG9yKHN0eWxlOiBhbnkpOiBSR0JDb2xvciB8IG51bGwge1xuICBsZXQgZm91bmQgPSBzdHlsZS5sYXllcnMuZmluZCgobDogYW55KSA9PiBsLmlkID09PSAnYmFja2dyb3VuZCcgfHwgbC5pZCA9PT0gJ2xhbmQnKTtcbiAgZm91bmQgPSBmb3VuZCB8fCBzdHlsZS5sYXllcnMuZmluZCgobDogYW55KSA9PiBsLnR5cGUgPT09ICdiYWNrZ3JvdW5kJyk7XG4gIHJldHVybiBjb2xvclN0cmluZ1RvUkdCKGdldFBhaW50Q29sb3IoZm91bmQ/LnBhaW50Py5bJ2JhY2tncm91bmQtY29sb3InXSkpO1xufVxuXG5mdW5jdGlvbiBmaW5kV2F0ZXJDb2xvcihzdHlsZTogYW55LCBsYXllckdyb3VwczogTGF5ZXJHcm91cFtdKTogUkdCQ29sb3IgfCBudWxsIHtcbiAgY29uc3QgZm91bmQgPVxuICAgIHN0eWxlLmxheWVycy5maW5kKChsOiBhbnkpID0+IGwuaWQgPT09ICd3YXRlcicpIHx8XG4gICAgZmluZEZpcnN0TGF5ZXJCeUdyb3VwKHN0eWxlLmxheWVycywgbGF5ZXJHcm91cHMsICd3YXRlcicpO1xuICByZXR1cm4gY29sb3JTdHJpbmdUb1JHQihmb3VuZD8ucGFpbnQ/LlsnZmlsbC1jb2xvciddKTtcbn1cblxuZnVuY3Rpb24gZmluZEFkbWluQ29sb3Ioc3R5bGU6IGFueSwgbGF5ZXJHcm91cHM6IExheWVyR3JvdXBbXSk6IFJHQkNvbG9yIHwgbnVsbCB7XG4gIGNvbnN0IGJvcmRlckxheWVycyA9XG4gICAgc3R5bGUubGF5ZXJzLmZpbmQoKGx5cjogYW55KSA9PiBseXIuaWQgPT09ICdhZG1pbi0zLTQtYm91bmRhcmllcycpIHx8XG4gICAgZmluZEZpcnN0TGF5ZXJCeUdyb3VwKHN0eWxlLmxheWVycywgbGF5ZXJHcm91cHMsICdib3JkZXInKTtcbiAgcmV0dXJuIGNvbG9yU3RyaW5nVG9SR0IoYm9yZGVyTGF5ZXJzPy5wYWludD8uWydsaW5lLWNvbG9yJ10pO1xufVxuXG5mdW5jdGlvbiBmaW5kTGFiZWxDb2xvcihzdHlsZTogYW55LCBsYXllckdyb3VwczogTGF5ZXJHcm91cFtdKTogUkdCQ29sb3IgfCBudWxsIHtcbiAgbGV0IGxhYmVsTGF5ZXIgPSBzdHlsZS5sYXllcnMuZmluZChcbiAgICAobHlyOiBhbnkpID0+IGx5ci5pZCA9PT0gJ2NvdW50cnktbGFiZWwtbGcnICYmIGx5ci50eXBlID09PSAnc3ltYm9sJ1xuICApO1xuICBsYWJlbExheWVyID1cbiAgICBsYWJlbExheWVyIHx8XG4gICAgc3R5bGUubGF5ZXJzLmZpbmQoKGx5cjogYW55KSA9PiBseXIuaWQgPT09ICdjb3VudHJ5LWxhYmVsJyAmJiBseXIudHlwZSA9PT0gJ3N5bWJvbCcpO1xuICBsYWJlbExheWVyID0gbGFiZWxMYXllciB8fCBmaW5kRmlyc3RMYXllckJ5R3JvdXAoc3R5bGUubGF5ZXJzLCBsYXllckdyb3VwcywgJ2xhYmVsJyk7XG4gIHJldHVybiBjb2xvclN0cmluZ1RvUkdCKGxhYmVsTGF5ZXI/LnBhaW50Py5bJ3RleHQtY29sb3InXSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRCYXNlbWFwQ29sb3JzID0gKFxuICBtYXBTdHlsZTogUGFydGlhbDx7c3R5bGU6IGFueTsgbGF5ZXJHcm91cHM6IExheWVyR3JvdXBbXX0+XG4pOiB7XG4gIGJhY2tncm91bmRGaWxsQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwTGFiZWxDb2xvcjogUkdCQ29sb3I7XG59ID0+IHtcbiAgY29uc3Qge3N0eWxlOiBzdHlsZUpzb24gPSB7bGF5ZXJzOiBbXX0sIGxheWVyR3JvdXBzID0gW119ID0gbWFwU3R5bGU7XG5cbiAgcmV0dXJuIHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOlxuICAgICAgZmluZEJhY2tncm91bmRDb2xvcihzdHlsZUpzb24pID8/IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYWNrZ3JvdW5kRmlsbENvbG9yLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjpcbiAgICAgIGZpbmRXYXRlckNvbG9yKHN0eWxlSnNvbiwgbGF5ZXJHcm91cHMpID8/IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYXNlbWFwV2F0ZXJGaWxsQ29sb3IsXG4gICAgYmFzZW1hcEFkbWluTGluZUNvbG9yOlxuICAgICAgZmluZEFkbWluQ29sb3Ioc3R5bGVKc29uLCBsYXllckdyb3VwcykgPz8gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBBZG1pbkxpbmVDb2xvcixcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjpcbiAgICAgIGZpbmRMYWJlbENvbG9yKHN0eWxlSnNvbiwgbGF5ZXJHcm91cHMpID8/IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYXNlbWFwTGFiZWxDb2xvclxuICB9O1xufTtcblxuLy8gUHJlZGVmaW5lZCBjb2xvciBzY2hlbWVzIGZvciB3ZWxsLWtub3duIGJhc2VtYXAgc3R5bGVzXG5jb25zdCBLTk9XTl9TVFlMRV9DT0xPUlM6IFJlY29yZDxcbiAgc3RyaW5nLFxuICB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogUkdCQ29sb3I7XG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBSR0JDb2xvcjtcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFJHQkNvbG9yO1xuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBSR0JDb2xvcjtcbiAgfVxuPiA9IHtcbiAgZGFyazoge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IFsxNSwgMTUsIDE1XSxcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFsxMCwgMjAsIDM1XSxcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFs2MCwgNjAsIDgwXSxcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogWzE1MCwgMTUwLCAxNTBdXG4gIH0sXG4gICdkYXJrLW1hdHRlcic6IHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBbMTgsIDE4LCAxOF0sXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBbMTQsIDE5LCAyOV0sXG4gICAgYmFzZW1hcEFkbWluTGluZUNvbG9yOiBbNTAsIDUwLCA2MF0sXG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IFsxMzAsIDEzMCwgMTMwXVxuICB9LFxuICBsaWdodDoge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IFsyMzUsIDIzMywgMjI4XSxcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFsxNzAsIDIxMSwgMjIzXSxcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFsxODAsIDE3NSwgMTcwXSxcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogWzgwLCA4MCwgODBdXG4gIH0sXG4gIHBvc2l0cm9uOiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzI0MiwgMjM5LCAyMzNdLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzE3NCwgMjA5LCAyMjBdLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzE5MCwgMTg1LCAxODBdLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBbOTAsIDkwLCA5MF1cbiAgfSxcbiAgdm95YWdlcjoge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IFsyMzQsIDIyOSwgMjIwXSxcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFsxNzAsIDIxMSwgMjIzXSxcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFsxODAsIDE3MCwgMTYwXSxcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogWzcwLCA3MCwgNzBdXG4gIH0sXG4gIG11dGVkOiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzIyNSwgMjI1LCAyMThdLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzE4MCwgMjEwLCAyMjBdLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzE3MCwgMTY1LCAxNjBdLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBbOTAsIDkwLCA5MF1cbiAgfSxcbiAgbXV0ZWRfbmlnaHQ6IHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBbMjIsIDI2LCAzMF0sXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBbMTUsIDI1LCA0MF0sXG4gICAgYmFzZW1hcEFkbWluTGluZUNvbG9yOiBbNTUsIDYwLCA3MF0sXG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IFsxNDAsIDE0MCwgMTQwXVxuICB9XG59O1xuXG4vKipcbiAqIEdldCBiYXNlbWFwIGNvbG9ycyBlaXRoZXIgZnJvbSB0aGUgc3R5bGUgSlNPTiBvciBmcm9tIGtub3duIHN0eWxlIHByZXNldHMuXG4gKiBGYWxscyBiYWNrIHRvIGRlZmF1bHQgZGFyayBjb2xvcnMgaWYgc3R5bGUgaXMgdW5rbm93biBhbmQgbm8gSlNPTiBpcyBhdmFpbGFibGUuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRCYXNlbWFwQ29sb3JzRm9yU3R5bGUgPSAoXG4gIHN0eWxlVHlwZTogc3RyaW5nLFxuICBtYXBTdHlsZT86IFBhcnRpYWw8e3N0eWxlOiBhbnk7IGxheWVyR3JvdXBzOiBMYXllckdyb3VwW119PlxuKToge1xuICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBSR0JDb2xvcjtcbiAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBSR0JDb2xvcjtcbiAgYmFzZW1hcEFkbWluTGluZUNvbG9yOiBSR0JDb2xvcjtcbiAgYmFzZW1hcExhYmVsQ29sb3I6IFJHQkNvbG9yO1xufSA9PiB7XG4gIC8vIFRyeSB0byBleHRyYWN0IGZyb20gc3R5bGUgSlNPTiBmaXJzdFxuICBpZiAobWFwU3R5bGU/LnN0eWxlPy5sYXllcnM/Lmxlbmd0aCkge1xuICAgIHJldHVybiBnZXRCYXNlbWFwQ29sb3JzKG1hcFN0eWxlKTtcbiAgfVxuICAvLyBGYWxsIGJhY2sgdG8ga25vd24gc3R5bGUgcHJlc2V0c1xuICBpZiAoS05PV05fU1RZTEVfQ09MT1JTW3N0eWxlVHlwZV0pIHtcbiAgICByZXR1cm4gS05PV05fU1RZTEVfQ09MT1JTW3N0eWxlVHlwZV07XG4gIH1cbiAgLy8gRGVmYXVsdCBkYXJrIGNvbG9yc1xuICByZXR1cm4ge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYWNrZ3JvdW5kRmlsbENvbG9yLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBXYXRlckZpbGxDb2xvcixcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYXNlbWFwQWRtaW5MaW5lQ29sb3IsXG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYXNlbWFwTGFiZWxDb2xvclxuICB9O1xufTtcblxuLyoqXG4gKiBDbGVhciBjb2xvciAoYmFja2dyb3VuZCBhcm91bmQgdGhlIGdsb2JlKSBmb3IgZ2xvYmUgbW9kZSwgaW4gUkdCQSAwLTI1NSBhc1xuICogZXhwZWN0ZWQgYnkgZGVjay5nbCdzIFZpZXcgYGNsZWFyQ29sb3JgIHByb3AgKGRlY2suZ2wgPj0gOSBubyBsb25nZXIgc3VwcG9ydHNcbiAqIHRoZSBnbG9iYWwgYHBhcmFtZXRlcnMuY2xlYXJDb2xvcmA7IGl0IG11c3QgYmUgc2V0IHBlci12aWV3IHdpdGggYGNsZWFyOiB0cnVlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRHbG9iZUNsZWFyQ29sb3IoXG4gIGJhY2tncm91bmRDb2xvcj86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IG51bWJlcltdXG4pOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gIGlmIChiYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICByZXR1cm4gW2JhY2tncm91bmRDb2xvclswXSwgYmFja2dyb3VuZENvbG9yWzFdLCBiYWNrZ3JvdW5kQ29sb3JbMl0sIDI1NV07XG4gIH1cbiAgLy8gRGVmYXVsdCBtYXRjaGVzIHRoZSBwcmV2aW91cyBoYXJkY29kZWQgY2xlYXIgY29sb3IgWzAuMDE1LCAwLjAzNSwgMC4wNjVdIGluIDAtMSBzcGFjZS5cbiAgcmV0dXJuIFs0LCA5LCAxNywgMjU1XTtcbn1cblxuY29uc3QgSU5WSVNJQkxFX0NPTE9SOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFswLCAwLCAwLCAwXTtcblxuY29uc3QgQkFTRU1BUF9NVlRfUEFSQU1FVEVSUyA9IHtcbiAgLy8gT2NjbHVkZSB0aGUgZmFyIHNpZGUgb2YgdGhlIGdsb2JlIHZpYSB0aGUgREVQVEggRElTSyAoZ2V0R2xvYmVEZXB0aERpc2tMYXllcilcbiAgLy8gcmF0aGVyIHRoYW4gYmFjay1mYWNlIGN1bGxpbmcuIEdsb2JlIG1vZGUgc2V0cyBhIGdsb2JhbCBgY3VsbDogdHJ1ZWAgZm9yIHRoZVxuICAvLyBvcGFxdWUgc3BoZXJlIHN1cmZhY2UsIGJ1dCBiYWNrLWZhY2UgY3VsbGluZyByZWxpZXMgb24gc3RhYmxlIHRyaWFuZ2xlXG4gIC8vIHdpbmRpbmcg4oCUIGFuZCBkZWNrLmdsIDkncyBnbG9iZSBwcm9qZWN0aW9uIGxvc2VzIHByZWNpc2lvbiBhdCBoaWdoIHpvb21cbiAgLy8gKGZsb2F0MzIpLCBmbGlwcGluZyB0aGUgd2luZGluZyBvZiB0aGUgc21hbGwgYWRtaW4vd2F0ZXIgdHJpYW5nbGVzIHNvIHRoZXlcbiAgLy8gZ2V0IHdyb25nbHkgY3VsbGVkIGFuZCB0aGUgZ2VvbWV0cnkgdmFuaXNoZXMgcGFzdCB+em9vbSAxMiAoeW91IHRoZW4gc2VlXG4gIC8vIHRocm91Z2ggdG8gdGhlIGZhciBzaWRlIC8gXCJkaWZmZXJlbnQgZ2VvbWV0cnlcIikuIERlcHRoIHRlc3RpbmcgYWdhaW5zdCB0aGUgZGlza1xuICAvLyBpcyBhIHByZWNpc2lvbi1yb2J1c3Qgb2NjbHVkZXIgdGhhdCB3b3JrcyBhdCBhbnkgem9vbSwgc286XG4gIC8vICAgLSBjdWxsOiBmYWxzZSAgICAg4oaSIGRvbid0IHdpbmRpbmctY3VsbCB0aGUgbmVhci1zaWRlIGdlb21ldHJ5XG4gIC8vICAgLSBkZXB0aFRlc3Q6IHRydWUg4oaSIGZhci1zaWRlIGdlb21ldHJ5IChiZWhpbmQgdGhlIGRpc2spIGZhaWxzIGRlcHRoLCBoaWRkZW5cbiAgLy8gICAtIGRlcHRoTWFzazogZmFsc2Ug4oaSIGRvbid0IHdyaXRlIGRlcHRoIChhdm9pZCBzZWxmIHotZmlnaHRpbmcgb24gdGhlIHNoZWxsKVxuICAvLyBSYXN0ZXIgdGlsZXMgYXJlIHVuYWZmZWN0ZWQgKHRoZWlyIDQtY29ybmVyIHF1YWRzIGtlZXAgc3RhYmxlIHdpbmRpbmcpLCB3aGljaFxuICAvLyBpcyB3aHkgc2F0ZWxsaXRlIGFscmVhZHkgem9vbXMgdG8gbWF4IGNsZWFubHkuIExhYmVscyBkaXNhYmxlIGN1bGwgZm9yIHRoZVxuICAvLyBzYW1lIHJlYXNvbiAoc2VlIG12dC1sYWJlbC1sYXllci50cykuXG4gIGRlcHRoVGVzdDogdHJ1ZSxcbiAgZGVwdGhNYXNrOiBmYWxzZSxcbiAgY3VsbDogZmFsc2Vcbn07XG5cbi8vIGRlY2suZ2wgOSdzIGdsb2JlIHNlbGVjdHMgZmluZXIgdGlsZXMgdGhhbiBuZWVkZWQgZm9yIGEgZ2l2ZW4gdmlldyAoaXRzXG4vLyBHbG9iZVZpZXdwb3J0IHNjYWxlIGlzIH4zeCBzbWFsbGVyIHRoYW4gdGhlIGVxdWl2YWxlbnQgbWVyY2F0b3Igem9vbSksIHNvIGJpYXNcbi8vIHZlY3RvciB0aWxlIHNlbGVjdGlvbiBjb2Fyc2VyIHRvIGtlZXAgdGhlIHRpbGUgY291bnQg4oCUIGFuZCB0aHVzIHBlcmZvcm1hbmNlIOKAlFxuLy8gaW4gY2hlY2suIFRoaXMgdHJhZGVzIGEgbGl0dGxlIGRldGFpbCBmb3IgZmFyIGZld2VyIHRpbGVzOyBtYWtlIGl0IGxlc3MgbmVnYXRpdmVcbi8vICh0b3dhcmQgMCkgZm9yIHNoYXJwZXIgZGV0YWlsLCBvciBtb3JlIG5lZ2F0aXZlIGZvciBtb3JlIHBlcmYuXG4vLyBUaGVzZSBhcmUgKmJhc2UqIG9mZnNldHM6IGdsb2JlTGF0aXR1ZGVab29tQ29tcGVuc2F0aW9uIGlzIGFkZGVkIG9uIHRvcCBhdCBkcmF3XG4vLyB0aW1lLCBzbyB0aGUgZWZmZWN0aXZlIHpvb21PZmZzZXQgb25seSBlcXVhbHMgdGhlc2UgZXhhY3QgdmFsdWVzIGF0IHRoZSBlcXVhdG9yLlxuLy8gU2F0ZWxsaXRlIHJhc3RlciB1c2VzIGJhc2UgMCDigJQgaXQgZG9lc24ndCBuZWVkIHRoZSB2ZWN0b3IgYmlhcyAoYSBjb2Fyc2VyIHJhc3RlclxuLy8gdGlsZSBqdXN0IGxvb2tzIHNvZnRlciByYXRoZXIgdGhhbiBkcm9wcGluZyBmZWF0dXJlcykuXG5jb25zdCBNQVBCT1hfR0xPQkVfVkVDVE9SX1pPT01fT0ZGU0VUID0gLTI7XG5jb25zdCBDQVJUT19HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQgPSAtMjtcbmNvbnN0IEdMT0JFX1NBVEVMTElURV9aT09NX09GRlNFVCA9IDA7XG5cbi8vIFdob2xlLXdvcmxkIHRpbGUgZXh0ZW50IChXZWIgTWVyY2F0b3IgbGF0aXR1ZGUgbGltaXQpLiBSZXF1aXJlZCB3aGVuZXZlciBhXG4vLyBuZWdhdGl2ZSBgem9vbU9mZnNldGAgaXMgdXNlZDogZGVjaydzIGBnZXRUaWxlSW5kaWNlc2AgcmV0dXJucyBOTyB0aWxlcyB3aGVuXG4vLyB0aGUgdGFyZ2V0IHpvb20gZHJvcHMgYmVsb3cgYG1pblpvb21gICp1bmxlc3MqIGFuIGBleHRlbnRgIGlzIHNldCAoaW4gd2hpY2hcbi8vIGNhc2UgaXQgY2xhbXBzIHRvIGBtaW5ab29tYCBpbnN0ZWFkKS4gV2l0aG91dCB0aGlzLCB6b29taW5nIG91dCBvciBwYW5uaW5nXG4vLyB0b3dhcmQgdGhlIHBvbGVzICh3aGVyZSBkZWNrIDkncyBnbG9iZSBjb250cm9sbGVyIGxvd2VycyB0aGUgZWZmZWN0aXZlIHpvb20pXG4vLyBtYWtlcyB0aGUgd2hvbGUgZ2xvYmUgYmFzZW1hcCBkaXNhcHBlYXIuXG5jb25zdCBHTE9CRV9USUxFX0VYVEVOVDogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbXG4gIC0xODAsIC04NS4wNTExMjksIDE4MCwgODUuMDUxMTI5XG5dO1xuXG4vLyBNYXggKm5hdGl2ZSogem9vbSBvZiBlYWNoIHZlY3RvciB0aWxlIHNvdXJjZS4gU2V0IHRoaXMgKG5vdCBhbiBhcmJpdHJhcmlseVxuLy8gaGlnaCBudW1iZXIpIHNvIGRlY2sgb3Zlcnpvb21zIOKAlCBpLmUuIGtlZXBzIHJlbmRlcmluZyB0aGUgZGVlcGVzdCByZWFsIHRpbGVcbi8vIHdoZW4gdGhlIHZpZXcgem9vbXMgcGFzdCBpdCDigJQgaW5zdGVhZCBvZiByZXF1ZXN0aW5nIHRpbGVzIHRoYXQgZG9uJ3QgZXhpc3Rcbi8vIGFuZCA0MDQgKHdoaWNoIHNob3dzIHVwIGFzIGVtcHR5IHJlY3RhbmdsZXMpLiBUaGUgcmF3IGAudmVjdG9yLnBiZmAgL2AubXZ0YFxuLy8gZW5kcG9pbnRzIGRvIE5PVCBhdXRvLW92ZXJ6b29tIHRoZSB3YXkgTWFwYm94IEdMIGRvZXMuXG4vLyAgIC0gbWFwYm94LXN0cmVldHMtdjggaGFzIGRhdGEgdXAgdG8gejE2XG4vLyAgIC0gQ0FSVE8gY2FydG8uc3RyZWV0cyB2MSBoYXMgZGF0YSB1cCB0byB6MTRcbmNvbnN0IE1BUEJPWF9WRUNUT1JfTUFYX0RBVEFfWk9PTSA9IDE2O1xuY29uc3QgQ0FSVE9fVkVDVE9SX01BWF9EQVRBX1pPT00gPSAxNDtcblxuLyoqXG4gKiBkZWNrLmdsIDkncyBnbG9iZSBjb3VwbGVzIHpvb20gdG8gbGF0aXR1ZGUgdmlhIGB6b29tQWRqdXN0YCAoc2VlXG4gKiBnbG9iZS12aWV3cG9ydC5qcyk6IGBzY2FsZSA9IDJeKHpvb20gLSB6b29tQWRqdXN0KGxhdCkpYCwgYW5kIGl0cyBjb250cm9sbGVyXG4gKiAqbG93ZXJzKiB0aGUgc3RvcmVkIGB6b29tYCBhcyB5b3UgcGFuIHRvd2FyZCB0aGUgcG9sZXMgdG8ga2VlcCB0aGUgZ2xvYmUnc1xuICogb24tc2NyZWVuIHNpemUgY29uc3RhbnQuIFRpbGUgTE9ELCBob3dldmVyLCBpcyBzZWxlY3RlZCBmcm9tIHRoZSByYXcgYHpvb21gLFxuICogc28gcm90YXRpbmcgdG93YXJkIGEgcG9sZSBzaWxlbnRseSBkcm9wcyB0aGUgTE9EIGFuZCB0aGlucyBvdXQgbGFiZWxzLlxuICogUmVwbGljYXRlZCBmcm9tIGBAZGVjay5nbC9jb3JlYCBnbG9iZS12aWV3cG9ydC5qcyBgem9vbUFkanVzdGAuXG4gKi9cbmZ1bmN0aW9uIHpvb21BZGp1c3QobGF0aXR1ZGU6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLmxvZzIoTWF0aC5QSSAqIE1hdGguY29zKChsYXRpdHVkZSAqIE1hdGguUEkpIC8gMTgwKSk7XG59XG5cbi8qKlxuICogTGF0aXR1ZGUgY29tcGVuc2F0aW9uIHRvIGFkZCB0byBhIGdsb2JlIHRpbGUgbGF5ZXIncyBgem9vbU9mZnNldGAsIHNvIHRpbGUgTE9EXG4gKiB0cmFja3MgdGhlICp2aXN1YWwqIChvbi1zY3JlZW4pIHNjYWxlIGluc3RlYWQgb2YgdGhlIGxhdGl0dWRlLWFkanVzdGVkIG1lcmNhdG9yXG4gKiB6b29tLiBUaGlzIGNhbmNlbHMgdGhlIHBhbi1pbmR1Y2VkIHpvb20gZHJvcCwga2VlcGluZyB0aWxlIGRldGFpbC9sYWJlbHNcbiAqIGNvbnN0YW50IHdoaWxlIHJvdGF0aW5nIHRvd2FyZCB0aGUgcG9sZXMuXG4gKi9cbmZ1bmN0aW9uIGdsb2JlTGF0aXR1ZGVab29tQ29tcGVuc2F0aW9uKGxhdGl0dWRlPzogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKGxhdGl0dWRlID09IG51bGwgfHwgIU51bWJlci5pc0Zpbml0ZShsYXRpdHVkZSkpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICAvLyBDbGFtcCBhd2F5IGZyb20gdGhlIHBvbGVzIHRvIGF2b2lkIGxvZzIoMCkgPSAtSW5maW5pdHkgYXQgfGxhdHwgPSA5MC5cbiAgY29uc3QgY2xhbXBlZCA9IE1hdGgubWF4KC04NSwgTWF0aC5taW4oODUsIGxhdGl0dWRlKSk7XG4gIHJldHVybiB6b29tQWRqdXN0KDApIC0gem9vbUFkanVzdChjbGFtcGVkKTtcbn1cblxuLyoqXG4gKiBHbG9iZSBiYXNlbWFwIHRpbGUgcHJvdmlkZXIuXG4gKlxuICogLSBgbWFwYm94YCB1c2VzIE1hcGJveCB2ZWN0b3IvcmFzdGVyIHRpbGVzIGFuZCByZXF1aXJlcyBhbiBhY2Nlc3MgdG9rZW4uXG4gKiAtIGBjYXJ0b2AgdXNlcyBDQVJUTydzIGZyZWUgT3Blbk1hcFRpbGVzIHZlY3RvciB0aWxlcyArIEVzcmkgV29ybGQgSW1hZ2VyeVxuICogICByYXN0ZXIsIGFuZCBuZWVkcyBubyB0b2tlbi4gVXNlZCBhcyBhbiBhdXRvbWF0aWMgZmFsbGJhY2sgd2hlbiBubyBNYXBib3hcbiAqICAgdG9rZW4gaXMgYXZhaWxhYmxlIChlLmcuIE1hcExpYnJlIC8gQ0FSVE8gYmFzZW1hcCBzZXR1cHMpLCBzbyB0aGUgZ2xvYmVcbiAqICAgYmFzZW1hcCBzdGlsbCByZW5kZXJzIGluc3RlYWQgb2Ygc2hvd2luZyBhIHNvbGlkLWNvbG9yIHNwaGVyZS5cbiAqL1xuZXhwb3J0IHR5cGUgR2xvYmVCYXNlbWFwUHJvdmlkZXIgPSAnbWFwYm94JyB8ICdjYXJ0byc7XG5cbi8qKlxuICogUmVzb2x2ZSB3aGljaCBnbG9iZSBiYXNlbWFwIHRpbGUgcHJvdmlkZXIgdG8gdXNlLlxuICpcbiAqIFRoZSBnbG9iZSBzaG91bGQgZm9sbG93IHRoZSAqc2VsZWN0ZWQgYmFzZW1hcCBzdHlsZSdzKiByZW5kZXJpbmcgbGlicmFyeSBzb1xuICogaXQgc3RheXMgY29uc2lzdGVudCB3aXRoIHRoZSBmbGF0IDJEIG1hcDogYSBNYXBMaWJyZS9DQVJUTyBzdHlsZSB1c2VzIHRoZVxuICogZnJlZSBDQVJUTyB0aWxlcyAoZXZlbiB3aGVuIGEgTWFwYm94IHRva2VuIGlzIGF2YWlsYWJsZSksIGFuZCBhIE1hcGJveCBzdHlsZVxuICogdXNlcyBNYXBib3ggdGlsZXMuIEEgTWFwYm94IHN0eWxlIHdpdGggbm8gdG9rZW4gZmFsbHMgYmFjayB0byBDQVJUTyBzbyB0aGVcbiAqIGdsb2JlIHN0aWxsIHJlbmRlcnMgaW5zdGVhZCBvZiBzaG93aW5nIGEgYmFyZSBjb2xvcmVkIHNwaGVyZS5cbiAqXG4gKiBAcGFyYW0gYmFzZU1hcExpYnJhcnkgdGhlIHNlbGVjdGVkIHN0eWxlJ3MgbGlicmFyeSAoJ21hcGJveCcgfCAnbWFwbGlicmUnKSxcbiAqICAgZS5nLiBmcm9tIGBnZXRCYXNlTWFwTGlicmFyeShjdXJyZW50U3R5bGUpYC5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVHbG9iZUJhc2VtYXBQcm92aWRlciA9IChcbiAgYmFzZU1hcExpYnJhcnk6ICdtYXBib3gnIHwgJ21hcGxpYnJlJyB8IHVuZGVmaW5lZCxcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW4/OiBzdHJpbmdcbik6IEdsb2JlQmFzZW1hcFByb3ZpZGVyID0+IHtcbiAgaWYgKGJhc2VNYXBMaWJyYXJ5ID09PSAnbWFwbGlicmUnKSB7XG4gICAgcmV0dXJuICdjYXJ0byc7XG4gIH1cbiAgaWYgKGJhc2VNYXBMaWJyYXJ5ID09PSAnbWFwYm94Jykge1xuICAgIHJldHVybiBtYXBib3hBcGlBY2Nlc3NUb2tlbiA/ICdtYXBib3gnIDogJ2NhcnRvJztcbiAgfVxuICAvLyBVbmtub3duIGxpYnJhcnk6IHByZWZlciBNYXBib3ggd2hlbiBhIHRva2VuIGV4aXN0cywgb3RoZXJ3aXNlIENBUlRPLlxuICByZXR1cm4gbWFwYm94QXBpQWNjZXNzVG9rZW4gPyAnbWFwYm94JyA6ICdjYXJ0byc7XG59O1xuXG4vLyBDQVJUTyBmcmVlIHZlY3RvciB0aWxlcyAoT3Blbk1hcFRpbGVzIHNjaGVtYSwgbm8gQVBJIGtleSByZXF1aXJlZCkuXG5jb25zdCBDQVJUT19WRUNUT1JfVElMRV9VUkxTID0gW1xuICAnaHR0cHM6Ly90aWxlcy1hLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS92ZWN0b3J0aWxlcy9jYXJ0by5zdHJlZXRzL3YxL3t6fS97eH0ve3l9Lm12dCcsXG4gICdodHRwczovL3RpbGVzLWIuYmFzZW1hcHMuY2FydG9jZG4uY29tL3ZlY3RvcnRpbGVzL2NhcnRvLnN0cmVldHMvdjEve3p9L3t4fS97eX0ubXZ0JyxcbiAgJ2h0dHBzOi8vdGlsZXMtYy5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vdmVjdG9ydGlsZXMvY2FydG8uc3RyZWV0cy92MS97en0ve3h9L3t5fS5tdnQnLFxuICAnaHR0cHM6Ly90aWxlcy1kLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS92ZWN0b3J0aWxlcy9jYXJ0by5zdHJlZXRzL3YxL3t6fS97eH0ve3l9Lm12dCdcbl07XG5cbi8vIEZyZWUgc2F0ZWxsaXRlIHJhc3RlciBmYWxsYmFjayAoRXNyaSBXb3JsZCBJbWFnZXJ5LCBubyBBUEkga2V5IHJlcXVpcmVkKS5cbmNvbnN0IEVTUklfV09STERfSU1BR0VSWV9VUkwgPVxuICAnaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9JbWFnZXJ5L01hcFNlcnZlci90aWxlL3t6fS97eX0ve3h9JztcblxuLyoqXG4gKiBNYXBzIGEgcmF3IE1WVCBzb3VyY2UtbGF5ZXIgbmFtZSB0byBhIG5vcm1hbGl6ZWQgc2VtYW50aWMgbGF5ZXIga2luZCwgc28gdGhlXG4gKiBmaWxsL2xpbmUvbGFiZWwgYWNjZXNzb3JzIHdvcmsgYWNyb3NzIGJvdGggdGhlIE1hcGJveCAoYG1hcGJveC1zdHJlZXRzLXY4YClcbiAqIGFuZCBDQVJUTy9PcGVuTWFwVGlsZXMgc2NoZW1hcy5cbiAqXG4gKiB8IHNlbWFudGljIHwgbWFwYm94ICAgICAgICB8IG9wZW5tYXB0aWxlcyB8XG4gKiB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLSB8XG4gKiB8IHdhdGVyICAgIHwgYHdhdGVyYCAgICAgICB8IGB3YXRlcmAgICAgICB8XG4gKiB8IGFkbWluICAgIHwgYGFkbWluYCAgICAgICB8IGBib3VuZGFyeWAgICB8XG4gKiB8IGxhYmVsICAgIHwgYHBsYWNlX2xhYmVsYCB8IGBwbGFjZWAgICAgICB8XG4gKi9cbnR5cGUgQmFzZW1hcExheWVyS2luZCA9ICd3YXRlcicgfCAnYWRtaW4nIHwgJ2xhYmVsJyB8ICdvdGhlcic7XG5cbmZ1bmN0aW9uIGdldEJhc2VtYXBMYXllcktpbmQobGF5ZXJOYW1lPzogc3RyaW5nKTogQmFzZW1hcExheWVyS2luZCB7XG4gIHN3aXRjaCAobGF5ZXJOYW1lKSB7XG4gICAgY2FzZSAnd2F0ZXInOlxuICAgICAgcmV0dXJuICd3YXRlcic7XG4gICAgY2FzZSAnYWRtaW4nOlxuICAgIGNhc2UgJ2JvdW5kYXJ5JzpcbiAgICAgIHJldHVybiAnYWRtaW4nO1xuICAgIGNhc2UgJ3BsYWNlX2xhYmVsJzpcbiAgICBjYXNlICdwbGFjZSc6XG4gICAgICByZXR1cm4gJ2xhYmVsJztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdvdGhlcic7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgR2xvYmVBdHRyaWJ1dGlvbiA9IHtsYWJlbDogc3RyaW5nOyBocmVmOiBzdHJpbmd9O1xuXG5jb25zdCBNQVBCT1hfQVRUUklCVVRJT046IEdsb2JlQXR0cmlidXRpb24gPSB7XG4gIGxhYmVsOiAnwqkgTWFwYm94JyxcbiAgaHJlZjogJ2h0dHBzOi8vd3d3Lm1hcGJveC5jb20vYWJvdXQvbWFwcy8nXG59O1xuY29uc3QgT1NNX0FUVFJJQlVUSU9OOiBHbG9iZUF0dHJpYnV0aW9uID0ge1xuICBsYWJlbDogJ8KpIE9wZW5TdHJlZXRNYXAnLFxuICBocmVmOiAnaHR0cHM6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0J1xufTtcbmNvbnN0IENBUlRPX0FUVFJJQlVUSU9OOiBHbG9iZUF0dHJpYnV0aW9uID0ge1xuICBsYWJlbDogJ8KpIENBUlRPJyxcbiAgaHJlZjogJ2h0dHBzOi8vY2FydG8uY29tL2F0dHJpYnV0aW9ucydcbn07XG5jb25zdCBFU1JJX0FUVFJJQlVUSU9OOiBHbG9iZUF0dHJpYnV0aW9uID0ge1xuICBsYWJlbDogJ1Bvd2VyZWQgYnkgRXNyaScsXG4gIGhyZWY6ICdodHRwczovL3d3dy5lc3JpLmNvbS8nXG59O1xuXG4vKipcbiAqIFJlc29sdmUgdGhlIHRpbGUtc291cmNlIGF0dHJpYnV0aW9uIGVudHJpZXMgZm9yIHRoZSBnbG9iZSBiYXNlbWFwLiBkZWNrLmdsXG4gKiByZW5kZXJzIHRoZSBnbG9iZSBiYXNlbWFwIHRpbGVzIGl0c2VsZiAobm90IHRoZSBiYXNlIE1hcGxpYnJlL01hcGJveCBtYXApLCBzb1xuICogdGhlIGJhc2UgbWFwJ3MgYXR0cmlidXRpb24gbWFjaGluZXJ5IG5ldmVyIHNlZXMgdGhlbS4gVGhpcyBsZXRzIHRoZSBVSSBjcmVkaXRcbiAqIHRoZSBhY3R1YWwgdGlsZSBwcm92aWRlcihzKSBpbiBnbG9iZSBtb2RlLlxuICovXG5leHBvcnQgY29uc3QgZ2V0R2xvYmVCYXNlbWFwQXR0cmlidXRpb25zID0gKHtcbiAgZ2xvYmUsXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBtYXBTdHlsZVR5cGUsXG4gIGJhc2VtYXBQcm92aWRlclxufToge1xuICBnbG9iZT86IEdsb2JlO1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgbWFwU3R5bGVUeXBlPzogc3RyaW5nO1xuICBiYXNlbWFwUHJvdmlkZXI/OiBHbG9iZUJhc2VtYXBQcm92aWRlcjtcbn0pOiBHbG9iZUF0dHJpYnV0aW9uW10gPT4ge1xuICBpZiAoIWdsb2JlPy5lbmFibGVkIHx8ICFnbG9iZS5jb25maWc/LmJhc2VtYXApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBwcm92aWRlcjogR2xvYmVCYXNlbWFwUHJvdmlkZXIgPVxuICAgIGJhc2VtYXBQcm92aWRlciA/PyByZXNvbHZlR2xvYmVCYXNlbWFwUHJvdmlkZXIodW5kZWZpbmVkLCBtYXBib3hBcGlBY2Nlc3NUb2tlbik7XG5cbiAgaWYgKHByb3ZpZGVyID09PSAnbWFwYm94Jykge1xuICAgIHJldHVybiBtYXBib3hBcGlBY2Nlc3NUb2tlbiA/IFtNQVBCT1hfQVRUUklCVVRJT04sIE9TTV9BVFRSSUJVVElPTl0gOiBbXTtcbiAgfVxuXG4gIGNvbnN0IGlzU2F0ZWxsaXRlID0gbWFwU3R5bGVUeXBlID09PSAnc2F0ZWxsaXRlJyB8fCBtYXBTdHlsZVR5cGUgPT09ICdzYXRlbGxpdGUtc3RyZWV0JztcbiAgLy8gQ0FSVE8gdmVjdG9yIHRpbGVzIGFyZSBPcGVuU3RyZWV0TWFwLWRlcml2ZWQ7IEVzcmkgaW1hZ2VyeSBpcyBjcmVkaXRlZCBzZXBhcmF0ZWx5LlxuICByZXR1cm4gaXNTYXRlbGxpdGVcbiAgICA/IFtFU1JJX0FUVFJJQlVUSU9OLCBDQVJUT19BVFRSSUJVVElPTiwgT1NNX0FUVFJJQlVUSU9OXVxuICAgIDogW0NBUlRPX0FUVFJJQlVUSU9OLCBPU01fQVRUUklCVVRJT05dO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmV4cG9ydCBjb25zdCBnZXRHbG9iZUJhc2VMYXllcnMgPSAoe1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgZ2xvYmUsXG4gIG1hcFN0eWxlVHlwZSxcbiAgYmFzZW1hcFByb3ZpZGVyLFxuICBsYXRpdHVkZSxcbiAgem9vbVxufToge1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nO1xuICBnbG9iZTogR2xvYmU7XG4gIG1hcFN0eWxlVHlwZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFdoaWNoIHRpbGUgcHJvdmlkZXIgdG8gdXNlIGZvciB0aGUgZ2xvYmUgYmFzZW1hcC4gRGVmYXVsdHMgdG8gYG1hcGJveGAgd2hlblxuICAgKiBhIHRva2VuIGlzIHByZXNlbnQsIG90aGVyd2lzZSBmYWxscyBiYWNrIHRvIHRoZSB0b2tlbi1mcmVlIGBjYXJ0b2AgdGlsZXMuXG4gICAqL1xuICBiYXNlbWFwUHJvdmlkZXI/OiBHbG9iZUJhc2VtYXBQcm92aWRlcjtcbiAgLyoqXG4gICAqIEN1cnJlbnQgY2FtZXJhIGNlbnRlciBsYXRpdHVkZS4gVXNlZCB0byBrZWVwIHRpbGUgTE9EIGNvbnN0YW50IHdoaWxlIHJvdGF0aW5nXG4gICAqIHRvd2FyZCB0aGUgcG9sZXMgKGRlY2suZ2wgOSBsb3dlcnMgdGhlIGVmZmVjdGl2ZSB6b29tIG5lYXIgdGhlIHBvbGVzKS4gV2hlblxuICAgKiBvbWl0dGVkLCBubyBsYXRpdHVkZSBjb21wZW5zYXRpb24gaXMgYXBwbGllZCAoZXF1YXRvciBiZWhhdmlvcikuXG4gICAqL1xuICBsYXRpdHVkZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIEN1cnJlbnQgbWFwIHpvb20gbGV2ZWwuIFVzZWQgdG8gZmFkZSB0aGUgYXRtb3NwaGVyZSBlZmZlY3RzIG91dCB3aGVuIHRoZSB1c2VyXG4gICAqIHpvb21zIGluIHBhc3QgYSBjZXJ0YWluIHRocmVzaG9sZCAobWlycm9ycyBHb29nbGUgTWFwcyBnbG9iZSBiZWhhdmlvdXIpLlxuICAgKi9cbiAgem9vbT86IG51bWJlcjtcbn0pOiBMYXllcltdID0+IHtcbiAgY29uc3Qge2NvbmZpZ30gPSBnbG9iZTtcblxuICBjb25zdCBpc1NhdGVsbGl0ZSA9IG1hcFN0eWxlVHlwZSA9PT0gJ3NhdGVsbGl0ZSc7XG4gIGNvbnN0IGlzU2F0ZWxsaXRlU3RyZWV0ID0gbWFwU3R5bGVUeXBlID09PSAnc2F0ZWxsaXRlLXN0cmVldCc7XG5cbiAgY29uc3QgbGF0Wm9vbUNvbXBlbnNhdGlvbiA9IGdsb2JlTGF0aXR1ZGVab29tQ29tcGVuc2F0aW9uKGxhdGl0dWRlKTtcblxuICAvLyBGYWxsIGJhY2sgdG8gdGhlIGZyZWUgQ0FSVE8gdGlsZXMgd2hlbmV2ZXIgbm8gTWFwYm94IHRva2VuIGlzIGF2YWlsYWJsZSBzb1xuICAvLyB0aGUgZ2xvYmUgYmFzZW1hcCBzdGlsbCByZW5kZXJzIChtYXRjaGVzIGtlcGxlcidzIGRlZmF1bHQgdG9rZW4tZnJlZVxuICAvLyBNYXBMaWJyZS9DQVJUTyBiYXNlbWFwcykuIENhbGxlcnMgc2hvdWxkIHBhc3MgYW4gZXhwbGljaXQgYGJhc2VtYXBQcm92aWRlcmBcbiAgLy8gKGRlcml2ZWQgZnJvbSB0aGUgc2VsZWN0ZWQgc3R5bGUpIHNvIHRoZSBnbG9iZSBmb2xsb3dzIHRoZSAyRCBiYXNlbWFwLlxuICBjb25zdCBwcm92aWRlcjogR2xvYmVCYXNlbWFwUHJvdmlkZXIgPVxuICAgIGJhc2VtYXBQcm92aWRlciA/PyByZXNvbHZlR2xvYmVCYXNlbWFwUHJvdmlkZXIodW5kZWZpbmVkLCBtYXBib3hBcGlBY2Nlc3NUb2tlbik7XG4gIGNvbnN0IHVzZUNhcnRvID0gcHJvdmlkZXIgPT09ICdjYXJ0byc7XG4gIGNvbnN0IGhhc1RpbGVBY2Nlc3MgPSB1c2VDYXJ0byB8fCBCb29sZWFuKG1hcGJveEFwaUFjY2Vzc1Rva2VuKTtcblxuICByZXR1cm4gW1xuICAgIGNvbmZpZy5hdG1vc3BoZXJlID8gZ2V0R2xvYmVBdG1vc3BoZXJlU2t5TGF5ZXIoe2NvbmZpZywgem9vbX0pIDogbnVsbCxcblxuICAgIC8vIERlcHRoLW9ubHkgY3Jvc3Mtc2VjdGlvbiBkaXNrOiB3cml0ZXMgZGVwdGggYXQgdGhlIGdsb2JlJ3Mgc2lsaG91ZXR0ZSBzb1xuICAgIC8vIGZhci1zaWRlIGdlb21ldHJ5IChhcmNzL2xpbmVzKSBpcyBvY2NsdWRlZCBieSB0aGUgcGxhbmV0LlxuICAgIGdldEdsb2JlRGVwdGhEaXNrTGF5ZXIoe2ZpbGxDb2xvcjogY29uZmlnLnN1cmZhY2VDb2xvcn0pLFxuXG4gICAgLy8gQmFja2dyb3VuZCBzdXJmYWNlIHBvbHlnb25cbiAgICAoIWNvbmZpZy5iYXNlbWFwIHx8ICghaXNTYXRlbGxpdGUgJiYgIWlzU2F0ZWxsaXRlU3RyZWV0KSkgJiZcbiAgICAgIG5ldyBTb2xpZFBvbHlnb25MYXllcih7XG4gICAgICAgIGlkOiAnZ2xvYmUtYmFja2dyb3VuZCcsXG4gICAgICAgIGRhdGE6IEJBQ0tHUk9VTkRfREFUQSxcbiAgICAgICAgZ2V0UG9seWdvbjogKChkOiBudW1iZXJbXVtdKSA9PiBkKSBhcyBhbnksXG4gICAgICAgIGZpbGxlZDogdHJ1ZSxcbiAgICAgICAgZ2V0RmlsbENvbG9yOiBjb25maWcuc3VyZmFjZUNvbG9yIGFzIGFueSxcbiAgICAgICAgcGFyYW1ldGVyczogQkFDS0dST1VORF9QQVJBTUVURVJTXG4gICAgICB9KSxcblxuICAgIC8vIEZpbGwgaG9sZSBhdCBub3J0aCBwb2xlXG4gICAgY29uZmlnLmJhc2VtYXAgJiZcbiAgICAgIG5ldyBTb2xpZFBvbHlnb25MYXllcih7XG4gICAgICAgIGlkOiAnZ2xvYmUtYmFja2dyb3VuZC1ub3J0aC1wb2xlJyxcbiAgICAgICAgZGF0YTogQkFDS0dST1VORF9OT1JUSF9QT0xFX0RBVEEsXG4gICAgICAgIGdldFBvbHlnb246ICgoZDogbnVtYmVyW11bXSkgPT4gZCkgYXMgYW55LFxuICAgICAgICBmaWxsZWQ6IHRydWUsXG4gICAgICAgIGdldEZpbGxDb2xvcjogKGNvbmZpZy53YXRlciA/IGNvbmZpZy53YXRlckNvbG9yIDogY29uZmlnLnN1cmZhY2VDb2xvcikgYXMgYW55LFxuICAgICAgICBwYXJhbWV0ZXJzOiBCQUNLR1JPVU5EX1BBUkFNRVRFUlNcbiAgICAgIH0pLFxuXG4gICAgLy8gU2F0ZWxsaXRlIHRpbGVzXG4gICAgY29uZmlnLmJhc2VtYXAgJiZcbiAgICAgIChpc1NhdGVsbGl0ZSB8fCBpc1NhdGVsbGl0ZVN0cmVldCkgJiZcbiAgICAgIGhhc1RpbGVBY2Nlc3MgJiZcbiAgICAgIG5ldyBUaWxlTGF5ZXIoe1xuICAgICAgICBpZDogYGdsb2JlLXNhdGVsbGl0ZS10aWxlcy0ke3Byb3ZpZGVyfWAsXG4gICAgICAgIGRhdGE6IHVzZUNhcnRvXG4gICAgICAgICAgPyBbRVNSSV9XT1JMRF9JTUFHRVJZX1VSTF1cbiAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgYGh0dHBzOi8vYXBpLm1hcGJveC5jb20vdjQvbWFwYm94LnNhdGVsbGl0ZS97en0ve3h9L3t5fUAyeC5wbmc/YWNjZXNzX3Rva2VuPSR7bWFwYm94QXBpQWNjZXNzVG9rZW59YFxuICAgICAgICAgICAgXSxcbiAgICAgICAgbWluWm9vbTogMCxcbiAgICAgICAgbWF4Wm9vbTogdXNlQ2FydG8gPyAxOCA6IDE5LFxuICAgICAgICB6b29tT2Zmc2V0OiBHTE9CRV9TQVRFTExJVEVfWk9PTV9PRkZTRVQgKyBsYXRab29tQ29tcGVuc2F0aW9uLFxuICAgICAgICBleHRlbnQ6IEdMT0JFX1RJTEVfRVhURU5ULFxuICAgICAgICAvLyBFc3JpIHRpbGVzIGFyZSAyNTZweDsgTWFwYm94IEAyeCB0aWxlcyBhcmUgNTEycHguXG4gICAgICAgIHRpbGVTaXplOiB1c2VDYXJ0byA/IDI1NiA6IDUxMiAvIGRldmljZVBpeGVsUmF0aW8sXG4gICAgICAgIHJlbmRlclN1YkxheWVyczogKHByb3BzOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBiYm94OiB7d2VzdCwgc291dGgsIGVhc3QsIG5vcnRofVxuICAgICAgICAgIH0gPSBwcm9wcy50aWxlO1xuXG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBCaXRtYXBMYXllcihwcm9wcywge1xuICAgICAgICAgICAgICBfaW1hZ2VDb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5DQVJURVNJQU4sXG4gICAgICAgICAgICAgIGRhdGE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgaW1hZ2U6IHByb3BzLmRhdGEsXG4gICAgICAgICAgICAgIGJvdW5kczogW3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXTtcbiAgICAgICAgfSxcbiAgICAgICAgcGFyYW1ldGVyczogQkFTRU1BUF9SQVNURVJfUEFSQU1FVEVSU1xuICAgICAgfSksXG5cbiAgICAvLyBWZWN0b3IgYmFzZW1hcCAoTVZUIGxhYmVscy9hZG1pbi93YXRlcilcbiAgICBjb25maWcuYmFzZW1hcCAmJlxuICAgICAgIWlzU2F0ZWxsaXRlICYmXG4gICAgICBoYXNUaWxlQWNjZXNzICYmXG4gICAgICBuZXcgTVZUTGF5ZXIoe1xuICAgICAgICAvLyBmb3JjZSB0aGUgbGF5ZXIgdG8gdXBkYXRlIHdoZW4gdGhlIHN0eWxlL2xhYmVsL3Byb3ZpZGVyIGNvbmZpZyBjaGFuZ2VzXG4gICAgICAgIGlkOiBgZ2xvYmUtYmFzZW1hcC1tdnQtbGF5ZXItJHtwcm92aWRlcn0tJHttYXBTdHlsZVR5cGV9YCxcbiAgICAgICAgZGF0YTogdXNlQ2FydG9cbiAgICAgICAgICA/IENBUlRPX1ZFQ1RPUl9USUxFX1VSTFNcbiAgICAgICAgICA6IGBodHRwczovL2EudGlsZXMubWFwYm94LmNvbS92NC9tYXBib3gubWFwYm94LXN0cmVldHMtdjgve3p9L3t4fS97eX0udmVjdG9yLnBiZj9hY2Nlc3NfdG9rZW49JHttYXBib3hBcGlBY2Nlc3NUb2tlbn1gLFxuICAgICAgICBtaW5ab29tOiAwLFxuICAgICAgICAvLyBPdmVyem9vbSBwYXN0IHRoZSBzb3VyY2UncyBuYXRpdmUgbWF4IGluc3RlYWQgb2YgNDA0LWluZyBvbiB0aWxlcyB0aGF0XG4gICAgICAgIC8vIGRvbid0IGV4aXN0ICh3aGljaCByZW5kZXJzIGFzIGVtcHR5IHJlY3RhbmdsZXMgYXQgaGlnaCB6b29tKS5cbiAgICAgICAgbWF4Wm9vbTogdXNlQ2FydG8gPyBDQVJUT19WRUNUT1JfTUFYX0RBVEFfWk9PTSA6IE1BUEJPWF9WRUNUT1JfTUFYX0RBVEFfWk9PTSxcbiAgICAgICAgem9vbU9mZnNldDpcbiAgICAgICAgICAodXNlQ2FydG8gPyBDQVJUT19HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQgOiBNQVBCT1hfR0xPQkVfVkVDVE9SX1pPT01fT0ZGU0VUKSArXG4gICAgICAgICAgbGF0Wm9vbUNvbXBlbnNhdGlvbixcbiAgICAgICAgZXh0ZW50OiBHTE9CRV9USUxFX0VYVEVOVCxcbiAgICAgICAgYmluYXJ5OiBmYWxzZSxcbiAgICAgICAgcGFyYW1ldGVyczogQkFTRU1BUF9NVlRfUEFSQU1FVEVSUyxcbiAgICAgICAgbG9hZE9wdGlvbnM6IHVzZUNhcnRvXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC8vIE9wZW5NYXBUaWxlcyBzY2hlbWE6IGBib3VuZGFyeWAgPSBhZG1pbiBsaW5lcywgYHBsYWNlYCA9IGxhYmVscy5cbiAgICAgICAgICAgICAgbXZ0OiB7XG4gICAgICAgICAgICAgICAgbGF5ZXJzOiBpc1NhdGVsbGl0ZVN0cmVldFxuICAgICAgICAgICAgICAgICAgPyBbJ3BsYWNlJywgJ2JvdW5kYXJ5J11cbiAgICAgICAgICAgICAgICAgIDogWydwbGFjZScsICdib3VuZGFyeScsICd3YXRlcicsICd0cmFuc3BvcnRhdGlvbiddXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgbXZ0OiB7XG4gICAgICAgICAgICAgICAgbGF5ZXJzOiBpc1NhdGVsbGl0ZVN0cmVldFxuICAgICAgICAgICAgICAgICAgPyBbJ3BsYWNlX2xhYmVsJywgJ2FkbWluJ11cbiAgICAgICAgICAgICAgICAgIDogWydwbGFjZV9sYWJlbCcsICdhZG1pbicsICd3YXRlcicsICdyb2FkJ11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgLy8gUmVuZGVyIGFkbWluL3dhdGVyIHZpYSBHZW9Kc29uTGF5ZXIgYW5kIHBsYWNlIGxhYmVscyB2aWEgVGV4dExheWVyLlxuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlbmRlclN1YkxheWVyczogKHByb3BzOiBhbnkpID0+IG5ldyBNVlRMYWJlbExheWVyKHByb3BzKSxcbiAgICAgICAgZ2V0RmlsbENvbG9yOiAoZjogYW55KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChnZXRCYXNlbWFwTGF5ZXJLaW5kKGYucHJvcGVydGllcy5sYXllck5hbWUpKSB7XG4gICAgICAgICAgICBjYXNlICd3YXRlcic6XG4gICAgICAgICAgICAgIHJldHVybiBjb25maWcud2F0ZXIgPyBjb25maWcud2F0ZXJDb2xvciA6IElOVklTSUJMRV9DT0xPUjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBjb25maWcuc3VyZmFjZUNvbG9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ2V0TGluZUNvbG9yOiAoZjogYW55KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChnZXRCYXNlbWFwTGF5ZXJLaW5kKGYucHJvcGVydGllcy5sYXllck5hbWUpKSB7XG4gICAgICAgICAgICBjYXNlICdhZG1pbic6XG4gICAgICAgICAgICAgIHJldHVybiBjb25maWcuYWRtaW5MaW5lcyA/IGNvbmZpZy5hZG1pbkxpbmVzQ29sb3IgOiBJTlZJU0lCTEVfQ09MT1I7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gY29uZmlnLnN1cmZhY2VDb2xvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdldExpbmVXaWR0aDogKGY6IGFueSkgPT4ge1xuICAgICAgICAgIHN3aXRjaCAoZ2V0QmFzZW1hcExheWVyS2luZChmLnByb3BlcnRpZXMubGF5ZXJOYW1lKSkge1xuICAgICAgICAgICAgY2FzZSAnYWRtaW4nOlxuICAgICAgICAgICAgICBzd2l0Y2ggKGYucHJvcGVydGllcy5hZG1pbl9sZXZlbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuNzU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICBnZXRGaWxsQ29sb3I6IFtjb25maWcud2F0ZXJDb2xvciwgY29uZmlnLnN1cmZhY2VDb2xvciwgY29uZmlnLndhdGVyXSxcbiAgICAgICAgICBnZXRMaW5lQ29sb3I6IFtjb25maWcuYWRtaW5MaW5lc0NvbG9yLCBjb25maWcuc3VyZmFjZUNvbG9yLCBjb25maWcuYWRtaW5MaW5lc11cbiAgICAgICAgfSxcbiAgICAgICAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuICAgICAgICBsaW5lV2lkdGhNaW5QaXhlbHM6IDAsXG4gICAgICAgIGxpbmVXaWR0aE1heFBpeGVsczogMjAsXG4gICAgICAgIGdldFBvaW50UmFkaXVzOiAwLFxuICAgICAgICBwb2ludFJhZGl1c01pblBpeGVsczogMFxuICAgICAgfSBhcyBhbnkpXG4gIF0uZmlsdGVyKEJvb2xlYW4pIGFzIExheWVyW107XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R2xvYmVUb3BMYXllcnMgPSAoe2dsb2JlLCB6b29tfToge2dsb2JlOiBHbG9iZTsgem9vbT86IG51bWJlcn0pOiBMYXllcltdID0+IHtcbiAgY29uc3Qge2NvbmZpZ30gPSBnbG9iZTtcbiAgcmV0dXJuIFtjb25maWcuYXRtb3NwaGVyZSA/IGdldEdsb2JlQXRtb3NwaGVyZUxheWVyKHtjb25maWcsIHpvb219KSA6IG51bGxdLmZpbHRlcihCb29sZWFuKSBhcyBMYXllcltdO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFH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