Socket
Socket
Sign inDemoInstall

appium-support

Package Overview
Dependencies
Maintainers
8
Versions
145
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

appium-support - npm Package Compare versions

Comparing version 2.54.4 to 2.55.0

11

build/index.js
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.timing = exports.node = exports.mjpeg = exports.imageUtil = exports.zip = exports.process = exports.logger = exports.plist = exports.net = exports.util = exports.system = exports.tempDir = exports.default = exports.mkdirp = exports.cancellableDelay = exports.fs = void 0;
exports.zip = exports.util = exports.timing = exports.tempDir = exports.system = exports.process = exports.plist = exports.node = exports.net = exports.mkdirp = exports.mjpeg = exports.logger = exports.imageUtil = exports.fs = exports.default = exports.cancellableDelay = void 0;

@@ -63,2 +61,7 @@ require("source-map-support/register");

exports.timing = timing;
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
const {

@@ -96,2 +99,2 @@ fs

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImZzIiwiZnNJbmRleCIsImNhbmNlbGxhYmxlRGVsYXkiLCJ1dGlsIiwibWtkaXJwIiwibWtkaXJwSW5kZXgiLCJ0ZW1wRGlyIiwic3lzdGVtIiwicGxpc3QiLCJsb2dnZXIiLCJwcm9jZXNzIiwiemlwIiwiaW1hZ2VVdGlsIiwibmV0IiwibWpwZWciLCJub2RlIiwidGltaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7O0FBR0EsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVNDLE9BQWY7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQXVCQyxJQUE3Qjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBYUMsV0FBbkI7O2VBTWU7QUFDYkMsRUFBQUEsT0FEYTtBQUNKQyxFQUFBQSxNQURJO0FBQ0lKLEVBQUFBLElBREo7QUFDVUgsRUFBQUEsRUFEVjtBQUNjRSxFQUFBQSxnQkFEZDtBQUNnQ00sRUFBQUEsS0FEaEM7QUFDdUNKLEVBQUFBLE1BRHZDO0FBQytDSyxFQUFBQSxNQUQvQztBQUN1REMsRUFBQUEsT0FEdkQ7QUFFYkMsRUFBQUEsR0FGYTtBQUVSQyxFQUFBQSxTQUZRO0FBRUdDLEVBQUFBLEdBRkg7QUFFUUMsRUFBQUEsS0FGUjtBQUVlQyxFQUFBQSxJQUZmO0FBRXFCQyxFQUFBQTtBQUZyQixDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdGVtcERpciBmcm9tICcuL2xpYi90ZW1wZGlyJztcbmltcG9ydCAqIGFzIHN5c3RlbSBmcm9tICcuL2xpYi9zeXN0ZW0nO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuL2xpYi91dGlsJztcbmltcG9ydCAqIGFzIGZzSW5kZXggZnJvbSAnLi9saWIvZnMnO1xuaW1wb3J0ICogYXMgbmV0IGZyb20gJy4vbGliL25ldCc7XG5pbXBvcnQgKiBhcyBwbGlzdCBmcm9tICcuL2xpYi9wbGlzdCc7XG5pbXBvcnQgKiBhcyBta2RpcnBJbmRleCBmcm9tICcuL2xpYi9ta2RpcnAnO1xuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJy4vbGliL2xvZ2dpbmcnO1xuaW1wb3J0ICogYXMgcHJvY2VzcyBmcm9tICcuL2xpYi9wcm9jZXNzJztcbmltcG9ydCAqIGFzIHppcCBmcm9tICcuL2xpYi96aXAnO1xuaW1wb3J0ICogYXMgaW1hZ2VVdGlsIGZyb20gJy4vbGliL2ltYWdlLXV0aWwnO1xuaW1wb3J0ICogYXMgbWpwZWcgZnJvbSAnLi9saWIvbWpwZWcnO1xuaW1wb3J0ICogYXMgbm9kZSBmcm9tICcuL2xpYi9ub2RlJztcbmltcG9ydCAqIGFzIHRpbWluZyBmcm9tICcuL2xpYi90aW1pbmcnO1xuXG5cbmNvbnN0IHsgZnMgfSA9IGZzSW5kZXg7XG5jb25zdCB7IGNhbmNlbGxhYmxlRGVsYXkgfSA9IHV0aWw7XG5jb25zdCB7IG1rZGlycCB9ID0gbWtkaXJwSW5kZXg7XG5cbmV4cG9ydCB7XG4gIHRlbXBEaXIsIHN5c3RlbSwgdXRpbCwgZnMsIGNhbmNlbGxhYmxlRGVsYXksIHBsaXN0LCBta2RpcnAsIGxvZ2dlciwgcHJvY2VzcyxcbiAgemlwLCBpbWFnZVV0aWwsIG5ldCwgbWpwZWcsIG5vZGUsIHRpbWluZyxcbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHRlbXBEaXIsIHN5c3RlbSwgdXRpbCwgZnMsIGNhbmNlbGxhYmxlRGVsYXksIHBsaXN0LCBta2RpcnAsIGxvZ2dlciwgcHJvY2VzcyxcbiAgemlwLCBpbWFnZVV0aWwsIG5ldCwgbWpwZWcsIG5vZGUsIHRpbWluZyxcbn07XG4iXSwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlUm9vdCI6Ii4uIn0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImZzIiwiZnNJbmRleCIsImNhbmNlbGxhYmxlRGVsYXkiLCJ1dGlsIiwibWtkaXJwIiwibWtkaXJwSW5kZXgiLCJ0ZW1wRGlyIiwic3lzdGVtIiwicGxpc3QiLCJsb2dnZXIiLCJwcm9jZXNzIiwiemlwIiwiaW1hZ2VVdGlsIiwibmV0IiwibWpwZWciLCJub2RlIiwidGltaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7O0FBR0EsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVNDLE9BQWY7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQXVCQyxJQUE3Qjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBYUMsV0FBbkI7O2VBTWU7QUFDYkMsRUFBQUEsT0FEYTtBQUNKQyxFQUFBQSxNQURJO0FBQ0lKLEVBQUFBLElBREo7QUFDVUgsRUFBQUEsRUFEVjtBQUNjRSxFQUFBQSxnQkFEZDtBQUNnQ00sRUFBQUEsS0FEaEM7QUFDdUNKLEVBQUFBLE1BRHZDO0FBQytDSyxFQUFBQSxNQUQvQztBQUN1REMsRUFBQUEsT0FEdkQ7QUFFYkMsRUFBQUEsR0FGYTtBQUVSQyxFQUFBQSxTQUZRO0FBRUdDLEVBQUFBLEdBRkg7QUFFUUMsRUFBQUEsS0FGUjtBQUVlQyxFQUFBQSxJQUZmO0FBRXFCQyxFQUFBQTtBQUZyQixDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdGVtcERpciBmcm9tICcuL2xpYi90ZW1wZGlyJztcbmltcG9ydCAqIGFzIHN5c3RlbSBmcm9tICcuL2xpYi9zeXN0ZW0nO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuL2xpYi91dGlsJztcbmltcG9ydCAqIGFzIGZzSW5kZXggZnJvbSAnLi9saWIvZnMnO1xuaW1wb3J0ICogYXMgbmV0IGZyb20gJy4vbGliL25ldCc7XG5pbXBvcnQgKiBhcyBwbGlzdCBmcm9tICcuL2xpYi9wbGlzdCc7XG5pbXBvcnQgKiBhcyBta2RpcnBJbmRleCBmcm9tICcuL2xpYi9ta2RpcnAnO1xuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJy4vbGliL2xvZ2dpbmcnO1xuaW1wb3J0ICogYXMgcHJvY2VzcyBmcm9tICcuL2xpYi9wcm9jZXNzJztcbmltcG9ydCAqIGFzIHppcCBmcm9tICcuL2xpYi96aXAnO1xuaW1wb3J0ICogYXMgaW1hZ2VVdGlsIGZyb20gJy4vbGliL2ltYWdlLXV0aWwnO1xuaW1wb3J0ICogYXMgbWpwZWcgZnJvbSAnLi9saWIvbWpwZWcnO1xuaW1wb3J0ICogYXMgbm9kZSBmcm9tICcuL2xpYi9ub2RlJztcbmltcG9ydCAqIGFzIHRpbWluZyBmcm9tICcuL2xpYi90aW1pbmcnO1xuXG5cbmNvbnN0IHsgZnMgfSA9IGZzSW5kZXg7XG5jb25zdCB7IGNhbmNlbGxhYmxlRGVsYXkgfSA9IHV0aWw7XG5jb25zdCB7IG1rZGlycCB9ID0gbWtkaXJwSW5kZXg7XG5cbmV4cG9ydCB7XG4gIHRlbXBEaXIsIHN5c3RlbSwgdXRpbCwgZnMsIGNhbmNlbGxhYmxlRGVsYXksIHBsaXN0LCBta2RpcnAsIGxvZ2dlciwgcHJvY2VzcyxcbiAgemlwLCBpbWFnZVV0aWwsIG5ldCwgbWpwZWcsIG5vZGUsIHRpbWluZyxcbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHRlbXBEaXIsIHN5c3RlbSwgdXRpbCwgZnMsIGNhbmNlbGxhYmxlRGVsYXksIHBsaXN0LCBta2RpcnAsIGxvZ2dlciwgcHJvY2VzcyxcbiAgemlwLCBpbWFnZVV0aWwsIG5ldCwgbWpwZWcsIG5vZGUsIHRpbWluZyxcbn07XG4iXSwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlUm9vdCI6Ii4uIn0=

@@ -8,3 +8,3 @@ "use strict";

});
exports.default = exports.fs = void 0;
exports.fs = exports.default = void 0;

@@ -11,0 +11,0 @@ require("source-map-support/register");

@@ -146,2 +146,2 @@ "use strict";

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2ctaW50ZXJuYWwuanMiXSwibmFtZXMiOlsiREVGQVVMVF9SRVBMQUNFUiIsIlNlY3VyZVZhbHVlc1ByZXByb2Nlc3NvciIsImNvbnN0cnVjdG9yIiwiX3J1bGVzIiwicnVsZXMiLCJwYXJzZVJ1bGUiLCJydWxlIiwicmFpc2VFcnJvciIsIm1zZyIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsInBhdHRlcm4iLCJyZXBsYWNlciIsImZsYWdzIiwiXyIsImlzU3RyaW5nIiwibGVuZ3RoIiwiZXNjYXBlUmVnRXhwIiwiaXNQbGFpbk9iamVjdCIsImhhcyIsInRleHQiLCJmbGFnIiwiaW5jbHVkZXMiLCJwdXNoIiwidW5pcSIsIlJlZ0V4cCIsImpvaW4iLCJlIiwibWVzc2FnZSIsImxvYWRSdWxlcyIsInNvdXJjZSIsImlzQXJyYXkiLCJmcyIsImV4aXN0cyIsInBhcnNlIiwicmVhZEZpbGUiLCJpc3N1ZXMiLCJwcmVwcm9jZXNzIiwic3RyIiwicmVzdWx0IiwicmVwbGFjZSIsIlNFQ1VSRV9WQUxVRVNfUFJFUFJPQ0VTU09SIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQU1BLGdCQUFnQixHQUFHLFlBQXpCOztBQVNBLE1BQU1DLHdCQUFOLENBQStCO0FBQzdCQyxFQUFBQSxXQUFXLEdBQUk7QUFDYixTQUFLQyxNQUFMLEdBQWMsRUFBZDtBQUNEOztBQU1ELE1BQUlDLEtBQUosR0FBYTtBQUNYLFdBQU8sS0FBS0QsTUFBWjtBQUNEOztBQXVCREUsRUFBQUEsU0FBUyxDQUFFQyxJQUFGLEVBQVE7QUFDZixVQUFNQyxVQUFVLEdBQUlDLEdBQUQsSUFBUztBQUMxQixZQUFNLElBQUlDLEtBQUosQ0FBVyxHQUFFQyxJQUFJLENBQUNDLFNBQUwsQ0FBZUwsSUFBZixDQUFxQixPQUFNRSxHQUFJLEVBQTVDLENBQU47QUFDRCxLQUZEOztBQUlBLFFBQUlJLE9BQUo7QUFDQSxRQUFJQyxRQUFRLEdBQUdiLGdCQUFmO0FB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QXhCLEVBQWdDO0FBQzlCcUMsTUFBQUEsTUFBTSxHQUFHQSxNQUFNLENBQUNDLE9BQVAsQ0FBZW5DLElBQUksQ0FBQ00sT0FBcEIsRUFBNkJOLElBQUksQ0FBQ08sUUFBbEMsQ0FBVDtBQUNEOztBQUNELFdBQU8yQixNQUFQO0FBQ0Q7O0FBcEo0Qjs7O0FBdUovQixNQUFNRSwwQkFBMEIsR0FBRyxJQUFJekMsd0JBQUosRUFBbkM7O2VBR2V5QywwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICcuL2ZzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IERFRkFVTFRfUkVQTEFDRVIgPSAnKipTRUNVUkUqKic7XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU2VjdXJlVmFsdWVQcmVwcm9jZXNzaW5nUnVsZVxuICogQHByb3BlcnR5IHtSZWdFeHB9IHBhdHRlcm4gVGhlIHBhcnNlZCBwYXR0ZXJuIHdoaWNoIGlzIGdvaW5nIHRvIGJlIHVzZWQgZm9yIHJlcGxhY2VtZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gcmVwbGFjZXIgW0RFRkFVTFRfU0VDVVJFX1JFUExBQ0VSXSBUaGUgcmVwbGFjZXIgdmFsdWUgdG8gdXNlLiBCeSBkZWZhdWx0XG4gKiBlcXVhbHMgdG8gYERFRkFVTFRfU0VDVVJFX1JFUExBQ0VSYFxuICovXG5cbmNsYXNzIFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NvciB7XG4gIGNvbnN0cnVjdG9yICgpIHtcbiAgICB0aGlzLl9ydWxlcyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtBcnJheTxTZWN1cmVWYWx1ZVByZXByb2Nlc3NpbmdSdWxlPn0gVGhlIGxpc3Qgb2Ygc3VjY2Vzc2Z1bGx5XG4gICAqIHBhcnNlZCBwcmVwcm9jZXNzaW5nIHJ1bGVzXG4gICAqL1xuICBnZXQgcnVsZXMgKCkge1xuICAgIHJldHVybiB0aGlzLl9ydWxlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBSdWxlXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwYXR0ZXJuIEEgdmFsaWQgUmVnRXhwIHBhdHRlcm4gdG8gYmUgcmVwbGFjZWRcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IHRleHQgQSB0ZXh0IG1hdGNoIHRvIHJlcGxhY2UuIEVpdGhlciB0aGlzIHByb3BlcnR5IG9yIHRoZVxuICAgKiBhYm92ZSBvbmUgbXVzdCBiZSBwcm92aWRlZC4gYHBhdHRlcm5gIGhhcyBwcmlvcml0eSBvdmVyIGB0ZXh0YCBpZiBib3RoIGFyZSBwcm92aWRlZC5cbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IGZsYWdzIFsnZyddIFJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncyBmb3IgdGhlIGdpdmVuIHBhdHRlcm4uXG4gICAqIFN1cHBvcnRlZCBmbGFnIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIHN0YW5kYXJkIEphdmFTY3JpcHQgUmVnRXhwIGNvbnN0cnVjdG9yOlxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L0d1aWRlL1JlZ3VsYXJfRXhwcmVzc2lvbnMjQWR2YW5jZWRfc2VhcmNoaW5nX3dpdGhfZmxhZ3NfMlxuICAgKiBUaGUgJ2cnIChnbG9iYWwgbWF0Y2hpbmcpIGlzIGFsd2F5cyBlbmFibGVkIHRob3VnaC5cbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IHJlcGxhY2VyIFtERUZBVUxUX1NFQ1VSRV9SRVBMQUNFUl0gVGhlIHJlcGxhY2VyIHZhbHVlIHRvIHVzZS4gQnkgZGVmYXVsdFxuICAgKiBlcXVhbHMgdG8gYERFRkFVTFRfU0VDVVJFX1JFUExBQ0VSYFxuICAgKi9cblxuICAvKipcbiAgICogUGFyc2VzIHNpbmdsZSBydWxlIGZyb20gdGhlIGdpdmVuIEpTT04gZmlsZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xSdWxlfSBydWxlIFRoZSBydWxlIG1pZ2h0IGVpdGhlciBiZSByZXByZXNlbnRlZCBhcyBhIHNpbmdsZSBzdHJpbmdcbiAgICogb3IgYSBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHBhcnNpbmcgdGhlIHJ1bGVcbiAgICogQHJldHVybnMge1NlY3VyZVZhbHVlUHJlcHJvY2Vzc2luZ1J1bGV9IFRoZSBwYXJzZWQgcnVsZVxuICAgKi9cbiAgcGFyc2VSdWxlIChydWxlKSB7XG4gICAgY29uc3QgcmFpc2VFcnJvciA9IChtc2cpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtKU09OLnN0cmluZ2lmeShydWxlKX0gLT4gJHttc2d9YCk7XG4gICAgfTtcblxuICAgIGxldCBwYXR0ZXJuO1xuICAgIGxldCByZXBsYWNlciA9IERFRkFVTFRfUkVQTEFDRVI7XG4gICAgbGV0IGZsYWdzID0gWydnJ107XG4gICAgaWYgKF8uaXNTdHJpbmcocnVsZSkpIHtcbiAgICAgIGlmIChydWxlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByYWlzZUVycm9yKCdUaGUgdmFsdWUgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgICAgIH1cbiAgICAgIHBhdHRlcm4gPSBgXFxcXGIke18uZXNjYXBlUmVnRXhwKHJ1bGUpfVxcXFxiYDtcbiAgICB9IGVsc2UgaWYgKF8uaXNQbGFpbk9iamVjdChydWxlKSkge1xuICAgICAgaWYgKF8uaGFzKHJ1bGUsICdwYXR0ZXJuJykpIHtcbiAgICAgICAgaWYgKCFfLmlzU3RyaW5nKHJ1bGUucGF0dGVybikgfHwgcnVsZS5wYXR0ZXJuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJhaXNlRXJyb3IoYFRoZSB2YWx1ZSBvZiAncGF0dGVybicgbXVzdCBiZSBhIHZhbGlkIG5vbi1lbXB0eSBzdHJpbmdgKTtcbiAgICAgICAgfVxuICAgICAgICBwYXR0ZXJuID0gcnVsZS5wYXR0ZXJuO1xuICAgICAgfSBlbHNlIGlmIChfLmhhcyhydWxlLCAndGV4dCcpKSB7XG4gICAgICAgIGlmICghXy5pc1N0cmluZyhydWxlLnRleHQpIHx8IHJ1bGUudGV4dC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByYWlzZUVycm9yKGBUaGUgdmFsdWUgb2YgJ3RleHQnIG11c3QgYmUgYSB2YWxpZCBub24tZW1wdHkgc3RyaW5nYCk7XG4gICAgICAgIH1cbiAgICAgICAgcGF0dGVybiA9IGBcXFxcYiR7Xy5lc2NhcGVSZWdFeHAocnVsZS50ZXh0KX1cXFxcYmA7XG4gICAgICB9XG4gICAgICBpZiAoIXBhdHRlcm4pIHtcbiAgICAgICAgcmFpc2VFcnJvcihgTXVzdCBlaXRoZXIgaGF2ZSBhIGZpZWxkIG5hbWVkICdwYXR0ZXJuJyBvciAndGV4dCdgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKF8uaGFzKHJ1bGUsICdmbGFncycpKSB7XG4gICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvR3VpZGUvUmVndWxhcl9FeHByZXNzaW9ucyNBZHZhbmNlZF9zZWFyY2hpbmdfd2l0aF9mbGFnc18yXG4gICAgICAgIGZvciAoY29uc3QgZmxhZyBvZiBbJ2knLCAnZycsICdtJywgJ3MnLCAndScsICd5J10pIHtcbiAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhydWxlLmZsYWdzLCBmbGFnKSkge1xuICAgICAgICAgICAgZmxhZ3MucHVzaChmbGFnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZmxhZ3MgPSBfLnVuaXEoZmxhZ3MpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXy5pc1N0cmluZyhydWxlLnJlcGxhY2VyKSkge1xuICAgICAgICByZXBsYWNlciA9IHJ1bGUucmVwbGFjZXI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhaXNlRXJyb3IoJ011c3QgZWl0aGVyIGJlIGEgc3RyaW5nIG9yIGFuIG9iamVjdCcpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXR0ZXJuOiBuZXcgUmVnRXhwKHBhdHRlcm4sIGZsYWdzLmpvaW4oJycpKSxcbiAgICAgICAgcmVwbGFjZXIsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJhaXNlRXJyb3IoZS5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgcnVsZXMgZnJvbSB0aGUgZ2l2ZW4gSlNPTiBmaWxlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfEFycmF5PHN0cmluZ3xSdWxlPn0gc291cmNlIFRoZSBmdWxsIHBhdGggdG8gdGhlIEpTT04gZmlsZSBjb250YWluaW5nIHNlY3VyZVxuICAgKiB2YWx1ZXMgcmVwbGFjZW1lbnQgcnVsZXMgb3IgdGhlIHJ1bGVzIHRoZW1zZWx2ZXMgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXlcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBmb3JtYXQgb2YgdGhlIHNvdXJjZSBmaWxlIGlzIGludmFsaWQgb3JcbiAgICogaXQgZG9lcyBub3QgZXhpc3RcbiAgICogQHJldHVybnMge0FycmF5PHN0cmluZz59IFRoZSBsaXN0IG9mIGlzc3VlcyBmb3VuZCB3aGlsZSBwYXJzaW5nIGVhY2ggcnVsZS5cbiAgICogQW4gZW1wdHkgbGlzdCBpcyByZXR1cm5lZCBpZiBubyBydWxlIHBhcnNpbmcgaXNzdWVzIHdlcmUgZm91bmRcbiAgICovXG4gIGFzeW5jIGxvYWRSdWxlcyAoc291cmNlKSB7XG4gICAgbGV0IHJ1bGVzO1xuICAgIGlmIChfLmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgcnVsZXMgPSBzb3VyY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghYXdhaXQgZnMuZXhpc3RzKHNvdXJjZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtzb3VyY2V9JyBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgYWNjZXNzaWJsZWApO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgcnVsZXMgPSBKU09OLnBhcnNlKGF3YWl0IGZzLnJlYWRGaWxlKHNvdXJjZSwgJ3V0ZjgnKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7c291cmNlfScgbXVzdCBiZSBhIHZhbGlkIEpTT04gZmlsZS4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgaWYgKCFfLmlzQXJyYXkocnVsZXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7c291cmNlfScgbXVzdCBjb250YWluIGEgdmFsaWQgSlNPTiBhcnJheWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGlzc3VlcyA9IFtdO1xuICAgIHRoaXMuX3J1bGVzID0gW107XG4gICAgZm9yIChjb25zdCBydWxlIG9mIHJ1bGVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLl9ydWxlcy5wdXNoKHRoaXMucGFyc2VSdWxlKHJ1bGUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaXNzdWVzLnB1c2goZS5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzc3VlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyBzZWN1cmUgdmFsdWVzIHJlcGxhY2VtZW50IGluc2lkZSB0aGUgZ2l2ZW4gc3RyaW5nXG4gICAqIGFjY29yZGluZyB0byB0aGUgcHJldmlvdXNseSBsb2FkZWQgcnVsZXMuIE5vIHJlcGxhY2VtZW50IGlzIG1hZGVcbiAgICogaWYgdGhlcmUgYXJlIG5vIHJ1bGVzIG9yIHRoZSBnaXZlbiB2YWx1ZSBpcyBub3QgYSBzdHJpbmdcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0ciBUaGUgc3RyaW5nIHRvIG1ha2UgcmVwbGFjZW1lbnRzIGluXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBzdHJpbmcgd2l0aCByZXBsYWNlbWVudHMgbWFkZVxuICAgKi9cbiAgcHJlcHJvY2VzcyAoc3RyKSB7XG4gICAgaWYgKHRoaXMuX3J1bGVzLmxlbmd0aCA9PT0gMCB8fCAhXy5pc1N0cmluZyhzdHIpKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSBzdHI7XG4gICAgZm9yIChjb25zdCBydWxlIG9mIHRoaXMuX3J1bGVzKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShydWxlLnBhdHRlcm4sIHJ1bGUucmVwbGFjZXIpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmNvbnN0IFNFQ1VSRV9WQUxVRVNfUFJFUFJPQ0VTU09SID0gbmV3IFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NvcigpO1xuXG5leHBvcnQgeyBTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUiwgU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc29yIH07XG5leHBvcnQgZGVmYXVsdCBTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUjtcbiJdLCJmaWxlIjoibGliL2xvZy1pbnRlcm5hbC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2ctaW50ZXJuYWwuanMiXSwibmFtZXMiOlsiREVGQVVMVF9SRVBMQUNFUiIsIlNlY3VyZVZhbHVlc1ByZXByb2Nlc3NvciIsImNvbnN0cnVjdG9yIiwiX3J1bGVzIiwicnVsZXMiLCJwYXJzZVJ1bGUiLCJydWxlIiwicmFpc2VFcnJvciIsIm1zZyIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsInBhdHRlcm4iLCJyZXBsYWNlciIsImZsYWdzIiwiXyIsImlzU3RyaW5nIiwibGVuZ3RoIiwiZXNjYXBlUmVnRXhwIiwiaXNQbGFpbk9iamVjdCIsImhhcyIsInRleHQiLCJmbGFnIiwiaW5jbHVkZXMiLCJwdXNoIiwidW5pcSIsIlJlZ0V4cCIsImpvaW4iLCJlIiwibWVzc2FnZSIsImxvYWRSdWxlcyIsInNvdXJjZSIsImlzQXJyYXkiLCJmcyIsImV4aXN0cyIsInBhcnNlIiwicmVhZEZpbGUiLCJpc3N1ZXMiLCJwcmVwcm9jZXNzIiwic3RyIiwicmVzdWx0IiwicmVwbGFjZSIsIlNFQ1VSRV9WQUxVRVNfUFJFUFJPQ0VTU09SIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQU1BLGdCQUFnQixHQUFHLFlBQXpCOztBQVNBLE1BQU1DLHdCQUFOLENBQStCO0FBQzdCQyxFQUFBQSxXQUFXLEdBQUk7QUFDYixTQUFLQyxNQUFMLEdBQWMsRUFBZDtBQUNEOztBQU1RLE1BQUxDLEtBQUssR0FBSTtBQUNYLFdBQU8sS0FBS0QsTUFBWjtBQUNEOztBQXVCREUsRUFBQUEsU0FBUyxDQUFFQyxJQUFGLEVBQVE7QUFDZixVQUFNQyxVQUFVLEdBQUlDLEdBQUQsSUFBUztBQUMxQixZQUFNLElBQUlDLEtBQUosQ0FBVyxHQUFFQyxJQUFJLENBQUNDLFNBQUwsQ0FBZUwsSUFBZixDQUFxQixPQUFNRSxHQUFJLEVBQTVDLENBQU47QUFDRCxLQUZEOztBQUlBLFFBQUlJLE9BQUo7QUFDQSxRQUFJQyxRQUFRLEdBQUdiLGdCQUFmO0FB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LEVBQWdDO0FBQzlCcUMsTUFBQUEsTUFBTSxHQUFHQSxNQUFNLENBQUNDLE9BQVAsQ0FBZW5DLElBQUksQ0FBQ00sT0FBcEIsRUFBNkJOLElBQUksQ0FBQ08sUUFBbEMsQ0FBVDtBQUNEOztBQUNELFdBQU8yQixNQUFQO0FBQ0Q7O0FBcEo0Qjs7O0FBdUovQixNQUFNRSwwQkFBMEIsR0FBRyxJQUFJekMsd0JBQUosRUFBbkM7O2VBR2V5QywwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICcuL2ZzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IERFRkFVTFRfUkVQTEFDRVIgPSAnKipTRUNVUkUqKic7XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU2VjdXJlVmFsdWVQcmVwcm9jZXNzaW5nUnVsZVxuICogQHByb3BlcnR5IHtSZWdFeHB9IHBhdHRlcm4gVGhlIHBhcnNlZCBwYXR0ZXJuIHdoaWNoIGlzIGdvaW5nIHRvIGJlIHVzZWQgZm9yIHJlcGxhY2VtZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gcmVwbGFjZXIgW0RFRkFVTFRfU0VDVVJFX1JFUExBQ0VSXSBUaGUgcmVwbGFjZXIgdmFsdWUgdG8gdXNlLiBCeSBkZWZhdWx0XG4gKiBlcXVhbHMgdG8gYERFRkFVTFRfU0VDVVJFX1JFUExBQ0VSYFxuICovXG5cbmNsYXNzIFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NvciB7XG4gIGNvbnN0cnVjdG9yICgpIHtcbiAgICB0aGlzLl9ydWxlcyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtBcnJheTxTZWN1cmVWYWx1ZVByZXByb2Nlc3NpbmdSdWxlPn0gVGhlIGxpc3Qgb2Ygc3VjY2Vzc2Z1bGx5XG4gICAqIHBhcnNlZCBwcmVwcm9jZXNzaW5nIHJ1bGVzXG4gICAqL1xuICBnZXQgcnVsZXMgKCkge1xuICAgIHJldHVybiB0aGlzLl9ydWxlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBSdWxlXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwYXR0ZXJuIEEgdmFsaWQgUmVnRXhwIHBhdHRlcm4gdG8gYmUgcmVwbGFjZWRcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IHRleHQgQSB0ZXh0IG1hdGNoIHRvIHJlcGxhY2UuIEVpdGhlciB0aGlzIHByb3BlcnR5IG9yIHRoZVxuICAgKiBhYm92ZSBvbmUgbXVzdCBiZSBwcm92aWRlZC4gYHBhdHRlcm5gIGhhcyBwcmlvcml0eSBvdmVyIGB0ZXh0YCBpZiBib3RoIGFyZSBwcm92aWRlZC5cbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IGZsYWdzIFsnZyddIFJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncyBmb3IgdGhlIGdpdmVuIHBhdHRlcm4uXG4gICAqIFN1cHBvcnRlZCBmbGFnIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIHN0YW5kYXJkIEphdmFTY3JpcHQgUmVnRXhwIGNvbnN0cnVjdG9yOlxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L0d1aWRlL1JlZ3VsYXJfRXhwcmVzc2lvbnMjQWR2YW5jZWRfc2VhcmNoaW5nX3dpdGhfZmxhZ3NfMlxuICAgKiBUaGUgJ2cnIChnbG9iYWwgbWF0Y2hpbmcpIGlzIGFsd2F5cyBlbmFibGVkIHRob3VnaC5cbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IHJlcGxhY2VyIFtERUZBVUxUX1NFQ1VSRV9SRVBMQUNFUl0gVGhlIHJlcGxhY2VyIHZhbHVlIHRvIHVzZS4gQnkgZGVmYXVsdFxuICAgKiBlcXVhbHMgdG8gYERFRkFVTFRfU0VDVVJFX1JFUExBQ0VSYFxuICAgKi9cblxuICAvKipcbiAgICogUGFyc2VzIHNpbmdsZSBydWxlIGZyb20gdGhlIGdpdmVuIEpTT04gZmlsZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xSdWxlfSBydWxlIFRoZSBydWxlIG1pZ2h0IGVpdGhlciBiZSByZXByZXNlbnRlZCBhcyBhIHNpbmdsZSBzdHJpbmdcbiAgICogb3IgYSBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHBhcnNpbmcgdGhlIHJ1bGVcbiAgICogQHJldHVybnMge1NlY3VyZVZhbHVlUHJlcHJvY2Vzc2luZ1J1bGV9IFRoZSBwYXJzZWQgcnVsZVxuICAgKi9cbiAgcGFyc2VSdWxlIChydWxlKSB7XG4gICAgY29uc3QgcmFpc2VFcnJvciA9IChtc2cpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtKU09OLnN0cmluZ2lmeShydWxlKX0gLT4gJHttc2d9YCk7XG4gICAgfTtcblxuICAgIGxldCBwYXR0ZXJuO1xuICAgIGxldCByZXBsYWNlciA9IERFRkFVTFRfUkVQTEFDRVI7XG4gICAgbGV0IGZsYWdzID0gWydnJ107XG4gICAgaWYgKF8uaXNTdHJpbmcocnVsZSkpIHtcbiAgICAgIGlmIChydWxlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByYWlzZUVycm9yKCdUaGUgdmFsdWUgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgICAgIH1cbiAgICAgIHBhdHRlcm4gPSBgXFxcXGIke18uZXNjYXBlUmVnRXhwKHJ1bGUpfVxcXFxiYDtcbiAgICB9IGVsc2UgaWYgKF8uaXNQbGFpbk9iamVjdChydWxlKSkge1xuICAgICAgaWYgKF8uaGFzKHJ1bGUsICdwYXR0ZXJuJykpIHtcbiAgICAgICAgaWYgKCFfLmlzU3RyaW5nKHJ1bGUucGF0dGVybikgfHwgcnVsZS5wYXR0ZXJuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJhaXNlRXJyb3IoYFRoZSB2YWx1ZSBvZiAncGF0dGVybicgbXVzdCBiZSBhIHZhbGlkIG5vbi1lbXB0eSBzdHJpbmdgKTtcbiAgICAgICAgfVxuICAgICAgICBwYXR0ZXJuID0gcnVsZS5wYXR0ZXJuO1xuICAgICAgfSBlbHNlIGlmIChfLmhhcyhydWxlLCAndGV4dCcpKSB7XG4gICAgICAgIGlmICghXy5pc1N0cmluZyhydWxlLnRleHQpIHx8IHJ1bGUudGV4dC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByYWlzZUVycm9yKGBUaGUgdmFsdWUgb2YgJ3RleHQnIG11c3QgYmUgYSB2YWxpZCBub24tZW1wdHkgc3RyaW5nYCk7XG4gICAgICAgIH1cbiAgICAgICAgcGF0dGVybiA9IGBcXFxcYiR7Xy5lc2NhcGVSZWdFeHAocnVsZS50ZXh0KX1cXFxcYmA7XG4gICAgICB9XG4gICAgICBpZiAoIXBhdHRlcm4pIHtcbiAgICAgICAgcmFpc2VFcnJvcihgTXVzdCBlaXRoZXIgaGF2ZSBhIGZpZWxkIG5hbWVkICdwYXR0ZXJuJyBvciAndGV4dCdgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKF8uaGFzKHJ1bGUsICdmbGFncycpKSB7XG4gICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvR3VpZGUvUmVndWxhcl9FeHByZXNzaW9ucyNBZHZhbmNlZF9zZWFyY2hpbmdfd2l0aF9mbGFnc18yXG4gICAgICAgIGZvciAoY29uc3QgZmxhZyBvZiBbJ2knLCAnZycsICdtJywgJ3MnLCAndScsICd5J10pIHtcbiAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhydWxlLmZsYWdzLCBmbGFnKSkge1xuICAgICAgICAgICAgZmxhZ3MucHVzaChmbGFnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZmxhZ3MgPSBfLnVuaXEoZmxhZ3MpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXy5pc1N0cmluZyhydWxlLnJlcGxhY2VyKSkge1xuICAgICAgICByZXBsYWNlciA9IHJ1bGUucmVwbGFjZXI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhaXNlRXJyb3IoJ011c3QgZWl0aGVyIGJlIGEgc3RyaW5nIG9yIGFuIG9iamVjdCcpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXR0ZXJuOiBuZXcgUmVnRXhwKHBhdHRlcm4sIGZsYWdzLmpvaW4oJycpKSxcbiAgICAgICAgcmVwbGFjZXIsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJhaXNlRXJyb3IoZS5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgcnVsZXMgZnJvbSB0aGUgZ2l2ZW4gSlNPTiBmaWxlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfEFycmF5PHN0cmluZ3xSdWxlPn0gc291cmNlIFRoZSBmdWxsIHBhdGggdG8gdGhlIEpTT04gZmlsZSBjb250YWluaW5nIHNlY3VyZVxuICAgKiB2YWx1ZXMgcmVwbGFjZW1lbnQgcnVsZXMgb3IgdGhlIHJ1bGVzIHRoZW1zZWx2ZXMgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXlcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBmb3JtYXQgb2YgdGhlIHNvdXJjZSBmaWxlIGlzIGludmFsaWQgb3JcbiAgICogaXQgZG9lcyBub3QgZXhpc3RcbiAgICogQHJldHVybnMge0FycmF5PHN0cmluZz59IFRoZSBsaXN0IG9mIGlzc3VlcyBmb3VuZCB3aGlsZSBwYXJzaW5nIGVhY2ggcnVsZS5cbiAgICogQW4gZW1wdHkgbGlzdCBpcyByZXR1cm5lZCBpZiBubyBydWxlIHBhcnNpbmcgaXNzdWVzIHdlcmUgZm91bmRcbiAgICovXG4gIGFzeW5jIGxvYWRSdWxlcyAoc291cmNlKSB7XG4gICAgbGV0IHJ1bGVzO1xuICAgIGlmIChfLmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgcnVsZXMgPSBzb3VyY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghYXdhaXQgZnMuZXhpc3RzKHNvdXJjZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtzb3VyY2V9JyBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgYWNjZXNzaWJsZWApO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgcnVsZXMgPSBKU09OLnBhcnNlKGF3YWl0IGZzLnJlYWRGaWxlKHNvdXJjZSwgJ3V0ZjgnKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7c291cmNlfScgbXVzdCBiZSBhIHZhbGlkIEpTT04gZmlsZS4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgaWYgKCFfLmlzQXJyYXkocnVsZXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7c291cmNlfScgbXVzdCBjb250YWluIGEgdmFsaWQgSlNPTiBhcnJheWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGlzc3VlcyA9IFtdO1xuICAgIHRoaXMuX3J1bGVzID0gW107XG4gICAgZm9yIChjb25zdCBydWxlIG9mIHJ1bGVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLl9ydWxlcy5wdXNoKHRoaXMucGFyc2VSdWxlKHJ1bGUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaXNzdWVzLnB1c2goZS5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzc3VlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyBzZWN1cmUgdmFsdWVzIHJlcGxhY2VtZW50IGluc2lkZSB0aGUgZ2l2ZW4gc3RyaW5nXG4gICAqIGFjY29yZGluZyB0byB0aGUgcHJldmlvdXNseSBsb2FkZWQgcnVsZXMuIE5vIHJlcGxhY2VtZW50IGlzIG1hZGVcbiAgICogaWYgdGhlcmUgYXJlIG5vIHJ1bGVzIG9yIHRoZSBnaXZlbiB2YWx1ZSBpcyBub3QgYSBzdHJpbmdcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0ciBUaGUgc3RyaW5nIHRvIG1ha2UgcmVwbGFjZW1lbnRzIGluXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBzdHJpbmcgd2l0aCByZXBsYWNlbWVudHMgbWFkZVxuICAgKi9cbiAgcHJlcHJvY2VzcyAoc3RyKSB7XG4gICAgaWYgKHRoaXMuX3J1bGVzLmxlbmd0aCA9PT0gMCB8fCAhXy5pc1N0cmluZyhzdHIpKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSBzdHI7XG4gICAgZm9yIChjb25zdCBydWxlIG9mIHRoaXMuX3J1bGVzKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShydWxlLnBhdHRlcm4sIHJ1bGUucmVwbGFjZXIpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmNvbnN0IFNFQ1VSRV9WQUxVRVNfUFJFUFJPQ0VTU09SID0gbmV3IFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NvcigpO1xuXG5leHBvcnQgeyBTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUiwgU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc29yIH07XG5leHBvcnQgZGVmYXVsdCBTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUjtcbiJdLCJmaWxlIjoibGliL2xvZy1pbnRlcm5hbC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9

