Socket
Socket
Sign inDemoInstall

@glimmer/syntax

Package Overview
Dependencies
Maintainers
12
Versions
286
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/syntax - npm Package Compare versions

Comparing version 0.65.2 to 0.65.3

11

dist/commonjs/es2017/index.js

@@ -17,2 +17,3 @@ "use strict";

print: true,
sortByLoc: true,
SyntaxError: true,

@@ -83,2 +84,8 @@ AST: true,

});
Object.defineProperty(exports, "sortByLoc", {
enumerable: true,
get: function () {
return _util.sortByLoc;
}
});
Object.defineProperty(exports, "SyntaxError", {

@@ -131,2 +138,4 @@ enumerable: true,

var _util = require("./lib/generation/util");
var _syntaxError = _interopRequireDefault(require("./lib/errors/syntax-error"));

@@ -145,2 +154,2 @@

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBOztBQVVBOztBQUNBOztBQU1BOztBQUNBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOztBQUdBOzs7O0FBRUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB1c2VkIGJ5IGVtYmVyLWNvbXBpbGVyXG5leHBvcnQge1xuICBwcmVwcm9jZXNzLFxuICBQcmVwcm9jZXNzT3B0aW9ucyxcbiAgQVNUUGx1Z2luLFxuICBBU1RQbHVnaW5CdWlsZGVyLFxuICBBU1RQbHVnaW5FbnZpcm9ubWVudCxcbiAgU3ludGF4LFxufSBmcm9tICcuL2xpYi9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzJztcblxuLy8gbmVlZGVkIGZvciB0ZXN0cyBvbmx5XG5leHBvcnQgeyBkZWZhdWx0IGFzIGJ1aWxkZXJzIH0gZnJvbSAnLi9saWIvYnVpbGRlcnMnO1xuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBUcmF2ZXJzYWxFcnJvcixcbiAgY2Fubm90UmVtb3ZlTm9kZSxcbiAgY2Fubm90UmVwbGFjZU5vZGUsXG4gIGNhbm5vdFJlcGxhY2VPclJlbW92ZUluS2V5SGFuZGxlcllldCxcbn0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL2Vycm9ycyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRyYXZlcnNlIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3RyYXZlcnNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RyYXZlcnNhbC92aXNpdG9yJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUGF0aCB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC9wYXRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgV2Fsa2VyIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3dhbGtlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByaW50IH0gZnJvbSAnLi9saWIvZ2VuZXJhdGlvbi9wcmludCc7XG5cbi8vIGVycm9yc1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBTeW50YXhFcnJvciB9IGZyb20gJy4vbGliL2Vycm9ycy9zeW50YXgtZXJyb3InO1xuXG4vLyBBU1RcbmltcG9ydCAqIGFzIEFTVCBmcm9tICcuL2xpYi90eXBlcy9ub2Rlcyc7XG5leHBvcnQgeyBBU1QgfTtcbmV4cG9ydCB7IGlzTGl0ZXJhbCwgcHJpbnRMaXRlcmFsIH0gZnJvbSAnLi9saWIvdXRpbHMnO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUFVQTs7QUFDQTs7QUFNQTs7QUFDQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFHQTs7OztBQUVBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdXNlZCBieSBlbWJlci1jb21waWxlclxuZXhwb3J0IHtcbiAgcHJlcHJvY2VzcyxcbiAgUHJlcHJvY2Vzc09wdGlvbnMsXG4gIEFTVFBsdWdpbixcbiAgQVNUUGx1Z2luQnVpbGRlcixcbiAgQVNUUGx1Z2luRW52aXJvbm1lbnQsXG4gIFN5bnRheCxcbn0gZnJvbSAnLi9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycyc7XG5cbi8vIG5lZWRlZCBmb3IgdGVzdHMgb25seVxuZXhwb3J0IHsgZGVmYXVsdCBhcyBidWlsZGVycyB9IGZyb20gJy4vbGliL2J1aWxkZXJzJztcbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgVHJhdmVyc2FsRXJyb3IsXG4gIGNhbm5vdFJlbW92ZU5vZGUsXG4gIGNhbm5vdFJlcGxhY2VOb2RlLFxuICBjYW5ub3RSZXBsYWNlT3JSZW1vdmVJbktleUhhbmRsZXJZZXQsXG59IGZyb20gJy4vbGliL3RyYXZlcnNhbC9lcnJvcnMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0cmF2ZXJzZSB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC90cmF2ZXJzZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90cmF2ZXJzYWwvdmlzaXRvcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFBhdGggfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvcGF0aCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFdhbGtlciB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC93YWxrZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmludCB9IGZyb20gJy4vbGliL2dlbmVyYXRpb24vcHJpbnQnO1xuZXhwb3J0IHsgc29ydEJ5TG9jIH0gZnJvbSAnLi9saWIvZ2VuZXJhdGlvbi91dGlsJztcblxuLy8gZXJyb3JzXG5leHBvcnQgeyBkZWZhdWx0IGFzIFN5bnRheEVycm9yIH0gZnJvbSAnLi9saWIvZXJyb3JzL3N5bnRheC1lcnJvcic7XG5cbi8vIEFTVFxuaW1wb3J0ICogYXMgQVNUIGZyb20gJy4vbGliL3R5cGVzL25vZGVzJztcbmV4cG9ydCB7IEFTVCB9O1xuZXhwb3J0IHsgaXNMaXRlcmFsLCBwcmludExpdGVyYWwgfSBmcm9tICcuL2xpYi91dGlscyc7XG4iXSwic291cmNlUm9vdCI6IiJ9

34

dist/commonjs/es2017/lib/generation/printer.js

@@ -222,22 +222,20 @@ "use strict";

this.buffer += `<${el.tag}`;
const parts = [...el.attributes, ...el.modifiers, ...el.comments].sort(_util.sortByLoc);
if (el.attributes.length) {
el.attributes.forEach(attr => {
this.buffer += ' ';
this.AttrNode(attr);
});
}
for (const part of parts) {
this.buffer += ' ';
if (el.modifiers.length) {
el.modifiers.forEach(mod => {
this.buffer += ' ';
this.ElementModifierStatement(mod);
});
}
switch (part.type) {
case 'AttrNode':
this.AttrNode(part);
break;
if (el.comments.length) {
el.comments.forEach(comment => {
this.buffer += ' ';
this.MustacheCommentStatement(comment);
});
case 'ElementModifierStatement':
this.ElementModifierStatement(part);
break;
case 'MustacheCommentStatement':
this.MustacheCommentStatement(part);
break;
}
}

@@ -553,2 +551,2 @@

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi9wcmludGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUE0QkE7O0FBQ0E7O0FBRUEsTUFBTSxjQUFjLEdBQXBCLElBQUE7O0FBc0JjLE1BQUEsT0FBQSxDQUFjO0FBSTFCLEVBQUEsV0FBQSxDQUFBLE9BQUEsRUFBbUM7QUFIM0IsU0FBQSxNQUFBLEdBQUEsRUFBQTtBQUlOLFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFDRDtBQUVEOzs7Ozs7Ozs7O0FBU0EsRUFBQSxpQkFBaUIsQ0FBQSxJQUFBLEVBQWEsdUJBQXVCLEdBQXBDLEtBQUEsRUFBNEM7QUFDM0QsUUFBSSxLQUFBLE9BQUEsQ0FBQSxRQUFBLEtBQUosU0FBQSxFQUF5QztBQUN2QyxVQUFJLE1BQU0sR0FBRyxLQUFBLE9BQUEsQ0FBQSxRQUFBLENBQUEsSUFBQSxFQUE0QixLQUF6QyxPQUFhLENBQWI7O0FBQ0EsVUFBSSxPQUFBLE1BQUEsS0FBSixRQUFBLEVBQWdDO0FBQzlCLFlBQUksdUJBQXVCLElBQUksTUFBTSxLQUFqQyxFQUFBLElBQTRDLGNBQWMsQ0FBZCxJQUFBLENBQW9CLE1BQU0sQ0FBMUUsQ0FBMEUsQ0FBMUIsQ0FBaEQsRUFBZ0Y7QUFDOUUsVUFBQSxNQUFNLEdBQUcsSUFBSSxNQUFiLEVBQUE7QUFDRDs7QUFFRCxhQUFBLE1BQUEsSUFBQSxNQUFBO0FBQ0EsZUFBQSxJQUFBO0FBQ0Q7QUFDRjs7QUFFRCxXQUFBLEtBQUE7QUFDRDs7QUFFRCxFQUFBLElBQUksQ0FBQSxJQUFBLEVBQVc7QUFDYixZQUFRLElBQUksQ0FBWixJQUFBO0FBQ0UsV0FBQSxtQkFBQTtBQUNBLFdBQUEsZ0JBQUE7QUFDQSxXQUFBLGtCQUFBO0FBQ0EsV0FBQSwwQkFBQTtBQUNBLFdBQUEsa0JBQUE7QUFDQSxXQUFBLFVBQUE7QUFDQSxXQUFBLGFBQUE7QUFDQSxXQUFBLFVBQUE7QUFDQSxX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QUFBLEVBQUEsY0FBQSxFQUF3RDtBQUN0RCxNQUFJO0FBQUEsSUFBQSxHQUFBO0FBQU8sSUFBQTtBQUFQLE1BQUosSUFBQTtBQUNBLFFBQU0sSUFBQSxLQUFBLENBQ0osaUNBQWlDLElBQUksZ0JBQWdCLElBQUksQ0FBSixTQUFBLENBQUEsR0FBQSxDQUVwRCxlQUFlLGNBSGxCLEVBQU0sQ0FBTjtBQUtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXR0ck5vZGUsXG4gIEJsb2NrLFxuICBCbG9ja1N0YXRlbWVudCxcbiAgRWxlbWVudE5vZGUsXG4gIE11c3RhY2hlU3RhdGVtZW50LFxuICBOb2RlLFxuICBQcm9ncmFtLFxuICBUZXh0Tm9kZSxcbiAgUGFydGlhbFN0YXRlbWVudCxcbiAgQ29uY2F0U3RhdGVtZW50LFxuICBNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQsXG4gIENvbW1lbnRTdGF0ZW1lbnQsXG4gIEVsZW1lbnRNb2RpZmllclN0YXRlbWVudCxcbiAgRXhwcmVzc2lvbixcbiAgUGF0aEV4cHJlc3Npb24sXG4gIFN1YkV4cHJlc3Npb24sXG4gIEhhc2gsXG4gIEhhc2hQYWlyLFxuICBMaXRlcmFsLFxuICBTdHJpbmdMaXRlcmFsLFxuICBCb29sZWFuTGl0ZXJhbCxcbiAgTnVtYmVyTGl0ZXJhbCxcbiAgVW5kZWZpbmVkTGl0ZXJhbCxcbiAgTnVsbExpdGVyYWwsXG4gIFRvcExldmVsU3RhdGVtZW50LFxuICBUZW1wbGF0ZSxcbn0gZnJvbSAnLi4vdHlwZXMvbm9kZXMnO1xuaW1wb3J0IHsgdm9pZE1hcCB9IGZyb20gJy4uL3BhcnNlci90b2tlbml6ZXItZXZlbnQtaGFuZGxlcnMnO1xuaW1wb3J0IHsgZXNjYXBlVGV4dCwgZXNjYXBlQXR0clZhbHVlIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgTk9OX1dISVRFU1BBQ0UgPSAvXFxTLztcblxuZXhwb3J0IGludGVyZmFjZSBQcmludGVyT3B0aW9ucyB7XG4gIGVudGl0eUVuY29kaW5nOiAndHJhbnNmb3JtZWQnIHwgJ3Jhdyc7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gb3ZlcnJpZGUgdGhlIG1lY2hhbmlzbSBvZiBwcmludGluZyBhIGdpdmVuIEFTVC5Ob2RlLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgZ2VuZXJhbGx5IG9ubHkgYmUgdXNlZnVsIHRvIHNvdXJjZSAtPiBzb3VyY2UgY29kZW1vZHNcbiAgICogd2hlcmUgeW91IHdvdWxkIGxpa2UgdG8gc3BlY2lhbGl6ZS9vdmVycmlkZSB0aGUgd2F5IGEgZ2l2ZW4gbm9kZSBpc1xuICAgKiBwcmludGVkIChlLmcuIHlvdSB3b3VsZCBsaWtlIHRvIHByZXNlcnZlIGFzIG11Y2ggb2YgdGhlIG9yaWdpbmFsXG4gICAqIGZvcm1hdHRpbmcgYXMgcG9zc2libGUpLlxuICAgKlxuICAgKiBXaGVuIHRoZSBwcm92aWRlZCBvdmVycmlkZSByZXR1cm5zIHVuZGVmaW5lZCwgdGhlIGRlZmF1bHQgYnVpbHQgaW4gcHJpbnRpbmdcbiAgICogd2lsbCBiZSBkb25lIGZvciB0aGUgQVNULk5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSBhc3QgdGhlIGFzdCBub2RlIHRvIGJlIHByaW50ZWRcbiAgICogQHBhcmFtIG9wdGlvbnMgdGhlIG9wdGlvbnMgc3BlY2lmaWVkIGR1cmluZyB0aGUgcHJpbnQoKSBpbnZvY2F0aW9uXG4gICAqL1xuICBvdmVycmlkZT8oYXN0OiBOb2RlLCBvcHRpb25zOiBQcmludGVyT3B0aW9ucyk6IHZvaWQgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByaW50ZXIge1xuICBwcml2YXRlIGJ1ZmZlciA9ICcnO1xuICBwcml2YXRlIG9wdGlvbnM6IFByaW50ZXJPcHRpb25zO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFByaW50ZXJPcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIC8qXG4gICAgVGhpcyBpcyB1c2VkIGJ5IF9hbGxfIG1ldGhvZHMgb24gdGhpcyBQcmludGVyIGNsYXNzIHRoYXQgYWRkIHRvIGB0aGlzLmJ1ZmZlcmAsXG4gICAgaXQgYWxsb3dzIGNvbnN1bWVycyBvZiB0aGUgcHJpbnRlciB0byB1c2UgYWx0ZXJuYXRlIHN0cmluZyByZXByZXNlbnRhdGlvbnMgZm9yXG4gICAgYSBnaXZlbiBub2RlLlxuXG4gICAgVGhlIHByaW1hcnkgdXNlIGNhc2UgZm9yIHRoaXMgYXJlIHRoaW5ncyBsaWtlIHNvdXJjZSAtPiBzb3VyY2UgY29kZW1vZCB1dGlsaXRpZXMuXG4gICAgRm9yIGV4YW1wbGUsIGVtYmVyLXRlbXBsYXRlLXJlY2FzdCBhdHRlbXB0cyB0byBhbHdheXMgcHJlc2VydmUgdGhlIG9yaWdpbmFsIHN0cmluZ1xuICAgIGZvcm1hdHRpbmcgaW4gZWFjaCBBU1Qgbm9kZSBpZiBubyBtb2RpZmljYXRpb25zIGFyZSBtYWRlIHRvIGl0LlxuICAqL1xuICBoYW5kbGVkQnlPdmVycmlkZShub2RlOiBOb2RlLCBlbnN1cmVMZWFkaW5nV2hpdGVzcGFjZSA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5vdmVycmlkZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgcmVzdWx0ID0gdGhpcy5vcHRpb25zLm92ZXJyaWRlKG5vZGUsIHRoaXMub3B0aW9ucyk7XG4gICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKGVuc3VyZUxlYWRpbmdXaGl0ZXNwYWNlICYmIHJlc3VsdCAhPT0gJycgJiYgTk9OX1dISVRFU1BBQ0UudGVzdChyZXN1bHRbMF0pKSB7XG4gICAgICAgICAgcmVzdWx0ID0gYCAke3Jlc3VsdH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5idWZmZXIgKz0gcmVzdWx0O1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBOb2RlKG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgY2FzZSAnTXVzdGFjaGVTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnQmxvY2tTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnUGFydGlhbFN0YXRlbWVudCc6XG4gICAgICBjYXNlICdNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnQ29tbWVudFN0YXRlbWVudCc6XG4gICAgICBjYXNlICdUZXh0Tm9kZSc6XG4gICAgICBjYXNlICdFbGVtZW50Tm9kZSc6XG4gICAgICBjYXNlICdBdHRyTm9kZSc6XG4gICAgICBjYXNlICdCbG9jayc6XG4gICAgICBjYXNlICdUZW1wbGF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLlRvcExldmVsU3RhdGVtZW50KG5vZGUpO1xuICAgICAgY2FzZSAnU3RyaW5nTGl0ZXJhbCc6XG4gICAgICBjYXNlICdCb29sZWFuTGl0ZXJhbCc6XG4gICAgICBjYXNlICdOdW1iZXJMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ1VuZGVmaW5lZExpdGVyYWwnOlxuICAgICAgY2FzZSAnTnVsbExpdGVyYWwnOlxuICAgICAgY2FzZSAnUGF0aEV4cHJlc3Npb24nOlxuICAgICAgY2FzZSAnU3ViRXhwcmVzc2lvbic6XG4gICAgICAgIHJldHVybiB0aGlzLkV4cHJlc3Npb24obm9kZSk7XG4gICAgICBjYXNlICdQcm9ncmFtJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuQmxvY2sobm9kZSk7XG4gICAgICBjYXNlICdDb25jYXRTdGF0ZW1lbnQnOlxuICAgICAgICAvLyBzaG91bGQgaGF2ZSBhbiBBdHRyTm9kZSBwYXJlbnRcbiAgICAgICAgcmV0dXJuIHRoaXMuQ29uY2F0U3RhdGVtZW50KG5vZGUpO1xuICAgICAgY2FzZSAnSGFzaCc6XG4gICAgICAgIHJldHVybiB0aGlzLkhhc2gobm9kZSk7XG4gICAgICBjYXNlICdIYXNoUGFpcic6XG4gICAgICAgIHJldHVybiB0aGlzLkhhc2hQYWlyKG5vZGUpO1xuICAgICAgY2FzZSAnRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50KG5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB1bnJlYWNoYWJsZShub2RlLCAnTm9kZScpO1xuICB9XG5cbiAgRXhwcmVzc2lvbihleHByZXNzaW9uOiBFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgc3dpdGNoIChleHByZXNzaW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgJ1N0cmluZ0xpdGVyYWwnOlxuICAgICAgY2FzZSAnQm9vbGVhbkxpdGVyYWwnOlxuICAgICAgY2FzZSAnTnVtYmVyTGl0ZXJhbCc6XG4gICAgICBjYXNlICdVbmRlZmluZWRMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ051bGxMaXRlcmFsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuTGl0ZXJhbChleHByZXNzaW9uKTtcbiAgICAgIGNhc2UgJ1BhdGhFeHByZXNzaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuUGF0aEV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG4gICAgICBjYXNlICdTdWJFeHByZXNzaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuU3ViRXhwcmVzc2lvbihleHByZXNzaW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHVucmVhY2hhYmxlKGV4cHJlc3Npb24sICdFeHByZXNzaW9uJyk7XG4gIH1cblxuICBMaXRlcmFsKGxpdGVyYWw6IExpdGVyYWwpIHtcbiAgICBzd2l0Y2ggKGxpdGVyYWwudHlwZSkge1xuICAgICAgY2FzZSAnU3RyaW5nTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLlN0cmluZ0xpdGVyYWwobGl0ZXJhbCk7XG4gICAgICBjYXNlICdCb29sZWFuTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLkJvb2xlYW5MaXRlcmFsKGxpdGVyYWwpO1xuICAgICAgY2FzZSAnTnVtYmVyTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLk51bWJlckxpdGVyYWwobGl0ZXJhbCk7XG4gICAgICBjYXNlICdVbmRlZmluZWRMaXRlcmFsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuVW5kZWZpbmVkTGl0ZXJhbChsaXRlcmFsKTtcbiAgICAgIGNhc2UgJ051bGxMaXRlcmFsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuTnVsbExpdGVyYWwobGl0ZXJhbCk7XG4gICAgfVxuICAgIHJldHVybiB1bnJlYWNoYWJsZShsaXRlcmFsLCAnTGl0ZXJhbCcpO1xuICB9XG5cbiAgVG9wTGV2ZWxTdGF0ZW1lbnQoc3RhdGVtZW50OiBUb3BMZXZlbFN0YXRlbWVudCkge1xuICAgIHN3aXRjaCAoc3RhdGVtZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ011c3RhY2hlU3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuTXVzdGFjaGVTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ0Jsb2NrU3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuQmxvY2tTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ1BhcnRpYWxTdGF0ZW1lbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5QYXJ0aWFsU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5NdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ0NvbW1lbnRTdGF0ZW1lbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5Db21tZW50U3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdUZXh0Tm9kZSc6XG4gICAgICAgIHJldHVybiB0aGlzLlRleHROb2RlKHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdFbGVtZW50Tm9kZSc6XG4gICAgICAgIHJldHVybiB0aGlzLkVsZW1lbnROb2RlKHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdCbG9jayc6XG4gICAgICBjYXNlICdUZW1wbGF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLkJsb2NrKHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdBdHRyTm9kZSc6XG4gICAgICAgIC8vIHNob3VsZCBoYXZlIGVsZW1lbnRcbiAgICAgICAgcmV0dXJuIHRoaXMuQXR0ck5vZGUoc3RhdGVtZW50KTtcbiAgICB9XG4gICAgdW5yZWFjaGFibGUoc3RhdGVtZW50LCAnVG9wTGV2ZWxTdGF0ZW1lbnQnKTtcbiAgfVxuXG4gIEJsb2NrKGJsb2NrOiBCbG9jayB8IFByb2dyYW0gfCBUZW1wbGF0ZSk6IHZvaWQge1xuICAgIC8qXG4gICAgICBXaGVuIHByb2Nlc3NpbmcgYSB0ZW1wbGF0ZSBsaWtlOlxuXG4gICAgICBgYGBoYnNcbiAgICAgIHt7I2lmIHdoYXRldmVyfX1cbiAgICAgICAgd2hhdGV2ZXJcbiAgICAgIHt7ZWxzZSBpZiBzb21ldGhpbmdFbHNlfX1cbiAgICAgICAgc29tZXRoaW5nIGVsc2VcbiAgICAgIHt7ZWxzZX19XG4gICAgICAgIGZhbGxiYWNrXG4gICAgICB7ey9pZn19XG4gICAgICBgYGBcblxuICAgICAgVGhlIEFTVCBzdGlsbCBfZWZmZWN0aXZlbHlfIGxvb2tzIGxpa2U6XG5cbiAgICAgIGBgYGhic1xuICAgICAge3sjaWYgd2hhdGV2ZXJ9fVxuICAgICAgICB3aGF0ZXZlclxuICAgICAge3tlbHNlfX17eyNpZiBzb21ldGhpbmdFbHNlfX1cbiAgICAgICAgc29tZXRoaW5nIGVsc2VcbiAgICAgIHt7ZWxzZX19XG4gICAgICAgIGZhbGxiYWNrXG4gICAgICB7ey9pZn19e3svaWZ9fVxuICAgICAgYGBgXG5cbiAgICAgIFRoZSBvbmx5IHdheSB3ZSBjYW4gdGVsbCBpZiB0aGF0IGlzIHRoZSBjYXNlIGlzIGJ5IGNoZWNraW5nIGZvclxuICAgICAgYGJsb2NrLmNoYWluZWRgLCBidXQgdW5mb3J0dW5hdGVseSB3aGVuIHRoZSBhY3R1YWwgc3RhdGVtZW50cyBhcmVcbiAgICAgIHByb2Nlc3NlZCB0aGUgYGJsb2NrLmJvZHlbMF1gIG5vZGUgKHdoaWNoIHdpbGwgYWx3YXlzIGJlIGFcbiAgICAgIGBCbG9ja1N0YXRlbWVudGApIGhhcyBubyBjbHVlIHRoYXQgaXRzIGFuc2Nlc3RvciBgQmxvY2tgIG5vZGUgd2FzXG4gICAgICBjaGFpbmVkLlxuXG4gICAgICBUaGlzIFwiZm9yd2FyZHNcIiB0aGUgYGNoYWluZWRgIHNldHRpbmcgc28gdGhhdCB3ZSBjYW4gY2hlY2tcbiAgICAgIGl0IGxhdGVyIHdoZW4gcHJvY2Vzc2luZyB0aGUgYEJsb2NrU3RhdGVtZW50YC5cbiAgICAqL1xuICAgIGlmIChibG9jay5jaGFpbmVkKSB7XG4gICAgICBsZXQgZmlyc3RDaGlsZCA9IGJsb2NrLmJvZHlbMF0gYXMgQmxvY2tTdGF0ZW1lbnQ7XG4gICAgICBmaXJzdENoaWxkLmNoYWluZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGJsb2NrKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuVG9wTGV2ZWxTdGF0ZW1lbnRzKGJsb2NrLmJvZHkpO1xuICB9XG5cbiAgVG9wTGV2ZWxTdGF0ZW1lbnRzKHN0YXRlbWVudHM6IFRvcExldmVsU3RhdGVtZW50W10pIHtcbiAgICBzdGF0ZW1lbnRzLmZvckVhY2goKHN0YXRlbWVudCkgPT4gdGhpcy5Ub3BMZXZlbFN0YXRlbWVudChzdGF0ZW1lbnQpKTtcbiAgfVxuXG4gIEVsZW1lbnROb2RlKGVsOiBFbGVtZW50Tm9kZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGVsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuT3BlbkVsZW1lbnROb2RlKGVsKTtcbiAgICB0aGlzLlRvcExldmVsU3RhdGVtZW50cyhlbC5jaGlsZHJlbik7XG4gICAgdGhpcy5DbG9zZUVsZW1lbnROb2RlKGVsKTtcbiAgfVxuXG4gIE9wZW5FbGVtZW50Tm9kZShlbDogRWxlbWVudE5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLmJ1ZmZlciArPSBgPCR7ZWwudGFnfWA7XG4gICAgaWYgKGVsLmF0dHJpYnV0ZXMubGVuZ3RoKSB7XG4gICAgICBlbC5hdHRyaWJ1dGVzLmZvckVhY2goKGF0dHIpID0+IHtcbiAgICAgICAgdGhpcy5idWZmZXIgKz0gJyAnO1xuICAgICAgICB0aGlzLkF0dHJOb2RlKGF0dHIpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChlbC5tb2RpZmllcnMubGVuZ3RoKSB7XG4gICAgICBlbC5tb2RpZmllcnMuZm9yRWFjaCgobW9kKSA9PiB7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9ICcgJztcbiAgICAgICAgdGhpcy5FbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQobW9kKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZWwuY29tbWVudHMubGVuZ3RoKSB7XG4gICAgICBlbC5jb21tZW50cy5mb3JFYWNoKChjb21tZW50KSA9PiB7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9ICcgJztcbiAgICAgICAgdGhpcy5NdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQoY29tbWVudCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGVsLmJsb2NrUGFyYW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5CbG9ja1BhcmFtcyhlbC5ibG9ja1BhcmFtcyk7XG4gICAgfVxuICAgIGlmIChlbC5zZWxmQ2xvc2luZykge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJyAvJztcbiAgICB9XG4gICAgdGhpcy5idWZmZXIgKz0gJz4nO1xuICB9XG5cbiAgQ2xvc2VFbGVtZW50Tm9kZShlbDogRWxlbWVudE5vZGUpOiB2b2lkIHtcbiAgICBpZiAoZWwuc2VsZkNsb3NpbmcgfHwgdm9pZE1hcFtlbC50YWcudG9Mb3dlckNhc2UoKV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5idWZmZXIgKz0gYDwvJHtlbC50YWd9PmA7XG4gIH1cblxuICBBdHRyTm9kZShhdHRyOiBBdHRyTm9kZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGF0dHIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHsgbmFtZSwgdmFsdWUgfSA9IGF0dHI7XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBuYW1lO1xuICAgIGlmICh2YWx1ZS50eXBlICE9PSAnVGV4dE5vZGUnIHx8IHZhbHVlLmNoYXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICc9JztcbiAgICAgIHRoaXMuQXR0ck5vZGVWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQXR0ck5vZGVWYWx1ZSh2YWx1ZTogQXR0ck5vZGVbJ3ZhbHVlJ10pIHtcbiAgICBpZiAodmFsdWUudHlwZSA9PT0gJ1RleHROb2RlJykge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJ1wiJztcbiAgICAgIHRoaXMuVGV4dE5vZGUodmFsdWUsIHRydWUpO1xuICAgICAgdGhpcy5idWZmZXIgKz0gJ1wiJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5Ob2RlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBUZXh0Tm9kZSh0ZXh0OiBUZXh0Tm9kZSwgaXNBdHRyPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHRleHQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5lbnRpdHlFbmNvZGluZyA9PT0gJ3JhdycpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IHRleHQuY2hhcnM7XG4gICAgfSBlbHNlIGlmIChpc0F0dHIpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGVzY2FwZUF0dHJWYWx1ZSh0ZXh0LmNoYXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idWZmZXIgKz0gZXNjYXBlVGV4dCh0ZXh0LmNoYXJzKTtcbiAgICB9XG4gIH1cblxuICBNdXN0YWNoZVN0YXRlbWVudChtdXN0YWNoZTogTXVzdGFjaGVTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShtdXN0YWNoZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBtdXN0YWNoZS5lc2NhcGVkID8gJ3t7JyA6ICd7e3snO1xuXG4gICAgaWYgKG11c3RhY2hlLnN0cmlwLm9wZW4pIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICd+JztcbiAgICB9XG5cbiAgICB0aGlzLkV4cHJlc3Npb24obXVzdGFjaGUucGF0aCk7XG4gICAgdGhpcy5QYXJhbXMobXVzdGFjaGUucGFyYW1zKTtcbiAgICB0aGlzLkhhc2gobXVzdGFjaGUuaGFzaCk7XG5cbiAgICBpZiAobXVzdGFjaGUuc3RyaXAuY2xvc2UpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICd+JztcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBtdXN0YWNoZS5lc2NhcGVkID8gJ319JyA6ICd9fX0nO1xuICB9XG5cbiAgQmxvY2tTdGF0ZW1lbnQoYmxvY2s6IEJsb2NrU3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoYmxvY2spKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGJsb2NrLmNoYWluZWQpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmludmVyc2VTdHJpcC5vcGVuID8gJ3t7ficgOiAne3snO1xuICAgICAgdGhpcy5idWZmZXIgKz0gJ2Vsc2UgJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idWZmZXIgKz0gYmxvY2sub3BlblN0cmlwLm9wZW4gPyAne3t+IycgOiAne3sjJztcbiAgICB9XG5cbiAgICB0aGlzLkV4cHJlc3Npb24oYmxvY2sucGF0aCk7XG4gICAgdGhpcy5QYXJhbXMoYmxvY2sucGFyYW1zKTtcbiAgICB0aGlzLkhhc2goYmxvY2suaGFzaCk7XG4gICAgaWYgKGJsb2NrLnByb2dyYW0uYmxvY2tQYXJhbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLkJsb2NrUGFyYW1zKGJsb2NrLnByb2dyYW0uYmxvY2tQYXJhbXMpO1xuICAgIH1cblxuICAgIGlmIChibG9jay5jaGFpbmVkKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5pbnZlcnNlU3RyaXAuY2xvc2UgPyAnfn19JyA6ICd9fSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLm9wZW5TdHJpcC5jbG9zZSA/ICd+fX0nIDogJ319JztcbiAgICB9XG5cbiAgICB0aGlzLkJsb2NrKGJsb2NrLnByb2dyYW0pO1xuXG4gICAgaWYgKGJsb2NrLmludmVyc2UpIHtcbiAgICAgIGlmICghYmxvY2suaW52ZXJzZS5jaGFpbmVkKSB7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmludmVyc2VTdHJpcC5vcGVuID8gJ3t7ficgOiAne3snO1xuICAgICAgICB0aGlzLmJ1ZmZlciArPSAnZWxzZSc7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmludmVyc2VTdHJpcC5jbG9zZSA/ICd+fX0nIDogJ319JztcbiAgICAgIH1cblxuICAgICAgdGhpcy5CbG9jayhibG9jay5pbnZlcnNlKTtcbiAgICB9XG5cbiAgICBpZiAoIWJsb2NrLmNoYWluZWQpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmNsb3NlU3RyaXAub3BlbiA/ICd7e34vJyA6ICd7ey8nO1xuICAgICAgdGhpcy5FeHByZXNzaW9uKGJsb2NrLnBhdGgpO1xuICAgICAgdGhpcy5idWZmZXIgKz0gYmxvY2suY2xvc2VTdHJpcC5jbG9zZSA/ICd+fX0nIDogJ319JztcbiAgICB9XG4gIH1cblxuICBCbG9ja1BhcmFtcyhibG9ja1BhcmFtczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmJ1ZmZlciArPSBgIGFzIHwke2Jsb2NrUGFyYW1zLmpvaW4oJyAnKX18YDtcbiAgfVxuXG4gIFBhcnRpYWxTdGF0ZW1lbnQocGFydGlhbDogUGFydGlhbFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHBhcnRpYWwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJ3t7Pic7XG4gICAgdGhpcy5FeHByZXNzaW9uKHBhcnRpYWwubmFtZSk7XG4gICAgdGhpcy5QYXJhbXMocGFydGlhbC5wYXJhbXMpO1xuICAgIHRoaXMuSGFzaChwYXJ0aWFsLmhhc2gpO1xuICAgIHRoaXMuYnVmZmVyICs9ICd9fSc7XG4gIH1cblxuICBDb25jYXRTdGF0ZW1lbnQoY29uY2F0OiBDb25jYXRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShjb25jYXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJ1wiJztcbiAgICBjb25jYXQucGFydHMuZm9yRWFjaCgocGFydCkgPT4ge1xuICAgICAgaWYgKHBhcnQudHlwZSA9PT0gJ1RleHROb2RlJykge1xuICAgICAgICB0aGlzLlRleHROb2RlKHBhcnQsIHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5Ob2RlKHBhcnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuYnVmZmVyICs9ICdcIic7XG4gIH1cblxuICBNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQoY29tbWVudDogTXVzdGFjaGVDb21tZW50U3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoY29tbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBge3shLS0ke2NvbW1lbnQudmFsdWV9LS19fWA7XG4gIH1cblxuICBFbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQobW9kOiBFbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShtb2QpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJ3t7JztcbiAgICB0aGlzLkV4cHJlc3Npb24obW9kLnBhdGgpO1xuICAgIHRoaXMuUGFyYW1zKG1vZC5wYXJhbXMpO1xuICAgIHRoaXMuSGFzaChtb2QuaGFzaCk7XG4gICAgdGhpcy5idWZmZXIgKz0gJ319JztcbiAgfVxuXG4gIENvbW1lbnRTdGF0ZW1lbnQoY29tbWVudDogQ29tbWVudFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGNvbW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gYDwhLS0ke2NvbW1lbnQudmFsdWV9LS0+YDtcbiAgfVxuXG4gIFBhdGhFeHByZXNzaW9uKHBhdGg6IFBhdGhFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUocGF0aCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBwYXRoLm9yaWdpbmFsO1xuICB9XG5cbiAgU3ViRXhwcmVzc2lvbihzZXhwOiBTdWJFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoc2V4cCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSAnKCc7XG4gICAgdGhpcy5FeHByZXNzaW9uKHNleHAucGF0aCk7XG4gICAgdGhpcy5QYXJhbXMoc2V4cC5wYXJhbXMpO1xuICAgIHRoaXMuSGFzaChzZXhwLmhhc2gpO1xuICAgIHRoaXMuYnVmZmVyICs9ICcpJztcbiAgfVxuXG4gIFBhcmFtcyhwYXJhbXM6IEV4cHJlc3Npb25bXSkge1xuICAgIC8vIFRPRE86IGltcGxlbWVudCBhIHRvcCBsZXZlbCBQYXJhbXMgQVNUIG5vZGUgKGp1c3QgbGlrZSB0aGUgSGFzaCBvYmplY3QpXG4gICAgLy8gc28gdGhhdCB0aGlzIGNhbiBhbHNvIGJlIG92ZXJyaWRkZW5cbiAgICBpZiAocGFyYW1zLmxlbmd0aCkge1xuICAgICAgcGFyYW1zLmZvckVhY2goKHBhcmFtKSA9PiB7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9ICcgJztcbiAgICAgICAgdGhpcy5FeHByZXNzaW9uKHBhcmFtKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEhhc2goaGFzaDogSGFzaCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGhhc2gsIHRydWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaGFzaC5wYWlycy5mb3JFYWNoKChwYWlyKSA9PiB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnICc7XG4gICAgICB0aGlzLkhhc2hQYWlyKHBhaXIpO1xuICAgIH0pO1xuICB9XG5cbiAgSGFzaFBhaXIocGFpcjogSGFzaFBhaXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShwYWlyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IHBhaXIua2V5O1xuICAgIHRoaXMuYnVmZmVyICs9ICc9JztcbiAgICB0aGlzLk5vZGUocGFpci52YWx1ZSk7XG4gIH1cblxuICBTdHJpbmdMaXRlcmFsKHN0cjogU3RyaW5nTGl0ZXJhbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHN0cikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBKU09OLnN0cmluZ2lmeShzdHIudmFsdWUpO1xuICB9XG5cbiAgQm9vbGVhbkxpdGVyYWwoYm9vbDogQm9vbGVhbkxpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShib29sKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IGJvb2wudmFsdWU7XG4gIH1cblxuICBOdW1iZXJMaXRlcmFsKG51bWJlcjogTnVtYmVyTGl0ZXJhbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKG51bWJlcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBudW1iZXIudmFsdWU7XG4gIH1cblxuICBVbmRlZmluZWRMaXRlcmFsKG5vZGU6IFVuZGVmaW5lZExpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShub2RlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgTnVsbExpdGVyYWwobm9kZTogTnVsbExpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShub2RlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICdudWxsJztcbiAgfVxuXG4gIHByaW50KG5vZGU6IE5vZGUpIHtcbiAgICBsZXQgeyBvcHRpb25zIH0gPSB0aGlzO1xuXG4gICAgaWYgKG9wdGlvbnMub3ZlcnJpZGUpIHtcbiAgICAgIGxldCByZXN1bHQgPSBvcHRpb25zLm92ZXJyaWRlKG5vZGUsIG9wdGlvbnMpO1xuXG4gICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciA9ICcnO1xuICAgIHRoaXMuTm9kZShub2RlKTtcbiAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gIH1cbn1cblxuZnVuY3Rpb24gdW5yZWFjaGFibGUobm9kZTogbmV2ZXIsIHBhcmVudE5vZGVUeXBlOiBzdHJpbmcpOiBuZXZlciB7XG4gIGxldCB7IGxvYywgdHlwZSB9ID0gKG5vZGUgYXMgYW55KSBhcyBOb2RlO1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYE5vbi1leGhhdXN0aXZlIG5vZGUgbmFycm93aW5nICR7dHlwZX0gQCBsb2NhdGlvbjogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgIGxvY1xuICAgICl9IGZvciBwYXJlbnQgJHtwYXJlbnROb2RlVHlwZX1gXG4gICk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi9wcmludGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUE0QkE7O0FBQ0E7O0FBRUEsTUFBTSxjQUFjLEdBQXBCLElBQUE7O0FBc0JjLE1BQUEsT0FBQSxDQUFjO0FBSTFCLEVBQUEsV0FBQSxDQUFBLE9BQUEsRUFBbUM7QUFIM0IsU0FBQSxNQUFBLEdBQUEsRUFBQTtBQUlOLFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFDRDtBQUVEOzs7Ozs7Ozs7O0FBU0EsRUFBQSxpQkFBaUIsQ0FBQSxJQUFBLEVBQWEsdUJBQXVCLEdBQXBDLEtBQUEsRUFBNEM7QUFDM0QsUUFBSSxLQUFBLE9BQUEsQ0FBQSxRQUFBLEtBQUosU0FBQSxFQUF5QztBQUN2QyxVQUFJLE1BQU0sR0FBRyxLQUFBLE9BQUEsQ0FBQSxRQUFBLENBQUEsSUFBQSxFQUE0QixLQUF6QyxPQUFhLENBQWI7O0FBQ0EsVUFBSSxPQUFBLE1BQUEsS0FBSixRQUFBLEVBQWdDO0FBQzlCLFlBQUksdUJBQXVCLElBQUksTUFBTSxLQUFqQyxFQUFBLElBQTRDLGNBQWMsQ0FBZCxJQUFBLENBQW9CLE1BQU0sQ0FBMUUsQ0FBMEUsQ0FBMUIsQ0FBaEQsRUFBZ0Y7QUFDOUUsVUFBQSxNQUFNLEdBQUcsSUFBSSxNQUFiLEVBQUE7QUFDRDs7QUFFRCxhQUFBLE1BQUEsSUFBQSxNQUFBO0FBQ0EsZUFBQSxJQUFBO0FBQ0Q7QUFDRjs7QUFFRCxXQUFBLEtBQUE7QUFDRDs7QUFFRCxFQUFBLElBQUksQ0FBQSxJQUFBLEVBQVc7QUFDYixZQUFRLElBQUksQ0FBWixJQUFBO0FBQ0UsV0FBQSxtQkFBQTtBQUNBLFdBQUEsZ0JBQUE7QUFDQSxXQUFBLGtCQUFBO0FBQ0EsV0FBQSwwQkFBQTtBQUNBLFdBQUEsa0JBQUE7QUFDQSxXQUFBLFVBQUE7QUFDQSxXQUFBLGFBQUE7QUFDQSxXQUFBLFVBQUE7QUFDQSxX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SSxDQUFKLFNBQUEsQ0FBQSxHQUFBLENBRXBELGVBQWUsY0FIbEIsRUFBTSxDQUFOO0FBS0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdHRyTm9kZSxcbiAgQmxvY2ssXG4gIEJsb2NrU3RhdGVtZW50LFxuICBFbGVtZW50Tm9kZSxcbiAgTXVzdGFjaGVTdGF0ZW1lbnQsXG4gIE5vZGUsXG4gIFByb2dyYW0sXG4gIFRleHROb2RlLFxuICBQYXJ0aWFsU3RhdGVtZW50LFxuICBDb25jYXRTdGF0ZW1lbnQsXG4gIE11c3RhY2hlQ29tbWVudFN0YXRlbWVudCxcbiAgQ29tbWVudFN0YXRlbWVudCxcbiAgRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50LFxuICBFeHByZXNzaW9uLFxuICBQYXRoRXhwcmVzc2lvbixcbiAgU3ViRXhwcmVzc2lvbixcbiAgSGFzaCxcbiAgSGFzaFBhaXIsXG4gIExpdGVyYWwsXG4gIFN0cmluZ0xpdGVyYWwsXG4gIEJvb2xlYW5MaXRlcmFsLFxuICBOdW1iZXJMaXRlcmFsLFxuICBVbmRlZmluZWRMaXRlcmFsLFxuICBOdWxsTGl0ZXJhbCxcbiAgVG9wTGV2ZWxTdGF0ZW1lbnQsXG4gIFRlbXBsYXRlLFxufSBmcm9tICcuLi90eXBlcy9ub2Rlcyc7XG5pbXBvcnQgeyB2b2lkTWFwIH0gZnJvbSAnLi4vcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycyc7XG5pbXBvcnQgeyBlc2NhcGVUZXh0LCBlc2NhcGVBdHRyVmFsdWUsIHNvcnRCeUxvYyB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IE5PTl9XSElURVNQQUNFID0gL1xcUy87XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpbnRlck9wdGlvbnMge1xuICBlbnRpdHlFbmNvZGluZzogJ3RyYW5zZm9ybWVkJyB8ICdyYXcnO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG92ZXJyaWRlIHRoZSBtZWNoYW5pc20gb2YgcHJpbnRpbmcgYSBnaXZlbiBBU1QuTm9kZS5cbiAgICpcbiAgICogVGhpcyB3aWxsIGdlbmVyYWxseSBvbmx5IGJlIHVzZWZ1bCB0byBzb3VyY2UgLT4gc291cmNlIGNvZGVtb2RzXG4gICAqIHdoZXJlIHlvdSB3b3VsZCBsaWtlIHRvIHNwZWNpYWxpemUvb3ZlcnJpZGUgdGhlIHdheSBhIGdpdmVuIG5vZGUgaXNcbiAgICogcHJpbnRlZCAoZS5nLiB5b3Ugd291bGQgbGlrZSB0byBwcmVzZXJ2ZSBhcyBtdWNoIG9mIHRoZSBvcmlnaW5hbFxuICAgKiBmb3JtYXR0aW5nIGFzIHBvc3NpYmxlKS5cbiAgICpcbiAgICogV2hlbiB0aGUgcHJvdmlkZWQgb3ZlcnJpZGUgcmV0dXJucyB1bmRlZmluZWQsIHRoZSBkZWZhdWx0IGJ1aWx0IGluIHByaW50aW5nXG4gICAqIHdpbGwgYmUgZG9uZSBmb3IgdGhlIEFTVC5Ob2RlLlxuICAgKlxuICAgKiBAcGFyYW0gYXN0IHRoZSBhc3Qgbm9kZSB0byBiZSBwcmludGVkXG4gICAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHNwZWNpZmllZCBkdXJpbmcgdGhlIHByaW50KCkgaW52b2NhdGlvblxuICAgKi9cbiAgb3ZlcnJpZGU/KGFzdDogTm9kZSwgb3B0aW9uczogUHJpbnRlck9wdGlvbnMpOiB2b2lkIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcmludGVyIHtcbiAgcHJpdmF0ZSBidWZmZXIgPSAnJztcbiAgcHJpdmF0ZSBvcHRpb25zOiBQcmludGVyT3B0aW9ucztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBQcmludGVyT3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICAvKlxuICAgIFRoaXMgaXMgdXNlZCBieSBfYWxsXyBtZXRob2RzIG9uIHRoaXMgUHJpbnRlciBjbGFzcyB0aGF0IGFkZCB0byBgdGhpcy5idWZmZXJgLFxuICAgIGl0IGFsbG93cyBjb25zdW1lcnMgb2YgdGhlIHByaW50ZXIgdG8gdXNlIGFsdGVybmF0ZSBzdHJpbmcgcmVwcmVzZW50YXRpb25zIGZvclxuICAgIGEgZ2l2ZW4gbm9kZS5cblxuICAgIFRoZSBwcmltYXJ5IHVzZSBjYXNlIGZvciB0aGlzIGFyZSB0aGluZ3MgbGlrZSBzb3VyY2UgLT4gc291cmNlIGNvZGVtb2QgdXRpbGl0aWVzLlxuICAgIEZvciBleGFtcGxlLCBlbWJlci10ZW1wbGF0ZS1yZWNhc3QgYXR0ZW1wdHMgdG8gYWx3YXlzIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBzdHJpbmdcbiAgICBmb3JtYXR0aW5nIGluIGVhY2ggQVNUIG5vZGUgaWYgbm8gbW9kaWZpY2F0aW9ucyBhcmUgbWFkZSB0byBpdC5cbiAgKi9cbiAgaGFuZGxlZEJ5T3ZlcnJpZGUobm9kZTogTm9kZSwgZW5zdXJlTGVhZGluZ1doaXRlc3BhY2UgPSBmYWxzZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm9wdGlvbnMub3ZlcnJpZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IHJlc3VsdCA9IHRoaXMub3B0aW9ucy5vdmVycmlkZShub2RlLCB0aGlzLm9wdGlvbnMpO1xuICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmIChlbnN1cmVMZWFkaW5nV2hpdGVzcGFjZSAmJiByZXN1bHQgIT09ICcnICYmIE5PTl9XSElURVNQQUNFLnRlc3QocmVzdWx0WzBdKSkge1xuICAgICAgICAgIHJlc3VsdCA9IGAgJHtyZXN1bHR9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnVmZmVyICs9IHJlc3VsdDtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgTm9kZShub2RlOiBOb2RlKTogdm9pZCB7XG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ011c3RhY2hlU3RhdGVtZW50JzpcbiAgICAgIGNhc2UgJ0Jsb2NrU3RhdGVtZW50JzpcbiAgICAgIGNhc2UgJ1BhcnRpYWxTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnTXVzdGFjaGVDb21tZW50U3RhdGVtZW50JzpcbiAgICAgIGNhc2UgJ0NvbW1lbnRTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnVGV4dE5vZGUnOlxuICAgICAgY2FzZSAnRWxlbWVudE5vZGUnOlxuICAgICAgY2FzZSAnQXR0ck5vZGUnOlxuICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgY2FzZSAnVGVtcGxhdGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5Ub3BMZXZlbFN0YXRlbWVudChub2RlKTtcbiAgICAgIGNhc2UgJ1N0cmluZ0xpdGVyYWwnOlxuICAgICAgY2FzZSAnQm9vbGVhbkxpdGVyYWwnOlxuICAgICAgY2FzZSAnTnVtYmVyTGl0ZXJhbCc6XG4gICAgICBjYXNlICdVbmRlZmluZWRMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ051bGxMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ1BhdGhFeHByZXNzaW9uJzpcbiAgICAgIGNhc2UgJ1N1YkV4cHJlc3Npb24nOlxuICAgICAgICByZXR1cm4gdGhpcy5FeHByZXNzaW9uKG5vZGUpO1xuICAgICAgY2FzZSAnUHJvZ3JhbSc6XG4gICAgICAgIHJldHVybiB0aGlzLkJsb2NrKG5vZGUpO1xuICAgICAgY2FzZSAnQ29uY2F0U3RhdGVtZW50JzpcbiAgICAgICAgLy8gc2hvdWxkIGhhdmUgYW4gQXR0ck5vZGUgcGFyZW50XG4gICAgICAgIHJldHVybiB0aGlzLkNvbmNhdFN0YXRlbWVudChub2RlKTtcbiAgICAgIGNhc2UgJ0hhc2gnOlxuICAgICAgICByZXR1cm4gdGhpcy5IYXNoKG5vZGUpO1xuICAgICAgY2FzZSAnSGFzaFBhaXInOlxuICAgICAgICByZXR1cm4gdGhpcy5IYXNoUGFpcihub2RlKTtcbiAgICAgIGNhc2UgJ0VsZW1lbnRNb2RpZmllclN0YXRlbWVudCc6XG4gICAgICAgIHJldHVybiB0aGlzLkVsZW1lbnRNb2RpZmllclN0YXRlbWVudChub2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5yZWFjaGFibGUobm9kZSwgJ05vZGUnKTtcbiAgfVxuXG4gIEV4cHJlc3Npb24oZXhwcmVzc2lvbjogRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHN3aXRjaCAoZXhwcmVzc2lvbi50eXBlKSB7XG4gICAgICBjYXNlICdTdHJpbmdMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ0Jvb2xlYW5MaXRlcmFsJzpcbiAgICAgIGNhc2UgJ051bWJlckxpdGVyYWwnOlxuICAgICAgY2FzZSAnVW5kZWZpbmVkTGl0ZXJhbCc6XG4gICAgICBjYXNlICdOdWxsTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLkxpdGVyYWwoZXhwcmVzc2lvbik7XG4gICAgICBjYXNlICdQYXRoRXhwcmVzc2lvbic6XG4gICAgICAgIHJldHVybiB0aGlzLlBhdGhFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xuICAgICAgY2FzZSAnU3ViRXhwcmVzc2lvbic6XG4gICAgICAgIHJldHVybiB0aGlzLlN1YkV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG4gICAgfVxuICAgIHJldHVybiB1bnJlYWNoYWJsZShleHByZXNzaW9uLCAnRXhwcmVzc2lvbicpO1xuICB9XG5cbiAgTGl0ZXJhbChsaXRlcmFsOiBMaXRlcmFsKSB7XG4gICAgc3dpdGNoIChsaXRlcmFsLnR5cGUpIHtcbiAgICAgIGNhc2UgJ1N0cmluZ0xpdGVyYWwnOlxuICAgICAgICByZXR1cm4gdGhpcy5TdHJpbmdMaXRlcmFsKGxpdGVyYWwpO1xuICAgICAgY2FzZSAnQm9vbGVhbkxpdGVyYWwnOlxuICAgICAgICByZXR1cm4gdGhpcy5Cb29sZWFuTGl0ZXJhbChsaXRlcmFsKTtcbiAgICAgIGNhc2UgJ051bWJlckxpdGVyYWwnOlxuICAgICAgICByZXR1cm4gdGhpcy5OdW1iZXJMaXRlcmFsKGxpdGVyYWwpO1xuICAgICAgY2FzZSAnVW5kZWZpbmVkTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLlVuZGVmaW5lZExpdGVyYWwobGl0ZXJhbCk7XG4gICAgICBjYXNlICdOdWxsTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLk51bGxMaXRlcmFsKGxpdGVyYWwpO1xuICAgIH1cbiAgICByZXR1cm4gdW5yZWFjaGFibGUobGl0ZXJhbCwgJ0xpdGVyYWwnKTtcbiAgfVxuXG4gIFRvcExldmVsU3RhdGVtZW50KHN0YXRlbWVudDogVG9wTGV2ZWxTdGF0ZW1lbnQpIHtcbiAgICBzd2l0Y2ggKHN0YXRlbWVudC50eXBlKSB7XG4gICAgICBjYXNlICdNdXN0YWNoZVN0YXRlbWVudCc6XG4gICAgICAgIHJldHVybiB0aGlzLk11c3RhY2hlU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdCbG9ja1N0YXRlbWVudCc6XG4gICAgICAgIHJldHVybiB0aGlzLkJsb2NrU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdQYXJ0aWFsU3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuUGFydGlhbFN0YXRlbWVudChzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnTXVzdGFjaGVDb21tZW50U3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuTXVzdGFjaGVDb21tZW50U3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdDb21tZW50U3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuQ29tbWVudFN0YXRlbWVudChzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnVGV4dE5vZGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5UZXh0Tm9kZShzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnRWxlbWVudE5vZGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5FbGVtZW50Tm9kZShzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgY2FzZSAnVGVtcGxhdGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5CbG9jayhzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnQXR0ck5vZGUnOlxuICAgICAgICAvLyBzaG91bGQgaGF2ZSBlbGVtZW50XG4gICAgICAgIHJldHVybiB0aGlzLkF0dHJOb2RlKHN0YXRlbWVudCk7XG4gICAgfVxuICAgIHVucmVhY2hhYmxlKHN0YXRlbWVudCwgJ1RvcExldmVsU3RhdGVtZW50Jyk7XG4gIH1cblxuICBCbG9jayhibG9jazogQmxvY2sgfCBQcm9ncmFtIHwgVGVtcGxhdGUpOiB2b2lkIHtcbiAgICAvKlxuICAgICAgV2hlbiBwcm9jZXNzaW5nIGEgdGVtcGxhdGUgbGlrZTpcblxuICAgICAgYGBgaGJzXG4gICAgICB7eyNpZiB3aGF0ZXZlcn19XG4gICAgICAgIHdoYXRldmVyXG4gICAgICB7e2Vsc2UgaWYgc29tZXRoaW5nRWxzZX19XG4gICAgICAgIHNvbWV0aGluZyBlbHNlXG4gICAgICB7e2Vsc2V9fVxuICAgICAgICBmYWxsYmFja1xuICAgICAge3svaWZ9fVxuICAgICAgYGBgXG5cbiAgICAgIFRoZSBBU1Qgc3RpbGwgX2VmZmVjdGl2ZWx5XyBsb29rcyBsaWtlOlxuXG4gICAgICBgYGBoYnNcbiAgICAgIHt7I2lmIHdoYXRldmVyfX1cbiAgICAgICAgd2hhdGV2ZXJcbiAgICAgIHt7ZWxzZX19e3sjaWYgc29tZXRoaW5nRWxzZX19XG4gICAgICAgIHNvbWV0aGluZyBlbHNlXG4gICAgICB7e2Vsc2V9fVxuICAgICAgICBmYWxsYmFja1xuICAgICAge3svaWZ9fXt7L2lmfX1cbiAgICAgIGBgYFxuXG4gICAgICBUaGUgb25seSB3YXkgd2UgY2FuIHRlbGwgaWYgdGhhdCBpcyB0aGUgY2FzZSBpcyBieSBjaGVja2luZyBmb3JcbiAgICAgIGBibG9jay5jaGFpbmVkYCwgYnV0IHVuZm9ydHVuYXRlbHkgd2hlbiB0aGUgYWN0dWFsIHN0YXRlbWVudHMgYXJlXG4gICAgICBwcm9jZXNzZWQgdGhlIGBibG9jay5ib2R5WzBdYCBub2RlICh3aGljaCB3aWxsIGFsd2F5cyBiZSBhXG4gICAgICBgQmxvY2tTdGF0ZW1lbnRgKSBoYXMgbm8gY2x1ZSB0aGF0IGl0cyBhbnNjZXN0b3IgYEJsb2NrYCBub2RlIHdhc1xuICAgICAgY2hhaW5lZC5cblxuICAgICAgVGhpcyBcImZvcndhcmRzXCIgdGhlIGBjaGFpbmVkYCBzZXR0aW5nIHNvIHRoYXQgd2UgY2FuIGNoZWNrXG4gICAgICBpdCBsYXRlciB3aGVuIHByb2Nlc3NpbmcgdGhlIGBCbG9ja1N0YXRlbWVudGAuXG4gICAgKi9cbiAgICBpZiAoYmxvY2suY2hhaW5lZCkge1xuICAgICAgbGV0IGZpcnN0Q2hpbGQgPSBibG9jay5ib2R5WzBdIGFzIEJsb2NrU3RhdGVtZW50O1xuICAgICAgZmlyc3RDaGlsZC5jaGFpbmVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShibG9jaykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLlRvcExldmVsU3RhdGVtZW50cyhibG9jay5ib2R5KTtcbiAgfVxuXG4gIFRvcExldmVsU3RhdGVtZW50cyhzdGF0ZW1lbnRzOiBUb3BMZXZlbFN0YXRlbWVudFtdKSB7XG4gICAgc3RhdGVtZW50cy5mb3JFYWNoKChzdGF0ZW1lbnQpID0+IHRoaXMuVG9wTGV2ZWxTdGF0ZW1lbnQoc3RhdGVtZW50KSk7XG4gIH1cblxuICBFbGVtZW50Tm9kZShlbDogRWxlbWVudE5vZGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShlbCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLk9wZW5FbGVtZW50Tm9kZShlbCk7XG4gICAgdGhpcy5Ub3BMZXZlbFN0YXRlbWVudHMoZWwuY2hpbGRyZW4pO1xuICAgIHRoaXMuQ2xvc2VFbGVtZW50Tm9kZShlbCk7XG4gIH1cblxuICBPcGVuRWxlbWVudE5vZGUoZWw6IEVsZW1lbnROb2RlKTogdm9pZCB7XG4gICAgdGhpcy5idWZmZXIgKz0gYDwke2VsLnRhZ31gO1xuICAgIGNvbnN0IHBhcnRzID0gWy4uLmVsLmF0dHJpYnV0ZXMsIC4uLmVsLm1vZGlmaWVycywgLi4uZWwuY29tbWVudHNdLnNvcnQoc29ydEJ5TG9jKTtcblxuICAgIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJyAnO1xuICAgICAgc3dpdGNoIChwYXJ0LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnQXR0ck5vZGUnOlxuICAgICAgICAgIHRoaXMuQXR0ck5vZGUocGFydCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VsZW1lbnRNb2RpZmllclN0YXRlbWVudCc6XG4gICAgICAgICAgdGhpcy5FbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQocGFydCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ011c3RhY2hlQ29tbWVudFN0YXRlbWVudCc6XG4gICAgICAgICAgdGhpcy5NdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQocGFydCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlbC5ibG9ja1BhcmFtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuQmxvY2tQYXJhbXMoZWwuYmxvY2tQYXJhbXMpO1xuICAgIH1cbiAgICBpZiAoZWwuc2VsZkNsb3NpbmcpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICcgLyc7XG4gICAgfVxuICAgIHRoaXMuYnVmZmVyICs9ICc+JztcbiAgfVxuXG4gIENsb3NlRWxlbWVudE5vZGUoZWw6IEVsZW1lbnROb2RlKTogdm9pZCB7XG4gICAgaWYgKGVsLnNlbGZDbG9zaW5nIHx8IHZvaWRNYXBbZWwudGFnLnRvTG93ZXJDYXNlKCldKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYnVmZmVyICs9IGA8LyR7ZWwudGFnfT5gO1xuICB9XG5cbiAgQXR0ck5vZGUoYXR0cjogQXR0ck5vZGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShhdHRyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCB7IG5hbWUsIHZhbHVlIH0gPSBhdHRyO1xuXG4gICAgdGhpcy5idWZmZXIgKz0gbmFtZTtcbiAgICBpZiAodmFsdWUudHlwZSAhPT0gJ1RleHROb2RlJyB8fCB2YWx1ZS5jaGFycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnPSc7XG4gICAgICB0aGlzLkF0dHJOb2RlVmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEF0dHJOb2RlVmFsdWUodmFsdWU6IEF0dHJOb2RlWyd2YWx1ZSddKSB7XG4gICAgaWYgKHZhbHVlLnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICdcIic7XG4gICAgICB0aGlzLlRleHROb2RlKHZhbHVlLCB0cnVlKTtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICdcIic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuTm9kZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgVGV4dE5vZGUodGV4dDogVGV4dE5vZGUsIGlzQXR0cj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZSh0ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZW50aXR5RW5jb2RpbmcgPT09ICdyYXcnKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSB0ZXh0LmNoYXJzO1xuICAgIH0gZWxzZSBpZiAoaXNBdHRyKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBlc2NhcGVBdHRyVmFsdWUodGV4dC5jaGFycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGVzY2FwZVRleHQodGV4dC5jaGFycyk7XG4gICAgfVxuICB9XG5cbiAgTXVzdGFjaGVTdGF0ZW1lbnQobXVzdGFjaGU6IE11c3RhY2hlU3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUobXVzdGFjaGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gbXVzdGFjaGUuZXNjYXBlZCA/ICd7eycgOiAne3t7JztcblxuICAgIGlmIChtdXN0YWNoZS5zdHJpcC5vcGVuKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnfic7XG4gICAgfVxuXG4gICAgdGhpcy5FeHByZXNzaW9uKG11c3RhY2hlLnBhdGgpO1xuICAgIHRoaXMuUGFyYW1zKG11c3RhY2hlLnBhcmFtcyk7XG4gICAgdGhpcy5IYXNoKG11c3RhY2hlLmhhc2gpO1xuXG4gICAgaWYgKG11c3RhY2hlLnN0cmlwLmNsb3NlKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnfic7XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gbXVzdGFjaGUuZXNjYXBlZCA/ICd9fScgOiAnfX19JztcbiAgfVxuXG4gIEJsb2NrU3RhdGVtZW50KGJsb2NrOiBCbG9ja1N0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGJsb2NrKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChibG9jay5jaGFpbmVkKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5pbnZlcnNlU3RyaXAub3BlbiA/ICd7e34nIDogJ3t7JztcbiAgICAgIHRoaXMuYnVmZmVyICs9ICdlbHNlICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLm9wZW5TdHJpcC5vcGVuID8gJ3t7fiMnIDogJ3t7Iyc7XG4gICAgfVxuXG4gICAgdGhpcy5FeHByZXNzaW9uKGJsb2NrLnBhdGgpO1xuICAgIHRoaXMuUGFyYW1zKGJsb2NrLnBhcmFtcyk7XG4gICAgdGhpcy5IYXNoKGJsb2NrLmhhc2gpO1xuICAgIGlmIChibG9jay5wcm9ncmFtLmJsb2NrUGFyYW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5CbG9ja1BhcmFtcyhibG9jay5wcm9ncmFtLmJsb2NrUGFyYW1zKTtcbiAgICB9XG5cbiAgICBpZiAoYmxvY2suY2hhaW5lZCkge1xuICAgICAgdGhpcy5idWZmZXIgKz0gYmxvY2suaW52ZXJzZVN0cmlwLmNsb3NlID8gJ359fScgOiAnfX0nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5vcGVuU3RyaXAuY2xvc2UgPyAnfn19JyA6ICd9fSc7XG4gICAgfVxuXG4gICAgdGhpcy5CbG9jayhibG9jay5wcm9ncmFtKTtcblxuICAgIGlmIChibG9jay5pbnZlcnNlKSB7XG4gICAgICBpZiAoIWJsb2NrLmludmVyc2UuY2hhaW5lZCkge1xuICAgICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5pbnZlcnNlU3RyaXAub3BlbiA/ICd7e34nIDogJ3t7JztcbiAgICAgICAgdGhpcy5idWZmZXIgKz0gJ2Vsc2UnO1xuICAgICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5pbnZlcnNlU3RyaXAuY2xvc2UgPyAnfn19JyA6ICd9fSc7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuQmxvY2soYmxvY2suaW52ZXJzZSk7XG4gICAgfVxuXG4gICAgaWYgKCFibG9jay5jaGFpbmVkKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5jbG9zZVN0cmlwLm9wZW4gPyAne3t+LycgOiAne3svJztcbiAgICAgIHRoaXMuRXhwcmVzc2lvbihibG9jay5wYXRoKTtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmNsb3NlU3RyaXAuY2xvc2UgPyAnfn19JyA6ICd9fSc7XG4gICAgfVxuICB9XG5cbiAgQmxvY2tQYXJhbXMoYmxvY2tQYXJhbXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5idWZmZXIgKz0gYCBhcyB8JHtibG9ja1BhcmFtcy5qb2luKCcgJyl9fGA7XG4gIH1cblxuICBQYXJ0aWFsU3RhdGVtZW50KHBhcnRpYWw6IFBhcnRpYWxTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShwYXJ0aWFsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICd7ez4nO1xuICAgIHRoaXMuRXhwcmVzc2lvbihwYXJ0aWFsLm5hbWUpO1xuICAgIHRoaXMuUGFyYW1zKHBhcnRpYWwucGFyYW1zKTtcbiAgICB0aGlzLkhhc2gocGFydGlhbC5oYXNoKTtcbiAgICB0aGlzLmJ1ZmZlciArPSAnfX0nO1xuICB9XG5cbiAgQ29uY2F0U3RhdGVtZW50KGNvbmNhdDogQ29uY2F0U3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoY29uY2F0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICdcIic7XG4gICAgY29uY2F0LnBhcnRzLmZvckVhY2goKHBhcnQpID0+IHtcbiAgICAgIGlmIChwYXJ0LnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgICAgdGhpcy5UZXh0Tm9kZShwYXJ0LCB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuTm9kZShwYXJ0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmJ1ZmZlciArPSAnXCInO1xuICB9XG5cbiAgTXVzdGFjaGVDb21tZW50U3RhdGVtZW50KGNvbW1lbnQ6IE11c3RhY2hlQ29tbWVudFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGNvbW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gYHt7IS0tJHtjb21tZW50LnZhbHVlfS0tfX1gO1xuICB9XG5cbiAgRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50KG1vZDogRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUobW9kKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICd7eyc7XG4gICAgdGhpcy5FeHByZXNzaW9uKG1vZC5wYXRoKTtcbiAgICB0aGlzLlBhcmFtcyhtb2QucGFyYW1zKTtcbiAgICB0aGlzLkhhc2gobW9kLmhhc2gpO1xuICAgIHRoaXMuYnVmZmVyICs9ICd9fSc7XG4gIH1cblxuICBDb21tZW50U3RhdGVtZW50KGNvbW1lbnQ6IENvbW1lbnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShjb21tZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IGA8IS0tJHtjb21tZW50LnZhbHVlfS0tPmA7XG4gIH1cblxuICBQYXRoRXhwcmVzc2lvbihwYXRoOiBQYXRoRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHBhdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gcGF0aC5vcmlnaW5hbDtcbiAgfVxuXG4gIFN1YkV4cHJlc3Npb24oc2V4cDogU3ViRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHNleHApKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJygnO1xuICAgIHRoaXMuRXhwcmVzc2lvbihzZXhwLnBhdGgpO1xuICAgIHRoaXMuUGFyYW1zKHNleHAucGFyYW1zKTtcbiAgICB0aGlzLkhhc2goc2V4cC5oYXNoKTtcbiAgICB0aGlzLmJ1ZmZlciArPSAnKSc7XG4gIH1cblxuICBQYXJhbXMocGFyYW1zOiBFeHByZXNzaW9uW10pIHtcbiAgICAvLyBUT0RPOiBpbXBsZW1lbnQgYSB0b3AgbGV2ZWwgUGFyYW1zIEFTVCBub2RlIChqdXN0IGxpa2UgdGhlIEhhc2ggb2JqZWN0KVxuICAgIC8vIHNvIHRoYXQgdGhpcyBjYW4gYWxzbyBiZSBvdmVycmlkZGVuXG4gICAgaWYgKHBhcmFtcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtcy5mb3JFYWNoKChwYXJhbSkgPT4ge1xuICAgICAgICB0aGlzLmJ1ZmZlciArPSAnICc7XG4gICAgICAgIHRoaXMuRXhwcmVzc2lvbihwYXJhbSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBIYXNoKGhhc2g6IEhhc2gpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShoYXNoLCB0cnVlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGhhc2gucGFpcnMuZm9yRWFjaCgocGFpcikgPT4ge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJyAnO1xuICAgICAgdGhpcy5IYXNoUGFpcihwYWlyKTtcbiAgICB9KTtcbiAgfVxuXG4gIEhhc2hQYWlyKHBhaXI6IEhhc2hQYWlyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUocGFpcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBwYWlyLmtleTtcbiAgICB0aGlzLmJ1ZmZlciArPSAnPSc7XG4gICAgdGhpcy5Ob2RlKHBhaXIudmFsdWUpO1xuICB9XG5cbiAgU3RyaW5nTGl0ZXJhbChzdHI6IFN0cmluZ0xpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShzdHIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gSlNPTi5zdHJpbmdpZnkoc3RyLnZhbHVlKTtcbiAgfVxuXG4gIEJvb2xlYW5MaXRlcmFsKGJvb2w6IEJvb2xlYW5MaXRlcmFsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoYm9vbCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBib29sLnZhbHVlO1xuICB9XG5cbiAgTnVtYmVyTGl0ZXJhbChudW1iZXI6IE51bWJlckxpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShudW1iZXIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gbnVtYmVyLnZhbHVlO1xuICB9XG5cbiAgVW5kZWZpbmVkTGl0ZXJhbChub2RlOiBVbmRlZmluZWRMaXRlcmFsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUobm9kZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIE51bGxMaXRlcmFsKG5vZGU6IE51bGxMaXRlcmFsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUobm9kZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSAnbnVsbCc7XG4gIH1cblxuICBwcmludChub2RlOiBOb2RlKSB7XG4gICAgbGV0IHsgb3B0aW9ucyB9ID0gdGhpcztcblxuICAgIGlmIChvcHRpb25zLm92ZXJyaWRlKSB7XG4gICAgICBsZXQgcmVzdWx0ID0gb3B0aW9ucy5vdmVycmlkZShub2RlLCBvcHRpb25zKTtcblxuICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgPSAnJztcbiAgICB0aGlzLk5vZGUobm9kZSk7XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVucmVhY2hhYmxlKG5vZGU6IG5ldmVyLCBwYXJlbnROb2RlVHlwZTogc3RyaW5nKTogbmV2ZXIge1xuICBsZXQgeyBsb2MsIHR5cGUgfSA9IChub2RlIGFzIGFueSkgYXMgTm9kZTtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBOb24tZXhoYXVzdGl2ZSBub2RlIG5hcnJvd2luZyAke3R5cGV9IEAgbG9jYXRpb246ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICBsb2NcbiAgICApfSBmb3IgcGFyZW50ICR7cGFyZW50Tm9kZVR5cGV9YFxuICApO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

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

exports.escapeText = escapeText;
exports.isSynthetic = isSynthetic;
exports.sortByLoc = sortByLoc;
const ATTR_VALUE_REGEX_TEST = /[\xA0"&]/;

@@ -78,2 +80,31 @@ const ATTR_VALUE_REGEX_REPLACE = new RegExp(ATTR_VALUE_REGEX_TEST.source, 'g');

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFRQSxNQUFNLHFCQUFxQixHQUEzQixVQUFBO0FBQ0EsTUFBTSx3QkFBd0IsR0FBRyxJQUFBLE1BQUEsQ0FBVyxxQkFBcUIsQ0FBaEMsTUFBQSxFQUFqQyxHQUFpQyxDQUFqQztBQUVBLE1BQU0sZUFBZSxHQUFyQixXQUFBO0FBQ0EsTUFBTSxrQkFBa0IsR0FBRyxJQUFBLE1BQUEsQ0FBVyxlQUFlLENBQTFCLE1BQUEsRUFBM0IsR0FBMkIsQ0FBM0I7O0FBRUEsU0FBQSxpQkFBQSxDQUFBLElBQUEsRUFBdUM7QUFDckMsVUFBUSxJQUFJLENBQUosVUFBQSxDQUFSLENBQVEsQ0FBUjtBQUNFLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxRQUFBOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxRQUFBOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxPQUFBOztBQUNGO0FBQ0UsYUFBQSxJQUFBO0FBUko7QUFVRDs7QUFFRCxTQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQWtDO0FBQ2hDLFVBQVEsSUFBSSxDQUFKLFVBQUEsQ0FBUixDQUFRLENBQVI7QUFDRSxTQUFBO0FBQUE7QUFBQTtBQUNFLGFBQUEsUUFBQTs7QUFDRixTQUFBO0FBQUE7QUFBQTtBQUNFLGFBQUEsT0FBQTs7QUFDRixTQUFBO0FBQUE7QUFBQTtBQUNFLGFBQUEsTUFBQTs7QUFDRixTQUFBO0FBQUE7QUFBQTtBQUNFLGFBQUEsTUFBQTs7QUFDRjtBQUNFLGFBQUEsSUFBQTtBQVZKO0FBWUQ7O0FBRUssU0FBQSxlQUFBLENBQUEsU0FBQSxFQUEyQztBQUMvQyxNQUFJLHFCQUFxQixDQUFyQixJQUFBLENBQUosU0FBSSxDQUFKLEVBQTJDO0FBQ3pDLFdBQU8sU0FBUyxDQUFULE9BQUEsQ0FBQSx3QkFBQSxFQUFQLGlCQUFPLENBQVA7QUFDRDs7QUFDRCxTQUFBLFNBQUE7QUFDRDs7QUFFSyxTQUFBLFVBQUEsQ0FBQSxJQUFBLEVBQWlDO0FBQ3JDLE1BQUksZUFBZSxDQUFmLElBQUEsQ0FBSixJQUFJLENBQUosRUFBZ0M7QUFDOUIsV0FBTyxJQUFJLENBQUosT0FBQSxDQUFBLGtCQUFBLEVBQVAsWUFBTyxDQUFQO0FBQ0Q7O0FBQ0QsU0FBQSxJQUFBO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlbnVtIENoYXIge1xuICBOQlNQID0gMHhhMCxcbiAgUVVPVCA9IDB4MjIsXG4gIExUID0gMHgzYyxcbiAgR1QgPSAweDNlLFxuICBBTVAgPSAweDI2LFxufVxuXG5jb25zdCBBVFRSX1ZBTFVFX1JFR0VYX1RFU1QgPSAvW1xceEEwXCImXS87XG5jb25zdCBBVFRSX1ZBTFVFX1JFR0VYX1JFUExBQ0UgPSBuZXcgUmVnRXhwKEFUVFJfVkFMVUVfUkVHRVhfVEVTVC5zb3VyY2UsICdnJyk7XG5cbmNvbnN0IFRFWFRfUkVHRVhfVEVTVCA9IC9bXFx4QTAmPD5dLztcbmNvbnN0IFRFWFRfUkVHRVhfUkVQTEFDRSA9IG5ldyBSZWdFeHAoVEVYVF9SRUdFWF9URVNULnNvdXJjZSwgJ2cnKTtcblxuZnVuY3Rpb24gYXR0clZhbHVlUmVwbGFjZXIoY2hhcjogc3RyaW5nKSB7XG4gIHN3aXRjaCAoY2hhci5jaGFyQ29kZUF0KDApKSB7XG4gICAgY2FzZSBDaGFyLk5CU1A6XG4gICAgICByZXR1cm4gJyZuYnNwOyc7XG4gICAgY2FzZSBDaGFyLlFVT1Q6XG4gICAgICByZXR1cm4gJyZxdW90Oyc7XG4gICAgY2FzZSBDaGFyLkFNUDpcbiAgICAgIHJldHVybiAnJmFtcDsnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY2hhcjtcbiAgfVxufVxuXG5mdW5jdGlvbiB0ZXh0UmVwbGFjZXIoY2hhcjogc3RyaW5nKSB7XG4gIHN3aXRjaCAoY2hhci5jaGFyQ29kZUF0KDApKSB7XG4gICAgY2FzZSBDaGFyLk5CU1A6XG4gICAgICByZXR1cm4gJyZuYnNwOyc7XG4gICAgY2FzZSBDaGFyLkFNUDpcbiAgICAgIHJldHVybiAnJmFtcDsnO1xuICAgIGNhc2UgQ2hhci5MVDpcbiAgICAgIHJldHVybiAnJmx0Oyc7XG4gICAgY2FzZSBDaGFyLkdUOlxuICAgICAgcmV0dXJuICcmZ3Q7JztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGNoYXI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUF0dHJWYWx1ZShhdHRyVmFsdWU6IHN0cmluZykge1xuICBpZiAoQVRUUl9WQUxVRV9SRUdFWF9URVNULnRlc3QoYXR0clZhbHVlKSkge1xuICAgIHJldHVybiBhdHRyVmFsdWUucmVwbGFjZShBVFRSX1ZBTFVFX1JFR0VYX1JFUExBQ0UsIGF0dHJWYWx1ZVJlcGxhY2VyKTtcbiAgfVxuICByZXR1cm4gYXR0clZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlVGV4dCh0ZXh0OiBzdHJpbmcpIHtcbiAgaWYgKFRFWFRfUkVHRVhfVEVTVC50ZXN0KHRleHQpKSB7XG4gICAgcmV0dXJuIHRleHQucmVwbGFjZShURVhUX1JFR0VYX1JFUExBQ0UsIHRleHRSZXBsYWNlcik7XG4gIH1cbiAgcmV0dXJuIHRleHQ7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
function isSynthetic(node) {
if (node && node.loc) {
return node.loc.source === '(synthetic)';
}
return false;
}
function sortByLoc(a, b) {
// be conservative about the location where a new node is inserted
if (isSynthetic(a) || isSynthetic(b)) {
return 0;
}
if (a.loc.start.line < b.loc.start.line) {
return -1;
}
if (a.loc.start.line === b.loc.start.line && a.loc.start.column < b.loc.start.column) {
return -1;
}
if (a.loc.start.line === b.loc.start.line && a.loc.start.column === b.loc.start.column) {
return 0;
}
return 1;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVVBLE1BQU0scUJBQXFCLEdBQTNCLFVBQUE7QUFDQSxNQUFNLHdCQUF3QixHQUFHLElBQUEsTUFBQSxDQUFXLHFCQUFxQixDQUFoQyxNQUFBLEVBQWpDLEdBQWlDLENBQWpDO0FBRUEsTUFBTSxlQUFlLEdBQXJCLFdBQUE7QUFDQSxNQUFNLGtCQUFrQixHQUFHLElBQUEsTUFBQSxDQUFXLGVBQWUsQ0FBMUIsTUFBQSxFQUEzQixHQUEyQixDQUEzQjs7QUFFQSxTQUFBLGlCQUFBLENBQUEsSUFBQSxFQUF1QztBQUNyQyxVQUFRLElBQUksQ0FBSixVQUFBLENBQVIsQ0FBUSxDQUFSO0FBQ0UsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLFFBQUE7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLFFBQUE7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLE9BQUE7O0FBQ0Y7QUFDRSxhQUFBLElBQUE7QUFSSjtBQVVEOztBQUVELFNBQUEsWUFBQSxDQUFBLElBQUEsRUFBa0M7QUFDaEMsVUFBUSxJQUFJLENBQUosVUFBQSxDQUFSLENBQVEsQ0FBUjtBQUNFLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxRQUFBOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxPQUFBOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxNQUFBOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxNQUFBOztBQUNGO0FBQ0UsYUFBQSxJQUFBO0FBVko7QUFZRDs7QUFFSyxTQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQTJDO0FBQy9DLE1BQUkscUJBQXFCLENBQXJCLElBQUEsQ0FBSixTQUFJLENBQUosRUFBMkM7QUFDekMsV0FBTyxTQUFTLENBQVQsT0FBQSxDQUFBLHdCQUFBLEVBQVAsaUJBQU8sQ0FBUDtBQUNEOztBQUNELFNBQUEsU0FBQTtBQUNEOztBQUVLLFNBQUEsVUFBQSxDQUFBLElBQUEsRUFBaUM7QUFDckMsTUFBSSxlQUFlLENBQWYsSUFBQSxDQUFKLElBQUksQ0FBSixFQUFnQztBQUM5QixXQUFPLElBQUksQ0FBSixPQUFBLENBQUEsa0JBQUEsRUFBUCxZQUFPLENBQVA7QUFDRDs7QUFDRCxTQUFBLElBQUE7QUFDRDs7QUFFSyxTQUFBLFdBQUEsQ0FBQSxJQUFBLEVBQW9DO0FBQ3hDLE1BQUksSUFBSSxJQUFJLElBQUksQ0FBaEIsR0FBQSxFQUFzQjtBQUNwQixXQUFPLElBQUksQ0FBSixHQUFBLENBQUEsTUFBQSxLQUFQLGFBQUE7QUFDRDs7QUFFRCxTQUFBLEtBQUE7QUFDRDs7QUFFSyxTQUFBLFNBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxFQUE0QztBQUNoRDtBQUNBLE1BQUksV0FBVyxDQUFYLENBQVcsQ0FBWCxJQUFrQixXQUFXLENBQWpDLENBQWlDLENBQWpDLEVBQXNDO0FBQ3BDLFdBQUEsQ0FBQTtBQUNEOztBQUVELE1BQUksQ0FBQyxDQUFELEdBQUEsQ0FBQSxLQUFBLENBQUEsSUFBQSxHQUFtQixDQUFDLENBQUQsR0FBQSxDQUFBLEtBQUEsQ0FBdkIsSUFBQSxFQUF5QztBQUN2QyxXQUFPLENBQVAsQ0FBQTtBQUNEOztBQUVELE1BQUksQ0FBQyxDQUFELEdBQUEsQ0FBQSxLQUFBLENBQUEsSUFBQSxLQUFxQixDQUFDLENBQUQsR0FBQSxDQUFBLEtBQUEsQ0FBckIsSUFBQSxJQUF5QyxDQUFDLENBQUQsR0FBQSxDQUFBLEtBQUEsQ0FBQSxNQUFBLEdBQXFCLENBQUMsQ0FBRCxHQUFBLENBQUEsS0FBQSxDQUFsRSxNQUFBLEVBQXNGO0FBQ3BGLFdBQU8sQ0FBUCxDQUFBO0FBQ0Q7O0FBRUQsTUFBSSxDQUFDLENBQUQsR0FBQSxDQUFBLEtBQUEsQ0FBQSxJQUFBLEtBQXFCLENBQUMsQ0FBRCxHQUFBLENBQUEsS0FBQSxDQUFyQixJQUFBLElBQXlDLENBQUMsQ0FBRCxHQUFBLENBQUEsS0FBQSxDQUFBLE1BQUEsS0FBdUIsQ0FBQyxDQUFELEdBQUEsQ0FBQSxLQUFBLENBQXBFLE1BQUEsRUFBd0Y7QUFDdEYsV0FBQSxDQUFBO0FBQ0Q7O0FBRUQsU0FBQSxDQUFBO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBBU1QgZnJvbSAnLi4vdHlwZXMvbm9kZXMnO1xuXG5jb25zdCBlbnVtIENoYXIge1xuICBOQlNQID0gMHhhMCxcbiAgUVVPVCA9IDB4MjIsXG4gIExUID0gMHgzYyxcbiAgR1QgPSAweDNlLFxuICBBTVAgPSAweDI2LFxufVxuXG5jb25zdCBBVFRSX1ZBTFVFX1JFR0VYX1RFU1QgPSAvW1xceEEwXCImXS87XG5jb25zdCBBVFRSX1ZBTFVFX1JFR0VYX1JFUExBQ0UgPSBuZXcgUmVnRXhwKEFUVFJfVkFMVUVfUkVHRVhfVEVTVC5zb3VyY2UsICdnJyk7XG5cbmNvbnN0IFRFWFRfUkVHRVhfVEVTVCA9IC9bXFx4QTAmPD5dLztcbmNvbnN0IFRFWFRfUkVHRVhfUkVQTEFDRSA9IG5ldyBSZWdFeHAoVEVYVF9SRUdFWF9URVNULnNvdXJjZSwgJ2cnKTtcblxuZnVuY3Rpb24gYXR0clZhbHVlUmVwbGFjZXIoY2hhcjogc3RyaW5nKSB7XG4gIHN3aXRjaCAoY2hhci5jaGFyQ29kZUF0KDApKSB7XG4gICAgY2FzZSBDaGFyLk5CU1A6XG4gICAgICByZXR1cm4gJyZuYnNwOyc7XG4gICAgY2FzZSBDaGFyLlFVT1Q6XG4gICAgICByZXR1cm4gJyZxdW90Oyc7XG4gICAgY2FzZSBDaGFyLkFNUDpcbiAgICAgIHJldHVybiAnJmFtcDsnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY2hhcjtcbiAgfVxufVxuXG5mdW5jdGlvbiB0ZXh0UmVwbGFjZXIoY2hhcjogc3RyaW5nKSB7XG4gIHN3aXRjaCAoY2hhci5jaGFyQ29kZUF0KDApKSB7XG4gICAgY2FzZSBDaGFyLk5CU1A6XG4gICAgICByZXR1cm4gJyZuYnNwOyc7XG4gICAgY2FzZSBDaGFyLkFNUDpcbiAgICAgIHJldHVybiAnJmFtcDsnO1xuICAgIGNhc2UgQ2hhci5MVDpcbiAgICAgIHJldHVybiAnJmx0Oyc7XG4gICAgY2FzZSBDaGFyLkdUOlxuICAgICAgcmV0dXJuICcmZ3Q7JztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGNoYXI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUF0dHJWYWx1ZShhdHRyVmFsdWU6IHN0cmluZykge1xuICBpZiAoQVRUUl9WQUxVRV9SRUdFWF9URVNULnRlc3QoYXR0clZhbHVlKSkge1xuICAgIHJldHVybiBhdHRyVmFsdWUucmVwbGFjZShBVFRSX1ZBTFVFX1JFR0VYX1JFUExBQ0UsIGF0dHJWYWx1ZVJlcGxhY2VyKTtcbiAgfVxuICByZXR1cm4gYXR0clZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlVGV4dCh0ZXh0OiBzdHJpbmcpIHtcbiAgaWYgKFRFWFRfUkVHRVhfVEVTVC50ZXN0KHRleHQpKSB7XG4gICAgcmV0dXJuIHRleHQucmVwbGFjZShURVhUX1JFR0VYX1JFUExBQ0UsIHRleHRSZXBsYWNlcik7XG4gIH1cbiAgcmV0dXJuIHRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N5bnRoZXRpYyhub2RlOiBBU1QuTm9kZSk6IGJvb2xlYW4ge1xuICBpZiAobm9kZSAmJiBub2RlLmxvYykge1xuICAgIHJldHVybiBub2RlLmxvYy5zb3VyY2UgPT09ICcoc3ludGhldGljKSc7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3J0QnlMb2MoYTogQVNULk5vZGUsIGI6IEFTVC5Ob2RlKTogLTEgfCAwIHwgMSB7XG4gIC8vIGJlIGNvbnNlcnZhdGl2ZSBhYm91dCB0aGUgbG9jYXRpb24gd2hlcmUgYSBuZXcgbm9kZSBpcyBpbnNlcnRlZFxuICBpZiAoaXNTeW50aGV0aWMoYSkgfHwgaXNTeW50aGV0aWMoYikpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmIChhLmxvYy5zdGFydC5saW5lIDwgYi5sb2Muc3RhcnQubGluZSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIGlmIChhLmxvYy5zdGFydC5saW5lID09PSBiLmxvYy5zdGFydC5saW5lICYmIGEubG9jLnN0YXJ0LmNvbHVtbiA8IGIubG9jLnN0YXJ0LmNvbHVtbikge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIGlmIChhLmxvYy5zdGFydC5saW5lID09PSBiLmxvYy5zdGFydC5saW5lICYmIGEubG9jLnN0YXJ0LmNvbHVtbiA9PT0gYi5sb2Muc3RhcnQuY29sdW1uKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gMTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -222,2 +222,5 @@ "use strict";

:
case "afterAttributeName"
/* afterAttributeName */
:
this.currentStartTag.comments.push(comment);

@@ -438,2 +441,2 @@ break;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyL2hhbmRsZWJhcnMtbm9kZS12aXNpdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBQ0E7Ozs7QUFLTSxNQUFBLHNCQUFBLFNBQUEsY0FBQSxDQUFxRDtBQUt6RCxNQUFBLFVBQUEsR0FBc0I7QUFDcEIsV0FBTyxLQUFBLFlBQUEsQ0FBQSxNQUFBLEtBQVAsQ0FBQTtBQUNEOztBQUtELEVBQUEsT0FBTyxDQUFBLE9BQUEsRUFBcUI7QUFDMUIsUUFBSSxJQUFJLEdBQVIsRUFBQTtBQUNBLFFBQUEsSUFBQTs7QUFFQSxRQUFJLEtBQUosVUFBQSxFQUFxQjtBQUNuQixNQUFBLElBQUksR0FBRyxrQkFBQSxRQUFBLENBQUEsSUFBQSxFQUFpQixPQUFPLENBQXhCLFdBQUEsRUFBc0MsT0FBTyxDQUFwRCxHQUFPLENBQVA7QUFERixLQUFBLE1BRU87QUFDTCxNQUFBLElBQUksR0FBRyxrQkFBQSxXQUFBLENBQUEsSUFBQSxFQUFvQixPQUFPLENBQTNCLFdBQUEsRUFBeUMsT0FBTyxDQUFoRCxPQUFBLEVBQTBELE9BQU8sQ0FBeEUsR0FBTyxDQUFQO0FBQ0Q7O0FBRUQsUUFBQSxDQUFBO0FBQUEsUUFDRSxDQUFDLEdBQUcsT0FBTyxDQUFQLElBQUEsQ0FETixNQUFBO0FBR0EsU0FBQSxZQUFBLENBQUEsSUFBQSxDQUFBLElBQUE7O0FBRUEsUUFBSSxDQUFDLEtBQUwsQ0FBQSxFQUFhO0FBQ1gsYUFBTyxLQUFBLFlBQUEsQ0FBUCxHQUFPLEVBQVA7QUFDRDs7QUFFRCxTQUFLLENBQUMsR0FBTixDQUFBLEVBQVksQ0FBQyxHQUFiLENBQUEsRUFBbUIsQ0FBbkIsRUFBQSxFQUF3QjtBQUN0QixXQUFBLFVBQUEsQ0FBZ0IsT0FBTyxDQUFQLElBQUEsQ0FBaEIsQ0FBZ0IsQ0FBaEI7QUFwQndCLEtBQUEsQ0F1QjFCOzs7QUFD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LENBQVAsU0FBQSxDQUFBLElBQUEsQ0FBQSxRQUFBO0FBQ0Q7O0FBRUQsU0FBQSwrQkFBQSxDQUFBLFNBQUEsRUFBQSxJQUFBLEVBQTBGO0FBQ3hGLEVBQUEsU0FBUyxDQUFULFNBQUEsR0FBQSxJQUFBO0FBQ0EsRUFBQSxTQUFTLENBQVQsS0FBQSxDQUFBLElBQUEsQ0FBQSxJQUFBO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYiBmcm9tICcuLi9idWlsZGVycyc7XG5pbXBvcnQgeyBhcHBlbmRDaGlsZCwgaXNMaXRlcmFsLCBwcmludExpdGVyYWwgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgKiBhcyBBU1QgZnJvbSAnLi4vdHlwZXMvbm9kZXMnO1xuaW1wb3J0ICogYXMgSEJTIGZyb20gJy4uL3R5cGVzL2hhbmRsZWJhcnMtYXN0JztcbmltcG9ydCB7IFBhcnNlciwgVGFnLCBBdHRyaWJ1dGUgfSBmcm9tICcuLi9wYXJzZXInO1xuaW1wb3J0IFN5bnRheEVycm9yIGZyb20gJy4uL2Vycm9ycy9zeW50YXgtZXJyb3InO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBSZWNhc3QgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRva2VuaXplclN0YXRlIH0gZnJvbSAnc2ltcGxlLWh0bWwtdG9rZW5pemVyJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEhhbmRsZWJhcnNOb2RlVmlzaXRvcnMgZXh0ZW5kcyBQYXJzZXIge1xuICBhYnN0cmFjdCBhcHBlbmRUb0NvbW1lbnREYXRhKHM6IHN0cmluZyk6IHZvaWQ7XG4gIGFic3RyYWN0IGJlZ2luQXR0cmlidXRlVmFsdWUocXVvdGVkOiBib29sZWFuKTogdm9pZDtcbiAgYWJzdHJhY3QgZmluaXNoQXR0cmlidXRlVmFsdWUoKTogdm9pZDtcblxuICBwcml2YXRlIGdldCBpc1RvcExldmVsKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjay5sZW5ndGggPT09IDA7XG4gIH1cblxuICBQcm9ncmFtKHByb2dyYW06IEhCUy5Qcm9ncmFtKTogQVNULkJsb2NrO1xuICBQcm9ncmFtKHByb2dyYW06IEhCUy5Qcm9ncmFtKTogQVNULlRlbXBsYXRlO1xuICBQcm9ncmFtKHByb2dyYW06IEhCUy5Qcm9ncmFtKTogQVNULlRlbXBsYXRlIHwgQVNULkJsb2NrO1xuICBQcm9ncmFtKHByb2dyYW06IEhCUy5Qcm9ncmFtKTogQVNULkJsb2NrIHwgQVNULlRlbXBsYXRlIHtcbiAgICBsZXQgYm9keTogQVNULlN0YXRlbWVudFtdID0gW107XG4gICAgbGV0IG5vZGU7XG5cbiAgICBpZiAodGhpcy5pc1RvcExldmVsKSB7XG4gICAgICBub2RlID0gYi50ZW1wbGF0ZShib2R5LCBwcm9ncmFtLmJsb2NrUGFyYW1zLCBwcm9ncmFtLmxvYyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSBiLmJsb2NrSXRzZWxmKGJvZHksIHByb2dyYW0uYmxvY2tQYXJhbXMsIHByb2dyYW0uY2hhaW5lZCwgcHJvZ3JhbS5sb2MpO1xuICAgIH1cblxuICAgIGxldCBpLFxuICAgICAgbCA9IHByb2dyYW0uYm9keS5sZW5ndGg7XG5cbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKG5vZGUpO1xuXG4gICAgaWYgKGwgPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjay5wb3AoKSBhcyBBU1QuQmxvY2sgfCBBU1QuVGVtcGxhdGU7XG4gICAgfVxuXG4gICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgdGhpcy5hY2NlcHROb2RlKHByb2dyYW0uYm9keVtpXSk7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIHRoYXQgdGhhdCB0aGUgZWxlbWVudCBzdGFjayBpcyBiYWxhbmNlZCBwcm9wZXJseS5cbiAgICBsZXQgcG9wcGVkTm9kZSA9IHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpO1xuICAgIGlmIChwb3BwZWROb2RlICE9PSBub2RlKSB7XG4gICAgICBsZXQgZWxlbWVudE5vZGUgPSBwb3BwZWROb2RlIGFzIEFTVC5FbGVtZW50Tm9kZTtcblxuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAnVW5jbG9zZWQgZWxlbWVudCBgJyArIGVsZW1lbnROb2RlLnRhZyArICdgIChvbiBsaW5lICcgKyBlbGVtZW50Tm9kZS5sb2MhLnN0YXJ0LmxpbmUgKyAnKS4nLFxuICAgICAgICBlbGVtZW50Tm9kZS5sb2NcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBCbG9ja1N0YXRlbWVudChibG9jazogSEJTLkJsb2NrU3RhdGVtZW50KTogQVNULkJsb2NrU3RhdGVtZW50IHwgdm9pZCB7XG4gICAgaWYgKHRoaXMudG9rZW5pemVyLnN0YXRlID09PSBUb2tlbml6ZXJTdGF0ZS5jb21tZW50KSB7XG4gICAgICB0aGlzLmFwcGVuZFRvQ29tbWVudERhdGEodGhpcy5zb3VyY2VGb3JOb2RlKGJsb2NrKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgIT09IFRva2VuaXplclN0YXRlLmRhdGEgJiZcbiAgICAgIHRoaXMudG9rZW5pemVyWydzdGF0ZSddICE9PSBUb2tlbml6ZXJTdGF0ZS5iZWZvcmVEYXRhXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICdBIGJsb2NrIG1heSBvbmx5IGJlIHVzZWQgaW5zaWRlIGFuIEhUTUwgZWxlbWVudCBvciBhbm90aGVyIGJsb2NrLicsXG4gICAgICAgIGJsb2NrLmxvY1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgeyBwYXRoLCBwYXJhbXMsIGhhc2ggfSA9IGFjY2VwdENhbGxOb2Rlcyh0aGlzLCBibG9jayk7XG4gICAgbGV0IHByb2dyYW0gPSB0aGlzLlByb2dyYW0oYmxvY2sucHJvZ3JhbSk7XG4gICAgbGV0IGludmVyc2UgPSBibG9jay5pbnZlcnNlID8gdGhpcy5Qcm9ncmFtKGJsb2NrLmludmVyc2UpIDogbnVsbDtcblxuICAgIGxldCBub2RlID0gYi5ibG9jayhcbiAgICAgIHBhdGgsXG4gICAgICBwYXJhbXMsXG4gICAgICBoYXNoLFxuICAgICAgcHJvZ3JhbSxcbiAgICAgIGludmVyc2UsXG4gICAgICBibG9jay5sb2MsXG4gICAgICBibG9jay5vcGVuU3RyaXAsXG4gICAgICBibG9jay5pbnZlcnNlU3RyaXAsXG4gICAgICBibG9jay5jbG9zZVN0cmlwXG4gICAgKTtcblxuICAgIGxldCBwYXJlbnRQcm9ncmFtID0gdGhpcy5jdXJyZW50RWxlbWVudCgpO1xuXG4gICAgYXBwZW5kQ2hpbGQocGFyZW50UHJvZ3JhbSwgbm9kZSk7XG4gIH1cblxuICBNdXN0YWNoZVN0YXRlbWVudChyYXdNdXN0YWNoZTogSEJTLk11c3RhY2hlU3RhdGVtZW50KTogQVNULk11c3RhY2hlU3RhdGVtZW50IHwgdm9pZCB7XG4gICAgbGV0IHsgdG9rZW5pemVyIH0gPSB0aGlzO1xuXG4gICAgaWYgKHRva2VuaXplci5zdGF0ZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICB0aGlzLmFwcGVuZFRvQ29tbWVudERhdGEodGhpcy5zb3VyY2VGb3JOb2RlKHJhd011c3RhY2hlKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IG11c3RhY2hlOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQ7XG4gICAgbGV0IHsgZXNjYXBlZCwgbG9jLCBzdHJpcCB9ID0gcmF3TXVzdGFjaGU7XG5cbiAgICBpZiAoaXNMaXRlcmFsKHJhd011c3RhY2hlLnBhdGgpKSB7XG4gICAgICBtdXN0YWNoZSA9IHtcbiAgICAgICAgdHlwZTogJ011c3RhY2hlU3RhdGVtZW50JyxcbiAgICAgICAgcGF0aDogdGhpcy5hY2NlcHROb2RlPEFTVC5MaXRlcmFsPihyYXdNdXN0YWNoZS5wYXRoKSxcbiAgICAgICAgcGFyYW1zOiBbXSxcbiAgICAgICAgaGFzaDogYi5oYXNoKCksXG4gICAgICAgIGVzY2FwZWQsXG4gICAgICAgIGxvYyxcbiAgICAgICAgc3RyaXAsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgeyBwYXRoLCBwYXJhbXMsIGhhc2ggfSA9IGFjY2VwdENhbGxOb2RlcyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgcmF3TXVzdGFjaGUgYXMgSEJTLk11c3RhY2hlU3RhdGVtZW50ICYge1xuICAgICAgICAgIHBhdGg6IEhCUy5QYXRoRXhwcmVzc2lvbjtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIG11c3RhY2hlID0gYi5tdXN0YWNoZShwYXRoLCBwYXJhbXMsIGhhc2gsICFlc2NhcGVkLCBsb2MsIHN0cmlwKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRva2VuaXplci5zdGF0ZSkge1xuICAgICAgLy8gVGFnIGhlbHBlcnNcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUudGFnT3BlbjpcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUudGFnTmFtZTpcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAgIGBDYW5ub3QgdXNlIG11c3RhY2hlcyBpbiBhbiBlbGVtZW50cyB0YWduYW1lOiBcXGAke3RoaXMuc291cmNlRm9yTm9kZShcbiAgICAgICAgICAgIHJhd011c3RhY2hlLFxuICAgICAgICAgICAgcmF3TXVzdGFjaGUucGF0aFxuICAgICAgICAgICl9XFxgIGF0IEwke2xvYy5zdGFydC5saW5lfTpDJHtsb2Muc3RhcnQuY29sdW1ufWAsXG4gICAgICAgICAgbXVzdGFjaGUubG9jXG4gICAgICAgICk7XG5cbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYmVmb3JlQXR0cmlidXRlTmFtZTpcbiAgICAgICAgYWRkRWxlbWVudE1vZGlmaWVyKHRoaXMuY3VycmVudFN0YXJ0VGFnLCBtdXN0YWNoZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5hdHRyaWJ1dGVOYW1lOlxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5hZnRlckF0dHJpYnV0ZU5hbWU6XG4gICAgICAgIHRoaXMuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgYWRkRWxlbWVudE1vZGlmaWVyKHRoaXMuY3VycmVudFN0YXJ0VGFnLCBtdXN0YWNoZSk7XG4gICAgICAgIHRva2VuaXplci50cmFuc2l0aW9uVG8oVG9rZW5pemVyU3RhdGUuYmVmb3JlQXR0cmlidXRlTmFtZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5hZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkOlxuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50U3RhcnRUYWcsIG11c3RhY2hlKTtcbiAgICAgICAgdG9rZW5pemVyLnRyYW5zaXRpb25UbyhUb2tlbml6ZXJTdGF0ZS5iZWZvcmVBdHRyaWJ1dGVOYW1lKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZXNcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYmVmb3JlQXR0cmlidXRlVmFsdWU6XG4gICAgICAgIHRoaXMuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIGFwcGVuZER5bmFtaWNBdHRyaWJ1dGVWYWx1ZVBhcnQodGhpcy5jdXJyZW50QXR0cmlidXRlISwgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIudHJhbnNpdGlvblRvKFRva2VuaXplclN0YXRlLmF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWQ6XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkOlxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5hdHRyaWJ1dGVWYWx1ZVVucXVvdGVkOlxuICAgICAgICBhcHBlbmREeW5hbWljQXR0cmlidXRlVmFsdWVQYXJ0KHRoaXMuY3VycmVudEF0dHJpYnV0ZSEsIG11c3RhY2hlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIFRPRE86IE9ubHkgYXBwZW5kIGNoaWxkIHdoZW4gdGhlIHRva2VuaXplciBzdGF0ZSBtYWtlc1xuICAgICAgLy8gc2Vuc2UgdG8gZG8gc28sIG90aGVyd2lzZSB0aHJvdyBhbiBlcnJvci5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFwcGVuZENoaWxkKHRoaXMuY3VycmVudEVsZW1lbnQoKSwgbXVzdGFjaGUpO1xuICAgIH1cblxuICAgIHJldHVybiBtdXN0YWNoZTtcbiAgfVxuXG4gIENvbnRlbnRTdGF0ZW1lbnQoY29udGVudDogSEJTLkNvbnRlbnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB1cGRhdGVUb2tlbml6ZXJMb2NhdGlvbih0aGlzLnRva2VuaXplciwgY29udGVudCk7XG5cbiAgICB0aGlzLnRva2VuaXplci50b2tlbml6ZVBhcnQoY29udGVudC52YWx1ZSk7XG4gICAgdGhpcy50b2tlbml6ZXIuZmx1c2hEYXRhKCk7XG4gIH1cblxuICBDb21tZW50U3RhdGVtZW50KHJhd0NvbW1lbnQ6IEhCUy5Db21tZW50U3RhdGVtZW50KTogT3B0aW9uPEFTVC5NdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQ+IHtcbiAgICBsZXQgeyB0b2tlbml6ZXIgfSA9IHRoaXM7XG5cbiAgICBpZiAodG9rZW5pemVyLnN0YXRlID09PSBUb2tlbml6ZXJTdGF0ZS5jb21tZW50KSB7XG4gICAgICB0aGlzLmFwcGVuZFRvQ29tbWVudERhdGEodGhpcy5zb3VyY2VGb3JOb2RlKHJhd0NvbW1lbnQpKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB7IHZhbHVlLCBsb2MgfSA9IHJhd0NvbW1lbnQ7XG4gICAgbGV0IGNvbW1lbnQgPSBiLm11c3RhY2hlQ29tbWVudCh2YWx1ZSwgbG9jKTtcblxuICAgIHN3aXRjaCAodG9rZW5pemVyLnN0YXRlKSB7XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmJlZm9yZUF0dHJpYnV0ZU5hbWU6XG4gICAgICAgIHRoaXMuY3VycmVudFN0YXJ0VGFnLmNvbW1lbnRzLnB1c2goY29tbWVudCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmJlZm9yZURhdGE6XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmRhdGE6XG4gICAgICAgIGFwcGVuZENoaWxkKHRoaXMuY3VycmVudEVsZW1lbnQoKSwgY29tbWVudCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICAgYFVzaW5nIGEgSGFuZGxlYmFycyBjb21tZW50IHdoZW4gaW4gdGhlIFxcYCR7dG9rZW5pemVyWydzdGF0ZSddfVxcYCBzdGF0ZSBpcyBub3Qgc3VwcG9ydGVkOiBcIiR7Y29tbWVudC52YWx1ZX1cIiBvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9OiR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgICAgIHJhd0NvbW1lbnQubG9jXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbW1lbnQ7XG4gIH1cblxuICBQYXJ0aWFsU3RhdGVtZW50KHBhcnRpYWw6IEhCUy5QYXJ0aWFsU3RhdGVtZW50KTogbmV2ZXIge1xuICAgIGxldCB7IGxvYyB9ID0gcGFydGlhbDtcblxuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgIGBIYW5kbGViYXJzIHBhcnRpYWxzIGFyZSBub3Qgc3VwcG9ydGVkOiBcIiR7dGhpcy5zb3VyY2VGb3JOb2RlKHBhcnRpYWwsIHBhcnRpYWwubmFtZSl9XCIgYXQgTCR7XG4gICAgICAgIGxvYy5zdGFydC5saW5lXG4gICAgICB9OkMke2xvYy5zdGFydC5jb2x1bW59YCxcbiAgICAgIHBhcnRpYWwubG9jXG4gICAgKTtcbiAgfVxuXG4gIFBhcnRpYWxCbG9ja1N0YXRlbWVudChwYXJ0aWFsQmxvY2s6IEhCUy5QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQpOiBuZXZlciB7XG4gICAgbGV0IHsgbG9jIH0gPSBwYXJ0aWFsQmxvY2s7XG5cbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgSGFuZGxlYmFycyBwYXJ0aWFsIGJsb2NrcyBhcmUgbm90IHN1cHBvcnRlZDogXCIke3RoaXMuc291cmNlRm9yTm9kZShcbiAgICAgICAgcGFydGlhbEJsb2NrLFxuICAgICAgICBwYXJ0aWFsQmxvY2submFtZVxuICAgICAgKX1cIiBhdCBMJHtsb2Muc3RhcnQubGluZX06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgcGFydGlhbEJsb2NrLmxvY1xuICAgICk7XG4gIH1cblxuICBEZWNvcmF0b3IoZGVjb3JhdG9yOiBIQlMuRGVjb3JhdG9yKTogbmV2ZXIge1xuICAgIGxldCB7IGxvYyB9ID0gZGVjb3JhdG9yO1xuXG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgYEhhbmRsZWJhcnMgZGVjb3JhdG9ycyBhcmUgbm90IHN1cHBvcnRlZDogXCIke3RoaXMuc291cmNlRm9yTm9kZShcbiAgICAgICAgZGVjb3JhdG9yLFxuICAgICAgICBkZWNvcmF0b3IucGF0aFxuICAgICAgKX1cIiBhdCBMJHtsb2Muc3RhcnQubGluZX06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgZGVjb3JhdG9yLmxvY1xuICAgICk7XG4gIH1cblxuICBEZWNvcmF0b3JCbG9jayhkZWNvcmF0b3JCbG9jazogSEJTLkRlY29yYXRvckJsb2NrKTogbmV2ZXIge1xuICAgIGxldCB7IGxvYyB9ID0gZGVjb3JhdG9yQmxvY2s7XG5cbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgSGFuZGxlYmFycyBkZWNvcmF0b3IgYmxvY2tzIGFyZSBub3Qgc3VwcG9ydGVkOiBcIiR7dGhpcy5zb3VyY2VGb3JOb2RlKFxuICAgICAgICBkZWNvcmF0b3JCbG9jayxcbiAgICAgICAgZGVjb3JhdG9yQmxvY2sucGF0aFxuICAgICAgKX1cIiBhdCBMJHtsb2Muc3RhcnQubGluZX06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgZGVjb3JhdG9yQmxvY2subG9jXG4gICAgKTtcbiAgfVxuXG4gIFN1YkV4cHJlc3Npb24oc2V4cHI6IEhCUy5TdWJFeHByZXNzaW9uKTogQVNULlN1YkV4cHJlc3Npb24ge1xuICAgIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCB9ID0gYWNjZXB0Q2FsbE5vZGVzKHRoaXMsIHNleHByKTtcbiAgICByZXR1cm4gYi5zZXhwcihwYXRoLCBwYXJhbXMsIGhhc2gsIHNleHByLmxvYyk7XG4gIH1cblxuICBQYXRoRXhwcmVzc2lvbihwYXRoOiBIQlMuUGF0aEV4cHJlc3Npb24pOiBBU1QuUGF0aEV4cHJlc3Npb24ge1xuICAgIGxldCB7IG9yaWdpbmFsLCBsb2MgfSA9IHBhdGg7XG4gICAgbGV0IHBhcnRzOiBzdHJpbmdbXTtcblxuICAgIGlmIChvcmlnaW5hbC5pbmRleE9mKCcvJykgIT09IC0xKSB7XG4gICAgICBpZiAob3JpZ2luYWwuc2xpY2UoMCwgMikgPT09ICcuLycpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAgIGBVc2luZyBcIi4vXCIgaXMgbm90IHN1cHBvcnRlZCBpbiBHbGltbWVyIGFuZCB1bm5lY2Vzc2FyeTogXCIke3BhdGgub3JpZ2luYWx9XCIgb24gbGluZSAke2xvYy5zdGFydC5saW5lfS5gLFxuICAgICAgICAgIHBhdGgubG9jXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAob3JpZ2luYWwuc2xpY2UoMCwgMykgPT09ICcuLi8nKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICBgQ2hhbmdpbmcgY29udGV4dCB1c2luZyBcIi4uL1wiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gR2xpbW1lcjogXCIke3BhdGgub3JpZ2luYWx9XCIgb24gbGluZSAke2xvYy5zdGFydC5saW5lfS5gLFxuICAgICAgICAgIHBhdGgubG9jXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAob3JpZ2luYWwuaW5kZXhPZignLicpICE9PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICAgYE1peGluZyAnLicgYW5kICcvJyBpbiBwYXRocyBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXI7IHVzZSBvbmx5ICcuJyB0byBzZXBhcmF0ZSBwcm9wZXJ0eSBwYXRoczogXCIke3BhdGgub3JpZ2luYWx9XCIgb24gbGluZSAke2xvYy5zdGFydC5saW5lfS5gLFxuICAgICAgICAgIHBhdGgubG9jXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBwYXJ0cyA9IFtwYXRoLnBhcnRzLmpvaW4oJy8nKV07XG4gICAgfSBlbHNlIGlmIChvcmlnaW5hbCA9PT0gJy4nKSB7XG4gICAgICBsZXQgbG9jYXRpb25JbmZvID0gYEwke2xvYy5zdGFydC5saW5lfTpDJHtsb2Muc3RhcnQuY29sdW1ufWA7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgIGAnLicgaXMgbm90IGEgc3VwcG9ydGVkIHBhdGggaW4gR2xpbW1lcjsgY2hlY2sgZm9yIGEgcGF0aCB3aXRoIGEgdHJhaWxpbmcgJy4nIGF0ICR7bG9jYXRpb25JbmZvfS5gLFxuICAgICAgICBwYXRoLmxvY1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydHMgPSBwYXRoLnBhcnRzO1xuICAgIH1cblxuICAgIGxldCB0aGlzSGVhZCA9IGZhbHNlO1xuXG4gICAgLy8gVGhpcyBpcyB0byBmaXggYSBidWcgaW4gdGhlIEhhbmRsZWJhcnMgQVNUIHdoZXJlIHRoZSBwYXRoIGV4cHJlc3Npb25zIGluXG4gICAgLy8gYHt7dGhpcy5mb299fWAgKGFuZCBzaW1pbGFybHkgYHt7Zm9vLWJhciB0aGlzLmZvbyBuYW1lZD10aGlzLmZvb319YCBldGMpXG4gICAgLy8gYXJlIHNpbXBseSB0dXJuZWQgaW50byBge3tmb299fWAuIFRoZSBmaXggaXMgdG8gcHVzaCBpdCBiYWNrIG9udG8gdGhlXG4gICAgLy8gcGFydHMgYXJyYXkgYW5kIGxldCB0aGUgcnVudGltZSBzZWUgdGhlIGRpZmZlcmVuY2UuIEhvd2V2ZXIsIHdlIGNhbm5vdFxuICAgIC8vIHNpbXBseSB1c2UgdGhlIHN0cmluZyBgdGhpc2AgYXMgaXQgbWVhbnMgbGl0ZXJhbGx5IHRoZSBwcm9wZXJ0eSBjYWxsZWRcbiAgICAvLyBcInRoaXNcIiBpbiB0aGUgY3VycmVudCBjb250ZXh0IChpdCBjYW4gYmUgZXhwcmVzc2VkIGluIHRoZSBzeW50YXggYXNcbiAgICAvLyBge3tbdGhpc119fWAsIHdoZXJlIHRoZSBzcXVhcmUgYnJhY2tldCBhcmUgZ2VuZXJhbGx5IGZvciB0aGlzIGtpbmQgb2ZcbiAgICAvLyBlc2NhcGluZyDigJMgc3VjaCBhcyBge3tmb28uW1wiYmFyLmJhelwiXX19YCB3b3VsZCBtZWFuIGxvb2t1cCBhIHByb3BlcnR5XG4gICAgLy8gbmFtZWQgbGl0ZXJhbGx5IFwiYmFyLmJhelwiIG9uIGB0aGlzLmZvb2ApLiBCeSBjb252ZW50aW9uLCB3ZSB1c2UgYG51bGxgXG4gICAgLy8gZm9yIHRoaXMgcHVycG9zZS5cbiAgICBpZiAob3JpZ2luYWwubWF0Y2goL150aGlzKFxcLi4rKT8kLykpIHtcbiAgICAgIHRoaXNIZWFkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ1BhdGhFeHByZXNzaW9uJyxcbiAgICAgIG9yaWdpbmFsOiBwYXRoLm9yaWdpbmFsLFxuICAgICAgdGhpczogdGhpc0hlYWQsXG4gICAgICBwYXJ0cyxcbiAgICAgIGRhdGE6IHBhdGguZGF0YSxcbiAgICAgIGxvYzogcGF0aC5sb2MsXG4gICAgfTtcbiAgfVxuXG4gIEhhc2goaGFzaDogSEJTLkhhc2gpOiBBU1QuSGFzaCB7XG4gICAgbGV0IHBhaXJzOiBBU1QuSGFzaFBhaXJbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoYXNoLnBhaXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgcGFpciA9IGhhc2gucGFpcnNbaV07XG4gICAgICBwYWlycy5wdXNoKGIucGFpcihwYWlyLmtleSwgdGhpcy5hY2NlcHROb2RlKHBhaXIudmFsdWUpLCBwYWlyLmxvYykpO1xuICAgIH1cblxuICAgIHJldHVybiBiLmhhc2gocGFpcnMsIGhhc2gubG9jKTtcbiAgfVxuXG4gIFN0cmluZ0xpdGVyYWwoc3RyaW5nOiBIQlMuU3RyaW5nTGl0ZXJhbCk6IEFTVC5TdHJpbmdMaXRlcmFsIHtcbiAgICByZXR1cm4gYi5saXRlcmFsKCdTdHJpbmdMaXRlcmFsJywgc3RyaW5nLnZhbHVlLCBzdHJpbmcubG9jKTtcbiAgfVxuXG4gIEJvb2xlYW5MaXRlcmFsKGJvb2xlYW46IEhCUy5Cb29sZWFuTGl0ZXJhbCk6IEFTVC5Cb29sZWFuTGl0ZXJhbCB7XG4gICAgcmV0dXJuIGIubGl0ZXJhbCgnQm9vbGVhbkxpdGVyYWwnLCBib29sZWFuLnZhbHVlLCBib29sZWFuLmxvYyk7XG4gIH1cblxuICBOdW1iZXJMaXRlcmFsKG51bWJlcjogSEJTLk51bWJlckxpdGVyYWwpOiBBU1QuTnVtYmVyTGl0ZXJhbCB7XG4gICAgcmV0dXJuIGIubGl0ZXJhbCgnTnVtYmVyTGl0ZXJhbCcsIG51bWJlci52YWx1ZSwgbnVtYmVyLmxvYyk7XG4gIH1cblxuICBVbmRlZmluZWRMaXRlcmFsKHVuZGVmOiBIQlMuVW5kZWZpbmVkTGl0ZXJhbCk6IEFTVC5VbmRlZmluZWRMaXRlcmFsIHtcbiAgICByZXR1cm4gYi5saXRlcmFsKCdVbmRlZmluZWRMaXRlcmFsJywgdW5kZWZpbmVkLCB1bmRlZi5sb2MpO1xuICB9XG5cbiAgTnVsbExpdGVyYWwobnVsOiBIQlMuTnVsbExpdGVyYWwpOiBBU1QuTnVsbExpdGVyYWwge1xuICAgIHJldHVybiBiLmxpdGVyYWwoJ051bGxMaXRlcmFsJywgbnVsbCwgbnVsLmxvYyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlUmlnaHRTdHJpcHBlZE9mZnNldHMob3JpZ2luYWw6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgLy8gaWYgaXQgaXMgZW1wdHksIGp1c3QgcmV0dXJuIHRoZSBjb3VudCBvZiBuZXdsaW5lc1xuICAgIC8vIGluIG9yaWdpbmFsXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmVzOiBvcmlnaW5hbC5zcGxpdCgnXFxuJykubGVuZ3RoIC0gMSxcbiAgICAgIGNvbHVtbnM6IDAsXG4gICAgfTtcbiAgfVxuXG4gIC8vIG90aGVyd2lzZSwgcmV0dXJuIHRoZSBudW1iZXIgb2YgbmV3bGluZXMgcHJpb3IgdG9cbiAgLy8gYHZhbHVlYFxuICBsZXQgZGlmZmVyZW5jZSA9IG9yaWdpbmFsLnNwbGl0KHZhbHVlKVswXTtcbiAgbGV0IGxpbmVzID0gZGlmZmVyZW5jZS5zcGxpdCgvXFxuLyk7XG4gIGxldCBsaW5lQ291bnQgPSBsaW5lcy5sZW5ndGggLSAxO1xuXG4gIHJldHVybiB7XG4gICAgbGluZXM6IGxpbmVDb3VudCxcbiAgICBjb2x1bW5zOiBsaW5lc1tsaW5lQ291bnRdLmxlbmd0aCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlVG9rZW5pemVyTG9jYXRpb24odG9rZW5pemVyOiBQYXJzZXJbJ3Rva2VuaXplciddLCBjb250ZW50OiBIQlMuQ29udGVudFN0YXRlbWVudCkge1xuICBsZXQgbGluZSA9IGNvbnRlbnQubG9jLnN0YXJ0LmxpbmU7XG4gIGxldCBjb2x1bW4gPSBjb250ZW50LmxvYy5zdGFydC5jb2x1bW47XG5cbiAgbGV0IG9mZnNldHMgPSBjYWxjdWxhdGVSaWdodFN0cmlwcGVkT2Zmc2V0cyhcbiAgICBjb250ZW50Lm9yaWdpbmFsIGFzIFJlY2FzdDxIQlMuU3RyaXBGbGFncywgc3RyaW5nPixcbiAgICBjb250ZW50LnZhbHVlXG4gICk7XG5cbiAgbGluZSA9IGxpbmUgKyBvZmZzZXRzLmxpbmVzO1xuICBpZiAob2Zmc2V0cy5saW5lcykge1xuICAgIGNvbHVtbiA9IG9mZnNldHMuY29sdW1ucztcbiAgfSBlbHNlIHtcbiAgICBjb2x1bW4gPSBjb2x1bW4gKyBvZmZzZXRzLmNvbHVtbnM7XG4gIH1cblxuICB0b2tlbml6ZXIubGluZSA9IGxpbmU7XG4gIHRva2VuaXplci5jb2x1bW4gPSBjb2x1bW47XG59XG5cbmZ1bmN0aW9uIGFjY2VwdENhbGxOb2RlcyhcbiAgY29tcGlsZXI6IEhhbmRsZWJhcnNOb2RlVmlzaXRvcnMsXG4gIG5vZGU6IHtcbiAgICBwYXRoOiBIQlMuUGF0aEV4cHJlc3Npb247XG4gICAgcGFyYW1zOiBIQlMuRXhwcmVzc2lvbltdO1xuICAgIGhhc2g6IEhCUy5IYXNoO1xuICB9XG4pOiB7IHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbjsgcGFyYW1zOiBBU1QuRXhwcmVzc2lvbltdOyBoYXNoOiBBU1QuSGFzaCB9IHtcbiAgbGV0IHBhdGggPSBjb21waWxlci5QYXRoRXhwcmVzc2lvbihub2RlLnBhdGgpO1xuXG4gIGxldCBwYXJhbXMgPSBub2RlLnBhcmFtcyA/IG5vZGUucGFyYW1zLm1hcCgoZSkgPT4gY29tcGlsZXIuYWNjZXB0Tm9kZTxBU1QuRXhwcmVzc2lvbj4oZSkpIDogW107XG4gIGxldCBoYXNoID0gbm9kZS5oYXNoID8gY29tcGlsZXIuSGFzaChub2RlLmhhc2gpIDogYi5oYXNoKCk7XG5cbiAgcmV0dXJuIHsgcGF0aCwgcGFyYW1zLCBoYXNoIH07XG59XG5cbmZ1bmN0aW9uIGFkZEVsZW1lbnRNb2RpZmllcihlbGVtZW50OiBUYWc8J1N0YXJ0VGFnJz4sIG11c3RhY2hlOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgbGV0IHsgcGF0aCwgcGFyYW1zLCBoYXNoLCBsb2MgfSA9IG11c3RhY2hlO1xuXG4gIGlmIChpc0xpdGVyYWwocGF0aCkpIHtcbiAgICBsZXQgbW9kaWZpZXIgPSBge3ske3ByaW50TGl0ZXJhbChwYXRoKX19fWA7XG4gICAgbGV0IHRhZyA9IGA8JHtlbGVtZW50Lm5hbWV9IC4uLiAke21vZGlmaWVyfSAuLi5gO1xuXG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgYEluICR7dGFnfSwgJHttb2RpZmllcn0gaXMgbm90IGEgdmFsaWQgbW9kaWZpZXI6IFwiJHtwYXRoLm9yaWdpbmFsfVwiIG9uIGxpbmUgJHtcbiAgICAgICAgbG9jICYmIGxvYy5zdGFydC5saW5lXG4gICAgICB9LmAsXG4gICAgICBtdXN0YWNoZS5sb2NcbiAgICApO1xuICB9XG5cbiAgbGV0IG1vZGlmaWVyID0gYi5lbGVtZW50TW9kaWZpZXIocGF0aCwgcGFyYW1zLCBoYXNoLCBsb2MpO1xuICBlbGVtZW50Lm1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kRHluYW1pY0F0dHJpYnV0ZVZhbHVlUGFydChhdHRyaWJ1dGU6IEF0dHJpYnV0ZSwgcGFydDogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gIGF0dHJpYnV0ZS5pc0R5bmFtaWMgPSB0cnVlO1xuICBhdHRyaWJ1dGUucGFydHMucHVzaChwYXJ0KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyL2hhbmRsZWJhcnMtbm9kZS12aXNpdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBQ0E7Ozs7QUFLTSxNQUFBLHNCQUFBLFNBQUEsY0FBQSxDQUFxRDtBQUt6RCxNQUFBLFVBQUEsR0FBc0I7QUFDcEIsV0FBTyxLQUFBLFlBQUEsQ0FBQSxNQUFBLEtBQVAsQ0FBQTtBQUNEOztBQUtELEVBQUEsT0FBTyxDQUFBLE9BQUEsRUFBcUI7QUFDMUIsUUFBSSxJQUFJLEdBQVIsRUFBQTtBQUNBLFFBQUEsSUFBQTs7QUFFQSxRQUFJLEtBQUosVUFBQSxFQUFxQjtBQUNuQixNQUFBLElBQUksR0FBRyxrQkFBQSxRQUFBLENBQUEsSUFBQSxFQUFpQixPQUFPLENBQXhCLFdBQUEsRUFBc0MsT0FBTyxDQUFwRCxHQUFPLENBQVA7QUFERixLQUFBLE1BRU87QUFDTCxNQUFBLElBQUksR0FBRyxrQkFBQSxXQUFBLENBQUEsSUFBQSxFQUFvQixPQUFPLENBQTNCLFdBQUEsRUFBeUMsT0FBTyxDQUFoRCxPQUFBLEVBQTBELE9BQU8sQ0FBeEUsR0FBTyxDQUFQO0FBQ0Q7O0FBRUQsUUFBQSxDQUFBO0FBQUEsUUFDRSxDQUFDLEdBQUcsT0FBTyxDQUFQLElBQUEsQ0FETixNQUFBO0FBR0EsU0FBQSxZQUFBLENBQUEsSUFBQSxDQUFBLElBQUE7O0FBRUEsUUFBSSxDQUFDLEtBQUwsQ0FBQSxFQUFhO0FBQ1gsYUFBTyxLQUFBLFlBQUEsQ0FBUCxHQUFPLEVBQVA7QUFDRDs7QUFFRCxTQUFLLENBQUMsR0FBTixDQUFBLEVBQVksQ0FBQyxHQUFiLENBQUEsRUFBbUIsQ0FBbkIsRUFBQSxFQUF3QjtBQUN0QixXQUFBLFVBQUEsQ0FBZ0IsT0FBTyxDQUFQLElBQUEsQ0FBaEIsQ0FBZ0IsQ0FBaEI7QUFwQndCLEtBQUEsQ0F1QjFCOzs7QUFD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Q0FBZjs7QUFDQSxFQUFBLE9BQU8sQ0FBUCxTQUFBLENBQUEsSUFBQSxDQUFBLFFBQUE7QUFDRDs7QUFFRCxTQUFBLCtCQUFBLENBQUEsU0FBQSxFQUFBLElBQUEsRUFBMEY7QUFDeEYsRUFBQSxTQUFTLENBQVQsU0FBQSxHQUFBLElBQUE7QUFDQSxFQUFBLFNBQVMsQ0FBVCxLQUFBLENBQUEsSUFBQSxDQUFBLElBQUE7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiIGZyb20gJy4uL2J1aWxkZXJzJztcbmltcG9ydCB7IGFwcGVuZENoaWxkLCBpc0xpdGVyYWwsIHByaW50TGl0ZXJhbCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCAqIGFzIEFTVCBmcm9tICcuLi90eXBlcy9ub2Rlcyc7XG5pbXBvcnQgKiBhcyBIQlMgZnJvbSAnLi4vdHlwZXMvaGFuZGxlYmFycy1hc3QnO1xuaW1wb3J0IHsgUGFyc2VyLCBUYWcsIEF0dHJpYnV0ZSB9IGZyb20gJy4uL3BhcnNlcic7XG5pbXBvcnQgU3ludGF4RXJyb3IgZnJvbSAnLi4vZXJyb3JzL3N5bnRheC1lcnJvcic7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IFJlY2FzdCB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVG9rZW5pemVyU3RhdGUgfSBmcm9tICdzaW1wbGUtaHRtbC10b2tlbml6ZXInO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSGFuZGxlYmFyc05vZGVWaXNpdG9ycyBleHRlbmRzIFBhcnNlciB7XG4gIGFic3RyYWN0IGFwcGVuZFRvQ29tbWVudERhdGEoczogc3RyaW5nKTogdm9pZDtcbiAgYWJzdHJhY3QgYmVnaW5BdHRyaWJ1dGVWYWx1ZShxdW90ZWQ6IGJvb2xlYW4pOiB2b2lkO1xuICBhYnN0cmFjdCBmaW5pc2hBdHRyaWJ1dGVWYWx1ZSgpOiB2b2lkO1xuXG4gIHByaXZhdGUgZ2V0IGlzVG9wTGV2ZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIFByb2dyYW0ocHJvZ3JhbTogSEJTLlByb2dyYW0pOiBBU1QuQmxvY2s7XG4gIFByb2dyYW0ocHJvZ3JhbTogSEJTLlByb2dyYW0pOiBBU1QuVGVtcGxhdGU7XG4gIFByb2dyYW0ocHJvZ3JhbTogSEJTLlByb2dyYW0pOiBBU1QuVGVtcGxhdGUgfCBBU1QuQmxvY2s7XG4gIFByb2dyYW0ocHJvZ3JhbTogSEJTLlByb2dyYW0pOiBBU1QuQmxvY2sgfCBBU1QuVGVtcGxhdGUge1xuICAgIGxldCBib2R5OiBBU1QuU3RhdGVtZW50W10gPSBbXTtcbiAgICBsZXQgbm9kZTtcblxuICAgIGlmICh0aGlzLmlzVG9wTGV2ZWwpIHtcbiAgICAgIG5vZGUgPSBiLnRlbXBsYXRlKGJvZHksIHByb2dyYW0uYmxvY2tQYXJhbXMsIHByb2dyYW0ubG9jKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZSA9IGIuYmxvY2tJdHNlbGYoYm9keSwgcHJvZ3JhbS5ibG9ja1BhcmFtcywgcHJvZ3JhbS5jaGFpbmVkLCBwcm9ncmFtLmxvYyk7XG4gICAgfVxuXG4gICAgbGV0IGksXG4gICAgICBsID0gcHJvZ3JhbS5ib2R5Lmxlbmd0aDtcblxuICAgIHRoaXMuZWxlbWVudFN0YWNrLnB1c2gobm9kZSk7XG5cbiAgICBpZiAobCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpIGFzIEFTVC5CbG9jayB8IEFTVC5UZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0aGlzLmFjY2VwdE5vZGUocHJvZ3JhbS5ib2R5W2ldKTtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgdGhhdCB0aGF0IHRoZSBlbGVtZW50IHN0YWNrIGlzIGJhbGFuY2VkIHByb3Blcmx5LlxuICAgIGxldCBwb3BwZWROb2RlID0gdGhpcy5lbGVtZW50U3RhY2sucG9wKCk7XG4gICAgaWYgKHBvcHBlZE5vZGUgIT09IG5vZGUpIHtcbiAgICAgIGxldCBlbGVtZW50Tm9kZSA9IHBvcHBlZE5vZGUgYXMgQVNULkVsZW1lbnROb2RlO1xuXG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICdVbmNsb3NlZCBlbGVtZW50IGAnICsgZWxlbWVudE5vZGUudGFnICsgJ2AgKG9uIGxpbmUgJyArIGVsZW1lbnROb2RlLmxvYyEuc3RhcnQubGluZSArICcpLicsXG4gICAgICAgIGVsZW1lbnROb2RlLmxvY1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIEJsb2NrU3RhdGVtZW50KGJsb2NrOiBIQlMuQmxvY2tTdGF0ZW1lbnQpOiBBU1QuQmxvY2tTdGF0ZW1lbnQgfCB2b2lkIHtcbiAgICBpZiAodGhpcy50b2tlbml6ZXIuc3RhdGUgPT09IFRva2VuaXplclN0YXRlLmNvbW1lbnQpIHtcbiAgICAgIHRoaXMuYXBwZW5kVG9Db21tZW50RGF0YSh0aGlzLnNvdXJjZUZvck5vZGUoYmxvY2spKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSAhPT0gVG9rZW5pemVyU3RhdGUuZGF0YSAmJlxuICAgICAgdGhpcy50b2tlbml6ZXJbJ3N0YXRlJ10gIT09IFRva2VuaXplclN0YXRlLmJlZm9yZURhdGFcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgJ0EgYmxvY2sgbWF5IG9ubHkgYmUgdXNlZCBpbnNpZGUgYW4gSFRNTCBlbGVtZW50IG9yIGFub3RoZXIgYmxvY2suJyxcbiAgICAgICAgYmxvY2subG9jXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCB9ID0gYWNjZXB0Q2FsbE5vZGVzKHRoaXMsIGJsb2NrKTtcbiAgICBsZXQgcHJvZ3JhbSA9IHRoaXMuUHJvZ3JhbShibG9jay5wcm9ncmFtKTtcbiAgICBsZXQgaW52ZXJzZSA9IGJsb2NrLmludmVyc2UgPyB0aGlzLlByb2dyYW0oYmxvY2suaW52ZXJzZSkgOiBudWxsO1xuXG4gICAgbGV0IG5vZGUgPSBiLmJsb2NrKFxuICAgICAgcGF0aCxcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhhc2gsXG4gICAgICBwcm9ncmFtLFxuICAgICAgaW52ZXJzZSxcbiAgICAgIGJsb2NrLmxvYyxcbiAgICAgIGJsb2NrLm9wZW5TdHJpcCxcbiAgICAgIGJsb2NrLmludmVyc2VTdHJpcCxcbiAgICAgIGJsb2NrLmNsb3NlU3RyaXBcbiAgICApO1xuXG4gICAgbGV0IHBhcmVudFByb2dyYW0gPSB0aGlzLmN1cnJlbnRFbGVtZW50KCk7XG5cbiAgICBhcHBlbmRDaGlsZChwYXJlbnRQcm9ncmFtLCBub2RlKTtcbiAgfVxuXG4gIE11c3RhY2hlU3RhdGVtZW50KHJhd011c3RhY2hlOiBIQlMuTXVzdGFjaGVTdGF0ZW1lbnQpOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQgfCB2b2lkIHtcbiAgICBsZXQgeyB0b2tlbml6ZXIgfSA9IHRoaXM7XG5cbiAgICBpZiAodG9rZW5pemVyLnN0YXRlID09PSAnY29tbWVudCcpIHtcbiAgICAgIHRoaXMuYXBwZW5kVG9Db21tZW50RGF0YSh0aGlzLnNvdXJjZUZvck5vZGUocmF3TXVzdGFjaGUpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbXVzdGFjaGU6IEFTVC5NdXN0YWNoZVN0YXRlbWVudDtcbiAgICBsZXQgeyBlc2NhcGVkLCBsb2MsIHN0cmlwIH0gPSByYXdNdXN0YWNoZTtcblxuICAgIGlmIChpc0xpdGVyYWwocmF3TXVzdGFjaGUucGF0aCkpIHtcbiAgICAgIG11c3RhY2hlID0ge1xuICAgICAgICB0eXBlOiAnTXVzdGFjaGVTdGF0ZW1lbnQnLFxuICAgICAgICBwYXRoOiB0aGlzLmFjY2VwdE5vZGU8QVNULkxpdGVyYWw+KHJhd011c3RhY2hlLnBhdGgpLFxuICAgICAgICBwYXJhbXM6IFtdLFxuICAgICAgICBoYXNoOiBiLmhhc2goKSxcbiAgICAgICAgZXNjYXBlZCxcbiAgICAgICAgbG9jLFxuICAgICAgICBzdHJpcCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCB9ID0gYWNjZXB0Q2FsbE5vZGVzKFxuICAgICAgICB0aGlzLFxuICAgICAgICByYXdNdXN0YWNoZSBhcyBIQlMuTXVzdGFjaGVTdGF0ZW1lbnQgJiB7XG4gICAgICAgICAgcGF0aDogSEJTLlBhdGhFeHByZXNzaW9uO1xuICAgICAgICB9XG4gICAgICApO1xuICAgICAgbXVzdGFjaGUgPSBiLm11c3RhY2hlKHBhdGgsIHBhcmFtcywgaGFzaCwgIWVzY2FwZWQsIGxvYywgc3RyaXApO1xuICAgIH1cblxuICAgIHN3aXRjaCAodG9rZW5pemVyLnN0YXRlKSB7XG4gICAgICAvLyBUYWcgaGVscGVyc1xuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS50YWdPcGVuOlxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS50YWdOYW1lOlxuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICAgYENhbm5vdCB1c2UgbXVzdGFjaGVzIGluIGFuIGVsZW1lbnRzIHRhZ25hbWU6IFxcYCR7dGhpcy5zb3VyY2VGb3JOb2RlKFxuICAgICAgICAgICAgcmF3TXVzdGFjaGUsXG4gICAgICAgICAgICByYXdNdXN0YWNoZS5wYXRoXG4gICAgICAgICAgKX1cXGAgYXQgTCR7bG9jLnN0YXJ0LmxpbmV9OkMke2xvYy5zdGFydC5jb2x1bW59YCxcbiAgICAgICAgICBtdXN0YWNoZS5sb2NcbiAgICAgICAgKTtcblxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5iZWZvcmVBdHRyaWJ1dGVOYW1lOlxuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50U3RhcnRUYWcsIG11c3RhY2hlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmF0dHJpYnV0ZU5hbWU6XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmFmdGVyQXR0cmlidXRlTmFtZTpcbiAgICAgICAgdGhpcy5iZWdpbkF0dHJpYnV0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50U3RhcnRUYWcsIG11c3RhY2hlKTtcbiAgICAgICAgdG9rZW5pemVyLnRyYW5zaXRpb25UbyhUb2tlbml6ZXJTdGF0ZS5iZWZvcmVBdHRyaWJ1dGVOYW1lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWQ6XG4gICAgICAgIGFkZEVsZW1lbnRNb2RpZmllcih0aGlzLmN1cnJlbnRTdGFydFRhZywgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIudHJhbnNpdGlvblRvKFRva2VuaXplclN0YXRlLmJlZm9yZUF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gQXR0cmlidXRlIHZhbHVlc1xuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5iZWZvcmVBdHRyaWJ1dGVWYWx1ZTpcbiAgICAgICAgdGhpcy5iZWdpbkF0dHJpYnV0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgYXBwZW5kRHluYW1pY0F0dHJpYnV0ZVZhbHVlUGFydCh0aGlzLmN1cnJlbnRBdHRyaWJ1dGUhLCBtdXN0YWNoZSk7XG4gICAgICAgIHRva2VuaXplci50cmFuc2l0aW9uVG8oVG9rZW5pemVyU3RhdGUuYXR0cmlidXRlVmFsdWVVbnF1b3RlZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5hdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZDpcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWQ6XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQ6XG4gICAgICAgIGFwcGVuZER5bmFtaWNBdHRyaWJ1dGVWYWx1ZVBhcnQodGhpcy5jdXJyZW50QXR0cmlidXRlISwgbXVzdGFjaGUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gVE9ETzogT25seSBhcHBlbmQgY2hpbGQgd2hlbiB0aGUgdG9rZW5pemVyIHN0YXRlIG1ha2VzXG4gICAgICAvLyBzZW5zZSB0byBkbyBzbywgb3RoZXJ3aXNlIHRocm93IGFuIGVycm9yLlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCBtdXN0YWNoZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG11c3RhY2hlO1xuICB9XG5cbiAgQ29udGVudFN0YXRlbWVudChjb250ZW50OiBIQlMuQ29udGVudFN0YXRlbWVudCk6IHZvaWQge1xuICAgIHVwZGF0ZVRva2VuaXplckxvY2F0aW9uKHRoaXMudG9rZW5pemVyLCBjb250ZW50KTtcblxuICAgIHRoaXMudG9rZW5pemVyLnRva2VuaXplUGFydChjb250ZW50LnZhbHVlKTtcbiAgICB0aGlzLnRva2VuaXplci5mbHVzaERhdGEoKTtcbiAgfVxuXG4gIENvbW1lbnRTdGF0ZW1lbnQocmF3Q29tbWVudDogSEJTLkNvbW1lbnRTdGF0ZW1lbnQpOiBPcHRpb248QVNULk11c3RhY2hlQ29tbWVudFN0YXRlbWVudD4ge1xuICAgIGxldCB7IHRva2VuaXplciB9ID0gdGhpcztcblxuICAgIGlmICh0b2tlbml6ZXIuc3RhdGUgPT09IFRva2VuaXplclN0YXRlLmNvbW1lbnQpIHtcbiAgICAgIHRoaXMuYXBwZW5kVG9Db21tZW50RGF0YSh0aGlzLnNvdXJjZUZvck5vZGUocmF3Q29tbWVudCkpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IHsgdmFsdWUsIGxvYyB9ID0gcmF3Q29tbWVudDtcbiAgICBsZXQgY29tbWVudCA9IGIubXVzdGFjaGVDb21tZW50KHZhbHVlLCBsb2MpO1xuXG4gICAgc3dpdGNoICh0b2tlbml6ZXIuc3RhdGUpIHtcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYmVmb3JlQXR0cmlidXRlTmFtZTpcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYWZ0ZXJBdHRyaWJ1dGVOYW1lOlxuICAgICAgICB0aGlzLmN1cnJlbnRTdGFydFRhZy5jb21tZW50cy5wdXNoKGNvbW1lbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5iZWZvcmVEYXRhOlxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5kYXRhOlxuICAgICAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIGNvbW1lbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAgIGBVc2luZyBhIEhhbmRsZWJhcnMgY29tbWVudCB3aGVuIGluIHRoZSBcXGAke3Rva2VuaXplclsnc3RhdGUnXX1cXGAgc3RhdGUgaXMgbm90IHN1cHBvcnRlZDogXCIke2NvbW1lbnQudmFsdWV9XCIgb24gbGluZSAke2xvYy5zdGFydC5saW5lfToke2xvYy5zdGFydC5jb2x1bW59YCxcbiAgICAgICAgICByYXdDb21tZW50LmxvY1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBjb21tZW50O1xuICB9XG5cbiAgUGFydGlhbFN0YXRlbWVudChwYXJ0aWFsOiBIQlMuUGFydGlhbFN0YXRlbWVudCk6IG5ldmVyIHtcbiAgICBsZXQgeyBsb2MgfSA9IHBhcnRpYWw7XG5cbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgSGFuZGxlYmFycyBwYXJ0aWFscyBhcmUgbm90IHN1cHBvcnRlZDogXCIke3RoaXMuc291cmNlRm9yTm9kZShwYXJ0aWFsLCBwYXJ0aWFsLm5hbWUpfVwiIGF0IEwke1xuICAgICAgICBsb2Muc3RhcnQubGluZVxuICAgICAgfTpDJHtsb2Muc3RhcnQuY29sdW1ufWAsXG4gICAgICBwYXJ0aWFsLmxvY1xuICAgICk7XG4gIH1cblxuICBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQocGFydGlhbEJsb2NrOiBIQlMuUGFydGlhbEJsb2NrU3RhdGVtZW50KTogbmV2ZXIge1xuICAgIGxldCB7IGxvYyB9ID0gcGFydGlhbEJsb2NrO1xuXG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgYEhhbmRsZWJhcnMgcGFydGlhbCBibG9ja3MgYXJlIG5vdCBzdXBwb3J0ZWQ6IFwiJHt0aGlzLnNvdXJjZUZvck5vZGUoXG4gICAgICAgIHBhcnRpYWxCbG9jayxcbiAgICAgICAgcGFydGlhbEJsb2NrLm5hbWVcbiAgICAgICl9XCIgYXQgTCR7bG9jLnN0YXJ0LmxpbmV9OkMke2xvYy5zdGFydC5jb2x1bW59YCxcbiAgICAgIHBhcnRpYWxCbG9jay5sb2NcbiAgICApO1xuICB9XG5cbiAgRGVjb3JhdG9yKGRlY29yYXRvcjogSEJTLkRlY29yYXRvcik6IG5ldmVyIHtcbiAgICBsZXQgeyBsb2MgfSA9IGRlY29yYXRvcjtcblxuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgIGBIYW5kbGViYXJzIGRlY29yYXRvcnMgYXJlIG5vdCBzdXBwb3J0ZWQ6IFwiJHt0aGlzLnNvdXJjZUZvck5vZGUoXG4gICAgICAgIGRlY29yYXRvcixcbiAgICAgICAgZGVjb3JhdG9yLnBhdGhcbiAgICAgICl9XCIgYXQgTCR7bG9jLnN0YXJ0LmxpbmV9OkMke2xvYy5zdGFydC5jb2x1bW59YCxcbiAgICAgIGRlY29yYXRvci5sb2NcbiAgICApO1xuICB9XG5cbiAgRGVjb3JhdG9yQmxvY2soZGVjb3JhdG9yQmxvY2s6IEhCUy5EZWNvcmF0b3JCbG9jayk6IG5ldmVyIHtcbiAgICBsZXQgeyBsb2MgfSA9IGRlY29yYXRvckJsb2NrO1xuXG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgYEhhbmRsZWJhcnMgZGVjb3JhdG9yIGJsb2NrcyBhcmUgbm90IHN1cHBvcnRlZDogXCIke3RoaXMuc291cmNlRm9yTm9kZShcbiAgICAgICAgZGVjb3JhdG9yQmxvY2ssXG4gICAgICAgIGRlY29yYXRvckJsb2NrLnBhdGhcbiAgICAgICl9XCIgYXQgTCR7bG9jLnN0YXJ0LmxpbmV9OkMke2xvYy5zdGFydC5jb2x1bW59YCxcbiAgICAgIGRlY29yYXRvckJsb2NrLmxvY1xuICAgICk7XG4gIH1cblxuICBTdWJFeHByZXNzaW9uKHNleHByOiBIQlMuU3ViRXhwcmVzc2lvbik6IEFTVC5TdWJFeHByZXNzaW9uIHtcbiAgICBsZXQgeyBwYXRoLCBwYXJhbXMsIGhhc2ggfSA9IGFjY2VwdENhbGxOb2Rlcyh0aGlzLCBzZXhwcik7XG4gICAgcmV0dXJuIGIuc2V4cHIocGF0aCwgcGFyYW1zLCBoYXNoLCBzZXhwci5sb2MpO1xuICB9XG5cbiAgUGF0aEV4cHJlc3Npb24ocGF0aDogSEJTLlBhdGhFeHByZXNzaW9uKTogQVNULlBhdGhFeHByZXNzaW9uIHtcbiAgICBsZXQgeyBvcmlnaW5hbCwgbG9jIH0gPSBwYXRoO1xuICAgIGxldCBwYXJ0czogc3RyaW5nW107XG5cbiAgICBpZiAob3JpZ2luYWwuaW5kZXhPZignLycpICE9PSAtMSkge1xuICAgICAgaWYgKG9yaWdpbmFsLnNsaWNlKDAsIDIpID09PSAnLi8nKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICBgVXNpbmcgXCIuL1wiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gR2xpbW1lciBhbmQgdW5uZWNlc3Nhcnk6IFwiJHtwYXRoLm9yaWdpbmFsfVwiIG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0uYCxcbiAgICAgICAgICBwYXRoLmxvY1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKG9yaWdpbmFsLnNsaWNlKDAsIDMpID09PSAnLi4vJykge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICAgYENoYW5naW5nIGNvbnRleHQgdXNpbmcgXCIuLi9cIiBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXI6IFwiJHtwYXRoLm9yaWdpbmFsfVwiIG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0uYCxcbiAgICAgICAgICBwYXRoLmxvY1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKG9yaWdpbmFsLmluZGV4T2YoJy4nKSAhPT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAgIGBNaXhpbmcgJy4nIGFuZCAnLycgaW4gcGF0aHMgaXMgbm90IHN1cHBvcnRlZCBpbiBHbGltbWVyOyB1c2Ugb25seSAnLicgdG8gc2VwYXJhdGUgcHJvcGVydHkgcGF0aHM6IFwiJHtwYXRoLm9yaWdpbmFsfVwiIG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0uYCxcbiAgICAgICAgICBwYXRoLmxvY1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcGFydHMgPSBbcGF0aC5wYXJ0cy5qb2luKCcvJyldO1xuICAgIH0gZWxzZSBpZiAob3JpZ2luYWwgPT09ICcuJykge1xuICAgICAgbGV0IGxvY2F0aW9uSW5mbyA9IGBMJHtsb2Muc3RhcnQubGluZX06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gO1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICBgJy4nIGlzIG5vdCBhIHN1cHBvcnRlZCBwYXRoIGluIEdsaW1tZXI7IGNoZWNrIGZvciBhIHBhdGggd2l0aCBhIHRyYWlsaW5nICcuJyBhdCAke2xvY2F0aW9uSW5mb30uYCxcbiAgICAgICAgcGF0aC5sb2NcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRzID0gcGF0aC5wYXJ0cztcbiAgICB9XG5cbiAgICBsZXQgdGhpc0hlYWQgPSBmYWxzZTtcblxuICAgIC8vIFRoaXMgaXMgdG8gZml4IGEgYnVnIGluIHRoZSBIYW5kbGViYXJzIEFTVCB3aGVyZSB0aGUgcGF0aCBleHByZXNzaW9ucyBpblxuICAgIC8vIGB7e3RoaXMuZm9vfX1gIChhbmQgc2ltaWxhcmx5IGB7e2Zvby1iYXIgdGhpcy5mb28gbmFtZWQ9dGhpcy5mb299fWAgZXRjKVxuICAgIC8vIGFyZSBzaW1wbHkgdHVybmVkIGludG8gYHt7Zm9vfX1gLiBUaGUgZml4IGlzIHRvIHB1c2ggaXQgYmFjayBvbnRvIHRoZVxuICAgIC8vIHBhcnRzIGFycmF5IGFuZCBsZXQgdGhlIHJ1bnRpbWUgc2VlIHRoZSBkaWZmZXJlbmNlLiBIb3dldmVyLCB3ZSBjYW5ub3RcbiAgICAvLyBzaW1wbHkgdXNlIHRoZSBzdHJpbmcgYHRoaXNgIGFzIGl0IG1lYW5zIGxpdGVyYWxseSB0aGUgcHJvcGVydHkgY2FsbGVkXG4gICAgLy8gXCJ0aGlzXCIgaW4gdGhlIGN1cnJlbnQgY29udGV4dCAoaXQgY2FuIGJlIGV4cHJlc3NlZCBpbiB0aGUgc3ludGF4IGFzXG4gICAgLy8gYHt7W3RoaXNdfX1gLCB3aGVyZSB0aGUgc3F1YXJlIGJyYWNrZXQgYXJlIGdlbmVyYWxseSBmb3IgdGhpcyBraW5kIG9mXG4gICAgLy8gZXNjYXBpbmcg4oCTIHN1Y2ggYXMgYHt7Zm9vLltcImJhci5iYXpcIl19fWAgd291bGQgbWVhbiBsb29rdXAgYSBwcm9wZXJ0eVxuICAgIC8vIG5hbWVkIGxpdGVyYWxseSBcImJhci5iYXpcIiBvbiBgdGhpcy5mb29gKS4gQnkgY29udmVudGlvbiwgd2UgdXNlIGBudWxsYFxuICAgIC8vIGZvciB0aGlzIHB1cnBvc2UuXG4gICAgaWYgKG9yaWdpbmFsLm1hdGNoKC9edGhpcyhcXC4uKyk/JC8pKSB7XG4gICAgICB0aGlzSGVhZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdQYXRoRXhwcmVzc2lvbicsXG4gICAgICBvcmlnaW5hbDogcGF0aC5vcmlnaW5hbCxcbiAgICAgIHRoaXM6IHRoaXNIZWFkLFxuICAgICAgcGFydHMsXG4gICAgICBkYXRhOiBwYXRoLmRhdGEsXG4gICAgICBsb2M6IHBhdGgubG9jLFxuICAgIH07XG4gIH1cblxuICBIYXNoKGhhc2g6IEhCUy5IYXNoKTogQVNULkhhc2gge1xuICAgIGxldCBwYWlyczogQVNULkhhc2hQYWlyW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGFzaC5wYWlycy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IHBhaXIgPSBoYXNoLnBhaXJzW2ldO1xuICAgICAgcGFpcnMucHVzaChiLnBhaXIocGFpci5rZXksIHRoaXMuYWNjZXB0Tm9kZShwYWlyLnZhbHVlKSwgcGFpci5sb2MpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYi5oYXNoKHBhaXJzLCBoYXNoLmxvYyk7XG4gIH1cblxuICBTdHJpbmdMaXRlcmFsKHN0cmluZzogSEJTLlN0cmluZ0xpdGVyYWwpOiBBU1QuU3RyaW5nTGl0ZXJhbCB7XG4gICAgcmV0dXJuIGIubGl0ZXJhbCgnU3RyaW5nTGl0ZXJhbCcsIHN0cmluZy52YWx1ZSwgc3RyaW5nLmxvYyk7XG4gIH1cblxuICBCb29sZWFuTGl0ZXJhbChib29sZWFuOiBIQlMuQm9vbGVhbkxpdGVyYWwpOiBBU1QuQm9vbGVhbkxpdGVyYWwge1xuICAgIHJldHVybiBiLmxpdGVyYWwoJ0Jvb2xlYW5MaXRlcmFsJywgYm9vbGVhbi52YWx1ZSwgYm9vbGVhbi5sb2MpO1xuICB9XG5cbiAgTnVtYmVyTGl0ZXJhbChudW1iZXI6IEhCUy5OdW1iZXJMaXRlcmFsKTogQVNULk51bWJlckxpdGVyYWwge1xuICAgIHJldHVybiBiLmxpdGVyYWwoJ051bWJlckxpdGVyYWwnLCBudW1iZXIudmFsdWUsIG51bWJlci5sb2MpO1xuICB9XG5cbiAgVW5kZWZpbmVkTGl0ZXJhbCh1bmRlZjogSEJTLlVuZGVmaW5lZExpdGVyYWwpOiBBU1QuVW5kZWZpbmVkTGl0ZXJhbCB7XG4gICAgcmV0dXJuIGIubGl0ZXJhbCgnVW5kZWZpbmVkTGl0ZXJhbCcsIHVuZGVmaW5lZCwgdW5kZWYubG9jKTtcbiAgfVxuXG4gIE51bGxMaXRlcmFsKG51bDogSEJTLk51bGxMaXRlcmFsKTogQVNULk51bGxMaXRlcmFsIHtcbiAgICByZXR1cm4gYi5saXRlcmFsKCdOdWxsTGl0ZXJhbCcsIG51bGwsIG51bC5sb2MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZVJpZ2h0U3RyaXBwZWRPZmZzZXRzKG9yaWdpbmFsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgaWYgKHZhbHVlID09PSAnJykge1xuICAgIC8vIGlmIGl0IGlzIGVtcHR5LCBqdXN0IHJldHVybiB0aGUgY291bnQgb2YgbmV3bGluZXNcbiAgICAvLyBpbiBvcmlnaW5hbFxuICAgIHJldHVybiB7XG4gICAgICBsaW5lczogb3JpZ2luYWwuc3BsaXQoJ1xcbicpLmxlbmd0aCAtIDEsXG4gICAgICBjb2x1bW5zOiAwLFxuICAgIH07XG4gIH1cblxuICAvLyBvdGhlcndpc2UsIHJldHVybiB0aGUgbnVtYmVyIG9mIG5ld2xpbmVzIHByaW9yIHRvXG4gIC8vIGB2YWx1ZWBcbiAgbGV0IGRpZmZlcmVuY2UgPSBvcmlnaW5hbC5zcGxpdCh2YWx1ZSlbMF07XG4gIGxldCBsaW5lcyA9IGRpZmZlcmVuY2Uuc3BsaXQoL1xcbi8pO1xuICBsZXQgbGluZUNvdW50ID0gbGluZXMubGVuZ3RoIC0gMTtcblxuICByZXR1cm4ge1xuICAgIGxpbmVzOiBsaW5lQ291bnQsXG4gICAgY29sdW1uczogbGluZXNbbGluZUNvdW50XS5sZW5ndGgsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRva2VuaXplckxvY2F0aW9uKHRva2VuaXplcjogUGFyc2VyWyd0b2tlbml6ZXInXSwgY29udGVudDogSEJTLkNvbnRlbnRTdGF0ZW1lbnQpIHtcbiAgbGV0IGxpbmUgPSBjb250ZW50LmxvYy5zdGFydC5saW5lO1xuICBsZXQgY29sdW1uID0gY29udGVudC5sb2Muc3RhcnQuY29sdW1uO1xuXG4gIGxldCBvZmZzZXRzID0gY2FsY3VsYXRlUmlnaHRTdHJpcHBlZE9mZnNldHMoXG4gICAgY29udGVudC5vcmlnaW5hbCBhcyBSZWNhc3Q8SEJTLlN0cmlwRmxhZ3MsIHN0cmluZz4sXG4gICAgY29udGVudC52YWx1ZVxuICApO1xuXG4gIGxpbmUgPSBsaW5lICsgb2Zmc2V0cy5saW5lcztcbiAgaWYgKG9mZnNldHMubGluZXMpIHtcbiAgICBjb2x1bW4gPSBvZmZzZXRzLmNvbHVtbnM7XG4gIH0gZWxzZSB7XG4gICAgY29sdW1uID0gY29sdW1uICsgb2Zmc2V0cy5jb2x1bW5zO1xuICB9XG5cbiAgdG9rZW5pemVyLmxpbmUgPSBsaW5lO1xuICB0b2tlbml6ZXIuY29sdW1uID0gY29sdW1uO1xufVxuXG5mdW5jdGlvbiBhY2NlcHRDYWxsTm9kZXMoXG4gIGNvbXBpbGVyOiBIYW5kbGViYXJzTm9kZVZpc2l0b3JzLFxuICBub2RlOiB7XG4gICAgcGF0aDogSEJTLlBhdGhFeHByZXNzaW9uO1xuICAgIHBhcmFtczogSEJTLkV4cHJlc3Npb25bXTtcbiAgICBoYXNoOiBIQlMuSGFzaDtcbiAgfVxuKTogeyBwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb247IHBhcmFtczogQVNULkV4cHJlc3Npb25bXTsgaGFzaDogQVNULkhhc2ggfSB7XG4gIGxldCBwYXRoID0gY29tcGlsZXIuUGF0aEV4cHJlc3Npb24obm9kZS5wYXRoKTtcblxuICBsZXQgcGFyYW1zID0gbm9kZS5wYXJhbXMgPyBub2RlLnBhcmFtcy5tYXAoKGUpID0+IGNvbXBpbGVyLmFjY2VwdE5vZGU8QVNULkV4cHJlc3Npb24+KGUpKSA6IFtdO1xuICBsZXQgaGFzaCA9IG5vZGUuaGFzaCA/IGNvbXBpbGVyLkhhc2gobm9kZS5oYXNoKSA6IGIuaGFzaCgpO1xuXG4gIHJldHVybiB7IHBhdGgsIHBhcmFtcywgaGFzaCB9O1xufVxuXG5mdW5jdGlvbiBhZGRFbGVtZW50TW9kaWZpZXIoZWxlbWVudDogVGFnPCdTdGFydFRhZyc+LCBtdXN0YWNoZTogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCwgbG9jIH0gPSBtdXN0YWNoZTtcblxuICBpZiAoaXNMaXRlcmFsKHBhdGgpKSB7XG4gICAgbGV0IG1vZGlmaWVyID0gYHt7JHtwcmludExpdGVyYWwocGF0aCl9fX1gO1xuICAgIGxldCB0YWcgPSBgPCR7ZWxlbWVudC5uYW1lfSAuLi4gJHttb2RpZmllcn0gLi4uYDtcblxuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgIGBJbiAke3RhZ30sICR7bW9kaWZpZXJ9IGlzIG5vdCBhIHZhbGlkIG1vZGlmaWVyOiBcIiR7cGF0aC5vcmlnaW5hbH1cIiBvbiBsaW5lICR7XG4gICAgICAgIGxvYyAmJiBsb2Muc3RhcnQubGluZVxuICAgICAgfS5gLFxuICAgICAgbXVzdGFjaGUubG9jXG4gICAgKTtcbiAgfVxuXG4gIGxldCBtb2RpZmllciA9IGIuZWxlbWVudE1vZGlmaWVyKHBhdGgsIHBhcmFtcywgaGFzaCwgbG9jKTtcbiAgZWxlbWVudC5tb2RpZmllcnMucHVzaChtb2RpZmllcik7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZER5bmFtaWNBdHRyaWJ1dGVWYWx1ZVBhcnQoYXR0cmlidXRlOiBBdHRyaWJ1dGUsIHBhcnQ6IEFTVC5NdXN0YWNoZVN0YXRlbWVudCkge1xuICBhdHRyaWJ1dGUuaXNEeW5hbWljID0gdHJ1ZTtcbiAgYXR0cmlidXRlLnBhcnRzLnB1c2gocGFydCk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -17,2 +17,3 @@ "use strict";

print: true,
sortByLoc: true,
SyntaxError: true,

@@ -83,2 +84,8 @@ AST: true,

});
Object.defineProperty(exports, "sortByLoc", {
enumerable: true,
get: function () {
return _util.sortByLoc;
}
});
Object.defineProperty(exports, "SyntaxError", {

@@ -131,2 +138,4 @@ enumerable: true,

var _util = require("./lib/generation/util");
var _syntaxError = _interopRequireDefault(require("./lib/errors/syntax-error"));

@@ -145,2 +154,2 @@

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBOztBQVVBOztBQUNBOztBQU1BOztBQUNBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOztBQUdBOzs7O0FBRUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB1c2VkIGJ5IGVtYmVyLWNvbXBpbGVyXG5leHBvcnQge1xuICBwcmVwcm9jZXNzLFxuICBQcmVwcm9jZXNzT3B0aW9ucyxcbiAgQVNUUGx1Z2luLFxuICBBU1RQbHVnaW5CdWlsZGVyLFxuICBBU1RQbHVnaW5FbnZpcm9ubWVudCxcbiAgU3ludGF4LFxufSBmcm9tICcuL2xpYi9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzJztcblxuLy8gbmVlZGVkIGZvciB0ZXN0cyBvbmx5XG5leHBvcnQgeyBkZWZhdWx0IGFzIGJ1aWxkZXJzIH0gZnJvbSAnLi9saWIvYnVpbGRlcnMnO1xuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBUcmF2ZXJzYWxFcnJvcixcbiAgY2Fubm90UmVtb3ZlTm9kZSxcbiAgY2Fubm90UmVwbGFjZU5vZGUsXG4gIGNhbm5vdFJlcGxhY2VPclJlbW92ZUluS2V5SGFuZGxlcllldCxcbn0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL2Vycm9ycyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRyYXZlcnNlIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3RyYXZlcnNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RyYXZlcnNhbC92aXNpdG9yJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUGF0aCB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC9wYXRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgV2Fsa2VyIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3dhbGtlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByaW50IH0gZnJvbSAnLi9saWIvZ2VuZXJhdGlvbi9wcmludCc7XG5cbi8vIGVycm9yc1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBTeW50YXhFcnJvciB9IGZyb20gJy4vbGliL2Vycm9ycy9zeW50YXgtZXJyb3InO1xuXG4vLyBBU1RcbmltcG9ydCAqIGFzIEFTVCBmcm9tICcuL2xpYi90eXBlcy9ub2Rlcyc7XG5leHBvcnQgeyBBU1QgfTtcbmV4cG9ydCB7IGlzTGl0ZXJhbCwgcHJpbnRMaXRlcmFsIH0gZnJvbSAnLi9saWIvdXRpbHMnO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUFVQTs7QUFDQTs7QUFNQTs7QUFDQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFHQTs7OztBQUVBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdXNlZCBieSBlbWJlci1jb21waWxlclxuZXhwb3J0IHtcbiAgcHJlcHJvY2VzcyxcbiAgUHJlcHJvY2Vzc09wdGlvbnMsXG4gIEFTVFBsdWdpbixcbiAgQVNUUGx1Z2luQnVpbGRlcixcbiAgQVNUUGx1Z2luRW52aXJvbm1lbnQsXG4gIFN5bnRheCxcbn0gZnJvbSAnLi9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycyc7XG5cbi8vIG5lZWRlZCBmb3IgdGVzdHMgb25seVxuZXhwb3J0IHsgZGVmYXVsdCBhcyBidWlsZGVycyB9IGZyb20gJy4vbGliL2J1aWxkZXJzJztcbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgVHJhdmVyc2FsRXJyb3IsXG4gIGNhbm5vdFJlbW92ZU5vZGUsXG4gIGNhbm5vdFJlcGxhY2VOb2RlLFxuICBjYW5ub3RSZXBsYWNlT3JSZW1vdmVJbktleUhhbmRsZXJZZXQsXG59IGZyb20gJy4vbGliL3RyYXZlcnNhbC9lcnJvcnMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0cmF2ZXJzZSB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC90cmF2ZXJzZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90cmF2ZXJzYWwvdmlzaXRvcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFBhdGggfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvcGF0aCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFdhbGtlciB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC93YWxrZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmludCB9IGZyb20gJy4vbGliL2dlbmVyYXRpb24vcHJpbnQnO1xuZXhwb3J0IHsgc29ydEJ5TG9jIH0gZnJvbSAnLi9saWIvZ2VuZXJhdGlvbi91dGlsJztcblxuLy8gZXJyb3JzXG5leHBvcnQgeyBkZWZhdWx0IGFzIFN5bnRheEVycm9yIH0gZnJvbSAnLi9saWIvZXJyb3JzL3N5bnRheC1lcnJvcic7XG5cbi8vIEFTVFxuaW1wb3J0ICogYXMgQVNUIGZyb20gJy4vbGliL3R5cGVzL25vZGVzJztcbmV4cG9ydCB7IEFTVCB9O1xuZXhwb3J0IHsgaXNMaXRlcmFsLCBwcmludExpdGVyYWwgfSBmcm9tICcuL2xpYi91dGlscyc7XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -12,2 +12,46 @@ "use strict";

function _createForOfIteratorHelperLoose(o, allowArrayLike) {
var it;
if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) {
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
if (it) o = it;
var i = 0;
return function () {
if (i >= o.length) return {
done: true
};
return {
done: false,
value: o[i++]
};
};
}
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
it = o[Symbol.iterator]();
return it.next.bind(it);
}
function _unsupportedIterableToArray(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) {
arr2[i] = arr[i];
}
return arr2;
}
var NON_WHITESPACE = /\S/;

@@ -232,30 +276,24 @@

_proto.OpenElementNode = function OpenElementNode(el) {
var _this2 = this;
this.buffer += "<" + el.tag;
var parts = [].concat(el.attributes, el.modifiers, el.comments).sort(_util.sortByLoc);
if (el.attributes.length) {
el.attributes.forEach(function (attr) {
_this2.buffer += ' ';
for (var _iterator = _createForOfIteratorHelperLoose(parts), _step; !(_step = _iterator()).done;) {
var part = _step.value;
this.buffer += ' ';
_this2.AttrNode(attr);
});
}
switch (part.type) {
case 'AttrNode':
this.AttrNode(part);
break;
if (el.modifiers.length) {
el.modifiers.forEach(function (mod) {
_this2.buffer += ' ';
case 'ElementModifierStatement':
this.ElementModifierStatement(part);
break;
_this2.ElementModifierStatement(mod);
});
case 'MustacheCommentStatement':
this.MustacheCommentStatement(part);
break;
}
}
if (el.comments.length) {
el.comments.forEach(function (comment) {
_this2.buffer += ' ';
_this2.MustacheCommentStatement(comment);
});
}
if (el.blockParams.length) {

@@ -403,3 +441,3 @@ this.BlockParams(el.blockParams);

_proto.ConcatStatement = function ConcatStatement(concat) {
var _this3 = this;
var _this2 = this;

@@ -413,5 +451,5 @@ if (this.handledByOverride(concat)) {

if (part.type === 'TextNode') {
_this3.TextNode(part, true);
_this2.TextNode(part, true);
} else {
_this3.Node(part);
_this2.Node(part);
}

@@ -471,3 +509,3 @@ });

_proto.Params = function Params(params) {
var _this4 = this; // TODO: implement a top level Params AST node (just like the Hash object)
var _this3 = this; // TODO: implement a top level Params AST node (just like the Hash object)
// so that this can also be overridden

@@ -478,5 +516,5 @@

params.forEach(function (param) {
_this4.buffer += ' ';
_this3.buffer += ' ';
_this4.Expression(param);
_this3.Expression(param);
});

@@ -487,3 +525,3 @@ }

_proto.Hash = function Hash(hash) {
var _this5 = this;
var _this4 = this;

@@ -495,5 +533,5 @@ if (this.handledByOverride(hash, true)) {

hash.pairs.forEach(function (pair) {
_this5.buffer += ' ';
_this4.buffer += ' ';
_this5.HashPair(pair);
_this4.HashPair(pair);
});

@@ -578,2 +616,2 @@ };

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi9wcmludGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUE0QkE7O0FBQ0E7O0FBRUEsSUFBTSxjQUFjLEdBQXBCLElBQUE7O0lBc0JjLE87QUFJWixXQUFBLE9BQUEsQ0FBQSxPQUFBLEVBQW1DO0FBSDNCLFNBQUEsTUFBQSxHQUFBLEVBQUE7QUFJTixTQUFBLE9BQUEsR0FBQSxPQUFBO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7O1NBU0EsaUIsR0FBQSxTQUFBLGlCQUFBLENBQUEsSUFBQSxFQUFBLHVCQUFBLEVBQTZEO0FBQUEsUUFBL0IsdUJBQStCLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFBL0IsTUFBQSx1QkFBK0IsR0FBNUMsS0FBYTtBQUErQjs7QUFDM0QsUUFBSSxLQUFBLE9BQUEsQ0FBQSxRQUFBLEtBQUosU0FBQSxFQUF5QztBQUN2QyxVQUFJLE1BQU0sR0FBRyxLQUFBLE9BQUEsQ0FBQSxRQUFBLENBQUEsSUFBQSxFQUE0QixLQUF6QyxPQUFhLENBQWI7O0FBQ0EsVUFBSSxPQUFBLE1BQUEsS0FBSixRQUFBLEVBQWdDO0FBQzlCLFlBQUksdUJBQXVCLElBQUksTUFBTSxLQUFqQyxFQUFBLElBQTRDLGNBQWMsQ0FBZCxJQUFBLENBQW9CLE1BQU0sQ0FBMUUsQ0FBMEUsQ0FBMUIsQ0FBaEQsRUFBZ0Y7QUFDOUUsVUFBQSxNQUFNLEdBQUEsTUFBTixNQUFBO0FBQ0Q7O0FBRUQsYUFBQSxNQUFBLElBQUEsTUFBQTtBQUNBLGVBQUEsSUFBQTtBQUNEO0FBQ0Y7O0FBRUQsV0FBQSxLQUFBOzs7U0FHRixJLEdBQUEsU0FBQSxJQUFBLENBQUEsSUFBQSxFQUFlO0FBQ2IsWUFBUSxJQUFJLENBQVosSUFBQTtBQUNFLFdBQUEsbUJBQUE7QUFDQSxXQUFBLGdCQUFBO0FBQ0EsV0FBQSxrQkFBQTtBQUNBLFdBQUEsMEJBQUE7QUFDQSxXQUFBLGtC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QkFBQSxDQUFKLElBQUksQ0FBSixFQUFrQztBQUNoQztBQUNEOztBQUVELFNBQUEsTUFBQSxJQUFBLFdBQUE7OztTQUdGLFcsR0FBQSxTQUFBLFdBQUEsQ0FBQSxJQUFBLEVBQTZCO0FBQzNCLFFBQUksS0FBQSxpQkFBQSxDQUFKLElBQUksQ0FBSixFQUFrQztBQUNoQztBQUNEOztBQUVELFNBQUEsTUFBQSxJQUFBLE1BQUE7OztTQUdGLEssR0FBQSxTQUFBLEtBQUEsQ0FBQSxJQUFBLEVBQWdCO0FBQUEsUUFDUixPQURRLEdBQUEsS0FBQSxPQUFBOztBQUdkLFFBQUksT0FBTyxDQUFYLFFBQUEsRUFBc0I7QUFDcEIsVUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFQLFFBQUEsQ0FBQSxJQUFBLEVBQWIsT0FBYSxDQUFiOztBQUVBLFVBQUksTUFBTSxLQUFWLFNBQUEsRUFBMEI7QUFDeEIsZUFBQSxNQUFBO0FBQ0Q7QUFDRjs7QUFFRCxTQUFBLE1BQUEsR0FBQSxFQUFBO0FBQ0EsU0FBQSxJQUFBLENBQUEsSUFBQTtBQUNBLFdBQU8sS0FBUCxNQUFBOzs7Ozs7OztBQUlKLFNBQUEsV0FBQSxDQUFBLElBQUEsRUFBQSxjQUFBLEVBQXdEO0FBQUEsTUFDbEQsR0FEa0QsR0FDdEQsSUFEc0QsQ0FBQSxHQUFBO0FBQUEsTUFDM0MsSUFEMkMsR0FDdEQsSUFEc0QsQ0FBQSxJQUFBO0FBRXRELFFBQU0sSUFBQSxLQUFBLENBQUEsbUNBQUEsSUFBQSxHQUFBLGVBQUEsR0FDaUQsSUFBSSxDQUFKLFNBQUEsQ0FEakQsR0FDaUQsQ0FEakQsR0FBQSxjQUFBLEdBQU4sY0FBTSxDQUFOO0FBS0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdHRyTm9kZSxcbiAgQmxvY2ssXG4gIEJsb2NrU3RhdGVtZW50LFxuICBFbGVtZW50Tm9kZSxcbiAgTXVzdGFjaGVTdGF0ZW1lbnQsXG4gIE5vZGUsXG4gIFByb2dyYW0sXG4gIFRleHROb2RlLFxuICBQYXJ0aWFsU3RhdGVtZW50LFxuICBDb25jYXRTdGF0ZW1lbnQsXG4gIE11c3RhY2hlQ29tbWVudFN0YXRlbWVudCxcbiAgQ29tbWVudFN0YXRlbWVudCxcbiAgRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50LFxuICBFeHByZXNzaW9uLFxuICBQYXRoRXhwcmVzc2lvbixcbiAgU3ViRXhwcmVzc2lvbixcbiAgSGFzaCxcbiAgSGFzaFBhaXIsXG4gIExpdGVyYWwsXG4gIFN0cmluZ0xpdGVyYWwsXG4gIEJvb2xlYW5MaXRlcmFsLFxuICBOdW1iZXJMaXRlcmFsLFxuICBVbmRlZmluZWRMaXRlcmFsLFxuICBOdWxsTGl0ZXJhbCxcbiAgVG9wTGV2ZWxTdGF0ZW1lbnQsXG4gIFRlbXBsYXRlLFxufSBmcm9tICcuLi90eXBlcy9ub2Rlcyc7XG5pbXBvcnQgeyB2b2lkTWFwIH0gZnJvbSAnLi4vcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycyc7XG5pbXBvcnQgeyBlc2NhcGVUZXh0LCBlc2NhcGVBdHRyVmFsdWUgfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCBOT05fV0hJVEVTUEFDRSA9IC9cXFMvO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByaW50ZXJPcHRpb25zIHtcbiAgZW50aXR5RW5jb2Rpbmc6ICd0cmFuc2Zvcm1lZCcgfCAncmF3JztcblxuICAvKipcbiAgICogVXNlZCB0byBvdmVycmlkZSB0aGUgbWVjaGFuaXNtIG9mIHByaW50aW5nIGEgZ2l2ZW4gQVNULk5vZGUuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBnZW5lcmFsbHkgb25seSBiZSB1c2VmdWwgdG8gc291cmNlIC0+IHNvdXJjZSBjb2RlbW9kc1xuICAgKiB3aGVyZSB5b3Ugd291bGQgbGlrZSB0byBzcGVjaWFsaXplL292ZXJyaWRlIHRoZSB3YXkgYSBnaXZlbiBub2RlIGlzXG4gICAqIHByaW50ZWQgKGUuZy4geW91IHdvdWxkIGxpa2UgdG8gcHJlc2VydmUgYXMgbXVjaCBvZiB0aGUgb3JpZ2luYWxcbiAgICogZm9ybWF0dGluZyBhcyBwb3NzaWJsZSkuXG4gICAqXG4gICAqIFdoZW4gdGhlIHByb3ZpZGVkIG92ZXJyaWRlIHJldHVybnMgdW5kZWZpbmVkLCB0aGUgZGVmYXVsdCBidWlsdCBpbiBwcmludGluZ1xuICAgKiB3aWxsIGJlIGRvbmUgZm9yIHRoZSBBU1QuTm9kZS5cbiAgICpcbiAgICogQHBhcmFtIGFzdCB0aGUgYXN0IG5vZGUgdG8gYmUgcHJpbnRlZFxuICAgKiBAcGFyYW0gb3B0aW9ucyB0aGUgb3B0aW9ucyBzcGVjaWZpZWQgZHVyaW5nIHRoZSBwcmludCgpIGludm9jYXRpb25cbiAgICovXG4gIG92ZXJyaWRlPyhhc3Q6IE5vZGUsIG9wdGlvbnM6IFByaW50ZXJPcHRpb25zKTogdm9pZCB8IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHJpbnRlciB7XG4gIHByaXZhdGUgYnVmZmVyID0gJyc7XG4gIHByaXZhdGUgb3B0aW9uczogUHJpbnRlck9wdGlvbnM7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUHJpbnRlck9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgLypcbiAgICBUaGlzIGlzIHVzZWQgYnkgX2FsbF8gbWV0aG9kcyBvbiB0aGlzIFByaW50ZXIgY2xhc3MgdGhhdCBhZGQgdG8gYHRoaXMuYnVmZmVyYCxcbiAgICBpdCBhbGxvd3MgY29uc3VtZXJzIG9mIHRoZSBwcmludGVyIHRvIHVzZSBhbHRlcm5hdGUgc3RyaW5nIHJlcHJlc2VudGF0aW9ucyBmb3JcbiAgICBhIGdpdmVuIG5vZGUuXG5cbiAgICBUaGUgcHJpbWFyeSB1c2UgY2FzZSBmb3IgdGhpcyBhcmUgdGhpbmdzIGxpa2Ugc291cmNlIC0+IHNvdXJjZSBjb2RlbW9kIHV0aWxpdGllcy5cbiAgICBGb3IgZXhhbXBsZSwgZW1iZXItdGVtcGxhdGUtcmVjYXN0IGF0dGVtcHRzIHRvIGFsd2F5cyBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgc3RyaW5nXG4gICAgZm9ybWF0dGluZyBpbiBlYWNoIEFTVCBub2RlIGlmIG5vIG1vZGlmaWNhdGlvbnMgYXJlIG1hZGUgdG8gaXQuXG4gICovXG4gIGhhbmRsZWRCeU92ZXJyaWRlKG5vZGU6IE5vZGUsIGVuc3VyZUxlYWRpbmdXaGl0ZXNwYWNlID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLm92ZXJyaWRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCByZXN1bHQgPSB0aGlzLm9wdGlvbnMub3ZlcnJpZGUobm9kZSwgdGhpcy5vcHRpb25zKTtcbiAgICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoZW5zdXJlTGVhZGluZ1doaXRlc3BhY2UgJiYgcmVzdWx0ICE9PSAnJyAmJiBOT05fV0hJVEVTUEFDRS50ZXN0KHJlc3VsdFswXSkpIHtcbiAgICAgICAgICByZXN1bHQgPSBgICR7cmVzdWx0fWA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJ1ZmZlciArPSByZXN1bHQ7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIE5vZGUobm9kZTogTm9kZSk6IHZvaWQge1xuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICBjYXNlICdNdXN0YWNoZVN0YXRlbWVudCc6XG4gICAgICBjYXNlICdCbG9ja1N0YXRlbWVudCc6XG4gICAgICBjYXNlICdQYXJ0aWFsU3RhdGVtZW50JzpcbiAgICAgIGNhc2UgJ011c3RhY2hlQ29tbWVudFN0YXRlbWVudCc6XG4gICAgICBjYXNlICdDb21tZW50U3RhdGVtZW50JzpcbiAgICAgIGNhc2UgJ1RleHROb2RlJzpcbiAgICAgIGNhc2UgJ0VsZW1lbnROb2RlJzpcbiAgICAgIGNhc2UgJ0F0dHJOb2RlJzpcbiAgICAgIGNhc2UgJ0Jsb2NrJzpcbiAgICAgIGNhc2UgJ1RlbXBsYXRlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuVG9wTGV2ZWxTdGF0ZW1lbnQobm9kZSk7XG4gICAgICBjYXNlICdTdHJpbmdMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ0Jvb2xlYW5MaXRlcmFsJzpcbiAgICAgIGNhc2UgJ051bWJlckxpdGVyYWwnOlxuICAgICAgY2FzZSAnVW5kZWZpbmVkTGl0ZXJhbCc6XG4gICAgICBjYXNlICdOdWxsTGl0ZXJhbCc6XG4gICAgICBjYXNlICdQYXRoRXhwcmVzc2lvbic6XG4gICAgICBjYXNlICdTdWJFeHByZXNzaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuRXhwcmVzc2lvbihub2RlKTtcbiAgICAgIGNhc2UgJ1Byb2dyYW0nOlxuICAgICAgICByZXR1cm4gdGhpcy5CbG9jayhub2RlKTtcbiAgICAgIGNhc2UgJ0NvbmNhdFN0YXRlbWVudCc6XG4gICAgICAgIC8vIHNob3VsZCBoYXZlIGFuIEF0dHJOb2RlIHBhcmVudFxuICAgICAgICByZXR1cm4gdGhpcy5Db25jYXRTdGF0ZW1lbnQobm9kZSk7XG4gICAgICBjYXNlICdIYXNoJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuSGFzaChub2RlKTtcbiAgICAgIGNhc2UgJ0hhc2hQYWlyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuSGFzaFBhaXIobm9kZSk7XG4gICAgICBjYXNlICdFbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5FbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQobm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVucmVhY2hhYmxlKG5vZGUsICdOb2RlJyk7XG4gIH1cblxuICBFeHByZXNzaW9uKGV4cHJlc3Npb246IEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV4cHJlc3Npb24udHlwZSkge1xuICAgICAgY2FzZSAnU3RyaW5nTGl0ZXJhbCc6XG4gICAgICBjYXNlICdCb29sZWFuTGl0ZXJhbCc6XG4gICAgICBjYXNlICdOdW1iZXJMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ1VuZGVmaW5lZExpdGVyYWwnOlxuICAgICAgY2FzZSAnTnVsbExpdGVyYWwnOlxuICAgICAgICByZXR1cm4gdGhpcy5MaXRlcmFsKGV4cHJlc3Npb24pO1xuICAgICAgY2FzZSAnUGF0aEV4cHJlc3Npb24nOlxuICAgICAgICByZXR1cm4gdGhpcy5QYXRoRXhwcmVzc2lvbihleHByZXNzaW9uKTtcbiAgICAgIGNhc2UgJ1N1YkV4cHJlc3Npb24nOlxuICAgICAgICByZXR1cm4gdGhpcy5TdWJFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xuICAgIH1cbiAgICByZXR1cm4gdW5yZWFjaGFibGUoZXhwcmVzc2lvbiwgJ0V4cHJlc3Npb24nKTtcbiAgfVxuXG4gIExpdGVyYWwobGl0ZXJhbDogTGl0ZXJhbCkge1xuICAgIHN3aXRjaCAobGl0ZXJhbC50eXBlKSB7XG4gICAgICBjYXNlICdTdHJpbmdMaXRlcmFsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuU3RyaW5nTGl0ZXJhbChsaXRlcmFsKTtcbiAgICAgIGNhc2UgJ0Jvb2xlYW5MaXRlcmFsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuQm9vbGVhbkxpdGVyYWwobGl0ZXJhbCk7XG4gICAgICBjYXNlICdOdW1iZXJMaXRlcmFsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuTnVtYmVyTGl0ZXJhbChsaXRlcmFsKTtcbiAgICAgIGNhc2UgJ1VuZGVmaW5lZExpdGVyYWwnOlxuICAgICAgICByZXR1cm4gdGhpcy5VbmRlZmluZWRMaXRlcmFsKGxpdGVyYWwpO1xuICAgICAgY2FzZSAnTnVsbExpdGVyYWwnOlxuICAgICAgICByZXR1cm4gdGhpcy5OdWxsTGl0ZXJhbChsaXRlcmFsKTtcbiAgICB9XG4gICAgcmV0dXJuIHVucmVhY2hhYmxlKGxpdGVyYWwsICdMaXRlcmFsJyk7XG4gIH1cblxuICBUb3BMZXZlbFN0YXRlbWVudChzdGF0ZW1lbnQ6IFRvcExldmVsU3RhdGVtZW50KSB7XG4gICAgc3dpdGNoIChzdGF0ZW1lbnQudHlwZSkge1xuICAgICAgY2FzZSAnTXVzdGFjaGVTdGF0ZW1lbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5NdXN0YWNoZVN0YXRlbWVudChzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnQmxvY2tTdGF0ZW1lbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5CbG9ja1N0YXRlbWVudChzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnUGFydGlhbFN0YXRlbWVudCc6XG4gICAgICAgIHJldHVybiB0aGlzLlBhcnRpYWxTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ011c3RhY2hlQ29tbWVudFN0YXRlbWVudCc6XG4gICAgICAgIHJldHVybiB0aGlzLk11c3RhY2hlQ29tbWVudFN0YXRlbWVudChzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnQ29tbWVudFN0YXRlbWVudCc6XG4gICAgICAgIHJldHVybiB0aGlzLkNvbW1lbnRTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ1RleHROb2RlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuVGV4dE5vZGUoc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ0VsZW1lbnROb2RlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuRWxlbWVudE5vZGUoc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ0Jsb2NrJzpcbiAgICAgIGNhc2UgJ1RlbXBsYXRlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuQmxvY2soc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ0F0dHJOb2RlJzpcbiAgICAgICAgLy8gc2hvdWxkIGhhdmUgZWxlbWVudFxuICAgICAgICByZXR1cm4gdGhpcy5BdHRyTm9kZShzdGF0ZW1lbnQpO1xuICAgIH1cbiAgICB1bnJlYWNoYWJsZShzdGF0ZW1lbnQsICdUb3BMZXZlbFN0YXRlbWVudCcpO1xuICB9XG5cbiAgQmxvY2soYmxvY2s6IEJsb2NrIHwgUHJvZ3JhbSB8IFRlbXBsYXRlKTogdm9pZCB7XG4gICAgLypcbiAgICAgIFdoZW4gcHJvY2Vzc2luZyBhIHRlbXBsYXRlIGxpa2U6XG5cbiAgICAgIGBgYGhic1xuICAgICAge3sjaWYgd2hhdGV2ZXJ9fVxuICAgICAgICB3aGF0ZXZlclxuICAgICAge3tlbHNlIGlmIHNvbWV0aGluZ0Vsc2V9fVxuICAgICAgICBzb21ldGhpbmcgZWxzZVxuICAgICAge3tlbHNlfX1cbiAgICAgICAgZmFsbGJhY2tcbiAgICAgIHt7L2lmfX1cbiAgICAgIGBgYFxuXG4gICAgICBUaGUgQVNUIHN0aWxsIF9lZmZlY3RpdmVseV8gbG9va3MgbGlrZTpcblxuICAgICAgYGBgaGJzXG4gICAgICB7eyNpZiB3aGF0ZXZlcn19XG4gICAgICAgIHdoYXRldmVyXG4gICAgICB7e2Vsc2V9fXt7I2lmIHNvbWV0aGluZ0Vsc2V9fVxuICAgICAgICBzb21ldGhpbmcgZWxzZVxuICAgICAge3tlbHNlfX1cbiAgICAgICAgZmFsbGJhY2tcbiAgICAgIHt7L2lmfX17ey9pZn19XG4gICAgICBgYGBcblxuICAgICAgVGhlIG9ubHkgd2F5IHdlIGNhbiB0ZWxsIGlmIHRoYXQgaXMgdGhlIGNhc2UgaXMgYnkgY2hlY2tpbmcgZm9yXG4gICAgICBgYmxvY2suY2hhaW5lZGAsIGJ1dCB1bmZvcnR1bmF0ZWx5IHdoZW4gdGhlIGFjdHVhbCBzdGF0ZW1lbnRzIGFyZVxuICAgICAgcHJvY2Vzc2VkIHRoZSBgYmxvY2suYm9keVswXWAgbm9kZSAod2hpY2ggd2lsbCBhbHdheXMgYmUgYVxuICAgICAgYEJsb2NrU3RhdGVtZW50YCkgaGFzIG5vIGNsdWUgdGhhdCBpdHMgYW5zY2VzdG9yIGBCbG9ja2Agbm9kZSB3YXNcbiAgICAgIGNoYWluZWQuXG5cbiAgICAgIFRoaXMgXCJmb3J3YXJkc1wiIHRoZSBgY2hhaW5lZGAgc2V0dGluZyBzbyB0aGF0IHdlIGNhbiBjaGVja1xuICAgICAgaXQgbGF0ZXIgd2hlbiBwcm9jZXNzaW5nIHRoZSBgQmxvY2tTdGF0ZW1lbnRgLlxuICAgICovXG4gICAgaWYgKGJsb2NrLmNoYWluZWQpIHtcbiAgICAgIGxldCBmaXJzdENoaWxkID0gYmxvY2suYm9keVswXSBhcyBCbG9ja1N0YXRlbWVudDtcbiAgICAgIGZpcnN0Q2hpbGQuY2hhaW5lZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoYmxvY2spKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5Ub3BMZXZlbFN0YXRlbWVudHMoYmxvY2suYm9keSk7XG4gIH1cblxuICBUb3BMZXZlbFN0YXRlbWVudHMoc3RhdGVtZW50czogVG9wTGV2ZWxTdGF0ZW1lbnRbXSkge1xuICAgIHN0YXRlbWVudHMuZm9yRWFjaCgoc3RhdGVtZW50KSA9PiB0aGlzLlRvcExldmVsU3RhdGVtZW50KHN0YXRlbWVudCkpO1xuICB9XG5cbiAgRWxlbWVudE5vZGUoZWw6IEVsZW1lbnROb2RlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoZWwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5PcGVuRWxlbWVudE5vZGUoZWwpO1xuICAgIHRoaXMuVG9wTGV2ZWxTdGF0ZW1lbnRzKGVsLmNoaWxkcmVuKTtcbiAgICB0aGlzLkNsb3NlRWxlbWVudE5vZGUoZWwpO1xuICB9XG5cbiAgT3BlbkVsZW1lbnROb2RlKGVsOiBFbGVtZW50Tm9kZSk6IHZvaWQge1xuICAgIHRoaXMuYnVmZmVyICs9IGA8JHtlbC50YWd9YDtcbiAgICBpZiAoZWwuYXR0cmlidXRlcy5sZW5ndGgpIHtcbiAgICAgIGVsLmF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgICB0aGlzLmJ1ZmZlciArPSAnICc7XG4gICAgICAgIHRoaXMuQXR0ck5vZGUoYXR0cik7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGVsLm1vZGlmaWVycy5sZW5ndGgpIHtcbiAgICAgIGVsLm1vZGlmaWVycy5mb3JFYWNoKChtb2QpID0+IHtcbiAgICAgICAgdGhpcy5idWZmZXIgKz0gJyAnO1xuICAgICAgICB0aGlzLkVsZW1lbnRNb2RpZmllclN0YXRlbWVudChtb2QpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChlbC5jb21tZW50cy5sZW5ndGgpIHtcbiAgICAgIGVsLmNvbW1lbnRzLmZvckVhY2goKGNvbW1lbnQpID0+IHtcbiAgICAgICAgdGhpcy5idWZmZXIgKz0gJyAnO1xuICAgICAgICB0aGlzLk11c3RhY2hlQ29tbWVudFN0YXRlbWVudChjb21tZW50KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZWwuYmxvY2tQYXJhbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLkJsb2NrUGFyYW1zKGVsLmJsb2NrUGFyYW1zKTtcbiAgICB9XG4gICAgaWYgKGVsLnNlbGZDbG9zaW5nKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnIC8nO1xuICAgIH1cbiAgICB0aGlzLmJ1ZmZlciArPSAnPic7XG4gIH1cblxuICBDbG9zZUVsZW1lbnROb2RlKGVsOiBFbGVtZW50Tm9kZSk6IHZvaWQge1xuICAgIGlmIChlbC5zZWxmQ2xvc2luZyB8fCB2b2lkTWFwW2VsLnRhZy50b0xvd2VyQ2FzZSgpXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmJ1ZmZlciArPSBgPC8ke2VsLnRhZ30+YDtcbiAgfVxuXG4gIEF0dHJOb2RlKGF0dHI6IEF0dHJOb2RlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoYXR0cikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgeyBuYW1lLCB2YWx1ZSB9ID0gYXR0cjtcblxuICAgIHRoaXMuYnVmZmVyICs9IG5hbWU7XG4gICAgaWYgKHZhbHVlLnR5cGUgIT09ICdUZXh0Tm9kZScgfHwgdmFsdWUuY2hhcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJz0nO1xuICAgICAgdGhpcy5BdHRyTm9kZVZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBBdHRyTm9kZVZhbHVlKHZhbHVlOiBBdHRyTm9kZVsndmFsdWUnXSkge1xuICAgIGlmICh2YWx1ZS50eXBlID09PSAnVGV4dE5vZGUnKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnXCInO1xuICAgICAgdGhpcy5UZXh0Tm9kZSh2YWx1ZSwgdHJ1ZSk7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnXCInO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLk5vZGUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIFRleHROb2RlKHRleHQ6IFRleHROb2RlLCBpc0F0dHI/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUodGV4dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmVudGl0eUVuY29kaW5nID09PSAncmF3Jykge1xuICAgICAgdGhpcy5idWZmZXIgKz0gdGV4dC5jaGFycztcbiAgICB9IGVsc2UgaWYgKGlzQXR0cikge1xuICAgICAgdGhpcy5idWZmZXIgKz0gZXNjYXBlQXR0clZhbHVlKHRleHQuY2hhcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBlc2NhcGVUZXh0KHRleHQuY2hhcnMpO1xuICAgIH1cbiAgfVxuXG4gIE11c3RhY2hlU3RhdGVtZW50KG11c3RhY2hlOiBNdXN0YWNoZVN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKG11c3RhY2hlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IG11c3RhY2hlLmVzY2FwZWQgPyAne3snIDogJ3t7eyc7XG5cbiAgICBpZiAobXVzdGFjaGUuc3RyaXAub3Blbikge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJ34nO1xuICAgIH1cblxuICAgIHRoaXMuRXhwcmVzc2lvbihtdXN0YWNoZS5wYXRoKTtcbiAgICB0aGlzLlBhcmFtcyhtdXN0YWNoZS5wYXJhbXMpO1xuICAgIHRoaXMuSGFzaChtdXN0YWNoZS5oYXNoKTtcblxuICAgIGlmIChtdXN0YWNoZS5zdHJpcC5jbG9zZSkge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJ34nO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IG11c3RhY2hlLmVzY2FwZWQgPyAnfX0nIDogJ319fSc7XG4gIH1cblxuICBCbG9ja1N0YXRlbWVudChibG9jazogQmxvY2tTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShibG9jaykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoYmxvY2suY2hhaW5lZCkge1xuICAgICAgdGhpcy5idWZmZXIgKz0gYmxvY2suaW52ZXJzZVN0cmlwLm9wZW4gPyAne3t+JyA6ICd7eyc7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnZWxzZSAnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5vcGVuU3RyaXAub3BlbiA/ICd7e34jJyA6ICd7eyMnO1xuICAgIH1cblxuICAgIHRoaXMuRXhwcmVzc2lvbihibG9jay5wYXRoKTtcbiAgICB0aGlzLlBhcmFtcyhibG9jay5wYXJhbXMpO1xuICAgIHRoaXMuSGFzaChibG9jay5oYXNoKTtcbiAgICBpZiAoYmxvY2sucHJvZ3JhbS5ibG9ja1BhcmFtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuQmxvY2tQYXJhbXMoYmxvY2sucHJvZ3JhbS5ibG9ja1BhcmFtcyk7XG4gICAgfVxuXG4gICAgaWYgKGJsb2NrLmNoYWluZWQpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmludmVyc2VTdHJpcC5jbG9zZSA/ICd+fX0nIDogJ319JztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idWZmZXIgKz0gYmxvY2sub3BlblN0cmlwLmNsb3NlID8gJ359fScgOiAnfX0nO1xuICAgIH1cblxuICAgIHRoaXMuQmxvY2soYmxvY2sucHJvZ3JhbSk7XG5cbiAgICBpZiAoYmxvY2suaW52ZXJzZSkge1xuICAgICAgaWYgKCFibG9jay5pbnZlcnNlLmNoYWluZWQpIHtcbiAgICAgICAgdGhpcy5idWZmZXIgKz0gYmxvY2suaW52ZXJzZVN0cmlwLm9wZW4gPyAne3t+JyA6ICd7eyc7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9ICdlbHNlJztcbiAgICAgICAgdGhpcy5idWZmZXIgKz0gYmxvY2suaW52ZXJzZVN0cmlwLmNsb3NlID8gJ359fScgOiAnfX0nO1xuICAgICAgfVxuXG4gICAgICB0aGlzLkJsb2NrKGJsb2NrLmludmVyc2UpO1xuICAgIH1cblxuICAgIGlmICghYmxvY2suY2hhaW5lZCkge1xuICAgICAgdGhpcy5idWZmZXIgKz0gYmxvY2suY2xvc2VTdHJpcC5vcGVuID8gJ3t7fi8nIDogJ3t7Lyc7XG4gICAgICB0aGlzLkV4cHJlc3Npb24oYmxvY2sucGF0aCk7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5jbG9zZVN0cmlwLmNsb3NlID8gJ359fScgOiAnfX0nO1xuICAgIH1cbiAgfVxuXG4gIEJsb2NrUGFyYW1zKGJsb2NrUGFyYW1zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuYnVmZmVyICs9IGAgYXMgfCR7YmxvY2tQYXJhbXMuam9pbignICcpfXxgO1xuICB9XG5cbiAgUGFydGlhbFN0YXRlbWVudChwYXJ0aWFsOiBQYXJ0aWFsU3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUocGFydGlhbCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSAne3s+JztcbiAgICB0aGlzLkV4cHJlc3Npb24ocGFydGlhbC5uYW1lKTtcbiAgICB0aGlzLlBhcmFtcyhwYXJ0aWFsLnBhcmFtcyk7XG4gICAgdGhpcy5IYXNoKHBhcnRpYWwuaGFzaCk7XG4gICAgdGhpcy5idWZmZXIgKz0gJ319JztcbiAgfVxuXG4gIENvbmNhdFN0YXRlbWVudChjb25jYXQ6IENvbmNhdFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGNvbmNhdCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSAnXCInO1xuICAgIGNvbmNhdC5wYXJ0cy5mb3JFYWNoKChwYXJ0KSA9PiB7XG4gICAgICBpZiAocGFydC50eXBlID09PSAnVGV4dE5vZGUnKSB7XG4gICAgICAgIHRoaXMuVGV4dE5vZGUocGFydCwgdHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLk5vZGUocGFydCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5idWZmZXIgKz0gJ1wiJztcbiAgfVxuXG4gIE11c3RhY2hlQ29tbWVudFN0YXRlbWVudChjb21tZW50OiBNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShjb21tZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IGB7eyEtLSR7Y29tbWVudC52YWx1ZX0tLX19YDtcbiAgfVxuXG4gIEVsZW1lbnRNb2RpZmllclN0YXRlbWVudChtb2Q6IEVsZW1lbnRNb2RpZmllclN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKG1vZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSAne3snO1xuICAgIHRoaXMuRXhwcmVzc2lvbihtb2QucGF0aCk7XG4gICAgdGhpcy5QYXJhbXMobW9kLnBhcmFtcyk7XG4gICAgdGhpcy5IYXNoKG1vZC5oYXNoKTtcbiAgICB0aGlzLmJ1ZmZlciArPSAnfX0nO1xuICB9XG5cbiAgQ29tbWVudFN0YXRlbWVudChjb21tZW50OiBDb21tZW50U3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoY29tbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBgPCEtLSR7Y29tbWVudC52YWx1ZX0tLT5gO1xuICB9XG5cbiAgUGF0aEV4cHJlc3Npb24ocGF0aDogUGF0aEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShwYXRoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IHBhdGgub3JpZ2luYWw7XG4gIH1cblxuICBTdWJFeHByZXNzaW9uKHNleHA6IFN1YkV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShzZXhwKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICcoJztcbiAgICB0aGlzLkV4cHJlc3Npb24oc2V4cC5wYXRoKTtcbiAgICB0aGlzLlBhcmFtcyhzZXhwLnBhcmFtcyk7XG4gICAgdGhpcy5IYXNoKHNleHAuaGFzaCk7XG4gICAgdGhpcy5idWZmZXIgKz0gJyknO1xuICB9XG5cbiAgUGFyYW1zKHBhcmFtczogRXhwcmVzc2lvbltdKSB7XG4gICAgLy8gVE9ETzogaW1wbGVtZW50IGEgdG9wIGxldmVsIFBhcmFtcyBBU1Qgbm9kZSAoanVzdCBsaWtlIHRoZSBIYXNoIG9iamVjdClcbiAgICAvLyBzbyB0aGF0IHRoaXMgY2FuIGFsc28gYmUgb3ZlcnJpZGRlblxuICAgIGlmIChwYXJhbXMubGVuZ3RoKSB7XG4gICAgICBwYXJhbXMuZm9yRWFjaCgocGFyYW0pID0+IHtcbiAgICAgICAgdGhpcy5idWZmZXIgKz0gJyAnO1xuICAgICAgICB0aGlzLkV4cHJlc3Npb24ocGFyYW0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgSGFzaChoYXNoOiBIYXNoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoaGFzaCwgdHJ1ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBoYXNoLnBhaXJzLmZvckVhY2goKHBhaXIpID0+IHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICcgJztcbiAgICAgIHRoaXMuSGFzaFBhaXIocGFpcik7XG4gICAgfSk7XG4gIH1cblxuICBIYXNoUGFpcihwYWlyOiBIYXNoUGFpcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHBhaXIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gcGFpci5rZXk7XG4gICAgdGhpcy5idWZmZXIgKz0gJz0nO1xuICAgIHRoaXMuTm9kZShwYWlyLnZhbHVlKTtcbiAgfVxuXG4gIFN0cmluZ0xpdGVyYWwoc3RyOiBTdHJpbmdMaXRlcmFsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoc3RyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IEpTT04uc3RyaW5naWZ5KHN0ci52YWx1ZSk7XG4gIH1cblxuICBCb29sZWFuTGl0ZXJhbChib29sOiBCb29sZWFuTGl0ZXJhbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGJvb2wpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gYm9vbC52YWx1ZTtcbiAgfVxuXG4gIE51bWJlckxpdGVyYWwobnVtYmVyOiBOdW1iZXJMaXRlcmFsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUobnVtYmVyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IG51bWJlci52YWx1ZTtcbiAgfVxuXG4gIFVuZGVmaW5lZExpdGVyYWwobm9kZTogVW5kZWZpbmVkTGl0ZXJhbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKG5vZGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBOdWxsTGl0ZXJhbChub2RlOiBOdWxsTGl0ZXJhbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKG5vZGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJ251bGwnO1xuICB9XG5cbiAgcHJpbnQobm9kZTogTm9kZSkge1xuICAgIGxldCB7IG9wdGlvbnMgfSA9IHRoaXM7XG5cbiAgICBpZiAob3B0aW9ucy5vdmVycmlkZSkge1xuICAgICAgbGV0IHJlc3VsdCA9IG9wdGlvbnMub3ZlcnJpZGUobm9kZSwgb3B0aW9ucyk7XG5cbiAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyID0gJyc7XG4gICAgdGhpcy5Ob2RlKG5vZGUpO1xuICAgIHJldHVybiB0aGlzLmJ1ZmZlcjtcbiAgfVxufVxuXG5mdW5jdGlvbiB1bnJlYWNoYWJsZShub2RlOiBuZXZlciwgcGFyZW50Tm9kZVR5cGU6IHN0cmluZyk6IG5ldmVyIHtcbiAgbGV0IHsgbG9jLCB0eXBlIH0gPSAobm9kZSBhcyBhbnkpIGFzIE5vZGU7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgTm9uLWV4aGF1c3RpdmUgbm9kZSBuYXJyb3dpbmcgJHt0eXBlfSBAIGxvY2F0aW9uOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgbG9jXG4gICAgKX0gZm9yIHBhcmVudCAke3BhcmVudE5vZGVUeXBlfWBcbiAgKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi9wcmludGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUE0QkE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNLGNBQWMsR0FBcEIsSUFBQTs7SUFzQmMsTztBQUlaLFdBQUEsT0FBQSxDQUFBLE9BQUEsRUFBbUM7QUFIM0IsU0FBQSxNQUFBLEdBQUEsRUFBQTtBQUlOLFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7U0FTQSxpQixHQUFBLFNBQUEsaUJBQUEsQ0FBQSxJQUFBLEVBQUEsdUJBQUEsRUFBNkQ7QUFBQSxRQUEvQix1QkFBK0IsS0FBQSxLQUFBLENBQUEsRUFBQTtBQUEvQixNQUFBLHVCQUErQixHQUE1QyxLQUFhO0FBQStCOztBQUMzRCxRQUFJLEtBQUEsT0FBQSxDQUFBLFFBQUEsS0FBSixTQUFBLEVBQXlDO0FBQ3ZDLFVBQUksTUFBTSxHQUFHLEtBQUEsT0FBQSxDQUFBLFFBQUEsQ0FBQSxJQUFBLEVBQTRCLEtBQXpDLE9BQWEsQ0FBYjs7QUFDQSxVQUFJLE9BQUEsTUFBQSxLQUFKLFFBQUEsRUFBZ0M7QUFDOUIsWUFBSSx1QkFBdUIsSUFBSSxNQUFNLEtBQWpDLEVBQUEsSUFBNEMsY0FBYyxDQUFkLElBQUEsQ0FBb0IsTUFBTSxDQUExRSxDQUEwRSxDQUExQixDQUFoRCxFQUFnRjtBQUM5RSxVQUFBLE1BQU0sR0FBQSxNQUFOLE1BQUE7QUFDRDs7QUFFRCxhQUFBLE1BQUEsSUFBQSxNQUFBO0FBQ0EsZUFBQSxJQUFBO0FBQ0Q7QUFDRjs7QUFFRCxXQUFBLEtBQUE7OztTQUdGLEksR0FBQSxTQUFBLElBQUEsQ0FBQSxJQUFBLEVBQWU7QUFDYixZQUFRLElBQUksQ0FBWixJQUFBO0FBQ0UsV0FBQSxtQkFBQTtBQUNBLFdBQUEsZ0JBQUE7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QSxTQUFBLFdBQUEsQ0FBQSxJQUFBLEVBQTZCO0FBQzNCLFFBQUksS0FBQSxpQkFBQSxDQUFKLElBQUksQ0FBSixFQUFrQztBQUNoQztBQUNEOztBQUVELFNBQUEsTUFBQSxJQUFBLE1BQUE7OztTQUdGLEssR0FBQSxTQUFBLEtBQUEsQ0FBQSxJQUFBLEVBQWdCO0FBQUEsUUFDUixPQURRLEdBQUEsS0FBQSxPQUFBOztBQUdkLFFBQUksT0FBTyxDQUFYLFFBQUEsRUFBc0I7QUFDcEIsVUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFQLFFBQUEsQ0FBQSxJQUFBLEVBQWIsT0FBYSxDQUFiOztBQUVBLFVBQUksTUFBTSxLQUFWLFNBQUEsRUFBMEI7QUFDeEIsZUFBQSxNQUFBO0FBQ0Q7QUFDRjs7QUFFRCxTQUFBLE1BQUEsR0FBQSxFQUFBO0FBQ0EsU0FBQSxJQUFBLENBQUEsSUFBQTtBQUNBLFdBQU8sS0FBUCxNQUFBOzs7Ozs7OztBQUlKLFNBQUEsV0FBQSxDQUFBLElBQUEsRUFBQSxjQUFBLEVBQXdEO0FBQUEsTUFDbEQsR0FEa0QsR0FDdEQsSUFEc0QsQ0FBQSxHQUFBO0FBQUEsTUFDM0MsSUFEMkMsR0FDdEQsSUFEc0QsQ0FBQSxJQUFBO0FBRXRELFFBQU0sSUFBQSxLQUFBLENBQUEsbUNBQUEsSUFBQSxHQUFBLGVBQUEsR0FDaUQsSUFBSSxDQUFKLFNBQUEsQ0FEakQsR0FDaUQsQ0FEakQsR0FBQSxjQUFBLEdBQU4sY0FBTSxDQUFOO0FBS0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdHRyTm9kZSxcbiAgQmxvY2ssXG4gIEJsb2NrU3RhdGVtZW50LFxuICBFbGVtZW50Tm9kZSxcbiAgTXVzdGFjaGVTdGF0ZW1lbnQsXG4gIE5vZGUsXG4gIFByb2dyYW0sXG4gIFRleHROb2RlLFxuICBQYXJ0aWFsU3RhdGVtZW50LFxuICBDb25jYXRTdGF0ZW1lbnQsXG4gIE11c3RhY2hlQ29tbWVudFN0YXRlbWVudCxcbiAgQ29tbWVudFN0YXRlbWVudCxcbiAgRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50LFxuICBFeHByZXNzaW9uLFxuICBQYXRoRXhwcmVzc2lvbixcbiAgU3ViRXhwcmVzc2lvbixcbiAgSGFzaCxcbiAgSGFzaFBhaXIsXG4gIExpdGVyYWwsXG4gIFN0cmluZ0xpdGVyYWwsXG4gIEJvb2xlYW5MaXRlcmFsLFxuICBOdW1iZXJMaXRlcmFsLFxuICBVbmRlZmluZWRMaXRlcmFsLFxuICBOdWxsTGl0ZXJhbCxcbiAgVG9wTGV2ZWxTdGF0ZW1lbnQsXG4gIFRlbXBsYXRlLFxufSBmcm9tICcuLi90eXBlcy9ub2Rlcyc7XG5pbXBvcnQgeyB2b2lkTWFwIH0gZnJvbSAnLi4vcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycyc7XG5pbXBvcnQgeyBlc2NhcGVUZXh0LCBlc2NhcGVBdHRyVmFsdWUsIHNvcnRCeUxvYyB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IE5PTl9XSElURVNQQUNFID0gL1xcUy87XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpbnRlck9wdGlvbnMge1xuICBlbnRpdHlFbmNvZGluZzogJ3RyYW5zZm9ybWVkJyB8ICdyYXcnO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG92ZXJyaWRlIHRoZSBtZWNoYW5pc20gb2YgcHJpbnRpbmcgYSBnaXZlbiBBU1QuTm9kZS5cbiAgICpcbiAgICogVGhpcyB3aWxsIGdlbmVyYWxseSBvbmx5IGJlIHVzZWZ1bCB0byBzb3VyY2UgLT4gc291cmNlIGNvZGVtb2RzXG4gICAqIHdoZXJlIHlvdSB3b3VsZCBsaWtlIHRvIHNwZWNpYWxpemUvb3ZlcnJpZGUgdGhlIHdheSBhIGdpdmVuIG5vZGUgaXNcbiAgICogcHJpbnRlZCAoZS5nLiB5b3Ugd291bGQgbGlrZSB0byBwcmVzZXJ2ZSBhcyBtdWNoIG9mIHRoZSBvcmlnaW5hbFxuICAgKiBmb3JtYXR0aW5nIGFzIHBvc3NpYmxlKS5cbiAgICpcbiAgICogV2hlbiB0aGUgcHJvdmlkZWQgb3ZlcnJpZGUgcmV0dXJucyB1bmRlZmluZWQsIHRoZSBkZWZhdWx0IGJ1aWx0IGluIHByaW50aW5nXG4gICAqIHdpbGwgYmUgZG9uZSBmb3IgdGhlIEFTVC5Ob2RlLlxuICAgKlxuICAgKiBAcGFyYW0gYXN0IHRoZSBhc3Qgbm9kZSB0byBiZSBwcmludGVkXG4gICAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHNwZWNpZmllZCBkdXJpbmcgdGhlIHByaW50KCkgaW52b2NhdGlvblxuICAgKi9cbiAgb3ZlcnJpZGU/KGFzdDogTm9kZSwgb3B0aW9uczogUHJpbnRlck9wdGlvbnMpOiB2b2lkIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcmludGVyIHtcbiAgcHJpdmF0ZSBidWZmZXIgPSAnJztcbiAgcHJpdmF0ZSBvcHRpb25zOiBQcmludGVyT3B0aW9ucztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBQcmludGVyT3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICAvKlxuICAgIFRoaXMgaXMgdXNlZCBieSBfYWxsXyBtZXRob2RzIG9uIHRoaXMgUHJpbnRlciBjbGFzcyB0aGF0IGFkZCB0byBgdGhpcy5idWZmZXJgLFxuICAgIGl0IGFsbG93cyBjb25zdW1lcnMgb2YgdGhlIHByaW50ZXIgdG8gdXNlIGFsdGVybmF0ZSBzdHJpbmcgcmVwcmVzZW50YXRpb25zIGZvclxuICAgIGEgZ2l2ZW4gbm9kZS5cblxuICAgIFRoZSBwcmltYXJ5IHVzZSBjYXNlIGZvciB0aGlzIGFyZSB0aGluZ3MgbGlrZSBzb3VyY2UgLT4gc291cmNlIGNvZGVtb2QgdXRpbGl0aWVzLlxuICAgIEZvciBleGFtcGxlLCBlbWJlci10ZW1wbGF0ZS1yZWNhc3QgYXR0ZW1wdHMgdG8gYWx3YXlzIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBzdHJpbmdcbiAgICBmb3JtYXR0aW5nIGluIGVhY2ggQVNUIG5vZGUgaWYgbm8gbW9kaWZpY2F0aW9ucyBhcmUgbWFkZSB0byBpdC5cbiAgKi9cbiAgaGFuZGxlZEJ5T3ZlcnJpZGUobm9kZTogTm9kZSwgZW5zdXJlTGVhZGluZ1doaXRlc3BhY2UgPSBmYWxzZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm9wdGlvbnMub3ZlcnJpZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IHJlc3VsdCA9IHRoaXMub3B0aW9ucy5vdmVycmlkZShub2RlLCB0aGlzLm9wdGlvbnMpO1xuICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmIChlbnN1cmVMZWFkaW5nV2hpdGVzcGFjZSAmJiByZXN1bHQgIT09ICcnICYmIE5PTl9XSElURVNQQUNFLnRlc3QocmVzdWx0WzBdKSkge1xuICAgICAgICAgIHJlc3VsdCA9IGAgJHtyZXN1bHR9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnVmZmVyICs9IHJlc3VsdDtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgTm9kZShub2RlOiBOb2RlKTogdm9pZCB7XG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ011c3RhY2hlU3RhdGVtZW50JzpcbiAgICAgIGNhc2UgJ0Jsb2NrU3RhdGVtZW50JzpcbiAgICAgIGNhc2UgJ1BhcnRpYWxTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnTXVzdGFjaGVDb21tZW50U3RhdGVtZW50JzpcbiAgICAgIGNhc2UgJ0NvbW1lbnRTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnVGV4dE5vZGUnOlxuICAgICAgY2FzZSAnRWxlbWVudE5vZGUnOlxuICAgICAgY2FzZSAnQXR0ck5vZGUnOlxuICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgY2FzZSAnVGVtcGxhdGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5Ub3BMZXZlbFN0YXRlbWVudChub2RlKTtcbiAgICAgIGNhc2UgJ1N0cmluZ0xpdGVyYWwnOlxuICAgICAgY2FzZSAnQm9vbGVhbkxpdGVyYWwnOlxuICAgICAgY2FzZSAnTnVtYmVyTGl0ZXJhbCc6XG4gICAgICBjYXNlICdVbmRlZmluZWRMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ051bGxMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ1BhdGhFeHByZXNzaW9uJzpcbiAgICAgIGNhc2UgJ1N1YkV4cHJlc3Npb24nOlxuICAgICAgICByZXR1cm4gdGhpcy5FeHByZXNzaW9uKG5vZGUpO1xuICAgICAgY2FzZSAnUHJvZ3JhbSc6XG4gICAgICAgIHJldHVybiB0aGlzLkJsb2NrKG5vZGUpO1xuICAgICAgY2FzZSAnQ29uY2F0U3RhdGVtZW50JzpcbiAgICAgICAgLy8gc2hvdWxkIGhhdmUgYW4gQXR0ck5vZGUgcGFyZW50XG4gICAgICAgIHJldHVybiB0aGlzLkNvbmNhdFN0YXRlbWVudChub2RlKTtcbiAgICAgIGNhc2UgJ0hhc2gnOlxuICAgICAgICByZXR1cm4gdGhpcy5IYXNoKG5vZGUpO1xuICAgICAgY2FzZSAnSGFzaFBhaXInOlxuICAgICAgICByZXR1cm4gdGhpcy5IYXNoUGFpcihub2RlKTtcbiAgICAgIGNhc2UgJ0VsZW1lbnRNb2RpZmllclN0YXRlbWVudCc6XG4gICAgICAgIHJldHVybiB0aGlzLkVsZW1lbnRNb2RpZmllclN0YXRlbWVudChub2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5yZWFjaGFibGUobm9kZSwgJ05vZGUnKTtcbiAgfVxuXG4gIEV4cHJlc3Npb24oZXhwcmVzc2lvbjogRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHN3aXRjaCAoZXhwcmVzc2lvbi50eXBlKSB7XG4gICAgICBjYXNlICdTdHJpbmdMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ0Jvb2xlYW5MaXRlcmFsJzpcbiAgICAgIGNhc2UgJ051bWJlckxpdGVyYWwnOlxuICAgICAgY2FzZSAnVW5kZWZpbmVkTGl0ZXJhbCc6XG4gICAgICBjYXNlICdOdWxsTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLkxpdGVyYWwoZXhwcmVzc2lvbik7XG4gICAgICBjYXNlICdQYXRoRXhwcmVzc2lvbic6XG4gICAgICAgIHJldHVybiB0aGlzLlBhdGhFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xuICAgICAgY2FzZSAnU3ViRXhwcmVzc2lvbic6XG4gICAgICAgIHJldHVybiB0aGlzLlN1YkV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG4gICAgfVxuICAgIHJldHVybiB1bnJlYWNoYWJsZShleHByZXNzaW9uLCAnRXhwcmVzc2lvbicpO1xuICB9XG5cbiAgTGl0ZXJhbChsaXRlcmFsOiBMaXRlcmFsKSB7XG4gICAgc3dpdGNoIChsaXRlcmFsLnR5cGUpIHtcbiAgICAgIGNhc2UgJ1N0cmluZ0xpdGVyYWwnOlxuICAgICAgICByZXR1cm4gdGhpcy5TdHJpbmdMaXRlcmFsKGxpdGVyYWwpO1xuICAgICAgY2FzZSAnQm9vbGVhbkxpdGVyYWwnOlxuICAgICAgICByZXR1cm4gdGhpcy5Cb29sZWFuTGl0ZXJhbChsaXRlcmFsKTtcbiAgICAgIGNhc2UgJ051bWJlckxpdGVyYWwnOlxuICAgICAgICByZXR1cm4gdGhpcy5OdW1iZXJMaXRlcmFsKGxpdGVyYWwpO1xuICAgICAgY2FzZSAnVW5kZWZpbmVkTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLlVuZGVmaW5lZExpdGVyYWwobGl0ZXJhbCk7XG4gICAgICBjYXNlICdOdWxsTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLk51bGxMaXRlcmFsKGxpdGVyYWwpO1xuICAgIH1cbiAgICByZXR1cm4gdW5yZWFjaGFibGUobGl0ZXJhbCwgJ0xpdGVyYWwnKTtcbiAgfVxuXG4gIFRvcExldmVsU3RhdGVtZW50KHN0YXRlbWVudDogVG9wTGV2ZWxTdGF0ZW1lbnQpIHtcbiAgICBzd2l0Y2ggKHN0YXRlbWVudC50eXBlKSB7XG4gICAgICBjYXNlICdNdXN0YWNoZVN0YXRlbWVudCc6XG4gICAgICAgIHJldHVybiB0aGlzLk11c3RhY2hlU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdCbG9ja1N0YXRlbWVudCc6XG4gICAgICAgIHJldHVybiB0aGlzLkJsb2NrU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdQYXJ0aWFsU3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuUGFydGlhbFN0YXRlbWVudChzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnTXVzdGFjaGVDb21tZW50U3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuTXVzdGFjaGVDb21tZW50U3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdDb21tZW50U3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuQ29tbWVudFN0YXRlbWVudChzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnVGV4dE5vZGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5UZXh0Tm9kZShzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnRWxlbWVudE5vZGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5FbGVtZW50Tm9kZShzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgY2FzZSAnVGVtcGxhdGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5CbG9jayhzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnQXR0ck5vZGUnOlxuICAgICAgICAvLyBzaG91bGQgaGF2ZSBlbGVtZW50XG4gICAgICAgIHJldHVybiB0aGlzLkF0dHJOb2RlKHN0YXRlbWVudCk7XG4gICAgfVxuICAgIHVucmVhY2hhYmxlKHN0YXRlbWVudCwgJ1RvcExldmVsU3RhdGVtZW50Jyk7XG4gIH1cblxuICBCbG9jayhibG9jazogQmxvY2sgfCBQcm9ncmFtIHwgVGVtcGxhdGUpOiB2b2lkIHtcbiAgICAvKlxuICAgICAgV2hlbiBwcm9jZXNzaW5nIGEgdGVtcGxhdGUgbGlrZTpcblxuICAgICAgYGBgaGJzXG4gICAgICB7eyNpZiB3aGF0ZXZlcn19XG4gICAgICAgIHdoYXRldmVyXG4gICAgICB7e2Vsc2UgaWYgc29tZXRoaW5nRWxzZX19XG4gICAgICAgIHNvbWV0aGluZyBlbHNlXG4gICAgICB7e2Vsc2V9fVxuICAgICAgICBmYWxsYmFja1xuICAgICAge3svaWZ9fVxuICAgICAgYGBgXG5cbiAgICAgIFRoZSBBU1Qgc3RpbGwgX2VmZmVjdGl2ZWx5XyBsb29rcyBsaWtlOlxuXG4gICAgICBgYGBoYnNcbiAgICAgIHt7I2lmIHdoYXRldmVyfX1cbiAgICAgICAgd2hhdGV2ZXJcbiAgICAgIHt7ZWxzZX19e3sjaWYgc29tZXRoaW5nRWxzZX19XG4gICAgICAgIHNvbWV0aGluZyBlbHNlXG4gICAgICB7e2Vsc2V9fVxuICAgICAgICBmYWxsYmFja1xuICAgICAge3svaWZ9fXt7L2lmfX1cbiAgICAgIGBgYFxuXG4gICAgICBUaGUgb25seSB3YXkgd2UgY2FuIHRlbGwgaWYgdGhhdCBpcyB0aGUgY2FzZSBpcyBieSBjaGVja2luZyBmb3JcbiAgICAgIGBibG9jay5jaGFpbmVkYCwgYnV0IHVuZm9ydHVuYXRlbHkgd2hlbiB0aGUgYWN0dWFsIHN0YXRlbWVudHMgYXJlXG4gICAgICBwcm9jZXNzZWQgdGhlIGBibG9jay5ib2R5WzBdYCBub2RlICh3aGljaCB3aWxsIGFsd2F5cyBiZSBhXG4gICAgICBgQmxvY2tTdGF0ZW1lbnRgKSBoYXMgbm8gY2x1ZSB0aGF0IGl0cyBhbnNjZXN0b3IgYEJsb2NrYCBub2RlIHdhc1xuICAgICAgY2hhaW5lZC5cblxuICAgICAgVGhpcyBcImZvcndhcmRzXCIgdGhlIGBjaGFpbmVkYCBzZXR0aW5nIHNvIHRoYXQgd2UgY2FuIGNoZWNrXG4gICAgICBpdCBsYXRlciB3aGVuIHByb2Nlc3NpbmcgdGhlIGBCbG9ja1N0YXRlbWVudGAuXG4gICAgKi9cbiAgICBpZiAoYmxvY2suY2hhaW5lZCkge1xuICAgICAgbGV0IGZpcnN0Q2hpbGQgPSBibG9jay5ib2R5WzBdIGFzIEJsb2NrU3RhdGVtZW50O1xuICAgICAgZmlyc3RDaGlsZC5jaGFpbmVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShibG9jaykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLlRvcExldmVsU3RhdGVtZW50cyhibG9jay5ib2R5KTtcbiAgfVxuXG4gIFRvcExldmVsU3RhdGVtZW50cyhzdGF0ZW1lbnRzOiBUb3BMZXZlbFN0YXRlbWVudFtdKSB7XG4gICAgc3RhdGVtZW50cy5mb3JFYWNoKChzdGF0ZW1lbnQpID0+IHRoaXMuVG9wTGV2ZWxTdGF0ZW1lbnQoc3RhdGVtZW50KSk7XG4gIH1cblxuICBFbGVtZW50Tm9kZShlbDogRWxlbWVudE5vZGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShlbCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLk9wZW5FbGVtZW50Tm9kZShlbCk7XG4gICAgdGhpcy5Ub3BMZXZlbFN0YXRlbWVudHMoZWwuY2hpbGRyZW4pO1xuICAgIHRoaXMuQ2xvc2VFbGVtZW50Tm9kZShlbCk7XG4gIH1cblxuICBPcGVuRWxlbWVudE5vZGUoZWw6IEVsZW1lbnROb2RlKTogdm9pZCB7XG4gICAgdGhpcy5idWZmZXIgKz0gYDwke2VsLnRhZ31gO1xuICAgIGNvbnN0IHBhcnRzID0gWy4uLmVsLmF0dHJpYnV0ZXMsIC4uLmVsLm1vZGlmaWVycywgLi4uZWwuY29tbWVudHNdLnNvcnQoc29ydEJ5TG9jKTtcblxuICAgIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJyAnO1xuICAgICAgc3dpdGNoIChwYXJ0LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnQXR0ck5vZGUnOlxuICAgICAgICAgIHRoaXMuQXR0ck5vZGUocGFydCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VsZW1lbnRNb2RpZmllclN0YXRlbWVudCc6XG4gICAgICAgICAgdGhpcy5FbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQocGFydCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ011c3RhY2hlQ29tbWVudFN0YXRlbWVudCc6XG4gICAgICAgICAgdGhpcy5NdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQocGFydCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlbC5ibG9ja1BhcmFtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuQmxvY2tQYXJhbXMoZWwuYmxvY2tQYXJhbXMpO1xuICAgIH1cbiAgICBpZiAoZWwuc2VsZkNsb3NpbmcpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICcgLyc7XG4gICAgfVxuICAgIHRoaXMuYnVmZmVyICs9ICc+JztcbiAgfVxuXG4gIENsb3NlRWxlbWVudE5vZGUoZWw6IEVsZW1lbnROb2RlKTogdm9pZCB7XG4gICAgaWYgKGVsLnNlbGZDbG9zaW5nIHx8IHZvaWRNYXBbZWwudGFnLnRvTG93ZXJDYXNlKCldKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYnVmZmVyICs9IGA8LyR7ZWwudGFnfT5gO1xuICB9XG5cbiAgQXR0ck5vZGUoYXR0cjogQXR0ck5vZGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShhdHRyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCB7IG5hbWUsIHZhbHVlIH0gPSBhdHRyO1xuXG4gICAgdGhpcy5idWZmZXIgKz0gbmFtZTtcbiAgICBpZiAodmFsdWUudHlwZSAhPT0gJ1RleHROb2RlJyB8fCB2YWx1ZS5jaGFycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnPSc7XG4gICAgICB0aGlzLkF0dHJOb2RlVmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEF0dHJOb2RlVmFsdWUodmFsdWU6IEF0dHJOb2RlWyd2YWx1ZSddKSB7XG4gICAgaWYgKHZhbHVlLnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICdcIic7XG4gICAgICB0aGlzLlRleHROb2RlKHZhbHVlLCB0cnVlKTtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICdcIic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuTm9kZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgVGV4dE5vZGUodGV4dDogVGV4dE5vZGUsIGlzQXR0cj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZSh0ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZW50aXR5RW5jb2RpbmcgPT09ICdyYXcnKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSB0ZXh0LmNoYXJzO1xuICAgIH0gZWxzZSBpZiAoaXNBdHRyKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBlc2NhcGVBdHRyVmFsdWUodGV4dC5jaGFycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGVzY2FwZVRleHQodGV4dC5jaGFycyk7XG4gICAgfVxuICB9XG5cbiAgTXVzdGFjaGVTdGF0ZW1lbnQobXVzdGFjaGU6IE11c3RhY2hlU3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUobXVzdGFjaGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gbXVzdGFjaGUuZXNjYXBlZCA/ICd7eycgOiAne3t7JztcblxuICAgIGlmIChtdXN0YWNoZS5zdHJpcC5vcGVuKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnfic7XG4gICAgfVxuXG4gICAgdGhpcy5FeHByZXNzaW9uKG11c3RhY2hlLnBhdGgpO1xuICAgIHRoaXMuUGFyYW1zKG11c3RhY2hlLnBhcmFtcyk7XG4gICAgdGhpcy5IYXNoKG11c3RhY2hlLmhhc2gpO1xuXG4gICAgaWYgKG11c3RhY2hlLnN0cmlwLmNsb3NlKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnfic7XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gbXVzdGFjaGUuZXNjYXBlZCA/ICd9fScgOiAnfX19JztcbiAgfVxuXG4gIEJsb2NrU3RhdGVtZW50KGJsb2NrOiBCbG9ja1N0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGJsb2NrKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChibG9jay5jaGFpbmVkKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5pbnZlcnNlU3RyaXAub3BlbiA/ICd7e34nIDogJ3t7JztcbiAgICAgIHRoaXMuYnVmZmVyICs9ICdlbHNlICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLm9wZW5TdHJpcC5vcGVuID8gJ3t7fiMnIDogJ3t7Iyc7XG4gICAgfVxuXG4gICAgdGhpcy5FeHByZXNzaW9uKGJsb2NrLnBhdGgpO1xuICAgIHRoaXMuUGFyYW1zKGJsb2NrLnBhcmFtcyk7XG4gICAgdGhpcy5IYXNoKGJsb2NrLmhhc2gpO1xuICAgIGlmIChibG9jay5wcm9ncmFtLmJsb2NrUGFyYW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5CbG9ja1BhcmFtcyhibG9jay5wcm9ncmFtLmJsb2NrUGFyYW1zKTtcbiAgICB9XG5cbiAgICBpZiAoYmxvY2suY2hhaW5lZCkge1xuICAgICAgdGhpcy5idWZmZXIgKz0gYmxvY2suaW52ZXJzZVN0cmlwLmNsb3NlID8gJ359fScgOiAnfX0nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5vcGVuU3RyaXAuY2xvc2UgPyAnfn19JyA6ICd9fSc7XG4gICAgfVxuXG4gICAgdGhpcy5CbG9jayhibG9jay5wcm9ncmFtKTtcblxuICAgIGlmIChibG9jay5pbnZlcnNlKSB7XG4gICAgICBpZiAoIWJsb2NrLmludmVyc2UuY2hhaW5lZCkge1xuICAgICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5pbnZlcnNlU3RyaXAub3BlbiA/ICd7e34nIDogJ3t7JztcbiAgICAgICAgdGhpcy5idWZmZXIgKz0gJ2Vsc2UnO1xuICAgICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5pbnZlcnNlU3RyaXAuY2xvc2UgPyAnfn19JyA6ICd9fSc7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuQmxvY2soYmxvY2suaW52ZXJzZSk7XG4gICAgfVxuXG4gICAgaWYgKCFibG9jay5jaGFpbmVkKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5jbG9zZVN0cmlwLm9wZW4gPyAne3t+LycgOiAne3svJztcbiAgICAgIHRoaXMuRXhwcmVzc2lvbihibG9jay5wYXRoKTtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmNsb3NlU3RyaXAuY2xvc2UgPyAnfn19JyA6ICd9fSc7XG4gICAgfVxuICB9XG5cbiAgQmxvY2tQYXJhbXMoYmxvY2tQYXJhbXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5idWZmZXIgKz0gYCBhcyB8JHtibG9ja1BhcmFtcy5qb2luKCcgJyl9fGA7XG4gIH1cblxuICBQYXJ0aWFsU3RhdGVtZW50KHBhcnRpYWw6IFBhcnRpYWxTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShwYXJ0aWFsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICd7ez4nO1xuICAgIHRoaXMuRXhwcmVzc2lvbihwYXJ0aWFsLm5hbWUpO1xuICAgIHRoaXMuUGFyYW1zKHBhcnRpYWwucGFyYW1zKTtcbiAgICB0aGlzLkhhc2gocGFydGlhbC5oYXNoKTtcbiAgICB0aGlzLmJ1ZmZlciArPSAnfX0nO1xuICB9XG5cbiAgQ29uY2F0U3RhdGVtZW50KGNvbmNhdDogQ29uY2F0U3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoY29uY2F0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICdcIic7XG4gICAgY29uY2F0LnBhcnRzLmZvckVhY2goKHBhcnQpID0+IHtcbiAgICAgIGlmIChwYXJ0LnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgICAgdGhpcy5UZXh0Tm9kZShwYXJ0LCB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuTm9kZShwYXJ0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmJ1ZmZlciArPSAnXCInO1xuICB9XG5cbiAgTXVzdGFjaGVDb21tZW50U3RhdGVtZW50KGNvbW1lbnQ6IE11c3RhY2hlQ29tbWVudFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGNvbW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gYHt7IS0tJHtjb21tZW50LnZhbHVlfS0tfX1gO1xuICB9XG5cbiAgRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50KG1vZDogRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUobW9kKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICd7eyc7XG4gICAgdGhpcy5FeHByZXNzaW9uKG1vZC5wYXRoKTtcbiAgICB0aGlzLlBhcmFtcyhtb2QucGFyYW1zKTtcbiAgICB0aGlzLkhhc2gobW9kLmhhc2gpO1xuICAgIHRoaXMuYnVmZmVyICs9ICd9fSc7XG4gIH1cblxuICBDb21tZW50U3RhdGVtZW50KGNvbW1lbnQ6IENvbW1lbnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShjb21tZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IGA8IS0tJHtjb21tZW50LnZhbHVlfS0tPmA7XG4gIH1cblxuICBQYXRoRXhwcmVzc2lvbihwYXRoOiBQYXRoRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHBhdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gcGF0aC5vcmlnaW5hbDtcbiAgfVxuXG4gIFN1YkV4cHJlc3Npb24oc2V4cDogU3ViRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHNleHApKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJygnO1xuICAgIHRoaXMuRXhwcmVzc2lvbihzZXhwLnBhdGgpO1xuICAgIHRoaXMuUGFyYW1zKHNleHAucGFyYW1zKTtcbiAgICB0aGlzLkhhc2goc2V4cC5oYXNoKTtcbiAgICB0aGlzLmJ1ZmZlciArPSAnKSc7XG4gIH1cblxuICBQYXJhbXMocGFyYW1zOiBFeHByZXNzaW9uW10pIHtcbiAgICAvLyBUT0RPOiBpbXBsZW1lbnQgYSB0b3AgbGV2ZWwgUGFyYW1zIEFTVCBub2RlIChqdXN0IGxpa2UgdGhlIEhhc2ggb2JqZWN0KVxuICAgIC8vIHNvIHRoYXQgdGhpcyBjYW4gYWxzbyBiZSBvdmVycmlkZGVuXG4gICAgaWYgKHBhcmFtcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtcy5mb3JFYWNoKChwYXJhbSkgPT4ge1xuICAgICAgICB0aGlzLmJ1ZmZlciArPSAnICc7XG4gICAgICAgIHRoaXMuRXhwcmVzc2lvbihwYXJhbSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBIYXNoKGhhc2g6IEhhc2gpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShoYXNoLCB0cnVlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGhhc2gucGFpcnMuZm9yRWFjaCgocGFpcikgPT4ge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJyAnO1xuICAgICAgdGhpcy5IYXNoUGFpcihwYWlyKTtcbiAgICB9KTtcbiAgfVxuXG4gIEhhc2hQYWlyKHBhaXI6IEhhc2hQYWlyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUocGFpcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBwYWlyLmtleTtcbiAgICB0aGlzLmJ1ZmZlciArPSAnPSc7XG4gICAgdGhpcy5Ob2RlKHBhaXIudmFsdWUpO1xuICB9XG5cbiAgU3RyaW5nTGl0ZXJhbChzdHI6IFN0cmluZ0xpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShzdHIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gSlNPTi5zdHJpbmdpZnkoc3RyLnZhbHVlKTtcbiAgfVxuXG4gIEJvb2xlYW5MaXRlcmFsKGJvb2w6IEJvb2xlYW5MaXRlcmFsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoYm9vbCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBib29sLnZhbHVlO1xuICB9XG5cbiAgTnVtYmVyTGl0ZXJhbChudW1iZXI6IE51bWJlckxpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShudW1iZXIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gbnVtYmVyLnZhbHVlO1xuICB9XG5cbiAgVW5kZWZpbmVkTGl0ZXJhbChub2RlOiBVbmRlZmluZWRMaXRlcmFsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUobm9kZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIE51bGxMaXRlcmFsKG5vZGU6IE51bGxMaXRlcmFsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUobm9kZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSAnbnVsbCc7XG4gIH1cblxuICBwcmludChub2RlOiBOb2RlKSB7XG4gICAgbGV0IHsgb3B0aW9ucyB9ID0gdGhpcztcblxuICAgIGlmIChvcHRpb25zLm92ZXJyaWRlKSB7XG4gICAgICBsZXQgcmVzdWx0ID0gb3B0aW9ucy5vdmVycmlkZShub2RlLCBvcHRpb25zKTtcblxuICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgPSAnJztcbiAgICB0aGlzLk5vZGUobm9kZSk7XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVucmVhY2hhYmxlKG5vZGU6IG5ldmVyLCBwYXJlbnROb2RlVHlwZTogc3RyaW5nKTogbmV2ZXIge1xuICBsZXQgeyBsb2MsIHR5cGUgfSA9IChub2RlIGFzIGFueSkgYXMgTm9kZTtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBOb24tZXhoYXVzdGl2ZSBub2RlIG5hcnJvd2luZyAke3R5cGV9IEAgbG9jYXRpb246ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICBsb2NcbiAgICApfSBmb3IgcGFyZW50ICR7cGFyZW50Tm9kZVR5cGV9YFxuICApO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

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

exports.escapeText = escapeText;
exports.isSynthetic = isSynthetic;
exports.sortByLoc = sortByLoc;
var ATTR_VALUE_REGEX_TEST = /[\xA0"&]/;

@@ -78,2 +80,31 @@ var ATTR_VALUE_REGEX_REPLACE = new RegExp(ATTR_VALUE_REGEX_TEST.source, 'g');

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFRQSxJQUFNLHFCQUFxQixHQUEzQixVQUFBO0FBQ0EsSUFBTSx3QkFBd0IsR0FBRyxJQUFBLE1BQUEsQ0FBVyxxQkFBcUIsQ0FBaEMsTUFBQSxFQUFqQyxHQUFpQyxDQUFqQztBQUVBLElBQU0sZUFBZSxHQUFyQixXQUFBO0FBQ0EsSUFBTSxrQkFBa0IsR0FBRyxJQUFBLE1BQUEsQ0FBVyxlQUFlLENBQTFCLE1BQUEsRUFBM0IsR0FBMkIsQ0FBM0I7O0FBRUEsU0FBQSxpQkFBQSxDQUFBLEtBQUEsRUFBdUM7QUFDckMsVUFBUSxLQUFJLENBQUosVUFBQSxDQUFSLENBQVEsQ0FBUjtBQUNFLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxRQUFBOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxRQUFBOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxPQUFBOztBQUNGO0FBQ0UsYUFBQSxLQUFBO0FBUko7QUFVRDs7QUFFRCxTQUFBLFlBQUEsQ0FBQSxNQUFBLEVBQWtDO0FBQ2hDLFVBQVEsTUFBSSxDQUFKLFVBQUEsQ0FBUixDQUFRLENBQVI7QUFDRSxTQUFBO0FBQUE7QUFBQTtBQUNFLGFBQUEsUUFBQTs7QUFDRixTQUFBO0FBQUE7QUFBQTtBQUNFLGFBQUEsT0FBQTs7QUFDRixTQUFBO0FBQUE7QUFBQTtBQUNFLGFBQUEsTUFBQTs7QUFDRixTQUFBO0FBQUE7QUFBQTtBQUNFLGFBQUEsTUFBQTs7QUFDRjtBQUNFLGFBQUEsTUFBQTtBQVZKO0FBWUQ7O0FBRUssU0FBQSxlQUFBLENBQUEsU0FBQSxFQUEyQztBQUMvQyxNQUFJLHFCQUFxQixDQUFyQixJQUFBLENBQUosU0FBSSxDQUFKLEVBQTJDO0FBQ3pDLFdBQU8sU0FBUyxDQUFULE9BQUEsQ0FBQSx3QkFBQSxFQUFQLGlCQUFPLENBQVA7QUFDRDs7QUFDRCxTQUFBLFNBQUE7QUFDRDs7QUFFSyxTQUFBLFVBQUEsQ0FBQSxJQUFBLEVBQWlDO0FBQ3JDLE1BQUksZUFBZSxDQUFmLElBQUEsQ0FBSixJQUFJLENBQUosRUFBZ0M7QUFDOUIsV0FBTyxJQUFJLENBQUosT0FBQSxDQUFBLGtCQUFBLEVBQVAsWUFBTyxDQUFQO0FBQ0Q7O0FBQ0QsU0FBQSxJQUFBO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlbnVtIENoYXIge1xuICBOQlNQID0gMHhhMCxcbiAgUVVPVCA9IDB4MjIsXG4gIExUID0gMHgzYyxcbiAgR1QgPSAweDNlLFxuICBBTVAgPSAweDI2LFxufVxuXG5jb25zdCBBVFRSX1ZBTFVFX1JFR0VYX1RFU1QgPSAvW1xceEEwXCImXS87XG5jb25zdCBBVFRSX1ZBTFVFX1JFR0VYX1JFUExBQ0UgPSBuZXcgUmVnRXhwKEFUVFJfVkFMVUVfUkVHRVhfVEVTVC5zb3VyY2UsICdnJyk7XG5cbmNvbnN0IFRFWFRfUkVHRVhfVEVTVCA9IC9bXFx4QTAmPD5dLztcbmNvbnN0IFRFWFRfUkVHRVhfUkVQTEFDRSA9IG5ldyBSZWdFeHAoVEVYVF9SRUdFWF9URVNULnNvdXJjZSwgJ2cnKTtcblxuZnVuY3Rpb24gYXR0clZhbHVlUmVwbGFjZXIoY2hhcjogc3RyaW5nKSB7XG4gIHN3aXRjaCAoY2hhci5jaGFyQ29kZUF0KDApKSB7XG4gICAgY2FzZSBDaGFyLk5CU1A6XG4gICAgICByZXR1cm4gJyZuYnNwOyc7XG4gICAgY2FzZSBDaGFyLlFVT1Q6XG4gICAgICByZXR1cm4gJyZxdW90Oyc7XG4gICAgY2FzZSBDaGFyLkFNUDpcbiAgICAgIHJldHVybiAnJmFtcDsnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY2hhcjtcbiAgfVxufVxuXG5mdW5jdGlvbiB0ZXh0UmVwbGFjZXIoY2hhcjogc3RyaW5nKSB7XG4gIHN3aXRjaCAoY2hhci5jaGFyQ29kZUF0KDApKSB7XG4gICAgY2FzZSBDaGFyLk5CU1A6XG4gICAgICByZXR1cm4gJyZuYnNwOyc7XG4gICAgY2FzZSBDaGFyLkFNUDpcbiAgICAgIHJldHVybiAnJmFtcDsnO1xuICAgIGNhc2UgQ2hhci5MVDpcbiAgICAgIHJldHVybiAnJmx0Oyc7XG4gICAgY2FzZSBDaGFyLkdUOlxuICAgICAgcmV0dXJuICcmZ3Q7JztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGNoYXI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUF0dHJWYWx1ZShhdHRyVmFsdWU6IHN0cmluZykge1xuICBpZiAoQVRUUl9WQUxVRV9SRUdFWF9URVNULnRlc3QoYXR0clZhbHVlKSkge1xuICAgIHJldHVybiBhdHRyVmFsdWUucmVwbGFjZShBVFRSX1ZBTFVFX1JFR0VYX1JFUExBQ0UsIGF0dHJWYWx1ZVJlcGxhY2VyKTtcbiAgfVxuICByZXR1cm4gYXR0clZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlVGV4dCh0ZXh0OiBzdHJpbmcpIHtcbiAgaWYgKFRFWFRfUkVHRVhfVEVTVC50ZXN0KHRleHQpKSB7XG4gICAgcmV0dXJuIHRleHQucmVwbGFjZShURVhUX1JFR0VYX1JFUExBQ0UsIHRleHRSZXBsYWNlcik7XG4gIH1cbiAgcmV0dXJuIHRleHQ7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
function isSynthetic(node) {
if (node && node.loc) {
return node.loc.source === '(synthetic)';
}
return false;
}
function sortByLoc(a, b) {
// be conservative about the location where a new node is inserted
if (isSynthetic(a) || isSynthetic(b)) {
return 0;
}
if (a.loc.start.line < b.loc.start.line) {
return -1;
}
if (a.loc.start.line === b.loc.start.line && a.loc.start.column < b.loc.start.column) {
return -1;
}
if (a.loc.start.line === b.loc.start.line && a.loc.start.column === b.loc.start.column) {
return 0;
}
return 1;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVVBLElBQU0scUJBQXFCLEdBQTNCLFVBQUE7QUFDQSxJQUFNLHdCQUF3QixHQUFHLElBQUEsTUFBQSxDQUFXLHFCQUFxQixDQUFoQyxNQUFBLEVBQWpDLEdBQWlDLENBQWpDO0FBRUEsSUFBTSxlQUFlLEdBQXJCLFdBQUE7QUFDQSxJQUFNLGtCQUFrQixHQUFHLElBQUEsTUFBQSxDQUFXLGVBQWUsQ0FBMUIsTUFBQSxFQUEzQixHQUEyQixDQUEzQjs7QUFFQSxTQUFBLGlCQUFBLENBQUEsS0FBQSxFQUF1QztBQUNyQyxVQUFRLEtBQUksQ0FBSixVQUFBLENBQVIsQ0FBUSxDQUFSO0FBQ0UsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLFFBQUE7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLFFBQUE7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLE9BQUE7O0FBQ0Y7QUFDRSxhQUFBLEtBQUE7QUFSSjtBQVVEOztBQUVELFNBQUEsWUFBQSxDQUFBLE1BQUEsRUFBa0M7QUFDaEMsVUFBUSxNQUFJLENBQUosVUFBQSxDQUFSLENBQVEsQ0FBUjtBQUNFLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxRQUFBOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxPQUFBOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxNQUFBOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxNQUFBOztBQUNGO0FBQ0UsYUFBQSxNQUFBO0FBVko7QUFZRDs7QUFFSyxTQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQTJDO0FBQy9DLE1BQUkscUJBQXFCLENBQXJCLElBQUEsQ0FBSixTQUFJLENBQUosRUFBMkM7QUFDekMsV0FBTyxTQUFTLENBQVQsT0FBQSxDQUFBLHdCQUFBLEVBQVAsaUJBQU8sQ0FBUDtBQUNEOztBQUNELFNBQUEsU0FBQTtBQUNEOztBQUVLLFNBQUEsVUFBQSxDQUFBLElBQUEsRUFBaUM7QUFDckMsTUFBSSxlQUFlLENBQWYsSUFBQSxDQUFKLElBQUksQ0FBSixFQUFnQztBQUM5QixXQUFPLElBQUksQ0FBSixPQUFBLENBQUEsa0JBQUEsRUFBUCxZQUFPLENBQVA7QUFDRDs7QUFDRCxTQUFBLElBQUE7QUFDRDs7QUFFSyxTQUFBLFdBQUEsQ0FBQSxJQUFBLEVBQW9DO0FBQ3hDLE1BQUksSUFBSSxJQUFJLElBQUksQ0FBaEIsR0FBQSxFQUFzQjtBQUNwQixXQUFPLElBQUksQ0FBSixHQUFBLENBQUEsTUFBQSxLQUFQLGFBQUE7QUFDRDs7QUFFRCxTQUFBLEtBQUE7QUFDRDs7QUFFSyxTQUFBLFNBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxFQUE0QztBQUNoRDtBQUNBLE1BQUksV0FBVyxDQUFYLENBQVcsQ0FBWCxJQUFrQixXQUFXLENBQWpDLENBQWlDLENBQWpDLEVBQXNDO0FBQ3BDLFdBQUEsQ0FBQTtBQUNEOztBQUVELE1BQUksQ0FBQyxDQUFELEdBQUEsQ0FBQSxLQUFBLENBQUEsSUFBQSxHQUFtQixDQUFDLENBQUQsR0FBQSxDQUFBLEtBQUEsQ0FBdkIsSUFBQSxFQUF5QztBQUN2QyxXQUFPLENBQVAsQ0FBQTtBQUNEOztBQUVELE1BQUksQ0FBQyxDQUFELEdBQUEsQ0FBQSxLQUFBLENBQUEsSUFBQSxLQUFxQixDQUFDLENBQUQsR0FBQSxDQUFBLEtBQUEsQ0FBckIsSUFBQSxJQUF5QyxDQUFDLENBQUQsR0FBQSxDQUFBLEtBQUEsQ0FBQSxNQUFBLEdBQXFCLENBQUMsQ0FBRCxHQUFBLENBQUEsS0FBQSxDQUFsRSxNQUFBLEVBQXNGO0FBQ3BGLFdBQU8sQ0FBUCxDQUFBO0FBQ0Q7O0FBRUQsTUFBSSxDQUFDLENBQUQsR0FBQSxDQUFBLEtBQUEsQ0FBQSxJQUFBLEtBQXFCLENBQUMsQ0FBRCxHQUFBLENBQUEsS0FBQSxDQUFyQixJQUFBLElBQXlDLENBQUMsQ0FBRCxHQUFBLENBQUEsS0FBQSxDQUFBLE1BQUEsS0FBdUIsQ0FBQyxDQUFELEdBQUEsQ0FBQSxLQUFBLENBQXBFLE1BQUEsRUFBd0Y7QUFDdEYsV0FBQSxDQUFBO0FBQ0Q7O0FBRUQsU0FBQSxDQUFBO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBBU1QgZnJvbSAnLi4vdHlwZXMvbm9kZXMnO1xuXG5jb25zdCBlbnVtIENoYXIge1xuICBOQlNQID0gMHhhMCxcbiAgUVVPVCA9IDB4MjIsXG4gIExUID0gMHgzYyxcbiAgR1QgPSAweDNlLFxuICBBTVAgPSAweDI2LFxufVxuXG5jb25zdCBBVFRSX1ZBTFVFX1JFR0VYX1RFU1QgPSAvW1xceEEwXCImXS87XG5jb25zdCBBVFRSX1ZBTFVFX1JFR0VYX1JFUExBQ0UgPSBuZXcgUmVnRXhwKEFUVFJfVkFMVUVfUkVHRVhfVEVTVC5zb3VyY2UsICdnJyk7XG5cbmNvbnN0IFRFWFRfUkVHRVhfVEVTVCA9IC9bXFx4QTAmPD5dLztcbmNvbnN0IFRFWFRfUkVHRVhfUkVQTEFDRSA9IG5ldyBSZWdFeHAoVEVYVF9SRUdFWF9URVNULnNvdXJjZSwgJ2cnKTtcblxuZnVuY3Rpb24gYXR0clZhbHVlUmVwbGFjZXIoY2hhcjogc3RyaW5nKSB7XG4gIHN3aXRjaCAoY2hhci5jaGFyQ29kZUF0KDApKSB7XG4gICAgY2FzZSBDaGFyLk5CU1A6XG4gICAgICByZXR1cm4gJyZuYnNwOyc7XG4gICAgY2FzZSBDaGFyLlFVT1Q6XG4gICAgICByZXR1cm4gJyZxdW90Oyc7XG4gICAgY2FzZSBDaGFyLkFNUDpcbiAgICAgIHJldHVybiAnJmFtcDsnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY2hhcjtcbiAgfVxufVxuXG5mdW5jdGlvbiB0ZXh0UmVwbGFjZXIoY2hhcjogc3RyaW5nKSB7XG4gIHN3aXRjaCAoY2hhci5jaGFyQ29kZUF0KDApKSB7XG4gICAgY2FzZSBDaGFyLk5CU1A6XG4gICAgICByZXR1cm4gJyZuYnNwOyc7XG4gICAgY2FzZSBDaGFyLkFNUDpcbiAgICAgIHJldHVybiAnJmFtcDsnO1xuICAgIGNhc2UgQ2hhci5MVDpcbiAgICAgIHJldHVybiAnJmx0Oyc7XG4gICAgY2FzZSBDaGFyLkdUOlxuICAgICAgcmV0dXJuICcmZ3Q7JztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGNoYXI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUF0dHJWYWx1ZShhdHRyVmFsdWU6IHN0cmluZykge1xuICBpZiAoQVRUUl9WQUxVRV9SRUdFWF9URVNULnRlc3QoYXR0clZhbHVlKSkge1xuICAgIHJldHVybiBhdHRyVmFsdWUucmVwbGFjZShBVFRSX1ZBTFVFX1JFR0VYX1JFUExBQ0UsIGF0dHJWYWx1ZVJlcGxhY2VyKTtcbiAgfVxuICByZXR1cm4gYXR0clZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlVGV4dCh0ZXh0OiBzdHJpbmcpIHtcbiAgaWYgKFRFWFRfUkVHRVhfVEVTVC50ZXN0KHRleHQpKSB7XG4gICAgcmV0dXJuIHRleHQucmVwbGFjZShURVhUX1JFR0VYX1JFUExBQ0UsIHRleHRSZXBsYWNlcik7XG4gIH1cbiAgcmV0dXJuIHRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N5bnRoZXRpYyhub2RlOiBBU1QuTm9kZSk6IGJvb2xlYW4ge1xuICBpZiAobm9kZSAmJiBub2RlLmxvYykge1xuICAgIHJldHVybiBub2RlLmxvYy5zb3VyY2UgPT09ICcoc3ludGhldGljKSc7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3J0QnlMb2MoYTogQVNULk5vZGUsIGI6IEFTVC5Ob2RlKTogLTEgfCAwIHwgMSB7XG4gIC8vIGJlIGNvbnNlcnZhdGl2ZSBhYm91dCB0aGUgbG9jYXRpb24gd2hlcmUgYSBuZXcgbm9kZSBpcyBpbnNlcnRlZFxuICBpZiAoaXNTeW50aGV0aWMoYSkgfHwgaXNTeW50aGV0aWMoYikpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmIChhLmxvYy5zdGFydC5saW5lIDwgYi5sb2Muc3RhcnQubGluZSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIGlmIChhLmxvYy5zdGFydC5saW5lID09PSBiLmxvYy5zdGFydC5saW5lICYmIGEubG9jLnN0YXJ0LmNvbHVtbiA8IGIubG9jLnN0YXJ0LmNvbHVtbikge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIGlmIChhLmxvYy5zdGFydC5saW5lID09PSBiLmxvYy5zdGFydC5saW5lICYmIGEubG9jLnN0YXJ0LmNvbHVtbiA9PT0gYi5sb2Muc3RhcnQuY29sdW1uKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gMTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -240,2 +240,5 @@ "use strict";

:
case "afterAttributeName"
/* afterAttributeName */
:
this.currentStartTag.comments.push(comment);

@@ -455,2 +458,2 @@ break;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyL2hhbmRsZWJhcnMtbm9kZS12aXNpdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0EsSUFBTSxzQkFBTixHQUFBLGFBQUEsVUFBQSxPQUFBLEVBQUE7QUFBQSxFQUFBLGNBQUEsQ0FBQSxzQkFBQSxFQUFBLE9BQUEsQ0FBQTs7QUFBQSxXQUFBLHNCQUFBLEdBQUE7QUFBQSxXQUFBLE9BQUEsQ0FBQSxLQUFBLENBQUEsSUFBQSxFQUFBLFNBQUEsS0FBQSxJQUFBO0FBQUE7O0FBQUEsTUFBQSxNQUFBLEdBQUEsc0JBQUEsQ0FBQSxTQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLE9BQUEsR0FZRSxTQUFBLE9BQUEsQ0FBQSxPQUFBLEVBQTRCO0FBQzFCLFFBQUksSUFBSSxHQUFSLEVBQUE7QUFDQSxRQUFBLElBQUE7O0FBRUEsUUFBSSxLQUFKLFVBQUEsRUFBcUI7QUFDbkIsTUFBQSxJQUFJLEdBQUcsa0JBQUEsUUFBQSxDQUFBLElBQUEsRUFBaUIsT0FBTyxDQUF4QixXQUFBLEVBQXNDLE9BQU8sQ0FBcEQsR0FBTyxDQUFQO0FBREYsS0FBQSxNQUVPO0FBQ0wsTUFBQSxJQUFJLEdBQUcsa0JBQUEsV0FBQSxDQUFBLElBQUEsRUFBb0IsT0FBTyxDQUEzQixXQUFBLEVBQXlDLE9BQU8sQ0FBaEQsT0FBQSxFQUEwRCxPQUFPLENBQXhFLEdBQU8sQ0FBUDtBQUNEOztBQUVELFFBQUEsQ0FBQTtBQUFBLFFBQ0UsQ0FBQyxHQUFHLE9BQU8sQ0FBUCxJQUFBLENBRE4sTUFBQTtBQUdBLFNBQUEsWUFBQSxDQUFBLElBQUEsQ0FBQSxJQUFBOztBQUVBLFFBQUksQ0FBQyxLQUFMLENBQUEsRUFBYTtBQUNYLGFBQU8sS0FBQSxZQUFBLENBQVAsR0FBTyxFQUFQO0FBQ0Q7O0FBRUQsU0FBSyxDQUFDLEdBQU4sQ0FBQSxFQUFZLENBQUMsR0FBYixDQUFBLEVBQW1CLENBQW5CLEVBQUEsRUFBd0I7QUFDdEIsV0FBQSxVQUFBLENBQWdCLE9BQU8sQ0FBUCxJQUFBLENBQWhCLENBQWdCLENBQWhCO0FBcEJ3QixLQUFBLENBdUIxQjs7O0FBQ0EsUUFBSSxVQUFVLEdBQUcsS0FBQSxZQUFBLENBQWpCLEdBQWlCLEVBQWpCOztBQUNBLFFBQUksVUFBVSxLQUFkLElBQUEsRUFBeUI7QUFDdkIsVUFBSSxXQUFXLEdBQWYsVUFBQTtBQUVBLFlBQU0sSUFBQSxvQkFBQSxDQUNKLHVCQUF1QixXQUFXLENBQWxDLEdBQUEsR0FBQSxhQUFBLEdBQXlELFdBQVcsQ0FBWCxHQUFBLENBQUEsS0FBQSxDQUF6RCxJQUFBLEdBREksSUFBQSxFQUVKLFdBQVcsQ0FGYixHQUFNLENBQU47QUFJRDs7QUFFRCxXQUFBLElBQUE7QUE5Q0osR0FBQTs7QUFBQSxFQUFBLE1BQUEsQ0FBQSxjQUFBLEdBaURFLFNBQUEsY0FBQSxDQUFBLEtBQUEsRUFBd0M7QUFDdEMsUUFBSSxLQUFBLFNBQUEsQ0FBQSxLQUFBLEtBQW9CO0FBQUE7QUFBeEIsTUFBcUQ7QUFDbkQsYUFBQSxtQkFBQSxDQUF5QixLQUFBLGFBQUEsQ0FBekIsS0FBeUIsQ0FBekI7QUFDQTtBQUNEOztBQUVELFFBQ0UsS0FBQSxTQUFBLENBQUEsS0FBQSxLQUFvQjtBQUFBO0FBQXBCLE9BQ0EsS0FBQSxTQUFBLENBQUEsT0FBQSxNQUF1QjtBQUFBO0FBRnpCLE1BR0U7QUFDQSxjQUFNLElBQUEsb0JBQUEsQ0FBQSxtRUFBQSxFQUVKLEtBQUssQ0FGUCxHQUFNLENBQU47QUFJRDs7QUFkcUMsUUFBQSxnQkFBQSxHQWdCVCxlQUFlLENBQUEsSUFBQSxFQWhCTixLQWdCTSxDQWhCTjtBQUFBLFFBZ0JsQyxJQWhCa0MsR0FBQSxnQkFBQSxDQUFBLElBQUE7QUFBQSxRQWdCbEMsTUFoQmtDLEdBQUEsZ0JBQUEsQ0FBQSxNQUFBO0FBQUEsUUFnQmxCLElBaEJrQixHQUFBLGdCQUFBLENBQUEsSUFBQTs7QUFpQnRDLFFBQUksT0FBTyxHQUFHLEtBQUEsT0FBQSxDQUFhLEtBQUssQ0FBaEMsT0FBYyxDQUFkO0FBQ0EsUUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFMLE9BQUEsR0FBZ0IsS0FBQSxPQUFBLENBQWEsS0FBSyxDQUFsQyxPQUFnQixDQUFoQixHQUFkLElBQUE7O0FBRUEsUUFBSSxJQUFJLEdBQUcsa0JBQUEsS0FBQSxDQUFBLElBQUEsRUFBQSxNQUFBLEVBQUEsSUFBQSxFQUFBLE9BQUEsRUFBQSxPQUFBLEVBTVQsS0FBSyxDQU5JLEdBQUEsRUFPVCxLQUFLLENBUEksU0FBQSxFQVFULEtBQUssQ0FSSSxZQUFBLEVBU1QsS0FBSyxDQVRQLFVBQVcsQ0FBWDs7QUFZQSxRQUFJLGFBQWEsR0FBRyxLQUFwQixjQUFvQixFQUFwQjtBQUVBLDRCQUFXLGFBQVgsRUFBQSxJQUFBO0FBbkZKLEdBQUE7O0FBQUEsRUFBQSxNQUFBLENBQUEsaUJBQUEsR0FzRkUsU0FBQSxpQkFBQSxDQUFBLFdBQUEsRUFBb0Q7QUFBQSxRQUM1QyxTQUQ0QyxHQUFBLEtBQUEsU0FBQTs7QUFHbEQsUUFBSSxTQUFTLENBQVQsS0FBQSxLQUFKLFNBQUEsRUFBbUM7QUFDakMsV0FBQSxtQkFBQSxDQUF5QixLQUFBLGFBQUEsQ0FBekIsV0FBeUIsQ0FBekI7QUFDQTtBQUNEOztBQUVELFFBQUEsUUFBQTtBQVJrRCxRQVM5QyxPQVQ4QyxHQVNsRCxXQVRrRCxDQUFBLE9BQUE7QUFBQSxRQVM5QyxHQVQ4QyxHQVNsRCxXQVRrRCxDQUFBLEdBQUE7QUFBQSxRQVM5QixLQVQ4QixHQVNsRCxXQVRrRCxDQUFBLEtBQUE7O0FBV2xELFFBQUksc0JBQVUsV0FBVyxDQUF6QixJQUFJLENBQUosRUFBaUM7QUFDL0IsTUFBQSxRQUFRLEdBQUc7QUFDVCxRQUFBLElBQUksRUFESyxtQkFBQTtBQUVULFFBQUEsSUFBSSxFQUFFLEtBQUEsVUFBQSxDQUE2QixXQUFXLENBRnJDLElBRUgsQ0FGRztBQUdULFFBQUEsTUFBTSxFQUhHLEVBQUE7QUFJVCxRQUFBLElBQUksRUFBRSxrQkFKRyxJQUlILEVBSkc7QUFLVCxRQUFBLE9BTFMsRUFBQSxPQUFBO0FBTVQsUUFBQSxHQU5TLEVBQUEsR0FBQTtBQU9ULFFBQUEsS0FBQSxFQUFBO0FBUFMsT0FBWDtBQURGLEtBQUEsTUFVTztBQUFBLFVBQUEsaUJBQUEsR0FDd0IsZUFBZSxDQUFBLElBQUEsRUFEdkMsV0FDdUMsQ0FEdkM7QUFBQSxVQUNELElBREMsR0FBQSxpQkFBQSxDQUFBLElBQUE7QUFBQSxVQUNELE1BREMsR0FBQSxpQkFBQSxDQUFBLE1BQUE7QUFBQSxVQUNlLElBRGYsR0FBQSxpQkFBQSxDQUFBLElBQUE7O0FBT0wsTUFBQSxRQUFRLEdBQUcsa0JBQUEsUUFBQSxDQUFBLElBQUEsRUFBQSxNQUFBLEVBQUEsSUFBQSxFQUErQixDQUEvQixPQUFBLEVBQUEsR0FBQSxFQUFYLEtBQVcsQ0FBWDtBQUNEOztBQUVELFlBQVEsU0FBUyxDQUFqQixLQUFBO0FBQ0U7QUFDQSxXQUFBO0FBQUE7QUFBQTtBQUNBLFdBQUE7QUFBQTtBQUFBO0FBQ0UsY0FBTSxJQUFBLG9CQUFBLENBQUEsbURBQzhDLEtBQUEsYUFBQSxDQUFBLFdBQUEsRUFFaEQsV0FBVyxDQUhULElBQzhDLENBRDlDLEdBQUEsUUFBQSxHQUlPLEdBQUcsQ0FBSCxLQUFBLENBSlAsSUFBQSxHQUFBLElBQUEsR0FJMEIsR0FBRyxDQUFILEtBQUEsQ0FKMUIsTUFBQSxFQUtKLFFBQVEsQ0FMVixHQUFNLENBQU47O0FBUUYsV0FBQTtBQUFBO0FBQUE7QUFDRSxRQUFBLGtCQUFrQixDQUFDLEtBQUQsZUFBQSxFQUFsQixRQUFrQixDQUFsQjtBQUNBOztBQUNGLFdBQUE7QUFBQTtBQUFBO0FBQ0EsV0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLG1CQUFBLENBQUEsS0FBQTtBQUNBLGFBQUEsb0JBQUE7QUFDQSxRQUFBLGtCQUFrQixDQUFDLEtBQUQsZUFBQSxFQUFsQixRQUFrQixDQUFsQjtBQUNBLFFBQUEsU0FBUyxDQUFULFlBQUEsQ0FBc0I7QUFBQTtBQUF0QjtBQUNBOztBQUNGLFdBQUE7QUFBQTtBQUFBO0FBQ0UsUUFBQSxrQkFBa0IsQ0FBQyxLQUFELGVBQUEsRUFBbEIsUUFBa0IsQ0FBbEI7QUFDQSxRQUFBLFNBQVMsQ0FBVCxZQUFBLENBQXNCO0FBQUE7QUFBdEI7QUFDQTtBQUVGOztBQUNBLFdBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxtQkFBQSxDQUFBLEtBQUE7QUFDQSxRQUFBLCtCQUErQixDQUFDLEtBQUQsZ0JBQUEsRUFBL0IsUUFBK0IsQ0FBL0I7QUFDQSxRQUFBLFNBQVMsQ0FBVCxZQUFBLENBQXNCO0FBQUE7QUFBdEI7QUFDQTs7QUFDRixXQUFBO0FBQUE7QUFBQTtBQUNBLFdBQUE7QUFBQTtBQUFBO0FBQ0EsV0FBQTtBQUFBO0FBQUE7QUFDRSxRQUFBLCtCQUErQixDQUFDLEtBQUQsZ0JBQUEsRUFBL0IsUUFBK0IsQ0FBL0I7QUFDQTtBQUVGO0FBQ0E7O0FBQ0E7QUFDRSxnQ0FBWSxLQUFELGNBQUMsRUFBWixFQUFBLFFBQUE7QUExQ0o7O0FBNkNBLFdBQUEsUUFBQTtBQWxLSixHQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLGdCQUFBLEdBcUtFLFNBQUEsZ0JBQUEsQ0FBQSxPQUFBLEVBQThDO0FBQzVDLElBQUEsdUJBQXVCLENBQUMsS0FBRCxTQUFBLEVBQXZCLE9BQXVCLENBQXZCO0FBRUEsU0FBQSxTQUFBLENBQUEsWUFBQSxDQUE0QixPQUFPLENBQW5DLEtBQUE7QUFDQSxTQUFBLFNBQUEsQ0FBQSxTQUFBO0FBektKLEdBQUE7O0FBQUEsRUFBQSxNQUFBLENBQUEsZ0JBQUEsR0E0S0UsU0FBQSxnQkFBQSxDQUFBLFVBQUEsRUFBaUQ7QUFBQSxRQUN6QyxTQUR5QyxHQUFBLEtBQUEsU0FBQTs7QUFHL0MsUUFBSSxTQUFTLENBQVQsS0FBQSxLQUFlO0FBQUE7QUFBbkIsTUFBZ0Q7QUFDOUMsYUFBQSxtQkFBQSxDQUF5QixLQUFBLGFBQUEsQ0FBekIsVUFBeUIsQ0FBekI7QUFDQSxlQUFBLElBQUE7QUFDRDs7QUFOOEMsUUFRM0MsS0FSMkMsR0FRL0MsVUFSK0MsQ0FBQSxLQUFBO0FBQUEsUUFRbEMsR0FSa0MsR0FRL0MsVUFSK0MsQ0FBQSxHQUFBOztBQVMvQyxRQUFJLE9BQU8sR0FBRyxrQkFBQSxlQUFBLENBQUEsS0FBQSxFQUFkLEdBQWMsQ0FBZDs7QUFFQSxZQUFRLFNBQVMsQ0FBakIsS0FBQTtBQUNFLFdBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxlQUFBLENBQUEsUUFBQSxDQUFBLElBQUEsQ0FBQSxPQUFBO0FBQ0E7O0FBRUYsV0FBQTtBQUFBO0FBQUE7QUFDQSxXQUFBO0FBQUE7QUFBQTtBQUNFLGdDQUFZLEtBQUQsY0FBQyxFQUFaLEVBQUEsT0FBQTtBQUNBOztBQUVGO0FBQ0UsY0FBTSxJQUFBLG9CQUFBLENBQUEsNkNBQ3dDLFNBQVMsQ0FEakQsT0FDaUQsQ0FEakQsR0FBQSw4QkFBQSxHQUN5RixPQUFPLENBRGhHLEtBQUEsR0FBQSxhQUFBLEdBQ21ILEdBQUcsQ0FBSCxLQUFBLENBRG5ILElBQUEsR0FBQSxHQUFBLEdBQ3FJLEdBQUcsQ0FBSCxLQUFBLENBRHJJLE1BQUEsRUFFSixVQUFVLENBRlosR0FBTSxDQUFOO0FBWEo7O0FBaUJBLFdBQUEsT0FBQTtBQXhNSixHQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLGdCQUFBLEdBMk1FLFNBQUEsZ0JBQUEsQ0FBQSxPQUFBLEVBQThDO0FBQUEsUUFDdEMsR0FEc0MsR0FDNUMsT0FENEMsQ0FBQSxHQUFBO0FBRzVDLFVBQU0sSUFBQSxvQkFBQSxDQUFBLDhDQUN1QyxLQUFBLGFBQUEsQ0FBQSxPQUFBLEVBQTRCLE9BQU8sQ0FEMUUsSUFDdUMsQ0FEdkMsR0FBQSxTQUFBLEdBRUYsR0FBRyxDQUFILEtBQUEsQ0FGRSxJQUFBLEdBQUEsSUFBQSxHQUdDLEdBQUcsQ0FBSCxLQUFBLENBSEQsTUFBQSxFQUlKLE9BQU8sQ0FKVCxHQUFNLENBQU47QUE5TUosR0FBQTs7QUFBQSxFQUFBLE1BQUEsQ0FBQSxxQkFBQSxHQXNORSxTQUFBLHFCQUFBLENBQUEsWUFBQSxFQUE2RDtBQUFBLFFBQ3JELEdBRHFELEdBQzNELFlBRDJELENBQUEsR0FBQTtBQUczRCxVQUFNLElBQUEsb0JBQUEsQ0FBQSxvREFDNkMsS0FBQSxhQUFBLENBQUEsWUFBQSxFQUUvQyxZQUFZLENBSFYsSUFDNkMsQ0FEN0MsR0FBQSxTQUFBLEdBSU0sR0FBRyxDQUFILEtBQUEsQ0FKTixJQUFBLEdBQUEsSUFBQSxHQUl5QixHQUFHLENBQUgsS0FBQSxDQUp6QixNQUFBLEVBS0osWUFBWSxDQUxkLEdBQU0sQ0FBTjtBQXpOSixHQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLFNBQUEsR0FrT0UsU0FBQSxTQUFBLENBQUEsU0FBQSxFQUFrQztBQUFBLFFBQzFCLEdBRDBCLEdBQ2hDLFNBRGdDLENBQUEsR0FBQTtBQUdoQyxVQUFNLElBQUEsb0JBQUEsQ0FBQSxnREFDeUMsS0FBQSxhQUFBLENBQUEsU0FBQSxFQUUzQyxTQUFTLENBSFAsSUFDeUMsQ0FEekMsR0FBQSxTQUFBLEdBSU0sR0FBRyxDQUFILEtBQUEsQ0FKTixJQUFBLEdBQUEsSUFBQSxHQUl5QixHQUFHLENBQUgsS0FBQSxDQUp6QixNQUFBLEVBS0osU0FBUyxDQUxYLEdBQU0sQ0FBTjtBQXJPSixHQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLGNBQUEsR0E4T0UsU0FBQSxjQUFBLENBQUEsY0FBQSxFQUFpRDtBQUFBLFFBQ3pDLEdBRHlDLEdBQy9DLGNBRCtDLENBQUEsR0FBQTtBQUcvQyxVQUFNLElBQUEsb0JBQUEsQ0FBQSxzREFDK0MsS0FBQSxhQUFBLENBQUEsY0FBQSxFQUVqRCxjQUFjLENBSFosSUFDK0MsQ0FEL0MsR0FBQSxTQUFBLEdBSU0sR0FBRyxDQUFILEtBQUEsQ0FKTixJQUFBLEdBQUEsSUFBQSxHQUl5QixHQUFHLENBQUgsS0FBQSxDQUp6QixNQUFBLEVBS0osY0FBYyxDQUxoQixHQUFNLENBQU47QUFqUEosR0FBQTs7QUFBQSxFQUFBLE1BQUEsQ0FBQSxhQUFBLEdBMFBFLFNBQUEsYUFBQSxDQUFBLEtBQUEsRUFBc0M7QUFBQSxRQUFBLGlCQUFBLEdBQ1AsZUFBZSxDQUFBLElBQUEsRUFEUixLQUNRLENBRFI7QUFBQSxRQUNoQyxJQURnQyxHQUFBLGlCQUFBLENBQUEsSUFBQTtBQUFBLFFBQ2hDLE1BRGdDLEdBQUEsaUJBQUEsQ0FBQSxNQUFBO0FBQUEsUUFDaEIsSUFEZ0IsR0FBQSxpQkFBQSxDQUFBLElBQUE7O0FBRXBDLFdBQU8sa0JBQUEsS0FBQSxDQUFBLElBQUEsRUFBQSxNQUFBLEVBQUEsSUFBQSxFQUE0QixLQUFLLENBQXhDLEdBQU8sQ0FBUDtBQTVQSixHQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLGNBQUEsR0ErUEUsU0FBQSxjQUFBLENBQUEsSUFBQSxFQUF1QztBQUFBLFFBQ2pDLFFBRGlDLEdBQ3JDLElBRHFDLENBQUEsUUFBQTtBQUFBLFFBQ3JCLEdBRHFCLEdBQ3JDLElBRHFDLENBQUEsR0FBQTtBQUVyQyxRQUFBLEtBQUE7O0FBRUEsUUFBSSxRQUFRLENBQVIsT0FBQSxDQUFBLEdBQUEsTUFBMEIsQ0FBOUIsQ0FBQSxFQUFrQztBQUNoQyxVQUFJLFFBQVEsQ0FBUixLQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsTUFBSixJQUFBLEVBQW1DO0FBQ2pDLGNBQU0sSUFBQSxvQkFBQSxDQUFBLGlFQUN3RCxJQUFJLENBRDVELFFBQUEsR0FBQSxhQUFBLEdBQ2tGLEdBQUcsQ0FBSCxLQUFBLENBRGxGLElBQUEsR0FBQSxHQUFBLEVBRUosSUFBSSxDQUZOLEdBQU0sQ0FBTjtBQUlEOztBQUNELFVBQUksUUFBUSxDQUFSLEtBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxNQUFKLEtBQUEsRUFBb0M7QUFDbEMsY0FBTSxJQUFBLG9CQUFBLENBQUEsbUVBQzBELElBQUksQ0FEOUQsUUFBQSxHQUFBLGFBQUEsR0FDb0YsR0FBRyxDQUFILEtBQUEsQ0FEcEYsSUFBQSxHQUFBLEdBQUEsRUFFSixJQUFJLENBRk4sR0FBTSxDQUFOO0FBSUQ7O0FBQ0QsVUFBSSxRQUFRLENBQVIsT0FBQSxDQUFBLEdBQUEsTUFBMEIsQ0FBOUIsQ0FBQSxFQUFrQztBQUNoQyxjQUFNLElBQUEsb0JBQUEsQ0FBQSx5R0FDa0csSUFBSSxDQUR0RyxRQUFBLEdBQUEsYUFBQSxHQUM0SCxHQUFHLENBQUgsS0FBQSxDQUQ1SCxJQUFBLEdBQUEsR0FBQSxFQUVKLElBQUksQ0FGTixHQUFNLENBQU47QUFJRDs7QUFDRCxNQUFBLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBSixLQUFBLENBQUEsSUFBQSxDQUFULEdBQVMsQ0FBRCxDQUFSO0FBbkJGLEtBQUEsTUFvQk8sSUFBSSxRQUFRLEtBQVosR0FBQSxFQUFzQjtBQUMzQixVQUFJLFlBQVksR0FBQSxNQUFPLEdBQUcsQ0FBSCxLQUFBLENBQVAsSUFBQSxHQUFBLElBQUEsR0FBMEIsR0FBRyxDQUFILEtBQUEsQ0FBMUMsTUFBQTtBQUNBLFlBQU0sSUFBQSxvQkFBQSxDQUFBLHFGQUFBLFlBQUEsR0FBQSxHQUFBLEVBRUosSUFBSSxDQUZOLEdBQU0sQ0FBTjtBQUZLLEtBQUEsTUFNQTtBQUNMLE1BQUEsS0FBSyxHQUFHLElBQUksQ0FBWixLQUFBO0FBQ0Q7O0FBRUQsUUFBSSxRQUFRLEdBbEN5QixLQWtDckMsQ0FsQ3FDLENBb0NyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxRQUFJLFFBQVEsQ0FBUixLQUFBLENBQUosZUFBSSxDQUFKLEVBQXFDO0FBQ25DLE1BQUEsUUFBUSxHQUFSLElBQUE7QUFDRDs7QUFFRCxXQUFPO0FBQ0wsTUFBQSxJQUFJLEVBREMsZ0JBQUE7QUFFTCxNQUFBLFFBQVEsRUFBRSxJQUFJLENBRlQsUUFBQTtBQUdMLGNBSEssUUFBQTtBQUlMLE1BQUEsS0FKSyxFQUFBLEtBQUE7QUFLTCxNQUFBLElBQUksRUFBRSxJQUFJLENBTEwsSUFBQTtBQU1MLE1BQUEsR0FBRyxFQUFFLElBQUksQ0FBQztBQU5MLEtBQVA7QUFqVEosR0FBQTs7QUFBQSxFQUFBLE1BQUEsQ0FBQSxJQUFBLEdBMlRFLFNBQUEsSUFBQSxDQUFBLElBQUEsRUFBbUI7QUFDakIsUUFBSSxLQUFLLEdBQVQsRUFBQTs7QUFFQSxTQUFLLElBQUksQ0FBQyxHQUFWLENBQUEsRUFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBSixLQUFBLENBQXBCLE1BQUEsRUFBdUMsQ0FBdkMsRUFBQSxFQUE0QztBQUMxQyxVQUFJLElBQUksR0FBRyxJQUFJLENBQUosS0FBQSxDQUFYLENBQVcsQ0FBWDtBQUNBLE1BQUEsS0FBSyxDQUFMLElBQUEsQ0FBVyxrQkFBQSxJQUFBLENBQU8sSUFBSSxDQUFYLEdBQUEsRUFBaUIsS0FBQSxVQUFBLENBQWdCLElBQUksQ0FBckMsS0FBaUIsQ0FBakIsRUFBOEMsSUFBSSxDQUE3RCxHQUFXLENBQVg7QUFDRDs7QUFFRCxXQUFPLGtCQUFBLElBQUEsQ0FBQSxLQUFBLEVBQWMsSUFBSSxDQUF6QixHQUFPLENBQVA7QUFuVUosR0FBQTs7QUFBQSxFQUFBLE1BQUEsQ0FBQSxhQUFBLEdBc1VFLFNBQUEsYUFBQSxDQUFBLE1BQUEsRUFBdUM7QUFDckMsV0FBTyxrQkFBQSxPQUFBLENBQUEsZUFBQSxFQUEyQixNQUFNLENBQWpDLEtBQUEsRUFBeUMsTUFBTSxDQUF0RCxHQUFPLENBQVA7QUF2VUosR0FBQTs7QUFBQSxFQUFBLE1BQUEsQ0FBQSxjQUFBLEdBMFVFLFNBQUEsY0FBQSxDQUFBLFFBQUEsRUFBMEM7QUFDeEMsV0FBTyxrQkFBQSxPQUFBLENBQUEsZ0JBQUEsRUFBNEIsUUFBTyxDQUFuQyxLQUFBLEVBQTJDLFFBQU8sQ0FBekQsR0FBTyxDQUFQO0FBM1VKLEdBQUE7O0FBQUEsRUFBQSxNQUFBLENBQUEsYUFBQSxHQThVRSxTQUFBLGFBQUEsQ0FBQSxNQUFBLEVBQXVDO0FBQ3JDLFdBQU8sa0JBQUEsT0FBQSxDQUFBLGVBQUEsRUFBMkIsTUFBTSxDQUFqQyxLQUFBLEVBQXlDLE1BQU0sQ0FBdEQsR0FBTyxDQUFQO0FBL1VKLEdBQUE7O0FBQUEsRUFBQSxNQUFBLENBQUEsZ0JBQUEsR0FrVkUsU0FBQSxnQkFBQSxDQUFBLEtBQUEsRUFBNEM7QUFDMUMsV0FBTyxrQkFBQSxPQUFBLENBQUEsa0JBQUEsRUFBQSxTQUFBLEVBQXlDLEtBQUssQ0FBckQsR0FBTyxDQUFQO0FBblZKLEdBQUE7O0FBQUEsRUFBQSxNQUFBLENBQUEsV0FBQSxHQXNWRSxTQUFBLFdBQUEsQ0FBQSxHQUFBLEVBQWdDO0FBQzlCLFdBQU8sa0JBQUEsT0FBQSxDQUFBLGFBQUEsRUFBQSxJQUFBLEVBQStCLEdBQUcsQ0FBekMsR0FBTyxDQUFQO0FBdlZKLEdBQUE7O0FBQUEsRUFBQSxZQUFBLENBQUEsc0JBQUEsRUFBQSxDQUFBO0FBQUEsSUFBQSxHQUFBLEVBQUEsWUFBQTtBQUFBLElBQUEsR0FBQSxFQUFBLFNBQUEsR0FBQSxHQUt3QjtBQUNwQixhQUFPLEtBQUEsWUFBQSxDQUFBLE1BQUEsS0FBUCxDQUFBO0FBQ0Q7QUFQSCxHQUFBLENBQUEsQ0FBQTs7QUFBQSxTQUFBLHNCQUFBO0FBQUEsQ0FBQSxDQUFBLGNBQUEsQ0FBQTs7OztBQTJWQSxTQUFBLDZCQUFBLENBQUEsUUFBQSxFQUFBLEtBQUEsRUFBc0U7QUFDcEUsTUFBSSxLQUFLLEtBQVQsRUFBQSxFQUFrQjtBQUNoQjtBQUNBO0FBQ0EsV0FBTztBQUNMLE1BQUEsS0FBSyxFQUFFLFFBQVEsQ0FBUixLQUFBLENBQUEsSUFBQSxFQUFBLE1BQUEsR0FERixDQUFBO0FBRUwsTUFBQSxPQUFPLEVBQUU7QUFGSixLQUFQO0FBSmtFLEdBQUEsQ0FVcEU7QUFDQTs7O0FBQ0EsTUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFSLEtBQUEsQ0FBQSxLQUFBLEVBQWpCLENBQWlCLENBQWpCO0FBQ0EsTUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFWLEtBQUEsQ0FBWixJQUFZLENBQVo7QUFDQSxNQUFJLFNBQVMsR0FBRyxLQUFLLENBQUwsTUFBQSxHQUFoQixDQUFBO0FBRUEsU0FBTztBQUNMLElBQUEsS0FBSyxFQURBLFNBQUE7QUFFTCxJQUFBLE9BQU8sRUFBRSxLQUFLLENBQUwsU0FBSyxDQUFMLENBQWlCO0FBRnJCLEdBQVA7QUFJRDs7QUFFRCxTQUFBLHVCQUFBLENBQUEsU0FBQSxFQUFBLE9BQUEsRUFBOEY7QUFDNUYsTUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFQLEdBQUEsQ0FBQSxLQUFBLENBQVgsSUFBQTtBQUNBLE1BQUksTUFBTSxHQUFHLE9BQU8sQ0FBUCxHQUFBLENBQUEsS0FBQSxDQUFiLE1BQUE7QUFFQSxNQUFJLE9BQU8sR0FBRyw2QkFBNkIsQ0FDekMsT0FBTyxDQURrQyxRQUFBLEVBRXpDLE9BQU8sQ0FGVCxLQUEyQyxDQUEzQztBQUtBLEVBQUEsSUFBSSxHQUFHLElBQUksR0FBRyxPQUFPLENBQXJCLEtBQUE7O0FBQ0EsTUFBSSxPQUFPLENBQVgsS0FBQSxFQUFtQjtBQUNqQixJQUFBLE1BQU0sR0FBRyxPQUFPLENBQWhCLE9BQUE7QUFERixHQUFBLE1BRU87QUFDTCxJQUFBLE1BQU0sR0FBRyxNQUFNLEdBQUcsT0FBTyxDQUF6QixPQUFBO0FBQ0Q7O0FBRUQsRUFBQSxTQUFTLENBQVQsSUFBQSxHQUFBLElBQUE7QUFDQSxFQUFBLFNBQVMsQ0FBVCxNQUFBLEdBQUEsTUFBQTtBQUNEOztBQUVELFNBQUEsZUFBQSxDQUFBLFFBQUEsRUFBQSxJQUFBLEVBTUc7QUFFRCxNQUFJLElBQUksR0FBRyxRQUFRLENBQVIsY0FBQSxDQUF3QixJQUFJLENBQXZDLElBQVcsQ0FBWDtBQUVBLE1BQUksTUFBTSxHQUFHLElBQUksQ0FBSixNQUFBLEdBQWMsSUFBSSxDQUFKLE1BQUEsQ0FBQSxHQUFBLENBQWlCLFVBQUQsQ0FBQyxFQUFEO0FBQUEsV0FBTyxRQUFRLENBQVIsVUFBQSxDQUFyQyxDQUFxQyxDQUFQO0FBQTlCLEdBQWMsQ0FBZCxHQUFiLEVBQUE7QUFDQSxNQUFJLElBQUksR0FBRyxJQUFJLENBQUosSUFBQSxHQUFZLFFBQVEsQ0FBUixJQUFBLENBQWMsSUFBSSxDQUE5QixJQUFZLENBQVosR0FBdUMsa0JBQWxELElBQWtELEVBQWxEO0FBRUEsU0FBTztBQUFFLElBQUEsSUFBRixFQUFBLElBQUE7QUFBUSxJQUFBLE1BQVIsRUFBQSxNQUFBO0FBQWdCLElBQUEsSUFBQSxFQUFBO0FBQWhCLEdBQVA7QUFDRDs7QUFFRCxTQUFBLGtCQUFBLENBQUEsT0FBQSxFQUFBLFFBQUEsRUFBcUY7QUFBQSxNQUMvRSxJQUQrRSxHQUNuRixRQURtRixDQUFBLElBQUE7QUFBQSxNQUMvRSxNQUQrRSxHQUNuRixRQURtRixDQUFBLE1BQUE7QUFBQSxNQUMvRSxJQUQrRSxHQUNuRixRQURtRixDQUFBLElBQUE7QUFBQSxNQUN6RCxHQUR5RCxHQUNuRixRQURtRixDQUFBLEdBQUE7O0FBR25GLE1BQUksc0JBQUosSUFBSSxDQUFKLEVBQXFCO0FBQ25CLFFBQUksU0FBUSxHQUFBLE9BQVEseUJBQXBCLElBQW9CLENBQVIsR0FBWixJQUFBOztBQUNBLFFBQUksR0FBRyxHQUFBLE1BQU8sT0FBTyxDQUFkLElBQUEsR0FBQSxPQUFBLEdBQVAsU0FBTyxHQUFQLE1BQUE7QUFFQSxVQUFNLElBQUEsb0JBQUEsQ0FBQSxRQUFBLEdBQUEsR0FBQSxJQUFBLEdBQUEsU0FBQSxHQUFBLDhCQUFBLEdBQ2dELElBQUksQ0FEcEQsUUFBQSxHQUFBLGFBQUEsSUFFRixHQUFHLElBQUksR0FBRyxDQUFILEtBQUEsQ0FGTCxJQUFBLElBQUEsR0FBQSxFQUlKLFFBQVEsQ0FKVixHQUFNLENBQU47QUFNRDs7QUFFRCxNQUFJLFFBQVEsR0FBRyxrQkFBQSxlQUFBLENBQUEsSUFBQSxFQUFBLE1BQUEsRUFBQSxJQUFBLEVBQWYsR0FBZSxDQUFmOztBQUNBLEVBQUEsT0FBTyxDQUFQLFNBQUEsQ0FBQSxJQUFBLENBQUEsUUFBQTtBQUNEOztBQUVELFNBQUEsK0JBQUEsQ0FBQSxTQUFBLEVBQUEsSUFBQSxFQUEwRjtBQUN4RixFQUFBLFNBQVMsQ0FBVCxTQUFBLEdBQUEsSUFBQTtBQUNBLEVBQUEsU0FBUyxDQUFULEtBQUEsQ0FBQSxJQUFBLENBQUEsSUFBQTtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGIgZnJvbSAnLi4vYnVpbGRlcnMnO1xuaW1wb3J0IHsgYXBwZW5kQ2hpbGQsIGlzTGl0ZXJhbCwgcHJpbnRMaXRlcmFsIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0ICogYXMgQVNUIGZyb20gJy4uL3R5cGVzL25vZGVzJztcbmltcG9ydCAqIGFzIEhCUyBmcm9tICcuLi90eXBlcy9oYW5kbGViYXJzLWFzdCc7XG5pbXBvcnQgeyBQYXJzZXIsIFRhZywgQXR0cmlidXRlIH0gZnJvbSAnLi4vcGFyc2VyJztcbmltcG9ydCBTeW50YXhFcnJvciBmcm9tICcuLi9lcnJvcnMvc3ludGF4LWVycm9yJztcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgUmVjYXN0IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUb2tlbml6ZXJTdGF0ZSB9IGZyb20gJ3NpbXBsZS1odG1sLXRva2VuaXplcic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBIYW5kbGViYXJzTm9kZVZpc2l0b3JzIGV4dGVuZHMgUGFyc2VyIHtcbiAgYWJzdHJhY3QgYXBwZW5kVG9Db21tZW50RGF0YShzOiBzdHJpbmcpOiB2b2lkO1xuICBhYnN0cmFjdCBiZWdpbkF0dHJpYnV0ZVZhbHVlKHF1b3RlZDogYm9vbGVhbik6IHZvaWQ7XG4gIGFic3RyYWN0IGZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk6IHZvaWQ7XG5cbiAgcHJpdmF0ZSBnZXQgaXNUb3BMZXZlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2subGVuZ3RoID09PSAwO1xuICB9XG5cbiAgUHJvZ3JhbShwcm9ncmFtOiBIQlMuUHJvZ3JhbSk6IEFTVC5CbG9jaztcbiAgUHJvZ3JhbShwcm9ncmFtOiBIQlMuUHJvZ3JhbSk6IEFTVC5UZW1wbGF0ZTtcbiAgUHJvZ3JhbShwcm9ncmFtOiBIQlMuUHJvZ3JhbSk6IEFTVC5UZW1wbGF0ZSB8IEFTVC5CbG9jaztcbiAgUHJvZ3JhbShwcm9ncmFtOiBIQlMuUHJvZ3JhbSk6IEFTVC5CbG9jayB8IEFTVC5UZW1wbGF0ZSB7XG4gICAgbGV0IGJvZHk6IEFTVC5TdGF0ZW1lbnRbXSA9IFtdO1xuICAgIGxldCBub2RlO1xuXG4gICAgaWYgKHRoaXMuaXNUb3BMZXZlbCkge1xuICAgICAgbm9kZSA9IGIudGVtcGxhdGUoYm9keSwgcHJvZ3JhbS5ibG9ja1BhcmFtcywgcHJvZ3JhbS5sb2MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlID0gYi5ibG9ja0l0c2VsZihib2R5LCBwcm9ncmFtLmJsb2NrUGFyYW1zLCBwcm9ncmFtLmNoYWluZWQsIHByb2dyYW0ubG9jKTtcbiAgICB9XG5cbiAgICBsZXQgaSxcbiAgICAgIGwgPSBwcm9ncmFtLmJvZHkubGVuZ3RoO1xuXG4gICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaChub2RlKTtcblxuICAgIGlmIChsID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2sucG9wKCkgYXMgQVNULkJsb2NrIHwgQVNULlRlbXBsYXRlO1xuICAgIH1cblxuICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHRoaXMuYWNjZXB0Tm9kZShwcm9ncmFtLmJvZHlbaV0pO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSB0aGF0IHRoYXQgdGhlIGVsZW1lbnQgc3RhY2sgaXMgYmFsYW5jZWQgcHJvcGVybHkuXG4gICAgbGV0IHBvcHBlZE5vZGUgPSB0aGlzLmVsZW1lbnRTdGFjay5wb3AoKTtcbiAgICBpZiAocG9wcGVkTm9kZSAhPT0gbm9kZSkge1xuICAgICAgbGV0IGVsZW1lbnROb2RlID0gcG9wcGVkTm9kZSBhcyBBU1QuRWxlbWVudE5vZGU7XG5cbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgJ1VuY2xvc2VkIGVsZW1lbnQgYCcgKyBlbGVtZW50Tm9kZS50YWcgKyAnYCAob24gbGluZSAnICsgZWxlbWVudE5vZGUubG9jIS5zdGFydC5saW5lICsgJykuJyxcbiAgICAgICAgZWxlbWVudE5vZGUubG9jXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgQmxvY2tTdGF0ZW1lbnQoYmxvY2s6IEhCUy5CbG9ja1N0YXRlbWVudCk6IEFTVC5CbG9ja1N0YXRlbWVudCB8IHZvaWQge1xuICAgIGlmICh0aGlzLnRva2VuaXplci5zdGF0ZSA9PT0gVG9rZW5pemVyU3RhdGUuY29tbWVudCkge1xuICAgICAgdGhpcy5hcHBlbmRUb0NvbW1lbnREYXRhKHRoaXMuc291cmNlRm9yTm9kZShibG9jaykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlICE9PSBUb2tlbml6ZXJTdGF0ZS5kYXRhICYmXG4gICAgICB0aGlzLnRva2VuaXplclsnc3RhdGUnXSAhPT0gVG9rZW5pemVyU3RhdGUuYmVmb3JlRGF0YVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAnQSBibG9jayBtYXkgb25seSBiZSB1c2VkIGluc2lkZSBhbiBIVE1MIGVsZW1lbnQgb3IgYW5vdGhlciBibG9jay4nLFxuICAgICAgICBibG9jay5sb2NcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IHsgcGF0aCwgcGFyYW1zLCBoYXNoIH0gPSBhY2NlcHRDYWxsTm9kZXModGhpcywgYmxvY2spO1xuICAgIGxldCBwcm9ncmFtID0gdGhpcy5Qcm9ncmFtKGJsb2NrLnByb2dyYW0pO1xuICAgIGxldCBpbnZlcnNlID0gYmxvY2suaW52ZXJzZSA/IHRoaXMuUHJvZ3JhbShibG9jay5pbnZlcnNlKSA6IG51bGw7XG5cbiAgICBsZXQgbm9kZSA9IGIuYmxvY2soXG4gICAgICBwYXRoLFxuICAgICAgcGFyYW1zLFxuICAgICAgaGFzaCxcbiAgICAgIHByb2dyYW0sXG4gICAgICBpbnZlcnNlLFxuICAgICAgYmxvY2subG9jLFxuICAgICAgYmxvY2sub3BlblN0cmlwLFxuICAgICAgYmxvY2suaW52ZXJzZVN0cmlwLFxuICAgICAgYmxvY2suY2xvc2VTdHJpcFxuICAgICk7XG5cbiAgICBsZXQgcGFyZW50UHJvZ3JhbSA9IHRoaXMuY3VycmVudEVsZW1lbnQoKTtcblxuICAgIGFwcGVuZENoaWxkKHBhcmVudFByb2dyYW0sIG5vZGUpO1xuICB9XG5cbiAgTXVzdGFjaGVTdGF0ZW1lbnQocmF3TXVzdGFjaGU6IEhCUy5NdXN0YWNoZVN0YXRlbWVudCk6IEFTVC5NdXN0YWNoZVN0YXRlbWVudCB8IHZvaWQge1xuICAgIGxldCB7IHRva2VuaXplciB9ID0gdGhpcztcblxuICAgIGlmICh0b2tlbml6ZXIuc3RhdGUgPT09ICdjb21tZW50Jykge1xuICAgICAgdGhpcy5hcHBlbmRUb0NvbW1lbnREYXRhKHRoaXMuc291cmNlRm9yTm9kZShyYXdNdXN0YWNoZSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBtdXN0YWNoZTogQVNULk11c3RhY2hlU3RhdGVtZW50O1xuICAgIGxldCB7IGVzY2FwZWQsIGxvYywgc3RyaXAgfSA9IHJhd011c3RhY2hlO1xuXG4gICAgaWYgKGlzTGl0ZXJhbChyYXdNdXN0YWNoZS5wYXRoKSkge1xuICAgICAgbXVzdGFjaGUgPSB7XG4gICAgICAgIHR5cGU6ICdNdXN0YWNoZVN0YXRlbWVudCcsXG4gICAgICAgIHBhdGg6IHRoaXMuYWNjZXB0Tm9kZTxBU1QuTGl0ZXJhbD4ocmF3TXVzdGFjaGUucGF0aCksXG4gICAgICAgIHBhcmFtczogW10sXG4gICAgICAgIGhhc2g6IGIuaGFzaCgpLFxuICAgICAgICBlc2NhcGVkLFxuICAgICAgICBsb2MsXG4gICAgICAgIHN0cmlwLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHsgcGF0aCwgcGFyYW1zLCBoYXNoIH0gPSBhY2NlcHRDYWxsTm9kZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHJhd011c3RhY2hlIGFzIEhCUy5NdXN0YWNoZVN0YXRlbWVudCAmIHtcbiAgICAgICAgICBwYXRoOiBIQlMuUGF0aEV4cHJlc3Npb247XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBtdXN0YWNoZSA9IGIubXVzdGFjaGUocGF0aCwgcGFyYW1zLCBoYXNoLCAhZXNjYXBlZCwgbG9jLCBzdHJpcCk7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0b2tlbml6ZXIuc3RhdGUpIHtcbiAgICAgIC8vIFRhZyBoZWxwZXJzXG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLnRhZ09wZW46XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLnRhZ05hbWU6XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICBgQ2Fubm90IHVzZSBtdXN0YWNoZXMgaW4gYW4gZWxlbWVudHMgdGFnbmFtZTogXFxgJHt0aGlzLnNvdXJjZUZvck5vZGUoXG4gICAgICAgICAgICByYXdNdXN0YWNoZSxcbiAgICAgICAgICAgIHJhd011c3RhY2hlLnBhdGhcbiAgICAgICAgICApfVxcYCBhdCBMJHtsb2Muc3RhcnQubGluZX06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgICAgIG11c3RhY2hlLmxvY1xuICAgICAgICApO1xuXG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmJlZm9yZUF0dHJpYnV0ZU5hbWU6XG4gICAgICAgIGFkZEVsZW1lbnRNb2RpZmllcih0aGlzLmN1cnJlbnRTdGFydFRhZywgbXVzdGFjaGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYXR0cmlidXRlTmFtZTpcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYWZ0ZXJBdHRyaWJ1dGVOYW1lOlxuICAgICAgICB0aGlzLmJlZ2luQXR0cmlidXRlVmFsdWUoZmFsc2UpO1xuICAgICAgICB0aGlzLmZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk7XG4gICAgICAgIGFkZEVsZW1lbnRNb2RpZmllcih0aGlzLmN1cnJlbnRTdGFydFRhZywgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIudHJhbnNpdGlvblRvKFRva2VuaXplclN0YXRlLmJlZm9yZUF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZDpcbiAgICAgICAgYWRkRWxlbWVudE1vZGlmaWVyKHRoaXMuY3VycmVudFN0YXJ0VGFnLCBtdXN0YWNoZSk7XG4gICAgICAgIHRva2VuaXplci50cmFuc2l0aW9uVG8oVG9rZW5pemVyU3RhdGUuYmVmb3JlQXR0cmlidXRlTmFtZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBBdHRyaWJ1dGUgdmFsdWVzXG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmJlZm9yZUF0dHJpYnV0ZVZhbHVlOlxuICAgICAgICB0aGlzLmJlZ2luQXR0cmlidXRlVmFsdWUoZmFsc2UpO1xuICAgICAgICBhcHBlbmREeW5hbWljQXR0cmlidXRlVmFsdWVQYXJ0KHRoaXMuY3VycmVudEF0dHJpYnV0ZSEsIG11c3RhY2hlKTtcbiAgICAgICAgdG9rZW5pemVyLnRyYW5zaXRpb25UbyhUb2tlbml6ZXJTdGF0ZS5hdHRyaWJ1dGVWYWx1ZVVucXVvdGVkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkOlxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5hdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZDpcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYXR0cmlidXRlVmFsdWVVbnF1b3RlZDpcbiAgICAgICAgYXBwZW5kRHluYW1pY0F0dHJpYnV0ZVZhbHVlUGFydCh0aGlzLmN1cnJlbnRBdHRyaWJ1dGUhLCBtdXN0YWNoZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBUT0RPOiBPbmx5IGFwcGVuZCBjaGlsZCB3aGVuIHRoZSB0b2tlbml6ZXIgc3RhdGUgbWFrZXNcbiAgICAgIC8vIHNlbnNlIHRvIGRvIHNvLCBvdGhlcndpc2UgdGhyb3cgYW4gZXJyb3IuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIG11c3RhY2hlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbXVzdGFjaGU7XG4gIH1cblxuICBDb250ZW50U3RhdGVtZW50KGNvbnRlbnQ6IEhCUy5Db250ZW50U3RhdGVtZW50KTogdm9pZCB7XG4gICAgdXBkYXRlVG9rZW5pemVyTG9jYXRpb24odGhpcy50b2tlbml6ZXIsIGNvbnRlbnQpO1xuXG4gICAgdGhpcy50b2tlbml6ZXIudG9rZW5pemVQYXJ0KGNvbnRlbnQudmFsdWUpO1xuICAgIHRoaXMudG9rZW5pemVyLmZsdXNoRGF0YSgpO1xuICB9XG5cbiAgQ29tbWVudFN0YXRlbWVudChyYXdDb21tZW50OiBIQlMuQ29tbWVudFN0YXRlbWVudCk6IE9wdGlvbjxBU1QuTXVzdGFjaGVDb21tZW50U3RhdGVtZW50PiB7XG4gICAgbGV0IHsgdG9rZW5pemVyIH0gPSB0aGlzO1xuXG4gICAgaWYgKHRva2VuaXplci5zdGF0ZSA9PT0gVG9rZW5pemVyU3RhdGUuY29tbWVudCkge1xuICAgICAgdGhpcy5hcHBlbmRUb0NvbW1lbnREYXRhKHRoaXMuc291cmNlRm9yTm9kZShyYXdDb21tZW50KSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgeyB2YWx1ZSwgbG9jIH0gPSByYXdDb21tZW50O1xuICAgIGxldCBjb21tZW50ID0gYi5tdXN0YWNoZUNvbW1lbnQodmFsdWUsIGxvYyk7XG5cbiAgICBzd2l0Y2ggKHRva2VuaXplci5zdGF0ZSkge1xuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5iZWZvcmVBdHRyaWJ1dGVOYW1lOlxuICAgICAgICB0aGlzLmN1cnJlbnRTdGFydFRhZy5jb21tZW50cy5wdXNoKGNvbW1lbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5iZWZvcmVEYXRhOlxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5kYXRhOlxuICAgICAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIGNvbW1lbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAgIGBVc2luZyBhIEhhbmRsZWJhcnMgY29tbWVudCB3aGVuIGluIHRoZSBcXGAke3Rva2VuaXplclsnc3RhdGUnXX1cXGAgc3RhdGUgaXMgbm90IHN1cHBvcnRlZDogXCIke2NvbW1lbnQudmFsdWV9XCIgb24gbGluZSAke2xvYy5zdGFydC5saW5lfToke2xvYy5zdGFydC5jb2x1bW59YCxcbiAgICAgICAgICByYXdDb21tZW50LmxvY1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBjb21tZW50O1xuICB9XG5cbiAgUGFydGlhbFN0YXRlbWVudChwYXJ0aWFsOiBIQlMuUGFydGlhbFN0YXRlbWVudCk6IG5ldmVyIHtcbiAgICBsZXQgeyBsb2MgfSA9IHBhcnRpYWw7XG5cbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgSGFuZGxlYmFycyBwYXJ0aWFscyBhcmUgbm90IHN1cHBvcnRlZDogXCIke3RoaXMuc291cmNlRm9yTm9kZShwYXJ0aWFsLCBwYXJ0aWFsLm5hbWUpfVwiIGF0IEwke1xuICAgICAgICBsb2Muc3RhcnQubGluZVxuICAgICAgfTpDJHtsb2Muc3RhcnQuY29sdW1ufWAsXG4gICAgICBwYXJ0aWFsLmxvY1xuICAgICk7XG4gIH1cblxuICBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQocGFydGlhbEJsb2NrOiBIQlMuUGFydGlhbEJsb2NrU3RhdGVtZW50KTogbmV2ZXIge1xuICAgIGxldCB7IGxvYyB9ID0gcGFydGlhbEJsb2NrO1xuXG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgYEhhbmRsZWJhcnMgcGFydGlhbCBibG9ja3MgYXJlIG5vdCBzdXBwb3J0ZWQ6IFwiJHt0aGlzLnNvdXJjZUZvck5vZGUoXG4gICAgICAgIHBhcnRpYWxCbG9jayxcbiAgICAgICAgcGFydGlhbEJsb2NrLm5hbWVcbiAgICAgICl9XCIgYXQgTCR7bG9jLnN0YXJ0LmxpbmV9OkMke2xvYy5zdGFydC5jb2x1bW59YCxcbiAgICAgIHBhcnRpYWxCbG9jay5sb2NcbiAgICApO1xuICB9XG5cbiAgRGVjb3JhdG9yKGRlY29yYXRvcjogSEJTLkRlY29yYXRvcik6IG5ldmVyIHtcbiAgICBsZXQgeyBsb2MgfSA9IGRlY29yYXRvcjtcblxuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgIGBIYW5kbGViYXJzIGRlY29yYXRvcnMgYXJlIG5vdCBzdXBwb3J0ZWQ6IFwiJHt0aGlzLnNvdXJjZUZvck5vZGUoXG4gICAgICAgIGRlY29yYXRvcixcbiAgICAgICAgZGVjb3JhdG9yLnBhdGhcbiAgICAgICl9XCIgYXQgTCR7bG9jLnN0YXJ0LmxpbmV9OkMke2xvYy5zdGFydC5jb2x1bW59YCxcbiAgICAgIGRlY29yYXRvci5sb2NcbiAgICApO1xuICB9XG5cbiAgRGVjb3JhdG9yQmxvY2soZGVjb3JhdG9yQmxvY2s6IEhCUy5EZWNvcmF0b3JCbG9jayk6IG5ldmVyIHtcbiAgICBsZXQgeyBsb2MgfSA9IGRlY29yYXRvckJsb2NrO1xuXG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgYEhhbmRsZWJhcnMgZGVjb3JhdG9yIGJsb2NrcyBhcmUgbm90IHN1cHBvcnRlZDogXCIke3RoaXMuc291cmNlRm9yTm9kZShcbiAgICAgICAgZGVjb3JhdG9yQmxvY2ssXG4gICAgICAgIGRlY29yYXRvckJsb2NrLnBhdGhcbiAgICAgICl9XCIgYXQgTCR7bG9jLnN0YXJ0LmxpbmV9OkMke2xvYy5zdGFydC5jb2x1bW59YCxcbiAgICAgIGRlY29yYXRvckJsb2NrLmxvY1xuICAgICk7XG4gIH1cblxuICBTdWJFeHByZXNzaW9uKHNleHByOiBIQlMuU3ViRXhwcmVzc2lvbik6IEFTVC5TdWJFeHByZXNzaW9uIHtcbiAgICBsZXQgeyBwYXRoLCBwYXJhbXMsIGhhc2ggfSA9IGFjY2VwdENhbGxOb2Rlcyh0aGlzLCBzZXhwcik7XG4gICAgcmV0dXJuIGIuc2V4cHIocGF0aCwgcGFyYW1zLCBoYXNoLCBzZXhwci5sb2MpO1xuICB9XG5cbiAgUGF0aEV4cHJlc3Npb24ocGF0aDogSEJTLlBhdGhFeHByZXNzaW9uKTogQVNULlBhdGhFeHByZXNzaW9uIHtcbiAgICBsZXQgeyBvcmlnaW5hbCwgbG9jIH0gPSBwYXRoO1xuICAgIGxldCBwYXJ0czogc3RyaW5nW107XG5cbiAgICBpZiAob3JpZ2luYWwuaW5kZXhPZignLycpICE9PSAtMSkge1xuICAgICAgaWYgKG9yaWdpbmFsLnNsaWNlKDAsIDIpID09PSAnLi8nKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICBgVXNpbmcgXCIuL1wiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gR2xpbW1lciBhbmQgdW5uZWNlc3Nhcnk6IFwiJHtwYXRoLm9yaWdpbmFsfVwiIG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0uYCxcbiAgICAgICAgICBwYXRoLmxvY1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKG9yaWdpbmFsLnNsaWNlKDAsIDMpID09PSAnLi4vJykge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICAgYENoYW5naW5nIGNvbnRleHQgdXNpbmcgXCIuLi9cIiBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXI6IFwiJHtwYXRoLm9yaWdpbmFsfVwiIG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0uYCxcbiAgICAgICAgICBwYXRoLmxvY1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKG9yaWdpbmFsLmluZGV4T2YoJy4nKSAhPT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAgIGBNaXhpbmcgJy4nIGFuZCAnLycgaW4gcGF0aHMgaXMgbm90IHN1cHBvcnRlZCBpbiBHbGltbWVyOyB1c2Ugb25seSAnLicgdG8gc2VwYXJhdGUgcHJvcGVydHkgcGF0aHM6IFwiJHtwYXRoLm9yaWdpbmFsfVwiIG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0uYCxcbiAgICAgICAgICBwYXRoLmxvY1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcGFydHMgPSBbcGF0aC5wYXJ0cy5qb2luKCcvJyldO1xuICAgIH0gZWxzZSBpZiAob3JpZ2luYWwgPT09ICcuJykge1xuICAgICAgbGV0IGxvY2F0aW9uSW5mbyA9IGBMJHtsb2Muc3RhcnQubGluZX06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gO1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICBgJy4nIGlzIG5vdCBhIHN1cHBvcnRlZCBwYXRoIGluIEdsaW1tZXI7IGNoZWNrIGZvciBhIHBhdGggd2l0aCBhIHRyYWlsaW5nICcuJyBhdCAke2xvY2F0aW9uSW5mb30uYCxcbiAgICAgICAgcGF0aC5sb2NcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRzID0gcGF0aC5wYXJ0cztcbiAgICB9XG5cbiAgICBsZXQgdGhpc0hlYWQgPSBmYWxzZTtcblxuICAgIC8vIFRoaXMgaXMgdG8gZml4IGEgYnVnIGluIHRoZSBIYW5kbGViYXJzIEFTVCB3aGVyZSB0aGUgcGF0aCBleHByZXNzaW9ucyBpblxuICAgIC8vIGB7e3RoaXMuZm9vfX1gIChhbmQgc2ltaWxhcmx5IGB7e2Zvby1iYXIgdGhpcy5mb28gbmFtZWQ9dGhpcy5mb299fWAgZXRjKVxuICAgIC8vIGFyZSBzaW1wbHkgdHVybmVkIGludG8gYHt7Zm9vfX1gLiBUaGUgZml4IGlzIHRvIHB1c2ggaXQgYmFjayBvbnRvIHRoZVxuICAgIC8vIHBhcnRzIGFycmF5IGFuZCBsZXQgdGhlIHJ1bnRpbWUgc2VlIHRoZSBkaWZmZXJlbmNlLiBIb3dldmVyLCB3ZSBjYW5ub3RcbiAgICAvLyBzaW1wbHkgdXNlIHRoZSBzdHJpbmcgYHRoaXNgIGFzIGl0IG1lYW5zIGxpdGVyYWxseSB0aGUgcHJvcGVydHkgY2FsbGVkXG4gICAgLy8gXCJ0aGlzXCIgaW4gdGhlIGN1cnJlbnQgY29udGV4dCAoaXQgY2FuIGJlIGV4cHJlc3NlZCBpbiB0aGUgc3ludGF4IGFzXG4gICAgLy8gYHt7W3RoaXNdfX1gLCB3aGVyZSB0aGUgc3F1YXJlIGJyYWNrZXQgYXJlIGdlbmVyYWxseSBmb3IgdGhpcyBraW5kIG9mXG4gICAgLy8gZXNjYXBpbmcg4oCTIHN1Y2ggYXMgYHt7Zm9vLltcImJhci5iYXpcIl19fWAgd291bGQgbWVhbiBsb29rdXAgYSBwcm9wZXJ0eVxuICAgIC8vIG5hbWVkIGxpdGVyYWxseSBcImJhci5iYXpcIiBvbiBgdGhpcy5mb29gKS4gQnkgY29udmVudGlvbiwgd2UgdXNlIGBudWxsYFxuICAgIC8vIGZvciB0aGlzIHB1cnBvc2UuXG4gICAgaWYgKG9yaWdpbmFsLm1hdGNoKC9edGhpcyhcXC4uKyk/JC8pKSB7XG4gICAgICB0aGlzSGVhZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdQYXRoRXhwcmVzc2lvbicsXG4gICAgICBvcmlnaW5hbDogcGF0aC5vcmlnaW5hbCxcbiAgICAgIHRoaXM6IHRoaXNIZWFkLFxuICAgICAgcGFydHMsXG4gICAgICBkYXRhOiBwYXRoLmRhdGEsXG4gICAgICBsb2M6IHBhdGgubG9jLFxuICAgIH07XG4gIH1cblxuICBIYXNoKGhhc2g6IEhCUy5IYXNoKTogQVNULkhhc2gge1xuICAgIGxldCBwYWlyczogQVNULkhhc2hQYWlyW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGFzaC5wYWlycy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IHBhaXIgPSBoYXNoLnBhaXJzW2ldO1xuICAgICAgcGFpcnMucHVzaChiLnBhaXIocGFpci5rZXksIHRoaXMuYWNjZXB0Tm9kZShwYWlyLnZhbHVlKSwgcGFpci5sb2MpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYi5oYXNoKHBhaXJzLCBoYXNoLmxvYyk7XG4gIH1cblxuICBTdHJpbmdMaXRlcmFsKHN0cmluZzogSEJTLlN0cmluZ0xpdGVyYWwpOiBBU1QuU3RyaW5nTGl0ZXJhbCB7XG4gICAgcmV0dXJuIGIubGl0ZXJhbCgnU3RyaW5nTGl0ZXJhbCcsIHN0cmluZy52YWx1ZSwgc3RyaW5nLmxvYyk7XG4gIH1cblxuICBCb29sZWFuTGl0ZXJhbChib29sZWFuOiBIQlMuQm9vbGVhbkxpdGVyYWwpOiBBU1QuQm9vbGVhbkxpdGVyYWwge1xuICAgIHJldHVybiBiLmxpdGVyYWwoJ0Jvb2xlYW5MaXRlcmFsJywgYm9vbGVhbi52YWx1ZSwgYm9vbGVhbi5sb2MpO1xuICB9XG5cbiAgTnVtYmVyTGl0ZXJhbChudW1iZXI6IEhCUy5OdW1iZXJMaXRlcmFsKTogQVNULk51bWJlckxpdGVyYWwge1xuICAgIHJldHVybiBiLmxpdGVyYWwoJ051bWJlckxpdGVyYWwnLCBudW1iZXIudmFsdWUsIG51bWJlci5sb2MpO1xuICB9XG5cbiAgVW5kZWZpbmVkTGl0ZXJhbCh1bmRlZjogSEJTLlVuZGVmaW5lZExpdGVyYWwpOiBBU1QuVW5kZWZpbmVkTGl0ZXJhbCB7XG4gICAgcmV0dXJuIGIubGl0ZXJhbCgnVW5kZWZpbmVkTGl0ZXJhbCcsIHVuZGVmaW5lZCwgdW5kZWYubG9jKTtcbiAgfVxuXG4gIE51bGxMaXRlcmFsKG51bDogSEJTLk51bGxMaXRlcmFsKTogQVNULk51bGxMaXRlcmFsIHtcbiAgICByZXR1cm4gYi5saXRlcmFsKCdOdWxsTGl0ZXJhbCcsIG51bGwsIG51bC5sb2MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZVJpZ2h0U3RyaXBwZWRPZmZzZXRzKG9yaWdpbmFsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgaWYgKHZhbHVlID09PSAnJykge1xuICAgIC8vIGlmIGl0IGlzIGVtcHR5LCBqdXN0IHJldHVybiB0aGUgY291bnQgb2YgbmV3bGluZXNcbiAgICAvLyBpbiBvcmlnaW5hbFxuICAgIHJldHVybiB7XG4gICAgICBsaW5lczogb3JpZ2luYWwuc3BsaXQoJ1xcbicpLmxlbmd0aCAtIDEsXG4gICAgICBjb2x1bW5zOiAwLFxuICAgIH07XG4gIH1cblxuICAvLyBvdGhlcndpc2UsIHJldHVybiB0aGUgbnVtYmVyIG9mIG5ld2xpbmVzIHByaW9yIHRvXG4gIC8vIGB2YWx1ZWBcbiAgbGV0IGRpZmZlcmVuY2UgPSBvcmlnaW5hbC5zcGxpdCh2YWx1ZSlbMF07XG4gIGxldCBsaW5lcyA9IGRpZmZlcmVuY2Uuc3BsaXQoL1xcbi8pO1xuICBsZXQgbGluZUNvdW50ID0gbGluZXMubGVuZ3RoIC0gMTtcblxuICByZXR1cm4ge1xuICAgIGxpbmVzOiBsaW5lQ291bnQsXG4gICAgY29sdW1uczogbGluZXNbbGluZUNvdW50XS5sZW5ndGgsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRva2VuaXplckxvY2F0aW9uKHRva2VuaXplcjogUGFyc2VyWyd0b2tlbml6ZXInXSwgY29udGVudDogSEJTLkNvbnRlbnRTdGF0ZW1lbnQpIHtcbiAgbGV0IGxpbmUgPSBjb250ZW50LmxvYy5zdGFydC5saW5lO1xuICBsZXQgY29sdW1uID0gY29udGVudC5sb2Muc3RhcnQuY29sdW1uO1xuXG4gIGxldCBvZmZzZXRzID0gY2FsY3VsYXRlUmlnaHRTdHJpcHBlZE9mZnNldHMoXG4gICAgY29udGVudC5vcmlnaW5hbCBhcyBSZWNhc3Q8SEJTLlN0cmlwRmxhZ3MsIHN0cmluZz4sXG4gICAgY29udGVudC52YWx1ZVxuICApO1xuXG4gIGxpbmUgPSBsaW5lICsgb2Zmc2V0cy5saW5lcztcbiAgaWYgKG9mZnNldHMubGluZXMpIHtcbiAgICBjb2x1bW4gPSBvZmZzZXRzLmNvbHVtbnM7XG4gIH0gZWxzZSB7XG4gICAgY29sdW1uID0gY29sdW1uICsgb2Zmc2V0cy5jb2x1bW5zO1xuICB9XG5cbiAgdG9rZW5pemVyLmxpbmUgPSBsaW5lO1xuICB0b2tlbml6ZXIuY29sdW1uID0gY29sdW1uO1xufVxuXG5mdW5jdGlvbiBhY2NlcHRDYWxsTm9kZXMoXG4gIGNvbXBpbGVyOiBIYW5kbGViYXJzTm9kZVZpc2l0b3JzLFxuICBub2RlOiB7XG4gICAgcGF0aDogSEJTLlBhdGhFeHByZXNzaW9uO1xuICAgIHBhcmFtczogSEJTLkV4cHJlc3Npb25bXTtcbiAgICBoYXNoOiBIQlMuSGFzaDtcbiAgfVxuKTogeyBwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb247IHBhcmFtczogQVNULkV4cHJlc3Npb25bXTsgaGFzaDogQVNULkhhc2ggfSB7XG4gIGxldCBwYXRoID0gY29tcGlsZXIuUGF0aEV4cHJlc3Npb24obm9kZS5wYXRoKTtcblxuICBsZXQgcGFyYW1zID0gbm9kZS5wYXJhbXMgPyBub2RlLnBhcmFtcy5tYXAoKGUpID0+IGNvbXBpbGVyLmFjY2VwdE5vZGU8QVNULkV4cHJlc3Npb24+KGUpKSA6IFtdO1xuICBsZXQgaGFzaCA9IG5vZGUuaGFzaCA/IGNvbXBpbGVyLkhhc2gobm9kZS5oYXNoKSA6IGIuaGFzaCgpO1xuXG4gIHJldHVybiB7IHBhdGgsIHBhcmFtcywgaGFzaCB9O1xufVxuXG5mdW5jdGlvbiBhZGRFbGVtZW50TW9kaWZpZXIoZWxlbWVudDogVGFnPCdTdGFydFRhZyc+LCBtdXN0YWNoZTogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCwgbG9jIH0gPSBtdXN0YWNoZTtcblxuICBpZiAoaXNMaXRlcmFsKHBhdGgpKSB7XG4gICAgbGV0IG1vZGlmaWVyID0gYHt7JHtwcmludExpdGVyYWwocGF0aCl9fX1gO1xuICAgIGxldCB0YWcgPSBgPCR7ZWxlbWVudC5uYW1lfSAuLi4gJHttb2RpZmllcn0gLi4uYDtcblxuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgIGBJbiAke3RhZ30sICR7bW9kaWZpZXJ9IGlzIG5vdCBhIHZhbGlkIG1vZGlmaWVyOiBcIiR7cGF0aC5vcmlnaW5hbH1cIiBvbiBsaW5lICR7XG4gICAgICAgIGxvYyAmJiBsb2Muc3RhcnQubGluZVxuICAgICAgfS5gLFxuICAgICAgbXVzdGFjaGUubG9jXG4gICAgKTtcbiAgfVxuXG4gIGxldCBtb2RpZmllciA9IGIuZWxlbWVudE1vZGlmaWVyKHBhdGgsIHBhcmFtcywgaGFzaCwgbG9jKTtcbiAgZWxlbWVudC5tb2RpZmllcnMucHVzaChtb2RpZmllcik7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZER5bmFtaWNBdHRyaWJ1dGVWYWx1ZVBhcnQoYXR0cmlidXRlOiBBdHRyaWJ1dGUsIHBhcnQ6IEFTVC5NdXN0YWNoZVN0YXRlbWVudCkge1xuICBhdHRyaWJ1dGUuaXNEeW5hbWljID0gdHJ1ZTtcbiAgYXR0cmlidXRlLnBhcnRzLnB1c2gocGFydCk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyL2hhbmRsZWJhcnMtbm9kZS12aXNpdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0EsSUFBTSxzQkFBTixHQUFBLGFBQUEsVUFBQSxPQUFBLEVBQUE7QUFBQSxFQUFBLGNBQUEsQ0FBQSxzQkFBQSxFQUFBLE9BQUEsQ0FBQTs7QUFBQSxXQUFBLHNCQUFBLEdBQUE7QUFBQSxXQUFBLE9BQUEsQ0FBQSxLQUFBLENBQUEsSUFBQSxFQUFBLFNBQUEsS0FBQSxJQUFBO0FBQUE7O0FBQUEsTUFBQSxNQUFBLEdBQUEsc0JBQUEsQ0FBQSxTQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLE9BQUEsR0FZRSxTQUFBLE9BQUEsQ0FBQSxPQUFBLEVBQTRCO0FBQzFCLFFBQUksSUFBSSxHQUFSLEVBQUE7QUFDQSxRQUFBLElBQUE7O0FBRUEsUUFBSSxLQUFKLFVBQUEsRUFBcUI7QUFDbkIsTUFBQSxJQUFJLEdBQUcsa0JBQUEsUUFBQSxDQUFBLElBQUEsRUFBaUIsT0FBTyxDQUF4QixXQUFBLEVBQXNDLE9BQU8sQ0FBcEQsR0FBTyxDQUFQO0FBREYsS0FBQSxNQUVPO0FBQ0wsTUFBQSxJQUFJLEdBQUcsa0JBQUEsV0FBQSxDQUFBLElBQUEsRUFBb0IsT0FBTyxDQUEzQixXQUFBLEVBQXlDLE9BQU8sQ0FBaEQsT0FBQSxFQUEwRCxPQUFPLENBQXhFLEdBQU8sQ0FBUDtBQUNEOztBQUVELFFBQUEsQ0FBQTtBQUFBLFFBQ0UsQ0FBQyxHQUFHLE9BQU8sQ0FBUCxJQUFBLENBRE4sTUFBQTtBQUdBLFNBQUEsWUFBQSxDQUFBLElBQUEsQ0FBQSxJQUFBOztBQUVBLFFBQUksQ0FBQyxLQUFMLENBQUEsRUFBYTtBQUNYLGFBQU8sS0FBQSxZQUFBLENBQVAsR0FBTyxFQUFQO0FBQ0Q7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cnQgYiBmcm9tICcuLi9idWlsZGVycyc7XG5pbXBvcnQgeyBhcHBlbmRDaGlsZCwgaXNMaXRlcmFsLCBwcmludExpdGVyYWwgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgKiBhcyBBU1QgZnJvbSAnLi4vdHlwZXMvbm9kZXMnO1xuaW1wb3J0ICogYXMgSEJTIGZyb20gJy4uL3R5cGVzL2hhbmRsZWJhcnMtYXN0JztcbmltcG9ydCB7IFBhcnNlciwgVGFnLCBBdHRyaWJ1dGUgfSBmcm9tICcuLi9wYXJzZXInO1xuaW1wb3J0IFN5bnRheEVycm9yIGZyb20gJy4uL2Vycm9ycy9zeW50YXgtZXJyb3InO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBSZWNhc3QgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRva2VuaXplclN0YXRlIH0gZnJvbSAnc2ltcGxlLWh0bWwtdG9rZW5pemVyJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEhhbmRsZWJhcnNOb2RlVmlzaXRvcnMgZXh0ZW5kcyBQYXJzZXIge1xuICBhYnN0cmFjdCBhcHBlbmRUb0NvbW1lbnREYXRhKHM6IHN0cmluZyk6IHZvaWQ7XG4gIGFic3RyYWN0IGJlZ2luQXR0cmlidXRlVmFsdWUocXVvdGVkOiBib29sZWFuKTogdm9pZDtcbiAgYWJzdHJhY3QgZmluaXNoQXR0cmlidXRlVmFsdWUoKTogdm9pZDtcblxuICBwcml2YXRlIGdldCBpc1RvcExldmVsKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjay5sZW5ndGggPT09IDA7XG4gIH1cblxuICBQcm9ncmFtKHByb2dyYW06IEhCUy5Qcm9ncmFtKTogQVNULkJsb2NrO1xuICBQcm9ncmFtKHByb2dyYW06IEhCUy5Qcm9ncmFtKTogQVNULlRlbXBsYXRlO1xuICBQcm9ncmFtKHByb2dyYW06IEhCUy5Qcm9ncmFtKTogQVNULlRlbXBsYXRlIHwgQVNULkJsb2NrO1xuICBQcm9ncmFtKHByb2dyYW06IEhCUy5Qcm9ncmFtKTogQVNULkJsb2NrIHwgQVNULlRlbXBsYXRlIHtcbiAgICBsZXQgYm9keTogQVNULlN0YXRlbWVudFtdID0gW107XG4gICAgbGV0IG5vZGU7XG5cbiAgICBpZiAodGhpcy5pc1RvcExldmVsKSB7XG4gICAgICBub2RlID0gYi50ZW1wbGF0ZShib2R5LCBwcm9ncmFtLmJsb2NrUGFyYW1zLCBwcm9ncmFtLmxvYyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSBiLmJsb2NrSXRzZWxmKGJvZHksIHByb2dyYW0uYmxvY2tQYXJhbXMsIHByb2dyYW0uY2hhaW5lZCwgcHJvZ3JhbS5sb2MpO1xuICAgIH1cblxuICAgIGxldCBpLFxuICAgICAgbCA9IHByb2dyYW0uYm9keS5sZW5ndGg7XG5cbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKG5vZGUpO1xuXG4gICAgaWYgKGwgPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjay5wb3AoKSBhcyBBU1QuQmxvY2sgfCBBU1QuVGVtcGxhdGU7XG4gICAgfVxuXG4gICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgdGhpcy5hY2NlcHROb2RlKHByb2dyYW0uYm9keVtpXSk7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIHRoYXQgdGhhdCB0aGUgZWxlbWVudCBzdGFjayBpcyBiYWxhbmNlZCBwcm9wZXJseS5cbiAgICBsZXQgcG9wcGVkTm9kZSA9IHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpO1xuICAgIGlmIChwb3BwZWROb2RlICE9PSBub2RlKSB7XG4gICAgICBsZXQgZWxlbWVudE5vZGUgPSBwb3BwZWROb2RlIGFzIEFTVC5FbGVtZW50Tm9kZTtcblxuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAnVW5jbG9zZWQgZWxlbWVudCBgJyArIGVsZW1lbnROb2RlLnRhZyArICdgIChvbiBsaW5lICcgKyBlbGVtZW50Tm9kZS5sb2MhLnN0YXJ0LmxpbmUgKyAnKS4nLFxuICAgICAgICBlbGVtZW50Tm9kZS5sb2NcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBCbG9ja1N0YXRlbWVudChibG9jazogSEJTLkJsb2NrU3RhdGVtZW50KTogQVNULkJsb2NrU3RhdGVtZW50IHwgdm9pZCB7XG4gICAgaWYgKHRoaXMudG9rZW5pemVyLnN0YXRlID09PSBUb2tlbml6ZXJTdGF0ZS5jb21tZW50KSB7XG4gICAgICB0aGlzLmFwcGVuZFRvQ29tbWVudERhdGEodGhpcy5zb3VyY2VGb3JOb2RlKGJsb2NrKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgIT09IFRva2VuaXplclN0YXRlLmRhdGEgJiZcbiAgICAgIHRoaXMudG9rZW5pemVyWydzdGF0ZSddICE9PSBUb2tlbml6ZXJTdGF0ZS5iZWZvcmVEYXRhXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICdBIGJsb2NrIG1heSBvbmx5IGJlIHVzZWQgaW5zaWRlIGFuIEhUTUwgZWxlbWVudCBvciBhbm90aGVyIGJsb2NrLicsXG4gICAgICAgIGJsb2NrLmxvY1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgeyBwYXRoLCBwYXJhbXMsIGhhc2ggfSA9IGFjY2VwdENhbGxOb2Rlcyh0aGlzLCBibG9jayk7XG4gICAgbGV0IHByb2dyYW0gPSB0aGlzLlByb2dyYW0oYmxvY2sucHJvZ3JhbSk7XG4gICAgbGV0IGludmVyc2UgPSBibG9jay5pbnZlcnNlID8gdGhpcy5Qcm9ncmFtKGJsb2NrLmludmVyc2UpIDogbnVsbDtcblxuICAgIGxldCBub2RlID0gYi5ibG9jayhcbiAgICAgIHBhdGgsXG4gICAgICBwYXJhbXMsXG4gICAgICBoYXNoLFxuICAgICAgcHJvZ3JhbSxcbiAgICAgIGludmVyc2UsXG4gICAgICBibG9jay5sb2MsXG4gICAgICBibG9jay5vcGVuU3RyaXAsXG4gICAgICBibG9jay5pbnZlcnNlU3RyaXAsXG4gICAgICBibG9jay5jbG9zZVN0cmlwXG4gICAgKTtcblxuICAgIGxldCBwYXJlbnRQcm9ncmFtID0gdGhpcy5jdXJyZW50RWxlbWVudCgpO1xuXG4gICAgYXBwZW5kQ2hpbGQocGFyZW50UHJvZ3JhbSwgbm9kZSk7XG4gIH1cblxuICBNdXN0YWNoZVN0YXRlbWVudChyYXdNdXN0YWNoZTogSEJTLk11c3RhY2hlU3RhdGVtZW50KTogQVNULk11c3RhY2hlU3RhdGVtZW50IHwgdm9pZCB7XG4gICAgbGV0IHsgdG9rZW5pemVyIH0gPSB0aGlzO1xuXG4gICAgaWYgKHRva2VuaXplci5zdGF0ZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICB0aGlzLmFwcGVuZFRvQ29tbWVudERhdGEodGhpcy5zb3VyY2VGb3JOb2RlKHJhd011c3RhY2hlKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IG11c3RhY2hlOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQ7XG4gICAgbGV0IHsgZXNjYXBlZCwgbG9jLCBzdHJpcCB9ID0gcmF3TXVzdGFjaGU7XG5cbiAgICBpZiAoaXNMaXRlcmFsKHJhd011c3RhY2hlLnBhdGgpKSB7XG4gICAgICBtdXN0YWNoZSA9IHtcbiAgICAgICAgdHlwZTogJ011c3RhY2hlU3RhdGVtZW50JyxcbiAgICAgICAgcGF0aDogdGhpcy5hY2NlcHROb2RlPEFTVC5MaXRlcmFsPihyYXdNdXN0YWNoZS5wYXRoKSxcbiAgICAgICAgcGFyYW1zOiBbXSxcbiAgICAgICAgaGFzaDogYi5oYXNoKCksXG4gICAgICAgIGVzY2FwZWQsXG4gICAgICAgIGxvYyxcbiAgICAgICAgc3RyaXAsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgeyBwYXRoLCBwYXJhbXMsIGhhc2ggfSA9IGFjY2VwdENhbGxOb2RlcyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgcmF3TXVzdGFjaGUgYXMgSEJTLk11c3RhY2hlU3RhdGVtZW50ICYge1xuICAgICAgICAgIHBhdGg6IEhCUy5QYXRoRXhwcmVzc2lvbjtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIG11c3RhY2hlID0gYi5tdXN0YWNoZShwYXRoLCBwYXJhbXMsIGhhc2gsICFlc2NhcGVkLCBsb2MsIHN0cmlwKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRva2VuaXplci5zdGF0ZSkge1xuICAgICAgLy8gVGFnIGhlbHBlcnNcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUudGFnT3BlbjpcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUudGFnTmFtZTpcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAgIGBDYW5ub3QgdXNlIG11c3RhY2hlcyBpbiBhbiBlbGVtZW50cyB0YWduYW1lOiBcXGAke3RoaXMuc291cmNlRm9yTm9kZShcbiAgICAgICAgICAgIHJhd011c3RhY2hlLFxuICAgICAgICAgICAgcmF3TXVzdGFjaGUucGF0aFxuICAgICAgICAgICl9XFxgIGF0IEwke2xvYy5zdGFydC5saW5lfTpDJHtsb2Muc3RhcnQuY29sdW1ufWAsXG4gICAgICAgICAgbXVzdGFjaGUubG9jXG4gICAgICAgICk7XG5cbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYmVmb3JlQXR0cmlidXRlTmFtZTpcbiAgICAgICAgYWRkRWxlbWVudE1vZGlmaWVyKHRoaXMuY3VycmVudFN0YXJ0VGFnLCBtdXN0YWNoZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5hdHRyaWJ1dGVOYW1lOlxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5hZnRlckF0dHJpYnV0ZU5hbWU6XG4gICAgICAgIHRoaXMuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgYWRkRWxlbWVudE1vZGlmaWVyKHRoaXMuY3VycmVudFN0YXJ0VGFnLCBtdXN0YWNoZSk7XG4gICAgICAgIHRva2VuaXplci50cmFuc2l0aW9uVG8oVG9rZW5pemVyU3RhdGUuYmVmb3JlQXR0cmlidXRlTmFtZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5hZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkOlxuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50U3RhcnRUYWcsIG11c3RhY2hlKTtcbiAgICAgICAgdG9rZW5pemVyLnRyYW5zaXRpb25UbyhUb2tlbml6ZXJTdGF0ZS5iZWZvcmVBdHRyaWJ1dGVOYW1lKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZXNcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYmVmb3JlQXR0cmlidXRlVmFsdWU6XG4gICAgICAgIHRoaXMuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIGFwcGVuZER5bmFtaWNBdHRyaWJ1dGVWYWx1ZVBhcnQodGhpcy5jdXJyZW50QXR0cmlidXRlISwgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIudHJhbnNpdGlvblRvKFRva2VuaXplclN0YXRlLmF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWQ6XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkOlxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5hdHRyaWJ1dGVWYWx1ZVVucXVvdGVkOlxuICAgICAgICBhcHBlbmREeW5hbWljQXR0cmlidXRlVmFsdWVQYXJ0KHRoaXMuY3VycmVudEF0dHJpYnV0ZSEsIG11c3RhY2hlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIFRPRE86IE9ubHkgYXBwZW5kIGNoaWxkIHdoZW4gdGhlIHRva2VuaXplciBzdGF0ZSBtYWtlc1xuICAgICAgLy8gc2Vuc2UgdG8gZG8gc28sIG90aGVyd2lzZSB0aHJvdyBhbiBlcnJvci5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFwcGVuZENoaWxkKHRoaXMuY3VycmVudEVsZW1lbnQoKSwgbXVzdGFjaGUpO1xuICAgIH1cblxuICAgIHJldHVybiBtdXN0YWNoZTtcbiAgfVxuXG4gIENvbnRlbnRTdGF0ZW1lbnQoY29udGVudDogSEJTLkNvbnRlbnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB1cGRhdGVUb2tlbml6ZXJMb2NhdGlvbih0aGlzLnRva2VuaXplciwgY29udGVudCk7XG5cbiAgICB0aGlzLnRva2VuaXplci50b2tlbml6ZVBhcnQoY29udGVudC52YWx1ZSk7XG4gICAgdGhpcy50b2tlbml6ZXIuZmx1c2hEYXRhKCk7XG4gIH1cblxuICBDb21tZW50U3RhdGVtZW50KHJhd0NvbW1lbnQ6IEhCUy5Db21tZW50U3RhdGVtZW50KTogT3B0aW9uPEFTVC5NdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQ+IHtcbiAgICBsZXQgeyB0b2tlbml6ZXIgfSA9IHRoaXM7XG5cbiAgICBpZiAodG9rZW5pemVyLnN0YXRlID09PSBUb2tlbml6ZXJTdGF0ZS5jb21tZW50KSB7XG4gICAgICB0aGlzLmFwcGVuZFRvQ29tbWVudERhdGEodGhpcy5zb3VyY2VGb3JOb2RlKHJhd0NvbW1lbnQpKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB7IHZhbHVlLCBsb2MgfSA9IHJhd0NvbW1lbnQ7XG4gICAgbGV0IGNvbW1lbnQgPSBiLm11c3RhY2hlQ29tbWVudCh2YWx1ZSwgbG9jKTtcblxuICAgIHN3aXRjaCAodG9rZW5pemVyLnN0YXRlKSB7XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmJlZm9yZUF0dHJpYnV0ZU5hbWU6XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmFmdGVyQXR0cmlidXRlTmFtZTpcbiAgICAgICAgdGhpcy5jdXJyZW50U3RhcnRUYWcuY29tbWVudHMucHVzaChjb21tZW50KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYmVmb3JlRGF0YTpcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuZGF0YTpcbiAgICAgICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCBjb21tZW50KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICBgVXNpbmcgYSBIYW5kbGViYXJzIGNvbW1lbnQgd2hlbiBpbiB0aGUgXFxgJHt0b2tlbml6ZXJbJ3N0YXRlJ119XFxgIHN0YXRlIGlzIG5vdCBzdXBwb3J0ZWQ6IFwiJHtjb21tZW50LnZhbHVlfVwiIG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX06JHtsb2Muc3RhcnQuY29sdW1ufWAsXG4gICAgICAgICAgcmF3Q29tbWVudC5sb2NcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tbWVudDtcbiAgfVxuXG4gIFBhcnRpYWxTdGF0ZW1lbnQocGFydGlhbDogSEJTLlBhcnRpYWxTdGF0ZW1lbnQpOiBuZXZlciB7XG4gICAgbGV0IHsgbG9jIH0gPSBwYXJ0aWFsO1xuXG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgYEhhbmRsZWJhcnMgcGFydGlhbHMgYXJlIG5vdCBzdXBwb3J0ZWQ6IFwiJHt0aGlzLnNvdXJjZUZvck5vZGUocGFydGlhbCwgcGFydGlhbC5uYW1lKX1cIiBhdCBMJHtcbiAgICAgICAgbG9jLnN0YXJ0LmxpbmVcbiAgICAgIH06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgcGFydGlhbC5sb2NcbiAgICApO1xuICB9XG5cbiAgUGFydGlhbEJsb2NrU3RhdGVtZW50KHBhcnRpYWxCbG9jazogSEJTLlBhcnRpYWxCbG9ja1N0YXRlbWVudCk6IG5ldmVyIHtcbiAgICBsZXQgeyBsb2MgfSA9IHBhcnRpYWxCbG9jaztcblxuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgIGBIYW5kbGViYXJzIHBhcnRpYWwgYmxvY2tzIGFyZSBub3Qgc3VwcG9ydGVkOiBcIiR7dGhpcy5zb3VyY2VGb3JOb2RlKFxuICAgICAgICBwYXJ0aWFsQmxvY2ssXG4gICAgICAgIHBhcnRpYWxCbG9jay5uYW1lXG4gICAgICApfVwiIGF0IEwke2xvYy5zdGFydC5saW5lfTpDJHtsb2Muc3RhcnQuY29sdW1ufWAsXG4gICAgICBwYXJ0aWFsQmxvY2subG9jXG4gICAgKTtcbiAgfVxuXG4gIERlY29yYXRvcihkZWNvcmF0b3I6IEhCUy5EZWNvcmF0b3IpOiBuZXZlciB7XG4gICAgbGV0IHsgbG9jIH0gPSBkZWNvcmF0b3I7XG5cbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgSGFuZGxlYmFycyBkZWNvcmF0b3JzIGFyZSBub3Qgc3VwcG9ydGVkOiBcIiR7dGhpcy5zb3VyY2VGb3JOb2RlKFxuICAgICAgICBkZWNvcmF0b3IsXG4gICAgICAgIGRlY29yYXRvci5wYXRoXG4gICAgICApfVwiIGF0IEwke2xvYy5zdGFydC5saW5lfTpDJHtsb2Muc3RhcnQuY29sdW1ufWAsXG4gICAgICBkZWNvcmF0b3IubG9jXG4gICAgKTtcbiAgfVxuXG4gIERlY29yYXRvckJsb2NrKGRlY29yYXRvckJsb2NrOiBIQlMuRGVjb3JhdG9yQmxvY2spOiBuZXZlciB7XG4gICAgbGV0IHsgbG9jIH0gPSBkZWNvcmF0b3JCbG9jaztcblxuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgIGBIYW5kbGViYXJzIGRlY29yYXRvciBibG9ja3MgYXJlIG5vdCBzdXBwb3J0ZWQ6IFwiJHt0aGlzLnNvdXJjZUZvck5vZGUoXG4gICAgICAgIGRlY29yYXRvckJsb2NrLFxuICAgICAgICBkZWNvcmF0b3JCbG9jay5wYXRoXG4gICAgICApfVwiIGF0IEwke2xvYy5zdGFydC5saW5lfTpDJHtsb2Muc3RhcnQuY29sdW1ufWAsXG4gICAgICBkZWNvcmF0b3JCbG9jay5sb2NcbiAgICApO1xuICB9XG5cbiAgU3ViRXhwcmVzc2lvbihzZXhwcjogSEJTLlN1YkV4cHJlc3Npb24pOiBBU1QuU3ViRXhwcmVzc2lvbiB7XG4gICAgbGV0IHsgcGF0aCwgcGFyYW1zLCBoYXNoIH0gPSBhY2NlcHRDYWxsTm9kZXModGhpcywgc2V4cHIpO1xuICAgIHJldHVybiBiLnNleHByKHBhdGgsIHBhcmFtcywgaGFzaCwgc2V4cHIubG9jKTtcbiAgfVxuXG4gIFBhdGhFeHByZXNzaW9uKHBhdGg6IEhCUy5QYXRoRXhwcmVzc2lvbik6IEFTVC5QYXRoRXhwcmVzc2lvbiB7XG4gICAgbGV0IHsgb3JpZ2luYWwsIGxvYyB9ID0gcGF0aDtcbiAgICBsZXQgcGFydHM6IHN0cmluZ1tdO1xuXG4gICAgaWYgKG9yaWdpbmFsLmluZGV4T2YoJy8nKSAhPT0gLTEpIHtcbiAgICAgIGlmIChvcmlnaW5hbC5zbGljZSgwLCAyKSA9PT0gJy4vJykge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICAgYFVzaW5nIFwiLi9cIiBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXIgYW5kIHVubmVjZXNzYXJ5OiBcIiR7cGF0aC5vcmlnaW5hbH1cIiBvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9LmAsXG4gICAgICAgICAgcGF0aC5sb2NcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcmlnaW5hbC5zbGljZSgwLCAzKSA9PT0gJy4uLycpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAgIGBDaGFuZ2luZyBjb250ZXh0IHVzaW5nIFwiLi4vXCIgaXMgbm90IHN1cHBvcnRlZCBpbiBHbGltbWVyOiBcIiR7cGF0aC5vcmlnaW5hbH1cIiBvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9LmAsXG4gICAgICAgICAgcGF0aC5sb2NcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcmlnaW5hbC5pbmRleE9mKCcuJykgIT09IC0xKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICBgTWl4aW5nICcuJyBhbmQgJy8nIGluIHBhdGhzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gR2xpbW1lcjsgdXNlIG9ubHkgJy4nIHRvIHNlcGFyYXRlIHByb3BlcnR5IHBhdGhzOiBcIiR7cGF0aC5vcmlnaW5hbH1cIiBvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9LmAsXG4gICAgICAgICAgcGF0aC5sb2NcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHBhcnRzID0gW3BhdGgucGFydHMuam9pbignLycpXTtcbiAgICB9IGVsc2UgaWYgKG9yaWdpbmFsID09PSAnLicpIHtcbiAgICAgIGxldCBsb2NhdGlvbkluZm8gPSBgTCR7bG9jLnN0YXJ0LmxpbmV9OkMke2xvYy5zdGFydC5jb2x1bW59YDtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgYCcuJyBpcyBub3QgYSBzdXBwb3J0ZWQgcGF0aCBpbiBHbGltbWVyOyBjaGVjayBmb3IgYSBwYXRoIHdpdGggYSB0cmFpbGluZyAnLicgYXQgJHtsb2NhdGlvbkluZm99LmAsXG4gICAgICAgIHBhdGgubG9jXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0cyA9IHBhdGgucGFydHM7XG4gICAgfVxuXG4gICAgbGV0IHRoaXNIZWFkID0gZmFsc2U7XG5cbiAgICAvLyBUaGlzIGlzIHRvIGZpeCBhIGJ1ZyBpbiB0aGUgSGFuZGxlYmFycyBBU1Qgd2hlcmUgdGhlIHBhdGggZXhwcmVzc2lvbnMgaW5cbiAgICAvLyBge3t0aGlzLmZvb319YCAoYW5kIHNpbWlsYXJseSBge3tmb28tYmFyIHRoaXMuZm9vIG5hbWVkPXRoaXMuZm9vfX1gIGV0YylcbiAgICAvLyBhcmUgc2ltcGx5IHR1cm5lZCBpbnRvIGB7e2Zvb319YC4gVGhlIGZpeCBpcyB0byBwdXNoIGl0IGJhY2sgb250byB0aGVcbiAgICAvLyBwYXJ0cyBhcnJheSBhbmQgbGV0IHRoZSBydW50aW1lIHNlZSB0aGUgZGlmZmVyZW5jZS4gSG93ZXZlciwgd2UgY2Fubm90XG4gICAgLy8gc2ltcGx5IHVzZSB0aGUgc3RyaW5nIGB0aGlzYCBhcyBpdCBtZWFucyBsaXRlcmFsbHkgdGhlIHByb3BlcnR5IGNhbGxlZFxuICAgIC8vIFwidGhpc1wiIGluIHRoZSBjdXJyZW50IGNvbnRleHQgKGl0IGNhbiBiZSBleHByZXNzZWQgaW4gdGhlIHN5bnRheCBhc1xuICAgIC8vIGB7e1t0aGlzXX19YCwgd2hlcmUgdGhlIHNxdWFyZSBicmFja2V0IGFyZSBnZW5lcmFsbHkgZm9yIHRoaXMga2luZCBvZlxuICAgIC8vIGVzY2FwaW5nIOKAkyBzdWNoIGFzIGB7e2Zvby5bXCJiYXIuYmF6XCJdfX1gIHdvdWxkIG1lYW4gbG9va3VwIGEgcHJvcGVydHlcbiAgICAvLyBuYW1lZCBsaXRlcmFsbHkgXCJiYXIuYmF6XCIgb24gYHRoaXMuZm9vYCkuIEJ5IGNvbnZlbnRpb24sIHdlIHVzZSBgbnVsbGBcbiAgICAvLyBmb3IgdGhpcyBwdXJwb3NlLlxuICAgIGlmIChvcmlnaW5hbC5tYXRjaCgvXnRoaXMoXFwuLispPyQvKSkge1xuICAgICAgdGhpc0hlYWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLFxuICAgICAgb3JpZ2luYWw6IHBhdGgub3JpZ2luYWwsXG4gICAgICB0aGlzOiB0aGlzSGVhZCxcbiAgICAgIHBhcnRzLFxuICAgICAgZGF0YTogcGF0aC5kYXRhLFxuICAgICAgbG9jOiBwYXRoLmxvYyxcbiAgICB9O1xuICB9XG5cbiAgSGFzaChoYXNoOiBIQlMuSGFzaCk6IEFTVC5IYXNoIHtcbiAgICBsZXQgcGFpcnM6IEFTVC5IYXNoUGFpcltdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhhc2gucGFpcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBwYWlyID0gaGFzaC5wYWlyc1tpXTtcbiAgICAgIHBhaXJzLnB1c2goYi5wYWlyKHBhaXIua2V5LCB0aGlzLmFjY2VwdE5vZGUocGFpci52YWx1ZSksIHBhaXIubG9jKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGIuaGFzaChwYWlycywgaGFzaC5sb2MpO1xuICB9XG5cbiAgU3RyaW5nTGl0ZXJhbChzdHJpbmc6IEhCUy5TdHJpbmdMaXRlcmFsKTogQVNULlN0cmluZ0xpdGVyYWwge1xuICAgIHJldHVybiBiLmxpdGVyYWwoJ1N0cmluZ0xpdGVyYWwnLCBzdHJpbmcudmFsdWUsIHN0cmluZy5sb2MpO1xuICB9XG5cbiAgQm9vbGVhbkxpdGVyYWwoYm9vbGVhbjogSEJTLkJvb2xlYW5MaXRlcmFsKTogQVNULkJvb2xlYW5MaXRlcmFsIHtcbiAgICByZXR1cm4gYi5saXRlcmFsKCdCb29sZWFuTGl0ZXJhbCcsIGJvb2xlYW4udmFsdWUsIGJvb2xlYW4ubG9jKTtcbiAgfVxuXG4gIE51bWJlckxpdGVyYWwobnVtYmVyOiBIQlMuTnVtYmVyTGl0ZXJhbCk6IEFTVC5OdW1iZXJMaXRlcmFsIHtcbiAgICByZXR1cm4gYi5saXRlcmFsKCdOdW1iZXJMaXRlcmFsJywgbnVtYmVyLnZhbHVlLCBudW1iZXIubG9jKTtcbiAgfVxuXG4gIFVuZGVmaW5lZExpdGVyYWwodW5kZWY6IEhCUy5VbmRlZmluZWRMaXRlcmFsKTogQVNULlVuZGVmaW5lZExpdGVyYWwge1xuICAgIHJldHVybiBiLmxpdGVyYWwoJ1VuZGVmaW5lZExpdGVyYWwnLCB1bmRlZmluZWQsIHVuZGVmLmxvYyk7XG4gIH1cblxuICBOdWxsTGl0ZXJhbChudWw6IEhCUy5OdWxsTGl0ZXJhbCk6IEFTVC5OdWxsTGl0ZXJhbCB7XG4gICAgcmV0dXJuIGIubGl0ZXJhbCgnTnVsbExpdGVyYWwnLCBudWxsLCBudWwubG9jKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVSaWdodFN0cmlwcGVkT2Zmc2V0cyhvcmlnaW5hbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAvLyBpZiBpdCBpcyBlbXB0eSwganVzdCByZXR1cm4gdGhlIGNvdW50IG9mIG5ld2xpbmVzXG4gICAgLy8gaW4gb3JpZ2luYWxcbiAgICByZXR1cm4ge1xuICAgICAgbGluZXM6IG9yaWdpbmFsLnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxLFxuICAgICAgY29sdW1uczogMCxcbiAgICB9O1xuICB9XG5cbiAgLy8gb3RoZXJ3aXNlLCByZXR1cm4gdGhlIG51bWJlciBvZiBuZXdsaW5lcyBwcmlvciB0b1xuICAvLyBgdmFsdWVgXG4gIGxldCBkaWZmZXJlbmNlID0gb3JpZ2luYWwuc3BsaXQodmFsdWUpWzBdO1xuICBsZXQgbGluZXMgPSBkaWZmZXJlbmNlLnNwbGl0KC9cXG4vKTtcbiAgbGV0IGxpbmVDb3VudCA9IGxpbmVzLmxlbmd0aCAtIDE7XG5cbiAgcmV0dXJuIHtcbiAgICBsaW5lczogbGluZUNvdW50LFxuICAgIGNvbHVtbnM6IGxpbmVzW2xpbmVDb3VudF0ubGVuZ3RoLFxuICB9O1xufVxuXG5mdW5jdGlvbiB1cGRhdGVUb2tlbml6ZXJMb2NhdGlvbih0b2tlbml6ZXI6IFBhcnNlclsndG9rZW5pemVyJ10sIGNvbnRlbnQ6IEhCUy5Db250ZW50U3RhdGVtZW50KSB7XG4gIGxldCBsaW5lID0gY29udGVudC5sb2Muc3RhcnQubGluZTtcbiAgbGV0IGNvbHVtbiA9IGNvbnRlbnQubG9jLnN0YXJ0LmNvbHVtbjtcblxuICBsZXQgb2Zmc2V0cyA9IGNhbGN1bGF0ZVJpZ2h0U3RyaXBwZWRPZmZzZXRzKFxuICAgIGNvbnRlbnQub3JpZ2luYWwgYXMgUmVjYXN0PEhCUy5TdHJpcEZsYWdzLCBzdHJpbmc+LFxuICAgIGNvbnRlbnQudmFsdWVcbiAgKTtcblxuICBsaW5lID0gbGluZSArIG9mZnNldHMubGluZXM7XG4gIGlmIChvZmZzZXRzLmxpbmVzKSB7XG4gICAgY29sdW1uID0gb2Zmc2V0cy5jb2x1bW5zO1xuICB9IGVsc2Uge1xuICAgIGNvbHVtbiA9IGNvbHVtbiArIG9mZnNldHMuY29sdW1ucztcbiAgfVxuXG4gIHRva2VuaXplci5saW5lID0gbGluZTtcbiAgdG9rZW5pemVyLmNvbHVtbiA9IGNvbHVtbjtcbn1cblxuZnVuY3Rpb24gYWNjZXB0Q2FsbE5vZGVzKFxuICBjb21waWxlcjogSGFuZGxlYmFyc05vZGVWaXNpdG9ycyxcbiAgbm9kZToge1xuICAgIHBhdGg6IEhCUy5QYXRoRXhwcmVzc2lvbjtcbiAgICBwYXJhbXM6IEhCUy5FeHByZXNzaW9uW107XG4gICAgaGFzaDogSEJTLkhhc2g7XG4gIH1cbik6IHsgcGF0aDogQVNULlBhdGhFeHByZXNzaW9uOyBwYXJhbXM6IEFTVC5FeHByZXNzaW9uW107IGhhc2g6IEFTVC5IYXNoIH0ge1xuICBsZXQgcGF0aCA9IGNvbXBpbGVyLlBhdGhFeHByZXNzaW9uKG5vZGUucGF0aCk7XG5cbiAgbGV0IHBhcmFtcyA9IG5vZGUucGFyYW1zID8gbm9kZS5wYXJhbXMubWFwKChlKSA9PiBjb21waWxlci5hY2NlcHROb2RlPEFTVC5FeHByZXNzaW9uPihlKSkgOiBbXTtcbiAgbGV0IGhhc2ggPSBub2RlLmhhc2ggPyBjb21waWxlci5IYXNoKG5vZGUuaGFzaCkgOiBiLmhhc2goKTtcblxuICByZXR1cm4geyBwYXRoLCBwYXJhbXMsIGhhc2ggfTtcbn1cblxuZnVuY3Rpb24gYWRkRWxlbWVudE1vZGlmaWVyKGVsZW1lbnQ6IFRhZzwnU3RhcnRUYWcnPiwgbXVzdGFjaGU6IEFTVC5NdXN0YWNoZVN0YXRlbWVudCkge1xuICBsZXQgeyBwYXRoLCBwYXJhbXMsIGhhc2gsIGxvYyB9ID0gbXVzdGFjaGU7XG5cbiAgaWYgKGlzTGl0ZXJhbChwYXRoKSkge1xuICAgIGxldCBtb2RpZmllciA9IGB7eyR7cHJpbnRMaXRlcmFsKHBhdGgpfX19YDtcbiAgICBsZXQgdGFnID0gYDwke2VsZW1lbnQubmFtZX0gLi4uICR7bW9kaWZpZXJ9IC4uLmA7XG5cbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgSW4gJHt0YWd9LCAke21vZGlmaWVyfSBpcyBub3QgYSB2YWxpZCBtb2RpZmllcjogXCIke3BhdGgub3JpZ2luYWx9XCIgb24gbGluZSAke1xuICAgICAgICBsb2MgJiYgbG9jLnN0YXJ0LmxpbmVcbiAgICAgIH0uYCxcbiAgICAgIG11c3RhY2hlLmxvY1xuICAgICk7XG4gIH1cblxuICBsZXQgbW9kaWZpZXIgPSBiLmVsZW1lbnRNb2RpZmllcihwYXRoLCBwYXJhbXMsIGhhc2gsIGxvYyk7XG4gIGVsZW1lbnQubW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xufVxuXG5mdW5jdGlvbiBhcHBlbmREeW5hbWljQXR0cmlidXRlVmFsdWVQYXJ0KGF0dHJpYnV0ZTogQXR0cmlidXRlLCBwYXJ0OiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgYXR0cmlidXRlLmlzRHluYW1pYyA9IHRydWU7XG4gIGF0dHJpYnV0ZS5wYXJ0cy5wdXNoKHBhcnQpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -10,3 +10,4 @@ // used by ember-compiler

export { default as Walker } from './lib/traversal/walker';
export { default as print } from './lib/generation/print'; // errors
export { default as print } from './lib/generation/print';
export { sortByLoc } from './lib/generation/util'; // errors

@@ -18,2 +19,2 @@ export { default as SyntaxError } from './lib/errors/syntax-error'; // AST

export { isLiteral, printLiteral } from './lib/utils';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFNBQ0UsVUFERixRQU9PLHVDQVBQLEMsQ0FTQTs7QUFDQSxTQUFTLE9BQU8sSUFBSSxRQUFwQixRQUFvQyxnQkFBcEM7QUFDQSxTQUNFLE9BQU8sSUFBSSxjQURiLEVBRUUsZ0JBRkYsRUFHRSxpQkFIRixFQUlFLG9DQUpGLFFBS08sd0JBTFA7QUFNQSxTQUFTLE9BQU8sSUFBSSxRQUFwQixRQUFvQywwQkFBcEM7QUFDQSxjQUFjLHlCQUFkO0FBQ0EsU0FBUyxPQUFPLElBQUksSUFBcEIsUUFBZ0Msc0JBQWhDO0FBQ0EsU0FBUyxPQUFPLElBQUksTUFBcEIsUUFBa0Msd0JBQWxDO0FBQ0EsU0FBUyxPQUFPLElBQUksS0FBcEIsUUFBaUMsd0JBQWpDLEMsQ0FFQTs7QUFDQSxTQUFTLE9BQU8sSUFBSSxXQUFwQixRQUF1QywyQkFBdkMsQyxDQUVBOztBQUNBLE9BQU8sS0FBSyxHQUFaLE1BQXFCLG1CQUFyQjtBQUNBLFNBQVMsR0FBVDtBQUNBLFNBQVMsU0FBVCxFQUFvQixZQUFwQixRQUF3QyxhQUF4QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHVzZWQgYnkgZW1iZXItY29tcGlsZXJcbmV4cG9ydCB7XG4gIHByZXByb2Nlc3MsXG4gIFByZXByb2Nlc3NPcHRpb25zLFxuICBBU1RQbHVnaW4sXG4gIEFTVFBsdWdpbkJ1aWxkZXIsXG4gIEFTVFBsdWdpbkVudmlyb25tZW50LFxuICBTeW50YXgsXG59IGZyb20gJy4vbGliL3BhcnNlci90b2tlbml6ZXItZXZlbnQtaGFuZGxlcnMnO1xuXG4vLyBuZWVkZWQgZm9yIHRlc3RzIG9ubHlcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYnVpbGRlcnMgfSBmcm9tICcuL2xpYi9idWlsZGVycyc7XG5leHBvcnQge1xuICBkZWZhdWx0IGFzIFRyYXZlcnNhbEVycm9yLFxuICBjYW5ub3RSZW1vdmVOb2RlLFxuICBjYW5ub3RSZXBsYWNlTm9kZSxcbiAgY2Fubm90UmVwbGFjZU9yUmVtb3ZlSW5LZXlIYW5kbGVyWWV0LFxufSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvZXJyb3JzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdHJhdmVyc2UgfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvdHJhdmVyc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJhdmVyc2FsL3Zpc2l0b3InO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQYXRoIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3BhdGgnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBXYWxrZXIgfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvd2Fsa2VyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHJpbnQgfSBmcm9tICcuL2xpYi9nZW5lcmF0aW9uL3ByaW50JztcblxuLy8gZXJyb3JzXG5leHBvcnQgeyBkZWZhdWx0IGFzIFN5bnRheEVycm9yIH0gZnJvbSAnLi9saWIvZXJyb3JzL3N5bnRheC1lcnJvcic7XG5cbi8vIEFTVFxuaW1wb3J0ICogYXMgQVNUIGZyb20gJy4vbGliL3R5cGVzL25vZGVzJztcbmV4cG9ydCB7IEFTVCB9O1xuZXhwb3J0IHsgaXNMaXRlcmFsLCBwcmludExpdGVyYWwgfSBmcm9tICcuL2xpYi91dGlscyc7XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFNBQ0UsVUFERixRQU9PLHVDQVBQLEMsQ0FTQTs7QUFDQSxTQUFTLE9BQU8sSUFBSSxRQUFwQixRQUFvQyxnQkFBcEM7QUFDQSxTQUNFLE9BQU8sSUFBSSxjQURiLEVBRUUsZ0JBRkYsRUFHRSxpQkFIRixFQUlFLG9DQUpGLFFBS08sd0JBTFA7QUFNQSxTQUFTLE9BQU8sSUFBSSxRQUFwQixRQUFvQywwQkFBcEM7QUFDQSxjQUFjLHlCQUFkO0FBQ0EsU0FBUyxPQUFPLElBQUksSUFBcEIsUUFBZ0Msc0JBQWhDO0FBQ0EsU0FBUyxPQUFPLElBQUksTUFBcEIsUUFBa0Msd0JBQWxDO0FBQ0EsU0FBUyxPQUFPLElBQUksS0FBcEIsUUFBaUMsd0JBQWpDO0FBQ0EsU0FBUyxTQUFULFFBQTBCLHVCQUExQixDLENBRUE7O0FBQ0EsU0FBUyxPQUFPLElBQUksV0FBcEIsUUFBdUMsMkJBQXZDLEMsQ0FFQTs7QUFDQSxPQUFPLEtBQUssR0FBWixNQUFxQixtQkFBckI7QUFDQSxTQUFTLEdBQVQ7QUFDQSxTQUFTLFNBQVQsRUFBb0IsWUFBcEIsUUFBd0MsYUFBeEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB1c2VkIGJ5IGVtYmVyLWNvbXBpbGVyXG5leHBvcnQge1xuICBwcmVwcm9jZXNzLFxuICBQcmVwcm9jZXNzT3B0aW9ucyxcbiAgQVNUUGx1Z2luLFxuICBBU1RQbHVnaW5CdWlsZGVyLFxuICBBU1RQbHVnaW5FbnZpcm9ubWVudCxcbiAgU3ludGF4LFxufSBmcm9tICcuL2xpYi9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzJztcblxuLy8gbmVlZGVkIGZvciB0ZXN0cyBvbmx5XG5leHBvcnQgeyBkZWZhdWx0IGFzIGJ1aWxkZXJzIH0gZnJvbSAnLi9saWIvYnVpbGRlcnMnO1xuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBUcmF2ZXJzYWxFcnJvcixcbiAgY2Fubm90UmVtb3ZlTm9kZSxcbiAgY2Fubm90UmVwbGFjZU5vZGUsXG4gIGNhbm5vdFJlcGxhY2VPclJlbW92ZUluS2V5SGFuZGxlcllldCxcbn0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL2Vycm9ycyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRyYXZlcnNlIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3RyYXZlcnNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RyYXZlcnNhbC92aXNpdG9yJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUGF0aCB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC9wYXRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgV2Fsa2VyIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3dhbGtlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByaW50IH0gZnJvbSAnLi9saWIvZ2VuZXJhdGlvbi9wcmludCc7XG5leHBvcnQgeyBzb3J0QnlMb2MgfSBmcm9tICcuL2xpYi9nZW5lcmF0aW9uL3V0aWwnO1xuXG4vLyBlcnJvcnNcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU3ludGF4RXJyb3IgfSBmcm9tICcuL2xpYi9lcnJvcnMvc3ludGF4LWVycm9yJztcblxuLy8gQVNUXG5pbXBvcnQgKiBhcyBBU1QgZnJvbSAnLi9saWIvdHlwZXMvbm9kZXMnO1xuZXhwb3J0IHsgQVNUIH07XG5leHBvcnQgeyBpc0xpdGVyYWwsIHByaW50TGl0ZXJhbCB9IGZyb20gJy4vbGliL3V0aWxzJztcbiJdLCJzb3VyY2VSb290IjoiIn0=
import { voidMap } from '../parser/tokenizer-event-handlers';
import { escapeText, escapeAttrValue } from './util';
import { escapeText, escapeAttrValue, sortByLoc } from './util';
const NON_WHITESPACE = /\S/;

@@ -212,22 +212,20 @@ export default class Printer {

this.buffer += `<${el.tag}`;
const parts = [...el.attributes, ...el.modifiers, ...el.comments].sort(sortByLoc);
if (el.attributes.length) {
el.attributes.forEach(attr => {
this.buffer += ' ';
this.AttrNode(attr);
});
}
for (const part of parts) {
this.buffer += ' ';
if (el.modifiers.length) {
el.modifiers.forEach(mod => {
this.buffer += ' ';
this.ElementModifierStatement(mod);
});
}
switch (part.type) {
case 'AttrNode':
this.AttrNode(part);
break;
if (el.comments.length) {
el.comments.forEach(comment => {
this.buffer += ' ';
this.MustacheCommentStatement(comment);
});
case 'ElementModifierStatement':
this.ElementModifierStatement(part);
break;
case 'MustacheCommentStatement':
this.MustacheCommentStatement(part);
break;
}
}

@@ -541,2 +539,2 @@

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi9wcmludGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCQSxTQUFTLE9BQVQsUUFBd0Isb0NBQXhCO0FBQ0EsU0FBUyxVQUFULEVBQXFCLGVBQXJCLFFBQTRDLFFBQTVDO0FBRUEsTUFBTSxjQUFjLEdBQUcsSUFBdkI7QUFzQkEsZUFBYyxNQUFPLE9BQVAsQ0FBYztBQUkxQixFQUFBLFdBQUEsQ0FBWSxPQUFaLEVBQW1DO0FBSDNCLFNBQUEsTUFBQSxHQUFTLEVBQVQ7QUFJTixTQUFLLE9BQUwsR0FBZSxPQUFmO0FBQ0Q7QUFFRDs7Ozs7Ozs7OztBQVNBLEVBQUEsaUJBQWlCLENBQUMsSUFBRCxFQUFhLHVCQUF1QixHQUFHLEtBQXZDLEVBQTRDO0FBQzNELFFBQUksS0FBSyxPQUFMLENBQWEsUUFBYixLQUEwQixTQUE5QixFQUF5QztBQUN2QyxVQUFJLE1BQU0sR0FBRyxLQUFLLE9BQUwsQ0FBYSxRQUFiLENBQXNCLElBQXRCLEVBQTRCLEtBQUssT0FBakMsQ0FBYjs7QUFDQSxVQUFJLE9BQU8sTUFBUCxLQUFrQixRQUF0QixFQUFnQztBQUM5QixZQUFJLHVCQUF1QixJQUFJLE1BQU0sS0FBSyxFQUF0QyxJQUE0QyxjQUFjLENBQUMsSUFBZixDQUFvQixNQUFNLENBQUMsQ0FBRCxDQUExQixDQUFoRCxFQUFnRjtBQUM5RSxVQUFBLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBbkI7QUFDRDs7QUFFRCxhQUFLLE1BQUwsSUFBZSxNQUFmO0FBQ0EsZUFBTyxJQUFQO0FBQ0Q7QUFDRjs7QUFFRCxXQUFPLEtBQVA7QUFDRDs7QUFFRCxFQUFBLElBQUksQ0FBQyxJQUFELEVBQVc7QUFDYixZQUFRLElBQUksQ0FBQyxJQUFiO0FBQ0UsV0FBSyxtQkFBTDtBQUNBLFdBQUssZ0JBQUw7QUFDQSxXQUFLLGtCQUFMO0FBQ0EsV0FBSywwQkFBTDtBQUNBLFdBQUss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QXNCO0FBQ3BCLFVBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFSLENBQWlCLElBQWpCLEVBQXVCLE9BQXZCLENBQWI7O0FBRUEsVUFBSSxNQUFNLEtBQUssU0FBZixFQUEwQjtBQUN4QixlQUFPLE1BQVA7QUFDRDtBQUNGOztBQUVELFNBQUssTUFBTCxHQUFjLEVBQWQ7QUFDQSxTQUFLLElBQUwsQ0FBVSxJQUFWO0FBQ0EsV0FBTyxLQUFLLE1BQVo7QUFDRDs7QUEvZXlCOztBQWtmNUIsU0FBUyxXQUFULENBQXFCLElBQXJCLEVBQWtDLGNBQWxDLEVBQXdEO0FBQ3RELE1BQUk7QUFBRSxJQUFBLEdBQUY7QUFBTyxJQUFBO0FBQVAsTUFBaUIsSUFBckI7QUFDQSxRQUFNLElBQUksS0FBSixDQUNKLGlDQUFpQyxJQUFJLGdCQUFnQixJQUFJLENBQUMsU0FBTCxDQUNuRCxHQURtRCxDQUVwRCxlQUFlLGNBQWMsRUFIMUIsQ0FBTjtBQUtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXR0ck5vZGUsXG4gIEJsb2NrLFxuICBCbG9ja1N0YXRlbWVudCxcbiAgRWxlbWVudE5vZGUsXG4gIE11c3RhY2hlU3RhdGVtZW50LFxuICBOb2RlLFxuICBQcm9ncmFtLFxuICBUZXh0Tm9kZSxcbiAgUGFydGlhbFN0YXRlbWVudCxcbiAgQ29uY2F0U3RhdGVtZW50LFxuICBNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQsXG4gIENvbW1lbnRTdGF0ZW1lbnQsXG4gIEVsZW1lbnRNb2RpZmllclN0YXRlbWVudCxcbiAgRXhwcmVzc2lvbixcbiAgUGF0aEV4cHJlc3Npb24sXG4gIFN1YkV4cHJlc3Npb24sXG4gIEhhc2gsXG4gIEhhc2hQYWlyLFxuICBMaXRlcmFsLFxuICBTdHJpbmdMaXRlcmFsLFxuICBCb29sZWFuTGl0ZXJhbCxcbiAgTnVtYmVyTGl0ZXJhbCxcbiAgVW5kZWZpbmVkTGl0ZXJhbCxcbiAgTnVsbExpdGVyYWwsXG4gIFRvcExldmVsU3RhdGVtZW50LFxuICBUZW1wbGF0ZSxcbn0gZnJvbSAnLi4vdHlwZXMvbm9kZXMnO1xuaW1wb3J0IHsgdm9pZE1hcCB9IGZyb20gJy4uL3BhcnNlci90b2tlbml6ZXItZXZlbnQtaGFuZGxlcnMnO1xuaW1wb3J0IHsgZXNjYXBlVGV4dCwgZXNjYXBlQXR0clZhbHVlIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgTk9OX1dISVRFU1BBQ0UgPSAvXFxTLztcblxuZXhwb3J0IGludGVyZmFjZSBQcmludGVyT3B0aW9ucyB7XG4gIGVudGl0eUVuY29kaW5nOiAndHJhbnNmb3JtZWQnIHwgJ3Jhdyc7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gb3ZlcnJpZGUgdGhlIG1lY2hhbmlzbSBvZiBwcmludGluZyBhIGdpdmVuIEFTVC5Ob2RlLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgZ2VuZXJhbGx5IG9ubHkgYmUgdXNlZnVsIHRvIHNvdXJjZSAtPiBzb3VyY2UgY29kZW1vZHNcbiAgICogd2hlcmUgeW91IHdvdWxkIGxpa2UgdG8gc3BlY2lhbGl6ZS9vdmVycmlkZSB0aGUgd2F5IGEgZ2l2ZW4gbm9kZSBpc1xuICAgKiBwcmludGVkIChlLmcuIHlvdSB3b3VsZCBsaWtlIHRvIHByZXNlcnZlIGFzIG11Y2ggb2YgdGhlIG9yaWdpbmFsXG4gICAqIGZvcm1hdHRpbmcgYXMgcG9zc2libGUpLlxuICAgKlxuICAgKiBXaGVuIHRoZSBwcm92aWRlZCBvdmVycmlkZSByZXR1cm5zIHVuZGVmaW5lZCwgdGhlIGRlZmF1bHQgYnVpbHQgaW4gcHJpbnRpbmdcbiAgICogd2lsbCBiZSBkb25lIGZvciB0aGUgQVNULk5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSBhc3QgdGhlIGFzdCBub2RlIHRvIGJlIHByaW50ZWRcbiAgICogQHBhcmFtIG9wdGlvbnMgdGhlIG9wdGlvbnMgc3BlY2lmaWVkIGR1cmluZyB0aGUgcHJpbnQoKSBpbnZvY2F0aW9uXG4gICAqL1xuICBvdmVycmlkZT8oYXN0OiBOb2RlLCBvcHRpb25zOiBQcmludGVyT3B0aW9ucyk6IHZvaWQgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByaW50ZXIge1xuICBwcml2YXRlIGJ1ZmZlciA9ICcnO1xuICBwcml2YXRlIG9wdGlvbnM6IFByaW50ZXJPcHRpb25zO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFByaW50ZXJPcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIC8qXG4gICAgVGhpcyBpcyB1c2VkIGJ5IF9hbGxfIG1ldGhvZHMgb24gdGhpcyBQcmludGVyIGNsYXNzIHRoYXQgYWRkIHRvIGB0aGlzLmJ1ZmZlcmAsXG4gICAgaXQgYWxsb3dzIGNvbnN1bWVycyBvZiB0aGUgcHJpbnRlciB0byB1c2UgYWx0ZXJuYXRlIHN0cmluZyByZXByZXNlbnRhdGlvbnMgZm9yXG4gICAgYSBnaXZlbiBub2RlLlxuXG4gICAgVGhlIHByaW1hcnkgdXNlIGNhc2UgZm9yIHRoaXMgYXJlIHRoaW5ncyBsaWtlIHNvdXJjZSAtPiBzb3VyY2UgY29kZW1vZCB1dGlsaXRpZXMuXG4gICAgRm9yIGV4YW1wbGUsIGVtYmVyLXRlbXBsYXRlLXJlY2FzdCBhdHRlbXB0cyB0byBhbHdheXMgcHJlc2VydmUgdGhlIG9yaWdpbmFsIHN0cmluZ1xuICAgIGZvcm1hdHRpbmcgaW4gZWFjaCBBU1Qgbm9kZSBpZiBubyBtb2RpZmljYXRpb25zIGFyZSBtYWRlIHRvIGl0LlxuICAqL1xuICBoYW5kbGVkQnlPdmVycmlkZShub2RlOiBOb2RlLCBlbnN1cmVMZWFkaW5nV2hpdGVzcGFjZSA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5vdmVycmlkZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgcmVzdWx0ID0gdGhpcy5vcHRpb25zLm92ZXJyaWRlKG5vZGUsIHRoaXMub3B0aW9ucyk7XG4gICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKGVuc3VyZUxlYWRpbmdXaGl0ZXNwYWNlICYmIHJlc3VsdCAhPT0gJycgJiYgTk9OX1dISVRFU1BBQ0UudGVzdChyZXN1bHRbMF0pKSB7XG4gICAgICAgICAgcmVzdWx0ID0gYCAke3Jlc3VsdH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5idWZmZXIgKz0gcmVzdWx0O1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBOb2RlKG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgY2FzZSAnTXVzdGFjaGVTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnQmxvY2tTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnUGFydGlhbFN0YXRlbWVudCc6XG4gICAgICBjYXNlICdNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnQ29tbWVudFN0YXRlbWVudCc6XG4gICAgICBjYXNlICdUZXh0Tm9kZSc6XG4gICAgICBjYXNlICdFbGVtZW50Tm9kZSc6XG4gICAgICBjYXNlICdBdHRyTm9kZSc6XG4gICAgICBjYXNlICdCbG9jayc6XG4gICAgICBjYXNlICdUZW1wbGF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLlRvcExldmVsU3RhdGVtZW50KG5vZGUpO1xuICAgICAgY2FzZSAnU3RyaW5nTGl0ZXJhbCc6XG4gICAgICBjYXNlICdCb29sZWFuTGl0ZXJhbCc6XG4gICAgICBjYXNlICdOdW1iZXJMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ1VuZGVmaW5lZExpdGVyYWwnOlxuICAgICAgY2FzZSAnTnVsbExpdGVyYWwnOlxuICAgICAgY2FzZSAnUGF0aEV4cHJlc3Npb24nOlxuICAgICAgY2FzZSAnU3ViRXhwcmVzc2lvbic6XG4gICAgICAgIHJldHVybiB0aGlzLkV4cHJlc3Npb24obm9kZSk7XG4gICAgICBjYXNlICdQcm9ncmFtJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuQmxvY2sobm9kZSk7XG4gICAgICBjYXNlICdDb25jYXRTdGF0ZW1lbnQnOlxuICAgICAgICAvLyBzaG91bGQgaGF2ZSBhbiBBdHRyTm9kZSBwYXJlbnRcbiAgICAgICAgcmV0dXJuIHRoaXMuQ29uY2F0U3RhdGVtZW50KG5vZGUpO1xuICAgICAgY2FzZSAnSGFzaCc6XG4gICAgICAgIHJldHVybiB0aGlzLkhhc2gobm9kZSk7XG4gICAgICBjYXNlICdIYXNoUGFpcic6XG4gICAgICAgIHJldHVybiB0aGlzLkhhc2hQYWlyKG5vZGUpO1xuICAgICAgY2FzZSAnRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50KG5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB1bnJlYWNoYWJsZShub2RlLCAnTm9kZScpO1xuICB9XG5cbiAgRXhwcmVzc2lvbihleHByZXNzaW9uOiBFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgc3dpdGNoIChleHByZXNzaW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgJ1N0cmluZ0xpdGVyYWwnOlxuICAgICAgY2FzZSAnQm9vbGVhbkxpdGVyYWwnOlxuICAgICAgY2FzZSAnTnVtYmVyTGl0ZXJhbCc6XG4gICAgICBjYXNlICdVbmRlZmluZWRMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ051bGxMaXRlcmFsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuTGl0ZXJhbChleHByZXNzaW9uKTtcbiAgICAgIGNhc2UgJ1BhdGhFeHByZXNzaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuUGF0aEV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG4gICAgICBjYXNlICdTdWJFeHByZXNzaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuU3ViRXhwcmVzc2lvbihleHByZXNzaW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHVucmVhY2hhYmxlKGV4cHJlc3Npb24sICdFeHByZXNzaW9uJyk7XG4gIH1cblxuICBMaXRlcmFsKGxpdGVyYWw6IExpdGVyYWwpIHtcbiAgICBzd2l0Y2ggKGxpdGVyYWwudHlwZSkge1xuICAgICAgY2FzZSAnU3RyaW5nTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLlN0cmluZ0xpdGVyYWwobGl0ZXJhbCk7XG4gICAgICBjYXNlICdCb29sZWFuTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLkJvb2xlYW5MaXRlcmFsKGxpdGVyYWwpO1xuICAgICAgY2FzZSAnTnVtYmVyTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLk51bWJlckxpdGVyYWwobGl0ZXJhbCk7XG4gICAgICBjYXNlICdVbmRlZmluZWRMaXRlcmFsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuVW5kZWZpbmVkTGl0ZXJhbChsaXRlcmFsKTtcbiAgICAgIGNhc2UgJ051bGxMaXRlcmFsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuTnVsbExpdGVyYWwobGl0ZXJhbCk7XG4gICAgfVxuICAgIHJldHVybiB1bnJlYWNoYWJsZShsaXRlcmFsLCAnTGl0ZXJhbCcpO1xuICB9XG5cbiAgVG9wTGV2ZWxTdGF0ZW1lbnQoc3RhdGVtZW50OiBUb3BMZXZlbFN0YXRlbWVudCkge1xuICAgIHN3aXRjaCAoc3RhdGVtZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ011c3RhY2hlU3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuTXVzdGFjaGVTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ0Jsb2NrU3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuQmxvY2tTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ1BhcnRpYWxTdGF0ZW1lbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5QYXJ0aWFsU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5NdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ0NvbW1lbnRTdGF0ZW1lbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5Db21tZW50U3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdUZXh0Tm9kZSc6XG4gICAgICAgIHJldHVybiB0aGlzLlRleHROb2RlKHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdFbGVtZW50Tm9kZSc6XG4gICAgICAgIHJldHVybiB0aGlzLkVsZW1lbnROb2RlKHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdCbG9jayc6XG4gICAgICBjYXNlICdUZW1wbGF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLkJsb2NrKHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdBdHRyTm9kZSc6XG4gICAgICAgIC8vIHNob3VsZCBoYXZlIGVsZW1lbnRcbiAgICAgICAgcmV0dXJuIHRoaXMuQXR0ck5vZGUoc3RhdGVtZW50KTtcbiAgICB9XG4gICAgdW5yZWFjaGFibGUoc3RhdGVtZW50LCAnVG9wTGV2ZWxTdGF0ZW1lbnQnKTtcbiAgfVxuXG4gIEJsb2NrKGJsb2NrOiBCbG9jayB8IFByb2dyYW0gfCBUZW1wbGF0ZSk6IHZvaWQge1xuICAgIC8qXG4gICAgICBXaGVuIHByb2Nlc3NpbmcgYSB0ZW1wbGF0ZSBsaWtlOlxuXG4gICAgICBgYGBoYnNcbiAgICAgIHt7I2lmIHdoYXRldmVyfX1cbiAgICAgICAgd2hhdGV2ZXJcbiAgICAgIHt7ZWxzZSBpZiBzb21ldGhpbmdFbHNlfX1cbiAgICAgICAgc29tZXRoaW5nIGVsc2VcbiAgICAgIHt7ZWxzZX19XG4gICAgICAgIGZhbGxiYWNrXG4gICAgICB7ey9pZn19XG4gICAgICBgYGBcblxuICAgICAgVGhlIEFTVCBzdGlsbCBfZWZmZWN0aXZlbHlfIGxvb2tzIGxpa2U6XG5cbiAgICAgIGBgYGhic1xuICAgICAge3sjaWYgd2hhdGV2ZXJ9fVxuICAgICAgICB3aGF0ZXZlclxuICAgICAge3tlbHNlfX17eyNpZiBzb21ldGhpbmdFbHNlfX1cbiAgICAgICAgc29tZXRoaW5nIGVsc2VcbiAgICAgIHt7ZWxzZX19XG4gICAgICAgIGZhbGxiYWNrXG4gICAgICB7ey9pZn19e3svaWZ9fVxuICAgICAgYGBgXG5cbiAgICAgIFRoZSBvbmx5IHdheSB3ZSBjYW4gdGVsbCBpZiB0aGF0IGlzIHRoZSBjYXNlIGlzIGJ5IGNoZWNraW5nIGZvclxuICAgICAgYGJsb2NrLmNoYWluZWRgLCBidXQgdW5mb3J0dW5hdGVseSB3aGVuIHRoZSBhY3R1YWwgc3RhdGVtZW50cyBhcmVcbiAgICAgIHByb2Nlc3NlZCB0aGUgYGJsb2NrLmJvZHlbMF1gIG5vZGUgKHdoaWNoIHdpbGwgYWx3YXlzIGJlIGFcbiAgICAgIGBCbG9ja1N0YXRlbWVudGApIGhhcyBubyBjbHVlIHRoYXQgaXRzIGFuc2Nlc3RvciBgQmxvY2tgIG5vZGUgd2FzXG4gICAgICBjaGFpbmVkLlxuXG4gICAgICBUaGlzIFwiZm9yd2FyZHNcIiB0aGUgYGNoYWluZWRgIHNldHRpbmcgc28gdGhhdCB3ZSBjYW4gY2hlY2tcbiAgICAgIGl0IGxhdGVyIHdoZW4gcHJvY2Vzc2luZyB0aGUgYEJsb2NrU3RhdGVtZW50YC5cbiAgICAqL1xuICAgIGlmIChibG9jay5jaGFpbmVkKSB7XG4gICAgICBsZXQgZmlyc3RDaGlsZCA9IGJsb2NrLmJvZHlbMF0gYXMgQmxvY2tTdGF0ZW1lbnQ7XG4gICAgICBmaXJzdENoaWxkLmNoYWluZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGJsb2NrKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuVG9wTGV2ZWxTdGF0ZW1lbnRzKGJsb2NrLmJvZHkpO1xuICB9XG5cbiAgVG9wTGV2ZWxTdGF0ZW1lbnRzKHN0YXRlbWVudHM6IFRvcExldmVsU3RhdGVtZW50W10pIHtcbiAgICBzdGF0ZW1lbnRzLmZvckVhY2goKHN0YXRlbWVudCkgPT4gdGhpcy5Ub3BMZXZlbFN0YXRlbWVudChzdGF0ZW1lbnQpKTtcbiAgfVxuXG4gIEVsZW1lbnROb2RlKGVsOiBFbGVtZW50Tm9kZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGVsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuT3BlbkVsZW1lbnROb2RlKGVsKTtcbiAgICB0aGlzLlRvcExldmVsU3RhdGVtZW50cyhlbC5jaGlsZHJlbik7XG4gICAgdGhpcy5DbG9zZUVsZW1lbnROb2RlKGVsKTtcbiAgfVxuXG4gIE9wZW5FbGVtZW50Tm9kZShlbDogRWxlbWVudE5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLmJ1ZmZlciArPSBgPCR7ZWwudGFnfWA7XG4gICAgaWYgKGVsLmF0dHJpYnV0ZXMubGVuZ3RoKSB7XG4gICAgICBlbC5hdHRyaWJ1dGVzLmZvckVhY2goKGF0dHIpID0+IHtcbiAgICAgICAgdGhpcy5idWZmZXIgKz0gJyAnO1xuICAgICAgICB0aGlzLkF0dHJOb2RlKGF0dHIpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChlbC5tb2RpZmllcnMubGVuZ3RoKSB7XG4gICAgICBlbC5tb2RpZmllcnMuZm9yRWFjaCgobW9kKSA9PiB7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9ICcgJztcbiAgICAgICAgdGhpcy5FbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQobW9kKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZWwuY29tbWVudHMubGVuZ3RoKSB7XG4gICAgICBlbC5jb21tZW50cy5mb3JFYWNoKChjb21tZW50KSA9PiB7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9ICcgJztcbiAgICAgICAgdGhpcy5NdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQoY29tbWVudCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGVsLmJsb2NrUGFyYW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5CbG9ja1BhcmFtcyhlbC5ibG9ja1BhcmFtcyk7XG4gICAgfVxuICAgIGlmIChlbC5zZWxmQ2xvc2luZykge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJyAvJztcbiAgICB9XG4gICAgdGhpcy5idWZmZXIgKz0gJz4nO1xuICB9XG5cbiAgQ2xvc2VFbGVtZW50Tm9kZShlbDogRWxlbWVudE5vZGUpOiB2b2lkIHtcbiAgICBpZiAoZWwuc2VsZkNsb3NpbmcgfHwgdm9pZE1hcFtlbC50YWcudG9Mb3dlckNhc2UoKV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5idWZmZXIgKz0gYDwvJHtlbC50YWd9PmA7XG4gIH1cblxuICBBdHRyTm9kZShhdHRyOiBBdHRyTm9kZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGF0dHIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHsgbmFtZSwgdmFsdWUgfSA9IGF0dHI7XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBuYW1lO1xuICAgIGlmICh2YWx1ZS50eXBlICE9PSAnVGV4dE5vZGUnIHx8IHZhbHVlLmNoYXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICc9JztcbiAgICAgIHRoaXMuQXR0ck5vZGVWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQXR0ck5vZGVWYWx1ZSh2YWx1ZTogQXR0ck5vZGVbJ3ZhbHVlJ10pIHtcbiAgICBpZiAodmFsdWUudHlwZSA9PT0gJ1RleHROb2RlJykge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJ1wiJztcbiAgICAgIHRoaXMuVGV4dE5vZGUodmFsdWUsIHRydWUpO1xuICAgICAgdGhpcy5idWZmZXIgKz0gJ1wiJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5Ob2RlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBUZXh0Tm9kZSh0ZXh0OiBUZXh0Tm9kZSwgaXNBdHRyPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHRleHQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5lbnRpdHlFbmNvZGluZyA9PT0gJ3JhdycpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IHRleHQuY2hhcnM7XG4gICAgfSBlbHNlIGlmIChpc0F0dHIpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGVzY2FwZUF0dHJWYWx1ZSh0ZXh0LmNoYXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idWZmZXIgKz0gZXNjYXBlVGV4dCh0ZXh0LmNoYXJzKTtcbiAgICB9XG4gIH1cblxuICBNdXN0YWNoZVN0YXRlbWVudChtdXN0YWNoZTogTXVzdGFjaGVTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShtdXN0YWNoZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBtdXN0YWNoZS5lc2NhcGVkID8gJ3t7JyA6ICd7e3snO1xuXG4gICAgaWYgKG11c3RhY2hlLnN0cmlwLm9wZW4pIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICd+JztcbiAgICB9XG5cbiAgICB0aGlzLkV4cHJlc3Npb24obXVzdGFjaGUucGF0aCk7XG4gICAgdGhpcy5QYXJhbXMobXVzdGFjaGUucGFyYW1zKTtcbiAgICB0aGlzLkhhc2gobXVzdGFjaGUuaGFzaCk7XG5cbiAgICBpZiAobXVzdGFjaGUuc3RyaXAuY2xvc2UpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICd+JztcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBtdXN0YWNoZS5lc2NhcGVkID8gJ319JyA6ICd9fX0nO1xuICB9XG5cbiAgQmxvY2tTdGF0ZW1lbnQoYmxvY2s6IEJsb2NrU3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoYmxvY2spKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGJsb2NrLmNoYWluZWQpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmludmVyc2VTdHJpcC5vcGVuID8gJ3t7ficgOiAne3snO1xuICAgICAgdGhpcy5idWZmZXIgKz0gJ2Vsc2UgJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idWZmZXIgKz0gYmxvY2sub3BlblN0cmlwLm9wZW4gPyAne3t+IycgOiAne3sjJztcbiAgICB9XG5cbiAgICB0aGlzLkV4cHJlc3Npb24oYmxvY2sucGF0aCk7XG4gICAgdGhpcy5QYXJhbXMoYmxvY2sucGFyYW1zKTtcbiAgICB0aGlzLkhhc2goYmxvY2suaGFzaCk7XG4gICAgaWYgKGJsb2NrLnByb2dyYW0uYmxvY2tQYXJhbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLkJsb2NrUGFyYW1zKGJsb2NrLnByb2dyYW0uYmxvY2tQYXJhbXMpO1xuICAgIH1cblxuICAgIGlmIChibG9jay5jaGFpbmVkKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5pbnZlcnNlU3RyaXAuY2xvc2UgPyAnfn19JyA6ICd9fSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLm9wZW5TdHJpcC5jbG9zZSA/ICd+fX0nIDogJ319JztcbiAgICB9XG5cbiAgICB0aGlzLkJsb2NrKGJsb2NrLnByb2dyYW0pO1xuXG4gICAgaWYgKGJsb2NrLmludmVyc2UpIHtcbiAgICAgIGlmICghYmxvY2suaW52ZXJzZS5jaGFpbmVkKSB7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmludmVyc2VTdHJpcC5vcGVuID8gJ3t7ficgOiAne3snO1xuICAgICAgICB0aGlzLmJ1ZmZlciArPSAnZWxzZSc7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmludmVyc2VTdHJpcC5jbG9zZSA/ICd+fX0nIDogJ319JztcbiAgICAgIH1cblxuICAgICAgdGhpcy5CbG9jayhibG9jay5pbnZlcnNlKTtcbiAgICB9XG5cbiAgICBpZiAoIWJsb2NrLmNoYWluZWQpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmNsb3NlU3RyaXAub3BlbiA/ICd7e34vJyA6ICd7ey8nO1xuICAgICAgdGhpcy5FeHByZXNzaW9uKGJsb2NrLnBhdGgpO1xuICAgICAgdGhpcy5idWZmZXIgKz0gYmxvY2suY2xvc2VTdHJpcC5jbG9zZSA/ICd+fX0nIDogJ319JztcbiAgICB9XG4gIH1cblxuICBCbG9ja1BhcmFtcyhibG9ja1BhcmFtczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmJ1ZmZlciArPSBgIGFzIHwke2Jsb2NrUGFyYW1zLmpvaW4oJyAnKX18YDtcbiAgfVxuXG4gIFBhcnRpYWxTdGF0ZW1lbnQocGFydGlhbDogUGFydGlhbFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHBhcnRpYWwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJ3t7Pic7XG4gICAgdGhpcy5FeHByZXNzaW9uKHBhcnRpYWwubmFtZSk7XG4gICAgdGhpcy5QYXJhbXMocGFydGlhbC5wYXJhbXMpO1xuICAgIHRoaXMuSGFzaChwYXJ0aWFsLmhhc2gpO1xuICAgIHRoaXMuYnVmZmVyICs9ICd9fSc7XG4gIH1cblxuICBDb25jYXRTdGF0ZW1lbnQoY29uY2F0OiBDb25jYXRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShjb25jYXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJ1wiJztcbiAgICBjb25jYXQucGFydHMuZm9yRWFjaCgocGFydCkgPT4ge1xuICAgICAgaWYgKHBhcnQudHlwZSA9PT0gJ1RleHROb2RlJykge1xuICAgICAgICB0aGlzLlRleHROb2RlKHBhcnQsIHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5Ob2RlKHBhcnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuYnVmZmVyICs9ICdcIic7XG4gIH1cblxuICBNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQoY29tbWVudDogTXVzdGFjaGVDb21tZW50U3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoY29tbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBge3shLS0ke2NvbW1lbnQudmFsdWV9LS19fWA7XG4gIH1cblxuICBFbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQobW9kOiBFbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShtb2QpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJ3t7JztcbiAgICB0aGlzLkV4cHJlc3Npb24obW9kLnBhdGgpO1xuICAgIHRoaXMuUGFyYW1zKG1vZC5wYXJhbXMpO1xuICAgIHRoaXMuSGFzaChtb2QuaGFzaCk7XG4gICAgdGhpcy5idWZmZXIgKz0gJ319JztcbiAgfVxuXG4gIENvbW1lbnRTdGF0ZW1lbnQoY29tbWVudDogQ29tbWVudFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGNvbW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gYDwhLS0ke2NvbW1lbnQudmFsdWV9LS0+YDtcbiAgfVxuXG4gIFBhdGhFeHByZXNzaW9uKHBhdGg6IFBhdGhFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUocGF0aCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBwYXRoLm9yaWdpbmFsO1xuICB9XG5cbiAgU3ViRXhwcmVzc2lvbihzZXhwOiBTdWJFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoc2V4cCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSAnKCc7XG4gICAgdGhpcy5FeHByZXNzaW9uKHNleHAucGF0aCk7XG4gICAgdGhpcy5QYXJhbXMoc2V4cC5wYXJhbXMpO1xuICAgIHRoaXMuSGFzaChzZXhwLmhhc2gpO1xuICAgIHRoaXMuYnVmZmVyICs9ICcpJztcbiAgfVxuXG4gIFBhcmFtcyhwYXJhbXM6IEV4cHJlc3Npb25bXSkge1xuICAgIC8vIFRPRE86IGltcGxlbWVudCBhIHRvcCBsZXZlbCBQYXJhbXMgQVNUIG5vZGUgKGp1c3QgbGlrZSB0aGUgSGFzaCBvYmplY3QpXG4gICAgLy8gc28gdGhhdCB0aGlzIGNhbiBhbHNvIGJlIG92ZXJyaWRkZW5cbiAgICBpZiAocGFyYW1zLmxlbmd0aCkge1xuICAgICAgcGFyYW1zLmZvckVhY2goKHBhcmFtKSA9PiB7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9ICcgJztcbiAgICAgICAgdGhpcy5FeHByZXNzaW9uKHBhcmFtKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEhhc2goaGFzaDogSGFzaCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGhhc2gsIHRydWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaGFzaC5wYWlycy5mb3JFYWNoKChwYWlyKSA9PiB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnICc7XG4gICAgICB0aGlzLkhhc2hQYWlyKHBhaXIpO1xuICAgIH0pO1xuICB9XG5cbiAgSGFzaFBhaXIocGFpcjogSGFzaFBhaXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShwYWlyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IHBhaXIua2V5O1xuICAgIHRoaXMuYnVmZmVyICs9ICc9JztcbiAgICB0aGlzLk5vZGUocGFpci52YWx1ZSk7XG4gIH1cblxuICBTdHJpbmdMaXRlcmFsKHN0cjogU3RyaW5nTGl0ZXJhbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHN0cikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBKU09OLnN0cmluZ2lmeShzdHIudmFsdWUpO1xuICB9XG5cbiAgQm9vbGVhbkxpdGVyYWwoYm9vbDogQm9vbGVhbkxpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShib29sKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IGJvb2wudmFsdWU7XG4gIH1cblxuICBOdW1iZXJMaXRlcmFsKG51bWJlcjogTnVtYmVyTGl0ZXJhbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKG51bWJlcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBudW1iZXIudmFsdWU7XG4gIH1cblxuICBVbmRlZmluZWRMaXRlcmFsKG5vZGU6IFVuZGVmaW5lZExpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShub2RlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgTnVsbExpdGVyYWwobm9kZTogTnVsbExpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShub2RlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICdudWxsJztcbiAgfVxuXG4gIHByaW50KG5vZGU6IE5vZGUpIHtcbiAgICBsZXQgeyBvcHRpb25zIH0gPSB0aGlzO1xuXG4gICAgaWYgKG9wdGlvbnMub3ZlcnJpZGUpIHtcbiAgICAgIGxldCByZXN1bHQgPSBvcHRpb25zLm92ZXJyaWRlKG5vZGUsIG9wdGlvbnMpO1xuXG4gICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciA9ICcnO1xuICAgIHRoaXMuTm9kZShub2RlKTtcbiAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gIH1cbn1cblxuZnVuY3Rpb24gdW5yZWFjaGFibGUobm9kZTogbmV2ZXIsIHBhcmVudE5vZGVUeXBlOiBzdHJpbmcpOiBuZXZlciB7XG4gIGxldCB7IGxvYywgdHlwZSB9ID0gKG5vZGUgYXMgYW55KSBhcyBOb2RlO1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYE5vbi1leGhhdXN0aXZlIG5vZGUgbmFycm93aW5nICR7dHlwZX0gQCBsb2NhdGlvbjogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgIGxvY1xuICAgICl9IGZvciBwYXJlbnQgJHtwYXJlbnROb2RlVHlwZX1gXG4gICk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi9wcmludGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCQSxTQUFTLE9BQVQsUUFBd0Isb0NBQXhCO0FBQ0EsU0FBUyxVQUFULEVBQXFCLGVBQXJCLEVBQXNDLFNBQXRDLFFBQXVELFFBQXZEO0FBRUEsTUFBTSxjQUFjLEdBQUcsSUFBdkI7QUFzQkEsZUFBYyxNQUFPLE9BQVAsQ0FBYztBQUkxQixFQUFBLFdBQUEsQ0FBWSxPQUFaLEVBQW1DO0FBSDNCLFNBQUEsTUFBQSxHQUFTLEVBQVQ7QUFJTixTQUFLLE9BQUwsR0FBZSxPQUFmO0FBQ0Q7QUFFRDs7Ozs7Ozs7OztBQVNBLEVBQUEsaUJBQWlCLENBQUMsSUFBRCxFQUFhLHVCQUF1QixHQUFHLEtBQXZDLEVBQTRDO0FBQzNELFFBQUksS0FBSyxPQUFMLENBQWEsUUFBYixLQUEwQixTQUE5QixFQUF5QztBQUN2QyxVQUFJLE1BQU0sR0FBRyxLQUFLLE9BQUwsQ0FBYSxRQUFiLENBQXNCLElBQXRCLEVBQTRCLEtBQUssT0FBakMsQ0FBYjs7QUFDQSxVQUFJLE9BQU8sTUFBUCxLQUFrQixRQUF0QixFQUFnQztBQUM5QixZQUFJLHVCQUF1QixJQUFJLE1BQU0sS0FBSyxFQUF0QyxJQUE0QyxjQUFjLENBQUMsSUFBZixDQUFvQixNQUFNLENBQUMsQ0FBRCxDQUExQixDQUFoRCxFQUFnRjtBQUM5RSxVQUFBLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBbkI7QUFDRDs7QUFFRCxhQUFLLE1BQUwsSUFBZSxNQUFmO0FBQ0EsZUFBTyxJQUFQO0FBQ0Q7QUFDRjs7QUFFRCxXQUFPLEtBQVA7QUFDRDs7QUFFRCxFQUFBLElBQUksQ0FBQyxJQUFELEVBQVc7QUFDYixZQUFRLElBQUksQ0FBQyxJQUFiO0FBQ0UsV0FBSyxtQkFBTDtBQUNBLFdBQUssZ0JBQUw7QUFDQSxXQUFLLGtCQUFMO0FBQ0EsV0FBSywwQkFB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Q3hCLGVBQU8sTUFBUDtBQUNEO0FBQ0Y7O0FBRUQsU0FBSyxNQUFMLEdBQWMsRUFBZDtBQUNBLFNBQUssSUFBTCxDQUFVLElBQVY7QUFDQSxXQUFPLEtBQUssTUFBWjtBQUNEOztBQTdleUI7O0FBZ2Y1QixTQUFTLFdBQVQsQ0FBcUIsSUFBckIsRUFBa0MsY0FBbEMsRUFBd0Q7QUFDdEQsTUFBSTtBQUFFLElBQUEsR0FBRjtBQUFPLElBQUE7QUFBUCxNQUFpQixJQUFyQjtBQUNBLFFBQU0sSUFBSSxLQUFKLENBQ0osaUNBQWlDLElBQUksZ0JBQWdCLElBQUksQ0FBQyxTQUFMLENBQ25ELEdBRG1ELENBRXBELGVBQWUsY0FBYyxFQUgxQixDQUFOO0FBS0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdHRyTm9kZSxcbiAgQmxvY2ssXG4gIEJsb2NrU3RhdGVtZW50LFxuICBFbGVtZW50Tm9kZSxcbiAgTXVzdGFjaGVTdGF0ZW1lbnQsXG4gIE5vZGUsXG4gIFByb2dyYW0sXG4gIFRleHROb2RlLFxuICBQYXJ0aWFsU3RhdGVtZW50LFxuICBDb25jYXRTdGF0ZW1lbnQsXG4gIE11c3RhY2hlQ29tbWVudFN0YXRlbWVudCxcbiAgQ29tbWVudFN0YXRlbWVudCxcbiAgRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50LFxuICBFeHByZXNzaW9uLFxuICBQYXRoRXhwcmVzc2lvbixcbiAgU3ViRXhwcmVzc2lvbixcbiAgSGFzaCxcbiAgSGFzaFBhaXIsXG4gIExpdGVyYWwsXG4gIFN0cmluZ0xpdGVyYWwsXG4gIEJvb2xlYW5MaXRlcmFsLFxuICBOdW1iZXJMaXRlcmFsLFxuICBVbmRlZmluZWRMaXRlcmFsLFxuICBOdWxsTGl0ZXJhbCxcbiAgVG9wTGV2ZWxTdGF0ZW1lbnQsXG4gIFRlbXBsYXRlLFxufSBmcm9tICcuLi90eXBlcy9ub2Rlcyc7XG5pbXBvcnQgeyB2b2lkTWFwIH0gZnJvbSAnLi4vcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycyc7XG5pbXBvcnQgeyBlc2NhcGVUZXh0LCBlc2NhcGVBdHRyVmFsdWUsIHNvcnRCeUxvYyB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IE5PTl9XSElURVNQQUNFID0gL1xcUy87XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpbnRlck9wdGlvbnMge1xuICBlbnRpdHlFbmNvZGluZzogJ3RyYW5zZm9ybWVkJyB8ICdyYXcnO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG92ZXJyaWRlIHRoZSBtZWNoYW5pc20gb2YgcHJpbnRpbmcgYSBnaXZlbiBBU1QuTm9kZS5cbiAgICpcbiAgICogVGhpcyB3aWxsIGdlbmVyYWxseSBvbmx5IGJlIHVzZWZ1bCB0byBzb3VyY2UgLT4gc291cmNlIGNvZGVtb2RzXG4gICAqIHdoZXJlIHlvdSB3b3VsZCBsaWtlIHRvIHNwZWNpYWxpemUvb3ZlcnJpZGUgdGhlIHdheSBhIGdpdmVuIG5vZGUgaXNcbiAgICogcHJpbnRlZCAoZS5nLiB5b3Ugd291bGQgbGlrZSB0byBwcmVzZXJ2ZSBhcyBtdWNoIG9mIHRoZSBvcmlnaW5hbFxuICAgKiBmb3JtYXR0aW5nIGFzIHBvc3NpYmxlKS5cbiAgICpcbiAgICogV2hlbiB0aGUgcHJvdmlkZWQgb3ZlcnJpZGUgcmV0dXJucyB1bmRlZmluZWQsIHRoZSBkZWZhdWx0IGJ1aWx0IGluIHByaW50aW5nXG4gICAqIHdpbGwgYmUgZG9uZSBmb3IgdGhlIEFTVC5Ob2RlLlxuICAgKlxuICAgKiBAcGFyYW0gYXN0IHRoZSBhc3Qgbm9kZSB0byBiZSBwcmludGVkXG4gICAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHNwZWNpZmllZCBkdXJpbmcgdGhlIHByaW50KCkgaW52b2NhdGlvblxuICAgKi9cbiAgb3ZlcnJpZGU/KGFzdDogTm9kZSwgb3B0aW9uczogUHJpbnRlck9wdGlvbnMpOiB2b2lkIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcmludGVyIHtcbiAgcHJpdmF0ZSBidWZmZXIgPSAnJztcbiAgcHJpdmF0ZSBvcHRpb25zOiBQcmludGVyT3B0aW9ucztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBQcmludGVyT3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICAvKlxuICAgIFRoaXMgaXMgdXNlZCBieSBfYWxsXyBtZXRob2RzIG9uIHRoaXMgUHJpbnRlciBjbGFzcyB0aGF0IGFkZCB0byBgdGhpcy5idWZmZXJgLFxuICAgIGl0IGFsbG93cyBjb25zdW1lcnMgb2YgdGhlIHByaW50ZXIgdG8gdXNlIGFsdGVybmF0ZSBzdHJpbmcgcmVwcmVzZW50YXRpb25zIGZvclxuICAgIGEgZ2l2ZW4gbm9kZS5cblxuICAgIFRoZSBwcmltYXJ5IHVzZSBjYXNlIGZvciB0aGlzIGFyZSB0aGluZ3MgbGlrZSBzb3VyY2UgLT4gc291cmNlIGNvZGVtb2QgdXRpbGl0aWVzLlxuICAgIEZvciBleGFtcGxlLCBlbWJlci10ZW1wbGF0ZS1yZWNhc3QgYXR0ZW1wdHMgdG8gYWx3YXlzIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBzdHJpbmdcbiAgICBmb3JtYXR0aW5nIGluIGVhY2ggQVNUIG5vZGUgaWYgbm8gbW9kaWZpY2F0aW9ucyBhcmUgbWFkZSB0byBpdC5cbiAgKi9cbiAgaGFuZGxlZEJ5T3ZlcnJpZGUobm9kZTogTm9kZSwgZW5zdXJlTGVhZGluZ1doaXRlc3BhY2UgPSBmYWxzZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm9wdGlvbnMub3ZlcnJpZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IHJlc3VsdCA9IHRoaXMub3B0aW9ucy5vdmVycmlkZShub2RlLCB0aGlzLm9wdGlvbnMpO1xuICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmIChlbnN1cmVMZWFkaW5nV2hpdGVzcGFjZSAmJiByZXN1bHQgIT09ICcnICYmIE5PTl9XSElURVNQQUNFLnRlc3QocmVzdWx0WzBdKSkge1xuICAgICAgICAgIHJlc3VsdCA9IGAgJHtyZXN1bHR9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnVmZmVyICs9IHJlc3VsdDtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgTm9kZShub2RlOiBOb2RlKTogdm9pZCB7XG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ011c3RhY2hlU3RhdGVtZW50JzpcbiAgICAgIGNhc2UgJ0Jsb2NrU3RhdGVtZW50JzpcbiAgICAgIGNhc2UgJ1BhcnRpYWxTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnTXVzdGFjaGVDb21tZW50U3RhdGVtZW50JzpcbiAgICAgIGNhc2UgJ0NvbW1lbnRTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnVGV4dE5vZGUnOlxuICAgICAgY2FzZSAnRWxlbWVudE5vZGUnOlxuICAgICAgY2FzZSAnQXR0ck5vZGUnOlxuICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgY2FzZSAnVGVtcGxhdGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5Ub3BMZXZlbFN0YXRlbWVudChub2RlKTtcbiAgICAgIGNhc2UgJ1N0cmluZ0xpdGVyYWwnOlxuICAgICAgY2FzZSAnQm9vbGVhbkxpdGVyYWwnOlxuICAgICAgY2FzZSAnTnVtYmVyTGl0ZXJhbCc6XG4gICAgICBjYXNlICdVbmRlZmluZWRMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ051bGxMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ1BhdGhFeHByZXNzaW9uJzpcbiAgICAgIGNhc2UgJ1N1YkV4cHJlc3Npb24nOlxuICAgICAgICByZXR1cm4gdGhpcy5FeHByZXNzaW9uKG5vZGUpO1xuICAgICAgY2FzZSAnUHJvZ3JhbSc6XG4gICAgICAgIHJldHVybiB0aGlzLkJsb2NrKG5vZGUpO1xuICAgICAgY2FzZSAnQ29uY2F0U3RhdGVtZW50JzpcbiAgICAgICAgLy8gc2hvdWxkIGhhdmUgYW4gQXR0ck5vZGUgcGFyZW50XG4gICAgICAgIHJldHVybiB0aGlzLkNvbmNhdFN0YXRlbWVudChub2RlKTtcbiAgICAgIGNhc2UgJ0hhc2gnOlxuICAgICAgICByZXR1cm4gdGhpcy5IYXNoKG5vZGUpO1xuICAgICAgY2FzZSAnSGFzaFBhaXInOlxuICAgICAgICByZXR1cm4gdGhpcy5IYXNoUGFpcihub2RlKTtcbiAgICAgIGNhc2UgJ0VsZW1lbnRNb2RpZmllclN0YXRlbWVudCc6XG4gICAgICAgIHJldHVybiB0aGlzLkVsZW1lbnRNb2RpZmllclN0YXRlbWVudChub2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5yZWFjaGFibGUobm9kZSwgJ05vZGUnKTtcbiAgfVxuXG4gIEV4cHJlc3Npb24oZXhwcmVzc2lvbjogRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHN3aXRjaCAoZXhwcmVzc2lvbi50eXBlKSB7XG4gICAgICBjYXNlICdTdHJpbmdMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ0Jvb2xlYW5MaXRlcmFsJzpcbiAgICAgIGNhc2UgJ051bWJlckxpdGVyYWwnOlxuICAgICAgY2FzZSAnVW5kZWZpbmVkTGl0ZXJhbCc6XG4gICAgICBjYXNlICdOdWxsTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLkxpdGVyYWwoZXhwcmVzc2lvbik7XG4gICAgICBjYXNlICdQYXRoRXhwcmVzc2lvbic6XG4gICAgICAgIHJldHVybiB0aGlzLlBhdGhFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xuICAgICAgY2FzZSAnU3ViRXhwcmVzc2lvbic6XG4gICAgICAgIHJldHVybiB0aGlzLlN1YkV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG4gICAgfVxuICAgIHJldHVybiB1bnJlYWNoYWJsZShleHByZXNzaW9uLCAnRXhwcmVzc2lvbicpO1xuICB9XG5cbiAgTGl0ZXJhbChsaXRlcmFsOiBMaXRlcmFsKSB7XG4gICAgc3dpdGNoIChsaXRlcmFsLnR5cGUpIHtcbiAgICAgIGNhc2UgJ1N0cmluZ0xpdGVyYWwnOlxuICAgICAgICByZXR1cm4gdGhpcy5TdHJpbmdMaXRlcmFsKGxpdGVyYWwpO1xuICAgICAgY2FzZSAnQm9vbGVhbkxpdGVyYWwnOlxuICAgICAgICByZXR1cm4gdGhpcy5Cb29sZWFuTGl0ZXJhbChsaXRlcmFsKTtcbiAgICAgIGNhc2UgJ051bWJlckxpdGVyYWwnOlxuICAgICAgICByZXR1cm4gdGhpcy5OdW1iZXJMaXRlcmFsKGxpdGVyYWwpO1xuICAgICAgY2FzZSAnVW5kZWZpbmVkTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLlVuZGVmaW5lZExpdGVyYWwobGl0ZXJhbCk7XG4gICAgICBjYXNlICdOdWxsTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLk51bGxMaXRlcmFsKGxpdGVyYWwpO1xuICAgIH1cbiAgICByZXR1cm4gdW5yZWFjaGFibGUobGl0ZXJhbCwgJ0xpdGVyYWwnKTtcbiAgfVxuXG4gIFRvcExldmVsU3RhdGVtZW50KHN0YXRlbWVudDogVG9wTGV2ZWxTdGF0ZW1lbnQpIHtcbiAgICBzd2l0Y2ggKHN0YXRlbWVudC50eXBlKSB7XG4gICAgICBjYXNlICdNdXN0YWNoZVN0YXRlbWVudCc6XG4gICAgICAgIHJldHVybiB0aGlzLk11c3RhY2hlU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdCbG9ja1N0YXRlbWVudCc6XG4gICAgICAgIHJldHVybiB0aGlzLkJsb2NrU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdQYXJ0aWFsU3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuUGFydGlhbFN0YXRlbWVudChzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnTXVzdGFjaGVDb21tZW50U3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuTXVzdGFjaGVDb21tZW50U3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdDb21tZW50U3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuQ29tbWVudFN0YXRlbWVudChzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnVGV4dE5vZGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5UZXh0Tm9kZShzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnRWxlbWVudE5vZGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5FbGVtZW50Tm9kZShzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgY2FzZSAnVGVtcGxhdGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5CbG9jayhzdGF0ZW1lbnQpO1xuICAgICAgY2FzZSAnQXR0ck5vZGUnOlxuICAgICAgICAvLyBzaG91bGQgaGF2ZSBlbGVtZW50XG4gICAgICAgIHJldHVybiB0aGlzLkF0dHJOb2RlKHN0YXRlbWVudCk7XG4gICAgfVxuICAgIHVucmVhY2hhYmxlKHN0YXRlbWVudCwgJ1RvcExldmVsU3RhdGVtZW50Jyk7XG4gIH1cblxuICBCbG9jayhibG9jazogQmxvY2sgfCBQcm9ncmFtIHwgVGVtcGxhdGUpOiB2b2lkIHtcbiAgICAvKlxuICAgICAgV2hlbiBwcm9jZXNzaW5nIGEgdGVtcGxhdGUgbGlrZTpcblxuICAgICAgYGBgaGJzXG4gICAgICB7eyNpZiB3aGF0ZXZlcn19XG4gICAgICAgIHdoYXRldmVyXG4gICAgICB7e2Vsc2UgaWYgc29tZXRoaW5nRWxzZX19XG4gICAgICAgIHNvbWV0aGluZyBlbHNlXG4gICAgICB7e2Vsc2V9fVxuICAgICAgICBmYWxsYmFja1xuICAgICAge3svaWZ9fVxuICAgICAgYGBgXG5cbiAgICAgIFRoZSBBU1Qgc3RpbGwgX2VmZmVjdGl2ZWx5XyBsb29rcyBsaWtlOlxuXG4gICAgICBgYGBoYnNcbiAgICAgIHt7I2lmIHdoYXRldmVyfX1cbiAgICAgICAgd2hhdGV2ZXJcbiAgICAgIHt7ZWxzZX19e3sjaWYgc29tZXRoaW5nRWxzZX19XG4gICAgICAgIHNvbWV0aGluZyBlbHNlXG4gICAgICB7e2Vsc2V9fVxuICAgICAgICBmYWxsYmFja1xuICAgICAge3svaWZ9fXt7L2lmfX1cbiAgICAgIGBgYFxuXG4gICAgICBUaGUgb25seSB3YXkgd2UgY2FuIHRlbGwgaWYgdGhhdCBpcyB0aGUgY2FzZSBpcyBieSBjaGVja2luZyBmb3JcbiAgICAgIGBibG9jay5jaGFpbmVkYCwgYnV0IHVuZm9ydHVuYXRlbHkgd2hlbiB0aGUgYWN0dWFsIHN0YXRlbWVudHMgYXJlXG4gICAgICBwcm9jZXNzZWQgdGhlIGBibG9jay5ib2R5WzBdYCBub2RlICh3aGljaCB3aWxsIGFsd2F5cyBiZSBhXG4gICAgICBgQmxvY2tTdGF0ZW1lbnRgKSBoYXMgbm8gY2x1ZSB0aGF0IGl0cyBhbnNjZXN0b3IgYEJsb2NrYCBub2RlIHdhc1xuICAgICAgY2hhaW5lZC5cblxuICAgICAgVGhpcyBcImZvcndhcmRzXCIgdGhlIGBjaGFpbmVkYCBzZXR0aW5nIHNvIHRoYXQgd2UgY2FuIGNoZWNrXG4gICAgICBpdCBsYXRlciB3aGVuIHByb2Nlc3NpbmcgdGhlIGBCbG9ja1N0YXRlbWVudGAuXG4gICAgKi9cbiAgICBpZiAoYmxvY2suY2hhaW5lZCkge1xuICAgICAgbGV0IGZpcnN0Q2hpbGQgPSBibG9jay5ib2R5WzBdIGFzIEJsb2NrU3RhdGVtZW50O1xuICAgICAgZmlyc3RDaGlsZC5jaGFpbmVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShibG9jaykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLlRvcExldmVsU3RhdGVtZW50cyhibG9jay5ib2R5KTtcbiAgfVxuXG4gIFRvcExldmVsU3RhdGVtZW50cyhzdGF0ZW1lbnRzOiBUb3BMZXZlbFN0YXRlbWVudFtdKSB7XG4gICAgc3RhdGVtZW50cy5mb3JFYWNoKChzdGF0ZW1lbnQpID0+IHRoaXMuVG9wTGV2ZWxTdGF0ZW1lbnQoc3RhdGVtZW50KSk7XG4gIH1cblxuICBFbGVtZW50Tm9kZShlbDogRWxlbWVudE5vZGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShlbCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLk9wZW5FbGVtZW50Tm9kZShlbCk7XG4gICAgdGhpcy5Ub3BMZXZlbFN0YXRlbWVudHMoZWwuY2hpbGRyZW4pO1xuICAgIHRoaXMuQ2xvc2VFbGVtZW50Tm9kZShlbCk7XG4gIH1cblxuICBPcGVuRWxlbWVudE5vZGUoZWw6IEVsZW1lbnROb2RlKTogdm9pZCB7XG4gICAgdGhpcy5idWZmZXIgKz0gYDwke2VsLnRhZ31gO1xuICAgIGNvbnN0IHBhcnRzID0gWy4uLmVsLmF0dHJpYnV0ZXMsIC4uLmVsLm1vZGlmaWVycywgLi4uZWwuY29tbWVudHNdLnNvcnQoc29ydEJ5TG9jKTtcblxuICAgIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJyAnO1xuICAgICAgc3dpdGNoIChwYXJ0LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnQXR0ck5vZGUnOlxuICAgICAgICAgIHRoaXMuQXR0ck5vZGUocGFydCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VsZW1lbnRNb2RpZmllclN0YXRlbWVudCc6XG4gICAgICAgICAgdGhpcy5FbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQocGFydCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ011c3RhY2hlQ29tbWVudFN0YXRlbWVudCc6XG4gICAgICAgICAgdGhpcy5NdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQocGFydCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlbC5ibG9ja1BhcmFtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuQmxvY2tQYXJhbXMoZWwuYmxvY2tQYXJhbXMpO1xuICAgIH1cbiAgICBpZiAoZWwuc2VsZkNsb3NpbmcpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICcgLyc7XG4gICAgfVxuICAgIHRoaXMuYnVmZmVyICs9ICc+JztcbiAgfVxuXG4gIENsb3NlRWxlbWVudE5vZGUoZWw6IEVsZW1lbnROb2RlKTogdm9pZCB7XG4gICAgaWYgKGVsLnNlbGZDbG9zaW5nIHx8IHZvaWRNYXBbZWwudGFnLnRvTG93ZXJDYXNlKCldKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYnVmZmVyICs9IGA8LyR7ZWwudGFnfT5gO1xuICB9XG5cbiAgQXR0ck5vZGUoYXR0cjogQXR0ck5vZGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShhdHRyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCB7IG5hbWUsIHZhbHVlIH0gPSBhdHRyO1xuXG4gICAgdGhpcy5idWZmZXIgKz0gbmFtZTtcbiAgICBpZiAodmFsdWUudHlwZSAhPT0gJ1RleHROb2RlJyB8fCB2YWx1ZS5jaGFycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnPSc7XG4gICAgICB0aGlzLkF0dHJOb2RlVmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEF0dHJOb2RlVmFsdWUodmFsdWU6IEF0dHJOb2RlWyd2YWx1ZSddKSB7XG4gICAgaWYgKHZhbHVlLnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICdcIic7XG4gICAgICB0aGlzLlRleHROb2RlKHZhbHVlLCB0cnVlKTtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICdcIic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuTm9kZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgVGV4dE5vZGUodGV4dDogVGV4dE5vZGUsIGlzQXR0cj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZSh0ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZW50aXR5RW5jb2RpbmcgPT09ICdyYXcnKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSB0ZXh0LmNoYXJzO1xuICAgIH0gZWxzZSBpZiAoaXNBdHRyKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBlc2NhcGVBdHRyVmFsdWUodGV4dC5jaGFycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGVzY2FwZVRleHQodGV4dC5jaGFycyk7XG4gICAgfVxuICB9XG5cbiAgTXVzdGFjaGVTdGF0ZW1lbnQobXVzdGFjaGU6IE11c3RhY2hlU3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUobXVzdGFjaGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gbXVzdGFjaGUuZXNjYXBlZCA/ICd7eycgOiAne3t7JztcblxuICAgIGlmIChtdXN0YWNoZS5zdHJpcC5vcGVuKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnfic7XG4gICAgfVxuXG4gICAgdGhpcy5FeHByZXNzaW9uKG11c3RhY2hlLnBhdGgpO1xuICAgIHRoaXMuUGFyYW1zKG11c3RhY2hlLnBhcmFtcyk7XG4gICAgdGhpcy5IYXNoKG11c3RhY2hlLmhhc2gpO1xuXG4gICAgaWYgKG11c3RhY2hlLnN0cmlwLmNsb3NlKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnfic7XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gbXVzdGFjaGUuZXNjYXBlZCA/ICd9fScgOiAnfX19JztcbiAgfVxuXG4gIEJsb2NrU3RhdGVtZW50KGJsb2NrOiBCbG9ja1N0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGJsb2NrKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChibG9jay5jaGFpbmVkKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5pbnZlcnNlU3RyaXAub3BlbiA/ICd7e34nIDogJ3t7JztcbiAgICAgIHRoaXMuYnVmZmVyICs9ICdlbHNlICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLm9wZW5TdHJpcC5vcGVuID8gJ3t7fiMnIDogJ3t7Iyc7XG4gICAgfVxuXG4gICAgdGhpcy5FeHByZXNzaW9uKGJsb2NrLnBhdGgpO1xuICAgIHRoaXMuUGFyYW1zKGJsb2NrLnBhcmFtcyk7XG4gICAgdGhpcy5IYXNoKGJsb2NrLmhhc2gpO1xuICAgIGlmIChibG9jay5wcm9ncmFtLmJsb2NrUGFyYW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5CbG9ja1BhcmFtcyhibG9jay5wcm9ncmFtLmJsb2NrUGFyYW1zKTtcbiAgICB9XG5cbiAgICBpZiAoYmxvY2suY2hhaW5lZCkge1xuICAgICAgdGhpcy5idWZmZXIgKz0gYmxvY2suaW52ZXJzZVN0cmlwLmNsb3NlID8gJ359fScgOiAnfX0nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5vcGVuU3RyaXAuY2xvc2UgPyAnfn19JyA6ICd9fSc7XG4gICAgfVxuXG4gICAgdGhpcy5CbG9jayhibG9jay5wcm9ncmFtKTtcblxuICAgIGlmIChibG9jay5pbnZlcnNlKSB7XG4gICAgICBpZiAoIWJsb2NrLmludmVyc2UuY2hhaW5lZCkge1xuICAgICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5pbnZlcnNlU3RyaXAub3BlbiA/ICd7e34nIDogJ3t7JztcbiAgICAgICAgdGhpcy5idWZmZXIgKz0gJ2Vsc2UnO1xuICAgICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5pbnZlcnNlU3RyaXAuY2xvc2UgPyAnfn19JyA6ICd9fSc7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuQmxvY2soYmxvY2suaW52ZXJzZSk7XG4gICAgfVxuXG4gICAgaWYgKCFibG9jay5jaGFpbmVkKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5jbG9zZVN0cmlwLm9wZW4gPyAne3t+LycgOiAne3svJztcbiAgICAgIHRoaXMuRXhwcmVzc2lvbihibG9jay5wYXRoKTtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmNsb3NlU3RyaXAuY2xvc2UgPyAnfn19JyA6ICd9fSc7XG4gICAgfVxuICB9XG5cbiAgQmxvY2tQYXJhbXMoYmxvY2tQYXJhbXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5idWZmZXIgKz0gYCBhcyB8JHtibG9ja1BhcmFtcy5qb2luKCcgJyl9fGA7XG4gIH1cblxuICBQYXJ0aWFsU3RhdGVtZW50KHBhcnRpYWw6IFBhcnRpYWxTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShwYXJ0aWFsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICd7ez4nO1xuICAgIHRoaXMuRXhwcmVzc2lvbihwYXJ0aWFsLm5hbWUpO1xuICAgIHRoaXMuUGFyYW1zKHBhcnRpYWwucGFyYW1zKTtcbiAgICB0aGlzLkhhc2gocGFydGlhbC5oYXNoKTtcbiAgICB0aGlzLmJ1ZmZlciArPSAnfX0nO1xuICB9XG5cbiAgQ29uY2F0U3RhdGVtZW50KGNvbmNhdDogQ29uY2F0U3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoY29uY2F0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICdcIic7XG4gICAgY29uY2F0LnBhcnRzLmZvckVhY2goKHBhcnQpID0+IHtcbiAgICAgIGlmIChwYXJ0LnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgICAgdGhpcy5UZXh0Tm9kZShwYXJ0LCB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuTm9kZShwYXJ0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmJ1ZmZlciArPSAnXCInO1xuICB9XG5cbiAgTXVzdGFjaGVDb21tZW50U3RhdGVtZW50KGNvbW1lbnQ6IE11c3RhY2hlQ29tbWVudFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGNvbW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gYHt7IS0tJHtjb21tZW50LnZhbHVlfS0tfX1gO1xuICB9XG5cbiAgRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50KG1vZDogRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUobW9kKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICd7eyc7XG4gICAgdGhpcy5FeHByZXNzaW9uKG1vZC5wYXRoKTtcbiAgICB0aGlzLlBhcmFtcyhtb2QucGFyYW1zKTtcbiAgICB0aGlzLkhhc2gobW9kLmhhc2gpO1xuICAgIHRoaXMuYnVmZmVyICs9ICd9fSc7XG4gIH1cblxuICBDb21tZW50U3RhdGVtZW50KGNvbW1lbnQ6IENvbW1lbnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShjb21tZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IGA8IS0tJHtjb21tZW50LnZhbHVlfS0tPmA7XG4gIH1cblxuICBQYXRoRXhwcmVzc2lvbihwYXRoOiBQYXRoRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHBhdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gcGF0aC5vcmlnaW5hbDtcbiAgfVxuXG4gIFN1YkV4cHJlc3Npb24oc2V4cDogU3ViRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHNleHApKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJygnO1xuICAgIHRoaXMuRXhwcmVzc2lvbihzZXhwLnBhdGgpO1xuICAgIHRoaXMuUGFyYW1zKHNleHAucGFyYW1zKTtcbiAgICB0aGlzLkhhc2goc2V4cC5oYXNoKTtcbiAgICB0aGlzLmJ1ZmZlciArPSAnKSc7XG4gIH1cblxuICBQYXJhbXMocGFyYW1zOiBFeHByZXNzaW9uW10pIHtcbiAgICAvLyBUT0RPOiBpbXBsZW1lbnQgYSB0b3AgbGV2ZWwgUGFyYW1zIEFTVCBub2RlIChqdXN0IGxpa2UgdGhlIEhhc2ggb2JqZWN0KVxuICAgIC8vIHNvIHRoYXQgdGhpcyBjYW4gYWxzbyBiZSBvdmVycmlkZGVuXG4gICAgaWYgKHBhcmFtcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtcy5mb3JFYWNoKChwYXJhbSkgPT4ge1xuICAgICAgICB0aGlzLmJ1ZmZlciArPSAnICc7XG4gICAgICAgIHRoaXMuRXhwcmVzc2lvbihwYXJhbSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBIYXNoKGhhc2g6IEhhc2gpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShoYXNoLCB0cnVlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGhhc2gucGFpcnMuZm9yRWFjaCgocGFpcikgPT4ge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJyAnO1xuICAgICAgdGhpcy5IYXNoUGFpcihwYWlyKTtcbiAgICB9KTtcbiAgfVxuXG4gIEhhc2hQYWlyKHBhaXI6IEhhc2hQYWlyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUocGFpcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBwYWlyLmtleTtcbiAgICB0aGlzLmJ1ZmZlciArPSAnPSc7XG4gICAgdGhpcy5Ob2RlKHBhaXIudmFsdWUpO1xuICB9XG5cbiAgU3RyaW5nTGl0ZXJhbChzdHI6IFN0cmluZ0xpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShzdHIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gSlNPTi5zdHJpbmdpZnkoc3RyLnZhbHVlKTtcbiAgfVxuXG4gIEJvb2xlYW5MaXRlcmFsKGJvb2w6IEJvb2xlYW5MaXRlcmFsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoYm9vbCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBib29sLnZhbHVlO1xuICB9XG5cbiAgTnVtYmVyTGl0ZXJhbChudW1iZXI6IE51bWJlckxpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShudW1iZXIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gbnVtYmVyLnZhbHVlO1xuICB9XG5cbiAgVW5kZWZpbmVkTGl0ZXJhbChub2RlOiBVbmRlZmluZWRMaXRlcmFsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUobm9kZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIE51bGxMaXRlcmFsKG5vZGU6IE51bGxMaXRlcmFsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUobm9kZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSAnbnVsbCc7XG4gIH1cblxuICBwcmludChub2RlOiBOb2RlKSB7XG4gICAgbGV0IHsgb3B0aW9ucyB9ID0gdGhpcztcblxuICAgIGlmIChvcHRpb25zLm92ZXJyaWRlKSB7XG4gICAgICBsZXQgcmVzdWx0ID0gb3B0aW9ucy5vdmVycmlkZShub2RlLCBvcHRpb25zKTtcblxuICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgPSAnJztcbiAgICB0aGlzLk5vZGUobm9kZSk7XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVucmVhY2hhYmxlKG5vZGU6IG5ldmVyLCBwYXJlbnROb2RlVHlwZTogc3RyaW5nKTogbmV2ZXIge1xuICBsZXQgeyBsb2MsIHR5cGUgfSA9IChub2RlIGFzIGFueSkgYXMgTm9kZTtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBOb24tZXhoYXVzdGl2ZSBub2RlIG5hcnJvd2luZyAke3R5cGV9IEAgbG9jYXRpb246ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICBsb2NcbiAgICApfSBmb3IgcGFyZW50ICR7cGFyZW50Tm9kZVR5cGV9YFxuICApO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -69,2 +69,29 @@ const ATTR_VALUE_REGEX_TEST = /[\xA0"&]/;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE1BQU0scUJBQXFCLEdBQUcsVUFBOUI7QUFDQSxNQUFNLHdCQUF3QixHQUFHLElBQUksTUFBSixDQUFXLHFCQUFxQixDQUFDLE1BQWpDLEVBQXlDLEdBQXpDLENBQWpDO0FBRUEsTUFBTSxlQUFlLEdBQUcsV0FBeEI7QUFDQSxNQUFNLGtCQUFrQixHQUFHLElBQUksTUFBSixDQUFXLGVBQWUsQ0FBQyxNQUEzQixFQUFtQyxHQUFuQyxDQUEzQjs7QUFFQSxTQUFTLGlCQUFULENBQTJCLElBQTNCLEVBQXVDO0FBQ3JDLFVBQVEsSUFBSSxDQUFDLFVBQUwsQ0FBZ0IsQ0FBaEIsQ0FBUjtBQUNFLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBTyxRQUFQOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBTyxRQUFQOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBTyxPQUFQOztBQUNGO0FBQ0UsYUFBTyxJQUFQO0FBUko7QUFVRDs7QUFFRCxTQUFTLFlBQVQsQ0FBc0IsSUFBdEIsRUFBa0M7QUFDaEMsVUFBUSxJQUFJLENBQUMsVUFBTCxDQUFnQixDQUFoQixDQUFSO0FBQ0UsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFPLFFBQVA7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFPLE9BQVA7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFPLE1BQVA7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFPLE1BQVA7O0FBQ0Y7QUFDRSxhQUFPLElBQVA7QUFWSjtBQVlEOztBQUVELE9BQU0sU0FBVSxlQUFWLENBQTBCLFNBQTFCLEVBQTJDO0FBQy9DLE1BQUkscUJBQXFCLENBQUMsSUFBdEIsQ0FBMkIsU0FBM0IsQ0FBSixFQUEyQztBQUN6QyxXQUFPLFNBQVMsQ0FBQyxPQUFWLENBQWtCLHdCQUFsQixFQUE0QyxpQkFBNUMsQ0FBUDtBQUNEOztBQUNELFNBQU8sU0FBUDtBQUNEO0FBRUQsT0FBTSxTQUFVLFVBQVYsQ0FBcUIsSUFBckIsRUFBaUM7QUFDckMsTUFBSSxlQUFlLENBQUMsSUFBaEIsQ0FBcUIsSUFBckIsQ0FBSixFQUFnQztBQUM5QixXQUFPLElBQUksQ0FBQyxPQUFMLENBQWEsa0JBQWIsRUFBaUMsWUFBakMsQ0FBUDtBQUNEOztBQUNELFNBQU8sSUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZW51bSBDaGFyIHtcbiAgTkJTUCA9IDB4YTAsXG4gIFFVT1QgPSAweDIyLFxuICBMVCA9IDB4M2MsXG4gIEdUID0gMHgzZSxcbiAgQU1QID0gMHgyNixcbn1cblxuY29uc3QgQVRUUl9WQUxVRV9SRUdFWF9URVNUID0gL1tcXHhBMFwiJl0vO1xuY29uc3QgQVRUUl9WQUxVRV9SRUdFWF9SRVBMQUNFID0gbmV3IFJlZ0V4cChBVFRSX1ZBTFVFX1JFR0VYX1RFU1Quc291cmNlLCAnZycpO1xuXG5jb25zdCBURVhUX1JFR0VYX1RFU1QgPSAvW1xceEEwJjw+XS87XG5jb25zdCBURVhUX1JFR0VYX1JFUExBQ0UgPSBuZXcgUmVnRXhwKFRFWFRfUkVHRVhfVEVTVC5zb3VyY2UsICdnJyk7XG5cbmZ1bmN0aW9uIGF0dHJWYWx1ZVJlcGxhY2VyKGNoYXI6IHN0cmluZykge1xuICBzd2l0Y2ggKGNoYXIuY2hhckNvZGVBdCgwKSkge1xuICAgIGNhc2UgQ2hhci5OQlNQOlxuICAgICAgcmV0dXJuICcmbmJzcDsnO1xuICAgIGNhc2UgQ2hhci5RVU9UOlxuICAgICAgcmV0dXJuICcmcXVvdDsnO1xuICAgIGNhc2UgQ2hhci5BTVA6XG4gICAgICByZXR1cm4gJyZhbXA7JztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGNoYXI7XG4gIH1cbn1cblxuZnVuY3Rpb24gdGV4dFJlcGxhY2VyKGNoYXI6IHN0cmluZykge1xuICBzd2l0Y2ggKGNoYXIuY2hhckNvZGVBdCgwKSkge1xuICAgIGNhc2UgQ2hhci5OQlNQOlxuICAgICAgcmV0dXJuICcmbmJzcDsnO1xuICAgIGNhc2UgQ2hhci5BTVA6XG4gICAgICByZXR1cm4gJyZhbXA7JztcbiAgICBjYXNlIENoYXIuTFQ6XG4gICAgICByZXR1cm4gJyZsdDsnO1xuICAgIGNhc2UgQ2hhci5HVDpcbiAgICAgIHJldHVybiAnJmd0Oyc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBjaGFyO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVBdHRyVmFsdWUoYXR0clZhbHVlOiBzdHJpbmcpIHtcbiAgaWYgKEFUVFJfVkFMVUVfUkVHRVhfVEVTVC50ZXN0KGF0dHJWYWx1ZSkpIHtcbiAgICByZXR1cm4gYXR0clZhbHVlLnJlcGxhY2UoQVRUUl9WQUxVRV9SRUdFWF9SRVBMQUNFLCBhdHRyVmFsdWVSZXBsYWNlcik7XG4gIH1cbiAgcmV0dXJuIGF0dHJWYWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZVRleHQodGV4dDogc3RyaW5nKSB7XG4gIGlmIChURVhUX1JFR0VYX1RFU1QudGVzdCh0ZXh0KSkge1xuICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoVEVYVF9SRUdFWF9SRVBMQUNFLCB0ZXh0UmVwbGFjZXIpO1xuICB9XG4gIHJldHVybiB0ZXh0O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
export function isSynthetic(node) {
if (node && node.loc) {
return node.loc.source === '(synthetic)';
}
return false;
}
export function sortByLoc(a, b) {
// be conservative about the location where a new node is inserted
if (isSynthetic(a) || isSynthetic(b)) {
return 0;
}
if (a.loc.start.line < b.loc.start.line) {
return -1;
}
if (a.loc.start.line === b.loc.start.line && a.loc.start.column < b.loc.start.column) {
return -1;
}
if (a.loc.start.line === b.loc.start.line && a.loc.start.column === b.loc.start.column) {
return 0;
}
return 1;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE1BQU0scUJBQXFCLEdBQUcsVUFBOUI7QUFDQSxNQUFNLHdCQUF3QixHQUFHLElBQUksTUFBSixDQUFXLHFCQUFxQixDQUFDLE1BQWpDLEVBQXlDLEdBQXpDLENBQWpDO0FBRUEsTUFBTSxlQUFlLEdBQUcsV0FBeEI7QUFDQSxNQUFNLGtCQUFrQixHQUFHLElBQUksTUFBSixDQUFXLGVBQWUsQ0FBQyxNQUEzQixFQUFtQyxHQUFuQyxDQUEzQjs7QUFFQSxTQUFTLGlCQUFULENBQTJCLElBQTNCLEVBQXVDO0FBQ3JDLFVBQVEsSUFBSSxDQUFDLFVBQUwsQ0FBZ0IsQ0FBaEIsQ0FBUjtBQUNFLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBTyxRQUFQOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBTyxRQUFQOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBTyxPQUFQOztBQUNGO0FBQ0UsYUFBTyxJQUFQO0FBUko7QUFVRDs7QUFFRCxTQUFTLFlBQVQsQ0FBc0IsSUFBdEIsRUFBa0M7QUFDaEMsVUFBUSxJQUFJLENBQUMsVUFBTCxDQUFnQixDQUFoQixDQUFSO0FBQ0UsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFPLFFBQVA7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFPLE9BQVA7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFPLE1BQVA7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFPLE1BQVA7O0FBQ0Y7QUFDRSxhQUFPLElBQVA7QUFWSjtBQVlEOztBQUVELE9BQU0sU0FBVSxlQUFWLENBQTBCLFNBQTFCLEVBQTJDO0FBQy9DLE1BQUkscUJBQXFCLENBQUMsSUFBdEIsQ0FBMkIsU0FBM0IsQ0FBSixFQUEyQztBQUN6QyxXQUFPLFNBQVMsQ0FBQyxPQUFWLENBQWtCLHdCQUFsQixFQUE0QyxpQkFBNUMsQ0FBUDtBQUNEOztBQUNELFNBQU8sU0FBUDtBQUNEO0FBRUQsT0FBTSxTQUFVLFVBQVYsQ0FBcUIsSUFBckIsRUFBaUM7QUFDckMsTUFBSSxlQUFlLENBQUMsSUFBaEIsQ0FBcUIsSUFBckIsQ0FBSixFQUFnQztBQUM5QixXQUFPLElBQUksQ0FBQyxPQUFMLENBQWEsa0JBQWIsRUFBaUMsWUFBakMsQ0FBUDtBQUNEOztBQUNELFNBQU8sSUFBUDtBQUNEO0FBRUQsT0FBTSxTQUFVLFdBQVYsQ0FBc0IsSUFBdEIsRUFBb0M7QUFDeEMsTUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEdBQWpCLEVBQXNCO0FBQ3BCLFdBQU8sSUFBSSxDQUFDLEdBQUwsQ0FBUyxNQUFULEtBQW9CLGFBQTNCO0FBQ0Q7O0FBRUQsU0FBTyxLQUFQO0FBQ0Q7QUFFRCxPQUFNLFNBQVUsU0FBVixDQUFvQixDQUFwQixFQUFpQyxDQUFqQyxFQUE0QztBQUNoRDtBQUNBLE1BQUksV0FBVyxDQUFDLENBQUQsQ0FBWCxJQUFrQixXQUFXLENBQUMsQ0FBRCxDQUFqQyxFQUFzQztBQUNwQyxXQUFPLENBQVA7QUFDRDs7QUFFRCxNQUFJLENBQUMsQ0FBQyxHQUFGLENBQU0sS0FBTixDQUFZLElBQVosR0FBbUIsQ0FBQyxDQUFDLEdBQUYsQ0FBTSxLQUFOLENBQVksSUFBbkMsRUFBeUM7QUFDdkMsV0FBTyxDQUFDLENBQVI7QUFDRDs7QUFFRCxNQUFJLENBQUMsQ0FBQyxHQUFGLENBQU0sS0FBTixDQUFZLElBQVosS0FBcUIsQ0FBQyxDQUFDLEdBQUYsQ0FBTSxLQUFOLENBQVksSUFBakMsSUFBeUMsQ0FBQyxDQUFDLEdBQUYsQ0FBTSxLQUFOLENBQVksTUFBWixHQUFxQixDQUFDLENBQUMsR0FBRixDQUFNLEtBQU4sQ0FBWSxNQUE5RSxFQUFzRjtBQUNwRixXQUFPLENBQUMsQ0FBUjtBQUNEOztBQUVELE1BQUksQ0FBQyxDQUFDLEdBQUYsQ0FBTSxLQUFOLENBQVksSUFBWixLQUFxQixDQUFDLENBQUMsR0FBRixDQUFNLEtBQU4sQ0FBWSxJQUFqQyxJQUF5QyxDQUFDLENBQUMsR0FBRixDQUFNLEtBQU4sQ0FBWSxNQUFaLEtBQXVCLENBQUMsQ0FBQyxHQUFGLENBQU0sS0FBTixDQUFZLE1BQWhGLEVBQXdGO0FBQ3RGLFdBQU8sQ0FBUDtBQUNEOztBQUVELFNBQU8sQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQVNUIGZyb20gJy4uL3R5cGVzL25vZGVzJztcblxuY29uc3QgZW51bSBDaGFyIHtcbiAgTkJTUCA9IDB4YTAsXG4gIFFVT1QgPSAweDIyLFxuICBMVCA9IDB4M2MsXG4gIEdUID0gMHgzZSxcbiAgQU1QID0gMHgyNixcbn1cblxuY29uc3QgQVRUUl9WQUxVRV9SRUdFWF9URVNUID0gL1tcXHhBMFwiJl0vO1xuY29uc3QgQVRUUl9WQUxVRV9SRUdFWF9SRVBMQUNFID0gbmV3IFJlZ0V4cChBVFRSX1ZBTFVFX1JFR0VYX1RFU1Quc291cmNlLCAnZycpO1xuXG5jb25zdCBURVhUX1JFR0VYX1RFU1QgPSAvW1xceEEwJjw+XS87XG5jb25zdCBURVhUX1JFR0VYX1JFUExBQ0UgPSBuZXcgUmVnRXhwKFRFWFRfUkVHRVhfVEVTVC5zb3VyY2UsICdnJyk7XG5cbmZ1bmN0aW9uIGF0dHJWYWx1ZVJlcGxhY2VyKGNoYXI6IHN0cmluZykge1xuICBzd2l0Y2ggKGNoYXIuY2hhckNvZGVBdCgwKSkge1xuICAgIGNhc2UgQ2hhci5OQlNQOlxuICAgICAgcmV0dXJuICcmbmJzcDsnO1xuICAgIGNhc2UgQ2hhci5RVU9UOlxuICAgICAgcmV0dXJuICcmcXVvdDsnO1xuICAgIGNhc2UgQ2hhci5BTVA6XG4gICAgICByZXR1cm4gJyZhbXA7JztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGNoYXI7XG4gIH1cbn1cblxuZnVuY3Rpb24gdGV4dFJlcGxhY2VyKGNoYXI6IHN0cmluZykge1xuICBzd2l0Y2ggKGNoYXIuY2hhckNvZGVBdCgwKSkge1xuICAgIGNhc2UgQ2hhci5OQlNQOlxuICAgICAgcmV0dXJuICcmbmJzcDsnO1xuICAgIGNhc2UgQ2hhci5BTVA6XG4gICAgICByZXR1cm4gJyZhbXA7JztcbiAgICBjYXNlIENoYXIuTFQ6XG4gICAgICByZXR1cm4gJyZsdDsnO1xuICAgIGNhc2UgQ2hhci5HVDpcbiAgICAgIHJldHVybiAnJmd0Oyc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBjaGFyO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVBdHRyVmFsdWUoYXR0clZhbHVlOiBzdHJpbmcpIHtcbiAgaWYgKEFUVFJfVkFMVUVfUkVHRVhfVEVTVC50ZXN0KGF0dHJWYWx1ZSkpIHtcbiAgICByZXR1cm4gYXR0clZhbHVlLnJlcGxhY2UoQVRUUl9WQUxVRV9SRUdFWF9SRVBMQUNFLCBhdHRyVmFsdWVSZXBsYWNlcik7XG4gIH1cbiAgcmV0dXJuIGF0dHJWYWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZVRleHQodGV4dDogc3RyaW5nKSB7XG4gIGlmIChURVhUX1JFR0VYX1RFU1QudGVzdCh0ZXh0KSkge1xuICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoVEVYVF9SRUdFWF9SRVBMQUNFLCB0ZXh0UmVwbGFjZXIpO1xuICB9XG4gIHJldHVybiB0ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTeW50aGV0aWMobm9kZTogQVNULk5vZGUpOiBib29sZWFuIHtcbiAgaWYgKG5vZGUgJiYgbm9kZS5sb2MpIHtcbiAgICByZXR1cm4gbm9kZS5sb2Muc291cmNlID09PSAnKHN5bnRoZXRpYyknO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29ydEJ5TG9jKGE6IEFTVC5Ob2RlLCBiOiBBU1QuTm9kZSk6IC0xIHwgMCB8IDEge1xuICAvLyBiZSBjb25zZXJ2YXRpdmUgYWJvdXQgdGhlIGxvY2F0aW9uIHdoZXJlIGEgbmV3IG5vZGUgaXMgaW5zZXJ0ZWRcbiAgaWYgKGlzU3ludGhldGljKGEpIHx8IGlzU3ludGhldGljKGIpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZiAoYS5sb2Muc3RhcnQubGluZSA8IGIubG9jLnN0YXJ0LmxpbmUpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICBpZiAoYS5sb2Muc3RhcnQubGluZSA9PT0gYi5sb2Muc3RhcnQubGluZSAmJiBhLmxvYy5zdGFydC5jb2x1bW4gPCBiLmxvYy5zdGFydC5jb2x1bW4pIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICBpZiAoYS5sb2Muc3RhcnQubGluZSA9PT0gYi5sb2Muc3RhcnQubGluZSAmJiBhLmxvYy5zdGFydC5jb2x1bW4gPT09IGIubG9jLnN0YXJ0LmNvbHVtbikge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIDE7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -206,2 +206,5 @@ import b from '../builders';

:
case "afterAttributeName"
/* afterAttributeName */
:
this.currentStartTag.comments.push(comment);

@@ -419,2 +422,2 @@ break;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyL2hhbmRsZWJhcnMtbm9kZS12aXNpdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLENBQVAsTUFBYyxhQUFkO0FBQ0EsU0FBUyxXQUFULEVBQXNCLFNBQXRCLEVBQWlDLFlBQWpDLFFBQXFELFVBQXJEO0FBR0EsU0FBUyxNQUFULFFBQXVDLFdBQXZDO0FBQ0EsT0FBTyxXQUFQLE1BQXdCLHdCQUF4QjtBQUtBLE9BQU0sTUFBZ0Isc0JBQWhCLFNBQStDLE1BQS9DLENBQXFEO0FBS3pELE1BQVksVUFBWixHQUFzQjtBQUNwQixXQUFPLEtBQUssWUFBTCxDQUFrQixNQUFsQixLQUE2QixDQUFwQztBQUNEOztBQUtELEVBQUEsT0FBTyxDQUFDLE9BQUQsRUFBcUI7QUFDMUIsUUFBSSxJQUFJLEdBQW9CLEVBQTVCO0FBQ0EsUUFBSSxJQUFKOztBQUVBLFFBQUksS0FBSyxVQUFULEVBQXFCO0FBQ25CLE1BQUEsSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFGLENBQVcsSUFBWCxFQUFpQixPQUFPLENBQUMsV0FBekIsRUFBc0MsT0FBTyxDQUFDLEdBQTlDLENBQVA7QUFDRCxLQUZELE1BRU87QUFDTCxNQUFBLElBQUksR0FBRyxDQUFDLENBQUMsV0FBRixDQUFjLElBQWQsRUFBb0IsT0FBTyxDQUFDLFdBQTVCLEVBQXlDLE9BQU8sQ0FBQyxPQUFqRCxFQUEwRCxPQUFPLENBQUMsR0FBbEUsQ0FBUDtBQUNEOztBQUVELFFBQUksQ0FBSjtBQUFBLFFBQ0UsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFSLENBQWEsTUFEbkI7QUFHQSxTQUFLLFlBQUwsQ0FBa0IsSUFBbEIsQ0FBdUIsSUFBdkI7O0FBRUEsUUFBSSxDQUFDLEtBQUssQ0FBVixFQUFhO0FBQ1gsYUFBTyxLQUFLLFlBQUwsQ0FBa0IsR0FBbEIsRUFBUDtBQUNEOztBQUVELFNBQUssQ0FBQyxHQUFH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LFlBQVksQ0FBQyxJQUFELENBQU0sSUFBdEM7QUFDQSxRQUFJLEdBQUcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLFFBQVEsUUFBUSxNQUExQztBQUVBLFVBQU0sSUFBSSxXQUFKLENBQ0osTUFBTSxHQUFHLEtBQUssUUFBUSw4QkFBOEIsSUFBSSxDQUFDLFFBQVEsYUFDL0QsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFKLENBQVUsSUFDbkIsR0FISSxFQUlKLFFBQVEsQ0FBQyxHQUpMLENBQU47QUFNRDs7QUFFRCxNQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsZUFBRixDQUFrQixJQUFsQixFQUF3QixNQUF4QixFQUFnQyxJQUFoQyxFQUFzQyxHQUF0QyxDQUFmO0FBQ0EsRUFBQSxPQUFPLENBQUMsU0FBUixDQUFrQixJQUFsQixDQUF1QixRQUF2QjtBQUNEOztBQUVELFNBQVMsK0JBQVQsQ0FBeUMsU0FBekMsRUFBK0QsSUFBL0QsRUFBMEY7QUFDeEYsRUFBQSxTQUFTLENBQUMsU0FBVixHQUFzQixJQUF0QjtBQUNBLEVBQUEsU0FBUyxDQUFDLEtBQVYsQ0FBZ0IsSUFBaEIsQ0FBcUIsSUFBckI7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiIGZyb20gJy4uL2J1aWxkZXJzJztcbmltcG9ydCB7IGFwcGVuZENoaWxkLCBpc0xpdGVyYWwsIHByaW50TGl0ZXJhbCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCAqIGFzIEFTVCBmcm9tICcuLi90eXBlcy9ub2Rlcyc7XG5pbXBvcnQgKiBhcyBIQlMgZnJvbSAnLi4vdHlwZXMvaGFuZGxlYmFycy1hc3QnO1xuaW1wb3J0IHsgUGFyc2VyLCBUYWcsIEF0dHJpYnV0ZSB9IGZyb20gJy4uL3BhcnNlcic7XG5pbXBvcnQgU3ludGF4RXJyb3IgZnJvbSAnLi4vZXJyb3JzL3N5bnRheC1lcnJvcic7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IFJlY2FzdCB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVG9rZW5pemVyU3RhdGUgfSBmcm9tICdzaW1wbGUtaHRtbC10b2tlbml6ZXInO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSGFuZGxlYmFyc05vZGVWaXNpdG9ycyBleHRlbmRzIFBhcnNlciB7XG4gIGFic3RyYWN0IGFwcGVuZFRvQ29tbWVudERhdGEoczogc3RyaW5nKTogdm9pZDtcbiAgYWJzdHJhY3QgYmVnaW5BdHRyaWJ1dGVWYWx1ZShxdW90ZWQ6IGJvb2xlYW4pOiB2b2lkO1xuICBhYnN0cmFjdCBmaW5pc2hBdHRyaWJ1dGVWYWx1ZSgpOiB2b2lkO1xuXG4gIHByaXZhdGUgZ2V0IGlzVG9wTGV2ZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIFByb2dyYW0ocHJvZ3JhbTogSEJTLlByb2dyYW0pOiBBU1QuQmxvY2s7XG4gIFByb2dyYW0ocHJvZ3JhbTogSEJTLlByb2dyYW0pOiBBU1QuVGVtcGxhdGU7XG4gIFByb2dyYW0ocHJvZ3JhbTogSEJTLlByb2dyYW0pOiBBU1QuVGVtcGxhdGUgfCBBU1QuQmxvY2s7XG4gIFByb2dyYW0ocHJvZ3JhbTogSEJTLlByb2dyYW0pOiBBU1QuQmxvY2sgfCBBU1QuVGVtcGxhdGUge1xuICAgIGxldCBib2R5OiBBU1QuU3RhdGVtZW50W10gPSBbXTtcbiAgICBsZXQgbm9kZTtcblxuICAgIGlmICh0aGlzLmlzVG9wTGV2ZWwpIHtcbiAgICAgIG5vZGUgPSBiLnRlbXBsYXRlKGJvZHksIHByb2dyYW0uYmxvY2tQYXJhbXMsIHByb2dyYW0ubG9jKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZSA9IGIuYmxvY2tJdHNlbGYoYm9keSwgcHJvZ3JhbS5ibG9ja1BhcmFtcywgcHJvZ3JhbS5jaGFpbmVkLCBwcm9ncmFtLmxvYyk7XG4gICAgfVxuXG4gICAgbGV0IGksXG4gICAgICBsID0gcHJvZ3JhbS5ib2R5Lmxlbmd0aDtcblxuICAgIHRoaXMuZWxlbWVudFN0YWNrLnB1c2gobm9kZSk7XG5cbiAgICBpZiAobCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpIGFzIEFTVC5CbG9jayB8IEFTVC5UZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0aGlzLmFjY2VwdE5vZGUocHJvZ3JhbS5ib2R5W2ldKTtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgdGhhdCB0aGF0IHRoZSBlbGVtZW50IHN0YWNrIGlzIGJhbGFuY2VkIHByb3Blcmx5LlxuICAgIGxldCBwb3BwZWROb2RlID0gdGhpcy5lbGVtZW50U3RhY2sucG9wKCk7XG4gICAgaWYgKHBvcHBlZE5vZGUgIT09IG5vZGUpIHtcbiAgICAgIGxldCBlbGVtZW50Tm9kZSA9IHBvcHBlZE5vZGUgYXMgQVNULkVsZW1lbnROb2RlO1xuXG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICdVbmNsb3NlZCBlbGVtZW50IGAnICsgZWxlbWVudE5vZGUudGFnICsgJ2AgKG9uIGxpbmUgJyArIGVsZW1lbnROb2RlLmxvYyEuc3RhcnQubGluZSArICcpLicsXG4gICAgICAgIGVsZW1lbnROb2RlLmxvY1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIEJsb2NrU3RhdGVtZW50KGJsb2NrOiBIQlMuQmxvY2tTdGF0ZW1lbnQpOiBBU1QuQmxvY2tTdGF0ZW1lbnQgfCB2b2lkIHtcbiAgICBpZiAodGhpcy50b2tlbml6ZXIuc3RhdGUgPT09IFRva2VuaXplclN0YXRlLmNvbW1lbnQpIHtcbiAgICAgIHRoaXMuYXBwZW5kVG9Db21tZW50RGF0YSh0aGlzLnNvdXJjZUZvck5vZGUoYmxvY2spKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSAhPT0gVG9rZW5pemVyU3RhdGUuZGF0YSAmJlxuICAgICAgdGhpcy50b2tlbml6ZXJbJ3N0YXRlJ10gIT09IFRva2VuaXplclN0YXRlLmJlZm9yZURhdGFcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgJ0EgYmxvY2sgbWF5IG9ubHkgYmUgdXNlZCBpbnNpZGUgYW4gSFRNTCBlbGVtZW50IG9yIGFub3RoZXIgYmxvY2suJyxcbiAgICAgICAgYmxvY2subG9jXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCB9ID0gYWNjZXB0Q2FsbE5vZGVzKHRoaXMsIGJsb2NrKTtcbiAgICBsZXQgcHJvZ3JhbSA9IHRoaXMuUHJvZ3JhbShibG9jay5wcm9ncmFtKTtcbiAgICBsZXQgaW52ZXJzZSA9IGJsb2NrLmludmVyc2UgPyB0aGlzLlByb2dyYW0oYmxvY2suaW52ZXJzZSkgOiBudWxsO1xuXG4gICAgbGV0IG5vZGUgPSBiLmJsb2NrKFxuICAgICAgcGF0aCxcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhhc2gsXG4gICAgICBwcm9ncmFtLFxuICAgICAgaW52ZXJzZSxcbiAgICAgIGJsb2NrLmxvYyxcbiAgICAgIGJsb2NrLm9wZW5TdHJpcCxcbiAgICAgIGJsb2NrLmludmVyc2VTdHJpcCxcbiAgICAgIGJsb2NrLmNsb3NlU3RyaXBcbiAgICApO1xuXG4gICAgbGV0IHBhcmVudFByb2dyYW0gPSB0aGlzLmN1cnJlbnRFbGVtZW50KCk7XG5cbiAgICBhcHBlbmRDaGlsZChwYXJlbnRQcm9ncmFtLCBub2RlKTtcbiAgfVxuXG4gIE11c3RhY2hlU3RhdGVtZW50KHJhd011c3RhY2hlOiBIQlMuTXVzdGFjaGVTdGF0ZW1lbnQpOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQgfCB2b2lkIHtcbiAgICBsZXQgeyB0b2tlbml6ZXIgfSA9IHRoaXM7XG5cbiAgICBpZiAodG9rZW5pemVyLnN0YXRlID09PSAnY29tbWVudCcpIHtcbiAgICAgIHRoaXMuYXBwZW5kVG9Db21tZW50RGF0YSh0aGlzLnNvdXJjZUZvck5vZGUocmF3TXVzdGFjaGUpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbXVzdGFjaGU6IEFTVC5NdXN0YWNoZVN0YXRlbWVudDtcbiAgICBsZXQgeyBlc2NhcGVkLCBsb2MsIHN0cmlwIH0gPSByYXdNdXN0YWNoZTtcblxuICAgIGlmIChpc0xpdGVyYWwocmF3TXVzdGFjaGUucGF0aCkpIHtcbiAgICAgIG11c3RhY2hlID0ge1xuICAgICAgICB0eXBlOiAnTXVzdGFjaGVTdGF0ZW1lbnQnLFxuICAgICAgICBwYXRoOiB0aGlzLmFjY2VwdE5vZGU8QVNULkxpdGVyYWw+KHJhd011c3RhY2hlLnBhdGgpLFxuICAgICAgICBwYXJhbXM6IFtdLFxuICAgICAgICBoYXNoOiBiLmhhc2goKSxcbiAgICAgICAgZXNjYXBlZCxcbiAgICAgICAgbG9jLFxuICAgICAgICBzdHJpcCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCB9ID0gYWNjZXB0Q2FsbE5vZGVzKFxuICAgICAgICB0aGlzLFxuICAgICAgICByYXdNdXN0YWNoZSBhcyBIQlMuTXVzdGFjaGVTdGF0ZW1lbnQgJiB7XG4gICAgICAgICAgcGF0aDogSEJTLlBhdGhFeHByZXNzaW9uO1xuICAgICAgICB9XG4gICAgICApO1xuICAgICAgbXVzdGFjaGUgPSBiLm11c3RhY2hlKHBhdGgsIHBhcmFtcywgaGFzaCwgIWVzY2FwZWQsIGxvYywgc3RyaXApO1xuICAgIH1cblxuICAgIHN3aXRjaCAodG9rZW5pemVyLnN0YXRlKSB7XG4gICAgICAvLyBUYWcgaGVscGVyc1xuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS50YWdPcGVuOlxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS50YWdOYW1lOlxuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICAgYENhbm5vdCB1c2UgbXVzdGFjaGVzIGluIGFuIGVsZW1lbnRzIHRhZ25hbWU6IFxcYCR7dGhpcy5zb3VyY2VGb3JOb2RlKFxuICAgICAgICAgICAgcmF3TXVzdGFjaGUsXG4gICAgICAgICAgICByYXdNdXN0YWNoZS5wYXRoXG4gICAgICAgICAgKX1cXGAgYXQgTCR7bG9jLnN0YXJ0LmxpbmV9OkMke2xvYy5zdGFydC5jb2x1bW59YCxcbiAgICAgICAgICBtdXN0YWNoZS5sb2NcbiAgICAgICAgKTtcblxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5iZWZvcmVBdHRyaWJ1dGVOYW1lOlxuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50U3RhcnRUYWcsIG11c3RhY2hlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmF0dHJpYnV0ZU5hbWU6XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmFmdGVyQXR0cmlidXRlTmFtZTpcbiAgICAgICAgdGhpcy5iZWdpbkF0dHJpYnV0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50U3RhcnRUYWcsIG11c3RhY2hlKTtcbiAgICAgICAgdG9rZW5pemVyLnRyYW5zaXRpb25UbyhUb2tlbml6ZXJTdGF0ZS5iZWZvcmVBdHRyaWJ1dGVOYW1lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWQ6XG4gICAgICAgIGFkZEVsZW1lbnRNb2RpZmllcih0aGlzLmN1cnJlbnRTdGFydFRhZywgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIudHJhbnNpdGlvblRvKFRva2VuaXplclN0YXRlLmJlZm9yZUF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gQXR0cmlidXRlIHZhbHVlc1xuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5iZWZvcmVBdHRyaWJ1dGVWYWx1ZTpcbiAgICAgICAgdGhpcy5iZWdpbkF0dHJpYnV0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgYXBwZW5kRHluYW1pY0F0dHJpYnV0ZVZhbHVlUGFydCh0aGlzLmN1cnJlbnRBdHRyaWJ1dGUhLCBtdXN0YWNoZSk7XG4gICAgICAgIHRva2VuaXplci50cmFuc2l0aW9uVG8oVG9rZW5pemVyU3RhdGUuYXR0cmlidXRlVmFsdWVVbnF1b3RlZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5hdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZDpcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWQ6XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQ6XG4gICAgICAgIGFwcGVuZER5bmFtaWNBdHRyaWJ1dGVWYWx1ZVBhcnQodGhpcy5jdXJyZW50QXR0cmlidXRlISwgbXVzdGFjaGUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gVE9ETzogT25seSBhcHBlbmQgY2hpbGQgd2hlbiB0aGUgdG9rZW5pemVyIHN0YXRlIG1ha2VzXG4gICAgICAvLyBzZW5zZSB0byBkbyBzbywgb3RoZXJ3aXNlIHRocm93IGFuIGVycm9yLlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCBtdXN0YWNoZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG11c3RhY2hlO1xuICB9XG5cbiAgQ29udGVudFN0YXRlbWVudChjb250ZW50OiBIQlMuQ29udGVudFN0YXRlbWVudCk6IHZvaWQge1xuICAgIHVwZGF0ZVRva2VuaXplckxvY2F0aW9uKHRoaXMudG9rZW5pemVyLCBjb250ZW50KTtcblxuICAgIHRoaXMudG9rZW5pemVyLnRva2VuaXplUGFydChjb250ZW50LnZhbHVlKTtcbiAgICB0aGlzLnRva2VuaXplci5mbHVzaERhdGEoKTtcbiAgfVxuXG4gIENvbW1lbnRTdGF0ZW1lbnQocmF3Q29tbWVudDogSEJTLkNvbW1lbnRTdGF0ZW1lbnQpOiBPcHRpb248QVNULk11c3RhY2hlQ29tbWVudFN0YXRlbWVudD4ge1xuICAgIGxldCB7IHRva2VuaXplciB9ID0gdGhpcztcblxuICAgIGlmICh0b2tlbml6ZXIuc3RhdGUgPT09IFRva2VuaXplclN0YXRlLmNvbW1lbnQpIHtcbiAgICAgIHRoaXMuYXBwZW5kVG9Db21tZW50RGF0YSh0aGlzLnNvdXJjZUZvck5vZGUocmF3Q29tbWVudCkpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IHsgdmFsdWUsIGxvYyB9ID0gcmF3Q29tbWVudDtcbiAgICBsZXQgY29tbWVudCA9IGIubXVzdGFjaGVDb21tZW50KHZhbHVlLCBsb2MpO1xuXG4gICAgc3dpdGNoICh0b2tlbml6ZXIuc3RhdGUpIHtcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYmVmb3JlQXR0cmlidXRlTmFtZTpcbiAgICAgICAgdGhpcy5jdXJyZW50U3RhcnRUYWcuY29tbWVudHMucHVzaChjb21tZW50KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYmVmb3JlRGF0YTpcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuZGF0YTpcbiAgICAgICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCBjb21tZW50KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICBgVXNpbmcgYSBIYW5kbGViYXJzIGNvbW1lbnQgd2hlbiBpbiB0aGUgXFxgJHt0b2tlbml6ZXJbJ3N0YXRlJ119XFxgIHN0YXRlIGlzIG5vdCBzdXBwb3J0ZWQ6IFwiJHtjb21tZW50LnZhbHVlfVwiIG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX06JHtsb2Muc3RhcnQuY29sdW1ufWAsXG4gICAgICAgICAgcmF3Q29tbWVudC5sb2NcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tbWVudDtcbiAgfVxuXG4gIFBhcnRpYWxTdGF0ZW1lbnQocGFydGlhbDogSEJTLlBhcnRpYWxTdGF0ZW1lbnQpOiBuZXZlciB7XG4gICAgbGV0IHsgbG9jIH0gPSBwYXJ0aWFsO1xuXG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgYEhhbmRsZWJhcnMgcGFydGlhbHMgYXJlIG5vdCBzdXBwb3J0ZWQ6IFwiJHt0aGlzLnNvdXJjZUZvck5vZGUocGFydGlhbCwgcGFydGlhbC5uYW1lKX1cIiBhdCBMJHtcbiAgICAgICAgbG9jLnN0YXJ0LmxpbmVcbiAgICAgIH06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgcGFydGlhbC5sb2NcbiAgICApO1xuICB9XG5cbiAgUGFydGlhbEJsb2NrU3RhdGVtZW50KHBhcnRpYWxCbG9jazogSEJTLlBhcnRpYWxCbG9ja1N0YXRlbWVudCk6IG5ldmVyIHtcbiAgICBsZXQgeyBsb2MgfSA9IHBhcnRpYWxCbG9jaztcblxuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgIGBIYW5kbGViYXJzIHBhcnRpYWwgYmxvY2tzIGFyZSBub3Qgc3VwcG9ydGVkOiBcIiR7dGhpcy5zb3VyY2VGb3JOb2RlKFxuICAgICAgICBwYXJ0aWFsQmxvY2ssXG4gICAgICAgIHBhcnRpYWxCbG9jay5uYW1lXG4gICAgICApfVwiIGF0IEwke2xvYy5zdGFydC5saW5lfTpDJHtsb2Muc3RhcnQuY29sdW1ufWAsXG4gICAgICBwYXJ0aWFsQmxvY2subG9jXG4gICAgKTtcbiAgfVxuXG4gIERlY29yYXRvcihkZWNvcmF0b3I6IEhCUy5EZWNvcmF0b3IpOiBuZXZlciB7XG4gICAgbGV0IHsgbG9jIH0gPSBkZWNvcmF0b3I7XG5cbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgSGFuZGxlYmFycyBkZWNvcmF0b3JzIGFyZSBub3Qgc3VwcG9ydGVkOiBcIiR7dGhpcy5zb3VyY2VGb3JOb2RlKFxuICAgICAgICBkZWNvcmF0b3IsXG4gICAgICAgIGRlY29yYXRvci5wYXRoXG4gICAgICApfVwiIGF0IEwke2xvYy5zdGFydC5saW5lfTpDJHtsb2Muc3RhcnQuY29sdW1ufWAsXG4gICAgICBkZWNvcmF0b3IubG9jXG4gICAgKTtcbiAgfVxuXG4gIERlY29yYXRvckJsb2NrKGRlY29yYXRvckJsb2NrOiBIQlMuRGVjb3JhdG9yQmxvY2spOiBuZXZlciB7XG4gICAgbGV0IHsgbG9jIH0gPSBkZWNvcmF0b3JCbG9jaztcblxuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgIGBIYW5kbGViYXJzIGRlY29yYXRvciBibG9ja3MgYXJlIG5vdCBzdXBwb3J0ZWQ6IFwiJHt0aGlzLnNvdXJjZUZvck5vZGUoXG4gICAgICAgIGRlY29yYXRvckJsb2NrLFxuICAgICAgICBkZWNvcmF0b3JCbG9jay5wYXRoXG4gICAgICApfVwiIGF0IEwke2xvYy5zdGFydC5saW5lfTpDJHtsb2Muc3RhcnQuY29sdW1ufWAsXG4gICAgICBkZWNvcmF0b3JCbG9jay5sb2NcbiAgICApO1xuICB9XG5cbiAgU3ViRXhwcmVzc2lvbihzZXhwcjogSEJTLlN1YkV4cHJlc3Npb24pOiBBU1QuU3ViRXhwcmVzc2lvbiB7XG4gICAgbGV0IHsgcGF0aCwgcGFyYW1zLCBoYXNoIH0gPSBhY2NlcHRDYWxsTm9kZXModGhpcywgc2V4cHIpO1xuICAgIHJldHVybiBiLnNleHByKHBhdGgsIHBhcmFtcywgaGFzaCwgc2V4cHIubG9jKTtcbiAgfVxuXG4gIFBhdGhFeHByZXNzaW9uKHBhdGg6IEhCUy5QYXRoRXhwcmVzc2lvbik6IEFTVC5QYXRoRXhwcmVzc2lvbiB7XG4gICAgbGV0IHsgb3JpZ2luYWwsIGxvYyB9ID0gcGF0aDtcbiAgICBsZXQgcGFydHM6IHN0cmluZ1tdO1xuXG4gICAgaWYgKG9yaWdpbmFsLmluZGV4T2YoJy8nKSAhPT0gLTEpIHtcbiAgICAgIGlmIChvcmlnaW5hbC5zbGljZSgwLCAyKSA9PT0gJy4vJykge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICAgYFVzaW5nIFwiLi9cIiBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXIgYW5kIHVubmVjZXNzYXJ5OiBcIiR7cGF0aC5vcmlnaW5hbH1cIiBvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9LmAsXG4gICAgICAgICAgcGF0aC5sb2NcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcmlnaW5hbC5zbGljZSgwLCAzKSA9PT0gJy4uLycpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAgIGBDaGFuZ2luZyBjb250ZXh0IHVzaW5nIFwiLi4vXCIgaXMgbm90IHN1cHBvcnRlZCBpbiBHbGltbWVyOiBcIiR7cGF0aC5vcmlnaW5hbH1cIiBvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9LmAsXG4gICAgICAgICAgcGF0aC5sb2NcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcmlnaW5hbC5pbmRleE9mKCcuJykgIT09IC0xKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICBgTWl4aW5nICcuJyBhbmQgJy8nIGluIHBhdGhzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gR2xpbW1lcjsgdXNlIG9ubHkgJy4nIHRvIHNlcGFyYXRlIHByb3BlcnR5IHBhdGhzOiBcIiR7cGF0aC5vcmlnaW5hbH1cIiBvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9LmAsXG4gICAgICAgICAgcGF0aC5sb2NcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHBhcnRzID0gW3BhdGgucGFydHMuam9pbignLycpXTtcbiAgICB9IGVsc2UgaWYgKG9yaWdpbmFsID09PSAnLicpIHtcbiAgICAgIGxldCBsb2NhdGlvbkluZm8gPSBgTCR7bG9jLnN0YXJ0LmxpbmV9OkMke2xvYy5zdGFydC5jb2x1bW59YDtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgYCcuJyBpcyBub3QgYSBzdXBwb3J0ZWQgcGF0aCBpbiBHbGltbWVyOyBjaGVjayBmb3IgYSBwYXRoIHdpdGggYSB0cmFpbGluZyAnLicgYXQgJHtsb2NhdGlvbkluZm99LmAsXG4gICAgICAgIHBhdGgubG9jXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0cyA9IHBhdGgucGFydHM7XG4gICAgfVxuXG4gICAgbGV0IHRoaXNIZWFkID0gZmFsc2U7XG5cbiAgICAvLyBUaGlzIGlzIHRvIGZpeCBhIGJ1ZyBpbiB0aGUgSGFuZGxlYmFycyBBU1Qgd2hlcmUgdGhlIHBhdGggZXhwcmVzc2lvbnMgaW5cbiAgICAvLyBge3t0aGlzLmZvb319YCAoYW5kIHNpbWlsYXJseSBge3tmb28tYmFyIHRoaXMuZm9vIG5hbWVkPXRoaXMuZm9vfX1gIGV0YylcbiAgICAvLyBhcmUgc2ltcGx5IHR1cm5lZCBpbnRvIGB7e2Zvb319YC4gVGhlIGZpeCBpcyB0byBwdXNoIGl0IGJhY2sgb250byB0aGVcbiAgICAvLyBwYXJ0cyBhcnJheSBhbmQgbGV0IHRoZSBydW50aW1lIHNlZSB0aGUgZGlmZmVyZW5jZS4gSG93ZXZlciwgd2UgY2Fubm90XG4gICAgLy8gc2ltcGx5IHVzZSB0aGUgc3RyaW5nIGB0aGlzYCBhcyBpdCBtZWFucyBsaXRlcmFsbHkgdGhlIHByb3BlcnR5IGNhbGxlZFxuICAgIC8vIFwidGhpc1wiIGluIHRoZSBjdXJyZW50IGNvbnRleHQgKGl0IGNhbiBiZSBleHByZXNzZWQgaW4gdGhlIHN5bnRheCBhc1xuICAgIC8vIGB7e1t0aGlzXX19YCwgd2hlcmUgdGhlIHNxdWFyZSBicmFja2V0IGFyZSBnZW5lcmFsbHkgZm9yIHRoaXMga2luZCBvZlxuICAgIC8vIGVzY2FwaW5nIOKAkyBzdWNoIGFzIGB7e2Zvby5bXCJiYXIuYmF6XCJdfX1gIHdvdWxkIG1lYW4gbG9va3VwIGEgcHJvcGVydHlcbiAgICAvLyBuYW1lZCBsaXRlcmFsbHkgXCJiYXIuYmF6XCIgb24gYHRoaXMuZm9vYCkuIEJ5IGNvbnZlbnRpb24sIHdlIHVzZSBgbnVsbGBcbiAgICAvLyBmb3IgdGhpcyBwdXJwb3NlLlxuICAgIGlmIChvcmlnaW5hbC5tYXRjaCgvXnRoaXMoXFwuLispPyQvKSkge1xuICAgICAgdGhpc0hlYWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLFxuICAgICAgb3JpZ2luYWw6IHBhdGgub3JpZ2luYWwsXG4gICAgICB0aGlzOiB0aGlzSGVhZCxcbiAgICAgIHBhcnRzLFxuICAgICAgZGF0YTogcGF0aC5kYXRhLFxuICAgICAgbG9jOiBwYXRoLmxvYyxcbiAgICB9O1xuICB9XG5cbiAgSGFzaChoYXNoOiBIQlMuSGFzaCk6IEFTVC5IYXNoIHtcbiAgICBsZXQgcGFpcnM6IEFTVC5IYXNoUGFpcltdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhhc2gucGFpcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBwYWlyID0gaGFzaC5wYWlyc1tpXTtcbiAgICAgIHBhaXJzLnB1c2goYi5wYWlyKHBhaXIua2V5LCB0aGlzLmFjY2VwdE5vZGUocGFpci52YWx1ZSksIHBhaXIubG9jKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGIuaGFzaChwYWlycywgaGFzaC5sb2MpO1xuICB9XG5cbiAgU3RyaW5nTGl0ZXJhbChzdHJpbmc6IEhCUy5TdHJpbmdMaXRlcmFsKTogQVNULlN0cmluZ0xpdGVyYWwge1xuICAgIHJldHVybiBiLmxpdGVyYWwoJ1N0cmluZ0xpdGVyYWwnLCBzdHJpbmcudmFsdWUsIHN0cmluZy5sb2MpO1xuICB9XG5cbiAgQm9vbGVhbkxpdGVyYWwoYm9vbGVhbjogSEJTLkJvb2xlYW5MaXRlcmFsKTogQVNULkJvb2xlYW5MaXRlcmFsIHtcbiAgICByZXR1cm4gYi5saXRlcmFsKCdCb29sZWFuTGl0ZXJhbCcsIGJvb2xlYW4udmFsdWUsIGJvb2xlYW4ubG9jKTtcbiAgfVxuXG4gIE51bWJlckxpdGVyYWwobnVtYmVyOiBIQlMuTnVtYmVyTGl0ZXJhbCk6IEFTVC5OdW1iZXJMaXRlcmFsIHtcbiAgICByZXR1cm4gYi5saXRlcmFsKCdOdW1iZXJMaXRlcmFsJywgbnVtYmVyLnZhbHVlLCBudW1iZXIubG9jKTtcbiAgfVxuXG4gIFVuZGVmaW5lZExpdGVyYWwodW5kZWY6IEhCUy5VbmRlZmluZWRMaXRlcmFsKTogQVNULlVuZGVmaW5lZExpdGVyYWwge1xuICAgIHJldHVybiBiLmxpdGVyYWwoJ1VuZGVmaW5lZExpdGVyYWwnLCB1bmRlZmluZWQsIHVuZGVmLmxvYyk7XG4gIH1cblxuICBOdWxsTGl0ZXJhbChudWw6IEhCUy5OdWxsTGl0ZXJhbCk6IEFTVC5OdWxsTGl0ZXJhbCB7XG4gICAgcmV0dXJuIGIubGl0ZXJhbCgnTnVsbExpdGVyYWwnLCBudWxsLCBudWwubG9jKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVSaWdodFN0cmlwcGVkT2Zmc2V0cyhvcmlnaW5hbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAvLyBpZiBpdCBpcyBlbXB0eSwganVzdCByZXR1cm4gdGhlIGNvdW50IG9mIG5ld2xpbmVzXG4gICAgLy8gaW4gb3JpZ2luYWxcbiAgICByZXR1cm4ge1xuICAgICAgbGluZXM6IG9yaWdpbmFsLnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxLFxuICAgICAgY29sdW1uczogMCxcbiAgICB9O1xuICB9XG5cbiAgLy8gb3RoZXJ3aXNlLCByZXR1cm4gdGhlIG51bWJlciBvZiBuZXdsaW5lcyBwcmlvciB0b1xuICAvLyBgdmFsdWVgXG4gIGxldCBkaWZmZXJlbmNlID0gb3JpZ2luYWwuc3BsaXQodmFsdWUpWzBdO1xuICBsZXQgbGluZXMgPSBkaWZmZXJlbmNlLnNwbGl0KC9cXG4vKTtcbiAgbGV0IGxpbmVDb3VudCA9IGxpbmVzLmxlbmd0aCAtIDE7XG5cbiAgcmV0dXJuIHtcbiAgICBsaW5lczogbGluZUNvdW50LFxuICAgIGNvbHVtbnM6IGxpbmVzW2xpbmVDb3VudF0ubGVuZ3RoLFxuICB9O1xufVxuXG5mdW5jdGlvbiB1cGRhdGVUb2tlbml6ZXJMb2NhdGlvbih0b2tlbml6ZXI6IFBhcnNlclsndG9rZW5pemVyJ10sIGNvbnRlbnQ6IEhCUy5Db250ZW50U3RhdGVtZW50KSB7XG4gIGxldCBsaW5lID0gY29udGVudC5sb2Muc3RhcnQubGluZTtcbiAgbGV0IGNvbHVtbiA9IGNvbnRlbnQubG9jLnN0YXJ0LmNvbHVtbjtcblxuICBsZXQgb2Zmc2V0cyA9IGNhbGN1bGF0ZVJpZ2h0U3RyaXBwZWRPZmZzZXRzKFxuICAgIGNvbnRlbnQub3JpZ2luYWwgYXMgUmVjYXN0PEhCUy5TdHJpcEZsYWdzLCBzdHJpbmc+LFxuICAgIGNvbnRlbnQudmFsdWVcbiAgKTtcblxuICBsaW5lID0gbGluZSArIG9mZnNldHMubGluZXM7XG4gIGlmIChvZmZzZXRzLmxpbmVzKSB7XG4gICAgY29sdW1uID0gb2Zmc2V0cy5jb2x1bW5zO1xuICB9IGVsc2Uge1xuICAgIGNvbHVtbiA9IGNvbHVtbiArIG9mZnNldHMuY29sdW1ucztcbiAgfVxuXG4gIHRva2VuaXplci5saW5lID0gbGluZTtcbiAgdG9rZW5pemVyLmNvbHVtbiA9IGNvbHVtbjtcbn1cblxuZnVuY3Rpb24gYWNjZXB0Q2FsbE5vZGVzKFxuICBjb21waWxlcjogSGFuZGxlYmFyc05vZGVWaXNpdG9ycyxcbiAgbm9kZToge1xuICAgIHBhdGg6IEhCUy5QYXRoRXhwcmVzc2lvbjtcbiAgICBwYXJhbXM6IEhCUy5FeHByZXNzaW9uW107XG4gICAgaGFzaDogSEJTLkhhc2g7XG4gIH1cbik6IHsgcGF0aDogQVNULlBhdGhFeHByZXNzaW9uOyBwYXJhbXM6IEFTVC5FeHByZXNzaW9uW107IGhhc2g6IEFTVC5IYXNoIH0ge1xuICBsZXQgcGF0aCA9IGNvbXBpbGVyLlBhdGhFeHByZXNzaW9uKG5vZGUucGF0aCk7XG5cbiAgbGV0IHBhcmFtcyA9IG5vZGUucGFyYW1zID8gbm9kZS5wYXJhbXMubWFwKChlKSA9PiBjb21waWxlci5hY2NlcHROb2RlPEFTVC5FeHByZXNzaW9uPihlKSkgOiBbXTtcbiAgbGV0IGhhc2ggPSBub2RlLmhhc2ggPyBjb21waWxlci5IYXNoKG5vZGUuaGFzaCkgOiBiLmhhc2goKTtcblxuICByZXR1cm4geyBwYXRoLCBwYXJhbXMsIGhhc2ggfTtcbn1cblxuZnVuY3Rpb24gYWRkRWxlbWVudE1vZGlmaWVyKGVsZW1lbnQ6IFRhZzwnU3RhcnRUYWcnPiwgbXVzdGFjaGU6IEFTVC5NdXN0YWNoZVN0YXRlbWVudCkge1xuICBsZXQgeyBwYXRoLCBwYXJhbXMsIGhhc2gsIGxvYyB9ID0gbXVzdGFjaGU7XG5cbiAgaWYgKGlzTGl0ZXJhbChwYXRoKSkge1xuICAgIGxldCBtb2RpZmllciA9IGB7eyR7cHJpbnRMaXRlcmFsKHBhdGgpfX19YDtcbiAgICBsZXQgdGFnID0gYDwke2VsZW1lbnQubmFtZX0gLi4uICR7bW9kaWZpZXJ9IC4uLmA7XG5cbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgSW4gJHt0YWd9LCAke21vZGlmaWVyfSBpcyBub3QgYSB2YWxpZCBtb2RpZmllcjogXCIke3BhdGgub3JpZ2luYWx9XCIgb24gbGluZSAke1xuICAgICAgICBsb2MgJiYgbG9jLnN0YXJ0LmxpbmVcbiAgICAgIH0uYCxcbiAgICAgIG11c3RhY2hlLmxvY1xuICAgICk7XG4gIH1cblxuICBsZXQgbW9kaWZpZXIgPSBiLmVsZW1lbnRNb2RpZmllcihwYXRoLCBwYXJhbXMsIGhhc2gsIGxvYyk7XG4gIGVsZW1lbnQubW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xufVxuXG5mdW5jdGlvbiBhcHBlbmREeW5hbWljQXR0cmlidXRlVmFsdWVQYXJ0KGF0dHJpYnV0ZTogQXR0cmlidXRlLCBwYXJ0OiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgYXR0cmlidXRlLmlzRHluYW1pYyA9IHRydWU7XG4gIGF0dHJpYnV0ZS5wYXJ0cy5wdXNoKHBhcnQpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyL2hhbmRsZWJhcnMtbm9kZS12aXNpdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLENBQVAsTUFBYyxhQUFkO0FBQ0EsU0FBUyxXQUFULEVBQXNCLFNBQXRCLEVBQWlDLFlBQWpDLFFBQXFELFVBQXJEO0FBR0EsU0FBUyxNQUFULFFBQXVDLFdBQXZDO0FBQ0EsT0FBTyxXQUFQLE1BQXdCLHdCQUF4QjtBQUtBLE9BQU0sTUFBZ0Isc0JBQWhCLFNBQStDLE1BQS9DLENBQXFEO0FBS3pELE1BQVksVUFBWixHQUFzQjtBQUNwQixXQUFPLEtBQUssWUFBTCxDQUFrQixNQUFsQixLQUE2QixDQUFwQztBQUNEOztBQUtELEVBQUEsT0FBTyxDQUFDLE9BQUQsRUFBcUI7QUFDMUIsUUFBSSxJQUFJLEdBQW9CLEVBQTVCO0FBQ0EsUUFBSSxJQUFKOztBQUVBLFFBQUksS0FBSyxVQUFULEVBQXFCO0FBQ25CLE1BQUEsSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFGLENBQVcsSUFBWCxFQUFpQixPQUFPLENBQUMsV0FBekIsRUFBc0MsT0FBTyxDQUFDLEdBQTlDLENBQVA7QUFDRCxLQUZELE1BRU87QUFDTCxNQUFBLElBQUksR0FBRyxDQUFDLENBQUMsV0FBRixDQUFjLElBQWQsRUFBb0IsT0FBTyxDQUFDLFdBQTVCLEVBQXlDLE9BQU8sQ0FBQyxPQUFqRCxFQUEwRCxPQUFPLENBQUMsR0FBbEUsQ0FBUDtBQUNEOztBQUVELFFBQUksQ0FBSjtBQUFBLFFBQ0UsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFSLENBQWEsTUFEbkI7QUFHQSxTQUFLLFlBQUwsQ0FBa0IsSUFBbEIsQ0FBdUIsSUFBdkI7O0FBRUEsUUFBSSxDQUFDLEtBQUssQ0FBVixFQUFhO0FBQ1gsYUFBTyxLQUFLLFlBQUwsQ0FBa0IsR0FBbEIsRUFBUDtBQUNEOztBQUVELFNBQUssQ0FBQyxHQUFH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LFFBQUksUUFBUSxHQUFHLEtBQUssWUFBWSxDQUFDLElBQUQsQ0FBTSxJQUF0QztBQUNBLFFBQUksR0FBRyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksUUFBUSxRQUFRLE1BQTFDO0FBRUEsVUFBTSxJQUFJLFdBQUosQ0FDSixNQUFNLEdBQUcsS0FBSyxRQUFRLDhCQUE4QixJQUFJLENBQUMsUUFBUSxhQUMvRCxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUosQ0FBVSxJQUNuQixHQUhJLEVBSUosUUFBUSxDQUFDLEdBSkwsQ0FBTjtBQU1EOztBQUVELE1BQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxlQUFGLENBQWtCLElBQWxCLEVBQXdCLE1BQXhCLEVBQWdDLElBQWhDLEVBQXNDLEdBQXRDLENBQWY7QUFDQSxFQUFBLE9BQU8sQ0FBQyxTQUFSLENBQWtCLElBQWxCLENBQXVCLFFBQXZCO0FBQ0Q7O0FBRUQsU0FBUywrQkFBVCxDQUF5QyxTQUF6QyxFQUErRCxJQUEvRCxFQUEwRjtBQUN4RixFQUFBLFNBQVMsQ0FBQyxTQUFWLEdBQXNCLElBQXRCO0FBQ0EsRUFBQSxTQUFTLENBQUMsS0FBVixDQUFnQixJQUFoQixDQUFxQixJQUFyQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGIgZnJvbSAnLi4vYnVpbGRlcnMnO1xuaW1wb3J0IHsgYXBwZW5kQ2hpbGQsIGlzTGl0ZXJhbCwgcHJpbnRMaXRlcmFsIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0ICogYXMgQVNUIGZyb20gJy4uL3R5cGVzL25vZGVzJztcbmltcG9ydCAqIGFzIEhCUyBmcm9tICcuLi90eXBlcy9oYW5kbGViYXJzLWFzdCc7XG5pbXBvcnQgeyBQYXJzZXIsIFRhZywgQXR0cmlidXRlIH0gZnJvbSAnLi4vcGFyc2VyJztcbmltcG9ydCBTeW50YXhFcnJvciBmcm9tICcuLi9lcnJvcnMvc3ludGF4LWVycm9yJztcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgUmVjYXN0IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUb2tlbml6ZXJTdGF0ZSB9IGZyb20gJ3NpbXBsZS1odG1sLXRva2VuaXplcic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBIYW5kbGViYXJzTm9kZVZpc2l0b3JzIGV4dGVuZHMgUGFyc2VyIHtcbiAgYWJzdHJhY3QgYXBwZW5kVG9Db21tZW50RGF0YShzOiBzdHJpbmcpOiB2b2lkO1xuICBhYnN0cmFjdCBiZWdpbkF0dHJpYnV0ZVZhbHVlKHF1b3RlZDogYm9vbGVhbik6IHZvaWQ7XG4gIGFic3RyYWN0IGZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk6IHZvaWQ7XG5cbiAgcHJpdmF0ZSBnZXQgaXNUb3BMZXZlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2subGVuZ3RoID09PSAwO1xuICB9XG5cbiAgUHJvZ3JhbShwcm9ncmFtOiBIQlMuUHJvZ3JhbSk6IEFTVC5CbG9jaztcbiAgUHJvZ3JhbShwcm9ncmFtOiBIQlMuUHJvZ3JhbSk6IEFTVC5UZW1wbGF0ZTtcbiAgUHJvZ3JhbShwcm9ncmFtOiBIQlMuUHJvZ3JhbSk6IEFTVC5UZW1wbGF0ZSB8IEFTVC5CbG9jaztcbiAgUHJvZ3JhbShwcm9ncmFtOiBIQlMuUHJvZ3JhbSk6IEFTVC5CbG9jayB8IEFTVC5UZW1wbGF0ZSB7XG4gICAgbGV0IGJvZHk6IEFTVC5TdGF0ZW1lbnRbXSA9IFtdO1xuICAgIGxldCBub2RlO1xuXG4gICAgaWYgKHRoaXMuaXNUb3BMZXZlbCkge1xuICAgICAgbm9kZSA9IGIudGVtcGxhdGUoYm9keSwgcHJvZ3JhbS5ibG9ja1BhcmFtcywgcHJvZ3JhbS5sb2MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlID0gYi5ibG9ja0l0c2VsZihib2R5LCBwcm9ncmFtLmJsb2NrUGFyYW1zLCBwcm9ncmFtLmNoYWluZWQsIHByb2dyYW0ubG9jKTtcbiAgICB9XG5cbiAgICBsZXQgaSxcbiAgICAgIGwgPSBwcm9ncmFtLmJvZHkubGVuZ3RoO1xuXG4gICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaChub2RlKTtcblxuICAgIGlmIChsID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2sucG9wKCkgYXMgQVNULkJsb2NrIHwgQVNULlRlbXBsYXRlO1xuICAgIH1cblxuICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHRoaXMuYWNjZXB0Tm9kZShwcm9ncmFtLmJvZHlbaV0pO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSB0aGF0IHRoYXQgdGhlIGVsZW1lbnQgc3RhY2sgaXMgYmFsYW5jZWQgcHJvcGVybHkuXG4gICAgbGV0IHBvcHBlZE5vZGUgPSB0aGlzLmVsZW1lbnRTdGFjay5wb3AoKTtcbiAgICBpZiAocG9wcGVkTm9kZSAhPT0gbm9kZSkge1xuICAgICAgbGV0IGVsZW1lbnROb2RlID0gcG9wcGVkTm9kZSBhcyBBU1QuRWxlbWVudE5vZGU7XG5cbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgJ1VuY2xvc2VkIGVsZW1lbnQgYCcgKyBlbGVtZW50Tm9kZS50YWcgKyAnYCAob24gbGluZSAnICsgZWxlbWVudE5vZGUubG9jIS5zdGFydC5saW5lICsgJykuJyxcbiAgICAgICAgZWxlbWVudE5vZGUubG9jXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgQmxvY2tTdGF0ZW1lbnQoYmxvY2s6IEhCUy5CbG9ja1N0YXRlbWVudCk6IEFTVC5CbG9ja1N0YXRlbWVudCB8IHZvaWQge1xuICAgIGlmICh0aGlzLnRva2VuaXplci5zdGF0ZSA9PT0gVG9rZW5pemVyU3RhdGUuY29tbWVudCkge1xuICAgICAgdGhpcy5hcHBlbmRUb0NvbW1lbnREYXRhKHRoaXMuc291cmNlRm9yTm9kZShibG9jaykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlICE9PSBUb2tlbml6ZXJTdGF0ZS5kYXRhICYmXG4gICAgICB0aGlzLnRva2VuaXplclsnc3RhdGUnXSAhPT0gVG9rZW5pemVyU3RhdGUuYmVmb3JlRGF0YVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAnQSBibG9jayBtYXkgb25seSBiZSB1c2VkIGluc2lkZSBhbiBIVE1MIGVsZW1lbnQgb3IgYW5vdGhlciBibG9jay4nLFxuICAgICAgICBibG9jay5sb2NcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IHsgcGF0aCwgcGFyYW1zLCBoYXNoIH0gPSBhY2NlcHRDYWxsTm9kZXModGhpcywgYmxvY2spO1xuICAgIGxldCBwcm9ncmFtID0gdGhpcy5Qcm9ncmFtKGJsb2NrLnByb2dyYW0pO1xuICAgIGxldCBpbnZlcnNlID0gYmxvY2suaW52ZXJzZSA/IHRoaXMuUHJvZ3JhbShibG9jay5pbnZlcnNlKSA6IG51bGw7XG5cbiAgICBsZXQgbm9kZSA9IGIuYmxvY2soXG4gICAgICBwYXRoLFxuICAgICAgcGFyYW1zLFxuICAgICAgaGFzaCxcbiAgICAgIHByb2dyYW0sXG4gICAgICBpbnZlcnNlLFxuICAgICAgYmxvY2subG9jLFxuICAgICAgYmxvY2sub3BlblN0cmlwLFxuICAgICAgYmxvY2suaW52ZXJzZVN0cmlwLFxuICAgICAgYmxvY2suY2xvc2VTdHJpcFxuICAgICk7XG5cbiAgICBsZXQgcGFyZW50UHJvZ3JhbSA9IHRoaXMuY3VycmVudEVsZW1lbnQoKTtcblxuICAgIGFwcGVuZENoaWxkKHBhcmVudFByb2dyYW0sIG5vZGUpO1xuICB9XG5cbiAgTXVzdGFjaGVTdGF0ZW1lbnQocmF3TXVzdGFjaGU6IEhCUy5NdXN0YWNoZVN0YXRlbWVudCk6IEFTVC5NdXN0YWNoZVN0YXRlbWVudCB8IHZvaWQge1xuICAgIGxldCB7IHRva2VuaXplciB9ID0gdGhpcztcblxuICAgIGlmICh0b2tlbml6ZXIuc3RhdGUgPT09ICdjb21tZW50Jykge1xuICAgICAgdGhpcy5hcHBlbmRUb0NvbW1lbnREYXRhKHRoaXMuc291cmNlRm9yTm9kZShyYXdNdXN0YWNoZSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBtdXN0YWNoZTogQVNULk11c3RhY2hlU3RhdGVtZW50O1xuICAgIGxldCB7IGVzY2FwZWQsIGxvYywgc3RyaXAgfSA9IHJhd011c3RhY2hlO1xuXG4gICAgaWYgKGlzTGl0ZXJhbChyYXdNdXN0YWNoZS5wYXRoKSkge1xuICAgICAgbXVzdGFjaGUgPSB7XG4gICAgICAgIHR5cGU6ICdNdXN0YWNoZVN0YXRlbWVudCcsXG4gICAgICAgIHBhdGg6IHRoaXMuYWNjZXB0Tm9kZTxBU1QuTGl0ZXJhbD4ocmF3TXVzdGFjaGUucGF0aCksXG4gICAgICAgIHBhcmFtczogW10sXG4gICAgICAgIGhhc2g6IGIuaGFzaCgpLFxuICAgICAgICBlc2NhcGVkLFxuICAgICAgICBsb2MsXG4gICAgICAgIHN0cmlwLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHsgcGF0aCwgcGFyYW1zLCBoYXNoIH0gPSBhY2NlcHRDYWxsTm9kZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHJhd011c3RhY2hlIGFzIEhCUy5NdXN0YWNoZVN0YXRlbWVudCAmIHtcbiAgICAgICAgICBwYXRoOiBIQlMuUGF0aEV4cHJlc3Npb247XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBtdXN0YWNoZSA9IGIubXVzdGFjaGUocGF0aCwgcGFyYW1zLCBoYXNoLCAhZXNjYXBlZCwgbG9jLCBzdHJpcCk7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0b2tlbml6ZXIuc3RhdGUpIHtcbiAgICAgIC8vIFRhZyBoZWxwZXJzXG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLnRhZ09wZW46XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLnRhZ05hbWU6XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICBgQ2Fubm90IHVzZSBtdXN0YWNoZXMgaW4gYW4gZWxlbWVudHMgdGFnbmFtZTogXFxgJHt0aGlzLnNvdXJjZUZvck5vZGUoXG4gICAgICAgICAgICByYXdNdXN0YWNoZSxcbiAgICAgICAgICAgIHJhd011c3RhY2hlLnBhdGhcbiAgICAgICAgICApfVxcYCBhdCBMJHtsb2Muc3RhcnQubGluZX06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgICAgIG11c3RhY2hlLmxvY1xuICAgICAgICApO1xuXG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmJlZm9yZUF0dHJpYnV0ZU5hbWU6XG4gICAgICAgIGFkZEVsZW1lbnRNb2RpZmllcih0aGlzLmN1cnJlbnRTdGFydFRhZywgbXVzdGFjaGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYXR0cmlidXRlTmFtZTpcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYWZ0ZXJBdHRyaWJ1dGVOYW1lOlxuICAgICAgICB0aGlzLmJlZ2luQXR0cmlidXRlVmFsdWUoZmFsc2UpO1xuICAgICAgICB0aGlzLmZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk7XG4gICAgICAgIGFkZEVsZW1lbnRNb2RpZmllcih0aGlzLmN1cnJlbnRTdGFydFRhZywgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIudHJhbnNpdGlvblRvKFRva2VuaXplclN0YXRlLmJlZm9yZUF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZDpcbiAgICAgICAgYWRkRWxlbWVudE1vZGlmaWVyKHRoaXMuY3VycmVudFN0YXJ0VGFnLCBtdXN0YWNoZSk7XG4gICAgICAgIHRva2VuaXplci50cmFuc2l0aW9uVG8oVG9rZW5pemVyU3RhdGUuYmVmb3JlQXR0cmlidXRlTmFtZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBBdHRyaWJ1dGUgdmFsdWVzXG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmJlZm9yZUF0dHJpYnV0ZVZhbHVlOlxuICAgICAgICB0aGlzLmJlZ2luQXR0cmlidXRlVmFsdWUoZmFsc2UpO1xuICAgICAgICBhcHBlbmREeW5hbWljQXR0cmlidXRlVmFsdWVQYXJ0KHRoaXMuY3VycmVudEF0dHJpYnV0ZSEsIG11c3RhY2hlKTtcbiAgICAgICAgdG9rZW5pemVyLnRyYW5zaXRpb25UbyhUb2tlbml6ZXJTdGF0ZS5hdHRyaWJ1dGVWYWx1ZVVucXVvdGVkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkOlxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5hdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZDpcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYXR0cmlidXRlVmFsdWVVbnF1b3RlZDpcbiAgICAgICAgYXBwZW5kRHluYW1pY0F0dHJpYnV0ZVZhbHVlUGFydCh0aGlzLmN1cnJlbnRBdHRyaWJ1dGUhLCBtdXN0YWNoZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBUT0RPOiBPbmx5IGFwcGVuZCBjaGlsZCB3aGVuIHRoZSB0b2tlbml6ZXIgc3RhdGUgbWFrZXNcbiAgICAgIC8vIHNlbnNlIHRvIGRvIHNvLCBvdGhlcndpc2UgdGhyb3cgYW4gZXJyb3IuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIG11c3RhY2hlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbXVzdGFjaGU7XG4gIH1cblxuICBDb250ZW50U3RhdGVtZW50KGNvbnRlbnQ6IEhCUy5Db250ZW50U3RhdGVtZW50KTogdm9pZCB7XG4gICAgdXBkYXRlVG9rZW5pemVyTG9jYXRpb24odGhpcy50b2tlbml6ZXIsIGNvbnRlbnQpO1xuXG4gICAgdGhpcy50b2tlbml6ZXIudG9rZW5pemVQYXJ0KGNvbnRlbnQudmFsdWUpO1xuICAgIHRoaXMudG9rZW5pemVyLmZsdXNoRGF0YSgpO1xuICB9XG5cbiAgQ29tbWVudFN0YXRlbWVudChyYXdDb21tZW50OiBIQlMuQ29tbWVudFN0YXRlbWVudCk6IE9wdGlvbjxBU1QuTXVzdGFjaGVDb21tZW50U3RhdGVtZW50PiB7XG4gICAgbGV0IHsgdG9rZW5pemVyIH0gPSB0aGlzO1xuXG4gICAgaWYgKHRva2VuaXplci5zdGF0ZSA9PT0gVG9rZW5pemVyU3RhdGUuY29tbWVudCkge1xuICAgICAgdGhpcy5hcHBlbmRUb0NvbW1lbnREYXRhKHRoaXMuc291cmNlRm9yTm9kZShyYXdDb21tZW50KSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgeyB2YWx1ZSwgbG9jIH0gPSByYXdDb21tZW50O1xuICAgIGxldCBjb21tZW50ID0gYi5tdXN0YWNoZUNvbW1lbnQodmFsdWUsIGxvYyk7XG5cbiAgICBzd2l0Y2ggKHRva2VuaXplci5zdGF0ZSkge1xuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5iZWZvcmVBdHRyaWJ1dGVOYW1lOlxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5hZnRlckF0dHJpYnV0ZU5hbWU6XG4gICAgICAgIHRoaXMuY3VycmVudFN0YXJ0VGFnLmNvbW1lbnRzLnB1c2goY29tbWVudCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmJlZm9yZURhdGE6XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmRhdGE6XG4gICAgICAgIGFwcGVuZENoaWxkKHRoaXMuY3VycmVudEVsZW1lbnQoKSwgY29tbWVudCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICAgYFVzaW5nIGEgSGFuZGxlYmFycyBjb21tZW50IHdoZW4gaW4gdGhlIFxcYCR7dG9rZW5pemVyWydzdGF0ZSddfVxcYCBzdGF0ZSBpcyBub3Qgc3VwcG9ydGVkOiBcIiR7Y29tbWVudC52YWx1ZX1cIiBvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9OiR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgICAgIHJhd0NvbW1lbnQubG9jXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbW1lbnQ7XG4gIH1cblxuICBQYXJ0aWFsU3RhdGVtZW50KHBhcnRpYWw6IEhCUy5QYXJ0aWFsU3RhdGVtZW50KTogbmV2ZXIge1xuICAgIGxldCB7IGxvYyB9ID0gcGFydGlhbDtcblxuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgIGBIYW5kbGViYXJzIHBhcnRpYWxzIGFyZSBub3Qgc3VwcG9ydGVkOiBcIiR7dGhpcy5zb3VyY2VGb3JOb2RlKHBhcnRpYWwsIHBhcnRpYWwubmFtZSl9XCIgYXQgTCR7XG4gICAgICAgIGxvYy5zdGFydC5saW5lXG4gICAgICB9OkMke2xvYy5zdGFydC5jb2x1bW59YCxcbiAgICAgIHBhcnRpYWwubG9jXG4gICAgKTtcbiAgfVxuXG4gIFBhcnRpYWxCbG9ja1N0YXRlbWVudChwYXJ0aWFsQmxvY2s6IEhCUy5QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQpOiBuZXZlciB7XG4gICAgbGV0IHsgbG9jIH0gPSBwYXJ0aWFsQmxvY2s7XG5cbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgSGFuZGxlYmFycyBwYXJ0aWFsIGJsb2NrcyBhcmUgbm90IHN1cHBvcnRlZDogXCIke3RoaXMuc291cmNlRm9yTm9kZShcbiAgICAgICAgcGFydGlhbEJsb2NrLFxuICAgICAgICBwYXJ0aWFsQmxvY2submFtZVxuICAgICAgKX1cIiBhdCBMJHtsb2Muc3RhcnQubGluZX06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgcGFydGlhbEJsb2NrLmxvY1xuICAgICk7XG4gIH1cblxuICBEZWNvcmF0b3IoZGVjb3JhdG9yOiBIQlMuRGVjb3JhdG9yKTogbmV2ZXIge1xuICAgIGxldCB7IGxvYyB9ID0gZGVjb3JhdG9yO1xuXG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgYEhhbmRsZWJhcnMgZGVjb3JhdG9ycyBhcmUgbm90IHN1cHBvcnRlZDogXCIke3RoaXMuc291cmNlRm9yTm9kZShcbiAgICAgICAgZGVjb3JhdG9yLFxuICAgICAgICBkZWNvcmF0b3IucGF0aFxuICAgICAgKX1cIiBhdCBMJHtsb2Muc3RhcnQubGluZX06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgZGVjb3JhdG9yLmxvY1xuICAgICk7XG4gIH1cblxuICBEZWNvcmF0b3JCbG9jayhkZWNvcmF0b3JCbG9jazogSEJTLkRlY29yYXRvckJsb2NrKTogbmV2ZXIge1xuICAgIGxldCB7IGxvYyB9ID0gZGVjb3JhdG9yQmxvY2s7XG5cbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgSGFuZGxlYmFycyBkZWNvcmF0b3IgYmxvY2tzIGFyZSBub3Qgc3VwcG9ydGVkOiBcIiR7dGhpcy5zb3VyY2VGb3JOb2RlKFxuICAgICAgICBkZWNvcmF0b3JCbG9jayxcbiAgICAgICAgZGVjb3JhdG9yQmxvY2sucGF0aFxuICAgICAgKX1cIiBhdCBMJHtsb2Muc3RhcnQubGluZX06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgZGVjb3JhdG9yQmxvY2subG9jXG4gICAgKTtcbiAgfVxuXG4gIFN1YkV4cHJlc3Npb24oc2V4cHI6IEhCUy5TdWJFeHByZXNzaW9uKTogQVNULlN1YkV4cHJlc3Npb24ge1xuICAgIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCB9ID0gYWNjZXB0Q2FsbE5vZGVzKHRoaXMsIHNleHByKTtcbiAgICByZXR1cm4gYi5zZXhwcihwYXRoLCBwYXJhbXMsIGhhc2gsIHNleHByLmxvYyk7XG4gIH1cblxuICBQYXRoRXhwcmVzc2lvbihwYXRoOiBIQlMuUGF0aEV4cHJlc3Npb24pOiBBU1QuUGF0aEV4cHJlc3Npb24ge1xuICAgIGxldCB7IG9yaWdpbmFsLCBsb2MgfSA9IHBhdGg7XG4gICAgbGV0IHBhcnRzOiBzdHJpbmdbXTtcblxuICAgIGlmIChvcmlnaW5hbC5pbmRleE9mKCcvJykgIT09IC0xKSB7XG4gICAgICBpZiAob3JpZ2luYWwuc2xpY2UoMCwgMikgPT09ICcuLycpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAgIGBVc2luZyBcIi4vXCIgaXMgbm90IHN1cHBvcnRlZCBpbiBHbGltbWVyIGFuZCB1bm5lY2Vzc2FyeTogXCIke3BhdGgub3JpZ2luYWx9XCIgb24gbGluZSAke2xvYy5zdGFydC5saW5lfS5gLFxuICAgICAgICAgIHBhdGgubG9jXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAob3JpZ2luYWwuc2xpY2UoMCwgMykgPT09ICcuLi8nKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICBgQ2hhbmdpbmcgY29udGV4dCB1c2luZyBcIi4uL1wiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gR2xpbW1lcjogXCIke3BhdGgub3JpZ2luYWx9XCIgb24gbGluZSAke2xvYy5zdGFydC5saW5lfS5gLFxuICAgICAgICAgIHBhdGgubG9jXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAob3JpZ2luYWwuaW5kZXhPZignLicpICE9PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICAgYE1peGluZyAnLicgYW5kICcvJyBpbiBwYXRocyBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXI7IHVzZSBvbmx5ICcuJyB0byBzZXBhcmF0ZSBwcm9wZXJ0eSBwYXRoczogXCIke3BhdGgub3JpZ2luYWx9XCIgb24gbGluZSAke2xvYy5zdGFydC5saW5lfS5gLFxuICAgICAgICAgIHBhdGgubG9jXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBwYXJ0cyA9IFtwYXRoLnBhcnRzLmpvaW4oJy8nKV07XG4gICAgfSBlbHNlIGlmIChvcmlnaW5hbCA9PT0gJy4nKSB7XG4gICAgICBsZXQgbG9jYXRpb25JbmZvID0gYEwke2xvYy5zdGFydC5saW5lfTpDJHtsb2Muc3RhcnQuY29sdW1ufWA7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgIGAnLicgaXMgbm90IGEgc3VwcG9ydGVkIHBhdGggaW4gR2xpbW1lcjsgY2hlY2sgZm9yIGEgcGF0aCB3aXRoIGEgdHJhaWxpbmcgJy4nIGF0ICR7bG9jYXRpb25JbmZvfS5gLFxuICAgICAgICBwYXRoLmxvY1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydHMgPSBwYXRoLnBhcnRzO1xuICAgIH1cblxuICAgIGxldCB0aGlzSGVhZCA9IGZhbHNlO1xuXG4gICAgLy8gVGhpcyBpcyB0byBmaXggYSBidWcgaW4gdGhlIEhhbmRsZWJhcnMgQVNUIHdoZXJlIHRoZSBwYXRoIGV4cHJlc3Npb25zIGluXG4gICAgLy8gYHt7dGhpcy5mb299fWAgKGFuZCBzaW1pbGFybHkgYHt7Zm9vLWJhciB0aGlzLmZvbyBuYW1lZD10aGlzLmZvb319YCBldGMpXG4gICAgLy8gYXJlIHNpbXBseSB0dXJuZWQgaW50byBge3tmb299fWAuIFRoZSBmaXggaXMgdG8gcHVzaCBpdCBiYWNrIG9udG8gdGhlXG4gICAgLy8gcGFydHMgYXJyYXkgYW5kIGxldCB0aGUgcnVudGltZSBzZWUgdGhlIGRpZmZlcmVuY2UuIEhvd2V2ZXIsIHdlIGNhbm5vdFxuICAgIC8vIHNpbXBseSB1c2UgdGhlIHN0cmluZyBgdGhpc2AgYXMgaXQgbWVhbnMgbGl0ZXJhbGx5IHRoZSBwcm9wZXJ0eSBjYWxsZWRcbiAgICAvLyBcInRoaXNcIiBpbiB0aGUgY3VycmVudCBjb250ZXh0IChpdCBjYW4gYmUgZXhwcmVzc2VkIGluIHRoZSBzeW50YXggYXNcbiAgICAvLyBge3tbdGhpc119fWAsIHdoZXJlIHRoZSBzcXVhcmUgYnJhY2tldCBhcmUgZ2VuZXJhbGx5IGZvciB0aGlzIGtpbmQgb2ZcbiAgICAvLyBlc2NhcGluZyDigJMgc3VjaCBhcyBge3tmb28uW1wiYmFyLmJhelwiXX19YCB3b3VsZCBtZWFuIGxvb2t1cCBhIHByb3BlcnR5XG4gICAgLy8gbmFtZWQgbGl0ZXJhbGx5IFwiYmFyLmJhelwiIG9uIGB0aGlzLmZvb2ApLiBCeSBjb252ZW50aW9uLCB3ZSB1c2UgYG51bGxgXG4gICAgLy8gZm9yIHRoaXMgcHVycG9zZS5cbiAgICBpZiAob3JpZ2luYWwubWF0Y2goL150aGlzKFxcLi4rKT8kLykpIHtcbiAgICAgIHRoaXNIZWFkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ1BhdGhFeHByZXNzaW9uJyxcbiAgICAgIG9yaWdpbmFsOiBwYXRoLm9yaWdpbmFsLFxuICAgICAgdGhpczogdGhpc0hlYWQsXG4gICAgICBwYXJ0cyxcbiAgICAgIGRhdGE6IHBhdGguZGF0YSxcbiAgICAgIGxvYzogcGF0aC5sb2MsXG4gICAgfTtcbiAgfVxuXG4gIEhhc2goaGFzaDogSEJTLkhhc2gpOiBBU1QuSGFzaCB7XG4gICAgbGV0IHBhaXJzOiBBU1QuSGFzaFBhaXJbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoYXNoLnBhaXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgcGFpciA9IGhhc2gucGFpcnNbaV07XG4gICAgICBwYWlycy5wdXNoKGIucGFpcihwYWlyLmtleSwgdGhpcy5hY2NlcHROb2RlKHBhaXIudmFsdWUpLCBwYWlyLmxvYykpO1xuICAgIH1cblxuICAgIHJldHVybiBiLmhhc2gocGFpcnMsIGhhc2gubG9jKTtcbiAgfVxuXG4gIFN0cmluZ0xpdGVyYWwoc3RyaW5nOiBIQlMuU3RyaW5nTGl0ZXJhbCk6IEFTVC5TdHJpbmdMaXRlcmFsIHtcbiAgICByZXR1cm4gYi5saXRlcmFsKCdTdHJpbmdMaXRlcmFsJywgc3RyaW5nLnZhbHVlLCBzdHJpbmcubG9jKTtcbiAgfVxuXG4gIEJvb2xlYW5MaXRlcmFsKGJvb2xlYW46IEhCUy5Cb29sZWFuTGl0ZXJhbCk6IEFTVC5Cb29sZWFuTGl0ZXJhbCB7XG4gICAgcmV0dXJuIGIubGl0ZXJhbCgnQm9vbGVhbkxpdGVyYWwnLCBib29sZWFuLnZhbHVlLCBib29sZWFuLmxvYyk7XG4gIH1cblxuICBOdW1iZXJMaXRlcmFsKG51bWJlcjogSEJTLk51bWJlckxpdGVyYWwpOiBBU1QuTnVtYmVyTGl0ZXJhbCB7XG4gICAgcmV0dXJuIGIubGl0ZXJhbCgnTnVtYmVyTGl0ZXJhbCcsIG51bWJlci52YWx1ZSwgbnVtYmVyLmxvYyk7XG4gIH1cblxuICBVbmRlZmluZWRMaXRlcmFsKHVuZGVmOiBIQlMuVW5kZWZpbmVkTGl0ZXJhbCk6IEFTVC5VbmRlZmluZWRMaXRlcmFsIHtcbiAgICByZXR1cm4gYi5saXRlcmFsKCdVbmRlZmluZWRMaXRlcmFsJywgdW5kZWZpbmVkLCB1bmRlZi5sb2MpO1xuICB9XG5cbiAgTnVsbExpdGVyYWwobnVsOiBIQlMuTnVsbExpdGVyYWwpOiBBU1QuTnVsbExpdGVyYWwge1xuICAgIHJldHVybiBiLmxpdGVyYWwoJ051bGxMaXRlcmFsJywgbnVsbCwgbnVsLmxvYyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlUmlnaHRTdHJpcHBlZE9mZnNldHMob3JpZ2luYWw6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgLy8gaWYgaXQgaXMgZW1wdHksIGp1c3QgcmV0dXJuIHRoZSBjb3VudCBvZiBuZXdsaW5lc1xuICAgIC8vIGluIG9yaWdpbmFsXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmVzOiBvcmlnaW5hbC5zcGxpdCgnXFxuJykubGVuZ3RoIC0gMSxcbiAgICAgIGNvbHVtbnM6IDAsXG4gICAgfTtcbiAgfVxuXG4gIC8vIG90aGVyd2lzZSwgcmV0dXJuIHRoZSBudW1iZXIgb2YgbmV3bGluZXMgcHJpb3IgdG9cbiAgLy8gYHZhbHVlYFxuICBsZXQgZGlmZmVyZW5jZSA9IG9yaWdpbmFsLnNwbGl0KHZhbHVlKVswXTtcbiAgbGV0IGxpbmVzID0gZGlmZmVyZW5jZS5zcGxpdCgvXFxuLyk7XG4gIGxldCBsaW5lQ291bnQgPSBsaW5lcy5sZW5ndGggLSAxO1xuXG4gIHJldHVybiB7XG4gICAgbGluZXM6IGxpbmVDb3VudCxcbiAgICBjb2x1bW5zOiBsaW5lc1tsaW5lQ291bnRdLmxlbmd0aCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlVG9rZW5pemVyTG9jYXRpb24odG9rZW5pemVyOiBQYXJzZXJbJ3Rva2VuaXplciddLCBjb250ZW50OiBIQlMuQ29udGVudFN0YXRlbWVudCkge1xuICBsZXQgbGluZSA9IGNvbnRlbnQubG9jLnN0YXJ0LmxpbmU7XG4gIGxldCBjb2x1bW4gPSBjb250ZW50LmxvYy5zdGFydC5jb2x1bW47XG5cbiAgbGV0IG9mZnNldHMgPSBjYWxjdWxhdGVSaWdodFN0cmlwcGVkT2Zmc2V0cyhcbiAgICBjb250ZW50Lm9yaWdpbmFsIGFzIFJlY2FzdDxIQlMuU3RyaXBGbGFncywgc3RyaW5nPixcbiAgICBjb250ZW50LnZhbHVlXG4gICk7XG5cbiAgbGluZSA9IGxpbmUgKyBvZmZzZXRzLmxpbmVzO1xuICBpZiAob2Zmc2V0cy5saW5lcykge1xuICAgIGNvbHVtbiA9IG9mZnNldHMuY29sdW1ucztcbiAgfSBlbHNlIHtcbiAgICBjb2x1bW4gPSBjb2x1bW4gKyBvZmZzZXRzLmNvbHVtbnM7XG4gIH1cblxuICB0b2tlbml6ZXIubGluZSA9IGxpbmU7XG4gIHRva2VuaXplci5jb2x1bW4gPSBjb2x1bW47XG59XG5cbmZ1bmN0aW9uIGFjY2VwdENhbGxOb2RlcyhcbiAgY29tcGlsZXI6IEhhbmRsZWJhcnNOb2RlVmlzaXRvcnMsXG4gIG5vZGU6IHtcbiAgICBwYXRoOiBIQlMuUGF0aEV4cHJlc3Npb247XG4gICAgcGFyYW1zOiBIQlMuRXhwcmVzc2lvbltdO1xuICAgIGhhc2g6IEhCUy5IYXNoO1xuICB9XG4pOiB7IHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbjsgcGFyYW1zOiBBU1QuRXhwcmVzc2lvbltdOyBoYXNoOiBBU1QuSGFzaCB9IHtcbiAgbGV0IHBhdGggPSBjb21waWxlci5QYXRoRXhwcmVzc2lvbihub2RlLnBhdGgpO1xuXG4gIGxldCBwYXJhbXMgPSBub2RlLnBhcmFtcyA/IG5vZGUucGFyYW1zLm1hcCgoZSkgPT4gY29tcGlsZXIuYWNjZXB0Tm9kZTxBU1QuRXhwcmVzc2lvbj4oZSkpIDogW107XG4gIGxldCBoYXNoID0gbm9kZS5oYXNoID8gY29tcGlsZXIuSGFzaChub2RlLmhhc2gpIDogYi5oYXNoKCk7XG5cbiAgcmV0dXJuIHsgcGF0aCwgcGFyYW1zLCBoYXNoIH07XG59XG5cbmZ1bmN0aW9uIGFkZEVsZW1lbnRNb2RpZmllcihlbGVtZW50OiBUYWc8J1N0YXJ0VGFnJz4sIG11c3RhY2hlOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgbGV0IHsgcGF0aCwgcGFyYW1zLCBoYXNoLCBsb2MgfSA9IG11c3RhY2hlO1xuXG4gIGlmIChpc0xpdGVyYWwocGF0aCkpIHtcbiAgICBsZXQgbW9kaWZpZXIgPSBge3ske3ByaW50TGl0ZXJhbChwYXRoKX19fWA7XG4gICAgbGV0IHRhZyA9IGA8JHtlbGVtZW50Lm5hbWV9IC4uLiAke21vZGlmaWVyfSAuLi5gO1xuXG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgYEluICR7dGFnfSwgJHttb2RpZmllcn0gaXMgbm90IGEgdmFsaWQgbW9kaWZpZXI6IFwiJHtwYXRoLm9yaWdpbmFsfVwiIG9uIGxpbmUgJHtcbiAgICAgICAgbG9jICYmIGxvYy5zdGFydC5saW5lXG4gICAgICB9LmAsXG4gICAgICBtdXN0YWNoZS5sb2NcbiAgICApO1xuICB9XG5cbiAgbGV0IG1vZGlmaWVyID0gYi5lbGVtZW50TW9kaWZpZXIocGF0aCwgcGFyYW1zLCBoYXNoLCBsb2MpO1xuICBlbGVtZW50Lm1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kRHluYW1pY0F0dHJpYnV0ZVZhbHVlUGFydChhdHRyaWJ1dGU6IEF0dHJpYnV0ZSwgcGFydDogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gIGF0dHJpYnV0ZS5pc0R5bmFtaWMgPSB0cnVlO1xuICBhdHRyaWJ1dGUucGFydHMucHVzaChwYXJ0KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -10,3 +10,4 @@ // used by ember-compiler

export { default as Walker } from './lib/traversal/walker';
export { default as print } from './lib/generation/print'; // errors
export { default as print } from './lib/generation/print';
export { sortByLoc } from './lib/generation/util'; // errors

@@ -18,2 +19,2 @@ export { default as SyntaxError } from './lib/errors/syntax-error'; // AST

export { isLiteral, printLiteral } from './lib/utils';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFNBQUEsVUFBQSxRQUFBLHVDQUFBLEMsQ0FTQTs7QUFDQSxTQUFTLE9BQU8sSUFBaEIsUUFBQSxRQUFBLGdCQUFBO0FBQ0EsU0FDRSxPQUFPLElBRFQsY0FBQSxFQUFBLGdCQUFBLEVBQUEsaUJBQUEsRUFBQSxvQ0FBQSxRQUFBLHdCQUFBO0FBTUEsU0FBUyxPQUFPLElBQWhCLFFBQUEsUUFBQSwwQkFBQTtBQUNBLGNBQUEseUJBQUE7QUFDQSxTQUFTLE9BQU8sSUFBaEIsSUFBQSxRQUFBLHNCQUFBO0FBQ0EsU0FBUyxPQUFPLElBQWhCLE1BQUEsUUFBQSx3QkFBQTtBQUNBLFNBQVMsT0FBTyxJQUFoQixLQUFBLFFBQUEsd0JBQUEsQyxDQUVBOztBQUNBLFNBQVMsT0FBTyxJQUFoQixXQUFBLFFBQUEsMkJBQUEsQyxDQUVBOztBQUNBLE9BQU8sS0FBUCxHQUFBLE1BQUEsbUJBQUE7QUFDQSxTQUFBLEdBQUE7QUFDQSxTQUFBLFNBQUEsRUFBQSxZQUFBLFFBQUEsYUFBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIHVzZWQgYnkgZW1iZXItY29tcGlsZXJcbmV4cG9ydCB7XG4gIHByZXByb2Nlc3MsXG4gIFByZXByb2Nlc3NPcHRpb25zLFxuICBBU1RQbHVnaW4sXG4gIEFTVFBsdWdpbkJ1aWxkZXIsXG4gIEFTVFBsdWdpbkVudmlyb25tZW50LFxuICBTeW50YXgsXG59IGZyb20gJy4vbGliL3BhcnNlci90b2tlbml6ZXItZXZlbnQtaGFuZGxlcnMnO1xuXG4vLyBuZWVkZWQgZm9yIHRlc3RzIG9ubHlcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYnVpbGRlcnMgfSBmcm9tICcuL2xpYi9idWlsZGVycyc7XG5leHBvcnQge1xuICBkZWZhdWx0IGFzIFRyYXZlcnNhbEVycm9yLFxuICBjYW5ub3RSZW1vdmVOb2RlLFxuICBjYW5ub3RSZXBsYWNlTm9kZSxcbiAgY2Fubm90UmVwbGFjZU9yUmVtb3ZlSW5LZXlIYW5kbGVyWWV0LFxufSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvZXJyb3JzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdHJhdmVyc2UgfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvdHJhdmVyc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJhdmVyc2FsL3Zpc2l0b3InO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQYXRoIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3BhdGgnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBXYWxrZXIgfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvd2Fsa2VyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHJpbnQgfSBmcm9tICcuL2xpYi9nZW5lcmF0aW9uL3ByaW50JztcblxuLy8gZXJyb3JzXG5leHBvcnQgeyBkZWZhdWx0IGFzIFN5bnRheEVycm9yIH0gZnJvbSAnLi9saWIvZXJyb3JzL3N5bnRheC1lcnJvcic7XG5cbi8vIEFTVFxuaW1wb3J0ICogYXMgQVNUIGZyb20gJy4vbGliL3R5cGVzL25vZGVzJztcbmV4cG9ydCB7IEFTVCB9O1xuZXhwb3J0IHsgaXNMaXRlcmFsLCBwcmludExpdGVyYWwgfSBmcm9tICcuL2xpYi91dGlscyc7XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFNBQUEsVUFBQSxRQUFBLHVDQUFBLEMsQ0FTQTs7QUFDQSxTQUFTLE9BQU8sSUFBaEIsUUFBQSxRQUFBLGdCQUFBO0FBQ0EsU0FDRSxPQUFPLElBRFQsY0FBQSxFQUFBLGdCQUFBLEVBQUEsaUJBQUEsRUFBQSxvQ0FBQSxRQUFBLHdCQUFBO0FBTUEsU0FBUyxPQUFPLElBQWhCLFFBQUEsUUFBQSwwQkFBQTtBQUNBLGNBQUEseUJBQUE7QUFDQSxTQUFTLE9BQU8sSUFBaEIsSUFBQSxRQUFBLHNCQUFBO0FBQ0EsU0FBUyxPQUFPLElBQWhCLE1BQUEsUUFBQSx3QkFBQTtBQUNBLFNBQVMsT0FBTyxJQUFoQixLQUFBLFFBQUEsd0JBQUE7QUFDQSxTQUFBLFNBQUEsUUFBQSx1QkFBQSxDLENBRUE7O0FBQ0EsU0FBUyxPQUFPLElBQWhCLFdBQUEsUUFBQSwyQkFBQSxDLENBRUE7O0FBQ0EsT0FBTyxLQUFQLEdBQUEsTUFBQSxtQkFBQTtBQUNBLFNBQUEsR0FBQTtBQUNBLFNBQUEsU0FBQSxFQUFBLFlBQUEsUUFBQSxhQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdXNlZCBieSBlbWJlci1jb21waWxlclxuZXhwb3J0IHtcbiAgcHJlcHJvY2VzcyxcbiAgUHJlcHJvY2Vzc09wdGlvbnMsXG4gIEFTVFBsdWdpbixcbiAgQVNUUGx1Z2luQnVpbGRlcixcbiAgQVNUUGx1Z2luRW52aXJvbm1lbnQsXG4gIFN5bnRheCxcbn0gZnJvbSAnLi9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycyc7XG5cbi8vIG5lZWRlZCBmb3IgdGVzdHMgb25seVxuZXhwb3J0IHsgZGVmYXVsdCBhcyBidWlsZGVycyB9IGZyb20gJy4vbGliL2J1aWxkZXJzJztcbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgVHJhdmVyc2FsRXJyb3IsXG4gIGNhbm5vdFJlbW92ZU5vZGUsXG4gIGNhbm5vdFJlcGxhY2VOb2RlLFxuICBjYW5ub3RSZXBsYWNlT3JSZW1vdmVJbktleUhhbmRsZXJZZXQsXG59IGZyb20gJy4vbGliL3RyYXZlcnNhbC9lcnJvcnMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0cmF2ZXJzZSB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC90cmF2ZXJzZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90cmF2ZXJzYWwvdmlzaXRvcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFBhdGggfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvcGF0aCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFdhbGtlciB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC93YWxrZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmludCB9IGZyb20gJy4vbGliL2dlbmVyYXRpb24vcHJpbnQnO1xuZXhwb3J0IHsgc29ydEJ5TG9jIH0gZnJvbSAnLi9saWIvZ2VuZXJhdGlvbi91dGlsJztcblxuLy8gZXJyb3JzXG5leHBvcnQgeyBkZWZhdWx0IGFzIFN5bnRheEVycm9yIH0gZnJvbSAnLi9saWIvZXJyb3JzL3N5bnRheC1lcnJvcic7XG5cbi8vIEFTVFxuaW1wb3J0ICogYXMgQVNUIGZyb20gJy4vbGliL3R5cGVzL25vZGVzJztcbmV4cG9ydCB7IEFTVCB9O1xuZXhwb3J0IHsgaXNMaXRlcmFsLCBwcmludExpdGVyYWwgfSBmcm9tICcuL2xpYi91dGlscyc7XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -0,3 +1,9 @@

function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } it = o[Symbol.iterator](); return it.next.bind(it); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
import { voidMap } from '../parser/tokenizer-event-handlers';
import { escapeText, escapeAttrValue } from './util';
import { escapeText, escapeAttrValue, sortByLoc } from './util';
var NON_WHITESPACE = /\S/;

@@ -222,30 +228,24 @@

_proto.OpenElementNode = function OpenElementNode(el) {
var _this2 = this;
this.buffer += "<" + el.tag;
var parts = [].concat(el.attributes, el.modifiers, el.comments).sort(sortByLoc);
if (el.attributes.length) {
el.attributes.forEach(function (attr) {
_this2.buffer += ' ';
for (var _iterator = _createForOfIteratorHelperLoose(parts), _step; !(_step = _iterator()).done;) {
var part = _step.value;
this.buffer += ' ';
_this2.AttrNode(attr);
});
}
switch (part.type) {
case 'AttrNode':
this.AttrNode(part);
break;
if (el.modifiers.length) {
el.modifiers.forEach(function (mod) {
_this2.buffer += ' ';
case 'ElementModifierStatement':
this.ElementModifierStatement(part);
break;
_this2.ElementModifierStatement(mod);
});
case 'MustacheCommentStatement':
this.MustacheCommentStatement(part);
break;
}
}
if (el.comments.length) {
el.comments.forEach(function (comment) {
_this2.buffer += ' ';
_this2.MustacheCommentStatement(comment);
});
}
if (el.blockParams.length) {

@@ -393,3 +393,3 @@ this.BlockParams(el.blockParams);

_proto.ConcatStatement = function ConcatStatement(concat) {
var _this3 = this;
var _this2 = this;

@@ -403,5 +403,5 @@ if (this.handledByOverride(concat)) {

if (part.type === 'TextNode') {
_this3.TextNode(part, true);
_this2.TextNode(part, true);
} else {
_this3.Node(part);
_this2.Node(part);
}

@@ -461,3 +461,3 @@ });

_proto.Params = function Params(params) {
var _this4 = this;
var _this3 = this;

@@ -468,5 +468,5 @@ // TODO: implement a top level Params AST node (just like the Hash object)

params.forEach(function (param) {
_this4.buffer += ' ';
_this3.buffer += ' ';
_this4.Expression(param);
_this3.Expression(param);
});

@@ -477,3 +477,3 @@ }

_proto.Hash = function Hash(hash) {
var _this5 = this;
var _this4 = this;

@@ -485,5 +485,5 @@ if (this.handledByOverride(hash, true)) {

hash.pairs.forEach(function (pair) {
_this5.buffer += ' ';
_this4.buffer += ' ';
_this5.HashPair(pair);
_this4.HashPair(pair);
});

@@ -568,2 +568,2 @@ };

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi9wcmludGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCQSxTQUFBLE9BQUEsUUFBQSxvQ0FBQTtBQUNBLFNBQUEsVUFBQSxFQUFBLGVBQUEsUUFBQSxRQUFBO0FBRUEsSUFBTSxjQUFjLEdBQXBCLElBQUE7O0lBc0JjLE87QUFJWixtQkFBQSxPQUFBLEVBQW1DO0FBSDNCLFNBQUEsTUFBQSxHQUFBLEVBQUE7QUFJTixTQUFBLE9BQUEsR0FBQSxPQUFBO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7O1NBU0EsaUIsR0FBQSwyQkFBaUIsSUFBakIsRUFBOEIsdUJBQTlCLEVBQTZEO0FBQUEsUUFBL0IsdUJBQStCO0FBQS9CLE1BQUEsdUJBQStCLEdBQTVDLEtBQTRDO0FBQUE7O0FBQzNELFFBQUksS0FBQSxPQUFBLENBQUEsUUFBQSxLQUFKLFNBQUEsRUFBeUM7QUFDdkMsVUFBSSxNQUFNLEdBQUcsS0FBQSxPQUFBLENBQUEsUUFBQSxDQUFBLElBQUEsRUFBNEIsS0FBekMsT0FBYSxDQUFiOztBQUNBLFVBQUksT0FBQSxNQUFBLEtBQUosUUFBQSxFQUFnQztBQUM5QixZQUFJLHVCQUF1QixJQUFJLE1BQU0sS0FBakMsRUFBQSxJQUE0QyxjQUFjLENBQWQsSUFBQSxDQUFvQixNQUFNLENBQTFFLENBQTBFLENBQTFCLENBQWhELEVBQWdGO0FBQzlFLFVBQUEsTUFBTSxTQUFOLE1BQUE7QUFDRDs7QUFFRCxhQUFBLE1BQUEsSUFBQSxNQUFBO0FBQ0EsZUFBQSxJQUFBO0FBQ0Q7QUFDRjs7QUFFRCxXQUFBLEtBQUE7QUFDRCxHOztTQUVELEksR0FBQSxjQUFJLElBQUosRUFBZTtBQUNiLFlBQVEsSUFBSSxDQUFaLElBQUE7QUFDRSxXQUFBLG1CQUFBO0FBQ0EsV0FBQSxnQkFBQTtBQUNBLFdBQUEsa0JBQUE7QUFDQSxXQUFBLDBCQUFBO0FBQ0EsV0FBQSxrQkFB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RGMsQ0FDUixPQURROztBQUdkLFFBQUksT0FBTyxDQUFYLFFBQUEsRUFBc0I7QUFDcEIsVUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFQLFFBQUEsQ0FBQSxJQUFBLEVBQWIsT0FBYSxDQUFiOztBQUVBLFVBQUksTUFBTSxLQUFWLFNBQUEsRUFBMEI7QUFDeEIsZUFBQSxNQUFBO0FBQ0Q7QUFDRjs7QUFFRCxTQUFBLE1BQUEsR0FBQSxFQUFBO0FBQ0EsU0FBQSxJQUFBLENBQUEsSUFBQTtBQUNBLFdBQU8sS0FBUCxNQUFBO0FBQ0QsRzs7Ozs7U0EvZVcsTzs7QUFrZmQsU0FBQSxXQUFBLENBQUEsSUFBQSxFQUFBLGNBQUEsRUFBd0Q7QUFBQSxNQUNsRCxHQURrRCxHQUN0RCxJQURzRCxDQUNsRCxHQURrRDtBQUFBLE1BQzNDLElBRDJDLEdBQ3RELElBRHNELENBQzNDLElBRDJDO0FBRXRELFFBQU0sSUFBQSxLQUFBLG9DQUM2QixJQUQ3QixxQkFDaUQsSUFBSSxDQUFKLFNBQUEsQ0FBQSxHQUFBLENBRGpELG9CQUFOLGNBQU0sQ0FBTjtBQUtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXR0ck5vZGUsXG4gIEJsb2NrLFxuICBCbG9ja1N0YXRlbWVudCxcbiAgRWxlbWVudE5vZGUsXG4gIE11c3RhY2hlU3RhdGVtZW50LFxuICBOb2RlLFxuICBQcm9ncmFtLFxuICBUZXh0Tm9kZSxcbiAgUGFydGlhbFN0YXRlbWVudCxcbiAgQ29uY2F0U3RhdGVtZW50LFxuICBNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQsXG4gIENvbW1lbnRTdGF0ZW1lbnQsXG4gIEVsZW1lbnRNb2RpZmllclN0YXRlbWVudCxcbiAgRXhwcmVzc2lvbixcbiAgUGF0aEV4cHJlc3Npb24sXG4gIFN1YkV4cHJlc3Npb24sXG4gIEhhc2gsXG4gIEhhc2hQYWlyLFxuICBMaXRlcmFsLFxuICBTdHJpbmdMaXRlcmFsLFxuICBCb29sZWFuTGl0ZXJhbCxcbiAgTnVtYmVyTGl0ZXJhbCxcbiAgVW5kZWZpbmVkTGl0ZXJhbCxcbiAgTnVsbExpdGVyYWwsXG4gIFRvcExldmVsU3RhdGVtZW50LFxuICBUZW1wbGF0ZSxcbn0gZnJvbSAnLi4vdHlwZXMvbm9kZXMnO1xuaW1wb3J0IHsgdm9pZE1hcCB9IGZyb20gJy4uL3BhcnNlci90b2tlbml6ZXItZXZlbnQtaGFuZGxlcnMnO1xuaW1wb3J0IHsgZXNjYXBlVGV4dCwgZXNjYXBlQXR0clZhbHVlIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgTk9OX1dISVRFU1BBQ0UgPSAvXFxTLztcblxuZXhwb3J0IGludGVyZmFjZSBQcmludGVyT3B0aW9ucyB7XG4gIGVudGl0eUVuY29kaW5nOiAndHJhbnNmb3JtZWQnIHwgJ3Jhdyc7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gb3ZlcnJpZGUgdGhlIG1lY2hhbmlzbSBvZiBwcmludGluZyBhIGdpdmVuIEFTVC5Ob2RlLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgZ2VuZXJhbGx5IG9ubHkgYmUgdXNlZnVsIHRvIHNvdXJjZSAtPiBzb3VyY2UgY29kZW1vZHNcbiAgICogd2hlcmUgeW91IHdvdWxkIGxpa2UgdG8gc3BlY2lhbGl6ZS9vdmVycmlkZSB0aGUgd2F5IGEgZ2l2ZW4gbm9kZSBpc1xuICAgKiBwcmludGVkIChlLmcuIHlvdSB3b3VsZCBsaWtlIHRvIHByZXNlcnZlIGFzIG11Y2ggb2YgdGhlIG9yaWdpbmFsXG4gICAqIGZvcm1hdHRpbmcgYXMgcG9zc2libGUpLlxuICAgKlxuICAgKiBXaGVuIHRoZSBwcm92aWRlZCBvdmVycmlkZSByZXR1cm5zIHVuZGVmaW5lZCwgdGhlIGRlZmF1bHQgYnVpbHQgaW4gcHJpbnRpbmdcbiAgICogd2lsbCBiZSBkb25lIGZvciB0aGUgQVNULk5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSBhc3QgdGhlIGFzdCBub2RlIHRvIGJlIHByaW50ZWRcbiAgICogQHBhcmFtIG9wdGlvbnMgdGhlIG9wdGlvbnMgc3BlY2lmaWVkIGR1cmluZyB0aGUgcHJpbnQoKSBpbnZvY2F0aW9uXG4gICAqL1xuICBvdmVycmlkZT8oYXN0OiBOb2RlLCBvcHRpb25zOiBQcmludGVyT3B0aW9ucyk6IHZvaWQgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByaW50ZXIge1xuICBwcml2YXRlIGJ1ZmZlciA9ICcnO1xuICBwcml2YXRlIG9wdGlvbnM6IFByaW50ZXJPcHRpb25zO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFByaW50ZXJPcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIC8qXG4gICAgVGhpcyBpcyB1c2VkIGJ5IF9hbGxfIG1ldGhvZHMgb24gdGhpcyBQcmludGVyIGNsYXNzIHRoYXQgYWRkIHRvIGB0aGlzLmJ1ZmZlcmAsXG4gICAgaXQgYWxsb3dzIGNvbnN1bWVycyBvZiB0aGUgcHJpbnRlciB0byB1c2UgYWx0ZXJuYXRlIHN0cmluZyByZXByZXNlbnRhdGlvbnMgZm9yXG4gICAgYSBnaXZlbiBub2RlLlxuXG4gICAgVGhlIHByaW1hcnkgdXNlIGNhc2UgZm9yIHRoaXMgYXJlIHRoaW5ncyBsaWtlIHNvdXJjZSAtPiBzb3VyY2UgY29kZW1vZCB1dGlsaXRpZXMuXG4gICAgRm9yIGV4YW1wbGUsIGVtYmVyLXRlbXBsYXRlLXJlY2FzdCBhdHRlbXB0cyB0byBhbHdheXMgcHJlc2VydmUgdGhlIG9yaWdpbmFsIHN0cmluZ1xuICAgIGZvcm1hdHRpbmcgaW4gZWFjaCBBU1Qgbm9kZSBpZiBubyBtb2RpZmljYXRpb25zIGFyZSBtYWRlIHRvIGl0LlxuICAqL1xuICBoYW5kbGVkQnlPdmVycmlkZShub2RlOiBOb2RlLCBlbnN1cmVMZWFkaW5nV2hpdGVzcGFjZSA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5vdmVycmlkZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgcmVzdWx0ID0gdGhpcy5vcHRpb25zLm92ZXJyaWRlKG5vZGUsIHRoaXMub3B0aW9ucyk7XG4gICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKGVuc3VyZUxlYWRpbmdXaGl0ZXNwYWNlICYmIHJlc3VsdCAhPT0gJycgJiYgTk9OX1dISVRFU1BBQ0UudGVzdChyZXN1bHRbMF0pKSB7XG4gICAgICAgICAgcmVzdWx0ID0gYCAke3Jlc3VsdH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5idWZmZXIgKz0gcmVzdWx0O1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBOb2RlKG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgY2FzZSAnTXVzdGFjaGVTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnQmxvY2tTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnUGFydGlhbFN0YXRlbWVudCc6XG4gICAgICBjYXNlICdNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnQ29tbWVudFN0YXRlbWVudCc6XG4gICAgICBjYXNlICdUZXh0Tm9kZSc6XG4gICAgICBjYXNlICdFbGVtZW50Tm9kZSc6XG4gICAgICBjYXNlICdBdHRyTm9kZSc6XG4gICAgICBjYXNlICdCbG9jayc6XG4gICAgICBjYXNlICdUZW1wbGF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLlRvcExldmVsU3RhdGVtZW50KG5vZGUpO1xuICAgICAgY2FzZSAnU3RyaW5nTGl0ZXJhbCc6XG4gICAgICBjYXNlICdCb29sZWFuTGl0ZXJhbCc6XG4gICAgICBjYXNlICdOdW1iZXJMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ1VuZGVmaW5lZExpdGVyYWwnOlxuICAgICAgY2FzZSAnTnVsbExpdGVyYWwnOlxuICAgICAgY2FzZSAnUGF0aEV4cHJlc3Npb24nOlxuICAgICAgY2FzZSAnU3ViRXhwcmVzc2lvbic6XG4gICAgICAgIHJldHVybiB0aGlzLkV4cHJlc3Npb24obm9kZSk7XG4gICAgICBjYXNlICdQcm9ncmFtJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuQmxvY2sobm9kZSk7XG4gICAgICBjYXNlICdDb25jYXRTdGF0ZW1lbnQnOlxuICAgICAgICAvLyBzaG91bGQgaGF2ZSBhbiBBdHRyTm9kZSBwYXJlbnRcbiAgICAgICAgcmV0dXJuIHRoaXMuQ29uY2F0U3RhdGVtZW50KG5vZGUpO1xuICAgICAgY2FzZSAnSGFzaCc6XG4gICAgICAgIHJldHVybiB0aGlzLkhhc2gobm9kZSk7XG4gICAgICBjYXNlICdIYXNoUGFpcic6XG4gICAgICAgIHJldHVybiB0aGlzLkhhc2hQYWlyKG5vZGUpO1xuICAgICAgY2FzZSAnRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50KG5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB1bnJlYWNoYWJsZShub2RlLCAnTm9kZScpO1xuICB9XG5cbiAgRXhwcmVzc2lvbihleHByZXNzaW9uOiBFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgc3dpdGNoIChleHByZXNzaW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgJ1N0cmluZ0xpdGVyYWwnOlxuICAgICAgY2FzZSAnQm9vbGVhbkxpdGVyYWwnOlxuICAgICAgY2FzZSAnTnVtYmVyTGl0ZXJhbCc6XG4gICAgICBjYXNlICdVbmRlZmluZWRMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ051bGxMaXRlcmFsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuTGl0ZXJhbChleHByZXNzaW9uKTtcbiAgICAgIGNhc2UgJ1BhdGhFeHByZXNzaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuUGF0aEV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG4gICAgICBjYXNlICdTdWJFeHByZXNzaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuU3ViRXhwcmVzc2lvbihleHByZXNzaW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHVucmVhY2hhYmxlKGV4cHJlc3Npb24sICdFeHByZXNzaW9uJyk7XG4gIH1cblxuICBMaXRlcmFsKGxpdGVyYWw6IExpdGVyYWwpIHtcbiAgICBzd2l0Y2ggKGxpdGVyYWwudHlwZSkge1xuICAgICAgY2FzZSAnU3RyaW5nTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLlN0cmluZ0xpdGVyYWwobGl0ZXJhbCk7XG4gICAgICBjYXNlICdCb29sZWFuTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLkJvb2xlYW5MaXRlcmFsKGxpdGVyYWwpO1xuICAgICAgY2FzZSAnTnVtYmVyTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLk51bWJlckxpdGVyYWwobGl0ZXJhbCk7XG4gICAgICBjYXNlICdVbmRlZmluZWRMaXRlcmFsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuVW5kZWZpbmVkTGl0ZXJhbChsaXRlcmFsKTtcbiAgICAgIGNhc2UgJ051bGxMaXRlcmFsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuTnVsbExpdGVyYWwobGl0ZXJhbCk7XG4gICAgfVxuICAgIHJldHVybiB1bnJlYWNoYWJsZShsaXRlcmFsLCAnTGl0ZXJhbCcpO1xuICB9XG5cbiAgVG9wTGV2ZWxTdGF0ZW1lbnQoc3RhdGVtZW50OiBUb3BMZXZlbFN0YXRlbWVudCkge1xuICAgIHN3aXRjaCAoc3RhdGVtZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ011c3RhY2hlU3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuTXVzdGFjaGVTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ0Jsb2NrU3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuQmxvY2tTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ1BhcnRpYWxTdGF0ZW1lbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5QYXJ0aWFsU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5NdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ0NvbW1lbnRTdGF0ZW1lbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5Db21tZW50U3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdUZXh0Tm9kZSc6XG4gICAgICAgIHJldHVybiB0aGlzLlRleHROb2RlKHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdFbGVtZW50Tm9kZSc6XG4gICAgICAgIHJldHVybiB0aGlzLkVsZW1lbnROb2RlKHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdCbG9jayc6XG4gICAgICBjYXNlICdUZW1wbGF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLkJsb2NrKHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdBdHRyTm9kZSc6XG4gICAgICAgIC8vIHNob3VsZCBoYXZlIGVsZW1lbnRcbiAgICAgICAgcmV0dXJuIHRoaXMuQXR0ck5vZGUoc3RhdGVtZW50KTtcbiAgICB9XG4gICAgdW5yZWFjaGFibGUoc3RhdGVtZW50LCAnVG9wTGV2ZWxTdGF0ZW1lbnQnKTtcbiAgfVxuXG4gIEJsb2NrKGJsb2NrOiBCbG9jayB8IFByb2dyYW0gfCBUZW1wbGF0ZSk6IHZvaWQge1xuICAgIC8qXG4gICAgICBXaGVuIHByb2Nlc3NpbmcgYSB0ZW1wbGF0ZSBsaWtlOlxuXG4gICAgICBgYGBoYnNcbiAgICAgIHt7I2lmIHdoYXRldmVyfX1cbiAgICAgICAgd2hhdGV2ZXJcbiAgICAgIHt7ZWxzZSBpZiBzb21ldGhpbmdFbHNlfX1cbiAgICAgICAgc29tZXRoaW5nIGVsc2VcbiAgICAgIHt7ZWxzZX19XG4gICAgICAgIGZhbGxiYWNrXG4gICAgICB7ey9pZn19XG4gICAgICBgYGBcblxuICAgICAgVGhlIEFTVCBzdGlsbCBfZWZmZWN0aXZlbHlfIGxvb2tzIGxpa2U6XG5cbiAgICAgIGBgYGhic1xuICAgICAge3sjaWYgd2hhdGV2ZXJ9fVxuICAgICAgICB3aGF0ZXZlclxuICAgICAge3tlbHNlfX17eyNpZiBzb21ldGhpbmdFbHNlfX1cbiAgICAgICAgc29tZXRoaW5nIGVsc2VcbiAgICAgIHt7ZWxzZX19XG4gICAgICAgIGZhbGxiYWNrXG4gICAgICB7ey9pZn19e3svaWZ9fVxuICAgICAgYGBgXG5cbiAgICAgIFRoZSBvbmx5IHdheSB3ZSBjYW4gdGVsbCBpZiB0aGF0IGlzIHRoZSBjYXNlIGlzIGJ5IGNoZWNraW5nIGZvclxuICAgICAgYGJsb2NrLmNoYWluZWRgLCBidXQgdW5mb3J0dW5hdGVseSB3aGVuIHRoZSBhY3R1YWwgc3RhdGVtZW50cyBhcmVcbiAgICAgIHByb2Nlc3NlZCB0aGUgYGJsb2NrLmJvZHlbMF1gIG5vZGUgKHdoaWNoIHdpbGwgYWx3YXlzIGJlIGFcbiAgICAgIGBCbG9ja1N0YXRlbWVudGApIGhhcyBubyBjbHVlIHRoYXQgaXRzIGFuc2Nlc3RvciBgQmxvY2tgIG5vZGUgd2FzXG4gICAgICBjaGFpbmVkLlxuXG4gICAgICBUaGlzIFwiZm9yd2FyZHNcIiB0aGUgYGNoYWluZWRgIHNldHRpbmcgc28gdGhhdCB3ZSBjYW4gY2hlY2tcbiAgICAgIGl0IGxhdGVyIHdoZW4gcHJvY2Vzc2luZyB0aGUgYEJsb2NrU3RhdGVtZW50YC5cbiAgICAqL1xuICAgIGlmIChibG9jay5jaGFpbmVkKSB7XG4gICAgICBsZXQgZmlyc3RDaGlsZCA9IGJsb2NrLmJvZHlbMF0gYXMgQmxvY2tTdGF0ZW1lbnQ7XG4gICAgICBmaXJzdENoaWxkLmNoYWluZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGJsb2NrKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuVG9wTGV2ZWxTdGF0ZW1lbnRzKGJsb2NrLmJvZHkpO1xuICB9XG5cbiAgVG9wTGV2ZWxTdGF0ZW1lbnRzKHN0YXRlbWVudHM6IFRvcExldmVsU3RhdGVtZW50W10pIHtcbiAgICBzdGF0ZW1lbnRzLmZvckVhY2goKHN0YXRlbWVudCkgPT4gdGhpcy5Ub3BMZXZlbFN0YXRlbWVudChzdGF0ZW1lbnQpKTtcbiAgfVxuXG4gIEVsZW1lbnROb2RlKGVsOiBFbGVtZW50Tm9kZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGVsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuT3BlbkVsZW1lbnROb2RlKGVsKTtcbiAgICB0aGlzLlRvcExldmVsU3RhdGVtZW50cyhlbC5jaGlsZHJlbik7XG4gICAgdGhpcy5DbG9zZUVsZW1lbnROb2RlKGVsKTtcbiAgfVxuXG4gIE9wZW5FbGVtZW50Tm9kZShlbDogRWxlbWVudE5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLmJ1ZmZlciArPSBgPCR7ZWwudGFnfWA7XG4gICAgaWYgKGVsLmF0dHJpYnV0ZXMubGVuZ3RoKSB7XG4gICAgICBlbC5hdHRyaWJ1dGVzLmZvckVhY2goKGF0dHIpID0+IHtcbiAgICAgICAgdGhpcy5idWZmZXIgKz0gJyAnO1xuICAgICAgICB0aGlzLkF0dHJOb2RlKGF0dHIpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChlbC5tb2RpZmllcnMubGVuZ3RoKSB7XG4gICAgICBlbC5tb2RpZmllcnMuZm9yRWFjaCgobW9kKSA9PiB7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9ICcgJztcbiAgICAgICAgdGhpcy5FbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQobW9kKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZWwuY29tbWVudHMubGVuZ3RoKSB7XG4gICAgICBlbC5jb21tZW50cy5mb3JFYWNoKChjb21tZW50KSA9PiB7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9ICcgJztcbiAgICAgICAgdGhpcy5NdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQoY29tbWVudCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGVsLmJsb2NrUGFyYW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5CbG9ja1BhcmFtcyhlbC5ibG9ja1BhcmFtcyk7XG4gICAgfVxuICAgIGlmIChlbC5zZWxmQ2xvc2luZykge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJyAvJztcbiAgICB9XG4gICAgdGhpcy5idWZmZXIgKz0gJz4nO1xuICB9XG5cbiAgQ2xvc2VFbGVtZW50Tm9kZShlbDogRWxlbWVudE5vZGUpOiB2b2lkIHtcbiAgICBpZiAoZWwuc2VsZkNsb3NpbmcgfHwgdm9pZE1hcFtlbC50YWcudG9Mb3dlckNhc2UoKV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5idWZmZXIgKz0gYDwvJHtlbC50YWd9PmA7XG4gIH1cblxuICBBdHRyTm9kZShhdHRyOiBBdHRyTm9kZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGF0dHIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHsgbmFtZSwgdmFsdWUgfSA9IGF0dHI7XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBuYW1lO1xuICAgIGlmICh2YWx1ZS50eXBlICE9PSAnVGV4dE5vZGUnIHx8IHZhbHVlLmNoYXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICc9JztcbiAgICAgIHRoaXMuQXR0ck5vZGVWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQXR0ck5vZGVWYWx1ZSh2YWx1ZTogQXR0ck5vZGVbJ3ZhbHVlJ10pIHtcbiAgICBpZiAodmFsdWUudHlwZSA9PT0gJ1RleHROb2RlJykge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJ1wiJztcbiAgICAgIHRoaXMuVGV4dE5vZGUodmFsdWUsIHRydWUpO1xuICAgICAgdGhpcy5idWZmZXIgKz0gJ1wiJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5Ob2RlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBUZXh0Tm9kZSh0ZXh0OiBUZXh0Tm9kZSwgaXNBdHRyPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHRleHQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5lbnRpdHlFbmNvZGluZyA9PT0gJ3JhdycpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IHRleHQuY2hhcnM7XG4gICAgfSBlbHNlIGlmIChpc0F0dHIpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGVzY2FwZUF0dHJWYWx1ZSh0ZXh0LmNoYXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idWZmZXIgKz0gZXNjYXBlVGV4dCh0ZXh0LmNoYXJzKTtcbiAgICB9XG4gIH1cblxuICBNdXN0YWNoZVN0YXRlbWVudChtdXN0YWNoZTogTXVzdGFjaGVTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShtdXN0YWNoZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBtdXN0YWNoZS5lc2NhcGVkID8gJ3t7JyA6ICd7e3snO1xuXG4gICAgaWYgKG11c3RhY2hlLnN0cmlwLm9wZW4pIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICd+JztcbiAgICB9XG5cbiAgICB0aGlzLkV4cHJlc3Npb24obXVzdGFjaGUucGF0aCk7XG4gICAgdGhpcy5QYXJhbXMobXVzdGFjaGUucGFyYW1zKTtcbiAgICB0aGlzLkhhc2gobXVzdGFjaGUuaGFzaCk7XG5cbiAgICBpZiAobXVzdGFjaGUuc3RyaXAuY2xvc2UpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICd+JztcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBtdXN0YWNoZS5lc2NhcGVkID8gJ319JyA6ICd9fX0nO1xuICB9XG5cbiAgQmxvY2tTdGF0ZW1lbnQoYmxvY2s6IEJsb2NrU3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoYmxvY2spKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGJsb2NrLmNoYWluZWQpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmludmVyc2VTdHJpcC5vcGVuID8gJ3t7ficgOiAne3snO1xuICAgICAgdGhpcy5idWZmZXIgKz0gJ2Vsc2UgJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idWZmZXIgKz0gYmxvY2sub3BlblN0cmlwLm9wZW4gPyAne3t+IycgOiAne3sjJztcbiAgICB9XG5cbiAgICB0aGlzLkV4cHJlc3Npb24oYmxvY2sucGF0aCk7XG4gICAgdGhpcy5QYXJhbXMoYmxvY2sucGFyYW1zKTtcbiAgICB0aGlzLkhhc2goYmxvY2suaGFzaCk7XG4gICAgaWYgKGJsb2NrLnByb2dyYW0uYmxvY2tQYXJhbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLkJsb2NrUGFyYW1zKGJsb2NrLnByb2dyYW0uYmxvY2tQYXJhbXMpO1xuICAgIH1cblxuICAgIGlmIChibG9jay5jaGFpbmVkKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5pbnZlcnNlU3RyaXAuY2xvc2UgPyAnfn19JyA6ICd9fSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLm9wZW5TdHJpcC5jbG9zZSA/ICd+fX0nIDogJ319JztcbiAgICB9XG5cbiAgICB0aGlzLkJsb2NrKGJsb2NrLnByb2dyYW0pO1xuXG4gICAgaWYgKGJsb2NrLmludmVyc2UpIHtcbiAgICAgIGlmICghYmxvY2suaW52ZXJzZS5jaGFpbmVkKSB7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmludmVyc2VTdHJpcC5vcGVuID8gJ3t7ficgOiAne3snO1xuICAgICAgICB0aGlzLmJ1ZmZlciArPSAnZWxzZSc7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmludmVyc2VTdHJpcC5jbG9zZSA/ICd+fX0nIDogJ319JztcbiAgICAgIH1cblxuICAgICAgdGhpcy5CbG9jayhibG9jay5pbnZlcnNlKTtcbiAgICB9XG5cbiAgICBpZiAoIWJsb2NrLmNoYWluZWQpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmNsb3NlU3RyaXAub3BlbiA/ICd7e34vJyA6ICd7ey8nO1xuICAgICAgdGhpcy5FeHByZXNzaW9uKGJsb2NrLnBhdGgpO1xuICAgICAgdGhpcy5idWZmZXIgKz0gYmxvY2suY2xvc2VTdHJpcC5jbG9zZSA/ICd+fX0nIDogJ319JztcbiAgICB9XG4gIH1cblxuICBCbG9ja1BhcmFtcyhibG9ja1BhcmFtczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmJ1ZmZlciArPSBgIGFzIHwke2Jsb2NrUGFyYW1zLmpvaW4oJyAnKX18YDtcbiAgfVxuXG4gIFBhcnRpYWxTdGF0ZW1lbnQocGFydGlhbDogUGFydGlhbFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHBhcnRpYWwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJ3t7Pic7XG4gICAgdGhpcy5FeHByZXNzaW9uKHBhcnRpYWwubmFtZSk7XG4gICAgdGhpcy5QYXJhbXMocGFydGlhbC5wYXJhbXMpO1xuICAgIHRoaXMuSGFzaChwYXJ0aWFsLmhhc2gpO1xuICAgIHRoaXMuYnVmZmVyICs9ICd9fSc7XG4gIH1cblxuICBDb25jYXRTdGF0ZW1lbnQoY29uY2F0OiBDb25jYXRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShjb25jYXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJ1wiJztcbiAgICBjb25jYXQucGFydHMuZm9yRWFjaCgocGFydCkgPT4ge1xuICAgICAgaWYgKHBhcnQudHlwZSA9PT0gJ1RleHROb2RlJykge1xuICAgICAgICB0aGlzLlRleHROb2RlKHBhcnQsIHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5Ob2RlKHBhcnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuYnVmZmVyICs9ICdcIic7XG4gIH1cblxuICBNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQoY29tbWVudDogTXVzdGFjaGVDb21tZW50U3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoY29tbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBge3shLS0ke2NvbW1lbnQudmFsdWV9LS19fWA7XG4gIH1cblxuICBFbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQobW9kOiBFbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShtb2QpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJ3t7JztcbiAgICB0aGlzLkV4cHJlc3Npb24obW9kLnBhdGgpO1xuICAgIHRoaXMuUGFyYW1zKG1vZC5wYXJhbXMpO1xuICAgIHRoaXMuSGFzaChtb2QuaGFzaCk7XG4gICAgdGhpcy5idWZmZXIgKz0gJ319JztcbiAgfVxuXG4gIENvbW1lbnRTdGF0ZW1lbnQoY29tbWVudDogQ29tbWVudFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGNvbW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gYDwhLS0ke2NvbW1lbnQudmFsdWV9LS0+YDtcbiAgfVxuXG4gIFBhdGhFeHByZXNzaW9uKHBhdGg6IFBhdGhFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUocGF0aCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBwYXRoLm9yaWdpbmFsO1xuICB9XG5cbiAgU3ViRXhwcmVzc2lvbihzZXhwOiBTdWJFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoc2V4cCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSAnKCc7XG4gICAgdGhpcy5FeHByZXNzaW9uKHNleHAucGF0aCk7XG4gICAgdGhpcy5QYXJhbXMoc2V4cC5wYXJhbXMpO1xuICAgIHRoaXMuSGFzaChzZXhwLmhhc2gpO1xuICAgIHRoaXMuYnVmZmVyICs9ICcpJztcbiAgfVxuXG4gIFBhcmFtcyhwYXJhbXM6IEV4cHJlc3Npb25bXSkge1xuICAgIC8vIFRPRE86IGltcGxlbWVudCBhIHRvcCBsZXZlbCBQYXJhbXMgQVNUIG5vZGUgKGp1c3QgbGlrZSB0aGUgSGFzaCBvYmplY3QpXG4gICAgLy8gc28gdGhhdCB0aGlzIGNhbiBhbHNvIGJlIG92ZXJyaWRkZW5cbiAgICBpZiAocGFyYW1zLmxlbmd0aCkge1xuICAgICAgcGFyYW1zLmZvckVhY2goKHBhcmFtKSA9PiB7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9ICcgJztcbiAgICAgICAgdGhpcy5FeHByZXNzaW9uKHBhcmFtKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEhhc2goaGFzaDogSGFzaCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGhhc2gsIHRydWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaGFzaC5wYWlycy5mb3JFYWNoKChwYWlyKSA9PiB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnICc7XG4gICAgICB0aGlzLkhhc2hQYWlyKHBhaXIpO1xuICAgIH0pO1xuICB9XG5cbiAgSGFzaFBhaXIocGFpcjogSGFzaFBhaXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShwYWlyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IHBhaXIua2V5O1xuICAgIHRoaXMuYnVmZmVyICs9ICc9JztcbiAgICB0aGlzLk5vZGUocGFpci52YWx1ZSk7XG4gIH1cblxuICBTdHJpbmdMaXRlcmFsKHN0cjogU3RyaW5nTGl0ZXJhbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHN0cikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBKU09OLnN0cmluZ2lmeShzdHIudmFsdWUpO1xuICB9XG5cbiAgQm9vbGVhbkxpdGVyYWwoYm9vbDogQm9vbGVhbkxpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShib29sKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IGJvb2wudmFsdWU7XG4gIH1cblxuICBOdW1iZXJMaXRlcmFsKG51bWJlcjogTnVtYmVyTGl0ZXJhbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKG51bWJlcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBudW1iZXIudmFsdWU7XG4gIH1cblxuICBVbmRlZmluZWRMaXRlcmFsKG5vZGU6IFVuZGVmaW5lZExpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShub2RlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgTnVsbExpdGVyYWwobm9kZTogTnVsbExpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShub2RlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICdudWxsJztcbiAgfVxuXG4gIHByaW50KG5vZGU6IE5vZGUpIHtcbiAgICBsZXQgeyBvcHRpb25zIH0gPSB0aGlzO1xuXG4gICAgaWYgKG9wdGlvbnMub3ZlcnJpZGUpIHtcbiAgICAgIGxldCByZXN1bHQgPSBvcHRpb25zLm92ZXJyaWRlKG5vZGUsIG9wdGlvbnMpO1xuXG4gICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciA9ICcnO1xuICAgIHRoaXMuTm9kZShub2RlKTtcbiAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gIH1cbn1cblxuZnVuY3Rpb24gdW5yZWFjaGFibGUobm9kZTogbmV2ZXIsIHBhcmVudE5vZGVUeXBlOiBzdHJpbmcpOiBuZXZlciB7XG4gIGxldCB7IGxvYywgdHlwZSB9ID0gKG5vZGUgYXMgYW55KSBhcyBOb2RlO1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYE5vbi1leGhhdXN0aXZlIG5vZGUgbmFycm93aW5nICR7dHlwZX0gQCBsb2NhdGlvbjogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgIGxvY1xuICAgICl9IGZvciBwYXJlbnQgJHtwYXJlbnROb2RlVHlwZX1gXG4gICk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi9wcmludGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQTRCQSxTQUFBLE9BQUEsUUFBQSxvQ0FBQTtBQUNBLFNBQUEsVUFBQSxFQUFBLGVBQUEsRUFBQSxTQUFBLFFBQUEsUUFBQTtBQUVBLElBQU0sY0FBYyxHQUFwQixJQUFBOztJQXNCYyxPO0FBSVosbUJBQUEsT0FBQSxFQUFtQztBQUgzQixTQUFBLE1BQUEsR0FBQSxFQUFBO0FBSU4sU0FBQSxPQUFBLEdBQUEsT0FBQTtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7OztTQVNBLGlCLEdBQUEsMkJBQWlCLElBQWpCLEVBQThCLHVCQUE5QixFQUE2RDtBQUFBLFFBQS9CLHVCQUErQjtBQUEvQixNQUFBLHVCQUErQixHQUE1QyxLQUE0QztBQUFBOztBQUMzRCxRQUFJLEtBQUEsT0FBQSxDQUFBLFFBQUEsS0FBSixTQUFBLEVBQXlDO0FBQ3ZDLFVBQUksTUFBTSxHQUFHLEtBQUEsT0FBQSxDQUFBLFFBQUEsQ0FBQSxJQUFBLEVBQTRCLEtBQXpDLE9BQWEsQ0FBYjs7QUFDQSxVQUFJLE9BQUEsTUFBQSxLQUFKLFFBQUEsRUFBZ0M7QUFDOUIsWUFBSSx1QkFBdUIsSUFBSSxNQUFNLEtBQWpDLEVBQUEsSUFBNEMsY0FBYyxDQUFkLElBQUEsQ0FBb0IsTUFBTSxDQUExRSxDQUEwRSxDQUExQixDQUFoRCxFQUFnRjtBQUM5RSxVQUFBLE1BQU0sU0FBTixNQUFBO0FBQ0Q7O0FBRUQsYUFBQSxNQUFBLElBQUEsTUFBQTtBQUNBLGVBQUEsSUFBQTtBQUNEO0FBQ0Y7O0FBRUQsV0FBQSxLQUFBO0FBQ0QsRzs7U0FFRCxJLEdBQUEsY0FBSSxJQUFKLEVBQWU7QUFDYixZQUFRLElBQUksQ0FBWixJQUFBO0FBQ0UsV0FBQSxtQkFBQTtBQUNBLFdBQUEsZ0JBQUE7QUFDQSxXQUFBLGtCQUFBO0FBQ0EsV0FBQSwwQkFB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QUEsSUFBQSxDQUFBLElBQUE7QUFDQSxXQUFPLEtBQVAsTUFBQTtBQUNELEc7Ozs7O1NBN2VXLE87O0FBZ2ZkLFNBQUEsV0FBQSxDQUFBLElBQUEsRUFBQSxjQUFBLEVBQXdEO0FBQUEsTUFDbEQsR0FEa0QsR0FDdEQsSUFEc0QsQ0FDbEQsR0FEa0Q7QUFBQSxNQUMzQyxJQUQyQyxHQUN0RCxJQURzRCxDQUMzQyxJQUQyQztBQUV0RCxRQUFNLElBQUEsS0FBQSxvQ0FDNkIsSUFEN0IscUJBQ2lELElBQUksQ0FBSixTQUFBLENBQUEsR0FBQSxDQURqRCxvQkFBTixjQUFNLENBQU47QUFLRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEF0dHJOb2RlLFxuICBCbG9jayxcbiAgQmxvY2tTdGF0ZW1lbnQsXG4gIEVsZW1lbnROb2RlLFxuICBNdXN0YWNoZVN0YXRlbWVudCxcbiAgTm9kZSxcbiAgUHJvZ3JhbSxcbiAgVGV4dE5vZGUsXG4gIFBhcnRpYWxTdGF0ZW1lbnQsXG4gIENvbmNhdFN0YXRlbWVudCxcbiAgTXVzdGFjaGVDb21tZW50U3RhdGVtZW50LFxuICBDb21tZW50U3RhdGVtZW50LFxuICBFbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQsXG4gIEV4cHJlc3Npb24sXG4gIFBhdGhFeHByZXNzaW9uLFxuICBTdWJFeHByZXNzaW9uLFxuICBIYXNoLFxuICBIYXNoUGFpcixcbiAgTGl0ZXJhbCxcbiAgU3RyaW5nTGl0ZXJhbCxcbiAgQm9vbGVhbkxpdGVyYWwsXG4gIE51bWJlckxpdGVyYWwsXG4gIFVuZGVmaW5lZExpdGVyYWwsXG4gIE51bGxMaXRlcmFsLFxuICBUb3BMZXZlbFN0YXRlbWVudCxcbiAgVGVtcGxhdGUsXG59IGZyb20gJy4uL3R5cGVzL25vZGVzJztcbmltcG9ydCB7IHZvaWRNYXAgfSBmcm9tICcuLi9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzJztcbmltcG9ydCB7IGVzY2FwZVRleHQsIGVzY2FwZUF0dHJWYWx1ZSwgc29ydEJ5TG9jIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgTk9OX1dISVRFU1BBQ0UgPSAvXFxTLztcblxuZXhwb3J0IGludGVyZmFjZSBQcmludGVyT3B0aW9ucyB7XG4gIGVudGl0eUVuY29kaW5nOiAndHJhbnNmb3JtZWQnIHwgJ3Jhdyc7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gb3ZlcnJpZGUgdGhlIG1lY2hhbmlzbSBvZiBwcmludGluZyBhIGdpdmVuIEFTVC5Ob2RlLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgZ2VuZXJhbGx5IG9ubHkgYmUgdXNlZnVsIHRvIHNvdXJjZSAtPiBzb3VyY2UgY29kZW1vZHNcbiAgICogd2hlcmUgeW91IHdvdWxkIGxpa2UgdG8gc3BlY2lhbGl6ZS9vdmVycmlkZSB0aGUgd2F5IGEgZ2l2ZW4gbm9kZSBpc1xuICAgKiBwcmludGVkIChlLmcuIHlvdSB3b3VsZCBsaWtlIHRvIHByZXNlcnZlIGFzIG11Y2ggb2YgdGhlIG9yaWdpbmFsXG4gICAqIGZvcm1hdHRpbmcgYXMgcG9zc2libGUpLlxuICAgKlxuICAgKiBXaGVuIHRoZSBwcm92aWRlZCBvdmVycmlkZSByZXR1cm5zIHVuZGVmaW5lZCwgdGhlIGRlZmF1bHQgYnVpbHQgaW4gcHJpbnRpbmdcbiAgICogd2lsbCBiZSBkb25lIGZvciB0aGUgQVNULk5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSBhc3QgdGhlIGFzdCBub2RlIHRvIGJlIHByaW50ZWRcbiAgICogQHBhcmFtIG9wdGlvbnMgdGhlIG9wdGlvbnMgc3BlY2lmaWVkIGR1cmluZyB0aGUgcHJpbnQoKSBpbnZvY2F0aW9uXG4gICAqL1xuICBvdmVycmlkZT8oYXN0OiBOb2RlLCBvcHRpb25zOiBQcmludGVyT3B0aW9ucyk6IHZvaWQgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByaW50ZXIge1xuICBwcml2YXRlIGJ1ZmZlciA9ICcnO1xuICBwcml2YXRlIG9wdGlvbnM6IFByaW50ZXJPcHRpb25zO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFByaW50ZXJPcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIC8qXG4gICAgVGhpcyBpcyB1c2VkIGJ5IF9hbGxfIG1ldGhvZHMgb24gdGhpcyBQcmludGVyIGNsYXNzIHRoYXQgYWRkIHRvIGB0aGlzLmJ1ZmZlcmAsXG4gICAgaXQgYWxsb3dzIGNvbnN1bWVycyBvZiB0aGUgcHJpbnRlciB0byB1c2UgYWx0ZXJuYXRlIHN0cmluZyByZXByZXNlbnRhdGlvbnMgZm9yXG4gICAgYSBnaXZlbiBub2RlLlxuXG4gICAgVGhlIHByaW1hcnkgdXNlIGNhc2UgZm9yIHRoaXMgYXJlIHRoaW5ncyBsaWtlIHNvdXJjZSAtPiBzb3VyY2UgY29kZW1vZCB1dGlsaXRpZXMuXG4gICAgRm9yIGV4YW1wbGUsIGVtYmVyLXRlbXBsYXRlLXJlY2FzdCBhdHRlbXB0cyB0byBhbHdheXMgcHJlc2VydmUgdGhlIG9yaWdpbmFsIHN0cmluZ1xuICAgIGZvcm1hdHRpbmcgaW4gZWFjaCBBU1Qgbm9kZSBpZiBubyBtb2RpZmljYXRpb25zIGFyZSBtYWRlIHRvIGl0LlxuICAqL1xuICBoYW5kbGVkQnlPdmVycmlkZShub2RlOiBOb2RlLCBlbnN1cmVMZWFkaW5nV2hpdGVzcGFjZSA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5vdmVycmlkZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgcmVzdWx0ID0gdGhpcy5vcHRpb25zLm92ZXJyaWRlKG5vZGUsIHRoaXMub3B0aW9ucyk7XG4gICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKGVuc3VyZUxlYWRpbmdXaGl0ZXNwYWNlICYmIHJlc3VsdCAhPT0gJycgJiYgTk9OX1dISVRFU1BBQ0UudGVzdChyZXN1bHRbMF0pKSB7XG4gICAgICAgICAgcmVzdWx0ID0gYCAke3Jlc3VsdH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5idWZmZXIgKz0gcmVzdWx0O1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBOb2RlKG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgY2FzZSAnTXVzdGFjaGVTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnQmxvY2tTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnUGFydGlhbFN0YXRlbWVudCc6XG4gICAgICBjYXNlICdNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQnOlxuICAgICAgY2FzZSAnQ29tbWVudFN0YXRlbWVudCc6XG4gICAgICBjYXNlICdUZXh0Tm9kZSc6XG4gICAgICBjYXNlICdFbGVtZW50Tm9kZSc6XG4gICAgICBjYXNlICdBdHRyTm9kZSc6XG4gICAgICBjYXNlICdCbG9jayc6XG4gICAgICBjYXNlICdUZW1wbGF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLlRvcExldmVsU3RhdGVtZW50KG5vZGUpO1xuICAgICAgY2FzZSAnU3RyaW5nTGl0ZXJhbCc6XG4gICAgICBjYXNlICdCb29sZWFuTGl0ZXJhbCc6XG4gICAgICBjYXNlICdOdW1iZXJMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ1VuZGVmaW5lZExpdGVyYWwnOlxuICAgICAgY2FzZSAnTnVsbExpdGVyYWwnOlxuICAgICAgY2FzZSAnUGF0aEV4cHJlc3Npb24nOlxuICAgICAgY2FzZSAnU3ViRXhwcmVzc2lvbic6XG4gICAgICAgIHJldHVybiB0aGlzLkV4cHJlc3Npb24obm9kZSk7XG4gICAgICBjYXNlICdQcm9ncmFtJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuQmxvY2sobm9kZSk7XG4gICAgICBjYXNlICdDb25jYXRTdGF0ZW1lbnQnOlxuICAgICAgICAvLyBzaG91bGQgaGF2ZSBhbiBBdHRyTm9kZSBwYXJlbnRcbiAgICAgICAgcmV0dXJuIHRoaXMuQ29uY2F0U3RhdGVtZW50KG5vZGUpO1xuICAgICAgY2FzZSAnSGFzaCc6XG4gICAgICAgIHJldHVybiB0aGlzLkhhc2gobm9kZSk7XG4gICAgICBjYXNlICdIYXNoUGFpcic6XG4gICAgICAgIHJldHVybiB0aGlzLkhhc2hQYWlyKG5vZGUpO1xuICAgICAgY2FzZSAnRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50KG5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB1bnJlYWNoYWJsZShub2RlLCAnTm9kZScpO1xuICB9XG5cbiAgRXhwcmVzc2lvbihleHByZXNzaW9uOiBFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgc3dpdGNoIChleHByZXNzaW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgJ1N0cmluZ0xpdGVyYWwnOlxuICAgICAgY2FzZSAnQm9vbGVhbkxpdGVyYWwnOlxuICAgICAgY2FzZSAnTnVtYmVyTGl0ZXJhbCc6XG4gICAgICBjYXNlICdVbmRlZmluZWRMaXRlcmFsJzpcbiAgICAgIGNhc2UgJ051bGxMaXRlcmFsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuTGl0ZXJhbChleHByZXNzaW9uKTtcbiAgICAgIGNhc2UgJ1BhdGhFeHByZXNzaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuUGF0aEV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG4gICAgICBjYXNlICdTdWJFeHByZXNzaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuU3ViRXhwcmVzc2lvbihleHByZXNzaW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHVucmVhY2hhYmxlKGV4cHJlc3Npb24sICdFeHByZXNzaW9uJyk7XG4gIH1cblxuICBMaXRlcmFsKGxpdGVyYWw6IExpdGVyYWwpIHtcbiAgICBzd2l0Y2ggKGxpdGVyYWwudHlwZSkge1xuICAgICAgY2FzZSAnU3RyaW5nTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLlN0cmluZ0xpdGVyYWwobGl0ZXJhbCk7XG4gICAgICBjYXNlICdCb29sZWFuTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLkJvb2xlYW5MaXRlcmFsKGxpdGVyYWwpO1xuICAgICAgY2FzZSAnTnVtYmVyTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLk51bWJlckxpdGVyYWwobGl0ZXJhbCk7XG4gICAgICBjYXNlICdVbmRlZmluZWRMaXRlcmFsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuVW5kZWZpbmVkTGl0ZXJhbChsaXRlcmFsKTtcbiAgICAgIGNhc2UgJ051bGxMaXRlcmFsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuTnVsbExpdGVyYWwobGl0ZXJhbCk7XG4gICAgfVxuICAgIHJldHVybiB1bnJlYWNoYWJsZShsaXRlcmFsLCAnTGl0ZXJhbCcpO1xuICB9XG5cbiAgVG9wTGV2ZWxTdGF0ZW1lbnQoc3RhdGVtZW50OiBUb3BMZXZlbFN0YXRlbWVudCkge1xuICAgIHN3aXRjaCAoc3RhdGVtZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ011c3RhY2hlU3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuTXVzdGFjaGVTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ0Jsb2NrU3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuQmxvY2tTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ1BhcnRpYWxTdGF0ZW1lbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5QYXJ0aWFsU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5NdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICAgIGNhc2UgJ0NvbW1lbnRTdGF0ZW1lbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5Db21tZW50U3RhdGVtZW50KHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdUZXh0Tm9kZSc6XG4gICAgICAgIHJldHVybiB0aGlzLlRleHROb2RlKHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdFbGVtZW50Tm9kZSc6XG4gICAgICAgIHJldHVybiB0aGlzLkVsZW1lbnROb2RlKHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdCbG9jayc6XG4gICAgICBjYXNlICdUZW1wbGF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLkJsb2NrKHN0YXRlbWVudCk7XG4gICAgICBjYXNlICdBdHRyTm9kZSc6XG4gICAgICAgIC8vIHNob3VsZCBoYXZlIGVsZW1lbnRcbiAgICAgICAgcmV0dXJuIHRoaXMuQXR0ck5vZGUoc3RhdGVtZW50KTtcbiAgICB9XG4gICAgdW5yZWFjaGFibGUoc3RhdGVtZW50LCAnVG9wTGV2ZWxTdGF0ZW1lbnQnKTtcbiAgfVxuXG4gIEJsb2NrKGJsb2NrOiBCbG9jayB8IFByb2dyYW0gfCBUZW1wbGF0ZSk6IHZvaWQge1xuICAgIC8qXG4gICAgICBXaGVuIHByb2Nlc3NpbmcgYSB0ZW1wbGF0ZSBsaWtlOlxuXG4gICAgICBgYGBoYnNcbiAgICAgIHt7I2lmIHdoYXRldmVyfX1cbiAgICAgICAgd2hhdGV2ZXJcbiAgICAgIHt7ZWxzZSBpZiBzb21ldGhpbmdFbHNlfX1cbiAgICAgICAgc29tZXRoaW5nIGVsc2VcbiAgICAgIHt7ZWxzZX19XG4gICAgICAgIGZhbGxiYWNrXG4gICAgICB7ey9pZn19XG4gICAgICBgYGBcblxuICAgICAgVGhlIEFTVCBzdGlsbCBfZWZmZWN0aXZlbHlfIGxvb2tzIGxpa2U6XG5cbiAgICAgIGBgYGhic1xuICAgICAge3sjaWYgd2hhdGV2ZXJ9fVxuICAgICAgICB3aGF0ZXZlclxuICAgICAge3tlbHNlfX17eyNpZiBzb21ldGhpbmdFbHNlfX1cbiAgICAgICAgc29tZXRoaW5nIGVsc2VcbiAgICAgIHt7ZWxzZX19XG4gICAgICAgIGZhbGxiYWNrXG4gICAgICB7ey9pZn19e3svaWZ9fVxuICAgICAgYGBgXG5cbiAgICAgIFRoZSBvbmx5IHdheSB3ZSBjYW4gdGVsbCBpZiB0aGF0IGlzIHRoZSBjYXNlIGlzIGJ5IGNoZWNraW5nIGZvclxuICAgICAgYGJsb2NrLmNoYWluZWRgLCBidXQgdW5mb3J0dW5hdGVseSB3aGVuIHRoZSBhY3R1YWwgc3RhdGVtZW50cyBhcmVcbiAgICAgIHByb2Nlc3NlZCB0aGUgYGJsb2NrLmJvZHlbMF1gIG5vZGUgKHdoaWNoIHdpbGwgYWx3YXlzIGJlIGFcbiAgICAgIGBCbG9ja1N0YXRlbWVudGApIGhhcyBubyBjbHVlIHRoYXQgaXRzIGFuc2Nlc3RvciBgQmxvY2tgIG5vZGUgd2FzXG4gICAgICBjaGFpbmVkLlxuXG4gICAgICBUaGlzIFwiZm9yd2FyZHNcIiB0aGUgYGNoYWluZWRgIHNldHRpbmcgc28gdGhhdCB3ZSBjYW4gY2hlY2tcbiAgICAgIGl0IGxhdGVyIHdoZW4gcHJvY2Vzc2luZyB0aGUgYEJsb2NrU3RhdGVtZW50YC5cbiAgICAqL1xuICAgIGlmIChibG9jay5jaGFpbmVkKSB7XG4gICAgICBsZXQgZmlyc3RDaGlsZCA9IGJsb2NrLmJvZHlbMF0gYXMgQmxvY2tTdGF0ZW1lbnQ7XG4gICAgICBmaXJzdENoaWxkLmNoYWluZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGJsb2NrKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuVG9wTGV2ZWxTdGF0ZW1lbnRzKGJsb2NrLmJvZHkpO1xuICB9XG5cbiAgVG9wTGV2ZWxTdGF0ZW1lbnRzKHN0YXRlbWVudHM6IFRvcExldmVsU3RhdGVtZW50W10pIHtcbiAgICBzdGF0ZW1lbnRzLmZvckVhY2goKHN0YXRlbWVudCkgPT4gdGhpcy5Ub3BMZXZlbFN0YXRlbWVudChzdGF0ZW1lbnQpKTtcbiAgfVxuXG4gIEVsZW1lbnROb2RlKGVsOiBFbGVtZW50Tm9kZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGVsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuT3BlbkVsZW1lbnROb2RlKGVsKTtcbiAgICB0aGlzLlRvcExldmVsU3RhdGVtZW50cyhlbC5jaGlsZHJlbik7XG4gICAgdGhpcy5DbG9zZUVsZW1lbnROb2RlKGVsKTtcbiAgfVxuXG4gIE9wZW5FbGVtZW50Tm9kZShlbDogRWxlbWVudE5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLmJ1ZmZlciArPSBgPCR7ZWwudGFnfWA7XG4gICAgY29uc3QgcGFydHMgPSBbLi4uZWwuYXR0cmlidXRlcywgLi4uZWwubW9kaWZpZXJzLCAuLi5lbC5jb21tZW50c10uc29ydChzb3J0QnlMb2MpO1xuXG4gICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnICc7XG4gICAgICBzd2l0Y2ggKHBhcnQudHlwZSkge1xuICAgICAgICBjYXNlICdBdHRyTm9kZSc6XG4gICAgICAgICAgdGhpcy5BdHRyTm9kZShwYXJ0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50JzpcbiAgICAgICAgICB0aGlzLkVsZW1lbnRNb2RpZmllclN0YXRlbWVudChwYXJ0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnTXVzdGFjaGVDb21tZW50U3RhdGVtZW50JzpcbiAgICAgICAgICB0aGlzLk11c3RhY2hlQ29tbWVudFN0YXRlbWVudChwYXJ0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVsLmJsb2NrUGFyYW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5CbG9ja1BhcmFtcyhlbC5ibG9ja1BhcmFtcyk7XG4gICAgfVxuICAgIGlmIChlbC5zZWxmQ2xvc2luZykge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJyAvJztcbiAgICB9XG4gICAgdGhpcy5idWZmZXIgKz0gJz4nO1xuICB9XG5cbiAgQ2xvc2VFbGVtZW50Tm9kZShlbDogRWxlbWVudE5vZGUpOiB2b2lkIHtcbiAgICBpZiAoZWwuc2VsZkNsb3NpbmcgfHwgdm9pZE1hcFtlbC50YWcudG9Mb3dlckNhc2UoKV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5idWZmZXIgKz0gYDwvJHtlbC50YWd9PmA7XG4gIH1cblxuICBBdHRyTm9kZShhdHRyOiBBdHRyTm9kZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGF0dHIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHsgbmFtZSwgdmFsdWUgfSA9IGF0dHI7XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBuYW1lO1xuICAgIGlmICh2YWx1ZS50eXBlICE9PSAnVGV4dE5vZGUnIHx8IHZhbHVlLmNoYXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICc9JztcbiAgICAgIHRoaXMuQXR0ck5vZGVWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQXR0ck5vZGVWYWx1ZSh2YWx1ZTogQXR0ck5vZGVbJ3ZhbHVlJ10pIHtcbiAgICBpZiAodmFsdWUudHlwZSA9PT0gJ1RleHROb2RlJykge1xuICAgICAgdGhpcy5idWZmZXIgKz0gJ1wiJztcbiAgICAgIHRoaXMuVGV4dE5vZGUodmFsdWUsIHRydWUpO1xuICAgICAgdGhpcy5idWZmZXIgKz0gJ1wiJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5Ob2RlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBUZXh0Tm9kZSh0ZXh0OiBUZXh0Tm9kZSwgaXNBdHRyPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHRleHQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5lbnRpdHlFbmNvZGluZyA9PT0gJ3JhdycpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IHRleHQuY2hhcnM7XG4gICAgfSBlbHNlIGlmIChpc0F0dHIpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGVzY2FwZUF0dHJWYWx1ZSh0ZXh0LmNoYXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idWZmZXIgKz0gZXNjYXBlVGV4dCh0ZXh0LmNoYXJzKTtcbiAgICB9XG4gIH1cblxuICBNdXN0YWNoZVN0YXRlbWVudChtdXN0YWNoZTogTXVzdGFjaGVTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShtdXN0YWNoZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBtdXN0YWNoZS5lc2NhcGVkID8gJ3t7JyA6ICd7e3snO1xuXG4gICAgaWYgKG11c3RhY2hlLnN0cmlwLm9wZW4pIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICd+JztcbiAgICB9XG5cbiAgICB0aGlzLkV4cHJlc3Npb24obXVzdGFjaGUucGF0aCk7XG4gICAgdGhpcy5QYXJhbXMobXVzdGFjaGUucGFyYW1zKTtcbiAgICB0aGlzLkhhc2gobXVzdGFjaGUuaGFzaCk7XG5cbiAgICBpZiAobXVzdGFjaGUuc3RyaXAuY2xvc2UpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9ICd+JztcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBtdXN0YWNoZS5lc2NhcGVkID8gJ319JyA6ICd9fX0nO1xuICB9XG5cbiAgQmxvY2tTdGF0ZW1lbnQoYmxvY2s6IEJsb2NrU3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoYmxvY2spKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGJsb2NrLmNoYWluZWQpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmludmVyc2VTdHJpcC5vcGVuID8gJ3t7ficgOiAne3snO1xuICAgICAgdGhpcy5idWZmZXIgKz0gJ2Vsc2UgJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idWZmZXIgKz0gYmxvY2sub3BlblN0cmlwLm9wZW4gPyAne3t+IycgOiAne3sjJztcbiAgICB9XG5cbiAgICB0aGlzLkV4cHJlc3Npb24oYmxvY2sucGF0aCk7XG4gICAgdGhpcy5QYXJhbXMoYmxvY2sucGFyYW1zKTtcbiAgICB0aGlzLkhhc2goYmxvY2suaGFzaCk7XG4gICAgaWYgKGJsb2NrLnByb2dyYW0uYmxvY2tQYXJhbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLkJsb2NrUGFyYW1zKGJsb2NrLnByb2dyYW0uYmxvY2tQYXJhbXMpO1xuICAgIH1cblxuICAgIGlmIChibG9jay5jaGFpbmVkKSB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBibG9jay5pbnZlcnNlU3RyaXAuY2xvc2UgPyAnfn19JyA6ICd9fSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLm9wZW5TdHJpcC5jbG9zZSA/ICd+fX0nIDogJ319JztcbiAgICB9XG5cbiAgICB0aGlzLkJsb2NrKGJsb2NrLnByb2dyYW0pO1xuXG4gICAgaWYgKGJsb2NrLmludmVyc2UpIHtcbiAgICAgIGlmICghYmxvY2suaW52ZXJzZS5jaGFpbmVkKSB7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmludmVyc2VTdHJpcC5vcGVuID8gJ3t7ficgOiAne3snO1xuICAgICAgICB0aGlzLmJ1ZmZlciArPSAnZWxzZSc7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmludmVyc2VTdHJpcC5jbG9zZSA/ICd+fX0nIDogJ319JztcbiAgICAgIH1cblxuICAgICAgdGhpcy5CbG9jayhibG9jay5pbnZlcnNlKTtcbiAgICB9XG5cbiAgICBpZiAoIWJsb2NrLmNoYWluZWQpIHtcbiAgICAgIHRoaXMuYnVmZmVyICs9IGJsb2NrLmNsb3NlU3RyaXAub3BlbiA/ICd7e34vJyA6ICd7ey8nO1xuICAgICAgdGhpcy5FeHByZXNzaW9uKGJsb2NrLnBhdGgpO1xuICAgICAgdGhpcy5idWZmZXIgKz0gYmxvY2suY2xvc2VTdHJpcC5jbG9zZSA/ICd+fX0nIDogJ319JztcbiAgICB9XG4gIH1cblxuICBCbG9ja1BhcmFtcyhibG9ja1BhcmFtczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmJ1ZmZlciArPSBgIGFzIHwke2Jsb2NrUGFyYW1zLmpvaW4oJyAnKX18YDtcbiAgfVxuXG4gIFBhcnRpYWxTdGF0ZW1lbnQocGFydGlhbDogUGFydGlhbFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHBhcnRpYWwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJ3t7Pic7XG4gICAgdGhpcy5FeHByZXNzaW9uKHBhcnRpYWwubmFtZSk7XG4gICAgdGhpcy5QYXJhbXMocGFydGlhbC5wYXJhbXMpO1xuICAgIHRoaXMuSGFzaChwYXJ0aWFsLmhhc2gpO1xuICAgIHRoaXMuYnVmZmVyICs9ICd9fSc7XG4gIH1cblxuICBDb25jYXRTdGF0ZW1lbnQoY29uY2F0OiBDb25jYXRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShjb25jYXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJ1wiJztcbiAgICBjb25jYXQucGFydHMuZm9yRWFjaCgocGFydCkgPT4ge1xuICAgICAgaWYgKHBhcnQudHlwZSA9PT0gJ1RleHROb2RlJykge1xuICAgICAgICB0aGlzLlRleHROb2RlKHBhcnQsIHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5Ob2RlKHBhcnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuYnVmZmVyICs9ICdcIic7XG4gIH1cblxuICBNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQoY29tbWVudDogTXVzdGFjaGVDb21tZW50U3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoY29tbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBge3shLS0ke2NvbW1lbnQudmFsdWV9LS19fWA7XG4gIH1cblxuICBFbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQobW9kOiBFbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShtb2QpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gJ3t7JztcbiAgICB0aGlzLkV4cHJlc3Npb24obW9kLnBhdGgpO1xuICAgIHRoaXMuUGFyYW1zKG1vZC5wYXJhbXMpO1xuICAgIHRoaXMuSGFzaChtb2QuaGFzaCk7XG4gICAgdGhpcy5idWZmZXIgKz0gJ319JztcbiAgfVxuXG4gIENvbW1lbnRTdGF0ZW1lbnQoY29tbWVudDogQ29tbWVudFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGNvbW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgKz0gYDwhLS0ke2NvbW1lbnQudmFsdWV9LS0+YDtcbiAgfVxuXG4gIFBhdGhFeHByZXNzaW9uKHBhdGg6IFBhdGhFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUocGF0aCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBwYXRoLm9yaWdpbmFsO1xuICB9XG5cbiAgU3ViRXhwcmVzc2lvbihzZXhwOiBTdWJFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoc2V4cCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSAnKCc7XG4gICAgdGhpcy5FeHByZXNzaW9uKHNleHAucGF0aCk7XG4gICAgdGhpcy5QYXJhbXMoc2V4cC5wYXJhbXMpO1xuICAgIHRoaXMuSGFzaChzZXhwLmhhc2gpO1xuICAgIHRoaXMuYnVmZmVyICs9ICcpJztcbiAgfVxuXG4gIFBhcmFtcyhwYXJhbXM6IEV4cHJlc3Npb25bXSkge1xuICAgIC8vIFRPRE86IGltcGxlbWVudCBhIHRvcCBsZXZlbCBQYXJhbXMgQVNUIG5vZGUgKGp1c3QgbGlrZSB0aGUgSGFzaCBvYmplY3QpXG4gICAgLy8gc28gdGhhdCB0aGlzIGNhbiBhbHNvIGJlIG92ZXJyaWRkZW5cbiAgICBpZiAocGFyYW1zLmxlbmd0aCkge1xuICAgICAgcGFyYW1zLmZvckVhY2goKHBhcmFtKSA9PiB7XG4gICAgICAgIHRoaXMuYnVmZmVyICs9ICcgJztcbiAgICAgICAgdGhpcy5FeHByZXNzaW9uKHBhcmFtKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEhhc2goaGFzaDogSGFzaCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGhhc2gsIHRydWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaGFzaC5wYWlycy5mb3JFYWNoKChwYWlyKSA9PiB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSAnICc7XG4gICAgICB0aGlzLkhhc2hQYWlyKHBhaXIpO1xuICAgIH0pO1xuICB9XG5cbiAgSGFzaFBhaXIocGFpcjogSGFzaFBhaXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShwYWlyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IHBhaXIua2V5O1xuICAgIHRoaXMuYnVmZmVyICs9ICc9JztcbiAgICB0aGlzLk5vZGUocGFpci52YWx1ZSk7XG4gIH1cblxuICBTdHJpbmdMaXRlcmFsKHN0cjogU3RyaW5nTGl0ZXJhbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKHN0cikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBKU09OLnN0cmluZ2lmeShzdHIudmFsdWUpO1xuICB9XG5cbiAgQm9vbGVhbkxpdGVyYWwoYm9vbDogQm9vbGVhbkxpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShib29sKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9IGJvb2wudmFsdWU7XG4gIH1cblxuICBOdW1iZXJMaXRlcmFsKG51bWJlcjogTnVtYmVyTGl0ZXJhbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKG51bWJlcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBudW1iZXIudmFsdWU7XG4gIH1cblxuICBVbmRlZmluZWRMaXRlcmFsKG5vZGU6IFVuZGVmaW5lZExpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShub2RlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgTnVsbExpdGVyYWwobm9kZTogTnVsbExpdGVyYWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVkQnlPdmVycmlkZShub2RlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnVmZmVyICs9ICdudWxsJztcbiAgfVxuXG4gIHByaW50KG5vZGU6IE5vZGUpIHtcbiAgICBsZXQgeyBvcHRpb25zIH0gPSB0aGlzO1xuXG4gICAgaWYgKG9wdGlvbnMub3ZlcnJpZGUpIHtcbiAgICAgIGxldCByZXN1bHQgPSBvcHRpb25zLm92ZXJyaWRlKG5vZGUsIG9wdGlvbnMpO1xuXG4gICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciA9ICcnO1xuICAgIHRoaXMuTm9kZShub2RlKTtcbiAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gIH1cbn1cblxuZnVuY3Rpb24gdW5yZWFjaGFibGUobm9kZTogbmV2ZXIsIHBhcmVudE5vZGVUeXBlOiBzdHJpbmcpOiBuZXZlciB7XG4gIGxldCB7IGxvYywgdHlwZSB9ID0gKG5vZGUgYXMgYW55KSBhcyBOb2RlO1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYE5vbi1leGhhdXN0aXZlIG5vZGUgbmFycm93aW5nICR7dHlwZX0gQCBsb2NhdGlvbjogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgIGxvY1xuICAgICl9IGZvciBwYXJlbnQgJHtwYXJlbnROb2RlVHlwZX1gXG4gICk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -69,2 +69,29 @@ var ATTR_VALUE_REGEX_TEST = /[\xA0"&]/;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLElBQU0scUJBQXFCLEdBQTNCLFVBQUE7QUFDQSxJQUFNLHdCQUF3QixHQUFHLElBQUEsTUFBQSxDQUFXLHFCQUFxQixDQUFoQyxNQUFBLEVBQWpDLEdBQWlDLENBQWpDO0FBRUEsSUFBTSxlQUFlLEdBQXJCLFdBQUE7QUFDQSxJQUFNLGtCQUFrQixHQUFHLElBQUEsTUFBQSxDQUFXLGVBQWUsQ0FBMUIsTUFBQSxFQUEzQixHQUEyQixDQUEzQjs7QUFFQSxTQUFBLGlCQUFBLENBQUEsS0FBQSxFQUF1QztBQUNyQyxVQUFRLEtBQUksQ0FBSixVQUFBLENBQVIsQ0FBUSxDQUFSO0FBQ0UsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLFFBQUE7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLFFBQUE7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLE9BQUE7O0FBQ0Y7QUFDRSxhQUFBLEtBQUE7QUFSSjtBQVVEOztBQUVELFNBQUEsWUFBQSxDQUFBLE1BQUEsRUFBa0M7QUFDaEMsVUFBUSxNQUFJLENBQUosVUFBQSxDQUFSLENBQVEsQ0FBUjtBQUNFLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxRQUFBOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxPQUFBOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxNQUFBOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxNQUFBOztBQUNGO0FBQ0UsYUFBQSxNQUFBO0FBVko7QUFZRDs7QUFFRCxPQUFNLFNBQUEsZUFBQSxDQUFBLFNBQUEsRUFBMkM7QUFDL0MsTUFBSSxxQkFBcUIsQ0FBckIsSUFBQSxDQUFKLFNBQUksQ0FBSixFQUEyQztBQUN6QyxXQUFPLFNBQVMsQ0FBVCxPQUFBLENBQUEsd0JBQUEsRUFBUCxpQkFBTyxDQUFQO0FBQ0Q7O0FBQ0QsU0FBQSxTQUFBO0FBQ0Q7QUFFRCxPQUFNLFNBQUEsVUFBQSxDQUFBLElBQUEsRUFBaUM7QUFDckMsTUFBSSxlQUFlLENBQWYsSUFBQSxDQUFKLElBQUksQ0FBSixFQUFnQztBQUM5QixXQUFPLElBQUksQ0FBSixPQUFBLENBQUEsa0JBQUEsRUFBUCxZQUFPLENBQVA7QUFDRDs7QUFDRCxTQUFBLElBQUE7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVudW0gQ2hhciB7XG4gIE5CU1AgPSAweGEwLFxuICBRVU9UID0gMHgyMixcbiAgTFQgPSAweDNjLFxuICBHVCA9IDB4M2UsXG4gIEFNUCA9IDB4MjYsXG59XG5cbmNvbnN0IEFUVFJfVkFMVUVfUkVHRVhfVEVTVCA9IC9bXFx4QTBcIiZdLztcbmNvbnN0IEFUVFJfVkFMVUVfUkVHRVhfUkVQTEFDRSA9IG5ldyBSZWdFeHAoQVRUUl9WQUxVRV9SRUdFWF9URVNULnNvdXJjZSwgJ2cnKTtcblxuY29uc3QgVEVYVF9SRUdFWF9URVNUID0gL1tcXHhBMCY8Pl0vO1xuY29uc3QgVEVYVF9SRUdFWF9SRVBMQUNFID0gbmV3IFJlZ0V4cChURVhUX1JFR0VYX1RFU1Quc291cmNlLCAnZycpO1xuXG5mdW5jdGlvbiBhdHRyVmFsdWVSZXBsYWNlcihjaGFyOiBzdHJpbmcpIHtcbiAgc3dpdGNoIChjaGFyLmNoYXJDb2RlQXQoMCkpIHtcbiAgICBjYXNlIENoYXIuTkJTUDpcbiAgICAgIHJldHVybiAnJm5ic3A7JztcbiAgICBjYXNlIENoYXIuUVVPVDpcbiAgICAgIHJldHVybiAnJnF1b3Q7JztcbiAgICBjYXNlIENoYXIuQU1QOlxuICAgICAgcmV0dXJuICcmYW1wOyc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBjaGFyO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRleHRSZXBsYWNlcihjaGFyOiBzdHJpbmcpIHtcbiAgc3dpdGNoIChjaGFyLmNoYXJDb2RlQXQoMCkpIHtcbiAgICBjYXNlIENoYXIuTkJTUDpcbiAgICAgIHJldHVybiAnJm5ic3A7JztcbiAgICBjYXNlIENoYXIuQU1QOlxuICAgICAgcmV0dXJuICcmYW1wOyc7XG4gICAgY2FzZSBDaGFyLkxUOlxuICAgICAgcmV0dXJuICcmbHQ7JztcbiAgICBjYXNlIENoYXIuR1Q6XG4gICAgICByZXR1cm4gJyZndDsnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY2hhcjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlQXR0clZhbHVlKGF0dHJWYWx1ZTogc3RyaW5nKSB7XG4gIGlmIChBVFRSX1ZBTFVFX1JFR0VYX1RFU1QudGVzdChhdHRyVmFsdWUpKSB7XG4gICAgcmV0dXJuIGF0dHJWYWx1ZS5yZXBsYWNlKEFUVFJfVkFMVUVfUkVHRVhfUkVQTEFDRSwgYXR0clZhbHVlUmVwbGFjZXIpO1xuICB9XG4gIHJldHVybiBhdHRyVmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVUZXh0KHRleHQ6IHN0cmluZykge1xuICBpZiAoVEVYVF9SRUdFWF9URVNULnRlc3QodGV4dCkpIHtcbiAgICByZXR1cm4gdGV4dC5yZXBsYWNlKFRFWFRfUkVHRVhfUkVQTEFDRSwgdGV4dFJlcGxhY2VyKTtcbiAgfVxuICByZXR1cm4gdGV4dDtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
export function isSynthetic(node) {
if (node && node.loc) {
return node.loc.source === '(synthetic)';
}
return false;
}
export function sortByLoc(a, b) {
// be conservative about the location where a new node is inserted
if (isSynthetic(a) || isSynthetic(b)) {
return 0;
}
if (a.loc.start.line < b.loc.start.line) {
return -1;
}
if (a.loc.start.line === b.loc.start.line && a.loc.start.column < b.loc.start.column) {
return -1;
}
if (a.loc.start.line === b.loc.start.line && a.loc.start.column === b.loc.start.column) {
return 0;
}
return 1;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLElBQU0scUJBQXFCLEdBQTNCLFVBQUE7QUFDQSxJQUFNLHdCQUF3QixHQUFHLElBQUEsTUFBQSxDQUFXLHFCQUFxQixDQUFoQyxNQUFBLEVBQWpDLEdBQWlDLENBQWpDO0FBRUEsSUFBTSxlQUFlLEdBQXJCLFdBQUE7QUFDQSxJQUFNLGtCQUFrQixHQUFHLElBQUEsTUFBQSxDQUFXLGVBQWUsQ0FBMUIsTUFBQSxFQUEzQixHQUEyQixDQUEzQjs7QUFFQSxTQUFBLGlCQUFBLENBQUEsS0FBQSxFQUF1QztBQUNyQyxVQUFRLEtBQUksQ0FBSixVQUFBLENBQVIsQ0FBUSxDQUFSO0FBQ0UsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLFFBQUE7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLFFBQUE7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLE9BQUE7O0FBQ0Y7QUFDRSxhQUFBLEtBQUE7QUFSSjtBQVVEOztBQUVELFNBQUEsWUFBQSxDQUFBLE1BQUEsRUFBa0M7QUFDaEMsVUFBUSxNQUFJLENBQUosVUFBQSxDQUFSLENBQVEsQ0FBUjtBQUNFLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxRQUFBOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxPQUFBOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxNQUFBOztBQUNGLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxNQUFBOztBQUNGO0FBQ0UsYUFBQSxNQUFBO0FBVko7QUFZRDs7QUFFRCxPQUFNLFNBQUEsZUFBQSxDQUFBLFNBQUEsRUFBMkM7QUFDL0MsTUFBSSxxQkFBcUIsQ0FBckIsSUFBQSxDQUFKLFNBQUksQ0FBSixFQUEyQztBQUN6QyxXQUFPLFNBQVMsQ0FBVCxPQUFBLENBQUEsd0JBQUEsRUFBUCxpQkFBTyxDQUFQO0FBQ0Q7O0FBQ0QsU0FBQSxTQUFBO0FBQ0Q7QUFFRCxPQUFNLFNBQUEsVUFBQSxDQUFBLElBQUEsRUFBaUM7QUFDckMsTUFBSSxlQUFlLENBQWYsSUFBQSxDQUFKLElBQUksQ0FBSixFQUFnQztBQUM5QixXQUFPLElBQUksQ0FBSixPQUFBLENBQUEsa0JBQUEsRUFBUCxZQUFPLENBQVA7QUFDRDs7QUFDRCxTQUFBLElBQUE7QUFDRDtBQUVELE9BQU0sU0FBQSxXQUFBLENBQUEsSUFBQSxFQUFvQztBQUN4QyxNQUFJLElBQUksSUFBSSxJQUFJLENBQWhCLEdBQUEsRUFBc0I7QUFDcEIsV0FBTyxJQUFJLENBQUosR0FBQSxDQUFBLE1BQUEsS0FBUCxhQUFBO0FBQ0Q7O0FBRUQsU0FBQSxLQUFBO0FBQ0Q7QUFFRCxPQUFNLFNBQUEsU0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLEVBQTRDO0FBQ2hEO0FBQ0EsTUFBSSxXQUFXLENBQVgsQ0FBVyxDQUFYLElBQWtCLFdBQVcsQ0FBakMsQ0FBaUMsQ0FBakMsRUFBc0M7QUFDcEMsV0FBQSxDQUFBO0FBQ0Q7O0FBRUQsTUFBSSxDQUFDLENBQUQsR0FBQSxDQUFBLEtBQUEsQ0FBQSxJQUFBLEdBQW1CLENBQUMsQ0FBRCxHQUFBLENBQUEsS0FBQSxDQUF2QixJQUFBLEVBQXlDO0FBQ3ZDLFdBQU8sQ0FBUCxDQUFBO0FBQ0Q7O0FBRUQsTUFBSSxDQUFDLENBQUQsR0FBQSxDQUFBLEtBQUEsQ0FBQSxJQUFBLEtBQXFCLENBQUMsQ0FBRCxHQUFBLENBQUEsS0FBQSxDQUFyQixJQUFBLElBQXlDLENBQUMsQ0FBRCxHQUFBLENBQUEsS0FBQSxDQUFBLE1BQUEsR0FBcUIsQ0FBQyxDQUFELEdBQUEsQ0FBQSxLQUFBLENBQWxFLE1BQUEsRUFBc0Y7QUFDcEYsV0FBTyxDQUFQLENBQUE7QUFDRDs7QUFFRCxNQUFJLENBQUMsQ0FBRCxHQUFBLENBQUEsS0FBQSxDQUFBLElBQUEsS0FBcUIsQ0FBQyxDQUFELEdBQUEsQ0FBQSxLQUFBLENBQXJCLElBQUEsSUFBeUMsQ0FBQyxDQUFELEdBQUEsQ0FBQSxLQUFBLENBQUEsTUFBQSxLQUF1QixDQUFDLENBQUQsR0FBQSxDQUFBLEtBQUEsQ0FBcEUsTUFBQSxFQUF3RjtBQUN0RixXQUFBLENBQUE7QUFDRDs7QUFFRCxTQUFBLENBQUE7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEFTVCBmcm9tICcuLi90eXBlcy9ub2Rlcyc7XG5cbmNvbnN0IGVudW0gQ2hhciB7XG4gIE5CU1AgPSAweGEwLFxuICBRVU9UID0gMHgyMixcbiAgTFQgPSAweDNjLFxuICBHVCA9IDB4M2UsXG4gIEFNUCA9IDB4MjYsXG59XG5cbmNvbnN0IEFUVFJfVkFMVUVfUkVHRVhfVEVTVCA9IC9bXFx4QTBcIiZdLztcbmNvbnN0IEFUVFJfVkFMVUVfUkVHRVhfUkVQTEFDRSA9IG5ldyBSZWdFeHAoQVRUUl9WQUxVRV9SRUdFWF9URVNULnNvdXJjZSwgJ2cnKTtcblxuY29uc3QgVEVYVF9SRUdFWF9URVNUID0gL1tcXHhBMCY8Pl0vO1xuY29uc3QgVEVYVF9SRUdFWF9SRVBMQUNFID0gbmV3IFJlZ0V4cChURVhUX1JFR0VYX1RFU1Quc291cmNlLCAnZycpO1xuXG5mdW5jdGlvbiBhdHRyVmFsdWVSZXBsYWNlcihjaGFyOiBzdHJpbmcpIHtcbiAgc3dpdGNoIChjaGFyLmNoYXJDb2RlQXQoMCkpIHtcbiAgICBjYXNlIENoYXIuTkJTUDpcbiAgICAgIHJldHVybiAnJm5ic3A7JztcbiAgICBjYXNlIENoYXIuUVVPVDpcbiAgICAgIHJldHVybiAnJnF1b3Q7JztcbiAgICBjYXNlIENoYXIuQU1QOlxuICAgICAgcmV0dXJuICcmYW1wOyc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBjaGFyO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRleHRSZXBsYWNlcihjaGFyOiBzdHJpbmcpIHtcbiAgc3dpdGNoIChjaGFyLmNoYXJDb2RlQXQoMCkpIHtcbiAgICBjYXNlIENoYXIuTkJTUDpcbiAgICAgIHJldHVybiAnJm5ic3A7JztcbiAgICBjYXNlIENoYXIuQU1QOlxuICAgICAgcmV0dXJuICcmYW1wOyc7XG4gICAgY2FzZSBDaGFyLkxUOlxuICAgICAgcmV0dXJuICcmbHQ7JztcbiAgICBjYXNlIENoYXIuR1Q6XG4gICAgICByZXR1cm4gJyZndDsnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY2hhcjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlQXR0clZhbHVlKGF0dHJWYWx1ZTogc3RyaW5nKSB7XG4gIGlmIChBVFRSX1ZBTFVFX1JFR0VYX1RFU1QudGVzdChhdHRyVmFsdWUpKSB7XG4gICAgcmV0dXJuIGF0dHJWYWx1ZS5yZXBsYWNlKEFUVFJfVkFMVUVfUkVHRVhfUkVQTEFDRSwgYXR0clZhbHVlUmVwbGFjZXIpO1xuICB9XG4gIHJldHVybiBhdHRyVmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVUZXh0KHRleHQ6IHN0cmluZykge1xuICBpZiAoVEVYVF9SRUdFWF9URVNULnRlc3QodGV4dCkpIHtcbiAgICByZXR1cm4gdGV4dC5yZXBsYWNlKFRFWFRfUkVHRVhfUkVQTEFDRSwgdGV4dFJlcGxhY2VyKTtcbiAgfVxuICByZXR1cm4gdGV4dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3ludGhldGljKG5vZGU6IEFTVC5Ob2RlKTogYm9vbGVhbiB7XG4gIGlmIChub2RlICYmIG5vZGUubG9jKSB7XG4gICAgcmV0dXJuIG5vZGUubG9jLnNvdXJjZSA9PT0gJyhzeW50aGV0aWMpJztcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRCeUxvYyhhOiBBU1QuTm9kZSwgYjogQVNULk5vZGUpOiAtMSB8IDAgfCAxIHtcbiAgLy8gYmUgY29uc2VydmF0aXZlIGFib3V0IHRoZSBsb2NhdGlvbiB3aGVyZSBhIG5ldyBub2RlIGlzIGluc2VydGVkXG4gIGlmIChpc1N5bnRoZXRpYyhhKSB8fCBpc1N5bnRoZXRpYyhiKSkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgaWYgKGEubG9jLnN0YXJ0LmxpbmUgPCBiLmxvYy5zdGFydC5saW5lKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgaWYgKGEubG9jLnN0YXJ0LmxpbmUgPT09IGIubG9jLnN0YXJ0LmxpbmUgJiYgYS5sb2Muc3RhcnQuY29sdW1uIDwgYi5sb2Muc3RhcnQuY29sdW1uKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgaWYgKGEubG9jLnN0YXJ0LmxpbmUgPT09IGIubG9jLnN0YXJ0LmxpbmUgJiYgYS5sb2Muc3RhcnQuY29sdW1uID09PSBiLmxvYy5zdGFydC5jb2x1bW4pIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiAxO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -208,2 +208,5 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

:
case "afterAttributeName"
/* afterAttributeName */
:
this.currentStartTag.comments.push(comment);

@@ -420,2 +423,2 @@ break;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyL2hhbmRsZWJhcnMtbm9kZS12aXNpdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFBLENBQUEsTUFBQSxhQUFBO0FBQ0EsU0FBQSxXQUFBLEVBQUEsU0FBQSxFQUFBLFlBQUEsUUFBQSxVQUFBO0FBR0EsU0FBQSxNQUFBLFFBQUEsV0FBQTtBQUNBLE9BQUEsV0FBQSxNQUFBLHdCQUFBO0FBS0EsV0FBTSxzQkFBTjtBQUFBOztBQUFBO0FBQUE7QUFBQTs7QUFBQTs7QUFBQSxTQVlFLE9BWkYsR0FZRSxpQkFBTyxPQUFQLEVBQTRCO0FBQzFCLFFBQUksSUFBSSxHQUFSLEVBQUE7QUFDQSxRQUFBLElBQUE7O0FBRUEsUUFBSSxLQUFKLFVBQUEsRUFBcUI7QUFDbkIsTUFBQSxJQUFJLEdBQUcsQ0FBQyxDQUFELFFBQUEsQ0FBQSxJQUFBLEVBQWlCLE9BQU8sQ0FBeEIsV0FBQSxFQUFzQyxPQUFPLENBQXBELEdBQU8sQ0FBUDtBQURGLEtBQUEsTUFFTztBQUNMLE1BQUEsSUFBSSxHQUFHLENBQUMsQ0FBRCxXQUFBLENBQUEsSUFBQSxFQUFvQixPQUFPLENBQTNCLFdBQUEsRUFBeUMsT0FBTyxDQUFoRCxPQUFBLEVBQTBELE9BQU8sQ0FBeEUsR0FBTyxDQUFQO0FBQ0Q7O0FBRUQsUUFBQSxDQUFBO0FBQUEsUUFDRSxDQUFDLEdBQUcsT0FBTyxDQUFQLElBQUEsQ0FETixNQUFBO0FBR0EsU0FBQSxZQUFBLENBQUEsSUFBQSxDQUFBLElBQUE7O0FBRUEsUUFBSSxDQUFDLEtBQUwsQ0FBQSxFQUFhO0FBQ1gsYUFBTyxLQUFBLFlBQUEsQ0FBUCxHQUFPLEVBQVA7QUFDRDs7QUFFRCxTQUFLLENBQUMsR0FBTixDQUFBLEVBQVksQ0FBQyxHQUFiLENBQUEsRUFBbUIsQ0FBbkIsRUFBQSxFQUF3QjtBQUN0QixXQUFBLFVBQUEsQ0FBZ0IsT0FBTyxD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eEYsRUFBQSxTQUFTLENBQVQsU0FBQSxHQUFBLElBQUE7QUFDQSxFQUFBLFNBQVMsQ0FBVCxLQUFBLENBQUEsSUFBQSxDQUFBLElBQUE7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiIGZyb20gJy4uL2J1aWxkZXJzJztcbmltcG9ydCB7IGFwcGVuZENoaWxkLCBpc0xpdGVyYWwsIHByaW50TGl0ZXJhbCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCAqIGFzIEFTVCBmcm9tICcuLi90eXBlcy9ub2Rlcyc7XG5pbXBvcnQgKiBhcyBIQlMgZnJvbSAnLi4vdHlwZXMvaGFuZGxlYmFycy1hc3QnO1xuaW1wb3J0IHsgUGFyc2VyLCBUYWcsIEF0dHJpYnV0ZSB9IGZyb20gJy4uL3BhcnNlcic7XG5pbXBvcnQgU3ludGF4RXJyb3IgZnJvbSAnLi4vZXJyb3JzL3N5bnRheC1lcnJvcic7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IFJlY2FzdCB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVG9rZW5pemVyU3RhdGUgfSBmcm9tICdzaW1wbGUtaHRtbC10b2tlbml6ZXInO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSGFuZGxlYmFyc05vZGVWaXNpdG9ycyBleHRlbmRzIFBhcnNlciB7XG4gIGFic3RyYWN0IGFwcGVuZFRvQ29tbWVudERhdGEoczogc3RyaW5nKTogdm9pZDtcbiAgYWJzdHJhY3QgYmVnaW5BdHRyaWJ1dGVWYWx1ZShxdW90ZWQ6IGJvb2xlYW4pOiB2b2lkO1xuICBhYnN0cmFjdCBmaW5pc2hBdHRyaWJ1dGVWYWx1ZSgpOiB2b2lkO1xuXG4gIHByaXZhdGUgZ2V0IGlzVG9wTGV2ZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIFByb2dyYW0ocHJvZ3JhbTogSEJTLlByb2dyYW0pOiBBU1QuQmxvY2s7XG4gIFByb2dyYW0ocHJvZ3JhbTogSEJTLlByb2dyYW0pOiBBU1QuVGVtcGxhdGU7XG4gIFByb2dyYW0ocHJvZ3JhbTogSEJTLlByb2dyYW0pOiBBU1QuVGVtcGxhdGUgfCBBU1QuQmxvY2s7XG4gIFByb2dyYW0ocHJvZ3JhbTogSEJTLlByb2dyYW0pOiBBU1QuQmxvY2sgfCBBU1QuVGVtcGxhdGUge1xuICAgIGxldCBib2R5OiBBU1QuU3RhdGVtZW50W10gPSBbXTtcbiAgICBsZXQgbm9kZTtcblxuICAgIGlmICh0aGlzLmlzVG9wTGV2ZWwpIHtcbiAgICAgIG5vZGUgPSBiLnRlbXBsYXRlKGJvZHksIHByb2dyYW0uYmxvY2tQYXJhbXMsIHByb2dyYW0ubG9jKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZSA9IGIuYmxvY2tJdHNlbGYoYm9keSwgcHJvZ3JhbS5ibG9ja1BhcmFtcywgcHJvZ3JhbS5jaGFpbmVkLCBwcm9ncmFtLmxvYyk7XG4gICAgfVxuXG4gICAgbGV0IGksXG4gICAgICBsID0gcHJvZ3JhbS5ib2R5Lmxlbmd0aDtcblxuICAgIHRoaXMuZWxlbWVudFN0YWNrLnB1c2gobm9kZSk7XG5cbiAgICBpZiAobCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpIGFzIEFTVC5CbG9jayB8IEFTVC5UZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0aGlzLmFjY2VwdE5vZGUocHJvZ3JhbS5ib2R5W2ldKTtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgdGhhdCB0aGF0IHRoZSBlbGVtZW50IHN0YWNrIGlzIGJhbGFuY2VkIHByb3Blcmx5LlxuICAgIGxldCBwb3BwZWROb2RlID0gdGhpcy5lbGVtZW50U3RhY2sucG9wKCk7XG4gICAgaWYgKHBvcHBlZE5vZGUgIT09IG5vZGUpIHtcbiAgICAgIGxldCBlbGVtZW50Tm9kZSA9IHBvcHBlZE5vZGUgYXMgQVNULkVsZW1lbnROb2RlO1xuXG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICdVbmNsb3NlZCBlbGVtZW50IGAnICsgZWxlbWVudE5vZGUudGFnICsgJ2AgKG9uIGxpbmUgJyArIGVsZW1lbnROb2RlLmxvYyEuc3RhcnQubGluZSArICcpLicsXG4gICAgICAgIGVsZW1lbnROb2RlLmxvY1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIEJsb2NrU3RhdGVtZW50KGJsb2NrOiBIQlMuQmxvY2tTdGF0ZW1lbnQpOiBBU1QuQmxvY2tTdGF0ZW1lbnQgfCB2b2lkIHtcbiAgICBpZiAodGhpcy50b2tlbml6ZXIuc3RhdGUgPT09IFRva2VuaXplclN0YXRlLmNvbW1lbnQpIHtcbiAgICAgIHRoaXMuYXBwZW5kVG9Db21tZW50RGF0YSh0aGlzLnNvdXJjZUZvck5vZGUoYmxvY2spKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSAhPT0gVG9rZW5pemVyU3RhdGUuZGF0YSAmJlxuICAgICAgdGhpcy50b2tlbml6ZXJbJ3N0YXRlJ10gIT09IFRva2VuaXplclN0YXRlLmJlZm9yZURhdGFcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgJ0EgYmxvY2sgbWF5IG9ubHkgYmUgdXNlZCBpbnNpZGUgYW4gSFRNTCBlbGVtZW50IG9yIGFub3RoZXIgYmxvY2suJyxcbiAgICAgICAgYmxvY2subG9jXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCB9ID0gYWNjZXB0Q2FsbE5vZGVzKHRoaXMsIGJsb2NrKTtcbiAgICBsZXQgcHJvZ3JhbSA9IHRoaXMuUHJvZ3JhbShibG9jay5wcm9ncmFtKTtcbiAgICBsZXQgaW52ZXJzZSA9IGJsb2NrLmludmVyc2UgPyB0aGlzLlByb2dyYW0oYmxvY2suaW52ZXJzZSkgOiBudWxsO1xuXG4gICAgbGV0IG5vZGUgPSBiLmJsb2NrKFxuICAgICAgcGF0aCxcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhhc2gsXG4gICAgICBwcm9ncmFtLFxuICAgICAgaW52ZXJzZSxcbiAgICAgIGJsb2NrLmxvYyxcbiAgICAgIGJsb2NrLm9wZW5TdHJpcCxcbiAgICAgIGJsb2NrLmludmVyc2VTdHJpcCxcbiAgICAgIGJsb2NrLmNsb3NlU3RyaXBcbiAgICApO1xuXG4gICAgbGV0IHBhcmVudFByb2dyYW0gPSB0aGlzLmN1cnJlbnRFbGVtZW50KCk7XG5cbiAgICBhcHBlbmRDaGlsZChwYXJlbnRQcm9ncmFtLCBub2RlKTtcbiAgfVxuXG4gIE11c3RhY2hlU3RhdGVtZW50KHJhd011c3RhY2hlOiBIQlMuTXVzdGFjaGVTdGF0ZW1lbnQpOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQgfCB2b2lkIHtcbiAgICBsZXQgeyB0b2tlbml6ZXIgfSA9IHRoaXM7XG5cbiAgICBpZiAodG9rZW5pemVyLnN0YXRlID09PSAnY29tbWVudCcpIHtcbiAgICAgIHRoaXMuYXBwZW5kVG9Db21tZW50RGF0YSh0aGlzLnNvdXJjZUZvck5vZGUocmF3TXVzdGFjaGUpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbXVzdGFjaGU6IEFTVC5NdXN0YWNoZVN0YXRlbWVudDtcbiAgICBsZXQgeyBlc2NhcGVkLCBsb2MsIHN0cmlwIH0gPSByYXdNdXN0YWNoZTtcblxuICAgIGlmIChpc0xpdGVyYWwocmF3TXVzdGFjaGUucGF0aCkpIHtcbiAgICAgIG11c3RhY2hlID0ge1xuICAgICAgICB0eXBlOiAnTXVzdGFjaGVTdGF0ZW1lbnQnLFxuICAgICAgICBwYXRoOiB0aGlzLmFjY2VwdE5vZGU8QVNULkxpdGVyYWw+KHJhd011c3RhY2hlLnBhdGgpLFxuICAgICAgICBwYXJhbXM6IFtdLFxuICAgICAgICBoYXNoOiBiLmhhc2goKSxcbiAgICAgICAgZXNjYXBlZCxcbiAgICAgICAgbG9jLFxuICAgICAgICBzdHJpcCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCB9ID0gYWNjZXB0Q2FsbE5vZGVzKFxuICAgICAgICB0aGlzLFxuICAgICAgICByYXdNdXN0YWNoZSBhcyBIQlMuTXVzdGFjaGVTdGF0ZW1lbnQgJiB7XG4gICAgICAgICAgcGF0aDogSEJTLlBhdGhFeHByZXNzaW9uO1xuICAgICAgICB9XG4gICAgICApO1xuICAgICAgbXVzdGFjaGUgPSBiLm11c3RhY2hlKHBhdGgsIHBhcmFtcywgaGFzaCwgIWVzY2FwZWQsIGxvYywgc3RyaXApO1xuICAgIH1cblxuICAgIHN3aXRjaCAodG9rZW5pemVyLnN0YXRlKSB7XG4gICAgICAvLyBUYWcgaGVscGVyc1xuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS50YWdPcGVuOlxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS50YWdOYW1lOlxuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICAgYENhbm5vdCB1c2UgbXVzdGFjaGVzIGluIGFuIGVsZW1lbnRzIHRhZ25hbWU6IFxcYCR7dGhpcy5zb3VyY2VGb3JOb2RlKFxuICAgICAgICAgICAgcmF3TXVzdGFjaGUsXG4gICAgICAgICAgICByYXdNdXN0YWNoZS5wYXRoXG4gICAgICAgICAgKX1cXGAgYXQgTCR7bG9jLnN0YXJ0LmxpbmV9OkMke2xvYy5zdGFydC5jb2x1bW59YCxcbiAgICAgICAgICBtdXN0YWNoZS5sb2NcbiAgICAgICAgKTtcblxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5iZWZvcmVBdHRyaWJ1dGVOYW1lOlxuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50U3RhcnRUYWcsIG11c3RhY2hlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmF0dHJpYnV0ZU5hbWU6XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmFmdGVyQXR0cmlidXRlTmFtZTpcbiAgICAgICAgdGhpcy5iZWdpbkF0dHJpYnV0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50U3RhcnRUYWcsIG11c3RhY2hlKTtcbiAgICAgICAgdG9rZW5pemVyLnRyYW5zaXRpb25UbyhUb2tlbml6ZXJTdGF0ZS5iZWZvcmVBdHRyaWJ1dGVOYW1lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWQ6XG4gICAgICAgIGFkZEVsZW1lbnRNb2RpZmllcih0aGlzLmN1cnJlbnRTdGFydFRhZywgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIudHJhbnNpdGlvblRvKFRva2VuaXplclN0YXRlLmJlZm9yZUF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gQXR0cmlidXRlIHZhbHVlc1xuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5iZWZvcmVBdHRyaWJ1dGVWYWx1ZTpcbiAgICAgICAgdGhpcy5iZWdpbkF0dHJpYnV0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgYXBwZW5kRHluYW1pY0F0dHJpYnV0ZVZhbHVlUGFydCh0aGlzLmN1cnJlbnRBdHRyaWJ1dGUhLCBtdXN0YWNoZSk7XG4gICAgICAgIHRva2VuaXplci50cmFuc2l0aW9uVG8oVG9rZW5pemVyU3RhdGUuYXR0cmlidXRlVmFsdWVVbnF1b3RlZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5hdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZDpcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWQ6XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQ6XG4gICAgICAgIGFwcGVuZER5bmFtaWNBdHRyaWJ1dGVWYWx1ZVBhcnQodGhpcy5jdXJyZW50QXR0cmlidXRlISwgbXVzdGFjaGUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gVE9ETzogT25seSBhcHBlbmQgY2hpbGQgd2hlbiB0aGUgdG9rZW5pemVyIHN0YXRlIG1ha2VzXG4gICAgICAvLyBzZW5zZSB0byBkbyBzbywgb3RoZXJ3aXNlIHRocm93IGFuIGVycm9yLlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCBtdXN0YWNoZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG11c3RhY2hlO1xuICB9XG5cbiAgQ29udGVudFN0YXRlbWVudChjb250ZW50OiBIQlMuQ29udGVudFN0YXRlbWVudCk6IHZvaWQge1xuICAgIHVwZGF0ZVRva2VuaXplckxvY2F0aW9uKHRoaXMudG9rZW5pemVyLCBjb250ZW50KTtcblxuICAgIHRoaXMudG9rZW5pemVyLnRva2VuaXplUGFydChjb250ZW50LnZhbHVlKTtcbiAgICB0aGlzLnRva2VuaXplci5mbHVzaERhdGEoKTtcbiAgfVxuXG4gIENvbW1lbnRTdGF0ZW1lbnQocmF3Q29tbWVudDogSEJTLkNvbW1lbnRTdGF0ZW1lbnQpOiBPcHRpb248QVNULk11c3RhY2hlQ29tbWVudFN0YXRlbWVudD4ge1xuICAgIGxldCB7IHRva2VuaXplciB9ID0gdGhpcztcblxuICAgIGlmICh0b2tlbml6ZXIuc3RhdGUgPT09IFRva2VuaXplclN0YXRlLmNvbW1lbnQpIHtcbiAgICAgIHRoaXMuYXBwZW5kVG9Db21tZW50RGF0YSh0aGlzLnNvdXJjZUZvck5vZGUocmF3Q29tbWVudCkpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IHsgdmFsdWUsIGxvYyB9ID0gcmF3Q29tbWVudDtcbiAgICBsZXQgY29tbWVudCA9IGIubXVzdGFjaGVDb21tZW50KHZhbHVlLCBsb2MpO1xuXG4gICAgc3dpdGNoICh0b2tlbml6ZXIuc3RhdGUpIHtcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYmVmb3JlQXR0cmlidXRlTmFtZTpcbiAgICAgICAgdGhpcy5jdXJyZW50U3RhcnRUYWcuY29tbWVudHMucHVzaChjb21tZW50KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYmVmb3JlRGF0YTpcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuZGF0YTpcbiAgICAgICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCBjb21tZW50KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICBgVXNpbmcgYSBIYW5kbGViYXJzIGNvbW1lbnQgd2hlbiBpbiB0aGUgXFxgJHt0b2tlbml6ZXJbJ3N0YXRlJ119XFxgIHN0YXRlIGlzIG5vdCBzdXBwb3J0ZWQ6IFwiJHtjb21tZW50LnZhbHVlfVwiIG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX06JHtsb2Muc3RhcnQuY29sdW1ufWAsXG4gICAgICAgICAgcmF3Q29tbWVudC5sb2NcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tbWVudDtcbiAgfVxuXG4gIFBhcnRpYWxTdGF0ZW1lbnQocGFydGlhbDogSEJTLlBhcnRpYWxTdGF0ZW1lbnQpOiBuZXZlciB7XG4gICAgbGV0IHsgbG9jIH0gPSBwYXJ0aWFsO1xuXG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgYEhhbmRsZWJhcnMgcGFydGlhbHMgYXJlIG5vdCBzdXBwb3J0ZWQ6IFwiJHt0aGlzLnNvdXJjZUZvck5vZGUocGFydGlhbCwgcGFydGlhbC5uYW1lKX1cIiBhdCBMJHtcbiAgICAgICAgbG9jLnN0YXJ0LmxpbmVcbiAgICAgIH06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgcGFydGlhbC5sb2NcbiAgICApO1xuICB9XG5cbiAgUGFydGlhbEJsb2NrU3RhdGVtZW50KHBhcnRpYWxCbG9jazogSEJTLlBhcnRpYWxCbG9ja1N0YXRlbWVudCk6IG5ldmVyIHtcbiAgICBsZXQgeyBsb2MgfSA9IHBhcnRpYWxCbG9jaztcblxuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgIGBIYW5kbGViYXJzIHBhcnRpYWwgYmxvY2tzIGFyZSBub3Qgc3VwcG9ydGVkOiBcIiR7dGhpcy5zb3VyY2VGb3JOb2RlKFxuICAgICAgICBwYXJ0aWFsQmxvY2ssXG4gICAgICAgIHBhcnRpYWxCbG9jay5uYW1lXG4gICAgICApfVwiIGF0IEwke2xvYy5zdGFydC5saW5lfTpDJHtsb2Muc3RhcnQuY29sdW1ufWAsXG4gICAgICBwYXJ0aWFsQmxvY2subG9jXG4gICAgKTtcbiAgfVxuXG4gIERlY29yYXRvcihkZWNvcmF0b3I6IEhCUy5EZWNvcmF0b3IpOiBuZXZlciB7XG4gICAgbGV0IHsgbG9jIH0gPSBkZWNvcmF0b3I7XG5cbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgSGFuZGxlYmFycyBkZWNvcmF0b3JzIGFyZSBub3Qgc3VwcG9ydGVkOiBcIiR7dGhpcy5zb3VyY2VGb3JOb2RlKFxuICAgICAgICBkZWNvcmF0b3IsXG4gICAgICAgIGRlY29yYXRvci5wYXRoXG4gICAgICApfVwiIGF0IEwke2xvYy5zdGFydC5saW5lfTpDJHtsb2Muc3RhcnQuY29sdW1ufWAsXG4gICAgICBkZWNvcmF0b3IubG9jXG4gICAgKTtcbiAgfVxuXG4gIERlY29yYXRvckJsb2NrKGRlY29yYXRvckJsb2NrOiBIQlMuRGVjb3JhdG9yQmxvY2spOiBuZXZlciB7XG4gICAgbGV0IHsgbG9jIH0gPSBkZWNvcmF0b3JCbG9jaztcblxuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgIGBIYW5kbGViYXJzIGRlY29yYXRvciBibG9ja3MgYXJlIG5vdCBzdXBwb3J0ZWQ6IFwiJHt0aGlzLnNvdXJjZUZvck5vZGUoXG4gICAgICAgIGRlY29yYXRvckJsb2NrLFxuICAgICAgICBkZWNvcmF0b3JCbG9jay5wYXRoXG4gICAgICApfVwiIGF0IEwke2xvYy5zdGFydC5saW5lfTpDJHtsb2Muc3RhcnQuY29sdW1ufWAsXG4gICAgICBkZWNvcmF0b3JCbG9jay5sb2NcbiAgICApO1xuICB9XG5cbiAgU3ViRXhwcmVzc2lvbihzZXhwcjogSEJTLlN1YkV4cHJlc3Npb24pOiBBU1QuU3ViRXhwcmVzc2lvbiB7XG4gICAgbGV0IHsgcGF0aCwgcGFyYW1zLCBoYXNoIH0gPSBhY2NlcHRDYWxsTm9kZXModGhpcywgc2V4cHIpO1xuICAgIHJldHVybiBiLnNleHByKHBhdGgsIHBhcmFtcywgaGFzaCwgc2V4cHIubG9jKTtcbiAgfVxuXG4gIFBhdGhFeHByZXNzaW9uKHBhdGg6IEhCUy5QYXRoRXhwcmVzc2lvbik6IEFTVC5QYXRoRXhwcmVzc2lvbiB7XG4gICAgbGV0IHsgb3JpZ2luYWwsIGxvYyB9ID0gcGF0aDtcbiAgICBsZXQgcGFydHM6IHN0cmluZ1tdO1xuXG4gICAgaWYgKG9yaWdpbmFsLmluZGV4T2YoJy8nKSAhPT0gLTEpIHtcbiAgICAgIGlmIChvcmlnaW5hbC5zbGljZSgwLCAyKSA9PT0gJy4vJykge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICAgYFVzaW5nIFwiLi9cIiBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXIgYW5kIHVubmVjZXNzYXJ5OiBcIiR7cGF0aC5vcmlnaW5hbH1cIiBvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9LmAsXG4gICAgICAgICAgcGF0aC5sb2NcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcmlnaW5hbC5zbGljZSgwLCAzKSA9PT0gJy4uLycpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAgIGBDaGFuZ2luZyBjb250ZXh0IHVzaW5nIFwiLi4vXCIgaXMgbm90IHN1cHBvcnRlZCBpbiBHbGltbWVyOiBcIiR7cGF0aC5vcmlnaW5hbH1cIiBvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9LmAsXG4gICAgICAgICAgcGF0aC5sb2NcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcmlnaW5hbC5pbmRleE9mKCcuJykgIT09IC0xKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICBgTWl4aW5nICcuJyBhbmQgJy8nIGluIHBhdGhzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gR2xpbW1lcjsgdXNlIG9ubHkgJy4nIHRvIHNlcGFyYXRlIHByb3BlcnR5IHBhdGhzOiBcIiR7cGF0aC5vcmlnaW5hbH1cIiBvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9LmAsXG4gICAgICAgICAgcGF0aC5sb2NcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHBhcnRzID0gW3BhdGgucGFydHMuam9pbignLycpXTtcbiAgICB9IGVsc2UgaWYgKG9yaWdpbmFsID09PSAnLicpIHtcbiAgICAgIGxldCBsb2NhdGlvbkluZm8gPSBgTCR7bG9jLnN0YXJ0LmxpbmV9OkMke2xvYy5zdGFydC5jb2x1bW59YDtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgYCcuJyBpcyBub3QgYSBzdXBwb3J0ZWQgcGF0aCBpbiBHbGltbWVyOyBjaGVjayBmb3IgYSBwYXRoIHdpdGggYSB0cmFpbGluZyAnLicgYXQgJHtsb2NhdGlvbkluZm99LmAsXG4gICAgICAgIHBhdGgubG9jXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0cyA9IHBhdGgucGFydHM7XG4gICAgfVxuXG4gICAgbGV0IHRoaXNIZWFkID0gZmFsc2U7XG5cbiAgICAvLyBUaGlzIGlzIHRvIGZpeCBhIGJ1ZyBpbiB0aGUgSGFuZGxlYmFycyBBU1Qgd2hlcmUgdGhlIHBhdGggZXhwcmVzc2lvbnMgaW5cbiAgICAvLyBge3t0aGlzLmZvb319YCAoYW5kIHNpbWlsYXJseSBge3tmb28tYmFyIHRoaXMuZm9vIG5hbWVkPXRoaXMuZm9vfX1gIGV0YylcbiAgICAvLyBhcmUgc2ltcGx5IHR1cm5lZCBpbnRvIGB7e2Zvb319YC4gVGhlIGZpeCBpcyB0byBwdXNoIGl0IGJhY2sgb250byB0aGVcbiAgICAvLyBwYXJ0cyBhcnJheSBhbmQgbGV0IHRoZSBydW50aW1lIHNlZSB0aGUgZGlmZmVyZW5jZS4gSG93ZXZlciwgd2UgY2Fubm90XG4gICAgLy8gc2ltcGx5IHVzZSB0aGUgc3RyaW5nIGB0aGlzYCBhcyBpdCBtZWFucyBsaXRlcmFsbHkgdGhlIHByb3BlcnR5IGNhbGxlZFxuICAgIC8vIFwidGhpc1wiIGluIHRoZSBjdXJyZW50IGNvbnRleHQgKGl0IGNhbiBiZSBleHByZXNzZWQgaW4gdGhlIHN5bnRheCBhc1xuICAgIC8vIGB7e1t0aGlzXX19YCwgd2hlcmUgdGhlIHNxdWFyZSBicmFja2V0IGFyZSBnZW5lcmFsbHkgZm9yIHRoaXMga2luZCBvZlxuICAgIC8vIGVzY2FwaW5nIOKAkyBzdWNoIGFzIGB7e2Zvby5bXCJiYXIuYmF6XCJdfX1gIHdvdWxkIG1lYW4gbG9va3VwIGEgcHJvcGVydHlcbiAgICAvLyBuYW1lZCBsaXRlcmFsbHkgXCJiYXIuYmF6XCIgb24gYHRoaXMuZm9vYCkuIEJ5IGNvbnZlbnRpb24sIHdlIHVzZSBgbnVsbGBcbiAgICAvLyBmb3IgdGhpcyBwdXJwb3NlLlxuICAgIGlmIChvcmlnaW5hbC5tYXRjaCgvXnRoaXMoXFwuLispPyQvKSkge1xuICAgICAgdGhpc0hlYWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLFxuICAgICAgb3JpZ2luYWw6IHBhdGgub3JpZ2luYWwsXG4gICAgICB0aGlzOiB0aGlzSGVhZCxcbiAgICAgIHBhcnRzLFxuICAgICAgZGF0YTogcGF0aC5kYXRhLFxuICAgICAgbG9jOiBwYXRoLmxvYyxcbiAgICB9O1xuICB9XG5cbiAgSGFzaChoYXNoOiBIQlMuSGFzaCk6IEFTVC5IYXNoIHtcbiAgICBsZXQgcGFpcnM6IEFTVC5IYXNoUGFpcltdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhhc2gucGFpcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBwYWlyID0gaGFzaC5wYWlyc1tpXTtcbiAgICAgIHBhaXJzLnB1c2goYi5wYWlyKHBhaXIua2V5LCB0aGlzLmFjY2VwdE5vZGUocGFpci52YWx1ZSksIHBhaXIubG9jKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGIuaGFzaChwYWlycywgaGFzaC5sb2MpO1xuICB9XG5cbiAgU3RyaW5nTGl0ZXJhbChzdHJpbmc6IEhCUy5TdHJpbmdMaXRlcmFsKTogQVNULlN0cmluZ0xpdGVyYWwge1xuICAgIHJldHVybiBiLmxpdGVyYWwoJ1N0cmluZ0xpdGVyYWwnLCBzdHJpbmcudmFsdWUsIHN0cmluZy5sb2MpO1xuICB9XG5cbiAgQm9vbGVhbkxpdGVyYWwoYm9vbGVhbjogSEJTLkJvb2xlYW5MaXRlcmFsKTogQVNULkJvb2xlYW5MaXRlcmFsIHtcbiAgICByZXR1cm4gYi5saXRlcmFsKCdCb29sZWFuTGl0ZXJhbCcsIGJvb2xlYW4udmFsdWUsIGJvb2xlYW4ubG9jKTtcbiAgfVxuXG4gIE51bWJlckxpdGVyYWwobnVtYmVyOiBIQlMuTnVtYmVyTGl0ZXJhbCk6IEFTVC5OdW1iZXJMaXRlcmFsIHtcbiAgICByZXR1cm4gYi5saXRlcmFsKCdOdW1iZXJMaXRlcmFsJywgbnVtYmVyLnZhbHVlLCBudW1iZXIubG9jKTtcbiAgfVxuXG4gIFVuZGVmaW5lZExpdGVyYWwodW5kZWY6IEhCUy5VbmRlZmluZWRMaXRlcmFsKTogQVNULlVuZGVmaW5lZExpdGVyYWwge1xuICAgIHJldHVybiBiLmxpdGVyYWwoJ1VuZGVmaW5lZExpdGVyYWwnLCB1bmRlZmluZWQsIHVuZGVmLmxvYyk7XG4gIH1cblxuICBOdWxsTGl0ZXJhbChudWw6IEhCUy5OdWxsTGl0ZXJhbCk6IEFTVC5OdWxsTGl0ZXJhbCB7XG4gICAgcmV0dXJuIGIubGl0ZXJhbCgnTnVsbExpdGVyYWwnLCBudWxsLCBudWwubG9jKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVSaWdodFN0cmlwcGVkT2Zmc2V0cyhvcmlnaW5hbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAvLyBpZiBpdCBpcyBlbXB0eSwganVzdCByZXR1cm4gdGhlIGNvdW50IG9mIG5ld2xpbmVzXG4gICAgLy8gaW4gb3JpZ2luYWxcbiAgICByZXR1cm4ge1xuICAgICAgbGluZXM6IG9yaWdpbmFsLnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxLFxuICAgICAgY29sdW1uczogMCxcbiAgICB9O1xuICB9XG5cbiAgLy8gb3RoZXJ3aXNlLCByZXR1cm4gdGhlIG51bWJlciBvZiBuZXdsaW5lcyBwcmlvciB0b1xuICAvLyBgdmFsdWVgXG4gIGxldCBkaWZmZXJlbmNlID0gb3JpZ2luYWwuc3BsaXQodmFsdWUpWzBdO1xuICBsZXQgbGluZXMgPSBkaWZmZXJlbmNlLnNwbGl0KC9cXG4vKTtcbiAgbGV0IGxpbmVDb3VudCA9IGxpbmVzLmxlbmd0aCAtIDE7XG5cbiAgcmV0dXJuIHtcbiAgICBsaW5lczogbGluZUNvdW50LFxuICAgIGNvbHVtbnM6IGxpbmVzW2xpbmVDb3VudF0ubGVuZ3RoLFxuICB9O1xufVxuXG5mdW5jdGlvbiB1cGRhdGVUb2tlbml6ZXJMb2NhdGlvbih0b2tlbml6ZXI6IFBhcnNlclsndG9rZW5pemVyJ10sIGNvbnRlbnQ6IEhCUy5Db250ZW50U3RhdGVtZW50KSB7XG4gIGxldCBsaW5lID0gY29udGVudC5sb2Muc3RhcnQubGluZTtcbiAgbGV0IGNvbHVtbiA9IGNvbnRlbnQubG9jLnN0YXJ0LmNvbHVtbjtcblxuICBsZXQgb2Zmc2V0cyA9IGNhbGN1bGF0ZVJpZ2h0U3RyaXBwZWRPZmZzZXRzKFxuICAgIGNvbnRlbnQub3JpZ2luYWwgYXMgUmVjYXN0PEhCUy5TdHJpcEZsYWdzLCBzdHJpbmc+LFxuICAgIGNvbnRlbnQudmFsdWVcbiAgKTtcblxuICBsaW5lID0gbGluZSArIG9mZnNldHMubGluZXM7XG4gIGlmIChvZmZzZXRzLmxpbmVzKSB7XG4gICAgY29sdW1uID0gb2Zmc2V0cy5jb2x1bW5zO1xuICB9IGVsc2Uge1xuICAgIGNvbHVtbiA9IGNvbHVtbiArIG9mZnNldHMuY29sdW1ucztcbiAgfVxuXG4gIHRva2VuaXplci5saW5lID0gbGluZTtcbiAgdG9rZW5pemVyLmNvbHVtbiA9IGNvbHVtbjtcbn1cblxuZnVuY3Rpb24gYWNjZXB0Q2FsbE5vZGVzKFxuICBjb21waWxlcjogSGFuZGxlYmFyc05vZGVWaXNpdG9ycyxcbiAgbm9kZToge1xuICAgIHBhdGg6IEhCUy5QYXRoRXhwcmVzc2lvbjtcbiAgICBwYXJhbXM6IEhCUy5FeHByZXNzaW9uW107XG4gICAgaGFzaDogSEJTLkhhc2g7XG4gIH1cbik6IHsgcGF0aDogQVNULlBhdGhFeHByZXNzaW9uOyBwYXJhbXM6IEFTVC5FeHByZXNzaW9uW107IGhhc2g6IEFTVC5IYXNoIH0ge1xuICBsZXQgcGF0aCA9IGNvbXBpbGVyLlBhdGhFeHByZXNzaW9uKG5vZGUucGF0aCk7XG5cbiAgbGV0IHBhcmFtcyA9IG5vZGUucGFyYW1zID8gbm9kZS5wYXJhbXMubWFwKChlKSA9PiBjb21waWxlci5hY2NlcHROb2RlPEFTVC5FeHByZXNzaW9uPihlKSkgOiBbXTtcbiAgbGV0IGhhc2ggPSBub2RlLmhhc2ggPyBjb21waWxlci5IYXNoKG5vZGUuaGFzaCkgOiBiLmhhc2goKTtcblxuICByZXR1cm4geyBwYXRoLCBwYXJhbXMsIGhhc2ggfTtcbn1cblxuZnVuY3Rpb24gYWRkRWxlbWVudE1vZGlmaWVyKGVsZW1lbnQ6IFRhZzwnU3RhcnRUYWcnPiwgbXVzdGFjaGU6IEFTVC5NdXN0YWNoZVN0YXRlbWVudCkge1xuICBsZXQgeyBwYXRoLCBwYXJhbXMsIGhhc2gsIGxvYyB9ID0gbXVzdGFjaGU7XG5cbiAgaWYgKGlzTGl0ZXJhbChwYXRoKSkge1xuICAgIGxldCBtb2RpZmllciA9IGB7eyR7cHJpbnRMaXRlcmFsKHBhdGgpfX19YDtcbiAgICBsZXQgdGFnID0gYDwke2VsZW1lbnQubmFtZX0gLi4uICR7bW9kaWZpZXJ9IC4uLmA7XG5cbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgSW4gJHt0YWd9LCAke21vZGlmaWVyfSBpcyBub3QgYSB2YWxpZCBtb2RpZmllcjogXCIke3BhdGgub3JpZ2luYWx9XCIgb24gbGluZSAke1xuICAgICAgICBsb2MgJiYgbG9jLnN0YXJ0LmxpbmVcbiAgICAgIH0uYCxcbiAgICAgIG11c3RhY2hlLmxvY1xuICAgICk7XG4gIH1cblxuICBsZXQgbW9kaWZpZXIgPSBiLmVsZW1lbnRNb2RpZmllcihwYXRoLCBwYXJhbXMsIGhhc2gsIGxvYyk7XG4gIGVsZW1lbnQubW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xufVxuXG5mdW5jdGlvbiBhcHBlbmREeW5hbWljQXR0cmlidXRlVmFsdWVQYXJ0KGF0dHJpYnV0ZTogQXR0cmlidXRlLCBwYXJ0OiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgYXR0cmlidXRlLmlzRHluYW1pYyA9IHRydWU7XG4gIGF0dHJpYnV0ZS5wYXJ0cy5wdXNoKHBhcnQpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyL2hhbmRsZWJhcnMtbm9kZS12aXNpdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFBLENBQUEsTUFBQSxhQUFBO0FBQ0EsU0FBQSxXQUFBLEVBQUEsU0FBQSxFQUFBLFlBQUEsUUFBQSxVQUFBO0FBR0EsU0FBQSxNQUFBLFFBQUEsV0FBQTtBQUNBLE9BQUEsV0FBQSxNQUFBLHdCQUFBO0FBS0EsV0FBTSxzQkFBTjtBQUFBOztBQUFBO0FBQUE7QUFBQTs7QUFBQTs7QUFBQSxTQVlFLE9BWkYsR0FZRSxpQkFBTyxPQUFQLEVBQTRCO0FBQzFCLFFBQUksSUFBSSxHQUFSLEVBQUE7QUFDQSxRQUFBLElBQUE7O0FBRUEsUUFBSSxLQUFKLFVBQUEsRUFBcUI7QUFDbkIsTUFBQSxJQUFJLEdBQUcsQ0FBQyxDQUFELFFBQUEsQ0FBQSxJQUFBLEVBQWlCLE9BQU8sQ0FBeEIsV0FBQSxFQUFzQyxPQUFPLENBQXBELEdBQU8sQ0FBUDtBQURGLEtBQUEsTUFFTztBQUNMLE1BQUEsSUFBSSxHQUFHLENBQUMsQ0FBRCxXQUFBLENBQUEsSUFBQSxFQUFvQixPQUFPLENBQTNCLFdBQUEsRUFBeUMsT0FBTyxDQUFoRCxPQUFBLEVBQTBELE9BQU8sQ0FBeEUsR0FBTyxDQUFQO0FBQ0Q7O0FBRUQsUUFBQSxDQUFBO0FBQUEsUUFDRSxDQUFDLEdBQUcsT0FBTyxDQUFQLElBQUEsQ0FETixNQUFBO0FBR0EsU0FBQSxZQUFBLENBQUEsSUFBQSxDQUFBLElBQUE7O0FBRUEsUUFBSSxDQUFDLEtBQUwsQ0FBQSxFQUFhO0FBQ1gsYUFBTyxLQUFBLFlBQUEsQ0FBUCxHQUFPLEVBQVA7QUFDRDs7QUFFRCxTQUFLLENBQUMsR0FBTixDQUFBLEVBQVksQ0FBQyxHQUFiLENBQUEsRUFBbUIsQ0FBbkIsRUFBQSxFQUF3QjtBQUN0QixXQUFBLFVBQUEsQ0FBZ0IsT0FBTyxDQUFQLElBQUEsQ0FBaEIsQ0FBZ0IsQ0FBaEI7QUFwQndCLEtBQUEsQ0F1QjFCOzs7QUFDQSxRQUFJLFVBQVUsR0FBRyxLQUFBLFlBQUEsQ0FBakIsR0FBaUIsRUFBakI7O0FBQ0EsUUFBSSxVQUFVLEtBQWQsSUFBQSxFQUF5QjtBQUN2QixVQUFJLFdBQVcsR0FBZixVQUFBO0FBRUEsWUFBTSxJQUFBLFdBQUEsQ0FDSix1QkFBdUIsV0FBVyxDQUFsQyxHQUFBLEdBQUEsYUFBQSxHQUF5RCxXQUFXLENBQVgsR0FBQSxDQUFBLEtBQUEsQ0FBekQsSUFBQSxHQURJLElBQUEsRUFFSixXQUFXLENBRmIsR0FBTSxDQUFOO0FBSUQ7O0FBRUQsV0FBQSxJQUFBO0FBQ0QsR0EvQ0g7O0FBQUEsU0FpREUsY0FqREYsR0FpREUsd0JBQWMsS0FBZCxFQUF3QztBQUN0QyxRQUFJLEtBQUEsU0FBQSxDQUFBLEtBQUEsS0FBb0I7QUFBQTtBQUF4QixNQUFxRDtBQUNuRCxhQUFBLG1CQUFBLENBQXlCLEtBQUEsYUFBQSxDQUF6QixLQUF5QixDQUF6QjtBQUNBO0FBQ0Q7O0FBRUQsUUFDRSxLQUFBLFNBQUEsQ0FBQSxLQUFBLEtBQW9CO0FBQUE7QUFBcEIsT0FDQSxLQUFBLFNBQUEsQ0FBQSxPQUFBLE1BQXVCO0FBQUE7QUFGekIsTUFHRTtBQUNBLGNBQU0sSUFBQSxXQUFBLENBQUEsbUVBQUEsRUFFSixLQUFLLENBRlAsR0FBTSxDQUFOO0FBSUQ7O0FBZHFDLDJCQWdCVCxlQUFlLENBQUEsSUFBQSxFQUE1QyxLQUE0QyxDQWhCTjtBQUFBLFFBZ0JsQyxJQWhCa0Msb0JBZ0JsQyxJQWhCa0M7QUFBQSxRQWdCbEMsTUFoQmtDLG9CQWdCbEMsTUFoQmtDO0FBQUEsUUFnQmxCLElBaEJrQixvQkFnQmxCLElBaEJrQjs7QUFpQnRDLFFBQUksT0FBTyxHQUFHLEtBQUEsT0FBQSxDQUFhLEtBQUssQ0FBaEMsT0FBYyxDQUFkO0FBQ0EsUUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFMLE9BQUEsR0FBZ0IsS0FBQSxPQUFBLENBQWEsS0FBSyxDQUFsQyxPQUFnQixDQUFoQixHQUFkLElBQUE7QUFFQSxRQUFJLElBQUksR0FBRyxDQUFDLENBQUQsS0FBQSxDQUFBLElBQUEsRUFBQSxNQUFBLEVBQUEsSUFBQSxFQUFBLE9BQUEsRUFBQSxPQUFBLEVBTVQsS0FBSyxDQU5JLEdBQUEsRUFPVCxLQUFLLENBUEksU0FBQSxFQVFULEtBQUssQ0FSSSxZQUFBLEVBU1QsS0FBSyxDQVRQLFVBQVcsQ0FBWDtBQVlBLFFBQUksYUFBYSxHQUFHLEtBQXBCLGNBQW9CLEVBQXBCO0FBRUEsSUFBQSxXQUFXLENBQUEsYUFBQSxFQUFYLElBQVcsQ0FBWDtBQUNELEdBcEZIOztBQUFBLFNBc0ZFLGlCQXRGRixHQXNGRSwyQkFBaUIsV0FBakIsRUFBb0Q7QUFBQSxRQUM1QyxTQUQ0QyxHQUNsRCxJQURrRCxDQUM1QyxTQUQ0Qzs7QUFHbEQsUUFBSSxTQUFTLENBQVQsS0FBQSxLQUFKLFNBQUEsRUFBbUM7QUFDakMsV0FBQSxtQkFBQSxDQUF5QixLQUFBLGFBQUEsQ0FBekIsV0FBeUIsQ0FBekI7QUFDQTtBQUNEOztBQUVELFFBQUEsUUFBQTtBQVJrRCxRQVM5QyxPQVQ4QyxHQVNsRCxXQVRrRCxDQVM5QyxPQVQ4QztBQUFBLFFBUzlDLEdBVDhDLEdBU2xELFdBVGtELENBUzlDLEdBVDhDO0FBQUEsUUFTOUIsS0FUOEIsR0FTbEQsV0FUa0QsQ0FTOUIsS0FUOEI7O0FBV2xELFFBQUksU0FBUyxDQUFDLFdBQVcsQ0FBekIsSUFBYSxDQUFiLEVBQWlDO0FBQy9CLE1BQUEsUUFBUSxHQUFHO0FBQ1QsUUFBQSxJQUFJLEVBREssbUJBQUE7QUFFVCxRQUFBLElBQUksRUFBRSxLQUFBLFVBQUEsQ0FBNkIsV0FBVyxDQUZyQyxJQUVILENBRkc7QUFHVCxRQUFBLE1BQU0sRUFIRyxFQUFBO0FBSVQsUUFBQSxJQUFJLEVBQUUsQ0FBQyxDQUpFLElBSUgsRUFKRztBQUtULFFBQUEsT0FMUyxFQUtULE9BTFM7QUFNVCxRQUFBLEdBTlMsRUFNVCxHQU5TO0FBT1QsUUFBQSxLQUFBLEVBQUE7QUFQUyxPQUFYO0FBREYsS0FBQSxNQVVPO0FBQUEsOEJBQ3dCLGVBQWUsQ0FBQSxJQUFBLEVBQTVDLFdBQTRDLENBRHZDO0FBQUEsVUFDRCxJQURDLHFCQUNELElBREM7QUFBQSxVQUNELE1BREMscUJBQ0QsTUFEQztBQUFBLFVBQ2UsSUFEZixxQkFDZSxJQURmOztBQU9MLE1BQUEsUUFBUSxHQUFHLENBQUMsQ0FBRCxRQUFBLENBQUEsSUFBQSxFQUFBLE1BQUEsRUFBQSxJQUFBLEVBQStCLENBQS9CLE9BQUEsRUFBQSxHQUFBLEVBQVgsS0FBVyxDQUFYO0FBQ0Q7O0FBRUQsWUFBUSxTQUFTLENBQWpCLEtBQUE7QUFDRTtBQUNBLFdBQUE7QUFBQTtBQUFBO0FBQ0EsV0FBQTtBQUFBO0FBQUE7QUFDRSxjQUFNLElBQUEsV0FBQSxvREFDOEMsS0FBQSxhQUFBLENBQUEsV0FBQSxFQUVoRCxXQUFXLENBRnFDLElBQUEsQ0FEOUMsY0FJTyxHQUFHLENBQUgsS0FBQSxDQUFVLElBSmpCLFVBSTBCLEdBQUcsQ0FBSCxLQUFBLENBSjFCLE1BQUEsRUFLSixRQUFRLENBTFYsR0FBTSxDQUFOOztBQVFGLFdBQUE7QUFBQTtBQUFBO0FBQ0UsUUFBQSxrQkFBa0IsQ0FBQyxLQUFELGVBQUEsRUFBbEIsUUFBa0IsQ0FBbEI7QUFDQTs7QUFDRixXQUFBO0FBQUE7QUFBQTtBQUNBLFdBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxtQkFBQSxDQUFBLEtBQUE7QUFDQSxhQUFBLG9CQUFBO0FBQ0EsUUFBQSxrQkFBa0IsQ0FBQyxLQUFELGVBQUEsRUFBbEIsUUFBa0IsQ0FBbEI7QUFDQSxRQUFBLFNBQVMsQ0FBVCxZQUFBLENBQXNCO0FBQUE7QUFBdEI7QUFDQTs7QUFDRixXQUFBO0FBQUE7QUFBQTtBQUNFLFFBQUEsa0JBQWtCLENBQUMsS0FBRCxlQUFBLEVBQWxCLFFBQWtCLENBQWxCO0FBQ0EsUUFBQSxTQUFTLENBQVQsWUFBQSxDQUFzQjtBQUFBO0FBQXRCO0FBQ0E7QUFFRjs7QUFDQSxXQUFBO0FBQUE7QUFBQTtBQUNFLGFBQUEsbUJBQUEsQ0FBQSxLQUFBO0FBQ0EsUUFBQSwrQkFBK0IsQ0FBQyxLQUFELGdCQUFBLEVBQS9CLFFBQStCLENBQS9CO0FBQ0EsUUFBQSxTQUFTLENBQVQsWUFBQSxDQUFzQjtBQUFBO0FBQXRCO0FBQ0E7O0FBQ0YsV0FBQTtBQUFBO0FBQUE7QUFDQSxXQUFBO0FBQUE7QUFBQTtBQUNBLFdBQUE7QUFBQTtBQUFBO0FBQ0UsUUFBQSwrQkFBK0IsQ0FBQyxLQUFELGdCQUFBLEVBQS9CLFFBQStCLENBQS9CO0FBQ0E7QUFFRjtBQUNBOztBQUNBO0FBQ0UsUUFBQSxXQUFXLENBQUMsS0FBRCxjQUFDLEVBQUQsRUFBWCxRQUFXLENBQVg7QUExQ0o7O0FBNkNBLFdBQUEsUUFBQTtBQUNELEdBbktIOztBQUFBLFNBcUtFLGdCQXJLRixHQXFLRSwwQkFBZ0IsT0FBaEIsRUFBOEM7QUFDNUMsSUFBQSx1QkFBdUIsQ0FBQyxLQUFELFNBQUEsRUFBdkIsT0FBdUIsQ0FBdkI7QUFFQSxTQUFBLFNBQUEsQ0FBQSxZQUFBLENBQTRCLE9BQU8sQ0FBbkMsS0FBQTtBQUNBLFNBQUEsU0FBQSxDQUFBLFNBQUE7QUFDRCxHQTFLSDs7QUFBQSxTQTRLRSxnQkE1S0YsR0E0S0UsMEJBQWdCLFVBQWhCLEVBQWlEO0FBQUEsUUFDekMsU0FEeUMsR0FDL0MsSUFEK0MsQ0FDekMsU0FEeUM7O0FBRy9DLFFBQUksU0FBUyxDQUFULEtBQUEsS0FBZTtBQUFBO0FBQW5CLE1BQWdEO0FBQzlDLGFBQUEsbUJBQUEsQ0FBeUIsS0FBQSxhQUFBLENBQXpCLFVBQXlCLENBQXpCO0FBQ0EsZUFBQSxJQUFBO0FBQ0Q7O0FBTjhDLFFBUTNDLEtBUjJDLEdBUS9DLFVBUitDLENBUTNDLEtBUjJDO0FBQUEsUUFRbEMsR0FSa0MsR0FRL0MsVUFSK0MsQ0FRbEMsR0FSa0M7QUFTL0MsUUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFELGVBQUEsQ0FBQSxLQUFBLEVBQWQsR0FBYyxDQUFkOztBQUVBLFlBQVEsU0FBUyxDQUFqQixLQUFBO0FBQ0UsV0FBQTtBQUFBO0FBQUE7QUFDQSxXQUFBO0FBQUE7QUFBQTtBQUNFLGFBQUEsZUFBQSxDQUFBLFFBQUEsQ0FBQSxJQUFBLENBQUEsT0FBQTtBQUNBOztBQUVGLFdBQUE7QUFBQTtBQUFBO0FBQ0EsV0FBQTtBQUFBO0FBQUE7QUFDRSxRQUFBLFdBQVcsQ0FBQyxLQUFELGNBQUMsRUFBRCxFQUFYLE9BQVcsQ0FBWDtBQUNBOztBQUVGO0FBQ0UsY0FBTSxJQUFBLFdBQUEsOENBQ3dDLFNBQVMsQ0FBQSxPQUFBLENBRGpELG9DQUN5RixPQUFPLENBQUMsS0FEakcsbUJBQ21ILEdBQUcsQ0FBSCxLQUFBLENBQVUsSUFEN0gsU0FDcUksR0FBRyxDQUFILEtBQUEsQ0FEckksTUFBQSxFQUVKLFVBQVUsQ0FGWixHQUFNLENBQU47QUFaSjs7QUFrQkEsV0FBQSxPQUFBO0FBQ0QsR0ExTUg7O0FBQUEsU0E0TUUsZ0JBNU1GLEdBNE1FLDBCQUFnQixPQUFoQixFQUE4QztBQUFBLFFBQ3RDLEdBRHNDLEdBQzVDLE9BRDRDLENBQ3RDLEdBRHNDO0FBRzVDLFVBQU0sSUFBQSxXQUFBLCtDQUN1QyxLQUFBLGFBQUEsQ0FBQSxPQUFBLEVBQTRCLE9BQU8sQ0FBbkMsSUFBQSxDQUR2QyxlQUVGLEdBQUcsQ0FBSCxLQUFBLENBQVUsSUFGUixVQUdDLEdBQUcsQ0FBSCxLQUFBLENBSEQsTUFBQSxFQUlKLE9BQU8sQ0FKVCxHQUFNLENBQU47QUFNRCxHQXJOSDs7QUFBQSxTQXVORSxxQkF2TkYsR0F1TkUsK0JBQXFCLFlBQXJCLEVBQTZEO0FBQUEsUUFDckQsR0FEcUQsR0FDM0QsWUFEMkQsQ0FDckQsR0FEcUQ7QUFHM0QsVUFBTSxJQUFBLFdBQUEscURBQzZDLEtBQUEsYUFBQSxDQUFBLFlBQUEsRUFFL0MsWUFBWSxDQUZtQyxJQUFBLENBRDdDLGVBSU0sR0FBRyxDQUFILEtBQUEsQ0FBVSxJQUpoQixVQUl5QixHQUFHLENBQUgsS0FBQSxDQUp6QixNQUFBLEVBS0osWUFBWSxDQUxkLEdBQU0sQ0FBTjtBQU9ELEdBak9IOztBQUFBLFNBbU9FLFNBbk9GLEdBbU9FLG1CQUFTLFNBQVQsRUFBa0M7QUFBQSxRQUMxQixHQUQwQixHQUNoQyxTQURnQyxDQUMxQixHQUQwQjtBQUdoQyxVQUFNLElBQUEsV0FBQSxpREFDeUMsS0FBQSxhQUFBLENBQUEsU0FBQSxFQUUzQyxTQUFTLENBRmtDLElBQUEsQ0FEekMsZUFJTSxHQUFHLENBQUgsS0FBQSxDQUFVLElBSmhCLFVBSXlCLEdBQUcsQ0FBSCxLQUFBLENBSnpCLE1BQUEsRUFLSixTQUFTLENBTFgsR0FBTSxDQUFOO0FBT0QsR0E3T0g7O0FBQUEsU0ErT0UsY0EvT0YsR0ErT0Usd0JBQWMsY0FBZCxFQUFpRDtBQUFBLFFBQ3pDLEdBRHlDLEdBQy9DLGNBRCtDLENBQ3pDLEdBRHlDO0FBRy9DLFVBQU0sSUFBQSxXQUFBLHVEQUMrQyxLQUFBLGFBQUEsQ0FBQSxjQUFBLEVBRWpELGNBQWMsQ0FGbUMsSUFBQSxDQUQvQyxlQUlNLEdBQUcsQ0FBSCxLQUFBLENBQVUsSUFKaEIsVUFJeUIsR0FBRyxDQUFILEtBQUEsQ0FKekIsTUFBQSxFQUtKLGNBQWMsQ0FMaEIsR0FBTSxDQUFOO0FBT0QsR0F6UEg7O0FBQUEsU0EyUEUsYUEzUEYsR0EyUEUsdUJBQWEsS0FBYixFQUFzQztBQUFBLDRCQUNQLGVBQWUsQ0FBQSxJQUFBLEVBQTVDLEtBQTRDLENBRFI7QUFBQSxRQUNoQyxJQURnQyxxQkFDaEMsSUFEZ0M7QUFBQSxRQUNoQyxNQURnQyxxQkFDaEMsTUFEZ0M7QUFBQSxRQUNoQixJQURnQixxQkFDaEIsSUFEZ0I7O0FBRXBDLFdBQU8sQ0FBQyxDQUFELEtBQUEsQ0FBQSxJQUFBLEVBQUEsTUFBQSxFQUFBLElBQUEsRUFBNEIsS0FBSyxDQUF4QyxHQUFPLENBQVA7QUFDRCxHQTlQSDs7QUFBQSxTQWdRRSxjQWhRRixHQWdRRSx3QkFBYyxJQUFkLEVBQXVDO0FBQUEsUUFDakMsUUFEaUMsR0FDckMsSUFEcUMsQ0FDakMsUUFEaUM7QUFBQSxRQUNyQixHQURxQixHQUNyQyxJQURxQyxDQUNyQixHQURxQjtBQUVyQyxRQUFBLEtBQUE7O0FBRUEsUUFBSSxRQUFRLENBQVIsT0FBQSxDQUFBLEdBQUEsTUFBMEIsQ0FBOUIsQ0FBQSxFQUFrQztBQUNoQyxVQUFJLFFBQVEsQ0FBUixLQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsTUFBSixJQUFBLEVBQW1DO0FBQ2pDLGNBQU0sSUFBQSxXQUFBLGtFQUN3RCxJQUFJLENBQUMsUUFEN0QsbUJBQ2tGLEdBQUcsQ0FBSCxLQUFBLENBRGxGLElBQUEsUUFFSixJQUFJLENBRk4sR0FBTSxDQUFOO0FBSUQ7O0FBQ0QsVUFBSSxRQUFRLENBQVIsS0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLE1BQUosS0FBQSxFQUFvQztBQUNsQyxjQUFNLElBQUEsV0FBQSxvRUFDMEQsSUFBSSxDQUFDLFFBRC9ELG1CQUNvRixHQUFHLENBQUgsS0FBQSxDQURwRixJQUFBLFFBRUosSUFBSSxDQUZOLEdBQU0sQ0FBTjtBQUlEOztBQUNELFVBQUksUUFBUSxDQUFSLE9BQUEsQ0FBQSxHQUFBLE1BQTBCLENBQTlCLENBQUEsRUFBa0M7QUFDaEMsY0FBTSxJQUFBLFdBQUEsMEdBQ2tHLElBQUksQ0FBQyxRQUR2RyxtQkFDNEgsR0FBRyxDQUFILEtBQUEsQ0FENUgsSUFBQSxRQUVKLElBQUksQ0FGTixHQUFNLENBQU47QUFJRDs7QUFDRCxNQUFBLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBSixLQUFBLENBQUEsSUFBQSxDQUFULEdBQVMsQ0FBRCxDQUFSO0FBbkJGLEtBQUEsTUFvQk8sSUFBSSxRQUFRLEtBQVosR0FBQSxFQUFzQjtBQUMzQixVQUFJLFlBQVksU0FBTyxHQUFHLENBQUgsS0FBQSxDQUFVLElBQWpCLFVBQTBCLEdBQUcsQ0FBSCxLQUFBLENBQTFDLE1BQUE7QUFDQSxZQUFNLElBQUEsV0FBQSxzRkFBQSxZQUFBLFFBRUosSUFBSSxDQUZOLEdBQU0sQ0FBTjtBQUZLLEtBQUEsTUFNQTtBQUNMLE1BQUEsS0FBSyxHQUFHLElBQUksQ0FBWixLQUFBO0FBQ0Q7O0FBRUQsUUFBSSxRQUFRLEdBbEN5QixLQWtDckMsQ0FsQ3FDLENBb0NyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxRQUFJLFFBQVEsQ0FBUixLQUFBLENBQUosZUFBSSxDQUFKLEVBQXFDO0FBQ25DLE1BQUEsUUFBUSxHQUFSLElBQUE7QUFDRDs7QUFFRCxXQUFPO0FBQ0wsTUFBQSxJQUFJLEVBREMsZ0JBQUE7QUFFTCxNQUFBLFFBQVEsRUFBRSxJQUFJLENBRlQsUUFBQTtBQUdMLGNBSEssUUFBQTtBQUlMLE1BQUEsS0FKSyxFQUlMLEtBSks7QUFLTCxNQUFBLElBQUksRUFBRSxJQUFJLENBTEwsSUFBQTtBQU1MLE1BQUEsR0FBRyxFQUFFLElBQUksQ0FBQztBQU5MLEtBQVA7QUFRRCxHQTFUSDs7QUFBQSxTQTRURSxJQTVURixHQTRURSxjQUFJLElBQUosRUFBbUI7QUFDakIsUUFBSSxLQUFLLEdBQVQsRUFBQTs7QUFFQSxTQUFLLElBQUksQ0FBQyxHQUFWLENBQUEsRUFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBSixLQUFBLENBQXBCLE1BQUEsRUFBdUMsQ0FBdkMsRUFBQSxFQUE0QztBQUMxQyxVQUFJLElBQUksR0FBRyxJQUFJLENBQUosS0FBQSxDQUFYLENBQVcsQ0FBWDtBQUNBLE1BQUEsS0FBSyxDQUFMLElBQUEsQ0FBVyxDQUFDLENBQUQsSUFBQSxDQUFPLElBQUksQ0FBWCxHQUFBLEVBQWlCLEtBQUEsVUFBQSxDQUFnQixJQUFJLENBQXJDLEtBQWlCLENBQWpCLEVBQThDLElBQUksQ0FBN0QsR0FBVyxDQUFYO0FBQ0Q7O0FBRUQsV0FBTyxDQUFDLENBQUQsSUFBQSxDQUFBLEtBQUEsRUFBYyxJQUFJLENBQXpCLEdBQU8sQ0FBUDtBQUNELEdBclVIOztBQUFBLFNBdVVFLGFBdlVGLEdBdVVFLHVCQUFhLE1BQWIsRUFBdUM7QUFDckMsV0FBTyxDQUFDLENBQUQsT0FBQSxDQUFBLGVBQUEsRUFBMkIsTUFBTSxDQUFqQyxLQUFBLEVBQXlDLE1BQU0sQ0FBdEQsR0FBTyxDQUFQO0FBQ0QsR0F6VUg7O0FBQUEsU0EyVUUsY0EzVUYsR0EyVUUsd0JBQWMsUUFBZCxFQUEwQztBQUN4QyxXQUFPLENBQUMsQ0FBRCxPQUFBLENBQUEsZ0JBQUEsRUFBNEIsUUFBTyxDQUFuQyxLQUFBLEVBQTJDLFFBQU8sQ0FBekQsR0FBTyxDQUFQO0FBQ0QsR0E3VUg7O0FBQUEsU0ErVUUsYUEvVUYsR0ErVUUsdUJBQWEsTUFBYixFQUF1QztBQUNyQyxXQUFPLENBQUMsQ0FBRCxPQUFBLENBQUEsZUFBQSxFQUEyQixNQUFNLENBQWpDLEtBQUEsRUFBeUMsTUFBTSxDQUF0RCxHQUFPLENBQVA7QUFDRCxHQWpWSDs7QUFBQSxTQW1WRSxnQkFuVkYsR0FtVkUsMEJBQWdCLEtBQWhCLEVBQTRDO0FBQzFDLFdBQU8sQ0FBQyxDQUFELE9BQUEsQ0FBQSxrQkFBQSxFQUFBLFNBQUEsRUFBeUMsS0FBSyxDQUFyRCxHQUFPLENBQVA7QUFDRCxHQXJWSDs7QUFBQSxTQXVWRSxXQXZWRixHQXVWRSxxQkFBVyxHQUFYLEVBQWdDO0FBQzlCLFdBQU8sQ0FBQyxDQUFELE9BQUEsQ0FBQSxhQUFBLEVBQUEsSUFBQSxFQUErQixHQUFHLENBQXpDLEdBQU8sQ0FBUDtBQUNELEdBelZIOztBQUFBO0FBQUE7QUFBQSx3QkFLd0I7QUFDcEIsYUFBTyxLQUFBLFlBQUEsQ0FBQSxNQUFBLEtBQVAsQ0FBQTtBQUNEO0FBUEg7O0FBQUE7QUFBQSxFQUFNLE1BQU47O0FBNFZBLFNBQUEsNkJBQUEsQ0FBQSxRQUFBLEVBQUEsS0FBQSxFQUFzRTtBQUNwRSxNQUFJLEtBQUssS0FBVCxFQUFBLEVBQWtCO0FBQ2hCO0FBQ0E7QUFDQSxXQUFPO0FBQ0wsTUFBQSxLQUFLLEVBQUUsUUFBUSxDQUFSLEtBQUEsQ0FBQSxJQUFBLEVBQUEsTUFBQSxHQURGLENBQUE7QUFFTCxNQUFBLE9BQU8sRUFBRTtBQUZKLEtBQVA7QUFKa0UsR0FBQSxDQVVwRTtBQUNBOzs7QUFDQSxNQUFJLFVBQVUsR0FBRyxRQUFRLENBQVIsS0FBQSxDQUFBLEtBQUEsRUFBakIsQ0FBaUIsQ0FBakI7QUFDQSxNQUFJLEtBQUssR0FBRyxVQUFVLENBQVYsS0FBQSxDQUFaLElBQVksQ0FBWjtBQUNBLE1BQUksU0FBUyxHQUFHLEtBQUssQ0FBTCxNQUFBLEdBQWhCLENBQUE7QUFFQSxTQUFPO0FBQ0wsSUFBQSxLQUFLLEVBREEsU0FBQTtBQUVMLElBQUEsT0FBTyxFQUFFLEtBQUssQ0FBTCxTQUFLLENBQUwsQ0FBaUI7QUFGckIsR0FBUDtBQUlEOztBQUVELFNBQUEsdUJBQUEsQ0FBQSxTQUFBLEVBQUEsT0FBQSxFQUE4RjtBQUM1RixNQUFJLElBQUksR0FBRyxPQUFPLENBQVAsR0FBQSxDQUFBLEtBQUEsQ0FBWCxJQUFBO0FBQ0EsTUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFQLEdBQUEsQ0FBQSxLQUFBLENBQWIsTUFBQTtBQUVBLE1BQUksT0FBTyxHQUFHLDZCQUE2QixDQUN6QyxPQUFPLENBRGtDLFFBQUEsRUFFekMsT0FBTyxDQUZULEtBQTJDLENBQTNDO0FBS0EsRUFBQSxJQUFJLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBckIsS0FBQTs7QUFDQSxNQUFJLE9BQU8sQ0FBWCxLQUFBLEVBQW1CO0FBQ2pCLElBQUEsTUFBTSxHQUFHLE9BQU8sQ0FBaEIsT0FBQTtBQURGLEdBQUEsTUFFTztBQUNMLElBQUEsTUFBTSxHQUFHLE1BQU0sR0FBRyxPQUFPLENBQXpCLE9BQUE7QUFDRDs7QUFFRCxFQUFBLFNBQVMsQ0FBVCxJQUFBLEdBQUEsSUFBQTtBQUNBLEVBQUEsU0FBUyxDQUFULE1BQUEsR0FBQSxNQUFBO0FBQ0Q7O0FBRUQsU0FBQSxlQUFBLENBQUEsUUFBQSxFQUFBLElBQUEsRUFNRztBQUVELE1BQUksSUFBSSxHQUFHLFFBQVEsQ0FBUixjQUFBLENBQXdCLElBQUksQ0FBdkMsSUFBVyxDQUFYO0FBRUEsTUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFKLE1BQUEsR0FBYyxJQUFJLENBQUosTUFBQSxDQUFBLEdBQUEsQ0FBaUIsVUFBQSxDQUFEO0FBQUEsV0FBTyxRQUFRLENBQVIsVUFBQSxDQUFyQyxDQUFxQyxDQUFQO0FBQUEsR0FBaEIsQ0FBZCxHQUFiLEVBQUE7QUFDQSxNQUFJLElBQUksR0FBRyxJQUFJLENBQUosSUFBQSxHQUFZLFFBQVEsQ0FBUixJQUFBLENBQWMsSUFBSSxDQUE5QixJQUFZLENBQVosR0FBdUMsQ0FBQyxDQUFuRCxJQUFrRCxFQUFsRDtBQUVBLFNBQU87QUFBRSxJQUFBLElBQUYsRUFBRSxJQUFGO0FBQVEsSUFBQSxNQUFSLEVBQVEsTUFBUjtBQUFnQixJQUFBLElBQUEsRUFBQTtBQUFoQixHQUFQO0FBQ0Q7O0FBRUQsU0FBQSxrQkFBQSxDQUFBLE9BQUEsRUFBQSxRQUFBLEVBQXFGO0FBQUEsTUFDL0UsSUFEK0UsR0FDbkYsUUFEbUYsQ0FDL0UsSUFEK0U7QUFBQSxNQUMvRSxNQUQrRSxHQUNuRixRQURtRixDQUMvRSxNQUQrRTtBQUFBLE1BQy9FLElBRCtFLEdBQ25GLFFBRG1GLENBQy9FLElBRCtFO0FBQUEsTUFDekQsR0FEeUQsR0FDbkYsUUFEbUYsQ0FDekQsR0FEeUQ7O0FBR25GLE1BQUksU0FBUyxDQUFiLElBQWEsQ0FBYixFQUFxQjtBQUNuQixRQUFJLFNBQVEsVUFBUSxZQUFZLENBQWhDLElBQWdDLENBQXBCLE9BQVo7O0FBQ0EsUUFBSSxHQUFHLFNBQU8sT0FBTyxDQUFDLElBQWYsYUFBUCxTQUFPLFNBQVA7QUFFQSxVQUFNLElBQUEsV0FBQSxTQUNFLEdBREYsVUFDVSxTQURWLG9DQUNnRCxJQUFJLENBQUMsUUFEckQsb0JBRUYsR0FBRyxJQUFJLEdBQUcsQ0FBSCxLQUFBLENBRkwsSUFBQSxTQUlKLFFBQVEsQ0FKVixHQUFNLENBQU47QUFNRDs7QUFFRCxNQUFJLFFBQVEsR0FBRyxDQUFDLENBQUQsZUFBQSxDQUFBLElBQUEsRUFBQSxNQUFBLEVBQUEsSUFBQSxFQUFmLEdBQWUsQ0FBZjtBQUNBLEVBQUEsT0FBTyxDQUFQLFNBQUEsQ0FBQSxJQUFBLENBQUEsUUFBQTtBQUNEOztBQUVELFNBQUEsK0JBQUEsQ0FBQSxTQUFBLEVBQUEsSUFBQSxFQUEwRjtBQUN4RixFQUFBLFNBQVMsQ0FBVCxTQUFBLEdBQUEsSUFBQTtBQUNBLEVBQUEsU0FBUyxDQUFULEtBQUEsQ0FBQSxJQUFBLENBQUEsSUFBQTtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGIgZnJvbSAnLi4vYnVpbGRlcnMnO1xuaW1wb3J0IHsgYXBwZW5kQ2hpbGQsIGlzTGl0ZXJhbCwgcHJpbnRMaXRlcmFsIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0ICogYXMgQVNUIGZyb20gJy4uL3R5cGVzL25vZGVzJztcbmltcG9ydCAqIGFzIEhCUyBmcm9tICcuLi90eXBlcy9oYW5kbGViYXJzLWFzdCc7XG5pbXBvcnQgeyBQYXJzZXIsIFRhZywgQXR0cmlidXRlIH0gZnJvbSAnLi4vcGFyc2VyJztcbmltcG9ydCBTeW50YXhFcnJvciBmcm9tICcuLi9lcnJvcnMvc3ludGF4LWVycm9yJztcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgUmVjYXN0IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUb2tlbml6ZXJTdGF0ZSB9IGZyb20gJ3NpbXBsZS1odG1sLXRva2VuaXplcic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBIYW5kbGViYXJzTm9kZVZpc2l0b3JzIGV4dGVuZHMgUGFyc2VyIHtcbiAgYWJzdHJhY3QgYXBwZW5kVG9Db21tZW50RGF0YShzOiBzdHJpbmcpOiB2b2lkO1xuICBhYnN0cmFjdCBiZWdpbkF0dHJpYnV0ZVZhbHVlKHF1b3RlZDogYm9vbGVhbik6IHZvaWQ7XG4gIGFic3RyYWN0IGZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk6IHZvaWQ7XG5cbiAgcHJpdmF0ZSBnZXQgaXNUb3BMZXZlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2subGVuZ3RoID09PSAwO1xuICB9XG5cbiAgUHJvZ3JhbShwcm9ncmFtOiBIQlMuUHJvZ3JhbSk6IEFTVC5CbG9jaztcbiAgUHJvZ3JhbShwcm9ncmFtOiBIQlMuUHJvZ3JhbSk6IEFTVC5UZW1wbGF0ZTtcbiAgUHJvZ3JhbShwcm9ncmFtOiBIQlMuUHJvZ3JhbSk6IEFTVC5UZW1wbGF0ZSB8IEFTVC5CbG9jaztcbiAgUHJvZ3JhbShwcm9ncmFtOiBIQlMuUHJvZ3JhbSk6IEFTVC5CbG9jayB8IEFTVC5UZW1wbGF0ZSB7XG4gICAgbGV0IGJvZHk6IEFTVC5TdGF0ZW1lbnRbXSA9IFtdO1xuICAgIGxldCBub2RlO1xuXG4gICAgaWYgKHRoaXMuaXNUb3BMZXZlbCkge1xuICAgICAgbm9kZSA9IGIudGVtcGxhdGUoYm9keSwgcHJvZ3JhbS5ibG9ja1BhcmFtcywgcHJvZ3JhbS5sb2MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlID0gYi5ibG9ja0l0c2VsZihib2R5LCBwcm9ncmFtLmJsb2NrUGFyYW1zLCBwcm9ncmFtLmNoYWluZWQsIHByb2dyYW0ubG9jKTtcbiAgICB9XG5cbiAgICBsZXQgaSxcbiAgICAgIGwgPSBwcm9ncmFtLmJvZHkubGVuZ3RoO1xuXG4gICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaChub2RlKTtcblxuICAgIGlmIChsID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2sucG9wKCkgYXMgQVNULkJsb2NrIHwgQVNULlRlbXBsYXRlO1xuICAgIH1cblxuICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHRoaXMuYWNjZXB0Tm9kZShwcm9ncmFtLmJvZHlbaV0pO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSB0aGF0IHRoYXQgdGhlIGVsZW1lbnQgc3RhY2sgaXMgYmFsYW5jZWQgcHJvcGVybHkuXG4gICAgbGV0IHBvcHBlZE5vZGUgPSB0aGlzLmVsZW1lbnRTdGFjay5wb3AoKTtcbiAgICBpZiAocG9wcGVkTm9kZSAhPT0gbm9kZSkge1xuICAgICAgbGV0IGVsZW1lbnROb2RlID0gcG9wcGVkTm9kZSBhcyBBU1QuRWxlbWVudE5vZGU7XG5cbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgJ1VuY2xvc2VkIGVsZW1lbnQgYCcgKyBlbGVtZW50Tm9kZS50YWcgKyAnYCAob24gbGluZSAnICsgZWxlbWVudE5vZGUubG9jIS5zdGFydC5saW5lICsgJykuJyxcbiAgICAgICAgZWxlbWVudE5vZGUubG9jXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgQmxvY2tTdGF0ZW1lbnQoYmxvY2s6IEhCUy5CbG9ja1N0YXRlbWVudCk6IEFTVC5CbG9ja1N0YXRlbWVudCB8IHZvaWQge1xuICAgIGlmICh0aGlzLnRva2VuaXplci5zdGF0ZSA9PT0gVG9rZW5pemVyU3RhdGUuY29tbWVudCkge1xuICAgICAgdGhpcy5hcHBlbmRUb0NvbW1lbnREYXRhKHRoaXMuc291cmNlRm9yTm9kZShibG9jaykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlICE9PSBUb2tlbml6ZXJTdGF0ZS5kYXRhICYmXG4gICAgICB0aGlzLnRva2VuaXplclsnc3RhdGUnXSAhPT0gVG9rZW5pemVyU3RhdGUuYmVmb3JlRGF0YVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAnQSBibG9jayBtYXkgb25seSBiZSB1c2VkIGluc2lkZSBhbiBIVE1MIGVsZW1lbnQgb3IgYW5vdGhlciBibG9jay4nLFxuICAgICAgICBibG9jay5sb2NcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IHsgcGF0aCwgcGFyYW1zLCBoYXNoIH0gPSBhY2NlcHRDYWxsTm9kZXModGhpcywgYmxvY2spO1xuICAgIGxldCBwcm9ncmFtID0gdGhpcy5Qcm9ncmFtKGJsb2NrLnByb2dyYW0pO1xuICAgIGxldCBpbnZlcnNlID0gYmxvY2suaW52ZXJzZSA/IHRoaXMuUHJvZ3JhbShibG9jay5pbnZlcnNlKSA6IG51bGw7XG5cbiAgICBsZXQgbm9kZSA9IGIuYmxvY2soXG4gICAgICBwYXRoLFxuICAgICAgcGFyYW1zLFxuICAgICAgaGFzaCxcbiAgICAgIHByb2dyYW0sXG4gICAgICBpbnZlcnNlLFxuICAgICAgYmxvY2subG9jLFxuICAgICAgYmxvY2sub3BlblN0cmlwLFxuICAgICAgYmxvY2suaW52ZXJzZVN0cmlwLFxuICAgICAgYmxvY2suY2xvc2VTdHJpcFxuICAgICk7XG5cbiAgICBsZXQgcGFyZW50UHJvZ3JhbSA9IHRoaXMuY3VycmVudEVsZW1lbnQoKTtcblxuICAgIGFwcGVuZENoaWxkKHBhcmVudFByb2dyYW0sIG5vZGUpO1xuICB9XG5cbiAgTXVzdGFjaGVTdGF0ZW1lbnQocmF3TXVzdGFjaGU6IEhCUy5NdXN0YWNoZVN0YXRlbWVudCk6IEFTVC5NdXN0YWNoZVN0YXRlbWVudCB8IHZvaWQge1xuICAgIGxldCB7IHRva2VuaXplciB9ID0gdGhpcztcblxuICAgIGlmICh0b2tlbml6ZXIuc3RhdGUgPT09ICdjb21tZW50Jykge1xuICAgICAgdGhpcy5hcHBlbmRUb0NvbW1lbnREYXRhKHRoaXMuc291cmNlRm9yTm9kZShyYXdNdXN0YWNoZSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBtdXN0YWNoZTogQVNULk11c3RhY2hlU3RhdGVtZW50O1xuICAgIGxldCB7IGVzY2FwZWQsIGxvYywgc3RyaXAgfSA9IHJhd011c3RhY2hlO1xuXG4gICAgaWYgKGlzTGl0ZXJhbChyYXdNdXN0YWNoZS5wYXRoKSkge1xuICAgICAgbXVzdGFjaGUgPSB7XG4gICAgICAgIHR5cGU6ICdNdXN0YWNoZVN0YXRlbWVudCcsXG4gICAgICAgIHBhdGg6IHRoaXMuYWNjZXB0Tm9kZTxBU1QuTGl0ZXJhbD4ocmF3TXVzdGFjaGUucGF0aCksXG4gICAgICAgIHBhcmFtczogW10sXG4gICAgICAgIGhhc2g6IGIuaGFzaCgpLFxuICAgICAgICBlc2NhcGVkLFxuICAgICAgICBsb2MsXG4gICAgICAgIHN0cmlwLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHsgcGF0aCwgcGFyYW1zLCBoYXNoIH0gPSBhY2NlcHRDYWxsTm9kZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHJhd011c3RhY2hlIGFzIEhCUy5NdXN0YWNoZVN0YXRlbWVudCAmIHtcbiAgICAgICAgICBwYXRoOiBIQlMuUGF0aEV4cHJlc3Npb247XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBtdXN0YWNoZSA9IGIubXVzdGFjaGUocGF0aCwgcGFyYW1zLCBoYXNoLCAhZXNjYXBlZCwgbG9jLCBzdHJpcCk7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0b2tlbml6ZXIuc3RhdGUpIHtcbiAgICAgIC8vIFRhZyBoZWxwZXJzXG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLnRhZ09wZW46XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLnRhZ05hbWU6XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICBgQ2Fubm90IHVzZSBtdXN0YWNoZXMgaW4gYW4gZWxlbWVudHMgdGFnbmFtZTogXFxgJHt0aGlzLnNvdXJjZUZvck5vZGUoXG4gICAgICAgICAgICByYXdNdXN0YWNoZSxcbiAgICAgICAgICAgIHJhd011c3RhY2hlLnBhdGhcbiAgICAgICAgICApfVxcYCBhdCBMJHtsb2Muc3RhcnQubGluZX06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgICAgIG11c3RhY2hlLmxvY1xuICAgICAgICApO1xuXG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmJlZm9yZUF0dHJpYnV0ZU5hbWU6XG4gICAgICAgIGFkZEVsZW1lbnRNb2RpZmllcih0aGlzLmN1cnJlbnRTdGFydFRhZywgbXVzdGFjaGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYXR0cmlidXRlTmFtZTpcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYWZ0ZXJBdHRyaWJ1dGVOYW1lOlxuICAgICAgICB0aGlzLmJlZ2luQXR0cmlidXRlVmFsdWUoZmFsc2UpO1xuICAgICAgICB0aGlzLmZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk7XG4gICAgICAgIGFkZEVsZW1lbnRNb2RpZmllcih0aGlzLmN1cnJlbnRTdGFydFRhZywgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIudHJhbnNpdGlvblRvKFRva2VuaXplclN0YXRlLmJlZm9yZUF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZDpcbiAgICAgICAgYWRkRWxlbWVudE1vZGlmaWVyKHRoaXMuY3VycmVudFN0YXJ0VGFnLCBtdXN0YWNoZSk7XG4gICAgICAgIHRva2VuaXplci50cmFuc2l0aW9uVG8oVG9rZW5pemVyU3RhdGUuYmVmb3JlQXR0cmlidXRlTmFtZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBBdHRyaWJ1dGUgdmFsdWVzXG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmJlZm9yZUF0dHJpYnV0ZVZhbHVlOlxuICAgICAgICB0aGlzLmJlZ2luQXR0cmlidXRlVmFsdWUoZmFsc2UpO1xuICAgICAgICBhcHBlbmREeW5hbWljQXR0cmlidXRlVmFsdWVQYXJ0KHRoaXMuY3VycmVudEF0dHJpYnV0ZSEsIG11c3RhY2hlKTtcbiAgICAgICAgdG9rZW5pemVyLnRyYW5zaXRpb25UbyhUb2tlbml6ZXJTdGF0ZS5hdHRyaWJ1dGVWYWx1ZVVucXVvdGVkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkOlxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5hdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZDpcbiAgICAgIGNhc2UgVG9rZW5pemVyU3RhdGUuYXR0cmlidXRlVmFsdWVVbnF1b3RlZDpcbiAgICAgICAgYXBwZW5kRHluYW1pY0F0dHJpYnV0ZVZhbHVlUGFydCh0aGlzLmN1cnJlbnRBdHRyaWJ1dGUhLCBtdXN0YWNoZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBUT0RPOiBPbmx5IGFwcGVuZCBjaGlsZCB3aGVuIHRoZSB0b2tlbml6ZXIgc3RhdGUgbWFrZXNcbiAgICAgIC8vIHNlbnNlIHRvIGRvIHNvLCBvdGhlcndpc2UgdGhyb3cgYW4gZXJyb3IuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIG11c3RhY2hlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbXVzdGFjaGU7XG4gIH1cblxuICBDb250ZW50U3RhdGVtZW50KGNvbnRlbnQ6IEhCUy5Db250ZW50U3RhdGVtZW50KTogdm9pZCB7XG4gICAgdXBkYXRlVG9rZW5pemVyTG9jYXRpb24odGhpcy50b2tlbml6ZXIsIGNvbnRlbnQpO1xuXG4gICAgdGhpcy50b2tlbml6ZXIudG9rZW5pemVQYXJ0KGNvbnRlbnQudmFsdWUpO1xuICAgIHRoaXMudG9rZW5pemVyLmZsdXNoRGF0YSgpO1xuICB9XG5cbiAgQ29tbWVudFN0YXRlbWVudChyYXdDb21tZW50OiBIQlMuQ29tbWVudFN0YXRlbWVudCk6IE9wdGlvbjxBU1QuTXVzdGFjaGVDb21tZW50U3RhdGVtZW50PiB7XG4gICAgbGV0IHsgdG9rZW5pemVyIH0gPSB0aGlzO1xuXG4gICAgaWYgKHRva2VuaXplci5zdGF0ZSA9PT0gVG9rZW5pemVyU3RhdGUuY29tbWVudCkge1xuICAgICAgdGhpcy5hcHBlbmRUb0NvbW1lbnREYXRhKHRoaXMuc291cmNlRm9yTm9kZShyYXdDb21tZW50KSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgeyB2YWx1ZSwgbG9jIH0gPSByYXdDb21tZW50O1xuICAgIGxldCBjb21tZW50ID0gYi5tdXN0YWNoZUNvbW1lbnQodmFsdWUsIGxvYyk7XG5cbiAgICBzd2l0Y2ggKHRva2VuaXplci5zdGF0ZSkge1xuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5iZWZvcmVBdHRyaWJ1dGVOYW1lOlxuICAgICAgY2FzZSBUb2tlbml6ZXJTdGF0ZS5hZnRlckF0dHJpYnV0ZU5hbWU6XG4gICAgICAgIHRoaXMuY3VycmVudFN0YXJ0VGFnLmNvbW1lbnRzLnB1c2goY29tbWVudCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmJlZm9yZURhdGE6XG4gICAgICBjYXNlIFRva2VuaXplclN0YXRlLmRhdGE6XG4gICAgICAgIGFwcGVuZENoaWxkKHRoaXMuY3VycmVudEVsZW1lbnQoKSwgY29tbWVudCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICAgYFVzaW5nIGEgSGFuZGxlYmFycyBjb21tZW50IHdoZW4gaW4gdGhlIFxcYCR7dG9rZW5pemVyWydzdGF0ZSddfVxcYCBzdGF0ZSBpcyBub3Qgc3VwcG9ydGVkOiBcIiR7Y29tbWVudC52YWx1ZX1cIiBvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9OiR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgICAgIHJhd0NvbW1lbnQubG9jXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbW1lbnQ7XG4gIH1cblxuICBQYXJ0aWFsU3RhdGVtZW50KHBhcnRpYWw6IEhCUy5QYXJ0aWFsU3RhdGVtZW50KTogbmV2ZXIge1xuICAgIGxldCB7IGxvYyB9ID0gcGFydGlhbDtcblxuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgIGBIYW5kbGViYXJzIHBhcnRpYWxzIGFyZSBub3Qgc3VwcG9ydGVkOiBcIiR7dGhpcy5zb3VyY2VGb3JOb2RlKHBhcnRpYWwsIHBhcnRpYWwubmFtZSl9XCIgYXQgTCR7XG4gICAgICAgIGxvYy5zdGFydC5saW5lXG4gICAgICB9OkMke2xvYy5zdGFydC5jb2x1bW59YCxcbiAgICAgIHBhcnRpYWwubG9jXG4gICAgKTtcbiAgfVxuXG4gIFBhcnRpYWxCbG9ja1N0YXRlbWVudChwYXJ0aWFsQmxvY2s6IEhCUy5QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQpOiBuZXZlciB7XG4gICAgbGV0IHsgbG9jIH0gPSBwYXJ0aWFsQmxvY2s7XG5cbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgSGFuZGxlYmFycyBwYXJ0aWFsIGJsb2NrcyBhcmUgbm90IHN1cHBvcnRlZDogXCIke3RoaXMuc291cmNlRm9yTm9kZShcbiAgICAgICAgcGFydGlhbEJsb2NrLFxuICAgICAgICBwYXJ0aWFsQmxvY2submFtZVxuICAgICAgKX1cIiBhdCBMJHtsb2Muc3RhcnQubGluZX06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgcGFydGlhbEJsb2NrLmxvY1xuICAgICk7XG4gIH1cblxuICBEZWNvcmF0b3IoZGVjb3JhdG9yOiBIQlMuRGVjb3JhdG9yKTogbmV2ZXIge1xuICAgIGxldCB7IGxvYyB9ID0gZGVjb3JhdG9yO1xuXG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgYEhhbmRsZWJhcnMgZGVjb3JhdG9ycyBhcmUgbm90IHN1cHBvcnRlZDogXCIke3RoaXMuc291cmNlRm9yTm9kZShcbiAgICAgICAgZGVjb3JhdG9yLFxuICAgICAgICBkZWNvcmF0b3IucGF0aFxuICAgICAgKX1cIiBhdCBMJHtsb2Muc3RhcnQubGluZX06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgZGVjb3JhdG9yLmxvY1xuICAgICk7XG4gIH1cblxuICBEZWNvcmF0b3JCbG9jayhkZWNvcmF0b3JCbG9jazogSEJTLkRlY29yYXRvckJsb2NrKTogbmV2ZXIge1xuICAgIGxldCB7IGxvYyB9ID0gZGVjb3JhdG9yQmxvY2s7XG5cbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgSGFuZGxlYmFycyBkZWNvcmF0b3IgYmxvY2tzIGFyZSBub3Qgc3VwcG9ydGVkOiBcIiR7dGhpcy5zb3VyY2VGb3JOb2RlKFxuICAgICAgICBkZWNvcmF0b3JCbG9jayxcbiAgICAgICAgZGVjb3JhdG9yQmxvY2sucGF0aFxuICAgICAgKX1cIiBhdCBMJHtsb2Muc3RhcnQubGluZX06QyR7bG9jLnN0YXJ0LmNvbHVtbn1gLFxuICAgICAgZGVjb3JhdG9yQmxvY2subG9jXG4gICAgKTtcbiAgfVxuXG4gIFN1YkV4cHJlc3Npb24oc2V4cHI6IEhCUy5TdWJFeHByZXNzaW9uKTogQVNULlN1YkV4cHJlc3Npb24ge1xuICAgIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCB9ID0gYWNjZXB0Q2FsbE5vZGVzKHRoaXMsIHNleHByKTtcbiAgICByZXR1cm4gYi5zZXhwcihwYXRoLCBwYXJhbXMsIGhhc2gsIHNleHByLmxvYyk7XG4gIH1cblxuICBQYXRoRXhwcmVzc2lvbihwYXRoOiBIQlMuUGF0aEV4cHJlc3Npb24pOiBBU1QuUGF0aEV4cHJlc3Npb24ge1xuICAgIGxldCB7IG9yaWdpbmFsLCBsb2MgfSA9IHBhdGg7XG4gICAgbGV0IHBhcnRzOiBzdHJpbmdbXTtcblxuICAgIGlmIChvcmlnaW5hbC5pbmRleE9mKCcvJykgIT09IC0xKSB7XG4gICAgICBpZiAob3JpZ2luYWwuc2xpY2UoMCwgMikgPT09ICcuLycpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAgIGBVc2luZyBcIi4vXCIgaXMgbm90IHN1cHBvcnRlZCBpbiBHbGltbWVyIGFuZCB1bm5lY2Vzc2FyeTogXCIke3BhdGgub3JpZ2luYWx9XCIgb24gbGluZSAke2xvYy5zdGFydC5saW5lfS5gLFxuICAgICAgICAgIHBhdGgubG9jXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAob3JpZ2luYWwuc2xpY2UoMCwgMykgPT09ICcuLi8nKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICBgQ2hhbmdpbmcgY29udGV4dCB1c2luZyBcIi4uL1wiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gR2xpbW1lcjogXCIke3BhdGgub3JpZ2luYWx9XCIgb24gbGluZSAke2xvYy5zdGFydC5saW5lfS5gLFxuICAgICAgICAgIHBhdGgubG9jXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAob3JpZ2luYWwuaW5kZXhPZignLicpICE9PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICAgYE1peGluZyAnLicgYW5kICcvJyBpbiBwYXRocyBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXI7IHVzZSBvbmx5ICcuJyB0byBzZXBhcmF0ZSBwcm9wZXJ0eSBwYXRoczogXCIke3BhdGgub3JpZ2luYWx9XCIgb24gbGluZSAke2xvYy5zdGFydC5saW5lfS5gLFxuICAgICAgICAgIHBhdGgubG9jXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBwYXJ0cyA9IFtwYXRoLnBhcnRzLmpvaW4oJy8nKV07XG4gICAgfSBlbHNlIGlmIChvcmlnaW5hbCA9PT0gJy4nKSB7XG4gICAgICBsZXQgbG9jYXRpb25JbmZvID0gYEwke2xvYy5zdGFydC5saW5lfTpDJHtsb2Muc3RhcnQuY29sdW1ufWA7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgIGAnLicgaXMgbm90IGEgc3VwcG9ydGVkIHBhdGggaW4gR2xpbW1lcjsgY2hlY2sgZm9yIGEgcGF0aCB3aXRoIGEgdHJhaWxpbmcgJy4nIGF0ICR7bG9jYXRpb25JbmZvfS5gLFxuICAgICAgICBwYXRoLmxvY1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydHMgPSBwYXRoLnBhcnRzO1xuICAgIH1cblxuICAgIGxldCB0aGlzSGVhZCA9IGZhbHNlO1xuXG4gICAgLy8gVGhpcyBpcyB0byBmaXggYSBidWcgaW4gdGhlIEhhbmRsZWJhcnMgQVNUIHdoZXJlIHRoZSBwYXRoIGV4cHJlc3Npb25zIGluXG4gICAgLy8gYHt7dGhpcy5mb299fWAgKGFuZCBzaW1pbGFybHkgYHt7Zm9vLWJhciB0aGlzLmZvbyBuYW1lZD10aGlzLmZvb319YCBldGMpXG4gICAgLy8gYXJlIHNpbXBseSB0dXJuZWQgaW50byBge3tmb299fWAuIFRoZSBmaXggaXMgdG8gcHVzaCBpdCBiYWNrIG9udG8gdGhlXG4gICAgLy8gcGFydHMgYXJyYXkgYW5kIGxldCB0aGUgcnVudGltZSBzZWUgdGhlIGRpZmZlcmVuY2UuIEhvd2V2ZXIsIHdlIGNhbm5vdFxuICAgIC8vIHNpbXBseSB1c2UgdGhlIHN0cmluZyBgdGhpc2AgYXMgaXQgbWVhbnMgbGl0ZXJhbGx5IHRoZSBwcm9wZXJ0eSBjYWxsZWRcbiAgICAvLyBcInRoaXNcIiBpbiB0aGUgY3VycmVudCBjb250ZXh0IChpdCBjYW4gYmUgZXhwcmVzc2VkIGluIHRoZSBzeW50YXggYXNcbiAgICAvLyBge3tbdGhpc119fWAsIHdoZXJlIHRoZSBzcXVhcmUgYnJhY2tldCBhcmUgZ2VuZXJhbGx5IGZvciB0aGlzIGtpbmQgb2ZcbiAgICAvLyBlc2NhcGluZyDigJMgc3VjaCBhcyBge3tmb28uW1wiYmFyLmJhelwiXX19YCB3b3VsZCBtZWFuIGxvb2t1cCBhIHByb3BlcnR5XG4gICAgLy8gbmFtZWQgbGl0ZXJhbGx5IFwiYmFyLmJhelwiIG9uIGB0aGlzLmZvb2ApLiBCeSBjb252ZW50aW9uLCB3ZSB1c2UgYG51bGxgXG4gICAgLy8gZm9yIHRoaXMgcHVycG9zZS5cbiAgICBpZiAob3JpZ2luYWwubWF0Y2goL150aGlzKFxcLi4rKT8kLykpIHtcbiAgICAgIHRoaXNIZWFkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ1BhdGhFeHByZXNzaW9uJyxcbiAgICAgIG9yaWdpbmFsOiBwYXRoLm9yaWdpbmFsLFxuICAgICAgdGhpczogdGhpc0hlYWQsXG4gICAgICBwYXJ0cyxcbiAgICAgIGRhdGE6IHBhdGguZGF0YSxcbiAgICAgIGxvYzogcGF0aC5sb2MsXG4gICAgfTtcbiAgfVxuXG4gIEhhc2goaGFzaDogSEJTLkhhc2gpOiBBU1QuSGFzaCB7XG4gICAgbGV0IHBhaXJzOiBBU1QuSGFzaFBhaXJbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoYXNoLnBhaXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgcGFpciA9IGhhc2gucGFpcnNbaV07XG4gICAgICBwYWlycy5wdXNoKGIucGFpcihwYWlyLmtleSwgdGhpcy5hY2NlcHROb2RlKHBhaXIudmFsdWUpLCBwYWlyLmxvYykpO1xuICAgIH1cblxuICAgIHJldHVybiBiLmhhc2gocGFpcnMsIGhhc2gubG9jKTtcbiAgfVxuXG4gIFN0cmluZ0xpdGVyYWwoc3RyaW5nOiBIQlMuU3RyaW5nTGl0ZXJhbCk6IEFTVC5TdHJpbmdMaXRlcmFsIHtcbiAgICByZXR1cm4gYi5saXRlcmFsKCdTdHJpbmdMaXRlcmFsJywgc3RyaW5nLnZhbHVlLCBzdHJpbmcubG9jKTtcbiAgfVxuXG4gIEJvb2xlYW5MaXRlcmFsKGJvb2xlYW46IEhCUy5Cb29sZWFuTGl0ZXJhbCk6IEFTVC5Cb29sZWFuTGl0ZXJhbCB7XG4gICAgcmV0dXJuIGIubGl0ZXJhbCgnQm9vbGVhbkxpdGVyYWwnLCBib29sZWFuLnZhbHVlLCBib29sZWFuLmxvYyk7XG4gIH1cblxuICBOdW1iZXJMaXRlcmFsKG51bWJlcjogSEJTLk51bWJlckxpdGVyYWwpOiBBU1QuTnVtYmVyTGl0ZXJhbCB7XG4gICAgcmV0dXJuIGIubGl0ZXJhbCgnTnVtYmVyTGl0ZXJhbCcsIG51bWJlci52YWx1ZSwgbnVtYmVyLmxvYyk7XG4gIH1cblxuICBVbmRlZmluZWRMaXRlcmFsKHVuZGVmOiBIQlMuVW5kZWZpbmVkTGl0ZXJhbCk6IEFTVC5VbmRlZmluZWRMaXRlcmFsIHtcbiAgICByZXR1cm4gYi5saXRlcmFsKCdVbmRlZmluZWRMaXRlcmFsJywgdW5kZWZpbmVkLCB1bmRlZi5sb2MpO1xuICB9XG5cbiAgTnVsbExpdGVyYWwobnVsOiBIQlMuTnVsbExpdGVyYWwpOiBBU1QuTnVsbExpdGVyYWwge1xuICAgIHJldHVybiBiLmxpdGVyYWwoJ051bGxMaXRlcmFsJywgbnVsbCwgbnVsLmxvYyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlUmlnaHRTdHJpcHBlZE9mZnNldHMob3JpZ2luYWw6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgLy8gaWYgaXQgaXMgZW1wdHksIGp1c3QgcmV0dXJuIHRoZSBjb3VudCBvZiBuZXdsaW5lc1xuICAgIC8vIGluIG9yaWdpbmFsXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmVzOiBvcmlnaW5hbC5zcGxpdCgnXFxuJykubGVuZ3RoIC0gMSxcbiAgICAgIGNvbHVtbnM6IDAsXG4gICAgfTtcbiAgfVxuXG4gIC8vIG90aGVyd2lzZSwgcmV0dXJuIHRoZSBudW1iZXIgb2YgbmV3bGluZXMgcHJpb3IgdG9cbiAgLy8gYHZhbHVlYFxuICBsZXQgZGlmZmVyZW5jZSA9IG9yaWdpbmFsLnNwbGl0KHZhbHVlKVswXTtcbiAgbGV0IGxpbmVzID0gZGlmZmVyZW5jZS5zcGxpdCgvXFxuLyk7XG4gIGxldCBsaW5lQ291bnQgPSBsaW5lcy5sZW5ndGggLSAxO1xuXG4gIHJldHVybiB7XG4gICAgbGluZXM6IGxpbmVDb3VudCxcbiAgICBjb2x1bW5zOiBsaW5lc1tsaW5lQ291bnRdLmxlbmd0aCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlVG9rZW5pemVyTG9jYXRpb24odG9rZW5pemVyOiBQYXJzZXJbJ3Rva2VuaXplciddLCBjb250ZW50OiBIQlMuQ29udGVudFN0YXRlbWVudCkge1xuICBsZXQgbGluZSA9IGNvbnRlbnQubG9jLnN0YXJ0LmxpbmU7XG4gIGxldCBjb2x1bW4gPSBjb250ZW50LmxvYy5zdGFydC5jb2x1bW47XG5cbiAgbGV0IG9mZnNldHMgPSBjYWxjdWxhdGVSaWdodFN0cmlwcGVkT2Zmc2V0cyhcbiAgICBjb250ZW50Lm9yaWdpbmFsIGFzIFJlY2FzdDxIQlMuU3RyaXBGbGFncywgc3RyaW5nPixcbiAgICBjb250ZW50LnZhbHVlXG4gICk7XG5cbiAgbGluZSA9IGxpbmUgKyBvZmZzZXRzLmxpbmVzO1xuICBpZiAob2Zmc2V0cy5saW5lcykge1xuICAgIGNvbHVtbiA9IG9mZnNldHMuY29sdW1ucztcbiAgfSBlbHNlIHtcbiAgICBjb2x1bW4gPSBjb2x1bW4gKyBvZmZzZXRzLmNvbHVtbnM7XG4gIH1cblxuICB0b2tlbml6ZXIubGluZSA9IGxpbmU7XG4gIHRva2VuaXplci5jb2x1bW4gPSBjb2x1bW47XG59XG5cbmZ1bmN0aW9uIGFjY2VwdENhbGxOb2RlcyhcbiAgY29tcGlsZXI6IEhhbmRsZWJhcnNOb2RlVmlzaXRvcnMsXG4gIG5vZGU6IHtcbiAgICBwYXRoOiBIQlMuUGF0aEV4cHJlc3Npb247XG4gICAgcGFyYW1zOiBIQlMuRXhwcmVzc2lvbltdO1xuICAgIGhhc2g6IEhCUy5IYXNoO1xuICB9XG4pOiB7IHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbjsgcGFyYW1zOiBBU1QuRXhwcmVzc2lvbltdOyBoYXNoOiBBU1QuSGFzaCB9IHtcbiAgbGV0IHBhdGggPSBjb21waWxlci5QYXRoRXhwcmVzc2lvbihub2RlLnBhdGgpO1xuXG4gIGxldCBwYXJhbXMgPSBub2RlLnBhcmFtcyA/IG5vZGUucGFyYW1zLm1hcCgoZSkgPT4gY29tcGlsZXIuYWNjZXB0Tm9kZTxBU1QuRXhwcmVzc2lvbj4oZSkpIDogW107XG4gIGxldCBoYXNoID0gbm9kZS5oYXNoID8gY29tcGlsZXIuSGFzaChub2RlLmhhc2gpIDogYi5oYXNoKCk7XG5cbiAgcmV0dXJuIHsgcGF0aCwgcGFyYW1zLCBoYXNoIH07XG59XG5cbmZ1bmN0aW9uIGFkZEVsZW1lbnRNb2RpZmllcihlbGVtZW50OiBUYWc8J1N0YXJ0VGFnJz4sIG11c3RhY2hlOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgbGV0IHsgcGF0aCwgcGFyYW1zLCBoYXNoLCBsb2MgfSA9IG11c3RhY2hlO1xuXG4gIGlmIChpc0xpdGVyYWwocGF0aCkpIHtcbiAgICBsZXQgbW9kaWZpZXIgPSBge3ske3ByaW50TGl0ZXJhbChwYXRoKX19fWA7XG4gICAgbGV0IHRhZyA9IGA8JHtlbGVtZW50Lm5hbWV9IC4uLiAke21vZGlmaWVyfSAuLi5gO1xuXG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgYEluICR7dGFnfSwgJHttb2RpZmllcn0gaXMgbm90IGEgdmFsaWQgbW9kaWZpZXI6IFwiJHtwYXRoLm9yaWdpbmFsfVwiIG9uIGxpbmUgJHtcbiAgICAgICAgbG9jICYmIGxvYy5zdGFydC5saW5lXG4gICAgICB9LmAsXG4gICAgICBtdXN0YWNoZS5sb2NcbiAgICApO1xuICB9XG5cbiAgbGV0IG1vZGlmaWVyID0gYi5lbGVtZW50TW9kaWZpZXIocGF0aCwgcGFyYW1zLCBoYXNoLCBsb2MpO1xuICBlbGVtZW50Lm1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kRHluYW1pY0F0dHJpYnV0ZVZhbHVlUGFydChhdHRyaWJ1dGU6IEF0dHJpYnV0ZSwgcGFydDogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gIGF0dHJpYnV0ZS5pc0R5bmFtaWMgPSB0cnVlO1xuICBhdHRyaWJ1dGUucGFydHMucHVzaChwYXJ0KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -9,2 +9,3 @@ export { preprocess, PreprocessOptions, ASTPlugin, ASTPluginBuilder, ASTPluginEnvironment, Syntax, } from './lib/parser/tokenizer-event-handlers';

export { default as print } from './lib/generation/print';
export { sortByLoc } from './lib/generation/util';
export { default as SyntaxError } from './lib/errors/syntax-error';

@@ -11,0 +12,0 @@ import * as AST from './lib/types/nodes';

@@ -0,3 +1,6 @@

import * as AST from '../types/nodes';
export declare function escapeAttrValue(attrValue: string): string;
export declare function escapeText(text: string): string;
export declare function isSynthetic(node: AST.Node): boolean;
export declare function sortByLoc(a: AST.Node, b: AST.Node): -1 | 0 | 1;
//# sourceMappingURL=util.d.ts.map
{
"name": "@glimmer/syntax",
"version": "0.65.2",
"version": "0.65.3",
"repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/syntax",
"dependencies": {
"@glimmer/interfaces": "0.65.2",
"@glimmer/util": "0.65.2",
"@glimmer/interfaces": "0.65.3",
"@glimmer/util": "0.65.3",
"@handlebars/parser": "^1.1.0",

@@ -12,3 +12,3 @@ "simple-html-tokenizer": "^0.5.10"

"devDependencies": {
"@glimmer/local-debug-flags": "0.65.2",
"@glimmer/local-debug-flags": "0.65.3",
"@types/qunit": "^2.9.0"

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

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

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc