Socket
Socket
Sign inDemoInstall

@vonage/server-sdk

Package Overview
Dependencies
Maintainers
14
Versions
84
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@vonage/server-sdk - npm Package Compare versions

Comparing version 2.10.3 to 2.10.4

6

CHANGELOG.md

@@ -5,2 +5,8 @@ # Changelog

## 2.10.4
### Fixed
* #400 - Fix issue with host override
## 2.10.3

@@ -7,0 +13,0 @@

20

lib/HttpClient.js

@@ -16,7 +16,18 @@ "use strict";

var URL = require("url").URL;
var isValidUrl = s => {
try {
var o = new URL(s);
return o.host;
} catch (err) {
return false;
}
};
class HttpClient {
constructor(options, credentials) {
var hostProtocolRegex = /^((http|https):\/\/)(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,}))$/;
var hostOverride = isValidUrl(options.host);
this.credentials = credentials;
this.host = options.host ? hostProtocolRegex.test(options.host) ? options.host : "https://".concat(options.host) : "https://rest.nexmo.com";
this.host = hostOverride ? hostOverride : "rest.nexmo.com";
this.port = options.port || 443;

@@ -333,4 +344,5 @@ this.https = options.https || https;

var protocol = this.port === 443 ? "https://" : "http://";
this.requestLib.post({
url: "https://" + this.host + path,
url: protocol + this.host + path,
formData: formData,

@@ -413,2 +425,2 @@ headers: {

module.exports = exports.default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9IdHRwQ2xpZW50LmpzIl0sIm5hbWVzIjpbImh0dHBzIiwicmVxdWlyZSIsImh0dHAiLCJyZXF1ZXN0IiwicXVlcnlzdHJpbmciLCJIdHRwQ2xpZW50IiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiY3JlZGVudGlhbHMiLCJob3N0UHJvdG9jb2xSZWdleCIsImhvc3QiLCJ0ZXN0IiwicG9ydCIsImhlYWRlcnMiLCJBY2NlcHQiLCJsb2dnZXIiLCJ0aW1lb3V0IiwicmVxdWVzdExpYiIsInVzZXJBZ2VudCIsImVuZHBvaW50IiwibWV0aG9kIiwiY2FsbGJhY2siLCJza2lwSnNvblBhcnNpbmciLCJjdXN0b21SZXNwb25zZVBhcnNlciIsInBhdGgiLCJPYmplY3QiLCJhc3NpZ24iLCJ1bmRlZmluZWQiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInNpZ25hdHVyZVNlY3JldCIsInNpZ25hdHVyZU1ldGhvZCIsInNwbGl0UGF0aCIsInNwbGl0IiwicGFyYW1zIiwiZGVjb2RlIiwidGltZXN0YW1wIiwiRGF0ZSIsImdldFRpbWUiLCJ0b1N0cmluZyIsImFwaV9zZWNyZXQiLCJoYXNoIiwiZ2VuZXJhdGVTaWduYXR1cmUiLCJxdWVyeSIsInNvcnQiLCJlbmNvZGVVUkkiLCJyZXBsYWNlIiwiaW5mbyIsImJvZHkiLCJlbmQiLCJyZXNwb25zZURhdGEiLCJvbiIsInJlc3BvbnNlIiwiaXNCaW5hcnkiLCJzZXRFbmNvZGluZyIsImNodW5rIiwicHVzaCIsInN0YXR1c0NvZGUiLCJCdWZmZXIiLCJjb25jYXQiLCJfX3BhcnNlUmVzcG9uc2UiLCJlIiwiZXJyb3IiLCJodHRwUmVzcG9uc2UiLCJkYXRhIiwiaXNBcnJheU9yQnVmZmVyIiwiQXJyYXkiLCJFcnJvciIsInN0YXR1cyIsIm1lc3NhZ2UiLCJyZXRyeUFmdGVyTWlsbGlzIiwiam9pbiIsIkpTT04iLCJwYXJzZSIsInBhcnNlRXJyb3IiLCJfYWRkTGltaXRlZEFjY2Vzc01lc3NhZ2VUb0Vycm9ycyIsImxpbWl0ZWRBY2Nlc3NTdGF0dXMiLCJlcnIiLCJfSU5GT18iLCJnZXQiLCJ1c2VKd3QiLCJ1c2VCYXNpY0F1dGgiLCJhcGlLZXkiLCJhcGlTZWNyZXQiLCJzdHJpbmdpZnkiLCJnZW5lcmF0ZUp3dCIsImZyb20iLCJkZWxldGUiLCJwb3N0RmlsZSIsInFzIiwibGVuZ3RoIiwiam9pbkNoYXIiLCJpbmRleE9mIiwiZmlsZSIsImZvcm1EYXRhIiwidmFsdWUiLCJmaWxlbmFtZSIsInVybCIsInBvc3QiLCJBdXRob3JpemF0aW9uIiwicG9zdEpzb24iLCJwb3N0VXNlUXVlcnlTdHJpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFJQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxPQUFELENBQW5COztBQUNBLElBQUlDLElBQUksR0FBR0QsT0FBTyxDQUFDLE1BQUQsQ0FBbEI7O0FBQ0EsSUFBSUUsT0FBTyxHQUFHRixPQUFPLENBQUMsU0FBRCxDQUFyQjs7QUFDQSxJQUFJRyxXQUFXLEdBQUdILE9BQU8sQ0FBQyxhQUFELENBQXpCOztBQUVBLE1BQU1JLFVBQU4sQ0FBaUI7QUFDZkMsRUFBQUEsV0FBVyxDQUFDQyxPQUFELEVBQVVDLFdBQVYsRUFBdUI7QUFDaEMsUUFBTUMsaUJBQWlCLEdBQUcsc0tBQTFCO0FBRUEsU0FBS0QsV0FBTCxHQUFtQkEsV0FBbkI7QUFDQSxTQUFLRSxJQUFMLEdBQVlILE9BQU8sQ0FBQ0csSUFBUixHQUNSRCxpQkFBaUIsQ0FBQ0UsSUFBbEIsQ0FBdUJKLE9BQU8sQ0FBQ0csSUFBL0IsSUFDRUgsT0FBTyxDQUFDRyxJQURWLHFCQUVhSCxPQUFPLENBQUNHLElBRnJCLENBRFEsR0FJUix3QkFKSjtBQUtBLFNBQUtFLElBQUwsR0FBWUwsT0FBTyxDQUFDSyxJQUFSLElBQWdCLEdBQTVCO0FBQ0EsU0FBS1osS0FBTCxHQUFhTyxPQUFPLENBQUNQLEtBQVIsSUFBaUJBLEtBQTlCO0FBQ0EsU0FBS0UsSUFBTCxHQUFZSyxPQUFPLENBQUNMLElBQVIsSUFBZ0JBLElBQTVCO0FB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LE1BQU0sQ0FBQyxTQUFELENBQU4sR0FBb0IsS0FBSzNCLFdBQUwsQ0FBaUIyRSxNQUFyQztBQUNBaEQsTUFBQUEsTUFBTSxDQUFDLFlBQUQsQ0FBTixHQUF1QixLQUFLM0IsV0FBTCxDQUFpQjRFLFNBQXhDO0FBQ0Q7O0FBRUQ1RCxJQUFBQSxJQUFJLEdBQUdBLElBQUksR0FBRyxHQUFQLEdBQWFwQixXQUFXLENBQUNpRixTQUFaLENBQXNCbEQsTUFBdEIsQ0FBcEI7QUFFQSxTQUFLaEMsT0FBTCxDQUNFO0FBQ0VxQixNQUFBQSxJQUFJLEVBQUVBO0FBRFIsS0FERixFQUlFLE1BSkYsRUFLRUgsUUFMRjtBQU9EOztBQTNiYzs7ZUE4YkZoQixVIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGh0dHBzID0gcmVxdWlyZShcImh0dHBzXCIpO1xudmFyIGh0dHAgPSByZXF1aXJlKFwiaHR0cFwiKTtcbnZhciByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XG52YXIgcXVlcnlzdHJpbmcgPSByZXF1aXJlKFwicXVlcnlzdHJpbmdcIik7XG5cbmNsYXNzIEh0dHBDbGllbnQge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zLCBjcmVkZW50aWFscykge1xuICAgIGNvbnN0IGhvc3RQcm90b2NvbFJlZ2V4ID0gL14oKGh0dHB8aHR0cHMpOlxcL1xcLykoPzooPzpbYS16XFx1MDBhMS1cXHVmZmZmMC05XS0qKSpbYS16XFx1MDBhMS1cXHVmZmZmMC05XSspKD86XFwuKD86W2EtelxcdTAwYTEtXFx1ZmZmZjAtOV0tKikqW2EtelxcdTAwYTEtXFx1ZmZmZjAtOV0rKSooPzpcXC4oPzpbYS16XFx1MDBhMS1cXHVmZmZmXXsyLH0pKSQvO1xuXG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzO1xuICAgIHRoaXMuaG9zdCA9IG9wdGlvbnMuaG9zdFxuICAgICAgPyBob3N0UHJvdG9jb2xSZWdleC50ZXN0KG9wdGlvbnMuaG9zdClcbiAgICAgICAgPyBvcHRpb25zLmhvc3RcbiAgICAgICAgOiBgaHR0cHM6Ly8ke29wdGlvbnMuaG9zdH1gXG4gICAgICA6IFwiaHR0cHM6Ly9yZXN0Lm5leG1vLmNvbVwiO1xuICAgIHRoaXMucG9ydCA9IG9wdGlvbnMucG9ydCB8fCA0NDM7XG4gICAgdGhpcy5odHRwcyA9IG9wdGlvbnMuaHR0cHMgfHwgaHR0cHM7XG4gICAgdGhpcy5odHRwID0gb3B0aW9ucy5odHRwIHx8IGh0dHA7XG4gICAgdGhpcy5oZWFkZXJzID0ge1xuICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIixcbiAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICB9O1xuICAgIHRoaXMubG9nZ2VyID0gb3B0aW9ucy5sb2dnZXI7XG4gICAgdGhpcy50aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0O1xuICAgIHRoaXMucmVxdWVzdExpYiA9IHJlcXVlc3Q7XG5cbiAgICBpZiAob3B0aW9ucy51c2VyQWdlbnQpIHtcbiAgICAgIHRoaXMuaGVhZGVyc1tcIlVzZXItQWdlbnRcIl0gPSBvcHRpb25zLnVzZXJBZ2VudDtcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0KFxuICAgIGVuZHBvaW50LFxuICAgIG1ldGhvZCxcbiAgICBjYWxsYmFjayxcbiAgICBza2lwSnNvblBhcnNpbmcgPSBmYWxzZSxcbiAgICBjdXN0b21SZXNwb25zZVBhcnNlclxuICApIHtcbiAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBjYWxsYmFjayA9IG1ldGhvZDtcbiAgICAgIGVuZHBvaW50Lm1ldGhvZCA9IGVuZHBvaW50Lm1ldGhvZCB8fCBcIkdFVFwiO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG1ldGhvZCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgZW5kcG9pbnQubWV0aG9kID0gbWV0aG9kO1xuICAgIH1cblxuICAgIGlmIChlbmRwb2ludC5tZXRob2QgPT09IFwiUE9TVFwiIHx8IGVuZHBvaW50Lm1ldGhvZCA9PT0gXCJERUxFVEVcIikge1xuICAgICAgLy8gVE9ETzogdmVyaWZ5IHRoZSBmb2xsb3dpbmcgZml4IGlzIHJlcXVpcmVkXG4gICAgICAvLyBGaXggYnJva2VuIGR1ZSBvdCA0MTEgQ29udGVudC1MZW5ndGggZXJyb3Igbm93IHNlbnQgYnkgVm9uYWdlIEFQSVxuICAgICAgLy8gUEwgMjAxNi1TZXB0LTYgLSBjb21tZW50ZWQgb3V0IENvbnRlbnQtTGVuZ3RoIDBcbiAgICAgIC8vIGhlYWRlcnNbJ0NvbnRlbnQtTGVuZ3RoJ10gPSAwO1xuICAgIH1cbiAgICB2YXIgb3B0aW9ucyA9IHtcbiAgICAgIGhvc3Q6IGVuZHBvaW50Lmhvc3QgPyBlbmRwb2ludC5ob3N0IDogdGhpcy5ob3N0LFxuICAgICAgcG9ydDogdGhpcy5wb3J0LFxuICAgICAgcGF0aDogZW5kcG9pbnQucGF0aCxcbiAgICAgIG1ldGhvZDogZW5kcG9pbnQubWV0aG9kLFxuICAgICAgaGVhZGVyczogT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5oZWFkZXJzKVxuICAgIH07XG5cbiAgICBpZiAodGhpcy50aW1lb3V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9wdGlvbnMudGltZW91dCA9IHRoaXMudGltZW91dDtcbiAgICB9XG5cbiAgICAvLyBBbGxvdyBleGlzdGluZyBoZWFkZXJzIHRvIGJlIG92ZXJyaWRkZW5cbiAgICAvLyBBbGxvdyBuZXcgaGVhZGVycyB0byBiZSBhZGRlZFxuICAgIGlmIChlbmRwb2ludC5oZWFkZXJzKSB7XG4gICAgICBPYmplY3Qua2V5cyhlbmRwb2ludC5oZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNba2V5XSA9IGVuZHBvaW50LmhlYWRlcnNba2V5XTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNyZWRlbnRpYWxzLnNpZ25hdHVyZVNlY3JldCAmJiB0aGlzLmNyZWRlbnRpYWxzLnNpZ25hdHVyZU1ldGhvZCkge1xuICAgICAgY29uc3Qgc3BsaXRQYXRoID0gb3B0aW9ucy5wYXRoLnNwbGl0KC9cXD8oLispLyk7XG4gICAgICBjb25zdCBwYXRoID0gc3BsaXRQYXRoWzBdO1xuXG4gICAgICB2YXIgcGFyYW1zID0gcXVlcnlzdHJpbmcuZGVjb2RlKHNwbGl0UGF0aFsxXSk7XG5cbiAgICAgIC8vIGFkZCB0aW1lc3RhbXAgaWYgbm90IGFscmVhZHkgcHJlc2VudFxuICAgICAgaWYgKCFwYXJhbXMudGltZXN0YW1wKSB7XG4gICAgICAgIHBhcmFtcy50aW1lc3RhbXAgPSAobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSB8IDA7IC8vIGZsb29yIHRvIHNlY29uZHNcbiAgICAgICAgcGFyYW1zLnRpbWVzdGFtcCA9IHBhcmFtcy50aW1lc3RhbXAudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgLy8gc3RyaXAgQVBJIFNlY3JldFxuICAgICAgZGVsZXRlIHBhcmFtcy5hcGlfc2VjcmV0O1xuXG4gICAgICBjb25zdCBoYXNoID0gdGhpcy5jcmVkZW50aWFscy5nZW5lcmF0ZVNpZ25hdHVyZShwYXJhbXMpO1xuXG4gICAgICB2YXIgcXVlcnkgPSBcIlwiO1xuXG4gICAgICAvLyByZWJ1aWxkIHF1ZXJ5XG4gICAgICBPYmplY3Qua2V5cyhwYXJhbXMpXG4gICAgICAgIC5zb3J0KClcbiAgICAgICAgLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICBxdWVyeSArPSBcIiZcIiArIGtleSArIFwiPVwiICsgZW5jb2RlVVJJKHBhcmFtc1trZXldKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIC8vIHJlcGxhY2UgdGhlIGZpcnN0ICYgd2l0aCA/XG4gICAgICBxdWVyeSA9IHF1ZXJ5LnJlcGxhY2UoLyYvaSwgXCI/XCIpO1xuXG4gICAgICBvcHRpb25zLnBhdGggPSBgJHtwYXRofSR7cXVlcnl9JnNpZz0ke2hhc2h9YDtcbiAgICB9XG5cbiAgICB0aGlzLmxvZ2dlci5pbmZvKFwiUmVxdWVzdDpcIiwgb3B0aW9ucywgXCJcXG5Cb2R5OlwiLCBlbmRwb2ludC5ib2R5KTtcbiAgICB2YXIgcmVxdWVzdDtcblxuICAgIGlmIChvcHRpb25zLnBvcnQgPT09IDQ0Mykge1xuICAgICAgcmVxdWVzdCA9IHRoaXMuaHR0cHMucmVxdWVzdChvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdCA9IHRoaXMuaHR0cC5yZXF1ZXN0KG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJlcXVlc3QuZW5kKGVuZHBvaW50LmJvZHkpO1xuXG4gICAgLy8gS2VlcCBhbiBhcnJheSBvZiBTdHJpbmcgb3IgQnVmZmVycyxcbiAgICAvLyBkZXBlbmRpbmcgb24gY29udGVudCB0eXBlIChiaW5hcnkgb3IgSlNPTikgb2YgcmVzcG9uc2VcbiAgICB2YXIgcmVzcG9uc2VEYXRhID0gW107XG5cbiAgICByZXF1ZXN0Lm9uKFwicmVzcG9uc2VcIiwgcmVzcG9uc2UgPT4ge1xuICAgICAgdmFyIGlzQmluYXJ5ID1cbiAgICAgICAgcmVzcG9uc2UuaGVhZGVyc1tcImNvbnRlbnQtdHlwZVwiXSA9PT0gXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjtcbiAgICAgIGlmICghaXNCaW5hcnkpIHtcbiAgICAgICAgcmVzcG9uc2Uuc2V0RW5jb2RpbmcoXCJ1dGY4XCIpO1xuICAgICAgfVxuXG4gICAgICByZXNwb25zZS5vbihcImRhdGFcIiwgY2h1bmsgPT4ge1xuICAgICAgICByZXNwb25zZURhdGEucHVzaChjaHVuayk7XG4gICAgICB9KTtcblxuICAgICAgcmVzcG9uc2Uub24oXCJlbmRcIiwgKCkgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFwicmVzcG9uc2UgZW5kZWQ6XCIsIHJlc3BvbnNlLnN0YXR1c0NvZGUpO1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBpZiAoaXNCaW5hcnkpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlRGF0YSA9IEJ1ZmZlci5jb25jYXQocmVzcG9uc2VEYXRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9fcGFyc2VSZXNwb25zZShcbiAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgcmVzcG9uc2VEYXRhLFxuICAgICAgICAgICAgZW5kcG9pbnQubWV0aG9kLFxuICAgICAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgICAgICBza2lwSnNvblBhcnNpbmcsXG4gICAgICAgICAgICBjdXN0b21SZXNwb25zZVBhcnNlclxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmVzcG9uc2Uub24oXCJjbG9zZVwiLCBlID0+IHtcbiAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgIFwicHJvYmxlbSB3aXRoIEFQSSByZXF1ZXN0IGRldGFpbGVkIHN0YWNrdHJhY2UgYmVsb3cgXCJcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGUpO1xuICAgICAgICAgIGNhbGxiYWNrKGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXF1ZXN0Lm9uKFwiZXJyb3JcIiwgZSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcInByb2JsZW0gd2l0aCBBUEkgcmVxdWVzdCBkZXRhaWxlZCBzdGFja3RyYWNlIGJlbG93IFwiKTtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGUpO1xuICAgICAgY2FsbGJhY2soZSk7XG4gICAgfSk7XG4gIH1cblxuICBfX3BhcnNlUmVzcG9uc2UoXG4gICAgaHR0cFJlc3BvbnNlLFxuICAgIGRhdGEsXG4gICAgbWV0aG9kLFxuICAgIGNhbGxiYWNrLFxuICAgIHNraXBKc29uUGFyc2luZyxcbiAgICBjdXN0b21SZXNwb25zZVBhcnNlclxuICApIHtcbiAgICBjb25zdCBpc0FycmF5T3JCdWZmZXIgPSBkYXRhIGluc3RhbmNlb2YgQXJyYXkgfHwgZGF0YSBpbnN0YW5jZW9mIEJ1ZmZlcjtcbiAgICBpZiAoIWlzQXJyYXlPckJ1ZmZlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZGF0YSBzaG91bGQgYmUgb2YgdHlwZSBBcnJheSBvciBCdWZmZXJcIik7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzID0gaHR0cFJlc3BvbnNlLnN0YXR1c0NvZGU7XG4gICAgY29uc3QgaGVhZGVycyA9IGh0dHBSZXNwb25zZS5oZWFkZXJzO1xuXG4gICAgbGV0IHJlc3BvbnNlID0gbnVsbDtcbiAgICB2YXIgZXJyb3IgPSBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChzdGF0dXMgPj0gNTAwKSB7XG4gICAgICAgIGVycm9yID0ge1xuICAgICAgICAgIG1lc3NhZ2U6IFwiU2VydmVyIEVycm9yXCIsXG4gICAgICAgICAgc3RhdHVzQ29kZTogc3RhdHVzXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBodHRwUmVzcG9uc2UuaGVhZGVyc1tcImNvbnRlbnQtdHlwZVwiXSA9PT0gXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIlxuICAgICAgKSB7XG4gICAgICAgIHJlc3BvbnNlID0gZGF0YTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSA0MjkpIHtcbiAgICAgICAgLy8gNDI5IGRvZXMgbm90IHJldHVybiBhIHBhcnNhYmxlIGJvZHlcbiAgICAgICAgaWYgKCFoZWFkZXJzW1wicmV0cnktYWZ0ZXJcIl0pIHtcbiAgICAgICAgICAvLyByZXRyeSBiYXNlZCBvbiBhbGxvd2VkIHBlciBzZWNvbmRcbiAgICAgICAgICBjb25zdCByZXRyeUFmdGVyTWlsbGlzID0gbWV0aG9kID09PSBcIlBPU1RcIiA/IDEwMDAgLyAyIDogMTAwMCAvIDU7XG4gICAgICAgICAgaGVhZGVyc1tcInJldHJ5LWFmdGVyXCJdID0gcmV0cnlBZnRlck1pbGxpcztcbiAgICAgICAgfVxuICAgICAgICBlcnJvciA9IHtcbiAgICAgICAgICBib2R5OiBkYXRhLmpvaW4oXCJcIilcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSAyMDQpIHtcbiAgICAgICAgcmVzcG9uc2UgPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPj0gNDAwIHx8IHN0YXR1cyA8IDIwMCkge1xuICAgICAgICBlcnJvciA9IHtcbiAgICAgICAgICBib2R5OiBKU09OLnBhcnNlKGRhdGEuam9pbihcIlwiKSksXG4gICAgICAgICAgaGVhZGVyc1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChtZXRob2QgIT09IFwiREVMRVRFXCIpIHtcbiAgICAgICAgaWYgKCEhc2tpcEpzb25QYXJzaW5nKSB7XG4gICAgICAgICAgcmVzcG9uc2UgPSBkYXRhLmpvaW4oXCJcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzcG9uc2UgPSBKU09OLnBhcnNlKGRhdGEuam9pbihcIlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3BvbnNlID0gZGF0YTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihwYXJzZUVycm9yKTtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICBcImNvdWxkIG5vdCBjb252ZXJ0IEFQSSByZXNwb25zZSB0byBKU09OLCBhYm92ZSBlcnJvciBpcyBpZ25vcmVkIGFuZCByYXcgQVBJIHJlc3BvbnNlIGlzIHJldHVybmVkIHRvIGNsaWVudFwiXG4gICAgICApO1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXCJSYXcgRXJyb3IgbWVzc2FnZSBmcm9tIEFQSSBcIik7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihgXCIke2RhdGF9XCJgKTtcblxuICAgICAgZXJyb3IgPSB7XG4gICAgICAgIHN0YXR1czogc3RhdHVzLFxuICAgICAgICBtZXNzYWdlOiBcIlRoZSBBUEkgcmVzcG9uc2UgY291bGQgbm90IGJlIHBhcnNlZC5cIixcbiAgICAgICAgYm9keTogZGF0YS5qb2luKFwiXCIpLFxuICAgICAgICBwYXJzZUVycm9yOiBwYXJzZUVycm9yXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChlcnJvcikge1xuICAgICAgZXJyb3Iuc3RhdHVzQ29kZSA9IHN0YXR1cztcbiAgICAgIGVycm9yLmhlYWRlcnMgPSBoZWFkZXJzO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgaWYgKHR5cGVvZiBjdXN0b21SZXNwb25zZVBhcnNlciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIC8vIGRvbid0IHRyeSB0byBwYXJzZSB0aGUgcmVzcG9uc2Ugb24gZXJyb3JzXG4gICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgIHJlc3BvbnNlID0gY3VzdG9tUmVzcG9uc2VQYXJzZXIocmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjYWxsYmFjayhlcnJvciwgcmVzcG9uc2UpO1xuICAgIH1cbiAgfVxuXG4gIF9hZGRMaW1pdGVkQWNjZXNzTWVzc2FnZVRvRXJyb3JzKGNhbGxiYWNrLCBsaW1pdGVkQWNjZXNzU3RhdHVzKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGVyciwgZGF0YSkge1xuICAgICAgaWYgKGVyciAmJiBlcnIuc3RhdHVzID09IGxpbWl0ZWRBY2Nlc3NTdGF0dXMpIHtcbiAgICAgICAgZXJyLl9JTkZPXyA9XG4gICAgICAgICAgXCJUaGlzIGVuZHBvaW50IG1heSBuZWVkIGFjdGl2YXRpbmcgb24geW91ciBhY2NvdW50LiBQbGVhc2UgZW1haWwgc3VwcG9ydEBuZXhtby5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb25cIjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhbGxiYWNrKGVyciwgZGF0YSk7XG4gICAgfTtcbiAgfVxuXG4gIGdldChwYXRoLCBwYXJhbXMsIGNhbGxiYWNrLCB1c2VKd3QgPSBmYWxzZSwgdXNlQmFzaWNBdXRoID0gZmFsc2UpIHtcbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICBpZiAodHlwZW9mIHBhcmFtcyA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgY2FsbGJhY2sgPSBwYXJhbXM7XG4gICAgICAgIHBhcmFtcyA9IHt9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgICBpZiAoIXVzZUp3dCAmJiAhdXNlQmFzaWNBdXRoKSB7XG4gICAgICBwYXJhbXNbXCJhcGlfa2V5XCJdID0gdGhpcy5jcmVkZW50aWFscy5hcGlLZXk7XG4gICAgICBwYXJhbXNbXCJhcGlfc2VjcmV0XCJdID0gdGhpcy5jcmVkZW50aWFscy5hcGlTZWNyZXQ7XG4gICAgfVxuXG4gICAgcGF0aCA9IHBhdGggKyBcIj9cIiArIHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShwYXJhbXMpO1xuXG4gICAgY29uc3QgaGVhZGVycyA9IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgfTtcbiAgICBpZiAodXNlSnd0KSB7XG4gICAgICBoZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBCZWFyZXIgJHt0aGlzLmNyZWRlbnRpYWxzLmdlbmVyYXRlSnd0KCl9YDtcbiAgICB9XG4gICAgaWYgKHVzZUJhc2ljQXV0aCkge1xuICAgICAgaGVhZGVyc1tcIkF1dGhvcml6YXRpb25cIl0gPSBgQmFzaWMgJHtCdWZmZXIuZnJvbShcbiAgICAgICAgdGhpcy5jcmVkZW50aWFscy5hcGlLZXkgKyBcIjpcIiArIHRoaXMuY3JlZGVudGlhbHMuYXBpU2VjcmV0XG4gICAgICApLnRvU3RyaW5nKFwiYmFzZTY0XCIpfWA7XG4gICAgfVxuXG4gICAgdGhpcy5yZXF1ZXN0KFxuICAgICAge1xuICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICBoZWFkZXJzXG4gICAgICB9LFxuICAgICAgXCJHRVRcIixcbiAgICAgIGNhbGxiYWNrXG4gICAgKTtcbiAgfVxuXG4gIGRlbGV0ZShwYXRoLCBjYWxsYmFjaywgdXNlSnd0LCB1c2VCYXNpY0F1dGgpIHtcbiAgICBsZXQgcGFyYW1zID0ge307XG4gICAgaWYgKCF1c2VKd3QgJiYgIXVzZUJhc2ljQXV0aCkge1xuICAgICAgcGFyYW1zW1wiYXBpX2tleVwiXSA9IHRoaXMuY3JlZGVudGlhbHMuYXBpS2V5O1xuICAgICAgcGFyYW1zW1wiYXBpX3NlY3JldFwiXSA9IHRoaXMuY3JlZGVudGlhbHMuYXBpU2VjcmV0O1xuICAgIH1cblxuICAgIGxldCBoZWFkZXJzID0ge307XG5cbiAgICBpZiAodXNlQmFzaWNBdXRoKSB7XG4gICAgICBoZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBCYXNpYyAke0J1ZmZlci5mcm9tKFxuICAgICAgICB0aGlzLmNyZWRlbnRpYWxzLmFwaUtleSArIFwiOlwiICsgdGhpcy5jcmVkZW50aWFscy5hcGlTZWNyZXRcbiAgICAgICkudG9TdHJpbmcoXCJiYXNlNjRcIil9YDtcbiAgICB9XG4gICAgcGF0aCA9IHBhdGggKyBcIj9cIiArIHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShwYXJhbXMpO1xuXG4gICAgdGhpcy5yZXF1ZXN0KFxuICAgICAge1xuICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICBoZWFkZXJzXG4gICAgICB9LFxuICAgICAgXCJERUxFVEVcIixcbiAgICAgIGNhbGxiYWNrXG4gICAgKTtcbiAgfVxuXG4gIHBvc3RGaWxlKHBhdGgsIG9wdGlvbnMsIGNhbGxiYWNrLCB1c2VKd3QpIHtcbiAgICBsZXQgcXMgPSB7fTtcbiAgICBpZiAoIXVzZUp3dCkge1xuICAgICAgcXNbXCJhcGlfa2V5XCJdID0gdGhpcy5jcmVkZW50aWFscy5hcGlLZXk7XG4gICAgICBxc1tcImFwaV9zZWNyZXRcIl0gPSB0aGlzLmNyZWRlbnRpYWxzLmFwaVNlY3JldDtcbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LmtleXMocXMpLmxlbmd0aCkge1xuICAgICAgbGV0IGpvaW5DaGFyID0gXCI/XCI7XG4gICAgICBpZiAocGF0aC5pbmRleE9mKGpvaW5DaGFyKSAhPT0gLTEpIHtcbiAgICAgICAgam9pbkNoYXIgPSBcIiZcIjtcbiAgICAgIH1cbiAgICAgIHBhdGggPSBwYXRoICsgam9pbkNoYXIgKyBxdWVyeXN0cmluZy5zdHJpbmdpZnkocXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGUgPSBvcHRpb25zLmZpbGU7XG4gICAgZGVsZXRlIG9wdGlvbnMuZmlsZTsgLy8gV2UgZG9uJ3Qgc2VuZCB0aGlzIGFzIG1ldGFkYXRhXG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IHt9O1xuXG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIGZvcm1EYXRhW1wiZmlsZWRhdGFcIl0gPSB7XG4gICAgICAgIHZhbHVlOiBmaWxlLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgZmlsZW5hbWU6IG9wdGlvbnMuZmlsZW5hbWUgfHwgbnVsbFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmluZm8pIHtcbiAgICAgIGZvcm1EYXRhLmluZm8gPSBKU09OLnN0cmluZ2lmeShvcHRpb25zLmluZm8pO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnVybCkge1xuICAgICAgZm9ybURhdGEudXJsID0gb3B0aW9ucy51cmw7XG4gICAgfVxuXG4gICAgdGhpcy5yZXF1ZXN0TGliLnBvc3QoXG4gICAgICB7XG4gICAgICAgIHVybDogXCJodHRwczovL1wiICsgdGhpcy5ob3N0ICsgcGF0aCxcbiAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuY3JlZGVudGlhbHMuZ2VuZXJhdGVKd3QoKX1gXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjYWxsYmFja1xuICAgICk7XG4gIH1cblxuICBwb3N0KHBhdGgsIHBhcmFtcywgY2FsbGJhY2ssIHVzZUp3dCkge1xuICAgIGxldCBxcyA9IHt9O1xuICAgIGlmICghdXNlSnd0KSB7XG4gICAgICBxc1tcImFwaV9rZXlcIl0gPSB0aGlzLmNyZWRlbnRpYWxzLmFwaUtleTtcbiAgICAgIHFzW1wiYXBpX3NlY3JldFwiXSA9IHRoaXMuY3JlZGVudGlhbHMuYXBpU2VjcmV0O1xuICAgIH1cblxuICAgIGxldCBqb2luQ2hhciA9IFwiP1wiO1xuICAgIGlmIChwYXRoLmluZGV4T2Yoam9pbkNoYXIpICE9PSAtMSkge1xuICAgICAgam9pbkNoYXIgPSBcIiZcIjtcbiAgICB9XG5cbiAgICBwYXRoID0gcGF0aCArIGpvaW5DaGFyICsgcXVlcnlzdHJpbmcuc3RyaW5naWZ5KHFzKTtcblxuICAgIHRoaXMucmVxdWVzdChcbiAgICAgIHtcbiAgICAgICAgcGF0aDogcGF0aCxcbiAgICAgICAgYm9keTogcXVlcnlzdHJpbmcuc3RyaW5naWZ5KHBhcmFtcylcbiAgICAgIH0sXG4gICAgICBcIlBPU1RcIixcbiAgICAgIGNhbGxiYWNrXG4gICAgKTtcbiAgfVxuXG4gIHBvc3RKc29uKHBhdGgsIHBhcmFtcywgY2FsbGJhY2ssIHVzZUp3dCwgdXNlQmFzaWNBdXRoKSB7XG4gICAgbGV0IHFzID0ge307XG4gICAgaWYgKCF1c2VKd3QgJiYgIXVzZUJhc2ljQXV0aCkge1xuICAgICAgcXNbXCJhcGlfa2V5XCJdID0gdGhpcy5jcmVkZW50aWFscy5hcGlLZXk7XG4gICAgICBxc1tcImFwaV9zZWNyZXRcIl0gPSB0aGlzLmNyZWRlbnRpYWxzLmFwaVNlY3JldDtcbiAgICB9XG5cbiAgICBsZXQgam9pbkNoYXIgPSBcIj9cIjtcbiAgICBpZiAocGF0aC5pbmRleE9mKGpvaW5DaGFyKSAhPT0gLTEpIHtcbiAgICAgIGpvaW5DaGFyID0gXCImXCI7XG4gICAgfVxuXG4gICAgcGF0aCA9IHBhdGggKyBqb2luQ2hhciArIHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShxcyk7XG5cbiAgICBsZXQgaGVhZGVycyA9IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgfTtcbiAgICBpZiAodXNlQmFzaWNBdXRoKSB7XG4gICAgICBoZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBCYXNpYyAke0J1ZmZlci5mcm9tKFxuICAgICAgICB0aGlzLmNyZWRlbnRpYWxzLmFwaUtleSArIFwiOlwiICsgdGhpcy5jcmVkZW50aWFscy5hcGlTZWNyZXRcbiAgICAgICkudG9TdHJpbmcoXCJiYXNlNjRcIil9YDtcbiAgICB9XG5cbiAgICB0aGlzLnJlcXVlc3QoXG4gICAgICB7XG4gICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHBhcmFtcyksXG4gICAgICAgIGhlYWRlcnNcbiAgICAgIH0sXG4gICAgICBcIlBPU1RcIixcbiAgICAgIGNhbGxiYWNrXG4gICAgKTtcbiAgfVxuXG4gIHBvc3RVc2VRdWVyeVN0cmluZyhwYXRoLCBwYXJhbXMsIGNhbGxiYWNrLCB1c2VKd3QpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gICAgaWYgKCF1c2VKd3QpIHtcbiAgICAgIHBhcmFtc1tcImFwaV9rZXlcIl0gPSB0aGlzLmNyZWRlbnRpYWxzLmFwaUtleTtcbiAgICAgIHBhcmFtc1tcImFwaV9zZWNyZXRcIl0gPSB0aGlzLmNyZWRlbnRpYWxzLmFwaVNlY3JldDtcbiAgICB9XG5cbiAgICBwYXRoID0gcGF0aCArIFwiP1wiICsgcXVlcnlzdHJpbmcuc3RyaW5naWZ5KHBhcmFtcyk7XG5cbiAgICB0aGlzLnJlcXVlc3QoXG4gICAgICB7XG4gICAgICAgIHBhdGg6IHBhdGhcbiAgICAgIH0sXG4gICAgICBcIlBPU1RcIixcbiAgICAgIGNhbGxiYWNrXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBIdHRwQ2xpZW50O1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9IdHRwQ2xpZW50LmpzIl0sIm5hbWVzIjpbImh0dHBzIiwicmVxdWlyZSIsImh0dHAiLCJyZXF1ZXN0IiwicXVlcnlzdHJpbmciLCJVUkwiLCJpc1ZhbGlkVXJsIiwicyIsIm8iLCJob3N0IiwiZXJyIiwiSHR0cENsaWVudCIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImNyZWRlbnRpYWxzIiwiaG9zdE92ZXJyaWRlIiwicG9ydCIsImhlYWRlcnMiLCJBY2NlcHQiLCJsb2dnZXIiLCJ0aW1lb3V0IiwicmVxdWVzdExpYiIsInVzZXJBZ2VudCIsImVuZHBvaW50IiwibWV0aG9kIiwiY2FsbGJhY2siLCJza2lwSnNvblBhcnNpbmciLCJjdXN0b21SZXNwb25zZVBhcnNlciIsInBhdGgiLCJPYmplY3QiLCJhc3NpZ24iLCJ1bmRlZmluZWQiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInNpZ25hdHVyZVNlY3JldCIsInNpZ25hdHVyZU1ldGhvZCIsInNwbGl0UGF0aCIsInNwbGl0IiwicGFyYW1zIiwiZGVjb2RlIiwidGltZXN0YW1wIiwiRGF0ZSIsImdldFRpbWUiLCJ0b1N0cmluZyIsImFwaV9zZWNyZXQiLCJoYXNoIiwiZ2VuZXJhdGVTaWduYXR1cmUiLCJxdWVyeSIsInNvcnQiLCJlbmNvZGVVUkkiLCJyZXBsYWNlIiwiaW5mbyIsImJvZHkiLCJlbmQiLCJyZXNwb25zZURhdGEiLCJvbiIsInJlc3BvbnNlIiwiaXNCaW5hcnkiLCJzZXRFbmNvZGluZyIsImNodW5rIiwicHVzaCIsInN0YXR1c0NvZGUiLCJCdWZmZXIiLCJjb25jYXQiLCJfX3BhcnNlUmVzcG9uc2UiLCJlIiwiZXJyb3IiLCJodHRwUmVzcG9uc2UiLCJkYXRhIiwiaXNBcnJheU9yQnVmZmVyIiwiQXJyYXkiLCJFcnJvciIsInN0YXR1cyIsIm1lc3NhZ2UiLCJyZXRyeUFmdGVyTWlsbGlzIiwiam9pbiIsIkpTT04iLCJwYXJzZSIsInBhcnNlRXJyb3IiLCJfYWRkTGltaXRlZEFjY2Vzc01lc3NhZ2VUb0Vycm9ycyIsImxpbWl0ZWRBY2Nlc3NTdGF0dXMiLCJfSU5GT18iLCJnZXQiLCJ1c2VKd3QiLCJ1c2VCYXNpY0F1dGgiLCJhcGlLZXkiLCJhcGlTZWNyZXQiLCJzdHJpbmdpZnkiLCJnZW5lcmF0ZUp3dCIsImZyb20iLCJkZWxldGUiLCJwb3N0RmlsZSIsInFzIiwibGVuZ3RoIiwiam9pbkNoYXIiLCJpbmRleE9mIiwiZmlsZSIsImZvcm1EYXRhIiwidmFsdWUiLCJmaWxlbmFtZSIsInVybCIsInByb3RvY29sIiwicG9zdCIsIkF1dGhvcml6YXRpb24iLCJwb3N0SnNvbiIsInBvc3RVc2VRdWVyeVN0cmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUlBLEtBQUssR0FBR0MsT0FBTyxDQUFDLE9BQUQsQ0FBbkI7O0FBQ0EsSUFBSUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFDQSxJQUFJRSxPQUFPLEdBQUdGLE9BQU8sQ0FBQyxTQUFELENBQXJCOztBQUNBLElBQUlHLFdBQVcsR0FBR0gsT0FBTyxDQUFDLGFBQUQsQ0FBekI7O0FBQ0EsSUFBSUksR0FBRyxHQUFHSixPQUFPLENBQUMsS0FBRCxDQUFQLENBQWVJLEdBQXpCOztBQUVBLElBQU1DLFVBQVUsR0FBR0MsQ0FBQyxJQUFJO0FBQ3RCLE1BQUk7QUFDRixRQUFJQyxDQUFDLEdBQUcsSUFBSUgsR0FBSixDQUFRRSxDQUFSLENBQVI7QUFDQSxXQUFPQyxDQUFDLENBQUNDLElBQVQ7QUFDRCxHQUhELENBR0UsT0FBT0MsR0FBUCxFQUFZO0FBQ1osV0FBTyxLQUFQO0FBQ0Q7QUFDRixDQVBEOztBQVNBLE1BQU1DLFVBQU4sQ0FBaUI7QUFDZkMsRUFBQUEsV0FBVyxDQUFDQyxPQUFELEVBQVVDLFdBQVYsRUFBdUI7QUFDaEMsUUFBSUMsWUFBWSxHQUFHVCxVQUFVLENBQUNPLE9BQU8sQ0FBQ0osSUFBVCxDQUE3QjtBQUNBLFNBQUtLLFdBQUwsR0FBbUJBLFdBQW5CO0FBQ0EsU0FBS0wsSUFBTCxH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RUV5QixNQUFBQSxJQUFJLEVBQUV3QixJQUFJLENBQUNXLFNBQUwsQ0FBZWpELE1BQWYsQ0FGUjtBQUdFdEIsTUFBQUE7QUFIRixLQURGLEVBTUUsTUFORixFQU9FUSxRQVBGO0FBU0Q7O0FBRURpRixFQUFBQSxrQkFBa0IsQ0FBQzlFLElBQUQsRUFBT1csTUFBUCxFQUFlZCxRQUFmLEVBQXlCMkQsTUFBekIsRUFBaUM7QUFDakQ3QyxJQUFBQSxNQUFNLEdBQUdBLE1BQU0sSUFBSSxFQUFuQjs7QUFDQSxRQUFJLENBQUM2QyxNQUFMLEVBQWE7QUFDWDdDLE1BQUFBLE1BQU0sQ0FBQyxTQUFELENBQU4sR0FBb0IsS0FBS3pCLFdBQUwsQ0FBaUJ3RSxNQUFyQztBQUNBL0MsTUFBQUEsTUFBTSxDQUFDLFlBQUQsQ0FBTixHQUF1QixLQUFLekIsV0FBTCxDQUFpQnlFLFNBQXhDO0FBQ0Q7O0FBRUQzRCxJQUFBQSxJQUFJLEdBQUdBLElBQUksR0FBRyxHQUFQLEdBQWF4QixXQUFXLENBQUNvRixTQUFaLENBQXNCakQsTUFBdEIsQ0FBcEI7QUFFQSxTQUFLcEMsT0FBTCxDQUNFO0FBQ0V5QixNQUFBQSxJQUFJLEVBQUVBO0FBRFIsS0FERixFQUlFLE1BSkYsRUFLRUgsUUFMRjtBQU9EOztBQXhiYzs7ZUEyYkZkLFUiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaHR0cHMgPSByZXF1aXJlKFwiaHR0cHNcIik7XG52YXIgaHR0cCA9IHJlcXVpcmUoXCJodHRwXCIpO1xudmFyIHJlcXVlc3QgPSByZXF1aXJlKFwicmVxdWVzdFwiKTtcbnZhciBxdWVyeXN0cmluZyA9IHJlcXVpcmUoXCJxdWVyeXN0cmluZ1wiKTtcbnZhciBVUkwgPSByZXF1aXJlKFwidXJsXCIpLlVSTDtcblxuY29uc3QgaXNWYWxpZFVybCA9IHMgPT4ge1xuICB0cnkge1xuICAgIGxldCBvID0gbmV3IFVSTChzKTtcbiAgICByZXR1cm4gby5ob3N0O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbmNsYXNzIEh0dHBDbGllbnQge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zLCBjcmVkZW50aWFscykge1xuICAgIGxldCBob3N0T3ZlcnJpZGUgPSBpc1ZhbGlkVXJsKG9wdGlvbnMuaG9zdCk7XG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzO1xuICAgIHRoaXMuaG9zdCA9IGhvc3RPdmVycmlkZSA/IGhvc3RPdmVycmlkZSA6IGByZXN0Lm5leG1vLmNvbWA7XG4gICAgdGhpcy5wb3J0ID0gb3B0aW9ucy5wb3J0IHx8IDQ0MztcbiAgICB0aGlzLmh0dHBzID0gb3B0aW9ucy5odHRwcyB8fCBodHRwcztcbiAgICB0aGlzLmh0dHAgPSBvcHRpb25zLmh0dHAgfHwgaHR0cDtcbiAgICB0aGlzLmhlYWRlcnMgPSB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiLFxuICAgICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgIH07XG4gICAgdGhpcy5sb2dnZXIgPSBvcHRpb25zLmxvZ2dlcjtcbiAgICB0aGlzLnRpbWVvdXQgPSBvcHRpb25zLnRpbWVvdXQ7XG4gICAgdGhpcy5yZXF1ZXN0TGliID0gcmVxdWVzdDtcblxuICAgIGlmIChvcHRpb25zLnVzZXJBZ2VudCkge1xuICAgICAgdGhpcy5oZWFkZXJzW1wiVXNlci1BZ2VudFwiXSA9IG9wdGlvbnMudXNlckFnZW50O1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3QoXG4gICAgZW5kcG9pbnQsXG4gICAgbWV0aG9kLFxuICAgIGNhbGxiYWNrLFxuICAgIHNraXBKc29uUGFyc2luZyA9IGZhbHNlLFxuICAgIGN1c3RvbVJlc3BvbnNlUGFyc2VyXG4gICkge1xuICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGNhbGxiYWNrID0gbWV0aG9kO1xuICAgICAgZW5kcG9pbnQubWV0aG9kID0gZW5kcG9pbnQubWV0aG9kIHx8IFwiR0VUXCI7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbWV0aG9kICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBlbmRwb2ludC5tZXRob2QgPSBtZXRob2Q7XG4gICAgfVxuXG4gICAgaWYgKGVuZHBvaW50Lm1ldGhvZCA9PT0gXCJQT1NUXCIgfHwgZW5kcG9pbnQubWV0aG9kID09PSBcIkRFTEVURVwiKSB7XG4gICAgICAvLyBUT0RPOiB2ZXJpZnkgdGhlIGZvbGxvd2luZyBmaXggaXMgcmVxdWlyZWRcbiAgICAgIC8vIEZpeCBicm9rZW4gZHVlIG90IDQxMSBDb250ZW50LUxlbmd0aCBlcnJvciBub3cgc2VudCBieSBWb25hZ2UgQVBJXG4gICAgICAvLyBQTCAyMDE2LVNlcHQtNiAtIGNvbW1lbnRlZCBvdXQgQ29udGVudC1MZW5ndGggMFxuICAgICAgLy8gaGVhZGVyc1snQ29udGVudC1MZW5ndGgnXSA9IDA7XG4gICAgfVxuICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgaG9zdDogZW5kcG9pbnQuaG9zdCA/IGVuZHBvaW50Lmhvc3QgOiB0aGlzLmhvc3QsXG4gICAgICBwb3J0OiB0aGlzLnBvcnQsXG4gICAgICBwYXRoOiBlbmRwb2ludC5wYXRoLFxuICAgICAgbWV0aG9kOiBlbmRwb2ludC5tZXRob2QsXG4gICAgICBoZWFkZXJzOiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmhlYWRlcnMpXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnRpbWVvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3B0aW9ucy50aW1lb3V0ID0gdGhpcy50aW1lb3V0O1xuICAgIH1cblxuICAgIC8vIEFsbG93IGV4aXN0aW5nIGhlYWRlcnMgdG8gYmUgb3ZlcnJpZGRlblxuICAgIC8vIEFsbG93IG5ldyBoZWFkZXJzIHRvIGJlIGFkZGVkXG4gICAgaWYgKGVuZHBvaW50LmhlYWRlcnMpIHtcbiAgICAgIE9iamVjdC5rZXlzKGVuZHBvaW50LmhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIG9wdGlvbnMuaGVhZGVyc1trZXldID0gZW5kcG9pbnQuaGVhZGVyc1trZXldO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3JlZGVudGlhbHMuc2lnbmF0dXJlU2VjcmV0ICYmIHRoaXMuY3JlZGVudGlhbHMuc2lnbmF0dXJlTWV0aG9kKSB7XG4gICAgICBjb25zdCBzcGxpdFBhdGggPSBvcHRpb25zLnBhdGguc3BsaXQoL1xcPyguKykvKTtcbiAgICAgIGNvbnN0IHBhdGggPSBzcGxpdFBhdGhbMF07XG5cbiAgICAgIHZhciBwYXJhbXMgPSBxdWVyeXN0cmluZy5kZWNvZGUoc3BsaXRQYXRoWzFdKTtcblxuICAgICAgLy8gYWRkIHRpbWVzdGFtcCBpZiBub3QgYWxyZWFkeSBwcmVzZW50XG4gICAgICBpZiAoIXBhcmFtcy50aW1lc3RhbXApIHtcbiAgICAgICAgcGFyYW1zLnRpbWVzdGFtcCA9IChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApIHwgMDsgLy8gZmxvb3IgdG8gc2Vjb25kc1xuICAgICAgICBwYXJhbXMudGltZXN0YW1wID0gcGFyYW1zLnRpbWVzdGFtcC50b1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICAvLyBzdHJpcCBBUEkgU2VjcmV0XG4gICAgICBkZWxldGUgcGFyYW1zLmFwaV9zZWNyZXQ7XG5cbiAgICAgIGNvbnN0IGhhc2ggPSB0aGlzLmNyZWRlbnRpYWxzLmdlbmVyYXRlU2lnbmF0dXJlKHBhcmFtcyk7XG5cbiAgICAgIHZhciBxdWVyeSA9IFwiXCI7XG5cbiAgICAgIC8vIHJlYnVpbGQgcXVlcnlcbiAgICAgIE9iamVjdC5rZXlzKHBhcmFtcylcbiAgICAgICAgLnNvcnQoKVxuICAgICAgICAuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIHF1ZXJ5ICs9IFwiJlwiICsga2V5ICsgXCI9XCIgKyBlbmNvZGVVUkkocGFyYW1zW2tleV0pO1xuICAgICAgICB9KTtcblxuICAgICAgLy8gcmVwbGFjZSB0aGUgZmlyc3QgJiB3aXRoID9cbiAgICAgIHF1ZXJ5ID0gcXVlcnkucmVwbGFjZSgvJi9pLCBcIj9cIik7XG5cbiAgICAgIG9wdGlvbnMucGF0aCA9IGAke3BhdGh9JHtxdWVyeX0mc2lnPSR7aGFzaH1gO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyLmluZm8oXCJSZXF1ZXN0OlwiLCBvcHRpb25zLCBcIlxcbkJvZHk6XCIsIGVuZHBvaW50LmJvZHkpO1xuICAgIHZhciByZXF1ZXN0O1xuXG4gICAgaWYgKG9wdGlvbnMucG9ydCA9PT0gNDQzKSB7XG4gICAgICByZXF1ZXN0ID0gdGhpcy5odHRwcy5yZXF1ZXN0KG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0ID0gdGhpcy5odHRwLnJlcXVlc3Qob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmVxdWVzdC5lbmQoZW5kcG9pbnQuYm9keSk7XG5cbiAgICAvLyBLZWVwIGFuIGFycmF5IG9mIFN0cmluZyBvciBCdWZmZXJzLFxuICAgIC8vIGRlcGVuZGluZyBvbiBjb250ZW50IHR5cGUgKGJpbmFyeSBvciBKU09OKSBvZiByZXNwb25zZVxuICAgIHZhciByZXNwb25zZURhdGEgPSBbXTtcblxuICAgIHJlcXVlc3Qub24oXCJyZXNwb25zZVwiLCByZXNwb25zZSA9PiB7XG4gICAgICB2YXIgaXNCaW5hcnkgPVxuICAgICAgICByZXNwb25zZS5oZWFkZXJzW1wiY29udGVudC10eXBlXCJdID09PSBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiO1xuICAgICAgaWYgKCFpc0JpbmFyeSkge1xuICAgICAgICByZXNwb25zZS5zZXRFbmNvZGluZyhcInV0ZjhcIik7XG4gICAgICB9XG5cbiAgICAgIHJlc3BvbnNlLm9uKFwiZGF0YVwiLCBjaHVuayA9PiB7XG4gICAgICAgIHJlc3BvbnNlRGF0YS5wdXNoKGNodW5rKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXNwb25zZS5vbihcImVuZFwiLCAoKSA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXCJyZXNwb25zZSBlbmRlZDpcIiwgcmVzcG9uc2Uuc3RhdHVzQ29kZSk7XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGlmIChpc0JpbmFyeSkge1xuICAgICAgICAgICAgcmVzcG9uc2VEYXRhID0gQnVmZmVyLmNvbmNhdChyZXNwb25zZURhdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX19wYXJzZVJlc3BvbnNlKFxuICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICByZXNwb25zZURhdGEsXG4gICAgICAgICAgICBlbmRwb2ludC5tZXRob2QsXG4gICAgICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgICAgIHNraXBKc29uUGFyc2luZyxcbiAgICAgICAgICAgIGN1c3RvbVJlc3BvbnNlUGFyc2VyXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXNwb25zZS5vbihcImNsb3NlXCIsIGUgPT4ge1xuICAgICAgICBpZiAoZSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgXCJwcm9ibGVtIHdpdGggQVBJIHJlcXVlc3QgZGV0YWlsZWQgc3RhY2t0cmFjZSBiZWxvdyBcIlxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoZSk7XG4gICAgICAgICAgY2FsbGJhY2soZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJlcXVlc3Qub24oXCJlcnJvclwiLCBlID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFwicHJvYmxlbSB3aXRoIEFQSSByZXF1ZXN0IGRldGFpbGVkIHN0YWNrdHJhY2UgYmVsb3cgXCIpO1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoZSk7XG4gICAgICBjYWxsYmFjayhlKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9fcGFyc2VSZXNwb25zZShcbiAgICBodHRwUmVzcG9uc2UsXG4gICAgZGF0YSxcbiAgICBtZXRob2QsXG4gICAgY2FsbGJhY2ssXG4gICAgc2tpcEpzb25QYXJzaW5nLFxuICAgIGN1c3RvbVJlc3BvbnNlUGFyc2VyXG4gICkge1xuICAgIGNvbnN0IGlzQXJyYXlPckJ1ZmZlciA9IGRhdGEgaW5zdGFuY2VvZiBBcnJheSB8fCBkYXRhIGluc3RhbmNlb2YgQnVmZmVyO1xuICAgIGlmICghaXNBcnJheU9yQnVmZmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJkYXRhIHNob3VsZCBiZSBvZiB0eXBlIEFycmF5IG9yIEJ1ZmZlclwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXMgPSBodHRwUmVzcG9uc2Uuc3RhdHVzQ29kZTtcbiAgICBjb25zdCBoZWFkZXJzID0gaHR0cFJlc3BvbnNlLmhlYWRlcnM7XG5cbiAgICBsZXQgcmVzcG9uc2UgPSBudWxsO1xuICAgIHZhciBlcnJvciA9IG51bGw7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHN0YXR1cyA+PSA1MDApIHtcbiAgICAgICAgZXJyb3IgPSB7XG4gICAgICAgICAgbWVzc2FnZTogXCJTZXJ2ZXIgRXJyb3JcIixcbiAgICAgICAgICBzdGF0dXNDb2RlOiBzdGF0dXNcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGh0dHBSZXNwb25zZS5oZWFkZXJzW1wiY29udGVudC10eXBlXCJdID09PSBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiXG4gICAgICApIHtcbiAgICAgICAgcmVzcG9uc2UgPSBkYXRhO1xuICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IDQyOSkge1xuICAgICAgICAvLyA0MjkgZG9lcyBub3QgcmV0dXJuIGEgcGFyc2FibGUgYm9keVxuICAgICAgICBpZiAoIWhlYWRlcnNbXCJyZXRyeS1hZnRlclwiXSkge1xuICAgICAgICAgIC8vIHJldHJ5IGJhc2VkIG9uIGFsbG93ZWQgcGVyIHNlY29uZFxuICAgICAgICAgIGNvbnN0IHJldHJ5QWZ0ZXJNaWxsaXMgPSBtZXRob2QgPT09IFwiUE9TVFwiID8gMTAwMCAvIDIgOiAxMDAwIC8gNTtcbiAgICAgICAgICBoZWFkZXJzW1wicmV0cnktYWZ0ZXJcIl0gPSByZXRyeUFmdGVyTWlsbGlzO1xuICAgICAgICB9XG4gICAgICAgIGVycm9yID0ge1xuICAgICAgICAgIGJvZHk6IGRhdGEuam9pbihcIlwiKVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IDIwNCkge1xuICAgICAgICByZXNwb25zZSA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKHN0YXR1cyA+PSA0MDAgfHwgc3RhdHVzIDwgMjAwKSB7XG4gICAgICAgIGVycm9yID0ge1xuICAgICAgICAgIGJvZHk6IEpTT04ucGFyc2UoZGF0YS5qb2luKFwiXCIpKSxcbiAgICAgICAgICBoZWFkZXJzXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKG1ldGhvZCAhPT0gXCJERUxFVEVcIikge1xuICAgICAgICBpZiAoISFza2lwSnNvblBhcnNpbmcpIHtcbiAgICAgICAgICByZXNwb25zZSA9IGRhdGEuam9pbihcIlwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNwb25zZSA9IEpTT04ucGFyc2UoZGF0YS5qb2luKFwiXCIpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzcG9uc2UgPSBkYXRhO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKHBhcnNlRXJyb3IpO1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgIFwiY291bGQgbm90IGNvbnZlcnQgQVBJIHJlc3BvbnNlIHRvIEpTT04sIGFib3ZlIGVycm9yIGlzIGlnbm9yZWQgYW5kIHJhdyBBUEkgcmVzcG9uc2UgaXMgcmV0dXJuZWQgdG8gY2xpZW50XCJcbiAgICAgICk7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcIlJhdyBFcnJvciBtZXNzYWdlIGZyb20gQVBJIFwiKTtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGBcIiR7ZGF0YX1cImApO1xuXG4gICAgICBlcnJvciA9IHtcbiAgICAgICAgc3RhdHVzOiBzdGF0dXMsXG4gICAgICAgIG1lc3NhZ2U6IFwiVGhlIEFQSSByZXNwb25zZSBjb3VsZCBub3QgYmUgcGFyc2VkLlwiLFxuICAgICAgICBib2R5OiBkYXRhLmpvaW4oXCJcIiksXG4gICAgICAgIHBhcnNlRXJyb3I6IHBhcnNlRXJyb3JcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBlcnJvci5zdGF0dXNDb2RlID0gc3RhdHVzO1xuICAgICAgZXJyb3IuaGVhZGVycyA9IGhlYWRlcnM7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBpZiAodHlwZW9mIGN1c3RvbVJlc3BvbnNlUGFyc2VyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgLy8gZG9uJ3QgdHJ5IHRvIHBhcnNlIHRoZSByZXNwb25zZSBvbiBlcnJvcnNcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgcmVzcG9uc2UgPSBjdXN0b21SZXNwb25zZVBhcnNlcihyZXNwb25zZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrKGVycm9yLCByZXNwb25zZSk7XG4gICAgfVxuICB9XG5cbiAgX2FkZExpbWl0ZWRBY2Nlc3NNZXNzYWdlVG9FcnJvcnMoY2FsbGJhY2ssIGxpbWl0ZWRBY2Nlc3NTdGF0dXMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oZXJyLCBkYXRhKSB7XG4gICAgICBpZiAoZXJyICYmIGVyci5zdGF0dXMgPT0gbGltaXRlZEFjY2Vzc1N0YXR1cykge1xuICAgICAgICBlcnIuX0lORk9fID1cbiAgICAgICAgICBcIlRoaXMgZW5kcG9pbnQgbWF5IG5lZWQgYWN0aXZhdGluZyBvbiB5b3VyIGFjY291bnQuIFBsZWFzZSBlbWFpbCBzdXBwb3J0QG5leG1vLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvblwiO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2FsbGJhY2soZXJyLCBkYXRhKTtcbiAgICB9O1xuICB9XG5cbiAgZ2V0KHBhdGgsIHBhcmFtcywgY2FsbGJhY2ssIHVzZUp3dCA9IGZhbHNlLCB1c2VCYXNpY0F1dGggPSBmYWxzZSkge1xuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgIGlmICh0eXBlb2YgcGFyYW1zID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjYWxsYmFjayA9IHBhcmFtcztcbiAgICAgICAgcGFyYW1zID0ge307XG4gICAgICB9XG4gICAgfVxuXG4gICAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICAgIGlmICghdXNlSnd0ICYmICF1c2VCYXNpY0F1dGgpIHtcbiAgICAgIHBhcmFtc1tcImFwaV9rZXlcIl0gPSB0aGlzLmNyZWRlbnRpYWxzLmFwaUtleTtcbiAgICAgIHBhcmFtc1tcImFwaV9zZWNyZXRcIl0gPSB0aGlzLmNyZWRlbnRpYWxzLmFwaVNlY3JldDtcbiAgICB9XG5cbiAgICBwYXRoID0gcGF0aCArIFwiP1wiICsgcXVlcnlzdHJpbmcuc3RyaW5naWZ5KHBhcmFtcyk7XG5cbiAgICBjb25zdCBoZWFkZXJzID0ge1xuICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICB9O1xuICAgIGlmICh1c2VKd3QpIHtcbiAgICAgIGhlYWRlcnNbXCJBdXRob3JpemF0aW9uXCJdID0gYEJlYXJlciAke3RoaXMuY3JlZGVudGlhbHMuZ2VuZXJhdGVKd3QoKX1gO1xuICAgIH1cbiAgICBpZiAodXNlQmFzaWNBdXRoKSB7XG4gICAgICBoZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBCYXNpYyAke0J1ZmZlci5mcm9tKFxuICAgICAgICB0aGlzLmNyZWRlbnRpYWxzLmFwaUtleSArIFwiOlwiICsgdGhpcy5jcmVkZW50aWFscy5hcGlTZWNyZXRcbiAgICAgICkudG9TdHJpbmcoXCJiYXNlNjRcIil9YDtcbiAgICB9XG5cbiAgICB0aGlzLnJlcXVlc3QoXG4gICAgICB7XG4gICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgIGhlYWRlcnNcbiAgICAgIH0sXG4gICAgICBcIkdFVFwiLFxuICAgICAgY2FsbGJhY2tcbiAgICApO1xuICB9XG5cbiAgZGVsZXRlKHBhdGgsIGNhbGxiYWNrLCB1c2VKd3QsIHVzZUJhc2ljQXV0aCkge1xuICAgIGxldCBwYXJhbXMgPSB7fTtcbiAgICBpZiAoIXVzZUp3dCAmJiAhdXNlQmFzaWNBdXRoKSB7XG4gICAgICBwYXJhbXNbXCJhcGlfa2V5XCJdID0gdGhpcy5jcmVkZW50aWFscy5hcGlLZXk7XG4gICAgICBwYXJhbXNbXCJhcGlfc2VjcmV0XCJdID0gdGhpcy5jcmVkZW50aWFscy5hcGlTZWNyZXQ7XG4gICAgfVxuXG4gICAgbGV0IGhlYWRlcnMgPSB7fTtcblxuICAgIGlmICh1c2VCYXNpY0F1dGgpIHtcbiAgICAgIGhlYWRlcnNbXCJBdXRob3JpemF0aW9uXCJdID0gYEJhc2ljICR7QnVmZmVyLmZyb20oXG4gICAgICAgIHRoaXMuY3JlZGVudGlhbHMuYXBpS2V5ICsgXCI6XCIgKyB0aGlzLmNyZWRlbnRpYWxzLmFwaVNlY3JldFxuICAgICAgKS50b1N0cmluZyhcImJhc2U2NFwiKX1gO1xuICAgIH1cbiAgICBwYXRoID0gcGF0aCArIFwiP1wiICsgcXVlcnlzdHJpbmcuc3RyaW5naWZ5KHBhcmFtcyk7XG5cbiAgICB0aGlzLnJlcXVlc3QoXG4gICAgICB7XG4gICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgIGhlYWRlcnNcbiAgICAgIH0sXG4gICAgICBcIkRFTEVURVwiLFxuICAgICAgY2FsbGJhY2tcbiAgICApO1xuICB9XG5cbiAgcG9zdEZpbGUocGF0aCwgb3B0aW9ucywgY2FsbGJhY2ssIHVzZUp3dCkge1xuICAgIGxldCBxcyA9IHt9O1xuICAgIGlmICghdXNlSnd0KSB7XG4gICAgICBxc1tcImFwaV9rZXlcIl0gPSB0aGlzLmNyZWRlbnRpYWxzLmFwaUtleTtcbiAgICAgIHFzW1wiYXBpX3NlY3JldFwiXSA9IHRoaXMuY3JlZGVudGlhbHMuYXBpU2VjcmV0O1xuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhxcykubGVuZ3RoKSB7XG4gICAgICBsZXQgam9pbkNoYXIgPSBcIj9cIjtcbiAgICAgIGlmIChwYXRoLmluZGV4T2Yoam9pbkNoYXIpICE9PSAtMSkge1xuICAgICAgICBqb2luQ2hhciA9IFwiJlwiO1xuICAgICAgfVxuICAgICAgcGF0aCA9IHBhdGggKyBqb2luQ2hhciArIHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShxcyk7XG4gICAgfVxuXG4gICAgY29uc3QgZmlsZSA9IG9wdGlvbnMuZmlsZTtcbiAgICBkZWxldGUgb3B0aW9ucy5maWxlOyAvLyBXZSBkb24ndCBzZW5kIHRoaXMgYXMgbWV0YWRhdGFcblxuICAgIGNvbnN0IGZvcm1EYXRhID0ge307XG5cbiAgICBpZiAoZmlsZSkge1xuICAgICAgZm9ybURhdGFbXCJmaWxlZGF0YVwiXSA9IHtcbiAgICAgICAgdmFsdWU6IGZpbGUsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBmaWxlbmFtZTogb3B0aW9ucy5maWxlbmFtZSB8fCBudWxsXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaW5mbykge1xuICAgICAgZm9ybURhdGEuaW5mbyA9IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMuaW5mbyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudXJsKSB7XG4gICAgICBmb3JtRGF0YS51cmwgPSBvcHRpb25zLnVybDtcbiAgICB9XG5cbiAgICBsZXQgcHJvdG9jb2wgPSB0aGlzLnBvcnQgPT09IDQ0MyA/IFwiaHR0cHM6Ly9cIiA6IFwiaHR0cDovL1wiO1xuXG4gICAgdGhpcy5yZXF1ZXN0TGliLnBvc3QoXG4gICAgICB7XG4gICAgICAgIHVybDogcHJvdG9jb2wgKyB0aGlzLmhvc3QgKyBwYXRoLFxuICAgICAgICBmb3JtRGF0YTogZm9ybURhdGEsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5jcmVkZW50aWFscy5nZW5lcmF0ZUp3dCgpfWBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNhbGxiYWNrXG4gICAgKTtcbiAgfVxuXG4gIHBvc3QocGF0aCwgcGFyYW1zLCBjYWxsYmFjaywgdXNlSnd0KSB7XG4gICAgbGV0IHFzID0ge307XG4gICAgaWYgKCF1c2VKd3QpIHtcbiAgICAgIHFzW1wiYXBpX2tleVwiXSA9IHRoaXMuY3JlZGVudGlhbHMuYXBpS2V5O1xuICAgICAgcXNbXCJhcGlfc2VjcmV0XCJdID0gdGhpcy5jcmVkZW50aWFscy5hcGlTZWNyZXQ7XG4gICAgfVxuXG4gICAgbGV0IGpvaW5DaGFyID0gXCI/XCI7XG4gICAgaWYgKHBhdGguaW5kZXhPZihqb2luQ2hhcikgIT09IC0xKSB7XG4gICAgICBqb2luQ2hhciA9IFwiJlwiO1xuICAgIH1cblxuICAgIHBhdGggPSBwYXRoICsgam9pbkNoYXIgKyBxdWVyeXN0cmluZy5zdHJpbmdpZnkocXMpO1xuXG4gICAgdGhpcy5yZXF1ZXN0KFxuICAgICAge1xuICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICBib2R5OiBxdWVyeXN0cmluZy5zdHJpbmdpZnkocGFyYW1zKVxuICAgICAgfSxcbiAgICAgIFwiUE9TVFwiLFxuICAgICAgY2FsbGJhY2tcbiAgICApO1xuICB9XG5cbiAgcG9zdEpzb24ocGF0aCwgcGFyYW1zLCBjYWxsYmFjaywgdXNlSnd0LCB1c2VCYXNpY0F1dGgpIHtcbiAgICBsZXQgcXMgPSB7fTtcbiAgICBpZiAoIXVzZUp3dCAmJiAhdXNlQmFzaWNBdXRoKSB7XG4gICAgICBxc1tcImFwaV9rZXlcIl0gPSB0aGlzLmNyZWRlbnRpYWxzLmFwaUtleTtcbiAgICAgIHFzW1wiYXBpX3NlY3JldFwiXSA9IHRoaXMuY3JlZGVudGlhbHMuYXBpU2VjcmV0O1xuICAgIH1cblxuICAgIGxldCBqb2luQ2hhciA9IFwiP1wiO1xuICAgIGlmIChwYXRoLmluZGV4T2Yoam9pbkNoYXIpICE9PSAtMSkge1xuICAgICAgam9pbkNoYXIgPSBcIiZcIjtcbiAgICB9XG5cbiAgICBwYXRoID0gcGF0aCArIGpvaW5DaGFyICsgcXVlcnlzdHJpbmcuc3RyaW5naWZ5KHFzKTtcblxuICAgIGxldCBoZWFkZXJzID0ge1xuICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICB9O1xuICAgIGlmICh1c2VCYXNpY0F1dGgpIHtcbiAgICAgIGhlYWRlcnNbXCJBdXRob3JpemF0aW9uXCJdID0gYEJhc2ljICR7QnVmZmVyLmZyb20oXG4gICAgICAgIHRoaXMuY3JlZGVudGlhbHMuYXBpS2V5ICsgXCI6XCIgKyB0aGlzLmNyZWRlbnRpYWxzLmFwaVNlY3JldFxuICAgICAgKS50b1N0cmluZyhcImJhc2U2NFwiKX1gO1xuICAgIH1cblxuICAgIHRoaXMucmVxdWVzdChcbiAgICAgIHtcbiAgICAgICAgcGF0aDogcGF0aCxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkocGFyYW1zKSxcbiAgICAgICAgaGVhZGVyc1xuICAgICAgfSxcbiAgICAgIFwiUE9TVFwiLFxuICAgICAgY2FsbGJhY2tcbiAgICApO1xuICB9XG5cbiAgcG9zdFVzZVF1ZXJ5U3RyaW5nKHBhdGgsIHBhcmFtcywgY2FsbGJhY2ssIHVzZUp3dCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgICBpZiAoIXVzZUp3dCkge1xuICAgICAgcGFyYW1zW1wiYXBpX2tleVwiXSA9IHRoaXMuY3JlZGVudGlhbHMuYXBpS2V5O1xuICAgICAgcGFyYW1zW1wiYXBpX3NlY3JldFwiXSA9IHRoaXMuY3JlZGVudGlhbHMuYXBpU2VjcmV0O1xuICAgIH1cblxuICAgIHBhdGggPSBwYXRoICsgXCI/XCIgKyBxdWVyeXN0cmluZy5zdHJpbmdpZnkocGFyYW1zKTtcblxuICAgIHRoaXMucmVxdWVzdChcbiAgICAgIHtcbiAgICAgICAgcGF0aDogcGF0aFxuICAgICAgfSxcbiAgICAgIFwiUE9TVFwiLFxuICAgICAgY2FsbGJhY2tcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEh0dHBDbGllbnQ7XG4iXX0=

2

package.json
{
"name": "@vonage/server-sdk",
"author": "vonage",
"version": "2.10.3",
"version": "2.10.4",
"main": "lib/Vonage",

@@ -6,0 +6,0 @@ "types": "./typings/index.d.ts",

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