@@ -8,6 +8,7 @@ "use strict";

});
exports.patchLogger = patchLogger;
exports.default = void 0;
exports.getLogger = getLogger;
exports.loadSecureValuesPreprocessingRules = loadSecureValuesPreprocessingRules;
exports.default = exports.log = void 0;
exports.log = void 0;
exports.patchLogger = patchLogger;

@@ -133,2 +134,2 @@ require("source-map-support/register");

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2dnaW5nLmpzIl0sIm5hbWVzIjpbIk5QTV9MRVZFTFMiLCJNQVhfTE9HX1JFQ09SRFNfQ09VTlQiLCJQUkVGSVhfVElNRVNUQU1QX0ZPUk1BVCIsIm1vY2tMb2ciLCJsZXZlbCIsInBhdGNoTG9nZ2VyIiwibG9nZ2VyIiwiZGVidWciLCJhZGRMZXZlbCIsImZnIiwiYmciLCJfZ2V0TG9nZ2VyIiwidGVzdGluZ01vZGUiLCJwYXJzZUludCIsInByb2Nlc3MiLCJlbnYiLCJfVEVTVElORyIsImZvcmNlTG9nTW9kZSIsIl9GT1JDRV9MT0dTIiwidXNpbmdHbG9iYWxMb2ciLCJnbG9iYWwiLCJfZ2xvYmFsX25wbWxvZyIsIm5wbWxvZyIsIm1heFJlY29yZFNpemUiLCJnZXRBY3R1YWxQcmVmaXgiLCJwcmVmaXgiLCJsb2dUaW1lc3RhbXAiLCJhY3R1YWxQcmVmaXgiLCJfIiwiaXNGdW5jdGlvbiIsImZvcm1hdCIsImdldExvZ2dlciIsIndyYXBwZWRMb2dnZXIiLCJ1bndyYXAiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsInNldCIsIm5ld1ZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIl9MT0dfVElNRVNUQU1QIiwiYXJncyIsImFyZyIsIm91dCIsImlzRXJyb3IiLCJzdGFjayIsImxpbmUiLCJzcGxpdCIsInVubGVha2VkTGluZSIsIlNFQ1VSRV9WQUxVRVNfUFJFUFJPQ0VTU09SIiwicHJlcHJvY2VzcyIsImVycm9yQW5kVGhyb3ciLCJlcnIiLCJlcnJvciIsIkVycm9yIiwibGV2ZWxzIiwibG9hZFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NpbmdSdWxlcyIsInJ1bGVzSnNvblBhdGgiLCJpc3N1ZXMiLCJsb2FkUnVsZXMiLCJydWxlcyIsImNsb25lRGVlcCIsImxvZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxVQUFVLEdBQUcsQ0FBQyxP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QyxhQUFuRCxFQUFrRTtBQUNoRSxRQUFNQyxNQUFNLEdBQUcsTUFBTVQscUJBQTJCVSxTQUEzQixDQUFxQ0YsYUFBckMsQ0FBckI7QUFDQSxTQUFPO0FBQ0xDLElBQUFBLE1BREs7QUFFTEUsSUFBQUEsS0FBSyxFQUFFakMsZ0JBQUVrQyxTQUFGLENBQVlaLHFCQUEyQlcsS0FBdkM7QUFGRixHQUFQO0FBSUQ7O0FBR0QsTUFBTUUsR0FBRyxHQUFHaEMsU0FBUyxFQUFyQjs7ZUFHZWdDLEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbnBtbG9nIGZyb20gJ25wbWxvZyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgdW5sZWFrU3RyaW5nIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCBTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUiBmcm9tICcuL2xvZy1pbnRlcm5hbCc7XG5cbi8vIGxldmVscyB0aGF0IGFyZSBhdmFpbGFibGUgZnJvbSBgbnBtbG9nYFxuY29uc3QgTlBNX0xFVkVMUyA9IFsnc2lsbHknLCAndmVyYm9zZScsICdkZWJ1ZycsICdpbmZvJywgJ2h0dHAnLCAnd2FybicsICdlcnJvciddO1xuY29uc3QgTUFYX0xPR19SRUNPUkRTX0NPVU5UID0gMzAwMDtcblxuY29uc3QgUFJFRklYX1RJTUVTVEFNUF9GT1JNQVQgPSAnSEgtbW0tc3M6U1NTJztcblxuLy8gbW9jayBsb2cgb2JqZWN0IHVzZWQgaW4gdGVzdGluZyBtb2RlXG5sZXQgbW9ja0xvZyA9IHt9O1xuZm9yIChsZXQgbGV2ZWwgb2YgTlBNX0xFVkVMUykge1xuICBtb2NrTG9nW2xldmVsXSA9ICgpID0+IHt9O1xufVxuXG5mdW5jdGlvbiBwYXRjaExvZ2dlciAobG9nZ2VyKSB7XG4gIGlmICghbG9nZ2VyLmRlYnVnKSB7XG4gICAgbG9nZ2VyLmFkZExldmVsKCdkZWJ1ZycsIDEwMDAsIHsgZmc6ICdibHVlJywgYmc6ICdibGFjaycgfSwgJ2RidWcnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfZ2V0TG9nZ2VyICgpIHtcbiAgLy8gY2hlY2sgaWYgdGhlIHVzZXIgc2V0IHRoZSBgX1RFU1RJTkdgIG9yIGBfRk9SQ0VfTE9HU2AgZmxhZ1xuICBjb25zdCB0ZXN0aW5nTW9kZSA9IHBhcnNlSW50KHByb2Nlc3MuZW52Ll9URVNUSU5HLCAxMCkgPT09IDE7XG4gIGNvbnN0IGZvcmNlTG9nTW9kZSA9IHBhcnNlSW50KHByb2Nlc3MuZW52Ll9GT1JDRV9MT0dTLCAxMCkgPT09IDE7XG5cbiAgLy8gaWYgaXMgcG9zc2libGUgdGhhdCB0aGVyZSBpcyBhIGxvZ2dlciBpbnN0YW5jZSB0aGF0IGlzIGFscmVhZHkgYXJvdW5kLFxuICAvLyBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdCBvIHVzZSB0aGF0XG4gIGNvbnN0IHVzaW5nR2xvYmFsTG9nID0gISFnbG9iYWwuX2dsb2JhbF9ucG1sb2c7XG4gIGxldCBsb2dnZXI7XG4gIGlmICh0ZXN0aW5nTW9kZSAmJiAhZm9yY2VMb2dNb2RlKSB7XG4gICAgLy8gaW4gdGVzdGluZyBtb2RlLCB1c2UgYSBtb2NrIGxvZ2dlciBvYmplY3QgdGhhdCB3ZSBjYW4gcXVlcnlcbiAgICBsb2dnZXIgPSBtb2NrTG9nO1xuICB9IGVsc2Uge1xuICAgIC8vIG90aGVyd2lzZSwgZWl0aGVyIHVzZSB0aGUgZ2xvYmFsLCBvciBhIG5ldyBgbnBtbG9nYCBvYmplY3RcbiAgICBsb2dnZXIgPSBnbG9iYWwuX2dsb2JhbF9ucG1sb2cgfHwgbnBtbG9nO1xuICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDEwMDAwLCB3aGljaCBjYXVzZXMgZXhjZXNzaXZlIG1lbW9yeSB1c2FnZVxuICAgIGxvZ2dlci5tYXhSZWNvcmRTaXplID0gTUFYX0xPR19SRUNPUkRTX0NPVU5UO1xuICB9XG4gIHBhdGNoTG9nZ2VyKGxvZ2dlcik7XG4gIHJldHVybiBbbG9nZ2VyLCB1c2luZ0dsb2JhbExvZ107XG59XG5cbmZ1bmN0aW9uIGdldEFjdHVhbFByZWZpeCAocHJlZml4LCBsb2dUaW1lc3RhbXAgPSBmYWxzZSkge1xuICBsZXQgYWN0dWFsUHJlZml4ID0gXy5pc0Z1bmN0aW9uKHByZWZpeCkgPyBwcmVmaXgoKSA6IHByZWZpeDtcbiAgaWYgKGxvZ1RpbWVzdGFtcCkge1xuICAgIGFjdHVhbFByZWZpeCA9IGBbJHttb21lbnQoKS5mb3JtYXQoUFJFRklYX1RJTUVTVEFNUF9GT1JNQVQpfV0gJHthY3R1YWxQcmVmaXh9YDtcbiAgfVxuICByZXR1cm4gYWN0dWFsUHJlZml4O1xufVxuXG5mdW5jdGlvbiBnZXRMb2dnZXIgKHByZWZpeCA9IG51bGwpIHtcbiAgbGV0IFtsb2dnZXIsIHVzaW5nR2xvYmFsTG9nXSA9IF9nZXRMb2dnZXIoKTtcblxuICAvLyB3cmFwIHRoZSBsb2dnZXIgc28gdGhhdCB3ZSBjYW4gY2F0Y2ggYW5kIG1vZGlmeSBhbnkgbG9nZ2luZ1xuICBsZXQgd3JhcHBlZExvZ2dlciA9IHt1bndyYXA6ICgpID0+IGxvZ2dlcn07XG5cbiAgLy8gYWxsb3cgYWNjZXNzIHRvIHRoZSBsZXZlbCBvZiB0aGUgdW5kZXJseWluZyBsb2dnZXJcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdyYXBwZWRMb2dnZXIsICdsZXZlbCcsIHtcbiAgICBnZXQgKCkge1xuICAgICAgcmV0dXJuIGxvZ2dlci5sZXZlbDtcbiAgICB9LFxuICAgIHNldCAobmV3VmFsdWUpIHtcbiAgICAgIGxvZ2dlci5sZXZlbCA9IG5ld1ZhbHVlO1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG5cbiAgY29uc3QgbG9nVGltZXN0YW1wID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuX0xPR19USU1FU1RBTVAsIDEwKSA9PT0gMTtcblxuICAvLyBhZGQgYWxsIHRoZSBsZXZlbHMgZnJvbSBgbnBtbG9nYCwgYW5kIG1hcCB0byB0aGUgdW5kZXJseWluZyBsb2dnZXJcbiAgZm9yIChjb25zdCBsZXZlbCBvZiBOUE1fTEVWRUxTKSB7XG4gICAgd3JhcHBlZExvZ2dlcltsZXZlbF0gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgY29uc3QgYWN0dWFsUHJlZml4ID0gZ2V0QWN0dWFsUHJlZml4KHByZWZpeCwgbG9nVGltZXN0YW1wKTtcbiAgICAgIGZvciAoY29uc3QgYXJnIG9mIGFyZ3MpIHtcbiAgICAgICAgY29uc3Qgb3V0ID0gKF8uaXNFcnJvcihhcmcpICYmIGFyZy5zdGFjaykgPyBhcmcuc3RhY2sgOiBgJHthcmd9YDtcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIG91dC5zcGxpdCgnXFxuJykpIHtcbiAgICAgICAgICAvLyBpdCBpcyBuZWNlc3NhcnkgdG8gdW5sZWFrIGVhY2ggbGluZSBiZWNhdXNlIGBzcGxpdGAgY2FsbFxuICAgICAgICAgIC8vIGNyZWF0ZXMgXCJ2aWV3c1wiIHRvIHRoZSBvcmlnaW5hbCBzdHJpbmcgYXMgd2VsbCBhcyB0aGUgYHN1YnN0cmluZ2Agb25lXG4gICAgICAgICAgY29uc3QgdW5sZWFrZWRMaW5lID0gdW5sZWFrU3RyaW5nKGxpbmUpO1xuICAgICAgICAgIGxvZ2dlcltsZXZlbF0oYWN0dWFsUHJlZml4LCBTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUi5wcmVwcm9jZXNzKHVubGVha2VkTGluZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICAvLyBhZGQgbWV0aG9kIHRvIGxvZyBhbiBlcnJvciwgYW5kIHRocm93IGl0LCBmb3IgY29udmVuaWVuY2VcbiAgd3JhcHBlZExvZ2dlci5lcnJvckFuZFRocm93ID0gZnVuY3Rpb24gKGVycikge1xuICAgIHRoaXMuZXJyb3IoZXJyKTtcbiAgICAvLyBtYWtlIHN1cmUgd2UgaGF2ZSBhbiBgRXJyb3JgIG9iamVjdC4gV3JhcCBpZiBuZWNlc3NhcnlcbiAgICB0aHJvdyAoXy5pc0Vycm9yKGVycikgPyBlcnIgOiBuZXcgRXJyb3IodW5sZWFrU3RyaW5nKGVycikpKTtcbiAgfTtcbiAgaWYgKCF1c2luZ0dsb2JhbExvZykge1xuICAgIC8vIGlmIHdlJ3JlIG5vdCB1c2luZyBhIGdsb2JhbCBsb2cgc3BlY2lmaWVkIGZyb20gc29tZSB0b3AtbGV2ZWwgcGFja2FnZSxcbiAgICAvLyBzZXQgdGhlIGxvZyBsZXZlbCB0byBhIGRlZmF1bHQgb2YgdmVyYm9zZS4gT3RoZXJ3aXNlLCBsZXQgdGhlIHRvcC1sZXZlbFxuICAgIC8vIHBhY2thZ2Ugc2V0IHRoZSBsb2cgbGV2ZWxcbiAgICB3cmFwcGVkTG9nZ2VyLmxldmVsID0gJ3ZlcmJvc2UnO1xuICB9XG4gIHdyYXBwZWRMb2dnZXIubGV2ZWxzID0gTlBNX0xFVkVMUztcbiAgcmV0dXJuIHdyYXBwZWRMb2dnZXI7XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gTG9hZFJlc3VsdFxuICogQHByb3BlcnR5IHtMaXN0PHN0cmluZz59IGlzc3VlcyBUaGUgbGlzdCBvZiBydWxlIHBhcnNpbmcgaXNzdWVzIChvbmUgaXRlbSBwZXIgcnVsZSkuXG4gKiBSdWxlcyB3aXRoIGlzc3VlcyBhcmUgc2tpcHBlZC4gQW4gZW1wdHkgbGlzdCBpcyByZXR1cm5lZCBpZiBubyBwYXJzaW5nIGlzc3VlcyBleGlzdC5cbiAqIEBwcm9wZXJ0eSB7TGlzdDxTZWN1cmVWYWx1ZVByZXByb2Nlc3NpbmdSdWxlPn0gcnVsZXMgVGhlIGxpc3Qgb2Ygc3VjY2Vzc2Z1bGx5IGxvYWRlZFxuICogcmVwbGFjZW1lbnQgcnVsZXMuIFRoZSBsaXN0IGNvdWxkIGJlIGVtcHR5IGlmIG5vIHJ1bGVzIHdlcmUgbG9hZGVkLlxuICovXG5cbi8qKlxuICogTG9hZHMgdGhlIEpTT04gZmlsZSBjb250YWluaW5nIHNlY3VyZSB2YWx1ZXMgcmVwbGFjZW1lbnQgcnVsZXMuXG4gKiBUaGlzIG1pZ2h0IGJlIG5lY2Vzc2FyeSB0byBoaWRlIHNlbnNpdGl2ZSB2YWx1ZXMgdGhhdCBtYXkgcG9zc2libHlcbiAqIGFwcGVhciBpbiBBcHBpdW0gbG9ncy5cbiAqIEVhY2ggY2FsbCB0byB0aGlzIG1ldGhvZCByZXBsYWNlcyB0aGUgcHJldmlvdXNseSBsb2FkZWQgcnVsZXMgaWYgYW55IGV4aXN0ZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHJ1bGVzSnNvblBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgSlNPTiBmaWxlIGNvbnRhaW5pbmdcbiAqIHRoZSByZXBsYWNlbWVudCBydWxlcy4gRWFjaCBydWxlIGNvdWxkIGVpdGhlciBiZSBhIHN0cmluZyB0byBiZSByZXBsYWNlZFxuICogb3IgYW4gb2JqZWN0IHdpdGggcHJlZGVmaW5lZCBwcm9wZXJ0aWVzLiBTZWUgdGhlIGBSdWxlYCB0eXBlIGRlZmluaXRpb24gaW5cbiAqIGBsb2ctaW50ZXJuYWxzLmpzYCB0byBnZXQgbW9yZSBkZXRhaWxzIG9uIGl0cyBmb3JtYXQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGdpdmVuIGZpbGUgY2Fubm90IGJlIGxvYWRlZFxuICogQHJldHVybnMge0xvYWRSZXN1bHR9XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRTZWN1cmVWYWx1ZXNQcmVwcm9jZXNzaW5nUnVsZXMgKHJ1bGVzSnNvblBhdGgpIHtcbiAgY29uc3QgaXNzdWVzID0gYXdhaXQgU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1IubG9hZFJ1bGVzKHJ1bGVzSnNvblBhdGgpO1xuICByZXR1cm4ge1xuICAgIGlzc3VlcyxcbiAgICBydWxlczogXy5jbG9uZURlZXAoU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1IucnVsZXMpLFxuICB9O1xufVxuXG4vLyBleHBvcnQgYSBkZWZhdWx0IGxvZ2dlciB3aXRoIG5vIHByZWZpeFxuY29uc3QgbG9nID0gZ2V0TG9nZ2VyKCk7XG5cbmV4cG9ydCB7IGxvZywgcGF0Y2hMb2dnZXIsIGdldExvZ2dlciwgbG9hZFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NpbmdSdWxlcyB9O1xuZXhwb3J0IGRlZmF1bHQgbG9nO1xuIl0sImZpbGUiOiJsaWIvbG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2dnaW5nLmpzIl0sIm5hbWVzIjpbIk5QTV9MRVZFTFMiLCJNQVhfTE9HX1JFQ09SRFNfQ09VTlQiLCJQUkVGSVhfVElNRVNUQU1QX0ZPUk1BVCIsIm1vY2tMb2ciLCJsZXZlbCIsInBhdGNoTG9nZ2VyIiwibG9nZ2VyIiwiZGVidWciLCJhZGRMZXZlbCIsImZnIiwiYmciLCJfZ2V0TG9nZ2VyIiwidGVzdGluZ01vZGUiLCJwYXJzZUludCIsInByb2Nlc3MiLCJlbnYiLCJfVEVTVElORyIsImZvcmNlTG9nTW9kZSIsIl9GT1JDRV9MT0dTIiwidXNpbmdHbG9iYWxMb2ciLCJnbG9iYWwiLCJfZ2xvYmFsX25wbWxvZyIsIm5wbWxvZyIsIm1heFJlY29yZFNpemUiLCJnZXRBY3R1YWxQcmVmaXgiLCJwcmVmaXgiLCJsb2dUaW1lc3RhbXAiLCJhY3R1YWxQcmVmaXgiLCJfIiwiaXNGdW5jdGlvbiIsImZvcm1hdCIsImdldExvZ2dlciIsIndyYXBwZWRMb2dnZXIiLCJ1bndyYXAiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsInNldCIsIm5ld1ZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIl9MT0dfVElNRVNUQU1QIiwiYXJncyIsImFyZyIsIm91dCIsImlzRXJyb3IiLCJzdGFjayIsImxpbmUiLCJzcGxpdCIsInVubGVha2VkTGluZSIsIlNFQ1VSRV9WQUxVRVNfUFJFUFJPQ0VTU09SIiwicHJlcHJvY2VzcyIsImVycm9yQW5kVGhyb3ciLCJlcnIiLCJlcnJvciIsIkVycm9yIiwibGV2ZWxzIiwibG9hZFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NpbmdSdWxlcyIsInJ1bGVzSnNvblBhdGgiLCJpc3N1ZXMiLCJsb2FkUnVsZXMiLCJydWxlcyIsImNsb25lRGVlcCIsImxvZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsVUFBVSxHQUFHLENBQUMs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REMsYUFBbkQsRUFBa0U7QUFDaEUsUUFBTUMsTUFBTSxHQUFHLE1BQU1ULHFCQUEyQlUsU0FBM0IsQ0FBcUNGLGFBQXJDLENBQXJCO0FBQ0EsU0FBTztBQUNMQyxJQUFBQSxNQURLO0FBRUxFLElBQUFBLEtBQUssRUFBRWpDLGdCQUFFa0MsU0FBRixDQUFZWixxQkFBMkJXLEtBQXZDO0FBRkYsR0FBUDtBQUlEOztBQUdELE1BQU1FLEdBQUcsR0FBR2hDLFNBQVMsRUFBckI7O2VBR2VnQyxHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5wbWxvZyBmcm9tICducG1sb2cnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHVubGVha1N0cmluZyB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1IgZnJvbSAnLi9sb2ctaW50ZXJuYWwnO1xuXG4vLyBsZXZlbHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZyb20gYG5wbWxvZ2BcbmNvbnN0IE5QTV9MRVZFTFMgPSBbJ3NpbGx5JywgJ3ZlcmJvc2UnLCAnZGVidWcnLCAnaW5mbycsICdodHRwJywgJ3dhcm4nLCAnZXJyb3InXTtcbmNvbnN0IE1BWF9MT0dfUkVDT1JEU19DT1VOVCA9IDMwMDA7XG5cbmNvbnN0IFBSRUZJWF9USU1FU1RBTVBfRk9STUFUID0gJ0hILW1tLXNzOlNTUyc7XG5cbi8vIG1vY2sgbG9nIG9iamVjdCB1c2VkIGluIHRlc3RpbmcgbW9kZVxubGV0IG1vY2tMb2cgPSB7fTtcbmZvciAobGV0IGxldmVsIG9mIE5QTV9MRVZFTFMpIHtcbiAgbW9ja0xvZ1tsZXZlbF0gPSAoKSA9PiB7fTtcbn1cblxuZnVuY3Rpb24gcGF0Y2hMb2dnZXIgKGxvZ2dlcikge1xuICBpZiAoIWxvZ2dlci5kZWJ1Zykge1xuICAgIGxvZ2dlci5hZGRMZXZlbCgnZGVidWcnLCAxMDAwLCB7IGZnOiAnYmx1ZScsIGJnOiAnYmxhY2snIH0sICdkYnVnJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2dldExvZ2dlciAoKSB7XG4gIC8vIGNoZWNrIGlmIHRoZSB1c2VyIHNldCB0aGUgYF9URVNUSU5HYCBvciBgX0ZPUkNFX0xPR1NgIGZsYWdcbiAgY29uc3QgdGVzdGluZ01vZGUgPSBwYXJzZUludChwcm9jZXNzLmVudi5fVEVTVElORywgMTApID09PSAxO1xuICBjb25zdCBmb3JjZUxvZ01vZGUgPSBwYXJzZUludChwcm9jZXNzLmVudi5fRk9SQ0VfTE9HUywgMTApID09PSAxO1xuXG4gIC8vIGlmIGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgaXMgYSBsb2dnZXIgaW5zdGFuY2UgdGhhdCBpcyBhbHJlYWR5IGFyb3VuZCxcbiAgLy8gaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHQgbyB1c2UgdGhhdFxuICBjb25zdCB1c2luZ0dsb2JhbExvZyA9ICEhZ2xvYmFsLl9nbG9iYWxfbnBtbG9nO1xuICBsZXQgbG9nZ2VyO1xuICBpZiAodGVzdGluZ01vZGUgJiYgIWZvcmNlTG9nTW9kZSkge1xuICAgIC8vIGluIHRlc3RpbmcgbW9kZSwgdXNlIGEgbW9jayBsb2dnZXIgb2JqZWN0IHRoYXQgd2UgY2FuIHF1ZXJ5XG4gICAgbG9nZ2VyID0gbW9ja0xvZztcbiAgfSBlbHNlIHtcbiAgICAvLyBvdGhlcndpc2UsIGVpdGhlciB1c2UgdGhlIGdsb2JhbCwgb3IgYSBuZXcgYG5wbWxvZ2Agb2JqZWN0XG4gICAgbG9nZ2VyID0gZ2xvYmFsLl9nbG9iYWxfbnBtbG9nIHx8IG5wbWxvZztcbiAgICAvLyBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxMDAwMCwgd2hpY2ggY2F1c2VzIGV4Y2Vzc2l2ZSBtZW1vcnkgdXNhZ2VcbiAgICBsb2dnZXIubWF4UmVjb3JkU2l6ZSA9IE1BWF9MT0dfUkVDT1JEU19DT1VOVDtcbiAgfVxuICBwYXRjaExvZ2dlcihsb2dnZXIpO1xuICByZXR1cm4gW2xvZ2dlciwgdXNpbmdHbG9iYWxMb2ddO1xufVxuXG5mdW5jdGlvbiBnZXRBY3R1YWxQcmVmaXggKHByZWZpeCwgbG9nVGltZXN0YW1wID0gZmFsc2UpIHtcbiAgbGV0IGFjdHVhbFByZWZpeCA9IF8uaXNGdW5jdGlvbihwcmVmaXgpID8gcHJlZml4KCkgOiBwcmVmaXg7XG4gIGlmIChsb2dUaW1lc3RhbXApIHtcbiAgICBhY3R1YWxQcmVmaXggPSBgWyR7bW9tZW50KCkuZm9ybWF0KFBSRUZJWF9USU1FU1RBTVBfRk9STUFUKX1dICR7YWN0dWFsUHJlZml4fWA7XG4gIH1cbiAgcmV0dXJuIGFjdHVhbFByZWZpeDtcbn1cblxuZnVuY3Rpb24gZ2V0TG9nZ2VyIChwcmVmaXggPSBudWxsKSB7XG4gIGxldCBbbG9nZ2VyLCB1c2luZ0dsb2JhbExvZ10gPSBfZ2V0TG9nZ2VyKCk7XG5cbiAgLy8gd3JhcCB0aGUgbG9nZ2VyIHNvIHRoYXQgd2UgY2FuIGNhdGNoIGFuZCBtb2RpZnkgYW55IGxvZ2dpbmdcbiAgbGV0IHdyYXBwZWRMb2dnZXIgPSB7dW53cmFwOiAoKSA9PiBsb2dnZXJ9O1xuXG4gIC8vIGFsbG93IGFjY2VzcyB0byB0aGUgbGV2ZWwgb2YgdGhlIHVuZGVybHlpbmcgbG9nZ2VyXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3cmFwcGVkTG9nZ2VyLCAnbGV2ZWwnLCB7XG4gICAgZ2V0ICgpIHtcbiAgICAgIHJldHVybiBsb2dnZXIubGV2ZWw7XG4gICAgfSxcbiAgICBzZXQgKG5ld1ZhbHVlKSB7XG4gICAgICBsb2dnZXIubGV2ZWwgPSBuZXdWYWx1ZTtcbiAgICB9LFxuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xuXG4gIGNvbnN0IGxvZ1RpbWVzdGFtcCA9IHBhcnNlSW50KHByb2Nlc3MuZW52Ll9MT0dfVElNRVNUQU1QLCAxMCkgPT09IDE7XG5cbiAgLy8gYWRkIGFsbCB0aGUgbGV2ZWxzIGZyb20gYG5wbWxvZ2AsIGFuZCBtYXAgdG8gdGhlIHVuZGVybHlpbmcgbG9nZ2VyXG4gIGZvciAoY29uc3QgbGV2ZWwgb2YgTlBNX0xFVkVMUykge1xuICAgIHdyYXBwZWRMb2dnZXJbbGV2ZWxdID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgIGNvbnN0IGFjdHVhbFByZWZpeCA9IGdldEFjdHVhbFByZWZpeChwcmVmaXgsIGxvZ1RpbWVzdGFtcCk7XG4gICAgICBmb3IgKGNvbnN0IGFyZyBvZiBhcmdzKSB7XG4gICAgICAgIGNvbnN0IG91dCA9IChfLmlzRXJyb3IoYXJnKSAmJiBhcmcuc3RhY2spID8gYXJnLnN0YWNrIDogYCR7YXJnfWA7XG4gICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBvdXQuc3BsaXQoJ1xcbicpKSB7XG4gICAgICAgICAgLy8gaXQgaXMgbmVjZXNzYXJ5IHRvIHVubGVhayBlYWNoIGxpbmUgYmVjYXVzZSBgc3BsaXRgIGNhbGxcbiAgICAgICAgICAvLyBjcmVhdGVzIFwidmlld3NcIiB0byB0aGUgb3JpZ2luYWwgc3RyaW5nIGFzIHdlbGwgYXMgdGhlIGBzdWJzdHJpbmdgIG9uZVxuICAgICAgICAgIGNvbnN0IHVubGVha2VkTGluZSA9IHVubGVha1N0cmluZyhsaW5lKTtcbiAgICAgICAgICBsb2dnZXJbbGV2ZWxdKGFjdHVhbFByZWZpeCwgU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1IucHJlcHJvY2Vzcyh1bmxlYWtlZExpbmUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbiAgLy8gYWRkIG1ldGhvZCB0byBsb2cgYW4gZXJyb3IsIGFuZCB0aHJvdyBpdCwgZm9yIGNvbnZlbmllbmNlXG4gIHdyYXBwZWRMb2dnZXIuZXJyb3JBbmRUaHJvdyA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICB0aGlzLmVycm9yKGVycik7XG4gICAgLy8gbWFrZSBzdXJlIHdlIGhhdmUgYW4gYEVycm9yYCBvYmplY3QuIFdyYXAgaWYgbmVjZXNzYXJ5XG4gICAgdGhyb3cgKF8uaXNFcnJvcihlcnIpID8gZXJyIDogbmV3IEVycm9yKHVubGVha1N0cmluZyhlcnIpKSk7XG4gIH07XG4gIGlmICghdXNpbmdHbG9iYWxMb2cpIHtcbiAgICAvLyBpZiB3ZSdyZSBub3QgdXNpbmcgYSBnbG9iYWwgbG9nIHNwZWNpZmllZCBmcm9tIHNvbWUgdG9wLWxldmVsIHBhY2thZ2UsXG4gICAgLy8gc2V0IHRoZSBsb2cgbGV2ZWwgdG8gYSBkZWZhdWx0IG9mIHZlcmJvc2UuIE90aGVyd2lzZSwgbGV0IHRoZSB0b3AtbGV2ZWxcbiAgICAvLyBwYWNrYWdlIHNldCB0aGUgbG9nIGxldmVsXG4gICAgd3JhcHBlZExvZ2dlci5sZXZlbCA9ICd2ZXJib3NlJztcbiAgfVxuICB3cmFwcGVkTG9nZ2VyLmxldmVscyA9IE5QTV9MRVZFTFM7XG4gIHJldHVybiB3cmFwcGVkTG9nZ2VyO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IExvYWRSZXN1bHRcbiAqIEBwcm9wZXJ0eSB7TGlzdDxzdHJpbmc+fSBpc3N1ZXMgVGhlIGxpc3Qgb2YgcnVsZSBwYXJzaW5nIGlzc3VlcyAob25lIGl0ZW0gcGVyIHJ1bGUpLlxuICogUnVsZXMgd2l0aCBpc3N1ZXMgYXJlIHNraXBwZWQuIEFuIGVtcHR5IGxpc3QgaXMgcmV0dXJuZWQgaWYgbm8gcGFyc2luZyBpc3N1ZXMgZXhpc3QuXG4gKiBAcHJvcGVydHkge0xpc3Q8U2VjdXJlVmFsdWVQcmVwcm9jZXNzaW5nUnVsZT59IHJ1bGVzIFRoZSBsaXN0IG9mIHN1Y2Nlc3NmdWxseSBsb2FkZWRcbiAqIHJlcGxhY2VtZW50IHJ1bGVzLiBUaGUgbGlzdCBjb3VsZCBiZSBlbXB0eSBpZiBubyBydWxlcyB3ZXJlIGxvYWRlZC5cbiAqL1xuXG4vKipcbiAqIExvYWRzIHRoZSBKU09OIGZpbGUgY29udGFpbmluZyBzZWN1cmUgdmFsdWVzIHJlcGxhY2VtZW50IHJ1bGVzLlxuICogVGhpcyBtaWdodCBiZSBuZWNlc3NhcnkgdG8gaGlkZSBzZW5zaXRpdmUgdmFsdWVzIHRoYXQgbWF5IHBvc3NpYmx5XG4gKiBhcHBlYXIgaW4gQXBwaXVtIGxvZ3MuXG4gKiBFYWNoIGNhbGwgdG8gdGhpcyBtZXRob2QgcmVwbGFjZXMgdGhlIHByZXZpb3VzbHkgbG9hZGVkIHJ1bGVzIGlmIGFueSBleGlzdGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBydWxlc0pzb25QYXRoIFRoZSBmdWxsIHBhdGggdG8gdGhlIEpTT04gZmlsZSBjb250YWluaW5nXG4gKiB0aGUgcmVwbGFjZW1lbnQgcnVsZXMuIEVhY2ggcnVsZSBjb3VsZCBlaXRoZXIgYmUgYSBzdHJpbmcgdG8gYmUgcmVwbGFjZWRcbiAqIG9yIGFuIG9iamVjdCB3aXRoIHByZWRlZmluZWQgcHJvcGVydGllcy4gU2VlIHRoZSBgUnVsZWAgdHlwZSBkZWZpbml0aW9uIGluXG4gKiBgbG9nLWludGVybmFscy5qc2AgdG8gZ2V0IG1vcmUgZGV0YWlscyBvbiBpdHMgZm9ybWF0LlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBnaXZlbiBmaWxlIGNhbm5vdCBiZSBsb2FkZWRcbiAqIEByZXR1cm5zIHtMb2FkUmVzdWx0fVxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc2luZ1J1bGVzIChydWxlc0pzb25QYXRoKSB7XG4gIGNvbnN0IGlzc3VlcyA9IGF3YWl0IFNFQ1VSRV9WQUxVRVNfUFJFUFJPQ0VTU09SLmxvYWRSdWxlcyhydWxlc0pzb25QYXRoKTtcbiAgcmV0dXJuIHtcbiAgICBpc3N1ZXMsXG4gICAgcnVsZXM6IF8uY2xvbmVEZWVwKFNFQ1VSRV9WQUxVRVNfUFJFUFJPQ0VTU09SLnJ1bGVzKSxcbiAgfTtcbn1cblxuLy8gZXhwb3J0IGEgZGVmYXVsdCBsb2dnZXIgd2l0aCBubyBwcmVmaXhcbmNvbnN0IGxvZyA9IGdldExvZ2dlcigpO1xuXG5leHBvcnQgeyBsb2csIHBhdGNoTG9nZ2VyLCBnZXRMb2dnZXIsIGxvYWRTZWN1cmVWYWx1ZXNQcmVwcm9jZXNzaW5nUnVsZXMgfTtcbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdLCJmaWxlIjoibGliL2xvZ2dpbmcuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==

