appium-chromedriver 5.0.4 → 5.0.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.
package/README.md CHANGED
@@ -1,7 +1,9 @@
1
1
  appium-chromedriver
2
2
  ===================
3
3
 
4
- [![Build Status](https://travis-ci.org/appium/appium-chromedriver.svg)](https://travis-ci.org/appium/appium-chromedriver)
4
+ [![Node.js CI](https://github.com/appium/appium-chromedriver/actions/workflows/node.js.yml/badge.svg)](https://github.com/appium/appium-chromedriver/actions/workflows/node.js.yml)
5
+
6
+ [![Release](https://github.com/appium/appium-chromedriver/actions/workflows/publish.js.yml/badge.svg)](https://github.com/appium/appium-chromedriver/actions/workflows/publish.js.yml)
5
7
 
6
8
  Node.js wrapper around [Chromedriver](https://sites.google.com/a/chromium.org/chromedriver/)
7
9
 
package/build/index.js CHANGED
@@ -23,4 +23,4 @@ var _default = _chromedriver.default;
23
23
  exports.default = _default;require('source-map-support').install();
24
24
 
25
25
 
26
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImNocm9tZWRyaXZlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7ZUFHZUEscUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWZhdWx0IGFzIGNocm9tZWRyaXZlciB9IGZyb20gJy4vbGliL2Nocm9tZWRyaXZlcic7XG5pbXBvcnQgQ2hyb21lZHJpdmVyU3RvcmFnZUNsaWVudCBmcm9tICcuL2xpYi9zdG9yYWdlLWNsaWVudCc7XG5cbmV4cG9ydCB7IENocm9tZWRyaXZlclN0b3JhZ2VDbGllbnQgfTtcbmV4cG9ydCBkZWZhdWx0IGNocm9tZWRyaXZlcjtcbiJdLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi4ifQ==
26
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6WyJjaHJvbWVkcml2ZXIiXSwic291cmNlUm9vdCI6Ii4uIiwic291cmNlcyI6WyJpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWZhdWx0IGFzIGNocm9tZWRyaXZlciB9IGZyb20gJy4vbGliL2Nocm9tZWRyaXZlcic7XG5pbXBvcnQgQ2hyb21lZHJpdmVyU3RvcmFnZUNsaWVudCBmcm9tICcuL2xpYi9zdG9yYWdlLWNsaWVudCc7XG5cbmV4cG9ydCB7IENocm9tZWRyaXZlclN0b3JhZ2VDbGllbnQgfTtcbmV4cG9ydCBkZWZhdWx0IGNocm9tZWRyaXZlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7ZUFHZUEscUIifQ==
@@ -736,4 +736,4 @@ var _default = Chromedriver;
736
736
  exports.default = _default;require('source-map-support').install();
737
737
 
738
738
 
739
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jaHJvbWVkcml2ZXIuanMiXSwibmFtZXMiOlsiTkVXX0NEX1ZFUlNJT05fRk9STUFUX01BSk9SX1ZFUlNJT04iLCJERUZBVUxUX0hPU1QiLCJNSU5fQ0RfVkVSU0lPTl9XSVRIX1czQ19TVVBQT1JUIiwiREVGQVVMVF9QT1JUIiwiQ0hST01FX0JVTkRMRV9JRCIsIldFQlZJRVdfU0hFTExfQlVORExFX0lEIiwiV0VCVklFV19CVU5ETEVfSURTIiwiQ0hST01FRFJJVkVSX1RVVE9SSUFMIiwiVkVSU0lPTl9QQVRURVJOIiwiQ0RfVkVSU0lPTl9USU1FT1VUIiwiQ2hyb21lZHJpdmVyIiwiZXZlbnRzIiwiRXZlbnRFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJhcmdzIiwiaG9zdCIsInBvcnQiLCJ1c2VTeXN0ZW1FeGVjdXRhYmxlIiwiZXhlY3V0YWJsZSIsImV4ZWN1dGFibGVEaXIiLCJidW5kbGVJZCIsIm1hcHBpbmdQYXRoIiwiY21kQXJncyIsImFkYiIsInZlcmJvc2UiLCJsb2dQYXRoIiwiZGlzYWJsZUJ1aWxkQ2hlY2siLCJkZXRhaWxzIiwiaXNBdXRvZG93bmxvYWRFbmFibGVkIiwiX2xvZyIsImxvZ2dlciIsImdldExvZ2dlciIsInByb3h5SG9zdCIsInByb3h5UG9ydCIsInByb2MiLCJjaHJvbWVkcml2ZXIiLCJleGVjdXRhYmxlVmVyaWZpZWQiLCJzdGF0ZSIsIlNUQVRFX1NUT1BQRUQiLCJqd3Byb3h5IiwiSldQcm94eSIsInNlcnZlciIsImxvZyIsInN0b3JhZ2VDbGllbnQiLCJDaHJvbWVkcml2ZXJTdG9yYWdlQ2xpZW50IiwiY2hyb21lZHJpdmVyRGlyIiwiY2FwYWJpbGl0aWVzIiwiZGVzaXJlZFByb3RvY29sIiwiUFJPVE9DT0xTIiwiTUpTT05XUCIsImdldERyaXZlcnNNYXBwaW5nIiwibWFwcGluZyIsIl8iLCJjbG9uZURlZXAiLCJDSFJPTUVEUklWRVJfQ0hST01FX01BUFBJTkciLCJkZWJ1ZyIsImZzIiwiZXhpc3RzIiwid2FybiIsImluZm8iLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZSIsImVyciIsIm1lc3NhZ2UiLCJjZFZlcnNpb24iLCJjaHJvbWVWZXJzaW9uIiwidG9QYWlycyIsImNvZXJjZWRWZXJzaW9uIiwic2VtdmVyIiwiY29lcmNlIiwidmVyc2lvbiIsImdldENocm9tZWRyaXZlcnMiLCJleGVjdXRhYmxlcyIsImdsb2IiLCJjd2QiLCJzdHJpY3QiLCJub2RpciIsImFic29sdXRlIiwidXRpbCIsInBsdXJhbGl6ZSIsImxlbmd0aCIsImNkcyIsImxvZ0Vycm9yIiwic3Rkb3V0Iiwic3RkZXJyIiwiZXJyTXNnIiwicGF0aCIsImJhc2VuYW1lIiwidGltZW91dCIsImluY2x1ZGVzIiwibWF0Y2giLCJleGVjIiwibWluQ2hyb21lVmVyc2lvbiIsIm1ham9yIiwibWlub3IiLCJmaWx0ZXIiLCJjZCIsInNvcnQiLCJhIiwiYiIsImlzRW1wdHkiLCJnZXRDaHJvbWVWZXJzaW9uIiwiQnJvd3NlciIsInZlcnNpb25NYXRjaCIsImFwaUxldmVsIiwiZ2V0QXBpTGV2ZWwiLCJ1cGRhdGVEcml2ZXJzTWFwcGluZyIsIm5ld01hcHBpbmciLCJzaG91bGRVcGRhdGVTdGF0aWNNYXBwaW5nIiwid3JpdGVGaWxlIiwic3RyaW5naWZ5IiwiZSIsIk9iamVjdCIsImFzc2lnbiIsImdldENvbXBhdGlibGVDaHJvbWVkcml2ZXIiLCJ2YWx1ZXMiLCJkaWRTdG9yYWdlU3luYyIsInN5bmNDaHJvbWVkcml2ZXJzIiwicmV0cmlldmVkTWFwcGluZyIsInJldHJpZXZlTWFwcGluZyIsImRyaXZlcktleXMiLCJzeW5jRHJpdmVycyIsIm1pbkJyb3dzZXJWZXJzaW9uIiwic3luY2hyb25pemVkRHJpdmVyc01hcHBpbmciLCJyZWR1Y2UiLCJhY2MiLCJ4IiwibWlzc2luZ1ZlcnNpb25zIiwiY29lcmNlZFZlciIsInNpemUiLCJlcnJvckFuZFRocm93IiwibWF0Y2hpbmdEcml2ZXJzIiwibWluQ2hyb21lVmVyc2lvblMiLCJndGUiLCJDRF9DRE4iLCJzdGFjayIsImF1dG9kb3dubG9hZFN1Z2dlc3Rpb24iLCJFcnJvciIsImJpblBhdGgiLCJpbml0Q2hyb21lZHJpdmVyUGF0aCIsInN5bmNQcm90b2NvbCIsIlczQyIsImNocm9tZU9wdGlvbnMiLCJ3M2MiLCJzdGFydCIsImNhcHMiLCJlbWl0U3RhcnRpbmdTdGF0ZSIsImxvZ2dpbmdQcmVmcyIsImJyb3dzZXIiLCJjaGFuZ2VTdGF0ZSIsIlNUQVRFX1NUQVJUSU5HIiwiYWRiUG9ydCIsInB1c2giLCJpc0FycmF5Iiwic3RhcnREZXRlY3RvciIsInN0YXJ0c1dpdGgiLCJwcm9jZXNzSXNBbGl2ZSIsIndlYnZpZXdWZXJzaW9uIiwia2lsbEFsbCIsIlN1YlByb2Nlc3MiLCJvbiIsIm91dCIsImxpbmUiLCJ0cmltIiwic3BsaXQiLCJlcnJvciIsImNvZGUiLCJzaWduYWwiLCJTVEFURV9TVE9QUElORyIsIlNUQVRFX1JFU1RBUlRJTkciLCJtc2ciLCJqb2luIiwid2FpdEZvck9ubGluZSIsInN0YXJ0U2Vzc2lvbiIsImVtaXQiLCJFVkVOVF9FUlJPUiIsInN0b3AiLCJ2ZXJzaW9uc1N1cHBvcnRlZEJ5RHJpdmVyIiwic2Vzc2lvbklkIiwiU1RBVEVfT05MSU5FIiwicmVzdGFydCIsImNocm9tZWRyaXZlclN0b3BwZWQiLCJnZXRTdGF0dXMiLCJjb21tYW5kIiwic2Vzc2lvbkNhcHMiLCJhbHdheXNNYXRjaCIsImRlc2lyZWRDYXBhYmlsaXRpZXMiLCJwcmVmaXgiLCJlbWl0U3RhdGVzIiwicnVuU2FmZVN0ZXAiLCJmIiwiRVZFTlRfQ0hBTkdFRCIsInNlbmRDb21tYW5kIiwidXJsIiwibWV0aG9kIiwiYm9keSIsInByb3h5UmVxIiwicmVxIiwicmVzIiwicHJveHlSZXFSZXMiLCJjbWQiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJCIiwicHJvbWlzaWZ5IiwiY3AiLCJ1ZGlkSW5kZXgiLCJkZWZhdWx0QXJncyIsImZpbmRJbmRleCIsIml0ZW0iLCJ1ZGlkIiwiY29ubiIsImdldEZvcndhcmRMaXN0IiwicGFyYW1zIiwicmVtb3ZlUG9ydEZvcndhcmQiLCJyZXBsYWNlIiwiaGFzV29ya2luZ1dlYnZpZXciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsbUNBQW1DLEdBQUcsRUFBNUM7QUFDQSxNQUFNQyxZQUFZLEdBQUcsV0FBckI7QUFDQSxNQUFNQywrQkFBK0IsR0FBRyxFQUF4QztBQUNBLE1BQU1DLFlBQVksR0FBRyxJQUFyQjtBQUNBLE1BQU1DLGdCQUFnQixHQUFHLG9CQUF6QjtBQUNBLE1BQU1DLHVCQUF1QixHQUFHLDRCQUFoQztBQUNBLE1BQU1DLGtCQUFrQixHQUFHLENBQ3pCLDRCQUR5QixFQUV6QixxQkFGeUIsQ0FBM0I7QUFJQSxNQUFNQyxxQkFBcUIsR0FBRyxpR0FBOUI7QUFDQSxNQUFNQyxlQUFlLEdBQUcsVUFBeEI7QUFFQSxNQUFNQyxrQkFBa0IsR0FBRyxJQUEzQjs7QUFFQSxNQUFNQyxZQUFOLFNBQTJCQyxnQkFBT0MsWUFBbEMsQ0FBK0M7QUFDN0NDLEVBQUFBLFdBQVcsQ0FBRUMsSUFBSSxHQUFHLEVBQVQsRUFBYTtBQUN0QjtBQUVBLFVBQU07QUFDSkMsTUFBQUEsSUFBSSxHQUFHZCxZQURIO0FBRUplLE1BQUFBLElBQUksR0FBR2IsWUFGSDtBQUdKYyxNQUFBQSxtQkFBbUIsR0FBRyxLQUhsQjtBQUlKQyxNQUFBQSxVQUpJO0FBS0pDLE1BQUFBLGFBQWEsR0FBRyxnQ0FMWjtBQU1KQyxNQUFBQSxRQU5JO0FBT0pDLE1BQUFBLFdBUEk7QUFRSkMsTUFBQUEsT0FSSTtBQVNKQyxNQUFBQSxHQVRJO0FBVUpDLE1BQUFBLE9BVkk7QUFXSkMsTUFBQUEsT0FYSTtBQVlKQyxNQUFBQSxpQkFaSTtBQWFKQyxNQUFBQSxPQWJJO0FBY0pDLE1BQUFBLHFCQUFxQixHQUFHO0FBZHBCLFFBZUZkLElBZko7QUFnQkEsU0FBS2UsSUFBTCxHQUFZQyxnQkFBT0MsU0FBUCxDQUFpQiw4QkFBa0IsSUFBbEIsQ0FBakIsQ0FBWjtBQUVBLFNBQUtDLFNBQUwsR0FBaUJqQixJQUFqQjtBQUNBLFNBQUtrQixTQUFMLEdBQWlCakIsSUFBakI7QUFDQSxTQUFLTyxHQUFMLEdBQVdBLEdBQVg7QUFDQSxTQUFLRCxPQUFMLEdBQWVBLE9BQWY7QUFDQSxTQUFLWSxJQUFMLEdBQVksSUFBWjtBQUNBLFNBQUtqQixtQkFBTCxHQUEyQkEsbUJBQTNCO0FBQ0EsU0FBS2tCLFlBQUwsR0FBb0JqQixVQUFwQjtBQUNBLFNBQUtDLGFBQUwsR0FBcUJBLGFBQXJCO0FBQ0EsU0FBS0UsV0FBTCxHQUFtQkEsV0FBbkI7QUFDQSxTQUFLRCxRQUFMLEdBQWdCQSxRQUFoQjtBQUNBLFNBQUtnQixrQkFBTCxHQUEwQixLQUExQjtBQUNBLFNBQUtDLEtBQUwsR0FBYTNCLFlBQVksQ0FBQzRCLGFBQTFCO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLElBQUlDLG1CQUFKLENBQVk7QUFDekJDLE1BQUFBLE1BQU0sRUFBRSxLQUFLVCxTQURZO0FBRXpCaEIsTUFBQUEsSUFBSSxFQUFFLEtBQUtpQixTQUZjO0FBR3pCUyxNQUFBQSxHQUFHLEVBQUUsS0FBS2I7QUFIZSxLQUFaLENBQWY7QUFLQSxTQUFLTCxPQUFMLEdBQWVBLE9BQWY7QUFDQSxTQUFLQyxPQUFMLEdBQWVBLE9BQWY7QUFDQSxTQUFLQyxpQkFBTCxHQUF5QixDQUFDLENBQUNBLGlCQUEzQjtBQUNBLFNBQUtpQixhQUFMLEdBQXFCZixxQkFBcUIsR0FDdEMsSUFBSWdCLHNCQUFKLENBQThCO0FBQUVDLE1BQUFBLGVBQWUsRUFBRSxLQUFLMUI7QUFBeEIsS0FBOUIsQ0FEc0MsR0FFdEMsSUFGSjtBQUdBLFNBQUtRLE9BQUwsR0FBZUEsT0FBZjtBQUNBLFNBQUttQixZQUFMLEdBQW9CLEVBQXBCO0FBQ0EsU0FBS0MsZUFBTCxHQUF1QkMsc0JBQVVDLE9BQWpDO0FBQ0Q7O0FBRU0sTUFBSFAsR0FBRyxHQUFJO0FBQ1QsV0FBTyxLQUFLYixJQUFaO0FBQ0Q7O0FBRXNCLFFBQWpCcUIsaUJBQWlCLEdBQUk7QUFDekIsUUFBSUMsT0FBTyxHQUFHQyxnQkFBRUMsU0FBRixDQUFZQyxrQ0FBWixDQUFkOztBQUNBLFFBQUksS0FBS2pDLFdBQVQsRUFBc0I7QUFDcEIsV0FBS3FCLEdBQUwsQ0FBU2EsS0FBVCxDQUFnQix3REFBdUQsS0FBS2xDLFdBQVksR0FBeEY7O0FBQ0EsVUFBSSxFQUFDLE1BQU1tQyxZQUFHQyxNQUFILENBQVUsS0FBS3BDLFdBQWYsQ0FBUCxDQUFKLEVBQXdDO0FBQ3RDLGFBQUtxQixHQUFMLENBQVNnQixJQUFULENBQWUscUJBQW9CLEtBQUtyQyxXQUFZLEdBQXBEO0FBQ0EsYUFBS3FCLEdBQUwsQ0FBU2lCLElBQVQsQ0FBYyx1REFBZDtBQUNELE9BSEQsTUFHTztBQUNMLFlBQUk7QUFDRlIsVUFBQUEsT0FBTyxHQUFHUyxJQUFJLENBQUNDLEtBQUwsQ0FBVyxNQUFNTCxZQUFHTSxRQUFILENBQVksS0FBS3pDLFdBQWpCLEVBQThCLE1BQTlCLENBQWpCLENBQVY7QUFDRCxTQUZELENBRUUsT0FBTzBDLEdBQVAsRUFBWTtBQUNaLGVBQUtyQixHQUFMLENBQVNnQixJQUFULENBQWUsK0JBQThCLEtBQUtyQyxXQUFZLE1BQUswQyxHQUFHLENBQUNDLE9BQVEsRUFBL0U7QUFDQSxlQUFLdEIsR0FBTCxDQUFTaUIsSUFBVCxDQUFjLHVEQUFkO0FBQ0Q7QUFDRjtBQUNGLEtBYkQsTUFhTztBQUNMLFdBQUtqQixHQUFMLENBQVNhLEtBQVQsQ0FBZSwrQ0FBZjtBQUNEOztBQUdELFNBQUssTUFBTSxDQUFDVSxTQUFELEVBQVlDLGFBQVosQ0FBWCxJQUF5Q2QsZ0JBQUVlLE9BQUYsQ0FBVWhCLE9BQVYsQ0FBekMsRUFBNkQ7QUFDM0QsWUFBTWlCLGNBQWMsR0FBR0MsZ0JBQU9DLE1BQVAsQ0FBY0osYUFBZCxDQUF2Qjs7QUFDQSxVQUFJRSxjQUFKLEVBQW9CO0FBQ2xCakIsUUFBQUEsT0FBTyxDQUFDYyxTQUFELENBQVAsR0FBcUJHLGNBQWMsQ0FBQ0csT0FBcEM7QUFDRCxPQUZELE1BRU87QUFDTCxhQUFLN0IsR0FBTCxDQUFTaUIsSUFBVCxDQUFlLElBQUdPLGFBQWMsOENBQWhDO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPZixPQUFQO0FBQ0Q7O0FBRXFCLFFBQWhCcUIsZ0JBQWdCLENBQUVyQixPQUFGLEVBQVc7QUFFL0IsVUFBTXNCLFdBQVcsR0FBRyxNQUFNakIsWUFBR2tCLElBQUgsQ0FBUSxHQUFSLEVBQWE7QUFDckNDLE1BQUFBLEdBQUcsRUFBRSxLQUFLeEQsYUFEMkI7QUFFckN5RCxNQUFBQSxNQUFNLEVBQUUsS0FGNkI7QUFHckNDLE1BQUFBLEtBQUssRUFBRSxJQUg4QjtBQUlyQ0MsTUFBQUEsUUFBUSxFQUFFO0FBSjJCLEtBQWIsQ0FBMUI7QUFNQSxTQUFLcEMsR0FBTCxDQUFTYSxLQUFULENBQWdCLFNBQVF3QixjQUFLQyxTQUFMLENBQWUsWUFBZixFQUE2QlAsV0FBVyxDQUFDUSxNQUF6QyxFQUFpRCxJQUFqRCxDQUF1RCxHQUFoRSxHQUNaLE9BQU0sS0FBSzlELGFBQWMsR0FENUI7QUFFQSxVQUFNK0QsR0FBRyxHQUFHLENBQUMsTUFBTSx3QkFBU1QsV0FBVCxFQUFzQixNQUFPdkQsVUFBUCxJQUFzQjtBQUM3RCxZQUFNaUUsUUFBUSxHQUFHLENBQUM7QUFBQ25CLFFBQUFBLE9BQUQ7QUFBVW9CLFFBQUFBLE1BQU0sR0FBRyxJQUFuQjtBQUF5QkMsUUFBQUEsTUFBTSxHQUFHO0FBQWxDLE9BQUQsS0FBNkM7QUFDNUQsWUFBSUMsTUFBTSxHQUFJLHdDQUF1Q0MsY0FBS0MsUUFBTCxDQUFjdEUsVUFBZCxDQUEwQix5QkFBbEUsR0FDVixpR0FBZ0c4QyxPQUFRLEVBRDNHOztBQUVBLFlBQUlvQixNQUFKLEVBQVk7QUFDVkUsVUFBQUEsTUFBTSxJQUFLLGFBQVlGLE1BQU8sRUFBOUI7QUFDRDs7QUFDRCxZQUFJQyxNQUFKLEVBQVk7QUFDVkMsVUFBQUEsTUFBTSxJQUFLLGFBQVlELE1BQU8sRUFBOUI7QUFDRDs7QUFDRCxhQUFLM0MsR0FBTCxDQUFTZ0IsSUFBVCxDQUFjNEIsTUFBZDtBQUNBLGVBQU8sSUFBUDtBQUNELE9BWEQ7O0FBYUEsVUFBSUYsTUFBSjtBQUNBLFVBQUlDLE1BQUo7O0FBQ0EsVUFBSTtBQUNGLFNBQUM7QUFBQ0QsVUFBQUEsTUFBRDtBQUFTQyxVQUFBQTtBQUFULFlBQW1CLE1BQU0sd0JBQUtuRSxVQUFMLEVBQWlCLENBQUMsV0FBRCxDQUFqQixFQUFnQztBQUN4RHVFLFVBQUFBLE9BQU8sRUFBRWhGO0FBRCtDLFNBQWhDLENBQTFCO0FBR0QsT0FKRCxDQUlFLE9BQU9zRCxHQUFQLEVBQVk7QUFDWixZQUFJLENBQUMsQ0FBQ0EsR0FBRyxDQUFDQyxPQUFKLElBQWUsRUFBaEIsRUFBb0IwQixRQUFwQixDQUE2QixXQUE3QixDQUFELElBQThDLENBQUMsQ0FBQzNCLEdBQUcsQ0FBQ3FCLE1BQUosSUFBYyxFQUFmLEVBQW1CTSxRQUFuQixDQUE0Qix1QkFBNUIsQ0FBbkQsRUFBeUc7QUFDdkcsaUJBQU9QLFFBQVEsQ0FBQ3BCLEdBQUQsQ0FBZjtBQUNEOztBQUlEcUIsUUFBQUEsTUFBTSxHQUFHckIsR0FBRyxDQUFDcUIsTUFBYjtBQUNEOztBQUVELFlBQU1PLEtBQUssR0FBRyxtQ0FBbUNDLElBQW5DLENBQXdDUixNQUF4QyxDQUFkOztBQUNBLFVBQUksQ0FBQ08sS0FBTCxFQUFZO0FBQ1YsZUFBT1IsUUFBUSxDQUFDO0FBQUNuQixVQUFBQSxPQUFPLEVBQUUsaUNBQVY7QUFBNkNvQixVQUFBQSxNQUE3QztBQUFxREMsVUFBQUE7QUFBckQsU0FBRCxDQUFmO0FBQ0Q7O0FBQ0QsVUFBSWQsT0FBTyxHQUFHb0IsS0FBSyxDQUFDLENBQUQsQ0FBbkI7QUFDQSxVQUFJRSxnQkFBZ0IsR0FBRzFDLE9BQU8sQ0FBQ29CLE9BQUQsQ0FBOUI7O0FBQ0EsWUFBTUgsY0FBYyxHQUFHQyxnQkFBT0MsTUFBUCxDQUFjQyxPQUFkLENBQXZCOztBQUNBLFVBQUlILGNBQUosRUFBb0I7QUFFbEIsWUFBSUEsY0FBYyxDQUFDMEIsS0FBZixHQUF1QjlGLG1DQUEzQixFQUFnRTtBQUM5RHVFLFVBQUFBLE9BQU8sR0FBSSxHQUFFSCxjQUFjLENBQUMwQixLQUFNLElBQUcxQixjQUFjLENBQUMyQixLQUFNLEVBQTFEO0FBQ0FGLFVBQUFBLGdCQUFnQixHQUFHMUMsT0FBTyxDQUFDb0IsT0FBRCxDQUExQjtBQUNEOztBQUNELFlBQUksQ0FBQ3NCLGdCQUFELElBQXFCekIsY0FBYyxDQUFDMEIsS0FBZixJQUF3QjlGLG1DQUFqRCxFQUFzRjtBQUVwRjZGLFVBQUFBLGdCQUFnQixHQUFJLEdBQUV6QixjQUFjLENBQUMwQixLQUFNLEVBQTNDO0FBQ0Q7QUFDRjs7QUFDRCxhQUFPO0FBQ0w1RSxRQUFBQSxVQURLO0FBRUxxRCxRQUFBQSxPQUZLO0FBR0xzQixRQUFBQTtBQUhLLE9BQVA7QUFLRCxLQXJEa0IsQ0FBUCxFQXNEVEcsTUF0RFMsQ0FzRERDLEVBQUQsSUFBUSxDQUFDLENBQUNBLEVBdERSLEVBdURUQyxJQXZEUyxDQXVESixDQUFDQyxDQUFELEVBQUlDLENBQUosS0FBVSw4QkFBZ0JBLENBQUMsQ0FBQzdCLE9BQWxCLEVBQTJCNEIsQ0FBQyxDQUFDNUIsT0FBN0IsQ0F2RE4sQ0FBWjs7QUF3REEsUUFBSW5CLGdCQUFFaUQsT0FBRixDQUFVbkIsR0FBVixDQUFKLEVBQW9CO0FBQ2xCLFdBQUt4QyxHQUFMLENBQVNpQixJQUFULENBQWUsbUNBQWtDLEtBQUt4QyxhQUFjLEdBQXBFO0FBQ0EsYUFBTytELEdBQVA7QUFDRDs7QUFDRCxTQUFLeEMsR0FBTCxDQUFTYSxLQUFULENBQWdCLG9EQUFoQjs7QUFDQSxTQUFLLE1BQU0wQyxFQUFYLElBQWlCZixHQUFqQixFQUFzQjtBQUNwQixXQUFLeEMsR0FBTCxDQUFTYSxLQUFULENBQWdCLFFBQU8wQyxFQUFFLENBQUMvRSxVQUFXLGVBQWMrRSxFQUFFLENBQUMxQixPQUFRLDhCQUE2QjBCLEVBQUUsQ0FBQ0osZ0JBQUgsR0FBc0JJLEVBQUUsQ0FBQ0osZ0JBQXpCLEdBQTRDLFNBQVUsSUFBako7QUFDRDs7QUFDRCxXQUFPWCxHQUFQO0FBQ0Q7O0FBRXFCLFFBQWhCb0IsZ0JBQWdCLEdBQUk7QUFBQTs7QUFJeEIseUJBQUksS0FBSzNFLE9BQVQsMENBQUksY0FBY2dDLElBQWxCLEVBQXdCO0FBQUE7O0FBQ3RCLFdBQUtqQixHQUFMLENBQVNhLEtBQVQsQ0FBZ0IsNENBQUQsa0JBQTRDLEtBQUs1QixPQUFqRCwwRUFBNEMsZUFBY2dDLElBQTFELHdEQUE0QyxvQkFBb0I0QyxPQUFRLEVBQXZGO0FBQ0Q7O0FBQ0QsVUFBTUMsWUFBWSxHQUFHaEcsZUFBZSxDQUFDb0YsSUFBaEIsbUJBQXFCLEtBQUtqRSxPQUExQiwwRUFBcUIsZUFBY2dDLElBQW5DLHdEQUFxQixvQkFBb0I0QyxPQUF6QyxDQUFyQjs7QUFDQSxRQUFJQyxZQUFKLEVBQWtCO0FBQ2hCLFlBQU1wQyxjQUFjLEdBQUdDLGdCQUFPQyxNQUFQLENBQWNrQyxZQUFZLENBQUMsQ0FBRCxDQUExQixDQUF2Qjs7QUFDQSxVQUFJcEMsY0FBSixFQUFvQjtBQUNsQixlQUFPQSxjQUFQO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJRixhQUFKOztBQUdBLFFBQUksS0FBSzlDLFFBQUwsS0FBa0JmLHVCQUF0QixFQUErQztBQUM3QyxXQUFLLE1BQU1lLFFBQVgsSUFBdUJkLGtCQUF2QixFQUEyQztBQUN6QzRELFFBQUFBLGFBQWEsR0FBRyxNQUFNLDZCQUFpQixLQUFLM0MsR0FBdEIsRUFBMkJILFFBQTNCLENBQXRCOztBQUNBLFlBQUk4QyxhQUFKLEVBQW1CO0FBQ2pCLGVBQUs5QyxRQUFMLEdBQWdCQSxRQUFoQjtBQUNBLGlCQUFPaUQsZ0JBQU9DLE1BQVAsQ0FBY0osYUFBZCxDQUFQO0FBQ0Q7QUFDRjs7QUFDRCxhQUFPLElBQVA7QUFDRDs7QUFHRCxRQUFJLEtBQUszQyxHQUFULEVBQWM7QUFDWixZQUFNa0YsUUFBUSxHQUFHLE1BQU0sS0FBS2xGLEdBQUwsQ0FBU21GLFdBQVQsRUFBdkI7O0FBQ0EsVUFBSUQsUUFBUSxJQUFJLEVBQVosSUFBa0JBLFFBQVEsSUFBSSxFQUE5QixJQUNBLENBQUNwRyx1QkFBRCxFQUEwQixHQUFHQyxrQkFBN0IsRUFBaURvRixRQUFqRCxDQUEwRCxLQUFLdEUsUUFBL0QsQ0FESixFQUM4RTtBQUM1RSxhQUFLQSxRQUFMLEdBQWdCaEIsZ0JBQWhCO0FBQ0Q7QUFDRjs7QUFHRCxRQUFJLENBQUMsS0FBS2dCLFFBQVYsRUFBb0I7QUFFbEIsV0FBS0EsUUFBTCxHQUFnQmhCLGdCQUFoQjs7QUFHQSxXQUFLLE1BQU1nQixRQUFYLElBQXVCZCxrQkFBdkIsRUFBMkM7QUFDekM0RCxRQUFBQSxhQUFhLEdBQUcsTUFBTSw2QkFBaUIsS0FBSzNDLEdBQXRCLEVBQTJCSCxRQUEzQixDQUF0Qjs7QUFDQSxZQUFJOEMsYUFBSixFQUFtQjtBQUNqQixlQUFLOUMsUUFBTCxHQUFnQkEsUUFBaEI7QUFDQTtBQUNEO0FBQ0Y7QUFDRjs7QUFHRCxRQUFJLENBQUM4QyxhQUFMLEVBQW9CO0FBQ2xCQSxNQUFBQSxhQUFhLEdBQUcsTUFBTSw2QkFBaUIsS0FBSzNDLEdBQXRCLEVBQTJCLEtBQUtILFFBQWhDLENBQXRCO0FBQ0Q7O0FBR0QsV0FBTzhDLGFBQWEsR0FBR0csZ0JBQU9DLE1BQVAsQ0FBY0osYUFBZCxDQUFILEdBQWtDLElBQXREO0FBQ0Q7O0FBRXlCLFFBQXBCeUMsb0JBQW9CLENBQUVDLFVBQUYsRUFBYztBQUN0QyxRQUFJQyx5QkFBeUIsR0FBRyxJQUFoQzs7QUFDQSxRQUFJLE1BQU1yRCxZQUFHQyxNQUFILENBQVUsS0FBS3BDLFdBQWYsQ0FBVixFQUF1QztBQUNyQyxVQUFJO0FBQ0YsY0FBTW1DLFlBQUdzRCxTQUFILENBQWEsS0FBS3pGLFdBQWxCLEVBQStCdUMsSUFBSSxDQUFDbUQsU0FBTCxDQUFlSCxVQUFmLEVBQTJCLElBQTNCLEVBQWlDLENBQWpDLENBQS9CLEVBQW9FLE1BQXBFLENBQU47QUFDQUMsUUFBQUEseUJBQXlCLEdBQUcsS0FBNUI7QUFDRCxPQUhELENBR0UsT0FBT0csQ0FBUCxFQUFVO0FBQ1YsYUFBS3RFLEdBQUwsQ0FBU2dCLElBQVQsQ0FBZSx3REFBdUQsS0FBS3JDLFdBQVksS0FBekUsR0FDWCwwRUFBeUUyRixDQUFDLENBQUNoRCxPQUFRLEVBRHRGO0FBRUQ7QUFDRjs7QUFDRCxRQUFJNkMseUJBQUosRUFBK0I7QUFDN0JJLE1BQUFBLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjNUQsa0NBQWQsRUFBMkNzRCxVQUEzQztBQUNEO0FBQ0Y7O0FBRThCLFFBQXpCTyx5QkFBeUIsR0FBSTtBQUNqQyxRQUFJLENBQUMsS0FBSzVGLEdBQVYsRUFBZTtBQUNiLGFBQU8sTUFBTSx1Q0FBYjtBQUNEOztBQUVELFVBQU00QixPQUFPLEdBQUcsTUFBTSxLQUFLRCxpQkFBTCxFQUF0Qjs7QUFDQSxRQUFJLENBQUNFLGdCQUFFaUQsT0FBRixDQUFVbEQsT0FBVixDQUFMLEVBQXlCO0FBQ3ZCLFdBQUtULEdBQUwsQ0FBU2EsS0FBVCxDQUFnQix5Q0FBd0NILGdCQUFFZ0UsTUFBRixDQUFTakUsT0FBVCxFQUFrQixDQUFsQixDQUFxQixFQUE3RTtBQUNEOztBQUVELFFBQUlrRSxjQUFjLEdBQUcsS0FBckI7O0FBQ0EsVUFBTUMsaUJBQWlCLEdBQUcsTUFBT3BELGFBQVAsSUFBeUI7QUFDakRtRCxNQUFBQSxjQUFjLEdBQUcsSUFBakI7QUFDQSxZQUFNRSxnQkFBZ0IsR0FBRyxNQUFNLEtBQUs1RSxhQUFMLENBQW1CNkUsZUFBbkIsRUFBL0I7QUFDQSxXQUFLOUUsR0FBTCxDQUFTYSxLQUFULENBQWUsaURBQ2JLLElBQUksQ0FBQ21ELFNBQUwsQ0FBZVEsZ0JBQWYsRUFBaUMsSUFBakMsRUFBdUMsQ0FBdkMsQ0FERjtBQUVBLFlBQU1FLFVBQVUsR0FBRyxNQUFNLEtBQUs5RSxhQUFMLENBQW1CK0UsV0FBbkIsQ0FBK0I7QUFDdERDLFFBQUFBLGlCQUFpQixFQUFFekQsYUFBYSxDQUFDNEI7QUFEcUIsT0FBL0IsQ0FBekI7O0FBR0EsVUFBSTFDLGdCQUFFaUQsT0FBRixDQUFVb0IsVUFBVixDQUFKLEVBQTJCO0FBQ3pCLGVBQU8sS0FBUDtBQUNEOztBQUNELFlBQU1HLDBCQUEwQixHQUFHSCxVQUFVLENBQUNJLE1BQVgsQ0FBa0IsQ0FBQ0MsR0FBRCxFQUFNQyxDQUFOLEtBQVk7QUFDL0QsY0FBTTtBQUFDeEQsVUFBQUEsT0FBRDtBQUFVb0QsVUFBQUE7QUFBVixZQUErQkosZ0JBQWdCLENBQUNRLENBQUQsQ0FBckQ7QUFDQUQsUUFBQUEsR0FBRyxDQUFDdkQsT0FBRCxDQUFILEdBQWVvRCxpQkFBZjtBQUNBLGVBQU9HLEdBQVA7QUFDRCxPQUprQyxFQUloQyxFQUpnQyxDQUFuQztBQUtBYixNQUFBQSxNQUFNLENBQUNDLE1BQVAsQ0FBYy9ELE9BQWQsRUFBdUJ5RSwwQkFBdkI7QUFDQSxZQUFNLEtBQUtqQixvQkFBTCxDQUEwQnhELE9BQTFCLENBQU47QUFDQSxhQUFPLElBQVA7QUFDRCxLQW5CRDs7QUFxQkEsT0FBRztBQUNELFlBQU0rQixHQUFHLEdBQUcsTUFBTSxLQUFLVixnQkFBTCxDQUFzQnJCLE9BQXRCLENBQWxCO0FBRUEsWUFBTTZFLGVBQWUsR0FBRyxFQUF4Qjs7QUFDQSxXQUFLLE1BQU07QUFBQ3pELFFBQUFBLE9BQUQ7QUFBVXNCLFFBQUFBO0FBQVYsT0FBWCxJQUEwQ1gsR0FBMUMsRUFBK0M7QUFDN0MsWUFBSSxDQUFDVyxnQkFBRCxJQUFxQjFDLE9BQU8sQ0FBQ29CLE9BQUQsQ0FBaEMsRUFBMkM7QUFDekM7QUFDRDs7QUFDRCxjQUFNMEQsVUFBVSxHQUFHNUQsZ0JBQU9DLE1BQVAsQ0FBY0MsT0FBZCxDQUFuQjs7QUFDQSxZQUFJLENBQUMwRCxVQUFELElBQWVBLFVBQVUsQ0FBQ25DLEtBQVgsR0FBbUI5RixtQ0FBdEMsRUFBMkU7QUFDekU7QUFDRDs7QUFFRGdJLFFBQUFBLGVBQWUsQ0FBQ3pELE9BQUQsQ0FBZixHQUEyQnNCLGdCQUEzQjtBQUNEOztBQUNELFVBQUksQ0FBQ3pDLGdCQUFFaUQsT0FBRixDQUFVMkIsZUFBVixDQUFMLEVBQWlDO0FBQy9CLGFBQUt0RixHQUFMLENBQVNpQixJQUFULENBQWUsU0FBUW9CLGNBQUtDLFNBQUwsQ0FBZSxjQUFmLEVBQStCNUIsZ0JBQUU4RSxJQUFGLENBQU9GLGVBQVAsQ0FBL0IsRUFBd0QsSUFBeEQsQ0FBOEQsSUFBdkUsR0FDWCxTQUFRNUUsZ0JBQUU4RSxJQUFGLENBQU9GLGVBQVAsTUFBNEIsQ0FBNUIsR0FBZ0MsSUFBaEMsR0FBdUMsS0FBTSwwQ0FEMUMsR0FFWnBFLElBQUksQ0FBQ21ELFNBQUwsQ0FBZWlCLGVBQWYsQ0FGRjtBQUdBLGNBQU0sS0FBS3JCLG9CQUFMLENBQTBCTSxNQUFNLENBQUNDLE1BQVAsQ0FBYy9ELE9BQWQsRUFBdUI2RSxlQUF2QixDQUExQixDQUFOO0FBQ0Q7O0FBRUQsVUFBSSxLQUFLdEcsaUJBQVQsRUFBNEI7QUFDMUIsWUFBSTBCLGdCQUFFaUQsT0FBRixDQUFVbkIsR0FBVixDQUFKLEVBQW9CO0FBQ2xCLGVBQUt4QyxHQUFMLENBQVN5RixhQUFULENBQXdCLDBFQUFELEdBQ3BCLDZEQURIO0FBRUQ7O0FBQ0QsY0FBTTtBQUFDNUQsVUFBQUEsT0FBRDtBQUFVckQsVUFBQUE7QUFBVixZQUF3QmdFLEdBQUcsQ0FBQyxDQUFELENBQWpDO0FBQ0EsYUFBS3hDLEdBQUwsQ0FBU2dCLElBQVQsQ0FBZSx3RUFBdUVhLE9BQVEsU0FBUXJELFVBQVcsSUFBakg7QUFDQSxhQUFLd0IsR0FBTCxDQUFTZ0IsSUFBVCxDQUFlLDZFQUFmO0FBQ0EsZUFBT3hDLFVBQVA7QUFDRDs7QUFFRCxZQUFNZ0QsYUFBYSxHQUFHLE1BQU0sS0FBS29DLGdCQUFMLEVBQTVCOztBQUNBLFVBQUksQ0FBQ3BDLGFBQUwsRUFBb0I7QUFFbEIsWUFBSWQsZ0JBQUVpRCxPQUFGLENBQVVuQixHQUFWLENBQUosRUFBb0I7QUFDbEIsZUFBS3hDLEdBQUwsQ0FBU3lGLGFBQVQsQ0FBd0IsMEVBQUQsR0FDcEIsaURBREg7QUFFRDs7QUFDRCxjQUFNO0FBQUM1RCxVQUFBQSxPQUFEO0FBQVVyRCxVQUFBQTtBQUFWLFlBQXdCZ0UsR0FBRyxDQUFDLENBQUQsQ0FBakM7QUFDQSxhQUFLeEMsR0FBTCxDQUFTZ0IsSUFBVCxDQUFlLHlEQUF3RGEsT0FBUSxRQUFPckQsVUFBVyxHQUFqRztBQUNBLGVBQU9BLFVBQVA7QUFDRDs7QUFDRCxXQUFLd0IsR0FBTCxDQUFTYSxLQUFULENBQWdCLHdCQUF1QixLQUFLbkMsUUFBUyxjQUFhOEMsYUFBYyxHQUFoRjtBQUVBLFlBQU1rRSxlQUFlLEdBQUdsRCxHQUFHLENBQUNjLE1BQUosQ0FBVyxDQUFDO0FBQUNILFFBQUFBO0FBQUQsT0FBRCxLQUF3QjtBQUN6RCxjQUFNd0MsaUJBQWlCLEdBQUd4QyxnQkFBZ0IsSUFBSXhCLGdCQUFPQyxNQUFQLENBQWN1QixnQkFBZCxDQUE5Qzs7QUFDQSxZQUFJLENBQUN3QyxpQkFBTCxFQUF3QjtBQUN0QixpQkFBTyxLQUFQO0FBQ0Q7O0FBRUQsZUFBT25FLGFBQWEsQ0FBQzRCLEtBQWQsR0FBc0I5RixtQ0FBdEIsR0FDSHFJLGlCQUFpQixDQUFDdkMsS0FBbEIsS0FBNEI1QixhQUFhLENBQUM0QixLQUR2QyxHQUVIekIsZ0JBQU9pRSxHQUFQLENBQVdwRSxhQUFYLEVBQTBCbUUsaUJBQTFCLENBRko7QUFHRCxPQVR1QixDQUF4Qjs7QUFVQSxVQUFJakYsZ0JBQUVpRCxPQUFGLENBQVUrQixlQUFWLENBQUosRUFBZ0M7QUFDOUIsWUFBSSxLQUFLekYsYUFBTCxJQUFzQixDQUFDMEUsY0FBM0IsRUFBMkM7QUFDekMsY0FBSTtBQUNGLGdCQUFJLE1BQU1DLGlCQUFpQixDQUFDcEQsYUFBRCxDQUEzQixFQUE0QztBQUMxQztBQUNEO0FBQ0YsV0FKRCxDQUlFLE9BQU84QyxDQUFQLEVBQVU7QUFDVixpQkFBS3RFLEdBQUwsQ0FBU2dCLElBQVQsQ0FBZSxxRUFBb0U2RSxhQUFPLElBQTVFLEdBQ1p2QixDQUFDLENBQUNoRCxPQURKO0FBRUEsaUJBQUt0QixHQUFMLENBQVNhLEtBQVQsQ0FBZXlELENBQUMsQ0FBQ3dCLEtBQWpCO0FBQ0Q7QUFDRjs7QUFDRCxjQUFNQyxzQkFBc0IsR0FDMUIsOEVBREY7QUFFQSxjQUFNLElBQUlDLEtBQUosQ0FBVyxtREFBa0R4RSxhQUFjLEtBQWpFLElBQ2IsQ0FBQyxLQUFLdkIsYUFBTixHQUF1QixHQUFFOEYsc0JBQXVCLElBQWhELEdBQXNELEVBRHpDLElBRWIsT0FBTWxJLHFCQUFzQixtQkFGekIsQ0FBTjtBQUdEOztBQUVELFlBQU1vSSxPQUFPLEdBQUdQLGVBQWUsQ0FBQyxDQUFELENBQWYsQ0FBbUJsSCxVQUFuQztBQUNBLFdBQUt3QixHQUFMLENBQVNhLEtBQVQsQ0FBZ0IsU0FBUXdCLGNBQUtDLFNBQUwsQ0FBZSxZQUFmLEVBQTZCb0QsZUFBZSxDQUFDbkQsTUFBN0MsRUFBcUQsSUFBckQsQ0FBMkQsR0FBcEUsR0FDWixpQ0FBZ0NmLGFBQWMsa0NBQWlDeUUsT0FBUSxJQUQxRjtBQUVBLFdBQUtqRyxHQUFMLENBQVNhLEtBQVQsQ0FBZSxvRkFDYixxQkFERjtBQUVBLGFBQU9vRixPQUFQO0FBRUQsS0FsRkQsUUFrRlMsSUFsRlQ7QUFtRkQ7O0FBRXlCLFFBQXBCQyxvQkFBb0IsR0FBSTtBQUM1QixRQUFJLEtBQUt4RyxrQkFBVCxFQUE2Qjs7QUFLN0IsUUFBSSxDQUFDLEtBQUtELFlBQVYsRUFBd0I7QUFDdEIsV0FBS0EsWUFBTCxHQUFvQixLQUFLbEIsbUJBQUwsR0FDaEIsTUFBTSx1Q0FEVSxHQUVoQixNQUFNLEtBQUtrRyx5QkFBTCxFQUZWO0FBR0Q7O0FBRUQsUUFBSSxFQUFDLE1BQU0zRCxZQUFHQyxNQUFILENBQVUsS0FBS3RCLFlBQWYsQ0FBUCxDQUFKLEVBQXlDO0FBQ3ZDLFlBQU0sSUFBSXVHLEtBQUosQ0FBVyxrREFBRCxHQUNDLEdBQUUsS0FBS3ZHLFlBQWEseUJBRC9CLENBQU47QUFFRDs7QUFDRCxTQUFLQyxrQkFBTCxHQUEwQixJQUExQjtBQUNBLFNBQUtNLEdBQUwsQ0FBU2lCLElBQVQsQ0FBZSwrQkFBOEIsS0FBS3hCLFlBQWEsRUFBL0Q7QUFDRDs7QUFFRDBHLEVBQUFBLFlBQVksQ0FBRTVFLFNBQVMsR0FBRyxJQUFkLEVBQW9CO0FBQzlCLFVBQU1HLGNBQWMsR0FBR0MsZ0JBQU9DLE1BQVAsQ0FBY0wsU0FBZCxDQUF2Qjs7QUFDQSxRQUFJLENBQUNHLGNBQUQsSUFBbUJBLGNBQWMsQ0FBQzBCLEtBQWYsR0FBdUI1RiwrQkFBOUMsRUFBK0U7QUFDN0UsV0FBS3dDLEdBQUwsQ0FBU2EsS0FBVCxDQUFnQixtQkFBa0JVLFNBQVUsMkJBQTBCakIsc0JBQVU4RixHQUFJLGFBQXJFLEdBQ1osaUJBQWdCOUYsc0JBQVVDLE9BQVEsRUFEckM7QUFFQTtBQUNEOztBQUNELFVBQU04RixhQUFhLEdBQUcsa0NBQVksS0FBS2pHLFlBQWpCLEVBQStCLGVBQS9CLEVBQWdELEVBQWhELENBQXRCOztBQUNBLFFBQUlpRyxhQUFhLENBQUNDLEdBQWQsS0FBc0IsS0FBMUIsRUFBaUM7QUFDL0IsV0FBS3RHLEdBQUwsQ0FBU2lCLElBQVQsQ0FBZSxtQkFBa0JNLFNBQVUsYUFBWWpCLHNCQUFVOEYsR0FBSSxhQUF2RCxHQUNYLE9BQU05RixzQkFBVUMsT0FBUSxvQ0FEM0I7QUFFQTtBQUNEOztBQUNELFNBQUtGLGVBQUwsR0FBdUJDLHNCQUFVOEYsR0FBakM7QUFJQSxTQUFLaEcsWUFBTCxHQUFvQixvQ0FBYyxLQUFLQSxZQUFuQixDQUFwQjtBQUNEOztBQUVVLFFBQUxtRyxLQUFLLENBQUVDLElBQUYsRUFBUUMsaUJBQWlCLEdBQUcsSUFBNUIsRUFBa0M7QUFDM0MsU0FBS3JHLFlBQUwsR0FBb0JNLGdCQUFFQyxTQUFGLENBQVk2RixJQUFaLENBQXBCO0FBR0EsU0FBS3BHLFlBQUwsQ0FBa0JzRyxZQUFsQixHQUFpQ2hHLGdCQUFFQyxTQUFGLENBQVksa0NBQVk2RixJQUFaLEVBQWtCLGNBQWxCLEVBQWtDLEVBQWxDLENBQVosQ0FBakM7O0FBQ0EsUUFBSTlGLGdCQUFFaUQsT0FBRixDQUFVLEtBQUt2RCxZQUFMLENBQWtCc0csWUFBbEIsQ0FBK0JDLE9BQXpDLENBQUosRUFBdUQ7QUFDckQsV0FBS3ZHLFlBQUwsQ0FBa0JzRyxZQUFsQixDQUErQkMsT0FBL0IsR0FBeUMsS0FBekM7QUFDRDs7QUFFRCxRQUFJRixpQkFBSixFQUF1QjtBQUNyQixXQUFLRyxXQUFMLENBQWlCNUksWUFBWSxDQUFDNkksY0FBOUI7QUFDRDs7QUFFRCxVQUFNekksSUFBSSxHQUFHLENBQUUsVUFBUyxLQUFLbUIsU0FBVSxFQUExQixDQUFiOztBQUNBLFFBQUksS0FBS1YsR0FBTCxJQUFZLEtBQUtBLEdBQUwsQ0FBU2lJLE9BQXpCLEVBQWtDO0FBQ2hDMUksTUFBQUEsSUFBSSxDQUFDMkksSUFBTCxDQUFXLGNBQWEsS0FBS2xJLEdBQUwsQ0FBU2lJLE9BQVEsRUFBekM7QUFDRDs7QUFDRCxRQUFJcEcsZ0JBQUVzRyxPQUFGLENBQVUsS0FBS3BJLE9BQWYsQ0FBSixFQUE2QjtBQUMzQlIsTUFBQUEsSUFBSSxDQUFDMkksSUFBTCxDQUFVLEdBQUcsS0FBS25JLE9BQWxCO0FBQ0Q7O0FBQ0QsUUFBSSxLQUFLRyxPQUFULEVBQWtCO0FBQ2hCWCxNQUFBQSxJQUFJLENBQUMySSxJQUFMLENBQVcsY0FBYSxLQUFLaEksT0FBUSxFQUFyQztBQUNEOztBQUNELFFBQUksS0FBS0MsaUJBQVQsRUFBNEI7QUFDMUJaLE1BQUFBLElBQUksQ0FBQzJJLElBQUwsQ0FBVSx1QkFBVjtBQUNEOztBQUNEM0ksSUFBQUEsSUFBSSxDQUFDMkksSUFBTCxDQUFVLFdBQVY7O0FBR0EsVUFBTUUsYUFBYSxHQUFJdkUsTUFBRCxJQUFZQSxNQUFNLENBQUN3RSxVQUFQLENBQWtCLFdBQWxCLENBQWxDOztBQUVBLFFBQUlDLGNBQWMsR0FBRyxLQUFyQjtBQUNBLFFBQUlDLGNBQUo7O0FBQ0EsUUFBSTtBQUNGLFlBQU0sS0FBS2xCLG9CQUFMLEVBQU47QUFDQSxZQUFNLEtBQUttQixPQUFMLEVBQU47QUFHQSxXQUFLN0gsSUFBTCxHQUFZLElBQUk4SCx3QkFBSixDQUFlLEtBQUs3SCxZQUFwQixFQUFrQ3JCLElBQWxDLENBQVo7QUFDQStJLE1BQUFBLGNBQWMsR0FBRyxJQUFqQjtBQUdBLFdBQUszSCxJQUFMLENBQVUrSCxFQUFWLENBQWEsUUFBYixFQUF1QixDQUFDN0UsTUFBRCxFQUFTQyxNQUFULEtBQW9CO0FBVXpDLGNBQU02RSxHQUFHLEdBQUc5RSxNQUFNLEdBQUdDLE1BQXJCO0FBQ0EsWUFBSU0sS0FBSyxHQUFHLG9CQUFvQkMsSUFBcEIsQ0FBeUJzRSxHQUF6QixDQUFaOztBQUNBLFlBQUl2RSxLQUFKLEVBQVc7QUFDVG1FLFVBQUFBLGNBQWMsR0FBR25FLEtBQUssQ0FBQyxDQUFELENBQXRCO0FBQ0EsZUFBS2pELEdBQUwsQ0FBU2EsS0FBVCxDQUFnQixxQkFBb0J1RyxjQUFlLEdBQW5EO0FBQ0Q7O0FBS0RuRSxRQUFBQSxLQUFLLEdBQUcsaUNBQWlDQyxJQUFqQyxDQUFzQ3NFLEdBQXRDLENBQVI7O0FBQ0EsWUFBSXZFLEtBQUosRUFBVztBQUNULGVBQUtqRCxHQUFMLENBQVNhLEtBQVQsQ0FBZ0IsMEJBQXlCb0MsS0FBSyxDQUFDLENBQUQsQ0FBSSxHQUFsRDtBQUNBLGVBQUtrRCxZQUFMLENBQWtCbEQsS0FBSyxDQUFDLENBQUQsQ0FBdkI7QUFDRDs7QUFHRCxZQUFJLEtBQUtuRSxPQUFULEVBQWtCO0FBQ2hCLGVBQUssSUFBSTJJLElBQVQsSUFBaUIsQ0FBQy9FLE1BQU0sSUFBSSxFQUFYLEVBQWVnRixJQUFmLEdBQXNCQyxLQUF0QixDQUE0QixJQUE1QixDQUFqQixFQUFvRDtBQUNsRCxnQkFBSSxDQUFDRixJQUFJLENBQUNDLElBQUwsR0FBWW5GLE1BQWpCLEVBQXlCO0FBQ3pCLGlCQUFLdkMsR0FBTCxDQUFTYSxLQUFULENBQWdCLFlBQVc0RyxJQUFLLEVBQWhDO0FBQ0Q7O0FBQ0QsZUFBSyxJQUFJQSxJQUFULElBQWlCLENBQUM5RSxNQUFNLElBQUksRUFBWCxFQUFlK0UsSUFBZixHQUFzQkMsS0FBdEIsQ0FBNEIsSUFBNUIsQ0FBakIsRUFBb0Q7QUFDbEQsZ0JBQUksQ0FBQ0YsSUFBSSxDQUFDQyxJQUFMLEdBQVluRixNQUFqQixFQUF5QjtBQUN6QixpQkFBS3ZDLEdBQUwsQ0FBUzRILEtBQVQsQ0FBZ0IsWUFBV0gsSUFBSyxFQUFoQztBQUNEO0FBQ0Y7QUFDRixPQXJDRDtBQXdDQSxXQUFLakksSUFBTCxDQUFVK0gsRUFBVixDQUFhLE1BQWIsRUFBcUIsQ0FBQ00sSUFBRCxFQUFPQyxNQUFQLEtBQWtCO0FBQ3JDWCxRQUFBQSxjQUFjLEdBQUcsS0FBakI7O0FBQ0EsWUFBSSxLQUFLeEgsS0FBTCxLQUFlM0IsWUFBWSxDQUFDNEIsYUFBNUIsSUFDQSxLQUFLRCxLQUFMLEtBQWUzQixZQUFZLENBQUMrSixjQUQ1QixJQUVBLEtBQUtwSSxLQUFMLEtBQWUzQixZQUFZLENBQUNnSyxnQkFGaEMsRUFFa0Q7QUFDaEQsZ0JBQU1DLEdBQUcsR0FBSSw4Q0FBNkNKLElBQUssWUFBV0MsTUFBTyxFQUFqRjtBQUNBLGVBQUs5SCxHQUFMLENBQVM0SCxLQUFULENBQWVLLEdBQWY7QUFDQSxlQUFLckIsV0FBTCxDQUFpQjVJLFlBQVksQ0FBQzRCLGFBQTlCO0FBQ0Q7QUFDRixPQVREO0FBVUEsV0FBS0ksR0FBTCxDQUFTaUIsSUFBVCxDQUFlLCtCQUE4QixLQUFLeEIsWUFBYSxJQUFHckIsSUFBSSxDQUFDOEosSUFBTCxDQUFVLEdBQVYsQ0FBZSxFQUFqRjtBQUVBLFlBQU0sS0FBSzFJLElBQUwsQ0FBVStHLEtBQVYsQ0FBZ0JVLGFBQWhCLENBQU47QUFDQSxZQUFNLEtBQUtrQixhQUFMLEVBQU47QUFDQSxZQUFNLEtBQUtDLFlBQUwsRUFBTjtBQUNELEtBaEVELENBZ0VFLE9BQU85RCxDQUFQLEVBQVU7QUFDVixXQUFLdEUsR0FBTCxDQUFTYSxLQUFULENBQWV5RCxDQUFmO0FBQ0EsV0FBSytELElBQUwsQ0FBVXJLLFlBQVksQ0FBQ3NLLFdBQXZCLEVBQW9DaEUsQ0FBcEM7O0FBR0EsVUFBSTZDLGNBQUosRUFBb0I7QUFDbEIsY0FBTSxLQUFLM0gsSUFBTCxDQUFVK0ksSUFBVixFQUFOO0FBQ0Q7O0FBRUQsVUFBSWpILE9BQU8sR0FBRyxFQUFkOztBQUVBLFVBQUlnRCxDQUFDLENBQUNoRCxPQUFGLENBQVUwQixRQUFWLENBQW1CLHdCQUFuQixDQUFKLEVBQWtEO0FBQUE7O0FBQ2hEMUIsUUFBQUEsT0FBTyxJQUFJLGtHQUFYOztBQUNBLFlBQUk4RixjQUFKLEVBQW9CO0FBQ2xCOUYsVUFBQUEsT0FBTyxJQUFLLGlDQUFnQzhGLGNBQWUsSUFBM0Q7QUFDRDs7QUFDRCxjQUFNb0IseUJBQXlCLEdBQUcseUNBQThCdEYsSUFBOUIsQ0FBbUNvQixDQUFDLENBQUNoRCxPQUFyQyxtREFBZ0QsQ0FBaEQsTUFBc0QsRUFBeEY7O0FBQ0EsWUFBSWtILHlCQUFKLEVBQStCO0FBQzdCbEgsVUFBQUEsT0FBTyxJQUFLLDRDQUEyQ2tILHlCQUEwQixJQUFqRjtBQUNEOztBQUNEbEgsUUFBQUEsT0FBTyxJQUFLLFVBQVN6RCxxQkFBc0Isa0NBQTNDO0FBQ0Q7O0FBRUR5RCxNQUFBQSxPQUFPLElBQUlnRCxDQUFDLENBQUNoRCxPQUFiO0FBQ0EsV0FBS3RCLEdBQUwsQ0FBU3lGLGFBQVQsQ0FBdUJuRSxPQUF2QjtBQUNEO0FBQ0Y7O0FBRURtSCxFQUFBQSxTQUFTLEdBQUk7QUFDWCxXQUFPLEtBQUs5SSxLQUFMLEtBQWUzQixZQUFZLENBQUMwSyxZQUE1QixHQUEyQyxLQUFLN0ksT0FBTCxDQUFhNEksU0FBeEQsR0FBb0UsSUFBM0U7QUFDRDs7QUFFWSxRQUFQRSxPQUFPLEdBQUk7QUFDZixTQUFLM0ksR0FBTCxDQUFTaUIsSUFBVCxDQUFjLHlCQUFkOztBQUNBLFFBQUksS0FBS3RCLEtBQUwsS0FBZTNCLFlBQVksQ0FBQzBLLFlBQWhDLEVBQThDO0FBQzVDLFlBQU0sSUFBSTFDLEtBQUosQ0FBVSxxQ0FBVixDQUFOO0FBQ0Q7O0FBQ0QsU0FBS1ksV0FBTCxDQUFpQjVJLFlBQVksQ0FBQ2dLLGdCQUE5QjtBQUNBLFVBQU0sS0FBS08sSUFBTCxDQUFVLEtBQVYsQ0FBTjtBQUNBLFVBQU0sS0FBS2hDLEtBQUwsQ0FBVyxLQUFLbkcsWUFBaEIsRUFBOEIsS0FBOUIsQ0FBTjtBQUNEOztBQUVrQixRQUFiK0gsYUFBYSxHQUFJO0FBRXJCLFFBQUlTLG1CQUFtQixHQUFHLEtBQTFCO0FBQ0EsVUFBTSw2QkFBYyxFQUFkLEVBQWtCLEdBQWxCLEVBQXVCLFlBQVk7QUFDdkMsVUFBSSxLQUFLakosS0FBTCxLQUFlM0IsWUFBWSxDQUFDNEIsYUFBaEMsRUFBK0M7QUFFN0NnSixRQUFBQSxtQkFBbUIsR0FBRyxJQUF0QjtBQUNBO0FBQ0Q7O0FBQ0QsWUFBTSxLQUFLQyxTQUFMLEVBQU47QUFDRCxLQVBLLENBQU47O0FBUUEsUUFBSUQsbUJBQUosRUFBeUI7QUFDdkIsWUFBTSxJQUFJNUMsS0FBSixDQUFVLHNDQUFWLENBQU47QUFDRDtBQUNGOztBQUVjLFFBQVQ2QyxTQUFTLEdBQUk7QUFDakIsV0FBTyxNQUFNLEtBQUtoSixPQUFMLENBQWFpSixPQUFiLENBQXFCLFNBQXJCLEVBQWdDLEtBQWhDLENBQWI7QUFDRDs7QUFFaUIsUUFBWlYsWUFBWSxHQUFJO0FBQ3BCLFVBQU1XLFdBQVcsR0FBRyxLQUFLMUksZUFBTCxLQUF5QkMsc0JBQVU4RixHQUFuQyxHQUNoQjtBQUFDaEcsTUFBQUEsWUFBWSxFQUFFO0FBQUM0SSxRQUFBQSxXQUFXLEVBQUUsS0FBSzVJO0FBQW5CO0FBQWYsS0FEZ0IsR0FFaEI7QUFBQzZJLE1BQUFBLG1CQUFtQixFQUFFLEtBQUs3STtBQUEzQixLQUZKO0FBR0EsU0FBS0osR0FBTCxDQUFTaUIsSUFBVCxDQUFlLFlBQVcsS0FBS1osZUFBZ0IsMkNBQWpDLEdBQ1phLElBQUksQ0FBQ21ELFNBQUwsQ0FBZTBFLFdBQWYsRUFBNEIsSUFBNUIsRUFBa0MsQ0FBbEMsQ0FERjtBQUVBLFVBQU0sS0FBS2xKLE9BQUwsQ0FBYWlKLE9BQWIsQ0FBcUIsVUFBckIsRUFBaUMsTUFBakMsRUFBeUNDLFdBQXpDLENBQU47QUFDQSxTQUFLL0ksR0FBTCxDQUFTa0osTUFBVCxHQUFrQiw4QkFBa0IsSUFBbEIsRUFBd0IsS0FBS3JKLE9BQUwsQ0FBYTRJLFNBQXJDLENBQWxCO0FBQ0EsU0FBSzdCLFdBQUwsQ0FBaUI1SSxZQUFZLENBQUMwSyxZQUE5QjtBQUNEOztBQUVTLFFBQUpILElBQUksQ0FBRVksVUFBVSxHQUFHLElBQWYsRUFBcUI7QUFDN0IsUUFBSUEsVUFBSixFQUFnQjtBQUNkLFdBQUt2QyxXQUFMLENBQWlCNUksWUFBWSxDQUFDK0osY0FBOUI7QUFDRDs7QUFDRCxVQUFNcUIsV0FBVyxHQUFHLE1BQU9DLENBQVAsSUFBYTtBQUMvQixVQUFJO0FBQ0YsZUFBTyxNQUFNQSxDQUFDLEVBQWQ7QUFDRCxPQUZELENBRUUsT0FBTy9FLENBQVAsRUFBVTtBQUNWLGFBQUt0RSxHQUFMLENBQVNnQixJQUFULENBQWNzRCxDQUFDLENBQUNoRCxPQUFoQjtBQUNBLGFBQUt0QixHQUFMLENBQVNhLEtBQVQsQ0FBZXlELENBQUMsQ0FBQ3dCLEtBQWpCO0FBQ0Q7QUFDRixLQVBEOztBQVFBLFVBQU1zRCxXQUFXLENBQUMsTUFBTSxLQUFLdkosT0FBTCxDQUFhaUosT0FBYixDQUFxQixFQUFyQixFQUF5QixRQUF6QixDQUFQLENBQWpCO0FBQ0EsVUFBTU0sV0FBVyxDQUFDLE1BQU0sS0FBSzVKLElBQUwsQ0FBVStJLElBQVYsQ0FBZSxTQUFmLEVBQTBCLEtBQTFCLENBQVAsQ0FBakI7QUFDQSxTQUFLdkksR0FBTCxDQUFTa0osTUFBVCxHQUFrQiw4QkFBa0IsSUFBbEIsQ0FBbEI7O0FBQ0EsUUFBSUMsVUFBSixFQUFnQjtBQUNkLFdBQUt2QyxXQUFMLENBQWlCNUksWUFBWSxDQUFDNEIsYUFBOUI7QUFDRDtBQUNGOztBQUVEZ0gsRUFBQUEsV0FBVyxDQUFFakgsS0FBRixFQUFTO0FBQ2xCLFNBQUtBLEtBQUwsR0FBYUEsS0FBYjtBQUNBLFNBQUtLLEdBQUwsQ0FBU2EsS0FBVCxDQUFnQixxQkFBb0JsQixLQUFNLEdBQTFDO0FBQ0EsU0FBSzBJLElBQUwsQ0FBVXJLLFlBQVksQ0FBQ3NMLGFBQXZCLEVBQXNDO0FBQUMzSixNQUFBQTtBQUFELEtBQXRDO0FBQ0Q7O0FBRWdCLFFBQVg0SixXQUFXLENBQUVDLEdBQUYsRUFBT0MsTUFBUCxFQUFlQyxJQUFmLEVBQXFCO0FBQ3BDLFdBQU8sTUFBTSxLQUFLN0osT0FBTCxDQUFhaUosT0FBYixDQUFxQlUsR0FBckIsRUFBMEJDLE1BQTFCLEVBQWtDQyxJQUFsQyxDQUFiO0FBQ0Q7O0FBRWEsUUFBUkMsUUFBUSxDQUFFQyxHQUFGLEVBQU9DLEdBQVAsRUFBWTtBQUN4QixXQUFPLE1BQU0sS0FBS2hLLE9BQUwsQ0FBYWlLLFdBQWIsQ0FBeUJGLEdBQXpCLEVBQThCQyxHQUE5QixDQUFiO0FBQ0Q7O0FBRVksUUFBUHhDLE9BQU8sR0FBSTtBQUNmLFFBQUkwQyxHQUFHLEdBQUdDLGdCQUFPQyxTQUFQLEtBQ0wsa0VBQWlFLEtBQUsxSyxTQUFVLFlBRDNFLEdBRUwsaUJBQWdCLEtBQUtFLFlBQWEsWUFBVyxLQUFLRixTQUFVLEdBRmpFO0FBR0EsU0FBS1MsR0FBTCxDQUFTYSxLQUFULENBQWdCLDJDQUEwQ2tKLEdBQUksRUFBOUQ7O0FBQ0EsUUFBSTtBQUNGLFlBQU9HLGtCQUFFQyxTQUFGLENBQVlDLHVCQUFHbEgsSUFBZixDQUFELENBQXVCNkcsR0FBdkIsQ0FBTjtBQUNBLFdBQUsvSixHQUFMLENBQVNhLEtBQVQsQ0FBZSwyQ0FBZjtBQUNELEtBSEQsQ0FHRSxPQUFPUSxHQUFQLEVBQVk7QUFDWixXQUFLckIsR0FBTCxDQUFTZ0IsSUFBVCxDQUFjLG9DQUFkO0FBQ0Q7O0FBRUQsUUFBSSxLQUFLbkMsR0FBVCxFQUFjO0FBQ1osWUFBTXdMLFNBQVMsR0FBRyxLQUFLeEwsR0FBTCxDQUFTTCxVQUFULENBQW9COEwsV0FBcEIsQ0FBZ0NDLFNBQWhDLENBQTJDQyxJQUFELElBQVVBLElBQUksS0FBSyxJQUE3RCxDQUFsQjtBQUNBLFlBQU1DLElBQUksR0FBR0osU0FBUyxHQUFHLENBQUMsQ0FBYixHQUFpQixLQUFLeEwsR0FBTCxDQUFTTCxVQUFULENBQW9COEwsV0FBcEIsQ0FBZ0NELFNBQVMsR0FBRyxDQUE1QyxDQUFqQixHQUFrRSxJQUEvRTs7QUFFQSxVQUFJSSxJQUFKLEVBQVU7QUFDUixhQUFLekssR0FBTCxDQUFTYSxLQUFULENBQWdCLGlFQUFnRTRKLElBQUssRUFBckY7QUFDRCxPQUZELE1BRU87QUFDTCxhQUFLekssR0FBTCxDQUFTYSxLQUFULENBQWdCLHdEQUFoQjtBQUNEOztBQUVELFVBQUk7QUFDRixhQUFLLElBQUk2SixJQUFULElBQWlCLE1BQU0sS0FBSzdMLEdBQUwsQ0FBUzhMLGNBQVQsRUFBdkIsRUFBa0Q7QUFFaEQsY0FBSSxFQUFFRCxJQUFJLENBQUMxSCxRQUFMLENBQWMsa0JBQWQsTUFBc0MsQ0FBQ3lILElBQUQsSUFBU0MsSUFBSSxDQUFDMUgsUUFBTCxDQUFjeUgsSUFBZCxDQUEvQyxDQUFGLENBQUosRUFBNEU7QUFDMUU7QUFDRDs7QUFFRCxjQUFJRyxNQUFNLEdBQUdGLElBQUksQ0FBQy9DLEtBQUwsQ0FBVyxLQUFYLENBQWI7O0FBQ0EsY0FBSWlELE1BQU0sQ0FBQ3JJLE1BQVAsR0FBZ0IsQ0FBcEIsRUFBdUI7QUFDckIsa0JBQU0sS0FBSzFELEdBQUwsQ0FBU2dNLGlCQUFULENBQTJCRCxNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVVFLE9BQVYsQ0FBa0IsT0FBbEIsRUFBMkIsRUFBM0IsQ0FBM0IsQ0FBTjtBQUNEO0FBQ0Y7QUFDRixPQVpELENBWUUsT0FBT3pKLEdBQVAsRUFBWTtBQUNaLGFBQUtyQixHQUFMLENBQVNnQixJQUFULENBQWUsNENBQTJDSyxHQUFHLENBQUNDLE9BQVEsZ0JBQXRFO0FBQ0Q7QUFDRjtBQUNGOztBQUVzQixRQUFqQnlKLGlCQUFpQixHQUFJO0FBR3pCLFFBQUk7QUFDRixZQUFNLEtBQUtsTCxPQUFMLENBQWFpSixPQUFiLENBQXFCLE1BQXJCLEVBQTZCLEtBQTdCLENBQU47QUFDQSxhQUFPLElBQVA7QUFDRCxLQUhELENBR0UsT0FBT3hFLENBQVAsRUFBVTtBQUNWLGFBQU8sS0FBUDtBQUNEO0FBQ0Y7O0FBMW9CNEM7OztBQTZvQi9DdEcsWUFBWSxDQUFDc0ssV0FBYixHQUEyQixvQkFBM0I7QUFDQXRLLFlBQVksQ0FBQ3NMLGFBQWIsR0FBNkIsY0FBN0I7QUFDQXRMLFlBQVksQ0FBQzRCLGFBQWIsR0FBNkIsU0FBN0I7QUFDQTVCLFlBQVksQ0FBQzZJLGNBQWIsR0FBOEIsVUFBOUI7QUFDQTdJLFlBQVksQ0FBQzBLLFlBQWIsR0FBNEIsUUFBNUI7QUFDQTFLLFlBQVksQ0FBQytKLGNBQWIsR0FBOEIsVUFBOUI7QUFDQS9KLFlBQVksQ0FBQ2dLLGdCQUFiLEdBQWdDLFlBQWhDO2VBR2VoSyxZIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1haW5cblxuaW1wb3J0IGV2ZW50cyBmcm9tICdldmVudHMnO1xuaW1wb3J0IHsgSldQcm94eSwgUFJPVE9DT0xTIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgY3AgZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBzeXN0ZW0sIGZzLCBsb2dnZXIsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCwgYXN5bmNtYXAgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyBTdWJQcm9jZXNzLCBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7XG4gIGdldENocm9tZVZlcnNpb24sIGdldENocm9tZWRyaXZlckRpciwgQ0hST01FRFJJVkVSX0NIUk9NRV9NQVBQSU5HLFxuICBnZXRDaHJvbWVkcml2ZXJCaW5hcnlQYXRoLCBDRF9DRE4sIGdlbmVyYXRlTG9nUHJlZml4XG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGNvbXBhcmVWZXJzaW9ucyBmcm9tICdjb21wYXJlLXZlcnNpb25zJztcbmltcG9ydCBDaHJvbWVkcml2ZXJTdG9yYWdlQ2xpZW50IGZyb20gJy4vc3RvcmFnZS1jbGllbnQnO1xuaW1wb3J0IHsgdG9XM2NDYXBOYW1lcywgZ2V0Q2FwVmFsdWUgfSBmcm9tICcuL3Byb3RvY29sLWhlbHBlcnMnO1xuXG5jb25zdCBORVdfQ0RfVkVSU0lPTl9GT1JNQVRfTUFKT1JfVkVSU0lPTiA9IDczO1xuY29uc3QgREVGQVVMVF9IT1NUID0gJzEyNy4wLjAuMSc7XG5jb25zdCBNSU5fQ0RfVkVSU0lPTl9XSVRIX1czQ19TVVBQT1JUID0gNzU7XG5jb25zdCBERUZBVUxUX1BPUlQgPSA5NTE1O1xuY29uc3QgQ0hST01FX0JVTkRMRV9JRCA9ICdjb20uYW5kcm9pZC5jaHJvbWUnO1xuY29uc3QgV0VCVklFV19TSEVMTF9CVU5ETEVfSUQgPSAnb3JnLmNocm9taXVtLndlYnZpZXdfc2hlbGwnO1xuY29uc3QgV0VCVklFV19CVU5ETEVfSURTID0gW1xuICAnY29tLmdvb2dsZS5hbmRyb2lkLndlYnZpZXcnLFxuICAnY29tLmFuZHJvaWQud2VidmlldycsXG5dO1xuY29uc3QgQ0hST01FRFJJVkVSX1RVVE9SSUFMID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9hcHBpdW0vYXBwaXVtL2Jsb2IvbWFzdGVyL2RvY3MvZW4vd3JpdGluZy1ydW5uaW5nLWFwcGl1bS93ZWIvY2hyb21lZHJpdmVyLm1kJztcbmNvbnN0IFZFUlNJT05fUEFUVEVSTiA9IC8oW1xcZC5dKykvO1xuXG5jb25zdCBDRF9WRVJTSU9OX1RJTUVPVVQgPSA1MDAwO1xuXG5jbGFzcyBDaHJvbWVkcml2ZXIgZXh0ZW5kcyBldmVudHMuRXZlbnRFbWl0dGVyIHtcbiAgY29uc3RydWN0b3IgKGFyZ3MgPSB7fSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBjb25zdCB7XG4gICAgICBob3N0ID0gREVGQVVMVF9IT1NULFxuICAgICAgcG9ydCA9IERFRkFVTFRfUE9SVCxcbiAgICAgIHVzZVN5c3RlbUV4ZWN1dGFibGUgPSBmYWxzZSxcbiAgICAgIGV4ZWN1dGFibGUsXG4gICAgICBleGVjdXRhYmxlRGlyID0gZ2V0Q2hyb21lZHJpdmVyRGlyKCksXG4gICAgICBidW5kbGVJZCxcbiAgICAgIG1hcHBpbmdQYXRoLFxuICAgICAgY21kQXJncyxcbiAgICAgIGFkYixcbiAgICAgIHZlcmJvc2UsXG4gICAgICBsb2dQYXRoLFxuICAgICAgZGlzYWJsZUJ1aWxkQ2hlY2ssXG4gICAgICBkZXRhaWxzLFxuICAgICAgaXNBdXRvZG93bmxvYWRFbmFibGVkID0gZmFsc2UsXG4gICAgfSA9IGFyZ3M7XG4gICAgdGhpcy5fbG9nID0gbG9nZ2VyLmdldExvZ2dlcihnZW5lcmF0ZUxvZ1ByZWZpeCh0aGlzKSk7XG5cbiAgICB0aGlzLnByb3h5SG9zdCA9IGhvc3Q7XG4gICAgdGhpcy5wcm94eVBvcnQgPSBwb3J0O1xuICAgIHRoaXMuYWRiID0gYWRiO1xuICAgIHRoaXMuY21kQXJncyA9IGNtZEFyZ3M7XG4gICAgdGhpcy5wcm9jID0gbnVsbDtcbiAgICB0aGlzLnVzZVN5c3RlbUV4ZWN1dGFibGUgPSB1c2VTeXN0ZW1FeGVjdXRhYmxlO1xuICAgIHRoaXMuY2hyb21lZHJpdmVyID0gZXhlY3V0YWJsZTtcbiAgICB0aGlzLmV4ZWN1dGFibGVEaXIgPSBleGVjdXRhYmxlRGlyO1xuICAgIHRoaXMubWFwcGluZ1BhdGggPSBtYXBwaW5nUGF0aDtcbiAgICB0aGlzLmJ1bmRsZUlkID0gYnVuZGxlSWQ7XG4gICAgdGhpcy5leGVjdXRhYmxlVmVyaWZpZWQgPSBmYWxzZTtcbiAgICB0aGlzLnN0YXRlID0gQ2hyb21lZHJpdmVyLlNUQVRFX1NUT1BQRUQ7XG4gICAgdGhpcy5qd3Byb3h5ID0gbmV3IEpXUHJveHkoe1xuICAgICAgc2VydmVyOiB0aGlzLnByb3h5SG9zdCxcbiAgICAgIHBvcnQ6IHRoaXMucHJveHlQb3J0LFxuICAgICAgbG9nOiB0aGlzLl9sb2csXG4gICAgfSk7XG4gICAgdGhpcy52ZXJib3NlID0gdmVyYm9zZTtcbiAgICB0aGlzLmxvZ1BhdGggPSBsb2dQYXRoO1xuICAgIHRoaXMuZGlzYWJsZUJ1aWxkQ2hlY2sgPSAhIWRpc2FibGVCdWlsZENoZWNrO1xuICAgIHRoaXMuc3RvcmFnZUNsaWVudCA9IGlzQXV0b2Rvd25sb2FkRW5hYmxlZFxuICAgICAgPyBuZXcgQ2hyb21lZHJpdmVyU3RvcmFnZUNsaWVudCh7IGNocm9tZWRyaXZlckRpcjogdGhpcy5leGVjdXRhYmxlRGlyIH0pXG4gICAgICA6IG51bGw7XG4gICAgdGhpcy5kZXRhaWxzID0gZGV0YWlscztcbiAgICB0aGlzLmNhcGFiaWxpdGllcyA9IHt9O1xuICAgIHRoaXMuZGVzaXJlZFByb3RvY29sID0gUFJPVE9DT0xTLk1KU09OV1A7XG4gIH1cblxuICBnZXQgbG9nICgpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9nO1xuICB9XG5cbiAgYXN5bmMgZ2V0RHJpdmVyc01hcHBpbmcgKCkge1xuICAgIGxldCBtYXBwaW5nID0gXy5jbG9uZURlZXAoQ0hST01FRFJJVkVSX0NIUk9NRV9NQVBQSU5HKTtcbiAgICBpZiAodGhpcy5tYXBwaW5nUGF0aCkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYEF0dGVtcHRpbmcgdG8gdXNlIENocm9tZWRyaXZlci0+Q2hyb21lIG1hcHBpbmcgZnJvbSAnJHt0aGlzLm1hcHBpbmdQYXRofSdgKTtcbiAgICAgIGlmICghYXdhaXQgZnMuZXhpc3RzKHRoaXMubWFwcGluZ1BhdGgpKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYE5vIGZpbGUgZm91bmQgYXQgJyR7dGhpcy5tYXBwaW5nUGF0aH0nYCk7XG4gICAgICAgIHRoaXMubG9nLmluZm8oJ0RlZmF1bHRpbmcgdG8gdGhlIHN0YXRpYyBDaHJvbWVkcml2ZXItPkNocm9tZSBtYXBwaW5nJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIG1hcHBpbmcgPSBKU09OLnBhcnNlKGF3YWl0IGZzLnJlYWRGaWxlKHRoaXMubWFwcGluZ1BhdGgsICd1dGY4JykpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aGlzLmxvZy53YXJuKGBFcnJvciBwYXJzaW5nIG1hcHBpbmcgZnJvbSAnJHt0aGlzLm1hcHBpbmdQYXRofSc6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgdGhpcy5sb2cuaW5mbygnRGVmYXVsdGluZyB0byB0aGUgc3RhdGljIENocm9tZWRyaXZlci0+Q2hyb21lIG1hcHBpbmcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZygnVXNpbmcgdGhlIHN0YXRpYyBDaHJvbWVkcml2ZXItPkNocm9tZSBtYXBwaW5nJyk7XG4gICAgfVxuXG4gICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIHZhbHVlcyBmb3IgbWluaW11bSBjaHJvbWUgdmVyc2lvbiBhcmUgc2VtdmVyIGNvbXBsaWFudFxuICAgIGZvciAoY29uc3QgW2NkVmVyc2lvbiwgY2hyb21lVmVyc2lvbl0gb2YgXy50b1BhaXJzKG1hcHBpbmcpKSB7XG4gICAgICBjb25zdCBjb2VyY2VkVmVyc2lvbiA9IHNlbXZlci5jb2VyY2UoY2hyb21lVmVyc2lvbik7XG4gICAgICBpZiAoY29lcmNlZFZlcnNpb24pIHtcbiAgICAgICAgbWFwcGluZ1tjZFZlcnNpb25dID0gY29lcmNlZFZlcnNpb24udmVyc2lvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYCcke2Nocm9tZVZlcnNpb259JyBpcyBub3QgYSB2YWxpZCB2ZXJzaW9uIG51bWJlci4gU2tpcHBpbmcgaXRgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hcHBpbmc7XG4gIH1cblxuICBhc3luYyBnZXRDaHJvbWVkcml2ZXJzIChtYXBwaW5nKSB7XG4gICAgLy8gZ28gdGhyb3VnaCB0aGUgdmVyc2lvbnMgYXZhaWxhYmxlXG4gICAgY29uc3QgZXhlY3V0YWJsZXMgPSBhd2FpdCBmcy5nbG9iKCcqJywge1xuICAgICAgY3dkOiB0aGlzLmV4ZWN1dGFibGVEaXIsXG4gICAgICBzdHJpY3Q6IGZhbHNlLFxuICAgICAgbm9kaXI6IHRydWUsXG4gICAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgRm91bmQgJHt1dGlsLnBsdXJhbGl6ZSgnZXhlY3V0YWJsZScsIGV4ZWN1dGFibGVzLmxlbmd0aCwgdHJ1ZSl9IGAgK1xuICAgICAgYGluICcke3RoaXMuZXhlY3V0YWJsZURpcn0nYCk7XG4gICAgY29uc3QgY2RzID0gKGF3YWl0IGFzeW5jbWFwKGV4ZWN1dGFibGVzLCBhc3luYyAoZXhlY3V0YWJsZSkgPT4ge1xuICAgICAgY29uc3QgbG9nRXJyb3IgPSAoe21lc3NhZ2UsIHN0ZG91dCA9IG51bGwsIHN0ZGVyciA9IG51bGx9KSA9PiB7XG4gICAgICAgIGxldCBlcnJNc2cgPSBgQ2Fubm90IHJldHJpZXZlIHZlcnNpb24gbnVtYmVyIGZyb20gJyR7cGF0aC5iYXNlbmFtZShleGVjdXRhYmxlKX0nIENocm9tZWRyaXZlciBiaW5hcnkuIGAgK1xuICAgICAgICAgIGBNYWtlIHN1cmUgaXQgcmV0dXJucyBhIHZhbGlkIHZlcnNpb24gc3RyaW5nIGluIHJlc3BvbnNlIHRvICctLXZlcnNpb24nIGNvbW1hbmQgbGluZSBhcmd1bWVudC4gJHttZXNzYWdlfWA7XG4gICAgICAgIGlmIChzdGRvdXQpIHtcbiAgICAgICAgICBlcnJNc2cgKz0gYFxcblN0ZG91dDogJHtzdGRvdXR9YDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RkZXJyKSB7XG4gICAgICAgICAgZXJyTXNnICs9IGBcXG5TdGRlcnI6ICR7c3RkZXJyfWA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2cud2FybihlcnJNc2cpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIGxldCBzdGRvdXQ7XG4gICAgICBsZXQgc3RkZXJyO1xuICAgICAgdHJ5IHtcbiAgICAgICAgKHtzdGRvdXQsIHN0ZGVycn0gPSBhd2FpdCBleGVjKGV4ZWN1dGFibGUsIFsnLS12ZXJzaW9uJ10sIHtcbiAgICAgICAgICB0aW1lb3V0OiBDRF9WRVJTSU9OX1RJTUVPVVQsXG4gICAgICAgIH0pKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoIShlcnIubWVzc2FnZSB8fCAnJykuaW5jbHVkZXMoJ3RpbWVkIG91dCcpICYmICEoZXJyLnN0ZG91dCB8fCAnJykuaW5jbHVkZXMoJ1N0YXJ0aW5nIENocm9tZURyaXZlcicpKSB7XG4gICAgICAgICAgcmV0dXJuIGxvZ0Vycm9yKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGlzIGhhcyB0aW1lZCBvdXQsIGl0IGhhcyBhY3R1YWxseSBzdGFydGVkIENocm9tZWRyaXZlcixcbiAgICAgICAgLy8gaW4gd2hpY2ggY2FzZSB0aGVyZSB3aWxsIGFsc28gYmUgdGhlIHZlcnNpb24gc3RyaW5nIGluIHRoZSBvdXRwdXRcbiAgICAgICAgc3Rkb3V0ID0gZXJyLnN0ZG91dDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWF0Y2ggPSAvQ2hyb21lRHJpdmVyXFxzK1xcKD92PyhbXFxkLl0rKVxcKT8vaS5leGVjKHN0ZG91dCk7IC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvenBqNXdBLzFcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIGxvZ0Vycm9yKHttZXNzYWdlOiAnQ2Fubm90IHBhcnNlIHRoZSB2ZXJzaW9uIHN0cmluZycsIHN0ZG91dCwgc3RkZXJyfSk7XG4gICAgICB9XG4gICAgICBsZXQgdmVyc2lvbiA9IG1hdGNoWzFdO1xuICAgICAgbGV0IG1pbkNocm9tZVZlcnNpb24gPSBtYXBwaW5nW3ZlcnNpb25dO1xuICAgICAgY29uc3QgY29lcmNlZFZlcnNpb24gPSBzZW12ZXIuY29lcmNlKHZlcnNpb24pO1xuICAgICAgaWYgKGNvZXJjZWRWZXJzaW9uKSB7XG4gICAgICAgIC8vIGJlZm9yZSAyMDE5LTAzLTA2IHZlcnNpb25zIHdlcmUgb2YgdGhlIGZvcm0gbWFqb3IubWlub3JcbiAgICAgICAgaWYgKGNvZXJjZWRWZXJzaW9uLm1ham9yIDwgTkVXX0NEX1ZFUlNJT05fRk9STUFUX01BSk9SX1ZFUlNJT04pIHtcbiAgICAgICAgICB2ZXJzaW9uID0gYCR7Y29lcmNlZFZlcnNpb24ubWFqb3J9LiR7Y29lcmNlZFZlcnNpb24ubWlub3J9YDtcbiAgICAgICAgICBtaW5DaHJvbWVWZXJzaW9uID0gbWFwcGluZ1t2ZXJzaW9uXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1pbkNocm9tZVZlcnNpb24gJiYgY29lcmNlZFZlcnNpb24ubWFqb3IgPj0gTkVXX0NEX1ZFUlNJT05fRk9STUFUX01BSk9SX1ZFUlNJT04pIHtcbiAgICAgICAgICAvLyBBc3N1bWUgdGhlIG1ham9yIENocm9tZSB2ZXJzaW9uIGlzIHRoZSBzYW1lIGFzIHRoZSBjb3JyZXNwb25kaW5nIGRyaXZlciBtYWpvciB2ZXJzaW9uXG4gICAgICAgICAgbWluQ2hyb21lVmVyc2lvbiA9IGAke2NvZXJjZWRWZXJzaW9uLm1ham9yfWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGV4ZWN1dGFibGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1pbkNocm9tZVZlcnNpb24sXG4gICAgICB9O1xuICAgIH0pKVxuICAgICAgLmZpbHRlcigoY2QpID0+ICEhY2QpXG4gICAgICAuc29ydCgoYSwgYikgPT4gY29tcGFyZVZlcnNpb25zKGIudmVyc2lvbiwgYS52ZXJzaW9uKSk7XG4gICAgaWYgKF8uaXNFbXB0eShjZHMpKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBObyBDaHJvbWVkcml2ZXJzIHdlcmUgZm91bmQgaW4gJyR7dGhpcy5leGVjdXRhYmxlRGlyfSdgKTtcbiAgICAgIHJldHVybiBjZHM7XG4gICAgfVxuICAgIHRoaXMubG9nLmRlYnVnKGBUaGUgZm9sbG93aW5nIENocm9tZWRyaXZlciBleGVjdXRhYmxlcyB3ZXJlIGZvdW5kOmApO1xuICAgIGZvciAoY29uc3QgY2Qgb2YgY2RzKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgICAgICcke2NkLmV4ZWN1dGFibGV9JyAodmVyc2lvbiAnJHtjZC52ZXJzaW9ufScsIG1pbmltdW0gQ2hyb21lIHZlcnNpb24gJyR7Y2QubWluQ2hyb21lVmVyc2lvbiA/IGNkLm1pbkNocm9tZVZlcnNpb24gOiAnVW5rbm93bid9JylgKTtcbiAgICB9XG4gICAgcmV0dXJuIGNkcztcbiAgfVxuXG4gIGFzeW5jIGdldENocm9tZVZlcnNpb24gKCkge1xuICAgIC8vIFRyeSB0byByZXRyaWV2ZSB0aGUgdmVyc2lvbiBmcm9tIGBkZXRhaWxzYCBwcm9wZXJ0eSBpZiBpdCBpcyBzZXRcbiAgICAvLyBUaGUgYGluZm9gIGl0ZW0gbXVzdCBjb250YWluIHRoZSBvdXRwdXQgb2YgL2pzb24vdmVyc2lvbiBDRFAgY29tbWFuZFxuICAgIC8vIHdoZXJlIGBCcm93c2VyYCBmaWVsZCBsb29rcyBsaWtlIGBDaHJvbWUvNzIuMC4zNjAxLjBgYFxuICAgIGlmICh0aGlzLmRldGFpbHM/LmluZm8pIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBCcm93c2VyIHZlcnNpb24gaW4gdGhlIHN1cHBsaWVkIGRldGFpbHM6ICR7dGhpcy5kZXRhaWxzPy5pbmZvPy5Ccm93c2VyfWApO1xuICAgIH1cbiAgICBjb25zdCB2ZXJzaW9uTWF0Y2ggPSBWRVJTSU9OX1BBVFRFUk4uZXhlYyh0aGlzLmRldGFpbHM/LmluZm8/LkJyb3dzZXIpO1xuICAgIGlmICh2ZXJzaW9uTWF0Y2gpIHtcbiAgICAgIGNvbnN0IGNvZXJjZWRWZXJzaW9uID0gc2VtdmVyLmNvZXJjZSh2ZXJzaW9uTWF0Y2hbMV0pO1xuICAgICAgaWYgKGNvZXJjZWRWZXJzaW9uKSB7XG4gICAgICAgIHJldHVybiBjb2VyY2VkVmVyc2lvbjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgY2hyb21lVmVyc2lvbjtcblxuICAgIC8vIGluIGNhc2Ugb2YgV2ViVmlldyBCcm93c2VyIFRlc3Rlciwgc2ltcGx5IHRyeSB0byBmaW5kIHRoZSB1bmRlcmx5aW5nIHdlYnZpZXdcbiAgICBpZiAodGhpcy5idW5kbGVJZCA9PT0gV0VCVklFV19TSEVMTF9CVU5ETEVfSUQpIHtcbiAgICAgIGZvciAoY29uc3QgYnVuZGxlSWQgb2YgV0VCVklFV19CVU5ETEVfSURTKSB7XG4gICAgICAgIGNocm9tZVZlcnNpb24gPSBhd2FpdCBnZXRDaHJvbWVWZXJzaW9uKHRoaXMuYWRiLCBidW5kbGVJZCk7XG4gICAgICAgIGlmIChjaHJvbWVWZXJzaW9uKSB7XG4gICAgICAgICAgdGhpcy5idW5kbGVJZCA9IGJ1bmRsZUlkO1xuICAgICAgICAgIHJldHVybiBzZW12ZXIuY29lcmNlKGNocm9tZVZlcnNpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBvbiBBbmRyb2lkIDctOSB3ZWJ2aWV3cyBhcmUgYmFja2VkIGJ5IHRoZSBtYWluIENocm9tZSwgbm90IHRoZSBzeXN0ZW0gd2Vidmlld1xuICAgIGlmICh0aGlzLmFkYikge1xuICAgICAgY29uc3QgYXBpTGV2ZWwgPSBhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpO1xuICAgICAgaWYgKGFwaUxldmVsID49IDI0ICYmIGFwaUxldmVsIDw9IDI4ICYmXG4gICAgICAgICAgW1dFQlZJRVdfU0hFTExfQlVORExFX0lELCAuLi5XRUJWSUVXX0JVTkRMRV9JRFNdLmluY2x1ZGVzKHRoaXMuYnVuZGxlSWQpKSB7XG4gICAgICAgIHRoaXMuYnVuZGxlSWQgPSBDSFJPTUVfQlVORExFX0lEO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHRyeSBvdXQgd2Vidmlld3Mgd2hlbiBubyBidW5kbGUgaWQgaXMgc2VudCBpblxuICAgIGlmICghdGhpcy5idW5kbGVJZCkge1xuICAgICAgLy8gZGVmYXVsdCB0byB0aGUgZ2VuZXJpYyBDaHJvbWUgYnVuZGxlXG4gICAgICB0aGlzLmJ1bmRsZUlkID0gQ0hST01FX0JVTkRMRV9JRDtcblxuICAgICAgLy8gd2UgaGF2ZSBhIHdlYnZpZXcgb2Ygc29tZSBzb3J0LCBzbyB0cnkgdG8gZmluZCB0aGUgYnVuZGxlIHZlcnNpb25cbiAgICAgIGZvciAoY29uc3QgYnVuZGxlSWQgb2YgV0VCVklFV19CVU5ETEVfSURTKSB7XG4gICAgICAgIGNocm9tZVZlcnNpb24gPSBhd2FpdCBnZXRDaHJvbWVWZXJzaW9uKHRoaXMuYWRiLCBidW5kbGVJZCk7XG4gICAgICAgIGlmIChjaHJvbWVWZXJzaW9uKSB7XG4gICAgICAgICAgdGhpcy5idW5kbGVJZCA9IGJ1bmRsZUlkO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgd2UgZG8gbm90IGhhdmUgYSBjaHJvbWUgdmVyc2lvbiwgaXQgbXVzdCBub3QgYmUgYSB3ZWJ2aWV3XG4gICAgaWYgKCFjaHJvbWVWZXJzaW9uKSB7XG4gICAgICBjaHJvbWVWZXJzaW9uID0gYXdhaXQgZ2V0Q2hyb21lVmVyc2lvbih0aGlzLmFkYiwgdGhpcy5idW5kbGVJZCk7XG4gICAgfVxuXG4gICAgLy8gbWFrZSBzdXJlIGl0IGlzIHNlbXZlciwgc28gbGF0ZXIgY2hlY2tzIHdvbid0IGZhaWxcbiAgICByZXR1cm4gY2hyb21lVmVyc2lvbiA/IHNlbXZlci5jb2VyY2UoY2hyb21lVmVyc2lvbikgOiBudWxsO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRHJpdmVyc01hcHBpbmcgKG5ld01hcHBpbmcpIHtcbiAgICBsZXQgc2hvdWxkVXBkYXRlU3RhdGljTWFwcGluZyA9IHRydWU7XG4gICAgaWYgKGF3YWl0IGZzLmV4aXN0cyh0aGlzLm1hcHBpbmdQYXRoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKHRoaXMubWFwcGluZ1BhdGgsIEpTT04uc3RyaW5naWZ5KG5ld01hcHBpbmcsIG51bGwsIDIpLCAndXRmOCcpO1xuICAgICAgICBzaG91bGRVcGRhdGVTdGF0aWNNYXBwaW5nID0gZmFsc2U7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYENhbm5vdCBzdG9yZSB0aGUgdXBkYXRlZCBjaHJvbWVkcml2ZXJzIG1hcHBpbmcgaW50byAnJHt0aGlzLm1hcHBpbmdQYXRofScuIGAgK1xuICAgICAgICAgIGBUaGlzIG1heSByZWR1Y2UgdGhlIHBlcmZvcm1hbmNlIG9mIGZ1cnRoZXIgZXhlY3V0aW9ucy4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2hvdWxkVXBkYXRlU3RhdGljTWFwcGluZykge1xuICAgICAgT2JqZWN0LmFzc2lnbihDSFJPTUVEUklWRVJfQ0hST01FX01BUFBJTkcsIG5ld01hcHBpbmcpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldENvbXBhdGlibGVDaHJvbWVkcml2ZXIgKCkge1xuICAgIGlmICghdGhpcy5hZGIpIHtcbiAgICAgIHJldHVybiBhd2FpdCBnZXRDaHJvbWVkcml2ZXJCaW5hcnlQYXRoKCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWFwcGluZyA9IGF3YWl0IHRoaXMuZ2V0RHJpdmVyc01hcHBpbmcoKTtcbiAgICBpZiAoIV8uaXNFbXB0eShtYXBwaW5nKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYFRoZSBtb3N0IHJlY2VudCBrbm93biBDaHJvbWUgdmVyc2lvbjogJHtfLnZhbHVlcyhtYXBwaW5nKVswXX1gKTtcbiAgICB9XG5cbiAgICBsZXQgZGlkU3RvcmFnZVN5bmMgPSBmYWxzZTtcbiAgICBjb25zdCBzeW5jQ2hyb21lZHJpdmVycyA9IGFzeW5jIChjaHJvbWVWZXJzaW9uKSA9PiB7XG4gICAgICBkaWRTdG9yYWdlU3luYyA9IHRydWU7XG4gICAgICBjb25zdCByZXRyaWV2ZWRNYXBwaW5nID0gYXdhaXQgdGhpcy5zdG9yYWdlQ2xpZW50LnJldHJpZXZlTWFwcGluZygpO1xuICAgICAgdGhpcy5sb2cuZGVidWcoJ0dvdCBjaHJvbWVkcml2ZXJzIG1hcHBpbmcgZnJvbSB0aGUgc3RvcmFnZTogJyArXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHJldHJpZXZlZE1hcHBpbmcsIG51bGwsIDIpKTtcbiAgICAgIGNvbnN0IGRyaXZlcktleXMgPSBhd2FpdCB0aGlzLnN0b3JhZ2VDbGllbnQuc3luY0RyaXZlcnMoe1xuICAgICAgICBtaW5Ccm93c2VyVmVyc2lvbjogY2hyb21lVmVyc2lvbi5tYWpvcixcbiAgICAgIH0pO1xuICAgICAgaWYgKF8uaXNFbXB0eShkcml2ZXJLZXlzKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCBzeW5jaHJvbml6ZWREcml2ZXJzTWFwcGluZyA9IGRyaXZlcktleXMucmVkdWNlKChhY2MsIHgpID0+IHtcbiAgICAgICAgY29uc3Qge3ZlcnNpb24sIG1pbkJyb3dzZXJWZXJzaW9ufSA9IHJldHJpZXZlZE1hcHBpbmdbeF07XG4gICAgICAgIGFjY1t2ZXJzaW9uXSA9IG1pbkJyb3dzZXJWZXJzaW9uO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30pO1xuICAgICAgT2JqZWN0LmFzc2lnbihtYXBwaW5nLCBzeW5jaHJvbml6ZWREcml2ZXJzTWFwcGluZyk7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZURyaXZlcnNNYXBwaW5nKG1hcHBpbmcpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIGRvIHtcbiAgICAgIGNvbnN0IGNkcyA9IGF3YWl0IHRoaXMuZ2V0Q2hyb21lZHJpdmVycyhtYXBwaW5nKTtcblxuICAgICAgY29uc3QgbWlzc2luZ1ZlcnNpb25zID0ge307XG4gICAgICBmb3IgKGNvbnN0IHt2ZXJzaW9uLCBtaW5DaHJvbWVWZXJzaW9ufSBvZiBjZHMpIHtcbiAgICAgICAgaWYgKCFtaW5DaHJvbWVWZXJzaW9uIHx8IG1hcHBpbmdbdmVyc2lvbl0pIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb2VyY2VkVmVyID0gc2VtdmVyLmNvZXJjZSh2ZXJzaW9uKTtcbiAgICAgICAgaWYgKCFjb2VyY2VkVmVyIHx8IGNvZXJjZWRWZXIubWFqb3IgPCBORVdfQ0RfVkVSU0lPTl9GT1JNQVRfTUFKT1JfVkVSU0lPTikge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgbWlzc2luZ1ZlcnNpb25zW3ZlcnNpb25dID0gbWluQ2hyb21lVmVyc2lvbjtcbiAgICAgIH1cbiAgICAgIGlmICghXy5pc0VtcHR5KG1pc3NpbmdWZXJzaW9ucykpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgRm91bmQgJHt1dGlsLnBsdXJhbGl6ZSgnQ2hyb21lZHJpdmVyJywgXy5zaXplKG1pc3NpbmdWZXJzaW9ucyksIHRydWUpfSwgYCArXG4gICAgICAgICAgYHdoaWNoICR7Xy5zaXplKG1pc3NpbmdWZXJzaW9ucykgPT09IDEgPyAnaXMnIDogJ2FyZSd9IG1pc3NpbmcgaW4gdGhlIGxpc3Qgb2Yga25vd24gdmVyc2lvbnM6IGAgK1xuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG1pc3NpbmdWZXJzaW9ucykpO1xuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZURyaXZlcnNNYXBwaW5nKE9iamVjdC5hc3NpZ24obWFwcGluZywgbWlzc2luZ1ZlcnNpb25zKSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVCdWlsZENoZWNrKSB7XG4gICAgICAgIGlmIChfLmlzRW1wdHkoY2RzKSkge1xuICAgICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYFRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIENocm9tZWRyaXZlciBleGVjdXRhYmxlIGF2YWlsYWJsZSBmb3IgdXNlIGlmIGAgK1xuICAgICAgICAgICAgYCdjaHJvbWVkcml2ZXJEaXNhYmxlQnVpbGRDaGVjaycgY2FwYWJpbGl0eSBpcyBzZXQgdG8gJ3RydWUnYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qge3ZlcnNpb24sIGV4ZWN1dGFibGV9ID0gY2RzWzBdO1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBDaHJvbWUgYnVpbGQgY2hlY2sgZGlzYWJsZWQuIFVzaW5nIG1vc3QgcmVjZW50IENocm9tZWRyaXZlciB2ZXJzaW9uICgke3ZlcnNpb259LCBhdCAnJHtleGVjdXRhYmxlfScpYCk7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYElmIHRoaXMgaXMgd3JvbmcsIHNldCAnY2hyb21lZHJpdmVyRGlzYWJsZUJ1aWxkQ2hlY2snIGNhcGFiaWxpdHkgdG8gJ2ZhbHNlJ2ApO1xuICAgICAgICByZXR1cm4gZXhlY3V0YWJsZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2hyb21lVmVyc2lvbiA9IGF3YWl0IHRoaXMuZ2V0Q2hyb21lVmVyc2lvbigpO1xuICAgICAgaWYgKCFjaHJvbWVWZXJzaW9uKSB7XG4gICAgICAgIC8vIHVuYWJsZSB0byBnZXQgdGhlIGNocm9tZSB2ZXJzaW9uXG4gICAgICAgIGlmIChfLmlzRW1wdHkoY2RzKSkge1xuICAgICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYFRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIENocm9tZWRyaXZlciBleGVjdXRhYmxlIGF2YWlsYWJsZSBmb3IgdXNlIGlmIGAgK1xuICAgICAgICAgICAgYHRoZSBjdXJyZW50IENocm9tZSB2ZXJzaW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qge3ZlcnNpb24sIGV4ZWN1dGFibGV9ID0gY2RzWzBdO1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gZGlzY292ZXIgQ2hyb21lIHZlcnNpb24uIFVzaW5nIENocm9tZWRyaXZlciAke3ZlcnNpb259IGF0ICcke2V4ZWN1dGFibGV9J2ApO1xuICAgICAgICByZXR1cm4gZXhlY3V0YWJsZTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nLmRlYnVnKGBGb3VuZCBDaHJvbWUgYnVuZGxlICcke3RoaXMuYnVuZGxlSWR9JyB2ZXJzaW9uICcke2Nocm9tZVZlcnNpb259J2ApO1xuXG4gICAgICBjb25zdCBtYXRjaGluZ0RyaXZlcnMgPSBjZHMuZmlsdGVyKCh7bWluQ2hyb21lVmVyc2lvbn0pID0+IHtcbiAgICAgICAgY29uc3QgbWluQ2hyb21lVmVyc2lvblMgPSBtaW5DaHJvbWVWZXJzaW9uICYmIHNlbXZlci5jb2VyY2UobWluQ2hyb21lVmVyc2lvbik7XG4gICAgICAgIGlmICghbWluQ2hyb21lVmVyc2lvblMpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2hyb21lVmVyc2lvbi5tYWpvciA+IE5FV19DRF9WRVJTSU9OX0ZPUk1BVF9NQUpPUl9WRVJTSU9OXG4gICAgICAgICAgPyBtaW5DaHJvbWVWZXJzaW9uUy5tYWpvciA9PT0gY2hyb21lVmVyc2lvbi5tYWpvclxuICAgICAgICAgIDogc2VtdmVyLmd0ZShjaHJvbWVWZXJzaW9uLCBtaW5DaHJvbWVWZXJzaW9uUyk7XG4gICAgICB9KTtcbiAgICAgIGlmIChfLmlzRW1wdHkobWF0Y2hpbmdEcml2ZXJzKSkge1xuICAgICAgICBpZiAodGhpcy5zdG9yYWdlQ2xpZW50ICYmICFkaWRTdG9yYWdlU3luYykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgc3luY0Nocm9tZWRyaXZlcnMoY2hyb21lVmVyc2lvbikpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5sb2cud2FybihgQ2Fubm90IHN5bmNocm9uaXplIGxvY2FsIGNocm9tZWRyaXZlcnMgd2l0aCB0aGUgcmVtb3RlIHN0b3JhZ2UgYXQgJHtDRF9DRE59OiBgICtcbiAgICAgICAgICAgICAgZS5tZXNzYWdlKTtcbiAgICAgICAgICAgIHRoaXMubG9nLmRlYnVnKGUuc3RhY2spO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhdXRvZG93bmxvYWRTdWdnZXN0aW9uID1cbiAgICAgICAgICAnWW91IGNvdWxkIGFsc28gdHJ5IHRvIGVuYWJsZSBhdXRvbWF0ZWQgY2hyb21lZHJpdmVycyBkb3dubG9hZCBzZXJ2ZXIgZmVhdHVyZSc7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gQ2hyb21lZHJpdmVyIGZvdW5kIHRoYXQgY2FuIGF1dG9tYXRlIENocm9tZSAnJHtjaHJvbWVWZXJzaW9ufScuIGAgK1xuICAgICAgICAgICghdGhpcy5zdG9yYWdlQ2xpZW50ID8gYCR7YXV0b2Rvd25sb2FkU3VnZ2VzdGlvbn0uIGAgOiAnJykgK1xuICAgICAgICAgIGBTZWUgJHtDSFJPTUVEUklWRVJfVFVUT1JJQUx9IGZvciBtb3JlIGRldGFpbHNgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYmluUGF0aCA9IG1hdGNoaW5nRHJpdmVyc1swXS5leGVjdXRhYmxlO1xuICAgICAgdGhpcy5sb2cuZGVidWcoYEZvdW5kICR7dXRpbC5wbHVyYWxpemUoJ2V4ZWN1dGFibGUnLCBtYXRjaGluZ0RyaXZlcnMubGVuZ3RoLCB0cnVlKX0gYCArXG4gICAgICAgIGBjYXBhYmxlIG9mIGF1dG9tYXRpbmcgQ2hyb21lICcke2Nocm9tZVZlcnNpb259Jy5cXG5DaG9vc2luZyB0aGUgbW9zdCByZWNlbnQsICcke2JpblBhdGh9Jy5gKTtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdJZiBhIHNwZWNpZmljIHZlcnNpb24gaXMgcmVxdWlyZWQsIHNwZWNpZnkgaXQgd2l0aCB0aGUgYGNocm9tZWRyaXZlckV4ZWN1dGFibGVgJyArXG4gICAgICAgICdkZXNpcmVkIGNhcGFiaWxpdHkuJyk7XG4gICAgICByZXR1cm4gYmluUGF0aDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gICAgfSB3aGlsZSAodHJ1ZSk7XG4gIH1cblxuICBhc3luYyBpbml0Q2hyb21lZHJpdmVyUGF0aCAoKSB7XG4gICAgaWYgKHRoaXMuZXhlY3V0YWJsZVZlcmlmaWVkKSByZXR1cm47IC8vZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuXG4gICAgLy8gdGhlIGV4ZWN1dGFibGUgbWlnaHQgYmUgc2V0IChpZiBwYXNzZWQgaW4pXG4gICAgLy8gb3Igd2UgbWlnaHQgd2FudCB0byB1c2UgdGhlIGJhc2ljIG9uZSBpbnN0YWxsZWQgd2l0aCB0aGlzIGRyaXZlclxuICAgIC8vIG9yIHdlIHdhbnQgdG8gZmlndXJlIG91dCB0aGUgYmVzdCBvbmVcbiAgICBpZiAoIXRoaXMuY2hyb21lZHJpdmVyKSB7XG4gICAgICB0aGlzLmNocm9tZWRyaXZlciA9IHRoaXMudXNlU3lzdGVtRXhlY3V0YWJsZVxuICAgICAgICA/IGF3YWl0IGdldENocm9tZWRyaXZlckJpbmFyeVBhdGgoKVxuICAgICAgICA6IGF3YWl0IHRoaXMuZ2V0Q29tcGF0aWJsZUNocm9tZWRyaXZlcigpO1xuICAgIH1cblxuICAgIGlmICghYXdhaXQgZnMuZXhpc3RzKHRoaXMuY2hyb21lZHJpdmVyKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUcnlpbmcgdG8gdXNlIGEgY2hyb21lZHJpdmVyIGJpbmFyeSBhdCB0aGUgcGF0aCBgICtcbiAgICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNocm9tZWRyaXZlcn0sIGJ1dCBpdCBkb2Vzbid0IGV4aXN0IWApO1xuICAgIH1cbiAgICB0aGlzLmV4ZWN1dGFibGVWZXJpZmllZCA9IHRydWU7XG4gICAgdGhpcy5sb2cuaW5mbyhgU2V0IGNocm9tZWRyaXZlciBiaW5hcnkgYXM6ICR7dGhpcy5jaHJvbWVkcml2ZXJ9YCk7XG4gIH1cblxuICBzeW5jUHJvdG9jb2wgKGNkVmVyc2lvbiA9IG51bGwpIHtcbiAgICBjb25zdCBjb2VyY2VkVmVyc2lvbiA9IHNlbXZlci5jb2VyY2UoY2RWZXJzaW9uKTtcbiAgICBpZiAoIWNvZXJjZWRWZXJzaW9uIHx8IGNvZXJjZWRWZXJzaW9uLm1ham9yIDwgTUlOX0NEX1ZFUlNJT05fV0lUSF9XM0NfU1VQUE9SVCkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYENocm9tZWRyaXZlciB2LiAke2NkVmVyc2lvbn0gZG9lcyBub3QgZnVsbHkgc3VwcG9ydCAke1BST1RPQ09MUy5XM0N9IHByb3RvY29sLiBgICtcbiAgICAgICAgYERlZmF1bHRpbmcgdG8gJHtQUk9UT0NPTFMuTUpTT05XUH1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY2hyb21lT3B0aW9ucyA9IGdldENhcFZhbHVlKHRoaXMuY2FwYWJpbGl0aWVzLCAnY2hyb21lT3B0aW9ucycsIHt9KTtcbiAgICBpZiAoY2hyb21lT3B0aW9ucy53M2MgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBDaHJvbWVkcml2ZXIgdi4gJHtjZFZlcnNpb259IHN1cHBvcnRzICR7UFJPVE9DT0xTLlczQ30gcHJvdG9jb2wsIGAgK1xuICAgICAgICBgYnV0ICR7UFJPVE9DT0xTLk1KU09OV1B9IG9uZSBoYXMgYmVlbiBleHBsaWNpdGx5IHJlcXVlc3RlZGApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRlc2lyZWRQcm90b2NvbCA9IFBST1RPQ09MUy5XM0M7XG4gICAgLy8gZ2l2ZW4gY2FwcyBtaWdodCBub3QgYmUgcHJvcGVybHkgcHJlZml4ZWRcbiAgICAvLyBzbyB3ZSB0cnkgdG8gZml4IHRoZW0gaW4gb3JkZXIgdG8gcHJvcGVybHkgaW5pdFxuICAgIC8vIHRoZSBuZXcgVzNDIHNlc3Npb25cbiAgICB0aGlzLmNhcGFiaWxpdGllcyA9IHRvVzNjQ2FwTmFtZXModGhpcy5jYXBhYmlsaXRpZXMpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQgKGNhcHMsIGVtaXRTdGFydGluZ1N0YXRlID0gdHJ1ZSkge1xuICAgIHRoaXMuY2FwYWJpbGl0aWVzID0gXy5jbG9uZURlZXAoY2Fwcyk7XG5cbiAgICAvLyBzZXQgdGhlIGxvZ2dpbmcgcHJlZmVyZW5jZXMgdG8gQUxMIHRoZSBjb25zb2xlIGxvZ3NcbiAgICB0aGlzLmNhcGFiaWxpdGllcy5sb2dnaW5nUHJlZnMgPSBfLmNsb25lRGVlcChnZXRDYXBWYWx1ZShjYXBzLCAnbG9nZ2luZ1ByZWZzJywge30pKTtcbiAgICBpZiAoXy5pc0VtcHR5KHRoaXMuY2FwYWJpbGl0aWVzLmxvZ2dpbmdQcmVmcy5icm93c2VyKSkge1xuICAgICAgdGhpcy5jYXBhYmlsaXRpZXMubG9nZ2luZ1ByZWZzLmJyb3dzZXIgPSAnQUxMJztcbiAgICB9XG5cbiAgICBpZiAoZW1pdFN0YXJ0aW5nU3RhdGUpIHtcbiAgICAgIHRoaXMuY2hhbmdlU3RhdGUoQ2hyb21lZHJpdmVyLlNUQVRFX1NUQVJUSU5HKTtcbiAgICB9XG5cbiAgICBjb25zdCBhcmdzID0gW2AtLXBvcnQ9JHt0aGlzLnByb3h5UG9ydH1gXTtcbiAgICBpZiAodGhpcy5hZGIgJiYgdGhpcy5hZGIuYWRiUG9ydCkge1xuICAgICAgYXJncy5wdXNoKGAtLWFkYi1wb3J0PSR7dGhpcy5hZGIuYWRiUG9ydH1gKTtcbiAgICB9XG4gICAgaWYgKF8uaXNBcnJheSh0aGlzLmNtZEFyZ3MpKSB7XG4gICAgICBhcmdzLnB1c2goLi4udGhpcy5jbWRBcmdzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubG9nUGF0aCkge1xuICAgICAgYXJncy5wdXNoKGAtLWxvZy1wYXRoPSR7dGhpcy5sb2dQYXRofWApO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaXNhYmxlQnVpbGRDaGVjaykge1xuICAgICAgYXJncy5wdXNoKCctLWRpc2FibGUtYnVpbGQtY2hlY2snKTtcbiAgICB9XG4gICAgYXJncy5wdXNoKCctLXZlcmJvc2UnKTtcbiAgICAvLyB3aGF0IGFyZSB0aGUgcHJvY2VzcyBzdGRvdXQvc3RkZXJyIGNvbmRpdGlvbnMgd2hlcmVpbiB3ZSBrbm93IHRoYXRcbiAgICAvLyB0aGUgcHJvY2VzcyBoYXMgc3RhcnRlZCB0byBvdXIgc2F0aXNmYWN0aW9uP1xuICAgIGNvbnN0IHN0YXJ0RGV0ZWN0b3IgPSAoc3Rkb3V0KSA9PiBzdGRvdXQuc3RhcnRzV2l0aCgnU3RhcnRpbmcgJyk7XG5cbiAgICBsZXQgcHJvY2Vzc0lzQWxpdmUgPSBmYWxzZTtcbiAgICBsZXQgd2Vidmlld1ZlcnNpb247XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuaW5pdENocm9tZWRyaXZlclBhdGgoKTtcbiAgICAgIGF3YWl0IHRoaXMua2lsbEFsbCgpO1xuXG4gICAgICAvLyBzZXQgdXAgb3VyIHN1YnByb2Nlc3Mgb2JqZWN0XG4gICAgICB0aGlzLnByb2MgPSBuZXcgU3ViUHJvY2Vzcyh0aGlzLmNocm9tZWRyaXZlciwgYXJncyk7XG4gICAgICBwcm9jZXNzSXNBbGl2ZSA9IHRydWU7XG5cbiAgICAgIC8vIGhhbmRsZSBsb2cgb3V0cHV0XG4gICAgICB0aGlzLnByb2Mub24oJ291dHB1dCcsIChzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgICAvLyBpZiB0aGUgY2Qgb3V0cHV0IGlzIG5vdCBwcmludGVkLCBmaW5kIHRoZSBjaHJvbWUgdmVyc2lvbiBhbmQgcHJpbnRcbiAgICAgICAgLy8gd2lsbCBnZXQgYSByZXNwb25zZSBsaWtlXG4gICAgICAgIC8vICAgRGV2VG9vbHMgcmVzcG9uc2U6IHtcbiAgICAgICAgLy8gICAgICBcIkFuZHJvaWQtUGFja2FnZVwiOiBcImlvLmFwcGl1bS5zYW1wbGVhcHBcIixcbiAgICAgICAgLy8gICAgICBcIkJyb3dzZXJcIjogXCJDaHJvbWUvNTUuMC4yODgzLjkxXCIsXG4gICAgICAgIC8vICAgICAgXCJQcm90b2NvbC1WZXJzaW9uXCI6IFwiMS4yXCIsXG4gICAgICAgIC8vICAgICAgXCJVc2VyLUFnZW50XCI6IFwiLi4uXCIsXG4gICAgICAgIC8vICAgICAgXCJXZWJLaXQtVmVyc2lvblwiOiBcIjUzNy4zNlwiXG4gICAgICAgIC8vICAgfVxuICAgICAgICBjb25zdCBvdXQgPSBzdGRvdXQgKyBzdGRlcnI7XG4gICAgICAgIGxldCBtYXRjaCA9IC9cIkJyb3dzZXJcIjogXCIoLiopXCIvLmV4ZWMob3V0KTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgd2Vidmlld1ZlcnNpb24gPSBtYXRjaFsxXTtcbiAgICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgV2VidmlldyB2ZXJzaW9uOiAnJHt3ZWJ2aWV3VmVyc2lvbn0nYCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhbHNvIHByaW50IGNocm9tZWRyaXZlciB2ZXJzaW9uIHRvIGxvZ3NcbiAgICAgICAgLy8gd2lsbCBvdXRwdXQgc29tZXRoaW5nIGxpa2VcbiAgICAgICAgLy8gIFN0YXJ0aW5nIENocm9tZURyaXZlciAyLjMzLjUwNjEwNiAoOGEwNmMzOWM0NTgyZmJmYmFiNjk2NmRiYjFjMzhhOTE3M2JmYjFhMikgb24gcG9ydCA5NTE1XG4gICAgICAgIG1hdGNoID0gL1N0YXJ0aW5nIENocm9tZURyaXZlciAoWy5cXGRdKykvLmV4ZWMob3V0KTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgdGhpcy5sb2cuZGVidWcoYENocm9tZWRyaXZlciB2ZXJzaW9uOiAnJHttYXRjaFsxXX0nYCk7XG4gICAgICAgICAgdGhpcy5zeW5jUHJvdG9jb2wobWF0Y2hbMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZ2l2ZSB0aGUgb3V0cHV0IGlmIGl0IGlzIHJlcXVlc3RlZFxuICAgICAgICBpZiAodGhpcy52ZXJib3NlKSB7XG4gICAgICAgICAgZm9yIChsZXQgbGluZSBvZiAoc3Rkb3V0IHx8ICcnKS50cmltKCkuc3BsaXQoJ1xcbicpKSB7XG4gICAgICAgICAgICBpZiAoIWxpbmUudHJpbSgpLmxlbmd0aCkgY29udGludWU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY3VybHlcbiAgICAgICAgICAgIHRoaXMubG9nLmRlYnVnKGBbU1RET1VUXSAke2xpbmV9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IGxpbmUgb2YgKHN0ZGVyciB8fCAnJykudHJpbSgpLnNwbGl0KCdcXG4nKSkge1xuICAgICAgICAgICAgaWYgKCFsaW5lLnRyaW0oKS5sZW5ndGgpIGNvbnRpbnVlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG4gICAgICAgICAgICB0aGlzLmxvZy5lcnJvcihgW1NUREVSUl0gJHtsaW5lfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIGhhbmRsZSBvdXQtb2YtYm91bmQgZXhpdCBieSBzaW1wbHkgZW1pdHRpbmcgYSBzdG9wcGVkIHN0YXRlXG4gICAgICB0aGlzLnByb2Mub24oJ2V4aXQnLCAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICAgIHByb2Nlc3NJc0FsaXZlID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlICE9PSBDaHJvbWVkcml2ZXIuU1RBVEVfU1RPUFBFRCAmJlxuICAgICAgICAgICAgdGhpcy5zdGF0ZSAhPT0gQ2hyb21lZHJpdmVyLlNUQVRFX1NUT1BQSU5HICYmXG4gICAgICAgICAgICB0aGlzLnN0YXRlICE9PSBDaHJvbWVkcml2ZXIuU1RBVEVfUkVTVEFSVElORykge1xuICAgICAgICAgIGNvbnN0IG1zZyA9IGBDaHJvbWVkcml2ZXIgZXhpdGVkIHVuZXhwZWN0ZWRseSB3aXRoIGNvZGUgJHtjb2RlfSwgc2lnbmFsICR7c2lnbmFsfWA7XG4gICAgICAgICAgdGhpcy5sb2cuZXJyb3IobXNnKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZVN0YXRlKENocm9tZWRyaXZlci5TVEFURV9TVE9QUEVEKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBTcGF3bmluZyBjaHJvbWVkcml2ZXIgd2l0aDogJHt0aGlzLmNocm9tZWRyaXZlcn0gJHthcmdzLmpvaW4oJyAnKX1gKTtcbiAgICAgIC8vIHN0YXJ0IHN1YnByb2MgYW5kIHdhaXQgZm9yIHN0YXJ0RGV0ZWN0b3JcbiAgICAgIGF3YWl0IHRoaXMucHJvYy5zdGFydChzdGFydERldGVjdG9yKTtcbiAgICAgIGF3YWl0IHRoaXMud2FpdEZvck9ubGluZSgpO1xuICAgICAgYXdhaXQgdGhpcy5zdGFydFNlc3Npb24oKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhlKTtcbiAgICAgIHRoaXMuZW1pdChDaHJvbWVkcml2ZXIuRVZFTlRfRVJST1IsIGUpO1xuICAgICAgLy8ganVzdCBiZWNhdXNlIHdlIGhhZCBhbiBlcnJvciBkb2Vzbid0IG1lYW4gdGhlIGNocm9tZWRyaXZlciBwcm9jZXNzXG4gICAgICAvLyBmaW5pc2hlZDsgd2Ugc2hvdWxkIGNsZWFuIHVwIGlmIG5lY2Vzc2FyeVxuICAgICAgaWYgKHByb2Nlc3NJc0FsaXZlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBtZXNzYWdlID0gJyc7XG4gICAgICAvLyBvZnRlbiB0aGUgdXNlcidzIENocm9tZSB2ZXJzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHZlcnNpb24gb2YgQ2hyb21lZHJpdmVyXG4gICAgICBpZiAoZS5tZXNzYWdlLmluY2x1ZGVzKCdDaHJvbWUgdmVyc2lvbiBtdXN0IGJlJykpIHtcbiAgICAgICAgbWVzc2FnZSArPSAnVW5hYmxlIHRvIGF1dG9tYXRlIENocm9tZSB2ZXJzaW9uIGJlY2F1c2UgaXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIHZlcnNpb24gb2YgQ2hyb21lZHJpdmVyLlxcbic7XG4gICAgICAgIGlmICh3ZWJ2aWV3VmVyc2lvbikge1xuICAgICAgICAgIG1lc3NhZ2UgKz0gYENocm9tZSB2ZXJzaW9uIG9uIHRoZSBkZXZpY2U6ICR7d2Vidmlld1ZlcnNpb259XFxuYDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2ZXJzaW9uc1N1cHBvcnRlZEJ5RHJpdmVyID0gL0Nocm9tZSB2ZXJzaW9uIG11c3QgYmUgKC4rKS8uZXhlYyhlLm1lc3NhZ2UpPy5bMV0gfHwgJyc7XG4gICAgICAgIGlmICh2ZXJzaW9uc1N1cHBvcnRlZEJ5RHJpdmVyKSB7XG4gICAgICAgICAgbWVzc2FnZSArPSBgQ2hyb21lZHJpdmVyIHN1cHBvcnRzIENocm9tZSB2ZXJzaW9uKHMpOiAke3ZlcnNpb25zU3VwcG9ydGVkQnlEcml2ZXJ9XFxuYDtcbiAgICAgICAgfVxuICAgICAgICBtZXNzYWdlICs9IGBWaXNpdCAnJHtDSFJPTUVEUklWRVJfVFVUT1JJQUx9JyB0byB0cm91Ymxlc2hvb3QgdGhlIHByb2JsZW0uXFxuYDtcbiAgICAgIH1cblxuICAgICAgbWVzc2FnZSArPSBlLm1lc3NhZ2U7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHNlc3Npb25JZCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUgPT09IENocm9tZWRyaXZlci5TVEFURV9PTkxJTkUgPyB0aGlzLmp3cHJveHkuc2Vzc2lvbklkIDogbnVsbDtcbiAgfVxuXG4gIGFzeW5jIHJlc3RhcnQgKCkge1xuICAgIHRoaXMubG9nLmluZm8oJ1Jlc3RhcnRpbmcgY2hyb21lZHJpdmVyJyk7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09IENocm9tZWRyaXZlci5TVEFURV9PTkxJTkUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IHJlc3RhcnQgd2hlbiB3ZSdyZSBub3Qgb25saW5lXCIpO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZVN0YXRlKENocm9tZWRyaXZlci5TVEFURV9SRVNUQVJUSU5HKTtcbiAgICBhd2FpdCB0aGlzLnN0b3AoZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc3RhcnQodGhpcy5jYXBhYmlsaXRpZXMsIGZhbHNlKTtcbiAgfVxuXG4gIGFzeW5jIHdhaXRGb3JPbmxpbmUgKCkge1xuICAgIC8vIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgQ0QgaGFzbid0IGNyYXNoZWRcbiAgICBsZXQgY2hyb21lZHJpdmVyU3RvcHBlZCA9IGZhbHNlO1xuICAgIGF3YWl0IHJldHJ5SW50ZXJ2YWwoMjAsIDIwMCwgYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc3RhdGUgPT09IENocm9tZWRyaXZlci5TVEFURV9TVE9QUEVEKSB7XG4gICAgICAgIC8vIHdlIGFyZSBlaXRoZXIgc3RvcHBlZCBvciBzdG9wcGluZywgc28gc29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgICAgICAgY2hyb21lZHJpdmVyU3RvcHBlZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMuZ2V0U3RhdHVzKCk7XG4gICAgfSk7XG4gICAgaWYgKGNocm9tZWRyaXZlclN0b3BwZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2hyb21lRHJpdmVyIGNyYXNoZWQgZHVyaW5nIHN0YXJ0dXAuJyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0U3RhdHVzICgpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5qd3Byb3h5LmNvbW1hbmQoJy9zdGF0dXMnLCAnR0VUJyk7XG4gIH1cblxuICBhc3luYyBzdGFydFNlc3Npb24gKCkge1xuICAgIGNvbnN0IHNlc3Npb25DYXBzID0gdGhpcy5kZXNpcmVkUHJvdG9jb2wgPT09IFBST1RPQ09MUy5XM0NcbiAgICAgID8ge2NhcGFiaWxpdGllczoge2Fsd2F5c01hdGNoOiB0aGlzLmNhcGFiaWxpdGllc319XG4gICAgICA6IHtkZXNpcmVkQ2FwYWJpbGl0aWVzOiB0aGlzLmNhcGFiaWxpdGllc307XG4gICAgdGhpcy5sb2cuaW5mbyhgU3RhcnRpbmcgJHt0aGlzLmRlc2lyZWRQcm90b2NvbH0gQ2hyb21lZHJpdmVyIHNlc3Npb24gd2l0aCBjYXBhYmlsaXRpZXM6IGAgK1xuICAgICAgSlNPTi5zdHJpbmdpZnkoc2Vzc2lvbkNhcHMsIG51bGwsIDIpKTtcbiAgICBhd2FpdCB0aGlzLmp3cHJveHkuY29tbWFuZCgnL3Nlc3Npb24nLCAnUE9TVCcsIHNlc3Npb25DYXBzKTtcbiAgICB0aGlzLmxvZy5wcmVmaXggPSBnZW5lcmF0ZUxvZ1ByZWZpeCh0aGlzLCB0aGlzLmp3cHJveHkuc2Vzc2lvbklkKTtcbiAgICB0aGlzLmNoYW5nZVN0YXRlKENocm9tZWRyaXZlci5TVEFURV9PTkxJTkUpO1xuICB9XG5cbiAgYXN5bmMgc3RvcCAoZW1pdFN0YXRlcyA9IHRydWUpIHtcbiAgICBpZiAoZW1pdFN0YXRlcykge1xuICAgICAgdGhpcy5jaGFuZ2VTdGF0ZShDaHJvbWVkcml2ZXIuU1RBVEVfU1RPUFBJTkcpO1xuICAgIH1cbiAgICBjb25zdCBydW5TYWZlU3RlcCA9IGFzeW5jIChmKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgZigpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGUubWVzc2FnZSk7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGUuc3RhY2spO1xuICAgICAgfVxuICAgIH07XG4gICAgYXdhaXQgcnVuU2FmZVN0ZXAoKCkgPT4gdGhpcy5qd3Byb3h5LmNvbW1hbmQoJycsICdERUxFVEUnKSk7XG4gICAgYXdhaXQgcnVuU2FmZVN0ZXAoKCkgPT4gdGhpcy5wcm9jLnN0b3AoJ1NJR1RFUk0nLCAyMDAwMCkpO1xuICAgIHRoaXMubG9nLnByZWZpeCA9IGdlbmVyYXRlTG9nUHJlZml4KHRoaXMpO1xuICAgIGlmIChlbWl0U3RhdGVzKSB7XG4gICAgICB0aGlzLmNoYW5nZVN0YXRlKENocm9tZWRyaXZlci5TVEFURV9TVE9QUEVEKTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VTdGF0ZSAoc3RhdGUpIHtcbiAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgdGhpcy5sb2cuZGVidWcoYENoYW5nZWQgc3RhdGUgdG8gJyR7c3RhdGV9J2ApO1xuICAgIHRoaXMuZW1pdChDaHJvbWVkcml2ZXIuRVZFTlRfQ0hBTkdFRCwge3N0YXRlfSk7XG4gIH1cblxuICBhc3luYyBzZW5kQ29tbWFuZCAodXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5qd3Byb3h5LmNvbW1hbmQodXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG5cbiAgYXN5bmMgcHJveHlSZXEgKHJlcSwgcmVzKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuandwcm94eS5wcm94eVJlcVJlcyhyZXEsIHJlcyk7XG4gIH1cblxuICBhc3luYyBraWxsQWxsICgpIHtcbiAgICBsZXQgY21kID0gc3lzdGVtLmlzV2luZG93cygpXG4gICAgICA/IGB3bWljIHByb2Nlc3Mgd2hlcmUgXCJjb21tYW5kbGluZSBsaWtlICclY2hyb21lZHJpdmVyLmV4ZSUtLXBvcnQ9JHt0aGlzLnByb3h5UG9ydH0lJ1wiIGRlbGV0ZWBcbiAgICAgIDogYHBraWxsIC0xNSAtZiBcIiR7dGhpcy5jaHJvbWVkcml2ZXJ9LiotLXBvcnQ9JHt0aGlzLnByb3h5UG9ydH1cImA7XG4gICAgdGhpcy5sb2cuZGVidWcoYEtpbGxpbmcgYW55IG9sZCBjaHJvbWVkcml2ZXJzLCBydW5uaW5nOiAke2NtZH1gKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgKEIucHJvbWlzaWZ5KGNwLmV4ZWMpKShjbWQpO1xuICAgICAgdGhpcy5sb2cuZGVidWcoJ1N1Y2Nlc3NmdWxseSBjbGVhbmVkIHVwIG9sZCBjaHJvbWVkcml2ZXJzJyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmxvZy53YXJuKCdObyBvbGQgY2hyb21lZHJpdmVycyBzZWVtIHRvIGV4aXN0Jyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYWRiKSB7XG4gICAgICBjb25zdCB1ZGlkSW5kZXggPSB0aGlzLmFkYi5leGVjdXRhYmxlLmRlZmF1bHRBcmdzLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbSA9PT0gJy1zJyk7XG4gICAgICBjb25zdCB1ZGlkID0gdWRpZEluZGV4ID4gLTEgPyB0aGlzLmFkYi5leGVjdXRhYmxlLmRlZmF1bHRBcmdzW3VkaWRJbmRleCArIDFdIDogbnVsbDtcblxuICAgICAgaWYgKHVkaWQpIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYENsZWFuaW5nIHRoaXMgZGV2aWNlJ3MgYWRiIGZvcndhcmRlZCBwb3J0IHNvY2tldCBjb25uZWN0aW9uczogJHt1ZGlkfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYENsZWFuaW5nIGFueSBvbGQgYWRiIGZvcndhcmRlZCBwb3J0IHNvY2tldCBjb25uZWN0aW9uc2ApO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKGxldCBjb25uIG9mIGF3YWl0IHRoaXMuYWRiLmdldEZvcndhcmRMaXN0KCkpIHtcbiAgICAgICAgICAvLyBjaHJvbWVkcml2ZXIgd2lsbCBhc2sgQURCIHRvIGZvcndhcmQgYSBwb3J0IGxpa2UgXCJkZXZpY2VJZCB0Y3A6cG9ydCBsb2NhbGFic3RyYWN0OndlYnZpZXdfZGV2dG9vbHNfcmVtb3RlX3BvcnRcIlxuICAgICAgICAgIGlmICghKGNvbm4uaW5jbHVkZXMoJ3dlYnZpZXdfZGV2dG9vbHMnKSAmJiAoIXVkaWQgfHwgY29ubi5pbmNsdWRlcyh1ZGlkKSkpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgcGFyYW1zID0gY29ubi5zcGxpdCgvXFxzKy8pO1xuICAgICAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5hZGIucmVtb3ZlUG9ydEZvcndhcmQocGFyYW1zWzFdLnJlcGxhY2UoL1tcXERdKi8sICcnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIGNsZWFuIGZvcndhcmRlZCBwb3J0cy4gRXJyb3I6ICcke2Vyci5tZXNzYWdlfScuIENvbnRpbnVpbmcuYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaGFzV29ya2luZ1dlYnZpZXcgKCkge1xuICAgIC8vIHNvbWV0aW1lcyBjaHJvbWVkcml2ZXIgc3RvcHMgYXV0b21hdGluZyB3ZWJ2aWV3cy4gdGhpcyBtZXRob2QgcnVucyBhXG4gICAgLy8gc2ltcGxlIGNvbW1hbmQgdG8gZGV0ZXJtaW5lIG91ciBzdGF0ZSwgYW5kIHJlc3BvbmRzIGFjY29yZGluZ2x5XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuandwcm94eS5jb21tYW5kKCcvdXJsJywgJ0dFVCcpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5DaHJvbWVkcml2ZXIuRVZFTlRfRVJST1IgPSAnY2hyb21lZHJpdmVyX2Vycm9yJztcbkNocm9tZWRyaXZlci5FVkVOVF9DSEFOR0VEID0gJ3N0YXRlQ2hhbmdlZCc7XG5DaHJvbWVkcml2ZXIuU1RBVEVfU1RPUFBFRCA9ICdzdG9wcGVkJztcbkNocm9tZWRyaXZlci5TVEFURV9TVEFSVElORyA9ICdzdGFydGluZyc7XG5DaHJvbWVkcml2ZXIuU1RBVEVfT05MSU5FID0gJ29ubGluZSc7XG5DaHJvbWVkcml2ZXIuU1RBVEVfU1RPUFBJTkcgPSAnc3RvcHBpbmcnO1xuQ2hyb21lZHJpdmVyLlNUQVRFX1JFU1RBUlRJTkcgPSAncmVzdGFydGluZyc7XG5cbmV4cG9ydCB7IENocm9tZWRyaXZlciB9O1xuZXhwb3J0IGRlZmF1bHQgQ2hyb21lZHJpdmVyO1xuIl0sImZpbGUiOiJsaWIvY2hyb21lZHJpdmVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
739
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2Nocm9tZWRyaXZlci5qcyIsIm5hbWVzIjpbIk5FV19DRF9WRVJTSU9OX0ZPUk1BVF9NQUpPUl9WRVJTSU9OIiwiREVGQVVMVF9IT1NUIiwiTUlOX0NEX1ZFUlNJT05fV0lUSF9XM0NfU1VQUE9SVCIsIkRFRkFVTFRfUE9SVCIsIkNIUk9NRV9CVU5ETEVfSUQiLCJXRUJWSUVXX1NIRUxMX0JVTkRMRV9JRCIsIldFQlZJRVdfQlVORExFX0lEUyIsIkNIUk9NRURSSVZFUl9UVVRPUklBTCIsIlZFUlNJT05fUEFUVEVSTiIsIkNEX1ZFUlNJT05fVElNRU9VVCIsIkNocm9tZWRyaXZlciIsImV2ZW50cyIsIkV2ZW50RW1pdHRlciIsImNvbnN0cnVjdG9yIiwiYXJncyIsImhvc3QiLCJwb3J0IiwidXNlU3lzdGVtRXhlY3V0YWJsZSIsImV4ZWN1dGFibGUiLCJleGVjdXRhYmxlRGlyIiwiYnVuZGxlSWQiLCJtYXBwaW5nUGF0aCIsImNtZEFyZ3MiLCJhZGIiLCJ2ZXJib3NlIiwibG9nUGF0aCIsImRpc2FibGVCdWlsZENoZWNrIiwiZGV0YWlscyIsImlzQXV0b2Rvd25sb2FkRW5hYmxlZCIsIl9sb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJwcm94eUhvc3QiLCJwcm94eVBvcnQiLCJwcm9jIiwiY2hyb21lZHJpdmVyIiwiZXhlY3V0YWJsZVZlcmlmaWVkIiwic3RhdGUiLCJTVEFURV9TVE9QUEVEIiwiandwcm94eSIsIkpXUHJveHkiLCJzZXJ2ZXIiLCJsb2ciLCJzdG9yYWdlQ2xpZW50IiwiQ2hyb21lZHJpdmVyU3RvcmFnZUNsaWVudCIsImNocm9tZWRyaXZlckRpciIsImNhcGFiaWxpdGllcyIsImRlc2lyZWRQcm90b2NvbCIsIlBST1RPQ09MUyIsIk1KU09OV1AiLCJnZXREcml2ZXJzTWFwcGluZyIsIm1hcHBpbmciLCJfIiwiY2xvbmVEZWVwIiwiQ0hST01FRFJJVkVSX0NIUk9NRV9NQVBQSU5HIiwiZGVidWciLCJmcyIsImV4aXN0cyIsIndhcm4iLCJpbmZvIiwiSlNPTiIsInBhcnNlIiwicmVhZEZpbGUiLCJlcnIiLCJtZXNzYWdlIiwiY2RWZXJzaW9uIiwiY2hyb21lVmVyc2lvbiIsInRvUGFpcnMiLCJjb2VyY2VkVmVyc2lvbiIsInNlbXZlciIsImNvZXJjZSIsInZlcnNpb24iLCJnZXRDaHJvbWVkcml2ZXJzIiwiZXhlY3V0YWJsZXMiLCJnbG9iIiwiY3dkIiwic3RyaWN0Iiwibm9kaXIiLCJhYnNvbHV0ZSIsInV0aWwiLCJwbHVyYWxpemUiLCJsZW5ndGgiLCJjZHMiLCJsb2dFcnJvciIsInN0ZG91dCIsInN0ZGVyciIsImVyck1zZyIsInBhdGgiLCJiYXNlbmFtZSIsInRpbWVvdXQiLCJpbmNsdWRlcyIsIm1hdGNoIiwiZXhlYyIsIm1pbkNocm9tZVZlcnNpb24iLCJtYWpvciIsIm1pbm9yIiwiZmlsdGVyIiwiY2QiLCJzb3J0IiwiYSIsImIiLCJpc0VtcHR5IiwiZ2V0Q2hyb21lVmVyc2lvbiIsIkJyb3dzZXIiLCJ2ZXJzaW9uTWF0Y2giLCJhcGlMZXZlbCIsImdldEFwaUxldmVsIiwidXBkYXRlRHJpdmVyc01hcHBpbmciLCJuZXdNYXBwaW5nIiwic2hvdWxkVXBkYXRlU3RhdGljTWFwcGluZyIsIndyaXRlRmlsZSIsInN0cmluZ2lmeSIsImUiLCJPYmplY3QiLCJhc3NpZ24iLCJnZXRDb21wYXRpYmxlQ2hyb21lZHJpdmVyIiwidmFsdWVzIiwiZGlkU3RvcmFnZVN5bmMiLCJzeW5jQ2hyb21lZHJpdmVycyIsInJldHJpZXZlZE1hcHBpbmciLCJyZXRyaWV2ZU1hcHBpbmciLCJkcml2ZXJLZXlzIiwic3luY0RyaXZlcnMiLCJtaW5Ccm93c2VyVmVyc2lvbiIsInN5bmNocm9uaXplZERyaXZlcnNNYXBwaW5nIiwicmVkdWNlIiwiYWNjIiwieCIsIm1pc3NpbmdWZXJzaW9ucyIsImNvZXJjZWRWZXIiLCJzaXplIiwiZXJyb3JBbmRUaHJvdyIsIm1hdGNoaW5nRHJpdmVycyIsIm1pbkNocm9tZVZlcnNpb25TIiwiZ3RlIiwiQ0RfQ0ROIiwic3RhY2siLCJhdXRvZG93bmxvYWRTdWdnZXN0aW9uIiwiRXJyb3IiLCJiaW5QYXRoIiwiaW5pdENocm9tZWRyaXZlclBhdGgiLCJzeW5jUHJvdG9jb2wiLCJXM0MiLCJjaHJvbWVPcHRpb25zIiwidzNjIiwic3RhcnQiLCJjYXBzIiwiZW1pdFN0YXJ0aW5nU3RhdGUiLCJsb2dnaW5nUHJlZnMiLCJicm93c2VyIiwiY2hhbmdlU3RhdGUiLCJTVEFURV9TVEFSVElORyIsImFkYlBvcnQiLCJwdXNoIiwiaXNBcnJheSIsInN0YXJ0RGV0ZWN0b3IiLCJzdGFydHNXaXRoIiwicHJvY2Vzc0lzQWxpdmUiLCJ3ZWJ2aWV3VmVyc2lvbiIsImtpbGxBbGwiLCJTdWJQcm9jZXNzIiwib24iLCJvdXQiLCJsaW5lIiwidHJpbSIsInNwbGl0IiwiZXJyb3IiLCJjb2RlIiwic2lnbmFsIiwiU1RBVEVfU1RPUFBJTkciLCJTVEFURV9SRVNUQVJUSU5HIiwibXNnIiwiam9pbiIsIndhaXRGb3JPbmxpbmUiLCJzdGFydFNlc3Npb24iLCJlbWl0IiwiRVZFTlRfRVJST1IiLCJzdG9wIiwidmVyc2lvbnNTdXBwb3J0ZWRCeURyaXZlciIsInNlc3Npb25JZCIsIlNUQVRFX09OTElORSIsInJlc3RhcnQiLCJjaHJvbWVkcml2ZXJTdG9wcGVkIiwiZ2V0U3RhdHVzIiwiY29tbWFuZCIsInNlc3Npb25DYXBzIiwiYWx3YXlzTWF0Y2giLCJkZXNpcmVkQ2FwYWJpbGl0aWVzIiwicHJlZml4IiwiZW1pdFN0YXRlcyIsInJ1blNhZmVTdGVwIiwiZiIsIkVWRU5UX0NIQU5HRUQiLCJzZW5kQ29tbWFuZCIsInVybCIsIm1ldGhvZCIsImJvZHkiLCJwcm94eVJlcSIsInJlcSIsInJlcyIsInByb3h5UmVxUmVzIiwiY21kIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwiQiIsInByb21pc2lmeSIsImNwIiwidWRpZEluZGV4IiwiZGVmYXVsdEFyZ3MiLCJmaW5kSW5kZXgiLCJpdGVtIiwidWRpZCIsImNvbm4iLCJnZXRGb3J3YXJkTGlzdCIsInBhcmFtcyIsInJlbW92ZVBvcnRGb3J3YXJkIiwicmVwbGFjZSIsImhhc1dvcmtpbmdXZWJ2aWV3Il0sInNvdXJjZVJvb3QiOiIuLi8uLiIsInNvdXJjZXMiOlsibGliL2Nocm9tZWRyaXZlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0cmFuc3BpbGU6bWFpblxuXG5pbXBvcnQgZXZlbnRzIGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgeyBKV1Byb3h5LCBQUk9UT0NPTFMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCBjcCBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IHN5c3RlbSwgZnMsIGxvZ2dlciwgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyByZXRyeUludGVydmFsLCBhc3luY21hcCB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IFN1YlByb2Nlc3MsIGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHtcbiAgZ2V0Q2hyb21lVmVyc2lvbiwgZ2V0Q2hyb21lZHJpdmVyRGlyLCBDSFJPTUVEUklWRVJfQ0hST01FX01BUFBJTkcsXG4gIGdldENocm9tZWRyaXZlckJpbmFyeVBhdGgsIENEX0NETiwgZ2VuZXJhdGVMb2dQcmVmaXhcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgY29tcGFyZVZlcnNpb25zIGZyb20gJ2NvbXBhcmUtdmVyc2lvbnMnO1xuaW1wb3J0IENocm9tZWRyaXZlclN0b3JhZ2VDbGllbnQgZnJvbSAnLi9zdG9yYWdlLWNsaWVudCc7XG5pbXBvcnQgeyB0b1czY0NhcE5hbWVzLCBnZXRDYXBWYWx1ZSB9IGZyb20gJy4vcHJvdG9jb2wtaGVscGVycyc7XG5cbmNvbnN0IE5FV19DRF9WRVJTSU9OX0ZPUk1BVF9NQUpPUl9WRVJTSU9OID0gNzM7XG5jb25zdCBERUZBVUxUX0hPU1QgPSAnMTI3LjAuMC4xJztcbmNvbnN0IE1JTl9DRF9WRVJTSU9OX1dJVEhfVzNDX1NVUFBPUlQgPSA3NTtcbmNvbnN0IERFRkFVTFRfUE9SVCA9IDk1MTU7XG5jb25zdCBDSFJPTUVfQlVORExFX0lEID0gJ2NvbS5hbmRyb2lkLmNocm9tZSc7XG5jb25zdCBXRUJWSUVXX1NIRUxMX0JVTkRMRV9JRCA9ICdvcmcuY2hyb21pdW0ud2Vidmlld19zaGVsbCc7XG5jb25zdCBXRUJWSUVXX0JVTkRMRV9JRFMgPSBbXG4gICdjb20uZ29vZ2xlLmFuZHJvaWQud2VidmlldycsXG4gICdjb20uYW5kcm9pZC53ZWJ2aWV3Jyxcbl07XG5jb25zdCBDSFJPTUVEUklWRVJfVFVUT1JJQUwgPSAnaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vYmxvYi9tYXN0ZXIvZG9jcy9lbi93cml0aW5nLXJ1bm5pbmctYXBwaXVtL3dlYi9jaHJvbWVkcml2ZXIubWQnO1xuY29uc3QgVkVSU0lPTl9QQVRURVJOID0gLyhbXFxkLl0rKS87XG5cbmNvbnN0IENEX1ZFUlNJT05fVElNRU9VVCA9IDUwMDA7XG5cbmNsYXNzIENocm9tZWRyaXZlciBleHRlbmRzIGV2ZW50cy5FdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAoYXJncyA9IHt9KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIGhvc3QgPSBERUZBVUxUX0hPU1QsXG4gICAgICBwb3J0ID0gREVGQVVMVF9QT1JULFxuICAgICAgdXNlU3lzdGVtRXhlY3V0YWJsZSA9IGZhbHNlLFxuICAgICAgZXhlY3V0YWJsZSxcbiAgICAgIGV4ZWN1dGFibGVEaXIgPSBnZXRDaHJvbWVkcml2ZXJEaXIoKSxcbiAgICAgIGJ1bmRsZUlkLFxuICAgICAgbWFwcGluZ1BhdGgsXG4gICAgICBjbWRBcmdzLFxuICAgICAgYWRiLFxuICAgICAgdmVyYm9zZSxcbiAgICAgIGxvZ1BhdGgsXG4gICAgICBkaXNhYmxlQnVpbGRDaGVjayxcbiAgICAgIGRldGFpbHMsXG4gICAgICBpc0F1dG9kb3dubG9hZEVuYWJsZWQgPSBmYWxzZSxcbiAgICB9ID0gYXJncztcbiAgICB0aGlzLl9sb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKGdlbmVyYXRlTG9nUHJlZml4KHRoaXMpKTtcblxuICAgIHRoaXMucHJveHlIb3N0ID0gaG9zdDtcbiAgICB0aGlzLnByb3h5UG9ydCA9IHBvcnQ7XG4gICAgdGhpcy5hZGIgPSBhZGI7XG4gICAgdGhpcy5jbWRBcmdzID0gY21kQXJncztcbiAgICB0aGlzLnByb2MgPSBudWxsO1xuICAgIHRoaXMudXNlU3lzdGVtRXhlY3V0YWJsZSA9IHVzZVN5c3RlbUV4ZWN1dGFibGU7XG4gICAgdGhpcy5jaHJvbWVkcml2ZXIgPSBleGVjdXRhYmxlO1xuICAgIHRoaXMuZXhlY3V0YWJsZURpciA9IGV4ZWN1dGFibGVEaXI7XG4gICAgdGhpcy5tYXBwaW5nUGF0aCA9IG1hcHBpbmdQYXRoO1xuICAgIHRoaXMuYnVuZGxlSWQgPSBidW5kbGVJZDtcbiAgICB0aGlzLmV4ZWN1dGFibGVWZXJpZmllZCA9IGZhbHNlO1xuICAgIHRoaXMuc3RhdGUgPSBDaHJvbWVkcml2ZXIuU1RBVEVfU1RPUFBFRDtcbiAgICB0aGlzLmp3cHJveHkgPSBuZXcgSldQcm94eSh7XG4gICAgICBzZXJ2ZXI6IHRoaXMucHJveHlIb3N0LFxuICAgICAgcG9ydDogdGhpcy5wcm94eVBvcnQsXG4gICAgICBsb2c6IHRoaXMuX2xvZyxcbiAgICB9KTtcbiAgICB0aGlzLnZlcmJvc2UgPSB2ZXJib3NlO1xuICAgIHRoaXMubG9nUGF0aCA9IGxvZ1BhdGg7XG4gICAgdGhpcy5kaXNhYmxlQnVpbGRDaGVjayA9ICEhZGlzYWJsZUJ1aWxkQ2hlY2s7XG4gICAgdGhpcy5zdG9yYWdlQ2xpZW50ID0gaXNBdXRvZG93bmxvYWRFbmFibGVkXG4gICAgICA/IG5ldyBDaHJvbWVkcml2ZXJTdG9yYWdlQ2xpZW50KHsgY2hyb21lZHJpdmVyRGlyOiB0aGlzLmV4ZWN1dGFibGVEaXIgfSlcbiAgICAgIDogbnVsbDtcbiAgICB0aGlzLmRldGFpbHMgPSBkZXRhaWxzO1xuICAgIHRoaXMuY2FwYWJpbGl0aWVzID0ge307XG4gICAgdGhpcy5kZXNpcmVkUHJvdG9jb2wgPSBQUk9UT0NPTFMuTUpTT05XUDtcbiAgfVxuXG4gIGdldCBsb2cgKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2c7XG4gIH1cblxuICBhc3luYyBnZXREcml2ZXJzTWFwcGluZyAoKSB7XG4gICAgbGV0IG1hcHBpbmcgPSBfLmNsb25lRGVlcChDSFJPTUVEUklWRVJfQ0hST01FX01BUFBJTkcpO1xuICAgIGlmICh0aGlzLm1hcHBpbmdQYXRoKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgQXR0ZW1wdGluZyB0byB1c2UgQ2hyb21lZHJpdmVyLT5DaHJvbWUgbWFwcGluZyBmcm9tICcke3RoaXMubWFwcGluZ1BhdGh9J2ApO1xuICAgICAgaWYgKCFhd2FpdCBmcy5leGlzdHModGhpcy5tYXBwaW5nUGF0aCkpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgTm8gZmlsZSBmb3VuZCBhdCAnJHt0aGlzLm1hcHBpbmdQYXRofSdgKTtcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnRGVmYXVsdGluZyB0byB0aGUgc3RhdGljIENocm9tZWRyaXZlci0+Q2hyb21lIG1hcHBpbmcnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbWFwcGluZyA9IEpTT04ucGFyc2UoYXdhaXQgZnMucmVhZEZpbGUodGhpcy5tYXBwaW5nUGF0aCwgJ3V0ZjgnKSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oYEVycm9yIHBhcnNpbmcgbWFwcGluZyBmcm9tICcke3RoaXMubWFwcGluZ1BhdGh9JzogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKCdEZWZhdWx0aW5nIHRvIHRoZSBzdGF0aWMgQ2hyb21lZHJpdmVyLT5DaHJvbWUgbWFwcGluZycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdVc2luZyB0aGUgc3RhdGljIENocm9tZWRyaXZlci0+Q2hyb21lIG1hcHBpbmcnKTtcbiAgICB9XG5cbiAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgdmFsdWVzIGZvciBtaW5pbXVtIGNocm9tZSB2ZXJzaW9uIGFyZSBzZW12ZXIgY29tcGxpYW50XG4gICAgZm9yIChjb25zdCBbY2RWZXJzaW9uLCBjaHJvbWVWZXJzaW9uXSBvZiBfLnRvUGFpcnMobWFwcGluZykpIHtcbiAgICAgIGNvbnN0IGNvZXJjZWRWZXJzaW9uID0gc2VtdmVyLmNvZXJjZShjaHJvbWVWZXJzaW9uKTtcbiAgICAgIGlmIChjb2VyY2VkVmVyc2lvbikge1xuICAgICAgICBtYXBwaW5nW2NkVmVyc2lvbl0gPSBjb2VyY2VkVmVyc2lvbi52ZXJzaW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgJyR7Y2hyb21lVmVyc2lvbn0nIGlzIG5vdCBhIHZhbGlkIHZlcnNpb24gbnVtYmVyLiBTa2lwcGluZyBpdGApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWFwcGluZztcbiAgfVxuXG4gIGFzeW5jIGdldENocm9tZWRyaXZlcnMgKG1hcHBpbmcpIHtcbiAgICAvLyBnbyB0aHJvdWdoIHRoZSB2ZXJzaW9ucyBhdmFpbGFibGVcbiAgICBjb25zdCBleGVjdXRhYmxlcyA9IGF3YWl0IGZzLmdsb2IoJyonLCB7XG4gICAgICBjd2Q6IHRoaXMuZXhlY3V0YWJsZURpcixcbiAgICAgIHN0cmljdDogZmFsc2UsXG4gICAgICBub2RpcjogdHJ1ZSxcbiAgICAgIGFic29sdXRlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMubG9nLmRlYnVnKGBGb3VuZCAke3V0aWwucGx1cmFsaXplKCdleGVjdXRhYmxlJywgZXhlY3V0YWJsZXMubGVuZ3RoLCB0cnVlKX0gYCArXG4gICAgICBgaW4gJyR7dGhpcy5leGVjdXRhYmxlRGlyfSdgKTtcbiAgICBjb25zdCBjZHMgPSAoYXdhaXQgYXN5bmNtYXAoZXhlY3V0YWJsZXMsIGFzeW5jIChleGVjdXRhYmxlKSA9PiB7XG4gICAgICBjb25zdCBsb2dFcnJvciA9ICh7bWVzc2FnZSwgc3Rkb3V0ID0gbnVsbCwgc3RkZXJyID0gbnVsbH0pID0+IHtcbiAgICAgICAgbGV0IGVyck1zZyA9IGBDYW5ub3QgcmV0cmlldmUgdmVyc2lvbiBudW1iZXIgZnJvbSAnJHtwYXRoLmJhc2VuYW1lKGV4ZWN1dGFibGUpfScgQ2hyb21lZHJpdmVyIGJpbmFyeS4gYCArXG4gICAgICAgICAgYE1ha2Ugc3VyZSBpdCByZXR1cm5zIGEgdmFsaWQgdmVyc2lvbiBzdHJpbmcgaW4gcmVzcG9uc2UgdG8gJy0tdmVyc2lvbicgY29tbWFuZCBsaW5lIGFyZ3VtZW50LiAke21lc3NhZ2V9YDtcbiAgICAgICAgaWYgKHN0ZG91dCkge1xuICAgICAgICAgIGVyck1zZyArPSBgXFxuU3Rkb3V0OiAke3N0ZG91dH1gO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGRlcnIpIHtcbiAgICAgICAgICBlcnJNc2cgKz0gYFxcblN0ZGVycjogJHtzdGRlcnJ9YDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvZy53YXJuKGVyck1zZyk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfTtcblxuICAgICAgbGV0IHN0ZG91dDtcbiAgICAgIGxldCBzdGRlcnI7XG4gICAgICB0cnkge1xuICAgICAgICAoe3N0ZG91dCwgc3RkZXJyfSA9IGF3YWl0IGV4ZWMoZXhlY3V0YWJsZSwgWyctLXZlcnNpb24nXSwge1xuICAgICAgICAgIHRpbWVvdXQ6IENEX1ZFUlNJT05fVElNRU9VVCxcbiAgICAgICAgfSkpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmICghKGVyci5tZXNzYWdlIHx8ICcnKS5pbmNsdWRlcygndGltZWQgb3V0JykgJiYgIShlcnIuc3Rkb3V0IHx8ICcnKS5pbmNsdWRlcygnU3RhcnRpbmcgQ2hyb21lRHJpdmVyJykpIHtcbiAgICAgICAgICByZXR1cm4gbG9nRXJyb3IoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIHRoaXMgaGFzIHRpbWVkIG91dCwgaXQgaGFzIGFjdHVhbGx5IHN0YXJ0ZWQgQ2hyb21lZHJpdmVyLFxuICAgICAgICAvLyBpbiB3aGljaCBjYXNlIHRoZXJlIHdpbGwgYWxzbyBiZSB0aGUgdmVyc2lvbiBzdHJpbmcgaW4gdGhlIG91dHB1dFxuICAgICAgICBzdGRvdXQgPSBlcnIuc3Rkb3V0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtYXRjaCA9IC9DaHJvbWVEcml2ZXJcXHMrXFwoP3Y/KFtcXGQuXSspXFwpPy9pLmV4ZWMoc3Rkb3V0KTsgLy8gaHR0cHM6Ly9yZWdleDEwMS5jb20vci96cGo1d0EvMVxuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICByZXR1cm4gbG9nRXJyb3Ioe21lc3NhZ2U6ICdDYW5ub3QgcGFyc2UgdGhlIHZlcnNpb24gc3RyaW5nJywgc3Rkb3V0LCBzdGRlcnJ9KTtcbiAgICAgIH1cbiAgICAgIGxldCB2ZXJzaW9uID0gbWF0Y2hbMV07XG4gICAgICBsZXQgbWluQ2hyb21lVmVyc2lvbiA9IG1hcHBpbmdbdmVyc2lvbl07XG4gICAgICBjb25zdCBjb2VyY2VkVmVyc2lvbiA9IHNlbXZlci5jb2VyY2UodmVyc2lvbik7XG4gICAgICBpZiAoY29lcmNlZFZlcnNpb24pIHtcbiAgICAgICAgLy8gYmVmb3JlIDIwMTktMDMtMDYgdmVyc2lvbnMgd2VyZSBvZiB0aGUgZm9ybSBtYWpvci5taW5vclxuICAgICAgICBpZiAoY29lcmNlZFZlcnNpb24ubWFqb3IgPCBORVdfQ0RfVkVSU0lPTl9GT1JNQVRfTUFKT1JfVkVSU0lPTikge1xuICAgICAgICAgIHZlcnNpb24gPSBgJHtjb2VyY2VkVmVyc2lvbi5tYWpvcn0uJHtjb2VyY2VkVmVyc2lvbi5taW5vcn1gO1xuICAgICAgICAgIG1pbkNocm9tZVZlcnNpb24gPSBtYXBwaW5nW3ZlcnNpb25dO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbWluQ2hyb21lVmVyc2lvbiAmJiBjb2VyY2VkVmVyc2lvbi5tYWpvciA+PSBORVdfQ0RfVkVSU0lPTl9GT1JNQVRfTUFKT1JfVkVSU0lPTikge1xuICAgICAgICAgIC8vIEFzc3VtZSB0aGUgbWFqb3IgQ2hyb21lIHZlcnNpb24gaXMgdGhlIHNhbWUgYXMgdGhlIGNvcnJlc3BvbmRpbmcgZHJpdmVyIG1ham9yIHZlcnNpb25cbiAgICAgICAgICBtaW5DaHJvbWVWZXJzaW9uID0gYCR7Y29lcmNlZFZlcnNpb24ubWFqb3J9YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZXhlY3V0YWJsZSxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgbWluQ2hyb21lVmVyc2lvbixcbiAgICAgIH07XG4gICAgfSkpXG4gICAgICAuZmlsdGVyKChjZCkgPT4gISFjZClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBjb21wYXJlVmVyc2lvbnMoYi52ZXJzaW9uLCBhLnZlcnNpb24pKTtcbiAgICBpZiAoXy5pc0VtcHR5KGNkcykpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oYE5vIENocm9tZWRyaXZlcnMgd2VyZSBmb3VuZCBpbiAnJHt0aGlzLmV4ZWN1dGFibGVEaXJ9J2ApO1xuICAgICAgcmV0dXJuIGNkcztcbiAgICB9XG4gICAgdGhpcy5sb2cuZGVidWcoYFRoZSBmb2xsb3dpbmcgQ2hyb21lZHJpdmVyIGV4ZWN1dGFibGVzIHdlcmUgZm91bmQ6YCk7XG4gICAgZm9yIChjb25zdCBjZCBvZiBjZHMpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGAgICAgJyR7Y2QuZXhlY3V0YWJsZX0nICh2ZXJzaW9uICcke2NkLnZlcnNpb259JywgbWluaW11bSBDaHJvbWUgdmVyc2lvbiAnJHtjZC5taW5DaHJvbWVWZXJzaW9uID8gY2QubWluQ2hyb21lVmVyc2lvbiA6ICdVbmtub3duJ30nKWApO1xuICAgIH1cbiAgICByZXR1cm4gY2RzO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q2hyb21lVmVyc2lvbiAoKSB7XG4gICAgLy8gVHJ5IHRvIHJldHJpZXZlIHRoZSB2ZXJzaW9uIGZyb20gYGRldGFpbHNgIHByb3BlcnR5IGlmIGl0IGlzIHNldFxuICAgIC8vIFRoZSBgaW5mb2AgaXRlbSBtdXN0IGNvbnRhaW4gdGhlIG91dHB1dCBvZiAvanNvbi92ZXJzaW9uIENEUCBjb21tYW5kXG4gICAgLy8gd2hlcmUgYEJyb3dzZXJgIGZpZWxkIGxvb2tzIGxpa2UgYENocm9tZS83Mi4wLjM2MDEuMGBgXG4gICAgaWYgKHRoaXMuZGV0YWlscz8uaW5mbykge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYEJyb3dzZXIgdmVyc2lvbiBpbiB0aGUgc3VwcGxpZWQgZGV0YWlsczogJHt0aGlzLmRldGFpbHM/LmluZm8/LkJyb3dzZXJ9YCk7XG4gICAgfVxuICAgIGNvbnN0IHZlcnNpb25NYXRjaCA9IFZFUlNJT05fUEFUVEVSTi5leGVjKHRoaXMuZGV0YWlscz8uaW5mbz8uQnJvd3Nlcik7XG4gICAgaWYgKHZlcnNpb25NYXRjaCkge1xuICAgICAgY29uc3QgY29lcmNlZFZlcnNpb24gPSBzZW12ZXIuY29lcmNlKHZlcnNpb25NYXRjaFsxXSk7XG4gICAgICBpZiAoY29lcmNlZFZlcnNpb24pIHtcbiAgICAgICAgcmV0dXJuIGNvZXJjZWRWZXJzaW9uO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBjaHJvbWVWZXJzaW9uO1xuXG4gICAgLy8gaW4gY2FzZSBvZiBXZWJWaWV3IEJyb3dzZXIgVGVzdGVyLCBzaW1wbHkgdHJ5IHRvIGZpbmQgdGhlIHVuZGVybHlpbmcgd2Vidmlld1xuICAgIGlmICh0aGlzLmJ1bmRsZUlkID09PSBXRUJWSUVXX1NIRUxMX0JVTkRMRV9JRCkge1xuICAgICAgZm9yIChjb25zdCBidW5kbGVJZCBvZiBXRUJWSUVXX0JVTkRMRV9JRFMpIHtcbiAgICAgICAgY2hyb21lVmVyc2lvbiA9IGF3YWl0IGdldENocm9tZVZlcnNpb24odGhpcy5hZGIsIGJ1bmRsZUlkKTtcbiAgICAgICAgaWYgKGNocm9tZVZlcnNpb24pIHtcbiAgICAgICAgICB0aGlzLmJ1bmRsZUlkID0gYnVuZGxlSWQ7XG4gICAgICAgICAgcmV0dXJuIHNlbXZlci5jb2VyY2UoY2hyb21lVmVyc2lvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIG9uIEFuZHJvaWQgNy05IHdlYnZpZXdzIGFyZSBiYWNrZWQgYnkgdGhlIG1haW4gQ2hyb21lLCBub3QgdGhlIHN5c3RlbSB3ZWJ2aWV3XG4gICAgaWYgKHRoaXMuYWRiKSB7XG4gICAgICBjb25zdCBhcGlMZXZlbCA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gICAgICBpZiAoYXBpTGV2ZWwgPj0gMjQgJiYgYXBpTGV2ZWwgPD0gMjggJiZcbiAgICAgICAgICBbV0VCVklFV19TSEVMTF9CVU5ETEVfSUQsIC4uLldFQlZJRVdfQlVORExFX0lEU10uaW5jbHVkZXModGhpcy5idW5kbGVJZCkpIHtcbiAgICAgICAgdGhpcy5idW5kbGVJZCA9IENIUk9NRV9CVU5ETEVfSUQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdHJ5IG91dCB3ZWJ2aWV3cyB3aGVuIG5vIGJ1bmRsZSBpZCBpcyBzZW50IGluXG4gICAgaWYgKCF0aGlzLmJ1bmRsZUlkKSB7XG4gICAgICAvLyBkZWZhdWx0IHRvIHRoZSBnZW5lcmljIENocm9tZSBidW5kbGVcbiAgICAgIHRoaXMuYnVuZGxlSWQgPSBDSFJPTUVfQlVORExFX0lEO1xuXG4gICAgICAvLyB3ZSBoYXZlIGEgd2VidmlldyBvZiBzb21lIHNvcnQsIHNvIHRyeSB0byBmaW5kIHRoZSBidW5kbGUgdmVyc2lvblxuICAgICAgZm9yIChjb25zdCBidW5kbGVJZCBvZiBXRUJWSUVXX0JVTkRMRV9JRFMpIHtcbiAgICAgICAgY2hyb21lVmVyc2lvbiA9IGF3YWl0IGdldENocm9tZVZlcnNpb24odGhpcy5hZGIsIGJ1bmRsZUlkKTtcbiAgICAgICAgaWYgKGNocm9tZVZlcnNpb24pIHtcbiAgICAgICAgICB0aGlzLmJ1bmRsZUlkID0gYnVuZGxlSWQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpZiB3ZSBkbyBub3QgaGF2ZSBhIGNocm9tZSB2ZXJzaW9uLCBpdCBtdXN0IG5vdCBiZSBhIHdlYnZpZXdcbiAgICBpZiAoIWNocm9tZVZlcnNpb24pIHtcbiAgICAgIGNocm9tZVZlcnNpb24gPSBhd2FpdCBnZXRDaHJvbWVWZXJzaW9uKHRoaXMuYWRiLCB0aGlzLmJ1bmRsZUlkKTtcbiAgICB9XG5cbiAgICAvLyBtYWtlIHN1cmUgaXQgaXMgc2VtdmVyLCBzbyBsYXRlciBjaGVja3Mgd29uJ3QgZmFpbFxuICAgIHJldHVybiBjaHJvbWVWZXJzaW9uID8gc2VtdmVyLmNvZXJjZShjaHJvbWVWZXJzaW9uKSA6IG51bGw7XG4gIH1cblxuICBhc3luYyB1cGRhdGVEcml2ZXJzTWFwcGluZyAobmV3TWFwcGluZykge1xuICAgIGxldCBzaG91bGRVcGRhdGVTdGF0aWNNYXBwaW5nID0gdHJ1ZTtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKHRoaXMubWFwcGluZ1BhdGgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmcy53cml0ZUZpbGUodGhpcy5tYXBwaW5nUGF0aCwgSlNPTi5zdHJpbmdpZnkobmV3TWFwcGluZywgbnVsbCwgMiksICd1dGY4Jyk7XG4gICAgICAgIHNob3VsZFVwZGF0ZVN0YXRpY01hcHBpbmcgPSBmYWxzZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgQ2Fubm90IHN0b3JlIHRoZSB1cGRhdGVkIGNocm9tZWRyaXZlcnMgbWFwcGluZyBpbnRvICcke3RoaXMubWFwcGluZ1BhdGh9Jy4gYCArXG4gICAgICAgICAgYFRoaXMgbWF5IHJlZHVjZSB0aGUgcGVyZm9ybWFuY2Ugb2YgZnVydGhlciBleGVjdXRpb25zLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzaG91bGRVcGRhdGVTdGF0aWNNYXBwaW5nKSB7XG4gICAgICBPYmplY3QuYXNzaWduKENIUk9NRURSSVZFUl9DSFJPTUVfTUFQUElORywgbmV3TWFwcGluZyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0Q29tcGF0aWJsZUNocm9tZWRyaXZlciAoKSB7XG4gICAgaWYgKCF0aGlzLmFkYikge1xuICAgICAgcmV0dXJuIGF3YWl0IGdldENocm9tZWRyaXZlckJpbmFyeVBhdGgoKTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXBwaW5nID0gYXdhaXQgdGhpcy5nZXREcml2ZXJzTWFwcGluZygpO1xuICAgIGlmICghXy5pc0VtcHR5KG1hcHBpbmcpKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgVGhlIG1vc3QgcmVjZW50IGtub3duIENocm9tZSB2ZXJzaW9uOiAke18udmFsdWVzKG1hcHBpbmcpWzBdfWApO1xuICAgIH1cblxuICAgIGxldCBkaWRTdG9yYWdlU3luYyA9IGZhbHNlO1xuICAgIGNvbnN0IHN5bmNDaHJvbWVkcml2ZXJzID0gYXN5bmMgKGNocm9tZVZlcnNpb24pID0+IHtcbiAgICAgIGRpZFN0b3JhZ2VTeW5jID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHJldHJpZXZlZE1hcHBpbmcgPSBhd2FpdCB0aGlzLnN0b3JhZ2VDbGllbnQucmV0cmlldmVNYXBwaW5nKCk7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZygnR290IGNocm9tZWRyaXZlcnMgbWFwcGluZyBmcm9tIHRoZSBzdG9yYWdlOiAnICtcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocmV0cmlldmVkTWFwcGluZywgbnVsbCwgMikpO1xuICAgICAgY29uc3QgZHJpdmVyS2V5cyA9IGF3YWl0IHRoaXMuc3RvcmFnZUNsaWVudC5zeW5jRHJpdmVycyh7XG4gICAgICAgIG1pbkJyb3dzZXJWZXJzaW9uOiBjaHJvbWVWZXJzaW9uLm1ham9yLFxuICAgICAgfSk7XG4gICAgICBpZiAoXy5pc0VtcHR5KGRyaXZlcktleXMpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN5bmNocm9uaXplZERyaXZlcnNNYXBwaW5nID0gZHJpdmVyS2V5cy5yZWR1Y2UoKGFjYywgeCkgPT4ge1xuICAgICAgICBjb25zdCB7dmVyc2lvbiwgbWluQnJvd3NlclZlcnNpb259ID0gcmV0cmlldmVkTWFwcGluZ1t4XTtcbiAgICAgICAgYWNjW3ZlcnNpb25dID0gbWluQnJvd3NlclZlcnNpb247XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSk7XG4gICAgICBPYmplY3QuYXNzaWduKG1hcHBpbmcsIHN5bmNocm9uaXplZERyaXZlcnNNYXBwaW5nKTtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlRHJpdmVyc01hcHBpbmcobWFwcGluZyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgZG8ge1xuICAgICAgY29uc3QgY2RzID0gYXdhaXQgdGhpcy5nZXRDaHJvbWVkcml2ZXJzKG1hcHBpbmcpO1xuXG4gICAgICBjb25zdCBtaXNzaW5nVmVyc2lvbnMgPSB7fTtcbiAgICAgIGZvciAoY29uc3Qge3ZlcnNpb24sIG1pbkNocm9tZVZlcnNpb259IG9mIGNkcykge1xuICAgICAgICBpZiAoIW1pbkNocm9tZVZlcnNpb24gfHwgbWFwcGluZ1t2ZXJzaW9uXSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvZXJjZWRWZXIgPSBzZW12ZXIuY29lcmNlKHZlcnNpb24pO1xuICAgICAgICBpZiAoIWNvZXJjZWRWZXIgfHwgY29lcmNlZFZlci5tYWpvciA8IE5FV19DRF9WRVJTSU9OX0ZPUk1BVF9NQUpPUl9WRVJTSU9OKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBtaXNzaW5nVmVyc2lvbnNbdmVyc2lvbl0gPSBtaW5DaHJvbWVWZXJzaW9uO1xuICAgICAgfVxuICAgICAgaWYgKCFfLmlzRW1wdHkobWlzc2luZ1ZlcnNpb25zKSkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBGb3VuZCAke3V0aWwucGx1cmFsaXplKCdDaHJvbWVkcml2ZXInLCBfLnNpemUobWlzc2luZ1ZlcnNpb25zKSwgdHJ1ZSl9LCBgICtcbiAgICAgICAgICBgd2hpY2ggJHtfLnNpemUobWlzc2luZ1ZlcnNpb25zKSA9PT0gMSA/ICdpcycgOiAnYXJlJ30gbWlzc2luZyBpbiB0aGUgbGlzdCBvZiBrbm93biB2ZXJzaW9uczogYCArXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkobWlzc2luZ1ZlcnNpb25zKSk7XG4gICAgICAgIGF3YWl0IHRoaXMudXBkYXRlRHJpdmVyc01hcHBpbmcoT2JqZWN0LmFzc2lnbihtYXBwaW5nLCBtaXNzaW5nVmVyc2lvbnMpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZGlzYWJsZUJ1aWxkQ2hlY2spIHtcbiAgICAgICAgaWYgKF8uaXNFbXB0eShjZHMpKSB7XG4gICAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgQ2hyb21lZHJpdmVyIGV4ZWN1dGFibGUgYXZhaWxhYmxlIGZvciB1c2UgaWYgYCArXG4gICAgICAgICAgICBgJ2Nocm9tZWRyaXZlckRpc2FibGVCdWlsZENoZWNrJyBjYXBhYmlsaXR5IGlzIHNldCB0byAndHJ1ZSdgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7dmVyc2lvbiwgZXhlY3V0YWJsZX0gPSBjZHNbMF07XG4gICAgICAgIHRoaXMubG9nLndhcm4oYENocm9tZSBidWlsZCBjaGVjayBkaXNhYmxlZC4gVXNpbmcgbW9zdCByZWNlbnQgQ2hyb21lZHJpdmVyIHZlcnNpb24gKCR7dmVyc2lvbn0sIGF0ICcke2V4ZWN1dGFibGV9JylgKTtcbiAgICAgICAgdGhpcy5sb2cud2FybihgSWYgdGhpcyBpcyB3cm9uZywgc2V0ICdjaHJvbWVkcml2ZXJEaXNhYmxlQnVpbGRDaGVjaycgY2FwYWJpbGl0eSB0byAnZmFsc2UnYCk7XG4gICAgICAgIHJldHVybiBleGVjdXRhYmxlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjaHJvbWVWZXJzaW9uID0gYXdhaXQgdGhpcy5nZXRDaHJvbWVWZXJzaW9uKCk7XG4gICAgICBpZiAoIWNocm9tZVZlcnNpb24pIHtcbiAgICAgICAgLy8gdW5hYmxlIHRvIGdldCB0aGUgY2hyb21lIHZlcnNpb25cbiAgICAgICAgaWYgKF8uaXNFbXB0eShjZHMpKSB7XG4gICAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgQ2hyb21lZHJpdmVyIGV4ZWN1dGFibGUgYXZhaWxhYmxlIGZvciB1c2UgaWYgYCArXG4gICAgICAgICAgICBgdGhlIGN1cnJlbnQgQ2hyb21lIHZlcnNpb24gY2Fubm90IGJlIGRldGVybWluZWRgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7dmVyc2lvbiwgZXhlY3V0YWJsZX0gPSBjZHNbMF07XG4gICAgICAgIHRoaXMubG9nLndhcm4oYFVuYWJsZSB0byBkaXNjb3ZlciBDaHJvbWUgdmVyc2lvbi4gVXNpbmcgQ2hyb21lZHJpdmVyICR7dmVyc2lvbn0gYXQgJyR7ZXhlY3V0YWJsZX0nYCk7XG4gICAgICAgIHJldHVybiBleGVjdXRhYmxlO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2cuZGVidWcoYEZvdW5kIENocm9tZSBidW5kbGUgJyR7dGhpcy5idW5kbGVJZH0nIHZlcnNpb24gJyR7Y2hyb21lVmVyc2lvbn0nYCk7XG5cbiAgICAgIGNvbnN0IG1hdGNoaW5nRHJpdmVycyA9IGNkcy5maWx0ZXIoKHttaW5DaHJvbWVWZXJzaW9ufSkgPT4ge1xuICAgICAgICBjb25zdCBtaW5DaHJvbWVWZXJzaW9uUyA9IG1pbkNocm9tZVZlcnNpb24gJiYgc2VtdmVyLmNvZXJjZShtaW5DaHJvbWVWZXJzaW9uKTtcbiAgICAgICAgaWYgKCFtaW5DaHJvbWVWZXJzaW9uUykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjaHJvbWVWZXJzaW9uLm1ham9yID4gTkVXX0NEX1ZFUlNJT05fRk9STUFUX01BSk9SX1ZFUlNJT05cbiAgICAgICAgICA/IG1pbkNocm9tZVZlcnNpb25TLm1ham9yID09PSBjaHJvbWVWZXJzaW9uLm1ham9yXG4gICAgICAgICAgOiBzZW12ZXIuZ3RlKGNocm9tZVZlcnNpb24sIG1pbkNocm9tZVZlcnNpb25TKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKF8uaXNFbXB0eShtYXRjaGluZ0RyaXZlcnMpKSB7XG4gICAgICAgIGlmICh0aGlzLnN0b3JhZ2VDbGllbnQgJiYgIWRpZFN0b3JhZ2VTeW5jKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBzeW5jQ2hyb21lZHJpdmVycyhjaHJvbWVWZXJzaW9uKSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLmxvZy53YXJuKGBDYW5ub3Qgc3luY2hyb25pemUgbG9jYWwgY2hyb21lZHJpdmVycyB3aXRoIHRoZSByZW1vdGUgc3RvcmFnZSBhdCAke0NEX0NETn06IGAgK1xuICAgICAgICAgICAgICBlLm1lc3NhZ2UpO1xuICAgICAgICAgICAgdGhpcy5sb2cuZGVidWcoZS5zdGFjayk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGF1dG9kb3dubG9hZFN1Z2dlc3Rpb24gPVxuICAgICAgICAgICdZb3UgY291bGQgYWxzbyB0cnkgdG8gZW5hYmxlIGF1dG9tYXRlZCBjaHJvbWVkcml2ZXJzIGRvd25sb2FkIHNlcnZlciBmZWF0dXJlJztcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBDaHJvbWVkcml2ZXIgZm91bmQgdGhhdCBjYW4gYXV0b21hdGUgQ2hyb21lICcke2Nocm9tZVZlcnNpb259Jy4gYCArXG4gICAgICAgICAgKCF0aGlzLnN0b3JhZ2VDbGllbnQgPyBgJHthdXRvZG93bmxvYWRTdWdnZXN0aW9ufS4gYCA6ICcnKSArXG4gICAgICAgICAgYFNlZSAke0NIUk9NRURSSVZFUl9UVVRPUklBTH0gZm9yIG1vcmUgZGV0YWlsc2ApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBiaW5QYXRoID0gbWF0Y2hpbmdEcml2ZXJzWzBdLmV4ZWN1dGFibGU7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgRm91bmQgJHt1dGlsLnBsdXJhbGl6ZSgnZXhlY3V0YWJsZScsIG1hdGNoaW5nRHJpdmVycy5sZW5ndGgsIHRydWUpfSBgICtcbiAgICAgICAgYGNhcGFibGUgb2YgYXV0b21hdGluZyBDaHJvbWUgJyR7Y2hyb21lVmVyc2lvbn0nLlxcbkNob29zaW5nIHRoZSBtb3N0IHJlY2VudCwgJyR7YmluUGF0aH0nLmApO1xuICAgICAgdGhpcy5sb2cuZGVidWcoJ0lmIGEgc3BlY2lmaWMgdmVyc2lvbiBpcyByZXF1aXJlZCwgc3BlY2lmeSBpdCB3aXRoIHRoZSBgY2hyb21lZHJpdmVyRXhlY3V0YWJsZWAnICtcbiAgICAgICAgJ2Rlc2lyZWQgY2FwYWJpbGl0eS4nKTtcbiAgICAgIHJldHVybiBiaW5QYXRoO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgICB9IHdoaWxlICh0cnVlKTtcbiAgfVxuXG4gIGFzeW5jIGluaXRDaHJvbWVkcml2ZXJQYXRoICgpIHtcbiAgICBpZiAodGhpcy5leGVjdXRhYmxlVmVyaWZpZWQpIHJldHVybjsgLy9lc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG5cbiAgICAvLyB0aGUgZXhlY3V0YWJsZSBtaWdodCBiZSBzZXQgKGlmIHBhc3NlZCBpbilcbiAgICAvLyBvciB3ZSBtaWdodCB3YW50IHRvIHVzZSB0aGUgYmFzaWMgb25lIGluc3RhbGxlZCB3aXRoIHRoaXMgZHJpdmVyXG4gICAgLy8gb3Igd2Ugd2FudCB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IG9uZVxuICAgIGlmICghdGhpcy5jaHJvbWVkcml2ZXIpIHtcbiAgICAgIHRoaXMuY2hyb21lZHJpdmVyID0gdGhpcy51c2VTeXN0ZW1FeGVjdXRhYmxlXG4gICAgICAgID8gYXdhaXQgZ2V0Q2hyb21lZHJpdmVyQmluYXJ5UGF0aCgpXG4gICAgICAgIDogYXdhaXQgdGhpcy5nZXRDb21wYXRpYmxlQ2hyb21lZHJpdmVyKCk7XG4gICAgfVxuXG4gICAgaWYgKCFhd2FpdCBmcy5leGlzdHModGhpcy5jaHJvbWVkcml2ZXIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRyeWluZyB0byB1c2UgYSBjaHJvbWVkcml2ZXIgYmluYXJ5IGF0IHRoZSBwYXRoIGAgK1xuICAgICAgICAgICAgICAgICAgICAgIGAke3RoaXMuY2hyb21lZHJpdmVyfSwgYnV0IGl0IGRvZXNuJ3QgZXhpc3QhYCk7XG4gICAgfVxuICAgIHRoaXMuZXhlY3V0YWJsZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICB0aGlzLmxvZy5pbmZvKGBTZXQgY2hyb21lZHJpdmVyIGJpbmFyeSBhczogJHt0aGlzLmNocm9tZWRyaXZlcn1gKTtcbiAgfVxuXG4gIHN5bmNQcm90b2NvbCAoY2RWZXJzaW9uID0gbnVsbCkge1xuICAgIGNvbnN0IGNvZXJjZWRWZXJzaW9uID0gc2VtdmVyLmNvZXJjZShjZFZlcnNpb24pO1xuICAgIGlmICghY29lcmNlZFZlcnNpb24gfHwgY29lcmNlZFZlcnNpb24ubWFqb3IgPCBNSU5fQ0RfVkVSU0lPTl9XSVRIX1czQ19TVVBQT1JUKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgQ2hyb21lZHJpdmVyIHYuICR7Y2RWZXJzaW9ufSBkb2VzIG5vdCBmdWxseSBzdXBwb3J0ICR7UFJPVE9DT0xTLlczQ30gcHJvdG9jb2wuIGAgK1xuICAgICAgICBgRGVmYXVsdGluZyB0byAke1BST1RPQ09MUy5NSlNPTldQfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjaHJvbWVPcHRpb25zID0gZ2V0Q2FwVmFsdWUodGhpcy5jYXBhYmlsaXRpZXMsICdjaHJvbWVPcHRpb25zJywge30pO1xuICAgIGlmIChjaHJvbWVPcHRpb25zLnczYyA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oYENocm9tZWRyaXZlciB2LiAke2NkVmVyc2lvbn0gc3VwcG9ydHMgJHtQUk9UT0NPTFMuVzNDfSBwcm90b2NvbCwgYCArXG4gICAgICAgIGBidXQgJHtQUk9UT0NPTFMuTUpTT05XUH0gb25lIGhhcyBiZWVuIGV4cGxpY2l0bHkgcmVxdWVzdGVkYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGVzaXJlZFByb3RvY29sID0gUFJPVE9DT0xTLlczQztcbiAgICAvLyBnaXZlbiBjYXBzIG1pZ2h0IG5vdCBiZSBwcm9wZXJseSBwcmVmaXhlZFxuICAgIC8vIHNvIHdlIHRyeSB0byBmaXggdGhlbSBpbiBvcmRlciB0byBwcm9wZXJseSBpbml0XG4gICAgLy8gdGhlIG5ldyBXM0Mgc2Vzc2lvblxuICAgIHRoaXMuY2FwYWJpbGl0aWVzID0gdG9XM2NDYXBOYW1lcyh0aGlzLmNhcGFiaWxpdGllcyk7XG4gIH1cblxuICBhc3luYyBzdGFydCAoY2FwcywgZW1pdFN0YXJ0aW5nU3RhdGUgPSB0cnVlKSB7XG4gICAgdGhpcy5jYXBhYmlsaXRpZXMgPSBfLmNsb25lRGVlcChjYXBzKTtcblxuICAgIC8vIHNldCB0aGUgbG9nZ2luZyBwcmVmZXJlbmNlcyB0byBBTEwgdGhlIGNvbnNvbGUgbG9nc1xuICAgIHRoaXMuY2FwYWJpbGl0aWVzLmxvZ2dpbmdQcmVmcyA9IF8uY2xvbmVEZWVwKGdldENhcFZhbHVlKGNhcHMsICdsb2dnaW5nUHJlZnMnLCB7fSkpO1xuICAgIGlmIChfLmlzRW1wdHkodGhpcy5jYXBhYmlsaXRpZXMubG9nZ2luZ1ByZWZzLmJyb3dzZXIpKSB7XG4gICAgICB0aGlzLmNhcGFiaWxpdGllcy5sb2dnaW5nUHJlZnMuYnJvd3NlciA9ICdBTEwnO1xuICAgIH1cblxuICAgIGlmIChlbWl0U3RhcnRpbmdTdGF0ZSkge1xuICAgICAgdGhpcy5jaGFuZ2VTdGF0ZShDaHJvbWVkcml2ZXIuU1RBVEVfU1RBUlRJTkcpO1xuICAgIH1cblxuICAgIGNvbnN0IGFyZ3MgPSBbYC0tcG9ydD0ke3RoaXMucHJveHlQb3J0fWBdO1xuICAgIGlmICh0aGlzLmFkYiAmJiB0aGlzLmFkYi5hZGJQb3J0KSB7XG4gICAgICBhcmdzLnB1c2goYC0tYWRiLXBvcnQ9JHt0aGlzLmFkYi5hZGJQb3J0fWApO1xuICAgIH1cbiAgICBpZiAoXy5pc0FycmF5KHRoaXMuY21kQXJncykpIHtcbiAgICAgIGFyZ3MucHVzaCguLi50aGlzLmNtZEFyZ3MpO1xuICAgIH1cbiAgICBpZiAodGhpcy5sb2dQYXRoKSB7XG4gICAgICBhcmdzLnB1c2goYC0tbG9nLXBhdGg9JHt0aGlzLmxvZ1BhdGh9YCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRpc2FibGVCdWlsZENoZWNrKSB7XG4gICAgICBhcmdzLnB1c2goJy0tZGlzYWJsZS1idWlsZC1jaGVjaycpO1xuICAgIH1cbiAgICBhcmdzLnB1c2goJy0tdmVyYm9zZScpO1xuICAgIC8vIHdoYXQgYXJlIHRoZSBwcm9jZXNzIHN0ZG91dC9zdGRlcnIgY29uZGl0aW9ucyB3aGVyZWluIHdlIGtub3cgdGhhdFxuICAgIC8vIHRoZSBwcm9jZXNzIGhhcyBzdGFydGVkIHRvIG91ciBzYXRpc2ZhY3Rpb24/XG4gICAgY29uc3Qgc3RhcnREZXRlY3RvciA9IChzdGRvdXQpID0+IHN0ZG91dC5zdGFydHNXaXRoKCdTdGFydGluZyAnKTtcblxuICAgIGxldCBwcm9jZXNzSXNBbGl2ZSA9IGZhbHNlO1xuICAgIGxldCB3ZWJ2aWV3VmVyc2lvbjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5pbml0Q2hyb21lZHJpdmVyUGF0aCgpO1xuICAgICAgYXdhaXQgdGhpcy5raWxsQWxsKCk7XG5cbiAgICAgIC8vIHNldCB1cCBvdXIgc3VicHJvY2VzcyBvYmplY3RcbiAgICAgIHRoaXMucHJvYyA9IG5ldyBTdWJQcm9jZXNzKHRoaXMuY2hyb21lZHJpdmVyLCBhcmdzKTtcbiAgICAgIHByb2Nlc3NJc0FsaXZlID0gdHJ1ZTtcblxuICAgICAgLy8gaGFuZGxlIGxvZyBvdXRwdXRcbiAgICAgIHRoaXMucHJvYy5vbignb3V0cHV0JywgKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICAgIC8vIGlmIHRoZSBjZCBvdXRwdXQgaXMgbm90IHByaW50ZWQsIGZpbmQgdGhlIGNocm9tZSB2ZXJzaW9uIGFuZCBwcmludFxuICAgICAgICAvLyB3aWxsIGdldCBhIHJlc3BvbnNlIGxpa2VcbiAgICAgICAgLy8gICBEZXZUb29scyByZXNwb25zZToge1xuICAgICAgICAvLyAgICAgIFwiQW5kcm9pZC1QYWNrYWdlXCI6IFwiaW8uYXBwaXVtLnNhbXBsZWFwcFwiLFxuICAgICAgICAvLyAgICAgIFwiQnJvd3NlclwiOiBcIkNocm9tZS81NS4wLjI4ODMuOTFcIixcbiAgICAgICAgLy8gICAgICBcIlByb3RvY29sLVZlcnNpb25cIjogXCIxLjJcIixcbiAgICAgICAgLy8gICAgICBcIlVzZXItQWdlbnRcIjogXCIuLi5cIixcbiAgICAgICAgLy8gICAgICBcIldlYktpdC1WZXJzaW9uXCI6IFwiNTM3LjM2XCJcbiAgICAgICAgLy8gICB9XG4gICAgICAgIGNvbnN0IG91dCA9IHN0ZG91dCArIHN0ZGVycjtcbiAgICAgICAgbGV0IG1hdGNoID0gL1wiQnJvd3NlclwiOiBcIiguKilcIi8uZXhlYyhvdXQpO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICB3ZWJ2aWV3VmVyc2lvbiA9IG1hdGNoWzFdO1xuICAgICAgICAgIHRoaXMubG9nLmRlYnVnKGBXZWJ2aWV3IHZlcnNpb246ICcke3dlYnZpZXdWZXJzaW9ufSdgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFsc28gcHJpbnQgY2hyb21lZHJpdmVyIHZlcnNpb24gdG8gbG9nc1xuICAgICAgICAvLyB3aWxsIG91dHB1dCBzb21ldGhpbmcgbGlrZVxuICAgICAgICAvLyAgU3RhcnRpbmcgQ2hyb21lRHJpdmVyIDIuMzMuNTA2MTA2ICg4YTA2YzM5YzQ1ODJmYmZiYWI2OTY2ZGJiMWMzOGE5MTczYmZiMWEyKSBvbiBwb3J0IDk1MTVcbiAgICAgICAgbWF0Y2ggPSAvU3RhcnRpbmcgQ2hyb21lRHJpdmVyIChbLlxcZF0rKS8uZXhlYyhvdXQpO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgQ2hyb21lZHJpdmVyIHZlcnNpb246ICcke21hdGNoWzFdfSdgKTtcbiAgICAgICAgICB0aGlzLnN5bmNQcm90b2NvbChtYXRjaFsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBnaXZlIHRoZSBvdXRwdXQgaWYgaXQgaXMgcmVxdWVzdGVkXG4gICAgICAgIGlmICh0aGlzLnZlcmJvc2UpIHtcbiAgICAgICAgICBmb3IgKGxldCBsaW5lIG9mIChzdGRvdXQgfHwgJycpLnRyaW0oKS5zcGxpdCgnXFxuJykpIHtcbiAgICAgICAgICAgIGlmICghbGluZS50cmltKCkubGVuZ3RoKSBjb250aW51ZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuICAgICAgICAgICAgdGhpcy5sb2cuZGVidWcoYFtTVERPVVRdICR7bGluZX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgbGluZSBvZiAoc3RkZXJyIHx8ICcnKS50cmltKCkuc3BsaXQoJ1xcbicpKSB7XG4gICAgICAgICAgICBpZiAoIWxpbmUudHJpbSgpLmxlbmd0aCkgY29udGludWU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY3VybHlcbiAgICAgICAgICAgIHRoaXMubG9nLmVycm9yKGBbU1RERVJSXSAke2xpbmV9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gaGFuZGxlIG91dC1vZi1ib3VuZCBleGl0IGJ5IHNpbXBseSBlbWl0dGluZyBhIHN0b3BwZWQgc3RhdGVcbiAgICAgIHRoaXMucHJvYy5vbignZXhpdCcsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgICAgcHJvY2Vzc0lzQWxpdmUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUgIT09IENocm9tZWRyaXZlci5TVEFURV9TVE9QUEVEICYmXG4gICAgICAgICAgICB0aGlzLnN0YXRlICE9PSBDaHJvbWVkcml2ZXIuU1RBVEVfU1RPUFBJTkcgJiZcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgIT09IENocm9tZWRyaXZlci5TVEFURV9SRVNUQVJUSU5HKSB7XG4gICAgICAgICAgY29uc3QgbXNnID0gYENocm9tZWRyaXZlciBleGl0ZWQgdW5leHBlY3RlZGx5IHdpdGggY29kZSAke2NvZGV9LCBzaWduYWwgJHtzaWduYWx9YDtcbiAgICAgICAgICB0aGlzLmxvZy5lcnJvcihtc2cpO1xuICAgICAgICAgIHRoaXMuY2hhbmdlU3RhdGUoQ2hyb21lZHJpdmVyLlNUQVRFX1NUT1BQRUQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMubG9nLmluZm8oYFNwYXduaW5nIGNocm9tZWRyaXZlciB3aXRoOiAke3RoaXMuY2hyb21lZHJpdmVyfSAke2FyZ3Muam9pbignICcpfWApO1xuICAgICAgLy8gc3RhcnQgc3VicHJvYyBhbmQgd2FpdCBmb3Igc3RhcnREZXRlY3RvclxuICAgICAgYXdhaXQgdGhpcy5wcm9jLnN0YXJ0KHN0YXJ0RGV0ZWN0b3IpO1xuICAgICAgYXdhaXQgdGhpcy53YWl0Rm9yT25saW5lKCk7XG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0U2Vzc2lvbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGUpO1xuICAgICAgdGhpcy5lbWl0KENocm9tZWRyaXZlci5FVkVOVF9FUlJPUiwgZSk7XG4gICAgICAvLyBqdXN0IGJlY2F1c2Ugd2UgaGFkIGFuIGVycm9yIGRvZXNuJ3QgbWVhbiB0aGUgY2hyb21lZHJpdmVyIHByb2Nlc3NcbiAgICAgIC8vIGZpbmlzaGVkOyB3ZSBzaG91bGQgY2xlYW4gdXAgaWYgbmVjZXNzYXJ5XG4gICAgICBpZiAocHJvY2Vzc0lzQWxpdmUpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9jLnN0b3AoKTtcbiAgICAgIH1cblxuICAgICAgbGV0IG1lc3NhZ2UgPSAnJztcbiAgICAgIC8vIG9mdGVuIHRoZSB1c2VyJ3MgQ2hyb21lIHZlcnNpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgdmVyc2lvbiBvZiBDaHJvbWVkcml2ZXJcbiAgICAgIGlmIChlLm1lc3NhZ2UuaW5jbHVkZXMoJ0Nocm9tZSB2ZXJzaW9uIG11c3QgYmUnKSkge1xuICAgICAgICBtZXNzYWdlICs9ICdVbmFibGUgdG8gYXV0b21hdGUgQ2hyb21lIHZlcnNpb24gYmVjYXVzZSBpdCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgdmVyc2lvbiBvZiBDaHJvbWVkcml2ZXIuXFxuJztcbiAgICAgICAgaWYgKHdlYnZpZXdWZXJzaW9uKSB7XG4gICAgICAgICAgbWVzc2FnZSArPSBgQ2hyb21lIHZlcnNpb24gb24gdGhlIGRldmljZTogJHt3ZWJ2aWV3VmVyc2lvbn1cXG5gO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZlcnNpb25zU3VwcG9ydGVkQnlEcml2ZXIgPSAvQ2hyb21lIHZlcnNpb24gbXVzdCBiZSAoLispLy5leGVjKGUubWVzc2FnZSk/LlsxXSB8fCAnJztcbiAgICAgICAgaWYgKHZlcnNpb25zU3VwcG9ydGVkQnlEcml2ZXIpIHtcbiAgICAgICAgICBtZXNzYWdlICs9IGBDaHJvbWVkcml2ZXIgc3VwcG9ydHMgQ2hyb21lIHZlcnNpb24ocyk6ICR7dmVyc2lvbnNTdXBwb3J0ZWRCeURyaXZlcn1cXG5gO1xuICAgICAgICB9XG4gICAgICAgIG1lc3NhZ2UgKz0gYFZpc2l0ICcke0NIUk9NRURSSVZFUl9UVVRPUklBTH0nIHRvIHRyb3VibGVzaG9vdCB0aGUgcHJvYmxlbS5cXG5gO1xuICAgICAgfVxuXG4gICAgICBtZXNzYWdlICs9IGUubWVzc2FnZTtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3cobWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgc2Vzc2lvbklkICgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSA9PT0gQ2hyb21lZHJpdmVyLlNUQVRFX09OTElORSA/IHRoaXMuandwcm94eS5zZXNzaW9uSWQgOiBudWxsO1xuICB9XG5cbiAgYXN5bmMgcmVzdGFydCAoKSB7XG4gICAgdGhpcy5sb2cuaW5mbygnUmVzdGFydGluZyBjaHJvbWVkcml2ZXInKTtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gQ2hyb21lZHJpdmVyLlNUQVRFX09OTElORSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgcmVzdGFydCB3aGVuIHdlJ3JlIG5vdCBvbmxpbmVcIik7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlU3RhdGUoQ2hyb21lZHJpdmVyLlNUQVRFX1JFU1RBUlRJTkcpO1xuICAgIGF3YWl0IHRoaXMuc3RvcChmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zdGFydCh0aGlzLmNhcGFiaWxpdGllcywgZmFsc2UpO1xuICB9XG5cbiAgYXN5bmMgd2FpdEZvck9ubGluZSAoKSB7XG4gICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBDRCBoYXNuJ3QgY3Jhc2hlZFxuICAgIGxldCBjaHJvbWVkcml2ZXJTdG9wcGVkID0gZmFsc2U7XG4gICAgYXdhaXQgcmV0cnlJbnRlcnZhbCgyMCwgMjAwLCBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zdGF0ZSA9PT0gQ2hyb21lZHJpdmVyLlNUQVRFX1NUT1BQRUQpIHtcbiAgICAgICAgLy8gd2UgYXJlIGVpdGhlciBzdG9wcGVkIG9yIHN0b3BwaW5nLCBzbyBzb21ldGhpbmcgd2VudCB3cm9uZ1xuICAgICAgICBjaHJvbWVkcml2ZXJTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5nZXRTdGF0dXMoKTtcbiAgICB9KTtcbiAgICBpZiAoY2hyb21lZHJpdmVyU3RvcHBlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaHJvbWVEcml2ZXIgY3Jhc2hlZCBkdXJpbmcgc3RhcnR1cC4nKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRTdGF0dXMgKCkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmp3cHJveHkuY29tbWFuZCgnL3N0YXR1cycsICdHRVQnKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0U2Vzc2lvbiAoKSB7XG4gICAgY29uc3Qgc2Vzc2lvbkNhcHMgPSB0aGlzLmRlc2lyZWRQcm90b2NvbCA9PT0gUFJPVE9DT0xTLlczQ1xuICAgICAgPyB7Y2FwYWJpbGl0aWVzOiB7YWx3YXlzTWF0Y2g6IHRoaXMuY2FwYWJpbGl0aWVzfX1cbiAgICAgIDoge2Rlc2lyZWRDYXBhYmlsaXRpZXM6IHRoaXMuY2FwYWJpbGl0aWVzfTtcbiAgICB0aGlzLmxvZy5pbmZvKGBTdGFydGluZyAke3RoaXMuZGVzaXJlZFByb3RvY29sfSBDaHJvbWVkcml2ZXIgc2Vzc2lvbiB3aXRoIGNhcGFiaWxpdGllczogYCArXG4gICAgICBKU09OLnN0cmluZ2lmeShzZXNzaW9uQ2FwcywgbnVsbCwgMikpO1xuICAgIGF3YWl0IHRoaXMuandwcm94eS5jb21tYW5kKCcvc2Vzc2lvbicsICdQT1NUJywgc2Vzc2lvbkNhcHMpO1xuICAgIHRoaXMubG9nLnByZWZpeCA9IGdlbmVyYXRlTG9nUHJlZml4KHRoaXMsIHRoaXMuandwcm94eS5zZXNzaW9uSWQpO1xuICAgIHRoaXMuY2hhbmdlU3RhdGUoQ2hyb21lZHJpdmVyLlNUQVRFX09OTElORSk7XG4gIH1cblxuICBhc3luYyBzdG9wIChlbWl0U3RhdGVzID0gdHJ1ZSkge1xuICAgIGlmIChlbWl0U3RhdGVzKSB7XG4gICAgICB0aGlzLmNoYW5nZVN0YXRlKENocm9tZWRyaXZlci5TVEFURV9TVE9QUElORyk7XG4gICAgfVxuICAgIGNvbnN0IHJ1blNhZmVTdGVwID0gYXN5bmMgKGYpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBmKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oZS5tZXNzYWdlKTtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoZS5zdGFjayk7XG4gICAgICB9XG4gICAgfTtcbiAgICBhd2FpdCBydW5TYWZlU3RlcCgoKSA9PiB0aGlzLmp3cHJveHkuY29tbWFuZCgnJywgJ0RFTEVURScpKTtcbiAgICBhd2FpdCBydW5TYWZlU3RlcCgoKSA9PiB0aGlzLnByb2Muc3RvcCgnU0lHVEVSTScsIDIwMDAwKSk7XG4gICAgdGhpcy5sb2cucHJlZml4ID0gZ2VuZXJhdGVMb2dQcmVmaXgodGhpcyk7XG4gICAgaWYgKGVtaXRTdGF0ZXMpIHtcbiAgICAgIHRoaXMuY2hhbmdlU3RhdGUoQ2hyb21lZHJpdmVyLlNUQVRFX1NUT1BQRUQpO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVN0YXRlIChzdGF0ZSkge1xuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgQ2hhbmdlZCBzdGF0ZSB0byAnJHtzdGF0ZX0nYCk7XG4gICAgdGhpcy5lbWl0KENocm9tZWRyaXZlci5FVkVOVF9DSEFOR0VELCB7c3RhdGV9KTtcbiAgfVxuXG4gIGFzeW5jIHNlbmRDb21tYW5kICh1cmwsIG1ldGhvZCwgYm9keSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmp3cHJveHkuY29tbWFuZCh1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cblxuICBhc3luYyBwcm94eVJlcSAocmVxLCByZXMpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5qd3Byb3h5LnByb3h5UmVxUmVzKHJlcSwgcmVzKTtcbiAgfVxuXG4gIGFzeW5jIGtpbGxBbGwgKCkge1xuICAgIGxldCBjbWQgPSBzeXN0ZW0uaXNXaW5kb3dzKClcbiAgICAgID8gYHdtaWMgcHJvY2VzcyB3aGVyZSBcImNvbW1hbmRsaW5lIGxpa2UgJyVjaHJvbWVkcml2ZXIuZXhlJS0tcG9ydD0ke3RoaXMucHJveHlQb3J0fSUnXCIgZGVsZXRlYFxuICAgICAgOiBgcGtpbGwgLTE1IC1mIFwiJHt0aGlzLmNocm9tZWRyaXZlcn0uKi0tcG9ydD0ke3RoaXMucHJveHlQb3J0fVwiYDtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgS2lsbGluZyBhbnkgb2xkIGNocm9tZWRyaXZlcnMsIHJ1bm5pbmc6ICR7Y21kfWApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCAoQi5wcm9taXNpZnkoY3AuZXhlYykpKGNtZCk7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZygnU3VjY2Vzc2Z1bGx5IGNsZWFuZWQgdXAgb2xkIGNocm9tZWRyaXZlcnMnKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMubG9nLndhcm4oJ05vIG9sZCBjaHJvbWVkcml2ZXJzIHNlZW0gdG8gZXhpc3QnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hZGIpIHtcbiAgICAgIGNvbnN0IHVkaWRJbmRleCA9IHRoaXMuYWRiLmV4ZWN1dGFibGUuZGVmYXVsdEFyZ3MuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtID09PSAnLXMnKTtcbiAgICAgIGNvbnN0IHVkaWQgPSB1ZGlkSW5kZXggPiAtMSA/IHRoaXMuYWRiLmV4ZWN1dGFibGUuZGVmYXVsdEFyZ3NbdWRpZEluZGV4ICsgMV0gOiBudWxsO1xuXG4gICAgICBpZiAodWRpZCkge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgQ2xlYW5pbmcgdGhpcyBkZXZpY2UncyBhZGIgZm9yd2FyZGVkIHBvcnQgc29ja2V0IGNvbm5lY3Rpb25zOiAke3VkaWR9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgQ2xlYW5pbmcgYW55IG9sZCBhZGIgZm9yd2FyZGVkIHBvcnQgc29ja2V0IGNvbm5lY3Rpb25zYCk7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAobGV0IGNvbm4gb2YgYXdhaXQgdGhpcy5hZGIuZ2V0Rm9yd2FyZExpc3QoKSkge1xuICAgICAgICAgIC8vIGNocm9tZWRyaXZlciB3aWxsIGFzayBBREIgdG8gZm9yd2FyZCBhIHBvcnQgbGlrZSBcImRldmljZUlkIHRjcDpwb3J0IGxvY2FsYWJzdHJhY3Q6d2Vidmlld19kZXZ0b29sc19yZW1vdGVfcG9ydFwiXG4gICAgICAgICAgaWYgKCEoY29ubi5pbmNsdWRlcygnd2Vidmlld19kZXZ0b29scycpICYmICghdWRpZCB8fCBjb25uLmluY2x1ZGVzKHVkaWQpKSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBwYXJhbXMgPSBjb25uLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmFkYi5yZW1vdmVQb3J0Rm9yd2FyZChwYXJhbXNbMV0ucmVwbGFjZSgvW1xcRF0qLywgJycpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gY2xlYW4gZm9yd2FyZGVkIHBvcnRzLiBFcnJvcjogJyR7ZXJyLm1lc3NhZ2V9Jy4gQ29udGludWluZy5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBoYXNXb3JraW5nV2VidmlldyAoKSB7XG4gICAgLy8gc29tZXRpbWVzIGNocm9tZWRyaXZlciBzdG9wcyBhdXRvbWF0aW5nIHdlYnZpZXdzLiB0aGlzIG1ldGhvZCBydW5zIGFcbiAgICAvLyBzaW1wbGUgY29tbWFuZCB0byBkZXRlcm1pbmUgb3VyIHN0YXRlLCBhbmQgcmVzcG9uZHMgYWNjb3JkaW5nbHlcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5qd3Byb3h5LmNvbW1hbmQoJy91cmwnLCAnR0VUJyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbkNocm9tZWRyaXZlci5FVkVOVF9FUlJPUiA9ICdjaHJvbWVkcml2ZXJfZXJyb3InO1xuQ2hyb21lZHJpdmVyLkVWRU5UX0NIQU5HRUQgPSAnc3RhdGVDaGFuZ2VkJztcbkNocm9tZWRyaXZlci5TVEFURV9TVE9QUEVEID0gJ3N0b3BwZWQnO1xuQ2hyb21lZHJpdmVyLlNUQVRFX1NUQVJUSU5HID0gJ3N0YXJ0aW5nJztcbkNocm9tZWRyaXZlci5TVEFURV9PTkxJTkUgPSAnb25saW5lJztcbkNocm9tZWRyaXZlci5TVEFURV9TVE9QUElORyA9ICdzdG9wcGluZyc7XG5DaHJvbWVkcml2ZXIuU1RBVEVfUkVTVEFSVElORyA9ICdyZXN0YXJ0aW5nJztcblxuZXhwb3J0IHsgQ2hyb21lZHJpdmVyIH07XG5leHBvcnQgZGVmYXVsdCBDaHJvbWVkcml2ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsbUNBQW1DLEdBQUcsRUFBNUM7QUFDQSxNQUFNQyxZQUFZLEdBQUcsV0FBckI7QUFDQSxNQUFNQywrQkFBK0IsR0FBRyxFQUF4QztBQUNBLE1BQU1DLFlBQVksR0FBRyxJQUFyQjtBQUNBLE1BQU1DLGdCQUFnQixHQUFHLG9CQUF6QjtBQUNBLE1BQU1DLHVCQUF1QixHQUFHLDRCQUFoQztBQUNBLE1BQU1DLGtCQUFrQixHQUFHLENBQ3pCLDRCQUR5QixFQUV6QixxQkFGeUIsQ0FBM0I7QUFJQSxNQUFNQyxxQkFBcUIsR0FBRyxpR0FBOUI7QUFDQSxNQUFNQyxlQUFlLEdBQUcsVUFBeEI7QUFFQSxNQUFNQyxrQkFBa0IsR0FBRyxJQUEzQjs7QUFFQSxNQUFNQyxZQUFOLFNBQTJCQyxn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
@@ -54,4 +54,4 @@ async function doInstall() {
54
54
  }require('source-map-support').install();
55
55
 
56
56
 
57
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9pbnN0YWxsLmpzIl0sIm5hbWVzIjpbIkRPV05MT0FEX1RJTUVPVVRfTVMiLCJMQVRFU1RfVkVSU0lPTiIsImZvcm1hdENkVmVyc2lvbiIsInZlciIsIkNEX0NETiIsImFjY2VwdCIsInRpbWVvdXQiLCJ0cmltIiwicHJlcGFyZUNocm9tZWRyaXZlckRpciIsInBsYXRmb3JtTmFtZSIsImNocm9tZWRyaXZlckRpciIsImZzIiwiZXhpc3RzIiwiaW5zdGFsbCIsIm9zSW5mbyIsImNsaWVudCIsIkNocm9tZWRyaXZlclN0b3JhZ2VDbGllbnQiLCJuYW1lIiwic3luY0RyaXZlcnMiLCJ2ZXJzaW9ucyIsIkNEX1ZFUiIsImRvSW5zdGFsbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBS0EsTUFBTUEsbUJBQW1CLEdBQUcsS0FBSyxJQUFqQztBQUNBLE1BQU1DLGNBQWMsR0FBRyxRQUF2Qjs7QUFFQSxlQUFlQyxlQUFmLENBQWdDQyxHQUFoQyxFQUFxQztBQUNuQyxTQUFPQSxHQUFHLEtBQUtGLGNBQVIsR0FDSCxDQUFDLE1BQU0seUJBQWMsR0FBRUcsYUFBTyxpQkFBdkIsRUFBeUM7QUFDaEQsa0JBQWMsUUFEa0M7QUFFaERDLElBQUFBLE1BQU0sRUFBRTtBQUZ3QyxHQUF6QyxFQUdOO0FBQUVDLElBQUFBLE9BQU8sRUFBRU47QUFBWCxHQUhNLENBQVAsRUFHb0NPLElBSHBDLEVBREcsR0FLSEosR0FMSjtBQU1EOztBQUVELGVBQWVLLHNCQUFmLENBQXVDQyxZQUF2QyxFQUFxRDtBQUNuRCxRQUFNQyxlQUFlLEdBQUcsK0JBQW1CRCxZQUFuQixDQUF4Qjs7QUFDQSxNQUFJLEVBQUMsTUFBTUUsWUFBR0MsTUFBSCxDQUFVRixlQUFWLENBQVAsQ0FBSixFQUF1QztBQUNyQyxVQUFNLHFCQUFPQSxlQUFQLENBQU47QUFDRDs7QUFDRCxTQUFPQSxlQUFQO0FBQ0Q7O0FBRUQsZUFBZUcsT0FBZixHQUEwQjtBQUN4QixRQUFNQyxNQUFNLEdBQUcsTUFBTSx1QkFBckI7QUFDQSxRQUFNQyxNQUFNLEdBQUcsSUFBSUMsc0JBQUosQ0FBOEI7QUFDM0NOLElBQUFBLGVBQWUsRUFBRSxNQUFNRixzQkFBc0IsQ0FBQ00sTUFBTSxDQUFDRyxJQUFSO0FBREYsR0FBOUIsQ0FBZjtBQUdBLFFBQU1GLE1BQU0sQ0FBQ0csV0FBUCxDQUFtQjtBQUN2QkosSUFBQUEsTUFEdUI7QUFFdkJLLElBQUFBLFFBQVEsRUFBRSxDQUFDLE1BQU1qQixlQUFlLENBQUNrQixhQUFELENBQXRCO0FBRmEsR0FBbkIsQ0FBTjtBQUlEOztBQUVELGVBQWVDLFNBQWYsR0FBNEI7QUFDMUIsUUFBTVIsT0FBTyxFQUFiO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcywgbWtkaXJwIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBDaHJvbWVkcml2ZXJTdG9yYWdlQ2xpZW50IGZyb20gJy4vc3RvcmFnZS1jbGllbnQnO1xuaW1wb3J0IHtcbiAgQ0RfQ0ROLCBDRF9WRVIsIHJldHJpZXZlRGF0YSwgZ2V0T3NJbmZvLCBnZXRDaHJvbWVkcml2ZXJEaXIsXG59IGZyb20gJy4vdXRpbHMnO1xuXG5cbmNvbnN0IERPV05MT0FEX1RJTUVPVVRfTVMgPSAxNSAqIDEwMDA7XG5jb25zdCBMQVRFU1RfVkVSU0lPTiA9ICdMQVRFU1QnO1xuXG5hc3luYyBmdW5jdGlvbiBmb3JtYXRDZFZlcnNpb24gKHZlcikge1xuICByZXR1cm4gdmVyID09PSBMQVRFU1RfVkVSU0lPTlxuICAgID8gKGF3YWl0IHJldHJpZXZlRGF0YShgJHtDRF9DRE59L0xBVEVTVF9SRUxFQVNFYCwge1xuICAgICAgJ3VzZXItYWdlbnQnOiAnYXBwaXVtJyxcbiAgICAgIGFjY2VwdDogJyovKicsXG4gICAgfSwgeyB0aW1lb3V0OiBET1dOTE9BRF9USU1FT1VUX01TIH0pKS50cmltKClcbiAgICA6IHZlcjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJlcGFyZUNocm9tZWRyaXZlckRpciAocGxhdGZvcm1OYW1lKSB7XG4gIGNvbnN0IGNocm9tZWRyaXZlckRpciA9IGdldENocm9tZWRyaXZlckRpcihwbGF0Zm9ybU5hbWUpO1xuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhjaHJvbWVkcml2ZXJEaXIpKSB7XG4gICAgYXdhaXQgbWtkaXJwKGNocm9tZWRyaXZlckRpcik7XG4gIH1cbiAgcmV0dXJuIGNocm9tZWRyaXZlckRpcjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbCAoKSB7XG4gIGNvbnN0IG9zSW5mbyA9IGF3YWl0IGdldE9zSW5mbygpO1xuICBjb25zdCBjbGllbnQgPSBuZXcgQ2hyb21lZHJpdmVyU3RvcmFnZUNsaWVudCh7XG4gICAgY2hyb21lZHJpdmVyRGlyOiBhd2FpdCBwcmVwYXJlQ2hyb21lZHJpdmVyRGlyKG9zSW5mby5uYW1lKSxcbiAgfSk7XG4gIGF3YWl0IGNsaWVudC5zeW5jRHJpdmVycyh7XG4gICAgb3NJbmZvLFxuICAgIHZlcnNpb25zOiBbYXdhaXQgZm9ybWF0Q2RWZXJzaW9uKENEX1ZFUildLFxuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZG9JbnN0YWxsICgpIHtcbiAgYXdhaXQgaW5zdGFsbCgpO1xufVxuXG5leHBvcnQgeyBpbnN0YWxsLCBkb0luc3RhbGwgfTtcbiJdLCJmaWxlIjoibGliL2luc3RhbGwuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
57
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2luc3RhbGwuanMiLCJuYW1lcyI6WyJET1dOTE9BRF9USU1FT1VUX01TIiwiTEFURVNUX1ZFUlNJT04iLCJmb3JtYXRDZFZlcnNpb24iLCJ2ZXIiLCJDRF9DRE4iLCJhY2NlcHQiLCJ0aW1lb3V0IiwidHJpbSIsInByZXBhcmVDaHJvbWVkcml2ZXJEaXIiLCJwbGF0Zm9ybU5hbWUiLCJjaHJvbWVkcml2ZXJEaXIiLCJmcyIsImV4aXN0cyIsImluc3RhbGwiLCJvc0luZm8iLCJjbGllbnQiLCJDaHJvbWVkcml2ZXJTdG9yYWdlQ2xpZW50IiwibmFtZSIsInN5bmNEcml2ZXJzIiwidmVyc2lvbnMiLCJDRF9WRVIiLCJkb0luc3RhbGwiXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvaW5zdGFsbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcywgbWtkaXJwIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBDaHJvbWVkcml2ZXJTdG9yYWdlQ2xpZW50IGZyb20gJy4vc3RvcmFnZS1jbGllbnQnO1xuaW1wb3J0IHtcbiAgQ0RfQ0ROLCBDRF9WRVIsIHJldHJpZXZlRGF0YSwgZ2V0T3NJbmZvLCBnZXRDaHJvbWVkcml2ZXJEaXIsXG59IGZyb20gJy4vdXRpbHMnO1xuXG5cbmNvbnN0IERPV05MT0FEX1RJTUVPVVRfTVMgPSAxNSAqIDEwMDA7XG5jb25zdCBMQVRFU1RfVkVSU0lPTiA9ICdMQVRFU1QnO1xuXG5hc3luYyBmdW5jdGlvbiBmb3JtYXRDZFZlcnNpb24gKHZlcikge1xuICByZXR1cm4gdmVyID09PSBMQVRFU1RfVkVSU0lPTlxuICAgID8gKGF3YWl0IHJldHJpZXZlRGF0YShgJHtDRF9DRE59L0xBVEVTVF9SRUxFQVNFYCwge1xuICAgICAgJ3VzZXItYWdlbnQnOiAnYXBwaXVtJyxcbiAgICAgIGFjY2VwdDogJyovKicsXG4gICAgfSwgeyB0aW1lb3V0OiBET1dOTE9BRF9USU1FT1VUX01TIH0pKS50cmltKClcbiAgICA6IHZlcjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJlcGFyZUNocm9tZWRyaXZlckRpciAocGxhdGZvcm1OYW1lKSB7XG4gIGNvbnN0IGNocm9tZWRyaXZlckRpciA9IGdldENocm9tZWRyaXZlckRpcihwbGF0Zm9ybU5hbWUpO1xuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhjaHJvbWVkcml2ZXJEaXIpKSB7XG4gICAgYXdhaXQgbWtkaXJwKGNocm9tZWRyaXZlckRpcik7XG4gIH1cbiAgcmV0dXJuIGNocm9tZWRyaXZlckRpcjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbCAoKSB7XG4gIGNvbnN0IG9zSW5mbyA9IGF3YWl0IGdldE9zSW5mbygpO1xuICBjb25zdCBjbGllbnQgPSBuZXcgQ2hyb21lZHJpdmVyU3RvcmFnZUNsaWVudCh7XG4gICAgY2hyb21lZHJpdmVyRGlyOiBhd2FpdCBwcmVwYXJlQ2hyb21lZHJpdmVyRGlyKG9zSW5mby5uYW1lKSxcbiAgfSk7XG4gIGF3YWl0IGNsaWVudC5zeW5jRHJpdmVycyh7XG4gICAgb3NJbmZvLFxuICAgIHZlcnNpb25zOiBbYXdhaXQgZm9ybWF0Q2RWZXJzaW9uKENEX1ZFUildLFxuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZG9JbnN0YWxsICgpIHtcbiAgYXdhaXQgaW5zdGFsbCgpO1xufVxuXG5leHBvcnQgeyBpbnN0YWxsLCBkb0luc3RhbGwgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBS0EsTUFBTUEsbUJBQW1CLEdBQUcsS0FBSyxJQUFqQztBQUNBLE1BQU1DLGNBQWMsR0FBRyxRQUF2Qjs7QUFFQSxlQUFlQyxlQUFmLENBQWdDQyxHQUFoQyxFQUFxQztFQUNuQyxPQUFPQSxHQUFHLEtBQUtGLGNBQVIsR0FDSCxDQUFDLE1BQU0seUJBQWMsR0FBRUcsYUFBTyxpQkFBdkIsRUFBeUM7SUFDaEQsY0FBYyxRQURrQztJQUVoREMsTUFBTSxFQUFFO0VBRndDLENBQXpDLEVBR047SUFBRUMsT0FBTyxFQUFFTjtFQUFYLENBSE0sQ0FBUCxFQUdvQ08sSUFIcEMsRUFERyxHQUtISixHQUxKO0FBTUQ7O0FBRUQsZUFBZUssc0JBQWYsQ0FBdUNDLFlBQXZDLEVBQXFEO0VBQ25ELE1BQU1DLGVBQWUsR0FBRywrQkFBbUJELFlBQW5CLENBQXhCOztFQUNBLElBQUksRUFBQyxNQUFNRSxZQUFHQyxNQUFILENBQVVGLGVBQVYsQ0FBUCxDQUFKLEVBQXVDO0lBQ3JDLE1BQU0scUJBQU9BLGVBQVAsQ0FBTjtFQUNEOztFQUNELE9BQU9BLGVBQVA7QUFDRDs7QUFFRCxlQUFlRyxPQUFmLEdBQTBCO0VBQ3hCLE1BQU1DLE1BQU0sR0FBRyxNQUFNLHVCQUFyQjtFQUNBLE1BQU1DLE1BQU0sR0FBRyxJQUFJQyxzQkFBSixDQUE4QjtJQUMzQ04sZUFBZSxFQUFFLE1BQU1GLHNCQUFzQixDQUFDTSxNQUFNLENBQUNHLElBQVI7RUFERixDQUE5QixDQUFmO0VBR0EsTUFBTUYsTUFBTSxDQUFDRyxXQUFQLENBQW1CO0lBQ3ZCSixNQUR1QjtJQUV2QkssUUFBUSxFQUFFLENBQUMsTUFBTWpCLGVBQWUsQ0FBQ2tCLGFBQUQsQ0FBdEI7RUFGYSxDQUFuQixDQUFOO0FBSUQ7O0FBRUQsZUFBZUMsU0FBZixHQUE0QjtFQUMxQixNQUFNUixPQUFPLEVBQWI7QUFDRCJ9
@@ -38,4 +38,4 @@ function toW3cCapNames(originalCaps = {}) {
38
38
  }require('source-map-support').install();
39
39
 
40
40
 
41
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9wcm90b2NvbC1oZWxwZXJzLmpzIl0sIm5hbWVzIjpbIlczQ19QUkVGSVgiLCJ0b1czY0NhcE5hbWUiLCJjYXBOYW1lIiwiXyIsImlzU3RyaW5nIiwiaW5jbHVkZXMiLCJnZXRDYXBWYWx1ZSIsImFsbENhcHMiLCJyYXdDYXBOYW1lIiwiZGVmYXVsdFZhbHVlIiwiY2FwVmFsdWUiLCJ0b1BhaXJzIiwidG9XM2NDYXBOYW1lcyIsIm9yaWdpbmFsQ2FwcyIsInJlZHVjZSIsImFjYyIsInZhbHVlIiwia2V5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSxVQUFVLEdBQUcsT0FBbkI7O0FBRUEsU0FBU0MsWUFBVCxDQUF1QkMsT0FBdkIsRUFBZ0M7QUFDOUIsU0FBUUMsZ0JBQUVDLFFBQUYsQ0FBV0YsT0FBWCxLQUF1QixDQUFDQSxPQUFPLENBQUNHLFFBQVIsQ0FBaUIsR0FBakIsQ0FBeEIsSUFBaUQsQ0FBQywrQkFBY0gsT0FBZCxDQUFuRCxHQUNGLEdBQUVGLFVBQVcsR0FBRUUsT0FBUSxFQURyQixHQUVIQSxPQUZKO0FBR0Q7O0FBRUQsU0FBU0ksV0FBVCxDQUFzQkMsT0FBTyxHQUFHLEVBQWhDLEVBQW9DQyxVQUFwQyxFQUFnREMsWUFBaEQsRUFBOEQ7QUFDNUQsT0FBSyxNQUFNLENBQUNQLE9BQUQsRUFBVVEsUUFBVixDQUFYLElBQWtDUCxnQkFBRVEsT0FBRixDQUFVSixPQUFWLENBQWxDLEVBQXNEO0FBQ3BELFFBQUlOLFlBQVksQ0FBQ0MsT0FBRCxDQUFaLEtBQTBCRCxZQUFZLENBQUNPLFVBQUQsQ0FBMUMsRUFBd0Q7QUFDdEQsYUFBT0UsUUFBUDtBQUNEO0FBQ0Y7O0FBQ0QsU0FBT0QsWUFBUDtBQUNEOztBQUVELFNBQVNHLGFBQVQsQ0FBd0JDLFlBQVksR0FBRyxFQUF2QyxFQUEyQztBQUN6QyxTQUFPVixnQkFBRVcsTUFBRixDQUFTRCxZQUFULEVBQXVCLENBQUNFLEdBQUQsRUFBTUMsS0FBTixFQUFhQyxHQUFiLEtBQXFCO0FBQ2pERixJQUFBQSxHQUFHLENBQUNkLFlBQVksQ0FBQ2dCLEdBQUQsQ0FBYixDQUFILEdBQXlCRCxLQUF6QjtBQUNBLFdBQU9ELEdBQVA7QUFDRCxHQUhNLEVBR0osRUFISSxDQUFQO0FBSUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgaXNTdGFuZGFyZENhcCB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBXM0NfUFJFRklYID0gJ2dvb2c6JztcblxuZnVuY3Rpb24gdG9XM2NDYXBOYW1lIChjYXBOYW1lKSB7XG4gIHJldHVybiAoXy5pc1N0cmluZyhjYXBOYW1lKSAmJiAhY2FwTmFtZS5pbmNsdWRlcygnOicpICYmICFpc1N0YW5kYXJkQ2FwKGNhcE5hbWUpKVxuICAgID8gYCR7VzNDX1BSRUZJWH0ke2NhcE5hbWV9YFxuICAgIDogY2FwTmFtZTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2FwVmFsdWUgKGFsbENhcHMgPSB7fSwgcmF3Q2FwTmFtZSwgZGVmYXVsdFZhbHVlKSB7XG4gIGZvciAoY29uc3QgW2NhcE5hbWUsIGNhcFZhbHVlXSBvZiBfLnRvUGFpcnMoYWxsQ2FwcykpIHtcbiAgICBpZiAodG9XM2NDYXBOYW1lKGNhcE5hbWUpID09PSB0b1czY0NhcE5hbWUocmF3Q2FwTmFtZSkpIHtcbiAgICAgIHJldHVybiBjYXBWYWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbn1cblxuZnVuY3Rpb24gdG9XM2NDYXBOYW1lcyAob3JpZ2luYWxDYXBzID0ge30pIHtcbiAgcmV0dXJuIF8ucmVkdWNlKG9yaWdpbmFsQ2FwcywgKGFjYywgdmFsdWUsIGtleSkgPT4ge1xuICAgIGFjY1t0b1czY0NhcE5hbWUoa2V5KV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG5cbmV4cG9ydCB7IHRvVzNjQ2FwTmFtZXMsIGdldENhcFZhbHVlIH07XG4iXSwiZmlsZSI6ImxpYi9wcm90b2NvbC1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
41
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3Byb3RvY29sLWhlbHBlcnMuanMiLCJuYW1lcyI6WyJXM0NfUFJFRklYIiwidG9XM2NDYXBOYW1lIiwiY2FwTmFtZSIsIl8iLCJpc1N0cmluZyIsImluY2x1ZGVzIiwiZ2V0Q2FwVmFsdWUiLCJhbGxDYXBzIiwicmF3Q2FwTmFtZSIsImRlZmF1bHRWYWx1ZSIsImNhcFZhbHVlIiwidG9QYWlycyIsInRvVzNjQ2FwTmFtZXMiLCJvcmlnaW5hbENhcHMiLCJyZWR1Y2UiLCJhY2MiLCJ2YWx1ZSIsImtleSJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9wcm90b2NvbC1oZWxwZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBpc1N0YW5kYXJkQ2FwIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5cbmNvbnN0IFczQ19QUkVGSVggPSAnZ29vZzonO1xuXG5mdW5jdGlvbiB0b1czY0NhcE5hbWUgKGNhcE5hbWUpIHtcbiAgcmV0dXJuIChfLmlzU3RyaW5nKGNhcE5hbWUpICYmICFjYXBOYW1lLmluY2x1ZGVzKCc6JykgJiYgIWlzU3RhbmRhcmRDYXAoY2FwTmFtZSkpXG4gICAgPyBgJHtXM0NfUFJFRklYfSR7Y2FwTmFtZX1gXG4gICAgOiBjYXBOYW1lO1xufVxuXG5mdW5jdGlvbiBnZXRDYXBWYWx1ZSAoYWxsQ2FwcyA9IHt9LCByYXdDYXBOYW1lLCBkZWZhdWx0VmFsdWUpIHtcbiAgZm9yIChjb25zdCBbY2FwTmFtZSwgY2FwVmFsdWVdIG9mIF8udG9QYWlycyhhbGxDYXBzKSkge1xuICAgIGlmICh0b1czY0NhcE5hbWUoY2FwTmFtZSkgPT09IHRvVzNjQ2FwTmFtZShyYXdDYXBOYW1lKSkge1xuICAgICAgcmV0dXJuIGNhcFZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdFZhbHVlO1xufVxuXG5mdW5jdGlvbiB0b1czY0NhcE5hbWVzIChvcmlnaW5hbENhcHMgPSB7fSkge1xuICByZXR1cm4gXy5yZWR1Y2Uob3JpZ2luYWxDYXBzLCAoYWNjLCB2YWx1ZSwga2V5KSA9PiB7XG4gICAgYWNjW3RvVzNjQ2FwTmFtZShrZXkpXSA9IHZhbHVlO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn1cblxuZXhwb3J0IHsgdG9XM2NDYXBOYW1lcywgZ2V0Q2FwVmFsdWUgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHLE9BQW5COztBQUVBLFNBQVNDLFlBQVQsQ0FBdUJDLE9BQXZCLEVBQWdDO0VBQzlCLE9BQVFDLGdCQUFFQyxRQUFGLENBQVdGLE9BQVgsS0FBdUIsQ0FBQ0EsT0FBTyxDQUFDRyxRQUFSLENBQWlCLEdBQWpCLENBQXhCLElBQWlELENBQUMsK0JBQWNILE9BQWQsQ0FBbkQsR0FDRixHQUFFRixVQUFXLEdBQUVFLE9BQVEsRUFEckIsR0FFSEEsT0FGSjtBQUdEOztBQUVELFNBQVNJLFdBQVQsQ0FBc0JDLE9BQU8sR0FBRyxFQUFoQyxFQUFvQ0MsVUFBcEMsRUFBZ0RDLFlBQWhELEVBQThEO0VBQzVELEtBQUssTUFBTSxDQUFDUCxPQUFELEVBQVVRLFFBQVYsQ0FBWCxJQUFrQ1AsZ0JBQUVRLE9BQUYsQ0FBVUosT0FBVixDQUFsQyxFQUFzRDtJQUNwRCxJQUFJTixZQUFZLENBQUNDLE9BQUQsQ0FBWixLQUEwQkQsWUFBWSxDQUFDTyxVQUFELENBQTFDLEVBQXdEO01BQ3RELE9BQU9FLFFBQVA7SUFDRDtFQUNGOztFQUNELE9BQU9ELFlBQVA7QUFDRDs7QUFFRCxTQUFTRyxhQUFULENBQXdCQyxZQUFZLEdBQUcsRUFBdkMsRUFBMkM7RUFDekMsT0FBT1YsZ0JBQUVXLE1BQUYsQ0FBU0QsWUFBVCxFQUF1QixDQUFDRSxHQUFELEVBQU1DLEtBQU4sRUFBYUMsR0FBYixLQUFxQjtJQUNqREYsR0FBRyxDQUFDZCxZQUFZLENBQUNnQixHQUFELENBQWIsQ0FBSCxHQUF5QkQsS0FBekI7SUFDQSxPQUFPRCxHQUFQO0VBQ0QsQ0FITSxFQUdKLEVBSEksQ0FBUDtBQUlEIn0=
@@ -388,4 +388,4 @@ var _default = ChromedriverStorageClient;
388
388
  exports.default = _default;require('source-map-support').install();
389
389
 
390
390
 
391
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zdG9yYWdlLWNsaWVudC5qcyJdLCJuYW1lcyI6WyJUSU1FT1VUX01TIiwiTUFYX1BBUkFMTEVMX0RPV05MT0FEUyIsImxvZyIsImxvZ2dlciIsImdldExvZ2dlciIsImlzQ3JjT2siLCJzcmMiLCJjaGVja3N1bSIsIm1kNSIsImZzIiwiaGFzaCIsIl8iLCJ0b0xvd2VyIiwiZmluZENoaWxkTm9kZSIsInBhcmVudCIsImNoaWxkTmFtZSIsInRleHQiLCJoYXNDaGlsZE5vZGVzIiwiY2hpbGROb2RlSWR4IiwiY2hpbGROb2RlcyIsImxlbmd0aCIsImNoaWxkTm9kZSIsImxvY2FsTmFtZSIsImNoaWxkVGV4dCIsImV4dHJhY3ROb2RlVGV4dCIsIm5vZGUiLCJmaXJzdENoaWxkIiwidXRpbCIsImhhc1ZhbHVlIiwibm9kZVZhbHVlIiwiQ2hyb21lZHJpdmVyU3RvcmFnZUNsaWVudCIsImNvbnN0cnVjdG9yIiwiYXJncyIsImNocm9tZWRyaXZlckRpciIsInRpbWVvdXQiLCJtYXBwaW5nIiwicGFyc2VOb3RlcyIsImNvbnRlbnQiLCJyZXN1bHQiLCJ2ZXJzaW9uTWF0Y2giLCJleGVjIiwidmVyc2lvbiIsIm1pbkJyb3dzZXJWZXJzaW9uTWF0Y2giLCJtaW5Ccm93c2VyVmVyc2lvbiIsInJldHJpZXZlQWRkaXRpb25hbERyaXZlckluZm8iLCJkcml2ZXJLZXkiLCJub3Rlc1VybCIsImluZm9EaWN0Iiwibm90ZXMiLCJhY2NlcHQiLCJkZWJ1ZyIsInBhcnNlU3RvcmFnZVhtbCIsImRvYyIsInNob3VsZFBhcnNlTm90ZXMiLCJkcml2ZXJOb2RlcyIsInhwYXRoIiwic2VsZWN0IiwiaXNFbXB0eSIsInByb21pc2VzIiwiZHJpdmVyTm9kZSIsImtleSIsImluY2x1ZGVzIiwiZXRhZyIsImNkSW5mbyIsInVybCIsIkNEX0NETiIsInRyaW0iLCJmaXJzdCIsInNwbGl0Iiwibm90ZXNQYXRoIiwiaXNOb3Rlc1ByZXNlbnQiLCJyZWR1Y2UiLCJhY2MiLCJpbmZvIiwicHVzaCIsIkIiLCJhbGwiLCJzaXplIiwicmV0cmlldmVNYXBwaW5nIiwieG1sIiwiRE9NUGFyc2VyIiwicGFyc2VGcm9tU3RyaW5nIiwiY2xvbmVEZWVwIiwidW56aXBEcml2ZXIiLCJkc3QiLCJ0bXBSb290IiwidGVtcERpciIsIm9wZW5EaXIiLCJ6aXAiLCJleHRyYWN0QWxsVG8iLCJjaHJvbWVkcml2ZXJQYXRoIiwid2Fsa0RpciIsIml0ZW1QYXRoIiwiaXNEaXJlY3RvcnkiLCJwYXRoIiwicGFyc2UiLCJuYW1lIiwiRXJyb3IiLCJiYXNlbmFtZSIsIm12IiwibWtkaXJwIiwicmltcmFmIiwic2VsZWN0TWF0Y2hpbmdEcml2ZXJzIiwib3NJbmZvIiwib3B0cyIsInZlcnNpb25zIiwiZHJpdmVyc1RvU3luYyIsImtleXMiLCJmaWx0ZXIiLCJjZE5hbWUiLCJwbHVyYWxpemUiLCJpc05hTiIsIm1pbkJyb3dzZXJWZXJzaW9uSW50IiwicGFyc2VJbnQiLCJjbG9zZXN0TWF0Y2hlZFZlcnNpb25OdW1iZXIiLCJjdXJyZW50TWluQnJvd3NlclZlcnNpb24iLCJ1bmlxIiwibWFwIiwiYXJjaCIsImhhcmR3YXJlTmFtZSIsIlg2NCIsInNvbWUiLCJYODYiLCJPUyIsIm1hYyIsIk0xX0FSQ0hfU1VGRklYIiwicGxhdGZvcm1SZSIsIlJlZ0V4cCIsInRlc3QiLCJyZXRyaWV2ZURyaXZlciIsImluZGV4IiwiYXJjaGl2ZXNSb290IiwiaXNTdHJpY3QiLCJhcmNoaXZlUGF0aCIsInJlc29sdmUiLCJuZXQiLCJkb3dubG9hZEZpbGUiLCJpc01ldGVyZWQiLCJlIiwibXNnIiwibWVzc2FnZSIsImVycm9yIiwiZmlsZU5hbWUiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJ0YXJnZXRQYXRoIiwiY2htb2QiLCJzeW5jRHJpdmVycyIsIkpTT04iLCJzdHJpbmdpZnkiLCJzeW5jaHJvbml6ZWREcml2ZXJzIiwiaWR4IiwiZW50cmllcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFJQTs7QUFDQTs7QUFDQTs7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TSxDQUFDZ0UsR0FBRCxFQUFNMUcsU0FBTixDQUFYLElBQStCNkQsYUFBYSxDQUFDOEMsT0FBZCxFQUEvQixFQUF3RDtBQUN0RDlGLFFBQUFBLFFBQVEsQ0FBQ2dCLElBQVQsQ0FBYyxDQUFDLFlBQVk7QUFDekIsY0FBSSxNQUFNLEtBQUt1RCxjQUFMLENBQW9Cc0IsR0FBcEIsRUFBeUIxRyxTQUF6QixFQUFvQ3NGLFlBQXBDLEVBQWtELENBQUN4SCxnQkFBRThDLE9BQUYsQ0FBVStDLElBQVYsQ0FBbkQsQ0FBVixFQUErRTtBQUM3RThDLFlBQUFBLG1CQUFtQixDQUFDNUUsSUFBcEIsQ0FBeUI3QixTQUF6QjtBQUNEO0FBQ0YsU0FKYSxHQUFkOztBQU1BLFlBQUlhLFFBQVEsQ0FBQ3RDLE1BQVQsR0FBa0JuQixzQkFBbEIsS0FBNkMsQ0FBakQsRUFBb0Q7QUFDbEQsZ0JBQU0wRSxrQkFBRUMsR0FBRixDQUFNbEIsUUFBTixDQUFOO0FBQ0Q7QUFDRjs7QUFDRCxZQUFNaUIsa0JBQUVDLEdBQUYsQ0FBTWxCLFFBQU4sQ0FBTjtBQUNELEtBYkQsU0FhVTtBQUNSLFlBQU1qRCxZQUFHNEYsTUFBSCxDQUFVOEIsWUFBVixDQUFOO0FBQ0Q7O0FBQ0QsUUFBSSxDQUFDeEgsZ0JBQUU4QyxPQUFGLENBQVU2RixtQkFBVixDQUFMLEVBQXFDO0FBQ25DcEosTUFBQUEsR0FBRyxDQUFDdUUsSUFBSixDQUFVLDRCQUFELEdBQ04sR0FBRTlDLGNBQUttRixTQUFMLENBQWUsY0FBZixFQUErQndDLG1CQUFtQixDQUFDbEksTUFBbkQsRUFBMkQsSUFBM0QsQ0FBaUUsRUFEdEU7QUFFRCxLQUhELE1BR087QUFDTGxCLE1BQUFBLEdBQUcsQ0FBQ3VFLElBQUosQ0FBVSxvQ0FBVjtBQUNEOztBQUNELFdBQU82RSxtQkFBUDtBQUNEOztBQWxZNkI7O2VBc1lqQnhILHlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZ2V0Q2hyb21lZHJpdmVyRGlyLCBDRF9DRE4sIHJldHJpZXZlRGF0YSwgZ2V0T3NJbmZvLFxuICBPUywgWDY0LCBYODYsIE0xX0FSQ0hfU1VGRklYLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeHBhdGggZnJvbSAneHBhdGgnO1xuaW1wb3J0IHsgRE9NUGFyc2VyIH0gZnJvbSAnQHhtbGRvbS94bWxkb20nO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBzeXN0ZW0sIGZzLCBsb2dnZXIsIHRlbXBEaXIsIHppcCwgdXRpbCwgbmV0IH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuXG5jb25zdCBUSU1FT1VUX01TID0gMTUwMDA7XG5jb25zdCBNQVhfUEFSQUxMRUxfRE9XTkxPQURTID0gNTtcblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignQ2hyb21lZHJpdmVyU3RvcmFnZUNsaWVudCcpO1xuXG5cbmFzeW5jIGZ1bmN0aW9uIGlzQ3JjT2sgKHNyYywgY2hlY2tzdW0pIHtcbiAgY29uc3QgbWQ1ID0gYXdhaXQgZnMuaGFzaChzcmMsICdtZDUnKTtcbiAgcmV0dXJuIF8udG9Mb3dlcihtZDUpID09PSBfLnRvTG93ZXIoY2hlY2tzdW0pO1xufVxuXG5mdW5jdGlvbiBmaW5kQ2hpbGROb2RlIChwYXJlbnQsIGNoaWxkTmFtZSA9IG51bGwsIHRleHQgPSBudWxsKSB7XG4gIGlmICghY2hpbGROYW1lICYmICF0ZXh0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKCFwYXJlbnQuaGFzQ2hpbGROb2RlcygpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBmb3IgKGxldCBjaGlsZE5vZGVJZHggPSAwOyBjaGlsZE5vZGVJZHggPCBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGg7IGNoaWxkTm9kZUlkeCsrKSB7XG4gICAgY29uc3QgY2hpbGROb2RlID0gcGFyZW50LmNoaWxkTm9kZXNbY2hpbGROb2RlSWR4XTtcbiAgICBpZiAoY2hpbGROYW1lICYmICF0ZXh0ICYmIGNoaWxkTmFtZSA9PT0gY2hpbGROb2RlLmxvY2FsTmFtZSkge1xuICAgICAgcmV0dXJuIGNoaWxkTm9kZTtcbiAgICB9XG4gICAgaWYgKHRleHQpIHtcbiAgICAgIGNvbnN0IGNoaWxkVGV4dCA9IGV4dHJhY3ROb2RlVGV4dChjaGlsZE5vZGUpO1xuICAgICAgaWYgKCFjaGlsZFRleHQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoY2hpbGROYW1lICYmIGNoaWxkTmFtZSA9PT0gY2hpbGROb2RlLmxvY2FsTmFtZSAmJiB0ZXh0ID09PSBjaGlsZFRleHQpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkTm9kZTtcbiAgICAgIH1cbiAgICAgIGlmICghY2hpbGROYW1lICYmIHRleHQgPT09IGNoaWxkVGV4dCkge1xuICAgICAgICByZXR1cm4gY2hpbGROb2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdE5vZGVUZXh0IChub2RlKSB7XG4gIHJldHVybiAoIW5vZGUgfHwgIW5vZGUuZmlyc3RDaGlsZCB8fCAhdXRpbC5oYXNWYWx1ZShub2RlLmZpcnN0Q2hpbGQubm9kZVZhbHVlKSlcbiAgICA/IG51bGxcbiAgICA6IG5vZGUuZmlyc3RDaGlsZC5ub2RlVmFsdWU7XG59XG5cblxuY2xhc3MgQ2hyb21lZHJpdmVyU3RvcmFnZUNsaWVudCB7XG4gIGNvbnN0cnVjdG9yIChhcmdzID0ge30pIHtcbiAgICBjb25zdCB7XG4gICAgICBjaHJvbWVkcml2ZXJEaXIgPSBnZXRDaHJvbWVkcml2ZXJEaXIoKSxcbiAgICAgIHRpbWVvdXQgPSBUSU1FT1VUX01TLFxuICAgIH0gPSBhcmdzO1xuICAgIHRoaXMuY2hyb21lZHJpdmVyRGlyID0gY2hyb21lZHJpdmVyRGlyO1xuICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gICAgdGhpcy5tYXBwaW5nID0ge307XG4gIH1cblxuICAvKipcbiAgICogQHR5cGVkZWYge09iamVjdH0gQWRkaXRpb25hbERyaXZlckRldGFpbHNcbiAgICogQHByb3BlcnR5IHs/c3RyaW5nfSB2ZXJzaW9uIC0gQ2hyb21lZHJpdmVyIHZlcnNpb25cbiAgICogb3IgYG51bGxgIGlmIGl0IGNhbm5vdCBiZSBmb3VuZFxuICAgKiBAcHJvcGVydHkgez9zdHJpbmd9IG1pbkJyb3dzZXJWZXJzaW9uIC0gVGhlIG1pbmltdW0gYnJvd3NlciB2ZXJzaW9uXG4gICAqIHN1cHBvcnRlZCBieSBjaHJvbWVkcml2ZXIgb3IgYG51bGxgIGlmIGl0IGNhbm5vdCBiZSBmb3VuZFxuICAgKi9cblxuICAvKipcbiAgICogR2V0cyBhZGRpdGlvbmFsIGNocm9tZWRyaXZlciBkZXRhaWxzIGZyb20gY2hyb21lZHJpdmVyXG4gICAqIHJlbGVhc2Ugbm90ZXNcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgLSBSZWxlYXNlIG5vdGVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGNocm9tZWRyaXZlclxuICAgKiBAcmV0dXJucyB7QWRkaXRpb25hbERyaXZlckRldGFpbHN9XG4gICAqL1xuICBwYXJzZU5vdGVzIChjb250ZW50KSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgY29uc3QgdmVyc2lvbk1hdGNoID0gL15cXHMqWy1dK0Nocm9tZURyaXZlcltcXERdKyhbXFxkLl0rKS9pbS5leGVjKGNvbnRlbnQpO1xuICAgIGlmICh2ZXJzaW9uTWF0Y2gpIHtcbiAgICAgIHJlc3VsdC52ZXJzaW9uID0gdmVyc2lvbk1hdGNoWzFdO1xuICAgIH1cbiAgICBjb25zdCBtaW5Ccm93c2VyVmVyc2lvbk1hdGNoID0gL15cXHMqU3VwcG9ydHMgQ2hyb21lW1xcRF0rKFxcZCspL2ltLmV4ZWMoY29udGVudCk7XG4gICAgaWYgKG1pbkJyb3dzZXJWZXJzaW9uTWF0Y2gpIHtcbiAgICAgIHJlc3VsdC5taW5Ccm93c2VyVmVyc2lvbiA9IG1pbkJyb3dzZXJWZXJzaW9uTWF0Y2hbMV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogRG93bmxvYWRzIGNocm9tZWRyaXZlciByZWxlYXNlIG5vdGVzIGFuZCBwdXRzIHRoZW1cbiAgICogaW50byB0aGUgZGljdGlvbmFyeSBhcmd1bWVudFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZHJpdmVyS2V5IC0gRHJpdmVyIHZlcnNpb24gcGx1cyBhcmNoaXZlIG5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5vdGVzVXJsIC0gVGhlIFVSTCBvZiBjaHJvbWVkcml2ZXIgbm90ZXNcbiAgICogQHBhcmFtIHtPYmplY3R9IGluZm9EaWN0IC0gVGhlIGRpY3Rpb25hcnkgY29udGFpbmluZyBkcml2ZXIgaW5mby5cbiAgICogVGhlIG1ldGhvZCBjYWxsIG11dGF0ZXMgYnkgbWVyZ2luZyBgQWRkaXRpb25hbERyaXZlckRldGFpbHNgXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGUgcmVsZWFzZSBub3RlcyBjYW5ub3QgYmUgZG93bmxvYWRlZFxuICAgKi9cbiAgYXN5bmMgcmV0cmlldmVBZGRpdGlvbmFsRHJpdmVySW5mbyAoZHJpdmVyS2V5LCBub3Rlc1VybCwgaW5mb0RpY3QpIHtcbiAgICBjb25zdCBub3RlcyA9IGF3YWl0IHJldHJpZXZlRGF0YShub3Rlc1VybCwge1xuICAgICAgJ3VzZXItYWdlbnQnOiAnYXBwaXVtJyxcbiAgICAgIGFjY2VwdDogJyovKicsXG4gICAgfSwgeyB0aW1lb3V0OiB0aGlzLnRpbWVvdXQgfSk7XG4gICAgY29uc3QgeyBtaW5Ccm93c2VyVmVyc2lvbiB9ID0gdGhpcy5wYXJzZU5vdGVzKG5vdGVzKTtcbiAgICBpZiAoIW1pbkJyb3dzZXJWZXJzaW9uKSB7XG4gICAgICBsb2cuZGVidWcoYFRoZSBkcml2ZXIgJyR7ZHJpdmVyS2V5fScgZG9lcyBub3QgY29udGFpbiB2YWxpZCByZWxlYXNlIG5vdGVzIGF0ICR7bm90ZXNVcmx9LiBgICtcbiAgICAgICAgYFNraXBwaW5nIGl0YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGluZm9EaWN0Lm1pbkJyb3dzZXJWZXJzaW9uID0gbWluQnJvd3NlclZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIGNocm9tZWRyaXZlciBzdG9yYWdlIFhNTCBhbmQgc3RvcmVzXG4gICAqIHRoZSBwYXJzZWQgcmVzdWx0cyBpbnRvIGB0aGlzLm1hcHBpbmdgXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRG9jdW1lbnR9IGRvYyAtIFRoZSBET00gcmVwcmVzZW50YXRpb25cbiAgICogb2YgdGhlIGNocm9tZWRyaXZlciBzdG9yYWdlIFhNTFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFBhcnNlTm90ZXMgW3RydWVdIC0gSWYgc2V0IHRvIGB0cnVlYFxuICAgKiB0aGVuIGFkZGl0aW9uYWwgZHJpdmVycyBpbmZvcm1hdGlvbiBpcyBnb2luZyB0byBiZSBwYXJzZWRcbiAgICogYW5kIGFzc2lnbmVkIHRvIGB0aGlzLm1hcHBpbmdgXG4gICAqL1xuICBhc3luYyBwYXJzZVN0b3JhZ2VYbWwgKGRvYywgc2hvdWxkUGFyc2VOb3RlcyA9IHRydWUpIHtcbiAgICBjb25zdCBkcml2ZXJOb2RlcyA9IHhwYXRoLnNlbGVjdChgLy8qW2xvY2FsLW5hbWUoLik9J0NvbnRlbnRzJ11gLCBkb2MpO1xuICAgIGxvZy5kZWJ1ZyhgUGFyc2VkICR7ZHJpdmVyTm9kZXMubGVuZ3RofSBlbnRyaWVzIGZyb20gc3RvcmFnZSBYTUxgKTtcbiAgICBpZiAoXy5pc0VtcHR5KGRyaXZlck5vZGVzKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgZm9yIChjb25zdCBkcml2ZXJOb2RlIG9mIGRyaXZlck5vZGVzKSB7XG4gICAgICBjb25zdCBrZXkgPSBleHRyYWN0Tm9kZVRleHQoZmluZENoaWxkTm9kZShkcml2ZXJOb2RlLCAnS2V5JykpO1xuICAgICAgaWYgKCFfLmluY2x1ZGVzKGtleSwgJy9jaHJvbWVkcml2ZXJfJykpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGV0YWcgPSBleHRyYWN0Tm9kZVRleHQoZmluZENoaWxkTm9kZShkcml2ZXJOb2RlLCAnRVRhZycpKTtcbiAgICAgIGlmICghZXRhZykge1xuICAgICAgICBsb2cuZGVidWcoYFRoZSBlbnRyeSAnJHtrZXl9JyBkb2VzIG5vdCBjb250YWluIHRoZSBjaGVja3N1bS4gU2tpcHBpbmcgaXRgKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNkSW5mbyA9IHtcbiAgICAgICAgdXJsOiBgJHtDRF9DRE59LyR7a2V5fWAsXG4gICAgICAgIGV0YWc6IF8udHJpbShldGFnLCAnXCInKSxcbiAgICAgICAgdmVyc2lvbjogXy5maXJzdChrZXkuc3BsaXQoJy8nKSksXG4gICAgICB9O1xuICAgICAgdGhpcy5tYXBwaW5nW2tleV0gPSBjZEluZm87XG5cbiAgICAgIGNvbnN0IG5vdGVzUGF0aCA9IGAke2NkSW5mby52ZXJzaW9ufS9ub3Rlcy50eHRgO1xuICAgICAgY29uc3QgaXNOb3Rlc1ByZXNlbnQgPSAhIWRyaXZlck5vZGVzXG4gICAgICAgIC5yZWR1Y2UoKGFjYywgbm9kZSkgPT4gYWNjIHx8IGZpbmRDaGlsZE5vZGUobm9kZSwgJ0tleScsIG5vdGVzUGF0aCksIGZhbHNlKTtcbiAgICAgIGlmICghaXNOb3Rlc1ByZXNlbnQpIHtcbiAgICAgICAgY2RJbmZvLm1pbkJyb3dzZXJWZXJzaW9uID0gbnVsbDtcbiAgICAgICAgaWYgKHNob3VsZFBhcnNlTm90ZXMpIHtcbiAgICAgICAgICBsb2cuaW5mbyhgVGhlIGVudHJ5ICcke2tleX0nIGRvZXMgbm90IGNvbnRhaW4gYW55IG5vdGVzLiBTa2lwcGluZyBpdGApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIGlmICghc2hvdWxkUGFyc2VOb3Rlcykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLnJldHJpZXZlQWRkaXRpb25hbERyaXZlckluZm8oa2V5LCBgJHtDRF9DRE59LyR7bm90ZXNQYXRofWAsIGNkSW5mbykpO1xuICAgICAgaWYgKHByb21pc2VzLmxlbmd0aCAlIE1BWF9QQVJBTExFTF9ET1dOTE9BRFMgPT09IDApIHtcbiAgICAgICAgYXdhaXQgQi5hbGwocHJvbWlzZXMpO1xuICAgICAgfVxuICAgIH1cbiAgICBhd2FpdCBCLmFsbChwcm9taXNlcyk7XG4gICAgbG9nLmluZm8oYFRoZSB0b3RhbCBjb3VudCBvZiBlbnRyaWVzIGluIHRoZSBtYXBwaW5nOiAke18uc2l6ZSh0aGlzLm1hcHBpbmcpfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0eXBlZGVmIHtPYmplY3R9IERyaXZlckRldGFpbHNcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IHVybCAtIFRoZSBmdWxsIHVybCB0byB0aGUgY29ycmVzcG9uZGluZyBkcml2ZXIgaW5cbiAgICogdGhlIHJlbW90ZSBzdG9yYWdlXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBldGFnIC0gVGhlIENSQyBvZiB0aGUgZHJpdmVyIGFyY2hpdmVcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IHZlcnNpb24gLSBDaHJvbWVkcml2ZXIgdmVyc2lvblxuICAgKi9cblxuICAvKipcbiAgICogQHR5cGVkZWYge09iamVjdH0gQ2hyb21lZHJpdmVyc01hcHBpbmdcbiAgICogQHByb3BlcnR5IHtEcml2ZXJEZXRhaWxzfSAtIFRoZSBrZXlzIGFyZSB1bmlxdWUgZHJpdmVyIGlkZW50aWZpZXJzXG4gICAqICh2ZXJzaW9uL2FyY2hpdmUgbmFtZSkuIFRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcyBoYXZlIGBEcml2ZXJEZXRhaWxzYFxuICAgKiBjb250YWluaW5nIGNocm9tZWRyaXZlciBkZXRhaWxzXG4gICAqL1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgY2hyb21lZHJpdmVyIG1hcHBpbmcgZnJvbSB0aGUgc3RvcmFnZVxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFBhcnNlTm90ZXMgW3RydWVdIC0gaWYgc2V0IHRvIGB0cnVlYFxuICAgKiB0aGVuIGFkZGl0aW9uYWwgY2hyb21lZHJpdmVycyBpbmZvIGlzIGdvaW5nIHRvIGJlIHJldHJpZXZlZCBhbmRcbiAgICogcGFyc2VkIGZyb20gcmVsZWFzZSBub3Rlc1xuICAgKiBAcmV0dXJucyB7Q2hyb21lZHJpdmVyc01hcHBpbmd9XG4gICAqL1xuICBhc3luYyByZXRyaWV2ZU1hcHBpbmcgKHNob3VsZFBhcnNlTm90ZXMgPSB0cnVlKSB7XG4gICAgY29uc3QgeG1sID0gYXdhaXQgcmV0cmlldmVEYXRhKENEX0NETiwge1xuICAgICAgJ3VzZXItYWdlbnQnOiAnYXBwaXVtJyxcbiAgICAgIGFjY2VwdDogJ2FwcGxpY2F0aW9uL3htbCwgKi8qJyxcbiAgICB9LCB7IHRpbWVvdXQ6IHRoaXMudGltZW91dCB9KTtcbiAgICBjb25zdCBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHhtbCk7XG4gICAgYXdhaXQgdGhpcy5wYXJzZVN0b3JhZ2VYbWwoZG9jLCBzaG91bGRQYXJzZU5vdGVzKTtcbiAgICByZXR1cm4gXy5jbG9uZURlZXAodGhpcy5tYXBwaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyBkb3dubG9hZGVkIGNocm9tZWRyaXZlciBhcmNoaXZlXG4gICAqIGludG8gdGhlIGdpdmVuIGRlc3RpbmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzcmMgLSBUaGUgc291cmNlIGFyY2hpdmUgcGF0aFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZHN0IC0gVGhlIGRlc3RpbmF0aW9uIGNocm9tZWRyaXZlciBwYXRoXG4gICAqL1xuICBhc3luYyB1bnppcERyaXZlciAoc3JjLCBkc3QpIHtcbiAgICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHppcC5leHRyYWN0QWxsVG8oc3JjLCB0bXBSb290KTtcbiAgICAgIGNvbnN0IGNocm9tZWRyaXZlclBhdGggPSBhd2FpdCBmcy53YWxrRGlyKHRtcFJvb3QsIHRydWUsIChpdGVtUGF0aCwgaXNEaXJlY3RvcnkpID0+XG4gICAgICAgICFpc0RpcmVjdG9yeSAmJiBfLnRvTG93ZXIocGF0aC5wYXJzZShpdGVtUGF0aCkubmFtZSkgPT09ICdjaHJvbWVkcml2ZXInKTtcbiAgICAgIGlmICghY2hyb21lZHJpdmVyUGF0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBhcmNoaXZlIHdhcyB1bnppcHBlZCBwcm9wZXJseSwgYnV0IHdlIGNvdWxkIG5vdCBmaW5kIGFueSBjaHJvbWVkcml2ZXIgZXhlY3V0YWJsZScpO1xuICAgICAgfVxuICAgICAgbG9nLmRlYnVnKGBNb3ZpbmcgdGhlIGV4dHJhY3RlZCAnJHtwYXRoLmJhc2VuYW1lKGNocm9tZWRyaXZlclBhdGgpfScgdG8gJyR7ZHN0fSdgKTtcbiAgICAgIGF3YWl0IGZzLm12KGNocm9tZWRyaXZlclBhdGgsIGRzdCwge1xuICAgICAgICBta2RpcnA6IHRydWVcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBmcy5yaW1yYWYodG1wUm9vdCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEB0eXBlZGVmIHtPYmplY3R9IE9TSW5mb1xuICAgKiBAcHJvcGVydHkge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBob3N0IE9TXG4gICAqIENhbiBiZSBlaXRoZXIgYG1hY2AsIGB3aW5kb3dzYCBvciBgbGludXhgXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcmNoIC0gVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgaG9zdCBPRC5cbiAgICogQ2FuIGJlIGVpdGhlciBgMzJgIG9yIGA2NGBcbiAgICogQHByb3BlcnR5IHs/c3RyaW5nfSBoYXJkd2FyZU5hbWUgLSBUaGUgb3V0cHV0IG9mIGB1bmFtZSAtbWAgY29tbWFuZFxuICAgKiBvbiBsaW51eCBhbmQgbWFjIHN5c3RlbXMuIGBudWxsYCBvbiBXaW5kb3dzXG4gICAqL1xuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIGB0aGlzLm1hcHBpbmdgIHRvIG9ubHkgc2VsZWN0IG1hdGNoaW5nXG4gICAqIGNocm9tZWRyaXZlciBlbnRyaWVzIGJ5IG9wZXJhdGluZyBzeXN0ZW0gaW5mb3JtYXRpb25cbiAgICogYW5kL29yIGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uIG9wdGlvbnMgKGlmIHByb3ZpZGVkKVxuICAgKlxuICAgKiBAcGFyYW0gez9PU0luZm99IG9zSW5mb1xuICAgKiBAcGFyYW0gez9TeW5jT3B0aW9uc30gb3B0c1xuICAgKiBAcmV0dXJucyB7QXJyYXk8U3RyaW5nPn0gVGhlIGxpc3Qgb2YgZmlsdGVyZWQgY2hyb21lZHJpdmVyXG4gICAqIGVudHJ5IG5hbWVzICh2ZXJzaW9uL2FyY2hpdmUgbmFtZSlcbiAgICovXG4gIHNlbGVjdE1hdGNoaW5nRHJpdmVycyAob3NJbmZvLCBvcHRzID0ge30pIHtcbiAgICBjb25zdCB7XG4gICAgICBtaW5Ccm93c2VyVmVyc2lvbixcbiAgICAgIHZlcnNpb25zID0gW10sXG4gICAgfSA9IG9wdHM7XG4gICAgbGV0IGRyaXZlcnNUb1N5bmMgPSBfLmtleXModGhpcy5tYXBwaW5nKTtcblxuICAgIGlmICghXy5pc0VtcHR5KHZlcnNpb25zKSkge1xuICAgICAgLy8gSGFuZGxlIG9ubHkgc2VsZWN0ZWQgdmVyc2lvbnMgaWYgcmVxdWVzdGVkXG4gICAgICBsb2cuZGVidWcoYFNlbGVjdGluZyBjaHJvbWVkcml2ZXJzIHdob3NlIHZlcnNpb25zIG1hdGNoIHRvICR7dmVyc2lvbnN9YCk7XG4gICAgICBkcml2ZXJzVG9TeW5jID0gZHJpdmVyc1RvU3luY1xuICAgICAgICAuZmlsdGVyKChjZE5hbWUpID0+IHZlcnNpb25zLmluY2x1ZGVzKGAke3RoaXMubWFwcGluZ1tjZE5hbWVdLnZlcnNpb259YCkpO1xuXG4gICAgICBsb2cuZGVidWcoYEdvdCAke3V0aWwucGx1cmFsaXplKCdpdGVtJywgZHJpdmVyc1RvU3luYy5sZW5ndGgsIHRydWUpfWApO1xuICAgICAgaWYgKF8uaXNFbXB0eShkcml2ZXJzVG9TeW5jKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFpc05hTihtaW5Ccm93c2VyVmVyc2lvbikpIHtcbiAgICAgIC8vIE9ubHkgc2VsZWN0IGRyaXZlcnMgdGhhdCBzdXBwb3J0IHRoZSBjdXJyZW50IGJyb3dzZXIgd2hvc2UgbWFqb3IgdmVyc2lvbiBudW1iZXIgZXF1YWxzIHRvIGBtaW5Ccm93c2VyVmVyc2lvbmBcbiAgICAgIGNvbnN0IG1pbkJyb3dzZXJWZXJzaW9uSW50ID0gcGFyc2VJbnQobWluQnJvd3NlclZlcnNpb24sIDEwKTtcbiAgICAgIGxvZy5kZWJ1ZyhgU2VsZWN0aW5nIGNocm9tZWRyaXZlcnMgd2hvc2UgbWluaW11bSBzdXBwb3J0ZWQgYnJvd3NlciB2ZXJzaW9uIG1hdGNoZXMgdG8gJHttaW5Ccm93c2VyVmVyc2lvbkludH1gKTtcbiAgICAgIGxldCBjbG9zZXN0TWF0Y2hlZFZlcnNpb25OdW1iZXIgPSAwO1xuICAgICAgLy8gU2VsZWN0IHRoZSBuZXdlc3QgYXZhaWxhYmxlIGFuZCBjb21wYXRpYmxlIGNocm9tZWRyaXZlclxuICAgICAgZm9yIChjb25zdCBjZE5hbWUgb2YgZHJpdmVyc1RvU3luYykge1xuICAgICAgICBjb25zdCBjdXJyZW50TWluQnJvd3NlclZlcnNpb24gPSBwYXJzZUludCh0aGlzLm1hcHBpbmdbY2ROYW1lXS5taW5Ccm93c2VyVmVyc2lvbiwgMTApO1xuICAgICAgICBpZiAoIWlzTmFOKGN1cnJlbnRNaW5Ccm93c2VyVmVyc2lvbilcbiAgICAgICAgICAgICYmIGN1cnJlbnRNaW5Ccm93c2VyVmVyc2lvbiA8PSBtaW5Ccm93c2VyVmVyc2lvbkludFxuICAgICAgICAgICAgJiYgY2xvc2VzdE1hdGNoZWRWZXJzaW9uTnVtYmVyIDwgY3VycmVudE1pbkJyb3dzZXJWZXJzaW9uKSB7XG4gICAgICAgICAgY2xvc2VzdE1hdGNoZWRWZXJzaW9uTnVtYmVyID0gY3VycmVudE1pbkJyb3dzZXJWZXJzaW9uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkcml2ZXJzVG9TeW5jID0gZHJpdmVyc1RvU3luYy5maWx0ZXIoKGNkTmFtZSkgPT4gYCR7dGhpcy5tYXBwaW5nW2NkTmFtZV0ubWluQnJvd3NlclZlcnNpb259YCA9PT1cbiAgICAgICAgYCR7Y2xvc2VzdE1hdGNoZWRWZXJzaW9uTnVtYmVyID4gMCA/IGNsb3Nlc3RNYXRjaGVkVmVyc2lvbk51bWJlciA6IG1pbkJyb3dzZXJWZXJzaW9uSW50fWApO1xuXG4gICAgICBsb2cuZGVidWcoYEdvdCAke3V0aWwucGx1cmFsaXplKCdpdGVtJywgZHJpdmVyc1RvU3luYy5sZW5ndGgsIHRydWUpfWApO1xuICAgICAgaWYgKF8uaXNFbXB0eShkcml2ZXJzVG9TeW5jKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBsb2cuZGVidWcoYFdpbGwgc2VsZWN0IGNhbmRpZGF0ZSAke3V0aWwucGx1cmFsaXplKCdkcml2ZXInLCBkcml2ZXJzVG9TeW5jLmxlbmd0aCl9IGAgK1xuICAgICAgICBgdmVyc2lvbmVkIGFzICcke18udW5pcShkcml2ZXJzVG9TeW5jLm1hcCgoY2ROYW1lKSA9PiB0aGlzLm1hcHBpbmdbY2ROYW1lXS52ZXJzaW9uKSl9J2ApO1xuICAgIH1cblxuICAgIGlmICghXy5pc0VtcHR5KG9zSW5mbykpIHtcbiAgICAgIC8vIEZpbHRlciBvdXQgZHJpdmVycyBmb3IgdW5zdXBwb3J0ZWQgc3lzdGVtIGFyY2hpdGVjdHVyZXNcbiAgICAgIGxldCB7bmFtZSwgYXJjaCwgaGFyZHdhcmVOYW1lfSA9IG9zSW5mbztcbiAgICAgIGlmIChhcmNoID09PSBYNjQgJiYgIWRyaXZlcnNUb1N5bmMuc29tZSgoY2ROYW1lKSA9PiBjZE5hbWUuaW5jbHVkZXMoYF8ke25hbWV9JHtYNjR9YCkpKSB7XG4gICAgICAgIC8vIEZhbGwgYmFjayB0byB4ODYgYnVpbGQgaWYgeDY0IG9uZSBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGUgZ2l2ZW4gT1NcbiAgICAgICAgYXJjaCA9IFg4NjtcbiAgICAgIH1cbiAgICAgIGlmIChuYW1lID09PSBPUy5tYWMgJiYgXy5pbmNsdWRlcyhoYXJkd2FyZU5hbWUsICdhcm0nKVxuICAgICAgICAgICYmIGRyaXZlcnNUb1N5bmMuc29tZSgoY2ROYW1lKSA9PiBjZE5hbWUuaW5jbHVkZXMoTTFfQVJDSF9TVUZGSVgpKSkge1xuICAgICAgICAvLyBwcmVmZXIgZXhlY3V0YWJsZSBmb3IgTTEgYXJjaCBpZiBwcmVzZW50XG4gICAgICAgIGFyY2ggKz0gTTFfQVJDSF9TVUZGSVg7XG4gICAgICB9XG4gICAgICBsb2cuZGVidWcoYFNlbGVjdGluZyBjaHJvbWVkcml2ZXJzIHdob3NlIHBsYXRmb3JtIG1hdGNoZXMgdG8gJHtuYW1lfSR7YXJjaH1gKTtcbiAgICAgIGNvbnN0IHBsYXRmb3JtUmUgPSBuZXcgUmVnRXhwKGAoXFxcXGJ8Xykke25hbWV9JHthcmNofVxcXFxiYCk7XG4gICAgICBkcml2ZXJzVG9TeW5jID0gZHJpdmVyc1RvU3luYy5maWx0ZXIoKGNkTmFtZSkgPT4gcGxhdGZvcm1SZS50ZXN0KGNkTmFtZSkpO1xuICAgICAgbG9nLmRlYnVnKGBHb3QgJHt1dGlsLnBsdXJhbGl6ZSgnaXRlbScsIGRyaXZlcnNUb1N5bmMubGVuZ3RoLCB0cnVlKX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZHJpdmVyc1RvU3luYztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGdpdmVuIGNocm9tZWRyaXZlciBmcm9tIHRoZSBzdG9yYWdlXG4gICAqIGFuZCB1bnBhY2tzIGl0IGludG8gYHRoaXMuY2hyb21lZHJpdmVyRGlyYCBmb2xkZXJcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gVGhlIHVuaXF1ZSBkcml2ZXIgaW5kZXhcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRyaXZlcktleSAtIFRoZSBkcml2ZXIga2V5IGluIGB0aGlzLm1hcHBpbmdgXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmNoaXZlc1Jvb3QgLSBUaGUgdGVtcG9yYXJ5IGZvbGRlciBwYXRoIHRvIGV4dHJhY3RcbiAgICogZG93bmxvYWRlZCBhcmNoaXZlcyB0b1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzU3RyaWN0IFt0cnVlXSAtIFdoZXRoZXIgdG8gdGhyb3cgYW4gZXJyb3IgKGB0cnVlYClcbiAgICogb3IgcmV0dXJuIGEgYm9vbGVhbiByZXN1bHQgaWYgdGhlIGRyaXZlciByZXRyaWV2YWwgcHJvY2VzcyBmYWlsc1xuICAgKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSByZXRyaWV2aW5nIHRoZSBkcml2ZXJcbiAgICogYW5kIGBpc1N0cmljdGAgaXMgc2V0IHRvIGB0cnVlYFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gaWYgYHRydWVgIHRoZW4gdGhlIGNocm9tZWRyaXZlciBpcyBzdWNjZXNzZnVsbHlcbiAgICogZG93bmxvYWRlZCBhbmQgZXh0cmFjdGVkLlxuICAgKi9cbiAgYXN5bmMgcmV0cmlldmVEcml2ZXIgKGluZGV4LCBkcml2ZXJLZXksIGFyY2hpdmVzUm9vdCwgaXNTdHJpY3QgPSBmYWxzZSkge1xuICAgIGNvbnN0IHsgdXJsLCBldGFnLCB2ZXJzaW9uIH0gPSB0aGlzLm1hcHBpbmdbZHJpdmVyS2V5XTtcbiAgICBjb25zdCBhcmNoaXZlUGF0aCA9IHBhdGgucmVzb2x2ZShhcmNoaXZlc1Jvb3QsIGAke2luZGV4fS56aXBgKTtcbiAgICBsb2cuZGVidWcoYFJldHJpZXZpbmcgJyR7dXJsfScgdG8gJyR7YXJjaGl2ZVBhdGh9J2ApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuZXQuZG93bmxvYWRGaWxlKHVybCwgYXJjaGl2ZVBhdGgsIHtcbiAgICAgICAgaXNNZXRlcmVkOiBmYWxzZSxcbiAgICAgICAgdGltZW91dDogVElNRU9VVF9NU1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3QgbXNnID0gYENhbm5vdCBkb3dubG9hZCBjaHJvbWVkcml2ZXIgYXJjaGl2ZS4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWA7XG4gICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICB9XG4gICAgICBsb2cuZXJyb3IobXNnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFhd2FpdCBpc0NyY09rKGFyY2hpdmVQYXRoLCBldGFnKSkge1xuICAgICAgY29uc3QgbXNnID0gYFRoZSBjaGVja3N1bSBmb3IgdGhlIGRvd25sb2FkZWQgY2hyb21lZHJpdmVyICcke2RyaXZlcktleX0nIGRpZCBub3QgbWF0Y2hgO1xuICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfVxuICAgICAgbG9nLmVycm9yKG1zZyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGZpbGVOYW1lID0gYCR7cGF0aC5wYXJzZSh1cmwpLm5hbWV9X3Yke3ZlcnNpb259YCArXG4gICAgICAoc3lzdGVtLmlzV2luZG93cygpID8gJy5leGUnIDogJycpO1xuICAgIGNvbnN0IHRhcmdldFBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5jaHJvbWVkcml2ZXJEaXIsIGZpbGVOYW1lKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy51bnppcERyaXZlcihhcmNoaXZlUGF0aCwgdGFyZ2V0UGF0aCk7XG4gICAgICBhd2FpdCBmcy5jaG1vZCh0YXJnZXRQYXRoLCAwbzc1NSk7XG4gICAgICBsb2cuZGVidWcoYFBlcm1pc3Npb25zIG9mIHRoZSBmaWxlICcke3RhcmdldFBhdGh9JyBoYXZlIGJlZW4gY2hhbmdlZCB0byA3NTVgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICAgIGxvZy5lcnJvcihlLm1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBTeW5jT3B0aW9uc1xuICAgKiBAcHJvcGVydHkge0FycmF5PFN0cmluZz59IHZlcnNpb25zIC0gVGhlIGxpc3Qgb2YgY2hyb21lZHJpdmVyXG4gICAqIHZlcnNpb25zIHRvIHN5bmMuIElmIGVtcHR5ICh0aGUgZGVmYXVsdCB2YWx1ZSkgdGhlbiBhbGwgYXZhaWxhYmxlXG4gICAqIGNocm9tZWRyaXZlcnMgYXJlIGdvaW5nIHRvIGJlIGRvd25sb2FkZWQgYW5kIGV4dHJhY3RlZFxuICAgKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IG1pbkJyb3dzZXJWZXJzaW9uIC0gVGhlIG1pbnVtdW0gc3VwcG9ydGVkXG4gICAqIENocm9tZSB2ZXJzaW9uIHRoYXQgZG93bmxvYWRlZCBjaHJvbWVkcml2ZXJzIHNob3VsZCBzdXBwb3J0LiBDYW4gbWF0Y2hcbiAgICogbXVsdGlwbGUgZHJpdmVycy5cbiAgICogQHByb3BlcnR5IHs/T1NJbmZvfSBvc0luZm8gLSBTeXN0ZW0gaW5mb3JtYXRpb24gdXNlZCB0byBmaWx0ZXIgb3V0XG4gICAqIHRoZSBsaXN0IG9mIHRoZSByZXRyaWV2ZWQgZHJpdmVycy4gSWYgbm90IHByb3ZpZGVkIHRoZW4gdGhlIHNjcmlwdFxuICAgKiB3aWxsIHRyeSB0byByZXRyaWV2ZSBpdC5cbiAgICovXG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBjaHJvbWVkcml2ZXJzIGZyb20gdGhlIHJlbW90ZSBzdG9yYWdlXG4gICAqIHRvIHRoZSBsb2NhbCBmaWxlIHN5c3RlbVxuICAgKlxuICAgKiBAcGFyYW0gez9TeW5jT3B0aW9uc30gb3B0c1xuICAgKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlcmUgd2FzIGEgcHJvYmxlbSB3aGlsZSByZXRyaWV2aW5nXG4gICAqIHRoZSBkcml2ZXJzXG4gICAqIEByZXR1cm5zIHtBcnJheTxTdHJpbmd9IFRoZSBsaXN0IG9mIHN1Y2Nlc3NmdWxseSBzeW5jaHJvbml6ZWQgZHJpdmVyIGtleXNcbiAgICovXG4gIGFzeW5jIHN5bmNEcml2ZXJzIChvcHRzID0ge30pIHtcbiAgICBpZiAoXy5pc0VtcHR5KHRoaXMubWFwcGluZykpIHtcbiAgICAgIGF3YWl0IHRoaXMucmV0cmlldmVNYXBwaW5nKCEhb3B0cy5taW5Ccm93c2VyVmVyc2lvbik7XG4gICAgfVxuICAgIGlmIChfLmlzRW1wdHkodGhpcy5tYXBwaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmV0cmlldmUgY2hyb21lZHJpdmVycyBtYXBwaW5nIGZyb20gR29vZ2xlIHN0b3JhZ2UnKTtcbiAgICB9XG5cbiAgICBjb25zdCBkcml2ZXJzVG9TeW5jID0gdGhpcy5zZWxlY3RNYXRjaGluZ0RyaXZlcnMob3B0cy5vc0luZm8gPz8gYXdhaXQgZ2V0T3NJbmZvKCksIG9wdHMpO1xuICAgIGlmIChfLmlzRW1wdHkoZHJpdmVyc1RvU3luYykpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgVGhlcmUgYXJlIG5vIGRyaXZlcnMgdG8gc3luYy4gRXhpdGluZ2ApO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBsb2cuZGVidWcoYEdvdCAke3V0aWwucGx1cmFsaXplKCdkcml2ZXInLCBkcml2ZXJzVG9TeW5jLmxlbmd0aCwgdHJ1ZSl9IHRvIHN5bmM6IGAgK1xuICAgICAgSlNPTi5zdHJpbmdpZnkoZHJpdmVyc1RvU3luYywgbnVsbCwgMikpO1xuXG4gICAgY29uc3Qgc3luY2hyb25pemVkRHJpdmVycyA9IFtdO1xuICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgY29uc3QgYXJjaGl2ZXNSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gICAgdHJ5IHtcbiAgICAgIGZvciAoY29uc3QgW2lkeCwgZHJpdmVyS2V5XSBvZiBkcml2ZXJzVG9TeW5jLmVudHJpZXMoKSkge1xuICAgICAgICBwcm9taXNlcy5wdXNoKChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKGF3YWl0IHRoaXMucmV0cmlldmVEcml2ZXIoaWR4LCBkcml2ZXJLZXksIGFyY2hpdmVzUm9vdCwgIV8uaXNFbXB0eShvcHRzKSkpIHtcbiAgICAgICAgICAgIHN5bmNocm9uaXplZERyaXZlcnMucHVzaChkcml2ZXJLZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkoKSk7XG5cbiAgICAgICAgaWYgKHByb21pc2VzLmxlbmd0aCAlIE1BWF9QQVJBTExFTF9ET1dOTE9BRFMgPT09IDApIHtcbiAgICAgICAgICBhd2FpdCBCLmFsbChwcm9taXNlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IEIuYWxsKHByb21pc2VzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgZnMucmltcmFmKGFyY2hpdmVzUm9vdCk7XG4gICAgfVxuICAgIGlmICghXy5pc0VtcHR5KHN5bmNocm9uaXplZERyaXZlcnMpKSB7XG4gICAgICBsb2cuaW5mbyhgU3VjY2Vzc2Z1bGx5IHN5bmNocm9uaXplZCBgICtcbiAgICAgICAgYCR7dXRpbC5wbHVyYWxpemUoJ2Nocm9tZWRyaXZlcicsIHN5bmNocm9uaXplZERyaXZlcnMubGVuZ3RoLCB0cnVlKX1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmluZm8oYE5vIGNocm9tZWRyaXZlcnMgd2VyZSBzeW5jaHJvbml6ZWRgKTtcbiAgICB9XG4gICAgcmV0dXJuIHN5bmNocm9uaXplZERyaXZlcnM7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBDaHJvbWVkcml2ZXJTdG9yYWdlQ2xpZW50O1xuIl0sImZpbGUiOiJsaWIvc3RvcmFnZS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
391
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3N0b3JhZ2UtY2xpZW50LmpzIiwibmFtZXMiOlsiVElNRU9VVF9NUyIsIk1BWF9QQVJBTExFTF9ET1dOTE9BRFMiLCJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJpc0NyY09rIiwic3JjIiwiY2hlY2tzdW0iLCJtZDUiLCJmcyIsImhhc2giLCJfIiwidG9Mb3dlciIsImZpbmRDaGlsZE5vZGUiLCJwYXJlbnQiLCJjaGlsZE5hbWUiLCJ0ZXh0IiwiaGFzQ2hpbGROb2RlcyIsImNoaWxkTm9kZUlkeCIsImNoaWxkTm9kZXMiLCJsZW5ndGgiLCJjaGlsZE5vZGUiLCJsb2NhbE5hbWUiLCJjaGlsZFRleHQiLCJleHRyYWN0Tm9kZVRleHQiLCJub2RlIiwiZmlyc3RDaGlsZCIsInV0aWwiLCJoYXNWYWx1ZSIsIm5vZGVWYWx1ZSIsIkNocm9tZWRyaXZlclN0b3JhZ2VDbGllbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3MiLCJjaHJvbWVkcml2ZXJEaXIiLCJ0aW1lb3V0IiwibWFwcGluZyIsInBhcnNlTm90ZXMiLCJjb250ZW50IiwicmVzdWx0IiwidmVyc2lvbk1hdGNoIiwiZXhlYyIsInZlcnNpb24iLCJtaW5Ccm93c2VyVmVyc2lvbk1hdGNoIiwibWluQnJvd3NlclZlcnNpb24iLCJyZXRyaWV2ZUFkZGl0aW9uYWxEcml2ZXJJbmZvIiwiZHJpdmVyS2V5Iiwibm90ZXNVcmwiLCJpbmZvRGljdCIsIm5vdGVzIiwiYWNjZXB0IiwiZGVidWciLCJwYXJzZVN0b3JhZ2VYbWwiLCJkb2MiLCJzaG91bGRQYXJzZU5vdGVzIiwiZHJpdmVyTm9kZXMiLCJ4cGF0aCIsInNlbGVjdCIsImlzRW1wdHkiLCJwcm9taXNlcyIsImRyaXZlck5vZGUiLCJrZXkiLCJpbmNsdWRlcyIsImV0YWciLCJjZEluZm8iLCJ1cmwiLCJDRF9DRE4iLCJ0cmltIiwiZmlyc3QiLCJzcGxpdCIsIm5vdGVzUGF0aCIsImlzTm90ZXNQcmVzZW50IiwicmVkdWNlIiwiYWNjIiwiaW5mbyIsInB1c2giLCJCIiwiYWxsIiwic2l6ZSIsInJldHJpZXZlTWFwcGluZyIsInhtbCIsIkRPTVBhcnNlciIsInBhcnNlRnJvbVN0cmluZyIsImNsb25lRGVlcCIsInVuemlwRHJpdmVyIiwiZHN0IiwidG1wUm9vdCIsInRlbXBEaXIiLCJvcGVuRGlyIiwiemlwIiwiZXh0cmFjdEFsbFRvIiwiY2hyb21lZHJpdmVyUGF0aCIsIndhbGtEaXIiLCJpdGVtUGF0aCIsImlzRGlyZWN0b3J5IiwicGF0aCIsInBhcnNlIiwibmFtZSIsIkVycm9yIiwiYmFzZW5hbWUiLCJtdiIsIm1rZGlycCIsInJpbXJhZiIsInNlbGVjdE1hdGNoaW5nRHJpdmVycyIsIm9zSW5mbyIsIm9wdHMiLCJ2ZXJzaW9ucyIsImRyaXZlcnNUb1N5bmMiLCJrZXlzIiwiZmlsdGVyIiwiY2ROYW1lIiwicGx1cmFsaXplIiwiaXNOYU4iLCJtaW5Ccm93c2VyVmVyc2lvbkludCIsInBhcnNlSW50IiwiY2xvc2VzdE1hdGNoZWRWZXJzaW9uTnVtYmVyIiwiY3VycmVudE1pbkJyb3dzZXJWZXJzaW9uIiwidW5pcSIsIm1hcCIsImFyY2giLCJoYXJkd2FyZU5hbWUiLCJYNjQiLCJzb21lIiwiWDg2IiwiT1MiLCJtYWMiLCJNMV9BUkNIX1NVRkZJWCIsInBsYXRmb3JtUmUiLCJSZWdFeHAiLCJ0ZXN0IiwicmV0cmlldmVEcml2ZXIiLCJpbmRleCIsImFyY2hpdmVzUm9vdCIsImlzU3RyaWN0IiwiYXJjaGl2ZVBhdGgiLCJyZXNvbHZlIiwibmV0IiwiZG93bmxvYWRGaWxlIiwiaXNNZXRlcmVkIiwiZSIsIm1zZyIsIm1lc3NhZ2UiLCJlcnJvciIsImZpbGVOYW1lIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwidGFyZ2V0UGF0aCIsImNobW9kIiwic3luY0RyaXZlcnMiLCJKU09OIiwic3RyaW5naWZ5Iiwic3luY2hyb25pemVkRHJpdmVycyIsImlkeCIsImVudHJpZXMiXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvc3RvcmFnZS1jbGllbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZ2V0Q2hyb21lZHJpdmVyRGlyLCBDRF9DRE4sIHJldHJpZXZlRGF0YSwgZ2V0T3NJbmZvLFxuICBPUywgWDY0LCBYODYsIE0xX0FSQ0hfU1VGRklYLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeHBhdGggZnJvbSAneHBhdGgnO1xuaW1wb3J0IHsgRE9NUGFyc2VyIH0gZnJvbSAnQHhtbGRvbS94bWxkb20nO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBzeXN0ZW0sIGZzLCBsb2dnZXIsIHRlbXBEaXIsIHppcCwgdXRpbCwgbmV0IH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuXG5jb25zdCBUSU1FT1VUX01TID0gMTUwMDA7XG5jb25zdCBNQVhfUEFSQUxMRUxfRE9XTkxPQURTID0gNTtcblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignQ2hyb21lZHJpdmVyU3RvcmFnZUNsaWVudCcpO1xuXG5cbmFzeW5jIGZ1bmN0aW9uIGlzQ3JjT2sgKHNyYywgY2hlY2tzdW0pIHtcbiAgY29uc3QgbWQ1ID0gYXdhaXQgZnMuaGFzaChzcmMsICdtZDUnKTtcbiAgcmV0dXJuIF8udG9Mb3dlcihtZDUpID09PSBfLnRvTG93ZXIoY2hlY2tzdW0pO1xufVxuXG5mdW5jdGlvbiBmaW5kQ2hpbGROb2RlIChwYXJlbnQsIGNoaWxkTmFtZSA9IG51bGwsIHRleHQgPSBudWxsKSB7XG4gIGlmICghY2hpbGROYW1lICYmICF0ZXh0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKCFwYXJlbnQuaGFzQ2hpbGROb2RlcygpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBmb3IgKGxldCBjaGlsZE5vZGVJZHggPSAwOyBjaGlsZE5vZGVJZHggPCBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGg7IGNoaWxkTm9kZUlkeCsrKSB7XG4gICAgY29uc3QgY2hpbGROb2RlID0gcGFyZW50LmNoaWxkTm9kZXNbY2hpbGROb2RlSWR4XTtcbiAgICBpZiAoY2hpbGROYW1lICYmICF0ZXh0ICYmIGNoaWxkTmFtZSA9PT0gY2hpbGROb2RlLmxvY2FsTmFtZSkge1xuICAgICAgcmV0dXJuIGNoaWxkTm9kZTtcbiAgICB9XG4gICAgaWYgKHRleHQpIHtcbiAgICAgIGNvbnN0IGNoaWxkVGV4dCA9IGV4dHJhY3ROb2RlVGV4dChjaGlsZE5vZGUpO1xuICAgICAgaWYgKCFjaGlsZFRleHQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoY2hpbGROYW1lICYmIGNoaWxkTmFtZSA9PT0gY2hpbGROb2RlLmxvY2FsTmFtZSAmJiB0ZXh0ID09PSBjaGlsZFRleHQpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkTm9kZTtcbiAgICAgIH1cbiAgICAgIGlmICghY2hpbGROYW1lICYmIHRleHQgPT09IGNoaWxkVGV4dCkge1xuICAgICAgICByZXR1cm4gY2hpbGROb2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdE5vZGVUZXh0IChub2RlKSB7XG4gIHJldHVybiAoIW5vZGUgfHwgIW5vZGUuZmlyc3RDaGlsZCB8fCAhdXRpbC5oYXNWYWx1ZShub2RlLmZpcnN0Q2hpbGQubm9kZVZhbHVlKSlcbiAgICA/IG51bGxcbiAgICA6IG5vZGUuZmlyc3RDaGlsZC5ub2RlVmFsdWU7XG59XG5cblxuY2xhc3MgQ2hyb21lZHJpdmVyU3RvcmFnZUNsaWVudCB7XG4gIGNvbnN0cnVjdG9yIChhcmdzID0ge30pIHtcbiAgICBjb25zdCB7XG4gICAgICBjaHJvbWVkcml2ZXJEaXIgPSBnZXRDaHJvbWVkcml2ZXJEaXIoKSxcbiAgICAgIHRpbWVvdXQgPSBUSU1FT1VUX01TLFxuICAgIH0gPSBhcmdzO1xuICAgIHRoaXMuY2hyb21lZHJpdmVyRGlyID0gY2hyb21lZHJpdmVyRGlyO1xuICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gICAgdGhpcy5tYXBwaW5nID0ge307XG4gIH1cblxuICAvKipcbiAgICogQHR5cGVkZWYge09iamVjdH0gQWRkaXRpb25hbERyaXZlckRldGFpbHNcbiAgICogQHByb3BlcnR5IHs/c3RyaW5nfSB2ZXJzaW9uIC0gQ2hyb21lZHJpdmVyIHZlcnNpb25cbiAgICogb3IgYG51bGxgIGlmIGl0IGNhbm5vdCBiZSBmb3VuZFxuICAgKiBAcHJvcGVydHkgez9zdHJpbmd9IG1pbkJyb3dzZXJWZXJzaW9uIC0gVGhlIG1pbmltdW0gYnJvd3NlciB2ZXJzaW9uXG4gICAqIHN1cHBvcnRlZCBieSBjaHJvbWVkcml2ZXIgb3IgYG51bGxgIGlmIGl0IGNhbm5vdCBiZSBmb3VuZFxuICAgKi9cblxuICAvKipcbiAgICogR2V0cyBhZGRpdGlvbmFsIGNocm9tZWRyaXZlciBkZXRhaWxzIGZyb20gY2hyb21lZHJpdmVyXG4gICAqIHJlbGVhc2Ugbm90ZXNcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgLSBSZWxlYXNlIG5vdGVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGNocm9tZWRyaXZlclxuICAgKiBAcmV0dXJucyB7QWRkaXRpb25hbERyaXZlckRldGFpbHN9XG4gICAqL1xuICBwYXJzZU5vdGVzIChjb250ZW50KSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgY29uc3QgdmVyc2lvbk1hdGNoID0gL15cXHMqWy1dK0Nocm9tZURyaXZlcltcXERdKyhbXFxkLl0rKS9pbS5leGVjKGNvbnRlbnQpO1xuICAgIGlmICh2ZXJzaW9uTWF0Y2gpIHtcbiAgICAgIHJlc3VsdC52ZXJzaW9uID0gdmVyc2lvbk1hdGNoWzFdO1xuICAgIH1cbiAgICBjb25zdCBtaW5Ccm93c2VyVmVyc2lvbk1hdGNoID0gL15cXHMqU3VwcG9ydHMgQ2hyb21lW1xcRF0rKFxcZCspL2ltLmV4ZWMoY29udGVudCk7XG4gICAgaWYgKG1pbkJyb3dzZXJWZXJzaW9uTWF0Y2gpIHtcbiAgICAgIHJlc3VsdC5taW5Ccm93c2VyVmVyc2lvbiA9IG1pbkJyb3dzZXJWZXJzaW9uTWF0Y2hbMV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogRG93bmxvYWRzIGNocm9tZWRyaXZlciByZWxlYXNlIG5vdGVzIGFuZCBwdXRzIHRoZW1cbiAgICogaW50byB0aGUgZGljdGlvbmFyeSBhcmd1bWVudFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZHJpdmVyS2V5IC0gRHJpdmVyIHZlcnNpb24gcGx1cyBhcmNoaXZlIG5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5vdGVzVXJsIC0gVGhlIFVSTCBvZiBjaHJvbWVkcml2ZXIgbm90ZXNcbiAgICogQHBhcmFtIHtPYmplY3R9IGluZm9EaWN0IC0gVGhlIGRpY3Rpb25hcnkgY29udGFpbmluZyBkcml2ZXIgaW5mby5cbiAgICogVGhlIG1ldGhvZCBjYWxsIG11dGF0ZXMgYnkgbWVyZ2luZyBgQWRkaXRpb25hbERyaXZlckRldGFpbHNgXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGUgcmVsZWFzZSBub3RlcyBjYW5ub3QgYmUgZG93bmxvYWRlZFxuICAgKi9cbiAgYXN5bmMgcmV0cmlldmVBZGRpdGlvbmFsRHJpdmVySW5mbyAoZHJpdmVyS2V5LCBub3Rlc1VybCwgaW5mb0RpY3QpIHtcbiAgICBjb25zdCBub3RlcyA9IGF3YWl0IHJldHJpZXZlRGF0YShub3Rlc1VybCwge1xuICAgICAgJ3VzZXItYWdlbnQnOiAnYXBwaXVtJyxcbiAgICAgIGFjY2VwdDogJyovKicsXG4gICAgfSwgeyB0aW1lb3V0OiB0aGlzLnRpbWVvdXQgfSk7XG4gICAgY29uc3QgeyBtaW5Ccm93c2VyVmVyc2lvbiB9ID0gdGhpcy5wYXJzZU5vdGVzKG5vdGVzKTtcbiAgICBpZiAoIW1pbkJyb3dzZXJWZXJzaW9uKSB7XG4gICAgICBsb2cuZGVidWcoYFRoZSBkcml2ZXIgJyR7ZHJpdmVyS2V5fScgZG9lcyBub3QgY29udGFpbiB2YWxpZCByZWxlYXNlIG5vdGVzIGF0ICR7bm90ZXNVcmx9LiBgICtcbiAgICAgICAgYFNraXBwaW5nIGl0YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGluZm9EaWN0Lm1pbkJyb3dzZXJWZXJzaW9uID0gbWluQnJvd3NlclZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIGNocm9tZWRyaXZlciBzdG9yYWdlIFhNTCBhbmQgc3RvcmVzXG4gICAqIHRoZSBwYXJzZWQgcmVzdWx0cyBpbnRvIGB0aGlzLm1hcHBpbmdgXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRG9jdW1lbnR9IGRvYyAtIFRoZSBET00gcmVwcmVzZW50YXRpb25cbiAgICogb2YgdGhlIGNocm9tZWRyaXZlciBzdG9yYWdlIFhNTFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFBhcnNlTm90ZXMgW3RydWVdIC0gSWYgc2V0IHRvIGB0cnVlYFxuICAgKiB0aGVuIGFkZGl0aW9uYWwgZHJpdmVycyBpbmZvcm1hdGlvbiBpcyBnb2luZyB0byBiZSBwYXJzZWRcbiAgICogYW5kIGFzc2lnbmVkIHRvIGB0aGlzLm1hcHBpbmdgXG4gICAqL1xuICBhc3luYyBwYXJzZVN0b3JhZ2VYbWwgKGRvYywgc2hvdWxkUGFyc2VOb3RlcyA9IHRydWUpIHtcbiAgICBjb25zdCBkcml2ZXJOb2RlcyA9IHhwYXRoLnNlbGVjdChgLy8qW2xvY2FsLW5hbWUoLik9J0NvbnRlbnRzJ11gLCBkb2MpO1xuICAgIGxvZy5kZWJ1ZyhgUGFyc2VkICR7ZHJpdmVyTm9kZXMubGVuZ3RofSBlbnRyaWVzIGZyb20gc3RvcmFnZSBYTUxgKTtcbiAgICBpZiAoXy5pc0VtcHR5KGRyaXZlck5vZGVzKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgZm9yIChjb25zdCBkcml2ZXJOb2RlIG9mIGRyaXZlck5vZGVzKSB7XG4gICAgICBjb25zdCBrZXkgPSBleHRyYWN0Tm9kZVRleHQoZmluZENoaWxkTm9kZShkcml2ZXJOb2RlLCAnS2V5JykpO1xuICAgICAgaWYgKCFfLmluY2x1ZGVzKGtleSwgJy9jaHJvbWVkcml2ZXJfJykpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGV0YWcgPSBleHRyYWN0Tm9kZVRleHQoZmluZENoaWxkTm9kZShkcml2ZXJOb2RlLCAnRVRhZycpKTtcbiAgICAgIGlmICghZXRhZykge1xuICAgICAgICBsb2cuZGVidWcoYFRoZSBlbnRyeSAnJHtrZXl9JyBkb2VzIG5vdCBjb250YWluIHRoZSBjaGVja3N1bS4gU2tpcHBpbmcgaXRgKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNkSW5mbyA9IHtcbiAgICAgICAgdXJsOiBgJHtDRF9DRE59LyR7a2V5fWAsXG4gICAgICAgIGV0YWc6IF8udHJpbShldGFnLCAnXCInKSxcbiAgICAgICAgdmVyc2lvbjogXy5maXJzdChrZXkuc3BsaXQoJy8nKSksXG4gICAgICB9O1xuICAgICAgdGhpcy5tYXBwaW5nW2tleV0gPSBjZEluZm87XG5cbiAgICAgIGNvbnN0IG5vdGVzUGF0aCA9IGAke2NkSW5mby52ZXJzaW9ufS9ub3Rlcy50eHRgO1xuICAgICAgY29uc3QgaXNOb3Rlc1ByZXNlbnQgPSAhIWRyaXZlck5vZGVzXG4gICAgICAgIC5yZWR1Y2UoKGFjYywgbm9kZSkgPT4gYWNjIHx8IGZpbmRDaGlsZE5vZGUobm9kZSwgJ0tleScsIG5vdGVzUGF0aCksIGZhbHNlKTtcbiAgICAgIGlmICghaXNOb3Rlc1ByZXNlbnQpIHtcbiAgICAgICAgY2RJbmZvLm1pbkJyb3dzZXJWZXJzaW9uID0gbnVsbDtcbiAgICAgICAgaWYgKHNob3VsZFBhcnNlTm90ZXMpIHtcbiAgICAgICAgICBsb2cuaW5mbyhgVGhlIGVudHJ5ICcke2tleX0nIGRvZXMgbm90IGNvbnRhaW4gYW55IG5vdGVzLiBTa2lwcGluZyBpdGApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIGlmICghc2hvdWxkUGFyc2VOb3Rlcykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLnJldHJpZXZlQWRkaXRpb25hbERyaXZlckluZm8oa2V5LCBgJHtDRF9DRE59LyR7bm90ZXNQYXRofWAsIGNkSW5mbykpO1xuICAgICAgaWYgKHByb21pc2VzLmxlbmd0aCAlIE1BWF9QQVJBTExFTF9ET1dOTE9BRFMgPT09IDApIHtcbiAgICAgICAgYXdhaXQgQi5hbGwocHJvbWlzZXMpO1xuICAgICAgfVxuICAgIH1cbiAgICBhd2FpdCBCLmFsbChwcm9taXNlcyk7XG4gICAgbG9nLmluZm8oYFRoZSB0b3RhbCBjb3VudCBvZiBlbnRyaWVzIGluIHRoZSBtYXBwaW5nOiAke18uc2l6ZSh0aGlzLm1hcHBpbmcpfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0eXBlZGVmIHtPYmplY3R9IERyaXZlckRldGFpbHNcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IHVybCAtIFRoZSBmdWxsIHVybCB0byB0aGUgY29ycmVzcG9uZGluZyBkcml2ZXIgaW5cbiAgICogdGhlIHJlbW90ZSBzdG9yYWdlXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBldGFnIC0gVGhlIENSQyBvZiB0aGUgZHJpdmVyIGFyY2hpdmVcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IHZlcnNpb24gLSBDaHJvbWVkcml2ZXIgdmVyc2lvblxuICAgKi9cblxuICAvKipcbiAgICogQHR5cGVkZWYge09iamVjdH0gQ2hyb21lZHJpdmVyc01hcHBpbmdcbiAgICogQHByb3BlcnR5IHtEcml2ZXJEZXRhaWxzfSAtIFRoZSBrZXlzIGFyZSB1bmlxdWUgZHJpdmVyIGlkZW50aWZpZXJzXG4gICAqICh2ZXJzaW9uL2FyY2hpdmUgbmFtZSkuIFRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcyBoYXZlIGBEcml2ZXJEZXRhaWxzYFxuICAgKiBjb250YWluaW5nIGNocm9tZWRyaXZlciBkZXRhaWxzXG4gICAqL1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgY2hyb21lZHJpdmVyIG1hcHBpbmcgZnJvbSB0aGUgc3RvcmFnZVxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFBhcnNlTm90ZXMgW3RydWVdIC0gaWYgc2V0IHRvIGB0cnVlYFxuICAgKiB0aGVuIGFkZGl0aW9uYWwgY2hyb21lZHJpdmVycyBpbmZvIGlzIGdvaW5nIHRvIGJlIHJldHJpZXZlZCBhbmRcbiAgICogcGFyc2VkIGZyb20gcmVsZWFzZSBub3Rlc1xuICAgKiBAcmV0dXJucyB7Q2hyb21lZHJpdmVyc01hcHBpbmd9XG4gICAqL1xuICBhc3luYyByZXRyaWV2ZU1hcHBpbmcgKHNob3VsZFBhcnNlTm90ZXMgPSB0cnVlKSB7XG4gICAgY29uc3QgeG1sID0gYXdhaXQgcmV0cmlldmVEYXRhKENEX0NETiwge1xuICAgICAgJ3VzZXItYWdlbnQnOiAnYXBwaXVtJyxcbiAgICAgIGFjY2VwdDogJ2FwcGxpY2F0aW9uL3htbCwgKi8qJyxcbiAgICB9LCB7IHRpbWVvdXQ6IHRoaXMudGltZW91dCB9KTtcbiAgICBjb25zdCBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHhtbCk7XG4gICAgYXdhaXQgdGhpcy5wYXJzZVN0b3JhZ2VYbWwoZG9jLCBzaG91bGRQYXJzZU5vdGVzKTtcbiAgICByZXR1cm4gXy5jbG9uZURlZXAodGhpcy5tYXBwaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyBkb3dubG9hZGVkIGNocm9tZWRyaXZlciBhcmNoaXZlXG4gICAqIGludG8gdGhlIGdpdmVuIGRlc3RpbmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzcmMgLSBUaGUgc291cmNlIGFyY2hpdmUgcGF0aFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZHN0IC0gVGhlIGRlc3RpbmF0aW9uIGNocm9tZWRyaXZlciBwYXRoXG4gICAqL1xuICBhc3luYyB1bnppcERyaXZlciAoc3JjLCBkc3QpIHtcbiAgICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHppcC5leHRyYWN0QWxsVG8oc3JjLCB0bXBSb290KTtcbiAgICAgIGNvbnN0IGNocm9tZWRyaXZlclBhdGggPSBhd2FpdCBmcy53YWxrRGlyKHRtcFJvb3QsIHRydWUsIChpdGVtUGF0aCwgaXNEaXJlY3RvcnkpID0+XG4gICAgICAgICFpc0RpcmVjdG9yeSAmJiBfLnRvTG93ZXIocGF0aC5wYXJzZShpdGVtUGF0aCkubmFtZSkgPT09ICdjaHJvbWVkcml2ZXInKTtcbiAgICAgIGlmICghY2hyb21lZHJpdmVyUGF0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBhcmNoaXZlIHdhcyB1bnppcHBlZCBwcm9wZXJseSwgYnV0IHdlIGNvdWxkIG5vdCBmaW5kIGFueSBjaHJvbWVkcml2ZXIgZXhlY3V0YWJsZScpO1xuICAgICAgfVxuICAgICAgbG9nLmRlYnVnKGBNb3ZpbmcgdGhlIGV4dHJhY3RlZCAnJHtwYXRoLmJhc2VuYW1lKGNocm9tZWRyaXZlclBhdGgpfScgdG8gJyR7ZHN0fSdgKTtcbiAgICAgIGF3YWl0IGZzLm12KGNocm9tZWRyaXZlclBhdGgsIGRzdCwge1xuICAgICAgICBta2RpcnA6IHRydWVcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBmcy5yaW1yYWYodG1wUm9vdCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEB0eXBlZGVmIHtPYmplY3R9IE9TSW5mb1xuICAgKiBAcHJvcGVydHkge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBob3N0IE9TXG4gICAqIENhbiBiZSBlaXRoZXIgYG1hY2AsIGB3aW5kb3dzYCBvciBgbGludXhgXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcmNoIC0gVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgaG9zdCBPRC5cbiAgICogQ2FuIGJlIGVpdGhlciBgMzJgIG9yIGA2NGBcbiAgICogQHByb3BlcnR5IHs/c3RyaW5nfSBoYXJkd2FyZU5hbWUgLSBUaGUgb3V0cHV0IG9mIGB1bmFtZSAtbWAgY29tbWFuZFxuICAgKiBvbiBsaW51eCBhbmQgbWFjIHN5c3RlbXMuIGBudWxsYCBvbiBXaW5kb3dzXG4gICAqL1xuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIGB0aGlzLm1hcHBpbmdgIHRvIG9ubHkgc2VsZWN0IG1hdGNoaW5nXG4gICAqIGNocm9tZWRyaXZlciBlbnRyaWVzIGJ5IG9wZXJhdGluZyBzeXN0ZW0gaW5mb3JtYXRpb25cbiAgICogYW5kL29yIGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uIG9wdGlvbnMgKGlmIHByb3ZpZGVkKVxuICAgKlxuICAgKiBAcGFyYW0gez9PU0luZm99IG9zSW5mb1xuICAgKiBAcGFyYW0gez9TeW5jT3B0aW9uc30gb3B0c1xuICAgKiBAcmV0dXJucyB7QXJyYXk8U3RyaW5nPn0gVGhlIGxpc3Qgb2YgZmlsdGVyZWQgY2hyb21lZHJpdmVyXG4gICAqIGVudHJ5IG5hbWVzICh2ZXJzaW9uL2FyY2hpdmUgbmFtZSlcbiAgICovXG4gIHNlbGVjdE1hdGNoaW5nRHJpdmVycyAob3NJbmZvLCBvcHRzID0ge30pIHtcbiAgICBjb25zdCB7XG4gICAgICBtaW5Ccm93c2VyVmVyc2lvbixcbiAgICAgIHZlcnNpb25zID0gW10sXG4gICAgfSA9IG9wdHM7XG4gICAgbGV0IGRyaXZlcnNUb1N5bmMgPSBfLmtleXModGhpcy5tYXBwaW5nKTtcblxuICAgIGlmICghXy5pc0VtcHR5KHZlcnNpb25zKSkge1xuICAgICAgLy8gSGFuZGxlIG9ubHkgc2VsZWN0ZWQgdmVyc2lvbnMgaWYgcmVxdWVzdGVkXG4gICAgICBsb2cuZGVidWcoYFNlbGVjdGluZyBjaHJvbWVkcml2ZXJzIHdob3NlIHZlcnNpb25zIG1hdGNoIHRvICR7dmVyc2lvbnN9YCk7XG4gICAgICBkcml2ZXJzVG9TeW5jID0gZHJpdmVyc1RvU3luY1xuICAgICAgICAuZmlsdGVyKChjZE5hbWUpID0+IHZlcnNpb25zLmluY2x1ZGVzKGAke3RoaXMubWFwcGluZ1tjZE5hbWVdLnZlcnNpb259YCkpO1xuXG4gICAgICBsb2cuZGVidWcoYEdvdCAke3V0aWwucGx1cmFsaXplKCdpdGVtJywgZHJpdmVyc1RvU3luYy5sZW5ndGgsIHRydWUpfWApO1xuICAgICAgaWYgKF8uaXNFbXB0eShkcml2ZXJzVG9TeW5jKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFpc05hTihtaW5Ccm93c2VyVmVyc2lvbikpIHtcbiAgICAgIC8vIE9ubHkgc2VsZWN0IGRyaXZlcnMgdGhhdCBzdXBwb3J0IHRoZSBjdXJyZW50IGJyb3dzZXIgd2hvc2UgbWFqb3IgdmVyc2lvbiBudW1iZXIgZXF1YWxzIHRvIGBtaW5Ccm93c2VyVmVyc2lvbmBcbiAgICAgIGNvbnN0IG1pbkJyb3dzZXJWZXJzaW9uSW50ID0gcGFyc2VJbnQobWluQnJvd3NlclZlcnNpb24sIDEwKTtcbiAgICAgIGxvZy5kZWJ1ZyhgU2VsZWN0aW5nIGNocm9tZWRyaXZlcnMgd2hvc2UgbWluaW11bSBzdXBwb3J0ZWQgYnJvd3NlciB2ZXJzaW9uIG1hdGNoZXMgdG8gJHttaW5Ccm93c2VyVmVyc2lvbkludH1gKTtcbiAgICAgIGxldCBjbG9zZXN0TWF0Y2hlZFZlcnNpb25OdW1iZXIgPSAwO1xuICAgICAgLy8gU2VsZWN0IHRoZSBuZXdlc3QgYXZhaWxhYmxlIGFuZCBjb21wYXRpYmxlIGNocm9tZWRyaXZlclxuICAgICAgZm9yIChjb25zdCBjZE5hbWUgb2YgZHJpdmVyc1RvU3luYykge1xuICAgICAgICBjb25zdCBjdXJyZW50TWluQnJvd3NlclZlcnNpb24gPSBwYXJzZUludCh0aGlzLm1hcHBpbmdbY2ROYW1lXS5taW5Ccm93c2VyVmVyc2lvbiwgMTApO1xuICAgICAgICBpZiAoIWlzTmFOKGN1cnJlbnRNaW5Ccm93c2VyVmVyc2lvbilcbiAgICAgICAgICAgICYmIGN1cnJlbnRNaW5Ccm93c2VyVmVyc2lvbiA8PSBtaW5Ccm93c2VyVmVyc2lvbkludFxuICAgICAgICAgICAgJiYgY2xvc2VzdE1hdGNoZWRWZXJzaW9uTnVtYmVyIDwgY3VycmVudE1pbkJyb3dzZXJWZXJzaW9uKSB7XG4gICAgICAgICAgY2xvc2VzdE1hdGNoZWRWZXJzaW9uTnVtYmVyID0gY3VycmVudE1pbkJyb3dzZXJWZXJzaW9uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkcml2ZXJzVG9TeW5jID0gZHJpdmVyc1RvU3luYy5maWx0ZXIoKGNkTmFtZSkgPT4gYCR7dGhpcy5tYXBwaW5nW2NkTmFtZV0ubWluQnJvd3NlclZlcnNpb259YCA9PT1cbiAgICAgICAgYCR7Y2xvc2VzdE1hdGNoZWRWZXJzaW9uTnVtYmVyID4gMCA/IGNsb3Nlc3RNYXRjaGVkVmVyc2lvbk51bWJlciA6IG1pbkJyb3dzZXJWZXJzaW9uSW50fWApO1xuXG4gICAgICBsb2cuZGVidWcoYEdvdCAke3V0aWwucGx1cmFsaXplKCdpdGVtJywgZHJpdmVyc1RvU3luYy5sZW5ndGgsIHRydWUpfWApO1xuICAgICAgaWYgKF8uaXNFbXB0eShkcml2ZXJzVG9TeW5jKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBsb2cuZGVidWcoYFdpbGwgc2VsZWN0IGNhbmRpZGF0ZSAke3V0aWwucGx1cmFsaXplKCdkcml2ZXInLCBkcml2ZXJzVG9TeW5jLmxlbmd0aCl9IGAgK1xuICAgICAgICBgdmVyc2lvbmVkIGFzICcke18udW5pcShkcml2ZXJzVG9TeW5jLm1hcCgoY2ROYW1lKSA9PiB0aGlzLm1hcHBpbmdbY2ROYW1lXS52ZXJzaW9uKSl9J2ApO1xuICAgIH1cblxuICAgIGlmICghXy5pc0VtcHR5KG9zSW5mbykpIHtcbiAgICAgIC8vIEZpbHRlciBvdXQgZHJpdmVycyBmb3IgdW5zdXBwb3J0ZWQgc3lzdGVtIGFyY2hpdGVjdHVyZXNcbiAgICAgIGxldCB7bmFtZSwgYXJjaCwgaGFyZHdhcmVOYW1lfSA9IG9zSW5mbztcbiAgICAgIGlmIChhcmNoID09PSBYNjQgJiYgIWRyaXZlcnNUb1N5bmMuc29tZSgoY2ROYW1lKSA9PiBjZE5hbWUuaW5jbHVkZXMoYF8ke25hbWV9JHtYNjR9YCkpKSB7XG4gICAgICAgIC8vIEZhbGwgYmFjayB0byB4ODYgYnVpbGQgaWYgeDY0IG9uZSBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGUgZ2l2ZW4gT1NcbiAgICAgICAgYXJjaCA9IFg4NjtcbiAgICAgIH1cbiAgICAgIGlmIChuYW1lID09PSBPUy5tYWMgJiYgXy5pbmNsdWRlcyhoYXJkd2FyZU5hbWUsICdhcm0nKVxuICAgICAgICAgICYmIGRyaXZlcnNUb1N5bmMuc29tZSgoY2ROYW1lKSA9PiBjZE5hbWUuaW5jbHVkZXMoTTFfQVJDSF9TVUZGSVgpKSkge1xuICAgICAgICAvLyBwcmVmZXIgZXhlY3V0YWJsZSBmb3IgTTEgYXJjaCBpZiBwcmVzZW50XG4gICAgICAgIGFyY2ggKz0gTTFfQVJDSF9TVUZGSVg7XG4gICAgICB9XG4gICAgICBsb2cuZGVidWcoYFNlbGVjdGluZyBjaHJvbWVkcml2ZXJzIHdob3NlIHBsYXRmb3JtIG1hdGNoZXMgdG8gJHtuYW1lfSR7YXJjaH1gKTtcbiAgICAgIGNvbnN0IHBsYXRmb3JtUmUgPSBuZXcgUmVnRXhwKGAoXFxcXGJ8Xykke25hbWV9JHthcmNofVxcXFxiYCk7XG4gICAgICBkcml2ZXJzVG9TeW5jID0gZHJpdmVyc1RvU3luYy5maWx0ZXIoKGNkTmFtZSkgPT4gcGxhdGZvcm1SZS50ZXN0KGNkTmFtZSkpO1xuICAgICAgbG9nLmRlYnVnKGBHb3QgJHt1dGlsLnBsdXJhbGl6ZSgnaXRlbScsIGRyaXZlcnNUb1N5bmMubGVuZ3RoLCB0cnVlKX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZHJpdmVyc1RvU3luYztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGdpdmVuIGNocm9tZWRyaXZlciBmcm9tIHRoZSBzdG9yYWdlXG4gICAqIGFuZCB1bnBhY2tzIGl0IGludG8gYHRoaXMuY2hyb21lZHJpdmVyRGlyYCBmb2xkZXJcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gVGhlIHVuaXF1ZSBkcml2ZXIgaW5kZXhcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRyaXZlcktleSAtIFRoZSBkcml2ZXIga2V5IGluIGB0aGlzLm1hcHBpbmdgXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmNoaXZlc1Jvb3QgLSBUaGUgdGVtcG9yYXJ5IGZvbGRlciBwYXRoIHRvIGV4dHJhY3RcbiAgICogZG93bmxvYWRlZCBhcmNoaXZlcyB0b1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzU3RyaWN0IFt0cnVlXSAtIFdoZXRoZXIgdG8gdGhyb3cgYW4gZXJyb3IgKGB0cnVlYClcbiAgICogb3IgcmV0dXJuIGEgYm9vbGVhbiByZXN1bHQgaWYgdGhlIGRyaXZlciByZXRyaWV2YWwgcHJvY2VzcyBmYWlsc1xuICAgKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSByZXRyaWV2aW5nIHRoZSBkcml2ZXJcbiAgICogYW5kIGBpc1N0cmljdGAgaXMgc2V0IHRvIGB0cnVlYFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gaWYgYHRydWVgIHRoZW4gdGhlIGNocm9tZWRyaXZlciBpcyBzdWNjZXNzZnVsbHlcbiAgICogZG93bmxvYWRlZCBhbmQgZXh0cmFjdGVkLlxuICAgKi9cbiAgYXN5bmMgcmV0cmlldmVEcml2ZXIgKGluZGV4LCBkcml2ZXJLZXksIGFyY2hpdmVzUm9vdCwgaXNTdHJpY3QgPSBmYWxzZSkge1xuICAgIGNvbnN0IHsgdXJsLCBldGFnLCB2ZXJzaW9uIH0gPSB0aGlzLm1hcHBpbmdbZHJpdmVyS2V5XTtcbiAgICBjb25zdCBhcmNoaXZlUGF0aCA9IHBhdGgucmVzb2x2ZShhcmNoaXZlc1Jvb3QsIGAke2luZGV4fS56aXBgKTtcbiAgICBsb2cuZGVidWcoYFJldHJpZXZpbmcgJyR7dXJsfScgdG8gJyR7YXJjaGl2ZVBhdGh9J2ApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuZXQuZG93bmxvYWRGaWxlKHVybCwgYXJjaGl2ZVBhdGgsIHtcbiAgICAgICAgaXNNZXRlcmVkOiBmYWxzZSxcbiAgICAgICAgdGltZW91dDogVElNRU9VVF9NU1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3QgbXNnID0gYENhbm5vdCBkb3dubG9hZCBjaHJvbWVkcml2ZXIgYXJjaGl2ZS4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWA7XG4gICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICB9XG4gICAgICBsb2cuZXJyb3IobXNnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFhd2FpdCBpc0NyY09rKGFyY2hpdmVQYXRoLCBldGFnKSkge1xuICAgICAgY29uc3QgbXNnID0gYFRoZSBjaGVja3N1bSBmb3IgdGhlIGRvd25sb2FkZWQgY2hyb21lZHJpdmVyICcke2RyaXZlcktleX0nIGRpZCBub3QgbWF0Y2hgO1xuICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfVxuICAgICAgbG9nLmVycm9yKG1zZyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGZpbGVOYW1lID0gYCR7cGF0aC5wYXJzZSh1cmwpLm5hbWV9X3Yke3ZlcnNpb259YCArXG4gICAgICAoc3lzdGVtLmlzV2luZG93cygpID8gJy5leGUnIDogJycpO1xuICAgIGNvbnN0IHRhcmdldFBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5jaHJvbWVkcml2ZXJEaXIsIGZpbGVOYW1lKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy51bnppcERyaXZlcihhcmNoaXZlUGF0aCwgdGFyZ2V0UGF0aCk7XG4gICAgICBhd2FpdCBmcy5jaG1vZCh0YXJnZXRQYXRoLCAwbzc1NSk7XG4gICAgICBsb2cuZGVidWcoYFBlcm1pc3Npb25zIG9mIHRoZSBmaWxlICcke3RhcmdldFBhdGh9JyBoYXZlIGJlZW4gY2hhbmdlZCB0byA3NTVgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICAgIGxvZy5lcnJvcihlLm1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBTeW5jT3B0aW9uc1xuICAgKiBAcHJvcGVydHkge0FycmF5PFN0cmluZz59IHZlcnNpb25zIC0gVGhlIGxpc3Qgb2YgY2hyb21lZHJpdmVyXG4gICAqIHZlcnNpb25zIHRvIHN5bmMuIElmIGVtcHR5ICh0aGUgZGVmYXVsdCB2YWx1ZSkgdGhlbiBhbGwgYXZhaWxhYmxlXG4gICAqIGNocm9tZWRyaXZlcnMgYXJlIGdvaW5nIHRvIGJlIGRvd25sb2FkZWQgYW5kIGV4dHJhY3RlZFxuICAgKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IG1pbkJyb3dzZXJWZXJzaW9uIC0gVGhlIG1pbnVtdW0gc3VwcG9ydGVkXG4gICAqIENocm9tZSB2ZXJzaW9uIHRoYXQgZG93bmxvYWRlZCBjaHJvbWVkcml2ZXJzIHNob3VsZCBzdXBwb3J0LiBDYW4gbWF0Y2hcbiAgICogbXVsdGlwbGUgZHJpdmVycy5cbiAgICogQHByb3BlcnR5IHs/T1NJbmZvfSBvc0luZm8gLSBTeXN0ZW0gaW5mb3JtYXRpb24gdXNlZCB0byBmaWx0ZXIgb3V0XG4gICAqIHRoZSBsaXN0IG9mIHRoZSByZXRyaWV2ZWQgZHJpdmVycy4gSWYgbm90IHByb3ZpZGVkIHRoZW4gdGhlIHNjcmlwdFxuICAgKiB3aWxsIHRyeSB0byByZXRyaWV2ZSBpdC5cbiAgICovXG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBjaHJvbWVkcml2ZXJzIGZyb20gdGhlIHJlbW90ZSBzdG9yYWdlXG4gICAqIHRvIHRoZSBsb2NhbCBmaWxlIHN5c3RlbVxuICAgKlxuICAgKiBAcGFyYW0gez9TeW5jT3B0aW9uc30gb3B0c1xuICAgKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlcmUgd2FzIGEgcHJvYmxlbSB3aGlsZSByZXRyaWV2aW5nXG4gICAqIHRoZSBkcml2ZXJzXG4gICAqIEByZXR1cm5zIHtBcnJheTxTdHJpbmd9IFRoZSBsaXN0IG9mIHN1Y2Nlc3NmdWxseSBzeW5jaHJvbml6ZWQgZHJpdmVyIGtleXNcbiAgICovXG4gIGFzeW5jIHN5bmNEcml2ZXJzIChvcHRzID0ge30pIHtcbiAgICBpZiAoXy5pc0VtcHR5KHRoaXMubWFwcGluZykpIHtcbiAgICAgIGF3YWl0IHRoaXMucmV0cmlldmVNYXBwaW5nKCEhb3B0cy5taW5Ccm93c2VyVmVyc2lvbik7XG4gICAgfVxuICAgIGlmIChfLmlzRW1wdHkodGhpcy5tYXBwaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmV0cmlldmUgY2hyb21lZHJpdmVycyBtYXBwaW5nIGZyb20gR29vZ2xlIHN0b3JhZ2UnKTtcbiAgICB9XG5cbiAgICBjb25zdCBkcml2ZXJzVG9TeW5jID0gdGhpcy5zZWxlY3RNYXRjaGluZ0RyaXZlcnMob3B0cy5vc0luZm8gPz8gYXdhaXQgZ2V0T3NJbmZvKCksIG9wdHMpO1xuICAgIGlmIChfLmlzRW1wdHkoZHJpdmVyc1RvU3luYykpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgVGhlcmUgYXJlIG5vIGRyaXZlcnMgdG8gc3luYy4gRXhpdGluZ2ApO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBsb2cuZGVidWcoYEdvdCAke3V0aWwucGx1cmFsaXplKCdkcml2ZXInLCBkcml2ZXJzVG9TeW5jLmxlbmd0aCwgdHJ1ZSl9IHRvIHN5bmM6IGAgK1xuICAgICAgSlNPTi5zdHJpbmdpZnkoZHJpdmVyc1RvU3luYywgbnVsbCwgMikpO1xuXG4gICAgY29uc3Qgc3luY2hyb25pemVkRHJpdmVycyA9IFtdO1xuICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgY29uc3QgYXJjaGl2ZXNSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gICAgdHJ5IHtcbiAgICAgIGZvciAoY29uc3QgW2lkeCwgZHJpdmVyS2V5XSBvZiBkcml2ZXJzVG9TeW5jLmVudHJpZXMoKSkge1xuICAgICAgICBwcm9taXNlcy5wdXNoKChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKGF3YWl0IHRoaXMucmV0cmlldmVEcml2ZXIoaWR4LCBkcml2ZXJLZXksIGFyY2hpdmVzUm9vdCwgIV8uaXNFbXB0eShvcHRzKSkpIHtcbiAgICAgICAgICAgIHN5bmNocm9uaXplZERyaXZlcnMucHVzaChkcml2ZXJLZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkoKSk7XG5cbiAgICAgICAgaWYgKHByb21pc2VzLmxlbmd0aCAlIE1BWF9QQVJBTExFTF9ET1dOTE9BRFMgPT09IDApIHtcbiAgICAgICAgICBhd2FpdCBCLmFsbChwcm9taXNlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IEIuYWxsKHByb21pc2VzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgZnMucmltcmFmKGFyY2hpdmVzUm9vdCk7XG4gICAgfVxuICAgIGlmICghXy5pc0VtcHR5KHN5bmNocm9uaXplZERyaXZlcnMpKSB7XG4gICAgICBsb2cuaW5mbyhgU3VjY2Vzc2Z1bGx5IHN5bmNocm9uaXplZCBgICtcbiAgICAgICAgYCR7dXRpbC5wbHVyYWxpemUoJ2Nocm9tZWRyaXZlcicsIHN5bmNocm9uaXplZERyaXZlcnMubGVuZ3RoLCB0cnVlKX1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmluZm8oYE5vIGNocm9tZWRyaXZlcnMgd2VyZSBzeW5jaHJvbml6ZWRgKTtcbiAgICB9XG4gICAgcmV0dXJuIHN5bmNocm9uaXplZERyaXZlcnM7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBDaHJvbWVkcml2ZXJTdG9yYWdlQ2xpZW50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
@@ -133,4 +133,4 @@ function generateLogPrefix(obj, sessionId = null) {
133
133
  }require('source-map-support').install();
134
134
 
135
135
 
136
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91dGlscy5qcyJdLCJuYW1lcyI6WyJyb290RGlyIiwicGF0aCIsImJhc2VuYW1lIiwiX19kaXJuYW1lIiwicmVzb2x2ZSIsInByb2Nlc3MiLCJlbnYiLCJOT19QUkVDT01QSUxFIiwiQ0hST01FRFJJVkVSX0NIUk9NRV9NQVBQSU5HIiwicmVxdWlyZSIsIkNEX1ZFUiIsIm5wbV9jb25maWdfY2hyb21lZHJpdmVyX3ZlcnNpb24iLCJDSFJPTUVEUklWRVJfVkVSU0lPTiIsImdldE1vc3RSZWNlbnRDaHJvbWVkcml2ZXIiLCJDRF9CQVNFX0RJUiIsIkNEX0NETiIsIm5wbV9jb25maWdfY2hyb21lZHJpdmVyX2NkbnVybCIsIkNIUk9NRURSSVZFUl9DRE5VUkwiLCJPUyIsImxpbnV4Iiwid2luZG93cyIsIm1hYyIsIlg2NCIsIlg4NiIsIk0xX0FSQ0hfU1VGRklYIiwiQ0RfRVhFQ1VUQUJMRV9QUkVGSVgiLCJtYXBwaW5nIiwiXyIsImlzRW1wdHkiLCJFcnJvciIsImxhc3QiLCJrZXlzIiwic29ydCIsImNvbXBhcmVWZXJzaW9ucyIsImdldENocm9tZVZlcnNpb24iLCJhZGIiLCJidW5kbGVJZCIsInZlcnNpb25OYW1lIiwiZ2V0UGFja2FnZUluZm8iLCJnZXRDaHJvbWVkcml2ZXJEaXIiLCJvc05hbWUiLCJnZXRPc05hbWUiLCJnZXRDaHJvbWVkcml2ZXJCaW5hcnlQYXRoIiwicGF0aFN1ZmZpeCIsInBhdGhzIiwiZnMiLCJnbG9iIiwiY3dkIiwiYWJzb2x1dGUiLCJub2Nhc2UiLCJub2RpciIsInN0cmljdCIsImZpcnN0IiwicmV0cmlldmVEYXRhIiwidXJsIiwiaGVhZGVycyIsIm9wdHMiLCJ0aW1lb3V0IiwicmVzcG9uc2VUeXBlIiwiZGF0YSIsIm1lbW9pemUiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJpc01hYyIsImdldE9zSW5mbyIsIm5hbWUiLCJhcmNoIiwiaGFyZHdhcmVOYW1lIiwidHJpbSIsImdldEJhc2VEcml2ZXJJbnN0YW5jZSIsIkJhc2VEcml2ZXIiLCJnZW5lcmF0ZUxvZ1ByZWZpeCIsIm9iaiIsInNlc3Npb25JZCIsImhlbHBlcnMiLCJnZW5lcmF0ZURyaXZlckxvZ1ByZWZpeCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsT0FBTyxHQUFHQyxjQUFLQyxRQUFMLENBQWNDLFNBQWQsTUFBNkIsS0FBN0IsR0FDWkYsY0FBS0csT0FBTCxDQUFhRCxTQUFiLEVBQXdCRSxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsYUFBWixHQUE0QixJQUE1QixHQUFtQyxPQUEzRCxDQURZLEdBRVpKLFNBRko7O0FBSUEsTUFBTUssMkJBQTJCLEdBQUdDLE9BQU8sQ0FBQ1IsY0FBS0csT0FBTCxDQUFhSixPQUFiLEVBQXNCLFFBQXRCLEVBQWdDLGNBQWhDLENBQUQsQ0FBM0M7OztBQUVBLE1BQU1VLE1BQU0sR0FBR0wsT0FBTyxDQUFDQyxHQUFSLENBQVlLLCtCQUFaLElBQ1ZOLE9BQU8sQ0FBQ0MsR0FBUixDQUFZTSxvQkFERixJQUVWQyx5QkFBeUIsRUFGOUI7OztBQUdBLE1BQU1DLFdBQVcsR0FBR2IsY0FBS0csT0FBTCxDQUFhRCxTQUFiLEVBQXdCLElBQXhCLEVBQThCLElBQTlCLEVBQW9DLGNBQXBDLENBQXBCOzs7QUFDQSxNQUFNWSxNQUFNLEdBQUdWLE9BQU8sQ0FBQ0MsR0FBUixDQUFZVSw4QkFBWixJQUNWWCxPQUFPLENBQUNDLEdBQVIsQ0FBWVcsbUJBREYsSUFFViw2Q0FGTDs7QUFHQSxNQUFNQyxFQUFFLEdBQUc7QUFDVEMsRUFBQUEsS0FBSyxFQUFFLE9BREU7QUFFVEMsRUFBQUEsT0FBTyxFQUFFLEtBRkE7QUFHVEMsRUFBQUEsR0FBRyxFQUFFO0FBSEksQ0FBWDs7QUFLQSxNQUFNQyxHQUFHLEdBQUcsSUFBWjs7QUFDQSxNQUFNQyxHQUFHLEdBQUcsSUFBWjs7QUFDQSxNQUFNQyxjQUFjLEdBQUcsS0FBdkI7O0FBQ0EsTUFBTUMs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QUE0Qm5DLGdCQUFFeUMsSUFBRixDQUFPLE1BQU0sd0JBQUssT0FBTCxFQUFjLENBQUMsSUFBRCxDQUFkLENBQWI7QUFIckMsR0FBUDtBQUtELENBTmlCLENBQWxCOzs7O0FBUUEsTUFBTUMscUJBQXFCLEdBQUcxQyxnQkFBRWlDLE9BQUYsQ0FBVSxNQUFNLElBQUlVLHNCQUFKLENBQWUsRUFBZixFQUFtQixLQUFuQixDQUFoQixDQUE5Qjs7QUFTQSxTQUFTQyxpQkFBVCxDQUE0QkMsR0FBNUIsRUFBaUNDLFNBQVMsR0FBRyxJQUE3QyxFQUFtRDtBQUNqRCxTQUFPSixxQkFBcUIsR0FBR0ssT0FBeEIsQ0FBZ0NDLHVCQUFoQyxDQUF3REgsR0FBeEQsRUFBNkRDLFNBQTdELENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBzeXN0ZW0sIGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IEJhc2VEcml2ZXIgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGNvbXBhcmVWZXJzaW9ucyBmcm9tICdjb21wYXJlLXZlcnNpb25zJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcblxuXG5jb25zdCByb290RGlyID0gcGF0aC5iYXNlbmFtZShfX2Rpcm5hbWUpID09PSAnbGliJ1xuICA/IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsIHByb2Nlc3MuZW52Lk5PX1BSRUNPTVBJTEUgPyAnLi4nIDogJy4uLy4uJylcbiAgOiBfX2Rpcm5hbWU7XG4vLyBDaHJvbWVkcml2ZXIgdmVyc2lvbjogbWluaW11bSBDaHJvbWUgdmVyc2lvblxuY29uc3QgQ0hST01FRFJJVkVSX0NIUk9NRV9NQVBQSU5HID0gcmVxdWlyZShwYXRoLnJlc29sdmUocm9vdERpciwgJ2NvbmZpZycsICdtYXBwaW5nLmpzb24nKSk7XG5cbmNvbnN0IENEX1ZFUiA9IHByb2Nlc3MuZW52Lm5wbV9jb25maWdfY2hyb21lZHJpdmVyX3ZlcnNpb25cbiAgfHwgcHJvY2Vzcy5lbnYuQ0hST01FRFJJVkVSX1ZFUlNJT05cbiAgfHwgZ2V0TW9zdFJlY2VudENocm9tZWRyaXZlcigpO1xuY29uc3QgQ0RfQkFTRV9ESVIgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnY2hyb21lZHJpdmVyJyk7XG5jb25zdCBDRF9DRE4gPSBwcm9jZXNzLmVudi5ucG1fY29uZmlnX2Nocm9tZWRyaXZlcl9jZG51cmxcbiAgfHwgcHJvY2Vzcy5lbnYuQ0hST01FRFJJVkVSX0NETlVSTFxuICB8fCAnaHR0cHM6Ly9jaHJvbWVkcml2ZXIuc3RvcmFnZS5nb29nbGVhcGlzLmNvbSc7XG5jb25zdCBPUyA9IHtcbiAgbGludXg6ICdsaW51eCcsXG4gIHdpbmRvd3M6ICd3aW4nLFxuICBtYWM6ICdtYWMnXG59O1xuY29uc3QgWDY0ID0gJzY0JztcbmNvbnN0IFg4NiA9ICczMic7XG5jb25zdCBNMV9BUkNIX1NVRkZJWCA9ICdfbTEnO1xuY29uc3QgQ0RfRVhFQ1VUQUJMRV9QUkVGSVggPSAnY2hyb21lZHJpdmVyJztcblxuXG5mdW5jdGlvbiBnZXRNb3N0UmVjZW50Q2hyb21lZHJpdmVyIChtYXBwaW5nID0gQ0hST01FRFJJVkVSX0NIUk9NRV9NQVBQSU5HKSB7XG4gIGlmIChfLmlzRW1wdHkobWFwcGluZykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBnZXQgbW9zdCByZWNlbnQgQ2hyb21lZHJpdmVyIHZlcnNpb24gZnJvbSBlbXB0eSBtYXBwaW5nJyk7XG4gIH1cbiAgcmV0dXJuIF8ubGFzdChfLmtleXMobWFwcGluZykuc29ydChjb21wYXJlVmVyc2lvbnMpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0Q2hyb21lVmVyc2lvbiAoYWRiLCBidW5kbGVJZCkge1xuICBjb25zdCB7dmVyc2lvbk5hbWV9ID0gYXdhaXQgYWRiLmdldFBhY2thZ2VJbmZvKGJ1bmRsZUlkKTtcbiAgcmV0dXJuIHZlcnNpb25OYW1lO1xufVxuXG5mdW5jdGlvbiBnZXRDaHJvbWVkcml2ZXJEaXIgKG9zTmFtZSA9IGdldE9zTmFtZSgpKSB7XG4gIHJldHVybiBwYXRoLnJlc29sdmUoQ0RfQkFTRV9ESVIsIG9zTmFtZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENocm9tZWRyaXZlckJpbmFyeVBhdGggKG9zTmFtZSA9IGdldE9zTmFtZSgpKSB7XG4gIGNvbnN0IHJvb3REaXIgPSBnZXRDaHJvbWVkcml2ZXJEaXIob3NOYW1lKTtcbiAgY29uc3QgcGF0aFN1ZmZpeCA9IG9zTmFtZSA9PT0gT1Mud2luZG93cyA/ICcuZXhlJyA6ICcnO1xuICBjb25zdCBwYXRocyA9IGF3YWl0IGZzLmdsb2IoYCR7Q0RfRVhFQ1VUQUJMRV9QUkVGSVh9KiR7cGF0aFN1ZmZpeH1gLCB7XG4gICAgY3dkOiByb290RGlyLFxuICAgIGFic29sdXRlOiB0cnVlLFxuICAgIG5vY2FzZTogdHJ1ZSxcbiAgICBub2RpcjogdHJ1ZSxcbiAgICBzdHJpY3Q6IGZhbHNlLFxuICB9KTtcbiAgcmV0dXJuIF8uaXNFbXB0eShwYXRocylcbiAgICA/IHBhdGgucmVzb2x2ZShyb290RGlyLCBgJHtDRF9FWEVDVVRBQkxFX1BSRUZJWH0ke3BhdGhTdWZmaXh9YClcbiAgICA6IF8uZmlyc3QocGF0aHMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZURhdGEgKHVybCwgaGVhZGVycywgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0aW1lb3V0ID0gNTAwMCxcbiAgICByZXNwb25zZVR5cGUgPSAndGV4dCcsXG4gIH0gPSBvcHRzO1xuICByZXR1cm4gKGF3YWl0IGF4aW9zKHtcbiAgICB1cmwsXG4gICAgaGVhZGVycyxcbiAgICB0aW1lb3V0LFxuICAgIHJlc3BvbnNlVHlwZSxcbiAgfSkpLmRhdGE7XG59XG5cbmNvbnN0IGdldE9zTmFtZSA9IF8ubWVtb2l6ZShmdW5jdGlvbiBnZXRPc05hbWUgKCkge1xuICBpZiAoc3lzdGVtLmlzV2luZG93cygpKSB7XG4gICAgcmV0dXJuIE9TLndpbmRvd3M7XG4gIH1cbiAgaWYgKHN5c3RlbS5pc01hYygpKSB7XG4gICAgcmV0dXJuIE9TLm1hYztcbiAgfVxuICByZXR1cm4gT1MubGludXg7XG59KTtcblxuY29uc3QgZ2V0T3NJbmZvID0gXy5tZW1vaXplKGFzeW5jIGZ1bmN0aW9uIGdldE9zSW5mbyAoKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogZ2V0T3NOYW1lKCksXG4gICAgYXJjaDogYXdhaXQgc3lzdGVtLmFyY2goKSxcbiAgICBoYXJkd2FyZU5hbWU6IHN5c3RlbS5pc1dpbmRvd3MoKSA/IG51bGwgOiBfLnRyaW0oYXdhaXQgZXhlYygndW5hbWUnLCBbJy1tJ10pKSxcbiAgfTtcbn0pO1xuXG5jb25zdCBnZXRCYXNlRHJpdmVySW5zdGFuY2UgPSBfLm1lbW9pemUoKCkgPT4gbmV3IEJhc2VEcml2ZXIoe30sIGZhbHNlKSk7XG5cbi8qKlxuICogR2VuZXJhdGVzIGxvZyBwcmVmaXggc3RyaW5nXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9iaiBsb2cgb3duZXIgaW5zdGFuY2VcbiAqIEBwYXJhbSB7c3RyaW5nP30gc2Vzc2lvbklkIE9wdGlvbmFsIHNlc3Npb24gaWRlbnRpZmllclxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVMb2dQcmVmaXggKG9iaiwgc2Vzc2lvbklkID0gbnVsbCkge1xuICByZXR1cm4gZ2V0QmFzZURyaXZlckluc3RhbmNlKCkuaGVscGVycy5nZW5lcmF0ZURyaXZlckxvZ1ByZWZpeChvYmosIHNlc3Npb25JZCk7XG59XG5cblxuZXhwb3J0IHtcbiAgZ2V0Q2hyb21lVmVyc2lvbiwgZ2V0Q2hyb21lZHJpdmVyRGlyLCBnZXRDaHJvbWVkcml2ZXJCaW5hcnlQYXRoLCBnZXRPc05hbWUsXG4gIENEX0JBU0VfRElSLCBDRF9DRE4sIENEX1ZFUiwgQ0hST01FRFJJVkVSX0NIUk9NRV9NQVBQSU5HLCBnZXRNb3N0UmVjZW50Q2hyb21lZHJpdmVyLFxuICByZXRyaWV2ZURhdGEsIGdldE9zSW5mbywgT1MsIFg2NCwgWDg2LCBNMV9BUkNIX1NVRkZJWCwgZ2VuZXJhdGVMb2dQcmVmaXgsXG59O1xuIl0sImZpbGUiOiJsaWIvdXRpbHMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
136
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3V0aWxzLmpzIiwibmFtZXMiOlsicm9vdERpciIsInBhdGgiLCJiYXNlbmFtZSIsIl9fZGlybmFtZSIsInJlc29sdmUiLCJwcm9jZXNzIiwiZW52IiwiTk9fUFJFQ09NUElMRSIsIkNIUk9NRURSSVZFUl9DSFJPTUVfTUFQUElORyIsInJlcXVpcmUiLCJDRF9WRVIiLCJucG1fY29uZmlnX2Nocm9tZWRyaXZlcl92ZXJzaW9uIiwiQ0hST01FRFJJVkVSX1ZFUlNJT04iLCJnZXRNb3N0UmVjZW50Q2hyb21lZHJpdmVyIiwiQ0RfQkFTRV9ESVIiLCJDRF9DRE4iLCJucG1fY29uZmlnX2Nocm9tZWRyaXZlcl9jZG51cmwiLCJDSFJPTUVEUklWRVJfQ0ROVVJMIiwiT1MiLCJsaW51eCIsIndpbmRvd3MiLCJtYWMiLCJYNjQiLCJYODYiLCJNMV9BUkNIX1NVRkZJWCIsIkNEX0VYRUNVVEFCTEVfUFJFRklYIiwibWFwcGluZyIsIl8iLCJpc0VtcHR5IiwiRXJyb3IiLCJsYXN0Iiwia2V5cyIsInNvcnQiLCJjb21wYXJlVmVyc2lvbnMiLCJnZXRDaHJvbWVWZXJzaW9uIiwiYWRiIiwiYnVuZGxlSWQiLCJ2ZXJzaW9uTmFtZSIsImdldFBhY2thZ2VJbmZvIiwiZ2V0Q2hyb21lZHJpdmVyRGlyIiwib3NOYW1lIiwiZ2V0T3NOYW1lIiwiZ2V0Q2hyb21lZHJpdmVyQmluYXJ5UGF0aCIsInBhdGhTdWZmaXgiLCJwYXRocyIsImZzIiwiZ2xvYiIsImN3ZCIsImFic29sdXRlIiwibm9jYXNlIiwibm9kaXIiLCJzdHJpY3QiLCJmaXJzdCIsInJldHJpZXZlRGF0YSIsInVybCIsImhlYWRlcnMiLCJvcHRzIiwidGltZW91dCIsInJlc3BvbnNlVHlwZSIsImRhdGEiLCJtZW1vaXplIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwiaXNNYWMiLCJnZXRPc0luZm8iLCJuYW1lIiwiYXJjaCIsImhhcmR3YXJlTmFtZSIsInRyaW0iLCJnZXRCYXNlRHJpdmVySW5zdGFuY2UiLCJCYXNlRHJpdmVyIiwiZ2VuZXJhdGVMb2dQcmVmaXgiLCJvYmoiLCJzZXNzaW9uSWQiLCJoZWxwZXJzIiwiZ2VuZXJhdGVEcml2ZXJMb2dQcmVmaXgiXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHN5c3RlbSwgZnMgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgQmFzZURyaXZlciB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgY29tcGFyZVZlcnNpb25zIGZyb20gJ2NvbXBhcmUtdmVyc2lvbnMnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuXG5cbmNvbnN0IHJvb3REaXIgPSBwYXRoLmJhc2VuYW1lKF9fZGlybmFtZSkgPT09ICdsaWInXG4gID8gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgcHJvY2Vzcy5lbnYuTk9fUFJFQ09NUElMRSA/ICcuLicgOiAnLi4vLi4nKVxuICA6IF9fZGlybmFtZTtcbi8vIENocm9tZWRyaXZlciB2ZXJzaW9uOiBtaW5pbXVtIENocm9tZSB2ZXJzaW9uXG5jb25zdCBDSFJPTUVEUklWRVJfQ0hST01FX01BUFBJTkcgPSByZXF1aXJlKHBhdGgucmVzb2x2ZShyb290RGlyLCAnY29uZmlnJywgJ21hcHBpbmcuanNvbicpKTtcblxuY29uc3QgQ0RfVkVSID0gcHJvY2Vzcy5lbnYubnBtX2NvbmZpZ19jaHJvbWVkcml2ZXJfdmVyc2lvblxuICB8fCBwcm9jZXNzLmVudi5DSFJPTUVEUklWRVJfVkVSU0lPTlxuICB8fCBnZXRNb3N0UmVjZW50Q2hyb21lZHJpdmVyKCk7XG5jb25zdCBDRF9CQVNFX0RJUiA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICcuLicsICdjaHJvbWVkcml2ZXInKTtcbmNvbnN0IENEX0NETiA9IHByb2Nlc3MuZW52Lm5wbV9jb25maWdfY2hyb21lZHJpdmVyX2NkbnVybFxuICB8fCBwcm9jZXNzLmVudi5DSFJPTUVEUklWRVJfQ0ROVVJMXG4gIHx8ICdodHRwczovL2Nocm9tZWRyaXZlci5zdG9yYWdlLmdvb2dsZWFwaXMuY29tJztcbmNvbnN0IE9TID0ge1xuICBsaW51eDogJ2xpbnV4JyxcbiAgd2luZG93czogJ3dpbicsXG4gIG1hYzogJ21hYydcbn07XG5jb25zdCBYNjQgPSAnNjQnO1xuY29uc3QgWDg2ID0gJzMyJztcbmNvbnN0IE0xX0FSQ0hfU1VGRklYID0gJ19tMSc7XG5jb25zdCBDRF9FWEVDVVRBQkxFX1BSRUZJWCA9ICdjaHJvbWVkcml2ZXInO1xuXG5cbmZ1bmN0aW9uIGdldE1vc3RSZWNlbnRDaHJvbWVkcml2ZXIgKG1hcHBpbmcgPSBDSFJPTUVEUklWRVJfQ0hST01FX01BUFBJTkcpIHtcbiAgaWYgKF8uaXNFbXB0eShtYXBwaW5nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGdldCBtb3N0IHJlY2VudCBDaHJvbWVkcml2ZXIgdmVyc2lvbiBmcm9tIGVtcHR5IG1hcHBpbmcnKTtcbiAgfVxuICByZXR1cm4gXy5sYXN0KF8ua2V5cyhtYXBwaW5nKS5zb3J0KGNvbXBhcmVWZXJzaW9ucykpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDaHJvbWVWZXJzaW9uIChhZGIsIGJ1bmRsZUlkKSB7XG4gIGNvbnN0IHt2ZXJzaW9uTmFtZX0gPSBhd2FpdCBhZGIuZ2V0UGFja2FnZUluZm8oYnVuZGxlSWQpO1xuICByZXR1cm4gdmVyc2lvbk5hbWU7XG59XG5cbmZ1bmN0aW9uIGdldENocm9tZWRyaXZlckRpciAob3NOYW1lID0gZ2V0T3NOYW1lKCkpIHtcbiAgcmV0dXJuIHBhdGgucmVzb2x2ZShDRF9CQVNFX0RJUiwgb3NOYW1lKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0Q2hyb21lZHJpdmVyQmluYXJ5UGF0aCAob3NOYW1lID0gZ2V0T3NOYW1lKCkpIHtcbiAgY29uc3Qgcm9vdERpciA9IGdldENocm9tZWRyaXZlckRpcihvc05hbWUpO1xuICBjb25zdCBwYXRoU3VmZml4ID0gb3NOYW1lID09PSBPUy53aW5kb3dzID8gJy5leGUnIDogJyc7XG4gIGNvbnN0IHBhdGhzID0gYXdhaXQgZnMuZ2xvYihgJHtDRF9FWEVDVVRBQkxFX1BSRUZJWH0qJHtwYXRoU3VmZml4fWAsIHtcbiAgICBjd2Q6IHJvb3REaXIsXG4gICAgYWJzb2x1dGU6IHRydWUsXG4gICAgbm9jYXNlOiB0cnVlLFxuICAgIG5vZGlyOiB0cnVlLFxuICAgIHN0cmljdDogZmFsc2UsXG4gIH0pO1xuICByZXR1cm4gXy5pc0VtcHR5KHBhdGhzKVxuICAgID8gcGF0aC5yZXNvbHZlKHJvb3REaXIsIGAke0NEX0VYRUNVVEFCTEVfUFJFRklYfSR7cGF0aFN1ZmZpeH1gKVxuICAgIDogXy5maXJzdChwYXRocyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlRGF0YSAodXJsLCBoZWFkZXJzLCBvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRpbWVvdXQgPSA1MDAwLFxuICAgIHJlc3BvbnNlVHlwZSA9ICd0ZXh0JyxcbiAgfSA9IG9wdHM7XG4gIHJldHVybiAoYXdhaXQgYXhpb3Moe1xuICAgIHVybCxcbiAgICBoZWFkZXJzLFxuICAgIHRpbWVvdXQsXG4gICAgcmVzcG9uc2VUeXBlLFxuICB9KSkuZGF0YTtcbn1cblxuY29uc3QgZ2V0T3NOYW1lID0gXy5tZW1vaXplKGZ1bmN0aW9uIGdldE9zTmFtZSAoKSB7XG4gIGlmIChzeXN0ZW0uaXNXaW5kb3dzKCkpIHtcbiAgICByZXR1cm4gT1Mud2luZG93cztcbiAgfVxuICBpZiAoc3lzdGVtLmlzTWFjKCkpIHtcbiAgICByZXR1cm4gT1MubWFjO1xuICB9XG4gIHJldHVybiBPUy5saW51eDtcbn0pO1xuXG5jb25zdCBnZXRPc0luZm8gPSBfLm1lbW9pemUoYXN5bmMgZnVuY3Rpb24gZ2V0T3NJbmZvICgpIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBnZXRPc05hbWUoKSxcbiAgICBhcmNoOiBhd2FpdCBzeXN0ZW0uYXJjaCgpLFxuICAgIGhhcmR3YXJlTmFtZTogc3lzdGVtLmlzV2luZG93cygpID8gbnVsbCA6IF8udHJpbShhd2FpdCBleGVjKCd1bmFtZScsIFsnLW0nXSkpLFxuICB9O1xufSk7XG5cbmNvbnN0IGdldEJhc2VEcml2ZXJJbnN0YW5jZSA9IF8ubWVtb2l6ZSgoKSA9PiBuZXcgQmFzZURyaXZlcih7fSwgZmFsc2UpKTtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgbG9nIHByZWZpeCBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb2JqIGxvZyBvd25lciBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmc/fSBzZXNzaW9uSWQgT3B0aW9uYWwgc2Vzc2lvbiBpZGVudGlmaWVyXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZUxvZ1ByZWZpeCAob2JqLCBzZXNzaW9uSWQgPSBudWxsKSB7XG4gIHJldHVybiBnZXRCYXNlRHJpdmVySW5zdGFuY2UoKS5oZWxwZXJzLmdlbmVyYXRlRHJpdmVyTG9nUHJlZml4KG9iaiwgc2Vzc2lvbklkKTtcbn1cblxuXG5leHBvcnQge1xuICBnZXRDaHJvbWVWZXJzaW9uLCBnZXRDaHJvbWVkcml2ZXJEaXIsIGdldENocm9tZWRyaXZlckJpbmFyeVBhdGgsIGdldE9zTmFtZSxcbiAgQ0RfQkFTRV9ESVIsIENEX0NETiwgQ0RfVkVSLCBDSFJPTUVEUklWRVJfQ0hST01FX01BUFBJTkcsIGdldE1vc3RSZWNlbnRDaHJvbWVkcml2ZXIsXG4gIHJldHJpZXZlRGF0YSwgZ2V0T3NJbmZvLCBPUywgWDY0LCBYODYsIE0xX0FSQ0hfU1VGRklYLCBnZW5lcmF0ZUxvZ1ByZWZpeCxcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztB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
@@ -1,4 +1,5 @@
1
1
  {
2
+ "101.0.4951.41": "101.0.4951.41",
2
3
  "100.0.4896.60": "100.0.4896.60",
3
4
  "99.0.4844.51": "99.0.4844.51",
4
5
  "98.0.4758.102": "98.0.4758.102",
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "chrome",
7
7
  "android"
8
8
  ],
9
- "version": "5.0.4",
9
+ "version": "5.0.5",
10
10
  "author": "appium",
11
11
  "license": "Apache-2.0",
12
12
  "repository": {
@@ -80,7 +80,7 @@
80
80
  "chai": "^4.1.2",
81
81
  "chai-as-promised": "^7.1.1",
82
82
  "gulp": "^4.0.0",
83
- "mocha": "^9.0.0",
83
+ "mocha": "^10.0.0",
84
84
  "pre-commit": "^1.1.3",
85
85
  "semantic-release": "^19.0.2",
86
86
  "sinon": "^13.0.0"