occam-nominal 1.0.474 → 1.0.476
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/context/file/nominal.js +4 -2
- package/lib/element/declaration/type.js +2 -2
- package/lib/element/equality.js +2 -2
- package/lib/process/validation.js +2 -2
- package/package.json +2 -2
- package/src/context/file/nominal.js +3 -1
- package/src/element/declaration/type.js +1 -1
- package/src/element/equality.js +1 -1
- package/src/process/validation.js +1 -1
|
@@ -456,7 +456,9 @@ class NominalFileContext extends _occamlanguages.FileContext {
|
|
|
456
456
|
}
|
|
457
457
|
verifyFile(forward, back) {
|
|
458
458
|
const node = this.getNode(), context = this, fileNode = node; ///
|
|
459
|
-
return (0, _verify.verifyFile)(fileNode, context,
|
|
459
|
+
return (0, _verify.verifyFile)(fileNode, context, (_, back)=>{
|
|
460
|
+
return forward(back);
|
|
461
|
+
}, back);
|
|
460
462
|
}
|
|
461
463
|
initialise() {
|
|
462
464
|
const json = this.getJSON();
|
|
@@ -509,4 +511,4 @@ class NominalFileContext extends _occamlanguages.FileContext {
|
|
|
509
511
|
}
|
|
510
512
|
}
|
|
511
513
|
|
|
512
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0L2ZpbGUvbm9taW5hbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRmlsZUNvbnRleHQsIG5vbWluYWxVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IE5vbWluYWxMZXhlciBmcm9tIFwiLi4vLi4vbm9taW5hbC9sZXhlclwiO1xuaW1wb3J0IE5vbWluYWxQYXJzZXIgZnJvbSBcIi4uLy4uL25vbWluYWwvcGFyc2VyXCI7XG5cbmltcG9ydCB7IGZpbmRUeXBlfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVcIjtcbmltcG9ydCB7IHZlcmlmeUZpbGUgfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy92ZXJpZnlcIjtcbmltcG9ydCB7IGZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIH0gZnJvbSBcIi4uLy4uL21ldGFUeXBlc1wiO1xuaW1wb3J0IHsgdHlwZXNGcm9tSlNPTixcbiAgICAgICAgIHJ1bGVzRnJvbUpTT04sXG4gICAgICAgICBheGlvbXNGcm9tSlNPTixcbiAgICAgICAgIHNjaGVtYXNGcm9tSlNPTixcbiAgICAgICAgIHR5cGVzVG9UeXBlc0pTT04sXG4gICAgICAgICB0aGVvcmVtc0Zyb21KU09OLFxuICAgICAgICAgcnVsZXNUb1J1bGVzSlNPTixcbiAgICAgICAgIGF4aW9tc1RvQXhpb21zSlNPTixcbiAgICAgICAgIGdlbmVyYXRvcnNGcm9tSlNPTixcbiAgICAgICAgIGNvbmplY3R1cmVzRnJvbUpTT04sXG4gICAgICAgICBjb21iaW5hdG9yc0Zyb21KU09OLFxuICAgICAgICAgdHlwZVByZWZpeGVzRnJvbUpTT04sXG4gICAgICAgICBjb25zdHJ1Y3RvcnNGcm9tSlNPTixcbiAgICAgICAgIHNjaGVtYXNUb1NjaGVtYXNKU09OLFxuICAgICAgICAgdGhlb3JlbXNUb1RoZW9yZW1zSlNPTixcbiAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04sXG4gICAgICAgICBnZW5lcmF0b3JzVG9HZW5lcmF0b3JzSlNPTixcbiAgICAgICAgIGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04sXG4gICAgICAgICBjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OLFxuICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04sXG4gICAgICAgICB0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04sXG4gICAgICAgICBjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04sXG4gICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OLFxuICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmNvbnN0IHsgcHVzaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IG5vbWluYWxMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIsIG5vbWluYWxQYXJzZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gPSBub21pbmFsVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOb21pbmFsRmlsZUNvbnRleHQgZXh0ZW5kcyBGaWxlQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIGZpbGVDb250ZW50LCBmaWxlUGF0aCwgdG9rZW5zLCBub2RlLCBqc29uLCBsZXhlciwgcGFyc2VyLCB0eXBlcywgcnVsZXMsIGF4aW9tcywgbGVtbWFzLCBzY2hlbWFzLCB0aGVvcmVtcywgZ2VuZXJhdG9ycywgY29uamVjdHVyZXMsIGNvbWJpbmF0b3JzLCB0eXBlUHJlZml4ZXMsIGNvbnN0cnVjdG9ycywgZGVjbGFyZWRWYXJpYWJsZXMsIGRlY2xhcmVkTWV0YXZhcmlhYmxlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIGZpbGVDb250ZW50LCBmaWxlUGF0aCwgdG9rZW5zLCBub2RlLCBqc29uKTtcblxuICAgIHRoaXMubGV4ZXIgPSBsZXhlcjtcbiAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuZmlsZVBhdGggPSBmaWxlUGF0aDtcbiAgICB0aGlzLnRva2VucyA9IHRva2VucztcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMudHlwZXMgPSB0eXBlcztcbiAgICB0aGlzLnJ1bGVzID0gcnVsZXM7XG4gICAgdGhpcy5heGlvbXMgPSBheGlvbXM7XG4gICAgdGhpcy5sZW1tYXMgPSBsZW1tYXM7XG4gICAgdGhpcy5zY2hlbWFzID0gc2NoZW1hcztcbiAgICB0aGlzLnRoZW9yZW1zID0gdGhlb3JlbXM7XG4gICAgdGhpcy5nZW5lcmF0b3JzID0gZ2VuZXJhdG9ycztcbiAgICB0aGlzLmNvbmplY3R1cmVzID0gY29uamVjdHVyZXM7XG4gICAgdGhpcy5jb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzO1xuICAgIHRoaXMudHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzO1xuICAgIHRoaXMuY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgIHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlcztcbiAgICB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldExleGVyKCkge1xuICAgIHJldHVybiB0aGlzLmxleGVyO1xuICB9XG5cbiAgZ2V0UGFyc2VyKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlcjtcbiAgfVxuXG4gIGdldExhYmVscyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBsYWJlbHMgPSBbXTtcblxuICAgIGlmIChpbmNsdWRlUmVsZWFzZSkge1xuICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRMYWJlbHMgPSB0aGlzLmNvbnRleHQuZ2V0TGFiZWxzKCk7XG5cbiAgICAgIHB1c2gobGFiZWxzLCByZWxlYXNlQ29udGV4dExhYmVscyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBydWxlTGFiZWxzID0gcnVsZS5nZXRMYWJlbHMoKTtcblxuICAgICAgICBwdXNoKGxhYmVscywgcnVsZUxhYmVscyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5heGlvbXMuZm9yRWFjaCgoYXhpb20pID0+IHtcbiAgICAgICAgY29uc3QgYXhpb21MYWJlbHMgPSBheGlvbS5nZXRMYWJlbHMoKTtcblxuICAgICAgICBwdXNoKGxhYmVscywgYXhpb21MYWJlbHMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMubGVtbWFzLmZvckVhY2goKGxlbW1hKSA9PiB7XG4gICAgICAgIGNvbnN0IGxlbW1hTGFiZWxzID0gbGVtbWEuZ2V0TGFiZWxzKCk7XG5cbiAgICAgICAgcHVzaChsYWJlbHMsIGxlbW1hTGFiZWxzKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnRoZW9yZW1zLmZvckVhY2goKHRoZW9yZW0pID0+IHtcbiAgICAgICAgY29uc3QgdGhlb3JlbUxhYmVscyA9IHRoZW9yZW0uZ2V0TGFiZWxzKCk7XG5cbiAgICAgICAgcHVzaChsYWJlbHMsIHRoZW9yZW1MYWJlbHMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuY29uamVjdHVyZXMuZm9yRWFjaCgoY29uamVjdHVyZSkgPT4ge1xuICAgICAgICBjb25zdCBjb25qZWN0dXJlTGFiZWxzID0gY29uamVjdHVyZS5nZXRMYWJlbHMoKTtcblxuICAgICAgICBwdXNoKGxhYmVscywgY29uamVjdHVyZUxhYmVscyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zY2hlbWFzLmZvckVhY2goKHNjaGVtYSkgPT4ge1xuICAgICAgICBjb25zdCBzY2hlbWFMYWJlbCA9IHNjaGVtYS5nZXRMYWJlbCgpO1xuXG4gICAgICAgIGxhYmVscy5wdXNoKHNjaGVtYUxhYmVsKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbHM7XG4gIH1cblxuICBnZXRUeXBlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCB0eXBlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFR5cGVzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHlwZXM7XG5cbiAgICByZXR1cm4gdHlwZXM7XG4gIH1cblxuICBnZXRSdWxlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBydWxlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFJ1bGVzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXM7XG5cbiAgICByZXR1cm4gcnVsZXM7XG4gIH1cblxuICBnZXRBeGlvbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgYXhpb21zID0gaW5jbHVkZVJlbGVhc2UgP1xuICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldEF4aW9tcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5heGlvbXM7XG5cbiAgICByZXR1cm4gYXhpb21zO1xuICB9XG5cbiAgZ2V0TGVtbWFzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGxlbW1hcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRMZW1tYXMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVtbWFzO1xuXG4gICAgcmV0dXJuIGxlbW1hcztcbiAgfVxuXG4gIGdldFNjaGVtYXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3Qgc2NoZW1hcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZ2V0U2NoZW1hcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2NoZW1hcztcblxuICAgIHJldHVybiBzY2hlbWFzO1xuICB9XG5cbiAgZ2V0VGhlb3JlbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdGhlb3JlbXMgPSBpbmNsdWRlUmVsZWFzZSA/XG4gICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRUaGVvcmVtcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRoZW9yZW1zO1xuXG4gICAgcmV0dXJuIHRoZW9yZW1zO1xuICB9XG5cbiAgZ2V0R2VuZXJhdG9ycyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBnZW5lcmF0b3JzID0gaW5jbHVkZVJlbGVhc2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRHZW5lcmF0b3JzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0b3JzO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcnM7XG4gIH1cblxuICBnZXRDb25qZWN0dXJlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb25qZWN0dXJlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldENvbmplY3R1cmVzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uamVjdHVyZXM7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZXM7XG4gIH1cblxuICBnZXRDb21iaW5hdG9ycyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb21iaW5hdG9ycyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldENvbWJpbmF0b3JzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tYmluYXRvcnM7XG5cbiAgICByZXR1cm4gY29tYmluYXRvcnM7XG4gIH1cblxuICBnZXRUeXBlUHJlZml4ZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZVByZWZpeGVzID0gaW5jbHVkZVJlbGVhc2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFR5cGVQcmVmaXhlcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50eXBlUHJlZml4ZXM7XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeGVzO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3JzO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ycztcbiAgfVxuXG4gIGdldFByb2NlZHVyZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFByb2NlZHVyZXMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDsgIC8vL1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZXM7XG4gIH1cblxuICBnZXRDbGFpbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgbGVtbWFzID0gdGhpcy5nZXRMZW1tYXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIGF4aW9tcyA9IHRoaXMuZ2V0QXhpb21zKGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0aGVvcmVtcyA9IHRoaXMuZ2V0VGhlb3JlbXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIGNvbmplY3R1cmVzID0gdGhpcy5nZXRDb25qZWN0dXJlcyhpbmNsdWRlUmVsZWFzZSksXG4gICAgICAgICAgY2xhaW1zID0gW1xuICAgICAgICAgICAgLi4ubGVtbWFzLFxuICAgICAgICAgICAgLi4uYXhpb21zLFxuICAgICAgICAgICAgLi4udGhlb3JlbXMsXG4gICAgICAgICAgICAuLi5jb25qZWN0dXJlc1xuICAgICAgICAgIF07XG5cbiAgICByZXR1cm4gY2xhaW1zO1xuICB9XG5cbiAgZ2V0RGVjbGFyZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMgPSBbXSkge1xuICAgIHB1c2goZGVjbGFyZWRWYXJpYWJsZXMsIHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzKCkge1xuICAgIHJldHVybiB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFRlcm1zKHRlcm1zID0gW10pIHtcbiAgICByZXR1cm4gdGVybXM7XG4gIH1cblxuICBnZXRGcmFtZXMoZnJhbWVzID0gW10pIHtcbiAgICByZXR1cm4gZnJhbWVzO1xuICB9XG5cbiAgZ2V0RXF1YWxpdGllcyhlcXVhbGl0aWVzID0gW10pIHtcbiAgICByZXR1cm4gZXF1YWxpdGllcztcbiAgfVxuXG4gIGdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyA9IFtdKSB7XG4gICAgcmV0dXJuIGFzc2VydGlvbnM7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnRzKHN0YXRlbWVudHMgPSBbXSkge1xuICAgIHJldHVybiBzdGF0ZW1lbnRzO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlcyhzaWduYXR1cmVzID0gW10pIHtcbiAgICByZXR1cm4gc2lnbmF0dXJlcztcbiAgfVxuXG4gIGdldFJlZmVyZW5jZXMocmVmZXJlbmNlcyA9IFtdKSB7XG4gICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gIH1cblxuICBnZXRBc3N1bXB0aW9ucyhhc3N1bXB0aW9ucyA9IFtdKSB7XG4gICAgcmV0dXJuIGFzc3VtcHRpb25zO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlcyhtZXRhdmFyaWFibGVzID0gW10pIHtcbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBnZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zID0gW10pIHtcbiAgICByZXR1cm4gaW5mZXJyZWRTdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0RXF1aXZhbGVuY2VzKCkge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlcyA9IFtdO1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlcztcbiAgfVxuXG4gIGdldEZhY3RPclN1YnByb29mcygpIHtcbiAgICBjb25zdCBmYWN0T3JTdWJwcm9vZnMgPSBbXTtcblxuICAgIHJldHVybiBmYWN0T3JTdWJwcm9vZnM7XG4gIH1cblxuICBhZGRUeXBlKHR5cGUpIHtcbiAgICB0aGlzLnR5cGVzLnB1c2godHlwZSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFJ1bGUocnVsZSkge1xuICAgIHRoaXMucnVsZXMucHVzaChydWxlKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHJ1bGVTdHJpbmcgPSBydWxlLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke3J1bGVTdHJpbmd9JyBydWxlIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkQXhpb20oYXhpb20pIHtcbiAgICB0aGlzLmF4aW9tcy5wdXNoKGF4aW9tKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIGF4aW9tU3RyaW5nID0gYXhpb20uZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZExlbW1hKGxlbW1hKSB7XG4gICAgdGhpcy5sZW1tYXMucHVzaChsZW1tYSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgIGxlbW1hU3RyaW5nID0gbGVtbWEuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7bGVtbWFTdHJpbmd9JyBsZW1tYSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFNjaGVtYShzY2hlbWEpIHtcbiAgICB0aGlzLnNjaGVtYXMucHVzaChzY2hlbWEpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgc2NoZW1hU3RyaW5nID0gc2NoZW1hLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFRoZW9yZW0odGhlb3JlbSkge1xuICAgIHRoaXMudGhlb3JlbXMucHVzaCh0aGVvcmVtKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHRoZW9yZW1TdHJpbmcgPSB0aGVvcmVtLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke3RoZW9yZW1TdHJpbmd9JyB0aGVvcmVtIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkR2VuZXJhdG9yKGdlbmVyYXRvcikge1xuICAgIHRoaXMuZ2VuZXJhdG9ycy5wdXNoKGdlbmVyYXRvcik7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICBnZW5lcmF0b3JTdHJpbmcgPSBnZW5lcmF0b3IuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkQ29uamVjdHVyZShjb25qZWN0dXJlKSB7XG4gICAgdGhpcy5jb25qZWN0dXJlcy5wdXNoKGNvbmplY3R1cmUpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgb2NuamVjdHVyZVN0cmluZyA9IGNvbmplY3R1cmUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7b2NuamVjdHVyZVN0cmluZ30nIG9jbmplY3R1cmUgdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBhZGRDb21iaW5hdG9yKGNvbWJpbmF0b3IpIHtcbiAgICB0aGlzLmNvbWJpbmF0b3JzLnB1c2goY29tYmluYXRvcik7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICBjb21iaW5hdG9yU3RyaW5nID0gY29tYmluYXRvci5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvciB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFR5cGVQcmVmaXgodHlwZVByZWZpeCkge1xuICAgIHRoaXMudHlwZVByZWZpeGVzLnB1c2godHlwZVByZWZpeCk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICB0eXBlUHJlZml4U3RyaW5nID0gdHlwZVByZWZpeC5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHt0eXBlUHJlZml4U3RyaW5nfScgdHlwZS1wcmVmaXggdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBhZGRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvcikge1xuICAgIHRoaXMuY29uc3RydWN0b3JzLnB1c2goY29uc3RydWN0b3IpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSBjb25zdHJ1Y3Rvci5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkRGVjbGFyZWRWYXJpYWJsZShkZWNsYXJlZFZhcmlhYmxlKSB7XG4gICAgdGhpcy5kZWNsYXJlZFZhcmlhYmxlcy5wdXNoKGRlY2xhcmVkVmFyaWFibGUpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZVN0cmluZyA9IGRlY2xhcmVkVmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7ZGVjbGFyZWRWYXJpYWJsZVN0cmluZ30nIGRlY2xhcmVkIHZhcmlhYmxlIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkRGVjbGFyZWRNZXRhdmFyaWFibGUoZGVjbGFyZWRNZXRhdmFyaWFibGUpIHtcbiAgICB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcy5wdXNoKGRlY2xhcmVkTWV0YXZhcmlhYmxlKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlU3RyaW5nID0gZGVjbGFyZWRNZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7ZGVjbGFyZWRNZXRhdmFyaWFibGVTdHJpbmd9JyBkZWNsYXJlZCBtZXRhdmFyaWFibGUgdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSwgY29udGV4dCkge1xuICAgIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IHRoaXMuZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzKCk7XG5cbiAgICBtZXRhdmFyaWFibGUgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXMuZmluZCgoZGVjbGFyZWRNZXRhdmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZVVuaWZpZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZS51bmlmeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlVW5pZmllcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGZpbmRSdWxlQnlSZWZlcmVuY2UocmVmZXJlbmNlKSB7XG4gICAgY29uc3QgcnVsZXMgPSB0aGlzLmdldFJ1bGVzKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGVOb2RlKCksXG4gICAgICAgICAgcnVsZSA9IHJ1bGVzLmZpbmQoKHJ1bGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gcnVsZS5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH1cblxuICBmaW5kQXhpb21CeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBheGlvbXMgPSB0aGlzLmdldEF4aW9tcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIGF4aW9tID0gYXhpb21zLmZpbmQoKGF4aW9tKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGF4aW9tLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gYXhpb207XG4gIH1cblxuICBmaW5kTGVtbWFCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBsZW1tYXMgPSB0aGlzLmdldExlbW1hcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIGxlbW1hID0gbGVtbWFzLmZpbmQoKGxlbW1hKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGxlbW1hLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gbGVtbWE7XG4gIH1cblxuICBmaW5kVGhlb3JlbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IHRoZW9yZW1zID0gdGhpcy5nZXRUaGVvcmVtcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIHRoZW9yZW0gPSB0aGVvcmVtcy5maW5kKCh0aGVvcmVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHRoZW9yZW0ubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiB0aGVvcmVtO1xuICB9XG5cbiAgZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb25qZWN0dXJlcyA9IHRoaXMuZ2V0Q29uamVjdHVyZXMoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gcmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZU5vZGUoKSxcbiAgICAgICAgICBjb25qZWN0dXJlID0gY29uamVjdHVyZXMuZmluZCgoY29uamVjdHVyZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBjb25qZWN0dXJlLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZTtcbiAgfVxuXG4gIGZpbmRDbGFpbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNsYWltcyA9IHRoaXMuZ2V0Q2xhaW1zKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGVOb2RlKCksXG4gICAgICAgICAgY2xhaW0gPSBjbGFpbXMuZmluZCgoY2xhaW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gY2xhaW0ubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBjbGFpbTtcbiAgfVxuXG4gIGZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLmdldFR5cGVzKGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0eXBlID0gZmluZFR5cGUodHlwZXMsICh0eXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlQ29tcGFyZXNUb1R5cGVOYW1lID0gdHlwZS5jb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgICAgICAgICBpZiAodHlwZUNvbXBhcmVzVG9UeXBlTmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGVzID0gdGhpcy5nZXRUeXBlcyhpbmNsdWRlUmVsZWFzZSksXG4gICAgICAgICAgdHlwZSA9IGZpbmRUeXBlKHR5cGVzLCAodHlwZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHlwZUNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUgPSB0eXBlLmNvbXBhcmVOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICAgICAgaWYgKHR5cGVDb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBmaW5kVHlwZUJ5UHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCB0eXBlcyA9IHRoaXMuZ2V0VHlwZXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIHR5cGUgPSBmaW5kVHlwZSh0eXBlcywgKHR5cGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVDb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZSA9IHR5cGUuY29tcGFyZVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlQ29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIGZpbmRUeXBlUHJlZml4QnlUeXBlUHJlZml4TmFtZSh0eXBlUHJlZml4TmFtZSkge1xuICAgIGNvbnN0IHR5cGVQcmVmaXhlcyA9IHRoaXMuZ2V0VHlwZVByZWZpeGVzKCksXG4gICAgICAgICAgdHlwZVByZWZpeCA9IHR5cGVQcmVmaXhlcy5maW5kKCh0eXBlUHJlZml4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlUHJlZml4Q29tcGFyZXNUb1R5cGVQcmVmaXhOYW1lID0gdHlwZVByZWZpeC5jb21wYXJlVHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpO1xuXG4gICAgICAgICAgICBpZiAodHlwZVByZWZpeENvbXBhcmVzVG9UeXBlUHJlZml4TmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXg7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKFZhcmlhYmxlSWRlbnRpdGlmZXIpIHtcbiAgICBjb25zdCBkZWNsYXJlZFZhcmlhYmxlcyA9IHRoaXMuZ2V0RGVjbGFyZWRWYXJpYWJsZXMoKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlID0gZGVjbGFyZWRWYXJpYWJsZXMuZmluZCgoZGVjbGFyZWRWYXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aXRpZmVyID0gZGVjbGFyZWRWYXJpYWJsZS5jb21wYXJlVmFyaWFibGVJZGVudGlmaWVyKFZhcmlhYmxlSWRlbnRpdGlmZXIpO1xuXG4gICAgICAgICAgICBpZiAoZGVjbGFyZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aXRpZmVyKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZTtcbiAgfVxuXG4gIGZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGxldCBkZWNsYXJlZFZhcmlhYmxlcztcblxuICAgIGRlY2xhcmVkVmFyaWFibGVzID0gdGhpcy5nZXREZWNsYXJlZFZhcmlhYmxlcygpO1xuXG4gICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlcy5maWx0ZXIoKGRlY2xhcmVkVmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllciA9IGRlY2xhcmVkVmFyaWFibGUuY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgICBpZiAodmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSB0aGlzLmdldERlY2xhcmVkTWV0YXZhcmlhYmxlcygpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzLmZpbmQoKGRlY2xhcmVkTWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGVOYW1lID0gZGVjbGFyZWRNZXRhdmFyaWFibGUuY29tcGFyZU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChkZWNsYXJlZE1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGU7XG4gIH1cblxuICBmaW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBwcm9jZWR1cmVzID0gdGhpcy5nZXRQcm9jZWR1cmVzKCksXG4gICAgICAgICAgcHJvY2VkdXJlID0gcHJvY2VkdXJlcy5maW5kKChwcm9jZWR1cmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb2NlZHVyZUNvbXBhcmVzVG9Qcm9jZWR1cmVOYW1lID0gcHJvY2VkdXJlLmNvbXBhcmVQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgICAgICAgICBpZiAocHJvY2VkdXJlQ29tcGFyZXNUb1Byb2NlZHVyZU5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cblxuICBmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpIHsgcmV0dXJuIGZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7IH1cblxuICBpc0xhYmVsUHJlc2VudEJ5TGFiZWxOb2RlKGxhYmVsTm9kZSkge1xuICAgIGNvbnN0IGxhYmVscyA9IHRoaXMuZ2V0TGFiZWxzKCksXG4gICAgICBsYWJlbFByZXNlbnQgPSBsYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgICAgY29uc3QgbGFiZWxOb2RlTWF0Y2hlcyA9IGxhYmVsLm1hdGNoTGFiZWxOb2RlKGxhYmVsTm9kZSk7XG5cbiAgICAgICAgaWYgKGxhYmVsTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gbGFiZWxQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gKHR5cGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0eXBlUHJlc2VudCA9ICh0eXBlICE9PSBudWxsKTtcblxuICAgIHJldHVybiB0eXBlUHJlc2VudDtcbiAgfVxuXG4gIGlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZmluZFR5cGVCeVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gKHR5cGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlZml4UHJlc2VudEJ5VHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpIHtcbiAgICBjb25zdCB0eXBlUHJlZml4ID0gdGhpcy5maW5kVHlwZVByZWZpeEJ5VHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpLFxuICAgICAgICAgIHR5cGVQcmVmaXhQcmVzZW50ID0gKHR5cGVQcmVmaXggIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhQcmVzZW50O1xuICB9XG5cbiAgaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGUgPSB0aGlzLmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudCA9IChkZWNsYXJlZFZhcmlhYmxlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzRGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZSA9IHRoaXMuZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudCA9IChkZWNsYXJlZE1ldGF2YXJpYWJsZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50O1xuICB9XG5cbiAgaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBwcm9jZWR1cmUgPSB0aGlzLmZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSksXG4gICAgICAgICAgcHJvY2VkdXJlUHJlc2VudCA9IChwcm9jZWR1cmUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVByZXNlbnQ7XG4gIH1cblxuICBpc01ldGFMZXZlbCgpIHtcbiAgICBjb25zdCBtZXRhTEV2ZWwgPSBmYWxzZTtcblxuICAgIHJldHVybiBtZXRhTEV2ZWw7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnR5cGVzID0gW107XG4gICAgdGhpcy5ydWxlcyA9IFtdO1xuICAgIHRoaXMuYXhpb21zID0gW107XG4gICAgdGhpcy5sZW1tYXMgPSBbXTtcbiAgICB0aGlzLnNjaGVtYXMgPSBbXTtcbiAgICB0aGlzLnRoZW9yZW1zID0gW107XG4gICAgdGhpcy5nZW5lcmF0b3JzID0gW107XG4gICAgdGhpcy5jb25qZWN0dXJlcyA9IFtdO1xuICAgIHRoaXMuY29tYmluYXRvcnMgPSBbXTtcbiAgICB0aGlzLnR5cGVQcmVmaXhlcyA9IFtdO1xuICAgIHRoaXMuY29uc3RydWN0b3JzID0gW107XG4gICAgdGhpcy5kZWNsYXJlZFZhcmlhYmxlcyA9IFtdO1xuICAgIHRoaXMuZGVjbGFyZWRNZXRhdmFyaWFibGVzID0gW107XG4gIH1cblxuICBjb21wbGV0ZSgpIHtcbiAgICAvLy9cbiAgfVxuXG4gIHZlcmlmeUZpbGUoZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZmlsZU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gdmVyaWZ5RmlsZShmaWxlTm9kZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gIH1cblxuICBpbml0aWFsaXNlKCkge1xuICAgIGNvbnN0IGpzb24gPSB0aGlzLmdldEpTT04oKTtcblxuICAgIGlmIChqc29uID09PSBudWxsKSB7XG4gICAgICBzdXBlci5pbml0aWFsaXNlKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlQ29udGV4dCA9IHRoaXM7IC8vL1xuXG4gICAgdGhpcy50eXBlcyA9IFtdO1xuXG4gICAgdHlwZXNGcm9tSlNPTihqc29uLCB0aGlzLnR5cGVzLCBmaWxlQ29udGV4dCk7XG5cbiAgICB0aGlzLmxlbW1hcyA9IFtdO1xuXG4gICAgdGhpcy5kZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy5kZWNsYXJlZFZhcmlhYmxlcyA9IGRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMudHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuZ2VuZXJhdG9ycyA9IGdlbmVyYXRvcnNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy5jb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgdGhpcy5ydWxlcyA9IHJ1bGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuYXhpb21zID0gYXhpb21zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuc2NoZW1hcyA9IHNjaGVtYXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy50aGVvcmVtcyA9IHRoZW9yZW1zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuY29uamVjdHVyZXMgPSBjb25qZWN0dXJlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCB0eXBlc0pTT04gPSB0eXBlc1RvVHlwZXNKU09OKHRoaXMudHlwZXMpLFxuICAgICAgICAgIHJ1bGVzSlNPTiA9IHJ1bGVzVG9SdWxlc0pTT04odGhpcy5ydWxlcyksXG4gICAgICAgICAgYXhpb21zSlNPTiA9IGF4aW9tc1RvQXhpb21zSlNPTih0aGlzLmF4aW9tcyksXG4gICAgICAgICAgc2NoZW1hc0pTT04gPSBzY2hlbWFzVG9TY2hlbWFzSlNPTih0aGlzLnNjaGVtYXMpLFxuICAgICAgICAgIHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zVG9UaGVvcmVtc0pTT04odGhpcy50aGVvcmVtcyksXG4gICAgICAgICAgZ2VuZXJhdG9yc0pTT04gPSBnZW5lcmF0b3JzVG9HZW5lcmF0b3JzSlNPTih0aGlzLmdlbmVyYXRvcnMpLFxuICAgICAgICAgIGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04odGhpcy5jb25qZWN0dXJlcyksXG4gICAgICAgICAgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTih0aGlzLmNvbWJpbmF0b3JzKSxcbiAgICAgICAgICB0eXBlUHJlZml4ZXNKU09OID0gdHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OKHRoaXMudHlwZVByZWZpeGVzKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OKHRoaXMuY29uc3RydWN0b3JzKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OKHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXNUb0RlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04odGhpcy5kZWNsYXJlZE1ldGF2YXJpYWJsZXMpLFxuICAgICAgICAgIGZpbGVDb250ZW50ID0gdGhpcy5nZXRGaWxlQ29udGVudCgpLFxuICAgICAgICAgIGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHR5cGVzID0gdHlwZXNKU09OLCAgLy8vXG4gICAgICAgICAgcnVsZXMgPSBydWxlc0pTT04sICAvLy9cbiAgICAgICAgICBheGlvbXMgPSBheGlvbXNKU09OLCAgLy8vXG4gICAgICAgICAgc2NoZW1hcyA9IHNjaGVtYXNKU09OLCAgLy8vXG4gICAgICAgICAgdGhlb3JlbXMgPSB0aGVvcmVtc0pTT04sICAvLy9cbiAgICAgICAgICBnZW5lcmF0b3JzID0gZ2VuZXJhdG9yc0pTT04sICAvLy9cbiAgICAgICAgICBjb25qZWN0dXJlcyA9IGNvbmplY3R1cmVzSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3JzID0gY29tYmluYXRvcnNKU09OLCAgLy8vXG4gICAgICAgICAgdHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9yc0pTT04sICAvLy9cbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IGRlY2xhcmVkVmFyaWFibGVzSlNPTiwgIC8vL1xuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgZmlsZUNvbnRlbnQsXG4gICAgICAgICAgICBmaWxlUGF0aCxcbiAgICAgICAgICAgIHR5cGVzLFxuICAgICAgICAgICAgcnVsZXMsXG4gICAgICAgICAgICBheGlvbXMsXG4gICAgICAgICAgICBzY2hlbWFzLFxuICAgICAgICAgICAgdGhlb3JlbXMsXG4gICAgICAgICAgICBnZW5lcmF0b3JzLFxuICAgICAgICAgICAgY29uamVjdHVyZXMsXG4gICAgICAgICAgICBjb21iaW5hdG9ycyxcbiAgICAgICAgICAgIHR5cGVQcmVmaXhlcyxcbiAgICAgICAgICAgIGNvbnN0cnVjdG9ycyxcbiAgICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzLFxuICAgICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21GaWxlKGZpbGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGNvbnRleHQsIC8vL1xuICAgICAgICAgIGNvbWJpbmVkQ3VzdG9tR3JhbW1hciA9IHJlbGVhc2VDb250ZXh0LmdldENvbWJpbmVkQ3VzdG9tR3JhbW1hcigpLFxuICAgICAgICAgIG5vbWluYWxMZXhlciA9IG5vbWluYWxMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIoTm9taW5hbExleGVyLCBjb21iaW5lZEN1c3RvbUdyYW1tYXIpLFxuICAgICAgICAgIG5vbWluYWxQYXJzZXIgPSBub21pbmFsUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hcihOb21pbmFsUGFyc2VyLCBjb21iaW5lZEN1c3RvbUdyYW1tYXIpLFxuICAgICAgICAgIGxleGVyID0gbm9taW5hbExleGVyLCAvLy9cbiAgICAgICAgICBwYXJzZXIgPSBub21pbmFsUGFyc2VyLCAvLy9cbiAgICAgICAgICB0eXBlcyA9IFtdLFxuICAgICAgICAgIHJ1bGVzID0gW10sXG4gICAgICAgICAgYXhpb21zID0gW10sXG4gICAgICAgICAgbGVtbWFzID0gW10sXG4gICAgICAgICAgc2NoZW1hcyA9IFtdLFxuICAgICAgICAgIHRoZW9yZW1zID0gW10sXG4gICAgICAgICAgZ2VuZXJhdG9ycyA9IFtdLFxuICAgICAgICAgIGNvbmplY3R1cmVzID0gW10sXG4gICAgICAgICAgY29tYmluYXRvcnMgPSBbXSxcbiAgICAgICAgICB0eXBlUHJlZml4ZXMgPSBbXSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBbXSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIG5vbWluYWxGaWxlQ29udGV4dCA9IEZpbGVDb250ZXh0LmZyb21GaWxlKE5vbWluYWxGaWxlQ29udGV4dCwgZmlsZSwgbGV4ZXIsIHBhcnNlciwgdHlwZXMsIHJ1bGVzLCBheGlvbXMsIGxlbW1hcywgc2NoZW1hcywgdGhlb3JlbXMsIGdlbmVyYXRvcnMsIGNvbmplY3R1cmVzLCBjb21iaW5hdG9ycywgdHlwZVByZWZpeGVzLCBjb25zdHJ1Y3RvcnMsIGRlY2xhcmVkVmFyaWFibGVzLCBkZWNsYXJlZE1ldGF2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG5vbWluYWxGaWxlQ29udGV4dDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBjb250ZXh0LCAvLy9cbiAgICAgICAgICBjb21iaW5lZEN1c3RvbUdyYW1tYXIgPSByZWxlYXNlQ29udGV4dC5nZXRDb21iaW5lZEN1c3RvbUdyYW1tYXIoKSxcbiAgICAgICAgICBub21pbmFsTGV4ZXIgPSBub21pbmFsTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyKE5vbWluYWxMZXhlciwgY29tYmluZWRDdXN0b21HcmFtbWFyKSxcbiAgICAgICAgICBub21pbmFsUGFyc2VyID0gbm9taW5hbFBhcnNlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIoTm9taW5hbFBhcnNlciwgY29tYmluZWRDdXN0b21HcmFtbWFyKSxcbiAgICAgICAgICBsZXhlciA9IG5vbWluYWxMZXhlciwgLy8vXG4gICAgICAgICAgcGFyc2VyID0gbm9taW5hbFBhcnNlciwgLy8vXG4gICAgICAgICAgdHlwZXMgPSBudWxsLFxuICAgICAgICAgIHJ1bGVzID0gbnVsbCxcbiAgICAgICAgICBheGlvbXMgPSBudWxsLFxuICAgICAgICAgIGxlbW1hcyA9IG51bGwsXG4gICAgICAgICAgc2NoZW1hcyA9IG51bGwsXG4gICAgICAgICAgdGhlb3JlbXMgPSBudWxsLFxuICAgICAgICAgIGdlbmVyYXRvcnMgPSBudWxsLFxuICAgICAgICAgIGNvbmplY3R1cmVzID0gbnVsbCxcbiAgICAgICAgICBjb21iaW5hdG9ycyA9IG51bGwsXG4gICAgICAgICAgdHlwZVByZWZpeGVzID0gbnVsbCxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBudWxsLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzID0gbnVsbCxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBudWxsLFxuICAgICAgICAgIG5vbWluYWxGaWxlQ29udGV4dCA9IEZpbGVDb250ZXh0LmZyb21KU09OKE5vbWluYWxGaWxlQ29udGV4dCwganNvbiwgbGV4ZXIsIHBhcnNlciwgdHlwZXMsIHJ1bGVzLCBheGlvbXMsIGxlbW1hcywgc2NoZW1hcywgdGhlb3JlbXMsIGdlbmVyYXRvcnMsIGNvbmplY3R1cmVzLCBjb21iaW5hdG9ycywgdHlwZVByZWZpeGVzLCBjb25zdHJ1Y3RvcnMsIGRlY2xhcmVkVmFyaWFibGVzLCBkZWNsYXJlZE1ldGF2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG5vbWluYWxGaWxlQ29udGV4dDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIk5vbWluYWxGaWxlQ29udGV4dCIsInB1c2giLCJhcnJheVV0aWxpdGllcyIsIm5vbWluYWxMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIiLCJub21pbmFsUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsIm5vbWluYWxVdGlsaXRpZXMiLCJGaWxlQ29udGV4dCIsImNvbnRleHQiLCJmaWxlQ29udGVudCIsImZpbGVQYXRoIiwidG9rZW5zIiwibm9kZSIsImpzb24iLCJsZXhlciIsInBhcnNlciIsInR5cGVzIiwicnVsZXMiLCJheGlvbXMiLCJsZW1tYXMiLCJzY2hlbWFzIiwidGhlb3JlbXMiLCJnZW5lcmF0b3JzIiwiY29uamVjdHVyZXMiLCJjb21iaW5hdG9ycyIsInR5cGVQcmVmaXhlcyIsImNvbnN0cnVjdG9ycyIsImRlY2xhcmVkVmFyaWFibGVzIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzIiwiZ2V0TGV4ZXIiLCJnZXRQYXJzZXIiLCJnZXRMYWJlbHMiLCJpbmNsdWRlUmVsZWFzZSIsImxhYmVscyIsInJlbGVhc2VDb250ZXh0TGFiZWxzIiwiZm9yRWFjaCIsInJ1bGUiLCJydWxlTGFiZWxzIiwiYXhpb20iLCJheGlvbUxhYmVscyIsImxlbW1hIiwibGVtbWFMYWJlbHMiLCJ0aGVvcmVtIiwidGhlb3JlbUxhYmVscyIsImNvbmplY3R1cmUiLCJjb25qZWN0dXJlTGFiZWxzIiwic2NoZW1hIiwic2NoZW1hTGFiZWwiLCJnZXRMYWJlbCIsImdldFR5cGVzIiwiZ2V0UnVsZXMiLCJnZXRBeGlvbXMiLCJnZXRMZW1tYXMiLCJnZXRTY2hlbWFzIiwiZ2V0VGhlb3JlbXMiLCJnZXRHZW5lcmF0b3JzIiwiZ2V0Q29uamVjdHVyZXMiLCJnZXRDb21iaW5hdG9ycyIsImdldFR5cGVQcmVmaXhlcyIsImdldENvbnN0cnVjdG9ycyIsImdldFByb2NlZHVyZXMiLCJwcm9jZWR1cmVzIiwiZ2V0Q2xhaW1zIiwiY2xhaW1zIiwiZ2V0RGVjbGFyZWRWYXJpYWJsZXMiLCJnZXREZWNsYXJlZE1ldGF2YXJpYWJsZXMiLCJnZXRUZXJtcyIsInRlcm1zIiwiZ2V0RnJhbWVzIiwiZnJhbWVzIiwiZ2V0RXF1YWxpdGllcyIsImVxdWFsaXRpZXMiLCJnZXRBc3NlcnRpb25zIiwiYXNzZXJ0aW9ucyIsImdldFN0YXRlbWVudHMiLCJzdGF0ZW1lbnRzIiwiZ2V0U2lnbmF0dXJlcyIsInNpZ25hdHVyZXMiLCJnZXRSZWZlcmVuY2VzIiwicmVmZXJlbmNlcyIsImdldEFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlcyIsImdldFN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zIiwiZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RmFjdE9yU3VicHJvb2ZzIiwiZmFjdE9yU3VicHJvb2ZzIiwiYWRkVHlwZSIsInR5cGUiLCJnZXRGaWxlUGF0aCIsInR5cGVTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImFkZFJ1bGUiLCJydWxlU3RyaW5nIiwiYWRkQXhpb20iLCJheGlvbVN0cmluZyIsImFkZExlbW1hIiwibGVtbWFTdHJpbmciLCJhZGRTY2hlbWEiLCJzY2hlbWFTdHJpbmciLCJhZGRUaGVvcmVtIiwidGhlb3JlbVN0cmluZyIsImFkZEdlbmVyYXRvciIsImdlbmVyYXRvciIsImdlbmVyYXRvclN0cmluZyIsImFkZENvbmplY3R1cmUiLCJvY25qZWN0dXJlU3RyaW5nIiwiYWRkQ29tYmluYXRvciIsImNvbWJpbmF0b3IiLCJjb21iaW5hdG9yU3RyaW5nIiwiYWRkVHlwZVByZWZpeCIsInR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4U3RyaW5nIiwiYWRkQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yU3RyaW5nIiwiYWRkRGVjbGFyZWRWYXJpYWJsZSIsImRlY2xhcmVkVmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlU3RyaW5nIiwiYWRkRGVjbGFyZWRNZXRhdmFyaWFibGUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlU3RyaW5nIiwiZmluZE1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZSIsImZpbmQiLCJtZXRhdmFyaWFibGVVbmlmaWVzIiwidW5pZnlNZXRhdmFyaWFibGUiLCJmaW5kUnVsZUJ5UmVmZXJlbmNlIiwicmVmZXJlbmNlIiwibWV0YXZhcmlhYmxlTm9kZSIsImdldE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlIiwiZmluZExlbW1hQnlSZWZlcmVuY2UiLCJmaW5kVGhlb3JlbUJ5UmVmZXJlbmNlIiwiZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZSIsImZpbmRDbGFpbUJ5UmVmZXJlbmNlIiwiY2xhaW0iLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJ0eXBlTmFtZSIsImZpbmRUeXBlIiwidHlwZUNvbXBhcmVzVG9UeXBlTmFtZSIsImNvbXBhcmVUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJub21pbmFsVHlwZU5hbWUiLCJ0eXBlQ29tcGFyZXNUb05vbWluYWxUeXBlTmFtZSIsImNvbXBhcmVOb21pbmFsVHlwZU5hbWUiLCJmaW5kVHlwZUJ5UHJlZml4ZWRUeXBlTmFtZSIsInByZWZpeGVkVHlwZU5hbWUiLCJ0eXBlQ29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUiLCJjb21wYXJlUHJlZml4ZWRUeXBlTmFtZSIsImZpbmRUeXBlUHJlZml4QnlUeXBlUHJlZml4TmFtZSIsInR5cGVQcmVmaXhOYW1lIiwidHlwZVByZWZpeENvbXBhcmVzVG9UeXBlUHJlZml4TmFtZSIsImNvbXBhcmVUeXBlUHJlZml4TmFtZSIsImZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJWYXJpYWJsZUlkZW50aXRpZmVyIiwiZGVjbGFyZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aXRpZmVyIiwiY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllciIsImZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGVJZGVudGlmaWVyIiwiZmlsdGVyIiwidmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyIiwiZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlTmFtZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlQ29tcGFyZXNUb01ldGF2YXJpYWJsZU5hbWUiLCJjb21wYXJlTWV0YXZhcmlhYmxlTmFtZSIsImZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlIiwicHJvY2VkdXJlQ29tcGFyZXNUb1Byb2NlZHVyZU5hbWUiLCJjb21wYXJlUHJvY2VkdXJlTmFtZSIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwiaXNMYWJlbFByZXNlbnRCeUxhYmVsTm9kZSIsImxhYmVsTm9kZSIsImxhYmVsUHJlc2VudCIsInNvbWUiLCJsYWJlbCIsImxhYmVsTm9kZU1hdGNoZXMiLCJtYXRjaExhYmVsTm9kZSIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUiLCJpc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lIiwiaXNUeXBlUHJlZml4UHJlc2VudEJ5VHlwZVByZWZpeE5hbWUiLCJ0eXBlUHJlZml4UHJlc2VudCIsImlzRGVjbGFyZWRWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkVmFyaWFibGVQcmVzZW50IiwiaXNEZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc1Byb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVQcmVzZW50IiwiaXNNZXRhTGV2ZWwiLCJtZXRhTEV2ZWwiLCJjbGVhciIsImNvbXBsZXRlIiwidmVyaWZ5RmlsZSIsImZvcndhcmQiLCJiYWNrIiwiZ2V0Tm9kZSIsImZpbGVOb2RlIiwiaW5pdGlhbGlzZSIsImdldEpTT04iLCJmaWxlQ29udGV4dCIsInR5cGVzRnJvbUpTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04iLCJ0eXBlUHJlZml4ZXNGcm9tSlNPTiIsImdlbmVyYXRvcnNGcm9tSlNPTiIsImNvbWJpbmF0b3JzRnJvbUpTT04iLCJjb25zdHJ1Y3RvcnNGcm9tSlNPTiIsInJ1bGVzRnJvbUpTT04iLCJheGlvbXNGcm9tSlNPTiIsInNjaGVtYXNGcm9tSlNPTiIsInRoZW9yZW1zRnJvbUpTT04iLCJjb25qZWN0dXJlc0Zyb21KU09OIiwidG9KU09OIiwidHlwZXNKU09OIiwidHlwZXNUb1R5cGVzSlNPTiIsInJ1bGVzSlNPTiIsInJ1bGVzVG9SdWxlc0pTT04iLCJheGlvbXNKU09OIiwiYXhpb21zVG9BeGlvbXNKU09OIiwic2NoZW1hc0pTT04iLCJzY2hlbWFzVG9TY2hlbWFzSlNPTiIsInRoZW9yZW1zSlNPTiIsInRoZW9yZW1zVG9UaGVvcmVtc0pTT04iLCJnZW5lcmF0b3JzSlNPTiIsImdlbmVyYXRvcnNUb0dlbmVyYXRvcnNKU09OIiwiY29uamVjdHVyZXNKU09OIiwiY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTiIsImNvbWJpbmF0b3JzSlNPTiIsImNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04iLCJ0eXBlUHJlZml4ZXNKU09OIiwidHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OIiwiY29uc3RydWN0b3JzSlNPTiIsImNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzVG9EZWNsYXJlZFZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OIiwiZ2V0RmlsZUNvbnRlbnQiLCJmcm9tRmlsZSIsImZpbGUiLCJyZWxlYXNlQ29udGV4dCIsImNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsImdldENvbWJpbmVkQ3VzdG9tR3JhbW1hciIsIm5vbWluYWxMZXhlciIsIk5vbWluYWxMZXhlciIsIm5vbWluYWxQYXJzZXIiLCJOb21pbmFsUGFyc2VyIiwibm9taW5hbEZpbGVDb250ZXh0IiwiZnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXVDQTs7O2VBQXFCQTs7O2dDQXJDeUI7MkJBQ2Y7OERBRU47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
|
|
514
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0L2ZpbGUvbm9taW5hbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRmlsZUNvbnRleHQsIG5vbWluYWxVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IE5vbWluYWxMZXhlciBmcm9tIFwiLi4vLi4vbm9taW5hbC9sZXhlclwiO1xuaW1wb3J0IE5vbWluYWxQYXJzZXIgZnJvbSBcIi4uLy4uL25vbWluYWwvcGFyc2VyXCI7XG5cbmltcG9ydCB7IGZpbmRUeXBlfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVcIjtcbmltcG9ydCB7IHZlcmlmeUZpbGUgfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy92ZXJpZnlcIjtcbmltcG9ydCB7IGZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIH0gZnJvbSBcIi4uLy4uL21ldGFUeXBlc1wiO1xuaW1wb3J0IHsgdHlwZXNGcm9tSlNPTixcbiAgICAgICAgIHJ1bGVzRnJvbUpTT04sXG4gICAgICAgICBheGlvbXNGcm9tSlNPTixcbiAgICAgICAgIHNjaGVtYXNGcm9tSlNPTixcbiAgICAgICAgIHR5cGVzVG9UeXBlc0pTT04sXG4gICAgICAgICB0aGVvcmVtc0Zyb21KU09OLFxuICAgICAgICAgcnVsZXNUb1J1bGVzSlNPTixcbiAgICAgICAgIGF4aW9tc1RvQXhpb21zSlNPTixcbiAgICAgICAgIGdlbmVyYXRvcnNGcm9tSlNPTixcbiAgICAgICAgIGNvbmplY3R1cmVzRnJvbUpTT04sXG4gICAgICAgICBjb21iaW5hdG9yc0Zyb21KU09OLFxuICAgICAgICAgdHlwZVByZWZpeGVzRnJvbUpTT04sXG4gICAgICAgICBjb25zdHJ1Y3RvcnNGcm9tSlNPTixcbiAgICAgICAgIHNjaGVtYXNUb1NjaGVtYXNKU09OLFxuICAgICAgICAgdGhlb3JlbXNUb1RoZW9yZW1zSlNPTixcbiAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04sXG4gICAgICAgICBnZW5lcmF0b3JzVG9HZW5lcmF0b3JzSlNPTixcbiAgICAgICAgIGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04sXG4gICAgICAgICBjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OLFxuICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04sXG4gICAgICAgICB0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04sXG4gICAgICAgICBjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04sXG4gICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OLFxuICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmNvbnN0IHsgcHVzaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IG5vbWluYWxMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIsIG5vbWluYWxQYXJzZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gPSBub21pbmFsVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOb21pbmFsRmlsZUNvbnRleHQgZXh0ZW5kcyBGaWxlQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIGZpbGVDb250ZW50LCBmaWxlUGF0aCwgdG9rZW5zLCBub2RlLCBqc29uLCBsZXhlciwgcGFyc2VyLCB0eXBlcywgcnVsZXMsIGF4aW9tcywgbGVtbWFzLCBzY2hlbWFzLCB0aGVvcmVtcywgZ2VuZXJhdG9ycywgY29uamVjdHVyZXMsIGNvbWJpbmF0b3JzLCB0eXBlUHJlZml4ZXMsIGNvbnN0cnVjdG9ycywgZGVjbGFyZWRWYXJpYWJsZXMsIGRlY2xhcmVkTWV0YXZhcmlhYmxlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIGZpbGVDb250ZW50LCBmaWxlUGF0aCwgdG9rZW5zLCBub2RlLCBqc29uKTtcblxuICAgIHRoaXMubGV4ZXIgPSBsZXhlcjtcbiAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuZmlsZVBhdGggPSBmaWxlUGF0aDtcbiAgICB0aGlzLnRva2VucyA9IHRva2VucztcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMudHlwZXMgPSB0eXBlcztcbiAgICB0aGlzLnJ1bGVzID0gcnVsZXM7XG4gICAgdGhpcy5heGlvbXMgPSBheGlvbXM7XG4gICAgdGhpcy5sZW1tYXMgPSBsZW1tYXM7XG4gICAgdGhpcy5zY2hlbWFzID0gc2NoZW1hcztcbiAgICB0aGlzLnRoZW9yZW1zID0gdGhlb3JlbXM7XG4gICAgdGhpcy5nZW5lcmF0b3JzID0gZ2VuZXJhdG9ycztcbiAgICB0aGlzLmNvbmplY3R1cmVzID0gY29uamVjdHVyZXM7XG4gICAgdGhpcy5jb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzO1xuICAgIHRoaXMudHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzO1xuICAgIHRoaXMuY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgIHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlcztcbiAgICB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldExleGVyKCkge1xuICAgIHJldHVybiB0aGlzLmxleGVyO1xuICB9XG5cbiAgZ2V0UGFyc2VyKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlcjtcbiAgfVxuXG4gIGdldExhYmVscyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBsYWJlbHMgPSBbXTtcblxuICAgIGlmIChpbmNsdWRlUmVsZWFzZSkge1xuICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRMYWJlbHMgPSB0aGlzLmNvbnRleHQuZ2V0TGFiZWxzKCk7XG5cbiAgICAgIHB1c2gobGFiZWxzLCByZWxlYXNlQ29udGV4dExhYmVscyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBydWxlTGFiZWxzID0gcnVsZS5nZXRMYWJlbHMoKTtcblxuICAgICAgICBwdXNoKGxhYmVscywgcnVsZUxhYmVscyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5heGlvbXMuZm9yRWFjaCgoYXhpb20pID0+IHtcbiAgICAgICAgY29uc3QgYXhpb21MYWJlbHMgPSBheGlvbS5nZXRMYWJlbHMoKTtcblxuICAgICAgICBwdXNoKGxhYmVscywgYXhpb21MYWJlbHMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMubGVtbWFzLmZvckVhY2goKGxlbW1hKSA9PiB7XG4gICAgICAgIGNvbnN0IGxlbW1hTGFiZWxzID0gbGVtbWEuZ2V0TGFiZWxzKCk7XG5cbiAgICAgICAgcHVzaChsYWJlbHMsIGxlbW1hTGFiZWxzKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnRoZW9yZW1zLmZvckVhY2goKHRoZW9yZW0pID0+IHtcbiAgICAgICAgY29uc3QgdGhlb3JlbUxhYmVscyA9IHRoZW9yZW0uZ2V0TGFiZWxzKCk7XG5cbiAgICAgICAgcHVzaChsYWJlbHMsIHRoZW9yZW1MYWJlbHMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuY29uamVjdHVyZXMuZm9yRWFjaCgoY29uamVjdHVyZSkgPT4ge1xuICAgICAgICBjb25zdCBjb25qZWN0dXJlTGFiZWxzID0gY29uamVjdHVyZS5nZXRMYWJlbHMoKTtcblxuICAgICAgICBwdXNoKGxhYmVscywgY29uamVjdHVyZUxhYmVscyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zY2hlbWFzLmZvckVhY2goKHNjaGVtYSkgPT4ge1xuICAgICAgICBjb25zdCBzY2hlbWFMYWJlbCA9IHNjaGVtYS5nZXRMYWJlbCgpO1xuXG4gICAgICAgIGxhYmVscy5wdXNoKHNjaGVtYUxhYmVsKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbHM7XG4gIH1cblxuICBnZXRUeXBlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCB0eXBlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFR5cGVzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHlwZXM7XG5cbiAgICByZXR1cm4gdHlwZXM7XG4gIH1cblxuICBnZXRSdWxlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBydWxlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFJ1bGVzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXM7XG5cbiAgICByZXR1cm4gcnVsZXM7XG4gIH1cblxuICBnZXRBeGlvbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgYXhpb21zID0gaW5jbHVkZVJlbGVhc2UgP1xuICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldEF4aW9tcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5heGlvbXM7XG5cbiAgICByZXR1cm4gYXhpb21zO1xuICB9XG5cbiAgZ2V0TGVtbWFzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGxlbW1hcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRMZW1tYXMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVtbWFzO1xuXG4gICAgcmV0dXJuIGxlbW1hcztcbiAgfVxuXG4gIGdldFNjaGVtYXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3Qgc2NoZW1hcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZ2V0U2NoZW1hcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2NoZW1hcztcblxuICAgIHJldHVybiBzY2hlbWFzO1xuICB9XG5cbiAgZ2V0VGhlb3JlbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdGhlb3JlbXMgPSBpbmNsdWRlUmVsZWFzZSA/XG4gICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRUaGVvcmVtcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRoZW9yZW1zO1xuXG4gICAgcmV0dXJuIHRoZW9yZW1zO1xuICB9XG5cbiAgZ2V0R2VuZXJhdG9ycyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBnZW5lcmF0b3JzID0gaW5jbHVkZVJlbGVhc2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRHZW5lcmF0b3JzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0b3JzO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcnM7XG4gIH1cblxuICBnZXRDb25qZWN0dXJlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb25qZWN0dXJlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldENvbmplY3R1cmVzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uamVjdHVyZXM7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZXM7XG4gIH1cblxuICBnZXRDb21iaW5hdG9ycyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb21iaW5hdG9ycyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldENvbWJpbmF0b3JzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tYmluYXRvcnM7XG5cbiAgICByZXR1cm4gY29tYmluYXRvcnM7XG4gIH1cblxuICBnZXRUeXBlUHJlZml4ZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZVByZWZpeGVzID0gaW5jbHVkZVJlbGVhc2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFR5cGVQcmVmaXhlcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50eXBlUHJlZml4ZXM7XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeGVzO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3JzO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ycztcbiAgfVxuXG4gIGdldFByb2NlZHVyZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFByb2NlZHVyZXMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDsgIC8vL1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZXM7XG4gIH1cblxuICBnZXRDbGFpbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgbGVtbWFzID0gdGhpcy5nZXRMZW1tYXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIGF4aW9tcyA9IHRoaXMuZ2V0QXhpb21zKGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0aGVvcmVtcyA9IHRoaXMuZ2V0VGhlb3JlbXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIGNvbmplY3R1cmVzID0gdGhpcy5nZXRDb25qZWN0dXJlcyhpbmNsdWRlUmVsZWFzZSksXG4gICAgICAgICAgY2xhaW1zID0gW1xuICAgICAgICAgICAgLi4ubGVtbWFzLFxuICAgICAgICAgICAgLi4uYXhpb21zLFxuICAgICAgICAgICAgLi4udGhlb3JlbXMsXG4gICAgICAgICAgICAuLi5jb25qZWN0dXJlc1xuICAgICAgICAgIF07XG5cbiAgICByZXR1cm4gY2xhaW1zO1xuICB9XG5cbiAgZ2V0RGVjbGFyZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMgPSBbXSkge1xuICAgIHB1c2goZGVjbGFyZWRWYXJpYWJsZXMsIHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzKCkge1xuICAgIHJldHVybiB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFRlcm1zKHRlcm1zID0gW10pIHtcbiAgICByZXR1cm4gdGVybXM7XG4gIH1cblxuICBnZXRGcmFtZXMoZnJhbWVzID0gW10pIHtcbiAgICByZXR1cm4gZnJhbWVzO1xuICB9XG5cbiAgZ2V0RXF1YWxpdGllcyhlcXVhbGl0aWVzID0gW10pIHtcbiAgICByZXR1cm4gZXF1YWxpdGllcztcbiAgfVxuXG4gIGdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyA9IFtdKSB7XG4gICAgcmV0dXJuIGFzc2VydGlvbnM7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnRzKHN0YXRlbWVudHMgPSBbXSkge1xuICAgIHJldHVybiBzdGF0ZW1lbnRzO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlcyhzaWduYXR1cmVzID0gW10pIHtcbiAgICByZXR1cm4gc2lnbmF0dXJlcztcbiAgfVxuXG4gIGdldFJlZmVyZW5jZXMocmVmZXJlbmNlcyA9IFtdKSB7XG4gICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gIH1cblxuICBnZXRBc3N1bXB0aW9ucyhhc3N1bXB0aW9ucyA9IFtdKSB7XG4gICAgcmV0dXJuIGFzc3VtcHRpb25zO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlcyhtZXRhdmFyaWFibGVzID0gW10pIHtcbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBnZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zID0gW10pIHtcbiAgICByZXR1cm4gaW5mZXJyZWRTdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0RXF1aXZhbGVuY2VzKCkge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlcyA9IFtdO1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlcztcbiAgfVxuXG4gIGdldEZhY3RPclN1YnByb29mcygpIHtcbiAgICBjb25zdCBmYWN0T3JTdWJwcm9vZnMgPSBbXTtcblxuICAgIHJldHVybiBmYWN0T3JTdWJwcm9vZnM7XG4gIH1cblxuICBhZGRUeXBlKHR5cGUpIHtcbiAgICB0aGlzLnR5cGVzLnB1c2godHlwZSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFJ1bGUocnVsZSkge1xuICAgIHRoaXMucnVsZXMucHVzaChydWxlKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHJ1bGVTdHJpbmcgPSBydWxlLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke3J1bGVTdHJpbmd9JyBydWxlIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkQXhpb20oYXhpb20pIHtcbiAgICB0aGlzLmF4aW9tcy5wdXNoKGF4aW9tKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIGF4aW9tU3RyaW5nID0gYXhpb20uZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZExlbW1hKGxlbW1hKSB7XG4gICAgdGhpcy5sZW1tYXMucHVzaChsZW1tYSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgIGxlbW1hU3RyaW5nID0gbGVtbWEuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7bGVtbWFTdHJpbmd9JyBsZW1tYSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFNjaGVtYShzY2hlbWEpIHtcbiAgICB0aGlzLnNjaGVtYXMucHVzaChzY2hlbWEpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgc2NoZW1hU3RyaW5nID0gc2NoZW1hLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFRoZW9yZW0odGhlb3JlbSkge1xuICAgIHRoaXMudGhlb3JlbXMucHVzaCh0aGVvcmVtKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHRoZW9yZW1TdHJpbmcgPSB0aGVvcmVtLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke3RoZW9yZW1TdHJpbmd9JyB0aGVvcmVtIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkR2VuZXJhdG9yKGdlbmVyYXRvcikge1xuICAgIHRoaXMuZ2VuZXJhdG9ycy5wdXNoKGdlbmVyYXRvcik7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICBnZW5lcmF0b3JTdHJpbmcgPSBnZW5lcmF0b3IuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkQ29uamVjdHVyZShjb25qZWN0dXJlKSB7XG4gICAgdGhpcy5jb25qZWN0dXJlcy5wdXNoKGNvbmplY3R1cmUpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgb2NuamVjdHVyZVN0cmluZyA9IGNvbmplY3R1cmUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7b2NuamVjdHVyZVN0cmluZ30nIG9jbmplY3R1cmUgdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBhZGRDb21iaW5hdG9yKGNvbWJpbmF0b3IpIHtcbiAgICB0aGlzLmNvbWJpbmF0b3JzLnB1c2goY29tYmluYXRvcik7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICBjb21iaW5hdG9yU3RyaW5nID0gY29tYmluYXRvci5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvciB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFR5cGVQcmVmaXgodHlwZVByZWZpeCkge1xuICAgIHRoaXMudHlwZVByZWZpeGVzLnB1c2godHlwZVByZWZpeCk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICB0eXBlUHJlZml4U3RyaW5nID0gdHlwZVByZWZpeC5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHt0eXBlUHJlZml4U3RyaW5nfScgdHlwZS1wcmVmaXggdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBhZGRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvcikge1xuICAgIHRoaXMuY29uc3RydWN0b3JzLnB1c2goY29uc3RydWN0b3IpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSBjb25zdHJ1Y3Rvci5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkRGVjbGFyZWRWYXJpYWJsZShkZWNsYXJlZFZhcmlhYmxlKSB7XG4gICAgdGhpcy5kZWNsYXJlZFZhcmlhYmxlcy5wdXNoKGRlY2xhcmVkVmFyaWFibGUpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZVN0cmluZyA9IGRlY2xhcmVkVmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7ZGVjbGFyZWRWYXJpYWJsZVN0cmluZ30nIGRlY2xhcmVkIHZhcmlhYmxlIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkRGVjbGFyZWRNZXRhdmFyaWFibGUoZGVjbGFyZWRNZXRhdmFyaWFibGUpIHtcbiAgICB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcy5wdXNoKGRlY2xhcmVkTWV0YXZhcmlhYmxlKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlU3RyaW5nID0gZGVjbGFyZWRNZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7ZGVjbGFyZWRNZXRhdmFyaWFibGVTdHJpbmd9JyBkZWNsYXJlZCBtZXRhdmFyaWFibGUgdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSwgY29udGV4dCkge1xuICAgIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IHRoaXMuZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzKCk7XG5cbiAgICBtZXRhdmFyaWFibGUgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXMuZmluZCgoZGVjbGFyZWRNZXRhdmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZVVuaWZpZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZS51bmlmeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlVW5pZmllcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGZpbmRSdWxlQnlSZWZlcmVuY2UocmVmZXJlbmNlKSB7XG4gICAgY29uc3QgcnVsZXMgPSB0aGlzLmdldFJ1bGVzKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGVOb2RlKCksXG4gICAgICAgICAgcnVsZSA9IHJ1bGVzLmZpbmQoKHJ1bGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gcnVsZS5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH1cblxuICBmaW5kQXhpb21CeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBheGlvbXMgPSB0aGlzLmdldEF4aW9tcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIGF4aW9tID0gYXhpb21zLmZpbmQoKGF4aW9tKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGF4aW9tLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gYXhpb207XG4gIH1cblxuICBmaW5kTGVtbWFCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBsZW1tYXMgPSB0aGlzLmdldExlbW1hcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIGxlbW1hID0gbGVtbWFzLmZpbmQoKGxlbW1hKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGxlbW1hLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gbGVtbWE7XG4gIH1cblxuICBmaW5kVGhlb3JlbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IHRoZW9yZW1zID0gdGhpcy5nZXRUaGVvcmVtcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIHRoZW9yZW0gPSB0aGVvcmVtcy5maW5kKCh0aGVvcmVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHRoZW9yZW0ubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiB0aGVvcmVtO1xuICB9XG5cbiAgZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb25qZWN0dXJlcyA9IHRoaXMuZ2V0Q29uamVjdHVyZXMoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gcmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZU5vZGUoKSxcbiAgICAgICAgICBjb25qZWN0dXJlID0gY29uamVjdHVyZXMuZmluZCgoY29uamVjdHVyZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBjb25qZWN0dXJlLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZTtcbiAgfVxuXG4gIGZpbmRDbGFpbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNsYWltcyA9IHRoaXMuZ2V0Q2xhaW1zKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGVOb2RlKCksXG4gICAgICAgICAgY2xhaW0gPSBjbGFpbXMuZmluZCgoY2xhaW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gY2xhaW0ubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBjbGFpbTtcbiAgfVxuXG4gIGZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLmdldFR5cGVzKGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0eXBlID0gZmluZFR5cGUodHlwZXMsICh0eXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlQ29tcGFyZXNUb1R5cGVOYW1lID0gdHlwZS5jb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgICAgICAgICBpZiAodHlwZUNvbXBhcmVzVG9UeXBlTmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGVzID0gdGhpcy5nZXRUeXBlcyhpbmNsdWRlUmVsZWFzZSksXG4gICAgICAgICAgdHlwZSA9IGZpbmRUeXBlKHR5cGVzLCAodHlwZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHlwZUNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUgPSB0eXBlLmNvbXBhcmVOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICAgICAgaWYgKHR5cGVDb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBmaW5kVHlwZUJ5UHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCB0eXBlcyA9IHRoaXMuZ2V0VHlwZXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIHR5cGUgPSBmaW5kVHlwZSh0eXBlcywgKHR5cGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVDb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZSA9IHR5cGUuY29tcGFyZVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlQ29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIGZpbmRUeXBlUHJlZml4QnlUeXBlUHJlZml4TmFtZSh0eXBlUHJlZml4TmFtZSkge1xuICAgIGNvbnN0IHR5cGVQcmVmaXhlcyA9IHRoaXMuZ2V0VHlwZVByZWZpeGVzKCksXG4gICAgICAgICAgdHlwZVByZWZpeCA9IHR5cGVQcmVmaXhlcy5maW5kKCh0eXBlUHJlZml4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlUHJlZml4Q29tcGFyZXNUb1R5cGVQcmVmaXhOYW1lID0gdHlwZVByZWZpeC5jb21wYXJlVHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpO1xuXG4gICAgICAgICAgICBpZiAodHlwZVByZWZpeENvbXBhcmVzVG9UeXBlUHJlZml4TmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXg7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKFZhcmlhYmxlSWRlbnRpdGlmZXIpIHtcbiAgICBjb25zdCBkZWNsYXJlZFZhcmlhYmxlcyA9IHRoaXMuZ2V0RGVjbGFyZWRWYXJpYWJsZXMoKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlID0gZGVjbGFyZWRWYXJpYWJsZXMuZmluZCgoZGVjbGFyZWRWYXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aXRpZmVyID0gZGVjbGFyZWRWYXJpYWJsZS5jb21wYXJlVmFyaWFibGVJZGVudGlmaWVyKFZhcmlhYmxlSWRlbnRpdGlmZXIpO1xuXG4gICAgICAgICAgICBpZiAoZGVjbGFyZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aXRpZmVyKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZTtcbiAgfVxuXG4gIGZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGxldCBkZWNsYXJlZFZhcmlhYmxlcztcblxuICAgIGRlY2xhcmVkVmFyaWFibGVzID0gdGhpcy5nZXREZWNsYXJlZFZhcmlhYmxlcygpO1xuXG4gICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlcy5maWx0ZXIoKGRlY2xhcmVkVmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllciA9IGRlY2xhcmVkVmFyaWFibGUuY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgICBpZiAodmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSB0aGlzLmdldERlY2xhcmVkTWV0YXZhcmlhYmxlcygpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzLmZpbmQoKGRlY2xhcmVkTWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGVOYW1lID0gZGVjbGFyZWRNZXRhdmFyaWFibGUuY29tcGFyZU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChkZWNsYXJlZE1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGU7XG4gIH1cblxuICBmaW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBwcm9jZWR1cmVzID0gdGhpcy5nZXRQcm9jZWR1cmVzKCksXG4gICAgICAgICAgcHJvY2VkdXJlID0gcHJvY2VkdXJlcy5maW5kKChwcm9jZWR1cmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb2NlZHVyZUNvbXBhcmVzVG9Qcm9jZWR1cmVOYW1lID0gcHJvY2VkdXJlLmNvbXBhcmVQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgICAgICAgICBpZiAocHJvY2VkdXJlQ29tcGFyZXNUb1Byb2NlZHVyZU5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cblxuICBmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpIHsgcmV0dXJuIGZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7IH1cblxuICBpc0xhYmVsUHJlc2VudEJ5TGFiZWxOb2RlKGxhYmVsTm9kZSkge1xuICAgIGNvbnN0IGxhYmVscyA9IHRoaXMuZ2V0TGFiZWxzKCksXG4gICAgICBsYWJlbFByZXNlbnQgPSBsYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgICAgY29uc3QgbGFiZWxOb2RlTWF0Y2hlcyA9IGxhYmVsLm1hdGNoTGFiZWxOb2RlKGxhYmVsTm9kZSk7XG5cbiAgICAgICAgaWYgKGxhYmVsTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gbGFiZWxQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gKHR5cGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0eXBlUHJlc2VudCA9ICh0eXBlICE9PSBudWxsKTtcblxuICAgIHJldHVybiB0eXBlUHJlc2VudDtcbiAgfVxuXG4gIGlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZmluZFR5cGVCeVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gKHR5cGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlZml4UHJlc2VudEJ5VHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpIHtcbiAgICBjb25zdCB0eXBlUHJlZml4ID0gdGhpcy5maW5kVHlwZVByZWZpeEJ5VHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpLFxuICAgICAgICAgIHR5cGVQcmVmaXhQcmVzZW50ID0gKHR5cGVQcmVmaXggIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhQcmVzZW50O1xuICB9XG5cbiAgaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGUgPSB0aGlzLmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudCA9IChkZWNsYXJlZFZhcmlhYmxlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzRGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZSA9IHRoaXMuZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudCA9IChkZWNsYXJlZE1ldGF2YXJpYWJsZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50O1xuICB9XG5cbiAgaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBwcm9jZWR1cmUgPSB0aGlzLmZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSksXG4gICAgICAgICAgcHJvY2VkdXJlUHJlc2VudCA9IChwcm9jZWR1cmUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVByZXNlbnQ7XG4gIH1cblxuICBpc01ldGFMZXZlbCgpIHtcbiAgICBjb25zdCBtZXRhTEV2ZWwgPSBmYWxzZTtcblxuICAgIHJldHVybiBtZXRhTEV2ZWw7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnR5cGVzID0gW107XG4gICAgdGhpcy5ydWxlcyA9IFtdO1xuICAgIHRoaXMuYXhpb21zID0gW107XG4gICAgdGhpcy5sZW1tYXMgPSBbXTtcbiAgICB0aGlzLnNjaGVtYXMgPSBbXTtcbiAgICB0aGlzLnRoZW9yZW1zID0gW107XG4gICAgdGhpcy5nZW5lcmF0b3JzID0gW107XG4gICAgdGhpcy5jb25qZWN0dXJlcyA9IFtdO1xuICAgIHRoaXMuY29tYmluYXRvcnMgPSBbXTtcbiAgICB0aGlzLnR5cGVQcmVmaXhlcyA9IFtdO1xuICAgIHRoaXMuY29uc3RydWN0b3JzID0gW107XG4gICAgdGhpcy5kZWNsYXJlZFZhcmlhYmxlcyA9IFtdO1xuICAgIHRoaXMuZGVjbGFyZWRNZXRhdmFyaWFibGVzID0gW107XG4gIH1cblxuICBjb21wbGV0ZSgpIHtcbiAgICAvLy9cbiAgfVxuXG4gIHZlcmlmeUZpbGUoZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZmlsZU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gdmVyaWZ5RmlsZShmaWxlTm9kZSwgY29udGV4dCwgKCBfICwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBpbml0aWFsaXNlKCkge1xuICAgIGNvbnN0IGpzb24gPSB0aGlzLmdldEpTT04oKTtcblxuICAgIGlmIChqc29uID09PSBudWxsKSB7XG4gICAgICBzdXBlci5pbml0aWFsaXNlKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlQ29udGV4dCA9IHRoaXM7IC8vL1xuXG4gICAgdGhpcy50eXBlcyA9IFtdO1xuXG4gICAgdHlwZXNGcm9tSlNPTihqc29uLCB0aGlzLnR5cGVzLCBmaWxlQ29udGV4dCk7XG5cbiAgICB0aGlzLmxlbW1hcyA9IFtdO1xuXG4gICAgdGhpcy5kZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy5kZWNsYXJlZFZhcmlhYmxlcyA9IGRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMudHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuZ2VuZXJhdG9ycyA9IGdlbmVyYXRvcnNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy5jb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgdGhpcy5ydWxlcyA9IHJ1bGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuYXhpb21zID0gYXhpb21zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuc2NoZW1hcyA9IHNjaGVtYXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy50aGVvcmVtcyA9IHRoZW9yZW1zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuY29uamVjdHVyZXMgPSBjb25qZWN0dXJlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCB0eXBlc0pTT04gPSB0eXBlc1RvVHlwZXNKU09OKHRoaXMudHlwZXMpLFxuICAgICAgICAgIHJ1bGVzSlNPTiA9IHJ1bGVzVG9SdWxlc0pTT04odGhpcy5ydWxlcyksXG4gICAgICAgICAgYXhpb21zSlNPTiA9IGF4aW9tc1RvQXhpb21zSlNPTih0aGlzLmF4aW9tcyksXG4gICAgICAgICAgc2NoZW1hc0pTT04gPSBzY2hlbWFzVG9TY2hlbWFzSlNPTih0aGlzLnNjaGVtYXMpLFxuICAgICAgICAgIHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zVG9UaGVvcmVtc0pTT04odGhpcy50aGVvcmVtcyksXG4gICAgICAgICAgZ2VuZXJhdG9yc0pTT04gPSBnZW5lcmF0b3JzVG9HZW5lcmF0b3JzSlNPTih0aGlzLmdlbmVyYXRvcnMpLFxuICAgICAgICAgIGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04odGhpcy5jb25qZWN0dXJlcyksXG4gICAgICAgICAgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTih0aGlzLmNvbWJpbmF0b3JzKSxcbiAgICAgICAgICB0eXBlUHJlZml4ZXNKU09OID0gdHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OKHRoaXMudHlwZVByZWZpeGVzKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OKHRoaXMuY29uc3RydWN0b3JzKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OKHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXNUb0RlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04odGhpcy5kZWNsYXJlZE1ldGF2YXJpYWJsZXMpLFxuICAgICAgICAgIGZpbGVDb250ZW50ID0gdGhpcy5nZXRGaWxlQ29udGVudCgpLFxuICAgICAgICAgIGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHR5cGVzID0gdHlwZXNKU09OLCAgLy8vXG4gICAgICAgICAgcnVsZXMgPSBydWxlc0pTT04sICAvLy9cbiAgICAgICAgICBheGlvbXMgPSBheGlvbXNKU09OLCAgLy8vXG4gICAgICAgICAgc2NoZW1hcyA9IHNjaGVtYXNKU09OLCAgLy8vXG4gICAgICAgICAgdGhlb3JlbXMgPSB0aGVvcmVtc0pTT04sICAvLy9cbiAgICAgICAgICBnZW5lcmF0b3JzID0gZ2VuZXJhdG9yc0pTT04sICAvLy9cbiAgICAgICAgICBjb25qZWN0dXJlcyA9IGNvbmplY3R1cmVzSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3JzID0gY29tYmluYXRvcnNKU09OLCAgLy8vXG4gICAgICAgICAgdHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9yc0pTT04sICAvLy9cbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IGRlY2xhcmVkVmFyaWFibGVzSlNPTiwgIC8vL1xuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgZmlsZUNvbnRlbnQsXG4gICAgICAgICAgICBmaWxlUGF0aCxcbiAgICAgICAgICAgIHR5cGVzLFxuICAgICAgICAgICAgcnVsZXMsXG4gICAgICAgICAgICBheGlvbXMsXG4gICAgICAgICAgICBzY2hlbWFzLFxuICAgICAgICAgICAgdGhlb3JlbXMsXG4gICAgICAgICAgICBnZW5lcmF0b3JzLFxuICAgICAgICAgICAgY29uamVjdHVyZXMsXG4gICAgICAgICAgICBjb21iaW5hdG9ycyxcbiAgICAgICAgICAgIHR5cGVQcmVmaXhlcyxcbiAgICAgICAgICAgIGNvbnN0cnVjdG9ycyxcbiAgICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzLFxuICAgICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21GaWxlKGZpbGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGNvbnRleHQsIC8vL1xuICAgICAgICAgIGNvbWJpbmVkQ3VzdG9tR3JhbW1hciA9IHJlbGVhc2VDb250ZXh0LmdldENvbWJpbmVkQ3VzdG9tR3JhbW1hcigpLFxuICAgICAgICAgIG5vbWluYWxMZXhlciA9IG5vbWluYWxMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIoTm9taW5hbExleGVyLCBjb21iaW5lZEN1c3RvbUdyYW1tYXIpLFxuICAgICAgICAgIG5vbWluYWxQYXJzZXIgPSBub21pbmFsUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hcihOb21pbmFsUGFyc2VyLCBjb21iaW5lZEN1c3RvbUdyYW1tYXIpLFxuICAgICAgICAgIGxleGVyID0gbm9taW5hbExleGVyLCAvLy9cbiAgICAgICAgICBwYXJzZXIgPSBub21pbmFsUGFyc2VyLCAvLy9cbiAgICAgICAgICB0eXBlcyA9IFtdLFxuICAgICAgICAgIHJ1bGVzID0gW10sXG4gICAgICAgICAgYXhpb21zID0gW10sXG4gICAgICAgICAgbGVtbWFzID0gW10sXG4gICAgICAgICAgc2NoZW1hcyA9IFtdLFxuICAgICAgICAgIHRoZW9yZW1zID0gW10sXG4gICAgICAgICAgZ2VuZXJhdG9ycyA9IFtdLFxuICAgICAgICAgIGNvbmplY3R1cmVzID0gW10sXG4gICAgICAgICAgY29tYmluYXRvcnMgPSBbXSxcbiAgICAgICAgICB0eXBlUHJlZml4ZXMgPSBbXSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBbXSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIG5vbWluYWxGaWxlQ29udGV4dCA9IEZpbGVDb250ZXh0LmZyb21GaWxlKE5vbWluYWxGaWxlQ29udGV4dCwgZmlsZSwgbGV4ZXIsIHBhcnNlciwgdHlwZXMsIHJ1bGVzLCBheGlvbXMsIGxlbW1hcywgc2NoZW1hcywgdGhlb3JlbXMsIGdlbmVyYXRvcnMsIGNvbmplY3R1cmVzLCBjb21iaW5hdG9ycywgdHlwZVByZWZpeGVzLCBjb25zdHJ1Y3RvcnMsIGRlY2xhcmVkVmFyaWFibGVzLCBkZWNsYXJlZE1ldGF2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG5vbWluYWxGaWxlQ29udGV4dDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBjb250ZXh0LCAvLy9cbiAgICAgICAgICBjb21iaW5lZEN1c3RvbUdyYW1tYXIgPSByZWxlYXNlQ29udGV4dC5nZXRDb21iaW5lZEN1c3RvbUdyYW1tYXIoKSxcbiAgICAgICAgICBub21pbmFsTGV4ZXIgPSBub21pbmFsTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyKE5vbWluYWxMZXhlciwgY29tYmluZWRDdXN0b21HcmFtbWFyKSxcbiAgICAgICAgICBub21pbmFsUGFyc2VyID0gbm9taW5hbFBhcnNlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIoTm9taW5hbFBhcnNlciwgY29tYmluZWRDdXN0b21HcmFtbWFyKSxcbiAgICAgICAgICBsZXhlciA9IG5vbWluYWxMZXhlciwgLy8vXG4gICAgICAgICAgcGFyc2VyID0gbm9taW5hbFBhcnNlciwgLy8vXG4gICAgICAgICAgdHlwZXMgPSBudWxsLFxuICAgICAgICAgIHJ1bGVzID0gbnVsbCxcbiAgICAgICAgICBheGlvbXMgPSBudWxsLFxuICAgICAgICAgIGxlbW1hcyA9IG51bGwsXG4gICAgICAgICAgc2NoZW1hcyA9IG51bGwsXG4gICAgICAgICAgdGhlb3JlbXMgPSBudWxsLFxuICAgICAgICAgIGdlbmVyYXRvcnMgPSBudWxsLFxuICAgICAgICAgIGNvbmplY3R1cmVzID0gbnVsbCxcbiAgICAgICAgICBjb21iaW5hdG9ycyA9IG51bGwsXG4gICAgICAgICAgdHlwZVByZWZpeGVzID0gbnVsbCxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBudWxsLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzID0gbnVsbCxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBudWxsLFxuICAgICAgICAgIG5vbWluYWxGaWxlQ29udGV4dCA9IEZpbGVDb250ZXh0LmZyb21KU09OKE5vbWluYWxGaWxlQ29udGV4dCwganNvbiwgbGV4ZXIsIHBhcnNlciwgdHlwZXMsIHJ1bGVzLCBheGlvbXMsIGxlbW1hcywgc2NoZW1hcywgdGhlb3JlbXMsIGdlbmVyYXRvcnMsIGNvbmplY3R1cmVzLCBjb21iaW5hdG9ycywgdHlwZVByZWZpeGVzLCBjb25zdHJ1Y3RvcnMsIGRlY2xhcmVkVmFyaWFibGVzLCBkZWNsYXJlZE1ldGF2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG5vbWluYWxGaWxlQ29udGV4dDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIk5vbWluYWxGaWxlQ29udGV4dCIsInB1c2giLCJhcnJheVV0aWxpdGllcyIsIm5vbWluYWxMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIiLCJub21pbmFsUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsIm5vbWluYWxVdGlsaXRpZXMiLCJGaWxlQ29udGV4dCIsImNvbnRleHQiLCJmaWxlQ29udGVudCIsImZpbGVQYXRoIiwidG9rZW5zIiwibm9kZSIsImpzb24iLCJsZXhlciIsInBhcnNlciIsInR5cGVzIiwicnVsZXMiLCJheGlvbXMiLCJsZW1tYXMiLCJzY2hlbWFzIiwidGhlb3JlbXMiLCJnZW5lcmF0b3JzIiwiY29uamVjdHVyZXMiLCJjb21iaW5hdG9ycyIsInR5cGVQcmVmaXhlcyIsImNvbnN0cnVjdG9ycyIsImRlY2xhcmVkVmFyaWFibGVzIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzIiwiZ2V0TGV4ZXIiLCJnZXRQYXJzZXIiLCJnZXRMYWJlbHMiLCJpbmNsdWRlUmVsZWFzZSIsImxhYmVscyIsInJlbGVhc2VDb250ZXh0TGFiZWxzIiwiZm9yRWFjaCIsInJ1bGUiLCJydWxlTGFiZWxzIiwiYXhpb20iLCJheGlvbUxhYmVscyIsImxlbW1hIiwibGVtbWFMYWJlbHMiLCJ0aGVvcmVtIiwidGhlb3JlbUxhYmVscyIsImNvbmplY3R1cmUiLCJjb25qZWN0dXJlTGFiZWxzIiwic2NoZW1hIiwic2NoZW1hTGFiZWwiLCJnZXRMYWJlbCIsImdldFR5cGVzIiwiZ2V0UnVsZXMiLCJnZXRBeGlvbXMiLCJnZXRMZW1tYXMiLCJnZXRTY2hlbWFzIiwiZ2V0VGhlb3JlbXMiLCJnZXRHZW5lcmF0b3JzIiwiZ2V0Q29uamVjdHVyZXMiLCJnZXRDb21iaW5hdG9ycyIsImdldFR5cGVQcmVmaXhlcyIsImdldENvbnN0cnVjdG9ycyIsImdldFByb2NlZHVyZXMiLCJwcm9jZWR1cmVzIiwiZ2V0Q2xhaW1zIiwiY2xhaW1zIiwiZ2V0RGVjbGFyZWRWYXJpYWJsZXMiLCJnZXREZWNsYXJlZE1ldGF2YXJpYWJsZXMiLCJnZXRUZXJtcyIsInRlcm1zIiwiZ2V0RnJhbWVzIiwiZnJhbWVzIiwiZ2V0RXF1YWxpdGllcyIsImVxdWFsaXRpZXMiLCJnZXRBc3NlcnRpb25zIiwiYXNzZXJ0aW9ucyIsImdldFN0YXRlbWVudHMiLCJzdGF0ZW1lbnRzIiwiZ2V0U2lnbmF0dXJlcyIsInNpZ25hdHVyZXMiLCJnZXRSZWZlcmVuY2VzIiwicmVmZXJlbmNlcyIsImdldEFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlcyIsImdldFN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zIiwiZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RmFjdE9yU3VicHJvb2ZzIiwiZmFjdE9yU3VicHJvb2ZzIiwiYWRkVHlwZSIsInR5cGUiLCJnZXRGaWxlUGF0aCIsInR5cGVTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImFkZFJ1bGUiLCJydWxlU3RyaW5nIiwiYWRkQXhpb20iLCJheGlvbVN0cmluZyIsImFkZExlbW1hIiwibGVtbWFTdHJpbmciLCJhZGRTY2hlbWEiLCJzY2hlbWFTdHJpbmciLCJhZGRUaGVvcmVtIiwidGhlb3JlbVN0cmluZyIsImFkZEdlbmVyYXRvciIsImdlbmVyYXRvciIsImdlbmVyYXRvclN0cmluZyIsImFkZENvbmplY3R1cmUiLCJvY25qZWN0dXJlU3RyaW5nIiwiYWRkQ29tYmluYXRvciIsImNvbWJpbmF0b3IiLCJjb21iaW5hdG9yU3RyaW5nIiwiYWRkVHlwZVByZWZpeCIsInR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4U3RyaW5nIiwiYWRkQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yU3RyaW5nIiwiYWRkRGVjbGFyZWRWYXJpYWJsZSIsImRlY2xhcmVkVmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlU3RyaW5nIiwiYWRkRGVjbGFyZWRNZXRhdmFyaWFibGUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlU3RyaW5nIiwiZmluZE1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZSIsImZpbmQiLCJtZXRhdmFyaWFibGVVbmlmaWVzIiwidW5pZnlNZXRhdmFyaWFibGUiLCJmaW5kUnVsZUJ5UmVmZXJlbmNlIiwicmVmZXJlbmNlIiwibWV0YXZhcmlhYmxlTm9kZSIsImdldE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlIiwiZmluZExlbW1hQnlSZWZlcmVuY2UiLCJmaW5kVGhlb3JlbUJ5UmVmZXJlbmNlIiwiZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZSIsImZpbmRDbGFpbUJ5UmVmZXJlbmNlIiwiY2xhaW0iLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJ0eXBlTmFtZSIsImZpbmRUeXBlIiwidHlwZUNvbXBhcmVzVG9UeXBlTmFtZSIsImNvbXBhcmVUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJub21pbmFsVHlwZU5hbWUiLCJ0eXBlQ29tcGFyZXNUb05vbWluYWxUeXBlTmFtZSIsImNvbXBhcmVOb21pbmFsVHlwZU5hbWUiLCJmaW5kVHlwZUJ5UHJlZml4ZWRUeXBlTmFtZSIsInByZWZpeGVkVHlwZU5hbWUiLCJ0eXBlQ29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUiLCJjb21wYXJlUHJlZml4ZWRUeXBlTmFtZSIsImZpbmRUeXBlUHJlZml4QnlUeXBlUHJlZml4TmFtZSIsInR5cGVQcmVmaXhOYW1lIiwidHlwZVByZWZpeENvbXBhcmVzVG9UeXBlUHJlZml4TmFtZSIsImNvbXBhcmVUeXBlUHJlZml4TmFtZSIsImZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJWYXJpYWJsZUlkZW50aXRpZmVyIiwiZGVjbGFyZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aXRpZmVyIiwiY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllciIsImZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGVJZGVudGlmaWVyIiwiZmlsdGVyIiwidmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyIiwiZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlTmFtZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlQ29tcGFyZXNUb01ldGF2YXJpYWJsZU5hbWUiLCJjb21wYXJlTWV0YXZhcmlhYmxlTmFtZSIsImZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlIiwicHJvY2VkdXJlQ29tcGFyZXNUb1Byb2NlZHVyZU5hbWUiLCJjb21wYXJlUHJvY2VkdXJlTmFtZSIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwiaXNMYWJlbFByZXNlbnRCeUxhYmVsTm9kZSIsImxhYmVsTm9kZSIsImxhYmVsUHJlc2VudCIsInNvbWUiLCJsYWJlbCIsImxhYmVsTm9kZU1hdGNoZXMiLCJtYXRjaExhYmVsTm9kZSIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUiLCJpc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lIiwiaXNUeXBlUHJlZml4UHJlc2VudEJ5VHlwZVByZWZpeE5hbWUiLCJ0eXBlUHJlZml4UHJlc2VudCIsImlzRGVjbGFyZWRWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkVmFyaWFibGVQcmVzZW50IiwiaXNEZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc1Byb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVQcmVzZW50IiwiaXNNZXRhTGV2ZWwiLCJtZXRhTEV2ZWwiLCJjbGVhciIsImNvbXBsZXRlIiwidmVyaWZ5RmlsZSIsImZvcndhcmQiLCJiYWNrIiwiZ2V0Tm9kZSIsImZpbGVOb2RlIiwiXyIsImluaXRpYWxpc2UiLCJnZXRKU09OIiwiZmlsZUNvbnRleHQiLCJ0eXBlc0Zyb21KU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04iLCJkZWNsYXJlZFZhcmlhYmxlc0Zyb21KU09OIiwidHlwZVByZWZpeGVzRnJvbUpTT04iLCJnZW5lcmF0b3JzRnJvbUpTT04iLCJjb21iaW5hdG9yc0Zyb21KU09OIiwiY29uc3RydWN0b3JzRnJvbUpTT04iLCJydWxlc0Zyb21KU09OIiwiYXhpb21zRnJvbUpTT04iLCJzY2hlbWFzRnJvbUpTT04iLCJ0aGVvcmVtc0Zyb21KU09OIiwiY29uamVjdHVyZXNGcm9tSlNPTiIsInRvSlNPTiIsInR5cGVzSlNPTiIsInR5cGVzVG9UeXBlc0pTT04iLCJydWxlc0pTT04iLCJydWxlc1RvUnVsZXNKU09OIiwiYXhpb21zSlNPTiIsImF4aW9tc1RvQXhpb21zSlNPTiIsInNjaGVtYXNKU09OIiwic2NoZW1hc1RvU2NoZW1hc0pTT04iLCJ0aGVvcmVtc0pTT04iLCJ0aGVvcmVtc1RvVGhlb3JlbXNKU09OIiwiZ2VuZXJhdG9yc0pTT04iLCJnZW5lcmF0b3JzVG9HZW5lcmF0b3JzSlNPTiIsImNvbmplY3R1cmVzSlNPTiIsImNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04iLCJjb21iaW5hdG9yc0pTT04iLCJjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OIiwidHlwZVByZWZpeGVzSlNPTiIsInR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTiIsImNvbnN0cnVjdG9yc0pTT04iLCJjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04iLCJkZWNsYXJlZFZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc1RvRGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiIsImdldEZpbGVDb250ZW50IiwiZnJvbUZpbGUiLCJmaWxlIiwicmVsZWFzZUNvbnRleHQiLCJjb21iaW5lZEN1c3RvbUdyYW1tYXIiLCJnZXRDb21iaW5lZEN1c3RvbUdyYW1tYXIiLCJub21pbmFsTGV4ZXIiLCJOb21pbmFsTGV4ZXIiLCJub21pbmFsUGFyc2VyIiwiTm9taW5hbFBhcnNlciIsIm5vbWluYWxGaWxlQ29udGV4dCIsImZyb21KU09OIl0sIm1hcHBpbmdz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
|
|
@@ -50,7 +50,7 @@ const _default = (0, _elements.define)(class TypeDeclaration extends _declaratio
|
|
|
50
50
|
verifyType,
|
|
51
51
|
verifySuperTypes,
|
|
52
52
|
verifyTypePrefix
|
|
53
|
-
], context, (back)=>{
|
|
53
|
+
], context, (context, back)=>{
|
|
54
54
|
const properties = this.getProperties(), typePrefix = context.getTypePrefix(), prefixName = typePrefix !== null ? typePrefix.getPrefixName() : null;
|
|
55
55
|
this.type.setProvisional(this.provisional);
|
|
56
56
|
this.type.setProperties(properties);
|
|
@@ -140,4 +140,4 @@ const _default = (0, _elements.define)(class TypeDeclaration extends _declaratio
|
|
|
140
140
|
static name = "TypeDeclaration";
|
|
141
141
|
});
|
|
142
142
|
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gXCIuLi9kZWNsYXJhdGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGJhc2VUeXBlRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGFsbCwgZXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFR5cGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBzdXBlclR5cGVzLCBwcm92aXNpb25hbCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXM7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0U3VwZXJUeXBlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGVzO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldHR5cGVEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiB0eXBlRGVjbGFyYXRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0UHJvcGVydGllcygpIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gW107XG5cbiAgICByZXR1cm4gcHJvcGVydGllcztcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHR5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbi4uLmApO1xuXG4gICAgY29uc3QgdmVyaWZ5VHlwZSA9IHRoaXMudmVyaWZ5VHlwZS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZlcmlmeVN1cGVyVHlwZXMgPSB0aGlzLnZlcmlmeVN1cGVyVHlwZXMuYmluZCh0aGlzKSxcbiAgICAgICAgICB2ZXJpZnlUeXBlUHJlZml4ID0gdGhpcy52ZXJpZnlUeXBlUHJlZml4LmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZlcmlmeVR5cGUsXG4gICAgICB2ZXJpZnlTdXBlclR5cGVzLFxuICAgICAgdmVyaWZ5VHlwZVByZWZpeFxuICAgIF0sIGNvbnRleHQsIChiYWNrKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCksXG4gICAgICAgICAgICB0eXBlUHJlZml4ID0gY29udGV4dC5nZXRUeXBlUHJlZml4KCksXG4gICAgICAgICAgICBwcmVmaXhOYW1lID0gKHR5cGVQcmVmaXggIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVQcmVmaXguZ2V0UHJlZml4TmFtZSgpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICAgICAgdGhpcy50eXBlLnNldFByb3Zpc2lvbmFsKHRoaXMucHJvdmlzaW9uYWwpO1xuXG4gICAgICB0aGlzLnR5cGUuc2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzKTtcblxuICAgICAgdGhpcy50eXBlLnNldFByZWZpeE5hbWUocHJlZml4TmFtZSk7XG5cbiAgICAgIGNvbnRleHQuYWRkVHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZlcmlmeVR5cGUoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZS4uLmApO1xuXG4gICAgbGV0IHR5cGVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgIGluY2x1ZGVSZWxlYXNlID0gZmFsc2UsXG4gICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeVR5cGVOYW1lKHR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICBpZiAoIXR5cGVQcmVzZW50KSB7XG4gICAgICBjb25zdCBwcmVmaXhlZFR5cGVOYW1lID0gdHlwZU5hbWUsIC8vL1xuICAgICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSk7XG5cbiAgICAgIGlmICghdHlwZVByZXNlbnQpIHtcbiAgICAgICAgdHlwZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgfVxuXG4gICAgaWYgKCF0eXBlVmVyaWZpZXMpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZWApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlUeXBlUHJlZml4KGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIHR5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlRGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUncyBwcmVmaXguLi5gKTtcblxuICAgIGxldCB0eXBlUHJlZml4VmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHR5cGVQcmVmaXhlZCA9IHRoaXMudHlwZS5pc1ByZWZpeGVkKCk7XG5cbiAgICBpZiAoIXR5cGVQcmVmaXhlZCkge1xuICAgICAgdHlwZVByZWZpeFZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBwcmVmaXhlZC5gKTtcbiAgICB9XG5cbiAgICBpZiAoIXR5cGVQcmVmaXhWZXJpZmllcykge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJlZml4LmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGVzKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzIHN1cGVyLXR5cGVzLi4uYCk7XG5cbiAgICBjb25zdCBzdXBlclR5cGVzTGVuZ3RoID0gdGhpcy5zdXBlclR5cGVzLmxlbmd0aDtcblxuICAgIGlmIChzdXBlclR5cGVzTGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKSxcbiAgICAgICAgICAgIHN1cGVyVHl1cGUgPSBiYXNlVHlwZTsgIC8vL1xuXG4gICAgICB0aGlzLnR5cGUuc2V0U3VwZXJUeXBlKHN1cGVyVHl1cGUpO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdXBlclR5cGVzID0gW107IC8vL1xuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMuc3VwZXJUeXBlcywgKHN1cGVyVHlwZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5U3VwZXJUeXBlKHN1cGVyVHlwZSwgc3VwZXJUeXBlcywgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMudHlwZS5zZXRTdXBlclR5cGVzKHN1cGVyVHlwZXMpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzIHN1cGVyLXR5cGVzLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVN1cGVyVHlwZShzdXBlclR5cGUsIHN1cGVyVHlwZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlLi4uYCk7XG5cbiAgICBsZXQgc3VwZXJUeXBlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHN1cGVyVHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlTmFtZSA9IG5vbWluYWxUeXBlTmFtZSwgLy8vXG4gICAgICAgICAgdHlwZUNvbXBhcmVzVG9UeXBlTmFtZSA9IHRoaXMudHlwZS5jb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgaWYgKCF0eXBlQ29tcGFyZXNUb1R5cGVOYW1lKSB7XG4gICAgICBzdXBlclR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgaWYgKHN1cGVyVHlwZSAhPT0gbnVsbCkge1xuICAgICAgICBzdXBlclR5cGVzLnB1c2goc3VwZXJUeXBlKTtcblxuICAgICAgICBzdXBlclR5cGVWZXJpZmllcyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUncyBuYW1lIGNvbXBhcmVzIHRvIHRoZSAke3R5cGVOYW1lfScgdHlwZSdzIG5hbWUuYCk7XG4gICAgfVxuXG4gICAgaWYgKCFzdXBlclR5cGVWZXJpZmllcykge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUeXBlRGVjbGFyYXRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJhbGwiLCJldmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlR5cGVEZWNsYXJhdGlvbiIsIkRlY2xhcmF0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidHlwZSIsInN1cGVyVHlwZXMiLCJwcm92aXNpb25hbCIsImdldFR5cGUiLCJnZXRTdXBlclR5cGVzIiwiaXNQcm92aXNpb25hbCIsImdldHR5cGVEZWNsYXJhdGlvbk5vZGUiLCJnZXROb2RlIiwidHlwZURlY2xhcmF0aW9uTm9kZSIsImdldFByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJ0eXBlRGVjbGFyYXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZlcmlmeVR5cGUiLCJiaW5kIiwidmVyaWZ5U3VwZXJUeXBlcyIsInZlcmlmeVR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4IiwiZ2V0VHlwZVByZWZpeCIsInByZWZpeE5hbWUiLCJnZXRQcmVmaXhOYW1lIiwic2V0UHJvdmlzaW9uYWwiLCJzZXRQcm9wZXJ0aWVzIiwic2V0UHJlZml4TmFtZSIsImFkZFR5cGUiLCJkZWJ1ZyIsInR5cGVTdHJpbmciLCJ0eXBlVmVyaWZpZXMiLCJ0eXBlTmFtZSIsImdldE5hbWUiLCJpbmNsdWRlUmVsZWFzZSIsInR5cGVQcmVzZW50IiwiaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUiLCJwcmVmaXhlZFR5cGVOYW1lIiwiaXNUeXBlUHJlc2VudEJ5UHJlZml4ZWRUeXBlTmFtZSIsInR5cGVQcmVmaXhWZXJpZmllcyIsInR5cGVQcmVmaXhlZCIsImlzUHJlZml4ZWQiLCJzdXBlclR5cGVzTGVuZ3RoIiwibGVuZ3RoIiwiYmFzZVR5cGUiLCJiYXNlVHlwZUZyb21Ob3RoaW5nIiwic3VwZXJUeXVwZSIsInNldFN1cGVyVHlwZSIsInN1cGVyVHlwZSIsInZlcmlmeVN1cGVyVHlwZSIsInNldFN1cGVyVHlwZXMiLCJzdXBlclR5cGVTdHJpbmciLCJzdXBlclR5cGVWZXJpZmllcyIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsInR5cGVDb21wYXJlc1RvVHlwZU5hbWUiLCJjb21wYXJlVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwicHVzaCIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBQTs7O2dDQVYyRDtvRUFFbkM7MEJBRUQ7c0JBQ2E7Ozs7OztBQUVwQyxNQUFNLEVBQUVBLFNBQVMsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDbkMsRUFBRUMsR0FBRyxFQUFFQyxLQUFLLEVBQUUsR0FBR0MscUNBQXFCO01BRTVDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsd0JBQXdCQyxvQkFBVztJQUM3RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxXQUFXLENBQUU7UUFDNUUsS0FBSyxDQUFDTixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBO0lBQ3JCO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0gsSUFBSTtJQUNsQjtJQUVBSSxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0gsVUFBVTtJQUN4QjtJQUVBSSxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0gsV0FBVztJQUN6QjtJQUVBSSx5QkFBeUI7UUFDdkIsTUFBTVIsT0FBTyxJQUFJLENBQUNTLE9BQU8sSUFDbkJDLHNCQUFzQlYsTUFBTSxHQUFHO1FBRXJDLE9BQU9VO0lBQ1Q7SUFFQUMsZ0JBQWdCO1FBQ2QsTUFBTUMsYUFBYSxFQUFFO1FBRXJCLE9BQU9BO0lBQ1Q7SUFFQUMsU0FBU3ZCLFVBQVUsU0FBVVEsT0FBTyxFQUFFZ0IsT0FBTyxFQUFFQyxJQUFJO1FBQ2pELE1BQU1DLHdCQUF3QixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXBEbkIsUUFBUW9CLEtBQUssQ0FBQyxDQUFD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
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gXCIuLi9kZWNsYXJhdGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGJhc2VUeXBlRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGFsbCwgZXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFR5cGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBzdXBlclR5cGVzLCBwcm92aXNpb25hbCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXM7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0U3VwZXJUeXBlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGVzO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldHR5cGVEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiB0eXBlRGVjbGFyYXRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0UHJvcGVydGllcygpIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gW107XG5cbiAgICByZXR1cm4gcHJvcGVydGllcztcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHR5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbi4uLmApO1xuXG4gICAgY29uc3QgdmVyaWZ5VHlwZSA9IHRoaXMudmVyaWZ5VHlwZS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZlcmlmeVN1cGVyVHlwZXMgPSB0aGlzLnZlcmlmeVN1cGVyVHlwZXMuYmluZCh0aGlzKSxcbiAgICAgICAgICB2ZXJpZnlUeXBlUHJlZml4ID0gdGhpcy52ZXJpZnlUeXBlUHJlZml4LmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZlcmlmeVR5cGUsXG4gICAgICB2ZXJpZnlTdXBlclR5cGVzLFxuICAgICAgdmVyaWZ5VHlwZVByZWZpeFxuICAgIF0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCksXG4gICAgICAgICAgICB0eXBlUHJlZml4ID0gY29udGV4dC5nZXRUeXBlUHJlZml4KCksXG4gICAgICAgICAgICBwcmVmaXhOYW1lID0gKHR5cGVQcmVmaXggIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVQcmVmaXguZ2V0UHJlZml4TmFtZSgpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICAgICAgdGhpcy50eXBlLnNldFByb3Zpc2lvbmFsKHRoaXMucHJvdmlzaW9uYWwpO1xuXG4gICAgICB0aGlzLnR5cGUuc2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzKTtcblxuICAgICAgdGhpcy50eXBlLnNldFByZWZpeE5hbWUocHJlZml4TmFtZSk7XG5cbiAgICAgIGNvbnRleHQuYWRkVHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZlcmlmeVR5cGUoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZS4uLmApO1xuXG4gICAgbGV0IHR5cGVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgIGluY2x1ZGVSZWxlYXNlID0gZmFsc2UsXG4gICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeVR5cGVOYW1lKHR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICBpZiAoIXR5cGVQcmVzZW50KSB7XG4gICAgICBjb25zdCBwcmVmaXhlZFR5cGVOYW1lID0gdHlwZU5hbWUsIC8vL1xuICAgICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSk7XG5cbiAgICAgIGlmICghdHlwZVByZXNlbnQpIHtcbiAgICAgICAgdHlwZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgfVxuXG4gICAgaWYgKCF0eXBlVmVyaWZpZXMpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZWApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlUeXBlUHJlZml4KGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIHR5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlRGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUncyBwcmVmaXguLi5gKTtcblxuICAgIGxldCB0eXBlUHJlZml4VmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHR5cGVQcmVmaXhlZCA9IHRoaXMudHlwZS5pc1ByZWZpeGVkKCk7XG5cbiAgICBpZiAoIXR5cGVQcmVmaXhlZCkge1xuICAgICAgdHlwZVByZWZpeFZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBwcmVmaXhlZC5gKTtcbiAgICB9XG5cbiAgICBpZiAoIXR5cGVQcmVmaXhWZXJpZmllcykge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJlZml4LmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGVzKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzIHN1cGVyLXR5cGVzLi4uYCk7XG5cbiAgICBjb25zdCBzdXBlclR5cGVzTGVuZ3RoID0gdGhpcy5zdXBlclR5cGVzLmxlbmd0aDtcblxuICAgIGlmIChzdXBlclR5cGVzTGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKSxcbiAgICAgICAgICAgIHN1cGVyVHl1cGUgPSBiYXNlVHlwZTsgIC8vL1xuXG4gICAgICB0aGlzLnR5cGUuc2V0U3VwZXJUeXBlKHN1cGVyVHl1cGUpO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdXBlclR5cGVzID0gW107IC8vL1xuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMuc3VwZXJUeXBlcywgKHN1cGVyVHlwZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5U3VwZXJUeXBlKHN1cGVyVHlwZSwgc3VwZXJUeXBlcywgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMudHlwZS5zZXRTdXBlclR5cGVzKHN1cGVyVHlwZXMpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzIHN1cGVyLXR5cGVzLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVN1cGVyVHlwZShzdXBlclR5cGUsIHN1cGVyVHlwZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlLi4uYCk7XG5cbiAgICBsZXQgc3VwZXJUeXBlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHN1cGVyVHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlTmFtZSA9IG5vbWluYWxUeXBlTmFtZSwgLy8vXG4gICAgICAgICAgdHlwZUNvbXBhcmVzVG9UeXBlTmFtZSA9IHRoaXMudHlwZS5jb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgaWYgKCF0eXBlQ29tcGFyZXNUb1R5cGVOYW1lKSB7XG4gICAgICBzdXBlclR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgaWYgKHN1cGVyVHlwZSAhPT0gbnVsbCkge1xuICAgICAgICBzdXBlclR5cGVzLnB1c2goc3VwZXJUeXBlKTtcblxuICAgICAgICBzdXBlclR5cGVWZXJpZmllcyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUncyBuYW1lIGNvbXBhcmVzIHRvIHRoZSAke3R5cGVOYW1lfScgdHlwZSdzIG5hbWUuYCk7XG4gICAgfVxuXG4gICAgaWYgKCFzdXBlclR5cGVWZXJpZmllcykge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUeXBlRGVjbGFyYXRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJhbGwiLCJldmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlR5cGVEZWNsYXJhdGlvbiIsIkRlY2xhcmF0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidHlwZSIsInN1cGVyVHlwZXMiLCJwcm92aXNpb25hbCIsImdldFR5cGUiLCJnZXRTdXBlclR5cGVzIiwiaXNQcm92aXNpb25hbCIsImdldHR5cGVEZWNsYXJhdGlvbk5vZGUiLCJnZXROb2RlIiwidHlwZURlY2xhcmF0aW9uTm9kZSIsImdldFByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJ0eXBlRGVjbGFyYXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZlcmlmeVR5cGUiLCJiaW5kIiwidmVyaWZ5U3VwZXJUeXBlcyIsInZlcmlmeVR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4IiwiZ2V0VHlwZVByZWZpeCIsInByZWZpeE5hbWUiLCJnZXRQcmVmaXhOYW1lIiwic2V0UHJvdmlzaW9uYWwiLCJzZXRQcm9wZXJ0aWVzIiwic2V0UHJlZml4TmFtZSIsImFkZFR5cGUiLCJkZWJ1ZyIsInR5cGVTdHJpbmciLCJ0eXBlVmVyaWZpZXMiLCJ0eXBlTmFtZSIsImdldE5hbWUiLCJpbmNsdWRlUmVsZWFzZSIsInR5cGVQcmVzZW50IiwiaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUiLCJwcmVmaXhlZFR5cGVOYW1lIiwiaXNUeXBlUHJlc2VudEJ5UHJlZml4ZWRUeXBlTmFtZSIsInR5cGVQcmVmaXhWZXJpZmllcyIsInR5cGVQcmVmaXhlZCIsImlzUHJlZml4ZWQiLCJzdXBlclR5cGVzTGVuZ3RoIiwibGVuZ3RoIiwiYmFzZVR5cGUiLCJiYXNlVHlwZUZyb21Ob3RoaW5nIiwic3VwZXJUeXVwZSIsInNldFN1cGVyVHlwZSIsInN1cGVyVHlwZSIsInZlcmlmeVN1cGVyVHlwZSIsInNldFN1cGVyVHlwZXMiLCJzdXBlclR5cGVTdHJpbmciLCJzdXBlclR5cGVWZXJpZmllcyIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsInR5cGVDb21wYXJlc1RvVHlwZU5hbWUiLCJjb21wYXJlVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwicHVzaCIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBQTs7O2dDQVYyRDtvRUFFbkM7MEJBRUQ7c0JBQ2E7Ozs7OztBQUVwQyxNQUFNLEVBQUVBLFNBQVMsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDbkMsRUFBRUMsR0FBRyxFQUFFQyxLQUFLLEVBQUUsR0FBR0MscUNBQXFCO01BRTVDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsd0JBQXdCQyxvQkFBVztJQUM3RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxXQUFXLENBQUU7UUFDNUUsS0FBSyxDQUFDTixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBO0lBQ3JCO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0gsSUFBSTtJQUNsQjtJQUVBSSxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0gsVUFBVTtJQUN4QjtJQUVBSSxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0gsV0FBVztJQUN6QjtJQUVBSSx5QkFBeUI7UUFDdkIsTUFBTVIsT0FBTyxJQUFJLENBQUNTLE9BQU8sSUFDbkJDLHNCQUFzQlYsTUFBTSxHQUFHO1FBRXJDLE9BQU9VO0lBQ1Q7SUFFQUMsZ0JBQWdCO1FBQ2QsTUFBTUMsYUFBYSxFQUFFO1FBRXJCLE9BQU9BO0lBQ1Q7SUFFQUMsU0FBU3ZCLFVBQVUsU0FBVVEsT0FBTyxFQUFFZ0IsT0FBTyxFQUFFQyxJQUFJO1FBQ2pELE1BQU1DLHdCQUF3QixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXBEbkIsUUFBUW9CLEtBQUss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
|
package/lib/element/equality.js
CHANGED
|
@@ -83,7 +83,7 @@ const _default = (0, _elements.define)(class Equality extends _occamlanguages.El
|
|
|
83
83
|
validateWhenDerived
|
|
84
84
|
], state, context, (state, context, back)=>{
|
|
85
85
|
equality = this; ///
|
|
86
|
-
this.assign(
|
|
86
|
+
this.assign(state, context);
|
|
87
87
|
context.addEquality(equality);
|
|
88
88
|
context.debug(`...validated the '${equalityString}equality.`);
|
|
89
89
|
return forward(equality, context, back);
|
|
@@ -190,4 +190,4 @@ function rightTermFromEqualityNode(equalityNode, context) {
|
|
|
190
190
|
return rightTerm;
|
|
191
191
|
}
|
|
192
192
|
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2VxdWFsaXR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZXF1YXRlVGVybXMgfSBmcm9tIFwiLi4vcHJvY2Vzcy9lcXVhdGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUVxdWFsaXR5IH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGVxdWFsaXR5RnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IGlzRGVyaXZlZCwgaXNEZWNsYXJlZCwgaXNUcmFuc2llbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBlcXVhbGl0eUFzc2lnbm1lbnRGcm9tRXF1YWxpdHksIGxlZnRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHksIHJpZ2h0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5IH0gZnJvbSBcIi4uL3Byb2Nlc3MvYXNzaWduXCI7XG5cbmNvbnN0IHsgYWxsLCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEVxdWFsaXR5IGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmVnYXRlZCwgbGVmdFRlcm0sIHJpZ2h0VGVybSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLm5lZ2F0ZWQgPSBuZWdhdGVkO1xuICAgIHRoaXMubGVmdFRlcm0gPSBsZWZ0VGVybTtcbiAgICB0aGlzLnJpZ2h0VGVybSA9IHJpZ2h0VGVybTtcbiAgfVxuXG4gIGlzTmVnYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGVkO1xuICB9XG5cbiAgZ2V0TGVmdFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMubGVmdFRlcm07XG4gIH1cblxuICBnZXRSaWdodFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMucmlnaHRUZXJtO1xuICB9XG5cbiAgZ2V0RXF1YWxpdHlOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBlcXVhbGl0eU5kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5TmRlO1xuICB9XG5cbiAgZ2V0TGVmdFRlcm1Ob2RlKCkge1xuICAgIGNvbnN0IGxlZnRUZXJtTm9kZSA9IHRoaXMubGVmdFRlcm0uZ2V0Tm9kZSgpO1xuXG4gICAgcmV0dXJuIGxlZnRUZXJtTm9kZTtcbiAgfVxuXG4gIGdldFJpZ2h0VGVybU5vZGUoKSB7XG4gICAgY29uc3QgcmlnaHRUZXJtTm9kZSA9IHRoaXMucmlnaHRUZXJtLmdldE5vZGUoKTtcblxuICAgIHJldHVybiByaWdodFRlcm1Ob2RlO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgY29uc3QgdGVybXMgPSBbXG4gICAgICB0aGlzLmxlZnRUZXJtLFxuICAgICAgdGhpcy5yaWdodFRlcm1cbiAgICBdO1xuXG4gICAgcmV0dXJuIHRlcm1zO1xuICB9XG5cbiAgbWF0Y2hFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IGVxdWFsaXR5Tm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBlcXVhbGl0eU5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5Tm9kZU1hdGNoZXM7XG4gIH1cblxuICBpc0VxdWFsVG8oZXF1YWxpdHkpIHtcbiAgICBjb25zdCBlcXVhbGl0eU5vZGUgPSBlcXVhbGl0eS5nZXROb2RlKCksXG4gICAgICAgICAgZXF1YWxpdHlOb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gZXF1YWxpdHlOb2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBmaW5kRXF1YWxpdHkoY29udGV4dCkge1xuICAgIGNvbnN0IGVxdWFsaXR5Tm9kZSA9IHRoaXMuZ2V0RXF1YWxpdHlOb2RlKCksXG4gICAgICAgICAgZXF1YWxpdHkgPSBjb250ZXh0LmZpbmRFcXVhbGl0eUJ5RXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBlcXVhbGl0eTtcblxuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eS4uLmApO1xuXG4gICAgZXF1YWxpdHkgPSB0aGlzLmZpbmRFcXVhbGl0eShjb250ZXh0KTtcblxuICAgIGlmIChlcXVhbGl0eSAhPT0gbnVsbCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChlcXVhbGl0eSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGVUZXJtcyA9IHRoaXMudmFsaWRhdGVUZXJtcy5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICB2YWxpZGF0ZVRlcm1zXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBlcXVhbGl0eSA9IHRoaXM7IC8vL1xuXG4gICAgICAgIHRoaXMuYXNzaWduKGNvbnRleHQsIGJhY2spO1xuXG4gICAgICAgIGNvbnRleHQuYWRkRXF1YWxpdHkoZXF1YWxpdHkpO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9ZXF1YWxpdHkuYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoZXF1YWxpdHksIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG5cbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eSdzIHRlcm1zLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5sZWZ0VGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxlZnRUZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5yaWdodFRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChyaWdodFRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgbGVmdFRlcm1UeXBlID0gbGVmdFRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICByaWdodFRlcm1UeXBlID0gcmlnaHRUZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgbGVmdFRlcm1UeXBlQmFzZVR5cGUgPSBsZWZ0VGVybVR5cGUuaXNCYXNlVHlwZSgpLFxuICAgICAgICAgICAgICByaWdodFRlcm1UeXBlQmFzZVR5cGUgPSByaWdodFRlcm1UeXBlLmlzQmFzZVR5cGUoKSxcbiAgICAgICAgICAgICAgbGVmdFRlcm1UeXBlSm9pbmVkVG9SaWdodFRlcm1UeXBlID0gbGVmdFRlcm1UeXBlLmlzSm9pbmVkVG8ocmlnaHRUZXJtVHlwZSk7XG5cbiAgICAgICAgaWYgKCFsZWZ0VGVybVR5cGVCYXNlVHlwZSAmJiAhcmlnaHRUZXJtVHlwZUJhc2VUeXBlICYmICFsZWZ0VGVybVR5cGVKb2luZWRUb1JpZ2h0VGVybVR5cGUpIHtcbiAgICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sZWZ0VGVybSA9IGxlZnRUZXJtO1xuXG4gICAgICAgIHRoaXMucmlnaHRUZXJtID0gcmlnaHRUZXJtO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eSdzIHRlcm1zLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZWNsYXJlZCA9IGlzRGVjbGFyZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZWNsYXJlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBkZWNsYXJlZCBlcXVhbGl0eS4uLmApO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGRlY2xhcmVkIGVxdWFsaXR5LmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVyaXZlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZXJpdmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGRlcml2ZWQgZXF1YWxpdHkuLi5gKTtcblxuICAgIGNvbnN0IHRlcm1zRXF1YXRlID0gZXF1YXRlVGVybXModGhpcy5sZWZ0VGVybSwgdGhpcy5yaWdodFRlcm0sIGNvbnRleHQpO1xuXG4gICAgaWYgKCh0aGlzLm5lZ2F0ZWQgJiYgdGVybXNFcXVhdGUpIHx8ICghdGhpcy5uZWdhdGVkICYmICF0ZXJtc0VxdWF0ZSkpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGRlcml2ZWQgZXF1YWxpdHkuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gIH1cblxuICBhc3NpZ24oc3RhdGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCB0cmFuc2llbnQgPSBpc1RyYW5zaWVudChzdGF0ZSk7XG5cbiAgICBpZiAodHJhbnNpZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmVnYXRlZCA9IHRoaXMuaXNOZWdhdGVkKCk7XG5cbiAgICBpZiAobmVnYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVxdWFsaXR5ID0gdGhpczsgIC8vL1xuXG4gICAgY29uc3QgZXF1YWxpdHlBc3NpZ25tZW50ID0gZXF1YWxpdHlBc3NpZ25tZW50RnJvbUVxdWFsaXR5KGVxdWFsaXR5LCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudChlcXVhbGl0eUFzc2lnbm1lbnQpO1xuXG4gICAgY29uc3QgZGVyaXZlZCA9IGlzRGVyaXZlZChzdGF0ZSk7XG5cbiAgICBpZiAoZGVyaXZlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxlZnRWYXJpYWJsZUFzc2lnbm1lbnQgPSBsZWZ0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5KGVxdWFsaXR5LCBjb250ZXh0KSxcbiAgICAgICAgICByaWdodFZhcmlhYmxlQXNzaWdubWVudCA9IHJpZ2h0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5KGVxdWFsaXR5LCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudChsZWZ0VmFyaWFibGVBc3NpZ25tZW50KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudChyaWdodFZhcmlhYmxlQXNzaWdubWVudCk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgIHN0cmluZyxcbiAgICAgIGJyZWFrUG9pbnRcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRXF1YWxpdHlcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBlcXVhbGl0eTtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIGVxdWFsaXR5Tm9kZSA9IGluc3RhbnRpYXRlRXF1YWxpdHkoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgIG5vZGUgPSBlcXVhbGl0eU5vZGUsICAvLy9cbiAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICBuZWdhdGVkID0gbmVnYXRlZEZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIGxlZnRUZXJtID0gbGVmdFRlcm1Gcm9tRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICByaWdodFRlcm0gPSByaWdodFRlcm1Gcm9tRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICBlcXVhbGl0eSA9IG5ldyBFcXVhbGl0eShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5lZ2F0ZWQsIGxlZnRUZXJtLCByaWdodFRlcm0pO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgZXF1YWxpdHkgPSBlcXVhbGl0eUZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9XG59KTtcblxuZnVuY3Rpb24gbmVnYXRlZEZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5lZ2F0ZWQgPSBlcXVhbGl0eU5vZGUuaXNOZWdhdGVkKCk7XG5cbiAgcmV0dXJuIG5lZ2F0ZWQ7XG59XG5cbmZ1bmN0aW9uIGxlZnRUZXJtRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbGVmdFRlcm1Ob2RlID0gZXF1YWxpdHlOb2RlLmdldExlZnRUZXJtTm9kZSgpLFxuICAgICAgICBsZWZ0VGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKGxlZnRUZXJtTm9kZSk7XG5cbiAgcmV0dXJuIGxlZnRUZXJtO1xufVxuXG5mdW5jdGlvbiByaWdodFRlcm1Gcm9tRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCByaWdodFRlcm1Ob2RlID0gZXF1YWxpdHlOb2RlLmdldExlZnRUZXJtTm9kZSgpLFxuICAgICAgICByaWdodFRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZShyaWdodFRlcm1Ob2RlKTtcblxuICByZXR1cm4gcmlnaHRUZXJtO1xufVxuIl0sIm5hbWVzIjpbImFsbCIsImV4aXN0cyIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkVxdWFsaXR5IiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsIm5lZ2F0ZWQiLCJsZWZ0VGVybSIsInJpZ2h0VGVybSIsImlzTmVnYXRlZCIsImdldExlZnRUZXJtIiwiZ2V0UmlnaHRUZXJtIiwiZ2V0RXF1YWxpdHlOb2RlIiwiZ2V0Tm9kZSIsImVxdWFsaXR5TmRlIiwiZ2V0TGVmdFRlcm1Ob2RlIiwibGVmdFRlcm1Ob2RlIiwiZ2V0UmlnaHRUZXJtTm9kZSIsInJpZ2h0VGVybU5vZGUiLCJnZXRUZXJtcyIsInRlcm1zIiwibWF0Y2hFcXVhbGl0eU5vZGUiLCJlcXVhbGl0eU5vZGUiLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsImVxdWFsaXR5Tm9kZU1hdGNoZXMiLCJpc0VxdWFsVG8iLCJlcXVhbGl0eSIsImVxdWFsVG8iLCJmaW5kRXF1YWxpdHkiLCJmaW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZSIsInZhbGlkYXRlIiwic3RhdGUiLCJmb3J3YXJkIiwiYmFjayIsImVxdWFsaXR5U3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsInZhbGlkYXRlVGVybXMiLCJiaW5kIiwidmFsaWRhdGVXaGVuRGVjbGFyZWQiLCJ2YWxpZGF0ZVdoZW5EZXJpdmVkIiwiYXNzaWduIiwiYWRkRXF1YWxpdHkiLCJsZWZ0VGVybVR5cGUiLCJnZXRUeXBlIiwicmlnaHRUZXJtVHlwZSIsImxlZnRUZXJtVHlwZUJhc2VUeXBlIiwiaXNCYXNlVHlwZSIsInJpZ2h0VGVybVR5cGVCYXNlVHlwZSIsImxlZnRUZXJtVHlwZUpvaW5lZFRvUmlnaHRUZXJtVHlwZSIsImlzSm9pbmVkVG8iLCJkZWNsYXJlZCIsImlzRGVjbGFyZWQiLCJkZXJpdmVkIiwiaXNEZXJpdmVkIiwidGVybXNFcXVhdGUiLCJlcXVhdGVUZXJtcyIsInRyYW5zaWVudCIsImlzVHJhbnNpZW50IiwiZXF1YWxpdHlBc3NpZ25tZW50IiwiZXF1YWxpdHlBc3NpZ25tZW50RnJvbUVxdWFsaXR5IiwiYWRkQXNzaWdubWVudCIsImxlZnRWYXJpYWJsZUFzc2lnbm1lbnQiLCJsZWZ0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5IiwicmlnaHRWYXJpYWJsZUFzc2lnbm1lbnQiLCJyaWdodFZhcmlhYmxlQXNzaWdubWVudEZyb21FcXVhbGl0eSIsInRvSlNPTiIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlRXF1YWxpdHkiLCJuZWdhdGVkRnJvbUVxdWFsaXR5Tm9kZSIsImxlZnRUZXJtRnJvbUVxdWFsaXR5Tm9kZSIsInJpZ2h0VGVybUZyb21FcXVhbGl0eU5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImVxdWFsaXR5RnJvbVN0YXRlbWVudE5vZGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWVBOzs7ZUFBQTs7O2dDQWJvRTswQkFFN0M7d0JBQ0s7eUJBQ0E7NkJBQ1E7eUJBQ007dUJBQ1M7d0JBQ3FFO0FBRXhILE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MscUNBQXFCLEVBQ3ZDLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFOUUsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxpQkFBaUJDLHVCQUFPO0lBQ2xELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsT0FBTyxFQUFFQyxRQUFRLEVBQUVDLFNBQVMsQ0FBRTtRQUMzRSxLQUFLLENBQUNOLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsT0FBTyxHQUFHQTtR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
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2VxdWFsaXR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZXF1YXRlVGVybXMgfSBmcm9tIFwiLi4vcHJvY2Vzcy9lcXVhdGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUVxdWFsaXR5IH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGVxdWFsaXR5RnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IGlzRGVyaXZlZCwgaXNEZWNsYXJlZCwgaXNUcmFuc2llbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBlcXVhbGl0eUFzc2lnbm1lbnRGcm9tRXF1YWxpdHksIGxlZnRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHksIHJpZ2h0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5IH0gZnJvbSBcIi4uL3Byb2Nlc3MvYXNzaWduXCI7XG5cbmNvbnN0IHsgYWxsLCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEVxdWFsaXR5IGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmVnYXRlZCwgbGVmdFRlcm0sIHJpZ2h0VGVybSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLm5lZ2F0ZWQgPSBuZWdhdGVkO1xuICAgIHRoaXMubGVmdFRlcm0gPSBsZWZ0VGVybTtcbiAgICB0aGlzLnJpZ2h0VGVybSA9IHJpZ2h0VGVybTtcbiAgfVxuXG4gIGlzTmVnYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGVkO1xuICB9XG5cbiAgZ2V0TGVmdFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMubGVmdFRlcm07XG4gIH1cblxuICBnZXRSaWdodFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMucmlnaHRUZXJtO1xuICB9XG5cbiAgZ2V0RXF1YWxpdHlOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBlcXVhbGl0eU5kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5TmRlO1xuICB9XG5cbiAgZ2V0TGVmdFRlcm1Ob2RlKCkge1xuICAgIGNvbnN0IGxlZnRUZXJtTm9kZSA9IHRoaXMubGVmdFRlcm0uZ2V0Tm9kZSgpO1xuXG4gICAgcmV0dXJuIGxlZnRUZXJtTm9kZTtcbiAgfVxuXG4gIGdldFJpZ2h0VGVybU5vZGUoKSB7XG4gICAgY29uc3QgcmlnaHRUZXJtTm9kZSA9IHRoaXMucmlnaHRUZXJtLmdldE5vZGUoKTtcblxuICAgIHJldHVybiByaWdodFRlcm1Ob2RlO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgY29uc3QgdGVybXMgPSBbXG4gICAgICB0aGlzLmxlZnRUZXJtLFxuICAgICAgdGhpcy5yaWdodFRlcm1cbiAgICBdO1xuXG4gICAgcmV0dXJuIHRlcm1zO1xuICB9XG5cbiAgbWF0Y2hFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IGVxdWFsaXR5Tm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBlcXVhbGl0eU5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5Tm9kZU1hdGNoZXM7XG4gIH1cblxuICBpc0VxdWFsVG8oZXF1YWxpdHkpIHtcbiAgICBjb25zdCBlcXVhbGl0eU5vZGUgPSBlcXVhbGl0eS5nZXROb2RlKCksXG4gICAgICAgICAgZXF1YWxpdHlOb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gZXF1YWxpdHlOb2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBmaW5kRXF1YWxpdHkoY29udGV4dCkge1xuICAgIGNvbnN0IGVxdWFsaXR5Tm9kZSA9IHRoaXMuZ2V0RXF1YWxpdHlOb2RlKCksXG4gICAgICAgICAgZXF1YWxpdHkgPSBjb250ZXh0LmZpbmRFcXVhbGl0eUJ5RXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBlcXVhbGl0eTtcblxuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eS4uLmApO1xuXG4gICAgZXF1YWxpdHkgPSB0aGlzLmZpbmRFcXVhbGl0eShjb250ZXh0KTtcblxuICAgIGlmIChlcXVhbGl0eSAhPT0gbnVsbCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChlcXVhbGl0eSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGVUZXJtcyA9IHRoaXMudmFsaWRhdGVUZXJtcy5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICB2YWxpZGF0ZVRlcm1zXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBlcXVhbGl0eSA9IHRoaXM7IC8vL1xuXG4gICAgICAgIHRoaXMuYXNzaWduKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0LmFkZEVxdWFsaXR5KGVxdWFsaXR5KTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfWVxdWFsaXR5LmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGVxdWFsaXR5LCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGJhY2spO1xuXG4gIH1cblxuICB2YWxpZGF0ZVRlcm1zKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZXF1YWxpdHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkncyB0ZXJtcy4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMubGVmdFRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChsZWZ0VGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucmlnaHRUZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocmlnaHRUZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IGxlZnRUZXJtVHlwZSA9IGxlZnRUZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgcmlnaHRUZXJtVHlwZSA9IHJpZ2h0VGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgIGxlZnRUZXJtVHlwZUJhc2VUeXBlID0gbGVmdFRlcm1UeXBlLmlzQmFzZVR5cGUoKSxcbiAgICAgICAgICAgICAgcmlnaHRUZXJtVHlwZUJhc2VUeXBlID0gcmlnaHRUZXJtVHlwZS5pc0Jhc2VUeXBlKCksXG4gICAgICAgICAgICAgIGxlZnRUZXJtVHlwZUpvaW5lZFRvUmlnaHRUZXJtVHlwZSA9IGxlZnRUZXJtVHlwZS5pc0pvaW5lZFRvKHJpZ2h0VGVybVR5cGUpO1xuXG4gICAgICAgIGlmICghbGVmdFRlcm1UeXBlQmFzZVR5cGUgJiYgIXJpZ2h0VGVybVR5cGVCYXNlVHlwZSAmJiAhbGVmdFRlcm1UeXBlSm9pbmVkVG9SaWdodFRlcm1UeXBlKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGVmdFRlcm0gPSBsZWZ0VGVybTtcblxuICAgICAgICB0aGlzLnJpZ2h0VGVybSA9IHJpZ2h0VGVybTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkncyB0ZXJtcy5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlY2xhcmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVjbGFyZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZXF1YWxpdHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZGVjbGFyZWQgZXF1YWxpdHkuLi5gKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBkZWNsYXJlZCBlcXVhbGl0eS5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBkZXJpdmVkIGVxdWFsaXR5Li4uYCk7XG5cbiAgICBjb25zdCB0ZXJtc0VxdWF0ZSA9IGVxdWF0ZVRlcm1zKHRoaXMubGVmdFRlcm0sIHRoaXMucmlnaHRUZXJtLCBjb250ZXh0KTtcblxuICAgIGlmICgodGhpcy5uZWdhdGVkICYmIHRlcm1zRXF1YXRlKSB8fCAoIXRoaXMubmVnYXRlZCAmJiAhdGVybXNFcXVhdGUpKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBkZXJpdmVkIGVxdWFsaXR5LmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgYXNzaWduKHN0YXRlLCBjb250ZXh0KSB7XG4gICAgY29uc3QgdHJhbnNpZW50ID0gaXNUcmFuc2llbnQoc3RhdGUpO1xuXG4gICAgaWYgKHRyYW5zaWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5lZ2F0ZWQgPSB0aGlzLmlzTmVnYXRlZCgpO1xuXG4gICAgaWYgKG5lZ2F0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcXVhbGl0eSA9IHRoaXM7ICAvLy9cblxuICAgIGNvbnN0IGVxdWFsaXR5QXNzaWdubWVudCA9IGVxdWFsaXR5QXNzaWdubWVudEZyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2lnbm1lbnQoZXF1YWxpdHlBc3NpZ25tZW50KTtcblxuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsZWZ0VmFyaWFibGVBc3NpZ25tZW50ID0gbGVmdFZhcmlhYmxlQXNzaWdubWVudEZyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCksXG4gICAgICAgICAgcmlnaHRWYXJpYWJsZUFzc2lnbm1lbnQgPSByaWdodFZhcmlhYmxlQXNzaWdubWVudEZyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2lnbm1lbnQobGVmdFZhcmlhYmxlQXNzaWdubWVudCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2lnbm1lbnQocmlnaHRWYXJpYWJsZUFzc2lnbm1lbnQpO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICBzdHJpbmcsXG4gICAgICBicmVha1BvaW50XG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkVxdWFsaXR5XCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgZXF1YWxpdHk7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBlcXVhbGl0eU5vZGUgPSBpbnN0YW50aWF0ZUVxdWFsaXR5KHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gZXF1YWxpdHlOb2RlLCAgLy8vXG4gICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgbmVnYXRlZCA9IG5lZ2F0ZWRGcm9tRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICBsZWZ0VGVybSA9IGxlZnRUZXJtRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgcmlnaHRUZXJtID0gcmlnaHRUZXJtRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgZXF1YWxpdHkgPSBuZXcgRXF1YWxpdHkoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuZWdhdGVkLCBsZWZ0VGVybSwgcmlnaHRUZXJtKTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGVxdWFsaXR5ID0gZXF1YWxpdHlGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIG5lZ2F0ZWRGcm9tRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuZWdhdGVkID0gZXF1YWxpdHlOb2RlLmlzTmVnYXRlZCgpO1xuXG4gIHJldHVybiBuZWdhdGVkO1xufVxuXG5mdW5jdGlvbiBsZWZ0VGVybUZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGxlZnRUZXJtTm9kZSA9IGVxdWFsaXR5Tm9kZS5nZXRMZWZ0VGVybU5vZGUoKSxcbiAgICAgICAgbGVmdFRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZShsZWZ0VGVybU5vZGUpO1xuXG4gIHJldHVybiBsZWZ0VGVybTtcbn1cblxuZnVuY3Rpb24gcmlnaHRUZXJtRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmlnaHRUZXJtTm9kZSA9IGVxdWFsaXR5Tm9kZS5nZXRMZWZ0VGVybU5vZGUoKSxcbiAgICAgICAgcmlnaHRUZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUocmlnaHRUZXJtTm9kZSk7XG5cbiAgcmV0dXJuIHJpZ2h0VGVybTtcbn1cbiJdLCJuYW1lcyI6WyJhbGwiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJFcXVhbGl0eSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJuZWdhdGVkIiwibGVmdFRlcm0iLCJyaWdodFRlcm0iLCJpc05lZ2F0ZWQiLCJnZXRMZWZ0VGVybSIsImdldFJpZ2h0VGVybSIsImdldEVxdWFsaXR5Tm9kZSIsImdldE5vZGUiLCJlcXVhbGl0eU5kZSIsImdldExlZnRUZXJtTm9kZSIsImxlZnRUZXJtTm9kZSIsImdldFJpZ2h0VGVybU5vZGUiLCJyaWdodFRlcm1Ob2RlIiwiZ2V0VGVybXMiLCJ0ZXJtcyIsIm1hdGNoRXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlOb2RlIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJlcXVhbGl0eU5vZGVNYXRjaGVzIiwiaXNFcXVhbFRvIiwiZXF1YWxpdHkiLCJlcXVhbFRvIiwiZmluZEVxdWFsaXR5IiwiZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUiLCJ2YWxpZGF0ZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJlcXVhbGl0eVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm1zIiwiYmluZCIsInZhbGlkYXRlV2hlbkRlY2xhcmVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImFzc2lnbiIsImFkZEVxdWFsaXR5IiwibGVmdFRlcm1UeXBlIiwiZ2V0VHlwZSIsInJpZ2h0VGVybVR5cGUiLCJsZWZ0VGVybVR5cGVCYXNlVHlwZSIsImlzQmFzZVR5cGUiLCJyaWdodFRlcm1UeXBlQmFzZVR5cGUiLCJsZWZ0VGVybVR5cGVKb2luZWRUb1JpZ2h0VGVybVR5cGUiLCJpc0pvaW5lZFRvIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsInRlcm1zRXF1YXRlIiwiZXF1YXRlVGVybXMiLCJ0cmFuc2llbnQiLCJpc1RyYW5zaWVudCIsImVxdWFsaXR5QXNzaWdubWVudCIsImVxdWFsaXR5QXNzaWdubWVudEZyb21FcXVhbGl0eSIsImFkZEFzc2lnbm1lbnQiLCJsZWZ0VmFyaWFibGVBc3NpZ25tZW50IiwibGVmdFZhcmlhYmxlQXNzaWdubWVudEZyb21FcXVhbGl0eSIsInJpZ2h0VmFyaWFibGVBc3NpZ25tZW50IiwicmlnaHRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkiLCJ0b0pTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZUVxdWFsaXR5IiwibmVnYXRlZEZyb21FcXVhbGl0eU5vZGUiLCJsZWZ0VGVybUZyb21FcXVhbGl0eU5vZGUiLCJyaWdodFRlcm1Gcm9tRXF1YWxpdHlOb2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJlcXVhbGl0eUZyb21TdGF0ZW1lbnROb2RlIiwiZmluZFRlcm1CeVRlcm1Ob2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFlQTs7O2VBQUE7OztnQ0Fib0U7MEJBRTdDO3dCQUNLO3lCQUNBOzZCQUNRO3lCQUNNO3VCQUNTO3dCQUNxRTtBQUV4SCxNQUFNLEVBQUVBLEdBQUcsRUFBRUMsTUFBTSxFQUFFLEdBQUdDLHFDQUFxQixFQUN2QyxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRTlFLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsaUJBQWlCQyx1QkFBTztJQUNsRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxTQUFTLENBQUU7UUFDM0UsS0FBSyxDQUFDTixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLE9BQU8sR0FBR0E7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
|
|
@@ -116,7 +116,7 @@ function unifyStatementWithCombinators(statement, state, context, forward, back)
|
|
|
116
116
|
context.trace(`Unifying the '${statementString}' statement with combinators...`);
|
|
117
117
|
return some(combinators, (combinator, context, forward, back)=>{
|
|
118
118
|
return combinator.unifyStatement(statement, context, forward, back);
|
|
119
|
-
}, (back)=>{
|
|
119
|
+
}, context, (context, back)=>{
|
|
120
120
|
context.debug(`...unified the '${statementString}' statement with combinators.`);
|
|
121
121
|
return forward(statement, state, context, back);
|
|
122
122
|
}, back);
|
|
@@ -253,4 +253,4 @@ function validateSubstitution(statement, context, forward, back) {
|
|
|
253
253
|
});
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3ZhbGlkYXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBjaG9vc2UgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGRlc2lzdCwgZGVjbGFyZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGJyYWNrZXRlZENvbnN0cnVjdG9yRnJvbU5vdGhpbmcsIGJyYWNrZXRlZENvbWJpbmF0b3JGcm9tTm90aGluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvaW5zdGFuY2VcIjtcblxuY29uc3QgeyBzb21lIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlKHRlcm0sIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21UZXJtKHRlcm0sIGNvbnRleHQpO1xuXG4gIGlmICh2YXJpYWJsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZS5nZXRJZGVudGlmaWVyKCksXG4gICAgICAgIGRlY2xhcmVkVmFyaWFibGVzID0gY29udGV4dC5maW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpLFxuICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc0xlbmd0aCA9IGRlY2xhcmVkVmFyaWFibGVzLmxlbmd0aDtcblxuICBpZiAoZGVjbGFyZWRWYXJpYWJsZXNMZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gYmFjaygpO1xuICB9XG5cbiAgcmV0dXJuIHNvbWUoZGVjbGFyZWRWYXJpYWJsZXMsIChkZWNsYXJlZFZhcmlhYmxlLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgIGNvbnN0IHR5cGUgPSBkZWNsYXJlZFZhcmlhYmxlLmdldFR5cGUoKSxcbiAgICAgICAgICBwcm92aXNpb25hbCA9IGRlY2xhcmVkVmFyaWFibGUuaXNQcm92aXNpb25hbCgpO1xuXG4gICAgcmV0dXJuIGNob29zZSgoY29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHZhcmlhYmxlLnZhbGlkYXRlKHR5cGUsIHByb3Zpc2lvbmFsLCBzdGF0ZSwgY29udGV4dCwgKHZhcmlhYmxlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHRlcm0uc2V0VHlwZSh0eXBlKTtcblxuICAgICAgICB0ZXJtLnNldFByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfSwgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xufVxuXG5mdW5jdGlvbiB1bmlmeVRlcm1XaXRoR2VuZXJhdG9ycyh0ZXJtLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICBjb25zdCBnZW5lcmF0b3JzID0gY29udGV4dC5nZXRHZW5lcmF0b3JzKCksXG4gICAgICAgIGdlbmVyYXRvcnNMZW5ndGggPSBnZW5lcmF0b3JzLmxlbmd0aDtcblxuICBpZiAoZ2VuZXJhdG9yc0xlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCBnZW5lcmF0b3JzLi4uYCk7XG5cbiAgcmV0dXJuIHNvbWUoZ2VuZXJhdG9ycywgKGdlbmVyYXRvciwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgIHJldHVybiBjaG9vc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiBnZW5lcmF0b3IudW5pZnlUZXJtKHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQpO1xuICB9LCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIGdlbmVyYXRvcnMuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gIH0sIGJhY2spO1xufVxuXG5mdW5jdGlvbiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JzKHRlcm0sIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGNvbnRleHQuZ2V0Q29uc3RydWN0b3JzKCksXG4gICAgICAgIGNvbnN0cnVjdG9yc0xlbmd0aCA9IGNvbnN0cnVjdG9ycy5sZW5ndGg7XG5cbiAgaWYgKGNvbnN0cnVjdG9yc0xlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCBjb25zdHJ1Y3RvcnMuLi5gKTtcblxuICByZXR1cm4gc29tZShjb25zdHJ1Y3RvcnMsIChjb25zdHJ1Y3RvciwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgIHJldHVybiBjaG9vc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiBjb25zdHJ1Y3Rvci51bmlmeVRlcm0odGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCk7XG4gIH0sIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggY29uc3RydWN0b3JzLmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQodGVybSwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdW5pZnlUZXJtV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yKHRlcm0sIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IGJyYWNrZXRlZENvbnN0cnVjdG9yID0gYnJhY2tldGVkQ29uc3RydWN0b3JGcm9tTm90aGluZygpO1xuXG4gIHJldHVybiBicmFja2V0ZWRDb25zdHJ1Y3Rvci51bmlmeVRlcm0odGVybSwgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc01ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAobWV0YXZhcmlhYmxlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGJhY2soKTtcbiAgfVxuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBtZXRhdmFyaWFibGUuLi5gKTtcblxuICBjb25zdCBzdHJpY3QgPSB0cnVlOyAgLy8vXG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZS52YWxpZGF0ZShzdHJpY3QsIHN0YXRlLCBjb250ZXh0LCAobWV0YXZhcmlhYmxlLCBjb250ZXh0KSA9PiB7XG4gICAgcmV0dXJuIHZhbGlkYXRlU3Vic3RpdHV0aW9uKHN0YXRlbWVudCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgbWV0YXZhcmlhYmxlLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZW1lbnQsIHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSwgYmFjayk7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3JzKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgY29tYmluYXRvcnMgPSBjb250ZXh0LmdldENvbWJpbmF0b3JzKCksXG4gICAgICAgIGNvbWJpbmF0b3JzTGVuZ3RoID0gY29tYmluYXRvcnMubGVuZ3RoO1xuXG4gIGlmIChjb21iaW5hdG9yc0xlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIGNvbWJpbmF0b3JzLi4uYCk7XG5cbiAgcmV0dXJuIHNvbWUoY29tYmluYXRvcnMsIChjb21iaW5hdG9yLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgcmV0dXJuIGNvbWJpbmF0b3IudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgfSwgKGJhY2spID0+IHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCBjb21iaW5hdG9ycy5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdW5pZnlTdGF0ZW1lbnRXaXRoQnJhY2tldGVkQ29tYmluYXRvcihzdGF0ZW1lbnQsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IGJyYWNrZXRlZENvbWJpbmF0b3IgPSBicmFja2V0ZWRDb21iaW5hdG9yRnJvbU5vdGhpbmcoKTtcblxuICByZXR1cm4gYnJhY2tldGVkQ29tYmluYXRvci51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc0VxdWFsaXR5KHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgeyBFcXVhbGl0eSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGVxdWFsaXR5ID0gRXF1YWxpdHkuZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gIGlmIChlcXVhbGl0eSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGFuIGVxdWFsaXR5Li4uYCk7XG5cbiAgcmV0dXJuIGVxdWFsaXR5LnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoZXF1YWxpdHksIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhbiBlcXVhbGl0eS5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24oc3RhdGVtZW50LCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICBjb25zdCB7IFR5cGVBc3NlcnRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICB0eXBlQXNzZXJ0aW9uID0gVHlwZUFzc2VydGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKHR5cGVBc3NlcnRpb24gPT09IG51bGwpIHtcbiAgICByZXR1cm4gYmFjaygpO1xuICB9XG5cbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgcmV0dXJuIHR5cGVBc3NlcnRpb24udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0eXBlQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24oc3RhdGVtZW50LCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICBjb25zdCB7IERlZmluZWRBc3NlcnRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uID0gRGVmaW5lZEFzc2VydGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKGRlZmluZWRBc3NlcnRpb24gPT09IG51bGwpIHtcbiAgICByZXR1cm4gYmFjaygpO1xuICB9XG5cbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGRlZmluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgcmV0dXJuIGRlZmluZWRBc3NlcnRpb24udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChkZWZpbmVkQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBkZWZpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc1Byb3BlcnR5QXNzZXJ0aW9uKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgeyBQcm9wZXJ0eUFzc2VydGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByb3BlcnR5QXNzZXJ0aW9uID0gUHJvcGVydHlBc3NlcnRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gIGlmIChwcm9wZXJ0eUFzc2VydGlvbiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgcHJvcGVydHkgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgcmV0dXJuIHByb3BlcnR5QXNzZXJ0aW9uLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocHJvcGVydHlBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHByb3BlcnR5IGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc1N1YnByb29mQXNzZXJ0aW9uKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgeyBTdWJwcm9vZkFzc2VydGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHN1YnByb29mQXNzZXJ0aW9uID0gU3VicHJvb2ZBc3NlcnRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gIGlmIChzdWJwcm9vZkFzc2VydGlvbiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgc3VicHJvb2YgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgcmV0dXJuIHN1YnByb29mQXNzZXJ0aW9uLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3VicHJvb2ZBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHN1YnByb29mIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbnRhaW5lZEFzc2VydGlvbihzdGF0ZW1lbnQsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHsgQ29udGFpbmVkQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gQ29udGFpbmVkQXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAoY29udGFpbmVkQXNzZXJ0aW9uID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGJhY2soKTtcbiAgfVxuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgcmV0dXJuIGNvbnRhaW5lZEFzc2VydGlvbi52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc1NpZ25hdHVyZUFzc2VydGlvbihzdGF0ZW1lbnQsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHsgU2lnbmF0dXJlQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uID0gU2lnbmF0dXJlQXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAoc2lnbmF0dXJlQXNzZXJ0aW9uID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGJhY2soKTtcbiAgfVxuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbi52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlVGVybXMgPSBbXG4gIHZhbGlkYXRlVGVybUFzVmFyaWFibGUsXG4gIHVuaWZ5VGVybVdpdGhHZW5lcmF0b3JzLFxuICB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JzLFxuICB1bmlmeVRlcm1XaXRoQnJhY2tldGVkQ29uc3RydWN0b3Jcbl07XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVN0YXRlbWVudHMgPSBbXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNNZXRhdmFyaWFibGUsXG4gIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3JzLFxuICB1bmlmeVN0YXRlbWVudFdpdGhCcmFja2V0ZWRDb21iaW5hdG9yLFxuICB2YWxpZGF0ZVN0YXRlbWVudEFzRXF1YWxpdHksXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uLFxuICB2YWxpZGF0ZVN0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbixcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc1Byb3BlcnR5QXNzZXJ0aW9uLFxuICB2YWxpZGF0ZVN0YXRlbWVudEFzU3VicHJvb2ZBc3NlcnRpb24sXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNDb250YWluZWRBc3NlcnRpb24sXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNTaWduYXR1cmVBc3NlcnRpb25cbl07XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeVRlcm1XaXRoUHJvcGVydGllcyh0ZXJtLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgcHJvcGVydGllcyA9IGNvbnRleHQuZ2V0UHJvcGVydGllcygpO1xuXG4gIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHByb3BlcnRpZXMuLi5gKTtcblxuICByZXR1cm4gc29tZShwcm9wZXJ0aWVzLCAocHJvcGVydHksIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICByZXR1cm4gY2hvb3NlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcHJvcGVydHkudW5pZnlUZXJtKHRlcm0sIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfSwgY29udGV4dCwgKGJhY2spID0+IHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHByb3BlcnRpZXMuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gIH0sIGJhY2spO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVN1YnN0aXR1dGlvbihzdGF0ZW1lbnQsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3Qgc3Vic3RpdHV0aW9uID0gc3RhdGVtZW50LmdldFN1YnN0aXR1dGlvbigpO1xuXG4gIGlmIChzdWJzdGl0dXRpb24gPT09IG51bGwpIHtcbiAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgfVxuXG4gIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgIHJldHVybiBkZXNpc3QoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gc3Vic3RpdHV0aW9uLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3Vic3RpdHV0aW9uLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgc3RhdGUpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJ1bmlmeVRlcm1XaXRoUHJvcGVydGllcyIsInZhbGlkYXRlU3RhdGVtZW50QXNNZXRhdmFyaWFibGUiLCJ2YWxpZGF0ZVN0YXRlbWVudHMiLCJ2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlIiwidmFsaWRhdGVUZXJtcyIsInNvbWUiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJ0ZXJtIiwic3RhdGUiLCJjb250ZXh0IiwiZm9yd2FyZCIsImJhY2siLCJWYXJpYWJsZSIsImVsZW1lbnRzIiwidmFyaWFibGUiLCJmcm9tVGVybSIsInZhcmlhYmxlSWRlbnRpZmllciIsImdldElkZW50aWZpZXIiLCJkZWNsYXJlZFZhcmlhYmxlcyIsImZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyIiwiZGVjbGFyZWRWYXJpYWJsZXNMZW5ndGgiLCJsZW5ndGgiLCJkZWNsYXJlZFZhcmlhYmxlIiwidHlwZSIsImdldFR5cGUiLCJwcm92aXNpb25hbCIsImlzUHJvdmlzaW9uYWwiLCJjaG9vc2UiLCJ2YWxpZGF0ZSIsInNldFR5cGUiLCJzZXRQcm92aXNpb25hbCIsInVuaWZ5VGVybVdpdGhHZW5lcmF0b3JzIiwiZ2VuZXJhdG9ycyIsImdldEdlbmVyYXRvcnMiLCJnZW5lcmF0b3JzTGVuZ3RoIiwidGVybVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZ2VuZXJhdG9yIiwidW5pZnlUZXJtIiwiZGVidWciLCJ1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JzIiwiY29uc3RydWN0b3JzIiwiZ2V0Q29uc3RydWN0b3JzIiwiY29uc3RydWN0b3JzTGVuZ3RoIiwiY29uc3RydWN0b3IiLCJ1bmlmeVRlcm1XaXRoQnJhY2tldGVkQ29uc3RydWN0b3IiLCJicmFja2V0ZWRDb25zdHJ1Y3RvciIsImJyYWNrZXRlZENvbnN0cnVjdG9yRnJvbU5vdGhpbmciLCJzdGF0ZW1lbnQiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwic3RyaWN0IiwidmFsaWRhdGVTdWJzdGl0dXRpb24iLCJ1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9ycyIsImNvbWJpbmF0b3JzIiwiZ2V0Q29tYmluYXRvcnMiLCJjb21iaW5hdG9yc0xlbmd0aCIsImNvbWJpbmF0b3IiLCJ1bmlmeVN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50V2l0aEJyYWNrZXRlZENvbWJpbmF0b3IiLCJicmFja2V0ZWRDb21iaW5hdG9yIiwiYnJhY2tldGVkQ29tYmluYXRvckZyb21Ob3RoaW5nIiwidmFsaWRhdGVTdGF0ZW1lbnRBc0VxdWFsaXR5IiwiRXF1YWxpdHkiLCJlcXVhbGl0eSIsInZhbGlkYXRlU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uIiwiVHlwZUFzc2VydGlvbiIsInR5cGVBc3NlcnRpb24iLCJ2YWxpZGF0ZVN0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbiIsIkRlZmluZWRBc3NlcnRpb24iLCJkZWZpbmVkQXNzZXJ0aW9uIiwidmFsaWRhdGVTdGF0ZW1lbnRBc1Byb3BlcnR5QXNzZXJ0aW9uIiwiUHJvcGVydHlBc3NlcnRpb24iLCJwcm9wZXJ0eUFzc2VydGlvbiIsInZhbGlkYXRlU3RhdGVtZW50QXNTdWJwcm9vZkFzc2VydGlvbiIsIlN1YnByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZBc3NlcnRpb24iLCJ2YWxpZGF0ZVN0YXRlbWVudEFzQ29udGFpbmVkQXNzZXJ0aW9uIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwidmFsaWRhdGVTdGF0ZW1lbnRBc1NpZ25hdHVyZUFzc2VydGlvbiIsIlNpZ25hdHVyZUFzc2VydGlvbiIsInNpZ25hdHVyZUFzc2VydGlvbiIsInByb3BlcnRpZXMiLCJnZXRQcm9wZXJ0aWVzIiwicHJvcGVydHkiLCJzdWJzdGl0dXRpb24iLCJnZXRTdWJzdGl0dXRpb24iLCJkZWNsYXJlIiwiZGVzaXN0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUEyU2dCQTtlQUFBQTs7UUEzTUFDO2VBQUFBOztRQThMSEM7ZUFBQUE7O1FBbFJHQztlQUFBQTs7UUEyUUhDO2VBQUFBOzs7Z0NBclJ5QjtpRUFFakI7eUJBRUU7dUJBQ1M7MEJBQ2dEOzs7Ozs7QUFFaEYsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MscUNBQXFCO0FBRS9CLFNBQVNILHVCQUF1QkksSUFBSSxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsT0FBTyxFQUFFQyxJQUFJO0lBQ3hFLE1BQU0sRUFBRUMsUUFBUSxFQUFFLEdBQUdDLGlCQUFRLEVBQ3ZCQyxXQUFXRixTQUFTRyxRQUFRLENBQUNSLE1BQU1FO0lBRXpDLElBQUlLLGFBQWEsTUFBTTtRQUNyQixPQUFPSDtJQUNUO0lBRUEsTUFBTUsscUJBQXFCRixTQUFTRyxhQUFhLElBQzNDQyxvQkFBb0JULFFBQVFVLHlDQUF5QyxDQUFDSCxxQkFDdEVJLDBCQUEwQkYsa0JB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
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3ZhbGlkYXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBjaG9vc2UgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGRlc2lzdCwgZGVjbGFyZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGJyYWNrZXRlZENvbnN0cnVjdG9yRnJvbU5vdGhpbmcsIGJyYWNrZXRlZENvbWJpbmF0b3JGcm9tTm90aGluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvaW5zdGFuY2VcIjtcblxuY29uc3QgeyBzb21lIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlKHRlcm0sIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21UZXJtKHRlcm0sIGNvbnRleHQpO1xuXG4gIGlmICh2YXJpYWJsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZS5nZXRJZGVudGlmaWVyKCksXG4gICAgICAgIGRlY2xhcmVkVmFyaWFibGVzID0gY29udGV4dC5maW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpLFxuICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc0xlbmd0aCA9IGRlY2xhcmVkVmFyaWFibGVzLmxlbmd0aDtcblxuICBpZiAoZGVjbGFyZWRWYXJpYWJsZXNMZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gYmFjaygpO1xuICB9XG5cbiAgcmV0dXJuIHNvbWUoZGVjbGFyZWRWYXJpYWJsZXMsIChkZWNsYXJlZFZhcmlhYmxlLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgIGNvbnN0IHR5cGUgPSBkZWNsYXJlZFZhcmlhYmxlLmdldFR5cGUoKSxcbiAgICAgICAgICBwcm92aXNpb25hbCA9IGRlY2xhcmVkVmFyaWFibGUuaXNQcm92aXNpb25hbCgpO1xuXG4gICAgcmV0dXJuIGNob29zZSgoY29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHZhcmlhYmxlLnZhbGlkYXRlKHR5cGUsIHByb3Zpc2lvbmFsLCBzdGF0ZSwgY29udGV4dCwgKHZhcmlhYmxlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHRlcm0uc2V0VHlwZSh0eXBlKTtcblxuICAgICAgICB0ZXJtLnNldFByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfSwgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xufVxuXG5mdW5jdGlvbiB1bmlmeVRlcm1XaXRoR2VuZXJhdG9ycyh0ZXJtLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICBjb25zdCBnZW5lcmF0b3JzID0gY29udGV4dC5nZXRHZW5lcmF0b3JzKCksXG4gICAgICAgIGdlbmVyYXRvcnNMZW5ndGggPSBnZW5lcmF0b3JzLmxlbmd0aDtcblxuICBpZiAoZ2VuZXJhdG9yc0xlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCBnZW5lcmF0b3JzLi4uYCk7XG5cbiAgcmV0dXJuIHNvbWUoZ2VuZXJhdG9ycywgKGdlbmVyYXRvciwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgIHJldHVybiBjaG9vc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiBnZW5lcmF0b3IudW5pZnlUZXJtKHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQpO1xuICB9LCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIGdlbmVyYXRvcnMuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gIH0sIGJhY2spO1xufVxuXG5mdW5jdGlvbiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JzKHRlcm0sIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGNvbnRleHQuZ2V0Q29uc3RydWN0b3JzKCksXG4gICAgICAgIGNvbnN0cnVjdG9yc0xlbmd0aCA9IGNvbnN0cnVjdG9ycy5sZW5ndGg7XG5cbiAgaWYgKGNvbnN0cnVjdG9yc0xlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCBjb25zdHJ1Y3RvcnMuLi5gKTtcblxuICByZXR1cm4gc29tZShjb25zdHJ1Y3RvcnMsIChjb25zdHJ1Y3RvciwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgIHJldHVybiBjaG9vc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiBjb25zdHJ1Y3Rvci51bmlmeVRlcm0odGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCk7XG4gIH0sIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggY29uc3RydWN0b3JzLmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQodGVybSwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdW5pZnlUZXJtV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yKHRlcm0sIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IGJyYWNrZXRlZENvbnN0cnVjdG9yID0gYnJhY2tldGVkQ29uc3RydWN0b3JGcm9tTm90aGluZygpO1xuXG4gIHJldHVybiBicmFja2V0ZWRDb25zdHJ1Y3Rvci51bmlmeVRlcm0odGVybSwgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc01ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAobWV0YXZhcmlhYmxlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGJhY2soKTtcbiAgfVxuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBtZXRhdmFyaWFibGUuLi5gKTtcblxuICBjb25zdCBzdHJpY3QgPSB0cnVlOyAgLy8vXG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZS52YWxpZGF0ZShzdHJpY3QsIHN0YXRlLCBjb250ZXh0LCAobWV0YXZhcmlhYmxlLCBjb250ZXh0KSA9PiB7XG4gICAgcmV0dXJuIHZhbGlkYXRlU3Vic3RpdHV0aW9uKHN0YXRlbWVudCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgbWV0YXZhcmlhYmxlLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZW1lbnQsIHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSwgYmFjayk7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3JzKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgY29tYmluYXRvcnMgPSBjb250ZXh0LmdldENvbWJpbmF0b3JzKCksXG4gICAgICAgIGNvbWJpbmF0b3JzTGVuZ3RoID0gY29tYmluYXRvcnMubGVuZ3RoO1xuXG4gIGlmIChjb21iaW5hdG9yc0xlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIGNvbWJpbmF0b3JzLi4uYCk7XG5cbiAgcmV0dXJuIHNvbWUoY29tYmluYXRvcnMsIChjb21iaW5hdG9yLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgcmV0dXJuIGNvbWJpbmF0b3IudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCBjb21iaW5hdG9ycy5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdW5pZnlTdGF0ZW1lbnRXaXRoQnJhY2tldGVkQ29tYmluYXRvcihzdGF0ZW1lbnQsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IGJyYWNrZXRlZENvbWJpbmF0b3IgPSBicmFja2V0ZWRDb21iaW5hdG9yRnJvbU5vdGhpbmcoKTtcblxuICByZXR1cm4gYnJhY2tldGVkQ29tYmluYXRvci51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc0VxdWFsaXR5KHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgeyBFcXVhbGl0eSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGVxdWFsaXR5ID0gRXF1YWxpdHkuZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gIGlmIChlcXVhbGl0eSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGFuIGVxdWFsaXR5Li4uYCk7XG5cbiAgcmV0dXJuIGVxdWFsaXR5LnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoZXF1YWxpdHksIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhbiBlcXVhbGl0eS5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24oc3RhdGVtZW50LCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICBjb25zdCB7IFR5cGVBc3NlcnRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICB0eXBlQXNzZXJ0aW9uID0gVHlwZUFzc2VydGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKHR5cGVBc3NlcnRpb24gPT09IG51bGwpIHtcbiAgICByZXR1cm4gYmFjaygpO1xuICB9XG5cbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgcmV0dXJuIHR5cGVBc3NlcnRpb24udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0eXBlQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24oc3RhdGVtZW50LCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICBjb25zdCB7IERlZmluZWRBc3NlcnRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uID0gRGVmaW5lZEFzc2VydGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKGRlZmluZWRBc3NlcnRpb24gPT09IG51bGwpIHtcbiAgICByZXR1cm4gYmFjaygpO1xuICB9XG5cbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGRlZmluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgcmV0dXJuIGRlZmluZWRBc3NlcnRpb24udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChkZWZpbmVkQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBkZWZpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc1Byb3BlcnR5QXNzZXJ0aW9uKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgeyBQcm9wZXJ0eUFzc2VydGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByb3BlcnR5QXNzZXJ0aW9uID0gUHJvcGVydHlBc3NlcnRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gIGlmIChwcm9wZXJ0eUFzc2VydGlvbiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgcHJvcGVydHkgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgcmV0dXJuIHByb3BlcnR5QXNzZXJ0aW9uLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocHJvcGVydHlBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHByb3BlcnR5IGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc1N1YnByb29mQXNzZXJ0aW9uKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgeyBTdWJwcm9vZkFzc2VydGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHN1YnByb29mQXNzZXJ0aW9uID0gU3VicHJvb2ZBc3NlcnRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gIGlmIChzdWJwcm9vZkFzc2VydGlvbiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgc3VicHJvb2YgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgcmV0dXJuIHN1YnByb29mQXNzZXJ0aW9uLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3VicHJvb2ZBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHN1YnByb29mIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbnRhaW5lZEFzc2VydGlvbihzdGF0ZW1lbnQsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHsgQ29udGFpbmVkQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gQ29udGFpbmVkQXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAoY29udGFpbmVkQXNzZXJ0aW9uID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGJhY2soKTtcbiAgfVxuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgcmV0dXJuIGNvbnRhaW5lZEFzc2VydGlvbi52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc1NpZ25hdHVyZUFzc2VydGlvbihzdGF0ZW1lbnQsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHsgU2lnbmF0dXJlQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uID0gU2lnbmF0dXJlQXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAoc2lnbmF0dXJlQXNzZXJ0aW9uID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGJhY2soKTtcbiAgfVxuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbi52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlVGVybXMgPSBbXG4gIHZhbGlkYXRlVGVybUFzVmFyaWFibGUsXG4gIHVuaWZ5VGVybVdpdGhHZW5lcmF0b3JzLFxuICB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JzLFxuICB1bmlmeVRlcm1XaXRoQnJhY2tldGVkQ29uc3RydWN0b3Jcbl07XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVN0YXRlbWVudHMgPSBbXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNNZXRhdmFyaWFibGUsXG4gIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3JzLFxuICB1bmlmeVN0YXRlbWVudFdpdGhCcmFja2V0ZWRDb21iaW5hdG9yLFxuICB2YWxpZGF0ZVN0YXRlbWVudEFzRXF1YWxpdHksXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uLFxuICB2YWxpZGF0ZVN0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbixcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc1Byb3BlcnR5QXNzZXJ0aW9uLFxuICB2YWxpZGF0ZVN0YXRlbWVudEFzU3VicHJvb2ZBc3NlcnRpb24sXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNDb250YWluZWRBc3NlcnRpb24sXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNTaWduYXR1cmVBc3NlcnRpb25cbl07XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeVRlcm1XaXRoUHJvcGVydGllcyh0ZXJtLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgcHJvcGVydGllcyA9IGNvbnRleHQuZ2V0UHJvcGVydGllcygpO1xuXG4gIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHByb3BlcnRpZXMuLi5gKTtcblxuICByZXR1cm4gc29tZShwcm9wZXJ0aWVzLCAocHJvcGVydHksIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICByZXR1cm4gY2hvb3NlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcHJvcGVydHkudW5pZnlUZXJtKHRlcm0sIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfSwgY29udGV4dCwgKGJhY2spID0+IHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHByb3BlcnRpZXMuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gIH0sIGJhY2spO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVN1YnN0aXR1dGlvbihzdGF0ZW1lbnQsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3Qgc3Vic3RpdHV0aW9uID0gc3RhdGVtZW50LmdldFN1YnN0aXR1dGlvbigpO1xuXG4gIGlmIChzdWJzdGl0dXRpb24gPT09IG51bGwpIHtcbiAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgfVxuXG4gIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgIHJldHVybiBkZXNpc3QoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gc3Vic3RpdHV0aW9uLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3Vic3RpdHV0aW9uLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgc3RhdGUpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJ1bmlmeVRlcm1XaXRoUHJvcGVydGllcyIsInZhbGlkYXRlU3RhdGVtZW50QXNNZXRhdmFyaWFibGUiLCJ2YWxpZGF0ZVN0YXRlbWVudHMiLCJ2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlIiwidmFsaWRhdGVUZXJtcyIsInNvbWUiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJ0ZXJtIiwic3RhdGUiLCJjb250ZXh0IiwiZm9yd2FyZCIsImJhY2siLCJWYXJpYWJsZSIsImVsZW1lbnRzIiwidmFyaWFibGUiLCJmcm9tVGVybSIsInZhcmlhYmxlSWRlbnRpZmllciIsImdldElkZW50aWZpZXIiLCJkZWNsYXJlZFZhcmlhYmxlcyIsImZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyIiwiZGVjbGFyZWRWYXJpYWJsZXNMZW5ndGgiLCJsZW5ndGgiLCJkZWNsYXJlZFZhcmlhYmxlIiwidHlwZSIsImdldFR5cGUiLCJwcm92aXNpb25hbCIsImlzUHJvdmlzaW9uYWwiLCJjaG9vc2UiLCJ2YWxpZGF0ZSIsInNldFR5cGUiLCJzZXRQcm92aXNpb25hbCIsInVuaWZ5VGVybVdpdGhHZW5lcmF0b3JzIiwiZ2VuZXJhdG9ycyIsImdldEdlbmVyYXRvcnMiLCJnZW5lcmF0b3JzTGVuZ3RoIiwidGVybVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZ2VuZXJhdG9yIiwidW5pZnlUZXJtIiwiZGVidWciLCJ1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JzIiwiY29uc3RydWN0b3JzIiwiZ2V0Q29uc3RydWN0b3JzIiwiY29uc3RydWN0b3JzTGVuZ3RoIiwiY29uc3RydWN0b3IiLCJ1bmlmeVRlcm1XaXRoQnJhY2tldGVkQ29uc3RydWN0b3IiLCJicmFja2V0ZWRDb25zdHJ1Y3RvciIsImJyYWNrZXRlZENvbnN0cnVjdG9yRnJvbU5vdGhpbmciLCJzdGF0ZW1lbnQiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwic3RyaWN0IiwidmFsaWRhdGVTdWJzdGl0dXRpb24iLCJ1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9ycyIsImNvbWJpbmF0b3JzIiwiZ2V0Q29tYmluYXRvcnMiLCJjb21iaW5hdG9yc0xlbmd0aCIsImNvbWJpbmF0b3IiLCJ1bmlmeVN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50V2l0aEJyYWNrZXRlZENvbWJpbmF0b3IiLCJicmFja2V0ZWRDb21iaW5hdG9yIiwiYnJhY2tldGVkQ29tYmluYXRvckZyb21Ob3RoaW5nIiwidmFsaWRhdGVTdGF0ZW1lbnRBc0VxdWFsaXR5IiwiRXF1YWxpdHkiLCJlcXVhbGl0eSIsInZhbGlkYXRlU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uIiwiVHlwZUFzc2VydGlvbiIsInR5cGVBc3NlcnRpb24iLCJ2YWxpZGF0ZVN0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbiIsIkRlZmluZWRBc3NlcnRpb24iLCJkZWZpbmVkQXNzZXJ0aW9uIiwidmFsaWRhdGVTdGF0ZW1lbnRBc1Byb3BlcnR5QXNzZXJ0aW9uIiwiUHJvcGVydHlBc3NlcnRpb24iLCJwcm9wZXJ0eUFzc2VydGlvbiIsInZhbGlkYXRlU3RhdGVtZW50QXNTdWJwcm9vZkFzc2VydGlvbiIsIlN1YnByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZBc3NlcnRpb24iLCJ2YWxpZGF0ZVN0YXRlbWVudEFzQ29udGFpbmVkQXNzZXJ0aW9uIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwidmFsaWRhdGVTdGF0ZW1lbnRBc1NpZ25hdHVyZUFzc2VydGlvbiIsIlNpZ25hdHVyZUFzc2VydGlvbiIsInNpZ25hdHVyZUFzc2VydGlvbiIsInByb3BlcnRpZXMiLCJnZXRQcm9wZXJ0aWVzIiwicHJvcGVydHkiLCJzdWJzdGl0dXRpb24iLCJnZXRTdWJzdGl0dXRpb24iLCJkZWNsYXJlIiwiZGVzaXN0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUEyU2dCQTtlQUFBQTs7UUEzTUFDO2VBQUFBOztRQThMSEM7ZUFBQUE7O1FBbFJHQztlQUFBQTs7UUEyUUhDO2VBQUFBOzs7Z0NBclJ5QjtpRUFFakI7eUJBRUU7dUJBQ1M7MEJBQ2dEOzs7Ozs7QUFFaEYsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MscUNBQXFCO0FBRS9CLFNBQVNILHVCQUF1QkksSUFBSSxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsT0FBTyxFQUFFQyxJQUFJO0lBQ3hFLE1BQU0sRUFBRUMsUUFBUSxFQUFFLEdBQUdDLGlCQUFRLEVBQ3ZCQyxXQUFXRixTQUFTRyxRQUFRLENBQUNSLE1BQU1FO0lBRXpDLElBQUlLLGFBQWEsTUFBTTtRQUNyQixPQUFPSDtJQUNUO0lBRUEsTUFBTUsscUJBQXFCRixTQUFTRyxhQUFhLElBQzNDQyxvQkFBb0JULFFBQVFVLHlDQUF5QyxDQUFDSCxxQkFDdEVJLDBCQUEwQkYsa0JBQWtCRyxNQUFNO0lBRXhELElBQUlELDRCQUE0QixHQUFHO1FBQ2pDLE9BQU9UO0lBQ1Q7SUFFQSxPQUFPTixLQUFLYSxtQkFBbUIsQ0FBQ0ksa0JBQWtCZCxPQUFPQyxTQUFTQyxTQUFTQztRQUN6RSxNQUFNWSxPQUFPRCxpQkFBaUJFLE9BQU8sSUFDL0JDLGNBQWNILGlCQUFpQkksYUFBYTtRQUVsRCxPQUFPQyxJQUFBQSxlQUFNLEVBQUMsQ0FBQ2xCO1lBQ2IsT0FBT0ssU0FBU2MsUUFBUSxDQUFDTCxNQUFNRSxhQUFhakIsT0FBT0MsU0FBUyxDQUFDSyxVQUFVTCxTQUFTRTtnQkFDOUVKLEtBQUtzQixPQUFPLENBQUNOO2dCQUViaEIsS0FBS3VCLGNBQWMsQ0FBQ0w7Z0JBRXBCLE9BQU9mLFFBQVFILE1BQU1DLE9BQU9DLFNBQVNFO1lBQ3ZDLEdBQUdBO1FBQ0wsR0FBR0Y7SUFDTCxHQUFHRCxPQUFPQyxTQUFTQyxTQUFTQztBQUM5QjtBQUVBLFNBQVNvQix3QkFBd0J4QixJQUFJLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7SUFDbEUsTUFBTXFCLGFBQWF2QixRQUFRd0IsYUFBYSxJQUNsQ0MsbUJBQW1CRixXQUFXWCxNQUFNO0lBRTFDLElBQUlhLHFCQUFxQixHQUFHO1FBQzFCLE9BQU92QjtJQUNUO0lBRUEsTUFBTXdCLGFBQWE1QixLQUFLNkIsU0FBUztJQUVqQzNCLFFBQVE0QixLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUVGLFdBQVcseUJBQXlCLENBQUM7SUFFcEUsT0FBTzlCLEtBQUsyQixZQUFZLENBQUNNLFdBQVc3QixTQUFTQyxTQUFTQztRQUNwRCxPQUFPZ0IsSUFBQUEsZUFBTSxFQUFDLENBQUNsQjtZQUNiLE9BQU82QixVQUFVQyxTQUFTLENBQUNoQyxNQUFNRSxTQUFTQyxTQUFTQztRQUNyRCxHQUFHRjtJQUNMLEdBQUdBLFNBQVMsQ0FBQ0QsT0FBT0MsU0FBU0U7UUFDM0JGLFFBQVErQixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUwsV0FBVyx1QkFBdUIsQ0FBQztRQUVwRSxPQUFPekIsUUFBUUgsTUFBTUMsT0FBT0MsU0FBU0U7SUFDdkMsR0FBR0E7QUFDTDtBQUVBLFNBQVM4QiwwQkFBMEJsQyxJQUFJLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7SUFDcEUsTUFBTStCLGVBQWVqQyxRQUFRa0MsZUFBZSxJQUN0Q0MscUJBQXFCRixhQUFhckIsTUFBTTtJQUU5QyxJQUFJdUIsdUJBQXVCLEdBQUc7UUFDNUIsT0FBT2pDO0lBQ1Q7SUFFQSxNQUFNd0IsYUFBYTVCLEtBQUs2QixTQUFTO0lBRWpDM0IsUUFBUTRCLEtBQUssQ0FBQyxDQUFDLGNBQWMsRUFBRUYsV0FBVywyQkFBMkIsQ0FBQztJQUV0RSxPQUFPOUIsS0FBS3FDLGNBQWMsQ0FBQ0csYUFBYXBDLFNBQVNDLFNBQVNDO1FBQ3hELE9BQU9nQixJQUFBQSxlQUFNLEVBQUMsQ0FBQ2xCO1lBQ2IsT0FBT29DLFlBQVlOLFNBQVMsQ0FBQ2hDLE1BQU1FLFNBQVNDLFNBQVNDO1FBQ3ZELEdBQUdGO0lBQ0wsR0FBR0EsU0FBUyxDQUFDRCxPQUFPQyxTQUFTRTtRQUMzQkYsUUFBUStCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFTCxXQUFXLHlCQUF5QixDQUFDO1FBRXRFLE9BQU96QixRQUFRSCxNQUFNQyxPQUFPQyxTQUFTRTtJQUN2QyxHQUFHQTtBQUNMO0FBRUEsU0FBU21DLGtDQUFrQ3ZDLElBQUksRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLE9BQU8sRUFBRUMsSUFBSTtJQUM1RSxNQUFNb0MsdUJBQXVCQyxJQUFBQSx5Q0FBK0I7SUFFNUQsT0FBT0QscUJBQXFCUixTQUFTLENBQUNoQyxNQUFNQyxPQUFPQyxTQUFTQyxTQUFTQztBQUN2RTtBQUVPLFNBQVNWLGdDQUFnQ2dELFNBQVMsRUFBRXpDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7SUFDdEYsTUFBTSxFQUFFdUMsWUFBWSxFQUFFLEdBQUdyQyxpQkFBUSxFQUMzQnNDLGVBQWVELGFBQWFFLGFBQWEsQ0FBQ0gsV0FBV3hDO0lBRTNELElBQUkwQyxpQkFBaUIsTUFBTTtRQUN6QixPQUFPeEM7SUFDVDtJQUVBLE1BQU0wQyxrQkFBa0JKLFVBQVViLFNBQVM7SUFFM0MzQixRQUFRNEIsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVnQixnQkFBZ0IsZ0NBQWdDLENBQUM7SUFFbEYsTUFBTUMsU0FBUyxNQUFPLEdBQUc7SUFFekIsT0FBT0gsYUFBYXZCLFFBQVEsQ0FBQzBCLFFBQVE5QyxPQUFPQyxTQUFTLENBQUMwQyxjQUFjMUM7UUFDbEUsT0FBTzhDLHFCQUFxQk4sV0FBV3hDLFNBQVMsQ0FBQ0EsU0FBU0U7WUFDeERGLFFBQVErQixLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRWEsZ0JBQWdCLDhCQUE4QixDQUFDO1lBRWxGLE9BQU8zQyxRQUFRdUMsV0FBV3pDLE9BQU9DLFNBQVNFO1FBQzVDLEdBQUdBO0lBQ0wsR0FBR0E7QUFDTDtBQUVBLFNBQVM2Qyw4QkFBOEJQLFNBQVMsRUFBRXpDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7SUFDN0UsTUFBTThDLGNBQWNoRCxRQUFRaUQsY0FBYyxJQUNwQ0Msb0JBQW9CRixZQUFZcEMsTUFBTTtJQUU1QyxJQUFJc0Msc0JBQXNCLEdBQUc7UUFDM0IsT0FBT2hEO0lBQ1Q7SUFFQSxNQUFNMEMsa0JBQWtCSixVQUFVYixTQUFTO0lBRTNDM0IsUUFBUTRCLEtBQUssQ0FBQyxDQUFDLGNBQWMsRUFBRWdCLGdCQUFnQiwrQkFBK0IsQ0FBQztJQUUvRSxPQUFPaEQsS0FBS29ELGFBQWEsQ0FBQ0csWUFBWW5ELFNBQVNDLFNBQVNDO1FBQ3RELE9BQU9pRCxXQUFXQyxjQUFjLENBQUNaLFdBQVd4QyxTQUFTQyxTQUFTQztJQUNoRSxHQUFHRixTQUFTLENBQUNBLFNBQVNFO1FBQ3BCRixRQUFRK0IsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVhLGdCQUFnQiw2QkFBNkIsQ0FBQztRQUUvRSxPQUFPM0MsUUFBUXVDLFdBQVd6QyxPQUFPQyxTQUFTRTtJQUM1QyxHQUFHQTtBQUNMO0FBRUEsU0FBU21ELHNDQUFzQ2IsU0FBUyxFQUFFekMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLE9BQU8sRUFBRUMsSUFBSTtJQUNyRixNQUFNb0Qsc0JBQXNCQyxJQUFBQSx3Q0FBOEI7SUFFMUQsT0FBT0Qsb0JBQW9CRixjQUFjLENBQUNaLFdBQVd6QyxPQUFPQyxTQUFTQyxTQUFTQztBQUNoRjtBQUVBLFNBQVNzRCw0QkFBNEJoQixTQUFTLEVBQUV6QyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsT0FBTyxFQUFFQyxJQUFJO0lBQzNFLE1BQU0sRUFBRXVELFFBQVEsRUFBRSxHQUFHckQsaUJBQVEsRUFDdkJzRCxXQUFXRCxTQUFTZCxhQUFhLENBQUNILFdBQVd4QztJQUVuRCxJQUFJMEQsYUFBYSxNQUFNO1FBQ3JCLE9BQU94RDtJQUNUO0lBRUEsTUFBTTBDLGtCQUFrQkosVUFBVWIsU0FBUztJQUUzQzNCLFFBQVE0QixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRWdCLGdCQUFnQiw2QkFBNkIsQ0FBQztJQUUvRSxPQUFPYyxTQUFTdkMsUUFBUSxDQUFDcEIsT0FBT0MsU0FBUyxDQUFDMEQsVUFBVTFELFNBQVNFO1FBQzNERixRQUFRK0IsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVhLGdCQUFnQiwyQkFBMkIsQ0FBQztRQUUvRSxPQUFPM0MsUUFBUXVDLFdBQVd6QyxPQUFPQyxTQUFTRTtJQUM1QyxHQUFHQTtBQUNMO0FBRUEsU0FBU3lELGlDQUFpQ25CLFNBQVMsRUFBRXpDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7SUFDaEYsTUFBTSxFQUFFMEQsYUFBYSxFQUFFLEdBQUd4RCxpQkFBUSxFQUM1QnlELGdCQUFnQkQsY0FBY2pCLGFBQWEsQ0FBQ0gsV0FBV3hDO0lBRTdELElBQUk2RCxrQkFBa0IsTUFBTTtRQUMxQixPQUFPM0Q7SUFDVDtJQUVBLE1BQU0wQyxrQkFBa0JKLFVBQVViLFNBQVM7SUFFM0MzQixRQUFRNEIsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVnQixnQkFBZ0Isa0NBQWtDLENBQUM7SUFFcEYsT0FBT2lCLGNBQWMxQyxRQUFRLENBQUNwQixPQUFPQyxTQUFTLENBQUM2RCxlQUFlN0QsU0FBU0U7UUFDckVGLFFBQVErQixLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRWEsZ0JBQWdCLGdDQUFnQyxDQUFDO1FBRXBGLE9BQU8zQyxRQUFRdUMsV0FBV3pDLE9BQU9DLFNBQVNFO0lBQzVDLEdBQUdBO0FBQ0w7QUFFQSxTQUFTNEQsb0NBQW9DdEIsU0FBUyxFQUFFekMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLE9BQU8sRUFBRUMsSUFBSTtJQUNuRixNQUFNLEVBQUU2RCxnQkFBZ0IsRUFBRSxHQUFHM0QsaUJBQVEsRUFDL0I0RCxtQkFBbUJELGlCQUFpQnBCLGFBQWEsQ0FBQ0gsV0FBV3hDO0lBRW5FLElBQUlnRSxxQkFBcUIsTUFBTTtRQUM3QixPQUFPOUQ7SUFDVDtJQUVBLE1BQU0wQyxrQkFBa0JKLFVBQVViLFNBQVM7SUFFM0MzQixRQUFRNEIsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVnQixnQkFBZ0IscUNBQXFDLENBQUM7SUFFdkYsT0FBT29CLGlCQUFpQjdDLFFBQVEsQ0FBQ3BCLE9BQU9DLFNBQVMsQ0FBQ2dFLGtCQUFrQmhFLFNBQVNFO1FBQzNFRixRQUFRK0IsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVhLGdCQUFnQixtQ0FBbUMsQ0FBQztRQUV2RixPQUFPM0MsUUFBUXVDLFdBQVd6QyxPQUFPQyxTQUFTRTtJQUM1QyxHQUFHQTtBQUNMO0FBRUEsU0FBUytELHFDQUFxQ3pCLFNBQVMsRUFBRXpDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7SUFDcEYsTUFBTSxFQUFFZ0UsaUJBQWlCLEVBQUUsR0FBRzlELGlCQUFRLEVBQ2hDK0Qsb0JBQW9CRCxrQkFBa0J2QixhQUFhLENBQUNILFdBQVd4QztJQUVyRSxJQUFJbUUsc0JBQXNCLE1BQU07UUFDOUIsT0FBT2pFO0lBQ1Q7SUFFQSxNQUFNMEMsa0JBQWtCSixVQUFVYixTQUFTO0lBRTNDM0IsUUFBUTRCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFZ0IsZ0JBQWdCLHNDQUFzQyxDQUFDO0lBRXhGLE9BQU91QixrQkFBa0JoRCxRQUFRLENBQUNwQixPQUFPQyxTQUFTLENBQUNtRSxtQkFBbUJuRSxTQUFTRTtRQUM3RUYsUUFBUStCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFYSxnQkFBZ0Isb0NBQW9DLENBQUM7UUFFeEYsT0FBTzNDLFFBQVF1QyxXQUFXekMsT0FBT0MsU0FBU0U7SUFDNUMsR0FBR0E7QUFDTDtBQUVBLFNBQVNrRSxxQ0FBcUM1QixTQUFTLEVBQUV6QyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsT0FBTyxFQUFFQyxJQUFJO0lBQ3BGLE1BQU0sRUFBRW1FLGlCQUFpQixFQUFFLEdBQUdqRSxpQkFBUSxFQUNoQ2tFLG9CQUFvQkQsa0JBQWtCMUIsYUFBYSxDQUFDSCxXQUFXeEM7SUFFckUsSUFBSXNFLHNCQUFzQixNQUFNO1FBQzlCLE9BQU9wRTtJQUNUO0lBRUEsTUFBTTBDLGtCQUFrQkosVUFBVWIsU0FBUztJQUUzQzNCLFFBQVE0QixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRWdCLGdCQUFnQixzQ0FBc0MsQ0FBQztJQUV4RixPQUFPMEIsa0JBQWtCbkQsUUFBUSxDQUFDcEIsT0FBT0MsU0FBUyxDQUFDc0UsbUJBQW1CdEUsU0FBU0U7UUFDN0VGLFFBQVErQixLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRWEsZ0JBQWdCLG9DQUFvQyxDQUFDO1FBRXhGLE9BQU8zQyxRQUFRdUMsV0FBV3pDLE9BQU9DLFNBQVNFO0lBQzVDLEdBQUdBO0FBQ0w7QUFFQSxTQUFTcUUsc0NBQXNDL0IsU0FBUyxFQUFFekMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLE9BQU8sRUFBRUMsSUFBSTtJQUNyRixNQUFNLEVBQUVzRSxrQkFBa0IsRUFBRSxHQUFHcEUsaUJBQVEsRUFDakNxRSxxQkFBcUJELG1CQUFtQjdCLGFBQWEsQ0FBQ0gsV0FBV3hDO0lBRXZFLElBQUl5RSx1QkFBdUIsTUFBTTtRQUMvQixPQUFPdkU7SUFDVDtJQUVBLE1BQU0wQyxrQkFBa0JKLFVBQVViLFNBQVM7SUFFM0MzQixRQUFRNEIsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVnQixnQkFBZ0IsdUNBQXVDLENBQUM7SUFFekYsT0FBTzZCLG1CQUFtQnRELFFBQVEsQ0FBQ3BCLE9BQU9DLFNBQVMsQ0FBQ3lFLG9CQUFvQnpFLFNBQVNFO1FBQy9FRixRQUFRK0IsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVhLGdCQUFnQixxQ0FBcUMsQ0FBQztRQUV6RixPQUFPM0MsUUFBUXVDLFdBQVd6QyxPQUFPQyxTQUFTRTtJQUM1QyxHQUFHQTtBQUNMO0FBRUEsU0FBU3dFLHNDQUFzQ2xDLFNBQVMsRUFBRXpDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7SUFDckYsTUFBTSxFQUFFeUUsa0JBQWtCLEVBQUUsR0FBR3ZFLGlCQUFRLEVBQ2pDd0UscUJBQXFCRCxtQkFBbUJoQyxhQUFhLENBQUNILFdBQVd4QztJQUV2RSxJQUFJNEUsdUJBQXVCLE1BQU07UUFDL0IsT0FBTzFFO0lBQ1Q7SUFFQSxNQUFNMEMsa0JBQWtCSixVQUFVYixTQUFTO0lBRTNDM0IsUUFBUTRCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFZ0IsZ0JBQWdCLHVDQUF1QyxDQUFDO0lBRXpGLE9BQU9nQyxtQkFBbUJ6RCxRQUFRLENBQUNwQixPQUFPQyxTQUFTLENBQUM0RSxvQkFBb0I1RSxTQUFTRTtRQUMvRUYsUUFBUStCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFYSxnQkFBZ0IscUNBQXFDLENBQUM7UUFFekYsT0FBTzNDLFFBQVF1QyxXQUFXekMsT0FBT0MsU0FBU0U7SUFDNUMsR0FBR0E7QUFDTDtBQUVPLE1BQU1QLGdCQUFnQjtJQUMzQkQ7SUFDQTRCO0lBQ0FVO0lBQ0FLO0NBQ0Q7QUFFTSxNQUFNNUMscUJBQXFCO0lBQ2hDRDtJQUNBdUQ7SUFDQU07SUFDQUc7SUFDQUc7SUFDQUc7SUFDQUc7SUFDQUc7SUFDQUc7SUFDQUc7Q0FDRDtBQUVNLFNBQVNuRix3QkFBd0JPLElBQUksRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLE9BQU8sRUFBRUMsSUFBSTtJQUN6RSxNQUFNd0IsYUFBYTVCLEtBQUs2QixTQUFTLElBQzNCa0QsYUFBYTdFLFFBQVE4RSxhQUFhO0lBRXhDOUUsUUFBUTRCLEtBQUssQ0FBQyxDQUFDLGNBQWMsRUFBRUYsV0FBVyx5QkFBeUIsQ0FBQztJQUVwRSxPQUFPOUIsS0FBS2lGLFlBQVksQ0FBQ0UsVUFBVS9FLFNBQVNDLFNBQVNDO1FBQ25ELE9BQU9nQixJQUFBQSxlQUFNLEVBQUMsQ0FBQ2xCO1lBQ2IsT0FBTytFLFNBQVNqRCxTQUFTLENBQUNoQyxNQUFNQyxPQUFPQyxTQUFTQyxTQUFTQztRQUMzRCxHQUFHRjtJQUNMLEdBQUdBLFNBQVMsQ0FBQ0U7UUFDWEYsUUFBUStCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFTCxXQUFXLHVCQUF1QixDQUFDO1FBRXBFLE9BQU96QixRQUFRSCxNQUFNQyxPQUFPQyxTQUFTRTtJQUN2QyxHQUFHQTtBQUNMO0FBRUEsU0FBUzRDLHFCQUFxQk4sU0FBUyxFQUFFeEMsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7SUFDN0QsTUFBTThFLGVBQWV4QyxVQUFVeUMsZUFBZTtJQUU5QyxJQUFJRCxpQkFBaUIsTUFBTTtRQUN6QixPQUFPL0UsUUFBUUM7SUFDakI7SUFFQSxPQUFPZ0YsSUFBQUEsY0FBTyxFQUFDLENBQUNuRjtRQUNkLE9BQU9vRixJQUFBQSxhQUFNLEVBQUMsQ0FBQ3BGO1lBQ2IsT0FBT2lGLGFBQWE3RCxRQUFRLENBQUNwQixPQUFPQyxTQUFTLENBQUNnRixjQUFjaEYsU0FBU0U7Z0JBQ25FLE9BQU9ELFFBQVFELFNBQVNFO1lBQzFCLEdBQUdBO1FBQ0wsR0FBR0g7SUFDTDtBQUNGIn0=
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-nominal",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.476",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-nominal",
|
|
7
7
|
"description": "Occam's Nominal language.",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"necessary": "^17.6.3",
|
|
14
|
-
"occam-furtle": "^3.0.
|
|
14
|
+
"occam-furtle": "^3.0.477",
|
|
15
15
|
"occam-grammar-utilities": "^8.1.22",
|
|
16
16
|
"occam-languages": "^3.0.36",
|
|
17
17
|
"occam-query": "^4.1.206"
|
|
@@ -712,7 +712,9 @@ export default class NominalFileContext extends FileContext {
|
|
|
712
712
|
context = this, ///
|
|
713
713
|
fileNode = node; ///
|
|
714
714
|
|
|
715
|
-
return verifyFile(fileNode, context,
|
|
715
|
+
return verifyFile(fileNode, context, ( _ , back) => {
|
|
716
|
+
return forward(back);
|
|
717
|
+
}, back);
|
|
716
718
|
}
|
|
717
719
|
|
|
718
720
|
initialise() {
|
|
@@ -57,7 +57,7 @@ export default define(class TypeDeclaration extends Declaration {
|
|
|
57
57
|
verifyType,
|
|
58
58
|
verifySuperTypes,
|
|
59
59
|
verifyTypePrefix
|
|
60
|
-
], context, (back) => {
|
|
60
|
+
], context, (context, back) => {
|
|
61
61
|
const properties = this.getProperties(),
|
|
62
62
|
typePrefix = context.getTypePrefix(),
|
|
63
63
|
prefixName = (typePrefix !== null) ?
|
package/src/element/equality.js
CHANGED
|
@@ -131,7 +131,7 @@ function unifyStatementWithCombinators(statement, state, context, forward, back)
|
|
|
131
131
|
|
|
132
132
|
return some(combinators, (combinator, context, forward, back) => {
|
|
133
133
|
return combinator.unifyStatement(statement, context, forward, back);
|
|
134
|
-
}, (back) => {
|
|
134
|
+
}, context, (context, back) => {
|
|
135
135
|
context.debug(`...unified the '${statementString}' statement with combinators.`);
|
|
136
136
|
|
|
137
137
|
return forward(statement, state, context, back);
|