@@ -149,2 +149,2 @@ "use strict";

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9tanBlZy5qcyJdLCJuYW1lcyI6WyJNSnBlZ0NvbnN1bWVyIiwiaW5pdE1KcGVnQ29uc3VtZXIiLCJpZ24iLCJFcnJvciIsIk1KUEVHX1NFUlZFUl9USU1FT1VUX01TIiwiTUpwZWdTdHJlYW0iLCJXcml0YWJsZSIsImNvbnN0cnVjdG9yIiwibUpwZWdVcmwiLCJlcnJvckhhbmRsZXIiLCJfIiwibm9vcCIsIm9wdGlvbnMiLCJ1cmwiLCJjbGVhciIsImxhc3RDaHVua0Jhc2U2NCIsImlzRW1wdHkiLCJsYXN0Q2h1bmsiLCJpc0J1ZmZlciIsInRvU3RyaW5nIiwibGFzdENodW5rUE5HIiwianBnIiwiZ2V0QnVmZmVyIiwiTUlNRV9QTkciLCJlIiwibGFzdENodW5rUE5HQmFzZTY0IiwicG5nIiwicmVnaXN0ZXJTdGFydFN1Y2Nlc3MiLCJyZWdpc3RlclN0YXJ0RmFpbHVyZSIsInJlc3BvbnNlU3RyZWFtIiwiY29uc3VtZXIiLCJ1cGRhdGVDb3VudCIsInN0YXJ0Iiwic2VydmVyVGltZW91dCIsInN0b3AiLCJzdGFydFByb21pc2UiLCJCIiwicmVzIiwicmVqIiwidGltZW91dCIsIm9uRXJyIiwiZXJyIiwibG9nIiwiZXJyb3IiLCJtZXNzYWdlIiwib25DbG9zZSIsImRlYnVnIiwicmVzcG9uc2VUeXBlIiwiZGF0YSIsIm9uY2UiLCJvbiIsInBpcGUiLCJ1bnBpcGUiLCJkZXN0cm95Iiwid3JpdGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsSUFBSUEsYUFBYSxHQUFHLElBQXBCOztBQUtBLGVBQWVDLGlCQUFmLEdBQW9DO0FBQ2xDLE1BQUksQ0FBQ0QsYUFBTCxFQUFvQjtBQUNsQixRQUFJO0FBQ0ZBLE1BQUFBLGFBQWEsR0FBRyxNQUFNLDBCQUFlLGdCQUFmLENBQXRCO0FBQ0QsS0FGRCxDQUVFLE9BQU9FLEdBQVAsRUFBWSxDQUFFO0FBQ2pCOztBQUNELE1BQUksQ0FBQ0YsYUFBTCxFQUFvQjtBQUNsQixVQUFNLElBQUlHLEtBQUosQ0FBVSx3RUFDQSx1RUFEVixDQUFOO0FBRUQ7QUFDRjs7QUFHRCxNQUFNQyx1QkFBdUIsR0FBRyxLQUFoQzs7QUFHQSxNQUFNQyxXQUFOLFNBQTBCQyxnQkFBMUIsQ0FBbUM7QUFTakNDLEVBQUFBLFdBQVcsQ0FBRUMsUUFBRixFQUFZQyxZQUFZLEdBQUdDLGdCQUFFQyxJQUE3QixFQUFtQ0MsT0FBTyxHQUFHLEVBQTdDLEVBQWlEO0FBQzFELFVBQU1BLE9BQU47QUFFQSxTQUFLSCxZQUFMLEdBQW9CQSxZQUFwQjtBQUNBLFNBQUtJLEdBQUwsR0FBV0wsUUFBWDtBQUNBLFNBQUtNLEtBQUw7QUFDRDs7QUFRRCxNQUFJQyxlQUFKLEdBQXVCO0FBQ3JCLFdBQU8sQ0FBQ0wsZ0JBQUVNLE9BQUYsQ0FBVSxLQUFLQyxTQUFmLENBQUQsSUFBOEJQLGdCQUFFUSxRQUFGLENBQVcsS0FBS0QsU0FBaEIsQ0FBOUIsR0FDSCxLQUFLQSxTQUFMLENBQWVFLFFBQWYsQ0FBd0IsUUFBeEIsQ0FERyxHQUVILElBRko7QUFHRDs7QUFRRCxRQUFNQyxZQUFOLEdBQXNCO0FBQ3BCLFFBQUlWLGdCQUFFTSxPQUFGLENBQVUsS0FBS0MsU0FBZixLQUE2QixDQUFDUCxnQkFBRVEsUUFBRixDQUFXLEtBQUtELFNBQWhCLENBQWxDLEVBQThEO0FBQzVELGFBQU8sSUFBUDtBQUNEOztBQUVELFFBQUk7QUFDRixZQUFNSSxHQUFHLEdBQUcsTUFBTSw2QkFBYSxLQUFLSixTQUFsQixDQUFsQjtBQUNBLGFBQU8sTUFBTUksR0FBRyxDQUFDQyxTQUFKLENBQWNDLG1CQUFkLENBQWI7QUFDRCxLQUhELENBR0UsT0FBT0MsQ0FBUCxFQUFVO0FBQ1YsYUFBTyxJQUFQO0FBQ0Q7QUFDRjs7QUFRRCxRQUFNQyxrQkFBTixHQUE0QjtBQUMxQixVQUFNQyxHQUFHLEdBQUcsTUFBTSxLQUFLTixZQUFMLEVBQWxCO0FBQ0EsV0FBT00sR0FBRyxHQUFHQSxHQUFHLENBQUNQLFFBQUosQ0FBYSxRQUFiLENBQUgsR0FBNEIsSUFBdEM7QUFDRDs7QUFLREwsRUFBQUEsS0FBSyxHQUFJO0FBQ1AsU0FBS2Esb0JBQUwsR0FBNEIsSUFBNUI7QUFDQSxTQUFLQyxvQkFBTCxHQUE0QixJQUE1QjtBQUNBLFNBQUtDLGNBQUwsR0FBc0IsSUFBdEI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLElBQWhCO0FBQ0EsU0FBS2IsU0FBTCxHQUFpQixJQUFqQjtBQUNBLFNBQUtjLFdBQUwsR0FBbUIsQ0FBbkI7QUFDRDs7QUFLRCxRQUFNQyxLQUFOLENBQWFDLGFBQWEsR0FBRzdCLHVCQUE3QixFQUFzRDtBQUVwRCxTQUFLOEIsSUFBTDtBQUVBLFVBQU1qQyxpQkFBaUIsRUFBdkI7QUFFQSxTQUFLNkIsUUFBTCxHQUFnQixJQUFJOUIsYUFBSixFQUFoQjtBQUlBLFVBQU1tQyxZQUFZLEdBQUcsSUFBSUMsaUJBQUosQ0FBTSxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUN2QyxXQUFLWCxvQkFBTCxHQUE0QlUsR0FBNUI7QUFDQSxXQUFLVCxvQkFBTCxHQUE0QlUsR0FBNUI7QUFDRCxLQUhvQixFQU1sQkMsT0FOa0IsQ0FNVk4sYUFOVSxFQU9oQixVQUFTQSxhQUFjLCtDQVBQLENBQXJCO0FBU0EsVUFBTXBCLEdBQUcsR0FBRyxLQUFLQSxHQUFqQjs7QUFDQSxVQUFNMkIsS0FBSyxHQUFJQyxHQUFELElBQVM7QUFFckIsV0FBS3hCLFNBQUwsR0FBaUIsSUFBakI7O0FBRUF5QixzQkFBSUMsS0FBSixDQUFXLHlDQUF3Q0YsR0FBRyxDQUFDRyxPQUFRLEVBQS9EOztBQUNBLFdBQUtuQyxZQUFMLENBQWtCZ0MsR0FBbEI7O0FBQ0EsVUFBSSxLQUFLYixvQkFBVCxFQUErQjtBQUM3QixhQUFLQSxvQkFBTCxDQUEwQmEsR0FBMUI7QUFDRDtBQUNGLEtBVEQ7O0FBVUEsVUFBTUksT0FBTyxHQUFHLE1BQU07QUFDcEJILHNCQUFJSSxLQUFKLENBQVcscUNBQW9DakMsR0FBSSxrQkFBbkQ7O0FBQ0EsV0FBS0ksU0FBTCxHQUFpQixJQUFqQjtBQUNELEtBSEQ7O0FBS0EsUUFBSTtBQUNGLFdBQUtZLGNBQUwsR0FBc0IsQ0FBQyxNQUFNLG9CQUFNO0FBQ2pDaEIsUUFBQUEsR0FEaUM7QUFFakNrQyxRQUFBQSxZQUFZLEVBQUUsUUFGbUI7QUFHakNSLFFBQUFBLE9BQU8sRUFBRU47QUFId0IsT0FBTixDQUFQLEVBSWxCZSxJQUpKO0FBS0QsS0FORCxDQU1FLE9BQU94QixDQUFQLEVBQVU7QUFDVixhQUFPZ0IsS0FBSyxDQUFDaEIsQ0FBRCxDQUFaO0FBQ0Q7O0FBRUQsU0FBS0ssY0FBTCxDQUNHb0IsSUFESCxDQUNRLE9BRFIsRUFDaUJKLE9BRGpCLEVBRUdLLEVBRkgsQ0FFTSxPQUZOLEVBRWVWLEtBRmYsRUFHR1csSUFISCxDQUdRLEtBQUtyQixRQUhiLEVBSUdxQixJQUpILENBSVEsSUFKUjtBQU1BLFVBQU1oQixZQUFOO0FBQ0Q7O0FBTURELEVBQUFBLElBQUksR0FBSTtBQUNOLFFBQUksQ0FBQyxLQUFLSixRQUFWLEVBQW9CO0FBQ2xCO0FBQ0Q7O0FBRUQsU0FBS0QsY0FBTCxDQUFvQnVCLE1BQXBCLENBQTJCLEtBQUt0QixRQUFoQztBQUNBLFNBQUtBLFFBQUwsQ0FBY3NCLE1BQWQsQ0FBcUIsSUFBckI7QUFDQSxTQUFLdkIsY0FBTCxDQUFvQndCLE9BQXBCO0FBQ0EsU0FBS3ZDLEtBQUw7QUFDRDs7QUFRRHdDLEVBQUFBLEtBQUssQ0FBRU4sSUFBRixFQUFRO0FBQ1gsU0FBSy9CLFNBQUwsR0FBaUIrQixJQUFqQjtBQUNBLFNBQUtqQixXQUFMOztBQUVBLFFBQUksS0FBS0osb0JBQVQsRUFBK0I7QUFDN0IsV0FBS0Esb0JBQUw7QUFDQSxXQUFLQSxvQkFBTCxHQUE0QixJQUE1QjtBQUNEO0FBQ0Y7O0FBN0pnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7IGdldEppbXBJbWFnZSwgTUlNRV9QTkcgfSBmcm9tICcuL2ltYWdlLXV0aWwnO1xuaW1wb3J0IHsgV3JpdGFibGUgfSBmcm9tICdzdHJlYW0nO1xuaW1wb3J0IHsgcmVxdWlyZVBhY2thZ2UgfSBmcm9tICcuL25vZGUnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcblxuLy8gbGF6eSBsb2FkIHRoaXMsIGFzIGl0IG1pZ2h0IG5vdCBiZSBhdmFpbGFibGVcbmxldCBNSnBlZ0NvbnN1bWVyID0gbnVsbDtcblxuLyoqXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgYG1qcGVnLWNvbnN1bWVyYCBtb2R1bGUgaXMgbm90IGluc3RhbGxlZCBvciBjYW5ub3QgYmUgbG9hZGVkXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGluaXRNSnBlZ0NvbnN1bWVyICgpIHtcbiAgaWYgKCFNSnBlZ0NvbnN1bWVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIE1KcGVnQ29uc3VtZXIgPSBhd2FpdCByZXF1aXJlUGFja2FnZSgnbWpwZWctY29uc3VtZXInKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cbiAgaWYgKCFNSnBlZ0NvbnN1bWVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtanBlZy1jb25zdW1lciBtb2R1bGUgaXMgcmVxdWlyZWQgdG8gdXNlIE1KUEVHLW92ZXItSFRUUCBmZWF0dXJlcy4gJyArXG4gICAgICAgICAgICAgICAgICAgICdQbGVhc2UgaW5zdGFsbCBpdCBmaXJzdCAobnBtIGkgLWcgbWpwZWctY29uc3VtZXIpIGFuZCByZXN0YXJ0IEFwcGl1bS4nKTtcbiAgfVxufVxuXG4vLyBhbW91bnQgb2YgdGltZSB0byB3YWl0IGZvciB0aGUgZmlyc3QgaW1hZ2UgaW4gdGhlIHN0cmVhbVxuY29uc3QgTUpQRUdfU0VSVkVSX1RJTUVPVVRfTVMgPSAxMDAwMDtcblxuLyoqIENsYXNzIHdoaWNoIHN0b3JlcyB0aGUgbGFzdCBiaXQgb2YgZGF0YSBzdHJlYW1lZCBpbnRvIGl0ICovXG5jbGFzcyBNSnBlZ1N0cmVhbSBleHRlbmRzIFdyaXRhYmxlIHtcblxuICAvKipcbiAgICogQ3JlYXRlIGFuIE1KcGVnU3RyZWFtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtSnBlZ1VybCAtIFVSTCBvZiBNSlBFRy1vdmVyLUhUVFAgc3RyZWFtXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtlcnJvckhhbmRsZXI9bm9vcF0gLSBhZGRpdGlvbmFsIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZVxuICAgKiBjYWxsZWQgaW4gdGhlIGNhc2Ugb2YgYW55IGVycm9ycy5cbiAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zPXt9XSAtIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgV3JpdGFibGUgY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yIChtSnBlZ1VybCwgZXJyb3JIYW5kbGVyID0gXy5ub29wLCBvcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIHRoaXMuZXJyb3JIYW5kbGVyID0gZXJyb3JIYW5kbGVyO1xuICAgIHRoaXMudXJsID0gbUpwZWdVcmw7XG4gICAgdGhpcy5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgYmFzZTY0LWVuY29kZWQgdmVyc2lvbiBvZiB0aGUgSlBFR1xuICAgKlxuICAgKiBAcmV0dXJucyB7P3N0cmluZ30gYmFzZTY0LWVuY29kZWQgSlBFRyBpbWFnZSBkYXRhXG4gICAqIG9yIGBudWxsYCBpZiBubyBpbWFnZSBjYW4gYmUgcGFyc2VkXG4gICAqL1xuICBnZXQgbGFzdENodW5rQmFzZTY0ICgpIHtcbiAgICByZXR1cm4gIV8uaXNFbXB0eSh0aGlzLmxhc3RDaHVuaykgJiYgXy5pc0J1ZmZlcih0aGlzLmxhc3RDaHVuaylcbiAgICAgID8gdGhpcy5sYXN0Q2h1bmsudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gICAgICA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBQTkcgdmVyc2lvbiBvZiB0aGUgSlBFRyBidWZmZXJcbiAgICpcbiAgICogQHJldHVybnMgez9CdWZmZXJ9IFBORyBpbWFnZSBkYXRhIG9yIGBudWxsYCBpZiBubyBQTkdcbiAgICogaW1hZ2UgY2FuIGJlIHBhcnNlZFxuICAgKi9cbiAgYXN5bmMgbGFzdENodW5rUE5HICgpIHtcbiAgICBpZiAoXy5pc0VtcHR5KHRoaXMubGFzdENodW5rKSB8fCAhXy5pc0J1ZmZlcih0aGlzLmxhc3RDaHVuaykpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBqcGcgPSBhd2FpdCBnZXRKaW1wSW1hZ2UodGhpcy5sYXN0Q2h1bmspO1xuICAgICAgcmV0dXJuIGF3YWl0IGpwZy5nZXRCdWZmZXIoTUlNRV9QTkcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJhc2U2NC1lbmNvZGVkIHZlcnNpb24gb2YgdGhlIFBOR1xuICAgKlxuICAgKiBAcmV0dXJucyB7P3N0cmluZ30gYmFzZTY0LWVuY29kZWQgUE5HIGltYWdlIGRhdGFcbiAgICogb3IgYG51bGxgIGlmIG5vIGltYWdlIGNhbiBiZSBwYXJzZWRcbiAgICovXG4gIGFzeW5jIGxhc3RDaHVua1BOR0Jhc2U2NCAoKSB7XG4gICAgY29uc3QgcG5nID0gYXdhaXQgdGhpcy5sYXN0Q2h1bmtQTkcoKTtcbiAgICByZXR1cm4gcG5nID8gcG5nLnRvU3RyaW5nKCdiYXNlNjQnKSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgaW50ZXJuYWwgc3RhdGVcbiAgICovXG4gIGNsZWFyICgpIHtcbiAgICB0aGlzLnJlZ2lzdGVyU3RhcnRTdWNjZXNzID0gbnVsbDtcbiAgICB0aGlzLnJlZ2lzdGVyU3RhcnRGYWlsdXJlID0gbnVsbDtcbiAgICB0aGlzLnJlc3BvbnNlU3RyZWFtID0gbnVsbDtcbiAgICB0aGlzLmNvbnN1bWVyID0gbnVsbDtcbiAgICB0aGlzLmxhc3RDaHVuayA9IG51bGw7XG4gICAgdGhpcy51cGRhdGVDb3VudCA9IDA7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgcmVhZGluZyB0aGUgTUpwZWcgc3RyZWFtIGFuZCBzdG9yaW5nIHRoZSBsYXN0IGltYWdlXG4gICAqL1xuICBhc3luYyBzdGFydCAoc2VydmVyVGltZW91dCA9IE1KUEVHX1NFUlZFUl9USU1FT1VUX01TKSB7XG4gICAgLy8gZW5zdXJlIHdlJ3JlIG5vdCBzdGFydGVkIGFscmVhZHlcbiAgICB0aGlzLnN0b3AoKTtcblxuICAgIGF3YWl0IGluaXRNSnBlZ0NvbnN1bWVyKCk7XG5cbiAgICB0aGlzLmNvbnN1bWVyID0gbmV3IE1KcGVnQ29uc3VtZXIoKTtcblxuICAgIC8vIHVzZSB0aGUgZGVmZXJyZWQgcGF0dGVybiBzbyB3ZSBjYW4gd2FpdCBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBzdHJlYW1cbiAgICAvLyBiYXNlZCBvbiB3aGF0IGNvbWVzIGluIGZyb20gYW4gZXh0ZXJuYWwgcGlwZVxuICAgIGNvbnN0IHN0YXJ0UHJvbWlzZSA9IG5ldyBCKChyZXMsIHJlaikgPT4ge1xuICAgICAgdGhpcy5yZWdpc3RlclN0YXJ0U3VjY2VzcyA9IHJlcztcbiAgICAgIHRoaXMucmVnaXN0ZXJTdGFydEZhaWx1cmUgPSByZWo7XG4gICAgfSlcbiAgICAvLyBzdGFydCBhIHRpbWVvdXQgc28gdGhhdCBpZiB0aGUgc2VydmVyIGRvZXMgbm90IHJldHVybiBkYXRhLCB3ZSBkb24ndFxuICAgIC8vIGJsb2NrIGZvcmV2ZXIuXG4gICAgICAudGltZW91dChzZXJ2ZXJUaW1lb3V0LFxuICAgICAgICBgV2FpdGVkICR7c2VydmVyVGltZW91dH1tcyBidXQgdGhlIE1KUEVHIHNlcnZlciBuZXZlciBzZW50IGFueSBpbWFnZXNgKTtcblxuICAgIGNvbnN0IHVybCA9IHRoaXMudXJsO1xuICAgIGNvbnN0IG9uRXJyID0gKGVycikgPT4ge1xuICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGdldCBhbiBvdXRkYXRlZCBzY3JlZW5zaG90IGlmIHRoZXJlIHdhcyBhbiBlcnJvclxuICAgICAgdGhpcy5sYXN0Q2h1bmsgPSBudWxsO1xuXG4gICAgICBsb2cuZXJyb3IoYEVycm9yIGdldHRpbmcgTUpwZWcgc2NyZWVuc2hvdCBjaHVuazogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIHRoaXMuZXJyb3JIYW5kbGVyKGVycik7XG4gICAgICBpZiAodGhpcy5yZWdpc3RlclN0YXJ0RmFpbHVyZSkge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyU3RhcnRGYWlsdXJlKGVycik7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBvbkNsb3NlID0gKCkgPT4ge1xuICAgICAgbG9nLmRlYnVnKGBUaGUgY29ubmVjdGlvbiB0byBNSlBFRyBzZXJ2ZXIgYXQgJHt1cmx9IGhhcyBiZWVuIGNsb3NlZGApO1xuICAgICAgdGhpcy5sYXN0Q2h1bmsgPSBudWxsO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5yZXNwb25zZVN0cmVhbSA9IChhd2FpdCBheGlvcyh7XG4gICAgICAgIHVybCxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnc3RyZWFtJyxcbiAgICAgICAgdGltZW91dDogc2VydmVyVGltZW91dCxcbiAgICAgIH0pKS5kYXRhO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBvbkVycihlKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc3BvbnNlU3RyZWFtXG4gICAgICAub25jZSgnY2xvc2UnLCBvbkNsb3NlKVxuICAgICAgLm9uKCdlcnJvcicsIG9uRXJyKSAvLyBlbnN1cmUgd2UgZG8gc29tZXRoaW5nIHdpdGggZXJyb3JzXG4gICAgICAucGlwZSh0aGlzLmNvbnN1bWVyKSAvLyBhbGxvdyBjaHVua2luZyBhbmQgdHJhbnNmb3JtaW5nIG9mIGpwZWcgZGF0YVxuICAgICAgLnBpcGUodGhpcyk7IC8vIHNlbmQgdGhlIGFjdHVhbCBqcGVncyB0byBvdXJzZWxmXG5cbiAgICBhd2FpdCBzdGFydFByb21pc2U7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCByZWFkaW5nIHRoZSBNSnBlZyBzdHJlYW0uIEVuc3VyZSB3ZSBkaXNjb25uZWN0IGFsbCB0aGUgcGlwZXMgYW5kIHN0b3BcbiAgICogdGhlIEhUVFAgcmVxdWVzdCBpdHNlbGYuIFRoZW4gcmVzZXQgdGhlIHN0YXRlLlxuICAgKi9cbiAgc3RvcCAoKSB7XG4gICAgaWYgKCF0aGlzLmNvbnN1bWVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZXNwb25zZVN0cmVhbS51bnBpcGUodGhpcy5jb25zdW1lcik7XG4gICAgdGhpcy5jb25zdW1lci51bnBpcGUodGhpcyk7XG4gICAgdGhpcy5yZXNwb25zZVN0cmVhbS5kZXN0cm95KCk7XG4gICAgdGhpcy5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSBXcml0YWJsZSB3cml0ZSgpIG1ldGhvZCBpbiBvcmRlciB0byBzYXZlIHRoZSBsYXN0IGltYWdlIGFuZFxuICAgKiBsb2cgdGhlIG51bWJlciBvZiBpbWFnZXMgd2UgaGF2ZSByZWNlaXZlZFxuICAgKiBAb3ZlcnJpZGVcbiAgICogQHBhcmFtIHtCdWZmZXJ9IGRhdGEgLSBiaW5hcnkgZGF0YSBzdHJlYW1lZCBmcm9tIHRoZSBNSnBlZyBjb25zdW1lclxuICAgKi9cbiAgd3JpdGUgKGRhdGEpIHtcbiAgICB0aGlzLmxhc3RDaHVuayA9IGRhdGE7XG4gICAgdGhpcy51cGRhdGVDb3VudCsrO1xuXG4gICAgaWYgKHRoaXMucmVnaXN0ZXJTdGFydFN1Y2Nlc3MpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJTdGFydFN1Y2Nlc3MoKTtcbiAgICAgIHRoaXMucmVnaXN0ZXJTdGFydFN1Y2Nlc3MgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgeyBNSnBlZ1N0cmVhbSB9O1xuIl0sImZpbGUiOiJsaWIvbWpwZWcuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9tanBlZy5qcyJdLCJuYW1lcyI6WyJNSnBlZ0NvbnN1bWVyIiwiaW5pdE1KcGVnQ29uc3VtZXIiLCJpZ24iLCJFcnJvciIsIk1KUEVHX1NFUlZFUl9USU1FT1VUX01TIiwiTUpwZWdTdHJlYW0iLCJXcml0YWJsZSIsImNvbnN0cnVjdG9yIiwibUpwZWdVcmwiLCJlcnJvckhhbmRsZXIiLCJfIiwibm9vcCIsIm9wdGlvbnMiLCJ1cmwiLCJjbGVhciIsImxhc3RDaHVua0Jhc2U2NCIsImlzRW1wdHkiLCJsYXN0Q2h1bmsiLCJpc0J1ZmZlciIsInRvU3RyaW5nIiwibGFzdENodW5rUE5HIiwianBnIiwiZ2V0QnVmZmVyIiwiTUlNRV9QTkciLCJlIiwibGFzdENodW5rUE5HQmFzZTY0IiwicG5nIiwicmVnaXN0ZXJTdGFydFN1Y2Nlc3MiLCJyZWdpc3RlclN0YXJ0RmFpbHVyZSIsInJlc3BvbnNlU3RyZWFtIiwiY29uc3VtZXIiLCJ1cGRhdGVDb3VudCIsInN0YXJ0Iiwic2VydmVyVGltZW91dCIsInN0b3AiLCJzdGFydFByb21pc2UiLCJCIiwicmVzIiwicmVqIiwidGltZW91dCIsIm9uRXJyIiwiZXJyIiwibG9nIiwiZXJyb3IiLCJtZXNzYWdlIiwib25DbG9zZSIsImRlYnVnIiwicmVzcG9uc2VUeXBlIiwiZGF0YSIsIm9uY2UiLCJvbiIsInBpcGUiLCJ1bnBpcGUiLCJkZXN0cm95Iiwid3JpdGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsSUFBSUEsYUFBYSxHQUFHLElBQXBCOztBQUtBLGVBQWVDLGlCQUFmLEdBQW9DO0FBQ2xDLE1BQUksQ0FBQ0QsYUFBTCxFQUFvQjtBQUNsQixRQUFJO0FBQ0ZBLE1BQUFBLGFBQWEsR0FBRyxNQUFNLDBCQUFlLGdCQUFmLENBQXRCO0FBQ0QsS0FGRCxDQUVFLE9BQU9FLEdBQVAsRUFBWSxDQUFFO0FBQ2pCOztBQUNELE1BQUks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SSxTQUFMLEdBQWlCLElBQWpCO0FBQ0QsS0FIRDs7QUFLQSxRQUFJO0FBQ0YsV0FBS1ksY0FBTCxHQUFzQixDQUFDLE1BQU0sb0JBQU07QUFDakNoQixRQUFBQSxHQURpQztBQUVqQ2tDLFFBQUFBLFlBQVksRUFBRSxRQUZtQjtBQUdqQ1IsUUFBQUEsT0FBTyxFQUFFTjtBQUh3QixPQUFOLENBQVAsRUFJbEJlLElBSko7QUFLRCxLQU5ELENBTUUsT0FBT3hCLENBQVAsRUFBVTtBQUNWLGFBQU9nQixLQUFLLENBQUNoQixDQUFELENBQVo7QUFDRDs7QUFFRCxTQUFLSyxjQUFMLENBQ0dvQixJQURILENBQ1EsT0FEUixFQUNpQkosT0FEakIsRUFFR0ssRUFGSCxDQUVNLE9BRk4sRUFFZVYsS0FGZixFQUdHVyxJQUhILENBR1EsS0FBS3JCLFFBSGIsRUFJR3FCLElBSkgsQ0FJUSxJQUpSO0FBTUEsVUFBTWhCLFlBQU47QUFDRDs7QUFNREQsRUFBQUEsSUFBSSxHQUFJO0FBQ04sUUFBSSxDQUFDLEtBQUtKLFFBQVYsRUFBb0I7QUFDbEI7QUFDRDs7QUFFRCxTQUFLRCxjQUFMLENBQW9CdUIsTUFBcEIsQ0FBMkIsS0FBS3RCLFFBQWhDO0FBQ0EsU0FBS0EsUUFBTCxDQUFjc0IsTUFBZCxDQUFxQixJQUFyQjtBQUNBLFNBQUt2QixjQUFMLENBQW9Cd0IsT0FBcEI7QUFDQSxTQUFLdkMsS0FBTDtBQUNEOztBQVFEd0MsRUFBQUEsS0FBSyxDQUFFTixJQUFGLEVBQVE7QUFDWCxTQUFLL0IsU0FBTCxHQUFpQitCLElBQWpCO0FBQ0EsU0FBS2pCLFdBQUw7O0FBRUEsUUFBSSxLQUFLSixvQkFBVCxFQUErQjtBQUM3QixXQUFLQSxvQkFBTDtBQUNBLFdBQUtBLG9CQUFMLEdBQTRCLElBQTVCO0FBQ0Q7QUFDRjs7QUE3SmdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHsgZ2V0SmltcEltYWdlLCBNSU1FX1BORyB9IGZyb20gJy4vaW1hZ2UtdXRpbCc7XG5pbXBvcnQgeyBXcml0YWJsZSB9IGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgeyByZXF1aXJlUGFja2FnZSB9IGZyb20gJy4vbm9kZSc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuXG4vLyBsYXp5IGxvYWQgdGhpcywgYXMgaXQgbWlnaHQgbm90IGJlIGF2YWlsYWJsZVxubGV0IE1KcGVnQ29uc3VtZXIgPSBudWxsO1xuXG4vKipcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBgbWpwZWctY29uc3VtZXJgIG1vZHVsZSBpcyBub3QgaW5zdGFsbGVkIG9yIGNhbm5vdCBiZSBsb2FkZWRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gaW5pdE1KcGVnQ29uc3VtZXIgKCkge1xuICBpZiAoIU1KcGVnQ29uc3VtZXIpIHtcbiAgICB0cnkge1xuICAgICAgTUpwZWdDb25zdW1lciA9IGF3YWl0IHJlcXVpcmVQYWNrYWdlKCdtanBlZy1jb25zdW1lcicpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxuICBpZiAoIU1KcGVnQ29uc3VtZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21qcGVnLWNvbnN1bWVyIG1vZHVsZSBpcyByZXF1aXJlZCB0byB1c2UgTUpQRUctb3Zlci1IVFRQIGZlYXR1cmVzLiAnICtcbiAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBpbnN0YWxsIGl0IGZpcnN0IChucG0gaSAtZyBtanBlZy1jb25zdW1lcikgYW5kIHJlc3RhcnQgQXBwaXVtLicpO1xuICB9XG59XG5cbi8vIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgZm9yIHRoZSBmaXJzdCBpbWFnZSBpbiB0aGUgc3RyZWFtXG5jb25zdCBNSlBFR19TRVJWRVJfVElNRU9VVF9NUyA9IDEwMDAwO1xuXG4vKiogQ2xhc3Mgd2hpY2ggc3RvcmVzIHRoZSBsYXN0IGJpdCBvZiBkYXRhIHN0cmVhbWVkIGludG8gaXQgKi9cbmNsYXNzIE1KcGVnU3RyZWFtIGV4dGVuZHMgV3JpdGFibGUge1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gTUpwZWdTdHJlYW1cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1KcGVnVXJsIC0gVVJMIG9mIE1KUEVHLW92ZXItSFRUUCBzdHJlYW1cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gW2Vycm9ySGFuZGxlcj1ub29wXSAtIGFkZGl0aW9uYWwgZnVuY3Rpb24gdGhhdCB3aWxsIGJlXG4gICAqIGNhbGxlZCBpbiB0aGUgY2FzZSBvZiBhbnkgZXJyb3JzLlxuICAgKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnM9e31dIC0gT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBXcml0YWJsZSBjb25zdHJ1Y3RvclxuICAgKi9cbiAgY29uc3RydWN0b3IgKG1KcGVnVXJsLCBlcnJvckhhbmRsZXIgPSBfLm5vb3AsIG9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5lcnJvckhhbmRsZXIgPSBlcnJvckhhbmRsZXI7XG4gICAgdGhpcy51cmwgPSBtSnBlZ1VybDtcbiAgICB0aGlzLmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBiYXNlNjQtZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBKUEVHXG4gICAqXG4gICAqIEByZXR1cm5zIHs/c3RyaW5nfSBiYXNlNjQtZW5jb2RlZCBKUEVHIGltYWdlIGRhdGFcbiAgICogb3IgYG51bGxgIGlmIG5vIGltYWdlIGNhbiBiZSBwYXJzZWRcbiAgICovXG4gIGdldCBsYXN0Q2h1bmtCYXNlNjQgKCkge1xuICAgIHJldHVybiAhXy5pc0VtcHR5KHRoaXMubGFzdENodW5rKSAmJiBfLmlzQnVmZmVyKHRoaXMubGFzdENodW5rKVxuICAgICAgPyB0aGlzLmxhc3RDaHVuay50b1N0cmluZygnYmFzZTY0JylcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFBORyB2ZXJzaW9uIG9mIHRoZSBKUEVHIGJ1ZmZlclxuICAgKlxuICAgKiBAcmV0dXJucyB7P0J1ZmZlcn0gUE5HIGltYWdlIGRhdGEgb3IgYG51bGxgIGlmIG5vIFBOR1xuICAgKiBpbWFnZSBjYW4gYmUgcGFyc2VkXG4gICAqL1xuICBhc3luYyBsYXN0Q2h1bmtQTkcgKCkge1xuICAgIGlmIChfLmlzRW1wdHkodGhpcy5sYXN0Q2h1bmspIHx8ICFfLmlzQnVmZmVyKHRoaXMubGFzdENodW5rKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGpwZyA9IGF3YWl0IGdldEppbXBJbWFnZSh0aGlzLmxhc3RDaHVuayk7XG4gICAgICByZXR1cm4gYXdhaXQganBnLmdldEJ1ZmZlcihNSU1FX1BORyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgYmFzZTY0LWVuY29kZWQgdmVyc2lvbiBvZiB0aGUgUE5HXG4gICAqXG4gICAqIEByZXR1cm5zIHs/c3RyaW5nfSBiYXNlNjQtZW5jb2RlZCBQTkcgaW1hZ2UgZGF0YVxuICAgKiBvciBgbnVsbGAgaWYgbm8gaW1hZ2UgY2FuIGJlIHBhcnNlZFxuICAgKi9cbiAgYXN5bmMgbGFzdENodW5rUE5HQmFzZTY0ICgpIHtcbiAgICBjb25zdCBwbmcgPSBhd2FpdCB0aGlzLmxhc3RDaHVua1BORygpO1xuICAgIHJldHVybiBwbmcgPyBwbmcudG9TdHJpbmcoJ2Jhc2U2NCcpIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBpbnRlcm5hbCBzdGF0ZVxuICAgKi9cbiAgY2xlYXIgKCkge1xuICAgIHRoaXMucmVnaXN0ZXJTdGFydFN1Y2Nlc3MgPSBudWxsO1xuICAgIHRoaXMucmVnaXN0ZXJTdGFydEZhaWx1cmUgPSBudWxsO1xuICAgIHRoaXMucmVzcG9uc2VTdHJlYW0gPSBudWxsO1xuICAgIHRoaXMuY29uc3VtZXIgPSBudWxsO1xuICAgIHRoaXMubGFzdENodW5rID0gbnVsbDtcbiAgICB0aGlzLnVwZGF0ZUNvdW50ID0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCByZWFkaW5nIHRoZSBNSnBlZyBzdHJlYW0gYW5kIHN0b3JpbmcgdGhlIGxhc3QgaW1hZ2VcbiAgICovXG4gIGFzeW5jIHN0YXJ0IChzZXJ2ZXJUaW1lb3V0ID0gTUpQRUdfU0VSVkVSX1RJTUVPVVRfTVMpIHtcbiAgICAvLyBlbnN1cmUgd2UncmUgbm90IHN0YXJ0ZWQgYWxyZWFkeVxuICAgIHRoaXMuc3RvcCgpO1xuXG4gICAgYXdhaXQgaW5pdE1KcGVnQ29uc3VtZXIoKTtcblxuICAgIHRoaXMuY29uc3VtZXIgPSBuZXcgTUpwZWdDb25zdW1lcigpO1xuXG4gICAgLy8gdXNlIHRoZSBkZWZlcnJlZCBwYXR0ZXJuIHNvIHdlIGNhbiB3YWl0IGZvciB0aGUgc3RhcnQgb2YgdGhlIHN0cmVhbVxuICAgIC8vIGJhc2VkIG9uIHdoYXQgY29tZXMgaW4gZnJvbSBhbiBleHRlcm5hbCBwaXBlXG4gICAgY29uc3Qgc3RhcnRQcm9taXNlID0gbmV3IEIoKHJlcywgcmVqKSA9PiB7XG4gICAgICB0aGlzLnJlZ2lzdGVyU3RhcnRTdWNjZXNzID0gcmVzO1xuICAgICAgdGhpcy5yZWdpc3RlclN0YXJ0RmFpbHVyZSA9IHJlajtcbiAgICB9KVxuICAgIC8vIHN0YXJ0IGEgdGltZW91dCBzbyB0aGF0IGlmIHRoZSBzZXJ2ZXIgZG9lcyBub3QgcmV0dXJuIGRhdGEsIHdlIGRvbid0XG4gICAgLy8gYmxvY2sgZm9yZXZlci5cbiAgICAgIC50aW1lb3V0KHNlcnZlclRpbWVvdXQsXG4gICAgICAgIGBXYWl0ZWQgJHtzZXJ2ZXJUaW1lb3V0fW1zIGJ1dCB0aGUgTUpQRUcgc2VydmVyIG5ldmVyIHNlbnQgYW55IGltYWdlc2ApO1xuXG4gICAgY29uc3QgdXJsID0gdGhpcy51cmw7XG4gICAgY29uc3Qgb25FcnIgPSAoZXJyKSA9PiB7XG4gICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgZ2V0IGFuIG91dGRhdGVkIHNjcmVlbnNob3QgaWYgdGhlcmUgd2FzIGFuIGVycm9yXG4gICAgICB0aGlzLmxhc3RDaHVuayA9IG51bGw7XG5cbiAgICAgIGxvZy5lcnJvcihgRXJyb3IgZ2V0dGluZyBNSnBlZyBzY3JlZW5zaG90IGNodW5rOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgdGhpcy5lcnJvckhhbmRsZXIoZXJyKTtcbiAgICAgIGlmICh0aGlzLnJlZ2lzdGVyU3RhcnRGYWlsdXJlKSB7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJTdGFydEZhaWx1cmUoZXJyKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG9uQ2xvc2UgPSAoKSA9PiB7XG4gICAgICBsb2cuZGVidWcoYFRoZSBjb25uZWN0aW9uIHRvIE1KUEVHIHNlcnZlciBhdCAke3VybH0gaGFzIGJlZW4gY2xvc2VkYCk7XG4gICAgICB0aGlzLmxhc3RDaHVuayA9IG51bGw7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLnJlc3BvbnNlU3RyZWFtID0gKGF3YWl0IGF4aW9zKHtcbiAgICAgICAgdXJsLFxuICAgICAgICByZXNwb25zZVR5cGU6ICdzdHJlYW0nLFxuICAgICAgICB0aW1lb3V0OiBzZXJ2ZXJUaW1lb3V0LFxuICAgICAgfSkpLmRhdGE7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG9uRXJyKGUpO1xuICAgIH1cblxuICAgIHRoaXMucmVzcG9uc2VTdHJlYW1cbiAgICAgIC5vbmNlKCdjbG9zZScsIG9uQ2xvc2UpXG4gICAgICAub24oJ2Vycm9yJywgb25FcnIpIC8vIGVuc3VyZSB3ZSBkbyBzb21ldGhpbmcgd2l0aCBlcnJvcnNcbiAgICAgIC5waXBlKHRoaXMuY29uc3VtZXIpIC8vIGFsbG93IGNodW5raW5nIGFuZCB0cmFuc2Zvcm1pbmcgb2YganBlZyBkYXRhXG4gICAgICAucGlwZSh0aGlzKTsgLy8gc2VuZCB0aGUgYWN0dWFsIGpwZWdzIHRvIG91cnNlbGZcblxuICAgIGF3YWl0IHN0YXJ0UHJvbWlzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHJlYWRpbmcgdGhlIE1KcGVnIHN0cmVhbS4gRW5zdXJlIHdlIGRpc2Nvbm5lY3QgYWxsIHRoZSBwaXBlcyBhbmQgc3RvcFxuICAgKiB0aGUgSFRUUCByZXF1ZXN0IGl0c2VsZi4gVGhlbiByZXNldCB0aGUgc3RhdGUuXG4gICAqL1xuICBzdG9wICgpIHtcbiAgICBpZiAoIXRoaXMuY29uc3VtZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJlc3BvbnNlU3RyZWFtLnVucGlwZSh0aGlzLmNvbnN1bWVyKTtcbiAgICB0aGlzLmNvbnN1bWVyLnVucGlwZSh0aGlzKTtcbiAgICB0aGlzLnJlc3BvbnNlU3RyZWFtLmRlc3Ryb3koKTtcbiAgICB0aGlzLmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGUgdGhlIFdyaXRhYmxlIHdyaXRlKCkgbWV0aG9kIGluIG9yZGVyIHRvIHNhdmUgdGhlIGxhc3QgaW1hZ2UgYW5kXG4gICAqIGxvZyB0aGUgbnVtYmVyIG9mIGltYWdlcyB3ZSBoYXZlIHJlY2VpdmVkXG4gICAqIEBvdmVycmlkZVxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gZGF0YSAtIGJpbmFyeSBkYXRhIHN0cmVhbWVkIGZyb20gdGhlIE1KcGVnIGNvbnN1bWVyXG4gICAqL1xuICB3cml0ZSAoZGF0YSkge1xuICAgIHRoaXMubGFzdENodW5rID0gZGF0YTtcbiAgICB0aGlzLnVwZGF0ZUNvdW50Kys7XG5cbiAgICBpZiAodGhpcy5yZWdpc3RlclN0YXJ0U3VjY2Vzcykge1xuICAgICAgdGhpcy5yZWdpc3RlclN0YXJ0U3VjY2VzcygpO1xuICAgICAgdGhpcy5yZWdpc3RlclN0YXJ0U3VjY2VzcyA9IG51bGw7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7IE1KcGVnU3RyZWFtIH07XG4iXSwiZmlsZSI6ImxpYi9tanBlZy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9

