@glimmer/compiler
Advanced tools
Comparing version 0.29.7 to 0.29.8
@@ -241,3 +241,3 @@ "use strict"; | ||
} else { | ||
this.opcode('get', expr, 0, expr.parts); | ||
this.opcode('maybeLocal', expr, expr.parts); | ||
} | ||
@@ -429,2 +429,2 @@ } | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9jb21waWxlci9saWIvdGVtcGxhdGUtY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsQUFBTyxBQUF3QyxBQUFNLEFBQW9CLEFBQUM7Ozs7QUFDMUUsQUFBTyxBQUFnQyxBQUFNLEFBQXVCLEFBQUM7Ozs7QUFDckUsQUFBTyxBQUFFLEFBQUssQUFBRSxBQUFNLEFBQWUsQUFBQyxBQUN0QyxBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFDL0MsQUFBTyxBQUFPLEFBQVMsQUFBRSxBQUFXLEFBQUUsQUFBTSxBQUFpQixBQUFDOztBQUM5RCxBQUFPLEFBQUUsQUFBZ0IsQUFBRSxBQUFNLEFBQVMsQUFBQzs7OztBQU8zQyx3QkFBd0IsQUFBVSxPQUNoQyxBQUFNO1dBQUMsQUFBSyxNQUFDLEFBQU8sWUFBSyxBQUFTLGFBQUksQ0FBQyxBQUFLLE1BQUMsQUFBTyxBQUFDLEFBQ3ZELEFBQUM7QUFFRCxBQUFNLEFBQUMsQUFBTzs7Z0JBaUJBLEFBQXVCLFNBTjNCO2FBQVUsYUFBRyxBQUFDLEFBQUMsQUFDZjthQUFXLGNBQWEsQUFBRSxBQUFDLEFBQzNCO2FBQVcsY0FBRyxBQUFJLEFBQUssQUFBZSxBQUFDLEFBQ3ZDO2FBQU8sVUFBVSxBQUFFLEFBQUMsQUFDcEI7YUFBVyxjQUFHLEFBQUssQUFBQyxBQUcxQixBQUFJO2FBQUMsQUFBTyxVQUFHLEFBQU8sV0FBSSxBQUFFLEFBQUMsQUFDL0IsQUFBQztBQWxCRCxBQUFNO1dBQUMsQUFBTyxRQUFDLEFBQXVCLFNBQUUsQUFBZ0IsS0FDdEQ7WUFBSSxBQUFlLGtCQUFHLEFBQUksQUFBZSxBQUFFLEFBQUMsQUFDNUMsQUFBZTt3QkFBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQUMsQUFFM0I7WUFBSSxBQUFR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QUksQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFNLFNBQUcsQUFBQyxBQUFDLEdBQUMsQUFBQyxBQUNsQztjQUFNLEFBQUksQUFBVyxBQUFDLEFBQTRDLHNFQUFFLEFBQVMsVUFBQyxBQUFHLEFBQUMsQUFBQyxBQUNyRixBQUFDO0FBRUQsQUFBRSxBQUFDO1FBQUMsQUFBTSxPQUFDLEFBQU0sV0FBSyxBQUFDLEFBQUMsR0FBQyxBQUFDLEFBQ3hCLEFBQU07ZUFBQyxBQUFTLEFBQUMsQUFDbkIsQUFBQyxBQUFDLEFBQUk7V0FBQyxBQUFDLEFBQ047Y0FBTSxBQUFJLEFBQVcsQUFBQyxBQUFpRCwyRUFBRSxBQUFTLFVBQUMsQUFBRyxBQUFDLEFBQUMsQUFDMUYsQUFBQyxBQUNIO0FBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVGVtcGxhdGVWaXNpdG9yLCB7IFN5bWJvbFRhYmxlLCBBY3Rpb24gfSBmcm9tIFwiLi90ZW1wbGF0ZS12aXNpdG9yXCI7XG5pbXBvcnQgSmF2YVNjcmlwdENvbXBpbGVyLCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4vamF2YXNjcmlwdC1jb21waWxlclwiO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgYXNzZXJ0LCBleHBlY3QgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgQVNULCBpc0xpdGVyYWwsIFN5bnRheEVycm9yIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IGdldEF0dHJOYW1lc3BhY2UgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IE9wYXF1ZSB9IGZyb20gXCJAZ2xpbW1lci9pbnRlcmZhY2VzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZU9wdGlvbnMge1xuICBtZXRhOiBPcGFxdWU7XG59XG5cbmZ1bmN0aW9uIGlzVHJ1c3RlZFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgcmV0dXJuIHZhbHVlLmVzY2FwZWQgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUuZXNjYXBlZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVtcGxhdGVDb21waWxlciB7XG4gIHN0YXRpYyBjb21waWxlKG9wdGlvbnM6IENvbXBpbGVPcHRpb25zLCBhc3Q6IEFTVC5Qcm9ncmFtKTogVGVtcGxhdGUge1xuICAgIGxldCB0ZW1wbGF0ZVZpc2l0b3IgPSBuZXcgVGVtcGxhdGVWaXNpdG9yKCk7XG4gICAgdGVtcGxhdGVWaXNpdG9yLnZpc2l0KGFzdCk7XG5cbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgVGVtcGxhdGVDb21waWxlcihvcHRpb25zKTtcbiAgICBsZXQgb3Bjb2RlcyA9IGNvbXBpbGVyLnByb2Nlc3ModGVtcGxhdGVWaXNpdG9yLmFjdGlvbnMpO1xuICAgIHJldHVybiBKYXZhU2NyaXB0Q29tcGlsZXIucHJvY2VzcyhvcGNvZGVzLCBhc3RbJ3N5bWJvbHMnXSk7XG4gIH1cblxuICBwcml2YXRlIG9wdGlvbnM6IENvbXBpbGVPcHRpb25zO1xuICBwcml2YXRlIHRlbXBsYXRlSWQgPSAwO1xuICBwcml2YXRlIHRlbXBsYXRlSWRzOiBudW1iZXJbXSA9IFtdO1xuICBwcml2YXRlIHN5bWJvbFN0YWNrID0gbmV3IFN0YWNrPFN5bWJvbFRhYmxlPigpO1xuICBwcml2YXRlIG9wY29kZXM6IGFueVtdID0gW107XG4gIHByaXZhdGUgaW5jbHVkZU1ldGEgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDb21waWxlT3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIH1cblxuICBnZXQgc3ltYm9scygpOiBTeW1ib2xUYWJsZSB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLnN5bWJvbFN0YWNrLmN1cnJlbnQsICdFeHBlY3RlZCBhIHN5bWJvbCB0YWJsZSBvbiB0aGUgc3RhY2snKTtcbiAgfVxuXG4gIHByb2Nlc3MoYWN0aW9uczogQWN0aW9uW10pOiBBY3Rpb25bXSB7XG4gICAgYWN0aW9ucy5mb3JFYWNoKChbbmFtZSwgLi4uYXJnc10pID0+IHtcbiAgICAgIGlmICghdGhpc1tuYW1lXSkgeyB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQgJHtuYW1lfSBvbiBUZW1wbGF0ZUNvbXBpbGVyYCk7IH1cbiAgICAgICh0aGlzW25hbWVdIGFzIGFueSkoLi4uYXJncyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMub3Bjb2RlcztcbiAgfVxuXG4gIHN0YXJ0UHJvZ3JhbShwcm9ncmFtOiBbQVNULlByb2dyYW1dKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wdXNoKHByb2dyYW1bMF1bJ3N5bWJvbHMnXSk7XG4gICAgdGhpcy5vcGNvZGUoJ3N0YXJ0UHJvZ3JhbScsIHByb2dyYW0sIHByb2dyYW0pO1xuICB9XG5cbiAgZW5kUHJvZ3JhbSgpIHtcbiAgICB0aGlzLnN5bWJvbFN0YWNrLnBvcCgpO1xuICAgIHRoaXMub3Bjb2RlKCdlbmRQcm9ncmFtJywgbnVsbCk7XG4gIH1cblxuICBzdGFydEJsb2NrKHByb2dyYW06IFtBU1QuUHJvZ3JhbV0pIHtcbiAgICB0aGlzLnN5bWJvbFN0YWNrLnB1c2gocHJvZ3JhbVswXVsnc3ltYm9scyddKTtcbiAgICB0aGlzLnRlbXBsYXRlSWQrKztcbiAgICB0aGlzLm9wY29kZSgnc3RhcnRCbG9jaycsIHByb2dyYW0sIHByb2dyYW0pO1xuICB9XG5cbiAgZW5kQmxvY2soKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wb3AoKTtcbiAgICB0aGlzLnRlbXBsYXRlSWRzLnB1c2godGhpcy50ZW1wbGF0ZUlkIC0gMSk7XG4gICAgdGhpcy5vcGNvZGUoJ2VuZEJsb2NrJywgbnVsbCk7XG4gIH1cblxuICB0ZXh0KFthY3Rpb25dOiBbQVNULlRleHROb2RlXSkge1xuICAgIHRoaXMub3Bjb2RlKCd0ZXh0JywgYWN0aW9uLCBhY3Rpb24uY2hhcnMpO1xuICB9XG5cbiAgY29tbWVudChbYWN0aW9uXTogW0FTVC5Db21tZW50U3RhdGVtZW50XSkge1xuICAgIHRoaXMub3Bjb2RlKCdjb21tZW50JywgYWN0aW9uLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQoW2FjdGlvbl06IFtBU1QuRWxlbWVudE5vZGVdKSB7XG4gICAgbGV0IGF0dHJpYnV0ZXMgPSBhY3Rpb24uYXR0cmlidXRlcztcbiAgICBsZXQgaGFzU3BsYXQ7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBhdHRyID0gYXR0cmlidXRlc1tpXTtcbiAgICAgIGlmIChhdHRyLm5hbWUgPT09ICcuLi5hdHRyaWJ1dGVzJykge1xuICAgICAgICBoYXNTcGxhdCA9IGF0dHI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChoYXNTcGxhdCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ29wZW5TcGxhdHRlZEVsZW1lbnQnLCBhY3Rpb24sIGFjdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdvcGVuRWxlbWVudCcsIGFjdGlvbiwgYWN0aW9uKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGlvbi5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZShbYWN0aW9uLmF0dHJpYnV0ZXNbaV1dKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGlvbi5tb2RpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMubW9kaWZpZXIoW2FjdGlvbi5tb2RpZmllcnNbaV1dKTtcbiAgICB9XG4gICAgdGhpcy5vcGNvZGUoJ2ZsdXNoRWxlbWVudCcsIG51bGwpO1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucHVzaChhY3Rpb25bJ3N5bWJvbHMnXSk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoW2FjdGlvbl06IFtBU1QuRWxlbWVudE5vZGVdKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wb3AoKTtcbiAgICB0aGlzLm9wY29kZSgnY2xvc2VFbGVtZW50JywgbnVsbCwgYWN0aW9uKTtcbiAgfVxuXG4gIGF0dHJpYnV0ZShbYWN0aW9uXTogW0FTVC5BdHRyTm9kZV0pIHtcbiAgICBsZXQgeyBuYW1lLCB2YWx1ZSB9ID0gYWN0aW9uO1xuXG4gICAgbGV0IG5hbWVzcGFjZSA9IGdldEF0dHJOYW1lc3BhY2UobmFtZSk7XG5cbiAgICBsZXQgaXNTdGF0aWMgPSB0aGlzLnByZXBhcmVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09ICdAJykge1xuICAgICAgLy8gQXJndW1lbnRzXG4gICAgICBpZiAoaXNTdGF0aWMpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3N0YXRpY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9IGVsc2UgaWYgKGFjdGlvbi52YWx1ZS50eXBlID09PSAnTXVzdGFjaGVTdGF0ZW1lbnQnKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXJnJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXJnJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGlzVHJ1c3RpbmcgPSBpc1RydXN0ZWRWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgIGlmIChpc1N0YXRpYyAmJiBuYW1lID09PSAnLi4uYXR0cmlidXRlcycpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2F0dHJTcGxhdCcsIGFjdGlvbiwgdGhpcy5zeW1ib2xzLmFsbG9jYXRlQmxvY2soJ2F0dHJzJykpO1xuICAgICAgfSBlbHNlIGlmIChpc1N0YXRpYykge1xuICAgICAgICB0aGlzLm9wY29kZSgnc3RhdGljQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNUcnVzdGluZykge1xuICAgICAgICB0aGlzLm9wY29kZSgndHJ1c3RpbmdBdHRyJywgYWN0aW9uLCBuYW1lLCBuYW1lc3BhY2UpO1xuICAgICAgfSBlbHNlIGlmIChhY3Rpb24udmFsdWUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0F0dHInLCBhY3Rpb24sIG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2R5bmFtaWNBdHRyJywgYWN0aW9uLCBuYW1lLCBuYW1lc3BhY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1vZGlmaWVyKFthY3Rpb25dOiBbQVNULkVsZW1lbnRNb2RpZmllclN0YXRlbWVudF0pIHtcbiAgICBhc3NlcnRJc1NpbXBsZVBhdGgoYWN0aW9uLnBhdGgsIGFjdGlvbi5sb2MsICdtb2RpZmllcicpO1xuXG4gICAgbGV0IHsgcGF0aDogeyBwYXJ0cyB9IH0gPSBhY3Rpb247XG5cbiAgICB0aGlzLnByZXBhcmVIZWxwZXIoYWN0aW9uKTtcbiAgICB0aGlzLm9wY29kZSgnbW9kaWZpZXInLCBhY3Rpb24sIHBhcnRzWzBdKTtcbiAgfVxuXG4gIG11c3RhY2hlKFthY3Rpb25dOiBbQVNULk11c3RhY2hlU3RhdGVtZW50XSkge1xuICAgIGxldCB7IHBhdGggfSA9IGFjdGlvbjtcblxuICAgIGlmIChpc0xpdGVyYWwocGF0aCkpIHtcbiAgICAgIHRoaXMubXVzdGFjaGVFeHByZXNzaW9uKGFjdGlvbik7XG4gICAgICB0aGlzLm9wY29kZSgnYXBwZW5kJywgYWN0aW9uLCAhYWN0aW9uLmVzY2FwZWQpO1xuICAgIH0gZWxzZSBpZiAoaXNZaWVsZChwYXRoKSkge1xuICAgICAgbGV0IHRvID0gYXNzZXJ0VmFsaWRZaWVsZChhY3Rpb24pO1xuICAgICAgdGhpcy55aWVsZCh0bywgYWN0aW9uKTtcbiAgICB9IGVsc2UgaWYgKGlzUGFydGlhbChwYXRoKSkge1xuICAgICAgbGV0IHBhcmFtcyA9IGFzc2VydFZhbGlkUGFydGlhbChhY3Rpb24pO1xuICAgICAgdGhpcy5wYXJ0aWFsKHBhcmFtcywgYWN0aW9uKTtcbiAgICB9IGVsc2UgaWYgKGlzRGVidWdnZXIocGF0aCkpIHtcbiAgICAgIGFzc2VydFZhbGlkRGVidWdnZXJVc2FnZShhY3Rpb24pO1xuICAgICAgdGhpcy5kZWJ1Z2dlcignZGVidWdnZXInLCBhY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm11c3RhY2hlRXhwcmVzc2lvbihhY3Rpb24pO1xuICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcsIGFjdGlvbiwgIWFjdGlvbi5lc2NhcGVkKTtcbiAgICB9XG4gIH1cblxuICBibG9jayhbYWN0aW9uLyosIGluZGV4LCBjb3VudCovXTogW0FTVC5CbG9ja1N0YXRlbWVudF0pIHtcbiAgICB0aGlzLnByZXBhcmVIZWxwZXIoYWN0aW9uKTtcbiAgICBsZXQgdGVtcGxhdGVJZCA9IHRoaXMudGVtcGxhdGVJZHMucG9wKCk7XG4gICAgbGV0IGludmVyc2VJZCA9IGFjdGlvbi5pbnZlcnNlID09PSBudWxsID8gbnVsbCA6IHRoaXMudGVtcGxhdGVJZHMucG9wKCk7XG4gICAgdGhpcy5vcGNvZGUoJ2Jsb2NrJywgYWN0aW9uLCBhY3Rpb24ucGF0aC5wYXJ0c1swXSwgdGVtcGxhdGVJZCwgaW52ZXJzZUlkKTtcbiAgfVxuXG4gIC8vLyBJbnRlcm5hbCBhY3Rpb25zLCBub3QgZm91bmQgaW4gdGhlIG9yaWdpbmFsIHByb2Nlc3NlZCBhY3Rpb25zXG5cbiAgYXJnKFtwYXRoXTogW0FTVC5QYXRoRXhwcmVzc2lvbl0pIHtcbiAgICBsZXQgeyBwYXJ0czogW2hlYWQsIC4uLnJlc3RdIH0gPSBwYXRoO1xuICAgIGxldCBzeW1ib2wgPSB0aGlzLnN5bWJvbHMuYWxsb2NhdGVOYW1lZChoZWFkKTtcbiAgICB0aGlzLm9wY29kZSgnZ2V0JywgcGF0aCwgc3ltYm9sLCByZXN0KTtcbiAgfVxuXG4gIG11c3RhY2hlRXhwcmVzc2lvbihleHByOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgICBsZXQgeyBwYXRoIH0gPSBleHByO1xuXG4gICAgaWYgKGlzTGl0ZXJhbChwYXRoKSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBleHByLCBwYXRoLnZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKGlzQnVpbHRJbkhlbHBlcihwYXRoKSkge1xuICAgICAgdGhpcy5idWlsdEluSGVscGVyKGV4cHIgYXMgQVNULkNhbGwpO1xuICAgIH0gZWxzZSBpZiAoaXNBcmcocGF0aCkpIHtcbiAgICAgIHRoaXMuYXJnKFtwYXRoXSk7XG4gICAgfSBlbHNlIGlmIChpc0hlbHBlckludm9jYXRpb24oZXhwcikpIHtcbiAgICAgIHRoaXMucHJlcGFyZUhlbHBlcihleHByKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdoZWxwZXInLCBleHByLCBwYXRoLnBhcnRzWzBdKTtcbiAgICB9IGVsc2UgaWYgKHBhdGgudGhpcykge1xuICAgICAgdGhpcy5vcGNvZGUoJ2dldCcsIGV4cHIsIDAsIHBhdGgucGFydHMpO1xuICAgIH0gZWxzZSBpZiAoaXNMb2NhbChwYXRoLCB0aGlzLnN5bWJvbHMpKSB7XG4gICAgICBsZXQgW2hlYWQsIC4uLnBhcnRzXSA9IHBhdGgucGFydHM7XG4gICAgICB0aGlzLm9wY29kZSgnZ2V0JywgZXhwciwgdGhpcy5zeW1ib2xzLmdldChoZWFkKSwgcGFydHMpO1xuICAgIH0gZWxzZSBpZiAoaXNTaW1wbGVQYXRoKHBhdGgpKSB7XG4gICAgICB0aGlzLm9wY29kZSgndW5rbm93bicsIGV4cHIsIHBhdGgucGFydHNbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wY29kZSgnbWF5YmVMb2NhbCcsIGV4cHIsIHBhdGgucGFydHMpO1xuICAgIH1cbiAgfVxuXG4gIC8vLyBJbnRlcm5hbCBTeW50YXhcblxuICB5aWVsZCh0bzogc3RyaW5nLCBhY3Rpb246IEFTVC5NdXN0YWNoZVN0YXRlbWVudCkge1xuICAgIHRoaXMucHJlcGFyZVBhcmFtcyhhY3Rpb24ucGFyYW1zKTtcbiAgICB0aGlzLm9wY29kZSgneWllbGQnLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5hbGxvY2F0ZUJsb2NrKHRvKSk7XG4gIH1cblxuICBkZWJ1Z2dlcihfbmFtZTogc3RyaW5nLCBhY3Rpb246IEFTVC5NdXN0YWNoZVN0YXRlbWVudCkge1xuICAgIHRoaXMub3Bjb2RlKCdkZWJ1Z2dlcicsIGFjdGlvbiwgdGhpcy5zeW1ib2xzLmdldEV2YWxJbmZvKCkpO1xuICB9XG5cbiAgaGFzQmxvY2sobmFtZTogc3RyaW5nLCBhY3Rpb246IEFTVC5DYWxsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2hhc0Jsb2NrJywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuYWxsb2NhdGVCbG9jayhuYW1lKSk7XG4gIH1cblxuICBoYXNCbG9ja1BhcmFtcyhuYW1lOiBzdHJpbmcsIGFjdGlvbjogQVNULkNhbGwpIHtcbiAgICB0aGlzLm9wY29kZSgnaGFzQmxvY2tQYXJhbXMnLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5hbGxvY2F0ZUJsb2NrKG5hbWUpKTtcbiAgfVxuXG4gIHBhcnRpYWwoX3BhcmFtczogQVNULkV4cHJlc3Npb25bXSwgYWN0aW9uOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnByZXBhcmVQYXJhbXMoYWN0aW9uLnBhcmFtcyk7XG4gICAgdGhpcy5vcGNvZGUoJ3BhcnRpYWwnLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5nZXRFdmFsSW5mbygpKTtcbiAgfVxuXG4gIGJ1aWx0SW5IZWxwZXIoZXhwcjogQVNULkNhbGwpIHtcbiAgICBsZXQgeyBwYXRoIH0gPSBleHByO1xuICAgIGlmIChpc0hhc0Jsb2NrKHBhdGgpKSB7XG4gICAgICBsZXQgbmFtZSA9IGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZShleHByLnBhdGgub3JpZ2luYWwsIGV4cHIpO1xuICAgICAgdGhpcy5oYXNCbG9jayhuYW1lLCBleHByKTtcbiAgICB9IGVsc2UgaWYgKGlzSGFzQmxvY2tQYXJhbXMocGF0aCkpIHtcbiAgICAgIGxldCBuYW1lID0gYXNzZXJ0VmFsaWRIYXNCbG9ja1VzYWdlKGV4cHIucGF0aC5vcmlnaW5hbCwgZXhwcik7XG4gICAgICB0aGlzLmhhc0Jsb2NrUGFyYW1zKG5hbWUsIGV4cHIpO1xuICAgIH1cbiAgfVxuXG4gIC8vLyBFeHByZXNzaW9ucywgaW52b2tlZCByZWN1cnNpdmVseSBmcm9tIHByZXBhcmVQYXJhbXMgYW5kIHByZXBhcmVIYXNoXG5cbiAgU3ViRXhwcmVzc2lvbihleHByOiBBU1QuU3ViRXhwcmVzc2lvbikge1xuICAgIGlmIChpc0J1aWx0SW5IZWxwZXIoZXhwci5wYXRoKSkge1xuICAgICAgdGhpcy5idWlsdEluSGVscGVyKGV4cHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByZXBhcmVIZWxwZXIoZXhwcik7XG4gICAgICB0aGlzLm9wY29kZSgnaGVscGVyJywgZXhwciwgZXhwci5wYXRoLnBhcnRzWzBdKTtcbiAgICB9XG4gIH1cblxuICBQYXRoRXhwcmVzc2lvbihleHByOiBBU1QuUGF0aEV4cHJlc3Npb24pIHtcbiAgICBpZiAoZXhwci5kYXRhKSB7XG4gICAgICB0aGlzLmFyZyhbZXhwcl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgeyBzeW1ib2xzIH0gPSB0aGlzO1xuICAgICAgbGV0IFtoZWFkXSA9IGV4cHIucGFydHM7XG5cbiAgICAgIGlmIChleHByLnRoaXMpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2dldCcsIGV4cHIsIDAsIGV4cHIucGFydHMpO1xuICAgICAgfSBlbHNlICBpZiAoc3ltYm9scy5oYXMoaGVhZCkpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2dldCcsIGV4cHIsIHN5bWJvbHMuZ2V0KGhlYWQpLCBleHByLnBhcnRzLnNsaWNlKDEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCAwLCBleHByLnBhcnRzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBTdHJpbmdMaXRlcmFsKGFjdGlvbjogQVNULlN0cmluZ0xpdGVyYWwpIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBCb29sZWFuTGl0ZXJhbChhY3Rpb246IEFTVC5Cb29sZWFuTGl0ZXJhbCkge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIE51bWJlckxpdGVyYWwoYWN0aW9uOiBBU1QuTnVtYmVyTGl0ZXJhbCkge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIE51bGxMaXRlcmFsKGFjdGlvbjogQVNULk51bGxMaXRlcmFsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgVW5kZWZpbmVkTGl0ZXJhbChhY3Rpb246IEFTVC5VbmRlZmluZWRMaXRlcmFsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgLy8vIFV0aWxpdGllc1xuXG4gIG9wY29kZShuYW1lOiBhbnksIGFjdGlvbjogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGxldCBvcGNvZGUgPSBbbmFtZSwgLi4uYXJnc107XG4gICAgaWYgKHRoaXMuaW5jbHVkZU1ldGEgJiYgYWN0aW9uKSB7XG4gICAgICBvcGNvZGUucHVzaCh0aGlzLm1ldGEoYWN0aW9uKSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGVzLnB1c2gob3Bjb2RlKTtcbiAgfVxuXG4gIHByZXBhcmVIZWxwZXIoZXhwcjogQVNULkNhbGwpIHtcbiAgICBhc3NlcnRJc1NpbXBsZVBhdGgoZXhwci5wYXRoLCBleHByLmxvYywgJ2hlbHBlcicpO1xuXG4gICAgbGV0IHsgcGFyYW1zLCBoYXNoIH0gPSBleHByO1xuXG4gICAgdGhpcy5wcmVwYXJlSGFzaChoYXNoKTtcbiAgICB0aGlzLnByZXBhcmVQYXJhbXMocGFyYW1zKTtcbiAgfVxuXG4gIHByZXBhcmVQYXJhbXMocGFyYW1zOiBBU1QuRXhwcmVzc2lvbltdKSB7XG4gICAgaWYgKCFwYXJhbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBwYXJhbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBwYXJhbSA9IHBhcmFtc1tpXTtcblxuICAgICAgYXNzZXJ0KHRoaXNbcGFyYW0udHlwZV0sIGBVbmltcGxlbWVudGVkICR7cGFyYW0udHlwZX0gb24gVGVtcGxhdGVDb21waWxlcmApO1xuICAgICAgKHRoaXNbcGFyYW0udHlwZV0gYXMgYW55KShwYXJhbSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGUoJ3ByZXBhcmVBcnJheScsIG51bGwsIHBhcmFtcy5sZW5ndGgpO1xuICB9XG5cbiAgcHJlcGFyZUhhc2goaGFzaDogQVNULkhhc2gpIHtcbiAgICBsZXQgcGFpcnMgPSBoYXNoLnBhaXJzO1xuXG4gICAgaWYgKCFwYWlycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgbnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IHBhaXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgeyBrZXksIHZhbHVlIH0gPSBwYWlyc1tpXTtcblxuICAgICAgYXNzZXJ0KHRoaXNbdmFsdWUudHlwZV0sIGBVbmltcGxlbWVudGVkICR7dmFsdWUudHlwZX0gb24gVGVtcGxhdGVDb21waWxlcmApO1xuICAgICAgKHRoaXNbdmFsdWUudHlwZV0gYXMgYW55KSh2YWx1ZSk7XG4gICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGtleSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGUoJ3ByZXBhcmVPYmplY3QnLCBudWxsLCBwYWlycy5sZW5ndGgpO1xuICB9XG5cbiAgcHJlcGFyZUF0dHJpYnV0ZVZhbHVlKHZhbHVlOiBBU1QuQXR0ck5vZGVbJ3ZhbHVlJ10pIHtcbiAgICAvLyByZXR1cm5zIHRoZSBzdGF0aWMgdmFsdWUgaWYgdGhlIHZhbHVlIGlzIHN0YXRpY1xuXG4gICAgc3dpdGNoICh2YWx1ZS50eXBlKSB7XG4gICAgICBjYXNlICdUZXh0Tm9kZSc6XG4gICAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgdmFsdWUsIHZhbHVlLmNoYXJzKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdNdXN0YWNoZVN0YXRlbWVudCc6XG4gICAgICAgIHRoaXMuYXR0cmlidXRlTXVzdGFjaGUoW3ZhbHVlXSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNhc2UgJ0NvbmNhdFN0YXRlbWVudCc6XG4gICAgICAgIHRoaXMucHJlcGFyZUNvbmNhdFBhcnRzKHZhbHVlLnBhcnRzKTtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2NvbmNhdCcsIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByZXBhcmVDb25jYXRQYXJ0cyhwYXJ0czogQVNULkNvbmNhdFN0YXRlbWVudFsncGFydHMnXSkge1xuICAgIGZvciAobGV0IGkgPSBwYXJ0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IHBhcnQgPSBwYXJ0c1tpXTtcblxuICAgICAgaWYgKHBhcnQudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZU11c3RhY2hlKFtwYXJ0XSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnQudHlwZSA9PT0gJ1RleHROb2RlJykge1xuICAgICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIHBhcnQuY2hhcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlQXJyYXknLCBudWxsLCBwYXJ0cy5sZW5ndGgpO1xuICB9XG5cbiAgYXR0cmlidXRlTXVzdGFjaGUoW2FjdGlvbl06IFtBU1QuTXVzdGFjaGVTdGF0ZW1lbnRdKSB7XG4gICAgdGhpcy5tdXN0YWNoZUV4cHJlc3Npb24oYWN0aW9uKTtcbiAgfVxuXG4gIG1ldGEobm9kZTogQVNULkJhc2VOb2RlKSB7XG4gICAgbGV0IGxvYyA9IG5vZGUubG9jO1xuICAgIGlmICghbG9jKSB7IHJldHVybiBbXTsgfVxuXG4gICAgbGV0IHsgc291cmNlLCBzdGFydCwgZW5kIH0gPSBsb2M7XG4gICAgcmV0dXJuIFsgJ2xvYycsIFtzb3VyY2UgfHwgbnVsbCwgW3N0YXJ0LmxpbmUsIHN0YXJ0LmNvbHVtbl0sIFtlbmQubGluZSwgZW5kLmNvbHVtbl1dIF07XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNIZWxwZXJJbnZvY2F0aW9uKG11c3RhY2hlOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpOiBtdXN0YWNoZSBpcyBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQgJiB7IHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbiB9IHtcbiAgcmV0dXJuIChtdXN0YWNoZS5wYXJhbXMgJiYgbXVzdGFjaGUucGFyYW1zLmxlbmd0aCA+IDApIHx8XG4gICAgKG11c3RhY2hlLmhhc2ggJiYgbXVzdGFjaGUuaGFzaC5wYWlycy5sZW5ndGggPiAwKTtcbn1cblxuZnVuY3Rpb24gaXNTaW1wbGVQYXRoKHsgcGFydHMgfTogQVNULlBhdGhFeHByZXNzaW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiBwYXJ0cy5sZW5ndGggPT09IDE7XG59XG5cbmZ1bmN0aW9uIGlzTG9jYWwoeyBwYXJ0cyB9OiBBU1QuUGF0aEV4cHJlc3Npb24sIHN5bWJvbHM6IFN5bWJvbFRhYmxlKTogYm9vbGVhbiB7XG4gIHJldHVybiBzeW1ib2xzICYmIC8qIHBhcnRzLmxlbmd0aCAmJiAqLyBzeW1ib2xzLmhhcyhwYXJ0c1swXSk7XG59XG5cbmZ1bmN0aW9uIGlzWWllbGQocGF0aDogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gIHJldHVybiBwYXRoLm9yaWdpbmFsID09PSAneWllbGQnO1xufVxuXG5mdW5jdGlvbiBpc1BhcnRpYWwocGF0aDogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gIHJldHVybiBwYXRoLm9yaWdpbmFsID09PSAncGFydGlhbCc7XG59XG5cbmZ1bmN0aW9uIGlzRGVidWdnZXIocGF0aDogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gIHJldHVybiBwYXRoLm9yaWdpbmFsID09PSAnZGVidWdnZXInO1xufVxuXG5mdW5jdGlvbiBpc0hhc0Jsb2NrKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ2hhcy1ibG9jayc7XG59XG5cbmZ1bmN0aW9uIGlzSGFzQmxvY2tQYXJhbXMocGF0aDogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gIHJldHVybiBwYXRoLm9yaWdpbmFsID09PSAnaGFzLWJsb2NrLXBhcmFtcyc7XG59XG5cbmZ1bmN0aW9uIGlzQnVpbHRJbkhlbHBlcihwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24pIHtcbiAgcmV0dXJuIGlzSGFzQmxvY2socGF0aCkgfHwgaXNIYXNCbG9ja1BhcmFtcyhwYXRoKTtcbn1cblxuZnVuY3Rpb24gaXNBcmcocGF0aDogQVNULlBhdGhFeHByZXNzaW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiAhIXBhdGhbJ2RhdGEnXTtcbn1cblxuZnVuY3Rpb24gYXNzZXJ0SXNTaW1wbGVQYXRoKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbiwgbG9jOiBBU1QuU291cmNlTG9jYXRpb24sIGNvbnRleHQ6IHN0cmluZykge1xuICBpZiAoIWlzU2ltcGxlUGF0aChwYXRoKSkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgXFxgJHtwYXRoLm9yaWdpbmFsfVxcYCBpcyBub3QgYSB2YWxpZCBuYW1lIGZvciBhICR7Y29udGV4dH0gb24gbGluZSAke2xvYy5zdGFydC5saW5lfS5gLCBwYXRoLmxvYyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWRZaWVsZChzdGF0ZW1lbnQ6IEFTVC5NdXN0YWNoZVN0YXRlbWVudCk6IHN0cmluZyB7XG4gIGxldCB7IHBhaXJzIH0gPSBzdGF0ZW1lbnQuaGFzaDtcblxuICBpZiAoKHBhaXJzLmxlbmd0aCA9PT0gMSAmJiBwYWlyc1swXS5rZXkgIT09ICd0bycpIHx8IHBhaXJzLmxlbmd0aCA+IDEpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYHlpZWxkIG9ubHkgdGFrZXMgYSBzaW5nbGUgbmFtZWQgYXJndW1lbnQ6ICd0bydgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfSBlbHNlIGlmIChwYWlycy5sZW5ndGggPT09IDEgJiYgcGFpcnNbMF0udmFsdWUudHlwZSAhPT0gJ1N0cmluZ0xpdGVyYWwnKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGB5b3UgY2FuIG9ubHkgeWllbGQgdG8gYSBsaXRlcmFsIHZhbHVlYCwgc3RhdGVtZW50LmxvYyk7XG4gIH0gZWxzZSBpZiAocGFpcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdkZWZhdWx0JztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKHBhaXJzWzBdLnZhbHVlIGFzIEFTVC5TdHJpbmdMaXRlcmFsKS52YWx1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRWYWxpZFBhcnRpYWwoc3RhdGVtZW50OiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIC8qIDogZXhwciAqLyB7XG4gIGxldCB7IHBhcmFtcywgaGFzaCwgZXNjYXBlZCwgbG9jIH0gPSBzdGF0ZW1lbnQ7XG5cbiAgaWYgKHBhcmFtcyAmJiBwYXJhbXMubGVuZ3RoICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBQYXJ0aWFsIGZvdW5kIHdpdGggbm8gYXJndW1lbnRzLiBZb3UgbXVzdCBzcGVjaWZ5IGEgdGVtcGxhdGUgbmFtZS4gKG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0pYCwgc3RhdGVtZW50LmxvYyk7XG4gIH0gZWxzZSBpZiAoaGFzaCAmJiBoYXNoLnBhaXJzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYHBhcnRpYWwgZG9lcyBub3QgdGFrZSBhbnkgbmFtZWQgYXJndW1lbnRzIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWAsIHN0YXRlbWVudC5sb2MpO1xuICB9IGVsc2UgaWYgKCFlc2NhcGVkKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGB7e3twYXJ0aWFsIC4uLn19fSBpcyBub3Qgc3VwcG9ydGVkLCBwbGVhc2UgdXNlIHt7cGFydGlhbCAuLi59fSBpbnN0ZWFkIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWAsIHN0YXRlbWVudC5sb2MpO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWRIYXNCbG9ja1VzYWdlKHR5cGU6IHN0cmluZywgY2FsbDogQVNULkNhbGwpOiBzdHJpbmcge1xuICBsZXQgeyBwYXJhbXMsIGhhc2gsIGxvYyB9ID0gY2FsbDtcblxuICBpZiAoaGFzaCAmJiBoYXNoLnBhaXJzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYCR7dHlwZX0gZG9lcyBub3QgdGFrZSBhbnkgbmFtZWQgYXJndW1lbnRzYCwgY2FsbC5sb2MpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJ2RlZmF1bHQnO1xuICB9IGVsc2UgaWYgKHBhcmFtcy5sZW5ndGggPT09IDEpIHtcbiAgICBsZXQgcGFyYW0gPSBwYXJhbXNbMF07XG4gICAgaWYgKHBhcmFtLnR5cGUgPT09ICdTdHJpbmdMaXRlcmFsJykge1xuICAgICAgcmV0dXJuIHBhcmFtLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYHlvdSBjYW4gb25seSB5aWVsZCB0byBhIGxpdGVyYWwgdmFsdWUgKG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0pYCwgY2FsbC5sb2MpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYCR7dHlwZX0gb25seSB0YWtlcyBhIHNpbmdsZSBwb3NpdGlvbmFsIGFyZ3VtZW50IChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWAsIGNhbGwubG9jKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRWYWxpZERlYnVnZ2VyVXNhZ2Uoc3RhdGVtZW50OiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgbGV0IHsgcGFyYW1zLCBoYXNoIH0gPSBzdGF0ZW1lbnQ7XG5cbiAgaWYgKGhhc2ggJiYgaGFzaC5wYWlycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBkZWJ1Z2dlciBkb2VzIG5vdCB0YWtlIGFueSBuYW1lZCBhcmd1bWVudHNgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdkZWZhdWx0JztcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYGRlYnVnZ2VyIGRvZXMgbm90IHRha2UgYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzYCwgc3RhdGVtZW50LmxvYyk7XG4gIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9jb21waWxlci9saWIvdGVtcGxhdGUtY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsQUFBTyxBQUF3QyxBQUFNLEFBQW9CLEFBQUM7Ozs7QUFDMUUsQUFBTyxBQUFnQyxBQUFNLEFBQXVCLEFBQUM7Ozs7QUFDckUsQUFBTyxBQUFFLEFBQUssQUFBRSxBQUFNLEFBQWUsQUFBQyxBQUN0QyxBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFDL0MsQUFBTyxBQUFPLEFBQVMsQUFBRSxBQUFXLEFBQUUsQUFBTSxBQUFpQixBQUFDOztBQUM5RCxBQUFPLEFBQUUsQUFBZ0IsQUFBRSxBQUFNLEFBQVMsQUFBQzs7OztBQU8zQyx3QkFBd0IsQUFBVSxPQUNoQyxBQUFNO1dBQUMsQUFBSyxNQUFDLEFBQU8sWUFBSyxBQUFTLGFBQUksQ0FBQyxBQUFLLE1BQUMsQUFBTyxBQUFDLEFBQ3ZELEFBQUM7QUFFRCxBQUFNLEFBQUMsQUFBTzs7Z0JBaUJBLEFBQXVCLFNBTjNCO2FBQVUsYUFBRyxBQUFDLEFBQUMsQUFDZjthQUFXLGNBQWEsQUFBRSxBQUFDLEFBQzNCO2FBQVcsY0FBRyxBQUFJLEFBQUssQUFBZSxBQUFDLEFBQ3ZDO2FBQU8sVUFBVSxBQUFFLEFBQUMsQUFDcEI7YUFBVyxjQUFHLEFBQUssQUFBQyxBQUcxQixBQUFJO2FBQUMsQUFBTyxVQUFHLEFBQU8sV0FBSSxBQUFFLEFBQUMsQUFDL0IsQUFBQztBQWxCRCxBQUFNO1dBQUMsQUFBTyxRQUFDLEFBQXVCLFNBQUUsQUFBZ0IsS0FDdEQ7WUFBSSxBQUFlLGtCQUFHLEFBQUksQUFBZSxBQUFFLEFBQUMsQUFDNUMsQUFBZTt3QkFBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQUMsQUFFM0I7WUFBSSxBQUFR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QUMsQUFBSyxNQUFDLEFBQU0sU0FBRyxBQUFDLEFBQUMsR0FBQyxBQUFDLEFBQ2xDO2NBQU0sQUFBSSxBQUFXLEFBQUMsQUFBNEMsc0VBQUUsQUFBUyxVQUFDLEFBQUcsQUFBQyxBQUFDLEFBQ3JGLEFBQUM7QUFFRCxBQUFFLEFBQUM7UUFBQyxBQUFNLE9BQUMsQUFBTSxXQUFLLEFBQUMsQUFBQyxHQUFDLEFBQUMsQUFDeEIsQUFBTTtlQUFDLEFBQVMsQUFBQyxBQUNuQixBQUFDLEFBQUMsQUFBSTtXQUFDLEFBQUMsQUFDTjtjQUFNLEFBQUksQUFBVyxBQUFDLEFBQWlELDJFQUFFLEFBQVMsVUFBQyxBQUFHLEFBQUMsQUFBQyxBQUMxRixBQUFDLEFBQ0g7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUZW1wbGF0ZVZpc2l0b3IsIHsgU3ltYm9sVGFibGUsIEFjdGlvbiB9IGZyb20gXCIuL3RlbXBsYXRlLXZpc2l0b3JcIjtcbmltcG9ydCBKYXZhU2NyaXB0Q29tcGlsZXIsIHsgVGVtcGxhdGUgfSBmcm9tIFwiLi9qYXZhc2NyaXB0LWNvbXBpbGVyXCI7XG5pbXBvcnQgeyBTdGFjayB9IGZyb20gXCJAZ2xpbW1lci91dGlsXCI7XG5pbXBvcnQgeyBhc3NlcnQsIGV4cGVjdCB9IGZyb20gXCJAZ2xpbW1lci91dGlsXCI7XG5pbXBvcnQgeyBBU1QsIGlzTGl0ZXJhbCwgU3ludGF4RXJyb3IgfSBmcm9tICdAZ2xpbW1lci9zeW50YXgnO1xuaW1wb3J0IHsgZ2V0QXR0ck5hbWVzcGFjZSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgT3BhcXVlIH0gZnJvbSBcIkBnbGltbWVyL2ludGVyZmFjZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxlT3B0aW9ucyB7XG4gIG1ldGE6IE9wYXF1ZTtcbn1cblxuZnVuY3Rpb24gaXNUcnVzdGVkVmFsdWUodmFsdWU6IGFueSkge1xuICByZXR1cm4gdmFsdWUuZXNjYXBlZCAhPT0gdW5kZWZpbmVkICYmICF2YWx1ZS5lc2NhcGVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZW1wbGF0ZUNvbXBpbGVyIHtcbiAgc3RhdGljIGNvbXBpbGUob3B0aW9uczogQ29tcGlsZU9wdGlvbnMsIGFzdDogQVNULlByb2dyYW0pOiBUZW1wbGF0ZSB7XG4gICAgbGV0IHRlbXBsYXRlVmlzaXRvciA9IG5ldyBUZW1wbGF0ZVZpc2l0b3IoKTtcbiAgICB0ZW1wbGF0ZVZpc2l0b3IudmlzaXQoYXN0KTtcblxuICAgIGxldCBjb21waWxlciA9IG5ldyBUZW1wbGF0ZUNvbXBpbGVyKG9wdGlvbnMpO1xuICAgIGxldCBvcGNvZGVzID0gY29tcGlsZXIucHJvY2Vzcyh0ZW1wbGF0ZVZpc2l0b3IuYWN0aW9ucyk7XG4gICAgcmV0dXJuIEphdmFTY3JpcHRDb21waWxlci5wcm9jZXNzKG9wY29kZXMsIGFzdFsnc3ltYm9scyddKTtcbiAgfVxuXG4gIHByaXZhdGUgb3B0aW9uczogQ29tcGlsZU9wdGlvbnM7XG4gIHByaXZhdGUgdGVtcGxhdGVJZCA9IDA7XG4gIHByaXZhdGUgdGVtcGxhdGVJZHM6IG51bWJlcltdID0gW107XG4gIHByaXZhdGUgc3ltYm9sU3RhY2sgPSBuZXcgU3RhY2s8U3ltYm9sVGFibGU+KCk7XG4gIHByaXZhdGUgb3Bjb2RlczogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSBpbmNsdWRlTWV0YSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENvbXBpbGVPcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgfVxuXG4gIGdldCBzeW1ib2xzKCk6IFN5bWJvbFRhYmxlIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuc3ltYm9sU3RhY2suY3VycmVudCwgJ0V4cGVjdGVkIGEgc3ltYm9sIHRhYmxlIG9uIHRoZSBzdGFjaycpO1xuICB9XG5cbiAgcHJvY2VzcyhhY3Rpb25zOiBBY3Rpb25bXSk6IEFjdGlvbltdIHtcbiAgICBhY3Rpb25zLmZvckVhY2goKFtuYW1lLCAuLi5hcmdzXSkgPT4ge1xuICAgICAgaWYgKCF0aGlzW25hbWVdKSB7IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZCAke25hbWV9IG9uIFRlbXBsYXRlQ29tcGlsZXJgKTsgfVxuICAgICAgKHRoaXNbbmFtZV0gYXMgYW55KSguLi5hcmdzKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5vcGNvZGVzO1xuICB9XG5cbiAgc3RhcnRQcm9ncmFtKHByb2dyYW06IFtBU1QuUHJvZ3JhbV0pIHtcbiAgICB0aGlzLnN5bWJvbFN0YWNrLnB1c2gocHJvZ3JhbVswXVsnc3ltYm9scyddKTtcbiAgICB0aGlzLm9wY29kZSgnc3RhcnRQcm9ncmFtJywgcHJvZ3JhbSwgcHJvZ3JhbSk7XG4gIH1cblxuICBlbmRQcm9ncmFtKCkge1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucG9wKCk7XG4gICAgdGhpcy5vcGNvZGUoJ2VuZFByb2dyYW0nLCBudWxsKTtcbiAgfVxuXG4gIHN0YXJ0QmxvY2socHJvZ3JhbTogW0FTVC5Qcm9ncmFtXSkge1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucHVzaChwcm9ncmFtWzBdWydzeW1ib2xzJ10pO1xuICAgIHRoaXMudGVtcGxhdGVJZCsrO1xuICAgIHRoaXMub3Bjb2RlKCdzdGFydEJsb2NrJywgcHJvZ3JhbSwgcHJvZ3JhbSk7XG4gIH1cblxuICBlbmRCbG9jaygpIHtcbiAgICB0aGlzLnN5bWJvbFN0YWNrLnBvcCgpO1xuICAgIHRoaXMudGVtcGxhdGVJZHMucHVzaCh0aGlzLnRlbXBsYXRlSWQgLSAxKTtcbiAgICB0aGlzLm9wY29kZSgnZW5kQmxvY2snLCBudWxsKTtcbiAgfVxuXG4gIHRleHQoW2FjdGlvbl06IFtBU1QuVGV4dE5vZGVdKSB7XG4gICAgdGhpcy5vcGNvZGUoJ3RleHQnLCBhY3Rpb24sIGFjdGlvbi5jaGFycyk7XG4gIH1cblxuICBjb21tZW50KFthY3Rpb25dOiBbQVNULkNvbW1lbnRTdGF0ZW1lbnRdKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2NvbW1lbnQnLCBhY3Rpb24sIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBvcGVuRWxlbWVudChbYWN0aW9uXTogW0FTVC5FbGVtZW50Tm9kZV0pIHtcbiAgICBsZXQgYXR0cmlidXRlcyA9IGFjdGlvbi5hdHRyaWJ1dGVzO1xuICAgIGxldCBoYXNTcGxhdDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGF0dHIgPSBhdHRyaWJ1dGVzW2ldO1xuICAgICAgaWYgKGF0dHIubmFtZSA9PT0gJy4uLmF0dHJpYnV0ZXMnKSB7XG4gICAgICAgIGhhc1NwbGF0ID0gYXR0cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGhhc1NwbGF0KSB7XG4gICAgICB0aGlzLm9wY29kZSgnb3BlblNwbGF0dGVkRWxlbWVudCcsIGFjdGlvbiwgYWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGNvZGUoJ29wZW5FbGVtZW50JywgYWN0aW9uLCBhY3Rpb24pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0aW9uLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYXR0cmlidXRlKFthY3Rpb24uYXR0cmlidXRlc1tpXV0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0aW9uLm1vZGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5tb2RpZmllcihbYWN0aW9uLm1vZGlmaWVyc1tpXV0pO1xuICAgIH1cbiAgICB0aGlzLm9wY29kZSgnZmx1c2hFbGVtZW50JywgbnVsbCk7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wdXNoKGFjdGlvblsnc3ltYm9scyddKTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudChbYWN0aW9uXTogW0FTVC5FbGVtZW50Tm9kZV0pIHtcbiAgICB0aGlzLnN5bWJvbFN0YWNrLnBvcCgpO1xuICAgIHRoaXMub3Bjb2RlKCdjbG9zZUVsZW1lbnQnLCBudWxsLCBhY3Rpb24pO1xuICB9XG5cbiAgYXR0cmlidXRlKFthY3Rpb25dOiBbQVNULkF0dHJOb2RlXSkge1xuICAgIGxldCB7IG5hbWUsIHZhbHVlIH0gPSBhY3Rpb247XG5cbiAgICBsZXQgbmFtZXNwYWNlID0gZ2V0QXR0ck5hbWVzcGFjZShuYW1lKTtcblxuICAgIGxldCBpc1N0YXRpYyA9IHRoaXMucHJlcGFyZUF0dHJpYnV0ZVZhbHVlKHZhbHVlKTtcblxuICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gJ0AnKSB7XG4gICAgICAvLyBBcmd1bWVudHNcbiAgICAgIGlmIChpc1N0YXRpYykge1xuICAgICAgICB0aGlzLm9wY29kZSgnc3RhdGljQXJnJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2R5bmFtaWNBcmcnLCBhY3Rpb24sIG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2R5bmFtaWNBcmcnLCBhY3Rpb24sIG5hbWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgaXNUcnVzdGluZyA9IGlzVHJ1c3RlZFZhbHVlKHZhbHVlKTtcblxuICAgICAgaWYgKGlzU3RhdGljICYmIG5hbWUgPT09ICcuLi5hdHRyaWJ1dGVzJykge1xuICAgICAgICB0aGlzLm9wY29kZSgnYXR0clNwbGF0JywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuYWxsb2NhdGVCbG9jaygnYXR0cnMnKSk7XG4gICAgICB9IGVsc2UgaWYgKGlzU3RhdGljKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdzdGF0aWNBdHRyJywgYWN0aW9uLCBuYW1lLCBuYW1lc3BhY2UpO1xuICAgICAgfSBlbHNlIGlmIChpc1RydXN0aW5nKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCd0cnVzdGluZ0F0dHInLCBhY3Rpb24sIG5hbWUsIG5hbWVzcGFjZSk7XG4gICAgICB9IGVsc2UgaWYgKGFjdGlvbi52YWx1ZS50eXBlID09PSAnTXVzdGFjaGVTdGF0ZW1lbnQnKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXR0cicsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0F0dHInLCBhY3Rpb24sIG5hbWUsIG5hbWVzcGFjZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbW9kaWZpZXIoW2FjdGlvbl06IFtBU1QuRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50XSkge1xuICAgIGFzc2VydElzU2ltcGxlUGF0aChhY3Rpb24ucGF0aCwgYWN0aW9uLmxvYywgJ21vZGlmaWVyJyk7XG5cbiAgICBsZXQgeyBwYXRoOiB7IHBhcnRzIH0gfSA9IGFjdGlvbjtcblxuICAgIHRoaXMucHJlcGFyZUhlbHBlcihhY3Rpb24pO1xuICAgIHRoaXMub3Bjb2RlKCdtb2RpZmllcicsIGFjdGlvbiwgcGFydHNbMF0pO1xuICB9XG5cbiAgbXVzdGFjaGUoW2FjdGlvbl06IFtBU1QuTXVzdGFjaGVTdGF0ZW1lbnRdKSB7XG4gICAgbGV0IHsgcGF0aCB9ID0gYWN0aW9uO1xuXG4gICAgaWYgKGlzTGl0ZXJhbChwYXRoKSkge1xuICAgICAgdGhpcy5tdXN0YWNoZUV4cHJlc3Npb24oYWN0aW9uKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnLCBhY3Rpb24sICFhY3Rpb24uZXNjYXBlZCk7XG4gICAgfSBlbHNlIGlmIChpc1lpZWxkKHBhdGgpKSB7XG4gICAgICBsZXQgdG8gPSBhc3NlcnRWYWxpZFlpZWxkKGFjdGlvbik7XG4gICAgICB0aGlzLnlpZWxkKHRvLCBhY3Rpb24pO1xuICAgIH0gZWxzZSBpZiAoaXNQYXJ0aWFsKHBhdGgpKSB7XG4gICAgICBsZXQgcGFyYW1zID0gYXNzZXJ0VmFsaWRQYXJ0aWFsKGFjdGlvbik7XG4gICAgICB0aGlzLnBhcnRpYWwocGFyYW1zLCBhY3Rpb24pO1xuICAgIH0gZWxzZSBpZiAoaXNEZWJ1Z2dlcihwYXRoKSkge1xuICAgICAgYXNzZXJ0VmFsaWREZWJ1Z2dlclVzYWdlKGFjdGlvbik7XG4gICAgICB0aGlzLmRlYnVnZ2VyKCdkZWJ1Z2dlcicsIGFjdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubXVzdGFjaGVFeHByZXNzaW9uKGFjdGlvbik7XG4gICAgICB0aGlzLm9wY29kZSgnYXBwZW5kJywgYWN0aW9uLCAhYWN0aW9uLmVzY2FwZWQpO1xuICAgIH1cbiAgfVxuXG4gIGJsb2NrKFthY3Rpb24vKiwgaW5kZXgsIGNvdW50Ki9dOiBbQVNULkJsb2NrU3RhdGVtZW50XSkge1xuICAgIHRoaXMucHJlcGFyZUhlbHBlcihhY3Rpb24pO1xuICAgIGxldCB0ZW1wbGF0ZUlkID0gdGhpcy50ZW1wbGF0ZUlkcy5wb3AoKTtcbiAgICBsZXQgaW52ZXJzZUlkID0gYWN0aW9uLmludmVyc2UgPT09IG51bGwgPyBudWxsIDogdGhpcy50ZW1wbGF0ZUlkcy5wb3AoKTtcbiAgICB0aGlzLm9wY29kZSgnYmxvY2snLCBhY3Rpb24sIGFjdGlvbi5wYXRoLnBhcnRzWzBdLCB0ZW1wbGF0ZUlkLCBpbnZlcnNlSWQpO1xuICB9XG5cbiAgLy8vIEludGVybmFsIGFjdGlvbnMsIG5vdCBmb3VuZCBpbiB0aGUgb3JpZ2luYWwgcHJvY2Vzc2VkIGFjdGlvbnNcblxuICBhcmcoW3BhdGhdOiBbQVNULlBhdGhFeHByZXNzaW9uXSkge1xuICAgIGxldCB7IHBhcnRzOiBbaGVhZCwgLi4ucmVzdF0gfSA9IHBhdGg7XG4gICAgbGV0IHN5bWJvbCA9IHRoaXMuc3ltYm9scy5hbGxvY2F0ZU5hbWVkKGhlYWQpO1xuICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBwYXRoLCBzeW1ib2wsIHJlc3QpO1xuICB9XG5cbiAgbXVzdGFjaGVFeHByZXNzaW9uKGV4cHI6IEFTVC5NdXN0YWNoZVN0YXRlbWVudCkge1xuICAgIGxldCB7IHBhdGggfSA9IGV4cHI7XG5cbiAgICBpZiAoaXNMaXRlcmFsKHBhdGgpKSB7XG4gICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIGV4cHIsIHBhdGgudmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoaXNCdWlsdEluSGVscGVyKHBhdGgpKSB7XG4gICAgICB0aGlzLmJ1aWx0SW5IZWxwZXIoZXhwciBhcyBBU1QuQ2FsbCk7XG4gICAgfSBlbHNlIGlmIChpc0FyZyhwYXRoKSkge1xuICAgICAgdGhpcy5hcmcoW3BhdGhdKTtcbiAgICB9IGVsc2UgaWYgKGlzSGVscGVySW52b2NhdGlvbihleHByKSkge1xuICAgICAgdGhpcy5wcmVwYXJlSGVscGVyKGV4cHIpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2hlbHBlcicsIGV4cHIsIHBhdGgucGFydHNbMF0pO1xuICAgIH0gZWxzZSBpZiAocGF0aC50aGlzKSB7XG4gICAgICB0aGlzLm9wY29kZSgnZ2V0JywgZXhwciwgMCwgcGF0aC5wYXJ0cyk7XG4gICAgfSBlbHNlIGlmIChpc0xvY2FsKHBhdGgsIHRoaXMuc3ltYm9scykpIHtcbiAgICAgIGxldCBbaGVhZCwgLi4ucGFydHNdID0gcGF0aC5wYXJ0cztcbiAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCB0aGlzLnN5bWJvbHMuZ2V0KGhlYWQpLCBwYXJ0cyk7XG4gICAgfSBlbHNlIGlmIChpc1NpbXBsZVBhdGgocGF0aCkpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCd1bmtub3duJywgZXhwciwgcGF0aC5wYXJ0c1swXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdtYXliZUxvY2FsJywgZXhwciwgcGF0aC5wYXJ0cyk7XG4gICAgfVxuICB9XG5cbiAgLy8vIEludGVybmFsIFN5bnRheFxuXG4gIHlpZWxkKHRvOiBzdHJpbmcsIGFjdGlvbjogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKGFjdGlvbi5wYXJhbXMpO1xuICAgIHRoaXMub3Bjb2RlKCd5aWVsZCcsIGFjdGlvbiwgdGhpcy5zeW1ib2xzLmFsbG9jYXRlQmxvY2sodG8pKTtcbiAgfVxuXG4gIGRlYnVnZ2VyKF9uYW1lOiBzdHJpbmcsIGFjdGlvbjogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gICAgdGhpcy5vcGNvZGUoJ2RlYnVnZ2VyJywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuZ2V0RXZhbEluZm8oKSk7XG4gIH1cblxuICBoYXNCbG9jayhuYW1lOiBzdHJpbmcsIGFjdGlvbjogQVNULkNhbGwpIHtcbiAgICB0aGlzLm9wY29kZSgnaGFzQmxvY2snLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5hbGxvY2F0ZUJsb2NrKG5hbWUpKTtcbiAgfVxuXG4gIGhhc0Jsb2NrUGFyYW1zKG5hbWU6IHN0cmluZywgYWN0aW9uOiBBU1QuQ2FsbCkge1xuICAgIHRoaXMub3Bjb2RlKCdoYXNCbG9ja1BhcmFtcycsIGFjdGlvbiwgdGhpcy5zeW1ib2xzLmFsbG9jYXRlQmxvY2sobmFtZSkpO1xuICB9XG5cbiAgcGFydGlhbChfcGFyYW1zOiBBU1QuRXhwcmVzc2lvbltdLCBhY3Rpb246IEFTVC5NdXN0YWNoZVN0YXRlbWVudCkge1xuICAgIHRoaXMucHJlcGFyZVBhcmFtcyhhY3Rpb24ucGFyYW1zKTtcbiAgICB0aGlzLm9wY29kZSgncGFydGlhbCcsIGFjdGlvbiwgdGhpcy5zeW1ib2xzLmdldEV2YWxJbmZvKCkpO1xuICB9XG5cbiAgYnVpbHRJbkhlbHBlcihleHByOiBBU1QuQ2FsbCkge1xuICAgIGxldCB7IHBhdGggfSA9IGV4cHI7XG4gICAgaWYgKGlzSGFzQmxvY2socGF0aCkpIHtcbiAgICAgIGxldCBuYW1lID0gYXNzZXJ0VmFsaWRIYXNCbG9ja1VzYWdlKGV4cHIucGF0aC5vcmlnaW5hbCwgZXhwcik7XG4gICAgICB0aGlzLmhhc0Jsb2NrKG5hbWUsIGV4cHIpO1xuICAgIH0gZWxzZSBpZiAoaXNIYXNCbG9ja1BhcmFtcyhwYXRoKSkge1xuICAgICAgbGV0IG5hbWUgPSBhc3NlcnRWYWxpZEhhc0Jsb2NrVXNhZ2UoZXhwci5wYXRoLm9yaWdpbmFsLCBleHByKTtcbiAgICAgIHRoaXMuaGFzQmxvY2tQYXJhbXMobmFtZSwgZXhwcik7XG4gICAgfVxuICB9XG5cbiAgLy8vIEV4cHJlc3Npb25zLCBpbnZva2VkIHJlY3Vyc2l2ZWx5IGZyb20gcHJlcGFyZVBhcmFtcyBhbmQgcHJlcGFyZUhhc2hcblxuICBTdWJFeHByZXNzaW9uKGV4cHI6IEFTVC5TdWJFeHByZXNzaW9uKSB7XG4gICAgaWYgKGlzQnVpbHRJbkhlbHBlcihleHByLnBhdGgpKSB7XG4gICAgICB0aGlzLmJ1aWx0SW5IZWxwZXIoZXhwcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJlcGFyZUhlbHBlcihleHByKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdoZWxwZXInLCBleHByLCBleHByLnBhdGgucGFydHNbMF0pO1xuICAgIH1cbiAgfVxuXG4gIFBhdGhFeHByZXNzaW9uKGV4cHI6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICAgIGlmIChleHByLmRhdGEpIHtcbiAgICAgIHRoaXMuYXJnKFtleHByXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB7IHN5bWJvbHMgfSA9IHRoaXM7XG4gICAgICBsZXQgW2hlYWRdID0gZXhwci5wYXJ0cztcblxuICAgICAgaWYgKGV4cHIudGhpcykge1xuICAgICAgICB0aGlzLm9wY29kZSgnZ2V0JywgZXhwciwgMCwgZXhwci5wYXJ0cyk7XG4gICAgICB9IGVsc2UgaWYgKHN5bWJvbHMuaGFzKGhlYWQpKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCBzeW1ib2xzLmdldChoZWFkKSwgZXhwci5wYXJ0cy5zbGljZSgxKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wY29kZSgnbWF5YmVMb2NhbCcsZXhwciwgZXhwci5wYXJ0cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgU3RyaW5nTGl0ZXJhbChhY3Rpb246IEFTVC5TdHJpbmdMaXRlcmFsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgQm9vbGVhbkxpdGVyYWwoYWN0aW9uOiBBU1QuQm9vbGVhbkxpdGVyYWwpIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBOdW1iZXJMaXRlcmFsKGFjdGlvbjogQVNULk51bWJlckxpdGVyYWwpIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBOdWxsTGl0ZXJhbChhY3Rpb246IEFTVC5OdWxsTGl0ZXJhbCkge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIFVuZGVmaW5lZExpdGVyYWwoYWN0aW9uOiBBU1QuVW5kZWZpbmVkTGl0ZXJhbCkge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIC8vLyBVdGlsaXRpZXNcblxuICBvcGNvZGUobmFtZTogYW55LCBhY3Rpb246IGFueSwgLi4uYXJnczogYW55W10pIHtcbiAgICBsZXQgb3Bjb2RlID0gW25hbWUsIC4uLmFyZ3NdO1xuICAgIGlmICh0aGlzLmluY2x1ZGVNZXRhICYmIGFjdGlvbikge1xuICAgICAgb3Bjb2RlLnB1c2godGhpcy5tZXRhKGFjdGlvbikpO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2Rlcy5wdXNoKG9wY29kZSk7XG4gIH1cblxuICBwcmVwYXJlSGVscGVyKGV4cHI6IEFTVC5DYWxsKSB7XG4gICAgYXNzZXJ0SXNTaW1wbGVQYXRoKGV4cHIucGF0aCwgZXhwci5sb2MsICdoZWxwZXInKTtcblxuICAgIGxldCB7IHBhcmFtcywgaGFzaCB9ID0gZXhwcjtcblxuICAgIHRoaXMucHJlcGFyZUhhc2goaGFzaCk7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKHBhcmFtcyk7XG4gIH1cblxuICBwcmVwYXJlUGFyYW1zKHBhcmFtczogQVNULkV4cHJlc3Npb25bXSkge1xuICAgIGlmICghcGFyYW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gcGFyYW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgcGFyYW0gPSBwYXJhbXNbaV07XG5cbiAgICAgIGFzc2VydCh0aGlzW3BhcmFtLnR5cGVdLCBgVW5pbXBsZW1lbnRlZCAke3BhcmFtLnR5cGV9IG9uIFRlbXBsYXRlQ29tcGlsZXJgKTtcbiAgICAgICh0aGlzW3BhcmFtLnR5cGVdIGFzIGFueSkocGFyYW0pO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlQXJyYXknLCBudWxsLCBwYXJhbXMubGVuZ3RoKTtcbiAgfVxuXG4gIHByZXBhcmVIYXNoKGhhc2g6IEFTVC5IYXNoKSB7XG4gICAgbGV0IHBhaXJzID0gaGFzaC5wYWlycztcblxuICAgIGlmICghcGFpcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBwYWlycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IHsga2V5LCB2YWx1ZSB9ID0gcGFpcnNbaV07XG5cbiAgICAgIGFzc2VydCh0aGlzW3ZhbHVlLnR5cGVdLCBgVW5pbXBsZW1lbnRlZCAke3ZhbHVlLnR5cGV9IG9uIFRlbXBsYXRlQ29tcGlsZXJgKTtcbiAgICAgICh0aGlzW3ZhbHVlLnR5cGVdIGFzIGFueSkodmFsdWUpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBrZXkpO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlT2JqZWN0JywgbnVsbCwgcGFpcnMubGVuZ3RoKTtcbiAgfVxuXG4gIHByZXBhcmVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZTogQVNULkF0dHJOb2RlWyd2YWx1ZSddKSB7XG4gICAgLy8gcmV0dXJucyB0aGUgc3RhdGljIHZhbHVlIGlmIHRoZSB2YWx1ZSBpcyBzdGF0aWNcblxuICAgIHN3aXRjaCAodmFsdWUudHlwZSkge1xuICAgICAgY2FzZSAnVGV4dE5vZGUnOlxuICAgICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIHZhbHVlLCB2YWx1ZS5jaGFycyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnTXVzdGFjaGVTdGF0ZW1lbnQnOlxuICAgICAgICB0aGlzLmF0dHJpYnV0ZU11c3RhY2hlKFt2YWx1ZV0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlICdDb25jYXRTdGF0ZW1lbnQnOlxuICAgICAgICB0aGlzLnByZXBhcmVDb25jYXRQYXJ0cyh2YWx1ZS5wYXJ0cyk7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdjb25jYXQnLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcmVwYXJlQ29uY2F0UGFydHMocGFydHM6IEFTVC5Db25jYXRTdGF0ZW1lbnRbJ3BhcnRzJ10pIHtcbiAgICBmb3IgKGxldCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBwYXJ0ID0gcGFydHNbaV07XG5cbiAgICAgIGlmIChwYXJ0LnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVNdXN0YWNoZShbcGFydF0pO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0LnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBwYXJ0LmNoYXJzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgncHJlcGFyZUFycmF5JywgbnVsbCwgcGFydHMubGVuZ3RoKTtcbiAgfVxuXG4gIGF0dHJpYnV0ZU11c3RhY2hlKFthY3Rpb25dOiBbQVNULk11c3RhY2hlU3RhdGVtZW50XSkge1xuICAgIHRoaXMubXVzdGFjaGVFeHByZXNzaW9uKGFjdGlvbik7XG4gIH1cblxuICBtZXRhKG5vZGU6IEFTVC5CYXNlTm9kZSkge1xuICAgIGxldCBsb2MgPSBub2RlLmxvYztcbiAgICBpZiAoIWxvYykgeyByZXR1cm4gW107IH1cblxuICAgIGxldCB7IHNvdXJjZSwgc3RhcnQsIGVuZCB9ID0gbG9jO1xuICAgIHJldHVybiBbICdsb2MnLCBbc291cmNlIHx8IG51bGwsIFtzdGFydC5saW5lLCBzdGFydC5jb2x1bW5dLCBbZW5kLmxpbmUsIGVuZC5jb2x1bW5dXSBdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzSGVscGVySW52b2NhdGlvbihtdXN0YWNoZTogQVNULk11c3RhY2hlU3RhdGVtZW50KTogbXVzdGFjaGUgaXMgQVNULk11c3RhY2hlU3RhdGVtZW50ICYgeyBwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24gfSB7XG4gIHJldHVybiAobXVzdGFjaGUucGFyYW1zICYmIG11c3RhY2hlLnBhcmFtcy5sZW5ndGggPiAwKSB8fFxuICAgIChtdXN0YWNoZS5oYXNoICYmIG11c3RhY2hlLmhhc2gucGFpcnMubGVuZ3RoID4gMCk7XG59XG5cbmZ1bmN0aW9uIGlzU2ltcGxlUGF0aCh7IHBhcnRzIH06IEFTVC5QYXRoRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gcGFydHMubGVuZ3RoID09PSAxO1xufVxuXG5mdW5jdGlvbiBpc0xvY2FsKHsgcGFydHMgfTogQVNULlBhdGhFeHByZXNzaW9uLCBzeW1ib2xzOiBTeW1ib2xUYWJsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3ltYm9scyAmJiAvKiBwYXJ0cy5sZW5ndGggJiYgKi8gc3ltYm9scy5oYXMocGFydHNbMF0pO1xufVxuXG5mdW5jdGlvbiBpc1lpZWxkKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ3lpZWxkJztcbn1cblxuZnVuY3Rpb24gaXNQYXJ0aWFsKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ3BhcnRpYWwnO1xufVxuXG5mdW5jdGlvbiBpc0RlYnVnZ2VyKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ2RlYnVnZ2VyJztcbn1cblxuZnVuY3Rpb24gaXNIYXNCbG9jayhwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24pIHtcbiAgcmV0dXJuIHBhdGgub3JpZ2luYWwgPT09ICdoYXMtYmxvY2snO1xufVxuXG5mdW5jdGlvbiBpc0hhc0Jsb2NrUGFyYW1zKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ2hhcy1ibG9jay1wYXJhbXMnO1xufVxuXG5mdW5jdGlvbiBpc0J1aWx0SW5IZWxwZXIocGF0aDogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gIHJldHVybiBpc0hhc0Jsb2NrKHBhdGgpIHx8IGlzSGFzQmxvY2tQYXJhbXMocGF0aCk7XG59XG5cbmZ1bmN0aW9uIGlzQXJnKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gISFwYXRoWydkYXRhJ107XG59XG5cbmZ1bmN0aW9uIGFzc2VydElzU2ltcGxlUGF0aChwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24sIGxvYzogQVNULlNvdXJjZUxvY2F0aW9uLCBjb250ZXh0OiBzdHJpbmcpIHtcbiAgaWYgKCFpc1NpbXBsZVBhdGgocGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYFxcYCR7cGF0aC5vcmlnaW5hbH1cXGAgaXMgbm90IGEgdmFsaWQgbmFtZSBmb3IgYSAke2NvbnRleHR9IG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0uYCwgcGF0aC5sb2MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkWWllbGQoc3RhdGVtZW50OiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpOiBzdHJpbmcge1xuICBsZXQgeyBwYWlycyB9ID0gc3RhdGVtZW50Lmhhc2g7XG5cbiAgaWYgKChwYWlycy5sZW5ndGggPT09IDEgJiYgcGFpcnNbMF0ua2V5ICE9PSAndG8nKSB8fCBwYWlycy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGB5aWVsZCBvbmx5IHRha2VzIGEgc2luZ2xlIG5hbWVkIGFyZ3VtZW50OiAndG8nYCwgc3RhdGVtZW50LmxvYyk7XG4gIH0gZWxzZSBpZiAocGFpcnMubGVuZ3RoID09PSAxICYmIHBhaXJzWzBdLnZhbHVlLnR5cGUgIT09ICdTdHJpbmdMaXRlcmFsJykge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgeW91IGNhbiBvbmx5IHlpZWxkIHRvIGEgbGl0ZXJhbCB2YWx1ZWAsIHN0YXRlbWVudC5sb2MpO1xuICB9IGVsc2UgaWYgKHBhaXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChwYWlyc1swXS52YWx1ZSBhcyBBU1QuU3RyaW5nTGl0ZXJhbCkudmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWRQYXJ0aWFsKHN0YXRlbWVudDogQVNULk11c3RhY2hlU3RhdGVtZW50KSAvKiA6IGV4cHIgKi8ge1xuICBsZXQgeyBwYXJhbXMsIGhhc2gsIGVzY2FwZWQsIGxvYyB9ID0gc3RhdGVtZW50O1xuXG4gIGlmIChwYXJhbXMgJiYgcGFyYW1zLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgUGFydGlhbCBmb3VuZCB3aXRoIG5vIGFyZ3VtZW50cy4gWW91IG11c3Qgc3BlY2lmeSBhIHRlbXBsYXRlIG5hbWUuIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWAsIHN0YXRlbWVudC5sb2MpO1xuICB9IGVsc2UgaWYgKGhhc2ggJiYgaGFzaC5wYWlycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBwYXJ0aWFsIGRvZXMgbm90IHRha2UgYW55IG5hbWVkIGFyZ3VtZW50cyAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfSBlbHNlIGlmICghZXNjYXBlZCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihge3t7cGFydGlhbCAuLi59fX0gaXMgbm90IHN1cHBvcnRlZCwgcGxlYXNlIHVzZSB7e3BhcnRpYWwgLi4ufX0gaW5zdGVhZCAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZSh0eXBlOiBzdHJpbmcsIGNhbGw6IEFTVC5DYWxsKTogc3RyaW5nIHtcbiAgbGV0IHsgcGFyYW1zLCBoYXNoLCBsb2MgfSA9IGNhbGw7XG5cbiAgaWYgKGhhc2ggJiYgaGFzaC5wYWlycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGAke3R5cGV9IGRvZXMgbm90IHRha2UgYW55IG5hbWVkIGFyZ3VtZW50c2AsIGNhbGwubG9jKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdkZWZhdWx0JztcbiAgfSBlbHNlIGlmIChwYXJhbXMubGVuZ3RoID09PSAxKSB7XG4gICAgbGV0IHBhcmFtID0gcGFyYW1zWzBdO1xuICAgIGlmIChwYXJhbS50eXBlID09PSAnU3RyaW5nTGl0ZXJhbCcpIHtcbiAgICAgIHJldHVybiBwYXJhbS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGB5b3UgY2FuIG9ubHkgeWllbGQgdG8gYSBsaXRlcmFsIHZhbHVlIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWAsIGNhbGwubG9jKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGAke3R5cGV9IG9ubHkgdGFrZXMgYSBzaW5nbGUgcG9zaXRpb25hbCBhcmd1bWVudCAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBjYWxsLmxvYyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWREZWJ1Z2dlclVzYWdlKHN0YXRlbWVudDogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gIGxldCB7IHBhcmFtcywgaGFzaCB9ID0gc3RhdGVtZW50O1xuXG4gIGlmIChoYXNoICYmIGhhc2gucGFpcnMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgZGVidWdnZXIgZG9lcyBub3QgdGFrZSBhbnkgbmFtZWQgYXJndW1lbnRzYCwgc3RhdGVtZW50LmxvYyk7XG4gIH1cblxuICBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBkZWJ1Z2dlciBkb2VzIG5vdCB0YWtlIGFueSBwb3NpdGlvbmFsIGFyZ3VtZW50c2AsIHN0YXRlbWVudC5sb2MpO1xuICB9XG59XG4iXX0= |
@@ -225,3 +225,3 @@ import TemplateVisitor from "./template-visitor"; | ||
} else { | ||
this.opcode('get', expr, 0, expr.parts); | ||
this.opcode('maybeLocal', expr, expr.parts); | ||
} | ||
@@ -412,2 +412,2 @@ } | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9jb21waWxlci9saWIvdGVtcGxhdGUtY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxBQUF3QyxxQkFBTSxBQUFvQixBQUFDO0FBQzFFLE9BQU8sQUFBZ0Msd0JBQU0sQUFBdUIsQUFBQztBQUNyRSxBQUFPLFNBQUUsQUFBSyxBQUFFLGFBQU0sQUFBZSxBQUFDO0FBQ3RDLEFBQU8sU0FBRSxBQUFNLEFBQUUsQUFBTSxBQUFFLGNBQU0sQUFBZSxBQUFDO0FBQy9DLEFBQU8sU0FBTyxBQUFTLFdBQUUsQUFBVyxBQUFFLG1CQUFNLEFBQWlCLEFBQUM7QUFDOUQsQUFBTyxTQUFFLEFBQWdCLEFBQUUsd0JBQU0sQUFBUyxBQUFDO0FBTzNDLHdCQUF3QixBQUFVO0FBQ2hDLEFBQU0sV0FBQyxBQUFLLE1BQUMsQUFBTyxZQUFLLEFBQVMsYUFBSSxDQUFDLEFBQUssTUFBQyxBQUFPLEFBQUMsQUFDdkQ7QUFBQztBQUVELEFBQU0sQUFBQyxBQUFPO0FBaUJaLGdCQUFZLEFBQXVCO0FBTjNCLGFBQVUsYUFBRyxBQUFDLEFBQUM7QUFDZixhQUFXLGNBQWEsQUFBRSxBQUFDO0FBQzNCLGFBQVcsY0FBRyxJQUFJLEFBQUssQUFBZSxBQUFDO0FBQ3ZDLGFBQU8sVUFBVSxBQUFFLEFBQUM7QUFDcEIsYUFBVyxjQUFHLEFBQUssQUFBQztBQUcxQixBQUFJLGFBQUMsQUFBTyxVQUFHLEFBQU8sV0FBSSxBQUFFLEFBQUMsQUFDL0I7QUFBQztBQWxCRCxBQUFNLFdBQUMsQUFBTyxRQUFDLEFBQXVCLFNBQUUsQUFBZ0I7QUFDdEQsWUFBSSxBQUFlLGtCQUFHLElBQUksQUFBZSxBQUFFLEFBQUM7QUFDNUMsQUFBZSx3QkFBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQUM7QUFFM0IsWUFBSSxBQUFRLFdBQUcsSUFB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bEMsY0FBTSxJQUFJLEFBQVcsQUFBQyxZQUE0Qyw4Q0FBRSxBQUFTLFVBQUMsQUFBRyxBQUFDLEFBQUMsQUFDckY7QUFBQztBQUVELEFBQUUsQUFBQyxRQUFDLEFBQU0sT0FBQyxBQUFNLFdBQUssQUFBQyxBQUFDLEdBQUMsQUFBQztBQUN4QixBQUFNLGVBQUMsQUFBUyxBQUFDLEFBQ25CO0FBQUMsQUFBQyxBQUFJLFdBQUMsQUFBQztBQUNOLGNBQU0sSUFBSSxBQUFXLEFBQUMsWUFBaUQsbURBQUUsQUFBUyxVQUFDLEFBQUcsQUFBQyxBQUFDLEFBQzFGO0FBQUMsQUFDSDtBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRlbXBsYXRlVmlzaXRvciwgeyBTeW1ib2xUYWJsZSwgQWN0aW9uIH0gZnJvbSBcIi4vdGVtcGxhdGUtdmlzaXRvclwiO1xuaW1wb3J0IEphdmFTY3JpcHRDb21waWxlciwgeyBUZW1wbGF0ZSB9IGZyb20gXCIuL2phdmFzY3JpcHQtY29tcGlsZXJcIjtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSBcIkBnbGltbWVyL3V0aWxcIjtcbmltcG9ydCB7IGFzc2VydCwgZXhwZWN0IH0gZnJvbSBcIkBnbGltbWVyL3V0aWxcIjtcbmltcG9ydCB7IEFTVCwgaXNMaXRlcmFsLCBTeW50YXhFcnJvciB9IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBnZXRBdHRyTmFtZXNwYWNlIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tIFwiQGdsaW1tZXIvaW50ZXJmYWNlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVPcHRpb25zIHtcbiAgbWV0YTogT3BhcXVlO1xufVxuXG5mdW5jdGlvbiBpc1RydXN0ZWRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gIHJldHVybiB2YWx1ZS5lc2NhcGVkICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLmVzY2FwZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbXBsYXRlQ29tcGlsZXIge1xuICBzdGF0aWMgY29tcGlsZShvcHRpb25zOiBDb21waWxlT3B0aW9ucywgYXN0OiBBU1QuUHJvZ3JhbSk6IFRlbXBsYXRlIHtcbiAgICBsZXQgdGVtcGxhdGVWaXNpdG9yID0gbmV3IFRlbXBsYXRlVmlzaXRvcigpO1xuICAgIHRlbXBsYXRlVmlzaXRvci52aXNpdChhc3QpO1xuXG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IFRlbXBsYXRlQ29tcGlsZXIob3B0aW9ucyk7XG4gICAgbGV0IG9wY29kZXMgPSBjb21waWxlci5wcm9jZXNzKHRlbXBsYXRlVmlzaXRvci5hY3Rpb25zKTtcbiAgICByZXR1cm4gSmF2YVNjcmlwdENvbXBpbGVyLnByb2Nlc3Mob3Bjb2RlcywgYXN0WydzeW1ib2xzJ10pO1xuICB9XG5cbiAgcHJpdmF0ZSBvcHRpb25zOiBDb21waWxlT3B0aW9ucztcbiAgcHJpdmF0ZSB0ZW1wbGF0ZUlkID0gMDtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZUlkczogbnVtYmVyW10gPSBbXTtcbiAgcHJpdmF0ZSBzeW1ib2xTdGFjayA9IG5ldyBTdGFjazxTeW1ib2xUYWJsZT4oKTtcbiAgcHJpdmF0ZSBvcGNvZGVzOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIGluY2x1ZGVNZXRhID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ29tcGlsZU9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB9XG5cbiAgZ2V0IHN5bWJvbHMoKTogU3ltYm9sVGFibGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5zeW1ib2xTdGFjay5jdXJyZW50LCAnRXhwZWN0ZWQgYSBzeW1ib2wgdGFibGUgb24gdGhlIHN0YWNrJyk7XG4gIH1cblxuICBwcm9jZXNzKGFjdGlvbnM6IEFjdGlvbltdKTogQWN0aW9uW10ge1xuICAgIGFjdGlvbnMuZm9yRWFjaCgoW25hbWUsIC4uLmFyZ3NdKSA9PiB7XG4gICAgICBpZiAoIXRoaXNbbmFtZV0pIHsgdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkICR7bmFtZX0gb24gVGVtcGxhdGVDb21waWxlcmApOyB9XG4gICAgICAodGhpc1tuYW1lXSBhcyBhbnkpKC4uLmFyZ3MpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLm9wY29kZXM7XG4gIH1cblxuICBzdGFydFByb2dyYW0ocHJvZ3JhbTogW0FTVC5Qcm9ncmFtXSkge1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucHVzaChwcm9ncmFtWzBdWydzeW1ib2xzJ10pO1xuICAgIHRoaXMub3Bjb2RlKCdzdGFydFByb2dyYW0nLCBwcm9ncmFtLCBwcm9ncmFtKTtcbiAgfVxuXG4gIGVuZFByb2dyYW0oKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wb3AoKTtcbiAgICB0aGlzLm9wY29kZSgnZW5kUHJvZ3JhbScsIG51bGwpO1xuICB9XG5cbiAgc3RhcnRCbG9jayhwcm9ncmFtOiBbQVNULlByb2dyYW1dKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wdXNoKHByb2dyYW1bMF1bJ3N5bWJvbHMnXSk7XG4gICAgdGhpcy50ZW1wbGF0ZUlkKys7XG4gICAgdGhpcy5vcGNvZGUoJ3N0YXJ0QmxvY2snLCBwcm9ncmFtLCBwcm9ncmFtKTtcbiAgfVxuXG4gIGVuZEJsb2NrKCkge1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucG9wKCk7XG4gICAgdGhpcy50ZW1wbGF0ZUlkcy5wdXNoKHRoaXMudGVtcGxhdGVJZCAtIDEpO1xuICAgIHRoaXMub3Bjb2RlKCdlbmRCbG9jaycsIG51bGwpO1xuICB9XG5cbiAgdGV4dChbYWN0aW9uXTogW0FTVC5UZXh0Tm9kZV0pIHtcbiAgICB0aGlzLm9wY29kZSgndGV4dCcsIGFjdGlvbiwgYWN0aW9uLmNoYXJzKTtcbiAgfVxuXG4gIGNvbW1lbnQoW2FjdGlvbl06IFtBU1QuQ29tbWVudFN0YXRlbWVudF0pIHtcbiAgICB0aGlzLm9wY29kZSgnY29tbWVudCcsIGFjdGlvbiwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KFthY3Rpb25dOiBbQVNULkVsZW1lbnROb2RlXSkge1xuICAgIGxldCBhdHRyaWJ1dGVzID0gYWN0aW9uLmF0dHJpYnV0ZXM7XG4gICAgbGV0IGhhc1NwbGF0O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgYXR0ciA9IGF0dHJpYnV0ZXNbaV07XG4gICAgICBpZiAoYXR0ci5uYW1lID09PSAnLi4uYXR0cmlidXRlcycpIHtcbiAgICAgICAgaGFzU3BsYXQgPSBhdHRyO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaGFzU3BsYXQpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdvcGVuU3BsYXR0ZWRFbGVtZW50JywgYWN0aW9uLCBhY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wY29kZSgnb3BlbkVsZW1lbnQnLCBhY3Rpb24sIGFjdGlvbik7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3Rpb24uYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5hdHRyaWJ1dGUoW2FjdGlvbi5hdHRyaWJ1dGVzW2ldXSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3Rpb24ubW9kaWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLm1vZGlmaWVyKFthY3Rpb24ubW9kaWZpZXJzW2ldXSk7XG4gICAgfVxuICAgIHRoaXMub3Bjb2RlKCdmbHVzaEVsZW1lbnQnLCBudWxsKTtcbiAgICB0aGlzLnN5bWJvbFN0YWNrLnB1c2goYWN0aW9uWydzeW1ib2xzJ10pO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KFthY3Rpb25dOiBbQVNULkVsZW1lbnROb2RlXSkge1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucG9wKCk7XG4gICAgdGhpcy5vcGNvZGUoJ2Nsb3NlRWxlbWVudCcsIG51bGwsIGFjdGlvbik7XG4gIH1cblxuICBhdHRyaWJ1dGUoW2FjdGlvbl06IFtBU1QuQXR0ck5vZGVdKSB7XG4gICAgbGV0IHsgbmFtZSwgdmFsdWUgfSA9IGFjdGlvbjtcblxuICAgIGxldCBuYW1lc3BhY2UgPSBnZXRBdHRyTmFtZXNwYWNlKG5hbWUpO1xuXG4gICAgbGV0IGlzU3RhdGljID0gdGhpcy5wcmVwYXJlQXR0cmlidXRlVmFsdWUodmFsdWUpO1xuXG4gICAgaWYgKG5hbWUuY2hhckF0KDApID09PSAnQCcpIHtcbiAgICAgIC8vIEFyZ3VtZW50c1xuICAgICAgaWYgKGlzU3RhdGljKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdzdGF0aWNBcmcnLCBhY3Rpb24sIG5hbWUpO1xuICAgICAgfSBlbHNlIGlmIChhY3Rpb24udmFsdWUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpc1RydXN0aW5nID0gaXNUcnVzdGVkVmFsdWUodmFsdWUpO1xuXG4gICAgICBpZiAoaXNTdGF0aWMgJiYgbmFtZSA9PT0gJy4uLmF0dHJpYnV0ZXMnKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdhdHRyU3BsYXQnLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5hbGxvY2F0ZUJsb2NrKCdhdHRycycpKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNTdGF0aWMpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3N0YXRpY0F0dHInLCBhY3Rpb24sIG5hbWUsIG5hbWVzcGFjZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3RydXN0aW5nQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2R5bmFtaWNBdHRyJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtb2RpZmllcihbYWN0aW9uXTogW0FTVC5FbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnRdKSB7XG4gICAgYXNzZXJ0SXNTaW1wbGVQYXRoKGFjdGlvbi5wYXRoLCBhY3Rpb24ubG9jLCAnbW9kaWZpZXInKTtcblxuICAgIGxldCB7IHBhdGg6IHsgcGFydHMgfSB9ID0gYWN0aW9uO1xuXG4gICAgdGhpcy5wcmVwYXJlSGVscGVyKGFjdGlvbik7XG4gICAgdGhpcy5vcGNvZGUoJ21vZGlmaWVyJywgYWN0aW9uLCBwYXJ0c1swXSk7XG4gIH1cblxuICBtdXN0YWNoZShbYWN0aW9uXTogW0FTVC5NdXN0YWNoZVN0YXRlbWVudF0pIHtcbiAgICBsZXQgeyBwYXRoIH0gPSBhY3Rpb247XG5cbiAgICBpZiAoaXNMaXRlcmFsKHBhdGgpKSB7XG4gICAgICB0aGlzLm11c3RhY2hlRXhwcmVzc2lvbihhY3Rpb24pO1xuICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcsIGFjdGlvbiwgIWFjdGlvbi5lc2NhcGVkKTtcbiAgICB9IGVsc2UgaWYgKGlzWWllbGQocGF0aCkpIHtcbiAgICAgIGxldCB0byA9IGFzc2VydFZhbGlkWWllbGQoYWN0aW9uKTtcbiAgICAgIHRoaXMueWllbGQodG8sIGFjdGlvbik7XG4gICAgfSBlbHNlIGlmIChpc1BhcnRpYWwocGF0aCkpIHtcbiAgICAgIGxldCBwYXJhbXMgPSBhc3NlcnRWYWxpZFBhcnRpYWwoYWN0aW9uKTtcbiAgICAgIHRoaXMucGFydGlhbChwYXJhbXMsIGFjdGlvbik7XG4gICAgfSBlbHNlIGlmIChpc0RlYnVnZ2VyKHBhdGgpKSB7XG4gICAgICBhc3NlcnRWYWxpZERlYnVnZ2VyVXNhZ2UoYWN0aW9uKTtcbiAgICAgIHRoaXMuZGVidWdnZXIoJ2RlYnVnZ2VyJywgYWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tdXN0YWNoZUV4cHJlc3Npb24oYWN0aW9uKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnLCBhY3Rpb24sICFhY3Rpb24uZXNjYXBlZCk7XG4gICAgfVxuICB9XG5cbiAgYmxvY2soW2FjdGlvbi8qLCBpbmRleCwgY291bnQqL106IFtBU1QuQmxvY2tTdGF0ZW1lbnRdKSB7XG4gICAgdGhpcy5wcmVwYXJlSGVscGVyKGFjdGlvbik7XG4gICAgbGV0IHRlbXBsYXRlSWQgPSB0aGlzLnRlbXBsYXRlSWRzLnBvcCgpO1xuICAgIGxldCBpbnZlcnNlSWQgPSBhY3Rpb24uaW52ZXJzZSA9PT0gbnVsbCA/IG51bGwgOiB0aGlzLnRlbXBsYXRlSWRzLnBvcCgpO1xuICAgIHRoaXMub3Bjb2RlKCdibG9jaycsIGFjdGlvbiwgYWN0aW9uLnBhdGgucGFydHNbMF0sIHRlbXBsYXRlSWQsIGludmVyc2VJZCk7XG4gIH1cblxuICAvLy8gSW50ZXJuYWwgYWN0aW9ucywgbm90IGZvdW5kIGluIHRoZSBvcmlnaW5hbCBwcm9jZXNzZWQgYWN0aW9uc1xuXG4gIGFyZyhbcGF0aF06IFtBU1QuUGF0aEV4cHJlc3Npb25dKSB7XG4gICAgbGV0IHsgcGFydHM6IFtoZWFkLCAuLi5yZXN0XSB9ID0gcGF0aDtcbiAgICBsZXQgc3ltYm9sID0gdGhpcy5zeW1ib2xzLmFsbG9jYXRlTmFtZWQoaGVhZCk7XG4gICAgdGhpcy5vcGNvZGUoJ2dldCcsIHBhdGgsIHN5bWJvbCwgcmVzdCk7XG4gIH1cblxuICBtdXN0YWNoZUV4cHJlc3Npb24oZXhwcjogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gICAgbGV0IHsgcGF0aCB9ID0gZXhwcjtcblxuICAgIGlmIChpc0xpdGVyYWwocGF0aCkpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgZXhwciwgcGF0aC52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChpc0J1aWx0SW5IZWxwZXIocGF0aCkpIHtcbiAgICAgIHRoaXMuYnVpbHRJbkhlbHBlcihleHByIGFzIEFTVC5DYWxsKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJnKHBhdGgpKSB7XG4gICAgICB0aGlzLmFyZyhbcGF0aF0pO1xuICAgIH0gZWxzZSBpZiAoaXNIZWxwZXJJbnZvY2F0aW9uKGV4cHIpKSB7XG4gICAgICB0aGlzLnByZXBhcmVIZWxwZXIoZXhwcik7XG4gICAgICB0aGlzLm9wY29kZSgnaGVscGVyJywgZXhwciwgcGF0aC5wYXJ0c1swXSk7XG4gICAgfSBlbHNlIGlmIChwYXRoLnRoaXMpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCAwLCBwYXRoLnBhcnRzKTtcbiAgICB9IGVsc2UgaWYgKGlzTG9jYWwocGF0aCwgdGhpcy5zeW1ib2xzKSkge1xuICAgICAgbGV0IFtoZWFkLCAuLi5wYXJ0c10gPSBwYXRoLnBhcnRzO1xuICAgICAgdGhpcy5vcGNvZGUoJ2dldCcsIGV4cHIsIHRoaXMuc3ltYm9scy5nZXQoaGVhZCksIHBhcnRzKTtcbiAgICB9IGVsc2UgaWYgKGlzU2ltcGxlUGF0aChwYXRoKSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ3Vua25vd24nLCBleHByLCBwYXRoLnBhcnRzWzBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGNvZGUoJ21heWJlTG9jYWwnLCBleHByLCBwYXRoLnBhcnRzKTtcbiAgICB9XG4gIH1cblxuICAvLy8gSW50ZXJuYWwgU3ludGF4XG5cbiAgeWllbGQodG86IHN0cmluZywgYWN0aW9uOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnByZXBhcmVQYXJhbXMoYWN0aW9uLnBhcmFtcyk7XG4gICAgdGhpcy5vcGNvZGUoJ3lpZWxkJywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuYWxsb2NhdGVCbG9jayh0bykpO1xuICB9XG5cbiAgZGVidWdnZXIoX25hbWU6IHN0cmluZywgYWN0aW9uOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLm9wY29kZSgnZGVidWdnZXInLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5nZXRFdmFsSW5mbygpKTtcbiAgfVxuXG4gIGhhc0Jsb2NrKG5hbWU6IHN0cmluZywgYWN0aW9uOiBBU1QuQ2FsbCkge1xuICAgIHRoaXMub3Bjb2RlKCdoYXNCbG9jaycsIGFjdGlvbiwgdGhpcy5zeW1ib2xzLmFsbG9jYXRlQmxvY2sobmFtZSkpO1xuICB9XG5cbiAgaGFzQmxvY2tQYXJhbXMobmFtZTogc3RyaW5nLCBhY3Rpb246IEFTVC5DYWxsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2hhc0Jsb2NrUGFyYW1zJywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuYWxsb2NhdGVCbG9jayhuYW1lKSk7XG4gIH1cblxuICBwYXJ0aWFsKF9wYXJhbXM6IEFTVC5FeHByZXNzaW9uW10sIGFjdGlvbjogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKGFjdGlvbi5wYXJhbXMpO1xuICAgIHRoaXMub3Bjb2RlKCdwYXJ0aWFsJywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuZ2V0RXZhbEluZm8oKSk7XG4gIH1cblxuICBidWlsdEluSGVscGVyKGV4cHI6IEFTVC5DYWxsKSB7XG4gICAgbGV0IHsgcGF0aCB9ID0gZXhwcjtcbiAgICBpZiAoaXNIYXNCbG9jayhwYXRoKSkge1xuICAgICAgbGV0IG5hbWUgPSBhc3NlcnRWYWxpZEhhc0Jsb2NrVXNhZ2UoZXhwci5wYXRoLm9yaWdpbmFsLCBleHByKTtcbiAgICAgIHRoaXMuaGFzQmxvY2sobmFtZSwgZXhwcik7XG4gICAgfSBlbHNlIGlmIChpc0hhc0Jsb2NrUGFyYW1zKHBhdGgpKSB7XG4gICAgICBsZXQgbmFtZSA9IGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZShleHByLnBhdGgub3JpZ2luYWwsIGV4cHIpO1xuICAgICAgdGhpcy5oYXNCbG9ja1BhcmFtcyhuYW1lLCBleHByKTtcbiAgICB9XG4gIH1cblxuICAvLy8gRXhwcmVzc2lvbnMsIGludm9rZWQgcmVjdXJzaXZlbHkgZnJvbSBwcmVwYXJlUGFyYW1zIGFuZCBwcmVwYXJlSGFzaFxuXG4gIFN1YkV4cHJlc3Npb24oZXhwcjogQVNULlN1YkV4cHJlc3Npb24pIHtcbiAgICBpZiAoaXNCdWlsdEluSGVscGVyKGV4cHIucGF0aCkpIHtcbiAgICAgIHRoaXMuYnVpbHRJbkhlbHBlcihleHByKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmVwYXJlSGVscGVyKGV4cHIpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2hlbHBlcicsIGV4cHIsIGV4cHIucGF0aC5wYXJ0c1swXSk7XG4gICAgfVxuICB9XG5cbiAgUGF0aEV4cHJlc3Npb24oZXhwcjogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gICAgaWYgKGV4cHIuZGF0YSkge1xuICAgICAgdGhpcy5hcmcoW2V4cHJdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHsgc3ltYm9scyB9ID0gdGhpcztcbiAgICAgIGxldCBbaGVhZF0gPSBleHByLnBhcnRzO1xuXG4gICAgICBpZiAoZXhwci50aGlzKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCAwLCBleHByLnBhcnRzKTtcbiAgICAgIH0gZWxzZSAgaWYgKHN5bWJvbHMuaGFzKGhlYWQpKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCBzeW1ib2xzLmdldChoZWFkKSwgZXhwci5wYXJ0cy5zbGljZSgxKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wY29kZSgnZ2V0JywgZXhwciwgMCwgZXhwci5wYXJ0cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgU3RyaW5nTGl0ZXJhbChhY3Rpb246IEFTVC5TdHJpbmdMaXRlcmFsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgQm9vbGVhbkxpdGVyYWwoYWN0aW9uOiBBU1QuQm9vbGVhbkxpdGVyYWwpIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBOdW1iZXJMaXRlcmFsKGFjdGlvbjogQVNULk51bWJlckxpdGVyYWwpIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBOdWxsTGl0ZXJhbChhY3Rpb246IEFTVC5OdWxsTGl0ZXJhbCkge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIFVuZGVmaW5lZExpdGVyYWwoYWN0aW9uOiBBU1QuVW5kZWZpbmVkTGl0ZXJhbCkge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIC8vLyBVdGlsaXRpZXNcblxuICBvcGNvZGUobmFtZTogYW55LCBhY3Rpb246IGFueSwgLi4uYXJnczogYW55W10pIHtcbiAgICBsZXQgb3Bjb2RlID0gW25hbWUsIC4uLmFyZ3NdO1xuICAgIGlmICh0aGlzLmluY2x1ZGVNZXRhICYmIGFjdGlvbikge1xuICAgICAgb3Bjb2RlLnB1c2godGhpcy5tZXRhKGFjdGlvbikpO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2Rlcy5wdXNoKG9wY29kZSk7XG4gIH1cblxuICBwcmVwYXJlSGVscGVyKGV4cHI6IEFTVC5DYWxsKSB7XG4gICAgYXNzZXJ0SXNTaW1wbGVQYXRoKGV4cHIucGF0aCwgZXhwci5sb2MsICdoZWxwZXInKTtcblxuICAgIGxldCB7IHBhcmFtcywgaGFzaCB9ID0gZXhwcjtcblxuICAgIHRoaXMucHJlcGFyZUhhc2goaGFzaCk7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKHBhcmFtcyk7XG4gIH1cblxuICBwcmVwYXJlUGFyYW1zKHBhcmFtczogQVNULkV4cHJlc3Npb25bXSkge1xuICAgIGlmICghcGFyYW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gcGFyYW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgcGFyYW0gPSBwYXJhbXNbaV07XG5cbiAgICAgIGFzc2VydCh0aGlzW3BhcmFtLnR5cGVdLCBgVW5pbXBsZW1lbnRlZCAke3BhcmFtLnR5cGV9IG9uIFRlbXBsYXRlQ29tcGlsZXJgKTtcbiAgICAgICh0aGlzW3BhcmFtLnR5cGVdIGFzIGFueSkocGFyYW0pO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlQXJyYXknLCBudWxsLCBwYXJhbXMubGVuZ3RoKTtcbiAgfVxuXG4gIHByZXBhcmVIYXNoKGhhc2g6IEFTVC5IYXNoKSB7XG4gICAgbGV0IHBhaXJzID0gaGFzaC5wYWlycztcblxuICAgIGlmICghcGFpcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBwYWlycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IHsga2V5LCB2YWx1ZSB9ID0gcGFpcnNbaV07XG5cbiAgICAgIGFzc2VydCh0aGlzW3ZhbHVlLnR5cGVdLCBgVW5pbXBsZW1lbnRlZCAke3ZhbHVlLnR5cGV9IG9uIFRlbXBsYXRlQ29tcGlsZXJgKTtcbiAgICAgICh0aGlzW3ZhbHVlLnR5cGVdIGFzIGFueSkodmFsdWUpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBrZXkpO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlT2JqZWN0JywgbnVsbCwgcGFpcnMubGVuZ3RoKTtcbiAgfVxuXG4gIHByZXBhcmVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZTogQVNULkF0dHJOb2RlWyd2YWx1ZSddKSB7XG4gICAgLy8gcmV0dXJucyB0aGUgc3RhdGljIHZhbHVlIGlmIHRoZSB2YWx1ZSBpcyBzdGF0aWNcblxuICAgIHN3aXRjaCAodmFsdWUudHlwZSkge1xuICAgICAgY2FzZSAnVGV4dE5vZGUnOlxuICAgICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIHZhbHVlLCB2YWx1ZS5jaGFycyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnTXVzdGFjaGVTdGF0ZW1lbnQnOlxuICAgICAgICB0aGlzLmF0dHJpYnV0ZU11c3RhY2hlKFt2YWx1ZV0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlICdDb25jYXRTdGF0ZW1lbnQnOlxuICAgICAgICB0aGlzLnByZXBhcmVDb25jYXRQYXJ0cyh2YWx1ZS5wYXJ0cyk7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdjb25jYXQnLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcmVwYXJlQ29uY2F0UGFydHMocGFydHM6IEFTVC5Db25jYXRTdGF0ZW1lbnRbJ3BhcnRzJ10pIHtcbiAgICBmb3IgKGxldCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBwYXJ0ID0gcGFydHNbaV07XG5cbiAgICAgIGlmIChwYXJ0LnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVNdXN0YWNoZShbcGFydF0pO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0LnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBwYXJ0LmNoYXJzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgncHJlcGFyZUFycmF5JywgbnVsbCwgcGFydHMubGVuZ3RoKTtcbiAgfVxuXG4gIGF0dHJpYnV0ZU11c3RhY2hlKFthY3Rpb25dOiBbQVNULk11c3RhY2hlU3RhdGVtZW50XSkge1xuICAgIHRoaXMubXVzdGFjaGVFeHByZXNzaW9uKGFjdGlvbik7XG4gIH1cblxuICBtZXRhKG5vZGU6IEFTVC5CYXNlTm9kZSkge1xuICAgIGxldCBsb2MgPSBub2RlLmxvYztcbiAgICBpZiAoIWxvYykgeyByZXR1cm4gW107IH1cblxuICAgIGxldCB7IHNvdXJjZSwgc3RhcnQsIGVuZCB9ID0gbG9jO1xuICAgIHJldHVybiBbICdsb2MnLCBbc291cmNlIHx8IG51bGwsIFtzdGFydC5saW5lLCBzdGFydC5jb2x1bW5dLCBbZW5kLmxpbmUsIGVuZC5jb2x1bW5dXSBdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzSGVscGVySW52b2NhdGlvbihtdXN0YWNoZTogQVNULk11c3RhY2hlU3RhdGVtZW50KTogbXVzdGFjaGUgaXMgQVNULk11c3RhY2hlU3RhdGVtZW50ICYgeyBwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24gfSB7XG4gIHJldHVybiAobXVzdGFjaGUucGFyYW1zICYmIG11c3RhY2hlLnBhcmFtcy5sZW5ndGggPiAwKSB8fFxuICAgIChtdXN0YWNoZS5oYXNoICYmIG11c3RhY2hlLmhhc2gucGFpcnMubGVuZ3RoID4gMCk7XG59XG5cbmZ1bmN0aW9uIGlzU2ltcGxlUGF0aCh7IHBhcnRzIH06IEFTVC5QYXRoRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gcGFydHMubGVuZ3RoID09PSAxO1xufVxuXG5mdW5jdGlvbiBpc0xvY2FsKHsgcGFydHMgfTogQVNULlBhdGhFeHByZXNzaW9uLCBzeW1ib2xzOiBTeW1ib2xUYWJsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3ltYm9scyAmJiAvKiBwYXJ0cy5sZW5ndGggJiYgKi8gc3ltYm9scy5oYXMocGFydHNbMF0pO1xufVxuXG5mdW5jdGlvbiBpc1lpZWxkKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ3lpZWxkJztcbn1cblxuZnVuY3Rpb24gaXNQYXJ0aWFsKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ3BhcnRpYWwnO1xufVxuXG5mdW5jdGlvbiBpc0RlYnVnZ2VyKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ2RlYnVnZ2VyJztcbn1cblxuZnVuY3Rpb24gaXNIYXNCbG9jayhwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24pIHtcbiAgcmV0dXJuIHBhdGgub3JpZ2luYWwgPT09ICdoYXMtYmxvY2snO1xufVxuXG5mdW5jdGlvbiBpc0hhc0Jsb2NrUGFyYW1zKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ2hhcy1ibG9jay1wYXJhbXMnO1xufVxuXG5mdW5jdGlvbiBpc0J1aWx0SW5IZWxwZXIocGF0aDogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gIHJldHVybiBpc0hhc0Jsb2NrKHBhdGgpIHx8IGlzSGFzQmxvY2tQYXJhbXMocGF0aCk7XG59XG5cbmZ1bmN0aW9uIGlzQXJnKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gISFwYXRoWydkYXRhJ107XG59XG5cbmZ1bmN0aW9uIGFzc2VydElzU2ltcGxlUGF0aChwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24sIGxvYzogQVNULlNvdXJjZUxvY2F0aW9uLCBjb250ZXh0OiBzdHJpbmcpIHtcbiAgaWYgKCFpc1NpbXBsZVBhdGgocGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYFxcYCR7cGF0aC5vcmlnaW5hbH1cXGAgaXMgbm90IGEgdmFsaWQgbmFtZSBmb3IgYSAke2NvbnRleHR9IG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0uYCwgcGF0aC5sb2MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkWWllbGQoc3RhdGVtZW50OiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpOiBzdHJpbmcge1xuICBsZXQgeyBwYWlycyB9ID0gc3RhdGVtZW50Lmhhc2g7XG5cbiAgaWYgKChwYWlycy5sZW5ndGggPT09IDEgJiYgcGFpcnNbMF0ua2V5ICE9PSAndG8nKSB8fCBwYWlycy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGB5aWVsZCBvbmx5IHRha2VzIGEgc2luZ2xlIG5hbWVkIGFyZ3VtZW50OiAndG8nYCwgc3RhdGVtZW50LmxvYyk7XG4gIH0gZWxzZSBpZiAocGFpcnMubGVuZ3RoID09PSAxICYmIHBhaXJzWzBdLnZhbHVlLnR5cGUgIT09ICdTdHJpbmdMaXRlcmFsJykge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgeW91IGNhbiBvbmx5IHlpZWxkIHRvIGEgbGl0ZXJhbCB2YWx1ZWAsIHN0YXRlbWVudC5sb2MpO1xuICB9IGVsc2UgaWYgKHBhaXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChwYWlyc1swXS52YWx1ZSBhcyBBU1QuU3RyaW5nTGl0ZXJhbCkudmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWRQYXJ0aWFsKHN0YXRlbWVudDogQVNULk11c3RhY2hlU3RhdGVtZW50KSAvKiA6IGV4cHIgKi8ge1xuICBsZXQgeyBwYXJhbXMsIGhhc2gsIGVzY2FwZWQsIGxvYyB9ID0gc3RhdGVtZW50O1xuXG4gIGlmIChwYXJhbXMgJiYgcGFyYW1zLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgUGFydGlhbCBmb3VuZCB3aXRoIG5vIGFyZ3VtZW50cy4gWW91IG11c3Qgc3BlY2lmeSBhIHRlbXBsYXRlIG5hbWUuIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWAsIHN0YXRlbWVudC5sb2MpO1xuICB9IGVsc2UgaWYgKGhhc2ggJiYgaGFzaC5wYWlycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBwYXJ0aWFsIGRvZXMgbm90IHRha2UgYW55IG5hbWVkIGFyZ3VtZW50cyAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfSBlbHNlIGlmICghZXNjYXBlZCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihge3t7cGFydGlhbCAuLi59fX0gaXMgbm90IHN1cHBvcnRlZCwgcGxlYXNlIHVzZSB7e3BhcnRpYWwgLi4ufX0gaW5zdGVhZCAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZSh0eXBlOiBzdHJpbmcsIGNhbGw6IEFTVC5DYWxsKTogc3RyaW5nIHtcbiAgbGV0IHsgcGFyYW1zLCBoYXNoLCBsb2MgfSA9IGNhbGw7XG5cbiAgaWYgKGhhc2ggJiYgaGFzaC5wYWlycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGAke3R5cGV9IGRvZXMgbm90IHRha2UgYW55IG5hbWVkIGFyZ3VtZW50c2AsIGNhbGwubG9jKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdkZWZhdWx0JztcbiAgfSBlbHNlIGlmIChwYXJhbXMubGVuZ3RoID09PSAxKSB7XG4gICAgbGV0IHBhcmFtID0gcGFyYW1zWzBdO1xuICAgIGlmIChwYXJhbS50eXBlID09PSAnU3RyaW5nTGl0ZXJhbCcpIHtcbiAgICAgIHJldHVybiBwYXJhbS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGB5b3UgY2FuIG9ubHkgeWllbGQgdG8gYSBsaXRlcmFsIHZhbHVlIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWAsIGNhbGwubG9jKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGAke3R5cGV9IG9ubHkgdGFrZXMgYSBzaW5nbGUgcG9zaXRpb25hbCBhcmd1bWVudCAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBjYWxsLmxvYyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWREZWJ1Z2dlclVzYWdlKHN0YXRlbWVudDogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gIGxldCB7IHBhcmFtcywgaGFzaCB9ID0gc3RhdGVtZW50O1xuXG4gIGlmIChoYXNoICYmIGhhc2gucGFpcnMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgZGVidWdnZXIgZG9lcyBub3QgdGFrZSBhbnkgbmFtZWQgYXJndW1lbnRzYCwgc3RhdGVtZW50LmxvYyk7XG4gIH1cblxuICBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBkZWJ1Z2dlciBkb2VzIG5vdCB0YWtlIGFueSBwb3NpdGlvbmFsIGFyZ3VtZW50c2AsIHN0YXRlbWVudC5sb2MpO1xuICB9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9jb21waWxlci9saWIvdGVtcGxhdGUtY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxBQUF3QyxxQkFBTSxBQUFvQixBQUFDO0FBQzFFLE9BQU8sQUFBZ0Msd0JBQU0sQUFBdUIsQUFBQztBQUNyRSxBQUFPLFNBQUUsQUFBSyxBQUFFLGFBQU0sQUFBZSxBQUFDO0FBQ3RDLEFBQU8sU0FBRSxBQUFNLEFBQUUsQUFBTSxBQUFFLGNBQU0sQUFBZSxBQUFDO0FBQy9DLEFBQU8sU0FBTyxBQUFTLFdBQUUsQUFBVyxBQUFFLG1CQUFNLEFBQWlCLEFBQUM7QUFDOUQsQUFBTyxTQUFFLEFBQWdCLEFBQUUsd0JBQU0sQUFBUyxBQUFDO0FBTzNDLHdCQUF3QixBQUFVO0FBQ2hDLEFBQU0sV0FBQyxBQUFLLE1BQUMsQUFBTyxZQUFLLEFBQVMsYUFBSSxDQUFDLEFBQUssTUFBQyxBQUFPLEFBQUMsQUFDdkQ7QUFBQztBQUVELEFBQU0sQUFBQyxBQUFPO0FBaUJaLGdCQUFZLEFBQXVCO0FBTjNCLGFBQVUsYUFBRyxBQUFDLEFBQUM7QUFDZixhQUFXLGNBQWEsQUFBRSxBQUFDO0FBQzNCLGFBQVcsY0FBRyxJQUFJLEFBQUssQUFBZSxBQUFDO0FBQ3ZDLGFBQU8sVUFBVSxBQUFFLEFBQUM7QUFDcEIsYUFBVyxjQUFHLEFBQUssQUFBQztBQUcxQixBQUFJLGFBQUMsQUFBTyxVQUFHLEFBQU8sV0FBSSxBQUFFLEFBQUMsQUFDL0I7QUFBQztBQWxCRCxBQUFNLFdBQUMsQUFBTyxRQUFDLEFBQXVCLFNBQUUsQUFBZ0I7QUFDdEQsWUFBSSxBQUFlLGtCQUFHLElBQUksQUFBZSxBQUFFLEFBQUM7QUFDNUMsQUFBZSx3QkFBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQUM7QUFFM0IsWUFBSSxBQUFRLFdBQUcsSUFB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QUksQUFBVyxBQUFDLFlBQTRDLDhDQUFFLEFBQVMsVUFBQyxBQUFHLEFBQUMsQUFBQyxBQUNyRjtBQUFDO0FBRUQsQUFBRSxBQUFDLFFBQUMsQUFBTSxPQUFDLEFBQU0sV0FBSyxBQUFDLEFBQUMsR0FBQyxBQUFDO0FBQ3hCLEFBQU0sZUFBQyxBQUFTLEFBQUMsQUFDbkI7QUFBQyxBQUFDLEFBQUksV0FBQyxBQUFDO0FBQ04sY0FBTSxJQUFJLEFBQVcsQUFBQyxZQUFpRCxtREFBRSxBQUFTLFVBQUMsQUFBRyxBQUFDLEFBQUMsQUFDMUY7QUFBQyxBQUNIO0FBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVGVtcGxhdGVWaXNpdG9yLCB7IFN5bWJvbFRhYmxlLCBBY3Rpb24gfSBmcm9tIFwiLi90ZW1wbGF0ZS12aXNpdG9yXCI7XG5pbXBvcnQgSmF2YVNjcmlwdENvbXBpbGVyLCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4vamF2YXNjcmlwdC1jb21waWxlclwiO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgYXNzZXJ0LCBleHBlY3QgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgQVNULCBpc0xpdGVyYWwsIFN5bnRheEVycm9yIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IGdldEF0dHJOYW1lc3BhY2UgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IE9wYXF1ZSB9IGZyb20gXCJAZ2xpbW1lci9pbnRlcmZhY2VzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZU9wdGlvbnMge1xuICBtZXRhOiBPcGFxdWU7XG59XG5cbmZ1bmN0aW9uIGlzVHJ1c3RlZFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgcmV0dXJuIHZhbHVlLmVzY2FwZWQgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUuZXNjYXBlZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVtcGxhdGVDb21waWxlciB7XG4gIHN0YXRpYyBjb21waWxlKG9wdGlvbnM6IENvbXBpbGVPcHRpb25zLCBhc3Q6IEFTVC5Qcm9ncmFtKTogVGVtcGxhdGUge1xuICAgIGxldCB0ZW1wbGF0ZVZpc2l0b3IgPSBuZXcgVGVtcGxhdGVWaXNpdG9yKCk7XG4gICAgdGVtcGxhdGVWaXNpdG9yLnZpc2l0KGFzdCk7XG5cbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgVGVtcGxhdGVDb21waWxlcihvcHRpb25zKTtcbiAgICBsZXQgb3Bjb2RlcyA9IGNvbXBpbGVyLnByb2Nlc3ModGVtcGxhdGVWaXNpdG9yLmFjdGlvbnMpO1xuICAgIHJldHVybiBKYXZhU2NyaXB0Q29tcGlsZXIucHJvY2VzcyhvcGNvZGVzLCBhc3RbJ3N5bWJvbHMnXSk7XG4gIH1cblxuICBwcml2YXRlIG9wdGlvbnM6IENvbXBpbGVPcHRpb25zO1xuICBwcml2YXRlIHRlbXBsYXRlSWQgPSAwO1xuICBwcml2YXRlIHRlbXBsYXRlSWRzOiBudW1iZXJbXSA9IFtdO1xuICBwcml2YXRlIHN5bWJvbFN0YWNrID0gbmV3IFN0YWNrPFN5bWJvbFRhYmxlPigpO1xuICBwcml2YXRlIG9wY29kZXM6IGFueVtdID0gW107XG4gIHByaXZhdGUgaW5jbHVkZU1ldGEgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDb21waWxlT3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIH1cblxuICBnZXQgc3ltYm9scygpOiBTeW1ib2xUYWJsZSB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLnN5bWJvbFN0YWNrLmN1cnJlbnQsICdFeHBlY3RlZCBhIHN5bWJvbCB0YWJsZSBvbiB0aGUgc3RhY2snKTtcbiAgfVxuXG4gIHByb2Nlc3MoYWN0aW9uczogQWN0aW9uW10pOiBBY3Rpb25bXSB7XG4gICAgYWN0aW9ucy5mb3JFYWNoKChbbmFtZSwgLi4uYXJnc10pID0+IHtcbiAgICAgIGlmICghdGhpc1tuYW1lXSkgeyB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQgJHtuYW1lfSBvbiBUZW1wbGF0ZUNvbXBpbGVyYCk7IH1cbiAgICAgICh0aGlzW25hbWVdIGFzIGFueSkoLi4uYXJncyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMub3Bjb2RlcztcbiAgfVxuXG4gIHN0YXJ0UHJvZ3JhbShwcm9ncmFtOiBbQVNULlByb2dyYW1dKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wdXNoKHByb2dyYW1bMF1bJ3N5bWJvbHMnXSk7XG4gICAgdGhpcy5vcGNvZGUoJ3N0YXJ0UHJvZ3JhbScsIHByb2dyYW0sIHByb2dyYW0pO1xuICB9XG5cbiAgZW5kUHJvZ3JhbSgpIHtcbiAgICB0aGlzLnN5bWJvbFN0YWNrLnBvcCgpO1xuICAgIHRoaXMub3Bjb2RlKCdlbmRQcm9ncmFtJywgbnVsbCk7XG4gIH1cblxuICBzdGFydEJsb2NrKHByb2dyYW06IFtBU1QuUHJvZ3JhbV0pIHtcbiAgICB0aGlzLnN5bWJvbFN0YWNrLnB1c2gocHJvZ3JhbVswXVsnc3ltYm9scyddKTtcbiAgICB0aGlzLnRlbXBsYXRlSWQrKztcbiAgICB0aGlzLm9wY29kZSgnc3RhcnRCbG9jaycsIHByb2dyYW0sIHByb2dyYW0pO1xuICB9XG5cbiAgZW5kQmxvY2soKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wb3AoKTtcbiAgICB0aGlzLnRlbXBsYXRlSWRzLnB1c2godGhpcy50ZW1wbGF0ZUlkIC0gMSk7XG4gICAgdGhpcy5vcGNvZGUoJ2VuZEJsb2NrJywgbnVsbCk7XG4gIH1cblxuICB0ZXh0KFthY3Rpb25dOiBbQVNULlRleHROb2RlXSkge1xuICAgIHRoaXMub3Bjb2RlKCd0ZXh0JywgYWN0aW9uLCBhY3Rpb24uY2hhcnMpO1xuICB9XG5cbiAgY29tbWVudChbYWN0aW9uXTogW0FTVC5Db21tZW50U3RhdGVtZW50XSkge1xuICAgIHRoaXMub3Bjb2RlKCdjb21tZW50JywgYWN0aW9uLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQoW2FjdGlvbl06IFtBU1QuRWxlbWVudE5vZGVdKSB7XG4gICAgbGV0IGF0dHJpYnV0ZXMgPSBhY3Rpb24uYXR0cmlidXRlcztcbiAgICBsZXQgaGFzU3BsYXQ7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBhdHRyID0gYXR0cmlidXRlc1tpXTtcbiAgICAgIGlmIChhdHRyLm5hbWUgPT09ICcuLi5hdHRyaWJ1dGVzJykge1xuICAgICAgICBoYXNTcGxhdCA9IGF0dHI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChoYXNTcGxhdCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ29wZW5TcGxhdHRlZEVsZW1lbnQnLCBhY3Rpb24sIGFjdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdvcGVuRWxlbWVudCcsIGFjdGlvbiwgYWN0aW9uKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGlvbi5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZShbYWN0aW9uLmF0dHJpYnV0ZXNbaV1dKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGlvbi5tb2RpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMubW9kaWZpZXIoW2FjdGlvbi5tb2RpZmllcnNbaV1dKTtcbiAgICB9XG4gICAgdGhpcy5vcGNvZGUoJ2ZsdXNoRWxlbWVudCcsIG51bGwpO1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucHVzaChhY3Rpb25bJ3N5bWJvbHMnXSk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoW2FjdGlvbl06IFtBU1QuRWxlbWVudE5vZGVdKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wb3AoKTtcbiAgICB0aGlzLm9wY29kZSgnY2xvc2VFbGVtZW50JywgbnVsbCwgYWN0aW9uKTtcbiAgfVxuXG4gIGF0dHJpYnV0ZShbYWN0aW9uXTogW0FTVC5BdHRyTm9kZV0pIHtcbiAgICBsZXQgeyBuYW1lLCB2YWx1ZSB9ID0gYWN0aW9uO1xuXG4gICAgbGV0IG5hbWVzcGFjZSA9IGdldEF0dHJOYW1lc3BhY2UobmFtZSk7XG5cbiAgICBsZXQgaXNTdGF0aWMgPSB0aGlzLnByZXBhcmVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09ICdAJykge1xuICAgICAgLy8gQXJndW1lbnRzXG4gICAgICBpZiAoaXNTdGF0aWMpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3N0YXRpY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9IGVsc2UgaWYgKGFjdGlvbi52YWx1ZS50eXBlID09PSAnTXVzdGFjaGVTdGF0ZW1lbnQnKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXJnJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXJnJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGlzVHJ1c3RpbmcgPSBpc1RydXN0ZWRWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgIGlmIChpc1N0YXRpYyAmJiBuYW1lID09PSAnLi4uYXR0cmlidXRlcycpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2F0dHJTcGxhdCcsIGFjdGlvbiwgdGhpcy5zeW1ib2xzLmFsbG9jYXRlQmxvY2soJ2F0dHJzJykpO1xuICAgICAgfSBlbHNlIGlmIChpc1N0YXRpYykge1xuICAgICAgICB0aGlzLm9wY29kZSgnc3RhdGljQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNUcnVzdGluZykge1xuICAgICAgICB0aGlzLm9wY29kZSgndHJ1c3RpbmdBdHRyJywgYWN0aW9uLCBuYW1lLCBuYW1lc3BhY2UpO1xuICAgICAgfSBlbHNlIGlmIChhY3Rpb24udmFsdWUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0F0dHInLCBhY3Rpb24sIG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2R5bmFtaWNBdHRyJywgYWN0aW9uLCBuYW1lLCBuYW1lc3BhY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1vZGlmaWVyKFthY3Rpb25dOiBbQVNULkVsZW1lbnRNb2RpZmllclN0YXRlbWVudF0pIHtcbiAgICBhc3NlcnRJc1NpbXBsZVBhdGgoYWN0aW9uLnBhdGgsIGFjdGlvbi5sb2MsICdtb2RpZmllcicpO1xuXG4gICAgbGV0IHsgcGF0aDogeyBwYXJ0cyB9IH0gPSBhY3Rpb247XG5cbiAgICB0aGlzLnByZXBhcmVIZWxwZXIoYWN0aW9uKTtcbiAgICB0aGlzLm9wY29kZSgnbW9kaWZpZXInLCBhY3Rpb24sIHBhcnRzWzBdKTtcbiAgfVxuXG4gIG11c3RhY2hlKFthY3Rpb25dOiBbQVNULk11c3RhY2hlU3RhdGVtZW50XSkge1xuICAgIGxldCB7IHBhdGggfSA9IGFjdGlvbjtcblxuICAgIGlmIChpc0xpdGVyYWwocGF0aCkpIHtcbiAgICAgIHRoaXMubXVzdGFjaGVFeHByZXNzaW9uKGFjdGlvbik7XG4gICAgICB0aGlzLm9wY29kZSgnYXBwZW5kJywgYWN0aW9uLCAhYWN0aW9uLmVzY2FwZWQpO1xuICAgIH0gZWxzZSBpZiAoaXNZaWVsZChwYXRoKSkge1xuICAgICAgbGV0IHRvID0gYXNzZXJ0VmFsaWRZaWVsZChhY3Rpb24pO1xuICAgICAgdGhpcy55aWVsZCh0bywgYWN0aW9uKTtcbiAgICB9IGVsc2UgaWYgKGlzUGFydGlhbChwYXRoKSkge1xuICAgICAgbGV0IHBhcmFtcyA9IGFzc2VydFZhbGlkUGFydGlhbChhY3Rpb24pO1xuICAgICAgdGhpcy5wYXJ0aWFsKHBhcmFtcywgYWN0aW9uKTtcbiAgICB9IGVsc2UgaWYgKGlzRGVidWdnZXIocGF0aCkpIHtcbiAgICAgIGFzc2VydFZhbGlkRGVidWdnZXJVc2FnZShhY3Rpb24pO1xuICAgICAgdGhpcy5kZWJ1Z2dlcignZGVidWdnZXInLCBhY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm11c3RhY2hlRXhwcmVzc2lvbihhY3Rpb24pO1xuICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcsIGFjdGlvbiwgIWFjdGlvbi5lc2NhcGVkKTtcbiAgICB9XG4gIH1cblxuICBibG9jayhbYWN0aW9uLyosIGluZGV4LCBjb3VudCovXTogW0FTVC5CbG9ja1N0YXRlbWVudF0pIHtcbiAgICB0aGlzLnByZXBhcmVIZWxwZXIoYWN0aW9uKTtcbiAgICBsZXQgdGVtcGxhdGVJZCA9IHRoaXMudGVtcGxhdGVJZHMucG9wKCk7XG4gICAgbGV0IGludmVyc2VJZCA9IGFjdGlvbi5pbnZlcnNlID09PSBudWxsID8gbnVsbCA6IHRoaXMudGVtcGxhdGVJZHMucG9wKCk7XG4gICAgdGhpcy5vcGNvZGUoJ2Jsb2NrJywgYWN0aW9uLCBhY3Rpb24ucGF0aC5wYXJ0c1swXSwgdGVtcGxhdGVJZCwgaW52ZXJzZUlkKTtcbiAgfVxuXG4gIC8vLyBJbnRlcm5hbCBhY3Rpb25zLCBub3QgZm91bmQgaW4gdGhlIG9yaWdpbmFsIHByb2Nlc3NlZCBhY3Rpb25zXG5cbiAgYXJnKFtwYXRoXTogW0FTVC5QYXRoRXhwcmVzc2lvbl0pIHtcbiAgICBsZXQgeyBwYXJ0czogW2hlYWQsIC4uLnJlc3RdIH0gPSBwYXRoO1xuICAgIGxldCBzeW1ib2wgPSB0aGlzLnN5bWJvbHMuYWxsb2NhdGVOYW1lZChoZWFkKTtcbiAgICB0aGlzLm9wY29kZSgnZ2V0JywgcGF0aCwgc3ltYm9sLCByZXN0KTtcbiAgfVxuXG4gIG11c3RhY2hlRXhwcmVzc2lvbihleHByOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgICBsZXQgeyBwYXRoIH0gPSBleHByO1xuXG4gICAgaWYgKGlzTGl0ZXJhbChwYXRoKSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBleHByLCBwYXRoLnZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKGlzQnVpbHRJbkhlbHBlcihwYXRoKSkge1xuICAgICAgdGhpcy5idWlsdEluSGVscGVyKGV4cHIgYXMgQVNULkNhbGwpO1xuICAgIH0gZWxzZSBpZiAoaXNBcmcocGF0aCkpIHtcbiAgICAgIHRoaXMuYXJnKFtwYXRoXSk7XG4gICAgfSBlbHNlIGlmIChpc0hlbHBlckludm9jYXRpb24oZXhwcikpIHtcbiAgICAgIHRoaXMucHJlcGFyZUhlbHBlcihleHByKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdoZWxwZXInLCBleHByLCBwYXRoLnBhcnRzWzBdKTtcbiAgICB9IGVsc2UgaWYgKHBhdGgudGhpcykge1xuICAgICAgdGhpcy5vcGNvZGUoJ2dldCcsIGV4cHIsIDAsIHBhdGgucGFydHMpO1xuICAgIH0gZWxzZSBpZiAoaXNMb2NhbChwYXRoLCB0aGlzLnN5bWJvbHMpKSB7XG4gICAgICBsZXQgW2hlYWQsIC4uLnBhcnRzXSA9IHBhdGgucGFydHM7XG4gICAgICB0aGlzLm9wY29kZSgnZ2V0JywgZXhwciwgdGhpcy5zeW1ib2xzLmdldChoZWFkKSwgcGFydHMpO1xuICAgIH0gZWxzZSBpZiAoaXNTaW1wbGVQYXRoKHBhdGgpKSB7XG4gICAgICB0aGlzLm9wY29kZSgndW5rbm93bicsIGV4cHIsIHBhdGgucGFydHNbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wY29kZSgnbWF5YmVMb2NhbCcsIGV4cHIsIHBhdGgucGFydHMpO1xuICAgIH1cbiAgfVxuXG4gIC8vLyBJbnRlcm5hbCBTeW50YXhcblxuICB5aWVsZCh0bzogc3RyaW5nLCBhY3Rpb246IEFTVC5NdXN0YWNoZVN0YXRlbWVudCkge1xuICAgIHRoaXMucHJlcGFyZVBhcmFtcyhhY3Rpb24ucGFyYW1zKTtcbiAgICB0aGlzLm9wY29kZSgneWllbGQnLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5hbGxvY2F0ZUJsb2NrKHRvKSk7XG4gIH1cblxuICBkZWJ1Z2dlcihfbmFtZTogc3RyaW5nLCBhY3Rpb246IEFTVC5NdXN0YWNoZVN0YXRlbWVudCkge1xuICAgIHRoaXMub3Bjb2RlKCdkZWJ1Z2dlcicsIGFjdGlvbiwgdGhpcy5zeW1ib2xzLmdldEV2YWxJbmZvKCkpO1xuICB9XG5cbiAgaGFzQmxvY2sobmFtZTogc3RyaW5nLCBhY3Rpb246IEFTVC5DYWxsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2hhc0Jsb2NrJywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuYWxsb2NhdGVCbG9jayhuYW1lKSk7XG4gIH1cblxuICBoYXNCbG9ja1BhcmFtcyhuYW1lOiBzdHJpbmcsIGFjdGlvbjogQVNULkNhbGwpIHtcbiAgICB0aGlzLm9wY29kZSgnaGFzQmxvY2tQYXJhbXMnLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5hbGxvY2F0ZUJsb2NrKG5hbWUpKTtcbiAgfVxuXG4gIHBhcnRpYWwoX3BhcmFtczogQVNULkV4cHJlc3Npb25bXSwgYWN0aW9uOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnByZXBhcmVQYXJhbXMoYWN0aW9uLnBhcmFtcyk7XG4gICAgdGhpcy5vcGNvZGUoJ3BhcnRpYWwnLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5nZXRFdmFsSW5mbygpKTtcbiAgfVxuXG4gIGJ1aWx0SW5IZWxwZXIoZXhwcjogQVNULkNhbGwpIHtcbiAgICBsZXQgeyBwYXRoIH0gPSBleHByO1xuICAgIGlmIChpc0hhc0Jsb2NrKHBhdGgpKSB7XG4gICAgICBsZXQgbmFtZSA9IGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZShleHByLnBhdGgub3JpZ2luYWwsIGV4cHIpO1xuICAgICAgdGhpcy5oYXNCbG9jayhuYW1lLCBleHByKTtcbiAgICB9IGVsc2UgaWYgKGlzSGFzQmxvY2tQYXJhbXMocGF0aCkpIHtcbiAgICAgIGxldCBuYW1lID0gYXNzZXJ0VmFsaWRIYXNCbG9ja1VzYWdlKGV4cHIucGF0aC5vcmlnaW5hbCwgZXhwcik7XG4gICAgICB0aGlzLmhhc0Jsb2NrUGFyYW1zKG5hbWUsIGV4cHIpO1xuICAgIH1cbiAgfVxuXG4gIC8vLyBFeHByZXNzaW9ucywgaW52b2tlZCByZWN1cnNpdmVseSBmcm9tIHByZXBhcmVQYXJhbXMgYW5kIHByZXBhcmVIYXNoXG5cbiAgU3ViRXhwcmVzc2lvbihleHByOiBBU1QuU3ViRXhwcmVzc2lvbikge1xuICAgIGlmIChpc0J1aWx0SW5IZWxwZXIoZXhwci5wYXRoKSkge1xuICAgICAgdGhpcy5idWlsdEluSGVscGVyKGV4cHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByZXBhcmVIZWxwZXIoZXhwcik7XG4gICAgICB0aGlzLm9wY29kZSgnaGVscGVyJywgZXhwciwgZXhwci5wYXRoLnBhcnRzWzBdKTtcbiAgICB9XG4gIH1cblxuICBQYXRoRXhwcmVzc2lvbihleHByOiBBU1QuUGF0aEV4cHJlc3Npb24pIHtcbiAgICBpZiAoZXhwci5kYXRhKSB7XG4gICAgICB0aGlzLmFyZyhbZXhwcl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgeyBzeW1ib2xzIH0gPSB0aGlzO1xuICAgICAgbGV0IFtoZWFkXSA9IGV4cHIucGFydHM7XG5cbiAgICAgIGlmIChleHByLnRoaXMpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2dldCcsIGV4cHIsIDAsIGV4cHIucGFydHMpO1xuICAgICAgfSBlbHNlIGlmIChzeW1ib2xzLmhhcyhoZWFkKSkge1xuICAgICAgICB0aGlzLm9wY29kZSgnZ2V0JywgZXhwciwgc3ltYm9scy5nZXQoaGVhZCksIGV4cHIucGFydHMuc2xpY2UoMSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ21heWJlTG9jYWwnLGV4cHIsIGV4cHIucGFydHMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIFN0cmluZ0xpdGVyYWwoYWN0aW9uOiBBU1QuU3RyaW5nTGl0ZXJhbCkge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIEJvb2xlYW5MaXRlcmFsKGFjdGlvbjogQVNULkJvb2xlYW5MaXRlcmFsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgTnVtYmVyTGl0ZXJhbChhY3Rpb246IEFTVC5OdW1iZXJMaXRlcmFsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgTnVsbExpdGVyYWwoYWN0aW9uOiBBU1QuTnVsbExpdGVyYWwpIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBVbmRlZmluZWRMaXRlcmFsKGFjdGlvbjogQVNULlVuZGVmaW5lZExpdGVyYWwpIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICAvLy8gVXRpbGl0aWVzXG5cbiAgb3Bjb2RlKG5hbWU6IGFueSwgYWN0aW9uOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgbGV0IG9wY29kZSA9IFtuYW1lLCAuLi5hcmdzXTtcbiAgICBpZiAodGhpcy5pbmNsdWRlTWV0YSAmJiBhY3Rpb24pIHtcbiAgICAgIG9wY29kZS5wdXNoKHRoaXMubWV0YShhY3Rpb24pKTtcbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZXMucHVzaChvcGNvZGUpO1xuICB9XG5cbiAgcHJlcGFyZUhlbHBlcihleHByOiBBU1QuQ2FsbCkge1xuICAgIGFzc2VydElzU2ltcGxlUGF0aChleHByLnBhdGgsIGV4cHIubG9jLCAnaGVscGVyJyk7XG5cbiAgICBsZXQgeyBwYXJhbXMsIGhhc2ggfSA9IGV4cHI7XG5cbiAgICB0aGlzLnByZXBhcmVIYXNoKGhhc2gpO1xuICAgIHRoaXMucHJlcGFyZVBhcmFtcyhwYXJhbXMpO1xuICB9XG5cbiAgcHJlcGFyZVBhcmFtcyhwYXJhbXM6IEFTVC5FeHByZXNzaW9uW10pIHtcbiAgICBpZiAoIXBhcmFtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgbnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IHBhcmFtcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IHBhcmFtID0gcGFyYW1zW2ldO1xuXG4gICAgICBhc3NlcnQodGhpc1twYXJhbS50eXBlXSwgYFVuaW1wbGVtZW50ZWQgJHtwYXJhbS50eXBlfSBvbiBUZW1wbGF0ZUNvbXBpbGVyYCk7XG4gICAgICAodGhpc1twYXJhbS50eXBlXSBhcyBhbnkpKHBhcmFtKTtcbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgncHJlcGFyZUFycmF5JywgbnVsbCwgcGFyYW1zLmxlbmd0aCk7XG4gIH1cblxuICBwcmVwYXJlSGFzaChoYXNoOiBBU1QuSGFzaCkge1xuICAgIGxldCBwYWlycyA9IGhhc2gucGFpcnM7XG5cbiAgICBpZiAoIXBhaXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gcGFpcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCB7IGtleSwgdmFsdWUgfSA9IHBhaXJzW2ldO1xuXG4gICAgICBhc3NlcnQodGhpc1t2YWx1ZS50eXBlXSwgYFVuaW1wbGVtZW50ZWQgJHt2YWx1ZS50eXBlfSBvbiBUZW1wbGF0ZUNvbXBpbGVyYCk7XG4gICAgICAodGhpc1t2YWx1ZS50eXBlXSBhcyBhbnkpKHZhbHVlKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwga2V5KTtcbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgncHJlcGFyZU9iamVjdCcsIG51bGwsIHBhaXJzLmxlbmd0aCk7XG4gIH1cblxuICBwcmVwYXJlQXR0cmlidXRlVmFsdWUodmFsdWU6IEFTVC5BdHRyTm9kZVsndmFsdWUnXSkge1xuICAgIC8vIHJldHVybnMgdGhlIHN0YXRpYyB2YWx1ZSBpZiB0aGUgdmFsdWUgaXMgc3RhdGljXG5cbiAgICBzd2l0Y2ggKHZhbHVlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ1RleHROb2RlJzpcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCB2YWx1ZSwgdmFsdWUuY2hhcnMpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgJ011c3RhY2hlU3RhdGVtZW50JzpcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVNdXN0YWNoZShbdmFsdWVdKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY2FzZSAnQ29uY2F0U3RhdGVtZW50JzpcbiAgICAgICAgdGhpcy5wcmVwYXJlQ29uY2F0UGFydHModmFsdWUucGFydHMpO1xuICAgICAgICB0aGlzLm9wY29kZSgnY29uY2F0JywgdmFsdWUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJlcGFyZUNvbmNhdFBhcnRzKHBhcnRzOiBBU1QuQ29uY2F0U3RhdGVtZW50WydwYXJ0cyddKSB7XG4gICAgZm9yIChsZXQgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgcGFydCA9IHBhcnRzW2ldO1xuXG4gICAgICBpZiAocGFydC50eXBlID09PSAnTXVzdGFjaGVTdGF0ZW1lbnQnKSB7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlTXVzdGFjaGUoW3BhcnRdKTtcbiAgICAgIH0gZWxzZSBpZiAocGFydC50eXBlID09PSAnVGV4dE5vZGUnKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgcGFydC5jaGFycyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGUoJ3ByZXBhcmVBcnJheScsIG51bGwsIHBhcnRzLmxlbmd0aCk7XG4gIH1cblxuICBhdHRyaWJ1dGVNdXN0YWNoZShbYWN0aW9uXTogW0FTVC5NdXN0YWNoZVN0YXRlbWVudF0pIHtcbiAgICB0aGlzLm11c3RhY2hlRXhwcmVzc2lvbihhY3Rpb24pO1xuICB9XG5cbiAgbWV0YShub2RlOiBBU1QuQmFzZU5vZGUpIHtcbiAgICBsZXQgbG9jID0gbm9kZS5sb2M7XG4gICAgaWYgKCFsb2MpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICBsZXQgeyBzb3VyY2UsIHN0YXJ0LCBlbmQgfSA9IGxvYztcbiAgICByZXR1cm4gWyAnbG9jJywgW3NvdXJjZSB8fCBudWxsLCBbc3RhcnQubGluZSwgc3RhcnQuY29sdW1uXSwgW2VuZC5saW5lLCBlbmQuY29sdW1uXV0gXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0hlbHBlckludm9jYXRpb24obXVzdGFjaGU6IEFTVC5NdXN0YWNoZVN0YXRlbWVudCk6IG11c3RhY2hlIGlzIEFTVC5NdXN0YWNoZVN0YXRlbWVudCAmIHsgcGF0aDogQVNULlBhdGhFeHByZXNzaW9uIH0ge1xuICByZXR1cm4gKG11c3RhY2hlLnBhcmFtcyAmJiBtdXN0YWNoZS5wYXJhbXMubGVuZ3RoID4gMCkgfHxcbiAgICAobXVzdGFjaGUuaGFzaCAmJiBtdXN0YWNoZS5oYXNoLnBhaXJzLmxlbmd0aCA+IDApO1xufVxuXG5mdW5jdGlvbiBpc1NpbXBsZVBhdGgoeyBwYXJ0cyB9OiBBU1QuUGF0aEV4cHJlc3Npb24pOiBib29sZWFuIHtcbiAgcmV0dXJuIHBhcnRzLmxlbmd0aCA9PT0gMTtcbn1cblxuZnVuY3Rpb24gaXNMb2NhbCh7IHBhcnRzIH06IEFTVC5QYXRoRXhwcmVzc2lvbiwgc3ltYm9sczogU3ltYm9sVGFibGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN5bWJvbHMgJiYgLyogcGFydHMubGVuZ3RoICYmICovIHN5bWJvbHMuaGFzKHBhcnRzWzBdKTtcbn1cblxuZnVuY3Rpb24gaXNZaWVsZChwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24pIHtcbiAgcmV0dXJuIHBhdGgub3JpZ2luYWwgPT09ICd5aWVsZCc7XG59XG5cbmZ1bmN0aW9uIGlzUGFydGlhbChwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24pIHtcbiAgcmV0dXJuIHBhdGgub3JpZ2luYWwgPT09ICdwYXJ0aWFsJztcbn1cblxuZnVuY3Rpb24gaXNEZWJ1Z2dlcihwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24pIHtcbiAgcmV0dXJuIHBhdGgub3JpZ2luYWwgPT09ICdkZWJ1Z2dlcic7XG59XG5cbmZ1bmN0aW9uIGlzSGFzQmxvY2socGF0aDogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gIHJldHVybiBwYXRoLm9yaWdpbmFsID09PSAnaGFzLWJsb2NrJztcbn1cblxuZnVuY3Rpb24gaXNIYXNCbG9ja1BhcmFtcyhwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24pIHtcbiAgcmV0dXJuIHBhdGgub3JpZ2luYWwgPT09ICdoYXMtYmxvY2stcGFyYW1zJztcbn1cblxuZnVuY3Rpb24gaXNCdWlsdEluSGVscGVyKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gaXNIYXNCbG9jayhwYXRoKSB8fCBpc0hhc0Jsb2NrUGFyYW1zKHBhdGgpO1xufVxuXG5mdW5jdGlvbiBpc0FyZyhwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24pOiBib29sZWFuIHtcbiAgcmV0dXJuICEhcGF0aFsnZGF0YSddO1xufVxuXG5mdW5jdGlvbiBhc3NlcnRJc1NpbXBsZVBhdGgocGF0aDogQVNULlBhdGhFeHByZXNzaW9uLCBsb2M6IEFTVC5Tb3VyY2VMb2NhdGlvbiwgY29udGV4dDogc3RyaW5nKSB7XG4gIGlmICghaXNTaW1wbGVQYXRoKHBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBcXGAke3BhdGgub3JpZ2luYWx9XFxgIGlzIG5vdCBhIHZhbGlkIG5hbWUgZm9yIGEgJHtjb250ZXh0fSBvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9LmAsIHBhdGgubG9jKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRWYWxpZFlpZWxkKHN0YXRlbWVudDogQVNULk11c3RhY2hlU3RhdGVtZW50KTogc3RyaW5nIHtcbiAgbGV0IHsgcGFpcnMgfSA9IHN0YXRlbWVudC5oYXNoO1xuXG4gIGlmICgocGFpcnMubGVuZ3RoID09PSAxICYmIHBhaXJzWzBdLmtleSAhPT0gJ3RvJykgfHwgcGFpcnMubGVuZ3RoID4gMSkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgeWllbGQgb25seSB0YWtlcyBhIHNpbmdsZSBuYW1lZCBhcmd1bWVudDogJ3RvJ2AsIHN0YXRlbWVudC5sb2MpO1xuICB9IGVsc2UgaWYgKHBhaXJzLmxlbmd0aCA9PT0gMSAmJiBwYWlyc1swXS52YWx1ZS50eXBlICE9PSAnU3RyaW5nTGl0ZXJhbCcpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYHlvdSBjYW4gb25seSB5aWVsZCB0byBhIGxpdGVyYWwgdmFsdWVgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfSBlbHNlIGlmIChwYWlycy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJ2RlZmF1bHQnO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAocGFpcnNbMF0udmFsdWUgYXMgQVNULlN0cmluZ0xpdGVyYWwpLnZhbHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkUGFydGlhbChzdGF0ZW1lbnQ6IEFTVC5NdXN0YWNoZVN0YXRlbWVudCkgLyogOiBleHByICovIHtcbiAgbGV0IHsgcGFyYW1zLCBoYXNoLCBlc2NhcGVkLCBsb2MgfSA9IHN0YXRlbWVudDtcblxuICBpZiAocGFyYW1zICYmIHBhcmFtcy5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYFBhcnRpYWwgZm91bmQgd2l0aCBubyBhcmd1bWVudHMuIFlvdSBtdXN0IHNwZWNpZnkgYSB0ZW1wbGF0ZSBuYW1lLiAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfSBlbHNlIGlmIChoYXNoICYmIGhhc2gucGFpcnMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgcGFydGlhbCBkb2VzIG5vdCB0YWtlIGFueSBuYW1lZCBhcmd1bWVudHMgKG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0pYCwgc3RhdGVtZW50LmxvYyk7XG4gIH0gZWxzZSBpZiAoIWVzY2FwZWQpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYHt7e3BhcnRpYWwgLi4ufX19IGlzIG5vdCBzdXBwb3J0ZWQsIHBsZWFzZSB1c2Uge3twYXJ0aWFsIC4uLn19IGluc3RlYWQgKG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0pYCwgc3RhdGVtZW50LmxvYyk7XG4gIH1cblxuICByZXR1cm4gcGFyYW1zO1xufVxuXG5mdW5jdGlvbiBhc3NlcnRWYWxpZEhhc0Jsb2NrVXNhZ2UodHlwZTogc3RyaW5nLCBjYWxsOiBBU1QuQ2FsbCk6IHN0cmluZyB7XG4gIGxldCB7IHBhcmFtcywgaGFzaCwgbG9jIH0gPSBjYWxsO1xuXG4gIGlmIChoYXNoICYmIGhhc2gucGFpcnMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgJHt0eXBlfSBkb2VzIG5vdCB0YWtlIGFueSBuYW1lZCBhcmd1bWVudHNgLCBjYWxsLmxvYyk7XG4gIH1cblxuICBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMSkge1xuICAgIGxldCBwYXJhbSA9IHBhcmFtc1swXTtcbiAgICBpZiAocGFyYW0udHlwZSA9PT0gJ1N0cmluZ0xpdGVyYWwnKSB7XG4gICAgICByZXR1cm4gcGFyYW0udmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgeW91IGNhbiBvbmx5IHlpZWxkIHRvIGEgbGl0ZXJhbCB2YWx1ZSAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBjYWxsLmxvYyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgJHt0eXBlfSBvbmx5IHRha2VzIGEgc2luZ2xlIHBvc2l0aW9uYWwgYXJndW1lbnQgKG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0pYCwgY2FsbC5sb2MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkRGVidWdnZXJVc2FnZShzdGF0ZW1lbnQ6IEFTVC5NdXN0YWNoZVN0YXRlbWVudCkge1xuICBsZXQgeyBwYXJhbXMsIGhhc2ggfSA9IHN0YXRlbWVudDtcblxuICBpZiAoaGFzaCAmJiBoYXNoLnBhaXJzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYGRlYnVnZ2VyIGRvZXMgbm90IHRha2UgYW55IG5hbWVkIGFyZ3VtZW50c2AsIHN0YXRlbWVudC5sb2MpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJ2RlZmF1bHQnO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgZGVidWdnZXIgZG9lcyBub3QgdGFrZSBhbnkgcG9zaXRpb25hbCBhcmd1bWVudHNgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfVxufVxuIl19 |
{ | ||
"name": "@glimmer/compiler", | ||
"version": "0.29.7", | ||
"version": "0.29.8", | ||
"repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/compiler", | ||
"dependencies": { | ||
"@glimmer/syntax": "^0.29.7", | ||
"@glimmer/util": "^0.29.7", | ||
"@glimmer/wire-format": "^0.29.7", | ||
"@glimmer/interfaces": "^0.29.7", | ||
"@glimmer/syntax": "^0.29.8", | ||
"@glimmer/util": "^0.29.8", | ||
"@glimmer/wire-format": "^0.29.8", | ||
"@glimmer/interfaces": "^0.29.8", | ||
"simple-html-tokenizer": "^0.4.1" | ||
@@ -11,0 +11,0 @@ }, |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
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
764514
Updated@glimmer/interfaces@^0.29.8
Updated@glimmer/syntax@^0.29.8
Updated@glimmer/util@^0.29.8
Updated@glimmer/wire-format@^0.29.8