@glimmer/compiler
Advanced tools
Comparing version 0.73.0 to 0.73.1
@@ -56,2 +56,10 @@ "use strict"; | ||
if (path !== null && path.ref.type === 'Free') { | ||
if (path.tail.length > 0) { | ||
if (path.ref.resolution.serialize() === 'Loose') { | ||
// cannot be a keyword reference, keywords do not allow paths (must be | ||
// relying on implicit this fallback) | ||
return false; | ||
} | ||
} | ||
return path.ref.name === this.keyword; | ||
@@ -65,2 +73,8 @@ } else { | ||
if (this.match(node)) { | ||
let path = getPathExpression(node); | ||
if (path !== null && path.tail.length > 0) { | ||
return (0, _result.Err)((0, _syntax.generateSyntaxError)(`The \`${this.keyword}\` keyword was used incorrectly. It was used as \`${path.loc.asString()}\`, but it cannot be used with additional path segments. \n\nError caused by`, node.loc)); | ||
} | ||
let param = this.delegate.assert(node, state); | ||
@@ -270,2 +284,2 @@ return param.andThen(param => this.delegate.translate({ | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBT0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQSxNQUFBLFdBQUEsQ0FBaUI7QUFRZixFQUFBLFdBQUEsQ0FBQSxPQUFBLEVBQUEsSUFBQSxFQUFBLFFBQUEsRUFHa0U7QUFGdEQsU0FBQSxPQUFBLEdBQUEsT0FBQTtBQUVGLFNBQUEsUUFBQSxHQUFBLFFBQUE7QUFFUixRQUFJLEtBQUssR0FBRyxJQUFaLEdBQVksRUFBWjs7QUFDQSxTQUFLLElBQUwsUUFBQSxJQUFxQixhQUFhLENBQWxDLElBQWtDLENBQWxDLEVBQTBDO0FBQ3hDLE1BQUEsS0FBSyxDQUFMLEdBQUEsQ0FBQSxRQUFBO0FBQ0Q7O0FBRUQsU0FBQSxLQUFBLEdBQUEsS0FBQTtBQUNEOztBQUVTLEVBQUEsS0FBSyxDQUFBLElBQUEsRUFBMkI7QUFDeEMsUUFBSSxDQUFDLEtBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBZSxJQUFJLENBQXhCLElBQUssQ0FBTCxFQUFnQztBQUM5QixhQUFBLEtBQUE7QUFDRDs7QUFFRCxRQUFJLElBQUksR0FBRyxpQkFBaUIsQ0FBNUIsSUFBNEIsQ0FBNUI7O0FBRUEsUUFBSSxJQUFJLEtBQUosSUFBQSxJQUFpQixJQUFJLENBQUosR0FBQSxDQUFBLElBQUEsS0FBckIsTUFBQSxFQUErQztBQUM3QyxhQUFPLElBQUksQ0FBSixHQUFBLENBQUEsSUFBQSxLQUFrQixLQUF6QixPQUFBO0FBREYsS0FBQSxNQUVPO0FBQ0wsYUFBQSxLQUFBO0FBQ0Q7QUFDRjs7QUFFRCxFQUFBLFNBQVMsQ0FBQSxJQUFBLEVBQUEsS0FBQSxFQUFtRDtBQUMxRCxRQUFJLEtBQUEsS0FBQSxDQUFKLElBQUksQ0FBSixFQUFzQjtBQUNwQixV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QkFDTCxpQ0FDRSxTQUFTLElBQUksbURBQ1gsbUJBQW1CLENBQUEsUUFBQSxDQUNyQixrQ0FBa0Msb0JBQW9CLENBQUEsSUFBQSxFQUFBLFVBQUEsQ0FIckMscUJBQW5CLEVBT0UsSUFBSSxDQVJSLEdBQ0UsQ0FESyxDQUFQO0FBV0Q7QUFDRjs7QUFFRCxXQUFBLElBQUE7QUFDRDs7QUFyRGtCOzs7O0FBd0RyQixNQUFNLG1CQUFtQixHQUFHO0FBQzFCLEVBQUEsTUFBTSxFQURvQixxQkFBQTtBQUUxQixFQUFBLEtBQUssRUFGcUIsbUJBQUE7QUFHMUIsRUFBQSxJQUFJLEVBSHNCLG1CQUFBO0FBSTFCLEVBQUEsUUFBUSxFQUFFO0FBSmdCLENBQTVCOztBQU9BLFNBQUEsb0JBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxFQUFnRTtBQUM5RCxTQUFPLEtBQUssQ0FBTCxHQUFBLENBQ0MsSUFBRCxJQUFTO0FBQ1osWUFBQSxJQUFBO0FBQ0UsV0FBQSxRQUFBO0FBQ0UsZUFBTyxzQ0FBc0MsSUFBN0MsSUFBQTs7QUFDRixXQUFBLE9BQUE7QUFDRSxlQUFPLHFDQUFxQyxJQUFJLFFBQVEsSUFBeEQsSUFBQTs7QUFDRixXQUFBLE1BQUE7QUFDRSxlQUFPLCtCQUErQixJQUF0QyxHQUFBOztBQUNGLFdBQUEsVUFBQTtBQUNFLGVBQU8sa0NBQWtDLElBQXpDLFdBQUE7O0FBQ0Y7QUFDRSxlQUFPLHFCQUFQLElBQU8sQ0FBUDtBQVZKO0FBRkcsR0FBQSxFQUFBLElBQUEsQ0FBUCxNQUFPLENBQVA7QUFnQkQ7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpRk0sU0FBQSxRQUFBLENBQUEsSUFBQSxFQUFpRDtBQUNyRCxTQUFPLElBQUEsUUFBQSxDQUFQLElBQU8sQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVNUdjIsXG4gIGdlbmVyYXRlU3ludGF4RXJyb3IsXG4gIGlzS2V5d29yZCxcbiAgS0VZV09SRFNfVFlQRVMsXG4gIEtleXdvcmRUeXBlLFxufSBmcm9tICdAZ2xpbW1lci9zeW50YXgnO1xuaW1wb3J0IHsgZXhoYXVzdGVkIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7IEVyciwgUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3Jlc3VsdCc7XG5pbXBvcnQgeyBOb3JtYWxpemF0aW9uU3RhdGUgfSBmcm9tICcuLi9jb250ZXh0JztcblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkRGVsZWdhdGU8TWF0Y2ggZXh0ZW5kcyBLZXl3b3JkTWF0Y2gsIFYsIE91dD4ge1xuICBhc3NlcnQob3B0aW9uczogTWF0Y2gsIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8Vj47XG4gIHRyYW5zbGF0ZShvcHRpb25zOiB7IG5vZGU6IE1hdGNoOyBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlIH0sIHBhcmFtOiBWKTogUmVzdWx0PE91dD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZDxLIGV4dGVuZHMgS2V5d29yZFR5cGUgPSBLZXl3b3JkVHlwZSwgT3V0ID0gdW5rbm93bj4ge1xuICB0cmFuc2xhdGUobm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10sIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8T3V0PiB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmxvY2tLZXl3b3JkPE91dCA9IHVua25vd24+IHtcbiAgdHJhbnNsYXRlKG5vZGU6IEFTVHYyLkludm9rZUJsb2NrLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsO1xufVxuXG5jbGFzcyBLZXl3b3JkSW1wbDxcbiAgSyBleHRlbmRzIEtleXdvcmRUeXBlLFxuICBTIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLFxuICBQYXJhbSA9IHVua25vd24sXG4gIE91dCA9IHVua25vd25cbj4ge1xuICBwcm90ZWN0ZWQgdHlwZXM6IFNldDxLZXl3b3JkQ2FuZGlkYXRlc1tLXVsndHlwZSddPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQga2V5d29yZDogUyxcbiAgICB0eXBlOiBLZXl3b3JkVHlwZSxcbiAgICBwcml2YXRlIGRlbGVnYXRlOiBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoZXNbS10sIFBhcmFtLCBPdXQ+XG4gICkge1xuICAgIGxldCBub2RlcyA9IG5ldyBTZXQ8S2V5d29yZE5vZGVbJ3R5cGUnXT4oKTtcbiAgICBmb3IgKGxldCBub2RlVHlwZSBvZiBLRVlXT1JEX05PREVTW3R5cGVdKSB7XG4gICAgICBub2Rlcy5hZGQobm9kZVR5cGUpO1xuICAgIH1cblxuICAgIHRoaXMudHlwZXMgPSBub2RlcztcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXRjaChub2RlOiBLZXl3b3JkQ2FuZGlkYXRlc1tLXSk6IG5vZGUgaXMgS2V5d29yZE1hdGNoZXNbS10ge1xuICAgIGlmICghdGhpcy50eXBlcy5oYXMobm9kZS50eXBlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBwYXRoID0gZ2V0UGF0aEV4cHJlc3Npb24obm9kZSk7XG5cbiAgICBpZiAocGF0aCAhPT0gbnVsbCAmJiBwYXRoLnJlZi50eXBlID09PSAnRnJlZScpIHtcbiAgICAgIHJldHVybiBwYXRoLnJlZi5uYW1lID09PSB0aGlzLmtleXdvcmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB0cmFuc2xhdGUobm9kZTogS2V5d29yZE1hdGNoZXNbS10sIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8T3V0PiB8IG51bGwge1xuICAgIGlmICh0aGlzLm1hdGNoKG5vZGUpKSB7XG4gICAgICBsZXQgcGFyYW0gPSB0aGlzLmRlbGVnYXRlLmFzc2VydChub2RlLCBzdGF0ZSk7XG4gICAgICByZXR1cm4gcGFyYW0uYW5kVGhlbigocGFyYW0pID0+IHRoaXMuZGVsZWdhdGUudHJhbnNsYXRlKHsgbm9kZSwgc3RhdGUgfSwgcGFyYW0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIFBvc3NpYmxlTm9kZSA9XG4gIHwgQVNUdjIuUGF0aEV4cHJlc3Npb25cbiAgfCBBU1R2Mi5BcHBlbmRDb250ZW50XG4gIHwgQVNUdjIuQ2FsbEV4cHJlc3Npb25cbiAgfCBBU1R2Mi5JbnZva2VCbG9jaztcblxuZXhwb3J0IGNvbnN0IEtFWVdPUkRfTk9ERVMgPSB7XG4gIENhbGw6IFsnQ2FsbCddLFxuICBCbG9jazogWydJbnZva2VCbG9jayddLFxuICBBcHBlbmQ6IFsnQXBwZW5kQ29udGVudCddLFxuICBNb2RpZmllcjogWydFbGVtZW50TW9kaWZpZXInXSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZENhbmRpZGF0ZXMge1xuICBDYWxsOiBBU1R2Mi5FeHByZXNzaW9uTm9kZTtcbiAgQmxvY2s6IEFTVHYyLkludm9rZUJsb2NrO1xuICBBcHBlbmQ6IEFTVHYyLkFwcGVuZENvbnRlbnQ7XG4gIE1vZGlmaWVyOiBBU1R2Mi5FbGVtZW50TW9kaWZpZXI7XG59XG5cbmV4cG9ydCB0eXBlIEtleXdvcmRDYW5kaWRhdGUgPSBLZXl3b3JkQ2FuZGlkYXRlc1trZXlvZiBLZXl3b3JkQ2FuZGlkYXRlc107XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZE1hdGNoZXMge1xuICBDYWxsOiBBU1R2Mi5DYWxsRXhwcmVzc2lvbjtcbiAgQmxvY2s6IEFTVHYyLkludm9rZUJsb2NrO1xuICBBcHBlbmQ6IEFTVHYyLkFwcGVuZENvbnRlbnQ7XG4gIE1vZGlmaWVyOiBBU1R2Mi5FbGVtZW50TW9kaWZpZXI7XG59XG5cbmV4cG9ydCB0eXBlIEtleXdvcmRNYXRjaCA9IEtleXdvcmRNYXRjaGVzW2tleW9mIEtleXdvcmRNYXRjaGVzXTtcblxuLyoqXG4gKiBBIFwiZ2VuZXJpY1wiIGtleXdvcmQgaXMgc29tZXRoaW5nIGxpa2UgYGhhcy1ibG9ja2AsIHdoaWNoIG1ha2VzIHNlbnNlIGluIHRoZSBjb250ZXh0XG4gKiBvZiBzdWItZXhwcmVzc2lvbiBvciBhcHBlbmRcbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY0tleXdvcmROb2RlID0gQVNUdjIuQXBwZW5kQ29udGVudCB8IEFTVHYyLkNhbGxFeHByZXNzaW9uO1xuXG5leHBvcnQgdHlwZSBLZXl3b3JkTm9kZSA9XG4gIHwgR2VuZXJpY0tleXdvcmROb2RlXG4gIHwgQVNUdjIuQ2FsbEV4cHJlc3Npb25cbiAgfCBBU1R2Mi5JbnZva2VCbG9ja1xuICB8IEFTVHYyLkVsZW1lbnRNb2RpZmllcjtcblxuZXhwb3J0IGZ1bmN0aW9uIGtleXdvcmQ8XG4gIEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSxcbiAgRCBleHRlbmRzIEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2hlc1tLXSwgdW5rbm93biwgT3V0PixcbiAgT3V0ID0gdW5rbm93blxuPihrZXl3b3JkOiBzdHJpbmcsIHR5cGU6IEssIGRlbGVnYXRlOiBEKTogS2V5d29yZDxLLCBPdXQ+IHtcbiAgcmV0dXJuIG5ldyBLZXl3b3JkSW1wbChrZXl3b3JkLCB0eXBlLCBkZWxlZ2F0ZSBhcyBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoLCB1bmtub3duLCBPdXQ+KTtcbn1cblxuZXhwb3J0IHR5cGUgUG9zc2libGVLZXl3b3JkID0gS2V5d29yZE5vZGU7XG50eXBlIE91dEZvcjxLIGV4dGVuZHMgS2V5d29yZCB8IEJsb2NrS2V5d29yZD4gPSBLIGV4dGVuZHMgQmxvY2tLZXl3b3JkPGluZmVyIE91dD5cbiAgPyBPdXRcbiAgOiBLIGV4dGVuZHMgS2V5d29yZDxLZXl3b3JkVHlwZSwgaW5mZXIgT3V0PlxuICA/IE91dFxuICA6IG5ldmVyO1xuXG5mdW5jdGlvbiBnZXRQYXRoRXhwcmVzc2lvbihub2RlOiBLZXl3b3JkTm9kZSB8IEFTVHYyLkV4cHJlc3Npb25Ob2RlKTogQVNUdjIuUGF0aEV4cHJlc3Npb24gfCBudWxsIHtcbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAvLyBUaGlzIGNvdmVycyB0aGUgaW5zaWRlIG9mIGF0dHJpYnV0ZXMgYW5kIGV4cHJlc3Npb25zLCBhcyB3ZWxsIGFzIHRoZSBjYWxsZWVcbiAgICAvLyBvZiBjYWxsIG5vZGVzXG4gICAgY2FzZSAnUGF0aCc6XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICBjYXNlICdBcHBlbmRDb250ZW50JzpcbiAgICAgIHJldHVybiBnZXRQYXRoRXhwcmVzc2lvbihub2RlLnZhbHVlKTtcbiAgICBjYXNlICdDYWxsJzpcbiAgICBjYXNlICdJbnZva2VCbG9jayc6XG4gICAgY2FzZSAnRWxlbWVudE1vZGlmaWVyJzpcbiAgICAgIHJldHVybiBnZXRQYXRoRXhwcmVzc2lvbihub2RlLmNhbGxlZSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBLZXl3b3JkczxLIGV4dGVuZHMgS2V5d29yZFR5cGUsIEtleXdvcmRMaXN0IGV4dGVuZHMgS2V5d29yZDxLPiA9IG5ldmVyPlxuICBpbXBsZW1lbnRzIEtleXdvcmQ8SywgT3V0Rm9yPEtleXdvcmRMaXN0Pj4ge1xuICAja2V5d29yZHM6IEtleXdvcmRbXSA9IFtdO1xuICAjdHlwZTogSztcblxuICBjb25zdHJ1Y3Rvcih0eXBlOiBLKSB7XG4gICAgdGhpcy4jdHlwZSA9IHR5cGU7XG4gIH1cblxuICBrdzxTIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBPdXQgPSB1bmtub3duPihcbiAgICBuYW1lOiBTLFxuICAgIGRlbGVnYXRlOiBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoZXNbS10sIHVua25vd24sIE91dD5cbiAgKTogS2V5d29yZHM8SywgS2V5d29yZExpc3QgfCBLZXl3b3JkPEssIE91dD4+IHtcbiAgICB0aGlzLiNrZXl3b3Jkcy5wdXNoKGtleXdvcmQobmFtZSwgdGhpcy4jdHlwZSwgZGVsZWdhdGUpKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdHJhbnNsYXRlKFxuICAgIG5vZGU6IEtleXdvcmRDYW5kaWRhdGVzW0tdLFxuICAgIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGVcbiAgKTogUmVzdWx0PE91dEZvcjxLZXl3b3JkTGlzdD4+IHwgbnVsbCB7XG4gICAgZm9yIChsZXQga2V5d29yZCBvZiB0aGlzLiNrZXl3b3Jkcykge1xuICAgICAgbGV0IHJlc3VsdCA9IGtleXdvcmQudHJhbnNsYXRlKG5vZGUsIHN0YXRlKSBhcyBSZXN1bHQ8T3V0Rm9yPEtleXdvcmRMaXN0Pj47XG4gICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHBhdGggPSBnZXRQYXRoRXhwcmVzc2lvbihub2RlKTtcblxuICAgIGlmIChwYXRoICYmIHBhdGgucmVmLnR5cGUgPT09ICdGcmVlJyAmJiBpc0tleXdvcmQocGF0aC5yZWYubmFtZSkpIHtcbiAgICAgIGxldCB7IG5hbWUgfSA9IHBhdGgucmVmO1xuXG4gICAgICBsZXQgdXNlZFR5cGUgPSB0aGlzLiN0eXBlO1xuICAgICAgbGV0IHZhbGlkVHlwZXMgPSBLRVlXT1JEU19UWVBFU1tuYW1lXTtcblxuICAgICAgaWYgKHZhbGlkVHlwZXMuaW5kZXhPZih1c2VkVHlwZSkgPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBFcnIoXG4gICAgICAgICAgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgICAgIGBUaGUgXFxgJHtuYW1lfVxcYCBrZXl3b3JkIHdhcyB1c2VkIGluY29ycmVjdGx5LiBJdCB3YXMgdXNlZCBhcyAke1xuICAgICAgICAgICAgICB0eXBlc1RvUmVhZGFibGVOYW1lW3VzZWRUeXBlXVxuICAgICAgICAgICAgfSwgYnV0IGl0cyB2YWxpZCB1c2FnZXMgYXJlOlxcblxcbiR7Z2VuZXJhdGVUeXBlc01lc3NhZ2UoXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHZhbGlkVHlwZXNcbiAgICAgICAgICAgICl9XFxuXFxuRXJyb3IgY2F1c2VkIGJ5YCxcbiAgICAgICAgICAgIG5vZGUubG9jXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmNvbnN0IHR5cGVzVG9SZWFkYWJsZU5hbWUgPSB7XG4gIEFwcGVuZDogJ2FuIGFwcGVuZCBzdGF0ZW1lbnQnLFxuICBCbG9jazogJ2EgYmxvY2sgc3RhdGVtZW50JyxcbiAgQ2FsbDogJ2EgY2FsbCBleHByZXNzaW9uJyxcbiAgTW9kaWZpZXI6ICdhIG1vZGlmaWVyJyxcbn07XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVHlwZXNNZXNzYWdlKG5hbWU6IHN0cmluZywgdHlwZXM6IEtleXdvcmRUeXBlW10pOiBzdHJpbmcge1xuICByZXR1cm4gdHlwZXNcbiAgICAubWFwKCh0eXBlKSA9PiB7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnQXBwZW5kJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYW4gYXBwZW5kIHN0YXRlbWVudCwgYXMgaW46IHt7JHtuYW1lfX19YDtcbiAgICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhIGJsb2NrIHN0YXRlbWVudCwgYXMgaW46IHt7IyR7bmFtZX19fXt7LyR7bmFtZX19fWA7XG4gICAgICAgIGNhc2UgJ0NhbGwnOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhbiBleHByZXNzaW9uLCBhcyBpbjogKCR7bmFtZX0pYDtcbiAgICAgICAgY2FzZSAnTW9kaWZpZXInOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhIG1vZGlmaWVyLCBhcyBpbjogPGRpdiB7eyR7bmFtZX19fT48L2Rpdj5gO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBleGhhdXN0ZWQodHlwZSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAuam9pbignXFxuXFxuJyk7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBidWlsZHMga2V5d29yZCBkZWZpbml0aW9ucyBmb3IgYSBwYXJ0aWN1bGFyIHR5cGUgb2YgQVNUIG5vZGUgKGBLZXl3b3JkVHlwZWApLlxuICpcbiAqIFlvdSBjYW4gYnVpbGQga2V5d29yZCBkZWZpbml0aW9ucyBmb3I6XG4gKlxuICogLSBgRXhwcmA6IEEgYFN1YkV4cHJlc3Npb25gIG9yIGBQYXRoRXhwcmVzc2lvbmBcbiAqIC0gYEJsb2NrYDogQSBgQmxvY2tTdGF0ZW1lbnRgXG4gKiAgIC0gQSBgQmxvY2tTdGF0ZW1lbnRgIGlzIGEga2V5d29yZCBjYW5kaWRhdGUgaWYgaXRzIGhlYWQgaXMgYVxuICogICAgIGBQYXRoRXhwcmVzc2lvbmBcbiAqIC0gYEFwcGVuZGA6IEFuIGBBcHBlbmRTdGF0ZW1lbnRgXG4gKlxuICogQSBub2RlIGlzIGEga2V5d29yZCBjYW5kaWRhdGUgaWY6XG4gKlxuICogLSBBIGBQYXRoRXhwcmVzc2lvbmAgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZiBpdCBoYXMgbm8gdGFpbCwgYW5kIGl0c1xuICogICBoZWFkIGV4cHJlc3Npb24gaXMgYSBgTG9jYWxWYXJIZWFkYCBvciBgRnJlZVZhckhlYWRgIHdob3NlIG5hbWUgaXNcbiAqICAgdGhlIGtleXdvcmQncyBuYW1lLlxuICogLSBBIGBTdWJFeHByZXNzaW9uYCwgYEFwcGVuZFN0YXRlbWVudGAsIG9yIGBCbG9ja1N0YXRlbWVudGAgaXMgYSBrZXl3b3JkXG4gKiAgIGNhbmRpZGF0ZSBpZiBpdHMgaGVhZCBpcyBhIGtleXdvcmQgY2FuZGlkYXRlLlxuICpcbiAqIFRoZSBrZXl3b3JkIGluZnJhc3RydWN0dXJlIGd1YXJhbnRlZXMgdGhhdDpcbiAqXG4gKiAtIElmIGEgbm9kZSBpcyBub3QgYSBrZXl3b3JkIGNhbmRpZGF0ZSwgaXQgaXMgbmV2ZXIgcGFzc2VkIHRvIGFueSBrZXl3b3JkJ3NcbiAqICAgYGFzc2VydGAgbWV0aG9kLlxuICogLSBJZiBhIG5vZGUgaXMgbm90IHRoZSBgS2V5d29yZFR5cGVgIGZvciBhIHBhcnRpY3VsYXIga2V5d29yZCwgaXQgd2lsbCBub3RcbiAqICAgYmUgcGFzc2VkIHRvIHRoZSBrZXl3b3JkJ3MgYGFzc2VydGAgbWV0aG9kLlxuICpcbiAqIGBFeHByYCBrZXl3b3JkcyBhcmUgdXNlZCBpbiBleHByZXNzaW9uIHBvc2l0aW9ucyBhbmQgc2hvdWxkIHJldHVybiBISVJcbiAqIGV4cHJlc3Npb25zLiBgQmxvY2tgIGFuZCBgQXBwZW5kYCBrZXl3b3JkcyBhcmUgdXNlZCBpbiBzdGF0ZW1lbnRcbiAqIHBvc2l0aW9ucyBhbmQgc2hvdWxkIHJldHVybiBISVIgc3RhdGVtZW50cy5cbiAqXG4gKiBBIGtleXdvcmQgZGVmaW5pdGlvbiBoYXMgdHdvIHBhcnRzOlxuICpcbiAqIC0gYG1hdGNoYCwgd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyIGFuIEFTVCBub2RlIG1hdGNoZXMgdGhlIGtleXdvcmQsIGFuZCBjYW5cbiAqICAgb3B0aW9uYWxseSByZXR1cm4gc29tZSBpbmZvcm1hdGlvbiBleHRyYWN0ZWQgZnJvbSB0aGUgQVNUIG5vZGUuXG4gKiAtIGB0cmFuc2xhdGVgLCB3aGljaCB0YWtlcyBhIG1hdGNoaW5nIEFTVCBub2RlIGFzIHdlbGwgYXMgdGhlIGV4dHJhY3RlZFxuICogICBpbmZvcm1hdGlvbiBhbmQgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSBISVIgaW5zdHJ1Y3Rpb24uXG4gKlxuICogIyBFeGFtcGxlXG4gKlxuICogVGhpcyBrZXl3b3JkOlxuICpcbiAqIC0gdHVybnMgYChoZWxsbylgIGludG8gYFwiaGVsbG9cImBcbiAqICAgLSBhcyBsb25nIGFzIGBoZWxsb2AgaXMgbm90IGluIHNjb3BlXG4gKiAtIG1ha2VzIGl0IGFuIGVycm9yIHRvIHBhc3MgYW55IGFyZ3VtZW50cyAoc3VjaCBhcyBgKGhlbGxvIHdvcmxkKWApXG4gKlxuICogYGBgdHNcbiAqIGtleXdvcmRzKCdTdWJFeHByJykua3coJ2hlbGxvJywge1xuICogICBhc3NlcnQobm9kZTogRXhwcktleXdvcmROb2RlKTogUmVzdWx0PHZvaWQ+IHwgZmFsc2Uge1xuICogICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gdHJhbnNmb3JtIGBoZWxsb2AgYXMgYSBgUGF0aEV4cHJlc3Npb25gXG4gKiAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ1N1YkV4cHJlc3Npb24nKSB7XG4gKiAgICAgICByZXR1cm4gZmFsc2U7XG4gKiAgICAgfVxuICpcbiAqICAgICAvLyBub2RlLmhlYWQgd291bGQgYmUgYExvY2FsVmFySGVhZGAgaWYgYGhlbGxvYCB3YXMgaW4gc2NvcGVcbiAqICAgICBpZiAobm9kZS5oZWFkLnR5cGUgIT09ICdGcmVlVmFySGVhZCcpIHtcbiAqICAgICAgIHJldHVybiBmYWxzZTtcbiAqICAgICB9XG4gKlxuICogICAgIGlmIChub2RlLnBhcmFtcy5sZW5ndGggfHwgbm9kZS5oYXNoKSB7XG4gKiAgICAgICByZXR1cm4gRXJyKGdlbmVyYXRlU3ludGF4RXJyb3IoYChoZWxsbykgZG9lcyBub3QgdGFrZSBhbnkgYXJndW1lbnRzYCksIG5vZGUubG9jKTtcbiAqICAgICB9IGVsc2Uge1xuICogICAgICAgcmV0dXJuIE9rKCk7XG4gKiAgICAgfVxuICogICB9LFxuICpcbiAqICAgdHJhbnNsYXRlKG5vZGU6IEFTVHYyLlN1YkV4cHJlc3Npb24pOiBoaXIuRXhwcmVzc2lvbiB7XG4gKiAgICAgcmV0dXJuIEFTVHYyLmJ1aWxkZXJzLmxpdGVyYWwoXCJoZWxsb1wiLCBub2RlLmxvYylcbiAqICAgfVxuICogfSlcbiAqIGBgYFxuICpcbiAqIFRoZSBrZXl3b3JkIGluZnJhc3RydWN0dXJlIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbm9kZSBpcyB0aGUgcmlnaHRcbiAqIHR5cGUgYmVmb3JlIGNhbGxpbmcgYGFzc2VydGAsIHNvIHlvdSBvbmx5IG5lZWQgdG8gY29uc2lkZXIgYFN1YkV4cHJlc3Npb25gXG4gKiBhbmQgYFBhdGhFeHByZXNzaW9uYCBoZXJlLiBJdCBhbHNvIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbm9kZSBwYXNzZWRcbiAqIHRvIGBhc3NlcnRgIGhhcyB0aGUga2V5d29yZCBuYW1lIGluIHRoZSByaWdodCBwbGFjZS5cbiAqXG4gKiBOb3RlIHRoZSBpbXBvcnRhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuIHJldHVybmluZyBgZmFsc2VgIGZyb20gYGFzc2VydGAsXG4gKiB3aGljaCBqdXN0IG1lYW5zIHRoYXQgdGhlIG5vZGUgZGlkbid0IG1hdGNoLCBhbmQgcmV0dXJuaW5nIGBFcnJgLCB3aGljaFxuICogbWVhbnMgdGhhdCB0aGUgbm9kZSBtYXRjaGVkLCBidXQgdGhlcmUgd2FzIGEga2V5d29yZC1zcGVjaWZpYyBzeW50YXhcbiAqIGVycm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24ga2V5d29yZHM8SyBleHRlbmRzIEtleXdvcmRUeXBlPih0eXBlOiBLKTogS2V5d29yZHM8Sz4ge1xuICByZXR1cm4gbmV3IEtleXdvcmRzKHR5cGUpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBT0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQSxNQUFBLFdBQUEsQ0FBaUI7QUFRZixFQUFBLFdBQUEsQ0FBQSxPQUFBLEVBQUEsSUFBQSxFQUFBLFFBQUEsRUFHa0U7QUFGdEQsU0FBQSxPQUFBLEdBQUEsT0FBQTtBQUVGLFNBQUEsUUFBQSxHQUFBLFFBQUE7QUFFUixRQUFJLEtBQUssR0FBRyxJQUFaLEdBQVksRUFBWjs7QUFDQSxTQUFLLElBQUwsUUFBQSxJQUFxQixhQUFhLENBQWxDLElBQWtDLENBQWxDLEVBQTBDO0FBQ3hDLE1BQUEsS0FBSyxDQUFMLEdBQUEsQ0FBQSxRQUFBO0FBQ0Q7O0FBRUQsU0FBQSxLQUFBLEdBQUEsS0FBQTtBQUNEOztBQUVTLEVBQUEsS0FBSyxDQUFBLElBQUEsRUFBMkI7QUFDeEMsUUFBSSxDQUFDLEtBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBZSxJQUFJLENBQXhCLElBQUssQ0FBTCxFQUFnQztBQUM5QixhQUFBLEtBQUE7QUFDRDs7QUFFRCxRQUFJLElBQUksR0FBRyxpQkFBaUIsQ0FBNUIsSUFBNEIsQ0FBNUI7O0FBRUEsUUFBSSxJQUFJLEtBQUosSUFBQSxJQUFpQixJQUFJLENBQUosR0FBQSxDQUFBLElBQUEsS0FBckIsTUFBQSxFQUErQztBQUM3QyxVQUFJLElBQUksQ0FBSixJQUFBLENBQUEsTUFBQSxHQUFKLENBQUEsRUFBMEI7QUFDeEIsWUFBSSxJQUFJLENBQUosR0FBQSxDQUFBLFVBQUEsQ0FBQSxTQUFBLE9BQUosT0FBQSxFQUFpRDtBQUMvQztBQUNBO0FBQ0EsaUJBQUEsS0FBQTtBQUNEO0FBQ0Y7O0FBRUQsYUFBTyxJQUFJLENBQUosR0FBQSxDQUFBLElB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RixXQUFBLE1BQUE7QUFDRSxlQUFPLCtCQUErQixJQUF0QyxHQUFBOztBQUNGLFdBQUEsVUFBQTtBQUNFLGVBQU8sa0NBQWtDLElBQXpDLFdBQUE7O0FBQ0Y7QUFDRSxlQUFPLHFCQUFQLElBQU8sQ0FBUDtBQVZKO0FBRkcsR0FBQSxFQUFBLElBQUEsQ0FBUCxNQUFPLENBQVA7QUFnQkQ7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpRk0sU0FBQSxRQUFBLENBQUEsSUFBQSxFQUFpRDtBQUNyRCxTQUFPLElBQUEsUUFBQSxDQUFQLElBQU8sQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVNUdjIsXG4gIGdlbmVyYXRlU3ludGF4RXJyb3IsXG4gIGlzS2V5d29yZCxcbiAgS0VZV09SRFNfVFlQRVMsXG4gIEtleXdvcmRUeXBlLFxufSBmcm9tICdAZ2xpbW1lci9zeW50YXgnO1xuaW1wb3J0IHsgZXhoYXVzdGVkIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7IEVyciwgUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3Jlc3VsdCc7XG5pbXBvcnQgeyBOb3JtYWxpemF0aW9uU3RhdGUgfSBmcm9tICcuLi9jb250ZXh0JztcblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkRGVsZWdhdGU8TWF0Y2ggZXh0ZW5kcyBLZXl3b3JkTWF0Y2gsIFYsIE91dD4ge1xuICBhc3NlcnQob3B0aW9uczogTWF0Y2gsIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8Vj47XG4gIHRyYW5zbGF0ZShvcHRpb25zOiB7IG5vZGU6IE1hdGNoOyBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlIH0sIHBhcmFtOiBWKTogUmVzdWx0PE91dD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZDxLIGV4dGVuZHMgS2V5d29yZFR5cGUgPSBLZXl3b3JkVHlwZSwgT3V0ID0gdW5rbm93bj4ge1xuICB0cmFuc2xhdGUobm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10sIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8T3V0PiB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmxvY2tLZXl3b3JkPE91dCA9IHVua25vd24+IHtcbiAgdHJhbnNsYXRlKG5vZGU6IEFTVHYyLkludm9rZUJsb2NrLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsO1xufVxuXG5jbGFzcyBLZXl3b3JkSW1wbDxcbiAgSyBleHRlbmRzIEtleXdvcmRUeXBlLFxuICBTIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLFxuICBQYXJhbSA9IHVua25vd24sXG4gIE91dCA9IHVua25vd25cbj4ge1xuICBwcm90ZWN0ZWQgdHlwZXM6IFNldDxLZXl3b3JkQ2FuZGlkYXRlc1tLXVsndHlwZSddPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQga2V5d29yZDogUyxcbiAgICB0eXBlOiBLZXl3b3JkVHlwZSxcbiAgICBwcml2YXRlIGRlbGVnYXRlOiBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoZXNbS10sIFBhcmFtLCBPdXQ+XG4gICkge1xuICAgIGxldCBub2RlcyA9IG5ldyBTZXQ8S2V5d29yZE5vZGVbJ3R5cGUnXT4oKTtcbiAgICBmb3IgKGxldCBub2RlVHlwZSBvZiBLRVlXT1JEX05PREVTW3R5cGVdKSB7XG4gICAgICBub2Rlcy5hZGQobm9kZVR5cGUpO1xuICAgIH1cblxuICAgIHRoaXMudHlwZXMgPSBub2RlcztcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXRjaChub2RlOiBLZXl3b3JkQ2FuZGlkYXRlc1tLXSk6IG5vZGUgaXMgS2V5d29yZE1hdGNoZXNbS10ge1xuICAgIGlmICghdGhpcy50eXBlcy5oYXMobm9kZS50eXBlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBwYXRoID0gZ2V0UGF0aEV4cHJlc3Npb24obm9kZSk7XG5cbiAgICBpZiAocGF0aCAhPT0gbnVsbCAmJiBwYXRoLnJlZi50eXBlID09PSAnRnJlZScpIHtcbiAgICAgIGlmIChwYXRoLnRhaWwubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAocGF0aC5yZWYucmVzb2x1dGlvbi5zZXJpYWxpemUoKSA9PT0gJ0xvb3NlJykge1xuICAgICAgICAgIC8vIGNhbm5vdCBiZSBhIGtleXdvcmQgcmVmZXJlbmNlLCBrZXl3b3JkcyBkbyBub3QgYWxsb3cgcGF0aHMgKG11c3QgYmVcbiAgICAgICAgICAvLyByZWx5aW5nIG9uIGltcGxpY2l0IHRoaXMgZmFsbGJhY2spXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXRoLnJlZi5uYW1lID09PSB0aGlzLmtleXdvcmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB0cmFuc2xhdGUobm9kZTogS2V5d29yZE1hdGNoZXNbS10sIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8T3V0PiB8IG51bGwge1xuICAgIGlmICh0aGlzLm1hdGNoKG5vZGUpKSB7XG4gICAgICBsZXQgcGF0aCA9IGdldFBhdGhFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgICBpZiAocGF0aCAhPT0gbnVsbCAmJiBwYXRoLnRhaWwubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gRXJyKFxuICAgICAgICAgIGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgICBgVGhlIFxcYCR7XG4gICAgICAgICAgICAgIHRoaXMua2V5d29yZFxuICAgICAgICAgICAgfVxcYCBrZXl3b3JkIHdhcyB1c2VkIGluY29ycmVjdGx5LiBJdCB3YXMgdXNlZCBhcyBcXGAke3BhdGgubG9jLmFzU3RyaW5nKCl9XFxgLCBidXQgaXQgY2Fubm90IGJlIHVzZWQgd2l0aCBhZGRpdGlvbmFsIHBhdGggc2VnbWVudHMuIFxcblxcbkVycm9yIGNhdXNlZCBieWAsXG4gICAgICAgICAgICBub2RlLmxvY1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHBhcmFtID0gdGhpcy5kZWxlZ2F0ZS5hc3NlcnQobm9kZSwgc3RhdGUpO1xuICAgICAgcmV0dXJuIHBhcmFtLmFuZFRoZW4oKHBhcmFtKSA9PiB0aGlzLmRlbGVnYXRlLnRyYW5zbGF0ZSh7IG5vZGUsIHN0YXRlIH0sIHBhcmFtKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBQb3NzaWJsZU5vZGUgPVxuICB8IEFTVHYyLlBhdGhFeHByZXNzaW9uXG4gIHwgQVNUdjIuQXBwZW5kQ29udGVudFxuICB8IEFTVHYyLkNhbGxFeHByZXNzaW9uXG4gIHwgQVNUdjIuSW52b2tlQmxvY2s7XG5cbmV4cG9ydCBjb25zdCBLRVlXT1JEX05PREVTID0ge1xuICBDYWxsOiBbJ0NhbGwnXSxcbiAgQmxvY2s6IFsnSW52b2tlQmxvY2snXSxcbiAgQXBwZW5kOiBbJ0FwcGVuZENvbnRlbnQnXSxcbiAgTW9kaWZpZXI6IFsnRWxlbWVudE1vZGlmaWVyJ10sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmRDYW5kaWRhdGVzIHtcbiAgQ2FsbDogQVNUdjIuRXhwcmVzc2lvbk5vZGU7XG4gIEJsb2NrOiBBU1R2Mi5JbnZva2VCbG9jaztcbiAgQXBwZW5kOiBBU1R2Mi5BcHBlbmRDb250ZW50O1xuICBNb2RpZmllcjogQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xufVxuXG5leHBvcnQgdHlwZSBLZXl3b3JkQ2FuZGlkYXRlID0gS2V5d29yZENhbmRpZGF0ZXNba2V5b2YgS2V5d29yZENhbmRpZGF0ZXNdO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmRNYXRjaGVzIHtcbiAgQ2FsbDogQVNUdjIuQ2FsbEV4cHJlc3Npb247XG4gIEJsb2NrOiBBU1R2Mi5JbnZva2VCbG9jaztcbiAgQXBwZW5kOiBBU1R2Mi5BcHBlbmRDb250ZW50O1xuICBNb2RpZmllcjogQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xufVxuXG5leHBvcnQgdHlwZSBLZXl3b3JkTWF0Y2ggPSBLZXl3b3JkTWF0Y2hlc1trZXlvZiBLZXl3b3JkTWF0Y2hlc107XG5cbi8qKlxuICogQSBcImdlbmVyaWNcIiBrZXl3b3JkIGlzIHNvbWV0aGluZyBsaWtlIGBoYXMtYmxvY2tgLCB3aGljaCBtYWtlcyBzZW5zZSBpbiB0aGUgY29udGV4dFxuICogb2Ygc3ViLWV4cHJlc3Npb24gb3IgYXBwZW5kXG4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyaWNLZXl3b3JkTm9kZSA9IEFTVHYyLkFwcGVuZENvbnRlbnQgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvbjtcblxuZXhwb3J0IHR5cGUgS2V5d29yZE5vZGUgPVxuICB8IEdlbmVyaWNLZXl3b3JkTm9kZVxuICB8IEFTVHYyLkNhbGxFeHByZXNzaW9uXG4gIHwgQVNUdjIuSW52b2tlQmxvY2tcbiAgfCBBU1R2Mi5FbGVtZW50TW9kaWZpZXI7XG5cbmV4cG9ydCBmdW5jdGlvbiBrZXl3b3JkPFxuICBLIGV4dGVuZHMgS2V5d29yZFR5cGUsXG4gIEQgZXh0ZW5kcyBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoZXNbS10sIHVua25vd24sIE91dD4sXG4gIE91dCA9IHVua25vd25cbj4oa2V5d29yZDogc3RyaW5nLCB0eXBlOiBLLCBkZWxlZ2F0ZTogRCk6IEtleXdvcmQ8SywgT3V0PiB7XG4gIHJldHVybiBuZXcgS2V5d29yZEltcGwoa2V5d29yZCwgdHlwZSwgZGVsZWdhdGUgYXMgS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaCwgdW5rbm93biwgT3V0Pik7XG59XG5cbmV4cG9ydCB0eXBlIFBvc3NpYmxlS2V5d29yZCA9IEtleXdvcmROb2RlO1xudHlwZSBPdXRGb3I8SyBleHRlbmRzIEtleXdvcmQgfCBCbG9ja0tleXdvcmQ+ID0gSyBleHRlbmRzIEJsb2NrS2V5d29yZDxpbmZlciBPdXQ+XG4gID8gT3V0XG4gIDogSyBleHRlbmRzIEtleXdvcmQ8S2V5d29yZFR5cGUsIGluZmVyIE91dD5cbiAgPyBPdXRcbiAgOiBuZXZlcjtcblxuZnVuY3Rpb24gZ2V0UGF0aEV4cHJlc3Npb24obm9kZTogS2V5d29yZE5vZGUgfCBBU1R2Mi5FeHByZXNzaW9uTm9kZSk6IEFTVHYyLlBhdGhFeHByZXNzaW9uIHwgbnVsbCB7XG4gIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgLy8gVGhpcyBjb3ZlcnMgdGhlIGluc2lkZSBvZiBhdHRyaWJ1dGVzIGFuZCBleHByZXNzaW9ucywgYXMgd2VsbCBhcyB0aGUgY2FsbGVlXG4gICAgLy8gb2YgY2FsbCBub2Rlc1xuICAgIGNhc2UgJ1BhdGgnOlxuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgY2FzZSAnQXBwZW5kQ29udGVudCc6XG4gICAgICByZXR1cm4gZ2V0UGF0aEV4cHJlc3Npb24obm9kZS52YWx1ZSk7XG4gICAgY2FzZSAnQ2FsbCc6XG4gICAgY2FzZSAnSW52b2tlQmxvY2snOlxuICAgIGNhc2UgJ0VsZW1lbnRNb2RpZmllcic6XG4gICAgICByZXR1cm4gZ2V0UGF0aEV4cHJlc3Npb24obm9kZS5jYWxsZWUpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2V5d29yZHM8SyBleHRlbmRzIEtleXdvcmRUeXBlLCBLZXl3b3JkTGlzdCBleHRlbmRzIEtleXdvcmQ8Sz4gPSBuZXZlcj5cbiAgaW1wbGVtZW50cyBLZXl3b3JkPEssIE91dEZvcjxLZXl3b3JkTGlzdD4+IHtcbiAgI2tleXdvcmRzOiBLZXl3b3JkW10gPSBbXTtcbiAgI3R5cGU6IEs7XG5cbiAgY29uc3RydWN0b3IodHlwZTogSykge1xuICAgIHRoaXMuI3R5cGUgPSB0eXBlO1xuICB9XG5cbiAga3c8UyBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgT3V0ID0gdW5rbm93bj4oXG4gICAgbmFtZTogUyxcbiAgICBkZWxlZ2F0ZTogS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCB1bmtub3duLCBPdXQ+XG4gICk6IEtleXdvcmRzPEssIEtleXdvcmRMaXN0IHwgS2V5d29yZDxLLCBPdXQ+PiB7XG4gICAgdGhpcy4ja2V5d29yZHMucHVzaChrZXl3b3JkKG5hbWUsIHRoaXMuI3R5cGUsIGRlbGVnYXRlKSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRyYW5zbGF0ZShcbiAgICBub2RlOiBLZXl3b3JkQ2FuZGlkYXRlc1tLXSxcbiAgICBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlXG4gICk6IFJlc3VsdDxPdXRGb3I8S2V5d29yZExpc3Q+PiB8IG51bGwge1xuICAgIGZvciAobGV0IGtleXdvcmQgb2YgdGhpcy4ja2V5d29yZHMpIHtcbiAgICAgIGxldCByZXN1bHQgPSBrZXl3b3JkLnRyYW5zbGF0ZShub2RlLCBzdGF0ZSkgYXMgUmVzdWx0PE91dEZvcjxLZXl3b3JkTGlzdD4+O1xuICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwYXRoID0gZ2V0UGF0aEV4cHJlc3Npb24obm9kZSk7XG5cbiAgICBpZiAocGF0aCAmJiBwYXRoLnJlZi50eXBlID09PSAnRnJlZScgJiYgaXNLZXl3b3JkKHBhdGgucmVmLm5hbWUpKSB7XG4gICAgICBsZXQgeyBuYW1lIH0gPSBwYXRoLnJlZjtcblxuICAgICAgbGV0IHVzZWRUeXBlID0gdGhpcy4jdHlwZTtcbiAgICAgIGxldCB2YWxpZFR5cGVzID0gS0VZV09SRFNfVFlQRVNbbmFtZV07XG5cbiAgICAgIGlmICh2YWxpZFR5cGVzLmluZGV4T2YodXNlZFR5cGUpID09PSAtMSkge1xuICAgICAgICByZXR1cm4gRXJyKFxuICAgICAgICAgIGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgICBgVGhlIFxcYCR7bmFtZX1cXGAga2V5d29yZCB3YXMgdXNlZCBpbmNvcnJlY3RseS4gSXQgd2FzIHVzZWQgYXMgJHtcbiAgICAgICAgICAgICAgdHlwZXNUb1JlYWRhYmxlTmFtZVt1c2VkVHlwZV1cbiAgICAgICAgICAgIH0sIGJ1dCBpdHMgdmFsaWQgdXNhZ2VzIGFyZTpcXG5cXG4ke2dlbmVyYXRlVHlwZXNNZXNzYWdlKFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICB2YWxpZFR5cGVzXG4gICAgICAgICAgICApfVxcblxcbkVycm9yIGNhdXNlZCBieWAsXG4gICAgICAgICAgICBub2RlLmxvY1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5jb25zdCB0eXBlc1RvUmVhZGFibGVOYW1lID0ge1xuICBBcHBlbmQ6ICdhbiBhcHBlbmQgc3RhdGVtZW50JyxcbiAgQmxvY2s6ICdhIGJsb2NrIHN0YXRlbWVudCcsXG4gIENhbGw6ICdhIGNhbGwgZXhwcmVzc2lvbicsXG4gIE1vZGlmaWVyOiAnYSBtb2RpZmllcicsXG59O1xuXG5mdW5jdGlvbiBnZW5lcmF0ZVR5cGVzTWVzc2FnZShuYW1lOiBzdHJpbmcsIHR5cGVzOiBLZXl3b3JkVHlwZVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVzXG4gICAgLm1hcCgodHlwZSkgPT4ge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ0FwcGVuZCc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGFuIGFwcGVuZCBzdGF0ZW1lbnQsIGFzIGluOiB7eyR7bmFtZX19fWA7XG4gICAgICAgIGNhc2UgJ0Jsb2NrJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYSBibG9jayBzdGF0ZW1lbnQsIGFzIGluOiB7eyMke25hbWV9fX17ey8ke25hbWV9fX1gO1xuICAgICAgICBjYXNlICdDYWxsJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYW4gZXhwcmVzc2lvbiwgYXMgaW46ICgke25hbWV9KWA7XG4gICAgICAgIGNhc2UgJ01vZGlmaWVyJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYSBtb2RpZmllciwgYXMgaW46IDxkaXYge3ske25hbWV9fX0+PC9kaXY+YDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZXhoYXVzdGVkKHR5cGUpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmpvaW4oJ1xcblxcbicpO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYnVpbGRzIGtleXdvcmQgZGVmaW5pdGlvbnMgZm9yIGEgcGFydGljdWxhciB0eXBlIG9mIEFTVCBub2RlIChgS2V5d29yZFR5cGVgKS5cbiAqXG4gKiBZb3UgY2FuIGJ1aWxkIGtleXdvcmQgZGVmaW5pdGlvbnMgZm9yOlxuICpcbiAqIC0gYEV4cHJgOiBBIGBTdWJFeHByZXNzaW9uYCBvciBgUGF0aEV4cHJlc3Npb25gXG4gKiAtIGBCbG9ja2A6IEEgYEJsb2NrU3RhdGVtZW50YFxuICogICAtIEEgYEJsb2NrU3RhdGVtZW50YCBpcyBhIGtleXdvcmQgY2FuZGlkYXRlIGlmIGl0cyBoZWFkIGlzIGFcbiAqICAgICBgUGF0aEV4cHJlc3Npb25gXG4gKiAtIGBBcHBlbmRgOiBBbiBgQXBwZW5kU3RhdGVtZW50YFxuICpcbiAqIEEgbm9kZSBpcyBhIGtleXdvcmQgY2FuZGlkYXRlIGlmOlxuICpcbiAqIC0gQSBgUGF0aEV4cHJlc3Npb25gIGlzIGEga2V5d29yZCBjYW5kaWRhdGUgaWYgaXQgaGFzIG5vIHRhaWwsIGFuZCBpdHNcbiAqICAgaGVhZCBleHByZXNzaW9uIGlzIGEgYExvY2FsVmFySGVhZGAgb3IgYEZyZWVWYXJIZWFkYCB3aG9zZSBuYW1lIGlzXG4gKiAgIHRoZSBrZXl3b3JkJ3MgbmFtZS5cbiAqIC0gQSBgU3ViRXhwcmVzc2lvbmAsIGBBcHBlbmRTdGF0ZW1lbnRgLCBvciBgQmxvY2tTdGF0ZW1lbnRgIGlzIGEga2V5d29yZFxuICogICBjYW5kaWRhdGUgaWYgaXRzIGhlYWQgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZS5cbiAqXG4gKiBUaGUga2V5d29yZCBpbmZyYXN0cnVjdHVyZSBndWFyYW50ZWVzIHRoYXQ6XG4gKlxuICogLSBJZiBhIG5vZGUgaXMgbm90IGEga2V5d29yZCBjYW5kaWRhdGUsIGl0IGlzIG5ldmVyIHBhc3NlZCB0byBhbnkga2V5d29yZCdzXG4gKiAgIGBhc3NlcnRgIG1ldGhvZC5cbiAqIC0gSWYgYSBub2RlIGlzIG5vdCB0aGUgYEtleXdvcmRUeXBlYCBmb3IgYSBwYXJ0aWN1bGFyIGtleXdvcmQsIGl0IHdpbGwgbm90XG4gKiAgIGJlIHBhc3NlZCB0byB0aGUga2V5d29yZCdzIGBhc3NlcnRgIG1ldGhvZC5cbiAqXG4gKiBgRXhwcmAga2V5d29yZHMgYXJlIHVzZWQgaW4gZXhwcmVzc2lvbiBwb3NpdGlvbnMgYW5kIHNob3VsZCByZXR1cm4gSElSXG4gKiBleHByZXNzaW9ucy4gYEJsb2NrYCBhbmQgYEFwcGVuZGAga2V5d29yZHMgYXJlIHVzZWQgaW4gc3RhdGVtZW50XG4gKiBwb3NpdGlvbnMgYW5kIHNob3VsZCByZXR1cm4gSElSIHN0YXRlbWVudHMuXG4gKlxuICogQSBrZXl3b3JkIGRlZmluaXRpb24gaGFzIHR3byBwYXJ0czpcbiAqXG4gKiAtIGBtYXRjaGAsIHdoaWNoIGRldGVybWluZXMgd2hldGhlciBhbiBBU1Qgbm9kZSBtYXRjaGVzIHRoZSBrZXl3b3JkLCBhbmQgY2FuXG4gKiAgIG9wdGlvbmFsbHkgcmV0dXJuIHNvbWUgaW5mb3JtYXRpb24gZXh0cmFjdGVkIGZyb20gdGhlIEFTVCBub2RlLlxuICogLSBgdHJhbnNsYXRlYCwgd2hpY2ggdGFrZXMgYSBtYXRjaGluZyBBU1Qgbm9kZSBhcyB3ZWxsIGFzIHRoZSBleHRyYWN0ZWRcbiAqICAgaW5mb3JtYXRpb24gYW5kIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgSElSIGluc3RydWN0aW9uLlxuICpcbiAqICMgRXhhbXBsZVxuICpcbiAqIFRoaXMga2V5d29yZDpcbiAqXG4gKiAtIHR1cm5zIGAoaGVsbG8pYCBpbnRvIGBcImhlbGxvXCJgXG4gKiAgIC0gYXMgbG9uZyBhcyBgaGVsbG9gIGlzIG5vdCBpbiBzY29wZVxuICogLSBtYWtlcyBpdCBhbiBlcnJvciB0byBwYXNzIGFueSBhcmd1bWVudHMgKHN1Y2ggYXMgYChoZWxsbyB3b3JsZClgKVxuICpcbiAqIGBgYHRzXG4gKiBrZXl3b3JkcygnU3ViRXhwcicpLmt3KCdoZWxsbycsIHtcbiAqICAgYXNzZXJ0KG5vZGU6IEV4cHJLZXl3b3JkTm9kZSk6IFJlc3VsdDx2b2lkPiB8IGZhbHNlIHtcbiAqICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIHRyYW5zZm9ybSBgaGVsbG9gIGFzIGEgYFBhdGhFeHByZXNzaW9uYFxuICogICAgIGlmIChub2RlLnR5cGUgIT09ICdTdWJFeHByZXNzaW9uJykge1xuICogICAgICAgcmV0dXJuIGZhbHNlO1xuICogICAgIH1cbiAqXG4gKiAgICAgLy8gbm9kZS5oZWFkIHdvdWxkIGJlIGBMb2NhbFZhckhlYWRgIGlmIGBoZWxsb2Agd2FzIGluIHNjb3BlXG4gKiAgICAgaWYgKG5vZGUuaGVhZC50eXBlICE9PSAnRnJlZVZhckhlYWQnKSB7XG4gKiAgICAgICByZXR1cm4gZmFsc2U7XG4gKiAgICAgfVxuICpcbiAqICAgICBpZiAobm9kZS5wYXJhbXMubGVuZ3RoIHx8IG5vZGUuaGFzaCkge1xuICogICAgICAgcmV0dXJuIEVycihnZW5lcmF0ZVN5bnRheEVycm9yKGAoaGVsbG8pIGRvZXMgbm90IHRha2UgYW55IGFyZ3VtZW50c2ApLCBub2RlLmxvYyk7XG4gKiAgICAgfSBlbHNlIHtcbiAqICAgICAgIHJldHVybiBPaygpO1xuICogICAgIH1cbiAqICAgfSxcbiAqXG4gKiAgIHRyYW5zbGF0ZShub2RlOiBBU1R2Mi5TdWJFeHByZXNzaW9uKTogaGlyLkV4cHJlc3Npb24ge1xuICogICAgIHJldHVybiBBU1R2Mi5idWlsZGVycy5saXRlcmFsKFwiaGVsbG9cIiwgbm9kZS5sb2MpXG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBUaGUga2V5d29yZCBpbmZyYXN0cnVjdHVyZSBjaGVja3MgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5vZGUgaXMgdGhlIHJpZ2h0XG4gKiB0eXBlIGJlZm9yZSBjYWxsaW5nIGBhc3NlcnRgLCBzbyB5b3Ugb25seSBuZWVkIHRvIGNvbnNpZGVyIGBTdWJFeHByZXNzaW9uYFxuICogYW5kIGBQYXRoRXhwcmVzc2lvbmAgaGVyZS4gSXQgYWxzbyBjaGVja3MgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5vZGUgcGFzc2VkXG4gKiB0byBgYXNzZXJ0YCBoYXMgdGhlIGtleXdvcmQgbmFtZSBpbiB0aGUgcmlnaHQgcGxhY2UuXG4gKlxuICogTm90ZSB0aGUgaW1wb3J0YW50IGRpZmZlcmVuY2UgYmV0d2VlbiByZXR1cm5pbmcgYGZhbHNlYCBmcm9tIGBhc3NlcnRgLFxuICogd2hpY2gganVzdCBtZWFucyB0aGF0IHRoZSBub2RlIGRpZG4ndCBtYXRjaCwgYW5kIHJldHVybmluZyBgRXJyYCwgd2hpY2hcbiAqIG1lYW5zIHRoYXQgdGhlIG5vZGUgbWF0Y2hlZCwgYnV0IHRoZXJlIHdhcyBhIGtleXdvcmQtc3BlY2lmaWMgc3ludGF4XG4gKiBlcnJvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGtleXdvcmRzPEsgZXh0ZW5kcyBLZXl3b3JkVHlwZT4odHlwZTogSyk6IEtleXdvcmRzPEs+IHtcbiAgcmV0dXJuIG5ldyBLZXl3b3Jkcyh0eXBlKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= |
@@ -103,2 +103,10 @@ "use strict"; | ||
if (path !== null && path.ref.type === 'Free') { | ||
if (path.tail.length > 0) { | ||
if (path.ref.resolution.serialize() === 'Loose') { | ||
// cannot be a keyword reference, keywords do not allow paths (must be | ||
// relying on implicit this fallback) | ||
return false; | ||
} | ||
} | ||
return path.ref.name === this.keyword; | ||
@@ -114,2 +122,8 @@ } else { | ||
if (this.match(node)) { | ||
var path = getPathExpression(node); | ||
if (path !== null && path.tail.length > 0) { | ||
return (0, _result.Err)((0, _syntax.generateSyntaxError)("The `" + this.keyword + "` keyword was used incorrectly. It was used as `" + path.loc.asString() + "`, but it cannot be used with additional path segments. \n\nError caused by", node.loc)); | ||
} | ||
var param = this.delegate.assert(node, state); | ||
@@ -325,2 +339,2 @@ return param.andThen(function (param) { | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBT0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBZ0JBLFc7QUFRRSxXQUFBLFdBQUEsQ0FBQSxPQUFBLEVBQUEsSUFBQSxFQUFBLFFBQUEsRUFHa0U7QUFGdEQsU0FBQSxPQUFBLEdBQUEsT0FBQTtBQUVGLFNBQUEsUUFBQSxHQUFBLFFBQUE7QUFFUixRQUFJLEtBQUssR0FBRyxJQUFaLEdBQVksRUFBWjs7QUFDQSxTQUFBLElBQUEsU0FBQSxHQUFBLCtCQUFBLENBQXFCLGFBQWEsQ0FBbEMsSUFBa0MsQ0FBbEMsQ0FBQSxFQUFBLEtBQUEsRUFBQSxDQUFBLENBQUEsS0FBQSxHQUFBLFNBQUEsRUFBQSxFQUFBLElBQUEsR0FBMEM7QUFBQSxVQUExQyxRQUEwQyxHQUFBLEtBQUEsQ0FBQSxLQUFBO0FBQ3hDLE1BQUEsS0FBSyxDQUFMLEdBQUEsQ0FBQSxRQUFBO0FBQ0Q7O0FBRUQsU0FBQSxLQUFBLEdBQUEsS0FBQTtBQUNEOzs7O1NBRVMsSyxHQUFBLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBZ0M7QUFDeEMsUUFBSSxDQUFDLEtBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBZSxJQUFJLENBQXhCLElBQUssQ0FBTCxFQUFnQztBQUM5QixhQUFBLEtBQUE7QUFDRDs7QUFFRCxRQUFJLElBQUksR0FBRyxpQkFBaUIsQ0FBNUIsSUFBNEIsQ0FBNUI7O0FBRUEsUUFBSSxJQUFJLEtBQUosSUFBQSxJQUFpQixJQUFJLENBQUosR0FBQSxDQUFBLElBQUEsS0FBckIsTUFBQSxFQUErQztBQUM3QyxhQUFPLElBQUksQ0FBSixHQUFBLENBQUEsSUFBQSxL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O0FBQ0UsV0FBQSxRQUFBO0FBQ0UsZUFBQSx3Q0FBQSxJQUFBLEdBQUEsSUFBQTs7QUFDRixXQUFBLE9BQUE7QUFDRSxlQUFBLHVDQUFBLElBQUEsR0FBQSxPQUFBLEdBQUEsSUFBQSxHQUFBLElBQUE7O0FBQ0YsV0FBQSxNQUFBO0FBQ0UsZUFBQSxpQ0FBQSxJQUFBLEdBQUEsR0FBQTs7QUFDRixXQUFBLFVBQUE7QUFDRSxlQUFBLG9DQUFBLElBQUEsR0FBQSxXQUFBOztBQUNGO0FBQ0UsZUFBTyxxQkFBUCxJQUFPLENBQVA7QUFWSjtBQUZHLEdBQUEsRUFBQSxJQUFBLENBQVAsTUFBTyxDQUFQO0FBZ0JEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUZNLFNBQUEsUUFBQSxDQUFBLElBQUEsRUFBaUQ7QUFDckQsU0FBTyxJQUFBLFFBQUEsQ0FBUCxJQUFPLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFTVHYyLFxuICBnZW5lcmF0ZVN5bnRheEVycm9yLFxuICBpc0tleXdvcmQsXG4gIEtFWVdPUkRTX1RZUEVTLFxuICBLZXl3b3JkVHlwZSxcbn0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IGV4aGF1c3RlZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBFcnIsIFJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9yZXN1bHQnO1xuaW1wb3J0IHsgTm9ybWFsaXphdGlvblN0YXRlIH0gZnJvbSAnLi4vY29udGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZERlbGVnYXRlPE1hdGNoIGV4dGVuZHMgS2V5d29yZE1hdGNoLCBWLCBPdXQ+IHtcbiAgYXNzZXJ0KG9wdGlvbnM6IE1hdGNoLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PFY+O1xuICB0cmFuc2xhdGUob3B0aW9uczogeyBub2RlOiBNYXRjaDsgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSB9LCBwYXJhbTogVik6IFJlc3VsdDxPdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQ8SyBleHRlbmRzIEtleXdvcmRUeXBlID0gS2V5d29yZFR5cGUsIE91dCA9IHVua25vd24+IHtcbiAgdHJhbnNsYXRlKG5vZGU6IEtleXdvcmRDYW5kaWRhdGVzW0tdLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrS2V5d29yZDxPdXQgPSB1bmtub3duPiB7XG4gIHRyYW5zbGF0ZShub2RlOiBBU1R2Mi5JbnZva2VCbG9jaywgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxPdXQ+IHwgbnVsbDtcbn1cblxuY2xhc3MgS2V5d29yZEltcGw8XG4gIEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSxcbiAgUyBleHRlbmRzIHN0cmluZyA9IHN0cmluZyxcbiAgUGFyYW0gPSB1bmtub3duLFxuICBPdXQgPSB1bmtub3duXG4+IHtcbiAgcHJvdGVjdGVkIHR5cGVzOiBTZXQ8S2V5d29yZENhbmRpZGF0ZXNbS11bJ3R5cGUnXT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGtleXdvcmQ6IFMsXG4gICAgdHlwZTogS2V5d29yZFR5cGUsXG4gICAgcHJpdmF0ZSBkZWxlZ2F0ZTogS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCBQYXJhbSwgT3V0PlxuICApIHtcbiAgICBsZXQgbm9kZXMgPSBuZXcgU2V0PEtleXdvcmROb2RlWyd0eXBlJ10+KCk7XG4gICAgZm9yIChsZXQgbm9kZVR5cGUgb2YgS0VZV09SRF9OT0RFU1t0eXBlXSkge1xuICAgICAgbm9kZXMuYWRkKG5vZGVUeXBlKTtcbiAgICB9XG5cbiAgICB0aGlzLnR5cGVzID0gbm9kZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWF0Y2gobm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10pOiBub2RlIGlzIEtleXdvcmRNYXRjaGVzW0tdIHtcbiAgICBpZiAoIXRoaXMudHlwZXMuaGFzKG5vZGUudHlwZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgcGF0aCA9IGdldFBhdGhFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgaWYgKHBhdGggIT09IG51bGwgJiYgcGF0aC5yZWYudHlwZSA9PT0gJ0ZyZWUnKSB7XG4gICAgICByZXR1cm4gcGF0aC5yZWYubmFtZSA9PT0gdGhpcy5rZXl3b3JkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdHJhbnNsYXRlKG5vZGU6IEtleXdvcmRNYXRjaGVzW0tdLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsIHtcbiAgICBpZiAodGhpcy5tYXRjaChub2RlKSkge1xuICAgICAgbGV0IHBhcmFtID0gdGhpcy5kZWxlZ2F0ZS5hc3NlcnQobm9kZSwgc3RhdGUpO1xuICAgICAgcmV0dXJuIHBhcmFtLmFuZFRoZW4oKHBhcmFtKSA9PiB0aGlzLmRlbGVnYXRlLnRyYW5zbGF0ZSh7IG5vZGUsIHN0YXRlIH0sIHBhcmFtKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBQb3NzaWJsZU5vZGUgPVxuICB8IEFTVHYyLlBhdGhFeHByZXNzaW9uXG4gIHwgQVNUdjIuQXBwZW5kQ29udGVudFxuICB8IEFTVHYyLkNhbGxFeHByZXNzaW9uXG4gIHwgQVNUdjIuSW52b2tlQmxvY2s7XG5cbmV4cG9ydCBjb25zdCBLRVlXT1JEX05PREVTID0ge1xuICBDYWxsOiBbJ0NhbGwnXSxcbiAgQmxvY2s6IFsnSW52b2tlQmxvY2snXSxcbiAgQXBwZW5kOiBbJ0FwcGVuZENvbnRlbnQnXSxcbiAgTW9kaWZpZXI6IFsnRWxlbWVudE1vZGlmaWVyJ10sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmRDYW5kaWRhdGVzIHtcbiAgQ2FsbDogQVNUdjIuRXhwcmVzc2lvbk5vZGU7XG4gIEJsb2NrOiBBU1R2Mi5JbnZva2VCbG9jaztcbiAgQXBwZW5kOiBBU1R2Mi5BcHBlbmRDb250ZW50O1xuICBNb2RpZmllcjogQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xufVxuXG5leHBvcnQgdHlwZSBLZXl3b3JkQ2FuZGlkYXRlID0gS2V5d29yZENhbmRpZGF0ZXNba2V5b2YgS2V5d29yZENhbmRpZGF0ZXNdO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmRNYXRjaGVzIHtcbiAgQ2FsbDogQVNUdjIuQ2FsbEV4cHJlc3Npb247XG4gIEJsb2NrOiBBU1R2Mi5JbnZva2VCbG9jaztcbiAgQXBwZW5kOiBBU1R2Mi5BcHBlbmRDb250ZW50O1xuICBNb2RpZmllcjogQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xufVxuXG5leHBvcnQgdHlwZSBLZXl3b3JkTWF0Y2ggPSBLZXl3b3JkTWF0Y2hlc1trZXlvZiBLZXl3b3JkTWF0Y2hlc107XG5cbi8qKlxuICogQSBcImdlbmVyaWNcIiBrZXl3b3JkIGlzIHNvbWV0aGluZyBsaWtlIGBoYXMtYmxvY2tgLCB3aGljaCBtYWtlcyBzZW5zZSBpbiB0aGUgY29udGV4dFxuICogb2Ygc3ViLWV4cHJlc3Npb24gb3IgYXBwZW5kXG4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyaWNLZXl3b3JkTm9kZSA9IEFTVHYyLkFwcGVuZENvbnRlbnQgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvbjtcblxuZXhwb3J0IHR5cGUgS2V5d29yZE5vZGUgPVxuICB8IEdlbmVyaWNLZXl3b3JkTm9kZVxuICB8IEFTVHYyLkNhbGxFeHByZXNzaW9uXG4gIHwgQVNUdjIuSW52b2tlQmxvY2tcbiAgfCBBU1R2Mi5FbGVtZW50TW9kaWZpZXI7XG5cbmV4cG9ydCBmdW5jdGlvbiBrZXl3b3JkPFxuICBLIGV4dGVuZHMgS2V5d29yZFR5cGUsXG4gIEQgZXh0ZW5kcyBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoZXNbS10sIHVua25vd24sIE91dD4sXG4gIE91dCA9IHVua25vd25cbj4oa2V5d29yZDogc3RyaW5nLCB0eXBlOiBLLCBkZWxlZ2F0ZTogRCk6IEtleXdvcmQ8SywgT3V0PiB7XG4gIHJldHVybiBuZXcgS2V5d29yZEltcGwoa2V5d29yZCwgdHlwZSwgZGVsZWdhdGUgYXMgS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaCwgdW5rbm93biwgT3V0Pik7XG59XG5cbmV4cG9ydCB0eXBlIFBvc3NpYmxlS2V5d29yZCA9IEtleXdvcmROb2RlO1xudHlwZSBPdXRGb3I8SyBleHRlbmRzIEtleXdvcmQgfCBCbG9ja0tleXdvcmQ+ID0gSyBleHRlbmRzIEJsb2NrS2V5d29yZDxpbmZlciBPdXQ+XG4gID8gT3V0XG4gIDogSyBleHRlbmRzIEtleXdvcmQ8S2V5d29yZFR5cGUsIGluZmVyIE91dD5cbiAgPyBPdXRcbiAgOiBuZXZlcjtcblxuZnVuY3Rpb24gZ2V0UGF0aEV4cHJlc3Npb24obm9kZTogS2V5d29yZE5vZGUgfCBBU1R2Mi5FeHByZXNzaW9uTm9kZSk6IEFTVHYyLlBhdGhFeHByZXNzaW9uIHwgbnVsbCB7XG4gIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgLy8gVGhpcyBjb3ZlcnMgdGhlIGluc2lkZSBvZiBhdHRyaWJ1dGVzIGFuZCBleHByZXNzaW9ucywgYXMgd2VsbCBhcyB0aGUgY2FsbGVlXG4gICAgLy8gb2YgY2FsbCBub2Rlc1xuICAgIGNhc2UgJ1BhdGgnOlxuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgY2FzZSAnQXBwZW5kQ29udGVudCc6XG4gICAgICByZXR1cm4gZ2V0UGF0aEV4cHJlc3Npb24obm9kZS52YWx1ZSk7XG4gICAgY2FzZSAnQ2FsbCc6XG4gICAgY2FzZSAnSW52b2tlQmxvY2snOlxuICAgIGNhc2UgJ0VsZW1lbnRNb2RpZmllcic6XG4gICAgICByZXR1cm4gZ2V0UGF0aEV4cHJlc3Npb24obm9kZS5jYWxsZWUpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2V5d29yZHM8SyBleHRlbmRzIEtleXdvcmRUeXBlLCBLZXl3b3JkTGlzdCBleHRlbmRzIEtleXdvcmQ8Sz4gPSBuZXZlcj5cbiAgaW1wbGVtZW50cyBLZXl3b3JkPEssIE91dEZvcjxLZXl3b3JkTGlzdD4+IHtcbiAgI2tleXdvcmRzOiBLZXl3b3JkW10gPSBbXTtcbiAgI3R5cGU6IEs7XG5cbiAgY29uc3RydWN0b3IodHlwZTogSykge1xuICAgIHRoaXMuI3R5cGUgPSB0eXBlO1xuICB9XG5cbiAga3c8UyBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgT3V0ID0gdW5rbm93bj4oXG4gICAgbmFtZTogUyxcbiAgICBkZWxlZ2F0ZTogS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCB1bmtub3duLCBPdXQ+XG4gICk6IEtleXdvcmRzPEssIEtleXdvcmRMaXN0IHwgS2V5d29yZDxLLCBPdXQ+PiB7XG4gICAgdGhpcy4ja2V5d29yZHMucHVzaChrZXl3b3JkKG5hbWUsIHRoaXMuI3R5cGUsIGRlbGVnYXRlKSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRyYW5zbGF0ZShcbiAgICBub2RlOiBLZXl3b3JkQ2FuZGlkYXRlc1tLXSxcbiAgICBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlXG4gICk6IFJlc3VsdDxPdXRGb3I8S2V5d29yZExpc3Q+PiB8IG51bGwge1xuICAgIGZvciAobGV0IGtleXdvcmQgb2YgdGhpcy4ja2V5d29yZHMpIHtcbiAgICAgIGxldCByZXN1bHQgPSBrZXl3b3JkLnRyYW5zbGF0ZShub2RlLCBzdGF0ZSkgYXMgUmVzdWx0PE91dEZvcjxLZXl3b3JkTGlzdD4+O1xuICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwYXRoID0gZ2V0UGF0aEV4cHJlc3Npb24obm9kZSk7XG5cbiAgICBpZiAocGF0aCAmJiBwYXRoLnJlZi50eXBlID09PSAnRnJlZScgJiYgaXNLZXl3b3JkKHBhdGgucmVmLm5hbWUpKSB7XG4gICAgICBsZXQgeyBuYW1lIH0gPSBwYXRoLnJlZjtcblxuICAgICAgbGV0IHVzZWRUeXBlID0gdGhpcy4jdHlwZTtcbiAgICAgIGxldCB2YWxpZFR5cGVzID0gS0VZV09SRFNfVFlQRVNbbmFtZV07XG5cbiAgICAgIGlmICh2YWxpZFR5cGVzLmluZGV4T2YodXNlZFR5cGUpID09PSAtMSkge1xuICAgICAgICByZXR1cm4gRXJyKFxuICAgICAgICAgIGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgICBgVGhlIFxcYCR7bmFtZX1cXGAga2V5d29yZCB3YXMgdXNlZCBpbmNvcnJlY3RseS4gSXQgd2FzIHVzZWQgYXMgJHtcbiAgICAgICAgICAgICAgdHlwZXNUb1JlYWRhYmxlTmFtZVt1c2VkVHlwZV1cbiAgICAgICAgICAgIH0sIGJ1dCBpdHMgdmFsaWQgdXNhZ2VzIGFyZTpcXG5cXG4ke2dlbmVyYXRlVHlwZXNNZXNzYWdlKFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICB2YWxpZFR5cGVzXG4gICAgICAgICAgICApfVxcblxcbkVycm9yIGNhdXNlZCBieWAsXG4gICAgICAgICAgICBub2RlLmxvY1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5jb25zdCB0eXBlc1RvUmVhZGFibGVOYW1lID0ge1xuICBBcHBlbmQ6ICdhbiBhcHBlbmQgc3RhdGVtZW50JyxcbiAgQmxvY2s6ICdhIGJsb2NrIHN0YXRlbWVudCcsXG4gIENhbGw6ICdhIGNhbGwgZXhwcmVzc2lvbicsXG4gIE1vZGlmaWVyOiAnYSBtb2RpZmllcicsXG59O1xuXG5mdW5jdGlvbiBnZW5lcmF0ZVR5cGVzTWVzc2FnZShuYW1lOiBzdHJpbmcsIHR5cGVzOiBLZXl3b3JkVHlwZVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVzXG4gICAgLm1hcCgodHlwZSkgPT4ge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ0FwcGVuZCc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGFuIGFwcGVuZCBzdGF0ZW1lbnQsIGFzIGluOiB7eyR7bmFtZX19fWA7XG4gICAgICAgIGNhc2UgJ0Jsb2NrJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYSBibG9jayBzdGF0ZW1lbnQsIGFzIGluOiB7eyMke25hbWV9fX17ey8ke25hbWV9fX1gO1xuICAgICAgICBjYXNlICdDYWxsJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYW4gZXhwcmVzc2lvbiwgYXMgaW46ICgke25hbWV9KWA7XG4gICAgICAgIGNhc2UgJ01vZGlmaWVyJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYSBtb2RpZmllciwgYXMgaW46IDxkaXYge3ske25hbWV9fX0+PC9kaXY+YDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZXhoYXVzdGVkKHR5cGUpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmpvaW4oJ1xcblxcbicpO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYnVpbGRzIGtleXdvcmQgZGVmaW5pdGlvbnMgZm9yIGEgcGFydGljdWxhciB0eXBlIG9mIEFTVCBub2RlIChgS2V5d29yZFR5cGVgKS5cbiAqXG4gKiBZb3UgY2FuIGJ1aWxkIGtleXdvcmQgZGVmaW5pdGlvbnMgZm9yOlxuICpcbiAqIC0gYEV4cHJgOiBBIGBTdWJFeHByZXNzaW9uYCBvciBgUGF0aEV4cHJlc3Npb25gXG4gKiAtIGBCbG9ja2A6IEEgYEJsb2NrU3RhdGVtZW50YFxuICogICAtIEEgYEJsb2NrU3RhdGVtZW50YCBpcyBhIGtleXdvcmQgY2FuZGlkYXRlIGlmIGl0cyBoZWFkIGlzIGFcbiAqICAgICBgUGF0aEV4cHJlc3Npb25gXG4gKiAtIGBBcHBlbmRgOiBBbiBgQXBwZW5kU3RhdGVtZW50YFxuICpcbiAqIEEgbm9kZSBpcyBhIGtleXdvcmQgY2FuZGlkYXRlIGlmOlxuICpcbiAqIC0gQSBgUGF0aEV4cHJlc3Npb25gIGlzIGEga2V5d29yZCBjYW5kaWRhdGUgaWYgaXQgaGFzIG5vIHRhaWwsIGFuZCBpdHNcbiAqICAgaGVhZCBleHByZXNzaW9uIGlzIGEgYExvY2FsVmFySGVhZGAgb3IgYEZyZWVWYXJIZWFkYCB3aG9zZSBuYW1lIGlzXG4gKiAgIHRoZSBrZXl3b3JkJ3MgbmFtZS5cbiAqIC0gQSBgU3ViRXhwcmVzc2lvbmAsIGBBcHBlbmRTdGF0ZW1lbnRgLCBvciBgQmxvY2tTdGF0ZW1lbnRgIGlzIGEga2V5d29yZFxuICogICBjYW5kaWRhdGUgaWYgaXRzIGhlYWQgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZS5cbiAqXG4gKiBUaGUga2V5d29yZCBpbmZyYXN0cnVjdHVyZSBndWFyYW50ZWVzIHRoYXQ6XG4gKlxuICogLSBJZiBhIG5vZGUgaXMgbm90IGEga2V5d29yZCBjYW5kaWRhdGUsIGl0IGlzIG5ldmVyIHBhc3NlZCB0byBhbnkga2V5d29yZCdzXG4gKiAgIGBhc3NlcnRgIG1ldGhvZC5cbiAqIC0gSWYgYSBub2RlIGlzIG5vdCB0aGUgYEtleXdvcmRUeXBlYCBmb3IgYSBwYXJ0aWN1bGFyIGtleXdvcmQsIGl0IHdpbGwgbm90XG4gKiAgIGJlIHBhc3NlZCB0byB0aGUga2V5d29yZCdzIGBhc3NlcnRgIG1ldGhvZC5cbiAqXG4gKiBgRXhwcmAga2V5d29yZHMgYXJlIHVzZWQgaW4gZXhwcmVzc2lvbiBwb3NpdGlvbnMgYW5kIHNob3VsZCByZXR1cm4gSElSXG4gKiBleHByZXNzaW9ucy4gYEJsb2NrYCBhbmQgYEFwcGVuZGAga2V5d29yZHMgYXJlIHVzZWQgaW4gc3RhdGVtZW50XG4gKiBwb3NpdGlvbnMgYW5kIHNob3VsZCByZXR1cm4gSElSIHN0YXRlbWVudHMuXG4gKlxuICogQSBrZXl3b3JkIGRlZmluaXRpb24gaGFzIHR3byBwYXJ0czpcbiAqXG4gKiAtIGBtYXRjaGAsIHdoaWNoIGRldGVybWluZXMgd2hldGhlciBhbiBBU1Qgbm9kZSBtYXRjaGVzIHRoZSBrZXl3b3JkLCBhbmQgY2FuXG4gKiAgIG9wdGlvbmFsbHkgcmV0dXJuIHNvbWUgaW5mb3JtYXRpb24gZXh0cmFjdGVkIGZyb20gdGhlIEFTVCBub2RlLlxuICogLSBgdHJhbnNsYXRlYCwgd2hpY2ggdGFrZXMgYSBtYXRjaGluZyBBU1Qgbm9kZSBhcyB3ZWxsIGFzIHRoZSBleHRyYWN0ZWRcbiAqICAgaW5mb3JtYXRpb24gYW5kIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgSElSIGluc3RydWN0aW9uLlxuICpcbiAqICMgRXhhbXBsZVxuICpcbiAqIFRoaXMga2V5d29yZDpcbiAqXG4gKiAtIHR1cm5zIGAoaGVsbG8pYCBpbnRvIGBcImhlbGxvXCJgXG4gKiAgIC0gYXMgbG9uZyBhcyBgaGVsbG9gIGlzIG5vdCBpbiBzY29wZVxuICogLSBtYWtlcyBpdCBhbiBlcnJvciB0byBwYXNzIGFueSBhcmd1bWVudHMgKHN1Y2ggYXMgYChoZWxsbyB3b3JsZClgKVxuICpcbiAqIGBgYHRzXG4gKiBrZXl3b3JkcygnU3ViRXhwcicpLmt3KCdoZWxsbycsIHtcbiAqICAgYXNzZXJ0KG5vZGU6IEV4cHJLZXl3b3JkTm9kZSk6IFJlc3VsdDx2b2lkPiB8IGZhbHNlIHtcbiAqICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIHRyYW5zZm9ybSBgaGVsbG9gIGFzIGEgYFBhdGhFeHByZXNzaW9uYFxuICogICAgIGlmIChub2RlLnR5cGUgIT09ICdTdWJFeHByZXNzaW9uJykge1xuICogICAgICAgcmV0dXJuIGZhbHNlO1xuICogICAgIH1cbiAqXG4gKiAgICAgLy8gbm9kZS5oZWFkIHdvdWxkIGJlIGBMb2NhbFZhckhlYWRgIGlmIGBoZWxsb2Agd2FzIGluIHNjb3BlXG4gKiAgICAgaWYgKG5vZGUuaGVhZC50eXBlICE9PSAnRnJlZVZhckhlYWQnKSB7XG4gKiAgICAgICByZXR1cm4gZmFsc2U7XG4gKiAgICAgfVxuICpcbiAqICAgICBpZiAobm9kZS5wYXJhbXMubGVuZ3RoIHx8IG5vZGUuaGFzaCkge1xuICogICAgICAgcmV0dXJuIEVycihnZW5lcmF0ZVN5bnRheEVycm9yKGAoaGVsbG8pIGRvZXMgbm90IHRha2UgYW55IGFyZ3VtZW50c2ApLCBub2RlLmxvYyk7XG4gKiAgICAgfSBlbHNlIHtcbiAqICAgICAgIHJldHVybiBPaygpO1xuICogICAgIH1cbiAqICAgfSxcbiAqXG4gKiAgIHRyYW5zbGF0ZShub2RlOiBBU1R2Mi5TdWJFeHByZXNzaW9uKTogaGlyLkV4cHJlc3Npb24ge1xuICogICAgIHJldHVybiBBU1R2Mi5idWlsZGVycy5saXRlcmFsKFwiaGVsbG9cIiwgbm9kZS5sb2MpXG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBUaGUga2V5d29yZCBpbmZyYXN0cnVjdHVyZSBjaGVja3MgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5vZGUgaXMgdGhlIHJpZ2h0XG4gKiB0eXBlIGJlZm9yZSBjYWxsaW5nIGBhc3NlcnRgLCBzbyB5b3Ugb25seSBuZWVkIHRvIGNvbnNpZGVyIGBTdWJFeHByZXNzaW9uYFxuICogYW5kIGBQYXRoRXhwcmVzc2lvbmAgaGVyZS4gSXQgYWxzbyBjaGVja3MgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5vZGUgcGFzc2VkXG4gKiB0byBgYXNzZXJ0YCBoYXMgdGhlIGtleXdvcmQgbmFtZSBpbiB0aGUgcmlnaHQgcGxhY2UuXG4gKlxuICogTm90ZSB0aGUgaW1wb3J0YW50IGRpZmZlcmVuY2UgYmV0d2VlbiByZXR1cm5pbmcgYGZhbHNlYCBmcm9tIGBhc3NlcnRgLFxuICogd2hpY2gganVzdCBtZWFucyB0aGF0IHRoZSBub2RlIGRpZG4ndCBtYXRjaCwgYW5kIHJldHVybmluZyBgRXJyYCwgd2hpY2hcbiAqIG1lYW5zIHRoYXQgdGhlIG5vZGUgbWF0Y2hlZCwgYnV0IHRoZXJlIHdhcyBhIGtleXdvcmQtc3BlY2lmaWMgc3ludGF4XG4gKiBlcnJvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGtleXdvcmRzPEsgZXh0ZW5kcyBLZXl3b3JkVHlwZT4odHlwZTogSyk6IEtleXdvcmRzPEs+IHtcbiAgcmV0dXJuIG5ldyBLZXl3b3Jkcyh0eXBlKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBT0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBZ0JBLFc7QUFRRSxXQUFBLFdBQUEsQ0FBQSxPQUFBLEVBQUEsSUFBQSxFQUFBLFFBQUEsRUFHa0U7QUFGdEQsU0FBQSxPQUFBLEdBQUEsT0FBQTtBQUVGLFNBQUEsUUFBQSxHQUFBLFFBQUE7QUFFUixRQUFJLEtBQUssR0FBRyxJQUFaLEdBQVksRUFBWjs7QUFDQSxTQUFBLElBQUEsU0FBQSxHQUFBLCtCQUFBLENBQXFCLGFBQWEsQ0FBbEMsSUFBa0MsQ0FBbEMsQ0FBQSxFQUFBLEtBQUEsRUFBQSxDQUFBLENBQUEsS0FBQSxHQUFBLFNBQUEsRUFBQSxFQUFBLElBQUEsR0FBMEM7QUFBQSxVQUExQyxRQUEwQyxHQUFBLEtBQUEsQ0FBQSxLQUFBO0FBQ3hDLE1BQUEsS0FBSyxDQUFMLEdBQUEsQ0FBQSxRQUFBO0FBQ0Q7O0FBRUQsU0FBQSxLQUFBLEdBQUEsS0FBQTtBQUNEOzs7O1NBRVMsSyxHQUFBLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBZ0M7QUFDeEMsUUFBSSxDQUFDLEtBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBZSxJQUFJLENBQXhCLElBQUssQ0FBTCxFQUFnQztBQUM5QixhQUFBLEtBQUE7QUFDRDs7QUFFRCxRQUFJLElBQUksR0FBRyxpQkFBaUIsQ0FBNUIsSUFBNEIsQ0FBNUI7O0FBRUEsUUFBSSxJQUFJLEtBQUosSUFBQSxJQUFpQixJQUFJLENBQUosR0FBQSxDQUFBLElBQUEsS0FBckIsTUFBQSxFQUErQztBQUM3QyxVQUFJLElBQUksQ0FBSixJQUFBLENBQUEsTUFBQSxH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cmF0ZVN5bnRheEVycm9yLFxuICBpc0tleXdvcmQsXG4gIEtFWVdPUkRTX1RZUEVTLFxuICBLZXl3b3JkVHlwZSxcbn0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IGV4aGF1c3RlZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBFcnIsIFJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9yZXN1bHQnO1xuaW1wb3J0IHsgTm9ybWFsaXphdGlvblN0YXRlIH0gZnJvbSAnLi4vY29udGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZERlbGVnYXRlPE1hdGNoIGV4dGVuZHMgS2V5d29yZE1hdGNoLCBWLCBPdXQ+IHtcbiAgYXNzZXJ0KG9wdGlvbnM6IE1hdGNoLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PFY+O1xuICB0cmFuc2xhdGUob3B0aW9uczogeyBub2RlOiBNYXRjaDsgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSB9LCBwYXJhbTogVik6IFJlc3VsdDxPdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQ8SyBleHRlbmRzIEtleXdvcmRUeXBlID0gS2V5d29yZFR5cGUsIE91dCA9IHVua25vd24+IHtcbiAgdHJhbnNsYXRlKG5vZGU6IEtleXdvcmRDYW5kaWRhdGVzW0tdLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrS2V5d29yZDxPdXQgPSB1bmtub3duPiB7XG4gIHRyYW5zbGF0ZShub2RlOiBBU1R2Mi5JbnZva2VCbG9jaywgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxPdXQ+IHwgbnVsbDtcbn1cblxuY2xhc3MgS2V5d29yZEltcGw8XG4gIEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSxcbiAgUyBleHRlbmRzIHN0cmluZyA9IHN0cmluZyxcbiAgUGFyYW0gPSB1bmtub3duLFxuICBPdXQgPSB1bmtub3duXG4+IHtcbiAgcHJvdGVjdGVkIHR5cGVzOiBTZXQ8S2V5d29yZENhbmRpZGF0ZXNbS11bJ3R5cGUnXT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGtleXdvcmQ6IFMsXG4gICAgdHlwZTogS2V5d29yZFR5cGUsXG4gICAgcHJpdmF0ZSBkZWxlZ2F0ZTogS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCBQYXJhbSwgT3V0PlxuICApIHtcbiAgICBsZXQgbm9kZXMgPSBuZXcgU2V0PEtleXdvcmROb2RlWyd0eXBlJ10+KCk7XG4gICAgZm9yIChsZXQgbm9kZVR5cGUgb2YgS0VZV09SRF9OT0RFU1t0eXBlXSkge1xuICAgICAgbm9kZXMuYWRkKG5vZGVUeXBlKTtcbiAgICB9XG5cbiAgICB0aGlzLnR5cGVzID0gbm9kZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWF0Y2gobm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10pOiBub2RlIGlzIEtleXdvcmRNYXRjaGVzW0tdIHtcbiAgICBpZiAoIXRoaXMudHlwZXMuaGFzKG5vZGUudHlwZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgcGF0aCA9IGdldFBhdGhFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgaWYgKHBhdGggIT09IG51bGwgJiYgcGF0aC5yZWYudHlwZSA9PT0gJ0ZyZWUnKSB7XG4gICAgICBpZiAocGF0aC50YWlsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHBhdGgucmVmLnJlc29sdXRpb24uc2VyaWFsaXplKCkgPT09ICdMb29zZScpIHtcbiAgICAgICAgICAvLyBjYW5ub3QgYmUgYSBrZXl3b3JkIHJlZmVyZW5jZSwga2V5d29yZHMgZG8gbm90IGFsbG93IHBhdGhzIChtdXN0IGJlXG4gICAgICAgICAgLy8gcmVseWluZyBvbiBpbXBsaWNpdCB0aGlzIGZhbGxiYWNrKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGF0aC5yZWYubmFtZSA9PT0gdGhpcy5rZXl3b3JkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdHJhbnNsYXRlKG5vZGU6IEtleXdvcmRNYXRjaGVzW0tdLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsIHtcbiAgICBpZiAodGhpcy5tYXRjaChub2RlKSkge1xuICAgICAgbGV0IHBhdGggPSBnZXRQYXRoRXhwcmVzc2lvbihub2RlKTtcblxuICAgICAgaWYgKHBhdGggIT09IG51bGwgJiYgcGF0aC50YWlsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIEVycihcbiAgICAgICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYFRoZSBcXGAke1xuICAgICAgICAgICAgICB0aGlzLmtleXdvcmRcbiAgICAgICAgICAgIH1cXGAga2V5d29yZCB3YXMgdXNlZCBpbmNvcnJlY3RseS4gSXQgd2FzIHVzZWQgYXMgXFxgJHtwYXRoLmxvYy5hc1N0cmluZygpfVxcYCwgYnV0IGl0IGNhbm5vdCBiZSB1c2VkIHdpdGggYWRkaXRpb25hbCBwYXRoIHNlZ21lbnRzLiBcXG5cXG5FcnJvciBjYXVzZWQgYnlgLFxuICAgICAgICAgICAgbm9kZS5sb2NcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwYXJhbSA9IHRoaXMuZGVsZWdhdGUuYXNzZXJ0KG5vZGUsIHN0YXRlKTtcbiAgICAgIHJldHVybiBwYXJhbS5hbmRUaGVuKChwYXJhbSkgPT4gdGhpcy5kZWxlZ2F0ZS50cmFuc2xhdGUoeyBub2RlLCBzdGF0ZSB9LCBwYXJhbSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgUG9zc2libGVOb2RlID1cbiAgfCBBU1R2Mi5QYXRoRXhwcmVzc2lvblxuICB8IEFTVHYyLkFwcGVuZENvbnRlbnRcbiAgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvblxuICB8IEFTVHYyLkludm9rZUJsb2NrO1xuXG5leHBvcnQgY29uc3QgS0VZV09SRF9OT0RFUyA9IHtcbiAgQ2FsbDogWydDYWxsJ10sXG4gIEJsb2NrOiBbJ0ludm9rZUJsb2NrJ10sXG4gIEFwcGVuZDogWydBcHBlbmRDb250ZW50J10sXG4gIE1vZGlmaWVyOiBbJ0VsZW1lbnRNb2RpZmllciddLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkQ2FuZGlkYXRlcyB7XG4gIENhbGw6IEFTVHYyLkV4cHJlc3Npb25Ob2RlO1xuICBCbG9jazogQVNUdjIuSW52b2tlQmxvY2s7XG4gIEFwcGVuZDogQVNUdjIuQXBwZW5kQ29udGVudDtcbiAgTW9kaWZpZXI6IEFTVHYyLkVsZW1lbnRNb2RpZmllcjtcbn1cblxuZXhwb3J0IHR5cGUgS2V5d29yZENhbmRpZGF0ZSA9IEtleXdvcmRDYW5kaWRhdGVzW2tleW9mIEtleXdvcmRDYW5kaWRhdGVzXTtcblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkTWF0Y2hlcyB7XG4gIENhbGw6IEFTVHYyLkNhbGxFeHByZXNzaW9uO1xuICBCbG9jazogQVNUdjIuSW52b2tlQmxvY2s7XG4gIEFwcGVuZDogQVNUdjIuQXBwZW5kQ29udGVudDtcbiAgTW9kaWZpZXI6IEFTVHYyLkVsZW1lbnRNb2RpZmllcjtcbn1cblxuZXhwb3J0IHR5cGUgS2V5d29yZE1hdGNoID0gS2V5d29yZE1hdGNoZXNba2V5b2YgS2V5d29yZE1hdGNoZXNdO1xuXG4vKipcbiAqIEEgXCJnZW5lcmljXCIga2V5d29yZCBpcyBzb21ldGhpbmcgbGlrZSBgaGFzLWJsb2NrYCwgd2hpY2ggbWFrZXMgc2Vuc2UgaW4gdGhlIGNvbnRleHRcbiAqIG9mIHN1Yi1leHByZXNzaW9uIG9yIGFwcGVuZFxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljS2V5d29yZE5vZGUgPSBBU1R2Mi5BcHBlbmRDb250ZW50IHwgQVNUdjIuQ2FsbEV4cHJlc3Npb247XG5cbmV4cG9ydCB0eXBlIEtleXdvcmROb2RlID1cbiAgfCBHZW5lcmljS2V5d29yZE5vZGVcbiAgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvblxuICB8IEFTVHYyLkludm9rZUJsb2NrXG4gIHwgQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xuXG5leHBvcnQgZnVuY3Rpb24ga2V5d29yZDxcbiAgSyBleHRlbmRzIEtleXdvcmRUeXBlLFxuICBEIGV4dGVuZHMgS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCB1bmtub3duLCBPdXQ+LFxuICBPdXQgPSB1bmtub3duXG4+KGtleXdvcmQ6IHN0cmluZywgdHlwZTogSywgZGVsZWdhdGU6IEQpOiBLZXl3b3JkPEssIE91dD4ge1xuICByZXR1cm4gbmV3IEtleXdvcmRJbXBsKGtleXdvcmQsIHR5cGUsIGRlbGVnYXRlIGFzIEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2gsIHVua25vd24sIE91dD4pO1xufVxuXG5leHBvcnQgdHlwZSBQb3NzaWJsZUtleXdvcmQgPSBLZXl3b3JkTm9kZTtcbnR5cGUgT3V0Rm9yPEsgZXh0ZW5kcyBLZXl3b3JkIHwgQmxvY2tLZXl3b3JkPiA9IEsgZXh0ZW5kcyBCbG9ja0tleXdvcmQ8aW5mZXIgT3V0PlxuICA/IE91dFxuICA6IEsgZXh0ZW5kcyBLZXl3b3JkPEtleXdvcmRUeXBlLCBpbmZlciBPdXQ+XG4gID8gT3V0XG4gIDogbmV2ZXI7XG5cbmZ1bmN0aW9uIGdldFBhdGhFeHByZXNzaW9uKG5vZGU6IEtleXdvcmROb2RlIHwgQVNUdjIuRXhwcmVzc2lvbk5vZGUpOiBBU1R2Mi5QYXRoRXhwcmVzc2lvbiB8IG51bGwge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIC8vIFRoaXMgY292ZXJzIHRoZSBpbnNpZGUgb2YgYXR0cmlidXRlcyBhbmQgZXhwcmVzc2lvbnMsIGFzIHdlbGwgYXMgdGhlIGNhbGxlZVxuICAgIC8vIG9mIGNhbGwgbm9kZXNcbiAgICBjYXNlICdQYXRoJzpcbiAgICAgIHJldHVybiBub2RlO1xuICAgIGNhc2UgJ0FwcGVuZENvbnRlbnQnOlxuICAgICAgcmV0dXJuIGdldFBhdGhFeHByZXNzaW9uKG5vZGUudmFsdWUpO1xuICAgIGNhc2UgJ0NhbGwnOlxuICAgIGNhc2UgJ0ludm9rZUJsb2NrJzpcbiAgICBjYXNlICdFbGVtZW50TW9kaWZpZXInOlxuICAgICAgcmV0dXJuIGdldFBhdGhFeHByZXNzaW9uKG5vZGUuY2FsbGVlKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEtleXdvcmRzPEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSwgS2V5d29yZExpc3QgZXh0ZW5kcyBLZXl3b3JkPEs+ID0gbmV2ZXI+XG4gIGltcGxlbWVudHMgS2V5d29yZDxLLCBPdXRGb3I8S2V5d29yZExpc3Q+PiB7XG4gICNrZXl3b3JkczogS2V5d29yZFtdID0gW107XG4gICN0eXBlOiBLO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IEspIHtcbiAgICB0aGlzLiN0eXBlID0gdHlwZTtcbiAgfVxuXG4gIGt3PFMgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIE91dCA9IHVua25vd24+KFxuICAgIG5hbWU6IFMsXG4gICAgZGVsZWdhdGU6IEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2hlc1tLXSwgdW5rbm93biwgT3V0PlxuICApOiBLZXl3b3JkczxLLCBLZXl3b3JkTGlzdCB8IEtleXdvcmQ8SywgT3V0Pj4ge1xuICAgIHRoaXMuI2tleXdvcmRzLnB1c2goa2V5d29yZChuYW1lLCB0aGlzLiN0eXBlLCBkZWxlZ2F0ZSkpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0cmFuc2xhdGUoXG4gICAgbm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10sXG4gICAgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZVxuICApOiBSZXN1bHQ8T3V0Rm9yPEtleXdvcmRMaXN0Pj4gfCBudWxsIHtcbiAgICBmb3IgKGxldCBrZXl3b3JkIG9mIHRoaXMuI2tleXdvcmRzKSB7XG4gICAgICBsZXQgcmVzdWx0ID0ga2V5d29yZC50cmFuc2xhdGUobm9kZSwgc3RhdGUpIGFzIFJlc3VsdDxPdXRGb3I8S2V5d29yZExpc3Q+PjtcbiAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcGF0aCA9IGdldFBhdGhFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgaWYgKHBhdGggJiYgcGF0aC5yZWYudHlwZSA9PT0gJ0ZyZWUnICYmIGlzS2V5d29yZChwYXRoLnJlZi5uYW1lKSkge1xuICAgICAgbGV0IHsgbmFtZSB9ID0gcGF0aC5yZWY7XG5cbiAgICAgIGxldCB1c2VkVHlwZSA9IHRoaXMuI3R5cGU7XG4gICAgICBsZXQgdmFsaWRUeXBlcyA9IEtFWVdPUkRTX1RZUEVTW25hbWVdO1xuXG4gICAgICBpZiAodmFsaWRUeXBlcy5pbmRleE9mKHVzZWRUeXBlKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIEVycihcbiAgICAgICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYFRoZSBcXGAke25hbWV9XFxgIGtleXdvcmQgd2FzIHVzZWQgaW5jb3JyZWN0bHkuIEl0IHdhcyB1c2VkIGFzICR7XG4gICAgICAgICAgICAgIHR5cGVzVG9SZWFkYWJsZU5hbWVbdXNlZFR5cGVdXG4gICAgICAgICAgICB9LCBidXQgaXRzIHZhbGlkIHVzYWdlcyBhcmU6XFxuXFxuJHtnZW5lcmF0ZVR5cGVzTWVzc2FnZShcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgdmFsaWRUeXBlc1xuICAgICAgICAgICAgKX1cXG5cXG5FcnJvciBjYXVzZWQgYnlgLFxuICAgICAgICAgICAgbm9kZS5sb2NcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuY29uc3QgdHlwZXNUb1JlYWRhYmxlTmFtZSA9IHtcbiAgQXBwZW5kOiAnYW4gYXBwZW5kIHN0YXRlbWVudCcsXG4gIEJsb2NrOiAnYSBibG9jayBzdGF0ZW1lbnQnLFxuICBDYWxsOiAnYSBjYWxsIGV4cHJlc3Npb24nLFxuICBNb2RpZmllcjogJ2EgbW9kaWZpZXInLFxufTtcblxuZnVuY3Rpb24gZ2VuZXJhdGVUeXBlc01lc3NhZ2UobmFtZTogc3RyaW5nLCB0eXBlczogS2V5d29yZFR5cGVbXSk6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlc1xuICAgIC5tYXAoKHR5cGUpID0+IHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdBcHBlbmQnOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhbiBhcHBlbmQgc3RhdGVtZW50LCBhcyBpbjoge3ske25hbWV9fX1gO1xuICAgICAgICBjYXNlICdCbG9jayc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGEgYmxvY2sgc3RhdGVtZW50LCBhcyBpbjoge3sjJHtuYW1lfX19e3svJHtuYW1lfX19YDtcbiAgICAgICAgY2FzZSAnQ2FsbCc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGFuIGV4cHJlc3Npb24sIGFzIGluOiAoJHtuYW1lfSlgO1xuICAgICAgICBjYXNlICdNb2RpZmllcic6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGEgbW9kaWZpZXIsIGFzIGluOiA8ZGl2IHt7JHtuYW1lfX19PjwvZGl2PmA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGV4aGF1c3RlZCh0eXBlKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5qb2luKCdcXG5cXG4nKTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGJ1aWxkcyBrZXl3b3JkIGRlZmluaXRpb25zIGZvciBhIHBhcnRpY3VsYXIgdHlwZSBvZiBBU1Qgbm9kZSAoYEtleXdvcmRUeXBlYCkuXG4gKlxuICogWW91IGNhbiBidWlsZCBrZXl3b3JkIGRlZmluaXRpb25zIGZvcjpcbiAqXG4gKiAtIGBFeHByYDogQSBgU3ViRXhwcmVzc2lvbmAgb3IgYFBhdGhFeHByZXNzaW9uYFxuICogLSBgQmxvY2tgOiBBIGBCbG9ja1N0YXRlbWVudGBcbiAqICAgLSBBIGBCbG9ja1N0YXRlbWVudGAgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZiBpdHMgaGVhZCBpcyBhXG4gKiAgICAgYFBhdGhFeHByZXNzaW9uYFxuICogLSBgQXBwZW5kYDogQW4gYEFwcGVuZFN0YXRlbWVudGBcbiAqXG4gKiBBIG5vZGUgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZjpcbiAqXG4gKiAtIEEgYFBhdGhFeHByZXNzaW9uYCBpcyBhIGtleXdvcmQgY2FuZGlkYXRlIGlmIGl0IGhhcyBubyB0YWlsLCBhbmQgaXRzXG4gKiAgIGhlYWQgZXhwcmVzc2lvbiBpcyBhIGBMb2NhbFZhckhlYWRgIG9yIGBGcmVlVmFySGVhZGAgd2hvc2UgbmFtZSBpc1xuICogICB0aGUga2V5d29yZCdzIG5hbWUuXG4gKiAtIEEgYFN1YkV4cHJlc3Npb25gLCBgQXBwZW5kU3RhdGVtZW50YCwgb3IgYEJsb2NrU3RhdGVtZW50YCBpcyBhIGtleXdvcmRcbiAqICAgY2FuZGlkYXRlIGlmIGl0cyBoZWFkIGlzIGEga2V5d29yZCBjYW5kaWRhdGUuXG4gKlxuICogVGhlIGtleXdvcmQgaW5mcmFzdHJ1Y3R1cmUgZ3VhcmFudGVlcyB0aGF0OlxuICpcbiAqIC0gSWYgYSBub2RlIGlzIG5vdCBhIGtleXdvcmQgY2FuZGlkYXRlLCBpdCBpcyBuZXZlciBwYXNzZWQgdG8gYW55IGtleXdvcmQnc1xuICogICBgYXNzZXJ0YCBtZXRob2QuXG4gKiAtIElmIGEgbm9kZSBpcyBub3QgdGhlIGBLZXl3b3JkVHlwZWAgZm9yIGEgcGFydGljdWxhciBrZXl3b3JkLCBpdCB3aWxsIG5vdFxuICogICBiZSBwYXNzZWQgdG8gdGhlIGtleXdvcmQncyBgYXNzZXJ0YCBtZXRob2QuXG4gKlxuICogYEV4cHJgIGtleXdvcmRzIGFyZSB1c2VkIGluIGV4cHJlc3Npb24gcG9zaXRpb25zIGFuZCBzaG91bGQgcmV0dXJuIEhJUlxuICogZXhwcmVzc2lvbnMuIGBCbG9ja2AgYW5kIGBBcHBlbmRgIGtleXdvcmRzIGFyZSB1c2VkIGluIHN0YXRlbWVudFxuICogcG9zaXRpb25zIGFuZCBzaG91bGQgcmV0dXJuIEhJUiBzdGF0ZW1lbnRzLlxuICpcbiAqIEEga2V5d29yZCBkZWZpbml0aW9uIGhhcyB0d28gcGFydHM6XG4gKlxuICogLSBgbWF0Y2hgLCB3aGljaCBkZXRlcm1pbmVzIHdoZXRoZXIgYW4gQVNUIG5vZGUgbWF0Y2hlcyB0aGUga2V5d29yZCwgYW5kIGNhblxuICogICBvcHRpb25hbGx5IHJldHVybiBzb21lIGluZm9ybWF0aW9uIGV4dHJhY3RlZCBmcm9tIHRoZSBBU1Qgbm9kZS5cbiAqIC0gYHRyYW5zbGF0ZWAsIHdoaWNoIHRha2VzIGEgbWF0Y2hpbmcgQVNUIG5vZGUgYXMgd2VsbCBhcyB0aGUgZXh0cmFjdGVkXG4gKiAgIGluZm9ybWF0aW9uIGFuZCByZXR1cm5zIGFuIGFwcHJvcHJpYXRlIEhJUiBpbnN0cnVjdGlvbi5cbiAqXG4gKiAjIEV4YW1wbGVcbiAqXG4gKiBUaGlzIGtleXdvcmQ6XG4gKlxuICogLSB0dXJucyBgKGhlbGxvKWAgaW50byBgXCJoZWxsb1wiYFxuICogICAtIGFzIGxvbmcgYXMgYGhlbGxvYCBpcyBub3QgaW4gc2NvcGVcbiAqIC0gbWFrZXMgaXQgYW4gZXJyb3IgdG8gcGFzcyBhbnkgYXJndW1lbnRzIChzdWNoIGFzIGAoaGVsbG8gd29ybGQpYClcbiAqXG4gKiBgYGB0c1xuICoga2V5d29yZHMoJ1N1YkV4cHInKS5rdygnaGVsbG8nLCB7XG4gKiAgIGFzc2VydChub2RlOiBFeHByS2V5d29yZE5vZGUpOiBSZXN1bHQ8dm9pZD4gfCBmYWxzZSB7XG4gKiAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byB0cmFuc2Zvcm0gYGhlbGxvYCBhcyBhIGBQYXRoRXhwcmVzc2lvbmBcbiAqICAgICBpZiAobm9kZS50eXBlICE9PSAnU3ViRXhwcmVzc2lvbicpIHtcbiAqICAgICAgIHJldHVybiBmYWxzZTtcbiAqICAgICB9XG4gKlxuICogICAgIC8vIG5vZGUuaGVhZCB3b3VsZCBiZSBgTG9jYWxWYXJIZWFkYCBpZiBgaGVsbG9gIHdhcyBpbiBzY29wZVxuICogICAgIGlmIChub2RlLmhlYWQudHlwZSAhPT0gJ0ZyZWVWYXJIZWFkJykge1xuICogICAgICAgcmV0dXJuIGZhbHNlO1xuICogICAgIH1cbiAqXG4gKiAgICAgaWYgKG5vZGUucGFyYW1zLmxlbmd0aCB8fCBub2RlLmhhc2gpIHtcbiAqICAgICAgIHJldHVybiBFcnIoZ2VuZXJhdGVTeW50YXhFcnJvcihgKGhlbGxvKSBkb2VzIG5vdCB0YWtlIGFueSBhcmd1bWVudHNgKSwgbm9kZS5sb2MpO1xuICogICAgIH0gZWxzZSB7XG4gKiAgICAgICByZXR1cm4gT2soKTtcbiAqICAgICB9XG4gKiAgIH0sXG4gKlxuICogICB0cmFuc2xhdGUobm9kZTogQVNUdjIuU3ViRXhwcmVzc2lvbik6IGhpci5FeHByZXNzaW9uIHtcbiAqICAgICByZXR1cm4gQVNUdjIuYnVpbGRlcnMubGl0ZXJhbChcImhlbGxvXCIsIG5vZGUubG9jKVxuICogICB9XG4gKiB9KVxuICogYGBgXG4gKlxuICogVGhlIGtleXdvcmQgaW5mcmFzdHJ1Y3R1cmUgY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBub2RlIGlzIHRoZSByaWdodFxuICogdHlwZSBiZWZvcmUgY2FsbGluZyBgYXNzZXJ0YCwgc28geW91IG9ubHkgbmVlZCB0byBjb25zaWRlciBgU3ViRXhwcmVzc2lvbmBcbiAqIGFuZCBgUGF0aEV4cHJlc3Npb25gIGhlcmUuIEl0IGFsc28gY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBub2RlIHBhc3NlZFxuICogdG8gYGFzc2VydGAgaGFzIHRoZSBrZXl3b3JkIG5hbWUgaW4gdGhlIHJpZ2h0IHBsYWNlLlxuICpcbiAqIE5vdGUgdGhlIGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW4gcmV0dXJuaW5nIGBmYWxzZWAgZnJvbSBgYXNzZXJ0YCxcbiAqIHdoaWNoIGp1c3QgbWVhbnMgdGhhdCB0aGUgbm9kZSBkaWRuJ3QgbWF0Y2gsIGFuZCByZXR1cm5pbmcgYEVycmAsIHdoaWNoXG4gKiBtZWFucyB0aGF0IHRoZSBub2RlIG1hdGNoZWQsIGJ1dCB0aGVyZSB3YXMgYSBrZXl3b3JkLXNwZWNpZmljIHN5bnRheFxuICogZXJyb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrZXl3b3JkczxLIGV4dGVuZHMgS2V5d29yZFR5cGU+KHR5cGU6IEspOiBLZXl3b3JkczxLPiB7XG4gIHJldHVybiBuZXcgS2V5d29yZHModHlwZSk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 |
@@ -45,2 +45,10 @@ var __classPrivateFieldSet = this && this.__classPrivateFieldSet || function (receiver, privateMap, value) { | ||
if (path !== null && path.ref.type === 'Free') { | ||
if (path.tail.length > 0) { | ||
if (path.ref.resolution.serialize() === 'Loose') { | ||
// cannot be a keyword reference, keywords do not allow paths (must be | ||
// relying on implicit this fallback) | ||
return false; | ||
} | ||
} | ||
return path.ref.name === this.keyword; | ||
@@ -54,2 +62,8 @@ } else { | ||
if (this.match(node)) { | ||
let path = getPathExpression(node); | ||
if (path !== null && path.tail.length > 0) { | ||
return Err(generateSyntaxError(`The \`${this.keyword}\` keyword was used incorrectly. It was used as \`${path.loc.asString()}\`, but it cannot be used with additional path segments. \n\nError caused by`, node.loc)); | ||
} | ||
let param = this.delegate.assert(node, state); | ||
@@ -255,2 +269,2 @@ return param.andThen(param => this.delegate.translate({ | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBRUUsbUJBRkYsRUFHRSxTQUhGLEVBSUUsY0FKRixRQU1PLGlCQU5QO0FBT0EsU0FBUyxTQUFULFFBQTBCLGVBQTFCO0FBRUEsU0FBUyxHQUFULFFBQTRCLHdCQUE1Qjs7QUFnQkEsTUFBTSxXQUFOLENBQWlCO0FBUWYsRUFBQSxXQUFBLENBQ1ksT0FEWixFQUVFLElBRkYsRUFHVSxRQUhWLEVBR2tFO0FBRnRELFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFFRixTQUFBLFFBQUEsR0FBQSxRQUFBO0FBRVIsUUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFKLEVBQVo7O0FBQ0EsU0FBSyxJQUFJLFFBQVQsSUFBcUIsYUFBYSxDQUFDLElBQUQsQ0FBbEMsRUFBMEM7QUFDeEMsTUFBQSxLQUFLLENBQUMsR0FBTixDQUFVLFFBQVY7QUFDRDs7QUFFRCxTQUFLLEtBQUwsR0FBYSxLQUFiO0FBQ0Q7O0FBRVMsRUFBQSxLQUFLLENBQUMsSUFBRCxFQUEyQjtBQUN4QyxRQUFJLENBQUMsS0FBSyxLQUFMLENBQVcsR0FBWCxDQUFlLElBQUksQ0FBQyxJQUFwQixDQUFMLEVBQWdDO0FBQzlCLGFBQU8sS0FBUDtBQUNEOztBQUVELFFBQUksSUFBSSxHQUFHLGlCQUFpQixDQUFDLElBQUQsQ0FBNUI7O0FBRUEsUUFBSSxJQUFJLEtBQUssSUFBVCxJQUFpQixJQUFJLENBQUMsR0FBTCxDQUFTLElBQVQsS0FBa0IsTUFBdkMsRUFBK0M7QUFDN0MsYUFBTyxJQUFJLENBQUMsR0FBTCxDQUFTLElBQVQsS0FBa0IsS0FBSyxPQUE5QjtBQUNELEtBRkQsTUFFTztBQUNMLGFBQU8sS0FBUDtBQUNEO0FBQ0Y7O0FBRUQsRUFBQSxTQUFTLENB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LFFBQVYsQ0FBMEMsSUFBMUMsRUFBaUQ7QUFDckQsU0FBTyxJQUFJLFFBQUosQ0FBYSxJQUFiLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFTVHYyLFxuICBnZW5lcmF0ZVN5bnRheEVycm9yLFxuICBpc0tleXdvcmQsXG4gIEtFWVdPUkRTX1RZUEVTLFxuICBLZXl3b3JkVHlwZSxcbn0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IGV4aGF1c3RlZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBFcnIsIFJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9yZXN1bHQnO1xuaW1wb3J0IHsgTm9ybWFsaXphdGlvblN0YXRlIH0gZnJvbSAnLi4vY29udGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZERlbGVnYXRlPE1hdGNoIGV4dGVuZHMgS2V5d29yZE1hdGNoLCBWLCBPdXQ+IHtcbiAgYXNzZXJ0KG9wdGlvbnM6IE1hdGNoLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PFY+O1xuICB0cmFuc2xhdGUob3B0aW9uczogeyBub2RlOiBNYXRjaDsgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSB9LCBwYXJhbTogVik6IFJlc3VsdDxPdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQ8SyBleHRlbmRzIEtleXdvcmRUeXBlID0gS2V5d29yZFR5cGUsIE91dCA9IHVua25vd24+IHtcbiAgdHJhbnNsYXRlKG5vZGU6IEtleXdvcmRDYW5kaWRhdGVzW0tdLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrS2V5d29yZDxPdXQgPSB1bmtub3duPiB7XG4gIHRyYW5zbGF0ZShub2RlOiBBU1R2Mi5JbnZva2VCbG9jaywgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxPdXQ+IHwgbnVsbDtcbn1cblxuY2xhc3MgS2V5d29yZEltcGw8XG4gIEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSxcbiAgUyBleHRlbmRzIHN0cmluZyA9IHN0cmluZyxcbiAgUGFyYW0gPSB1bmtub3duLFxuICBPdXQgPSB1bmtub3duXG4+IHtcbiAgcHJvdGVjdGVkIHR5cGVzOiBTZXQ8S2V5d29yZENhbmRpZGF0ZXNbS11bJ3R5cGUnXT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGtleXdvcmQ6IFMsXG4gICAgdHlwZTogS2V5d29yZFR5cGUsXG4gICAgcHJpdmF0ZSBkZWxlZ2F0ZTogS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCBQYXJhbSwgT3V0PlxuICApIHtcbiAgICBsZXQgbm9kZXMgPSBuZXcgU2V0PEtleXdvcmROb2RlWyd0eXBlJ10+KCk7XG4gICAgZm9yIChsZXQgbm9kZVR5cGUgb2YgS0VZV09SRF9OT0RFU1t0eXBlXSkge1xuICAgICAgbm9kZXMuYWRkKG5vZGVUeXBlKTtcbiAgICB9XG5cbiAgICB0aGlzLnR5cGVzID0gbm9kZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWF0Y2gobm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10pOiBub2RlIGlzIEtleXdvcmRNYXRjaGVzW0tdIHtcbiAgICBpZiAoIXRoaXMudHlwZXMuaGFzKG5vZGUudHlwZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgcGF0aCA9IGdldFBhdGhFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgaWYgKHBhdGggIT09IG51bGwgJiYgcGF0aC5yZWYudHlwZSA9PT0gJ0ZyZWUnKSB7XG4gICAgICByZXR1cm4gcGF0aC5yZWYubmFtZSA9PT0gdGhpcy5rZXl3b3JkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdHJhbnNsYXRlKG5vZGU6IEtleXdvcmRNYXRjaGVzW0tdLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsIHtcbiAgICBpZiAodGhpcy5tYXRjaChub2RlKSkge1xuICAgICAgbGV0IHBhcmFtID0gdGhpcy5kZWxlZ2F0ZS5hc3NlcnQobm9kZSwgc3RhdGUpO1xuICAgICAgcmV0dXJuIHBhcmFtLmFuZFRoZW4oKHBhcmFtKSA9PiB0aGlzLmRlbGVnYXRlLnRyYW5zbGF0ZSh7IG5vZGUsIHN0YXRlIH0sIHBhcmFtKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBQb3NzaWJsZU5vZGUgPVxuICB8IEFTVHYyLlBhdGhFeHByZXNzaW9uXG4gIHwgQVNUdjIuQXBwZW5kQ29udGVudFxuICB8IEFTVHYyLkNhbGxFeHByZXNzaW9uXG4gIHwgQVNUdjIuSW52b2tlQmxvY2s7XG5cbmV4cG9ydCBjb25zdCBLRVlXT1JEX05PREVTID0ge1xuICBDYWxsOiBbJ0NhbGwnXSxcbiAgQmxvY2s6IFsnSW52b2tlQmxvY2snXSxcbiAgQXBwZW5kOiBbJ0FwcGVuZENvbnRlbnQnXSxcbiAgTW9kaWZpZXI6IFsnRWxlbWVudE1vZGlmaWVyJ10sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmRDYW5kaWRhdGVzIHtcbiAgQ2FsbDogQVNUdjIuRXhwcmVzc2lvbk5vZGU7XG4gIEJsb2NrOiBBU1R2Mi5JbnZva2VCbG9jaztcbiAgQXBwZW5kOiBBU1R2Mi5BcHBlbmRDb250ZW50O1xuICBNb2RpZmllcjogQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xufVxuXG5leHBvcnQgdHlwZSBLZXl3b3JkQ2FuZGlkYXRlID0gS2V5d29yZENhbmRpZGF0ZXNba2V5b2YgS2V5d29yZENhbmRpZGF0ZXNdO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmRNYXRjaGVzIHtcbiAgQ2FsbDogQVNUdjIuQ2FsbEV4cHJlc3Npb247XG4gIEJsb2NrOiBBU1R2Mi5JbnZva2VCbG9jaztcbiAgQXBwZW5kOiBBU1R2Mi5BcHBlbmRDb250ZW50O1xuICBNb2RpZmllcjogQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xufVxuXG5leHBvcnQgdHlwZSBLZXl3b3JkTWF0Y2ggPSBLZXl3b3JkTWF0Y2hlc1trZXlvZiBLZXl3b3JkTWF0Y2hlc107XG5cbi8qKlxuICogQSBcImdlbmVyaWNcIiBrZXl3b3JkIGlzIHNvbWV0aGluZyBsaWtlIGBoYXMtYmxvY2tgLCB3aGljaCBtYWtlcyBzZW5zZSBpbiB0aGUgY29udGV4dFxuICogb2Ygc3ViLWV4cHJlc3Npb24gb3IgYXBwZW5kXG4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyaWNLZXl3b3JkTm9kZSA9IEFTVHYyLkFwcGVuZENvbnRlbnQgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvbjtcblxuZXhwb3J0IHR5cGUgS2V5d29yZE5vZGUgPVxuICB8IEdlbmVyaWNLZXl3b3JkTm9kZVxuICB8IEFTVHYyLkNhbGxFeHByZXNzaW9uXG4gIHwgQVNUdjIuSW52b2tlQmxvY2tcbiAgfCBBU1R2Mi5FbGVtZW50TW9kaWZpZXI7XG5cbmV4cG9ydCBmdW5jdGlvbiBrZXl3b3JkPFxuICBLIGV4dGVuZHMgS2V5d29yZFR5cGUsXG4gIEQgZXh0ZW5kcyBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoZXNbS10sIHVua25vd24sIE91dD4sXG4gIE91dCA9IHVua25vd25cbj4oa2V5d29yZDogc3RyaW5nLCB0eXBlOiBLLCBkZWxlZ2F0ZTogRCk6IEtleXdvcmQ8SywgT3V0PiB7XG4gIHJldHVybiBuZXcgS2V5d29yZEltcGwoa2V5d29yZCwgdHlwZSwgZGVsZWdhdGUgYXMgS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaCwgdW5rbm93biwgT3V0Pik7XG59XG5cbmV4cG9ydCB0eXBlIFBvc3NpYmxlS2V5d29yZCA9IEtleXdvcmROb2RlO1xudHlwZSBPdXRGb3I8SyBleHRlbmRzIEtleXdvcmQgfCBCbG9ja0tleXdvcmQ+ID0gSyBleHRlbmRzIEJsb2NrS2V5d29yZDxpbmZlciBPdXQ+XG4gID8gT3V0XG4gIDogSyBleHRlbmRzIEtleXdvcmQ8S2V5d29yZFR5cGUsIGluZmVyIE91dD5cbiAgPyBPdXRcbiAgOiBuZXZlcjtcblxuZnVuY3Rpb24gZ2V0UGF0aEV4cHJlc3Npb24obm9kZTogS2V5d29yZE5vZGUgfCBBU1R2Mi5FeHByZXNzaW9uTm9kZSk6IEFTVHYyLlBhdGhFeHByZXNzaW9uIHwgbnVsbCB7XG4gIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgLy8gVGhpcyBjb3ZlcnMgdGhlIGluc2lkZSBvZiBhdHRyaWJ1dGVzIGFuZCBleHByZXNzaW9ucywgYXMgd2VsbCBhcyB0aGUgY2FsbGVlXG4gICAgLy8gb2YgY2FsbCBub2Rlc1xuICAgIGNhc2UgJ1BhdGgnOlxuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgY2FzZSAnQXBwZW5kQ29udGVudCc6XG4gICAgICByZXR1cm4gZ2V0UGF0aEV4cHJlc3Npb24obm9kZS52YWx1ZSk7XG4gICAgY2FzZSAnQ2FsbCc6XG4gICAgY2FzZSAnSW52b2tlQmxvY2snOlxuICAgIGNhc2UgJ0VsZW1lbnRNb2RpZmllcic6XG4gICAgICByZXR1cm4gZ2V0UGF0aEV4cHJlc3Npb24obm9kZS5jYWxsZWUpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2V5d29yZHM8SyBleHRlbmRzIEtleXdvcmRUeXBlLCBLZXl3b3JkTGlzdCBleHRlbmRzIEtleXdvcmQ8Sz4gPSBuZXZlcj5cbiAgaW1wbGVtZW50cyBLZXl3b3JkPEssIE91dEZvcjxLZXl3b3JkTGlzdD4+IHtcbiAgI2tleXdvcmRzOiBLZXl3b3JkW10gPSBbXTtcbiAgI3R5cGU6IEs7XG5cbiAgY29uc3RydWN0b3IodHlwZTogSykge1xuICAgIHRoaXMuI3R5cGUgPSB0eXBlO1xuICB9XG5cbiAga3c8UyBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgT3V0ID0gdW5rbm93bj4oXG4gICAgbmFtZTogUyxcbiAgICBkZWxlZ2F0ZTogS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCB1bmtub3duLCBPdXQ+XG4gICk6IEtleXdvcmRzPEssIEtleXdvcmRMaXN0IHwgS2V5d29yZDxLLCBPdXQ+PiB7XG4gICAgdGhpcy4ja2V5d29yZHMucHVzaChrZXl3b3JkKG5hbWUsIHRoaXMuI3R5cGUsIGRlbGVnYXRlKSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRyYW5zbGF0ZShcbiAgICBub2RlOiBLZXl3b3JkQ2FuZGlkYXRlc1tLXSxcbiAgICBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlXG4gICk6IFJlc3VsdDxPdXRGb3I8S2V5d29yZExpc3Q+PiB8IG51bGwge1xuICAgIGZvciAobGV0IGtleXdvcmQgb2YgdGhpcy4ja2V5d29yZHMpIHtcbiAgICAgIGxldCByZXN1bHQgPSBrZXl3b3JkLnRyYW5zbGF0ZShub2RlLCBzdGF0ZSkgYXMgUmVzdWx0PE91dEZvcjxLZXl3b3JkTGlzdD4+O1xuICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwYXRoID0gZ2V0UGF0aEV4cHJlc3Npb24obm9kZSk7XG5cbiAgICBpZiAocGF0aCAmJiBwYXRoLnJlZi50eXBlID09PSAnRnJlZScgJiYgaXNLZXl3b3JkKHBhdGgucmVmLm5hbWUpKSB7XG4gICAgICBsZXQgeyBuYW1lIH0gPSBwYXRoLnJlZjtcblxuICAgICAgbGV0IHVzZWRUeXBlID0gdGhpcy4jdHlwZTtcbiAgICAgIGxldCB2YWxpZFR5cGVzID0gS0VZV09SRFNfVFlQRVNbbmFtZV07XG5cbiAgICAgIGlmICh2YWxpZFR5cGVzLmluZGV4T2YodXNlZFR5cGUpID09PSAtMSkge1xuICAgICAgICByZXR1cm4gRXJyKFxuICAgICAgICAgIGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgICBgVGhlIFxcYCR7bmFtZX1cXGAga2V5d29yZCB3YXMgdXNlZCBpbmNvcnJlY3RseS4gSXQgd2FzIHVzZWQgYXMgJHtcbiAgICAgICAgICAgICAgdHlwZXNUb1JlYWRhYmxlTmFtZVt1c2VkVHlwZV1cbiAgICAgICAgICAgIH0sIGJ1dCBpdHMgdmFsaWQgdXNhZ2VzIGFyZTpcXG5cXG4ke2dlbmVyYXRlVHlwZXNNZXNzYWdlKFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICB2YWxpZFR5cGVzXG4gICAgICAgICAgICApfVxcblxcbkVycm9yIGNhdXNlZCBieWAsXG4gICAgICAgICAgICBub2RlLmxvY1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5jb25zdCB0eXBlc1RvUmVhZGFibGVOYW1lID0ge1xuICBBcHBlbmQ6ICdhbiBhcHBlbmQgc3RhdGVtZW50JyxcbiAgQmxvY2s6ICdhIGJsb2NrIHN0YXRlbWVudCcsXG4gIENhbGw6ICdhIGNhbGwgZXhwcmVzc2lvbicsXG4gIE1vZGlmaWVyOiAnYSBtb2RpZmllcicsXG59O1xuXG5mdW5jdGlvbiBnZW5lcmF0ZVR5cGVzTWVzc2FnZShuYW1lOiBzdHJpbmcsIHR5cGVzOiBLZXl3b3JkVHlwZVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVzXG4gICAgLm1hcCgodHlwZSkgPT4ge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ0FwcGVuZCc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGFuIGFwcGVuZCBzdGF0ZW1lbnQsIGFzIGluOiB7eyR7bmFtZX19fWA7XG4gICAgICAgIGNhc2UgJ0Jsb2NrJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYSBibG9jayBzdGF0ZW1lbnQsIGFzIGluOiB7eyMke25hbWV9fX17ey8ke25hbWV9fX1gO1xuICAgICAgICBjYXNlICdDYWxsJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYW4gZXhwcmVzc2lvbiwgYXMgaW46ICgke25hbWV9KWA7XG4gICAgICAgIGNhc2UgJ01vZGlmaWVyJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYSBtb2RpZmllciwgYXMgaW46IDxkaXYge3ske25hbWV9fX0+PC9kaXY+YDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZXhoYXVzdGVkKHR5cGUpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmpvaW4oJ1xcblxcbicpO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYnVpbGRzIGtleXdvcmQgZGVmaW5pdGlvbnMgZm9yIGEgcGFydGljdWxhciB0eXBlIG9mIEFTVCBub2RlIChgS2V5d29yZFR5cGVgKS5cbiAqXG4gKiBZb3UgY2FuIGJ1aWxkIGtleXdvcmQgZGVmaW5pdGlvbnMgZm9yOlxuICpcbiAqIC0gYEV4cHJgOiBBIGBTdWJFeHByZXNzaW9uYCBvciBgUGF0aEV4cHJlc3Npb25gXG4gKiAtIGBCbG9ja2A6IEEgYEJsb2NrU3RhdGVtZW50YFxuICogICAtIEEgYEJsb2NrU3RhdGVtZW50YCBpcyBhIGtleXdvcmQgY2FuZGlkYXRlIGlmIGl0cyBoZWFkIGlzIGFcbiAqICAgICBgUGF0aEV4cHJlc3Npb25gXG4gKiAtIGBBcHBlbmRgOiBBbiBgQXBwZW5kU3RhdGVtZW50YFxuICpcbiAqIEEgbm9kZSBpcyBhIGtleXdvcmQgY2FuZGlkYXRlIGlmOlxuICpcbiAqIC0gQSBgUGF0aEV4cHJlc3Npb25gIGlzIGEga2V5d29yZCBjYW5kaWRhdGUgaWYgaXQgaGFzIG5vIHRhaWwsIGFuZCBpdHNcbiAqICAgaGVhZCBleHByZXNzaW9uIGlzIGEgYExvY2FsVmFySGVhZGAgb3IgYEZyZWVWYXJIZWFkYCB3aG9zZSBuYW1lIGlzXG4gKiAgIHRoZSBrZXl3b3JkJ3MgbmFtZS5cbiAqIC0gQSBgU3ViRXhwcmVzc2lvbmAsIGBBcHBlbmRTdGF0ZW1lbnRgLCBvciBgQmxvY2tTdGF0ZW1lbnRgIGlzIGEga2V5d29yZFxuICogICBjYW5kaWRhdGUgaWYgaXRzIGhlYWQgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZS5cbiAqXG4gKiBUaGUga2V5d29yZCBpbmZyYXN0cnVjdHVyZSBndWFyYW50ZWVzIHRoYXQ6XG4gKlxuICogLSBJZiBhIG5vZGUgaXMgbm90IGEga2V5d29yZCBjYW5kaWRhdGUsIGl0IGlzIG5ldmVyIHBhc3NlZCB0byBhbnkga2V5d29yZCdzXG4gKiAgIGBhc3NlcnRgIG1ldGhvZC5cbiAqIC0gSWYgYSBub2RlIGlzIG5vdCB0aGUgYEtleXdvcmRUeXBlYCBmb3IgYSBwYXJ0aWN1bGFyIGtleXdvcmQsIGl0IHdpbGwgbm90XG4gKiAgIGJlIHBhc3NlZCB0byB0aGUga2V5d29yZCdzIGBhc3NlcnRgIG1ldGhvZC5cbiAqXG4gKiBgRXhwcmAga2V5d29yZHMgYXJlIHVzZWQgaW4gZXhwcmVzc2lvbiBwb3NpdGlvbnMgYW5kIHNob3VsZCByZXR1cm4gSElSXG4gKiBleHByZXNzaW9ucy4gYEJsb2NrYCBhbmQgYEFwcGVuZGAga2V5d29yZHMgYXJlIHVzZWQgaW4gc3RhdGVtZW50XG4gKiBwb3NpdGlvbnMgYW5kIHNob3VsZCByZXR1cm4gSElSIHN0YXRlbWVudHMuXG4gKlxuICogQSBrZXl3b3JkIGRlZmluaXRpb24gaGFzIHR3byBwYXJ0czpcbiAqXG4gKiAtIGBtYXRjaGAsIHdoaWNoIGRldGVybWluZXMgd2hldGhlciBhbiBBU1Qgbm9kZSBtYXRjaGVzIHRoZSBrZXl3b3JkLCBhbmQgY2FuXG4gKiAgIG9wdGlvbmFsbHkgcmV0dXJuIHNvbWUgaW5mb3JtYXRpb24gZXh0cmFjdGVkIGZyb20gdGhlIEFTVCBub2RlLlxuICogLSBgdHJhbnNsYXRlYCwgd2hpY2ggdGFrZXMgYSBtYXRjaGluZyBBU1Qgbm9kZSBhcyB3ZWxsIGFzIHRoZSBleHRyYWN0ZWRcbiAqICAgaW5mb3JtYXRpb24gYW5kIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgSElSIGluc3RydWN0aW9uLlxuICpcbiAqICMgRXhhbXBsZVxuICpcbiAqIFRoaXMga2V5d29yZDpcbiAqXG4gKiAtIHR1cm5zIGAoaGVsbG8pYCBpbnRvIGBcImhlbGxvXCJgXG4gKiAgIC0gYXMgbG9uZyBhcyBgaGVsbG9gIGlzIG5vdCBpbiBzY29wZVxuICogLSBtYWtlcyBpdCBhbiBlcnJvciB0byBwYXNzIGFueSBhcmd1bWVudHMgKHN1Y2ggYXMgYChoZWxsbyB3b3JsZClgKVxuICpcbiAqIGBgYHRzXG4gKiBrZXl3b3JkcygnU3ViRXhwcicpLmt3KCdoZWxsbycsIHtcbiAqICAgYXNzZXJ0KG5vZGU6IEV4cHJLZXl3b3JkTm9kZSk6IFJlc3VsdDx2b2lkPiB8IGZhbHNlIHtcbiAqICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIHRyYW5zZm9ybSBgaGVsbG9gIGFzIGEgYFBhdGhFeHByZXNzaW9uYFxuICogICAgIGlmIChub2RlLnR5cGUgIT09ICdTdWJFeHByZXNzaW9uJykge1xuICogICAgICAgcmV0dXJuIGZhbHNlO1xuICogICAgIH1cbiAqXG4gKiAgICAgLy8gbm9kZS5oZWFkIHdvdWxkIGJlIGBMb2NhbFZhckhlYWRgIGlmIGBoZWxsb2Agd2FzIGluIHNjb3BlXG4gKiAgICAgaWYgKG5vZGUuaGVhZC50eXBlICE9PSAnRnJlZVZhckhlYWQnKSB7XG4gKiAgICAgICByZXR1cm4gZmFsc2U7XG4gKiAgICAgfVxuICpcbiAqICAgICBpZiAobm9kZS5wYXJhbXMubGVuZ3RoIHx8IG5vZGUuaGFzaCkge1xuICogICAgICAgcmV0dXJuIEVycihnZW5lcmF0ZVN5bnRheEVycm9yKGAoaGVsbG8pIGRvZXMgbm90IHRha2UgYW55IGFyZ3VtZW50c2ApLCBub2RlLmxvYyk7XG4gKiAgICAgfSBlbHNlIHtcbiAqICAgICAgIHJldHVybiBPaygpO1xuICogICAgIH1cbiAqICAgfSxcbiAqXG4gKiAgIHRyYW5zbGF0ZShub2RlOiBBU1R2Mi5TdWJFeHByZXNzaW9uKTogaGlyLkV4cHJlc3Npb24ge1xuICogICAgIHJldHVybiBBU1R2Mi5idWlsZGVycy5saXRlcmFsKFwiaGVsbG9cIiwgbm9kZS5sb2MpXG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBUaGUga2V5d29yZCBpbmZyYXN0cnVjdHVyZSBjaGVja3MgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5vZGUgaXMgdGhlIHJpZ2h0XG4gKiB0eXBlIGJlZm9yZSBjYWxsaW5nIGBhc3NlcnRgLCBzbyB5b3Ugb25seSBuZWVkIHRvIGNvbnNpZGVyIGBTdWJFeHByZXNzaW9uYFxuICogYW5kIGBQYXRoRXhwcmVzc2lvbmAgaGVyZS4gSXQgYWxzbyBjaGVja3MgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5vZGUgcGFzc2VkXG4gKiB0byBgYXNzZXJ0YCBoYXMgdGhlIGtleXdvcmQgbmFtZSBpbiB0aGUgcmlnaHQgcGxhY2UuXG4gKlxuICogTm90ZSB0aGUgaW1wb3J0YW50IGRpZmZlcmVuY2UgYmV0d2VlbiByZXR1cm5pbmcgYGZhbHNlYCBmcm9tIGBhc3NlcnRgLFxuICogd2hpY2gganVzdCBtZWFucyB0aGF0IHRoZSBub2RlIGRpZG4ndCBtYXRjaCwgYW5kIHJldHVybmluZyBgRXJyYCwgd2hpY2hcbiAqIG1lYW5zIHRoYXQgdGhlIG5vZGUgbWF0Y2hlZCwgYnV0IHRoZXJlIHdhcyBhIGtleXdvcmQtc3BlY2lmaWMgc3ludGF4XG4gKiBlcnJvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGtleXdvcmRzPEsgZXh0ZW5kcyBLZXl3b3JkVHlwZT4odHlwZTogSyk6IEtleXdvcmRzPEs+IHtcbiAgcmV0dXJuIG5ldyBLZXl3b3Jkcyh0eXBlKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBRUUsbUJBRkYsRUFHRSxTQUhGLEVBSUUsY0FKRixRQU1PLGlCQU5QO0FBT0EsU0FBUyxTQUFULFFBQTBCLGVBQTFCO0FBRUEsU0FBUyxHQUFULFFBQTRCLHdCQUE1Qjs7QUFnQkEsTUFBTSxXQUFOLENBQWlCO0FBUWYsRUFBQSxXQUFBLENBQ1ksT0FEWixFQUVFLElBRkYsRUFHVSxRQUhWLEVBR2tFO0FBRnRELFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFFRixTQUFBLFFBQUEsR0FBQSxRQUFBO0FBRVIsUUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFKLEVBQVo7O0FBQ0EsU0FBSyxJQUFJLFFBQVQsSUFBcUIsYUFBYSxDQUFDLElBQUQsQ0FBbEMsRUFBMEM7QUFDeEMsTUFBQSxLQUFLLENBQUMsR0FBTixDQUFVLFFBQVY7QUFDRDs7QUFFRCxTQUFLLEtBQUwsR0FBYSxLQUFiO0FBQ0Q7O0FBRVMsRUFBQSxLQUFLLENBQUMsSUFBRCxFQUEyQjtBQUN4QyxRQUFJLENBQUMsS0FBSyxLQUFMLENBQVcsR0FBWCxDQUFlLElBQUksQ0FBQyxJQUFwQixDQUFMLEVBQWdDO0FBQzlCLGFBQU8sS0FBUDtBQUNEOztBQUVELFFBQUksSUFBSSxHQUFHLGlCQUFpQixDQUFDLElBQUQsQ0FBNUI7O0FBRUEsUUFBSSxJQUFJLEtBQUssSUFBVCxJQUFpQixJQUFJLENBQUMsR0FBTCxDQUFTLElBQVQsS0FBa0IsTUFBdkMsRUFBK0M7QUFDN0MsVUFBSSxJQUFJLENBQUMsSUFBTCxDQUFVLE1BQVYsR0FBbUIsQ0FBdkIsRUFBMEI7QUFDeEIsWUFBSSxJQUFJLENBQUMsR0FBTCxDQUFTLFVBQVQsQ0FBb0IsU0FBcEIsT0FBb0MsT0FB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Q1QsR0FESSxDQUNDLElBQUQsSUFBUztBQUNaLFlBQVEsSUFBUjtBQUNFLFdBQUssUUFBTDtBQUNFLGVBQU8sc0NBQXNDLElBQUksSUFBakQ7O0FBQ0YsV0FBSyxPQUFMO0FBQ0UsZUFBTyxxQ0FBcUMsSUFBSSxRQUFRLElBQUksSUFBNUQ7O0FBQ0YsV0FBSyxNQUFMO0FBQ0UsZUFBTywrQkFBK0IsSUFBSSxHQUExQzs7QUFDRixXQUFLLFVBQUw7QUFDRSxlQUFPLGtDQUFrQyxJQUFJLFdBQTdDOztBQUNGO0FBQ0UsZUFBTyxTQUFTLENBQUMsSUFBRCxDQUFoQjtBQVZKO0FBWUQsR0FkSSxFQWVKLElBZkksQ0FlQyxNQWZELENBQVA7QUFnQkQ7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpRkEsT0FBTSxTQUFVLFFBQVYsQ0FBMEMsSUFBMUMsRUFBaUQ7QUFDckQsU0FBTyxJQUFJLFFBQUosQ0FBYSxJQUFiLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFTVHYyLFxuICBnZW5lcmF0ZVN5bnRheEVycm9yLFxuICBpc0tleXdvcmQsXG4gIEtFWVdPUkRTX1RZUEVTLFxuICBLZXl3b3JkVHlwZSxcbn0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IGV4aGF1c3RlZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBFcnIsIFJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9yZXN1bHQnO1xuaW1wb3J0IHsgTm9ybWFsaXphdGlvblN0YXRlIH0gZnJvbSAnLi4vY29udGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZERlbGVnYXRlPE1hdGNoIGV4dGVuZHMgS2V5d29yZE1hdGNoLCBWLCBPdXQ+IHtcbiAgYXNzZXJ0KG9wdGlvbnM6IE1hdGNoLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PFY+O1xuICB0cmFuc2xhdGUob3B0aW9uczogeyBub2RlOiBNYXRjaDsgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSB9LCBwYXJhbTogVik6IFJlc3VsdDxPdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQ8SyBleHRlbmRzIEtleXdvcmRUeXBlID0gS2V5d29yZFR5cGUsIE91dCA9IHVua25vd24+IHtcbiAgdHJhbnNsYXRlKG5vZGU6IEtleXdvcmRDYW5kaWRhdGVzW0tdLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrS2V5d29yZDxPdXQgPSB1bmtub3duPiB7XG4gIHRyYW5zbGF0ZShub2RlOiBBU1R2Mi5JbnZva2VCbG9jaywgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxPdXQ+IHwgbnVsbDtcbn1cblxuY2xhc3MgS2V5d29yZEltcGw8XG4gIEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSxcbiAgUyBleHRlbmRzIHN0cmluZyA9IHN0cmluZyxcbiAgUGFyYW0gPSB1bmtub3duLFxuICBPdXQgPSB1bmtub3duXG4+IHtcbiAgcHJvdGVjdGVkIHR5cGVzOiBTZXQ8S2V5d29yZENhbmRpZGF0ZXNbS11bJ3R5cGUnXT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGtleXdvcmQ6IFMsXG4gICAgdHlwZTogS2V5d29yZFR5cGUsXG4gICAgcHJpdmF0ZSBkZWxlZ2F0ZTogS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCBQYXJhbSwgT3V0PlxuICApIHtcbiAgICBsZXQgbm9kZXMgPSBuZXcgU2V0PEtleXdvcmROb2RlWyd0eXBlJ10+KCk7XG4gICAgZm9yIChsZXQgbm9kZVR5cGUgb2YgS0VZV09SRF9OT0RFU1t0eXBlXSkge1xuICAgICAgbm9kZXMuYWRkKG5vZGVUeXBlKTtcbiAgICB9XG5cbiAgICB0aGlzLnR5cGVzID0gbm9kZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWF0Y2gobm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10pOiBub2RlIGlzIEtleXdvcmRNYXRjaGVzW0tdIHtcbiAgICBpZiAoIXRoaXMudHlwZXMuaGFzKG5vZGUudHlwZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgcGF0aCA9IGdldFBhdGhFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgaWYgKHBhdGggIT09IG51bGwgJiYgcGF0aC5yZWYudHlwZSA9PT0gJ0ZyZWUnKSB7XG4gICAgICBpZiAocGF0aC50YWlsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHBhdGgucmVmLnJlc29sdXRpb24uc2VyaWFsaXplKCkgPT09ICdMb29zZScpIHtcbiAgICAgICAgICAvLyBjYW5ub3QgYmUgYSBrZXl3b3JkIHJlZmVyZW5jZSwga2V5d29yZHMgZG8gbm90IGFsbG93IHBhdGhzIChtdXN0IGJlXG4gICAgICAgICAgLy8gcmVseWluZyBvbiBpbXBsaWNpdCB0aGlzIGZhbGxiYWNrKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGF0aC5yZWYubmFtZSA9PT0gdGhpcy5rZXl3b3JkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdHJhbnNsYXRlKG5vZGU6IEtleXdvcmRNYXRjaGVzW0tdLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsIHtcbiAgICBpZiAodGhpcy5tYXRjaChub2RlKSkge1xuICAgICAgbGV0IHBhdGggPSBnZXRQYXRoRXhwcmVzc2lvbihub2RlKTtcblxuICAgICAgaWYgKHBhdGggIT09IG51bGwgJiYgcGF0aC50YWlsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIEVycihcbiAgICAgICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYFRoZSBcXGAke1xuICAgICAgICAgICAgICB0aGlzLmtleXdvcmRcbiAgICAgICAgICAgIH1cXGAga2V5d29yZCB3YXMgdXNlZCBpbmNvcnJlY3RseS4gSXQgd2FzIHVzZWQgYXMgXFxgJHtwYXRoLmxvYy5hc1N0cmluZygpfVxcYCwgYnV0IGl0IGNhbm5vdCBiZSB1c2VkIHdpdGggYWRkaXRpb25hbCBwYXRoIHNlZ21lbnRzLiBcXG5cXG5FcnJvciBjYXVzZWQgYnlgLFxuICAgICAgICAgICAgbm9kZS5sb2NcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwYXJhbSA9IHRoaXMuZGVsZWdhdGUuYXNzZXJ0KG5vZGUsIHN0YXRlKTtcbiAgICAgIHJldHVybiBwYXJhbS5hbmRUaGVuKChwYXJhbSkgPT4gdGhpcy5kZWxlZ2F0ZS50cmFuc2xhdGUoeyBub2RlLCBzdGF0ZSB9LCBwYXJhbSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgUG9zc2libGVOb2RlID1cbiAgfCBBU1R2Mi5QYXRoRXhwcmVzc2lvblxuICB8IEFTVHYyLkFwcGVuZENvbnRlbnRcbiAgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvblxuICB8IEFTVHYyLkludm9rZUJsb2NrO1xuXG5leHBvcnQgY29uc3QgS0VZV09SRF9OT0RFUyA9IHtcbiAgQ2FsbDogWydDYWxsJ10sXG4gIEJsb2NrOiBbJ0ludm9rZUJsb2NrJ10sXG4gIEFwcGVuZDogWydBcHBlbmRDb250ZW50J10sXG4gIE1vZGlmaWVyOiBbJ0VsZW1lbnRNb2RpZmllciddLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkQ2FuZGlkYXRlcyB7XG4gIENhbGw6IEFTVHYyLkV4cHJlc3Npb25Ob2RlO1xuICBCbG9jazogQVNUdjIuSW52b2tlQmxvY2s7XG4gIEFwcGVuZDogQVNUdjIuQXBwZW5kQ29udGVudDtcbiAgTW9kaWZpZXI6IEFTVHYyLkVsZW1lbnRNb2RpZmllcjtcbn1cblxuZXhwb3J0IHR5cGUgS2V5d29yZENhbmRpZGF0ZSA9IEtleXdvcmRDYW5kaWRhdGVzW2tleW9mIEtleXdvcmRDYW5kaWRhdGVzXTtcblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkTWF0Y2hlcyB7XG4gIENhbGw6IEFTVHYyLkNhbGxFeHByZXNzaW9uO1xuICBCbG9jazogQVNUdjIuSW52b2tlQmxvY2s7XG4gIEFwcGVuZDogQVNUdjIuQXBwZW5kQ29udGVudDtcbiAgTW9kaWZpZXI6IEFTVHYyLkVsZW1lbnRNb2RpZmllcjtcbn1cblxuZXhwb3J0IHR5cGUgS2V5d29yZE1hdGNoID0gS2V5d29yZE1hdGNoZXNba2V5b2YgS2V5d29yZE1hdGNoZXNdO1xuXG4vKipcbiAqIEEgXCJnZW5lcmljXCIga2V5d29yZCBpcyBzb21ldGhpbmcgbGlrZSBgaGFzLWJsb2NrYCwgd2hpY2ggbWFrZXMgc2Vuc2UgaW4gdGhlIGNvbnRleHRcbiAqIG9mIHN1Yi1leHByZXNzaW9uIG9yIGFwcGVuZFxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljS2V5d29yZE5vZGUgPSBBU1R2Mi5BcHBlbmRDb250ZW50IHwgQVNUdjIuQ2FsbEV4cHJlc3Npb247XG5cbmV4cG9ydCB0eXBlIEtleXdvcmROb2RlID1cbiAgfCBHZW5lcmljS2V5d29yZE5vZGVcbiAgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvblxuICB8IEFTVHYyLkludm9rZUJsb2NrXG4gIHwgQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xuXG5leHBvcnQgZnVuY3Rpb24ga2V5d29yZDxcbiAgSyBleHRlbmRzIEtleXdvcmRUeXBlLFxuICBEIGV4dGVuZHMgS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCB1bmtub3duLCBPdXQ+LFxuICBPdXQgPSB1bmtub3duXG4+KGtleXdvcmQ6IHN0cmluZywgdHlwZTogSywgZGVsZWdhdGU6IEQpOiBLZXl3b3JkPEssIE91dD4ge1xuICByZXR1cm4gbmV3IEtleXdvcmRJbXBsKGtleXdvcmQsIHR5cGUsIGRlbGVnYXRlIGFzIEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2gsIHVua25vd24sIE91dD4pO1xufVxuXG5leHBvcnQgdHlwZSBQb3NzaWJsZUtleXdvcmQgPSBLZXl3b3JkTm9kZTtcbnR5cGUgT3V0Rm9yPEsgZXh0ZW5kcyBLZXl3b3JkIHwgQmxvY2tLZXl3b3JkPiA9IEsgZXh0ZW5kcyBCbG9ja0tleXdvcmQ8aW5mZXIgT3V0PlxuICA/IE91dFxuICA6IEsgZXh0ZW5kcyBLZXl3b3JkPEtleXdvcmRUeXBlLCBpbmZlciBPdXQ+XG4gID8gT3V0XG4gIDogbmV2ZXI7XG5cbmZ1bmN0aW9uIGdldFBhdGhFeHByZXNzaW9uKG5vZGU6IEtleXdvcmROb2RlIHwgQVNUdjIuRXhwcmVzc2lvbk5vZGUpOiBBU1R2Mi5QYXRoRXhwcmVzc2lvbiB8IG51bGwge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIC8vIFRoaXMgY292ZXJzIHRoZSBpbnNpZGUgb2YgYXR0cmlidXRlcyBhbmQgZXhwcmVzc2lvbnMsIGFzIHdlbGwgYXMgdGhlIGNhbGxlZVxuICAgIC8vIG9mIGNhbGwgbm9kZXNcbiAgICBjYXNlICdQYXRoJzpcbiAgICAgIHJldHVybiBub2RlO1xuICAgIGNhc2UgJ0FwcGVuZENvbnRlbnQnOlxuICAgICAgcmV0dXJuIGdldFBhdGhFeHByZXNzaW9uKG5vZGUudmFsdWUpO1xuICAgIGNhc2UgJ0NhbGwnOlxuICAgIGNhc2UgJ0ludm9rZUJsb2NrJzpcbiAgICBjYXNlICdFbGVtZW50TW9kaWZpZXInOlxuICAgICAgcmV0dXJuIGdldFBhdGhFeHByZXNzaW9uKG5vZGUuY2FsbGVlKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEtleXdvcmRzPEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSwgS2V5d29yZExpc3QgZXh0ZW5kcyBLZXl3b3JkPEs+ID0gbmV2ZXI+XG4gIGltcGxlbWVudHMgS2V5d29yZDxLLCBPdXRGb3I8S2V5d29yZExpc3Q+PiB7XG4gICNrZXl3b3JkczogS2V5d29yZFtdID0gW107XG4gICN0eXBlOiBLO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IEspIHtcbiAgICB0aGlzLiN0eXBlID0gdHlwZTtcbiAgfVxuXG4gIGt3PFMgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIE91dCA9IHVua25vd24+KFxuICAgIG5hbWU6IFMsXG4gICAgZGVsZWdhdGU6IEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2hlc1tLXSwgdW5rbm93biwgT3V0PlxuICApOiBLZXl3b3JkczxLLCBLZXl3b3JkTGlzdCB8IEtleXdvcmQ8SywgT3V0Pj4ge1xuICAgIHRoaXMuI2tleXdvcmRzLnB1c2goa2V5d29yZChuYW1lLCB0aGlzLiN0eXBlLCBkZWxlZ2F0ZSkpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0cmFuc2xhdGUoXG4gICAgbm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10sXG4gICAgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZVxuICApOiBSZXN1bHQ8T3V0Rm9yPEtleXdvcmRMaXN0Pj4gfCBudWxsIHtcbiAgICBmb3IgKGxldCBrZXl3b3JkIG9mIHRoaXMuI2tleXdvcmRzKSB7XG4gICAgICBsZXQgcmVzdWx0ID0ga2V5d29yZC50cmFuc2xhdGUobm9kZSwgc3RhdGUpIGFzIFJlc3VsdDxPdXRGb3I8S2V5d29yZExpc3Q+PjtcbiAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcGF0aCA9IGdldFBhdGhFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgaWYgKHBhdGggJiYgcGF0aC5yZWYudHlwZSA9PT0gJ0ZyZWUnICYmIGlzS2V5d29yZChwYXRoLnJlZi5uYW1lKSkge1xuICAgICAgbGV0IHsgbmFtZSB9ID0gcGF0aC5yZWY7XG5cbiAgICAgIGxldCB1c2VkVHlwZSA9IHRoaXMuI3R5cGU7XG4gICAgICBsZXQgdmFsaWRUeXBlcyA9IEtFWVdPUkRTX1RZUEVTW25hbWVdO1xuXG4gICAgICBpZiAodmFsaWRUeXBlcy5pbmRleE9mKHVzZWRUeXBlKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIEVycihcbiAgICAgICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYFRoZSBcXGAke25hbWV9XFxgIGtleXdvcmQgd2FzIHVzZWQgaW5jb3JyZWN0bHkuIEl0IHdhcyB1c2VkIGFzICR7XG4gICAgICAgICAgICAgIHR5cGVzVG9SZWFkYWJsZU5hbWVbdXNlZFR5cGVdXG4gICAgICAgICAgICB9LCBidXQgaXRzIHZhbGlkIHVzYWdlcyBhcmU6XFxuXFxuJHtnZW5lcmF0ZVR5cGVzTWVzc2FnZShcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgdmFsaWRUeXBlc1xuICAgICAgICAgICAgKX1cXG5cXG5FcnJvciBjYXVzZWQgYnlgLFxuICAgICAgICAgICAgbm9kZS5sb2NcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuY29uc3QgdHlwZXNUb1JlYWRhYmxlTmFtZSA9IHtcbiAgQXBwZW5kOiAnYW4gYXBwZW5kIHN0YXRlbWVudCcsXG4gIEJsb2NrOiAnYSBibG9jayBzdGF0ZW1lbnQnLFxuICBDYWxsOiAnYSBjYWxsIGV4cHJlc3Npb24nLFxuICBNb2RpZmllcjogJ2EgbW9kaWZpZXInLFxufTtcblxuZnVuY3Rpb24gZ2VuZXJhdGVUeXBlc01lc3NhZ2UobmFtZTogc3RyaW5nLCB0eXBlczogS2V5d29yZFR5cGVbXSk6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlc1xuICAgIC5tYXAoKHR5cGUpID0+IHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdBcHBlbmQnOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhbiBhcHBlbmQgc3RhdGVtZW50LCBhcyBpbjoge3ske25hbWV9fX1gO1xuICAgICAgICBjYXNlICdCbG9jayc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGEgYmxvY2sgc3RhdGVtZW50LCBhcyBpbjoge3sjJHtuYW1lfX19e3svJHtuYW1lfX19YDtcbiAgICAgICAgY2FzZSAnQ2FsbCc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGFuIGV4cHJlc3Npb24sIGFzIGluOiAoJHtuYW1lfSlgO1xuICAgICAgICBjYXNlICdNb2RpZmllcic6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGEgbW9kaWZpZXIsIGFzIGluOiA8ZGl2IHt7JHtuYW1lfX19PjwvZGl2PmA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGV4aGF1c3RlZCh0eXBlKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5qb2luKCdcXG5cXG4nKTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGJ1aWxkcyBrZXl3b3JkIGRlZmluaXRpb25zIGZvciBhIHBhcnRpY3VsYXIgdHlwZSBvZiBBU1Qgbm9kZSAoYEtleXdvcmRUeXBlYCkuXG4gKlxuICogWW91IGNhbiBidWlsZCBrZXl3b3JkIGRlZmluaXRpb25zIGZvcjpcbiAqXG4gKiAtIGBFeHByYDogQSBgU3ViRXhwcmVzc2lvbmAgb3IgYFBhdGhFeHByZXNzaW9uYFxuICogLSBgQmxvY2tgOiBBIGBCbG9ja1N0YXRlbWVudGBcbiAqICAgLSBBIGBCbG9ja1N0YXRlbWVudGAgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZiBpdHMgaGVhZCBpcyBhXG4gKiAgICAgYFBhdGhFeHByZXNzaW9uYFxuICogLSBgQXBwZW5kYDogQW4gYEFwcGVuZFN0YXRlbWVudGBcbiAqXG4gKiBBIG5vZGUgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZjpcbiAqXG4gKiAtIEEgYFBhdGhFeHByZXNzaW9uYCBpcyBhIGtleXdvcmQgY2FuZGlkYXRlIGlmIGl0IGhhcyBubyB0YWlsLCBhbmQgaXRzXG4gKiAgIGhlYWQgZXhwcmVzc2lvbiBpcyBhIGBMb2NhbFZhckhlYWRgIG9yIGBGcmVlVmFySGVhZGAgd2hvc2UgbmFtZSBpc1xuICogICB0aGUga2V5d29yZCdzIG5hbWUuXG4gKiAtIEEgYFN1YkV4cHJlc3Npb25gLCBgQXBwZW5kU3RhdGVtZW50YCwgb3IgYEJsb2NrU3RhdGVtZW50YCBpcyBhIGtleXdvcmRcbiAqICAgY2FuZGlkYXRlIGlmIGl0cyBoZWFkIGlzIGEga2V5d29yZCBjYW5kaWRhdGUuXG4gKlxuICogVGhlIGtleXdvcmQgaW5mcmFzdHJ1Y3R1cmUgZ3VhcmFudGVlcyB0aGF0OlxuICpcbiAqIC0gSWYgYSBub2RlIGlzIG5vdCBhIGtleXdvcmQgY2FuZGlkYXRlLCBpdCBpcyBuZXZlciBwYXNzZWQgdG8gYW55IGtleXdvcmQnc1xuICogICBgYXNzZXJ0YCBtZXRob2QuXG4gKiAtIElmIGEgbm9kZSBpcyBub3QgdGhlIGBLZXl3b3JkVHlwZWAgZm9yIGEgcGFydGljdWxhciBrZXl3b3JkLCBpdCB3aWxsIG5vdFxuICogICBiZSBwYXNzZWQgdG8gdGhlIGtleXdvcmQncyBgYXNzZXJ0YCBtZXRob2QuXG4gKlxuICogYEV4cHJgIGtleXdvcmRzIGFyZSB1c2VkIGluIGV4cHJlc3Npb24gcG9zaXRpb25zIGFuZCBzaG91bGQgcmV0dXJuIEhJUlxuICogZXhwcmVzc2lvbnMuIGBCbG9ja2AgYW5kIGBBcHBlbmRgIGtleXdvcmRzIGFyZSB1c2VkIGluIHN0YXRlbWVudFxuICogcG9zaXRpb25zIGFuZCBzaG91bGQgcmV0dXJuIEhJUiBzdGF0ZW1lbnRzLlxuICpcbiAqIEEga2V5d29yZCBkZWZpbml0aW9uIGhhcyB0d28gcGFydHM6XG4gKlxuICogLSBgbWF0Y2hgLCB3aGljaCBkZXRlcm1pbmVzIHdoZXRoZXIgYW4gQVNUIG5vZGUgbWF0Y2hlcyB0aGUga2V5d29yZCwgYW5kIGNhblxuICogICBvcHRpb25hbGx5IHJldHVybiBzb21lIGluZm9ybWF0aW9uIGV4dHJhY3RlZCBmcm9tIHRoZSBBU1Qgbm9kZS5cbiAqIC0gYHRyYW5zbGF0ZWAsIHdoaWNoIHRha2VzIGEgbWF0Y2hpbmcgQVNUIG5vZGUgYXMgd2VsbCBhcyB0aGUgZXh0cmFjdGVkXG4gKiAgIGluZm9ybWF0aW9uIGFuZCByZXR1cm5zIGFuIGFwcHJvcHJpYXRlIEhJUiBpbnN0cnVjdGlvbi5cbiAqXG4gKiAjIEV4YW1wbGVcbiAqXG4gKiBUaGlzIGtleXdvcmQ6XG4gKlxuICogLSB0dXJucyBgKGhlbGxvKWAgaW50byBgXCJoZWxsb1wiYFxuICogICAtIGFzIGxvbmcgYXMgYGhlbGxvYCBpcyBub3QgaW4gc2NvcGVcbiAqIC0gbWFrZXMgaXQgYW4gZXJyb3IgdG8gcGFzcyBhbnkgYXJndW1lbnRzIChzdWNoIGFzIGAoaGVsbG8gd29ybGQpYClcbiAqXG4gKiBgYGB0c1xuICoga2V5d29yZHMoJ1N1YkV4cHInKS5rdygnaGVsbG8nLCB7XG4gKiAgIGFzc2VydChub2RlOiBFeHByS2V5d29yZE5vZGUpOiBSZXN1bHQ8dm9pZD4gfCBmYWxzZSB7XG4gKiAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byB0cmFuc2Zvcm0gYGhlbGxvYCBhcyBhIGBQYXRoRXhwcmVzc2lvbmBcbiAqICAgICBpZiAobm9kZS50eXBlICE9PSAnU3ViRXhwcmVzc2lvbicpIHtcbiAqICAgICAgIHJldHVybiBmYWxzZTtcbiAqICAgICB9XG4gKlxuICogICAgIC8vIG5vZGUuaGVhZCB3b3VsZCBiZSBgTG9jYWxWYXJIZWFkYCBpZiBgaGVsbG9gIHdhcyBpbiBzY29wZVxuICogICAgIGlmIChub2RlLmhlYWQudHlwZSAhPT0gJ0ZyZWVWYXJIZWFkJykge1xuICogICAgICAgcmV0dXJuIGZhbHNlO1xuICogICAgIH1cbiAqXG4gKiAgICAgaWYgKG5vZGUucGFyYW1zLmxlbmd0aCB8fCBub2RlLmhhc2gpIHtcbiAqICAgICAgIHJldHVybiBFcnIoZ2VuZXJhdGVTeW50YXhFcnJvcihgKGhlbGxvKSBkb2VzIG5vdCB0YWtlIGFueSBhcmd1bWVudHNgKSwgbm9kZS5sb2MpO1xuICogICAgIH0gZWxzZSB7XG4gKiAgICAgICByZXR1cm4gT2soKTtcbiAqICAgICB9XG4gKiAgIH0sXG4gKlxuICogICB0cmFuc2xhdGUobm9kZTogQVNUdjIuU3ViRXhwcmVzc2lvbik6IGhpci5FeHByZXNzaW9uIHtcbiAqICAgICByZXR1cm4gQVNUdjIuYnVpbGRlcnMubGl0ZXJhbChcImhlbGxvXCIsIG5vZGUubG9jKVxuICogICB9XG4gKiB9KVxuICogYGBgXG4gKlxuICogVGhlIGtleXdvcmQgaW5mcmFzdHJ1Y3R1cmUgY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBub2RlIGlzIHRoZSByaWdodFxuICogdHlwZSBiZWZvcmUgY2FsbGluZyBgYXNzZXJ0YCwgc28geW91IG9ubHkgbmVlZCB0byBjb25zaWRlciBgU3ViRXhwcmVzc2lvbmBcbiAqIGFuZCBgUGF0aEV4cHJlc3Npb25gIGhlcmUuIEl0IGFsc28gY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBub2RlIHBhc3NlZFxuICogdG8gYGFzc2VydGAgaGFzIHRoZSBrZXl3b3JkIG5hbWUgaW4gdGhlIHJpZ2h0IHBsYWNlLlxuICpcbiAqIE5vdGUgdGhlIGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW4gcmV0dXJuaW5nIGBmYWxzZWAgZnJvbSBgYXNzZXJ0YCxcbiAqIHdoaWNoIGp1c3QgbWVhbnMgdGhhdCB0aGUgbm9kZSBkaWRuJ3QgbWF0Y2gsIGFuZCByZXR1cm5pbmcgYEVycmAsIHdoaWNoXG4gKiBtZWFucyB0aGF0IHRoZSBub2RlIG1hdGNoZWQsIGJ1dCB0aGVyZSB3YXMgYSBrZXl3b3JkLXNwZWNpZmljIHN5bnRheFxuICogZXJyb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrZXl3b3JkczxLIGV4dGVuZHMgS2V5d29yZFR5cGU+KHR5cGU6IEspOiBLZXl3b3JkczxLPiB7XG4gIHJldHVybiBuZXcgS2V5d29yZHModHlwZSk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 |
@@ -54,2 +54,10 @@ 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); } | ||
if (path !== null && path.ref.type === 'Free') { | ||
if (path.tail.length > 0) { | ||
if (path.ref.resolution.serialize() === 'Loose') { | ||
// cannot be a keyword reference, keywords do not allow paths (must be | ||
// relying on implicit this fallback) | ||
return false; | ||
} | ||
} | ||
return path.ref.name === this.keyword; | ||
@@ -65,2 +73,8 @@ } else { | ||
if (this.match(node)) { | ||
var path = getPathExpression(node); | ||
if (path !== null && path.tail.length > 0) { | ||
return Err(generateSyntaxError("The `" + this.keyword + "` keyword was used incorrectly. It was used as `" + path.loc.asString() + "`, but it cannot be used with additional path segments. \n\nError caused by", node.loc)); | ||
} | ||
var param = this.delegate.assert(node, state); | ||
@@ -272,2 +286,2 @@ return param.andThen(function (param) { | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQUEsbUJBQUEsRUFBQSxTQUFBLEVBQUEsY0FBQSxRQUFBLGlCQUFBO0FBT0EsU0FBQSxTQUFBLFFBQUEsZUFBQTtBQUVBLFNBQUEsR0FBQSxRQUFBLHdCQUFBOztJQWdCQSxXO0FBUUUsdUJBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxRQUFBLEVBR2tFO0FBRnRELFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFFRixTQUFBLFFBQUEsR0FBQSxRQUFBO0FBRVIsUUFBSSxLQUFLLEdBQUcsSUFBWixHQUFZLEVBQVo7O0FBQ0EseURBQXFCLGFBQWEsQ0FBbEMsSUFBa0MsQ0FBbEMsd0NBQTBDO0FBQUEsVUFBMUMsUUFBMEM7QUFDeEMsTUFBQSxLQUFLLENBQUwsR0FBQSxDQUFBLFFBQUE7QUFDRDs7QUFFRCxTQUFBLEtBQUEsR0FBQSxLQUFBO0FBQ0Q7Ozs7U0FFUyxLLEdBQUEsZUFBSyxJQUFMLEVBQWdDO0FBQ3hDLFFBQUksQ0FBQyxLQUFBLEtBQUEsQ0FBQSxHQUFBLENBQWUsSUFBSSxDQUF4QixJQUFLLENBQUwsRUFBZ0M7QUFDOUIsYUFBQSxLQUFBO0FBQ0Q7O0FBRUQsUUFBSSxJQUFJLEdBQUcsaUJBQWlCLENBQTVCLElBQTRCLENBQTVCOztBQUVBLFFBQUksSUFBSSxLQUFKLElBQUEsSUFBaUIsSUFBSSxDQUFKLEdBQUEsQ0FBQSxJQUFBLEtBQXJCLE1BQUEsRUFBK0M7QUFDN0MsYUFBTyxJQUFJLENBQUosR0FBQSxDQUFBLElBQUEsS0FBa0IsS0FBekIsT0FBQTtBQURGLEtBQUEsTUFFTztBQUNMLGFBQUEsS0FBQTtBQUNEO0FBQ0YsRzs7U0FFRCxTLEdBQUEsbUJBQVMsSUFBVCxFQUFTLEtBQVQsRUFBNEQ7QUFBQTs7QUFDMUQsUUFBSSxLQUFBLEtBQUEsQ0FBSixJQUFJLENBQUosRUFBc0I7QUFDcEIsVUFBSSxLQUFLLEdBQUcsS0FBQSxRQUFBLENBQUEsTUFBQSxDQUFBLElBQUEsRUFBWixLQUFZLENBQVo7QUFDQSxhQUFPLEtBQUssQ0FBTCxPQUFBLENBQWUsVUFBQSxLQUFEO0FBQUEsZUFBVyxLQUFBLENBQUEsUUFBQSxDQUFBLFNBQUEsQ0FBd0I7QUFBRSxVQUFBLElBQUYsRUFBRSxJQUFGO0FBQVEsVUFBQSxLQUFBLEVBQUE7QUFBUixTQUF4QixFQUFoQyxLQUFnQyxDQUFYO0FBQUEsT0FBZCxDQUFQO0FBRkYsS0FBQSxNQUdPO0FBQ0wsYUFBQSxJQUFBO0FBQ0Q7QUFDRixHOzs7OztBQVNILE9BQU8sSUFBTSxhQUFhLEdBQUc7QUFDM0IsRUFBQSxJQUFJLEVBQUUsQ0FEcUIsTUFDckIsQ0FEcUI7QUFFM0IsRUFBQSxLQUFLLEVBQUUsQ0FGb0IsYUFFcEIsQ0FGb0I7QUFHM0IsRUFBQSxNQUFNLEVBQUUsQ0FIbUIsZUFHbkIsQ0FIbUI7QUFJM0IsRUFBQSxRQUFRLEVBQUUsQ0FBQSxpQkFBQTtBQUppQixDQUF0QjtBQXFDUCxPQUFNLFNBQUEsT0FBQSxDQUFBLE9BQUEsRUFBQSxJQUFBLEVBQUEsUUFBQSxFQUlpQztBQUNyQyxTQUFPLElBQUEsV0FBQSxDQUFBLE9BQUEsRUFBQSxJQUFBLEVBQVAsUUFBTyxDQUFQO0FBQ0Q7O0FBU0QsU0FBQSxpQkFBQSxDQUFBLElBQUEsRUFBbUU7QUFDakUsVUFBUSxJQUFJLENBQVosSUFBQTtBQUNFO0FBQ0E7QUFDQSxTQUFBLE1BQUE7QUFDRSxhQUFBLElBQUE7O0FBQ0YsU0FBQSxlQUFBO0FBQ0UsYUFBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQTdCLEtBQXdCLENBQXhCOztBQUNGLFNBQUEsTUFBQTtBQUNBLFNBQUEsYUFBQTtBQUNBLFNBQUEsaUJBQUE7QUFDRSxhQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBN0IsTUFBd0IsQ0FBeEI7O0FBQ0Y7QUFDRSxhQUFBLElBQUE7QUFaSjtBQWNEOztBQUVELFdBQU0sUUFBTjtBQUtFLG9CQUFBLElBQUEsRUFBbUI7QUFIbkIsSUFBQSxTQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsRUFBQSxFQUFBOztBQUNBLElBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBOztBQUdFLElBQUEsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxFQUFBLElBQUEsQ0FBQTtBQUNEOztBQVBIOztBQUFBLFVBU0UsRUFURixHQVNFLFlBQUUsSUFBRixFQUFFLFFBQUYsRUFFNEQ7QUFFMUQsSUFBQSxzQkFBQSxDQUFBLElBQUEsRUFBQSxTQUFBLENBQUEsQ0FBQSxJQUFBLENBQW9CLE9BQU8sQ0FBQSxJQUFBLEVBQUssc0JBQUEsQ0FBQSxJQUFBLEVBQUwsS0FBSyxDQUFMLEVBQTNCLFFBQTJCLENBQTNCOztBQUVBLFdBQUEsSUFBQTtBQUNELEdBaEJIOztBQUFBLFVBa0JFLFNBbEJGLEdBa0JFLG1CQUFTLElBQVQsRUFBUyxLQUFULEVBRTJCO0FBRXpCLDBEQUFnQixzQkFBQSxDQUFBLElBQUEsRUFBaEIsU0FBZ0IsQ0FBaEIsMkNBQW9DO0FBQUEsVUFBcEMsUUFBb0M7O0FBQ2xDLFVBQUksTUFBTSxHQUFHLFFBQU8sQ0FBUCxTQUFBLENBQUEsSUFBQSxFQUFiLEtBQWEsQ0FBYjs7QUFDQSxVQUFJLE1BQU0sS0FBVixJQUFBLEVBQXFCO0FBQ25CLGVBQUEsTUFBQTtBQUNEO0FBQ0Y7O0FBRUQsUUFBSSxJQUFJLEdBQUcsaUJBQWlCLENBQTVCLElBQTRCLENBQTVCOztBQUVBLFFBQUksSUFBSSxJQUFJLElBQUksQ0FBSixHQUFBLENBQUEsSUFBQSxLQUFSLE1BQUEsSUFBb0MsU0FBUyxDQUFDLElBQUksQ0FBSixHQUFBLENBQWxELElBQWlELENBQWpELEVBQWtFO0FBQUEsVUFDMUQsSUFEMEQsR0FDakQsSUFBSSxDQUFuQixHQURnRSxDQUMxRCxJQUQwRDs7QUFHaEUsVUFBSSxRQUFRLEdBQUEsc0JBQUEsQ0FBQSxJQUFBLEVBQVosS0FBWSxDQUFaOztBQUNBLFVBQUksVUFBVSxHQUFHLGNBQWMsQ0FBL0IsSUFBK0IsQ0FBL0I7O0FBRUEsVUFBSSxVQUFVLENBQVYsT0FBQSxDQUFBLFFBQUEsTUFBaUMsQ0FBckMsQ0FBQSxFQUF5QztBQUN2QyxlQUFPLEdBQUcsQ0FDUixtQkFBbUIsV0FDUixJQURRLHVEQUVmLG1CQUFtQixDQUFBLFFBQUEsQ0FGSix1Q0FHaUIsb0JBQW9CLENBQUEsSUFBQSxFQUhyQyxVQUdxQyxDQUhyQywwQkFPakIsSUFBSSxDQVJSLEdBQ3FCLENBRFgsQ0FBVjtBQVdEO0FBQ0Y7O0FBRUQsV0FBQSxJQUFBO0FBQ0QsR0FyREg7O0FBQUE7QUFBQTs7QUF3REEsSUFBTSxtQkFBbUIsR0FBRztBQUMxQixFQUFBLE1BQU0sRUFEb0IscUJBQUE7QUFFMUIsRUFBQSxLQUFLLEVBRnFCLG1CQUFBO0FBRzFCLEVBQUEsSUFBSSxFQUhzQixtQkFBQTtBQUkxQixFQUFBLFFBQVEsRUFBRTtBQUpnQixDQUE1Qjs7QUFPQSxTQUFBLG9CQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsRUFBZ0U7QUFDOUQsU0FBTyxLQUFLLENBQUwsR0FBQSxDQUNDLFVBQUEsSUFBRCxFQUFTO0FBQ1osWUFBQSxJQUFBO0FBQ0UsV0FBQSxRQUFBO0FBQ0UsdURBQUEsSUFBQTs7QUFDRixXQUFBLE9BQUE7QUFDRSxzREFBNEMsSUFBNUMsYUFBQSxJQUFBOztBQUNGLFdBQUEsTUFBQTtBQUNFLGdEQUFBLElBQUE7O0FBQ0YsV0FBQSxVQUFBO0FBQ0UsbURBQUEsSUFBQTs7QUFDRjtBQUNFLGVBQU8sU0FBUyxDQUFoQixJQUFnQixDQUFoQjtBQVZKO0FBRkcsR0FBQSxFQUFBLElBQUEsQ0FBUCxNQUFPLENBQVA7QUFnQkQ7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpRkEsT0FBTSxTQUFBLFFBQUEsQ0FBQSxJQUFBLEVBQWlEO0FBQ3JELFNBQU8sSUFBQSxRQUFBLENBQVAsSUFBTyxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBU1R2MixcbiAgZ2VuZXJhdGVTeW50YXhFcnJvcixcbiAgaXNLZXl3b3JkLFxuICBLRVlXT1JEU19UWVBFUyxcbiAgS2V5d29yZFR5cGUsXG59IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBleGhhdXN0ZWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHsgRXJyLCBSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvcmVzdWx0JztcbmltcG9ydCB7IE5vcm1hbGl6YXRpb25TdGF0ZSB9IGZyb20gJy4uL2NvbnRleHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmREZWxlZ2F0ZTxNYXRjaCBleHRlbmRzIEtleXdvcmRNYXRjaCwgViwgT3V0PiB7XG4gIGFzc2VydChvcHRpb25zOiBNYXRjaCwgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxWPjtcbiAgdHJhbnNsYXRlKG9wdGlvbnM6IHsgbm9kZTogTWF0Y2g7IHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUgfSwgcGFyYW06IFYpOiBSZXN1bHQ8T3V0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkPEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSA9IEtleXdvcmRUeXBlLCBPdXQgPSB1bmtub3duPiB7XG4gIHRyYW5zbGF0ZShub2RlOiBLZXl3b3JkQ2FuZGlkYXRlc1tLXSwgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxPdXQ+IHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCbG9ja0tleXdvcmQ8T3V0ID0gdW5rbm93bj4ge1xuICB0cmFuc2xhdGUobm9kZTogQVNUdjIuSW52b2tlQmxvY2ssIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8T3V0PiB8IG51bGw7XG59XG5cbmNsYXNzIEtleXdvcmRJbXBsPFxuICBLIGV4dGVuZHMgS2V5d29yZFR5cGUsXG4gIFMgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIFBhcmFtID0gdW5rbm93bixcbiAgT3V0ID0gdW5rbm93blxuPiB7XG4gIHByb3RlY3RlZCB0eXBlczogU2V0PEtleXdvcmRDYW5kaWRhdGVzW0tdWyd0eXBlJ10+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBrZXl3b3JkOiBTLFxuICAgIHR5cGU6IEtleXdvcmRUeXBlLFxuICAgIHByaXZhdGUgZGVsZWdhdGU6IEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2hlc1tLXSwgUGFyYW0sIE91dD5cbiAgKSB7XG4gICAgbGV0IG5vZGVzID0gbmV3IFNldDxLZXl3b3JkTm9kZVsndHlwZSddPigpO1xuICAgIGZvciAobGV0IG5vZGVUeXBlIG9mIEtFWVdPUkRfTk9ERVNbdHlwZV0pIHtcbiAgICAgIG5vZGVzLmFkZChub2RlVHlwZSk7XG4gICAgfVxuXG4gICAgdGhpcy50eXBlcyA9IG5vZGVzO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hdGNoKG5vZGU6IEtleXdvcmRDYW5kaWRhdGVzW0tdKTogbm9kZSBpcyBLZXl3b3JkTWF0Y2hlc1tLXSB7XG4gICAgaWYgKCF0aGlzLnR5cGVzLmhhcyhub2RlLnR5cGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IHBhdGggPSBnZXRQYXRoRXhwcmVzc2lvbihub2RlKTtcblxuICAgIGlmIChwYXRoICE9PSBudWxsICYmIHBhdGgucmVmLnR5cGUgPT09ICdGcmVlJykge1xuICAgICAgcmV0dXJuIHBhdGgucmVmLm5hbWUgPT09IHRoaXMua2V5d29yZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHRyYW5zbGF0ZShub2RlOiBLZXl3b3JkTWF0Y2hlc1tLXSwgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxPdXQ+IHwgbnVsbCB7XG4gICAgaWYgKHRoaXMubWF0Y2gobm9kZSkpIHtcbiAgICAgIGxldCBwYXJhbSA9IHRoaXMuZGVsZWdhdGUuYXNzZXJ0KG5vZGUsIHN0YXRlKTtcbiAgICAgIHJldHVybiBwYXJhbS5hbmRUaGVuKChwYXJhbSkgPT4gdGhpcy5kZWxlZ2F0ZS50cmFuc2xhdGUoeyBub2RlLCBzdGF0ZSB9LCBwYXJhbSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgUG9zc2libGVOb2RlID1cbiAgfCBBU1R2Mi5QYXRoRXhwcmVzc2lvblxuICB8IEFTVHYyLkFwcGVuZENvbnRlbnRcbiAgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvblxuICB8IEFTVHYyLkludm9rZUJsb2NrO1xuXG5leHBvcnQgY29uc3QgS0VZV09SRF9OT0RFUyA9IHtcbiAgQ2FsbDogWydDYWxsJ10sXG4gIEJsb2NrOiBbJ0ludm9rZUJsb2NrJ10sXG4gIEFwcGVuZDogWydBcHBlbmRDb250ZW50J10sXG4gIE1vZGlmaWVyOiBbJ0VsZW1lbnRNb2RpZmllciddLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkQ2FuZGlkYXRlcyB7XG4gIENhbGw6IEFTVHYyLkV4cHJlc3Npb25Ob2RlO1xuICBCbG9jazogQVNUdjIuSW52b2tlQmxvY2s7XG4gIEFwcGVuZDogQVNUdjIuQXBwZW5kQ29udGVudDtcbiAgTW9kaWZpZXI6IEFTVHYyLkVsZW1lbnRNb2RpZmllcjtcbn1cblxuZXhwb3J0IHR5cGUgS2V5d29yZENhbmRpZGF0ZSA9IEtleXdvcmRDYW5kaWRhdGVzW2tleW9mIEtleXdvcmRDYW5kaWRhdGVzXTtcblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkTWF0Y2hlcyB7XG4gIENhbGw6IEFTVHYyLkNhbGxFeHByZXNzaW9uO1xuICBCbG9jazogQVNUdjIuSW52b2tlQmxvY2s7XG4gIEFwcGVuZDogQVNUdjIuQXBwZW5kQ29udGVudDtcbiAgTW9kaWZpZXI6IEFTVHYyLkVsZW1lbnRNb2RpZmllcjtcbn1cblxuZXhwb3J0IHR5cGUgS2V5d29yZE1hdGNoID0gS2V5d29yZE1hdGNoZXNba2V5b2YgS2V5d29yZE1hdGNoZXNdO1xuXG4vKipcbiAqIEEgXCJnZW5lcmljXCIga2V5d29yZCBpcyBzb21ldGhpbmcgbGlrZSBgaGFzLWJsb2NrYCwgd2hpY2ggbWFrZXMgc2Vuc2UgaW4gdGhlIGNvbnRleHRcbiAqIG9mIHN1Yi1leHByZXNzaW9uIG9yIGFwcGVuZFxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljS2V5d29yZE5vZGUgPSBBU1R2Mi5BcHBlbmRDb250ZW50IHwgQVNUdjIuQ2FsbEV4cHJlc3Npb247XG5cbmV4cG9ydCB0eXBlIEtleXdvcmROb2RlID1cbiAgfCBHZW5lcmljS2V5d29yZE5vZGVcbiAgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvblxuICB8IEFTVHYyLkludm9rZUJsb2NrXG4gIHwgQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xuXG5leHBvcnQgZnVuY3Rpb24ga2V5d29yZDxcbiAgSyBleHRlbmRzIEtleXdvcmRUeXBlLFxuICBEIGV4dGVuZHMgS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCB1bmtub3duLCBPdXQ+LFxuICBPdXQgPSB1bmtub3duXG4+KGtleXdvcmQ6IHN0cmluZywgdHlwZTogSywgZGVsZWdhdGU6IEQpOiBLZXl3b3JkPEssIE91dD4ge1xuICByZXR1cm4gbmV3IEtleXdvcmRJbXBsKGtleXdvcmQsIHR5cGUsIGRlbGVnYXRlIGFzIEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2gsIHVua25vd24sIE91dD4pO1xufVxuXG5leHBvcnQgdHlwZSBQb3NzaWJsZUtleXdvcmQgPSBLZXl3b3JkTm9kZTtcbnR5cGUgT3V0Rm9yPEsgZXh0ZW5kcyBLZXl3b3JkIHwgQmxvY2tLZXl3b3JkPiA9IEsgZXh0ZW5kcyBCbG9ja0tleXdvcmQ8aW5mZXIgT3V0PlxuICA/IE91dFxuICA6IEsgZXh0ZW5kcyBLZXl3b3JkPEtleXdvcmRUeXBlLCBpbmZlciBPdXQ+XG4gID8gT3V0XG4gIDogbmV2ZXI7XG5cbmZ1bmN0aW9uIGdldFBhdGhFeHByZXNzaW9uKG5vZGU6IEtleXdvcmROb2RlIHwgQVNUdjIuRXhwcmVzc2lvbk5vZGUpOiBBU1R2Mi5QYXRoRXhwcmVzc2lvbiB8IG51bGwge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIC8vIFRoaXMgY292ZXJzIHRoZSBpbnNpZGUgb2YgYXR0cmlidXRlcyBhbmQgZXhwcmVzc2lvbnMsIGFzIHdlbGwgYXMgdGhlIGNhbGxlZVxuICAgIC8vIG9mIGNhbGwgbm9kZXNcbiAgICBjYXNlICdQYXRoJzpcbiAgICAgIHJldHVybiBub2RlO1xuICAgIGNhc2UgJ0FwcGVuZENvbnRlbnQnOlxuICAgICAgcmV0dXJuIGdldFBhdGhFeHByZXNzaW9uKG5vZGUudmFsdWUpO1xuICAgIGNhc2UgJ0NhbGwnOlxuICAgIGNhc2UgJ0ludm9rZUJsb2NrJzpcbiAgICBjYXNlICdFbGVtZW50TW9kaWZpZXInOlxuICAgICAgcmV0dXJuIGdldFBhdGhFeHByZXNzaW9uKG5vZGUuY2FsbGVlKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEtleXdvcmRzPEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSwgS2V5d29yZExpc3QgZXh0ZW5kcyBLZXl3b3JkPEs+ID0gbmV2ZXI+XG4gIGltcGxlbWVudHMgS2V5d29yZDxLLCBPdXRGb3I8S2V5d29yZExpc3Q+PiB7XG4gICNrZXl3b3JkczogS2V5d29yZFtdID0gW107XG4gICN0eXBlOiBLO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IEspIHtcbiAgICB0aGlzLiN0eXBlID0gdHlwZTtcbiAgfVxuXG4gIGt3PFMgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIE91dCA9IHVua25vd24+KFxuICAgIG5hbWU6IFMsXG4gICAgZGVsZWdhdGU6IEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2hlc1tLXSwgdW5rbm93biwgT3V0PlxuICApOiBLZXl3b3JkczxLLCBLZXl3b3JkTGlzdCB8IEtleXdvcmQ8SywgT3V0Pj4ge1xuICAgIHRoaXMuI2tleXdvcmRzLnB1c2goa2V5d29yZChuYW1lLCB0aGlzLiN0eXBlLCBkZWxlZ2F0ZSkpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0cmFuc2xhdGUoXG4gICAgbm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10sXG4gICAgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZVxuICApOiBSZXN1bHQ8T3V0Rm9yPEtleXdvcmRMaXN0Pj4gfCBudWxsIHtcbiAgICBmb3IgKGxldCBrZXl3b3JkIG9mIHRoaXMuI2tleXdvcmRzKSB7XG4gICAgICBsZXQgcmVzdWx0ID0ga2V5d29yZC50cmFuc2xhdGUobm9kZSwgc3RhdGUpIGFzIFJlc3VsdDxPdXRGb3I8S2V5d29yZExpc3Q+PjtcbiAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcGF0aCA9IGdldFBhdGhFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgaWYgKHBhdGggJiYgcGF0aC5yZWYudHlwZSA9PT0gJ0ZyZWUnICYmIGlzS2V5d29yZChwYXRoLnJlZi5uYW1lKSkge1xuICAgICAgbGV0IHsgbmFtZSB9ID0gcGF0aC5yZWY7XG5cbiAgICAgIGxldCB1c2VkVHlwZSA9IHRoaXMuI3R5cGU7XG4gICAgICBsZXQgdmFsaWRUeXBlcyA9IEtFWVdPUkRTX1RZUEVTW25hbWVdO1xuXG4gICAgICBpZiAodmFsaWRUeXBlcy5pbmRleE9mKHVzZWRUeXBlKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIEVycihcbiAgICAgICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYFRoZSBcXGAke25hbWV9XFxgIGtleXdvcmQgd2FzIHVzZWQgaW5jb3JyZWN0bHkuIEl0IHdhcyB1c2VkIGFzICR7XG4gICAgICAgICAgICAgIHR5cGVzVG9SZWFkYWJsZU5hbWVbdXNlZFR5cGVdXG4gICAgICAgICAgICB9LCBidXQgaXRzIHZhbGlkIHVzYWdlcyBhcmU6XFxuXFxuJHtnZW5lcmF0ZVR5cGVzTWVzc2FnZShcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgdmFsaWRUeXBlc1xuICAgICAgICAgICAgKX1cXG5cXG5FcnJvciBjYXVzZWQgYnlgLFxuICAgICAgICAgICAgbm9kZS5sb2NcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuY29uc3QgdHlwZXNUb1JlYWRhYmxlTmFtZSA9IHtcbiAgQXBwZW5kOiAnYW4gYXBwZW5kIHN0YXRlbWVudCcsXG4gIEJsb2NrOiAnYSBibG9jayBzdGF0ZW1lbnQnLFxuICBDYWxsOiAnYSBjYWxsIGV4cHJlc3Npb24nLFxuICBNb2RpZmllcjogJ2EgbW9kaWZpZXInLFxufTtcblxuZnVuY3Rpb24gZ2VuZXJhdGVUeXBlc01lc3NhZ2UobmFtZTogc3RyaW5nLCB0eXBlczogS2V5d29yZFR5cGVbXSk6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlc1xuICAgIC5tYXAoKHR5cGUpID0+IHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdBcHBlbmQnOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhbiBhcHBlbmQgc3RhdGVtZW50LCBhcyBpbjoge3ske25hbWV9fX1gO1xuICAgICAgICBjYXNlICdCbG9jayc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGEgYmxvY2sgc3RhdGVtZW50LCBhcyBpbjoge3sjJHtuYW1lfX19e3svJHtuYW1lfX19YDtcbiAgICAgICAgY2FzZSAnQ2FsbCc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGFuIGV4cHJlc3Npb24sIGFzIGluOiAoJHtuYW1lfSlgO1xuICAgICAgICBjYXNlICdNb2RpZmllcic6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGEgbW9kaWZpZXIsIGFzIGluOiA8ZGl2IHt7JHtuYW1lfX19PjwvZGl2PmA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGV4aGF1c3RlZCh0eXBlKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5qb2luKCdcXG5cXG4nKTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGJ1aWxkcyBrZXl3b3JkIGRlZmluaXRpb25zIGZvciBhIHBhcnRpY3VsYXIgdHlwZSBvZiBBU1Qgbm9kZSAoYEtleXdvcmRUeXBlYCkuXG4gKlxuICogWW91IGNhbiBidWlsZCBrZXl3b3JkIGRlZmluaXRpb25zIGZvcjpcbiAqXG4gKiAtIGBFeHByYDogQSBgU3ViRXhwcmVzc2lvbmAgb3IgYFBhdGhFeHByZXNzaW9uYFxuICogLSBgQmxvY2tgOiBBIGBCbG9ja1N0YXRlbWVudGBcbiAqICAgLSBBIGBCbG9ja1N0YXRlbWVudGAgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZiBpdHMgaGVhZCBpcyBhXG4gKiAgICAgYFBhdGhFeHByZXNzaW9uYFxuICogLSBgQXBwZW5kYDogQW4gYEFwcGVuZFN0YXRlbWVudGBcbiAqXG4gKiBBIG5vZGUgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZjpcbiAqXG4gKiAtIEEgYFBhdGhFeHByZXNzaW9uYCBpcyBhIGtleXdvcmQgY2FuZGlkYXRlIGlmIGl0IGhhcyBubyB0YWlsLCBhbmQgaXRzXG4gKiAgIGhlYWQgZXhwcmVzc2lvbiBpcyBhIGBMb2NhbFZhckhlYWRgIG9yIGBGcmVlVmFySGVhZGAgd2hvc2UgbmFtZSBpc1xuICogICB0aGUga2V5d29yZCdzIG5hbWUuXG4gKiAtIEEgYFN1YkV4cHJlc3Npb25gLCBgQXBwZW5kU3RhdGVtZW50YCwgb3IgYEJsb2NrU3RhdGVtZW50YCBpcyBhIGtleXdvcmRcbiAqICAgY2FuZGlkYXRlIGlmIGl0cyBoZWFkIGlzIGEga2V5d29yZCBjYW5kaWRhdGUuXG4gKlxuICogVGhlIGtleXdvcmQgaW5mcmFzdHJ1Y3R1cmUgZ3VhcmFudGVlcyB0aGF0OlxuICpcbiAqIC0gSWYgYSBub2RlIGlzIG5vdCBhIGtleXdvcmQgY2FuZGlkYXRlLCBpdCBpcyBuZXZlciBwYXNzZWQgdG8gYW55IGtleXdvcmQnc1xuICogICBgYXNzZXJ0YCBtZXRob2QuXG4gKiAtIElmIGEgbm9kZSBpcyBub3QgdGhlIGBLZXl3b3JkVHlwZWAgZm9yIGEgcGFydGljdWxhciBrZXl3b3JkLCBpdCB3aWxsIG5vdFxuICogICBiZSBwYXNzZWQgdG8gdGhlIGtleXdvcmQncyBgYXNzZXJ0YCBtZXRob2QuXG4gKlxuICogYEV4cHJgIGtleXdvcmRzIGFyZSB1c2VkIGluIGV4cHJlc3Npb24gcG9zaXRpb25zIGFuZCBzaG91bGQgcmV0dXJuIEhJUlxuICogZXhwcmVzc2lvbnMuIGBCbG9ja2AgYW5kIGBBcHBlbmRgIGtleXdvcmRzIGFyZSB1c2VkIGluIHN0YXRlbWVudFxuICogcG9zaXRpb25zIGFuZCBzaG91bGQgcmV0dXJuIEhJUiBzdGF0ZW1lbnRzLlxuICpcbiAqIEEga2V5d29yZCBkZWZpbml0aW9uIGhhcyB0d28gcGFydHM6XG4gKlxuICogLSBgbWF0Y2hgLCB3aGljaCBkZXRlcm1pbmVzIHdoZXRoZXIgYW4gQVNUIG5vZGUgbWF0Y2hlcyB0aGUga2V5d29yZCwgYW5kIGNhblxuICogICBvcHRpb25hbGx5IHJldHVybiBzb21lIGluZm9ybWF0aW9uIGV4dHJhY3RlZCBmcm9tIHRoZSBBU1Qgbm9kZS5cbiAqIC0gYHRyYW5zbGF0ZWAsIHdoaWNoIHRha2VzIGEgbWF0Y2hpbmcgQVNUIG5vZGUgYXMgd2VsbCBhcyB0aGUgZXh0cmFjdGVkXG4gKiAgIGluZm9ybWF0aW9uIGFuZCByZXR1cm5zIGFuIGFwcHJvcHJpYXRlIEhJUiBpbnN0cnVjdGlvbi5cbiAqXG4gKiAjIEV4YW1wbGVcbiAqXG4gKiBUaGlzIGtleXdvcmQ6XG4gKlxuICogLSB0dXJucyBgKGhlbGxvKWAgaW50byBgXCJoZWxsb1wiYFxuICogICAtIGFzIGxvbmcgYXMgYGhlbGxvYCBpcyBub3QgaW4gc2NvcGVcbiAqIC0gbWFrZXMgaXQgYW4gZXJyb3IgdG8gcGFzcyBhbnkgYXJndW1lbnRzIChzdWNoIGFzIGAoaGVsbG8gd29ybGQpYClcbiAqXG4gKiBgYGB0c1xuICoga2V5d29yZHMoJ1N1YkV4cHInKS5rdygnaGVsbG8nLCB7XG4gKiAgIGFzc2VydChub2RlOiBFeHByS2V5d29yZE5vZGUpOiBSZXN1bHQ8dm9pZD4gfCBmYWxzZSB7XG4gKiAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byB0cmFuc2Zvcm0gYGhlbGxvYCBhcyBhIGBQYXRoRXhwcmVzc2lvbmBcbiAqICAgICBpZiAobm9kZS50eXBlICE9PSAnU3ViRXhwcmVzc2lvbicpIHtcbiAqICAgICAgIHJldHVybiBmYWxzZTtcbiAqICAgICB9XG4gKlxuICogICAgIC8vIG5vZGUuaGVhZCB3b3VsZCBiZSBgTG9jYWxWYXJIZWFkYCBpZiBgaGVsbG9gIHdhcyBpbiBzY29wZVxuICogICAgIGlmIChub2RlLmhlYWQudHlwZSAhPT0gJ0ZyZWVWYXJIZWFkJykge1xuICogICAgICAgcmV0dXJuIGZhbHNlO1xuICogICAgIH1cbiAqXG4gKiAgICAgaWYgKG5vZGUucGFyYW1zLmxlbmd0aCB8fCBub2RlLmhhc2gpIHtcbiAqICAgICAgIHJldHVybiBFcnIoZ2VuZXJhdGVTeW50YXhFcnJvcihgKGhlbGxvKSBkb2VzIG5vdCB0YWtlIGFueSBhcmd1bWVudHNgKSwgbm9kZS5sb2MpO1xuICogICAgIH0gZWxzZSB7XG4gKiAgICAgICByZXR1cm4gT2soKTtcbiAqICAgICB9XG4gKiAgIH0sXG4gKlxuICogICB0cmFuc2xhdGUobm9kZTogQVNUdjIuU3ViRXhwcmVzc2lvbik6IGhpci5FeHByZXNzaW9uIHtcbiAqICAgICByZXR1cm4gQVNUdjIuYnVpbGRlcnMubGl0ZXJhbChcImhlbGxvXCIsIG5vZGUubG9jKVxuICogICB9XG4gKiB9KVxuICogYGBgXG4gKlxuICogVGhlIGtleXdvcmQgaW5mcmFzdHJ1Y3R1cmUgY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBub2RlIGlzIHRoZSByaWdodFxuICogdHlwZSBiZWZvcmUgY2FsbGluZyBgYXNzZXJ0YCwgc28geW91IG9ubHkgbmVlZCB0byBjb25zaWRlciBgU3ViRXhwcmVzc2lvbmBcbiAqIGFuZCBgUGF0aEV4cHJlc3Npb25gIGhlcmUuIEl0IGFsc28gY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBub2RlIHBhc3NlZFxuICogdG8gYGFzc2VydGAgaGFzIHRoZSBrZXl3b3JkIG5hbWUgaW4gdGhlIHJpZ2h0IHBsYWNlLlxuICpcbiAqIE5vdGUgdGhlIGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW4gcmV0dXJuaW5nIGBmYWxzZWAgZnJvbSBgYXNzZXJ0YCxcbiAqIHdoaWNoIGp1c3QgbWVhbnMgdGhhdCB0aGUgbm9kZSBkaWRuJ3QgbWF0Y2gsIGFuZCByZXR1cm5pbmcgYEVycmAsIHdoaWNoXG4gKiBtZWFucyB0aGF0IHRoZSBub2RlIG1hdGNoZWQsIGJ1dCB0aGVyZSB3YXMgYSBrZXl3b3JkLXNwZWNpZmljIHN5bnRheFxuICogZXJyb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrZXl3b3JkczxLIGV4dGVuZHMgS2V5d29yZFR5cGU+KHR5cGU6IEspOiBLZXl3b3JkczxLPiB7XG4gIHJldHVybiBuZXcgS2V5d29yZHModHlwZSk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQUEsbUJBQUEsRUFBQSxTQUFBLEVBQUEsY0FBQSxRQUFBLGlCQUFBO0FBT0EsU0FBQSxTQUFBLFFBQUEsZUFBQTtBQUVBLFNBQUEsR0FBQSxRQUFBLHdCQUFBOztJQWdCQSxXO0FBUUUsdUJBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxRQUFBLEVBR2tFO0FBRnRELFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFFRixTQUFBLFFBQUEsR0FBQSxRQUFBO0FBRVIsUUFBSSxLQUFLLEdBQUcsSUFBWixHQUFZLEVBQVo7O0FBQ0EseURBQXFCLGFBQWEsQ0FBbEMsSUFBa0MsQ0FBbEMsd0NBQTBDO0FBQUEsVUFBMUMsUUFBMEM7QUFDeEMsTUFBQSxLQUFLLENBQUwsR0FBQSxDQUFBLFFBQUE7QUFDRDs7QUFFRCxTQUFBLEtBQUEsR0FBQSxLQUFBO0FBQ0Q7Ozs7U0FFUyxLLEdBQUEsZUFBSyxJQUFMLEVBQWdDO0FBQ3hDLFFBQUksQ0FBQyxLQUFBLEtBQUEsQ0FBQSxHQUFBLENBQWUsSUFBSSxDQUF4QixJQUFLLENBQUwsRUFBZ0M7QUFDOUIsYUFBQSxLQUFBO0FBQ0Q7O0FBRUQsUUFBSSxJQUFJLEdBQUcsaUJBQWlCLENBQTVCLElBQTRCLENBQTVCOztBQUVBLFFBQUksSUFBSSxLQUFKLElBQUEsSUFBaUIsSUFBSSxDQUFKLEdBQUEsQ0FBQSxJQUFBLEtBQXJCLE1BQUEsRUFBK0M7QUFDN0MsVUFBSSxJQUFJLENBQUosSUFBQSxDQUFBLE1BQUEsR0FBSixDQUFBLEVBQTBCO0FBQ3hCLFlBQUksSUFBSSxDQUFKLEdBQUEsQ0FBQSxVQUFBLENBQUEsU0FBQSxPQUFKLE9BQUEsRUFBaUQ7QUFDL0M7QUFDQTtB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OUQsU0FBTyxLQUFLLENBQUwsR0FBQSxDQUNDLFVBQUEsSUFBRCxFQUFTO0FBQ1osWUFBQSxJQUFBO0FBQ0UsV0FBQSxRQUFBO0FBQ0UsdURBQUEsSUFBQTs7QUFDRixXQUFBLE9BQUE7QUFDRSxzREFBNEMsSUFBNUMsYUFBQSxJQUFBOztBQUNGLFdBQUEsTUFBQTtBQUNFLGdEQUFBLElBQUE7O0FBQ0YsV0FBQSxVQUFBO0FBQ0UsbURBQUEsSUFBQTs7QUFDRjtBQUNFLGVBQU8sU0FBUyxDQUFoQixJQUFnQixDQUFoQjtBQVZKO0FBRkcsR0FBQSxFQUFBLElBQUEsQ0FBUCxNQUFPLENBQVA7QUFnQkQ7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpRkEsT0FBTSxTQUFBLFFBQUEsQ0FBQSxJQUFBLEVBQWlEO0FBQ3JELFNBQU8sSUFBQSxRQUFBLENBQVAsSUFBTyxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBU1R2MixcbiAgZ2VuZXJhdGVTeW50YXhFcnJvcixcbiAgaXNLZXl3b3JkLFxuICBLRVlXT1JEU19UWVBFUyxcbiAgS2V5d29yZFR5cGUsXG59IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBleGhhdXN0ZWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHsgRXJyLCBSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvcmVzdWx0JztcbmltcG9ydCB7IE5vcm1hbGl6YXRpb25TdGF0ZSB9IGZyb20gJy4uL2NvbnRleHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmREZWxlZ2F0ZTxNYXRjaCBleHRlbmRzIEtleXdvcmRNYXRjaCwgViwgT3V0PiB7XG4gIGFzc2VydChvcHRpb25zOiBNYXRjaCwgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxWPjtcbiAgdHJhbnNsYXRlKG9wdGlvbnM6IHsgbm9kZTogTWF0Y2g7IHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUgfSwgcGFyYW06IFYpOiBSZXN1bHQ8T3V0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkPEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSA9IEtleXdvcmRUeXBlLCBPdXQgPSB1bmtub3duPiB7XG4gIHRyYW5zbGF0ZShub2RlOiBLZXl3b3JkQ2FuZGlkYXRlc1tLXSwgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxPdXQ+IHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCbG9ja0tleXdvcmQ8T3V0ID0gdW5rbm93bj4ge1xuICB0cmFuc2xhdGUobm9kZTogQVNUdjIuSW52b2tlQmxvY2ssIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8T3V0PiB8IG51bGw7XG59XG5cbmNsYXNzIEtleXdvcmRJbXBsPFxuICBLIGV4dGVuZHMgS2V5d29yZFR5cGUsXG4gIFMgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIFBhcmFtID0gdW5rbm93bixcbiAgT3V0ID0gdW5rbm93blxuPiB7XG4gIHByb3RlY3RlZCB0eXBlczogU2V0PEtleXdvcmRDYW5kaWRhdGVzW0tdWyd0eXBlJ10+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBrZXl3b3JkOiBTLFxuICAgIHR5cGU6IEtleXdvcmRUeXBlLFxuICAgIHByaXZhdGUgZGVsZWdhdGU6IEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2hlc1tLXSwgUGFyYW0sIE91dD5cbiAgKSB7XG4gICAgbGV0IG5vZGVzID0gbmV3IFNldDxLZXl3b3JkTm9kZVsndHlwZSddPigpO1xuICAgIGZvciAobGV0IG5vZGVUeXBlIG9mIEtFWVdPUkRfTk9ERVNbdHlwZV0pIHtcbiAgICAgIG5vZGVzLmFkZChub2RlVHlwZSk7XG4gICAgfVxuXG4gICAgdGhpcy50eXBlcyA9IG5vZGVzO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hdGNoKG5vZGU6IEtleXdvcmRDYW5kaWRhdGVzW0tdKTogbm9kZSBpcyBLZXl3b3JkTWF0Y2hlc1tLXSB7XG4gICAgaWYgKCF0aGlzLnR5cGVzLmhhcyhub2RlLnR5cGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IHBhdGggPSBnZXRQYXRoRXhwcmVzc2lvbihub2RlKTtcblxuICAgIGlmIChwYXRoICE9PSBudWxsICYmIHBhdGgucmVmLnR5cGUgPT09ICdGcmVlJykge1xuICAgICAgaWYgKHBhdGgudGFpbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChwYXRoLnJlZi5yZXNvbHV0aW9uLnNlcmlhbGl6ZSgpID09PSAnTG9vc2UnKSB7XG4gICAgICAgICAgLy8gY2Fubm90IGJlIGEga2V5d29yZCByZWZlcmVuY2UsIGtleXdvcmRzIGRvIG5vdCBhbGxvdyBwYXRocyAobXVzdCBiZVxuICAgICAgICAgIC8vIHJlbHlpbmcgb24gaW1wbGljaXQgdGhpcyBmYWxsYmFjaylcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhdGgucmVmLm5hbWUgPT09IHRoaXMua2V5d29yZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHRyYW5zbGF0ZShub2RlOiBLZXl3b3JkTWF0Y2hlc1tLXSwgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxPdXQ+IHwgbnVsbCB7XG4gICAgaWYgKHRoaXMubWF0Y2gobm9kZSkpIHtcbiAgICAgIGxldCBwYXRoID0gZ2V0UGF0aEV4cHJlc3Npb24obm9kZSk7XG5cbiAgICAgIGlmIChwYXRoICE9PSBudWxsICYmIHBhdGgudGFpbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBFcnIoXG4gICAgICAgICAgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgICAgIGBUaGUgXFxgJHtcbiAgICAgICAgICAgICAgdGhpcy5rZXl3b3JkXG4gICAgICAgICAgICB9XFxgIGtleXdvcmQgd2FzIHVzZWQgaW5jb3JyZWN0bHkuIEl0IHdhcyB1c2VkIGFzIFxcYCR7cGF0aC5sb2MuYXNTdHJpbmcoKX1cXGAsIGJ1dCBpdCBjYW5ub3QgYmUgdXNlZCB3aXRoIGFkZGl0aW9uYWwgcGF0aCBzZWdtZW50cy4gXFxuXFxuRXJyb3IgY2F1c2VkIGJ5YCxcbiAgICAgICAgICAgIG5vZGUubG9jXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBsZXQgcGFyYW0gPSB0aGlzLmRlbGVnYXRlLmFzc2VydChub2RlLCBzdGF0ZSk7XG4gICAgICByZXR1cm4gcGFyYW0uYW5kVGhlbigocGFyYW0pID0+IHRoaXMuZGVsZWdhdGUudHJhbnNsYXRlKHsgbm9kZSwgc3RhdGUgfSwgcGFyYW0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIFBvc3NpYmxlTm9kZSA9XG4gIHwgQVNUdjIuUGF0aEV4cHJlc3Npb25cbiAgfCBBU1R2Mi5BcHBlbmRDb250ZW50XG4gIHwgQVNUdjIuQ2FsbEV4cHJlc3Npb25cbiAgfCBBU1R2Mi5JbnZva2VCbG9jaztcblxuZXhwb3J0IGNvbnN0IEtFWVdPUkRfTk9ERVMgPSB7XG4gIENhbGw6IFsnQ2FsbCddLFxuICBCbG9jazogWydJbnZva2VCbG9jayddLFxuICBBcHBlbmQ6IFsnQXBwZW5kQ29udGVudCddLFxuICBNb2RpZmllcjogWydFbGVtZW50TW9kaWZpZXInXSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZENhbmRpZGF0ZXMge1xuICBDYWxsOiBBU1R2Mi5FeHByZXNzaW9uTm9kZTtcbiAgQmxvY2s6IEFTVHYyLkludm9rZUJsb2NrO1xuICBBcHBlbmQ6IEFTVHYyLkFwcGVuZENvbnRlbnQ7XG4gIE1vZGlmaWVyOiBBU1R2Mi5FbGVtZW50TW9kaWZpZXI7XG59XG5cbmV4cG9ydCB0eXBlIEtleXdvcmRDYW5kaWRhdGUgPSBLZXl3b3JkQ2FuZGlkYXRlc1trZXlvZiBLZXl3b3JkQ2FuZGlkYXRlc107XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZE1hdGNoZXMge1xuICBDYWxsOiBBU1R2Mi5DYWxsRXhwcmVzc2lvbjtcbiAgQmxvY2s6IEFTVHYyLkludm9rZUJsb2NrO1xuICBBcHBlbmQ6IEFTVHYyLkFwcGVuZENvbnRlbnQ7XG4gIE1vZGlmaWVyOiBBU1R2Mi5FbGVtZW50TW9kaWZpZXI7XG59XG5cbmV4cG9ydCB0eXBlIEtleXdvcmRNYXRjaCA9IEtleXdvcmRNYXRjaGVzW2tleW9mIEtleXdvcmRNYXRjaGVzXTtcblxuLyoqXG4gKiBBIFwiZ2VuZXJpY1wiIGtleXdvcmQgaXMgc29tZXRoaW5nIGxpa2UgYGhhcy1ibG9ja2AsIHdoaWNoIG1ha2VzIHNlbnNlIGluIHRoZSBjb250ZXh0XG4gKiBvZiBzdWItZXhwcmVzc2lvbiBvciBhcHBlbmRcbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY0tleXdvcmROb2RlID0gQVNUdjIuQXBwZW5kQ29udGVudCB8IEFTVHYyLkNhbGxFeHByZXNzaW9uO1xuXG5leHBvcnQgdHlwZSBLZXl3b3JkTm9kZSA9XG4gIHwgR2VuZXJpY0tleXdvcmROb2RlXG4gIHwgQVNUdjIuQ2FsbEV4cHJlc3Npb25cbiAgfCBBU1R2Mi5JbnZva2VCbG9ja1xuICB8IEFTVHYyLkVsZW1lbnRNb2RpZmllcjtcblxuZXhwb3J0IGZ1bmN0aW9uIGtleXdvcmQ8XG4gIEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSxcbiAgRCBleHRlbmRzIEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2hlc1tLXSwgdW5rbm93biwgT3V0PixcbiAgT3V0ID0gdW5rbm93blxuPihrZXl3b3JkOiBzdHJpbmcsIHR5cGU6IEssIGRlbGVnYXRlOiBEKTogS2V5d29yZDxLLCBPdXQ+IHtcbiAgcmV0dXJuIG5ldyBLZXl3b3JkSW1wbChrZXl3b3JkLCB0eXBlLCBkZWxlZ2F0ZSBhcyBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoLCB1bmtub3duLCBPdXQ+KTtcbn1cblxuZXhwb3J0IHR5cGUgUG9zc2libGVLZXl3b3JkID0gS2V5d29yZE5vZGU7XG50eXBlIE91dEZvcjxLIGV4dGVuZHMgS2V5d29yZCB8IEJsb2NrS2V5d29yZD4gPSBLIGV4dGVuZHMgQmxvY2tLZXl3b3JkPGluZmVyIE91dD5cbiAgPyBPdXRcbiAgOiBLIGV4dGVuZHMgS2V5d29yZDxLZXl3b3JkVHlwZSwgaW5mZXIgT3V0PlxuICA/IE91dFxuICA6IG5ldmVyO1xuXG5mdW5jdGlvbiBnZXRQYXRoRXhwcmVzc2lvbihub2RlOiBLZXl3b3JkTm9kZSB8IEFTVHYyLkV4cHJlc3Npb25Ob2RlKTogQVNUdjIuUGF0aEV4cHJlc3Npb24gfCBudWxsIHtcbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAvLyBUaGlzIGNvdmVycyB0aGUgaW5zaWRlIG9mIGF0dHJpYnV0ZXMgYW5kIGV4cHJlc3Npb25zLCBhcyB3ZWxsIGFzIHRoZSBjYWxsZWVcbiAgICAvLyBvZiBjYWxsIG5vZGVzXG4gICAgY2FzZSAnUGF0aCc6XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICBjYXNlICdBcHBlbmRDb250ZW50JzpcbiAgICAgIHJldHVybiBnZXRQYXRoRXhwcmVzc2lvbihub2RlLnZhbHVlKTtcbiAgICBjYXNlICdDYWxsJzpcbiAgICBjYXNlICdJbnZva2VCbG9jayc6XG4gICAgY2FzZSAnRWxlbWVudE1vZGlmaWVyJzpcbiAgICAgIHJldHVybiBnZXRQYXRoRXhwcmVzc2lvbihub2RlLmNhbGxlZSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBLZXl3b3JkczxLIGV4dGVuZHMgS2V5d29yZFR5cGUsIEtleXdvcmRMaXN0IGV4dGVuZHMgS2V5d29yZDxLPiA9IG5ldmVyPlxuICBpbXBsZW1lbnRzIEtleXdvcmQ8SywgT3V0Rm9yPEtleXdvcmRMaXN0Pj4ge1xuICAja2V5d29yZHM6IEtleXdvcmRbXSA9IFtdO1xuICAjdHlwZTogSztcblxuICBjb25zdHJ1Y3Rvcih0eXBlOiBLKSB7XG4gICAgdGhpcy4jdHlwZSA9IHR5cGU7XG4gIH1cblxuICBrdzxTIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBPdXQgPSB1bmtub3duPihcbiAgICBuYW1lOiBTLFxuICAgIGRlbGVnYXRlOiBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoZXNbS10sIHVua25vd24sIE91dD5cbiAgKTogS2V5d29yZHM8SywgS2V5d29yZExpc3QgfCBLZXl3b3JkPEssIE91dD4+IHtcbiAgICB0aGlzLiNrZXl3b3Jkcy5wdXNoKGtleXdvcmQobmFtZSwgdGhpcy4jdHlwZSwgZGVsZWdhdGUpKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdHJhbnNsYXRlKFxuICAgIG5vZGU6IEtleXdvcmRDYW5kaWRhdGVzW0tdLFxuICAgIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGVcbiAgKTogUmVzdWx0PE91dEZvcjxLZXl3b3JkTGlzdD4+IHwgbnVsbCB7XG4gICAgZm9yIChsZXQga2V5d29yZCBvZiB0aGlzLiNrZXl3b3Jkcykge1xuICAgICAgbGV0IHJlc3VsdCA9IGtleXdvcmQudHJhbnNsYXRlKG5vZGUsIHN0YXRlKSBhcyBSZXN1bHQ8T3V0Rm9yPEtleXdvcmRMaXN0Pj47XG4gICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHBhdGggPSBnZXRQYXRoRXhwcmVzc2lvbihub2RlKTtcblxuICAgIGlmIChwYXRoICYmIHBhdGgucmVmLnR5cGUgPT09ICdGcmVlJyAmJiBpc0tleXdvcmQocGF0aC5yZWYubmFtZSkpIHtcbiAgICAgIGxldCB7IG5hbWUgfSA9IHBhdGgucmVmO1xuXG4gICAgICBsZXQgdXNlZFR5cGUgPSB0aGlzLiN0eXBlO1xuICAgICAgbGV0IHZhbGlkVHlwZXMgPSBLRVlXT1JEU19UWVBFU1tuYW1lXTtcblxuICAgICAgaWYgKHZhbGlkVHlwZXMuaW5kZXhPZih1c2VkVHlwZSkgPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBFcnIoXG4gICAgICAgICAgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgICAgIGBUaGUgXFxgJHtuYW1lfVxcYCBrZXl3b3JkIHdhcyB1c2VkIGluY29ycmVjdGx5LiBJdCB3YXMgdXNlZCBhcyAke1xuICAgICAgICAgICAgICB0eXBlc1RvUmVhZGFibGVOYW1lW3VzZWRUeXBlXVxuICAgICAgICAgICAgfSwgYnV0IGl0cyB2YWxpZCB1c2FnZXMgYXJlOlxcblxcbiR7Z2VuZXJhdGVUeXBlc01lc3NhZ2UoXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHZhbGlkVHlwZXNcbiAgICAgICAgICAgICl9XFxuXFxuRXJyb3IgY2F1c2VkIGJ5YCxcbiAgICAgICAgICAgIG5vZGUubG9jXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmNvbnN0IHR5cGVzVG9SZWFkYWJsZU5hbWUgPSB7XG4gIEFwcGVuZDogJ2FuIGFwcGVuZCBzdGF0ZW1lbnQnLFxuICBCbG9jazogJ2EgYmxvY2sgc3RhdGVtZW50JyxcbiAgQ2FsbDogJ2EgY2FsbCBleHByZXNzaW9uJyxcbiAgTW9kaWZpZXI6ICdhIG1vZGlmaWVyJyxcbn07XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVHlwZXNNZXNzYWdlKG5hbWU6IHN0cmluZywgdHlwZXM6IEtleXdvcmRUeXBlW10pOiBzdHJpbmcge1xuICByZXR1cm4gdHlwZXNcbiAgICAubWFwKCh0eXBlKSA9PiB7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnQXBwZW5kJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYW4gYXBwZW5kIHN0YXRlbWVudCwgYXMgaW46IHt7JHtuYW1lfX19YDtcbiAgICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhIGJsb2NrIHN0YXRlbWVudCwgYXMgaW46IHt7IyR7bmFtZX19fXt7LyR7bmFtZX19fWA7XG4gICAgICAgIGNhc2UgJ0NhbGwnOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhbiBleHByZXNzaW9uLCBhcyBpbjogKCR7bmFtZX0pYDtcbiAgICAgICAgY2FzZSAnTW9kaWZpZXInOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhIG1vZGlmaWVyLCBhcyBpbjogPGRpdiB7eyR7bmFtZX19fT48L2Rpdj5gO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBleGhhdXN0ZWQodHlwZSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAuam9pbignXFxuXFxuJyk7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBidWlsZHMga2V5d29yZCBkZWZpbml0aW9ucyBmb3IgYSBwYXJ0aWN1bGFyIHR5cGUgb2YgQVNUIG5vZGUgKGBLZXl3b3JkVHlwZWApLlxuICpcbiAqIFlvdSBjYW4gYnVpbGQga2V5d29yZCBkZWZpbml0aW9ucyBmb3I6XG4gKlxuICogLSBgRXhwcmA6IEEgYFN1YkV4cHJlc3Npb25gIG9yIGBQYXRoRXhwcmVzc2lvbmBcbiAqIC0gYEJsb2NrYDogQSBgQmxvY2tTdGF0ZW1lbnRgXG4gKiAgIC0gQSBgQmxvY2tTdGF0ZW1lbnRgIGlzIGEga2V5d29yZCBjYW5kaWRhdGUgaWYgaXRzIGhlYWQgaXMgYVxuICogICAgIGBQYXRoRXhwcmVzc2lvbmBcbiAqIC0gYEFwcGVuZGA6IEFuIGBBcHBlbmRTdGF0ZW1lbnRgXG4gKlxuICogQSBub2RlIGlzIGEga2V5d29yZCBjYW5kaWRhdGUgaWY6XG4gKlxuICogLSBBIGBQYXRoRXhwcmVzc2lvbmAgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZiBpdCBoYXMgbm8gdGFpbCwgYW5kIGl0c1xuICogICBoZWFkIGV4cHJlc3Npb24gaXMgYSBgTG9jYWxWYXJIZWFkYCBvciBgRnJlZVZhckhlYWRgIHdob3NlIG5hbWUgaXNcbiAqICAgdGhlIGtleXdvcmQncyBuYW1lLlxuICogLSBBIGBTdWJFeHByZXNzaW9uYCwgYEFwcGVuZFN0YXRlbWVudGAsIG9yIGBCbG9ja1N0YXRlbWVudGAgaXMgYSBrZXl3b3JkXG4gKiAgIGNhbmRpZGF0ZSBpZiBpdHMgaGVhZCBpcyBhIGtleXdvcmQgY2FuZGlkYXRlLlxuICpcbiAqIFRoZSBrZXl3b3JkIGluZnJhc3RydWN0dXJlIGd1YXJhbnRlZXMgdGhhdDpcbiAqXG4gKiAtIElmIGEgbm9kZSBpcyBub3QgYSBrZXl3b3JkIGNhbmRpZGF0ZSwgaXQgaXMgbmV2ZXIgcGFzc2VkIHRvIGFueSBrZXl3b3JkJ3NcbiAqICAgYGFzc2VydGAgbWV0aG9kLlxuICogLSBJZiBhIG5vZGUgaXMgbm90IHRoZSBgS2V5d29yZFR5cGVgIGZvciBhIHBhcnRpY3VsYXIga2V5d29yZCwgaXQgd2lsbCBub3RcbiAqICAgYmUgcGFzc2VkIHRvIHRoZSBrZXl3b3JkJ3MgYGFzc2VydGAgbWV0aG9kLlxuICpcbiAqIGBFeHByYCBrZXl3b3JkcyBhcmUgdXNlZCBpbiBleHByZXNzaW9uIHBvc2l0aW9ucyBhbmQgc2hvdWxkIHJldHVybiBISVJcbiAqIGV4cHJlc3Npb25zLiBgQmxvY2tgIGFuZCBgQXBwZW5kYCBrZXl3b3JkcyBhcmUgdXNlZCBpbiBzdGF0ZW1lbnRcbiAqIHBvc2l0aW9ucyBhbmQgc2hvdWxkIHJldHVybiBISVIgc3RhdGVtZW50cy5cbiAqXG4gKiBBIGtleXdvcmQgZGVmaW5pdGlvbiBoYXMgdHdvIHBhcnRzOlxuICpcbiAqIC0gYG1hdGNoYCwgd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyIGFuIEFTVCBub2RlIG1hdGNoZXMgdGhlIGtleXdvcmQsIGFuZCBjYW5cbiAqICAgb3B0aW9uYWxseSByZXR1cm4gc29tZSBpbmZvcm1hdGlvbiBleHRyYWN0ZWQgZnJvbSB0aGUgQVNUIG5vZGUuXG4gKiAtIGB0cmFuc2xhdGVgLCB3aGljaCB0YWtlcyBhIG1hdGNoaW5nIEFTVCBub2RlIGFzIHdlbGwgYXMgdGhlIGV4dHJhY3RlZFxuICogICBpbmZvcm1hdGlvbiBhbmQgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSBISVIgaW5zdHJ1Y3Rpb24uXG4gKlxuICogIyBFeGFtcGxlXG4gKlxuICogVGhpcyBrZXl3b3JkOlxuICpcbiAqIC0gdHVybnMgYChoZWxsbylgIGludG8gYFwiaGVsbG9cImBcbiAqICAgLSBhcyBsb25nIGFzIGBoZWxsb2AgaXMgbm90IGluIHNjb3BlXG4gKiAtIG1ha2VzIGl0IGFuIGVycm9yIHRvIHBhc3MgYW55IGFyZ3VtZW50cyAoc3VjaCBhcyBgKGhlbGxvIHdvcmxkKWApXG4gKlxuICogYGBgdHNcbiAqIGtleXdvcmRzKCdTdWJFeHByJykua3coJ2hlbGxvJywge1xuICogICBhc3NlcnQobm9kZTogRXhwcktleXdvcmROb2RlKTogUmVzdWx0PHZvaWQ+IHwgZmFsc2Uge1xuICogICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gdHJhbnNmb3JtIGBoZWxsb2AgYXMgYSBgUGF0aEV4cHJlc3Npb25gXG4gKiAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ1N1YkV4cHJlc3Npb24nKSB7XG4gKiAgICAgICByZXR1cm4gZmFsc2U7XG4gKiAgICAgfVxuICpcbiAqICAgICAvLyBub2RlLmhlYWQgd291bGQgYmUgYExvY2FsVmFySGVhZGAgaWYgYGhlbGxvYCB3YXMgaW4gc2NvcGVcbiAqICAgICBpZiAobm9kZS5oZWFkLnR5cGUgIT09ICdGcmVlVmFySGVhZCcpIHtcbiAqICAgICAgIHJldHVybiBmYWxzZTtcbiAqICAgICB9XG4gKlxuICogICAgIGlmIChub2RlLnBhcmFtcy5sZW5ndGggfHwgbm9kZS5oYXNoKSB7XG4gKiAgICAgICByZXR1cm4gRXJyKGdlbmVyYXRlU3ludGF4RXJyb3IoYChoZWxsbykgZG9lcyBub3QgdGFrZSBhbnkgYXJndW1lbnRzYCksIG5vZGUubG9jKTtcbiAqICAgICB9IGVsc2Uge1xuICogICAgICAgcmV0dXJuIE9rKCk7XG4gKiAgICAgfVxuICogICB9LFxuICpcbiAqICAgdHJhbnNsYXRlKG5vZGU6IEFTVHYyLlN1YkV4cHJlc3Npb24pOiBoaXIuRXhwcmVzc2lvbiB7XG4gKiAgICAgcmV0dXJuIEFTVHYyLmJ1aWxkZXJzLmxpdGVyYWwoXCJoZWxsb1wiLCBub2RlLmxvYylcbiAqICAgfVxuICogfSlcbiAqIGBgYFxuICpcbiAqIFRoZSBrZXl3b3JkIGluZnJhc3RydWN0dXJlIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbm9kZSBpcyB0aGUgcmlnaHRcbiAqIHR5cGUgYmVmb3JlIGNhbGxpbmcgYGFzc2VydGAsIHNvIHlvdSBvbmx5IG5lZWQgdG8gY29uc2lkZXIgYFN1YkV4cHJlc3Npb25gXG4gKiBhbmQgYFBhdGhFeHByZXNzaW9uYCBoZXJlLiBJdCBhbHNvIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbm9kZSBwYXNzZWRcbiAqIHRvIGBhc3NlcnRgIGhhcyB0aGUga2V5d29yZCBuYW1lIGluIHRoZSByaWdodCBwbGFjZS5cbiAqXG4gKiBOb3RlIHRoZSBpbXBvcnRhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuIHJldHVybmluZyBgZmFsc2VgIGZyb20gYGFzc2VydGAsXG4gKiB3aGljaCBqdXN0IG1lYW5zIHRoYXQgdGhlIG5vZGUgZGlkbid0IG1hdGNoLCBhbmQgcmV0dXJuaW5nIGBFcnJgLCB3aGljaFxuICogbWVhbnMgdGhhdCB0aGUgbm9kZSBtYXRjaGVkLCBidXQgdGhlcmUgd2FzIGEga2V5d29yZC1zcGVjaWZpYyBzeW50YXhcbiAqIGVycm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24ga2V5d29yZHM8SyBleHRlbmRzIEtleXdvcmRUeXBlPih0eXBlOiBLKTogS2V5d29yZHM8Sz4ge1xuICByZXR1cm4gbmV3IEtleXdvcmRzKHR5cGUpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== |
{ | ||
"name": "@glimmer/compiler", | ||
"version": "0.73.0", | ||
"version": "0.73.1", | ||
"repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/compiler", | ||
"dependencies": { | ||
"@glimmer/syntax": "0.73.0", | ||
"@glimmer/util": "0.73.0", | ||
"@glimmer/wire-format": "0.73.0", | ||
"@glimmer/interfaces": "0.73.0", | ||
"@glimmer/syntax": "0.73.1", | ||
"@glimmer/util": "0.73.1", | ||
"@glimmer/wire-format": "0.73.1", | ||
"@glimmer/interfaces": "0.73.1", | ||
"@simple-dom/interface": "^1.4.0" | ||
}, | ||
"devDependencies": { | ||
"@glimmer/local-debug-flags": "0.73.0" | ||
"@glimmer/local-debug-flags": "0.73.1" | ||
}, | ||
@@ -15,0 +15,0 @@ "main": "dist/commonjs/es2017/index.js", |
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
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
2854324
25931
+ Added@glimmer/interfaces@0.73.1(transitive)
+ Added@glimmer/syntax@0.73.1(transitive)
+ Added@glimmer/util@0.73.1(transitive)
+ Added@glimmer/wire-format@0.73.1(transitive)
- Removed@glimmer/interfaces@0.73.0(transitive)
- Removed@glimmer/syntax@0.73.0(transitive)
- Removed@glimmer/util@0.73.0(transitive)
- Removed@glimmer/wire-format@0.73.0(transitive)
Updated@glimmer/interfaces@0.73.1
Updated@glimmer/syntax@0.73.1
Updated@glimmer/util@0.73.1
Updated@glimmer/wire-format@0.73.1