@@ -8,4 +8,4 @@ "use strict";

});
exports.downloadFile = downloadFile;
exports.uploadFile = uploadFile;
exports.downloadFile = downloadFile;

@@ -12,0 +12,0 @@ require("source-map-support/register");

@@ -8,8 +8,8 @@ "use strict";

});
exports.createBinaryPlist = createBinaryPlist;
exports.createPlist = createPlist;
exports.parseBinaryPlist = parseBinaryPlist;
exports.parsePlist = parsePlist;
exports.parsePlistFile = parsePlistFile;
exports.parsePlist = parsePlist;
exports.createPlist = createPlist;
exports.updatePlistFile = updatePlistFile;
exports.createBinaryPlist = createBinaryPlist;
exports.parseBinaryPlist = parseBinaryPlist;

@@ -16,0 +16,0 @@ require("source-map-support/register");

@@ -8,7 +8,7 @@ "use strict";

});
exports.isWindows = isWindows;
exports.arch = arch;
exports.isLinux = isLinux;
exports.isMac = isMac;
exports.isLinux = isLinux;
exports.isOSWin64 = isOSWin64;
exports.arch = arch;
exports.isWindows = isWindows;
exports.macOsxVersion = macOsxVersion;

@@ -15,0 +15,0 @@

@@ -9,5 +9,5 @@ "use strict";

exports.open = open;
exports.openDir = void 0;
exports.path = path;
exports.staticDir = staticDir;
exports.openDir = void 0;

@@ -14,0 +14,0 @@ require("source-map-support/register");

@@ -8,3 +8,3 @@ "use strict";

});
exports.default = exports.Duration = exports.Timer = void 0;
exports.default = exports.Timer = exports.Duration = void 0;

