New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@axway/amplify-auth-sdk

Package Overview
Dependencies
Maintainers
14
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@axway/amplify-auth-sdk - npm Package Compare versions

Comparing version 2.0.0 to 2.0.1

4

dist/index.js

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

if (account.expires.refresh < Date.now()) {
if (account.auth.expires.refresh < Date.now()) {
log(`Unable to refresh access token for account ${account.name || account.hash} because refresh token is also expired`);

@@ -555,2 +555,2 @@ return;

exports.Auth = exports.default = Auth;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIkVycm9yIiwicHJlcGFyZVN0YWNrVHJhY2UiLCJyZXF1aXJlIiwibG9nIiwiYWxlcnQiLCJoaWdobGlnaHQiLCJtYWdlbnRhIiwibm90ZSIsInNub29wbG9nZyIsInN0eWxlcyIsIkF1dGgiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJFIiwiSU5WQUxJRF9BUkdVTUVOVCIsIk9iamVjdCIsImRlZmluZVByb3BlcnRpZXMiLCJiYXNlVXJsIiwidmFsdWUiLCJjbGllbnRJZCIsImNsaWVudFNlY3JldCIsImVudiIsIm1lc3NhZ2VzIiwicGFzc3dvcmQiLCJyZWFsbSIsInNlY3JldEZpbGUiLCJzZXJ2aWNlQWNjb3VudCIsInVzZXJuYW1lIiwidG9rZW5TdG9yZSIsIlRva2VuU3RvcmUiLCJJTlZBTElEX1BBUkFNRVRFUiIsInRva2VuU3RvcmVUeXBlIiwidW5kZWZpbmVkIiwiU2VjdXJlU3RvcmUiLCJlIiwiY29kZSIsIlNFQ1VSRV9TVE9SRV9VTkFWQUlMQUJMRSIsIkZpbGVTdG9yZSIsIk1lbW9yeVN0b3JlIiwiYXBwbHlEZWZhdWx0cyIsImVudmlyb25tZW50cyIsInJlc29sdmUiLCJJTlZBTElEX1ZBTFVFIiwiY3JlYXRlQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3IiLCJBdXRoZW50aWNhdG9yIiwiSU5WQUxJRF9BUlVHTUVOVCIsIk93bmVyUGFzc3dvcmQiLCJDbGllbnRTZWNyZXQiLCJTaWduZWRKV1QiLCJQS0NFIiwiZmluZCIsImFjY291bnROYW1lIiwiaGFzaCIsImFjY291bnQiLCJnZXQiLCJwcm9wIiwiYXV0aCIsImZyb20iLCJuYW1lIiwidG8iLCJleHBpcmVkIiwiZXhwaXJlcyIsInJlZnJlc2giLCJEYXRlIiwibm93IiwiZ2V0VG9rZW4iLCJnZXRJbmZvIiwibGlzdCIsImxvZ2luIiwibG9nb3V0IiwiYWNjb3VudHMiLCJhbGwiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJyZXZva2VkIiwiY2xlYXIiLCJkZWxldGUiLCJlbnRyeSIsInVybCIsInRva2VucyIsImlkX3Rva2VuIiwic3RhdHVzIiwicmVzcG9uc2VUeXBlIiwicmV0cnkiLCJlcnIiLCJzZXJ2ZXJJbmZvIiwid2VsbEtub3duIiwiYm9keSIsIm1lc3NhZ2UiLCJyZXNwb25zZSIsInN0YXR1c0NvZGUiLCJ1cGRhdGVBY2NvdW50Iiwic2V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7QUFDQTs7Ozs7Ozs7Ozs7O0FBdkJBO0FBQ0EsSUFBSSxDQUFDQSxLQUFLLENBQUNDLGlCQUFYLEVBQThCO0FBQzdCQyxFQUFBQSxPQUFPLENBQUMsNkJBQUQsQ0FBUDtBQUNBOztBQXNCRCxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBVSx3QkFBVSxjQUFWLENBQWhCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxLQUFGO0FBQVNDLEVBQUFBLFNBQVQ7QUFBb0JDLEVBQUFBLE9BQXBCO0FBQTZCQyxFQUFBQTtBQUE3QixJQUFzQ0MsbUJBQVVDLE1BQXREO0FBRUE7Ozs7QUFHZSxNQUFNQyxJQUFOLENBQVc7QUFDekI7Ozs7Ozs7QUFRQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQ0FDLEVBQUFBLFdBQVcsQ0FBQ0MsSUFBSSxHQUFHLEVBQVIsRUFBWTtBQUFBLHdDQWxDVixJQWtDVTs7QUFDdEIsUUFBSSxDQUFDQSxJQUFELElBQVMsT0FBT0EsSUFBUCxLQUFnQixRQUE3QixFQUF1QztBQUN0QyxZQUFNQyxnQkFBRUMsZ0JBQUYsQ0FBbUIsa0NBQW5CLENBQU47QUFDQTs7QUFFREMsSUFBQUEsTUFBTSxDQUFDQyxnQkFBUCxDQUF3QixJQUF4QixFQUE4QjtBQUM3QkMsTUFBQUEs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T0EsR0FBUCxLQUFlLFFBQTNCLEVBQXFDO0FBQ3BDLFlBQU1uRSxnQkFBRUMsZ0JBQUYsQ0FBbUIsdUNBQW5CLENBQU47QUFDQTs7QUFFRCxRQUFJO0FBQ0hYLE1BQUFBLEdBQUcsQ0FBRSx5QkFBd0I2RSxHQUFJLEtBQTlCLENBQUg7QUFDQSxhQUFPLENBQUMsTUFBTSxrQkFBSUEsR0FBSixFQUFTO0FBQUVJLFFBQUFBLFlBQVksRUFBRSxNQUFoQjtBQUF3QkMsUUFBQUEsS0FBSyxFQUFFO0FBQS9CLE9BQVQsQ0FBUCxFQUFxREksSUFBNUQ7QUFDQSxLQUhELENBR0UsT0FBT0gsR0FBUCxFQUFZO0FBQ2IsVUFBSUEsR0FBRyxDQUFDM0IsSUFBSixLQUFhLFlBQWpCLEVBQStCO0FBQzlCMkIsUUFBQUEsR0FBRyxDQUFDSSxPQUFKLEdBQWUscUNBQW9DSixHQUFHLENBQUNLLFFBQUosQ0FBYUMsVUFBVyxHQUEzRTtBQUNBOztBQUNELFlBQU1OLEdBQU47QUFDQTtBQUNEO0FBRUQ7Ozs7Ozs7OztBQU9BLFFBQU1PLGFBQU4sQ0FBb0J2QyxPQUFwQixFQUE2QjtBQUM1QixRQUFJLEtBQUsxQixVQUFULEVBQXFCO0FBQ3BCLFlBQU0sS0FBS0EsVUFBTCxDQUFnQmtFLEdBQWhCLENBQW9CeEMsT0FBcEIsQ0FBTjtBQUNBO0FBQ0Q7O0FBbFh3QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKCFFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSkge1xuXHRyZXF1aXJlKCdzb3VyY2UtbWFwLXN1cHBvcnQvcmVnaXN0ZXInKTtcbn1cblxuaW1wb3J0IEUgZnJvbSAnLi9lcnJvcnMnO1xuXG5pbXBvcnQgQXV0aGVudGljYXRvciBmcm9tICcuL2F1dGhlbnRpY2F0b3JzL2F1dGhlbnRpY2F0b3InO1xuaW1wb3J0IENsaWVudFNlY3JldCBmcm9tICcuL2F1dGhlbnRpY2F0b3JzL2NsaWVudC1zZWNyZXQnO1xuaW1wb3J0IE93bmVyUGFzc3dvcmQgZnJvbSAnLi9hdXRoZW50aWNhdG9ycy9vd25lci1wYXNzd29yZCc7XG5pbXBvcnQgUEtDRSBmcm9tICcuL2F1dGhlbnRpY2F0b3JzL3BrY2UnO1xuaW1wb3J0IFNpZ25lZEpXVCBmcm9tICcuL2F1dGhlbnRpY2F0b3JzL3NpZ25lZC1qd3QnO1xuXG5pbXBvcnQgRmlsZVN0b3JlIGZyb20gJy4vc3RvcmVzL2ZpbGUtc3RvcmUnO1xuaW1wb3J0IE1lbW9yeVN0b3JlIGZyb20gJy4vc3RvcmVzL21lbW9yeS1zdG9yZSc7XG5pbXBvcnQgU2VjdXJlU3RvcmUgZnJvbSAnLi9zdG9yZXMvc2VjdXJlLXN0b3JlJztcbmltcG9ydCBUb2tlblN0b3JlIGZyb20gJy4vc3RvcmVzL3Rva2VuLXN0b3JlJztcblxuaW1wb3J0IGdldEVuZHBvaW50cyBmcm9tICcuL2VuZHBvaW50cyc7XG5pbXBvcnQgZ290IGZyb20gJ2dvdCc7XG5pbXBvcnQgc25vb3Bsb2dnIGZyb20gJ3Nub29wbG9nZyc7XG5cbmltcG9ydCAqIGFzIGVudmlyb25tZW50cyBmcm9tICcuL2Vudmlyb25tZW50cyc7XG5pbXBvcnQgKiBhcyBzZXJ2ZXIgZnJvbSAnLi9zZXJ2ZXInO1xuXG5jb25zdCB7IGxvZyB9ID0gc25vb3Bsb2dnKCdhbXBsaWZ5LWF1dGgnKTtcbmNvbnN0IHsgYWxlcnQsIGhpZ2hsaWdodCwgbWFnZW50YSwgbm90ZSB9ID0gc25vb3Bsb2dnLnN0eWxlcztcblxuLyoqXG4gKiBBdXRoZW50aWNhdGVzIHRoZSBtYWNoaW5lIGFuZCByZXRyZWl2ZXMgdGhlIGF1dGggdG9rZW4uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1dGgge1xuXHQvKipcblx0ICogVGhlIHN0b3JlIHRvIHBlcnNpc3QgdGhlIHRva2VuLlxuXHQgKlxuXHQgKiBAdHlwZSB7VG9rZW5TdG9yZX1cblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHR0b2tlblN0b3JlID0gbnVsbDtcblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgdGhlIGF1dGhlbnRpY2F0aW9uIGluc3RhbmNlIGJ5IHNldHRpbmcgdGhlIGRlZmF1bHQgc2V0dGluZ3MgYW5kIGNyZWF0aW5nIHRoZVxuXHQgKiB0b2tlbiBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmJhc2VVcmxdIC0gVGhlIGJhc2UgVVJMIHRvIHVzZSBmb3IgYWxsIG91dGdvaW5nIHJlcXVlc3RzLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuY2xpZW50SWRdIC0gVGhlIGNsaWVudCBpZCB0byBzcGVjaWZ5IHdoZW4gYXV0aGVudGljYXRpbmcuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5jbGllbnRTZWNyZXRdIC0gVGhlIHNlY3JldCB0b2tlbiB0byB1c2UgdG8gYXV0aGVudGljYXRlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuZW52PXByb2RdIC0gVGhlIGVudmlyb25tZW50IG5hbWUuIE11c3QgYmUgYGRldmAsIGBwcmVwcm9kYCwgb3IgYHByb2RgLlxuXHQgKiBUaGUgZW52aXJvbm1lbnQgaXMgYSBzaG9ydGhhbmQgd2F5IG9mIHNwZWNpZnlpbmcgYSBBeHdheSBkZWZhdWx0IGJhc2UgVVJMLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuaG9tZURpcl0gLSBUaGUgcGF0aCB0byB0aGUgaG9tZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgYGxpYmBcblx0ICogZGlyZWN0b3J5IHdoZXJlIGBrZXl0YXJgIGlzIGxvY2F0ZWQuIFRoaXMgb3B0aW9uIGlzIHJlcXVpcmVkIHdoZW4gYHRva2VuU3RvcmVUeXBlYCBpcyBzZXQgdG9cblx0ICogYHNlY3VyZWAsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMucGFzc3dvcmRdIC0gVGhlIHBhc3N3b3JkIHVzZWQgdG8gYXV0aGVudGljYXRlLiBSZXF1aXJlcyBhIGB1c2VybmFtZWAuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5yZWFsbV0gLSBUaGUgbmFtZSBvZiB0aGUgcmVhbG0gdG8gYXV0aGVudGljYXRlIHdpdGguXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5zZWNyZXRGaWxlXSAtIFRoZSBwYXRoIHRvIHRoZSBqd3Qgc2VjcmV0IGZpbGUuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5zZWN1cmVTZXJ2aWNlTmFtZT1cIkF4d2F5IEFNUExJRlkgQXV0aFwiXSAtIFRoZSBuYW1lIG9mIHRoZSBjb25zdW1lclxuXHQgKiB1c2luZyB0aGlzIGxpYnJhcnkgd2hlbiB1c2luZyB0aGUgXCJzZWN1cmVcIiB0b2tlbiBzdG9yZS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5zZXJ2aWNlQWNjb3VudD1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgaW5kaWNhdGVzIGF1dGhlbnRpY2F0aW9uIGlzIGJlaW5nXG5cdCAqIHJlcXVlc3RlZCBieSBhIHNlcnZpY2UgaW5zdGVhZCBvZiBhIHVzZXIuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMudG9rZW5SZWZyZXNoVGhyZXNob2xkPTBdIC0gVGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSB0aGUgYWNjZXNzXG5cdCAqIHRva2VuIGV4cGlyZXMgYW5kIHNob3VsZCBiZSByZWZyZXNoZWQuXG5cdCAqIEBwYXJhbSB7VG9rZW5TdG9yZX0gW29wdHMudG9rZW5TdG9yZV0gLSBBIHRva2VuIHN0b3JlIGluc3RhbmNlIGZvciBwZXJzaXN0aW5nIHRoZSB0b2tlbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy50b2tlblN0b3JlRGlyXSAtIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHRva2VuIHN0b3JlIGlzIHNhdmVkLiBSZXF1aXJlZFxuXHQgKiB3aGVuIHRoZSBgdG9rZW5TdG9yZVR5cGVgIGlzIGBzZWN1cmVgIG9yIGBmaWxlYC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnRva2VuU3RvcmVUeXBlPXNlY3VyZV0gLSBUaGUgdHlwZSBvZiBzdG9yZSB0byBwZXJzaXN0IHRoZSBhY2Nlc3MgdG9rZW4uXG5cdCAqIFBvc3NpYmxlIHZhbHVlcyBpbmNsdWRlOiBgYXV0b2AsIGBzZWN1cmVgLCBgZmlsZWAsIG9yIGBtZW1vcnlgLiBJZiB2YWx1ZSBpcyBgYXV0b2AsIGl0IHdpbGxcblx0ICogYXR0ZW1wdCB0byB1c2UgYHNlY3VyZWAsIHRoZW4gYGZpbGVgLCB0aGVuIGBtZW1vcnlgLiBJZiBzZXQgdG8gYG51bGxgLCB0aGVuIGl0IHdpbGwgbm90XG5cdCAqIHBlcnNpc3QgdGhlIGFjY2VzcyB0b2tlbi5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnVzZXJuYW1lXSAtIFRoZSB1c2VybmFtZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZS4gUmVxdWlyZXMgYSBgcGFzc3dvcmRgLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG5cdFx0aWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBvcHRpb25zIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMsIHtcblx0XHRcdGJhc2VVcmw6ICAgICAgICB7IHZhbHVlOiBvcHRzLmJhc2VVcmwgfSxcblx0XHRcdGNsaWVudElkOiAgICAgICB7IHZhbHVlOiBvcHRzLmNsaWVudElkIH0sXG5cdFx0XHRjbGllbnRTZWNyZXQ6ICAgeyB2YWx1ZTogb3B0cy5jbGllbnRTZWNyZXQgfSxcblx0XHRcdGVudjogICAgICAgICAgICB7IHZhbHVlOiBvcHRzLmVudiB9LFxuXHRcdFx0bWVzc2FnZXM6ICAgICAgIHsgdmFsdWU6IG9wdHMubWVzc2FnZXMgfSxcblx0XHRcdHBhc3N3b3JkOiAgICAgICB7IHZhbHVlOiBvcHRzLnBhc3N3b3JkIH0sXG5cdFx0XHRyZWFsbTogICAgICAgICAgeyB2YWx1ZTogb3B0cy5yZWFsbSB9LFxuXHRcdFx0c2VjcmV0RmlsZTogICAgIHsgdmFsdWU6IG9wdHMuc2VjcmV0RmlsZSB9LFxuXHRcdFx0c2VydmljZUFjY291bnQ6IHsgdmFsdWU6IG9wdHMuc2VydmljZUFjY291bnQgfSxcblx0XHRcdHVzZXJuYW1lOiAgICAgICB7IHZhbHVlOiBvcHRzLnVzZXJuYW1lIH1cblx0XHR9KTtcblxuXHRcdGlmIChvcHRzLnRva2VuU3RvcmUpIHtcblx0XHRcdGlmICghKG9wdHMudG9rZW5TdG9yZSBpbnN0YW5jZW9mIFRva2VuU3RvcmUpKSB7XG5cdFx0XHRcdHRocm93IEUuSU5WQUxJRF9QQVJBTUVURVIoJ0V4cGVjdGVkIHRoZSB0b2tlbiBzdG9yZSB0byBiZSBhIFwiVG9rZW5TdG9yZVwiIGluc3RhbmNlJyk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnRva2VuU3RvcmUgPSBvcHRzLnRva2VuU3RvcmU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHRva2VuU3RvcmVUeXBlID0gb3B0cy50b2tlblN0b3JlVHlwZSA9PT0gdW5kZWZpbmVkID8gJ3NlY3VyZScgOiBvcHRzLnRva2VuU3RvcmVUeXBlO1xuXHRcdFx0c3dpdGNoICh0b2tlblN0b3JlVHlwZSkge1xuXHRcdFx0XHRjYXNlICdhdXRvJzpcblx0XHRcdFx0Y2FzZSAnc2VjdXJlJzpcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0dGhpcy50b2tlblN0b3JlID0gbmV3IFNlY3VyZVN0b3JlKG9wdHMpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdFx0LyogaXN0YW5idWwgaWdub3JlIGlmICovXG5cdFx0XHRcdFx0XHRpZiAodG9rZW5TdG9yZVR5cGUgPT09ICdhdXRvJykge1xuXHRcdFx0XHRcdFx0XHQvLyBsZXQgJ2F1dG8nIGZhbGwgdGhyb3VnaFxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChlLmNvZGUgPT09ICdFUlJfS0VZVEFSX05PVF9GT1VORCcpIHtcblx0XHRcdFx0XHRcdFx0dGhyb3cgRS5TRUNVUkVfU1RPUkVfVU5BVkFJTEFCTEUoJ1NlY3VyZSB0b2tlbiBzdG9yZSBpcyBub3QgYXZhaWxhYmxlLlxcblBsZWFzZSByZWluc3RhbGwgb3IgcmVidWlsZCB0aGlzIGFwcGxpY2F0aW9uLicpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FzZSAnZmlsZSc6XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdHRoaXMudG9rZW5TdG9yZSA9IG5ldyBGaWxlU3RvcmUob3B0cyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0XHQvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cblx0XHRcdFx0XHRcdGlmICh0b2tlblN0b3JlVHlwZSA9PT0gJ2F1dG8nICYmIGUuY29kZSA9PT0gJ0VSUl9NSVNTSU5HX1JFUVVJUkVEX1BBUkFNRVRFUicpIHtcblx0XHRcdFx0XHRcdFx0Ly8gbGV0ICdhdXRvJyBmYWxsIHRocm91Z2hcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdGNhc2UgJ21lbW9yeSc6XG5cdFx0XHRcdFx0dGhpcy50b2tlblN0b3JlID0gbmV3IE1lbW9yeVN0b3JlKG9wdHMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBFbnN1cmVzIHRoZSBvcHRpb25zIGNvbnRhaW5zIHRoZSBjb25maWd1cmFibGUgc2V0dGluZ3MuIFZhbGlkYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgY29kZVxuXHQgKiByZXF1aXJpbmcgdGhlIHZhbHVlcy5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHJldHVybnMge09iamVjdH1cblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHRhcHBseURlZmF1bHRzKG9wdHMgPSB7fSkge1xuXHRcdGlmICghb3B0cyB8fCB0eXBlb2Ygb3B0cyAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgb3B0aW9ucyB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cblx0XHRjb25zdCBlbnYgPSBlbnZpcm9ubWVudHMucmVzb2x2ZShvcHRzLmVudiB8fCB0aGlzLmVudik7XG5cdFx0aWYgKCFlbnYpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9WQUxVRShgSW52YWxpZCBlbnZpcm9ubWVudDogJHtvcHRzLmVudiB8fCB0aGlzLmVudn1gKTtcblx0XHR9XG5cblx0XHRvcHRzLmJhc2VVcmwgICAgICAgID0gb3B0cy5iYXNlVXJsIHx8IHRoaXMuYmFzZVVybCB8fCBlbnYuYmFzZVVybDtcblx0XHRvcHRzLmNsaWVudElkICAgICAgID0gb3B0cy5jbGllbnRJZCB8fCB0aGlzLmNsaWVudElkO1xuXHRcdG9wdHMuY2xpZW50U2VjcmV0ICAgPSBvcHRzLmNsaWVudFNlY3JldCB8fCB0aGlzLmNsaWVudFNlY3JldDtcblx0XHRvcHRzLmVudiAgICAgICAgICAgID0gZW52O1xuXHRcdG9wdHMubWVzc2FnZXMgICAgICAgPSBvcHRzLm1lc3NhZ2VzIHx8IHRoaXMubWVzc2FnZXM7XG5cdFx0b3B0cy5wYXNzd29yZCAgICAgICA9IG9wdHMucGFzc3dvcmQgfHwgdGhpcy5wYXNzd29yZDtcblx0XHRvcHRzLnJlYWxtICAgICAgICAgID0gb3B0cy5yZWFsbSB8fCB0aGlzLnJlYWxtO1xuXHRcdG9wdHMuc2VjcmV0RmlsZSAgICAgPSBvcHRzLnNlY3JldEZpbGUgfHwgdGhpcy5zZWNyZXRGaWxlO1xuXHRcdG9wdHMuc2VydmljZUFjY291bnQgPSBvcHRzLnNlcnZpY2VBY2NvdW50IHx8IHRoaXMuc2VydmljZUFjY291bnQ7XG5cdFx0b3B0cy50b2tlblN0b3JlICAgICA9IHRoaXMudG9rZW5TdG9yZTtcblx0XHRvcHRzLnVzZXJuYW1lICAgICAgID0gb3B0cy51c2VybmFtZSB8fCB0aGlzLnVzZXJuYW1lO1xuXG5cdFx0cmV0dXJuIG9wdHM7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBhdXRoZXRuaWNhdG9yIGJhc2VkIG9uIHRoZSBzdXBwbGllZCBvcHRpb25zLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge0F1dGhlbnRpY2F0b3J9IFtvcHRzLmF1dGhlbnRpY2F0b3JdIC0gQW4gYXV0aGVudGljYXRvciBpbnN0YW5jZSB0byB1c2UuIElmIG5vdFxuXHQgKiBzcGVjaWZpZWQsIG9uZSB3aWxsIGJlIGF1dG8tc2VsZWN0ZWQgYmFzZWQgb24gdGhlIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5jbGllbnRTZWNyZXRdIC0gVGhlIHNlY3JldCB0b2tlbiB0byB1c2UgdG8gYXV0aGVudGljYXRlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMucGFzc3dvcmRdIC0gVGhlIHBhc3N3b3JkIHVzZWQgdG8gYXV0aGVudGljYXRlLiBSZXF1aXJlcyBhIGB1c2VybmFtZWAuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5zZWNyZXRGaWxlXSAtIFRoZSBwYXRoIHRvIHRoZSBqd3Qgc2VjcmV0IGZpbGUuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuc2VydmljZUFjY291bnQ9ZmFsc2VdIC0gV2hlbiBgdHJ1ZWAsIGluZGljYXRlcyBhdXRoZW50aWNhdGlvbiBpcyBiZWluZ1xuXHQgKiByZXF1ZXN0ZWQgYnkgYSBzZXJ2aWNlIGluc3RlYWQgb2YgYSB1c2VyLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMudXNlcm5hbWVdIC0gVGhlIHVzZXJuYW1lIHVzZWQgdG8gYXV0aGVudGljYXRlLiBSZXF1aXJlcyBhIGBwYXNzd29yZGAuXG5cdCAqIEByZXR1cm5zIHtBdXRoZW50aWNhdG9yfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y3JlYXRlQXV0aGVudGljYXRvcihvcHRzID0ge30pIHtcblx0XHRpZiAob3B0cy5hdXRoZW50aWNhdG9yKSB7XG5cdFx0XHRpZiAoIShvcHRzLmF1dGhlbnRpY2F0b3IgaW5zdGFuY2VvZiBBdXRoZW50aWNhdG9yKSkge1xuXHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQVJVR01FTlQoJ0V4cGVjdGVkIGF1dGhlbnRpY2F0b3IgdG8gYmUgYW4gQXV0aGVudGljYXRvciBpbnN0YW5jZS4nKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBvcHRzLmF1dGhlbnRpY2F0b3I7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBvcHRzLnVzZXJuYW1lID09PSAnc3RyaW5nJyAmJiBvcHRzLnVzZXJuYW1lICYmIHR5cGVvZiBvcHRzLnBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuXHRcdFx0cmV0dXJuIG5ldyBPd25lclBhc3N3b3JkKG9wdHMpO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2Ygb3B0cy5jbGllbnRTZWNyZXQgPT09ICdzdHJpbmcnICYmIG9wdHMuY2xpZW50U2VjcmV0KSB7XG5cdFx0XHRyZXR1cm4gbmV3IENsaWVudFNlY3JldChvcHRzKTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIG9wdHMuc2VjcmV0RmlsZSA9PT0gJ3N0cmluZycgJiYgb3B0cy5zZWNyZXRGaWxlKSB7XG5cdFx0XHRyZXR1cm4gbmV3IFNpZ25lZEpXVChvcHRzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbmV3IFBLQ0Uob3B0cyk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBhY2Nlc3MgdG9rZW4uIElmIHRoZSBhdXRoZW50aWNhdG9yIGlzIGludGVyYWN0aXZlIGFuZCB0aGUgYXV0aGVudGljYXRvciBoYXMgbm90XG5cdCAqIHlldCBhdXRoZW50aWNhdGVkIHdpdGggdGhlIHNlcnZlciwgYW4gZXJyb3IgaXMgdGhyb3duLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IG9wdHMgLSBSZXF1aXJlZCBvcHRpb25zIG9yIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGhhc2ggb3IgYWNjb3VudFxuXHQgKiBuYW1lLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gb3B0cy5hY2NvdW50TmFtZSAtIFRoZSBhY2NvdW50IG5hbWUgdG8gcmV0cmlldmUuXG5cdCAqIEBwYXJhbSB7QXV0aGVudGljYXRvcn0gW29wdHMuYXV0aGVudGljYXRvcl0gLSBBbiBhdXRoZW50aWNhdG9yIGluc3RhbmNlIHRvIHVzZS4gSWYgbm90XG5cdCAqIHNwZWNpZmllZCwgb25lIHdpbGwgYmUgYXV0by1zZWxlY3RlZCBiYXNlZCBvbiB0aGUgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmJhc2VVcmxdIC0gVGhlIGJhc2UgVVJMIHRvIGZpbHRlciBieS5cblx0ICogQHJldHVybnMge1Byb21pc2U8P09iamVjdD59XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRhc3luYyBmaW5kKG9wdHMgPSB7fSkge1xuXHRcdGlmICghdGhpcy50b2tlblN0b3JlKSB7XG5cdFx0XHRsb2coJ0Nhbm5vdCBnZXQgYWNjb3VudCwgbm8gdG9rZW4gc3RvcmUnKTtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdGxldCBhdXRoZW50aWNhdG9yO1xuXG5cdFx0aWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJykge1xuXHRcdFx0b3B0cyA9IHRoaXMuYXBwbHlEZWZhdWx0cyh7IGFjY291bnROYW1lOiBvcHRzLCBoYXNoOiBvcHRzIH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmFwcGx5RGVmYXVsdHMob3B0cyk7XG5cdFx0XHRhdXRoZW50aWNhdG9yID0gdGhpcy5jcmVhdGVBdXRoZW50aWNhdG9yKG9wdHMpO1xuXHRcdFx0b3B0cy5oYXNoID0gYXV0aGVudGljYXRvci5oYXNoO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFjY291bnQgPSBhd2FpdCB0aGlzLnRva2VuU3RvcmUuZ2V0KG9wdHMpO1xuXG5cdFx0aWYgKGFjY291bnQpIHtcblx0XHRcdC8vIGNvcHkgb3ZlciB0aGUgY29ycmVjdCBhdXRoIHBhcmFtc1xuXHRcdFx0Zm9yIChjb25zdCBwcm9wIG9mIFsgJ2Jhc2VVcmwnLCAnY2xpZW50SWQnLCAncmVhbG0nLCAnZW52JyBdKSB7XG5cdFx0XHRcdGlmIChhY2NvdW50LmF1dGhbcHJvcF0gJiYgb3B0c1twcm9wXSAhPT0gYWNjb3VudC5hdXRoW3Byb3BdKSB7XG5cdFx0XHRcdFx0Y29uc3QgZnJvbSA9IHByb3AgPT09ICdlbnYnID8gb3B0c1twcm9wXS5uYW1lIDogb3B0c1twcm9wXTtcblx0XHRcdFx0XHRjb25zdCB0byA9IHByb3AgPT09ICdlbnYnID8gYWNjb3VudC5hdXRoW3Byb3BdLm5hbWUgOiBhY2NvdW50LmF1dGhbcHJvcF07XG5cdFx0XHRcdFx0bG9nKGBPdmVycmlkaW5nIFwiJHtwcm9wfVwiIGF1dGggcGFyYW0gd2l0aCBhY2NvdW50J3M6ICR7ZnJvbX0gLT4gJHt0b31gKTtcblx0XHRcdFx0XHRvcHRzW3Byb3BdID0gYWNjb3VudC5hdXRoW3Byb3BdO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRhdXRoZW50aWNhdG9yID0gdGhpcy5jcmVhdGVBdXRoZW50aWNhdG9yKG9wdHMpO1xuXG5cdFx0XHRpZiAoYWNjb3VudC5hdXRoLmV4cGlyZWQpIHtcblx0XHRcdFx0Ly8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGlmIHRoZSByZWZyZXNoIHRva2VuIGlzIHZhbGlkXG5cdFx0XHRcdGxvZyhgQWNjZXNzIHRva2VuIGZvciBhY2NvdW50ICR7YWNjb3VudC5uYW1lIHx8IGFjY291bnQuaGFzaH0gaXMgZXhwaXJlZGApO1xuXG5cdFx0XHRcdGlmIChhY2NvdW50LmV4cGlyZXMucmVmcmVzaCA8IERhdGUubm93KCkpIHtcblx0XHRcdFx0XHRsb2coYFVuYWJsZSB0byByZWZyZXNoIGFjY2VzcyB0b2tlbiBmb3IgYWNjb3VudCAke2FjY291bnQubmFtZSB8fCBhY2NvdW50Lmhhc2h9IGJlY2F1c2UgcmVmcmVzaCB0b2tlbiBpcyBhbHNvIGV4cGlyZWRgKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRsb2coYFJlZnJlc2hpbmcgYWNjZXNzIHRva2VuIGZvciBhY2NvdW50ICR7YWNjb3VudC5uYW1lIHx8IGFjY291bnQuaGFzaH1gKTtcblx0XHRcdFx0cmV0dXJuIGF3YWl0IGF1dGhlbnRpY2F0b3IuZ2V0VG9rZW4oKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGF3YWl0IGF1dGhlbnRpY2F0b3IuZ2V0SW5mbyhhY2NvdW50KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhIGxpc3Qgb2YgYWxsIHZhbGlkIGFjY2VzcyB0b2tlbnMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5Pn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGxpc3QoKSB7XG5cdFx0aWYgKHRoaXMudG9rZW5TdG9yZSkge1xuXHRcdFx0cmV0dXJuIGF3YWl0IHRoaXMudG9rZW5TdG9yZS5saXN0KCk7XG5cdFx0fVxuXHRcdHJldHVybiBbXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBdXRoZW50aWNhdGVzIHVzaW5nIHRoZSBjb25maWd1cmVkIGF1dGhlbnRpY2F0b3IuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfEFycmF5LjxTdHJpbmc+fSBbb3B0LmFwcF0gLSBTcGVjaWZ5IHRoZSBhcHAgdG8gb3BlbiB0aGUgYHRhcmdldGAgd2l0aCwgb3IgYW5cblx0ICogYXJyYXkgd2l0aCB0aGUgYXBwIGFuZCBhcHAgYXJndW1lbnRzLlxuXHQgKiBAcGFyYW0ge0F1dGhlbnRpY2F0b3J9IFtvcHRzLmF1dGhlbnRpY2F0b3JdIC0gQW4gYXV0aGVudGljYXRvciBpbnN0YW5jZSB0byB1c2UuIElmIG5vdFxuXHQgKiBzcGVjaWZpZWQsIG9uZSB3aWxsIGJlIGF1dG8tc2VsZWN0ZWQgYmFzZWQgb24gdGhlIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5iYXNlVXJsXSAtIFRoZSBiYXNlIFVSTCB0byB1c2UgZm9yIGFsbCBvdXRnb2luZyByZXF1ZXN0cy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmNsaWVudElkXSAtIFRoZSBjbGllbnQgaWQgdG8gc3BlY2lmeSB3aGVuIGF1dGhlbnRpY2F0aW5nLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuY29kZV0gLSBUaGUgYXV0aGVudGljYXRpb24gY29kZSBmcm9tIGEgc3VjY2Vzc2Z1bCBpbnRlcmFjdGl2ZSBsb2dpbi5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmVudj1wcm9kXSAtIFRoZSBlbnZpcm9ubWVudCBuYW1lLiBNdXN0IGJlIGBkZXZgLCBgcHJlcHJvZGAsIG9yIGBwcm9kYC5cblx0ICogVGhlIGVudmlyb25tZW50IGlzIGEgc2hvcnRoYW5kIHdheSBvZiBzcGVjaWZ5aW5nIGEgQXh3YXkgZGVmYXVsdCBiYXNlIFVSTC5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5tYW51YWw9ZmFsc2VdIC0gV2hlbiBgdHJ1ZWAsIGl0IHdpbGwgcmV0dXJuIHRoZSBhdXRoIFVSTCBpbnN0ZWFkIG9mXG5cdCAqIGxhdW5jaGluZyB0aGUgYXV0aCBVUkwgaW4gdGhlIGRlZmF1bHQgYnJvd3Nlci5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnJlYWxtXSAtIFRoZSBuYW1lIG9mIHRoZSByZWFsbSB0byBhdXRoZW50aWNhdGUgd2l0aC5cblx0ICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLnRpbWVvdXRdIC0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgdGltaW5nIG91dC5cblx0ICogRGVmYXVsdHMgdG8gdGhlIGBpbnRlcmFjdGl2ZUxvZ2luVGltZW91dGAgcHJvcGVydHkuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMud2FpdD1mYWxzZV0gLSBXYWl0IGZvciB0aGUgb3BlbmVkIGFwcCB0byBleGl0IGJlZm9yZSBmdWxmaWxsaW5nIHRoZVxuXHQgKiBwcm9taXNlLiBJZiBgZmFsc2VgIGl0J3MgZnVsZmlsbGVkIGltbWVkaWF0ZWx5IHdoZW4gb3BlbmluZyB0aGUgYXBwLlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZTxPYmplY3Q+fSBSZXNvbHZlcyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgYWNjZXNzIHRva2VuLCBhY2NvdW50IG5hbWUsIGFuZFxuXHQgKiB1c2VyIGluZm8uXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRhc3luYyBsb2dpbihvcHRzID0ge30pIHtcblx0XHR0aGlzLmFwcGx5RGVmYXVsdHMob3B0cyk7XG5cdFx0Y29uc3QgYXV0aGVudGljYXRvciA9IHRoaXMuY3JlYXRlQXV0aGVudGljYXRvcihvcHRzKTtcblx0XHRyZXR1cm4gYXdhaXQgYXV0aGVudGljYXRvci5sb2dpbihvcHRzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXZva2VzIGFsbCBvciBzcGVjaWZpYyBhdXRoZW50aWNhdGVkIGFjY291bnRzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFJlcXVpcmVkIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz58U3RyaW5nfSBvcHRzLmFjY291bnRzIC0gQSBsaXN0IG9mIGFjY291bnRzIG5hbWVzLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IG9wdHMuYWxsIC0gV2hlbiBgdHJ1ZWAsIHJldm9rZXMgYWxsIGFjY291bnRzLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuYmFzZVVybF0gLSBUaGUgYmFzZSBVUkwgdXNlZCB0byBmaWx0ZXIgYWNjb3VudHMuXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5Pn0gUmVzb2x2ZXMgYSBsaXN0IG9mIHJldm9rZWQgY3JlZGVudGlhbHMuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRhc3luYyBsb2dvdXQoeyBhY2NvdW50cywgYWxsLCBiYXNlVXJsIH0gPSB7fSkge1xuXHRcdGlmICghdGhpcy50b2tlblN0b3JlKSB7XG5cdFx0XHRsb2coJ05vIHRva2VuIHN0b3JlLCByZXR1cm5pbmcgZW1wdHkgYXJyYXknKTtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cblx0XHRpZiAoIWFsbCAmJiB0eXBlb2YgYWNjb3VudHMgIT09ICdzdHJpbmcnICYmICFBcnJheS5pc0FycmF5KGFjY291bnRzKSkge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBhY2NvdW50cyB0byBiZSBcImFsbFwiIG9yIGEgbGlzdCBvZiBhY2NvdW50cycpO1xuXHRcdH1cblxuXHRcdGlmICghYWxsICYmICFhY2NvdW50cy5sZW5ndGgpIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cblx0XHRsZXQgcmV2b2tlZDtcblx0XHRpZiAoYWxsKSB7XG5cdFx0XHRyZXZva2VkID0gYXdhaXQgdGhpcy50b2tlblN0b3JlLmNsZWFyKGJhc2VVcmwpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXZva2VkID0gYXdhaXQgdGhpcy50b2tlblN0b3JlLmRlbGV0ZShhY2NvdW50cywgYmFzZVVybCk7XG5cdFx0fVxuXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkocmV2b2tlZCkpIHtcblx0XHRcdGZvciAoY29uc3QgZW50cnkgb2YgcmV2b2tlZCkge1xuXHRcdFx0XHRjb25zdCB1cmwgPSBgJHtnZXRFbmRwb2ludHMoZW50cnkuYXV0aCkubG9nb3V0fT9pZF90b2tlbl9oaW50PSR7ZW50cnkuYXV0aC50b2tlbnMuaWRfdG9rZW59YDtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjb25zdCB7IHN0YXR1cyB9ID0gYXdhaXQgZ290KHVybCwgeyByZXNwb25zZVR5cGU6ICdqc29uJywgcmV0cnk6IDAgfSk7XG5cdFx0XHRcdFx0bG9nKGBTdWNjZXNzZnVsbHkgbG9nZ2VkIG91dCAke2hpZ2hsaWdodChlbnRyeS5uYW1lKX0gJHttYWdlbnRhKHN0YXR1cyl9ICR7bm90ZShgKCR7ZW50cnkuYmFzZVVybH0sICR7ZW50cnkucmVhbG19KWApfWApO1xuXHRcdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0XHRsb2coYEZhaWxlZCB0byBsb2cgb3V0ICR7aGlnaGxpZ2h0KGVudHJ5Lm5hbWUpfSAke2FsZXJ0KGVyci5zdGF0dXMpfSAke25vdGUoYCgke2VudHJ5LmJhc2VVcmx9LCAke2VudHJ5LnJlYWxtfSlgKX1gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXZva2VkO1xuXHR9XG5cblx0LyoqXG5cdCAqIERpc2NvdmVycyBhdmFpbGFibGUgZW5kcG9pbnRzIGJhc2VkIG9uIHRoZSBhdXRoZW50aWNhdGlvbiBzZXJ2ZXIncyBPcGVuSUQgY29uZmlndXJhdGlvbi5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmJhc2VVcmxdIC0gVGhlIGJhc2UgVVJMIHRvIHVzZSBmb3IgYWxsIG91dGdvaW5nIHJlcXVlc3RzLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuZW52PXByb2RdIC0gVGhlIGVudmlyb25tZW50IG5hbWUuIE11c3QgYmUgYGRldmAsIGBwcmVwcm9kYCwgb3IgYHByb2RgLlxuXHQgKiBUaGUgZW52aXJvbm1lbnQgaXMgYSBzaG9ydGhhbmQgd2F5IG9mIHNwZWNpZnlpbmcgYSBBeHdheSBkZWZhdWx0IGJhc2UgVVJMLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMucmVhbG1dIC0gVGhlIG5hbWUgb2YgdGhlIHJlYWxtIHRvIGF1dGhlbnRpY2F0ZSB3aXRoLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMudXJsXSAtIEFuIG9wdGlvbmFsIFVSTCB0byBkaXNjb3ZlciB0aGUgYXZhaWxhYmxlIGVuZHBvaW50cy5cblx0ICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0Pn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFzeW5jIHNlcnZlckluZm8ob3B0cyA9IHt9KSB7XG5cdFx0dGhpcy5hcHBseURlZmF1bHRzKG9wdHMpO1xuXG5cdFx0bGV0IHsgdXJsIH0gPSBvcHRzO1xuXG5cdFx0aWYgKCF1cmwpIHtcblx0XHRcdHVybCA9IGdldEVuZHBvaW50cyhvcHRzKS53ZWxsS25vd247XG5cdFx0fVxuXG5cdFx0aWYgKCF1cmwgfHwgdHlwZW9mIHVybCAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgVVJMIHRvIGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuXHRcdH1cblxuXHRcdHRyeSB7XG5cdFx0XHRsb2coYEZldGNoaW5nIHNlcnZlciBpbmZvOiAke3VybH0uLi5gKTtcblx0XHRcdHJldHVybiAoYXdhaXQgZ290KHVybCwgeyByZXNwb25zZVR5cGU6ICdqc29uJywgcmV0cnk6IDAgfSkpLmJvZHk7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRpZiAoZXJyLm5hbWUgIT09ICdQYXJzZUVycm9yJykge1xuXHRcdFx0XHRlcnIubWVzc2FnZSA9IGBGYWlsZWQgdG8gZ2V0IHNlcnZlciBpbmZvIChzdGF0dXMgJHtlcnIucmVzcG9uc2Uuc3RhdHVzQ29kZX0pYDtcblx0XHRcdH1cblx0XHRcdHRocm93IGVycjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlIHRoZSBzdG9yZWQgYWNjb3VudC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IGFjY291bnQgLSBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgYWNjb3VudCBpbmZvLlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFzeW5jIHVwZGF0ZUFjY291bnQoYWNjb3VudCkge1xuXHRcdGlmICh0aGlzLnRva2VuU3RvcmUpIHtcblx0XHRcdGF3YWl0IHRoaXMudG9rZW5TdG9yZS5zZXQoYWNjb3VudCk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCB7XG5cdEF1dGgsXG5cblx0QXV0aGVudGljYXRvcixcblx0Q2xpZW50U2VjcmV0LFxuXHRPd25lclBhc3N3b3JkLFxuXHRQS0NFLFxuXHRTaWduZWRKV1QsXG5cblx0RmlsZVN0b3JlLFxuXHRNZW1vcnlTdG9yZSxcblx0U2VjdXJlU3RvcmUsXG5cdFRva2VuU3RvcmUsXG5cblx0ZW52aXJvbm1lbnRzLFxuXHRnZXRFbmRwb2ludHMsXG5cdHNlcnZlclxufTtcbiJdLCJmaWxlIjoiaW5kZXguanMifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIkVycm9yIiwicHJlcGFyZVN0YWNrVHJhY2UiLCJyZXF1aXJlIiwibG9nIiwiYWxlcnQiLCJoaWdobGlnaHQiLCJtYWdlbnRhIiwibm90ZSIsInNub29wbG9nZyIsInN0eWxlcyIsIkF1dGgiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJFIiwiSU5WQUxJRF9BUkdVTUVOVCIsIk9iamVjdCIsImRlZmluZVByb3BlcnRpZXMiLCJiYXNlVXJsIiwidmFsdWUiLCJjbGllbnRJZCIsImNsaWVudFNlY3JldCIsImVudiIsIm1lc3NhZ2VzIiwicGFzc3dvcmQiLCJyZWFsbSIsInNlY3JldEZpbGUiLCJzZXJ2aWNlQWNjb3VudCIsInVzZXJuYW1lIiwidG9rZW5TdG9yZSIsIlRva2VuU3RvcmUiLCJJTlZBTElEX1BBUkFNRVRFUiIsInRva2VuU3RvcmVUeXBlIiwidW5kZWZpbmVkIiwiU2VjdXJlU3RvcmUiLCJlIiwiY29kZSIsIlNFQ1VSRV9TVE9SRV9VTkFWQUlMQUJMRSIsIkZpbGVTdG9yZSIsIk1lbW9yeVN0b3JlIiwiYXBwbHlEZWZhdWx0cyIsImVudmlyb25tZW50cyIsInJlc29sdmUiLCJJTlZBTElEX1ZBTFVFIiwiY3JlYXRlQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3IiLCJBdXRoZW50aWNhdG9yIiwiSU5WQUxJRF9BUlVHTUVOVCIsIk93bmVyUGFzc3dvcmQiLCJDbGllbnRTZWNyZXQiLCJTaWduZWRKV1QiLCJQS0NFIiwiZmluZCIsImFjY291bnROYW1lIiwiaGFzaCIsImFjY291bnQiLCJnZXQiLCJwcm9wIiwiYXV0aCIsImZyb20iLCJuYW1lIiwidG8iLCJleHBpcmVkIiwiZXhwaXJlcyIsInJlZnJlc2giLCJEYXRlIiwibm93IiwiZ2V0VG9rZW4iLCJnZXRJbmZvIiwibGlzdCIsImxvZ2luIiwibG9nb3V0IiwiYWNjb3VudHMiLCJhbGwiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJyZXZva2VkIiwiY2xlYXIiLCJkZWxldGUiLCJlbnRyeSIsInVybCIsInRva2VucyIsImlkX3Rva2VuIiwic3RhdHVzIiwicmVzcG9uc2VUeXBlIiwicmV0cnkiLCJlcnIiLCJzZXJ2ZXJJbmZvIiwid2VsbEtub3duIiwiYm9keSIsIm1lc3NhZ2UiLCJyZXNwb25zZSIsInN0YXR1c0NvZGUiLCJ1cGRhdGVBY2NvdW50Iiwic2V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7QUFDQTs7Ozs7Ozs7Ozs7O0FBdkJBO0FBQ0EsSUFBSSxDQUFDQSxLQUFLLENBQUNDLGlCQUFYLEVBQThCO0FBQzdCQyxFQUFBQSxPQUFPLENBQUMsNkJBQUQsQ0FBUDtBQUNBOztBQXNCRCxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBVSx3QkFBVSxjQUFWLENBQWhCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxLQUFGO0FBQVNDLEVBQUFBLFNBQVQ7QUFBb0JDLEVBQUFBLE9BQXBCO0FBQTZCQyxFQUFBQTtBQUE3QixJQUFzQ0MsbUJBQVVDLE1BQXREO0FBRUE7Ozs7QUFHZSxNQUFNQyxJQUFOLENBQVc7QUFDekI7Ozs7Ozs7QUFRQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQ0FDLEVBQUFBLFdBQVcsQ0FBQ0MsSUFBSSxHQUFHLEVBQVIsRUFBWTtBQUFBLHdDQWxDVixJQWtDVTs7QUFDdEIsUUFBSSxDQUFDQSxJQUFELElBQVMsT0FBT0EsSUFBUCxLQUFnQixRQUE3QixFQUF1QztBQUN0QyxZQUFNQyxnQkFBRUMsZ0JBQUYsQ0FBbUIsa0NBQW5CLENBQU47QUFDQTs7QUFFREMsSUFBQUEsTUFBTSxDQUFDQyxnQkFBUCxDQUF3QixJQUF4QixFQUE4QjtBQUM3QkMsTUFBQUEs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QUQsSUFBUSxPQUFPQSxHQUFQLEtBQWUsUUFBM0IsRUFBcUM7QUFDcEMsWUFBTW5FLGdCQUFFQyxnQkFBRixDQUFtQix1Q0FBbkIsQ0FBTjtBQUNBOztBQUVELFFBQUk7QUFDSFgsTUFBQUEsR0FBRyxDQUFFLHlCQUF3QjZFLEdBQUksS0FBOUIsQ0FBSDtBQUNBLGFBQU8sQ0FBQyxNQUFNLGtCQUFJQSxHQUFKLEVBQVM7QUFBRUksUUFBQUEsWUFBWSxFQUFFLE1BQWhCO0FBQXdCQyxRQUFBQSxLQUFLLEVBQUU7QUFBL0IsT0FBVCxDQUFQLEVBQXFESSxJQUE1RDtBQUNBLEtBSEQsQ0FHRSxPQUFPSCxHQUFQLEVBQVk7QUFDYixVQUFJQSxHQUFHLENBQUMzQixJQUFKLEtBQWEsWUFBakIsRUFBK0I7QUFDOUIyQixRQUFBQSxHQUFHLENBQUNJLE9BQUosR0FBZSxxQ0FBb0NKLEdBQUcsQ0FBQ0ssUUFBSixDQUFhQyxVQUFXLEdBQTNFO0FBQ0E7O0FBQ0QsWUFBTU4sR0FBTjtBQUNBO0FBQ0Q7QUFFRDs7Ozs7Ozs7O0FBT0EsUUFBTU8sYUFBTixDQUFvQnZDLE9BQXBCLEVBQTZCO0FBQzVCLFFBQUksS0FBSzFCLFVBQVQsRUFBcUI7QUFDcEIsWUFBTSxLQUFLQSxVQUFMLENBQWdCa0UsR0FBaEIsQ0FBb0J4QyxPQUFwQixDQUFOO0FBQ0E7QUFDRDs7QUFsWHdCIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAoIUVycm9yLnByZXBhcmVTdGFja1RyYWNlKSB7XG5cdHJlcXVpcmUoJ3NvdXJjZS1tYXAtc3VwcG9ydC9yZWdpc3RlcicpO1xufVxuXG5pbXBvcnQgRSBmcm9tICcuL2Vycm9ycyc7XG5cbmltcG9ydCBBdXRoZW50aWNhdG9yIGZyb20gJy4vYXV0aGVudGljYXRvcnMvYXV0aGVudGljYXRvcic7XG5pbXBvcnQgQ2xpZW50U2VjcmV0IGZyb20gJy4vYXV0aGVudGljYXRvcnMvY2xpZW50LXNlY3JldCc7XG5pbXBvcnQgT3duZXJQYXNzd29yZCBmcm9tICcuL2F1dGhlbnRpY2F0b3JzL293bmVyLXBhc3N3b3JkJztcbmltcG9ydCBQS0NFIGZyb20gJy4vYXV0aGVudGljYXRvcnMvcGtjZSc7XG5pbXBvcnQgU2lnbmVkSldUIGZyb20gJy4vYXV0aGVudGljYXRvcnMvc2lnbmVkLWp3dCc7XG5cbmltcG9ydCBGaWxlU3RvcmUgZnJvbSAnLi9zdG9yZXMvZmlsZS1zdG9yZSc7XG5pbXBvcnQgTWVtb3J5U3RvcmUgZnJvbSAnLi9zdG9yZXMvbWVtb3J5LXN0b3JlJztcbmltcG9ydCBTZWN1cmVTdG9yZSBmcm9tICcuL3N0b3Jlcy9zZWN1cmUtc3RvcmUnO1xuaW1wb3J0IFRva2VuU3RvcmUgZnJvbSAnLi9zdG9yZXMvdG9rZW4tc3RvcmUnO1xuXG5pbXBvcnQgZ2V0RW5kcG9pbnRzIGZyb20gJy4vZW5kcG9pbnRzJztcbmltcG9ydCBnb3QgZnJvbSAnZ290JztcbmltcG9ydCBzbm9vcGxvZ2cgZnJvbSAnc25vb3Bsb2dnJztcblxuaW1wb3J0ICogYXMgZW52aXJvbm1lbnRzIGZyb20gJy4vZW52aXJvbm1lbnRzJztcbmltcG9ydCAqIGFzIHNlcnZlciBmcm9tICcuL3NlcnZlcic7XG5cbmNvbnN0IHsgbG9nIH0gPSBzbm9vcGxvZ2coJ2FtcGxpZnktYXV0aCcpO1xuY29uc3QgeyBhbGVydCwgaGlnaGxpZ2h0LCBtYWdlbnRhLCBub3RlIH0gPSBzbm9vcGxvZ2cuc3R5bGVzO1xuXG4vKipcbiAqIEF1dGhlbnRpY2F0ZXMgdGhlIG1hY2hpbmUgYW5kIHJldHJlaXZlcyB0aGUgYXV0aCB0b2tlbi5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXV0aCB7XG5cdC8qKlxuXHQgKiBUaGUgc3RvcmUgdG8gcGVyc2lzdCB0aGUgdG9rZW4uXG5cdCAqXG5cdCAqIEB0eXBlIHtUb2tlblN0b3JlfVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdHRva2VuU3RvcmUgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGUgYXV0aGVudGljYXRpb24gaW5zdGFuY2UgYnkgc2V0dGluZyB0aGUgZGVmYXVsdCBzZXR0aW5ncyBhbmQgY3JlYXRpbmcgdGhlXG5cdCAqIHRva2VuIHN0b3JlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuYmFzZVVybF0gLSBUaGUgYmFzZSBVUkwgdG8gdXNlIGZvciBhbGwgb3V0Z29pbmcgcmVxdWVzdHMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5jbGllbnRJZF0gLSBUaGUgY2xpZW50IGlkIHRvIHNwZWNpZnkgd2hlbiBhdXRoZW50aWNhdGluZy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmNsaWVudFNlY3JldF0gLSBUaGUgc2VjcmV0IHRva2VuIHRvIHVzZSB0byBhdXRoZW50aWNhdGUuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5lbnY9cHJvZF0gLSBUaGUgZW52aXJvbm1lbnQgbmFtZS4gTXVzdCBiZSBgZGV2YCwgYHByZXByb2RgLCBvciBgcHJvZGAuXG5cdCAqIFRoZSBlbnZpcm9ubWVudCBpcyBhIHNob3J0aGFuZCB3YXkgb2Ygc3BlY2lmeWluZyBhIEF4d2F5IGRlZmF1bHQgYmFzZSBVUkwuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5ob21lRGlyXSAtIFRoZSBwYXRoIHRvIHRoZSBob21lIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBgbGliYFxuXHQgKiBkaXJlY3Rvcnkgd2hlcmUgYGtleXRhcmAgaXMgbG9jYXRlZC4gVGhpcyBvcHRpb24gaXMgcmVxdWlyZWQgd2hlbiBgdG9rZW5TdG9yZVR5cGVgIGlzIHNldCB0b1xuXHQgKiBgc2VjdXJlYCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5wYXNzd29yZF0gLSBUaGUgcGFzc3dvcmQgdXNlZCB0byBhdXRoZW50aWNhdGUuIFJlcXVpcmVzIGEgYHVzZXJuYW1lYC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnJlYWxtXSAtIFRoZSBuYW1lIG9mIHRoZSByZWFsbSB0byBhdXRoZW50aWNhdGUgd2l0aC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnNlY3JldEZpbGVdIC0gVGhlIHBhdGggdG8gdGhlIGp3dCBzZWNyZXQgZmlsZS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnNlY3VyZVNlcnZpY2VOYW1lPVwiQXh3YXkgQU1QTElGWSBBdXRoXCJdIC0gVGhlIG5hbWUgb2YgdGhlIGNvbnN1bWVyXG5cdCAqIHVzaW5nIHRoaXMgbGlicmFyeSB3aGVuIHVzaW5nIHRoZSBcInNlY3VyZVwiIHRva2VuIHN0b3JlLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLnNlcnZpY2VBY2NvdW50PWZhbHNlXSAtIFdoZW4gYHRydWVgLCBpbmRpY2F0ZXMgYXV0aGVudGljYXRpb24gaXMgYmVpbmdcblx0ICogcmVxdWVzdGVkIGJ5IGEgc2VydmljZSBpbnN0ZWFkIG9mIGEgdXNlci5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy50b2tlblJlZnJlc2hUaHJlc2hvbGQ9MF0gLSBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIHRoZSBhY2Nlc3Ncblx0ICogdG9rZW4gZXhwaXJlcyBhbmQgc2hvdWxkIGJlIHJlZnJlc2hlZC5cblx0ICogQHBhcmFtIHtUb2tlblN0b3JlfSBbb3B0cy50b2tlblN0b3JlXSAtIEEgdG9rZW4gc3RvcmUgaW5zdGFuY2UgZm9yIHBlcnNpc3RpbmcgdGhlIHRva2Vucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnRva2VuU3RvcmVEaXJdIC0gVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgdG9rZW4gc3RvcmUgaXMgc2F2ZWQuIFJlcXVpcmVkXG5cdCAqIHdoZW4gdGhlIGB0b2tlblN0b3JlVHlwZWAgaXMgYHNlY3VyZWAgb3IgYGZpbGVgLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMudG9rZW5TdG9yZVR5cGU9c2VjdXJlXSAtIFRoZSB0eXBlIG9mIHN0b3JlIHRvIHBlcnNpc3QgdGhlIGFjY2VzcyB0b2tlbi5cblx0ICogUG9zc2libGUgdmFsdWVzIGluY2x1ZGU6IGBhdXRvYCwgYHNlY3VyZWAsIGBmaWxlYCwgb3IgYG1lbW9yeWAuIElmIHZhbHVlIGlzIGBhdXRvYCwgaXQgd2lsbFxuXHQgKiBhdHRlbXB0IHRvIHVzZSBgc2VjdXJlYCwgdGhlbiBgZmlsZWAsIHRoZW4gYG1lbW9yeWAuIElmIHNldCB0byBgbnVsbGAsIHRoZW4gaXQgd2lsbCBub3Rcblx0ICogcGVyc2lzdCB0aGUgYWNjZXNzIHRva2VuLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMudXNlcm5hbWVdIC0gVGhlIHVzZXJuYW1lIHVzZWQgdG8gYXV0aGVudGljYXRlLiBSZXF1aXJlcyBhIGBwYXNzd29yZGAuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcblx0XHRpZiAoIW9wdHMgfHwgdHlwZW9mIG9wdHMgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIG9wdGlvbnMgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0fVxuXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcywge1xuXHRcdFx0YmFzZVVybDogICAgICAgIHsgdmFsdWU6IG9wdHMuYmFzZVVybCB9LFxuXHRcdFx0Y2xpZW50SWQ6ICAgICAgIHsgdmFsdWU6IG9wdHMuY2xpZW50SWQgfSxcblx0XHRcdGNsaWVudFNlY3JldDogICB7IHZhbHVlOiBvcHRzLmNsaWVudFNlY3JldCB9LFxuXHRcdFx0ZW52OiAgICAgICAgICAgIHsgdmFsdWU6IG9wdHMuZW52IH0sXG5cdFx0XHRtZXNzYWdlczogICAgICAgeyB2YWx1ZTogb3B0cy5tZXNzYWdlcyB9LFxuXHRcdFx0cGFzc3dvcmQ6ICAgICAgIHsgdmFsdWU6IG9wdHMucGFzc3dvcmQgfSxcblx0XHRcdHJlYWxtOiAgICAgICAgICB7IHZhbHVlOiBvcHRzLnJlYWxtIH0sXG5cdFx0XHRzZWNyZXRGaWxlOiAgICAgeyB2YWx1ZTogb3B0cy5zZWNyZXRGaWxlIH0sXG5cdFx0XHRzZXJ2aWNlQWNjb3VudDogeyB2YWx1ZTogb3B0cy5zZXJ2aWNlQWNjb3VudCB9LFxuXHRcdFx0dXNlcm5hbWU6ICAgICAgIHsgdmFsdWU6IG9wdHMudXNlcm5hbWUgfVxuXHRcdH0pO1xuXG5cdFx0aWYgKG9wdHMudG9rZW5TdG9yZSkge1xuXHRcdFx0aWYgKCEob3B0cy50b2tlblN0b3JlIGluc3RhbmNlb2YgVG9rZW5TdG9yZSkpIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX1BBUkFNRVRFUignRXhwZWN0ZWQgdGhlIHRva2VuIHN0b3JlIHRvIGJlIGEgXCJUb2tlblN0b3JlXCIgaW5zdGFuY2UnKTtcblx0XHRcdH1cblx0XHRcdHRoaXMudG9rZW5TdG9yZSA9IG9wdHMudG9rZW5TdG9yZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgdG9rZW5TdG9yZVR5cGUgPSBvcHRzLnRva2VuU3RvcmVUeXBlID09PSB1bmRlZmluZWQgPyAnc2VjdXJlJyA6IG9wdHMudG9rZW5TdG9yZVR5cGU7XG5cdFx0XHRzd2l0Y2ggKHRva2VuU3RvcmVUeXBlKSB7XG5cdFx0XHRcdGNhc2UgJ2F1dG8nOlxuXHRcdFx0XHRjYXNlICdzZWN1cmUnOlxuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHR0aGlzLnRva2VuU3RvcmUgPSBuZXcgU2VjdXJlU3RvcmUob3B0cyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0XHQvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cblx0XHRcdFx0XHRcdGlmICh0b2tlblN0b3JlVHlwZSA9PT0gJ2F1dG8nKSB7XG5cdFx0XHRcdFx0XHRcdC8vIGxldCAnYXV0bycgZmFsbCB0aHJvdWdoXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGUuY29kZSA9PT0gJ0VSUl9LRVlUQVJfTk9UX0ZPVU5EJykge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBFLlNFQ1VSRV9TVE9SRV9VTkFWQUlMQUJMRSgnU2VjdXJlIHRva2VuIHN0b3JlIGlzIG5vdCBhdmFpbGFibGUuXFxuUGxlYXNlIHJlaW5zdGFsbCBvciByZWJ1aWxkIHRoaXMgYXBwbGljYXRpb24uJyk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRjYXNlICdmaWxlJzpcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0dGhpcy50b2tlblN0b3JlID0gbmV3IEZpbGVTdG9yZShvcHRzKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRcdC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHRcdFx0XHRcdFx0aWYgKHRva2VuU3RvcmVUeXBlID09PSAnYXV0bycgJiYgZS5jb2RlID09PSAnRVJSX01JU1NJTkdfUkVRVUlSRURfUEFSQU1FVEVSJykge1xuXHRcdFx0XHRcdFx0XHQvLyBsZXQgJ2F1dG8nIGZhbGwgdGhyb3VnaFxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FzZSAnbWVtb3J5Jzpcblx0XHRcdFx0XHR0aGlzLnRva2VuU3RvcmUgPSBuZXcgTWVtb3J5U3RvcmUob3B0cyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEVuc3VyZXMgdGhlIG9wdGlvbnMgY29udGFpbnMgdGhlIGNvbmZpZ3VyYWJsZSBzZXR0aW5ncy4gVmFsaWRhdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSBjb2RlXG5cdCAqIHJlcXVpcmluZyB0aGUgdmFsdWVzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBvcHRpb25zLlxuXHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGFwcGx5RGVmYXVsdHMob3B0cyA9IHt9KSB7XG5cdFx0aWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBvcHRpb25zIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGVudiA9IGVudmlyb25tZW50cy5yZXNvbHZlKG9wdHMuZW52IHx8IHRoaXMuZW52KTtcblx0XHRpZiAoIWVudikge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX1ZBTFVFKGBJbnZhbGlkIGVudmlyb25tZW50OiAke29wdHMuZW52IHx8IHRoaXMuZW52fWApO1xuXHRcdH1cblxuXHRcdG9wdHMuYmFzZVVybCAgICAgICAgPSBvcHRzLmJhc2VVcmwgfHwgdGhpcy5iYXNlVXJsIHx8IGVudi5iYXNlVXJsO1xuXHRcdG9wdHMuY2xpZW50SWQgICAgICAgPSBvcHRzLmNsaWVudElkIHx8IHRoaXMuY2xpZW50SWQ7XG5cdFx0b3B0cy5jbGllbnRTZWNyZXQgICA9IG9wdHMuY2xpZW50U2VjcmV0IHx8IHRoaXMuY2xpZW50U2VjcmV0O1xuXHRcdG9wdHMuZW52ICAgICAgICAgICAgPSBlbnY7XG5cdFx0b3B0cy5tZXNzYWdlcyAgICAgICA9IG9wdHMubWVzc2FnZXMgfHwgdGhpcy5tZXNzYWdlcztcblx0XHRvcHRzLnBhc3N3b3JkICAgICAgID0gb3B0cy5wYXNzd29yZCB8fCB0aGlzLnBhc3N3b3JkO1xuXHRcdG9wdHMucmVhbG0gICAgICAgICAgPSBvcHRzLnJlYWxtIHx8IHRoaXMucmVhbG07XG5cdFx0b3B0cy5zZWNyZXRGaWxlICAgICA9IG9wdHMuc2VjcmV0RmlsZSB8fCB0aGlzLnNlY3JldEZpbGU7XG5cdFx0b3B0cy5zZXJ2aWNlQWNjb3VudCA9IG9wdHMuc2VydmljZUFjY291bnQgfHwgdGhpcy5zZXJ2aWNlQWNjb3VudDtcblx0XHRvcHRzLnRva2VuU3RvcmUgICAgID0gdGhpcy50b2tlblN0b3JlO1xuXHRcdG9wdHMudXNlcm5hbWUgICAgICAgPSBvcHRzLnVzZXJuYW1lIHx8IHRoaXMudXNlcm5hbWU7XG5cblx0XHRyZXR1cm4gb3B0cztcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGF1dGhldG5pY2F0b3IgYmFzZWQgb24gdGhlIHN1cHBsaWVkIG9wdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7QXV0aGVudGljYXRvcn0gW29wdHMuYXV0aGVudGljYXRvcl0gLSBBbiBhdXRoZW50aWNhdG9yIGluc3RhbmNlIHRvIHVzZS4gSWYgbm90XG5cdCAqIHNwZWNpZmllZCwgb25lIHdpbGwgYmUgYXV0by1zZWxlY3RlZCBiYXNlZCBvbiB0aGUgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmNsaWVudFNlY3JldF0gLSBUaGUgc2VjcmV0IHRva2VuIHRvIHVzZSB0byBhdXRoZW50aWNhdGUuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5wYXNzd29yZF0gLSBUaGUgcGFzc3dvcmQgdXNlZCB0byBhdXRoZW50aWNhdGUuIFJlcXVpcmVzIGEgYHVzZXJuYW1lYC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnNlY3JldEZpbGVdIC0gVGhlIHBhdGggdG8gdGhlIGp3dCBzZWNyZXQgZmlsZS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5zZXJ2aWNlQWNjb3VudD1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgaW5kaWNhdGVzIGF1dGhlbnRpY2F0aW9uIGlzIGJlaW5nXG5cdCAqIHJlcXVlc3RlZCBieSBhIHNlcnZpY2UgaW5zdGVhZCBvZiBhIHVzZXIuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy51c2VybmFtZV0gLSBUaGUgdXNlcm5hbWUgdXNlZCB0byBhdXRoZW50aWNhdGUuIFJlcXVpcmVzIGEgYHBhc3N3b3JkYC5cblx0ICogQHJldHVybnMge0F1dGhlbnRpY2F0b3J9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjcmVhdGVBdXRoZW50aWNhdG9yKG9wdHMgPSB7fSkge1xuXHRcdGlmIChvcHRzLmF1dGhlbnRpY2F0b3IpIHtcblx0XHRcdGlmICghKG9wdHMuYXV0aGVudGljYXRvciBpbnN0YW5jZW9mIEF1dGhlbnRpY2F0b3IpKSB7XG5cdFx0XHRcdHRocm93IEUuSU5WQUxJRF9BUlVHTUVOVCgnRXhwZWN0ZWQgYXV0aGVudGljYXRvciB0byBiZSBhbiBBdXRoZW50aWNhdG9yIGluc3RhbmNlLicpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG9wdHMuYXV0aGVudGljYXRvcjtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIG9wdHMudXNlcm5hbWUgPT09ICdzdHJpbmcnICYmIG9wdHMudXNlcm5hbWUgJiYgdHlwZW9mIG9wdHMucGFzc3dvcmQgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRyZXR1cm4gbmV3IE93bmVyUGFzc3dvcmQob3B0cyk7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBvcHRzLmNsaWVudFNlY3JldCA9PT0gJ3N0cmluZycgJiYgb3B0cy5jbGllbnRTZWNyZXQpIHtcblx0XHRcdHJldHVybiBuZXcgQ2xpZW50U2VjcmV0KG9wdHMpO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2Ygb3B0cy5zZWNyZXRGaWxlID09PSAnc3RyaW5nJyAmJiBvcHRzLnNlY3JldEZpbGUpIHtcblx0XHRcdHJldHVybiBuZXcgU2lnbmVkSldUKG9wdHMpO1xuXHRcdH1cblxuXHRcdHJldHVybiBuZXcgUEtDRShvcHRzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGFjY2VzcyB0b2tlbi4gSWYgdGhlIGF1dGhlbnRpY2F0b3IgaXMgaW50ZXJhY3RpdmUgYW5kIHRoZSBhdXRoZW50aWNhdG9yIGhhcyBub3Rcblx0ICogeWV0IGF1dGhlbnRpY2F0ZWQgd2l0aCB0aGUgc2VydmVyLCBhbiBlcnJvciBpcyB0aHJvd24uXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ30gb3B0cyAtIFJlcXVpcmVkIG9wdGlvbnMgb3IgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgaGFzaCBvciBhY2NvdW50XG5cdCAqIG5hbWUuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBvcHRzLmFjY291bnROYW1lIC0gVGhlIGFjY291bnQgbmFtZSB0byByZXRyaWV2ZS5cblx0ICogQHBhcmFtIHtBdXRoZW50aWNhdG9yfSBbb3B0cy5hdXRoZW50aWNhdG9yXSAtIEFuIGF1dGhlbnRpY2F0b3IgaW5zdGFuY2UgdG8gdXNlLiBJZiBub3Rcblx0ICogc3BlY2lmaWVkLCBvbmUgd2lsbCBiZSBhdXRvLXNlbGVjdGVkIGJhc2VkIG9uIHRoZSBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuYmFzZVVybF0gLSBUaGUgYmFzZSBVUkwgdG8gZmlsdGVyIGJ5LlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZTw/T2JqZWN0Pn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGZpbmQob3B0cyA9IHt9KSB7XG5cdFx0aWYgKCF0aGlzLnRva2VuU3RvcmUpIHtcblx0XHRcdGxvZygnQ2Fubm90IGdldCBhY2NvdW50LCBubyB0b2tlbiBzdG9yZScpO1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXG5cdFx0bGV0IGF1dGhlbnRpY2F0b3I7XG5cblx0XHRpZiAodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRvcHRzID0gdGhpcy5hcHBseURlZmF1bHRzKHsgYWNjb3VudE5hbWU6IG9wdHMsIGhhc2g6IG9wdHMgfSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuYXBwbHlEZWZhdWx0cyhvcHRzKTtcblx0XHRcdGF1dGhlbnRpY2F0b3IgPSB0aGlzLmNyZWF0ZUF1dGhlbnRpY2F0b3Iob3B0cyk7XG5cdFx0XHRvcHRzLmhhc2ggPSBhdXRoZW50aWNhdG9yLmhhc2g7XG5cdFx0fVxuXG5cdFx0Y29uc3QgYWNjb3VudCA9IGF3YWl0IHRoaXMudG9rZW5TdG9yZS5nZXQob3B0cyk7XG5cblx0XHRpZiAoYWNjb3VudCkge1xuXHRcdFx0Ly8gY29weSBvdmVyIHRoZSBjb3JyZWN0IGF1dGggcGFyYW1zXG5cdFx0XHRmb3IgKGNvbnN0IHByb3Agb2YgWyAnYmFzZVVybCcsICdjbGllbnRJZCcsICdyZWFsbScsICdlbnYnIF0pIHtcblx0XHRcdFx0aWYgKGFjY291bnQuYXV0aFtwcm9wXSAmJiBvcHRzW3Byb3BdICE9PSBhY2NvdW50LmF1dGhbcHJvcF0pIHtcblx0XHRcdFx0XHRjb25zdCBmcm9tID0gcHJvcCA9PT0gJ2VudicgPyBvcHRzW3Byb3BdLm5hbWUgOiBvcHRzW3Byb3BdO1xuXHRcdFx0XHRcdGNvbnN0IHRvID0gcHJvcCA9PT0gJ2VudicgPyBhY2NvdW50LmF1dGhbcHJvcF0ubmFtZSA6IGFjY291bnQuYXV0aFtwcm9wXTtcblx0XHRcdFx0XHRsb2coYE92ZXJyaWRpbmcgXCIke3Byb3B9XCIgYXV0aCBwYXJhbSB3aXRoIGFjY291bnQnczogJHtmcm9tfSAtPiAke3RvfWApO1xuXHRcdFx0XHRcdG9wdHNbcHJvcF0gPSBhY2NvdW50LmF1dGhbcHJvcF07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGF1dGhlbnRpY2F0b3IgPSB0aGlzLmNyZWF0ZUF1dGhlbnRpY2F0b3Iob3B0cyk7XG5cblx0XHRcdGlmIChhY2NvdW50LmF1dGguZXhwaXJlZCkge1xuXHRcdFx0XHQvLyByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gaWYgdGhlIHJlZnJlc2ggdG9rZW4gaXMgdmFsaWRcblx0XHRcdFx0bG9nKGBBY2Nlc3MgdG9rZW4gZm9yIGFjY291bnQgJHthY2NvdW50Lm5hbWUgfHwgYWNjb3VudC5oYXNofSBpcyBleHBpcmVkYCk7XG5cblx0XHRcdFx0aWYgKGFjY291bnQuYXV0aC5leHBpcmVzLnJlZnJlc2ggPCBEYXRlLm5vdygpKSB7XG5cdFx0XHRcdFx0bG9nKGBVbmFibGUgdG8gcmVmcmVzaCBhY2Nlc3MgdG9rZW4gZm9yIGFjY291bnQgJHthY2NvdW50Lm5hbWUgfHwgYWNjb3VudC5oYXNofSBiZWNhdXNlIHJlZnJlc2ggdG9rZW4gaXMgYWxzbyBleHBpcmVkYCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0bG9nKGBSZWZyZXNoaW5nIGFjY2VzcyB0b2tlbiBmb3IgYWNjb3VudCAke2FjY291bnQubmFtZSB8fCBhY2NvdW50Lmhhc2h9YCk7XG5cdFx0XHRcdHJldHVybiBhd2FpdCBhdXRoZW50aWNhdG9yLmdldFRva2VuKCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBhd2FpdCBhdXRoZW50aWNhdG9yLmdldEluZm8oYWNjb3VudCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYSBsaXN0IG9mIGFsbCB2YWxpZCBhY2Nlc3MgdG9rZW5zLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheT59XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRhc3luYyBsaXN0KCkge1xuXHRcdGlmICh0aGlzLnRva2VuU3RvcmUpIHtcblx0XHRcdHJldHVybiBhd2FpdCB0aGlzLnRva2VuU3RvcmUubGlzdCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gW107XG5cdH1cblxuXHQvKipcblx0ICogQXV0aGVudGljYXRlcyB1c2luZyB0aGUgY29uZmlndXJlZCBhdXRoZW50aWNhdG9yLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xBcnJheS48U3RyaW5nPn0gW29wdC5hcHBdIC0gU3BlY2lmeSB0aGUgYXBwIHRvIG9wZW4gdGhlIGB0YXJnZXRgIHdpdGgsIG9yIGFuXG5cdCAqIGFycmF5IHdpdGggdGhlIGFwcCBhbmQgYXBwIGFyZ3VtZW50cy5cblx0ICogQHBhcmFtIHtBdXRoZW50aWNhdG9yfSBbb3B0cy5hdXRoZW50aWNhdG9yXSAtIEFuIGF1dGhlbnRpY2F0b3IgaW5zdGFuY2UgdG8gdXNlLiBJZiBub3Rcblx0ICogc3BlY2lmaWVkLCBvbmUgd2lsbCBiZSBhdXRvLXNlbGVjdGVkIGJhc2VkIG9uIHRoZSBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuYmFzZVVybF0gLSBUaGUgYmFzZSBVUkwgdG8gdXNlIGZvciBhbGwgb3V0Z29pbmcgcmVxdWVzdHMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5jbGllbnRJZF0gLSBUaGUgY2xpZW50IGlkIHRvIHNwZWNpZnkgd2hlbiBhdXRoZW50aWNhdGluZy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmNvZGVdIC0gVGhlIGF1dGhlbnRpY2F0aW9uIGNvZGUgZnJvbSBhIHN1Y2Nlc3NmdWwgaW50ZXJhY3RpdmUgbG9naW4uXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5lbnY9cHJvZF0gLSBUaGUgZW52aXJvbm1lbnQgbmFtZS4gTXVzdCBiZSBgZGV2YCwgYHByZXByb2RgLCBvciBgcHJvZGAuXG5cdCAqIFRoZSBlbnZpcm9ubWVudCBpcyBhIHNob3J0aGFuZCB3YXkgb2Ygc3BlY2lmeWluZyBhIEF4d2F5IGRlZmF1bHQgYmFzZSBVUkwuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMubWFudWFsPWZhbHNlXSAtIFdoZW4gYHRydWVgLCBpdCB3aWxsIHJldHVybiB0aGUgYXV0aCBVUkwgaW5zdGVhZCBvZlxuXHQgKiBsYXVuY2hpbmcgdGhlIGF1dGggVVJMIGluIHRoZSBkZWZhdWx0IGJyb3dzZXIuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5yZWFsbV0gLSBUaGUgbmFtZSBvZiB0aGUgcmVhbG0gdG8gYXV0aGVudGljYXRlIHdpdGguXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy50aW1lb3V0XSAtIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHRpbWluZyBvdXQuXG5cdCAqIERlZmF1bHRzIHRvIHRoZSBgaW50ZXJhY3RpdmVMb2dpblRpbWVvdXRgIHByb3BlcnR5LlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLndhaXQ9ZmFsc2VdIC0gV2FpdCBmb3IgdGhlIG9wZW5lZCBhcHAgdG8gZXhpdCBiZWZvcmUgZnVsZmlsbGluZyB0aGVcblx0ICogcHJvbWlzZS4gSWYgYGZhbHNlYCBpdCdzIGZ1bGZpbGxlZCBpbW1lZGlhdGVseSB3aGVuIG9wZW5pbmcgdGhlIGFwcC5cblx0ICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0Pn0gUmVzb2x2ZXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGFjY2VzcyB0b2tlbiwgYWNjb3VudCBuYW1lLCBhbmRcblx0ICogdXNlciBpbmZvLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgbG9naW4ob3B0cyA9IHt9KSB7XG5cdFx0dGhpcy5hcHBseURlZmF1bHRzKG9wdHMpO1xuXHRcdGNvbnN0IGF1dGhlbnRpY2F0b3IgPSB0aGlzLmNyZWF0ZUF1dGhlbnRpY2F0b3Iob3B0cyk7XG5cdFx0cmV0dXJuIGF3YWl0IGF1dGhlbnRpY2F0b3IubG9naW4ob3B0cyk7XG5cdH1cblxuXHQvKipcblx0ICogUmV2b2tlcyBhbGwgb3Igc3BlY2lmaWMgYXV0aGVudGljYXRlZCBhY2NvdW50cy5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBSZXF1aXJlZCBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fFN0cmluZ30gb3B0cy5hY2NvdW50cyAtIEEgbGlzdCBvZiBhY2NvdW50cyBuYW1lcy5cblx0ICogQHBhcmFtIHtCb29sZWFufSBvcHRzLmFsbCAtIFdoZW4gYHRydWVgLCByZXZva2VzIGFsbCBhY2NvdW50cy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmJhc2VVcmxdIC0gVGhlIGJhc2UgVVJMIHVzZWQgdG8gZmlsdGVyIGFjY291bnRzLlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheT59IFJlc29sdmVzIGEgbGlzdCBvZiByZXZva2VkIGNyZWRlbnRpYWxzLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgbG9nb3V0KHsgYWNjb3VudHMsIGFsbCwgYmFzZVVybCB9ID0ge30pIHtcblx0XHRpZiAoIXRoaXMudG9rZW5TdG9yZSkge1xuXHRcdFx0bG9nKCdObyB0b2tlbiBzdG9yZSwgcmV0dXJuaW5nIGVtcHR5IGFycmF5Jyk7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXG5cdFx0aWYgKCFhbGwgJiYgdHlwZW9mIGFjY291bnRzICE9PSAnc3RyaW5nJyAmJiAhQXJyYXkuaXNBcnJheShhY2NvdW50cykpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgYWNjb3VudHMgdG8gYmUgXCJhbGxcIiBvciBhIGxpc3Qgb2YgYWNjb3VudHMnKTtcblx0XHR9XG5cblx0XHRpZiAoIWFsbCAmJiAhYWNjb3VudHMubGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXG5cdFx0bGV0IHJldm9rZWQ7XG5cdFx0aWYgKGFsbCkge1xuXHRcdFx0cmV2b2tlZCA9IGF3YWl0IHRoaXMudG9rZW5TdG9yZS5jbGVhcihiYXNlVXJsKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV2b2tlZCA9IGF3YWl0IHRoaXMudG9rZW5TdG9yZS5kZWxldGUoYWNjb3VudHMsIGJhc2VVcmwpO1xuXHRcdH1cblxuXHRcdGlmIChBcnJheS5pc0FycmF5KHJldm9rZWQpKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGVudHJ5IG9mIHJldm9rZWQpIHtcblx0XHRcdFx0Y29uc3QgdXJsID0gYCR7Z2V0RW5kcG9pbnRzKGVudHJ5LmF1dGgpLmxvZ291dH0/aWRfdG9rZW5faGludD0ke2VudHJ5LmF1dGgudG9rZW5zLmlkX3Rva2VufWA7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Y29uc3QgeyBzdGF0dXMgfSA9IGF3YWl0IGdvdCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnanNvbicsIHJldHJ5OiAwIH0pO1xuXHRcdFx0XHRcdGxvZyhgU3VjY2Vzc2Z1bGx5IGxvZ2dlZCBvdXQgJHtoaWdobGlnaHQoZW50cnkubmFtZSl9ICR7bWFnZW50YShzdGF0dXMpfSAke25vdGUoYCgke2VudHJ5LmJhc2VVcmx9LCAke2VudHJ5LnJlYWxtfSlgKX1gKTtcblx0XHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdFx0bG9nKGBGYWlsZWQgdG8gbG9nIG91dCAke2hpZ2hsaWdodChlbnRyeS5uYW1lKX0gJHthbGVydChlcnIuc3RhdHVzKX0gJHtub3RlKGAoJHtlbnRyeS5iYXNlVXJsfSwgJHtlbnRyeS5yZWFsbX0pYCl9YCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmV2b2tlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNjb3ZlcnMgYXZhaWxhYmxlIGVuZHBvaW50cyBiYXNlZCBvbiB0aGUgYXV0aGVudGljYXRpb24gc2VydmVyJ3MgT3BlbklEIGNvbmZpZ3VyYXRpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5iYXNlVXJsXSAtIFRoZSBiYXNlIFVSTCB0byB1c2UgZm9yIGFsbCBvdXRnb2luZyByZXF1ZXN0cy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmVudj1wcm9kXSAtIFRoZSBlbnZpcm9ubWVudCBuYW1lLiBNdXN0IGJlIGBkZXZgLCBgcHJlcHJvZGAsIG9yIGBwcm9kYC5cblx0ICogVGhlIGVudmlyb25tZW50IGlzIGEgc2hvcnRoYW5kIHdheSBvZiBzcGVjaWZ5aW5nIGEgQXh3YXkgZGVmYXVsdCBiYXNlIFVSTC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnJlYWxtXSAtIFRoZSBuYW1lIG9mIHRoZSByZWFsbSB0byBhdXRoZW50aWNhdGUgd2l0aC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnVybF0gLSBBbiBvcHRpb25hbCBVUkwgdG8gZGlzY292ZXIgdGhlIGF2YWlsYWJsZSBlbmRwb2ludHMuXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRhc3luYyBzZXJ2ZXJJbmZvKG9wdHMgPSB7fSkge1xuXHRcdHRoaXMuYXBwbHlEZWZhdWx0cyhvcHRzKTtcblxuXHRcdGxldCB7IHVybCB9ID0gb3B0cztcblxuXHRcdGlmICghdXJsKSB7XG5cdFx0XHR1cmwgPSBnZXRFbmRwb2ludHMob3B0cykud2VsbEtub3duO1xuXHRcdH1cblxuXHRcdGlmICghdXJsIHx8IHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIFVSTCB0byBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcblx0XHR9XG5cblx0XHR0cnkge1xuXHRcdFx0bG9nKGBGZXRjaGluZyBzZXJ2ZXIgaW5mbzogJHt1cmx9Li4uYCk7XG5cdFx0XHRyZXR1cm4gKGF3YWl0IGdvdCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnanNvbicsIHJldHJ5OiAwIH0pKS5ib2R5O1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0aWYgKGVyci5uYW1lICE9PSAnUGFyc2VFcnJvcicpIHtcblx0XHRcdFx0ZXJyLm1lc3NhZ2UgPSBgRmFpbGVkIHRvIGdldCBzZXJ2ZXIgaW5mbyAoc3RhdHVzICR7ZXJyLnJlc3BvbnNlLnN0YXR1c0NvZGV9KWA7XG5cdFx0XHR9XG5cdFx0XHR0aHJvdyBlcnI7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZSB0aGUgc3RvcmVkIGFjY291bnQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBhY2NvdW50IC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGFjY291bnQgaW5mby5cblx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRhc3luYyB1cGRhdGVBY2NvdW50KGFjY291bnQpIHtcblx0XHRpZiAodGhpcy50b2tlblN0b3JlKSB7XG5cdFx0XHRhd2FpdCB0aGlzLnRva2VuU3RvcmUuc2V0KGFjY291bnQpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQge1xuXHRBdXRoLFxuXG5cdEF1dGhlbnRpY2F0b3IsXG5cdENsaWVudFNlY3JldCxcblx0T3duZXJQYXNzd29yZCxcblx0UEtDRSxcblx0U2lnbmVkSldULFxuXG5cdEZpbGVTdG9yZSxcblx0TWVtb3J5U3RvcmUsXG5cdFNlY3VyZVN0b3JlLFxuXHRUb2tlblN0b3JlLFxuXG5cdGVudmlyb25tZW50cyxcblx0Z2V0RW5kcG9pbnRzLFxuXHRzZXJ2ZXJcbn07XG4iXSwiZmlsZSI6ImluZGV4LmpzIn0=
{
"name": "@axway/amplify-auth-sdk",
"version": "2.0.0",
"version": "2.0.1",
"description": "Axway AMPLIFY authentication SDK for Node.js",

@@ -25,3 +25,3 @@ "author": "Axway, Inc. <npmjs@appcelerator.com>",

"fs-extra": "^9.0.0",
"got": "^11.0.3",
"got": "^11.1.0",
"jws": "^4.0.0",

@@ -28,0 +28,0 @@ "open": "^7.0.3",

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