@@ -100,2 +100,2 @@ require("source-map-support/register");

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90aW1pbmcuanMiXSwibmFtZXMiOlsiTlNfUEVSX1MiLCJOU19QRVJfTVMiLCJEdXJhdGlvbiIsImNvbnN0cnVjdG9yIiwibmFub3MiLCJfbmFub3MiLCJhc05hbm9TZWNvbmRzIiwiYXNNaWxsaVNlY29uZHMiLCJhc1NlY29uZHMiLCJ0b1N0cmluZyIsInRvRml4ZWQiLCJUaW1lciIsIl9zdGFydFRpbWUiLCJzdGFydFRpbWUiLCJzdGFydCIsIl8iLCJpc051bGwiLCJFcnJvciIsImlzRnVuY3Rpb24iLCJwcm9jZXNzIiwiaHJ0aW1lIiwiYmlnaW50IiwiZ2V0RHVyYXRpb24iLCJuYW5vRHVyYXRpb24iLCJpc0FycmF5Iiwic2Vjb25kcyIsImVuZFRpbWUiLCJOdW1iZXIiLCJlcnIiLCJtZXNzYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUdBLE1BQU1BLFFBQVEsR0FBRyxHQUFqQjtBQUNBLE1BQU1DLFNBQVMsR0FBRyxHQUFsQjs7QUFNQSxNQUFNQyxRQUFOLENBQWU7QUFDYkMsRUFBQUEsV0FBVyxDQUFFQyxLQUFGLEVBQVM7QUFDbEIsU0FBS0MsTUFBTCxHQUFjRCxLQUFkO0FBQ0Q7O0FBRUQsTUFBSUEsS0FBSixHQUFhO0FBQ1gsV0FBTyxLQUFLQyxNQUFaO0FBQ0Q7O0FBT0QsTUFBSUMsYUFBSixHQUFxQjtBQUNuQixXQUFPLEtBQUtGLEtBQVo7QUFDRDs7QUFPRCxNQUFJRyxjQUFKLEdBQXNCO0FBQ3BCLFdBQU8sS0FBS0gsS0FBTCxHQUFhSCxTQUFwQjtBQUNEOztBQU9ELE1BQUlPLFNBQUosR0FBaUI7QUFDZixXQUFPLEtBQUtKLEtBQUwsR0FBYUosUUFBcEI7QUFDRDs7QUFFRFMsRUFBQUEsUUFBUSxHQUFJO0FBRVYsV0FBTyxLQUFLRixjQUFMLENBQW9CRyxPQUFwQixDQUE0QixDQUE1QixDQUFQO0FBQ0Q7O0FBdkNZOzs7O0FBMENmLE1BQU1DLEtBQU4sQ0FBWTtBQUlWUixFQUFBQSxXQUFXLEdBQUk7QUFDYixTQUFLUyxVQUFMLEdBQWtCLElBQWxCO0FBQ0Q7O0FBRUQsTUFBSUMsU0FBSixHQUFpQjtBQUNmLFdBQU8sS0FBS0QsVUFBWjtBQUNEOztBQU9ERSxFQUFBQSxLQUFLLEdBQUk7QUFDUCxRQUFJLENBQUNDLGdCQUFFQyxNQUFGLENBQVMsS0FBS0gsU0FBZCxDQUFMLEVBQStCO0FBQzdCLFlBQU0sSUFBSUksS0FBSixDQUFVLGlDQUFWLENBQU47QUFDRDs7QUFFRCxTQUFLTCxVQUFMLEdBQWtCRyxnQkFBRUcsVUFBRixDQUFhQyxPQUFPLENBQUNDLE1BQVIsQ0FBZUMsTUFBNUIsSUFDZEYsT0FBTyxDQUFDQyxNQUFSLENBQWVDLE1BQWYsRUFEYyxHQUVkRixPQUFPLENBQUNDLE1BQVIsRUFGSjtBQUdBLFdBQU8sSUFBUDtBQUNEOztBQU9ERSxFQUFBQSxXQUFXLEdBQUk7QUFDYixRQUFJUCxnQkFBRUMsTUFBRixDQUFTLEtBQUtILFNBQWQsQ0FBSixFQUE4QjtBQUM1QixZQUFNLElBQUlJLEtBQUosQ0FBVywrQ0FBWCxDQUFOO0FBQ0Q7O0FBRUQsUUFBSU0sWUFBSjs7QUFDQSxRQUFJUixnQkFBRVMsT0FBRixDQUFVLEtBQUtYLFNBQWYsQ0FBSixFQUErQjtBQUU3QixZQUFNLENBQUNZLE9BQUQsRUFBVXJCLEtBQVYsSUFBbUJlLE9BQU8sQ0FBQ0MsTUFBUixDQUFlLEtBQUtQLFNBQXBCLENBQXpCO0FBQ0FVLE1BQUFBLFlBQVksR0FBR0UsT0FBTyxHQUFHekIsUUFBVixHQUFxQkksS0FBcEM7QUFDRCxLQUpELE1BSU8sSUFBSSxPQUFPLEtBQUtTLFNBQVosS0FBMEIsUUFBMUIsSUFBc0NFLGdCQUFFRyxVQUFGLENBQWFDLE9BQU8sQ0FBQ0MsTUFBUixDQUFlQyxNQUE1QixDQUExQyxFQUErRTtBQUVwRixZQUFNSyxPQUFPLEdBQUdQLE9BQU8sQ0FBQ0MsTUFBUixDQUFlQyxNQUFmLEVBQWhCO0FBRUFFLE1BQUFBLFlBQVksR0FBR0ksTUFBTSxDQUFDRCxPQUFPLEdBQUcsS0FBS2IsU0FBaEIsQ0FBckI7QUFDRCxLQUxNLE1BS0E7QUFDTCxZQUFNLElBQUlJLEtBQUosQ0FBVyx1Q0FBc0MsS0FBS0osU0FBVSxvQkFBaEUsQ0FBTjtBQUNEOztBQUVELFdBQU8sSUFBSVgsUUFBSixDQUFhcUIsWUFBYixDQUFQO0FBQ0Q7O0FBRURkLEVBQUFBLFFBQVEsR0FBSTtBQUNWLFFBQUk7QUFDRixhQUFPLEtBQUthLFdBQUwsR0FBbUJiLFFBQW5CLEVBQVA7QUFDRCxLQUZELENBRUUsT0FBT21CLEdBQVAsRUFBWTtBQUNaLGFBQVEsU0FBUUEsR0FBRyxDQUFDQyxPQUFRLEdBQTVCO0FBQ0Q7QUFDRjs7QUE3RFM7OztlQWtFR2xCLEsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5cbmNvbnN0IE5TX1BFUl9TID0gMWU5O1xuY29uc3QgTlNfUEVSX01TID0gMWU2O1xuXG5cbi8qKlxuICogQ2xhc3MgcmVwcmVzZW50aW5nIGEgZHVyYXRpb24sIGVuY2Fwc3VsYXRpbmcgdGhlIG51bWJlciBhbmQgdW5pdHMuXG4gKi9cbmNsYXNzIER1cmF0aW9uIHtcbiAgY29uc3RydWN0b3IgKG5hbm9zKSB7XG4gICAgdGhpcy5fbmFub3MgPSBuYW5vcztcbiAgfVxuXG4gIGdldCBuYW5vcyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hbm9zO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZHVyYXRpb24gYXMgbmFub3NlY29uZHNcbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGR1cmF0aW9uIGFzIG5hbm9zZWNvbmRzXG4gICAqL1xuICBnZXQgYXNOYW5vU2Vjb25kcyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFub3M7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkdXJhdGlvbiBjb252ZXJ0ZWQgaW50byBtaWxsaXNlY29uZHNcbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGR1cmF0aW9uIGFzIG1pbGxpc2Vjb25kc1xuICAgKi9cbiAgZ2V0IGFzTWlsbGlTZWNvbmRzICgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW5vcyAvIE5TX1BFUl9NUztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGR1cmF0aW9uIGNvbnZlcnRlZCBpbnRvIHNlY29uZHNcbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGR1cmF0aW9uIGZhcyBzZWNvbmRzXG4gICAqL1xuICBnZXQgYXNTZWNvbmRzICgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW5vcyAvIE5TX1BFUl9TO1xuICB9XG5cbiAgdG9TdHJpbmcgKCkge1xuICAgIC8vIGRlZmF1bHQgdG8gbWlsbGlzZWNvbmRzLCByb3VuZGVkXG4gICAgcmV0dXJuIHRoaXMuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKTtcbiAgfVxufVxuXG5jbGFzcyBUaW1lciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdGltZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yICgpIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBudWxsO1xuICB9XG5cbiAgZ2V0IHN0YXJ0VGltZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0VGltZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCB0aGUgdGltZXJcbiAgICpcbiAgICogQHJldHVybiB7VGltZXJ9IFRoZSBjdXJyZW50IGluc3RhbmNlLCBmb3IgY2hhaW5pbmdcbiAgICovXG4gIHN0YXJ0ICgpIHtcbiAgICBpZiAoIV8uaXNOdWxsKHRoaXMuc3RhcnRUaW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaW1lciBoYXMgYWxyZWFkeSBiZWVuIHN0YXJ0ZWQuJyk7XG4gICAgfVxuICAgIC8vIG9uY2UgTm9kZSAxMCBpcyBubyBsb25nZXIgc3VwcG9ydGVkLCB0aGlzIGNoZWNrIGNhbiBiZSByZW1vdmVkXG4gICAgdGhpcy5fc3RhcnRUaW1lID0gXy5pc0Z1bmN0aW9uKHByb2Nlc3MuaHJ0aW1lLmJpZ2ludClcbiAgICAgID8gcHJvY2Vzcy5ocnRpbWUuYmlnaW50KClcbiAgICAgIDogcHJvY2Vzcy5ocnRpbWUoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGR1cmF0aW9uIHNpbmNlIHRoZSB0aW1lciB3YXMgc3RhcnRlZFxuICAgKlxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0gdGhlIGR1cmF0aW9uXG4gICAqL1xuICBnZXREdXJhdGlvbiAoKSB7XG4gICAgaWYgKF8uaXNOdWxsKHRoaXMuc3RhcnRUaW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZ2V0IGR1cmF0aW9uLiBUaW1lciB3YXMgbm90IHN0YXJ0ZWRgKTtcbiAgICB9XG5cbiAgICBsZXQgbmFub0R1cmF0aW9uO1xuICAgIGlmIChfLmlzQXJyYXkodGhpcy5zdGFydFRpbWUpKSB7XG4gICAgICAvLyBzdGFydFRpbWUgd2FzIGNyZWF0ZWQgdXNpbmcgcHJvY2Vzcy5ocnRpbWUoKVxuICAgICAgY29uc3QgW3NlY29uZHMsIG5hbm9zXSA9IHByb2Nlc3MuaHJ0aW1lKHRoaXMuc3RhcnRUaW1lKTtcbiAgICAgIG5hbm9EdXJhdGlvbiA9IHNlY29uZHMgKiBOU19QRVJfUyArIG5hbm9zO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuc3RhcnRUaW1lID09PSAnYmlnaW50JyAmJiBfLmlzRnVuY3Rpb24ocHJvY2Vzcy5ocnRpbWUuYmlnaW50KSkge1xuICAgICAgLy8gc3RhcnRUaW1lIHdhcyBjcmVhdGVkIHVzaW5nIHByb2Nlc3MuaHJ0aW1lLmJpZ2ludCgpXG4gICAgICBjb25zdCBlbmRUaW1lID0gcHJvY2Vzcy5ocnRpbWUuYmlnaW50KCk7XG4gICAgICAvLyBnZXQgdGhlIGRpZmZlcmVuY2UsIGFuZCBjb252ZXJ0IHRvIG51bWJlclxuICAgICAgbmFub0R1cmF0aW9uID0gTnVtYmVyKGVuZFRpbWUgLSB0aGlzLnN0YXJ0VGltZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGdldCBkdXJhdGlvbi4gU3RhcnQgdGltZSAnJHt0aGlzLnN0YXJ0VGltZX0nIGNhbm5vdCBiZSBwYXJzZWRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IER1cmF0aW9uKG5hbm9EdXJhdGlvbik7XG4gIH1cblxuICB0b1N0cmluZyAoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmdldER1cmF0aW9uKCkudG9TdHJpbmcoKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiBgPGVycjogJHtlcnIubWVzc2FnZX0+YDtcbiAgICB9XG4gIH1cbn1cblxuXG5leHBvcnQgeyBUaW1lciwgRHVyYXRpb24gfTtcbmV4cG9ydCBkZWZhdWx0IFRpbWVyO1xuIl0sImZpbGUiOiJsaWIvdGltaW5nLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90aW1pbmcuanMiXSwibmFtZXMiOlsiTlNfUEVSX1MiLCJOU19QRVJfTVMiLCJEdXJhdGlvbiIsImNvbnN0cnVjdG9yIiwibmFub3MiLCJfbmFub3MiLCJhc05hbm9TZWNvbmRzIiwiYXNNaWxsaVNlY29uZHMiLCJhc1NlY29uZHMiLCJ0b1N0cmluZyIsInRvRml4ZWQiLCJUaW1lciIsIl9zdGFydFRpbWUiLCJzdGFydFRpbWUiLCJzdGFydCIsIl8iLCJpc051bGwiLCJFcnJvciIsImlzRnVuY3Rpb24iLCJwcm9jZXNzIiwiaHJ0aW1lIiwiYmlnaW50IiwiZ2V0RHVyYXRpb24iLCJuYW5vRHVyYXRpb24iLCJpc0FycmF5Iiwic2Vjb25kcyIsImVuZFRpbWUiLCJOdW1iZXIiLCJlcnIiLCJtZXNzYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUdBLE1BQU1BLFFBQVEsR0FBRyxHQUFqQjtBQUNBLE1BQU1DLFNBQVMsR0FBRyxHQUFsQjs7QUFNQSxNQUFNQyxRQUFOLENBQWU7QUFDYkMsRUFBQUEsV0FBVyxDQUFFQyxLQUFGLEVBQVM7QUFDbEIsU0FBS0MsTUFBTCxHQUFjRCxLQUFkO0FBQ0Q7O0FBRVEsTUFBTEEsS0FBSyxHQUFJO0FBQ1gsV0FBTyxLQUFLQyxNQUFaO0FBQ0Q7O0FBT2dCLE1BQWJDLGFBQWEsR0FBSTtBQUNuQixXQUFPLEtBQUtGLEtBQVo7QUFDRDs7QUFPaUIsTUFBZEcsY0FBYyxHQUFJO0FBQ3BCLFdBQU8sS0FBS0gsS0FBTCxHQUFhSCxTQUFwQjtBQUNEOztBQU9ZLE1BQVRPLFNBQVMsR0FBSTtBQUNmLFdBQU8sS0FBS0osS0FBTCxHQUFhSixRQUFwQjtBQUNEOztBQUVEUyxFQUFBQSxRQUFRLEdBQUk7QUFFVixXQUFPLEtBQUtGLGNBQUwsQ0FBb0JHLE9BQXBCLENBQTRCLENBQTVCLENBQVA7QUFDRDs7QUF2Q1k7Ozs7QUEwQ2YsTUFBTUMsS0FBTixDQUFZO0FBSVZSLEVBQUFBLFdBQVcsR0FBSTtBQUNiLFNBQUtTLFVBQUwsR0FBa0IsSUFBbEI7QUFDRDs7QUFFWSxNQUFUQyxTQUFTLEdBQUk7QUFDZixXQUFPLEtBQUtELFVBQVo7QUFDRDs7QUFPREUsRUFBQUEsS0FBSyxHQUFJO0FBQ1AsUUFBSSxDQUFDQyxnQkFBRUMsTUFBRixDQUFTLEtBQUtILFNBQWQsQ0FBTCxFQUErQjtBQUM3QixZQUFNLElBQUlJLEtBQUosQ0FBVSxpQ0FBVixDQUFOO0FBQ0Q7O0FBRUQsU0FBS0wsVUFBTCxHQUFrQkcsZ0JBQUVHLFVBQUYsQ0FBYUMsT0FBTyxDQUFDQyxNQUFSLENBQWVDLE1BQTVCLElBQ2RGLE9BQU8sQ0FBQ0MsTUFBUixDQUFlQyxNQUFmLEVBRGMsR0FFZEYsT0FBTyxDQUFDQyxNQUFSLEVBRko7QUFHQSxXQUFPLElBQVA7QUFDRDs7QUFPREUsRUFBQUEsV0FBVyxHQUFJO0FBQ2IsUUFBSVAsZ0JBQUVDLE1BQUYsQ0FBUyxLQUFLSCxTQUFkLENBQUosRUFBOEI7QUFDNUIsWUFBTSxJQUFJSSxLQUFKLENBQVcsK0NBQVgsQ0FBTjtBQUNEOztBQUVELFFBQUlNLFlBQUo7O0FBQ0EsUUFBSVIsZ0JBQUVTLE9BQUYsQ0FBVSxLQUFLWCxTQUFmLENBQUosRUFBK0I7QUFFN0IsWUFBTSxDQUFDWSxPQUFELEVBQVVyQixLQUFWLElBQW1CZSxPQUFPLENBQUNDLE1BQVIsQ0FBZSxLQUFLUCxTQUFwQixDQUF6QjtBQUNBVSxNQUFBQSxZQUFZLEdBQUdFLE9BQU8sR0FBR3pCLFFBQVYsR0FBcUJJLEtBQXBDO0FBQ0QsS0FKRCxNQUlPLElBQUksT0FBTyxLQUFLUyxTQUFaLEtBQTBCLFFBQTFCLElBQXNDRSxnQkFBRUcsVUFBRixDQUFhQyxPQUFPLENBQUNDLE1BQVIsQ0FBZUMsTUFBNUIsQ0FBMUMsRUFBK0U7QUFFcEYsWUFBTUssT0FBTyxHQUFHUCxPQUFPLENBQUNDLE1BQVIsQ0FBZUMsTUFBZixFQUFoQjtBQUVBRSxNQUFBQSxZQUFZLEdBQUdJLE1BQU0sQ0FBQ0QsT0FBTyxHQUFHLEtBQUtiLFNBQWhCLENBQXJCO0FBQ0QsS0FMTSxNQUtBO0FBQ0wsWUFBTSxJQUFJSSxLQUFKLENBQVcsdUNBQXNDLEtBQUtKLFNBQVUsb0JBQWhFLENBQU47QUFDRDs7QUFFRCxXQUFPLElBQUlYLFFBQUosQ0FBYXFCLFlBQWIsQ0FBUDtBQUNEOztBQUVEZCxFQUFBQSxRQUFRLEdBQUk7QUFDVixRQUFJO0FBQ0YsYUFBTyxLQUFLYSxXQUFMLEdBQW1CYixRQUFuQixFQUFQO0FBQ0QsS0FGRCxDQUVFLE9BQU9tQixHQUFQLEVBQVk7QUFDWixhQUFRLFNBQVFBLEdBQUcsQ0FBQ0MsT0FBUSxHQUE1QjtBQUNEO0FBQ0Y7O0FBN0RTOzs7ZUFrRUdsQixLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG5jb25zdCBOU19QRVJfUyA9IDFlOTtcbmNvbnN0IE5TX1BFUl9NUyA9IDFlNjtcblxuXG4vKipcbiAqIENsYXNzIHJlcHJlc2VudGluZyBhIGR1cmF0aW9uLCBlbmNhcHN1bGF0aW5nIHRoZSBudW1iZXIgYW5kIHVuaXRzLlxuICovXG5jbGFzcyBEdXJhdGlvbiB7XG4gIGNvbnN0cnVjdG9yIChuYW5vcykge1xuICAgIHRoaXMuX25hbm9zID0gbmFub3M7XG4gIH1cblxuICBnZXQgbmFub3MgKCkge1xuICAgIHJldHVybiB0aGlzLl9uYW5vcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGR1cmF0aW9uIGFzIG5hbm9zZWNvbmRzXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBkdXJhdGlvbiBhcyBuYW5vc2Vjb25kc1xuICAgKi9cbiAgZ2V0IGFzTmFub1NlY29uZHMgKCkge1xuICAgIHJldHVybiB0aGlzLm5hbm9zO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZHVyYXRpb24gY29udmVydGVkIGludG8gbWlsbGlzZWNvbmRzXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBkdXJhdGlvbiBhcyBtaWxsaXNlY29uZHNcbiAgICovXG4gIGdldCBhc01pbGxpU2Vjb25kcyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFub3MgLyBOU19QRVJfTVM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkdXJhdGlvbiBjb252ZXJ0ZWQgaW50byBzZWNvbmRzXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBkdXJhdGlvbiBmYXMgc2Vjb25kc1xuICAgKi9cbiAgZ2V0IGFzU2Vjb25kcyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFub3MgLyBOU19QRVJfUztcbiAgfVxuXG4gIHRvU3RyaW5nICgpIHtcbiAgICAvLyBkZWZhdWx0IHRvIG1pbGxpc2Vjb25kcywgcm91bmRlZFxuICAgIHJldHVybiB0aGlzLmFzTWlsbGlTZWNvbmRzLnRvRml4ZWQoMCk7XG4gIH1cbn1cblxuY2xhc3MgVGltZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIHRpbWVyXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gbnVsbDtcbiAgfVxuXG4gIGdldCBzdGFydFRpbWUgKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGFydFRpbWU7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgdGhlIHRpbWVyXG4gICAqXG4gICAqIEByZXR1cm4ge1RpbWVyfSBUaGUgY3VycmVudCBpbnN0YW5jZSwgZm9yIGNoYWluaW5nXG4gICAqL1xuICBzdGFydCAoKSB7XG4gICAgaWYgKCFfLmlzTnVsbCh0aGlzLnN0YXJ0VGltZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGltZXIgaGFzIGFscmVhZHkgYmVlbiBzdGFydGVkLicpO1xuICAgIH1cbiAgICAvLyBvbmNlIE5vZGUgMTAgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCwgdGhpcyBjaGVjayBjYW4gYmUgcmVtb3ZlZFxuICAgIHRoaXMuX3N0YXJ0VGltZSA9IF8uaXNGdW5jdGlvbihwcm9jZXNzLmhydGltZS5iaWdpbnQpXG4gICAgICA/IHByb2Nlc3MuaHJ0aW1lLmJpZ2ludCgpXG4gICAgICA6IHByb2Nlc3MuaHJ0aW1lKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkdXJhdGlvbiBzaW5jZSB0aGUgdGltZXIgd2FzIHN0YXJ0ZWRcbiAgICpcbiAgICogQHJldHVybiB7RHVyYXRpb259IHRoZSBkdXJhdGlvblxuICAgKi9cbiAgZ2V0RHVyYXRpb24gKCkge1xuICAgIGlmIChfLmlzTnVsbCh0aGlzLnN0YXJ0VGltZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGdldCBkdXJhdGlvbi4gVGltZXIgd2FzIG5vdCBzdGFydGVkYCk7XG4gICAgfVxuXG4gICAgbGV0IG5hbm9EdXJhdGlvbjtcbiAgICBpZiAoXy5pc0FycmF5KHRoaXMuc3RhcnRUaW1lKSkge1xuICAgICAgLy8gc3RhcnRUaW1lIHdhcyBjcmVhdGVkIHVzaW5nIHByb2Nlc3MuaHJ0aW1lKClcbiAgICAgIGNvbnN0IFtzZWNvbmRzLCBuYW5vc10gPSBwcm9jZXNzLmhydGltZSh0aGlzLnN0YXJ0VGltZSk7XG4gICAgICBuYW5vRHVyYXRpb24gPSBzZWNvbmRzICogTlNfUEVSX1MgKyBuYW5vcztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLnN0YXJ0VGltZSA9PT0gJ2JpZ2ludCcgJiYgXy5pc0Z1bmN0aW9uKHByb2Nlc3MuaHJ0aW1lLmJpZ2ludCkpIHtcbiAgICAgIC8vIHN0YXJ0VGltZSB3YXMgY3JlYXRlZCB1c2luZyBwcm9jZXNzLmhydGltZS5iaWdpbnQoKVxuICAgICAgY29uc3QgZW5kVGltZSA9IHByb2Nlc3MuaHJ0aW1lLmJpZ2ludCgpO1xuICAgICAgLy8gZ2V0IHRoZSBkaWZmZXJlbmNlLCBhbmQgY29udmVydCB0byBudW1iZXJcbiAgICAgIG5hbm9EdXJhdGlvbiA9IE51bWJlcihlbmRUaW1lIC0gdGhpcy5zdGFydFRpbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBnZXQgZHVyYXRpb24uIFN0YXJ0IHRpbWUgJyR7dGhpcy5zdGFydFRpbWV9JyBjYW5ub3QgYmUgcGFyc2VkYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEdXJhdGlvbihuYW5vRHVyYXRpb24pO1xuICB9XG5cbiAgdG9TdHJpbmcgKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXREdXJhdGlvbigpLnRvU3RyaW5nKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gYDxlcnI6ICR7ZXJyLm1lc3NhZ2V9PmA7XG4gICAgfVxuICB9XG59XG5cblxuZXhwb3J0IHsgVGltZXIsIER1cmF0aW9uIH07XG5leHBvcnQgZGVmYXVsdCBUaW1lcjtcbiJdLCJmaWxlIjoibGliL3RpbWluZy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9

@@ -8,24 +8,20 @@ "use strict";

});
exports.hasContent = hasContent;
exports.hasValue = hasValue;
exports.W3C_WEB_ELEMENT_IDENTIFIER = exports.MiB = exports.KiB = exports.GiB = void 0;
exports.cancellableDelay = cancellableDelay;
exports.coerceVersion = coerceVersion;
exports.compareVersions = compareVersions;
exports.escapeSpace = escapeSpace;
exports.escapeSpecialChars = escapeSpecialChars;
exports.localIp = localIp;
exports.cancellableDelay = cancellableDelay;
exports.multiResolve = multiResolve;
exports.safeJsonParse = safeJsonParse;
exports.wrapElement = wrapElement;
exports.unwrapElement = unwrapElement;
exports.filterObject = filterObject;
exports.toReadableSizeString = toReadableSizeString;
exports.getLockFileGuard = getLockFileGuard;
exports.hasContent = hasContent;
exports.hasValue = hasValue;
exports.isSameDestination = isSameDestination;
exports.isSubPath = isSubPath;
exports.isSameDestination = isSameDestination;
exports.compareVersions = compareVersions;
exports.coerceVersion = coerceVersion;
exports.quote = quote;
exports.unleakString = unleakString;
exports.jsonStringify = jsonStringify;
exports.localIp = localIp;
exports.multiResolve = multiResolve;
exports.pluralize = pluralize;
exports.toInMemoryBase64 = toInMemoryBase64;
exports.getLockFileGuard = getLockFileGuard;
exports.quote = quote;
exports.safeJsonParse = safeJsonParse;
Object.defineProperty(exports, "shellParse", {

@@ -37,2 +33,6 @@ enumerable: true,

});
exports.toInMemoryBase64 = toInMemoryBase64;
exports.toReadableSizeString = toReadableSizeString;
exports.unleakString = unleakString;
exports.unwrapElement = unwrapElement;
Object.defineProperty(exports, "uuidV1", {

@@ -62,3 +62,3 @@ enumerable: true,

});
exports.KiB = exports.MiB = exports.GiB = exports.W3C_WEB_ELEMENT_IDENTIFIER = void 0;
exports.wrapElement = wrapElement;

@@ -65,0 +65,0 @@ require("source-map-support/register");

@@ -8,9 +8,9 @@ "use strict";

});
exports._extractEntryTo = _extractEntryTo;
exports.assertValidZip = assertValidZip;
exports.default = void 0;
exports.extractAllTo = extractAllTo;
exports.readEntries = readEntries;
exports.toArchive = toArchive;
exports.toInMemoryZip = toInMemoryZip;
exports._extractEntryTo = _extractEntryTo;
exports.assertValidZip = assertValidZip;
exports.toArchive = toArchive;
exports.default = void 0;

@@ -462,2 +462,2 @@ require("source-map-support/register");

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi96aXAuanMiXSwibmFtZXMiOlsib3BlblppcCIsIkIiLCJwcm9taXNpZnkiLCJ5YXV6bCIsIm9wZW4iLCJwaXBlbGluZSIsInN0cmVhbSIsIlpJUF9NQUdJQyIsIklGTVQiLCJJRkRJUiIsIklGTE5LIiwiWmlwRXh0cmFjdG9yIiwiY29uc3RydWN0b3IiLCJzb3VyY2VQYXRoIiwib3B0cyIsInppcFBhdGgiLCJjYW5jZWxlZCIsImV4dHJhY3RGaWxlTmFtZSIsImVudHJ5IiwiXyIsImlzQnVmZmVyIiwiZmlsZU5hbWUiLCJ0b1N0cmluZyIsImZpbGVOYW1lc0VuY29kaW5nIiwiZXh0cmFjdCIsImRpciIsInppcGZpbGUiLCJsYXp5RW50cmllcyIsImRlY29kZVN0cmluZ3MiLCJyZXNvbHZlIiwicmVqZWN0Iiwib24iLCJlcnIiLCJyZWFkRW50cnkiLCJzdGFydHNXaXRoIiwiZGVzdERpciIsInBhdGgiLCJkaXJuYW1lIiwiam9pbiIsImZzIiwibWtkaXIiLCJyZWN1cnNpdmUiLCJjYW5vbmljYWxEZXN0RGlyIiwicmVhbHBhdGgiLCJyZWxhdGl2ZURlc3REaXIiLCJyZWxhdGl2ZSIsInNwbGl0Iiwic2VwIiwiaW5jbHVkZXMiLCJFcnJvciIsImV4dHJhY3RFbnRyeSIsImNsb3NlIiwiZGVzdCIsIm1vZGUiLCJleHRlcm5hbEZpbGVBdHRyaWJ1dGVzIiwiaXNTeW1saW5rIiwiaXNEaXIiLCJlbmRzV2l0aCIsInZlcnNpb25NYWRlQnkiLCJwcm9jTW9kZSIsImdldEV4dHJhY3RlZE1vZGUiLCJta2Rpck9wdGlvbnMiLCJyZWFkU3RyZWFtIiwib3BlblJlYWRTdHJlYW0iLCJiaW5kIiwibGluayIsInN5bWxpbmsiLCJjcmVhdGVXcml0ZVN0cmVhbSIsImVudHJ5TW9kZSIsImRlZmF1bHREaXJNb2RlIiwiZGVmYXVsdEZpbGVNb2RlIiwicGFyc2VJbnQiLCJleHRyYWN0QWxsVG8iLCJ6aXBGaWxlUGF0aCIsImlzQWJzb2x1dGUiLCJ1c2VTeXN0ZW1VbnppcCIsImV4dHJhY3RXaXRoU3lzdGVtVW56aXAiLCJsb2ciLCJ3YXJuIiwic3RkZXJyIiwibWVzc2FnZSIsImV4dHJhY3RvciIsImlzV2luZG93c0hvc3QiLCJleGVjdXRhYmxlUGF0aCIsImdldEV4ZWN1dGFibGVQYXRoIiwiZSIsIl9leHRyYWN0RW50cnlUbyIsInppcEZpbGUiLCJkc3RQYXRoIiwidGVzdCIsImV4aXN0cyIsIndyaXRlU3RyZWFtIiwiZmxhZ3MiLCJ3cml0ZVN0cmVhbVByb21pc2UiLCJvbmNlIiwiemlwUmVhZFN0cmVhbSIsInppcFJlYWRTdHJlYW1Qcm9taXNlIiwicGlwZSIsImFsbCIsInJlYWRFbnRyaWVzIiwib25FbnRyeSIsInJlcyIsImV4dHJhY3RFbnRyeVRvIiwiZW1pdCIsInRvSW5NZW1vcnlaaXAiLCJzcmNQYXRoIiwiaXNNZXRlcmVkIiwiZW5jb2RlVG9CYXNlNjQiLCJtYXhTaXplIiwiR2lCIiwibGV2ZWwiLCJyZXN1bHRCdWZmZXJzIiwicmVzdWx0QnVmZmVyc1NpemUiLCJyZXN1bHRXcml0ZVN0cmVhbSIsIldyaXRhYmxlIiwid3JpdGUiLCJidWZmZXIiLCJlbmNvZGluZyIsIm5leHQiLCJwdXNoIiwibGVuZ3RoIiwiYXJjaGl2ZSIsInpsaWIiLCJzcmNTaXplIiwiYmFzZTY0RW5jb2RlclN0cmVhbSIsIkJhc2U2NEVuY29kZSIsInJlc3VsdFdyaXRlU3RyZWFtUHJvbWlzZSIsInVucGlwZSIsImFib3J0IiwiZGVzdHJveSIsInBvaW50ZXIiLCJhcmNoaXZlU3RyZWFtUHJvbWlzZSIsInRpbWVyIiwiVGltZXIiLCJzdGFydCIsInN0YXQiLCJpc0RpcmVjdG9yeSIsImRpcmVjdG9yeSIsImZpbGUiLCJuYW1lIiwiYmFzZW5hbWUiLCJmaW5hbGl6ZSIsImRlYnVnIiwiZ2V0RHVyYXRpb24iLCJhc1NlY29uZHMiLCJ0b0ZpeGVkIiwiQnVmZmVyIiwiY29uY2F0IiwiYXNzZXJ0VmFsaWRaaXAiLCJmaWxlUGF0aCIsInNpemUiLCJmZCIsImFsbG9jIiwicmVhZCIsInNpZ25hdHVyZSIsInRvQXJjaGl2ZSIsInNyYyIsInBhdHRlcm4iLCJjd2QiLCJpZ25vcmUiLCJnbG9iIiwibWVtb2l6ZSIsImJpbmFyeU5hbWUiLCJmdWxsUGF0aCIsIndoaWNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLE9BQU8sR0FBR0Msa0JBQUVDLFNBQUYsQ0FBWUMsZUFBTUMsSUFBbEIsQ0FBaEI7O0FBQ0EsTUFBTUMsUUFBUSxHQUFHSixrQkFBRUMsU0FBRixDQUFZSSxnQkFBT0QsUUFBbkIsQ0FBakI7O0FBQ0EsTUFBTUUsU0FBUyxHQUFHLElBQWxCO0FBQ0EsTUFBTUMsSUFBSSxHQUFHLEtBQWI7QUFDQSxNQUFNQyxLQUFLLEdBQUcsS0FBZDtBQUNBLE1BQU1DLEtBQUssR0FBRyxLQUFkOztBQUdBLE1BQU1DLFlBQU4sQ0FBbUI7QUFDakJDLEVBQUFBLFdBQVcsQ0FBRUMsVUFBRixFQUFjQyxJQUFJLEdBQUcsRUFBckIsRUFBeUI7QUFDbEMsU0FBS0MsT0FBTCxHQUFlRixVQUFmO0FBQ0EsU0FBS0MsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0UsUUFBTCxHQUFnQixLQUFoQjtBQUNEOztBQUVEQyxFQUFBQSxlQUFlLENBQUVDLEtBQUYsRUFBUztBQUN0QixXQUFPQyxnQkFBRUMsUUFBRixDQUFXRixLQUFLLENBQUNHLFFBQWpCLElBQTZCSCxLQUFLLENBQUNHLFFBQU4sQ0FBZUMsUUFBZixDQUF3QixLQUFLUixJQUFMLENBQVVTLGlCQUFsQyxDQUE3QixHQUFvRkwsS0FBSyxDQUFDRyxRQUFqRztBQUNEOztBQUVELFFBQU1HLE9BQU4sR0FBaUI7QUFDZixVQUFNO0FBQ0pDLE1BQUFBLEdBREk7QUFFSkYsTUFBQUE7QUFGSSxRQUdGLEtBQUtULElBSFQ7QUFJQSxTQUFLWSxPQUFMLEdB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Q0FBZXpILE1BQWY7QUFDQW1ILE1BQUFBLE9BQU8sQ0FBQ08sS0FBUjtBQUNBUCxNQUFBQSxPQUFPLENBQUNRLE9BQVI7QUFDQW5HLE1BQUFBLE1BQU0sQ0FBQ3VELENBQUQsQ0FBTjtBQUNELEtBTkgsRUFPR3RELEVBUEgsQ0FPTSxRQVBOLEVBT2dCRixPQVBoQjtBQVFBNEYsSUFBQUEsT0FBTyxDQUFDb0IsUUFBUjtBQUNELEdBakJZLENBQWI7QUFrQkQ7O0FBTUQsTUFBTXpELGlCQUFpQixHQUFHakUsZ0JBQUU4SSxPQUFGLENBSXhCLGVBQWU3RSxpQkFBZixDQUFrQzhFLFVBQWxDLEVBQThDO0FBQzVDLFFBQU1DLFFBQVEsR0FBRyxNQUFNNUgsYUFBRzZILEtBQUgsQ0FBU0YsVUFBVCxDQUF2Qjs7QUFDQXJGLGtCQUFJaUUsS0FBSixDQUFXLFNBQVFvQixVQUFXLFFBQU9DLFFBQVMsR0FBOUM7O0FBQ0EsU0FBT0EsUUFBUDtBQUNELENBUnVCLENBQTFCOztlQWNlO0FBQUUzRixFQUFBQSxZQUFGO0FBQWdCMkIsRUFBQUEsV0FBaEI7QUFBNkJLLEVBQUFBLGFBQTdCO0FBQTRDNEMsRUFBQUEsY0FBNUM7QUFBNERPLEVBQUFBO0FBQTVELEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHlhdXpsIGZyb20gJ3lhdXpsJztcbmltcG9ydCBhcmNoaXZlciBmcm9tICdhcmNoaXZlcic7XG5pbXBvcnQgeyBjcmVhdGVXcml0ZVN0cmVhbSB9IGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgbWtkaXJwIH0gZnJvbSAnLi4vbGliL21rZGlycCc7XG5pbXBvcnQgc3RyZWFtIGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgZnMgZnJvbSAnLi9mcyc7XG5pbXBvcnQgeyBpc1dpbmRvd3MgfSBmcm9tICcuL3N5c3RlbSc7XG5pbXBvcnQgeyBCYXNlNjRFbmNvZGUgfSBmcm9tICdiYXNlNjQtc3RyZWFtJztcbmltcG9ydCB7IHRvUmVhZGFibGVTaXplU3RyaW5nLCBHaUIgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IFRpbWVyIGZyb20gJy4vdGltaW5nJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IGdldFN0cmVhbSBmcm9tICdnZXQtc3RyZWFtJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuXG5jb25zdCBvcGVuWmlwID0gQi5wcm9taXNpZnkoeWF1emwub3Blbik7XG5jb25zdCBwaXBlbGluZSA9IEIucHJvbWlzaWZ5KHN0cmVhbS5waXBlbGluZSk7XG5jb25zdCBaSVBfTUFHSUMgPSAnUEsnO1xuY29uc3QgSUZNVCA9IDYxNDQwO1xuY29uc3QgSUZESVIgPSAxNjM4NDtcbmNvbnN0IElGTE5LID0gNDA5NjA7XG5cbi8vIFRoaXMgY2xhc3MgaXMgbW9zdGx5IGNvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXhvZ2Rlbi9leHRyYWN0LXppcC9ibG9iL21hc3Rlci9pbmRleC5qc1xuY2xhc3MgWmlwRXh0cmFjdG9yIHtcbiAgY29uc3RydWN0b3IgKHNvdXJjZVBhdGgsIG9wdHMgPSB7fSkge1xuICAgIHRoaXMuemlwUGF0aCA9IHNvdXJjZVBhdGg7XG4gICAgdGhpcy5vcHRzID0gb3B0cztcbiAgICB0aGlzLmNhbmNlbGVkID0gZmFsc2U7XG4gIH1cblxuICBleHRyYWN0RmlsZU5hbWUgKGVudHJ5KSB7XG4gICAgcmV0dXJuIF8uaXNCdWZmZXIoZW50cnkuZmlsZU5hbWUpID8gZW50cnkuZmlsZU5hbWUudG9TdHJpbmcodGhpcy5vcHRzLmZpbGVOYW1lc0VuY29kaW5nKSA6IGVudHJ5LmZpbGVOYW1lO1xuICB9XG5cbiAgYXN5bmMgZXh0cmFjdCAoKSB7XG4gICAgY29uc3Qge1xuICAgICAgZGlyLFxuICAgICAgZmlsZU5hbWVzRW5jb2RpbmcsXG4gICAgfSA9IHRoaXMub3B0cztcbiAgICB0aGlzLnppcGZpbGUgPSBhd2FpdCBvcGVuWmlwKHRoaXMuemlwUGF0aCwge1xuICAgICAgbGF6eUVudHJpZXM6IHRydWUsXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGhlam9zaHdvbGZlL3lhdXpsL2NvbW1pdC9jYzc0NTVhYzc4OWJhODQ5NzMxODRlNWViZGUwNTgxY2RjNGMzYjM5I2RpZmYtMDRjNmU5MGZhYWMyNjc1YWE4OWUyMTc2ZDJlZWM3ZDhSOTVcbiAgICAgIGRlY29kZVN0cmluZ3M6ICFmaWxlTmFtZXNFbmNvZGluZyxcbiAgICB9KTtcbiAgICB0aGlzLmNhbmNlbGVkID0gZmFsc2U7XG5cbiAgICByZXR1cm4gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy56aXBmaWxlLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5jYW5jZWxlZCA9IHRydWU7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnppcGZpbGUucmVhZEVudHJ5KCk7XG5cbiAgICAgIHRoaXMuemlwZmlsZS5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jYW5jZWxlZCkge1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuemlwZmlsZS5vbignZW50cnknLCBhc3luYyAoZW50cnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY2FuY2VsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHRoaXMuZXh0cmFjdEZpbGVOYW1lKGVudHJ5KTtcbiAgICAgICAgaWYgKGZpbGVOYW1lLnN0YXJ0c1dpdGgoJ19fTUFDT1NYLycpKSB7XG4gICAgICAgICAgdGhpcy56aXBmaWxlLnJlYWRFbnRyeSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlc3REaXIgPSBwYXRoLmRpcm5hbWUocGF0aC5qb2luKGRpciwgZmlsZU5hbWUpKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBmcy5ta2RpcihkZXN0RGlyLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG5cbiAgICAgICAgICBjb25zdCBjYW5vbmljYWxEZXN0RGlyID0gYXdhaXQgZnMucmVhbHBhdGgoZGVzdERpcik7XG4gICAgICAgICAgY29uc3QgcmVsYXRpdmVEZXN0RGlyID0gcGF0aC5yZWxhdGl2ZShkaXIsIGNhbm9uaWNhbERlc3REaXIpO1xuXG4gICAgICAgICAgaWYgKHJlbGF0aXZlRGVzdERpci5zcGxpdChwYXRoLnNlcCkuaW5jbHVkZXMoJy4uJykpIHtcbiAgICAgICAgICAgIG5ldyBFcnJvcihgT3V0IG9mIGJvdW5kIHBhdGggXCIke2Nhbm9uaWNhbERlc3REaXJ9XCIgZm91bmQgd2hpbGUgcHJvY2Vzc2luZyBmaWxlICR7ZmlsZU5hbWV9YCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXdhaXQgdGhpcy5leHRyYWN0RW50cnkoZW50cnkpO1xuICAgICAgICAgIHRoaXMuemlwZmlsZS5yZWFkRW50cnkoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5jYW5jZWxlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy56aXBmaWxlLmNsb3NlKCk7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZXh0cmFjdEVudHJ5IChlbnRyeSkge1xuICAgIGlmICh0aGlzLmNhbmNlbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgZGlyLFxuICAgIH0gPSB0aGlzLm9wdHM7XG5cbiAgICBjb25zdCBmaWxlTmFtZSA9IHRoaXMuZXh0cmFjdEZpbGVOYW1lKGVudHJ5KTtcbiAgICBjb25zdCBkZXN0ID0gcGF0aC5qb2luKGRpciwgZmlsZU5hbWUpO1xuXG4gICAgLy8gY29udmVydCBleHRlcm5hbCBmaWxlIGF0dHIgaW50IGludG8gYSBmcyBzdGF0IG1vZGUgaW50XG4gICAgY29uc3QgbW9kZSA9IChlbnRyeS5leHRlcm5hbEZpbGVBdHRyaWJ1dGVzID4+IDE2KSAmIDB4RkZGRjtcbiAgICAvLyBjaGVjayBpZiBpdCdzIGEgc3ltbGluayBvciBkaXIgKHVzaW5nIHN0YXQgbW9kZSBjb25zdGFudHMpXG4gICAgY29uc3QgaXNTeW1saW5rID0gKG1vZGUgJiBJRk1UKSA9PT0gSUZMTks7XG4gICAgY29uc3QgaXNEaXIgPSAobW9kZSAmIElGTVQpID09PSBJRkRJUlxuICAgICAgLy8gRmFpbHNhZmUsIGJvcnJvd2VkIGZyb20ganNaaXBcbiAgICAgIHx8IGZpbGVOYW1lLmVuZHNXaXRoKCcvJylcbiAgICAgIC8vIGNoZWNrIGZvciB3aW5kb3dzIHdlaXJkIHdheSBvZiBzcGVjaWZ5aW5nIGEgZGlyZWN0b3J5XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWF4b2dkZW4vZXh0cmFjdC16aXAvaXNzdWVzLzEzI2lzc3VlY29tbWVudC0xNTQ0OTQ1NjZcbiAgICAgIHx8IChlbnRyeS52ZXJzaW9uTWFkZUJ5ID4+IDggPT09IDAgJiYgZW50cnkuZXh0ZXJuYWxGaWxlQXR0cmlidXRlcyA9PT0gMTYpO1xuICAgIGNvbnN0IHByb2NNb2RlID0gdGhpcy5nZXRFeHRyYWN0ZWRNb2RlKG1vZGUsIGlzRGlyKSAmIDBvNzc3O1xuICAgIC8vIGFsd2F5cyBlbnN1cmUgZm9sZGVycyBhcmUgY3JlYXRlZFxuICAgIGNvbnN0IGRlc3REaXIgPSBpc0RpciA/IGRlc3QgOiBwYXRoLmRpcm5hbWUoZGVzdCk7XG4gICAgY29uc3QgbWtkaXJPcHRpb25zID0geyByZWN1cnNpdmU6IHRydWUgfTtcbiAgICBpZiAoaXNEaXIpIHtcbiAgICAgIG1rZGlyT3B0aW9ucy5tb2RlID0gcHJvY01vZGU7XG4gICAgfVxuICAgIGF3YWl0IGZzLm1rZGlyKGRlc3REaXIsIG1rZGlyT3B0aW9ucyk7XG4gICAgaWYgKGlzRGlyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVhZFN0cmVhbSA9IGF3YWl0IEIucHJvbWlzaWZ5KHRoaXMuemlwZmlsZS5vcGVuUmVhZFN0cmVhbS5iaW5kKHRoaXMuemlwZmlsZSkpKGVudHJ5KTtcbiAgICBpZiAoaXNTeW1saW5rKSB7XG4gICAgICBjb25zdCBsaW5rID0gYXdhaXQgZ2V0U3RyZWFtKHJlYWRTdHJlYW0pO1xuICAgICAgYXdhaXQgZnMuc3ltbGluayhsaW5rLCBkZXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgcGlwZWxpbmUocmVhZFN0cmVhbSwgZnMuY3JlYXRlV3JpdGVTdHJlYW0oZGVzdCwgeyBtb2RlOiBwcm9jTW9kZSB9KSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RXh0cmFjdGVkTW9kZSAoZW50cnlNb2RlLCBpc0Rpcikge1xuICAgIGNvbnN0IHtcbiAgICAgIGRlZmF1bHREaXJNb2RlLFxuICAgICAgZGVmYXVsdEZpbGVNb2RlLFxuICAgIH0gPSB0aGlzLm9wdHM7XG5cbiAgICBsZXQgbW9kZSA9IGVudHJ5TW9kZTtcbiAgICAvLyBTZXQgZGVmYXVsdHMsIGlmIG5lY2Vzc2FyeVxuICAgIGlmIChtb2RlID09PSAwKSB7XG4gICAgICBpZiAoaXNEaXIpIHtcbiAgICAgICAgaWYgKGRlZmF1bHREaXJNb2RlKSB7XG4gICAgICAgICAgbW9kZSA9IHBhcnNlSW50KGRlZmF1bHREaXJNb2RlLCAxMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICBtb2RlID0gMG83NTU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChkZWZhdWx0RmlsZU1vZGUpIHtcbiAgICAgICAgICBtb2RlID0gcGFyc2VJbnQoZGVmYXVsdEZpbGVNb2RlLCAxMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICBtb2RlID0gMG82NDQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbW9kZTtcbiAgfVxufVxuXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRXh0cmFjdEFsbE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmlsZU5hbWVzRW5jb2RpbmcgVGhlIGVuY29kaW5nIHRvIHVzZSBmb3IgZXh0cmFjdGVkIGZpbGUgbmFtZXMuXG4gKiBGb3IgWklQIGFyY2hpdmVzIGNyZWF0ZWQgb24gTWFjT1MgaXQgaXMgdXN1YWxseSBleHBlY3RlZCB0byBiZSBgdXRmOGAuXG4gKiBCeSBkZWZhdWx0IGl0IGlzIGF1dG9kZXRlY3RlZCBiYXNlZCBvbiB0aGUgZW50cnkgbWV0YWRhdGEgYW5kIGlzIG9ubHkgbmVlZGVkIHRvIGJlIHNldCBleHBsaWNpdGx5XG4gKiBpZiB0aGUgcGFydGljdWxhciBhcmNoaXZlIGRvZXMgbm90IGNvbXBseSB0byB0aGUgc3RhbmRhcmRzLCB3aGljaCBsZWFkcyB0byBjb3JydXB0ZWQgZmlsZSBuYW1lc1xuICogYWZ0ZXIgZXh0cmFjdGlvbi4gT25seSBhcHBsaWNhYmxlIGlmIHN5c3RlbSB1bnppcCBiaW5hcnkgaXMgTk9UIGJlaW5nIHVzZWQuXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSB1c2VTeXN0ZW1VbnppcCBbZmFsc2VdIElmIHRydWUsIGF0dGVtcHQgdG8gdXNlIHN5c3RlbSB1bnppcDsgaWYgdGhpcyBmYWlscyxcbiAqIGZhbGxiYWNrIHRvIHRoZSBKUyB1bnppcCBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuXG4vKipcbiAqIEV4dHJhY3QgemlwZmlsZSB0byBhIGRpcmVjdG9yeVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB6aXBGaWxlUGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSBzb3VyY2UgWklQIGZpbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBkZXN0RGlyIFRoZSBmdWxsIHBhdGggdG8gdGhlIGRlc3RpbmF0aW9uIGZvbGRlclxuICogQHBhcmFtIHs/RXh0cmFjdEFsbE9wdGlvbnN9IG9wdHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdEFsbFRvICh6aXBGaWxlUGF0aCwgZGVzdERpciwgb3B0cyA9IHt9KSB7XG4gIGlmICghcGF0aC5pc0Fic29sdXRlKGRlc3REaXIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUYXJnZXQgcGF0aCAnJHtkZXN0RGlyfScgaXMgZXhwZWN0ZWQgdG8gYmUgYWJzb2x1dGVgKTtcbiAgfVxuXG4gIGF3YWl0IGZzLm1rZGlyKGRlc3REaXIsIHtyZWN1cnNpdmU6IHRydWV9KTtcbiAgY29uc3QgZGlyID0gYXdhaXQgZnMucmVhbHBhdGgoZGVzdERpcik7XG4gIGlmIChvcHRzLnVzZVN5c3RlbVVuemlwKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV4dHJhY3RXaXRoU3lzdGVtVW56aXAoemlwRmlsZVBhdGgsIGRpcik7XG4gICAgICByZXR1cm47XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cud2FybihgdW56aXAgZmFpbGVkOyBmYWxsaW5nIGJhY2sgdG8gSlM6ICR7ZXJyLnN0ZGVyciB8fCBlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgZXh0cmFjdG9yID0gbmV3IFppcEV4dHJhY3Rvcih6aXBGaWxlUGF0aCwge1xuICAgIC4uLm9wdHMsXG4gICAgZGlyLFxuICB9KTtcbiAgYXdhaXQgZXh0cmFjdG9yLmV4dHJhY3QoKTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBzeXN0ZW0gdW56aXAgKGUuZy4sIGAvdXNyL2Jpbi91bnppcGApLiBJZiBhdmFpbGFibGUsIGl0IGlzXG4gKiBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIHRoZSBKUyBpbXBsZW1lbnRhdGlvbi5cbiAqIEJ5IGRlZmF1bHQgYWxsIGZpbGVzIGluIHRoZSBkZXN0RGlyIGdldCBvdmVycmlkZGVuIGlmIGFscmVhZHkgZXhpc3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHppcEZpbGVQYXRoIFRoZSBmdWxsIHBhdGggdG8gdGhlIHNvdXJjZSBaSVAgZmlsZVxuICogQHBhcmFtIHtzdHJpbmd9IGRlc3REaXIgVGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZm9sZGVyLlxuICogVGhpcyBmb2xkZXIgaXMgZXhwZWN0ZWQgdG8gYWxyZWFkeSBleGlzdCBiZWZvcmUgZXh0cmFjdGluZyB0aGUgYXJjaGl2ZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFdpdGhTeXN0ZW1VbnppcCAoemlwRmlsZVBhdGgsIGRlc3REaXIpIHtcbiAgY29uc3QgaXNXaW5kb3dzSG9zdCA9IGlzV2luZG93cygpO1xuICBsZXQgZXhlY3V0YWJsZVBhdGg7XG4gIHRyeSB7XG4gICAgZXhlY3V0YWJsZVBhdGggPSBhd2FpdCBnZXRFeGVjdXRhYmxlUGF0aChcbiAgICAgIGlzV2luZG93c0hvc3QgPyAncG93ZXJzaGVsbC5leGUnIDogJ3VuemlwJ1xuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHN5c3RlbSB1bnppcCcpO1xuICB9XG5cbiAgaWYgKGlzV2luZG93c0hvc3QpIHtcbiAgICAvLyBvbiBXaW5kb3dzIHdlIHVzZSBQb3dlclNoZWxsIHRvIHVuemlwIGZpbGVzXG4gICAgYXdhaXQgZXhlYyhleGVjdXRhYmxlUGF0aCwgW1xuICAgICAgJy1jb21tYW5kJywgJ0V4cGFuZC1BcmNoaXZlJyxcbiAgICAgICctTGl0ZXJhbFBhdGgnLCB6aXBGaWxlUGF0aCxcbiAgICAgICctRGVzdGluYXRpb25QYXRoJywgZGVzdERpcixcbiAgICAgICctRm9yY2UnXG4gICAgXSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gLXEgbWVhbnMgcXVpZXQgKG5vIHN0ZG91dClcbiAgICAvLyAtbyBtZWFucyBvdmVyd3JpdGVcbiAgICAvLyAtZCBpcyB0aGUgZGVzdCBkaXJcbiAgICBhd2FpdCBleGVjKGV4ZWN1dGFibGVQYXRoLCBbXG4gICAgICAnLXEnLFxuICAgICAgJy1vJywgemlwRmlsZVBhdGgsXG4gICAgICAnLWQnLCBkZXN0RGlyXG4gICAgXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBFeHRyYWN0IGEgc2luZ2xlIHppcCBlbnRyeSB0byBhIGRpcmVjdG9yeVxuICpcbiAqIEBwYXJhbSB7U3RyZWFtYWJsZX0gemlwRmlsZSBUaGUgc291cmNlIFpJUCBzdHJlYW1cbiAqIEBwYXJhbSB7eWF1emwuWmlwRW50cnl9IGVudHJ5IFRoZSBlbnRyeSBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IGRlc3REaXIgVGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZm9sZGVyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIF9leHRyYWN0RW50cnlUbyAoemlwRmlsZSwgZW50cnksIGRlc3REaXIpIHtcbiAgY29uc3QgZHN0UGF0aCA9IHBhdGgucmVzb2x2ZShkZXN0RGlyLCBlbnRyeS5maWxlTmFtZSk7XG5cbiAgLy8gQ3JlYXRlIGRlc3QgZGlyZWN0b3J5IGlmIGRvZXNuJ3QgZXhpc3QgYWxyZWFkeVxuICBpZiAoL1xcLyQvLnRlc3QoZW50cnkuZmlsZU5hbWUpKSB7XG4gICAgaWYgKCFhd2FpdCBmcy5leGlzdHMoZHN0UGF0aCkpIHtcbiAgICAgIGF3YWl0IG1rZGlycChkc3RQYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKCFhd2FpdCBmcy5leGlzdHMocGF0aC5kaXJuYW1lKGRzdFBhdGgpKSkge1xuICAgIGF3YWl0IG1rZGlycChwYXRoLmRpcm5hbWUoZHN0UGF0aCkpO1xuICB9XG5cbiAgLy8gQ3JlYXRlIGEgd3JpdGUgc3RyZWFtXG4gIGNvbnN0IHdyaXRlU3RyZWFtID0gY3JlYXRlV3JpdGVTdHJlYW0oZHN0UGF0aCwge2ZsYWdzOiAndyd9KTtcbiAgY29uc3Qgd3JpdGVTdHJlYW1Qcm9taXNlID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHdyaXRlU3RyZWFtLm9uY2UoJ2ZpbmlzaCcsIHJlc29sdmUpO1xuICAgIHdyaXRlU3RyZWFtLm9uY2UoJ2Vycm9yJywgcmVqZWN0KTtcbiAgfSk7XG5cbiAgLy8gQ3JlYXRlIHppcFJlYWRTdHJlYW0gYW5kIHBpcGUgZGF0YSB0byB0aGUgd3JpdGUgc3RyZWFtXG4gIC8vIChmb3Igc29tZSBvZGQgcmVhc29uIEIucHJvbWlzaWZ5IGRvZXNuJ3Qgd29yayBvbiB6aXBmaWxlLm9wZW5SZWFkU3RyZWFtLCBpdCBjYXVzZXMgYW4gZXJyb3IgJ2Nsb3NlZCcpXG4gIGNvbnN0IHppcFJlYWRTdHJlYW0gPSBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgemlwRmlsZS5vcGVuUmVhZFN0cmVhbShlbnRyeSwgKGVyciwgcmVhZFN0cmVhbSkgPT4gZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKHJlYWRTdHJlYW0pKTtcbiAgfSk7XG4gIGNvbnN0IHppcFJlYWRTdHJlYW1Qcm9taXNlID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHppcFJlYWRTdHJlYW0ub25jZSgnZW5kJywgcmVzb2x2ZSk7XG4gICAgemlwUmVhZFN0cmVhbS5vbmNlKCdlcnJvcicsIHJlamVjdCk7XG4gIH0pO1xuICB6aXBSZWFkU3RyZWFtLnBpcGUod3JpdGVTdHJlYW0pO1xuXG4gIC8vIFdhaXQgZm9yIHRoZSB6aXBSZWFkU3RyZWFtIGFuZCB3cml0ZVN0cmVhbSB0byBlbmQgYmVmb3JlIHJldHVybmluZ1xuICByZXR1cm4gYXdhaXQgQi5hbGwoW1xuICAgIHppcFJlYWRTdHJlYW1Qcm9taXNlLFxuICAgIHdyaXRlU3RyZWFtUHJvbWlzZSxcbiAgXSk7XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gWmlwRW50cnlcbiAqIEBwcm9wZXJ0eSB7eWF1emwuWmlwRW50cnl9IGVudHJ5IFRoZSBhY3R1YWwgZW50cnkgaW5zdGFuY2VcbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb259IGV4dHJhY3RFbnRyeVRvIEFuIGFzeW5jIGZ1bmN0aW9uLCB3aGljaCBhY2NlcHRzIG9uZSBwYXJhbWV0ZXIuXG4gKiBUaGlzIHBhcmFtZXRlciBjb250YWlucyB0aGUgZGVzdGluYXRpb24gZm9sZGVyIHBhdGggdG8gd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyBnb2luZyB0byBleHRyYWN0IHRoZSBlbnRyeS5cbiAqL1xuXG4vKipcbiAqIEdldCBlbnRyaWVzIGZvciBhIHppcCBmb2xkZXJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gemlwRmlsZVBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgc291cmNlIFpJUCBmaWxlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbkVudHJ5IENhbGxiYWNrIHdoZW4gZW50cnkgaXMgcmVhZC5cbiAqIFRoZSBjYWxsYmFjayBpcyBleHBlY3RlZCB0byBhY2NlcHQgb25lIGFyZ3VtZW50IG9mIFppcEVudHJ5IHR5cGUuXG4gKiBUaGUgaXRlcmF0aW9uIHRocm91Z2ggdGhlIHNvdXJjZSB6aXAgZmlsZSB3aWxsIGJpIHRlcm1pbmF0ZWQgYXMgc29vbiBhc1xuICogdGhlIHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9uIGVxdWFscyB0byBgZmFsc2VgLlxuICovXG5hc3luYyBmdW5jdGlvbiByZWFkRW50cmllcyAoemlwRmlsZVBhdGgsIG9uRW50cnkpIHtcbiAgLy8gT3BlbiBhIHppcCBmaWxlIGFuZCBzdGFydCByZWFkaW5nIGVudHJpZXNcbiAgY29uc3QgemlwZmlsZSA9IGF3YWl0IG9wZW5aaXAoemlwRmlsZVBhdGgsIHtsYXp5RW50cmllczogdHJ1ZX0pO1xuICBjb25zdCB6aXBSZWFkU3RyZWFtUHJvbWlzZSA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB6aXBmaWxlLm9uY2UoJ2VuZCcsIHJlc29sdmUpO1xuICAgIHppcGZpbGUub25jZSgnZXJyb3InLCByZWplY3QpO1xuXG4gICAgLy8gT24gZWFjaCBlbnRyeSwgY2FsbCAnb25FbnRyeScgYW5kIHRoZW4gcmVhZCB0aGUgbmV4dCBlbnRyeVxuICAgIHppcGZpbGUub24oJ2VudHJ5JywgYXN5bmMgKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBvbkVudHJ5KHtcbiAgICAgICAgZW50cnksXG4gICAgICAgIGV4dHJhY3RFbnRyeVRvOiBhc3luYyAoZGVzdERpcikgPT4gYXdhaXQgX2V4dHJhY3RFbnRyeVRvKHppcGZpbGUsIGVudHJ5LCBkZXN0RGlyKVxuICAgICAgfSk7XG4gICAgICBpZiAocmVzID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gemlwZmlsZS5lbWl0KCdlbmQnKTtcbiAgICAgIH1cbiAgICAgIHppcGZpbGUucmVhZEVudHJ5KCk7XG4gICAgfSk7XG4gIH0pO1xuICB6aXBmaWxlLnJlYWRFbnRyeSgpO1xuXG4gIC8vIFdhaXQgZm9yIHRoZSBlbnRyaWVzIHRvIGZpbmlzaCBiZWluZyBpdGVyYXRlZCB0aHJvdWdoXG4gIHJldHVybiBhd2FpdCB6aXBSZWFkU3RyZWFtUHJvbWlzZTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBaaXBPcHRpb25zXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGVuY29kZVRvQmFzZTY0IFtmYWxzZV0gV2hldGhlciB0byBlbmNvZGVcbiAqIHRoZSByZXN1bHRpbmcgYXJjaGl2ZSB0byBhIGJhc2U2NC1lbmNvZGVkIHN0cmluZ1xuICogQHByb3BlcnR5IHtib29sZWFufSBpc01ldGVyZWQgW3RydWVdIFdoZXRoZXIgdG8gbG9nIHRoZSBhY3R1YWxcbiAqIGFyY2hpdmVyIHBlcmZvcm1hbmNlXG4gKiBAcHJvcGVydHkge251bWJlcn0gbWF4U2l6ZSBbMTA3Mzc0MTgyNF0gVGhlIG1heGltdW0gc2l6ZSBvZlxuICogdGhlIHJlc3VsdGluZyBhcmNoaXZlIGluIGJ5dGVzLiBUaGlzIGlzIHNldCB0byAxR0IgYnkgZGVmYXVsdCwgYmVjYXVzZVxuICogQXBwaXVtIGxpbWl0cyB0aGUgbWF4aW11bSBIVFRQIGJvZHkgc2l6ZSB0byAxR0IuIEFsc28sIHRoZSBOb2RlSlMgaGVhcFxuICogc2l6ZSBtdXN0IGJlIGVub3VnaCB0byBrZWVwIHRoZSByZXN1bHRpbmcgb2JqZWN0ICh1c3VhbGx5IHRoaXMgc2l6ZSBpc1xuICogbGltaXRlZCB0byAxLjQgR0IpXG4gKiBAcHJvcGVydHkge251bWJlcn0gbGV2ZWwgWzldIFRoZSBjb21wcmVzc2lvbiBsZXZlbC4gVGhlIG1heGltdW1cbiAqIGxldmVsIGlzIDkgKHRoZSBiZXN0IGNvbXByZXNzaW9uLCB3b3JzdCBwZXJmb3JtYW5jZSkuIFRoZSBtaW5pbXVtXG4gKiBjb21wcmVzc2lvbiBsZXZlbCBpcyAwIChubyBjb21wcmVzc2lvbikuXG4gKi9cblxuLyoqXG4gKiBDb252ZXJ0cyBjb250ZW50cyBvZiBsb2NhbCBkaXJlY3RvcnkgdG8gYW4gaW4tbWVtb3J5IC56aXAgYnVmZmVyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHNyY1BhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgZm9sZGVyIG9yIGZpbGUgYmVpbmcgemlwcGVkXG4gKiBAcGFyYW0ge1ppcE9wdGlvbnN9IG9wdHMgWmlwcGluZyBvcHRpb25zXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBaaXBwZWQgKGFuZCBlbmNvZGVkIGlmIGBlbmNvZGVUb0Jhc2U2NGAgaXMgdHJ1dGh5KVxuICogY29udGVudCBvZiB0aGUgc291cmNlIHBhdGggYXMgbWVtb3J5IGJ1ZmZlclxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSByZWFkaW5nIHRoZSBzb3VyY2VcbiAqIG9yIHRoZSBzb3VyY2UgaXMgdG9vIGJpZ1xuICovXG5hc3luYyBmdW5jdGlvbiB0b0luTWVtb3J5WmlwIChzcmNQYXRoLCBvcHRzID0ge30pIHtcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMoc3JjUGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1Y2ggZmlsZSBvciBmb2xkZXI6ICR7c3JjUGF0aH1gKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpc01ldGVyZWQgPSB0cnVlLFxuICAgIGVuY29kZVRvQmFzZTY0ID0gZmFsc2UsXG4gICAgbWF4U2l6ZSA9IDEgKiBHaUIsXG4gICAgbGV2ZWwgPSA5LFxuICB9ID0gb3B0cztcbiAgY29uc3QgcmVzdWx0QnVmZmVycyA9IFtdO1xuICBsZXQgcmVzdWx0QnVmZmVyc1NpemUgPSAwO1xuICAvLyBDcmVhdGUgYSB3cml0YWJsZSBzdHJlYW0gdGhhdCB6aXAgYnVmZmVycyB3aWxsIGJlIHN0cmVhbWVkIHRvXG4gIGNvbnN0IHJlc3VsdFdyaXRlU3RyZWFtID0gbmV3IHN0cmVhbS5Xcml0YWJsZSh7XG4gICAgd3JpdGU6IChidWZmZXIsIGVuY29kaW5nLCBuZXh0KSA9PiB7XG4gICAgICByZXN1bHRCdWZmZXJzLnB1c2goYnVmZmVyKTtcbiAgICAgIHJlc3VsdEJ1ZmZlcnNTaXplICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBpZiAobWF4U2l6ZSA+IDAgJiYgcmVzdWx0QnVmZmVyc1NpemUgPiBtYXhTaXplKSB7XG4gICAgICAgIHJlc3VsdFdyaXRlU3RyZWFtLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKGBUaGUgc2l6ZSBvZiB0aGUgcmVzdWx0aW5nIGAgK1xuICAgICAgICAgIGBhcmNoaXZlIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiAke3RvUmVhZGFibGVTaXplU3RyaW5nKG1heFNpemUpfWApKTtcbiAgICAgIH1cbiAgICAgIG5leHQoKTtcbiAgICB9LFxuICB9KTtcblxuICAvLyBaaXAgJ3NyY0RpcicgYW5kIHN0cmVhbSBpdCB0byB0aGUgYWJvdmUgd3JpdGFibGUgc3RyZWFtXG4gIGNvbnN0IGFyY2hpdmUgPSBhcmNoaXZlcignemlwJywge1xuICAgIHpsaWI6IHtsZXZlbH1cbiAgfSk7XG4gIGxldCBzcmNTaXplID0gbnVsbDtcbiAgY29uc3QgYmFzZTY0RW5jb2RlclN0cmVhbSA9IGVuY29kZVRvQmFzZTY0ID8gbmV3IEJhc2U2NEVuY29kZSgpIDogbnVsbDtcbiAgY29uc3QgcmVzdWx0V3JpdGVTdHJlYW1Qcm9taXNlID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHJlc3VsdFdyaXRlU3RyZWFtLm9uY2UoJ2Vycm9yJywgKGUpID0+IHtcbiAgICAgIGlmIChiYXNlNjRFbmNvZGVyU3RyZWFtKSB7XG4gICAgICAgIGFyY2hpdmUudW5waXBlKGJhc2U2NEVuY29kZXJTdHJlYW0pO1xuICAgICAgICBiYXNlNjRFbmNvZGVyU3RyZWFtLnVucGlwZShyZXN1bHRXcml0ZVN0cmVhbSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcmNoaXZlLnVucGlwZShyZXN1bHRXcml0ZVN0cmVhbSk7XG4gICAgICB9XG4gICAgICBhcmNoaXZlLmFib3J0KCk7XG4gICAgICBhcmNoaXZlLmRlc3Ryb3koKTtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9KTtcbiAgICByZXN1bHRXcml0ZVN0cmVhbS5vbmNlKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICBzcmNTaXplID0gYXJjaGl2ZS5wb2ludGVyKCk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH0pO1xuICBjb25zdCBhcmNoaXZlU3RyZWFtUHJvbWlzZSA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBhcmNoaXZlLm9uY2UoJ2ZpbmlzaCcsIHJlc29sdmUpO1xuICAgIGFyY2hpdmUub25jZSgnZXJyb3InLCAoZSkgPT4gcmVqZWN0KFxuICAgICAgbmV3IEVycm9yKGBGYWlsZWQgdG8gYXJjaGl2ZSAnJHtzcmNQYXRofSc6ICR7ZS5tZXNzYWdlfWApKSk7XG4gIH0pO1xuICBjb25zdCB0aW1lciA9IGlzTWV0ZXJlZCA/IG5ldyBUaW1lcigpLnN0YXJ0KCkgOiBudWxsO1xuICBpZiAoKGF3YWl0IGZzLnN0YXQoc3JjUGF0aCkpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBhcmNoaXZlLmRpcmVjdG9yeShzcmNQYXRoLCBmYWxzZSk7XG4gIH0gZWxzZSB7XG4gICAgYXJjaGl2ZS5maWxlKHNyY1BhdGgsIHtcbiAgICAgIG5hbWU6IHBhdGguYmFzZW5hbWUoc3JjUGF0aCksXG4gICAgfSk7XG4gIH1cbiAgaWYgKGJhc2U2NEVuY29kZXJTdHJlYW0pIHtcbiAgICBhcmNoaXZlLnBpcGUoYmFzZTY0RW5jb2RlclN0cmVhbSk7XG4gICAgYmFzZTY0RW5jb2RlclN0cmVhbS5waXBlKHJlc3VsdFdyaXRlU3RyZWFtKTtcbiAgfSBlbHNlIHtcbiAgICBhcmNoaXZlLnBpcGUocmVzdWx0V3JpdGVTdHJlYW0pO1xuICB9XG4gIGFyY2hpdmUuZmluYWxpemUoKTtcblxuICAvLyBXYWl0IGZvciB0aGUgc3RyZWFtcyB0byBmaW5pc2hcbiAgYXdhaXQgQi5hbGwoW2FyY2hpdmVTdHJlYW1Qcm9taXNlLCByZXN1bHRXcml0ZVN0cmVhbVByb21pc2VdKTtcblxuICBpZiAodGltZXIpIHtcbiAgICBsb2cuZGVidWcoYFppcHBlZCAke2VuY29kZVRvQmFzZTY0ID8gJ2FuZCBiYXNlNjQtZW5jb2RlZCAnIDogJyd9YCArXG4gICAgICBgJyR7cGF0aC5iYXNlbmFtZShzcmNQYXRoKX0nIGAgK1xuICAgICAgKHNyY1NpemUgPyBgKCR7dG9SZWFkYWJsZVNpemVTdHJpbmcoc3JjU2l6ZSl9KSBgIDogJycpICtcbiAgICAgIGBpbiAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNTZWNvbmRzLnRvRml4ZWQoMyl9cyBgICtcbiAgICAgIGAoY29tcHJlc3Npb24gbGV2ZWw6ICR7bGV2ZWx9KWApO1xuICB9XG4gIC8vIFJldHVybiB0aGUgYXJyYXkgb2YgemlwIGJ1ZmZlcnMgY29uY2F0ZW5hdGVkIGludG8gb25lIGJ1ZmZlclxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChyZXN1bHRCdWZmZXJzKTtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyB3aGV0aGVyIHRoZSBnaXZlbiBmaWxlIGlzIGEgdmFsaWQgWklQIGFyY2hpdmVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZVBhdGggLSBGdWxsIHBhdGggdG8gdGhlIGZpbGVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgYSB2YWxpZCBaSVAgYXJjaGl2ZVxuICovXG5hc3luYyBmdW5jdGlvbiBhc3NlcnRWYWxpZFppcCAoZmlsZVBhdGgpIHtcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZmlsZSBhdCAnJHtmaWxlUGF0aH0nIGRvZXMgbm90IGV4aXN0YCk7XG4gIH1cblxuICBjb25zdCB7c2l6ZX0gPSBhd2FpdCBmcy5zdGF0KGZpbGVQYXRoKTtcbiAgaWYgKHNpemUgPCA0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZmlsZSBhdCAnJHtmaWxlUGF0aH0nIGlzIHRvbyBzbWFsbCB0byBiZSBhIFpJUCBhcmNoaXZlYCk7XG4gIH1cbiAgY29uc3QgZmQgPSBhd2FpdCBmcy5vcGVuKGZpbGVQYXRoLCAncicpO1xuICB0cnkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyhaSVBfTUFHSUMubGVuZ3RoKTtcbiAgICBhd2FpdCBmcy5yZWFkKGZkLCBidWZmZXIsIDAsIFpJUF9NQUdJQy5sZW5ndGgsIDApO1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGJ1ZmZlci50b1N0cmluZygnYXNjaWknKTtcbiAgICBpZiAoc2lnbmF0dXJlICE9PSBaSVBfTUFHSUMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGZpbGUgc2lnbmF0dXJlICcke3NpZ25hdHVyZX0nIG9mICcke2ZpbGVQYXRofScgYCArXG4gICAgICAgIGBpcyBub3QgZXF1YWwgdG8gdGhlIGV4cGVjdGVkIFpJUCBhcmNoaXZlIHNpZ25hdHVyZSAnJHtaSVBfTUFHSUN9J2ApO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5jbG9zZShmZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBaaXBDb21wcmVzc2lvbk9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsZXZlbCBbOV0gLSBDb21wcmVzc2lvbiBsZXZlbCBpbiByYW5nZSAwLi45XG4gKiAoZ3JlYXRlciBudW1iZXJzIG1lYW4gYmV0dGVyIGNvbXByZXNzaW9uLCBidXQgbG9uZ2VyIHByb2Nlc3NpbmcgdGltZSlcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFppcFNvdXJjZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gcGF0dGVybiBbJyoqXFwvKiddIC0gR0xPQiBwYXR0ZXJuIGZvciBjb21wcmVzc2lvblxuICogQHByb3BlcnR5IHshc3RyaW5nfSBjd2QgLSBUaGUgc291cmNlIHJvb3QgZm9sZGVyICh0aGUgcGFyZW50IGZvbGRlciBvZlxuICogdGhlIGRlc3RpbmF0aW9uIGZpbGUgYnkgZGVmYXVsdClcbiAqIEBwcm9wZXJ0eSB7P0FycmF5PHN0cmluZz59IGlnbm9yZSAtIFRoZSBsaXN0IG9mIGlnbm9yZWQgcGF0dGVybnNcbiAqL1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJjaGl2ZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gZ2xvYiBwYXR0ZXJuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGRzdFBhdGggLSBUaGUgcmVzdWx0aW5nIGFyY2hpdmUgcGF0aFxuICogQHBhcmFtIHtaaXBTb3VyY2VPcHRpb25zfSBzcmMgLSBTb3VyY2Ugb3B0aW9uc1xuICogQHBhcmFtIHtaaXBDb21wcmVzc2lvbk9wdGlvbnN9IG9wdHMgLSBDb21wcmVzc2lvbiBvcHRpb25zXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGNyZWF0aW5nIHRoZSBhcmNoaXZlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHRvQXJjaGl2ZSAoZHN0UGF0aCwgc3JjID0ge30sIG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgbGV2ZWwgPSA5LFxuICB9ID0gb3B0cztcbiAgY29uc3Qge1xuICAgIHBhdHRlcm4gPSAnKiovKicsXG4gICAgY3dkID0gcGF0aC5kaXJuYW1lKGRzdFBhdGgpLFxuICAgIGlnbm9yZSA9IFtdLFxuICB9ID0gc3JjO1xuICBjb25zdCBhcmNoaXZlID0gYXJjaGl2ZXIoJ3ppcCcsIHsgemxpYjogeyBsZXZlbCB9fSk7XG4gIGNvbnN0IHN0cmVhbSA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKGRzdFBhdGgpO1xuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGFyY2hpdmVcbiAgICAgIC5nbG9iKHBhdHRlcm4sIHtcbiAgICAgICAgY3dkLFxuICAgICAgICBpZ25vcmUsXG4gICAgICB9KVxuICAgICAgLm9uKCdlcnJvcicsIHJlamVjdClcbiAgICAgIC5waXBlKHN0cmVhbSk7XG4gICAgc3RyZWFtXG4gICAgICAub24oJ2Vycm9yJywgKGUpID0+IHtcbiAgICAgICAgYXJjaGl2ZS51bnBpcGUoc3RyZWFtKTtcbiAgICAgICAgYXJjaGl2ZS5hYm9ydCgpO1xuICAgICAgICBhcmNoaXZlLmRlc3Ryb3koKTtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfSlcbiAgICAgIC5vbignZmluaXNoJywgcmVzb2x2ZSk7XG4gICAgYXJjaGl2ZS5maW5hbGl6ZSgpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBGaW5kcyBhbmQgbWVtb2l6ZXMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZ2l2ZW4gZXhlY3V0YWJsZS5cbiAqIFJlamVjdHMgaWYgaXQgaXMgbm90IGZvdW5kLlxuICovXG5jb25zdCBnZXRFeGVjdXRhYmxlUGF0aCA9IF8ubWVtb2l6ZShcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtCPHN0cmluZz59IEZ1bGwgUGF0aCB0byB0aGUgZXhlY3V0YWJsZVxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0RXhlY3V0YWJsZVBhdGggKGJpbmFyeU5hbWUpIHtcbiAgICBjb25zdCBmdWxsUGF0aCA9IGF3YWl0IGZzLndoaWNoKGJpbmFyeU5hbWUpO1xuICAgIGxvZy5kZWJ1ZyhgRm91bmQgJHtiaW5hcnlOYW1lfSBhdCAnJHtmdWxsUGF0aH0nYCk7XG4gICAgcmV0dXJuIGZ1bGxQYXRoO1xuICB9XG4pO1xuXG5leHBvcnQge1xuICBleHRyYWN0QWxsVG8sIHJlYWRFbnRyaWVzLCB0b0luTWVtb3J5WmlwLCBfZXh0cmFjdEVudHJ5VG8sIGFzc2VydFZhbGlkWmlwLCB0b0FyY2hpdmVcbn07XG5leHBvcnQgZGVmYXVsdCB7IGV4dHJhY3RBbGxUbywgcmVhZEVudHJpZXMsIHRvSW5NZW1vcnlaaXAsIGFzc2VydFZhbGlkWmlwLCB0b0FyY2hpdmUgfTtcbiJdLCJmaWxlIjoibGliL3ppcC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi96aXAuanMiXSwibmFtZXMiOlsib3BlblppcCIsIkIiLCJwcm9taXNpZnkiLCJ5YXV6bCIsIm9wZW4iLCJwaXBlbGluZSIsInN0cmVhbSIsIlpJUF9NQUdJQyIsIklGTVQiLCJJRkRJUiIsIklGTE5LIiwiWmlwRXh0cmFjdG9yIiwiY29uc3RydWN0b3IiLCJzb3VyY2VQYXRoIiwib3B0cyIsInppcFBhdGgiLCJjYW5jZWxlZCIsImV4dHJhY3RGaWxlTmFtZSIsImVudHJ5IiwiXyIsImlzQnVmZmVyIiwiZmlsZU5hbWUiLCJ0b1N0cmluZyIsImZpbGVOYW1lc0VuY29kaW5nIiwiZXh0cmFjdCIsImRpciIsInppcGZpbGUiLCJsYXp5RW50cmllcyIsImRlY29kZVN0cmluZ3MiLCJyZXNvbHZlIiwicmVqZWN0Iiwib24iLCJlcnIiLCJyZWFkRW50cnkiLCJzdGFydHNXaXRoIiwiZGVzdERpciIsInBhdGgiLCJkaXJuYW1lIiwiam9pbiIsImZzIiwibWtkaXIiLCJyZWN1cnNpdmUiLCJjYW5vbmljYWxEZXN0RGlyIiwicmVhbHBhdGgiLCJyZWxhdGl2ZURlc3REaXIiLCJyZWxhdGl2ZSIsInNwbGl0Iiwic2VwIiwiaW5jbHVkZXMiLCJFcnJvciIsImV4dHJhY3RFbnRyeSIsImNsb3NlIiwiZGVzdCIsIm1vZGUiLCJleHRlcm5hbEZpbGVBdHRyaWJ1dGVzIiwiaXNTeW1saW5rIiwiaXNEaXIiLCJlbmRzV2l0aCIsInZlcnNpb25NYWRlQnkiLCJwcm9jTW9kZSIsImdldEV4dHJhY3RlZE1vZGUiLCJta2Rpck9wdGlvbnMiLCJyZWFkU3RyZWFtIiwib3BlblJlYWRTdHJlYW0iLCJiaW5kIiwibGluayIsInN5bWxpbmsiLCJjcmVhdGVXcml0ZVN0cmVhbSIsImVudHJ5TW9kZSIsImRlZmF1bHREaXJNb2RlIiwiZGVmYXVsdEZpbGVNb2RlIiwicGFyc2VJbnQiLCJleHRyYWN0QWxsVG8iLCJ6aXBGaWxlUGF0aCIsImlzQWJzb2x1dGUiLCJ1c2VTeXN0ZW1VbnppcCIsImV4dHJhY3RXaXRoU3lzdGVtVW56aXAiLCJsb2ciLCJ3YXJuIiwic3RkZXJyIiwibWVzc2FnZSIsImV4dHJhY3RvciIsImlzV2luZG93c0hvc3QiLCJleGVjdXRhYmxlUGF0aCIsImdldEV4ZWN1dGFibGVQYXRoIiwiZSIsIl9leHRyYWN0RW50cnlUbyIsInppcEZpbGUiLCJkc3RQYXRoIiwidGVzdCIsImV4aXN0cyIsIndyaXRlU3RyZWFtIiwiZmxhZ3MiLCJ3cml0ZVN0cmVhbVByb21pc2UiLCJvbmNlIiwiemlwUmVhZFN0cmVhbSIsInppcFJlYWRTdHJlYW1Qcm9taXNlIiwicGlwZSIsImFsbCIsInJlYWRFbnRyaWVzIiwib25FbnRyeSIsInJlcyIsImV4dHJhY3RFbnRyeVRvIiwiZW1pdCIsInRvSW5NZW1vcnlaaXAiLCJzcmNQYXRoIiwiaXNNZXRlcmVkIiwiZW5jb2RlVG9CYXNlNjQiLCJtYXhTaXplIiwiR2lCIiwibGV2ZWwiLCJyZXN1bHRCdWZmZXJzIiwicmVzdWx0QnVmZmVyc1NpemUiLCJyZXN1bHRXcml0ZVN0cmVhbSIsIldyaXRhYmxlIiwid3JpdGUiLCJidWZmZXIiLCJlbmNvZGluZyIsIm5leHQiLCJwdXNoIiwibGVuZ3RoIiwiYXJjaGl2ZSIsInpsaWIiLCJzcmNTaXplIiwiYmFzZTY0RW5jb2RlclN0cmVhbSIsIkJhc2U2NEVuY29kZSIsInJlc3VsdFdyaXRlU3RyZWFtUHJvbWlzZSIsInVucGlwZSIsImFib3J0IiwiZGVzdHJveSIsInBvaW50ZXIiLCJhcmNoaXZlU3RyZWFtUHJvbWlzZSIsInRpbWVyIiwiVGltZXIiLCJzdGFydCIsInN0YXQiLCJpc0RpcmVjdG9yeSIsImRpcmVjdG9yeSIsImZpbGUiLCJuYW1lIiwiYmFzZW5hbWUiLCJmaW5hbGl6ZSIsImRlYnVnIiwiZ2V0RHVyYXRpb24iLCJhc1NlY29uZHMiLCJ0b0ZpeGVkIiwiQnVmZmVyIiwiY29uY2F0IiwiYXNzZXJ0VmFsaWRaaXAiLCJmaWxlUGF0aCIsInNpemUiLCJmZCIsImFsbG9jIiwicmVhZCIsInNpZ25hdHVyZSIsInRvQXJjaGl2ZSIsInNyYyIsInBhdHRlcm4iLCJjd2QiLCJpZ25vcmUiLCJnbG9iIiwibWVtb2l6ZSIsImJpbmFyeU5hbWUiLCJmdWxsUGF0aCIsIndoaWNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLE9BQU8sR0FBR0Msa0JBQUVDLFNBQUYsQ0FBWUMsZUFBTUMsSUFBbEIsQ0FBaEI7O0FBQ0EsTUFBTUMsUUFBUSxHQUFHSixrQkFBRUMsU0FBRixDQUFZSSxnQkFBT0QsUUFBbkIsQ0FBakI7O0FBQ0EsTUFBTUUsU0FBUyxHQUFHLElBQWxCO0FBQ0EsTUFBTUMsSUFBSSxHQUFHLEtBQWI7QUFDQSxNQUFNQyxLQUFLLEdBQUcsS0FBZDtBQUNBLE1BQU1DLEtBQUssR0FBRyxLQUFkOztBQUdBLE1BQU1DLFlBQU4sQ0FBbUI7QUFDakJDLEVBQUFBLFdBQVcsQ0FBRUMsVUFBRixFQUFjQyxJQUFJLEdBQUcsRUFBckIsRUFBeUI7QUFDbEMsU0FBS0MsT0FBTCxHQUFlRixVQUFmO0FBQ0EsU0FBS0MsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0UsUUFBTCxHQUFnQixLQUFoQjtBQUNEOztBQUVEQyxFQUFBQSxlQUFlLENBQUVDLEtBQUYsRUFBUztBQUN0QixXQUFPQyxnQkFBRUMsUUFBRixDQUFXRixLQUFLLENBQUNHLFFBQWpCLElBQTZCSCxLQUFLLENBQUNHLFFBQU4sQ0FBZUMsUUFBZixDQUF3QixLQUFLUixJQUFMLENBQVVTLGlCQUFsQyxDQUE3QixHQUFvRkwsS0FBSyxDQUFDRyxRQUFqRztBQUNEOztBQUVZLFFBQVBHLE9BQU8sR0FBSTtBQUNmLFVBQU07QUFDSkMsTUFBQUEsR0FESTtBQUVKRixNQUFBQTtBQUZJLFFBR0YsS0FBS1QsSUFIVDtBQUlBLFNBQUtZLE9BQUwsR0FB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ZXpILE1BQWY7QUFDQW1ILE1BQUFBLE9BQU8sQ0FBQ08sS0FBUjtBQUNBUCxNQUFBQSxPQUFPLENBQUNRLE9BQVI7QUFDQW5HLE1BQUFBLE1BQU0sQ0FBQ3VELENBQUQsQ0FBTjtBQUNELEtBTkgsRUFPR3RELEVBUEgsQ0FPTSxRQVBOLEVBT2dCRixPQVBoQjtBQVFBNEYsSUFBQUEsT0FBTyxDQUFDb0IsUUFBUjtBQUNELEdBakJZLENBQWI7QUFrQkQ7O0FBTUQsTUFBTXpELGlCQUFpQixHQUFHakUsZ0JBQUU4SSxPQUFGLENBSXhCLGVBQWU3RSxpQkFBZixDQUFrQzhFLFVBQWxDLEVBQThDO0FBQzVDLFFBQU1DLFFBQVEsR0FBRyxNQUFNNUgsYUFBRzZILEtBQUgsQ0FBU0YsVUFBVCxDQUF2Qjs7QUFDQXJGLGtCQUFJaUUsS0FBSixDQUFXLFNBQVFvQixVQUFXLFFBQU9DLFFBQVMsR0FBOUM7O0FBQ0EsU0FBT0EsUUFBUDtBQUNELENBUnVCLENBQTFCOztlQWNlO0FBQUUzRixFQUFBQSxZQUFGO0FBQWdCMkIsRUFBQUEsV0FBaEI7QUFBNkJLLEVBQUFBLGFBQTdCO0FBQTRDNEMsRUFBQUEsY0FBNUM7QUFBNERPLEVBQUFBO0FBQTVELEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHlhdXpsIGZyb20gJ3lhdXpsJztcbmltcG9ydCBhcmNoaXZlciBmcm9tICdhcmNoaXZlcic7XG5pbXBvcnQgeyBjcmVhdGVXcml0ZVN0cmVhbSB9IGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgbWtkaXJwIH0gZnJvbSAnLi4vbGliL21rZGlycCc7XG5pbXBvcnQgc3RyZWFtIGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgZnMgZnJvbSAnLi9mcyc7XG5pbXBvcnQgeyBpc1dpbmRvd3MgfSBmcm9tICcuL3N5c3RlbSc7XG5pbXBvcnQgeyBCYXNlNjRFbmNvZGUgfSBmcm9tICdiYXNlNjQtc3RyZWFtJztcbmltcG9ydCB7IHRvUmVhZGFibGVTaXplU3RyaW5nLCBHaUIgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IFRpbWVyIGZyb20gJy4vdGltaW5nJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IGdldFN0cmVhbSBmcm9tICdnZXQtc3RyZWFtJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuXG5jb25zdCBvcGVuWmlwID0gQi5wcm9taXNpZnkoeWF1emwub3Blbik7XG5jb25zdCBwaXBlbGluZSA9IEIucHJvbWlzaWZ5KHN0cmVhbS5waXBlbGluZSk7XG5jb25zdCBaSVBfTUFHSUMgPSAnUEsnO1xuY29uc3QgSUZNVCA9IDYxNDQwO1xuY29uc3QgSUZESVIgPSAxNjM4NDtcbmNvbnN0IElGTE5LID0gNDA5NjA7XG5cbi8vIFRoaXMgY2xhc3MgaXMgbW9zdGx5IGNvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXhvZ2Rlbi9leHRyYWN0LXppcC9ibG9iL21hc3Rlci9pbmRleC5qc1xuY2xhc3MgWmlwRXh0cmFjdG9yIHtcbiAgY29uc3RydWN0b3IgKHNvdXJjZVBhdGgsIG9wdHMgPSB7fSkge1xuICAgIHRoaXMuemlwUGF0aCA9IHNvdXJjZVBhdGg7XG4gICAgdGhpcy5vcHRzID0gb3B0cztcbiAgICB0aGlzLmNhbmNlbGVkID0gZmFsc2U7XG4gIH1cblxuICBleHRyYWN0RmlsZU5hbWUgKGVudHJ5KSB7XG4gICAgcmV0dXJuIF8uaXNCdWZmZXIoZW50cnkuZmlsZU5hbWUpID8gZW50cnkuZmlsZU5hbWUudG9TdHJpbmcodGhpcy5vcHRzLmZpbGVOYW1lc0VuY29kaW5nKSA6IGVudHJ5LmZpbGVOYW1lO1xuICB9XG5cbiAgYXN5bmMgZXh0cmFjdCAoKSB7XG4gICAgY29uc3Qge1xuICAgICAgZGlyLFxuICAgICAgZmlsZU5hbWVzRW5jb2RpbmcsXG4gICAgfSA9IHRoaXMub3B0cztcbiAgICB0aGlzLnppcGZpbGUgPSBhd2FpdCBvcGVuWmlwKHRoaXMuemlwUGF0aCwge1xuICAgICAgbGF6eUVudHJpZXM6IHRydWUsXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGhlam9zaHdvbGZlL3lhdXpsL2NvbW1pdC9jYzc0NTVhYzc4OWJhODQ5NzMxODRlNWViZGUwNTgxY2RjNGMzYjM5I2RpZmYtMDRjNmU5MGZhYWMyNjc1YWE4OWUyMTc2ZDJlZWM3ZDhSOTVcbiAgICAgIGRlY29kZVN0cmluZ3M6ICFmaWxlTmFtZXNFbmNvZGluZyxcbiAgICB9KTtcbiAgICB0aGlzLmNhbmNlbGVkID0gZmFsc2U7XG5cbiAgICByZXR1cm4gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy56aXBmaWxlLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5jYW5jZWxlZCA9IHRydWU7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnppcGZpbGUucmVhZEVudHJ5KCk7XG5cbiAgICAgIHRoaXMuemlwZmlsZS5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jYW5jZWxlZCkge1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuemlwZmlsZS5vbignZW50cnknLCBhc3luYyAoZW50cnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY2FuY2VsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHRoaXMuZXh0cmFjdEZpbGVOYW1lKGVudHJ5KTtcbiAgICAgICAgaWYgKGZpbGVOYW1lLnN0YXJ0c1dpdGgoJ19fTUFDT1NYLycpKSB7XG4gICAgICAgICAgdGhpcy56aXBmaWxlLnJlYWRFbnRyeSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlc3REaXIgPSBwYXRoLmRpcm5hbWUocGF0aC5qb2luKGRpciwgZmlsZU5hbWUpKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBmcy5ta2RpcihkZXN0RGlyLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG5cbiAgICAgICAgICBjb25zdCBjYW5vbmljYWxEZXN0RGlyID0gYXdhaXQgZnMucmVhbHBhdGgoZGVzdERpcik7XG4gICAgICAgICAgY29uc3QgcmVsYXRpdmVEZXN0RGlyID0gcGF0aC5yZWxhdGl2ZShkaXIsIGNhbm9uaWNhbERlc3REaXIpO1xuXG4gICAgICAgICAgaWYgKHJlbGF0aXZlRGVzdERpci5zcGxpdChwYXRoLnNlcCkuaW5jbHVkZXMoJy4uJykpIHtcbiAgICAgICAgICAgIG5ldyBFcnJvcihgT3V0IG9mIGJvdW5kIHBhdGggXCIke2Nhbm9uaWNhbERlc3REaXJ9XCIgZm91bmQgd2hpbGUgcHJvY2Vzc2luZyBmaWxlICR7ZmlsZU5hbWV9YCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXdhaXQgdGhpcy5leHRyYWN0RW50cnkoZW50cnkpO1xuICAgICAgICAgIHRoaXMuemlwZmlsZS5yZWFkRW50cnkoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5jYW5jZWxlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy56aXBmaWxlLmNsb3NlKCk7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZXh0cmFjdEVudHJ5IChlbnRyeSkge1xuICAgIGlmICh0aGlzLmNhbmNlbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgZGlyLFxuICAgIH0gPSB0aGlzLm9wdHM7XG5cbiAgICBjb25zdCBmaWxlTmFtZSA9IHRoaXMuZXh0cmFjdEZpbGVOYW1lKGVudHJ5KTtcbiAgICBjb25zdCBkZXN0ID0gcGF0aC5qb2luKGRpciwgZmlsZU5hbWUpO1xuXG4gICAgLy8gY29udmVydCBleHRlcm5hbCBmaWxlIGF0dHIgaW50IGludG8gYSBmcyBzdGF0IG1vZGUgaW50XG4gICAgY29uc3QgbW9kZSA9IChlbnRyeS5leHRlcm5hbEZpbGVBdHRyaWJ1dGVzID4+IDE2KSAmIDB4RkZGRjtcbiAgICAvLyBjaGVjayBpZiBpdCdzIGEgc3ltbGluayBvciBkaXIgKHVzaW5nIHN0YXQgbW9kZSBjb25zdGFudHMpXG4gICAgY29uc3QgaXNTeW1saW5rID0gKG1vZGUgJiBJRk1UKSA9PT0gSUZMTks7XG4gICAgY29uc3QgaXNEaXIgPSAobW9kZSAmIElGTVQpID09PSBJRkRJUlxuICAgICAgLy8gRmFpbHNhZmUsIGJvcnJvd2VkIGZyb20ganNaaXBcbiAgICAgIHx8IGZpbGVOYW1lLmVuZHNXaXRoKCcvJylcbiAgICAgIC8vIGNoZWNrIGZvciB3aW5kb3dzIHdlaXJkIHdheSBvZiBzcGVjaWZ5aW5nIGEgZGlyZWN0b3J5XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWF4b2dkZW4vZXh0cmFjdC16aXAvaXNzdWVzLzEzI2lzc3VlY29tbWVudC0xNTQ0OTQ1NjZcbiAgICAgIHx8IChlbnRyeS52ZXJzaW9uTWFkZUJ5ID4+IDggPT09IDAgJiYgZW50cnkuZXh0ZXJuYWxGaWxlQXR0cmlidXRlcyA9PT0gMTYpO1xuICAgIGNvbnN0IHByb2NNb2RlID0gdGhpcy5nZXRFeHRyYWN0ZWRNb2RlKG1vZGUsIGlzRGlyKSAmIDBvNzc3O1xuICAgIC8vIGFsd2F5cyBlbnN1cmUgZm9sZGVycyBhcmUgY3JlYXRlZFxuICAgIGNvbnN0IGRlc3REaXIgPSBpc0RpciA/IGRlc3QgOiBwYXRoLmRpcm5hbWUoZGVzdCk7XG4gICAgY29uc3QgbWtkaXJPcHRpb25zID0geyByZWN1cnNpdmU6IHRydWUgfTtcbiAgICBpZiAoaXNEaXIpIHtcbiAgICAgIG1rZGlyT3B0aW9ucy5tb2RlID0gcHJvY01vZGU7XG4gICAgfVxuICAgIGF3YWl0IGZzLm1rZGlyKGRlc3REaXIsIG1rZGlyT3B0aW9ucyk7XG4gICAgaWYgKGlzRGlyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVhZFN0cmVhbSA9IGF3YWl0IEIucHJvbWlzaWZ5KHRoaXMuemlwZmlsZS5vcGVuUmVhZFN0cmVhbS5iaW5kKHRoaXMuemlwZmlsZSkpKGVudHJ5KTtcbiAgICBpZiAoaXNTeW1saW5rKSB7XG4gICAgICBjb25zdCBsaW5rID0gYXdhaXQgZ2V0U3RyZWFtKHJlYWRTdHJlYW0pO1xuICAgICAgYXdhaXQgZnMuc3ltbGluayhsaW5rLCBkZXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgcGlwZWxpbmUocmVhZFN0cmVhbSwgZnMuY3JlYXRlV3JpdGVTdHJlYW0oZGVzdCwgeyBtb2RlOiBwcm9jTW9kZSB9KSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RXh0cmFjdGVkTW9kZSAoZW50cnlNb2RlLCBpc0Rpcikge1xuICAgIGNvbnN0IHtcbiAgICAgIGRlZmF1bHREaXJNb2RlLFxuICAgICAgZGVmYXVsdEZpbGVNb2RlLFxuICAgIH0gPSB0aGlzLm9wdHM7XG5cbiAgICBsZXQgbW9kZSA9IGVudHJ5TW9kZTtcbiAgICAvLyBTZXQgZGVmYXVsdHMsIGlmIG5lY2Vzc2FyeVxuICAgIGlmIChtb2RlID09PSAwKSB7XG4gICAgICBpZiAoaXNEaXIpIHtcbiAgICAgICAgaWYgKGRlZmF1bHREaXJNb2RlKSB7XG4gICAgICAgICAgbW9kZSA9IHBhcnNlSW50KGRlZmF1bHREaXJNb2RlLCAxMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICBtb2RlID0gMG83NTU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChkZWZhdWx0RmlsZU1vZGUpIHtcbiAgICAgICAgICBtb2RlID0gcGFyc2VJbnQoZGVmYXVsdEZpbGVNb2RlLCAxMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICBtb2RlID0gMG82NDQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbW9kZTtcbiAgfVxufVxuXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRXh0cmFjdEFsbE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmlsZU5hbWVzRW5jb2RpbmcgVGhlIGVuY29kaW5nIHRvIHVzZSBmb3IgZXh0cmFjdGVkIGZpbGUgbmFtZXMuXG4gKiBGb3IgWklQIGFyY2hpdmVzIGNyZWF0ZWQgb24gTWFjT1MgaXQgaXMgdXN1YWxseSBleHBlY3RlZCB0byBiZSBgdXRmOGAuXG4gKiBCeSBkZWZhdWx0IGl0IGlzIGF1dG9kZXRlY3RlZCBiYXNlZCBvbiB0aGUgZW50cnkgbWV0YWRhdGEgYW5kIGlzIG9ubHkgbmVlZGVkIHRvIGJlIHNldCBleHBsaWNpdGx5XG4gKiBpZiB0aGUgcGFydGljdWxhciBhcmNoaXZlIGRvZXMgbm90IGNvbXBseSB0byB0aGUgc3RhbmRhcmRzLCB3aGljaCBsZWFkcyB0byBjb3JydXB0ZWQgZmlsZSBuYW1lc1xuICogYWZ0ZXIgZXh0cmFjdGlvbi4gT25seSBhcHBsaWNhYmxlIGlmIHN5c3RlbSB1bnppcCBiaW5hcnkgaXMgTk9UIGJlaW5nIHVzZWQuXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSB1c2VTeXN0ZW1VbnppcCBbZmFsc2VdIElmIHRydWUsIGF0dGVtcHQgdG8gdXNlIHN5c3RlbSB1bnppcDsgaWYgdGhpcyBmYWlscyxcbiAqIGZhbGxiYWNrIHRvIHRoZSBKUyB1bnppcCBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuXG4vKipcbiAqIEV4dHJhY3QgemlwZmlsZSB0byBhIGRpcmVjdG9yeVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB6aXBGaWxlUGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSBzb3VyY2UgWklQIGZpbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBkZXN0RGlyIFRoZSBmdWxsIHBhdGggdG8gdGhlIGRlc3RpbmF0aW9uIGZvbGRlclxuICogQHBhcmFtIHs/RXh0cmFjdEFsbE9wdGlvbnN9IG9wdHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdEFsbFRvICh6aXBGaWxlUGF0aCwgZGVzdERpciwgb3B0cyA9IHt9KSB7XG4gIGlmICghcGF0aC5pc0Fic29sdXRlKGRlc3REaXIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUYXJnZXQgcGF0aCAnJHtkZXN0RGlyfScgaXMgZXhwZWN0ZWQgdG8gYmUgYWJzb2x1dGVgKTtcbiAgfVxuXG4gIGF3YWl0IGZzLm1rZGlyKGRlc3REaXIsIHtyZWN1cnNpdmU6IHRydWV9KTtcbiAgY29uc3QgZGlyID0gYXdhaXQgZnMucmVhbHBhdGgoZGVzdERpcik7XG4gIGlmIChvcHRzLnVzZVN5c3RlbVVuemlwKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV4dHJhY3RXaXRoU3lzdGVtVW56aXAoemlwRmlsZVBhdGgsIGRpcik7XG4gICAgICByZXR1cm47XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cud2FybihgdW56aXAgZmFpbGVkOyBmYWxsaW5nIGJhY2sgdG8gSlM6ICR7ZXJyLnN0ZGVyciB8fCBlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgZXh0cmFjdG9yID0gbmV3IFppcEV4dHJhY3Rvcih6aXBGaWxlUGF0aCwge1xuICAgIC4uLm9wdHMsXG4gICAgZGlyLFxuICB9KTtcbiAgYXdhaXQgZXh0cmFjdG9yLmV4dHJhY3QoKTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBzeXN0ZW0gdW56aXAgKGUuZy4sIGAvdXNyL2Jpbi91bnppcGApLiBJZiBhdmFpbGFibGUsIGl0IGlzXG4gKiBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIHRoZSBKUyBpbXBsZW1lbnRhdGlvbi5cbiAqIEJ5IGRlZmF1bHQgYWxsIGZpbGVzIGluIHRoZSBkZXN0RGlyIGdldCBvdmVycmlkZGVuIGlmIGFscmVhZHkgZXhpc3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHppcEZpbGVQYXRoIFRoZSBmdWxsIHBhdGggdG8gdGhlIHNvdXJjZSBaSVAgZmlsZVxuICogQHBhcmFtIHtzdHJpbmd9IGRlc3REaXIgVGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZm9sZGVyLlxuICogVGhpcyBmb2xkZXIgaXMgZXhwZWN0ZWQgdG8gYWxyZWFkeSBleGlzdCBiZWZvcmUgZXh0cmFjdGluZyB0aGUgYXJjaGl2ZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFdpdGhTeXN0ZW1VbnppcCAoemlwRmlsZVBhdGgsIGRlc3REaXIpIHtcbiAgY29uc3QgaXNXaW5kb3dzSG9zdCA9IGlzV2luZG93cygpO1xuICBsZXQgZXhlY3V0YWJsZVBhdGg7XG4gIHRyeSB7XG4gICAgZXhlY3V0YWJsZVBhdGggPSBhd2FpdCBnZXRFeGVjdXRhYmxlUGF0aChcbiAgICAgIGlzV2luZG93c0hvc3QgPyAncG93ZXJzaGVsbC5leGUnIDogJ3VuemlwJ1xuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHN5c3RlbSB1bnppcCcpO1xuICB9XG5cbiAgaWYgKGlzV2luZG93c0hvc3QpIHtcbiAgICAvLyBvbiBXaW5kb3dzIHdlIHVzZSBQb3dlclNoZWxsIHRvIHVuemlwIGZpbGVzXG4gICAgYXdhaXQgZXhlYyhleGVjdXRhYmxlUGF0aCwgW1xuICAgICAgJy1jb21tYW5kJywgJ0V4cGFuZC1BcmNoaXZlJyxcbiAgICAgICctTGl0ZXJhbFBhdGgnLCB6aXBGaWxlUGF0aCxcbiAgICAgICctRGVzdGluYXRpb25QYXRoJywgZGVzdERpcixcbiAgICAgICctRm9yY2UnXG4gICAgXSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gLXEgbWVhbnMgcXVpZXQgKG5vIHN0ZG91dClcbiAgICAvLyAtbyBtZWFucyBvdmVyd3JpdGVcbiAgICAvLyAtZCBpcyB0aGUgZGVzdCBkaXJcbiAgICBhd2FpdCBleGVjKGV4ZWN1dGFibGVQYXRoLCBbXG4gICAgICAnLXEnLFxuICAgICAgJy1vJywgemlwRmlsZVBhdGgsXG4gICAgICAnLWQnLCBkZXN0RGlyXG4gICAgXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBFeHRyYWN0IGEgc2luZ2xlIHppcCBlbnRyeSB0byBhIGRpcmVjdG9yeVxuICpcbiAqIEBwYXJhbSB7U3RyZWFtYWJsZX0gemlwRmlsZSBUaGUgc291cmNlIFpJUCBzdHJlYW1cbiAqIEBwYXJhbSB7eWF1emwuWmlwRW50cnl9IGVudHJ5IFRoZSBlbnRyeSBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IGRlc3REaXIgVGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZm9sZGVyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIF9leHRyYWN0RW50cnlUbyAoemlwRmlsZSwgZW50cnksIGRlc3REaXIpIHtcbiAgY29uc3QgZHN0UGF0aCA9IHBhdGgucmVzb2x2ZShkZXN0RGlyLCBlbnRyeS5maWxlTmFtZSk7XG5cbiAgLy8gQ3JlYXRlIGRlc3QgZGlyZWN0b3J5IGlmIGRvZXNuJ3QgZXhpc3QgYWxyZWFkeVxuICBpZiAoL1xcLyQvLnRlc3QoZW50cnkuZmlsZU5hbWUpKSB7XG4gICAgaWYgKCFhd2FpdCBmcy5leGlzdHMoZHN0UGF0aCkpIHtcbiAgICAgIGF3YWl0IG1rZGlycChkc3RQYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKCFhd2FpdCBmcy5leGlzdHMocGF0aC5kaXJuYW1lKGRzdFBhdGgpKSkge1xuICAgIGF3YWl0IG1rZGlycChwYXRoLmRpcm5hbWUoZHN0UGF0aCkpO1xuICB9XG5cbiAgLy8gQ3JlYXRlIGEgd3JpdGUgc3RyZWFtXG4gIGNvbnN0IHdyaXRlU3RyZWFtID0gY3JlYXRlV3JpdGVTdHJlYW0oZHN0UGF0aCwge2ZsYWdzOiAndyd9KTtcbiAgY29uc3Qgd3JpdGVTdHJlYW1Qcm9taXNlID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHdyaXRlU3RyZWFtLm9uY2UoJ2ZpbmlzaCcsIHJlc29sdmUpO1xuICAgIHdyaXRlU3RyZWFtLm9uY2UoJ2Vycm9yJywgcmVqZWN0KTtcbiAgfSk7XG5cbiAgLy8gQ3JlYXRlIHppcFJlYWRTdHJlYW0gYW5kIHBpcGUgZGF0YSB0byB0aGUgd3JpdGUgc3RyZWFtXG4gIC8vIChmb3Igc29tZSBvZGQgcmVhc29uIEIucHJvbWlzaWZ5IGRvZXNuJ3Qgd29yayBvbiB6aXBmaWxlLm9wZW5SZWFkU3RyZWFtLCBpdCBjYXVzZXMgYW4gZXJyb3IgJ2Nsb3NlZCcpXG4gIGNvbnN0IHppcFJlYWRTdHJlYW0gPSBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgemlwRmlsZS5vcGVuUmVhZFN0cmVhbShlbnRyeSwgKGVyciwgcmVhZFN0cmVhbSkgPT4gZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKHJlYWRTdHJlYW0pKTtcbiAgfSk7XG4gIGNvbnN0IHppcFJlYWRTdHJlYW1Qcm9taXNlID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHppcFJlYWRTdHJlYW0ub25jZSgnZW5kJywgcmVzb2x2ZSk7XG4gICAgemlwUmVhZFN0cmVhbS5vbmNlKCdlcnJvcicsIHJlamVjdCk7XG4gIH0pO1xuICB6aXBSZWFkU3RyZWFtLnBpcGUod3JpdGVTdHJlYW0pO1xuXG4gIC8vIFdhaXQgZm9yIHRoZSB6aXBSZWFkU3RyZWFtIGFuZCB3cml0ZVN0cmVhbSB0byBlbmQgYmVmb3JlIHJldHVybmluZ1xuICByZXR1cm4gYXdhaXQgQi5hbGwoW1xuICAgIHppcFJlYWRTdHJlYW1Qcm9taXNlLFxuICAgIHdyaXRlU3RyZWFtUHJvbWlzZSxcbiAgXSk7XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gWmlwRW50cnlcbiAqIEBwcm9wZXJ0eSB7eWF1emwuWmlwRW50cnl9IGVudHJ5IFRoZSBhY3R1YWwgZW50cnkgaW5zdGFuY2VcbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb259IGV4dHJhY3RFbnRyeVRvIEFuIGFzeW5jIGZ1bmN0aW9uLCB3aGljaCBhY2NlcHRzIG9uZSBwYXJhbWV0ZXIuXG4gKiBUaGlzIHBhcmFtZXRlciBjb250YWlucyB0aGUgZGVzdGluYXRpb24gZm9sZGVyIHBhdGggdG8gd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyBnb2luZyB0byBleHRyYWN0IHRoZSBlbnRyeS5cbiAqL1xuXG4vKipcbiAqIEdldCBlbnRyaWVzIGZvciBhIHppcCBmb2xkZXJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gemlwRmlsZVBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgc291cmNlIFpJUCBmaWxlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbkVudHJ5IENhbGxiYWNrIHdoZW4gZW50cnkgaXMgcmVhZC5cbiAqIFRoZSBjYWxsYmFjayBpcyBleHBlY3RlZCB0byBhY2NlcHQgb25lIGFyZ3VtZW50IG9mIFppcEVudHJ5IHR5cGUuXG4gKiBUaGUgaXRlcmF0aW9uIHRocm91Z2ggdGhlIHNvdXJjZSB6aXAgZmlsZSB3aWxsIGJpIHRlcm1pbmF0ZWQgYXMgc29vbiBhc1xuICogdGhlIHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9uIGVxdWFscyB0byBgZmFsc2VgLlxuICovXG5hc3luYyBmdW5jdGlvbiByZWFkRW50cmllcyAoemlwRmlsZVBhdGgsIG9uRW50cnkpIHtcbiAgLy8gT3BlbiBhIHppcCBmaWxlIGFuZCBzdGFydCByZWFkaW5nIGVudHJpZXNcbiAgY29uc3QgemlwZmlsZSA9IGF3YWl0IG9wZW5aaXAoemlwRmlsZVBhdGgsIHtsYXp5RW50cmllczogdHJ1ZX0pO1xuICBjb25zdCB6aXBSZWFkU3RyZWFtUHJvbWlzZSA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB6aXBmaWxlLm9uY2UoJ2VuZCcsIHJlc29sdmUpO1xuICAgIHppcGZpbGUub25jZSgnZXJyb3InLCByZWplY3QpO1xuXG4gICAgLy8gT24gZWFjaCBlbnRyeSwgY2FsbCAnb25FbnRyeScgYW5kIHRoZW4gcmVhZCB0aGUgbmV4dCBlbnRyeVxuICAgIHppcGZpbGUub24oJ2VudHJ5JywgYXN5bmMgKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBvbkVudHJ5KHtcbiAgICAgICAgZW50cnksXG4gICAgICAgIGV4dHJhY3RFbnRyeVRvOiBhc3luYyAoZGVzdERpcikgPT4gYXdhaXQgX2V4dHJhY3RFbnRyeVRvKHppcGZpbGUsIGVudHJ5LCBkZXN0RGlyKVxuICAgICAgfSk7XG4gICAgICBpZiAocmVzID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gemlwZmlsZS5lbWl0KCdlbmQnKTtcbiAgICAgIH1cbiAgICAgIHppcGZpbGUucmVhZEVudHJ5KCk7XG4gICAgfSk7XG4gIH0pO1xuICB6aXBmaWxlLnJlYWRFbnRyeSgpO1xuXG4gIC8vIFdhaXQgZm9yIHRoZSBlbnRyaWVzIHRvIGZpbmlzaCBiZWluZyBpdGVyYXRlZCB0aHJvdWdoXG4gIHJldHVybiBhd2FpdCB6aXBSZWFkU3RyZWFtUHJvbWlzZTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBaaXBPcHRpb25zXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGVuY29kZVRvQmFzZTY0IFtmYWxzZV0gV2hldGhlciB0byBlbmNvZGVcbiAqIHRoZSByZXN1bHRpbmcgYXJjaGl2ZSB0byBhIGJhc2U2NC1lbmNvZGVkIHN0cmluZ1xuICogQHByb3BlcnR5IHtib29sZWFufSBpc01ldGVyZWQgW3RydWVdIFdoZXRoZXIgdG8gbG9nIHRoZSBhY3R1YWxcbiAqIGFyY2hpdmVyIHBlcmZvcm1hbmNlXG4gKiBAcHJvcGVydHkge251bWJlcn0gbWF4U2l6ZSBbMTA3Mzc0MTgyNF0gVGhlIG1heGltdW0gc2l6ZSBvZlxuICogdGhlIHJlc3VsdGluZyBhcmNoaXZlIGluIGJ5dGVzLiBUaGlzIGlzIHNldCB0byAxR0IgYnkgZGVmYXVsdCwgYmVjYXVzZVxuICogQXBwaXVtIGxpbWl0cyB0aGUgbWF4aW11bSBIVFRQIGJvZHkgc2l6ZSB0byAxR0IuIEFsc28sIHRoZSBOb2RlSlMgaGVhcFxuICogc2l6ZSBtdXN0IGJlIGVub3VnaCB0byBrZWVwIHRoZSByZXN1bHRpbmcgb2JqZWN0ICh1c3VhbGx5IHRoaXMgc2l6ZSBpc1xuICogbGltaXRlZCB0byAxLjQgR0IpXG4gKiBAcHJvcGVydHkge251bWJlcn0gbGV2ZWwgWzldIFRoZSBjb21wcmVzc2lvbiBsZXZlbC4gVGhlIG1heGltdW1cbiAqIGxldmVsIGlzIDkgKHRoZSBiZXN0IGNvbXByZXNzaW9uLCB3b3JzdCBwZXJmb3JtYW5jZSkuIFRoZSBtaW5pbXVtXG4gKiBjb21wcmVzc2lvbiBsZXZlbCBpcyAwIChubyBjb21wcmVzc2lvbikuXG4gKi9cblxuLyoqXG4gKiBDb252ZXJ0cyBjb250ZW50cyBvZiBsb2NhbCBkaXJlY3RvcnkgdG8gYW4gaW4tbWVtb3J5IC56aXAgYnVmZmVyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHNyY1BhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgZm9sZGVyIG9yIGZpbGUgYmVpbmcgemlwcGVkXG4gKiBAcGFyYW0ge1ppcE9wdGlvbnN9IG9wdHMgWmlwcGluZyBvcHRpb25zXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBaaXBwZWQgKGFuZCBlbmNvZGVkIGlmIGBlbmNvZGVUb0Jhc2U2NGAgaXMgdHJ1dGh5KVxuICogY29udGVudCBvZiB0aGUgc291cmNlIHBhdGggYXMgbWVtb3J5IGJ1ZmZlclxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSByZWFkaW5nIHRoZSBzb3VyY2VcbiAqIG9yIHRoZSBzb3VyY2UgaXMgdG9vIGJpZ1xuICovXG5hc3luYyBmdW5jdGlvbiB0b0luTWVtb3J5WmlwIChzcmNQYXRoLCBvcHRzID0ge30pIHtcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMoc3JjUGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1Y2ggZmlsZSBvciBmb2xkZXI6ICR7c3JjUGF0aH1gKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpc01ldGVyZWQgPSB0cnVlLFxuICAgIGVuY29kZVRvQmFzZTY0ID0gZmFsc2UsXG4gICAgbWF4U2l6ZSA9IDEgKiBHaUIsXG4gICAgbGV2ZWwgPSA5LFxuICB9ID0gb3B0cztcbiAgY29uc3QgcmVzdWx0QnVmZmVycyA9IFtdO1xuICBsZXQgcmVzdWx0QnVmZmVyc1NpemUgPSAwO1xuICAvLyBDcmVhdGUgYSB3cml0YWJsZSBzdHJlYW0gdGhhdCB6aXAgYnVmZmVycyB3aWxsIGJlIHN0cmVhbWVkIHRvXG4gIGNvbnN0IHJlc3VsdFdyaXRlU3RyZWFtID0gbmV3IHN0cmVhbS5Xcml0YWJsZSh7XG4gICAgd3JpdGU6IChidWZmZXIsIGVuY29kaW5nLCBuZXh0KSA9PiB7XG4gICAgICByZXN1bHRCdWZmZXJzLnB1c2goYnVmZmVyKTtcbiAgICAgIHJlc3VsdEJ1ZmZlcnNTaXplICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBpZiAobWF4U2l6ZSA+IDAgJiYgcmVzdWx0QnVmZmVyc1NpemUgPiBtYXhTaXplKSB7XG4gICAgICAgIHJlc3VsdFdyaXRlU3RyZWFtLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKGBUaGUgc2l6ZSBvZiB0aGUgcmVzdWx0aW5nIGAgK1xuICAgICAgICAgIGBhcmNoaXZlIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiAke3RvUmVhZGFibGVTaXplU3RyaW5nKG1heFNpemUpfWApKTtcbiAgICAgIH1cbiAgICAgIG5leHQoKTtcbiAgICB9LFxuICB9KTtcblxuICAvLyBaaXAgJ3NyY0RpcicgYW5kIHN0cmVhbSBpdCB0byB0aGUgYWJvdmUgd3JpdGFibGUgc3RyZWFtXG4gIGNvbnN0IGFyY2hpdmUgPSBhcmNoaXZlcignemlwJywge1xuICAgIHpsaWI6IHtsZXZlbH1cbiAgfSk7XG4gIGxldCBzcmNTaXplID0gbnVsbDtcbiAgY29uc3QgYmFzZTY0RW5jb2RlclN0cmVhbSA9IGVuY29kZVRvQmFzZTY0ID8gbmV3IEJhc2U2NEVuY29kZSgpIDogbnVsbDtcbiAgY29uc3QgcmVzdWx0V3JpdGVTdHJlYW1Qcm9taXNlID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHJlc3VsdFdyaXRlU3RyZWFtLm9uY2UoJ2Vycm9yJywgKGUpID0+IHtcbiAgICAgIGlmIChiYXNlNjRFbmNvZGVyU3RyZWFtKSB7XG4gICAgICAgIGFyY2hpdmUudW5waXBlKGJhc2U2NEVuY29kZXJTdHJlYW0pO1xuICAgICAgICBiYXNlNjRFbmNvZGVyU3RyZWFtLnVucGlwZShyZXN1bHRXcml0ZVN0cmVhbSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcmNoaXZlLnVucGlwZShyZXN1bHRXcml0ZVN0cmVhbSk7XG4gICAgICB9XG4gICAgICBhcmNoaXZlLmFib3J0KCk7XG4gICAgICBhcmNoaXZlLmRlc3Ryb3koKTtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9KTtcbiAgICByZXN1bHRXcml0ZVN0cmVhbS5vbmNlKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICBzcmNTaXplID0gYXJjaGl2ZS5wb2ludGVyKCk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH0pO1xuICBjb25zdCBhcmNoaXZlU3RyZWFtUHJvbWlzZSA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBhcmNoaXZlLm9uY2UoJ2ZpbmlzaCcsIHJlc29sdmUpO1xuICAgIGFyY2hpdmUub25jZSgnZXJyb3InLCAoZSkgPT4gcmVqZWN0KFxuICAgICAgbmV3IEVycm9yKGBGYWlsZWQgdG8gYXJjaGl2ZSAnJHtzcmNQYXRofSc6ICR7ZS5tZXNzYWdlfWApKSk7XG4gIH0pO1xuICBjb25zdCB0aW1lciA9IGlzTWV0ZXJlZCA/IG5ldyBUaW1lcigpLnN0YXJ0KCkgOiBudWxsO1xuICBpZiAoKGF3YWl0IGZzLnN0YXQoc3JjUGF0aCkpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBhcmNoaXZlLmRpcmVjdG9yeShzcmNQYXRoLCBmYWxzZSk7XG4gIH0gZWxzZSB7XG4gICAgYXJjaGl2ZS5maWxlKHNyY1BhdGgsIHtcbiAgICAgIG5hbWU6IHBhdGguYmFzZW5hbWUoc3JjUGF0aCksXG4gICAgfSk7XG4gIH1cbiAgaWYgKGJhc2U2NEVuY29kZXJTdHJlYW0pIHtcbiAgICBhcmNoaXZlLnBpcGUoYmFzZTY0RW5jb2RlclN0cmVhbSk7XG4gICAgYmFzZTY0RW5jb2RlclN0cmVhbS5waXBlKHJlc3VsdFdyaXRlU3RyZWFtKTtcbiAgfSBlbHNlIHtcbiAgICBhcmNoaXZlLnBpcGUocmVzdWx0V3JpdGVTdHJlYW0pO1xuICB9XG4gIGFyY2hpdmUuZmluYWxpemUoKTtcblxuICAvLyBXYWl0IGZvciB0aGUgc3RyZWFtcyB0byBmaW5pc2hcbiAgYXdhaXQgQi5hbGwoW2FyY2hpdmVTdHJlYW1Qcm9taXNlLCByZXN1bHRXcml0ZVN0cmVhbVByb21pc2VdKTtcblxuICBpZiAodGltZXIpIHtcbiAgICBsb2cuZGVidWcoYFppcHBlZCAke2VuY29kZVRvQmFzZTY0ID8gJ2FuZCBiYXNlNjQtZW5jb2RlZCAnIDogJyd9YCArXG4gICAgICBgJyR7cGF0aC5iYXNlbmFtZShzcmNQYXRoKX0nIGAgK1xuICAgICAgKHNyY1NpemUgPyBgKCR7dG9SZWFkYWJsZVNpemVTdHJpbmcoc3JjU2l6ZSl9KSBgIDogJycpICtcbiAgICAgIGBpbiAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNTZWNvbmRzLnRvRml4ZWQoMyl9cyBgICtcbiAgICAgIGAoY29tcHJlc3Npb24gbGV2ZWw6ICR7bGV2ZWx9KWApO1xuICB9XG4gIC8vIFJldHVybiB0aGUgYXJyYXkgb2YgemlwIGJ1ZmZlcnMgY29uY2F0ZW5hdGVkIGludG8gb25lIGJ1ZmZlclxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChyZXN1bHRCdWZmZXJzKTtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyB3aGV0aGVyIHRoZSBnaXZlbiBmaWxlIGlzIGEgdmFsaWQgWklQIGFyY2hpdmVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZVBhdGggLSBGdWxsIHBhdGggdG8gdGhlIGZpbGVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgYSB2YWxpZCBaSVAgYXJjaGl2ZVxuICovXG5hc3luYyBmdW5jdGlvbiBhc3NlcnRWYWxpZFppcCAoZmlsZVBhdGgpIHtcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZmlsZSBhdCAnJHtmaWxlUGF0aH0nIGRvZXMgbm90IGV4aXN0YCk7XG4gIH1cblxuICBjb25zdCB7c2l6ZX0gPSBhd2FpdCBmcy5zdGF0KGZpbGVQYXRoKTtcbiAgaWYgKHNpemUgPCA0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZmlsZSBhdCAnJHtmaWxlUGF0aH0nIGlzIHRvbyBzbWFsbCB0byBiZSBhIFpJUCBhcmNoaXZlYCk7XG4gIH1cbiAgY29uc3QgZmQgPSBhd2FpdCBmcy5vcGVuKGZpbGVQYXRoLCAncicpO1xuICB0cnkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyhaSVBfTUFHSUMubGVuZ3RoKTtcbiAgICBhd2FpdCBmcy5yZWFkKGZkLCBidWZmZXIsIDAsIFpJUF9NQUdJQy5sZW5ndGgsIDApO1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGJ1ZmZlci50b1N0cmluZygnYXNjaWknKTtcbiAgICBpZiAoc2lnbmF0dXJlICE9PSBaSVBfTUFHSUMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGZpbGUgc2lnbmF0dXJlICcke3NpZ25hdHVyZX0nIG9mICcke2ZpbGVQYXRofScgYCArXG4gICAgICAgIGBpcyBub3QgZXF1YWwgdG8gdGhlIGV4cGVjdGVkIFpJUCBhcmNoaXZlIHNpZ25hdHVyZSAnJHtaSVBfTUFHSUN9J2ApO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5jbG9zZShmZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBaaXBDb21wcmVzc2lvbk9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsZXZlbCBbOV0gLSBDb21wcmVzc2lvbiBsZXZlbCBpbiByYW5nZSAwLi45XG4gKiAoZ3JlYXRlciBudW1iZXJzIG1lYW4gYmV0dGVyIGNvbXByZXNzaW9uLCBidXQgbG9uZ2VyIHByb2Nlc3NpbmcgdGltZSlcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFppcFNvdXJjZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gcGF0dGVybiBbJyoqXFwvKiddIC0gR0xPQiBwYXR0ZXJuIGZvciBjb21wcmVzc2lvblxuICogQHByb3BlcnR5IHshc3RyaW5nfSBjd2QgLSBUaGUgc291cmNlIHJvb3QgZm9sZGVyICh0aGUgcGFyZW50IGZvbGRlciBvZlxuICogdGhlIGRlc3RpbmF0aW9uIGZpbGUgYnkgZGVmYXVsdClcbiAqIEBwcm9wZXJ0eSB7P0FycmF5PHN0cmluZz59IGlnbm9yZSAtIFRoZSBsaXN0IG9mIGlnbm9yZWQgcGF0dGVybnNcbiAqL1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJjaGl2ZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gZ2xvYiBwYXR0ZXJuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGRzdFBhdGggLSBUaGUgcmVzdWx0aW5nIGFyY2hpdmUgcGF0aFxuICogQHBhcmFtIHtaaXBTb3VyY2VPcHRpb25zfSBzcmMgLSBTb3VyY2Ugb3B0aW9uc1xuICogQHBhcmFtIHtaaXBDb21wcmVzc2lvbk9wdGlvbnN9IG9wdHMgLSBDb21wcmVzc2lvbiBvcHRpb25zXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGNyZWF0aW5nIHRoZSBhcmNoaXZlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHRvQXJjaGl2ZSAoZHN0UGF0aCwgc3JjID0ge30sIG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgbGV2ZWwgPSA5LFxuICB9ID0gb3B0cztcbiAgY29uc3Qge1xuICAgIHBhdHRlcm4gPSAnKiovKicsXG4gICAgY3dkID0gcGF0aC5kaXJuYW1lKGRzdFBhdGgpLFxuICAgIGlnbm9yZSA9IFtdLFxuICB9ID0gc3JjO1xuICBjb25zdCBhcmNoaXZlID0gYXJjaGl2ZXIoJ3ppcCcsIHsgemxpYjogeyBsZXZlbCB9fSk7XG4gIGNvbnN0IHN0cmVhbSA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKGRzdFBhdGgpO1xuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGFyY2hpdmVcbiAgICAgIC5nbG9iKHBhdHRlcm4sIHtcbiAgICAgICAgY3dkLFxuICAgICAgICBpZ25vcmUsXG4gICAgICB9KVxuICAgICAgLm9uKCdlcnJvcicsIHJlamVjdClcbiAgICAgIC5waXBlKHN0cmVhbSk7XG4gICAgc3RyZWFtXG4gICAgICAub24oJ2Vycm9yJywgKGUpID0+IHtcbiAgICAgICAgYXJjaGl2ZS51bnBpcGUoc3RyZWFtKTtcbiAgICAgICAgYXJjaGl2ZS5hYm9ydCgpO1xuICAgICAgICBhcmNoaXZlLmRlc3Ryb3koKTtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfSlcbiAgICAgIC5vbignZmluaXNoJywgcmVzb2x2ZSk7XG4gICAgYXJjaGl2ZS5maW5hbGl6ZSgpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBGaW5kcyBhbmQgbWVtb2l6ZXMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZ2l2ZW4gZXhlY3V0YWJsZS5cbiAqIFJlamVjdHMgaWYgaXQgaXMgbm90IGZvdW5kLlxuICovXG5jb25zdCBnZXRFeGVjdXRhYmxlUGF0aCA9IF8ubWVtb2l6ZShcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtCPHN0cmluZz59IEZ1bGwgUGF0aCB0byB0aGUgZXhlY3V0YWJsZVxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0RXhlY3V0YWJsZVBhdGggKGJpbmFyeU5hbWUpIHtcbiAgICBjb25zdCBmdWxsUGF0aCA9IGF3YWl0IGZzLndoaWNoKGJpbmFyeU5hbWUpO1xuICAgIGxvZy5kZWJ1ZyhgRm91bmQgJHtiaW5hcnlOYW1lfSBhdCAnJHtmdWxsUGF0aH0nYCk7XG4gICAgcmV0dXJuIGZ1bGxQYXRoO1xuICB9XG4pO1xuXG5leHBvcnQge1xuICBleHRyYWN0QWxsVG8sIHJlYWRFbnRyaWVzLCB0b0luTWVtb3J5WmlwLCBfZXh0cmFjdEVudHJ5VG8sIGFzc2VydFZhbGlkWmlwLCB0b0FyY2hpdmVcbn07XG5leHBvcnQgZGVmYXVsdCB7IGV4dHJhY3RBbGxUbywgcmVhZEVudHJpZXMsIHRvSW5NZW1vcnlaaXAsIGFzc2VydFZhbGlkWmlwLCB0b0FyY2hpdmUgfTtcbiJdLCJmaWxlIjoibGliL3ppcC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9

@@ -129,13 +129,16 @@ import _ from 'lodash';

log.debug(`Initializing opencv`);
try {
cv = await requirePackage('opencv4nodejs');
} catch (err) {
log.warn(`Unable to load 'opencv4nodejs': ${err.message}`);
log.debug(`Initializing OpenCV`);
for (const pkgName of ['@u4/opencv4nodejs', 'opencv4nodejs']) {
try {
cv = await requirePackage(pkgName);
} catch (err) {
log.warn(`Unable to load '${pkgName}': ${err.message}`);
}
}
if (!cv) {
throw new Error(`'opencv4nodejs' module is required to use OpenCV features. ` +
`Please install it first ('npm i -g opencv4nodejs') and restart Appium. ` +
'Read https://github.com/justadudewhohacks/opencv4nodejs#how-to-install for more details on this topic.');
throw new Error(`'@u4/opencv4nodejs' module is required to use OpenCV features. ` +
`Please install it first and restart Appium. ` +
`Read https://github.com/appium/appium-plugins/pull/73#issuecomment-1013683074 and ` +
`https://github.com/UrielCh/opencv4nodejs#fork-changes for more details on this topic.`);
}

@@ -142,0 +145,0 @@ }

@@ -7,3 +7,3 @@ {

],
"version": "2.54.4",
"version": "2.55.0",
"author": "appium",

@@ -10,0 +10,0 @@ "license": "Apache-2.0",

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc