@glimmer/program
Advanced tools
Comparing version
@@ -161,3 +161,3 @@ define('@glimmer/program', ['exports', '@glimmer/util', '@glimmer/manager', '@glimmer/opcode-compiler'], function (exports, util, manager, opcodeCompiler) { 'use strict'; | ||
_proto3.component = function component(definitionState, isOptional, owner) { | ||
_proto3.component = function component(definitionState, owner, isOptional) { | ||
var _a; | ||
@@ -571,2 +571,2 @@ | ||
}); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xpbW1lci1wcm9ncmFtLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi91dGlsL2RlZmF1bHQtdGVtcGxhdGUudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9jb25zdGFudHMudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9vcGNvZGUudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9wcm9ncmFtLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvcHJvZ3JhbS9saWIvaGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTZXJpYWxpemVkVGVtcGxhdGVCbG9jayxcbiAgU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jayxcbiAgU2V4cE9wY29kZXMsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG4vKipcbiAqIERlZmF1bHQgY29tcG9uZW50IHRlbXBsYXRlLCB3aGljaCBpcyBhIHBsYWluIHlpZWxkXG4gKi9cbmNvbnN0IERFRkFVTFRfVEVNUExBVEVfQkxPQ0s6IFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrID0gW1xuICBbW1NleHBPcGNvZGVzLllpZWxkLCAxLCBudWxsXV0sXG4gIFsnJmRlZmF1bHQnXSxcbiAgZmFsc2UsXG4gIFtdLFxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVEVNUExBVEU6IFNlcmlhbGl6ZWRUZW1wbGF0ZVdpdGhMYXp5QmxvY2sgPSB7XG4gIG1vZHVsZU5hbWU6ICdfX2RlZmF1bHRfXy5oYnMnLFxuICBibG9jazogSlNPTi5zdHJpbmdpZnkoREVGQVVMVF9URU1QTEFURV9CTE9DSyksXG4gIHNjb3BlOiBudWxsLFxuICBpc1N0cmljdE1vZGU6IHRydWUsXG59O1xuIiwiaW1wb3J0IHtcbiAgQ29tcGlsZVRpbWVDb25zdGFudHMsXG4gIENvbXBvbmVudERlZmluaXRpb25TdGF0ZSxcbiAgQ29uc3RhbnRQb29sLFxuICBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHksXG4gIENvbXBvbmVudERlZmluaXRpb24sXG4gIFJlc29sdXRpb25UaW1lQ29uc3RhbnRzLFxuICBSZXNvbHZlZENvbXBvbmVudERlZmluaXRpb24sXG4gIFJ1bnRpbWVDb25zdGFudHMsXG4gIE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLFxuICBIZWxwZXJEZWZpbml0aW9uU3RhdGUsXG4gIFRlbXBsYXRlLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGFzc2VydCwgY29uc3RhbnRzLCBleHBlY3QsIHVud3JhcFRlbXBsYXRlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBjYXBhYmlsaXR5RmxhZ3NGcm9tLFxuICBnZXRDb21wb25lbnRUZW1wbGF0ZSxcbiAgZ2V0SW50ZXJuYWxDb21wb25lbnRNYW5hZ2VyLFxuICBnZXRJbnRlcm5hbEhlbHBlck1hbmFnZXIsXG4gIGdldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyLFxuICBtYW5hZ2VySGFzQ2FwYWJpbGl0eSxcbn0gZnJvbSAnQGdsaW1tZXIvbWFuYWdlcic7XG5pbXBvcnQgeyB0ZW1wbGF0ZUZhY3RvcnkgfSBmcm9tICdAZ2xpbW1lci9vcGNvZGUtY29tcGlsZXInO1xuaW1wb3J0IHsgREVGQVVMVF9URU1QTEFURSB9IGZyb20gJy4vdXRpbC9kZWZhdWx0LXRlbXBsYXRlJztcblxuY29uc3QgV0VMTF9LTk9XTl9FTVBUWV9BUlJBWTogdW5rbm93biA9IE9iamVjdC5mcmVlemUoW10pO1xuY29uc3QgU1RBUlRFUl9DT05TVEFOVFMgPSBjb25zdGFudHMoV0VMTF9LTk9XTl9FTVBUWV9BUlJBWSk7XG5jb25zdCBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OOiBudW1iZXIgPSBTVEFSVEVSX0NPTlNUQU5UUy5pbmRleE9mKFdFTExfS05PV05fRU1QVFlfQVJSQVkpO1xuXG5leHBvcnQgY2xhc3MgQ29tcGlsZVRpbWVDb25zdGFudEltcGwgaW1wbGVtZW50cyBDb21waWxlVGltZUNvbnN0YW50cyB7XG4gIC8vIGAwYCBtZWFucyBOVUxMXG5cbiAgcHJvdGVjdGVkIHZhbHVlczogdW5rbm93bltdID0gU1RBUlRFUl9DT05TVEFOVFMuc2xpY2UoKTtcbiAgcHJvdGVjdGVkIGluZGV4TWFwOiBNYXA8dW5rbm93biwgbnVtYmVyPiA9IG5ldyBNYXAoXG4gICAgdGhpcy52YWx1ZXMubWFwKCh2YWx1ZSwgaW5kZXgpID0+IFt2YWx1ZSwgaW5kZXhdKVxuICApO1xuXG4gIHZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgbGV0IGluZGV4TWFwID0gdGhpcy5pbmRleE1hcDtcbiAgICBsZXQgaW5kZXggPSBpbmRleE1hcC5nZXQodmFsdWUpO1xuXG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGluZGV4ID0gdGhpcy52YWx1ZXMucHVzaCh2YWx1ZSkgLSAxO1xuICAgICAgaW5kZXhNYXAuc2V0KHZhbHVlLCBpbmRleCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgYXJyYXkodmFsdWVzOiB1bmtub3duW10pOiBudW1iZXIge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gV0VMTF9LTk9XTl9FTVBUWV9BUlJBWV9QT1NJVElPTjtcbiAgICB9XG5cbiAgICBsZXQgaGFuZGxlczogbnVtYmVyW10gPSBuZXcgQXJyYXkodmFsdWVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaGFuZGxlc1tpXSA9IHRoaXMudmFsdWUodmFsdWVzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52YWx1ZShoYW5kbGVzKTtcbiAgfVxuXG4gIHRvUG9vbCgpOiBDb25zdGFudFBvb2wge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUnVudGltZUNvbnN0YW50c0ltcGwgaW1wbGVtZW50cyBSdW50aW1lQ29uc3RhbnRzIHtcbiAgcHJvdGVjdGVkIHZhbHVlczogdW5rbm93bltdO1xuXG4gIGNvbnN0cnVjdG9yKHBvb2w6IENvbnN0YW50UG9vbCkge1xuICAgIHRoaXMudmFsdWVzID0gcG9vbDtcbiAgfVxuXG4gIGdldFZhbHVlPFQ+KGhhbmRsZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzW2hhbmRsZV0gYXMgVDtcbiAgfVxuXG4gIGdldEFycmF5PFQ+KHZhbHVlOiBudW1iZXIpOiBUW10ge1xuICAgIGxldCBoYW5kbGVzID0gdGhpcy5nZXRWYWx1ZSh2YWx1ZSkgYXMgbnVtYmVyW107XG4gICAgbGV0IHJlaWZpZWQ6IFRbXSA9IG5ldyBBcnJheShoYW5kbGVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhhbmRsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBuID0gaGFuZGxlc1tpXTtcbiAgICAgIHJlaWZpZWRbaV0gPSB0aGlzLmdldFZhbHVlKG4pO1xuICAgIH1cblxuICAgIHJldHVybiByZWlmaWVkO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb25zdGFudHNJbXBsXG4gIGV4dGVuZHMgQ29tcGlsZVRpbWVDb25zdGFudEltcGxcbiAgaW1wbGVtZW50cyBSdW50aW1lQ29uc3RhbnRzLCBSZXNvbHV0aW9uVGltZUNvbnN0YW50cyB7XG4gIHByb3RlY3RlZCByZWlmaWVkQXJyczogeyBba2V5OiBudW1iZXJdOiB1bmtub3duW10gfSA9IHtcbiAgICBbV0VMTF9LTk9XTl9FTVBUWV9BUlJBWV9QT1NJVElPTl06IFdFTExfS05PV05fRU1QVFlfQVJSQVkgYXMgdW5rbm93bltdLFxuICB9O1xuXG4gIGRlZmF1bHRUZW1wbGF0ZTogVGVtcGxhdGUgPSB0ZW1wbGF0ZUZhY3RvcnkoREVGQVVMVF9URU1QTEFURSkoKTtcblxuICAvLyBVc2VkIGZvciB0ZXN0cyBhbmQgZGVidWdnaW5nIHB1cnBvc2VzLCBhbmQgdG8gYmUgYWJsZSB0byBhbmFseXplIGxhcmdlIGFwcHNcbiAgLy8gVGhpcyBpcyB3aHkgaXQncyBlbmFibGVkIGV2ZW4gaW4gcHJvZHVjdGlvblxuICBoZWxwZXJEZWZpbml0aW9uQ291bnQgPSAwO1xuICBtb2RpZmllckRlZmluaXRpb25Db3VudCA9IDA7XG4gIGNvbXBvbmVudERlZmluaXRpb25Db3VudCA9IDA7XG5cbiAgcHJpdmF0ZSBoZWxwZXJEZWZpbml0aW9uQ2FjaGUgPSBuZXcgV2Vha01hcDxIZWxwZXJEZWZpbml0aW9uU3RhdGUsIG51bWJlciB8IG51bGw+KCk7XG5cbiAgcHJpdmF0ZSBtb2RpZmllckRlZmluaXRpb25DYWNoZSA9IG5ldyBXZWFrTWFwPE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLCBudW1iZXIgfCBudWxsPigpO1xuXG4gIHByaXZhdGUgY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlID0gbmV3IFdlYWtNYXA8XG4gICAgQ29tcG9uZW50RGVmaW5pdGlvblN0YXRlIHwgUmVzb2x2ZWRDb21wb25lbnREZWZpbml0aW9uLFxuICAgIENvbXBvbmVudERlZmluaXRpb24gfCBudWxsXG4gID4oKTtcblxuICBoZWxwZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBIZWxwZXJEZWZpbml0aW9uU3RhdGUsXG5cbiAgICAvLyBUT0RPOiBBZGQgYSB3YXkgdG8gZXhwb3NlIHJlc29sdmVkIG5hbWUgZm9yIGRlYnVnZ2luZ1xuICAgIF9yZXNvbHZlZE5hbWU6IHN0cmluZyB8IG51bGwsXG4gICAgaXNPcHRpb25hbDogdHJ1ZVxuICApOiBudW1iZXIgfCBudWxsO1xuICBoZWxwZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBIZWxwZXJEZWZpbml0aW9uU3RhdGUsXG5cbiAgICAvLyBUT0RPOiBBZGQgYSB3YXkgdG8gZXhwb3NlIHJlc29sdmVkIG5hbWUgZm9yIGRlYnVnZ2luZ1xuICAgIF9yZXNvbHZlZE5hbWU/OiBzdHJpbmcgfCBudWxsXG4gICk6IG51bWJlcjtcbiAgaGVscGVyKFxuICAgIGRlZmluaXRpb25TdGF0ZTogSGVscGVyRGVmaW5pdGlvblN0YXRlLFxuXG4gICAgLy8gVE9ETzogQWRkIGEgd2F5IHRvIGV4cG9zZSByZXNvbHZlZCBuYW1lIGZvciBkZWJ1Z2dpbmdcbiAgICBfcmVzb2x2ZWROYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBpc09wdGlvbmFsPzogdHJ1ZVxuICApOiBudW1iZXIgfCBudWxsIHtcbiAgICBsZXQgaGFuZGxlID0gdGhpcy5oZWxwZXJEZWZpbml0aW9uQ2FjaGUuZ2V0KGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICBpZiAoaGFuZGxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBtYW5hZ2VyT3JIZWxwZXIgPSBnZXRJbnRlcm5hbEhlbHBlck1hbmFnZXIoZGVmaW5pdGlvblN0YXRlLCBpc09wdGlvbmFsKTtcblxuICAgICAgaWYgKG1hbmFnZXJPckhlbHBlciA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLmhlbHBlckRlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBudWxsKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChtYW5hZ2VyT3JIZWxwZXIsICdCVUc6IGV4cGVjdGVkIG1hbmFnZXIgb3IgaGVscGVyJyk7XG5cbiAgICAgIGxldCBoZWxwZXIgPVxuICAgICAgICB0eXBlb2YgbWFuYWdlck9ySGVscGVyID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgPyBtYW5hZ2VyT3JIZWxwZXJcbiAgICAgICAgICA6IG1hbmFnZXJPckhlbHBlci5nZXRIZWxwZXIoZGVmaW5pdGlvblN0YXRlKTtcblxuICAgICAgaGFuZGxlID0gdGhpcy52YWx1ZShoZWxwZXIpO1xuXG4gICAgICB0aGlzLmhlbHBlckRlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBoYW5kbGUpO1xuICAgICAgdGhpcy5oZWxwZXJEZWZpbml0aW9uQ291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlO1xuICB9XG5cbiAgbW9kaWZpZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBNb2RpZmllckRlZmluaXRpb25TdGF0ZSxcbiAgICByZXNvbHZlZE5hbWU6IHN0cmluZyB8IG51bGwsXG4gICAgaXNPcHRpb25hbDogdHJ1ZVxuICApOiBudW1iZXIgfCBudWxsO1xuICBtb2RpZmllcihkZWZpbml0aW9uU3RhdGU6IE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLCByZXNvbHZlZE5hbWU/OiBzdHJpbmcgfCBudWxsKTogbnVtYmVyO1xuICBtb2RpZmllcihcbiAgICBkZWZpbml0aW9uU3RhdGU6IE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLFxuICAgIHJlc29sdmVkTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgaXNPcHRpb25hbD86IHRydWVcbiAgKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgbGV0IGhhbmRsZSA9IHRoaXMubW9kaWZpZXJEZWZpbml0aW9uQ2FjaGUuZ2V0KGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICBpZiAoaGFuZGxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBtYW5hZ2VyID0gZ2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIoZGVmaW5pdGlvblN0YXRlLCBpc09wdGlvbmFsKTtcblxuICAgICAgaWYgKG1hbmFnZXIgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5tb2RpZmllckRlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBudWxsKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGxldCBkZWZpbml0aW9uID0ge1xuICAgICAgICByZXNvbHZlZE5hbWUsXG4gICAgICAgIG1hbmFnZXIsXG4gICAgICAgIHN0YXRlOiBkZWZpbml0aW9uU3RhdGUsXG4gICAgICB9O1xuXG4gICAgICBoYW5kbGUgPSB0aGlzLnZhbHVlKGRlZmluaXRpb24pO1xuXG4gICAgICB0aGlzLm1vZGlmaWVyRGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIGhhbmRsZSk7XG4gICAgICB0aGlzLm1vZGlmaWVyRGVmaW5pdGlvbkNvdW50Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhbmRsZTtcbiAgfVxuXG4gIGNvbXBvbmVudChkZWZpbml0aW9uU3RhdGU6IENvbXBvbmVudERlZmluaXRpb25TdGF0ZSk6IENvbXBvbmVudERlZmluaXRpb247XG4gIGNvbXBvbmVudChcbiAgICBkZWZpbml0aW9uU3RhdGU6IENvbXBvbmVudERlZmluaXRpb25TdGF0ZSxcbiAgICBpc09wdGlvbmFsOiB0cnVlXG4gICk6IENvbXBvbmVudERlZmluaXRpb24gfCBudWxsO1xuICBjb21wb25lbnQoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBDb21wb25lbnREZWZpbml0aW9uU3RhdGUsXG4gICAgaXNPcHRpb25hbD86IHRydWUsXG4gICAgb3duZXI/OiBvYmplY3RcbiAgKTogQ29tcG9uZW50RGVmaW5pdGlvbiB8IG51bGwge1xuICAgIGxldCBkZWZpbml0aW9uID0gdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuZ2V0KGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICBpZiAoZGVmaW5pdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbWFuYWdlciA9IGdldEludGVybmFsQ29tcG9uZW50TWFuYWdlcihkZWZpbml0aW9uU3RhdGUsIGlzT3B0aW9uYWwpO1xuXG4gICAgICBpZiAobWFuYWdlciA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNvbXBvbmVudERlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBudWxsKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChtYW5hZ2VyLCAnQlVHOiBleHBlY3RlZCBtYW5hZ2VyJyk7XG5cbiAgICAgIGxldCBjYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXR5RmxhZ3NGcm9tKG1hbmFnZXIuZ2V0Q2FwYWJpbGl0aWVzKGRlZmluaXRpb25TdGF0ZSkpO1xuXG4gICAgICBsZXQgdGVtcGxhdGVGYWN0b3J5ID0gZ2V0Q29tcG9uZW50VGVtcGxhdGUoZGVmaW5pdGlvblN0YXRlKTtcblxuICAgICAgbGV0IGNvbXBpbGFibGUgPSBudWxsO1xuICAgICAgbGV0IHRlbXBsYXRlO1xuXG4gICAgICBpZiAoIW1hbmFnZXJIYXNDYXBhYmlsaXR5KG1hbmFnZXIsIGNhcGFiaWxpdGllcywgSW50ZXJuYWxDb21wb25lbnRDYXBhYmlsaXR5LkR5bmFtaWNMYXlvdXQpKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGVGYWN0b3J5Py4ob3duZXIpID8/IHRoaXMuZGVmYXVsdFRlbXBsYXRlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZUZhY3Rvcnk/Lihvd25lcik7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZW1wbGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdW53cmFwVGVtcGxhdGUodGVtcGxhdGUpO1xuXG4gICAgICAgIGNvbXBpbGFibGUgPSBtYW5hZ2VySGFzQ2FwYWJpbGl0eShcbiAgICAgICAgICBtYW5hZ2VyLFxuICAgICAgICAgIGNhcGFiaWxpdGllcyxcbiAgICAgICAgICBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHkuV3JhcHBlZFxuICAgICAgICApXG4gICAgICAgICAgPyB0ZW1wbGF0ZS5hc1dyYXBwZWRMYXlvdXQoKVxuICAgICAgICAgIDogdGVtcGxhdGUuYXNMYXlvdXQoKTtcbiAgICAgIH1cblxuICAgICAgZGVmaW5pdGlvbiA9IHtcbiAgICAgICAgcmVzb2x2ZWROYW1lOiBudWxsLFxuICAgICAgICBoYW5kbGU6IC0xLCAvLyByZXBsYWNlZCBtb21lbnRhcmlseVxuICAgICAgICBtYW5hZ2VyLFxuICAgICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICAgIHN0YXRlOiBkZWZpbml0aW9uU3RhdGUsXG4gICAgICAgIGNvbXBpbGFibGUsXG4gICAgICB9O1xuXG4gICAgICBkZWZpbml0aW9uIS5oYW5kbGUgPSB0aGlzLnZhbHVlKGRlZmluaXRpb24pO1xuICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgZGVmaW5pdGlvbik7XG4gICAgICB0aGlzLmNvbXBvbmVudERlZmluaXRpb25Db3VudCsrO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgcmVzb2x2ZWRDb21wb25lbnQoXG4gICAgcmVzb2x2ZWREZWZpbml0aW9uOiBSZXNvbHZlZENvbXBvbmVudERlZmluaXRpb24sXG4gICAgcmVzb2x2ZWROYW1lOiBzdHJpbmdcbiAgKTogQ29tcG9uZW50RGVmaW5pdGlvbiB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB0aGlzLmNvbXBvbmVudERlZmluaXRpb25DYWNoZS5nZXQocmVzb2x2ZWREZWZpbml0aW9uKTtcblxuICAgIGlmIChkZWZpbml0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCB7IG1hbmFnZXIsIHN0YXRlLCB0ZW1wbGF0ZSB9ID0gcmVzb2x2ZWREZWZpbml0aW9uO1xuICAgICAgbGV0IGNhcGFiaWxpdGllcyA9IGNhcGFiaWxpdHlGbGFnc0Zyb20obWFuYWdlci5nZXRDYXBhYmlsaXRpZXMocmVzb2x2ZWREZWZpbml0aW9uKSk7XG5cbiAgICAgIGxldCBjb21waWxhYmxlID0gbnVsbDtcblxuICAgICAgaWYgKCFtYW5hZ2VySGFzQ2FwYWJpbGl0eShtYW5hZ2VyLCBjYXBhYmlsaXRpZXMsIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eS5EeW5hbWljTGF5b3V0KSkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlID8/IHRoaXMuZGVmYXVsdFRlbXBsYXRlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGVtcGxhdGUgIT09IG51bGwpIHtcbiAgICAgICAgdGVtcGxhdGUgPSB1bndyYXBUZW1wbGF0ZSh0ZW1wbGF0ZSk7XG5cbiAgICAgICAgY29tcGlsYWJsZSA9IG1hbmFnZXJIYXNDYXBhYmlsaXR5KFxuICAgICAgICAgIG1hbmFnZXIsXG4gICAgICAgICAgY2FwYWJpbGl0aWVzLFxuICAgICAgICAgIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eS5XcmFwcGVkXG4gICAgICAgIClcbiAgICAgICAgICA/IHRlbXBsYXRlLmFzV3JhcHBlZExheW91dCgpXG4gICAgICAgICAgOiB0ZW1wbGF0ZS5hc0xheW91dCgpO1xuICAgICAgfVxuXG4gICAgICBkZWZpbml0aW9uID0ge1xuICAgICAgICByZXNvbHZlZE5hbWUsXG4gICAgICAgIGhhbmRsZTogLTEsIC8vIHJlcGxhY2VkIG1vbWVudGFyaWx5XG4gICAgICAgIG1hbmFnZXIsXG4gICAgICAgIGNhcGFiaWxpdGllcyxcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIGNvbXBpbGFibGUsXG4gICAgICB9O1xuXG4gICAgICBkZWZpbml0aW9uIS5oYW5kbGUgPSB0aGlzLnZhbHVlKGRlZmluaXRpb24pO1xuICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuc2V0KHJlc29sdmVkRGVmaW5pdGlvbiwgZGVmaW5pdGlvbik7XG4gICAgICB0aGlzLmNvbXBvbmVudERlZmluaXRpb25Db3VudCsrO1xuICAgIH1cblxuICAgIHJldHVybiBleHBlY3QoZGVmaW5pdGlvbiwgJ0JVRzogcmVzb2x2ZWQgY29tcG9uZW50IGRlZmluaXRpb25zIGNhbm5vdCBiZSBudWxsJyk7XG4gIH1cblxuICBnZXRWYWx1ZTxUPihpbmRleDogbnVtYmVyKSB7XG4gICAgYXNzZXJ0KGluZGV4ID49IDAsIGBjYW5ub3QgZ2V0IHZhbHVlIGZvciBoYW5kbGU6ICR7aW5kZXh9YCk7XG5cbiAgICByZXR1cm4gdGhpcy52YWx1ZXNbaW5kZXhdIGFzIFQ7XG4gIH1cblxuICBnZXRBcnJheTxUPihpbmRleDogbnVtYmVyKTogVFtdIHtcbiAgICBsZXQgcmVpZmllZEFycnMgPSB0aGlzLnJlaWZpZWRBcnJzO1xuICAgIGxldCByZWlmaWVkID0gcmVpZmllZEFycnNbaW5kZXhdIGFzIFRbXTtcblxuICAgIGlmIChyZWlmaWVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBuYW1lczogbnVtYmVyW10gPSB0aGlzLmdldFZhbHVlKGluZGV4KTtcbiAgICAgIHJlaWZpZWQgPSBuZXcgQXJyYXkobmFtZXMubGVuZ3RoKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZWlmaWVkW2ldID0gdGhpcy5nZXRWYWx1ZShuYW1lc1tpXSk7XG4gICAgICB9XG5cbiAgICAgIHJlaWZpZWRBcnJzW2luZGV4XSA9IHJlaWZpZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlaWZpZWQ7XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wY29kZVNpemUsIFJ1bnRpbWVPcCwgT3Bjb2RlSGVhcCB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgY2xhc3MgUnVudGltZU9wSW1wbCBpbXBsZW1lbnRzIFJ1bnRpbWVPcCB7XG4gIHB1YmxpYyBvZmZzZXQgPSAwO1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBoZWFwOiBPcGNvZGVIZWFwKSB7fVxuXG4gIGdldCBzaXplKCkge1xuICAgIGxldCByYXdUeXBlID0gdGhpcy5oZWFwLmdldGJ5YWRkcih0aGlzLm9mZnNldCk7XG4gICAgcmV0dXJuICgocmF3VHlwZSAmIE9wY29kZVNpemUuT1BFUkFORF9MRU5fTUFTSykgPj4gT3Bjb2RlU2l6ZS5BUkdfU0hJRlQpICsgMTtcbiAgfVxuXG4gIGdldCBpc01hY2hpbmUoKTogMCB8IDEge1xuICAgIGxldCByYXdUeXBlID0gdGhpcy5oZWFwLmdldGJ5YWRkcih0aGlzLm9mZnNldCk7XG4gICAgcmV0dXJuIHJhd1R5cGUgJiBPcGNvZGVTaXplLk1BQ0hJTkVfTUFTSyA/IDEgOiAwO1xuICB9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhcC5nZXRieWFkZHIodGhpcy5vZmZzZXQpICYgT3Bjb2RlU2l6ZS5UWVBFX01BU0s7XG4gIH1cblxuICBnZXQgb3AxKCkge1xuICAgIHJldHVybiB0aGlzLmhlYXAuZ2V0YnlhZGRyKHRoaXMub2Zmc2V0ICsgMSk7XG4gIH1cblxuICBnZXQgb3AyKCkge1xuICAgIHJldHVybiB0aGlzLmhlYXAuZ2V0YnlhZGRyKHRoaXMub2Zmc2V0ICsgMik7XG4gIH1cblxuICBnZXQgb3AzKCkge1xuICAgIHJldHVybiB0aGlzLmhlYXAuZ2V0YnlhZGRyKHRoaXMub2Zmc2V0ICsgMyk7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIENvbXBpbGVUaW1lSGVhcCxcbiAgU2VyaWFsaXplZEhlYXAsXG4gIFJ1bnRpbWVIZWFwLFxuICBTdGRMaWJPcGVyYW5kLFxuICBSdW50aW1lQ29uc3RhbnRzLFxuICBSdW50aW1lUHJvZ3JhbSxcbiAgUmVzb2x1dGlvblRpbWVDb25zdGFudHMsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTE9DQUxfREVCVUcgfSBmcm9tICdAZ2xpbW1lci9sb2NhbC1kZWJ1Zy1mbGFncyc7XG5pbXBvcnQgeyBSdW50aW1lT3BJbXBsIH0gZnJvbSAnLi9vcGNvZGUnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmNvbnN0IGVudW0gVGFibGVTbG90U3RhdGUge1xuICBBbGxvY2F0ZWQsXG4gIEZyZWVkLFxuICBQdXJnZWQsXG4gIFBvaW50ZXIsXG59XG5cbmV4cG9ydCB0eXBlIFBsYWNlaG9sZGVyID0gW251bWJlciwgKCkgPT4gbnVtYmVyXTtcbmV4cG9ydCB0eXBlIFN0ZGxpYlBsYWNlaG9sZGVyID0gW251bWJlciwgU3RkTGliT3BlcmFuZF07XG5cbmNvbnN0IFBBR0VfU0laRSA9IDB4MTAwMDAwO1xuXG5leHBvcnQgY2xhc3MgUnVudGltZUhlYXBJbXBsIGltcGxlbWVudHMgUnVudGltZUhlYXAge1xuICBwcml2YXRlIGhlYXA6IEludDMyQXJyYXk7XG4gIHByaXZhdGUgdGFibGU6IG51bWJlcltdO1xuXG4gIGNvbnN0cnVjdG9yKHNlcmlhbGl6ZWRIZWFwOiBTZXJpYWxpemVkSGVhcCkge1xuICAgIGxldCB7IGJ1ZmZlciwgdGFibGUgfSA9IHNlcmlhbGl6ZWRIZWFwO1xuICAgIHRoaXMuaGVhcCA9IG5ldyBJbnQzMkFycmF5KGJ1ZmZlcik7XG4gICAgdGhpcy50YWJsZSA9IHRhYmxlO1xuICB9XG5cbiAgLy8gSXQgaXMgaWxsZWdhbCB0byBjbG9zZSBvdmVyIHRoaXMgYWRkcmVzcywgYXMgY29tcGFjdGlvblxuICAvLyBtYXkgbW92ZSBpdC4gSG93ZXZlciwgaXQgaXMgbGVnYWwgdG8gdXNlIHRoaXMgYWRkcmVzc1xuICAvLyBtdWx0aXBsZSB0aW1lcyBiZXR3ZWVuIGNvbXBhY3Rpb25zLlxuICBnZXRhZGRyKGhhbmRsZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZVtoYW5kbGVdO1xuICB9XG5cbiAgZ2V0YnlhZGRyKGFkZHJlc3M6IG51bWJlcik6IG51bWJlciB7XG4gICAgYXNzZXJ0KHRoaXMuaGVhcFthZGRyZXNzXSAhPT0gdW5kZWZpbmVkLCAnQWNjZXNzIG1lbW9yeSBvdXQgb2YgYm91bmRzIG9mIHRoZSBoZWFwJyk7XG4gICAgcmV0dXJuIHRoaXMuaGVhcFthZGRyZXNzXTtcbiAgfVxuXG4gIHNpemVvZihoYW5kbGU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHNpemVvZih0aGlzLnRhYmxlLCBoYW5kbGUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeWRyYXRlSGVhcChzZXJpYWxpemVkSGVhcDogU2VyaWFsaXplZEhlYXApOiBSdW50aW1lSGVhcCB7XG4gIHJldHVybiBuZXcgUnVudGltZUhlYXBJbXBsKHNlcmlhbGl6ZWRIZWFwKTtcbn1cblxuLyoqXG4gKiBUaGUgSGVhcCBpcyByZXNwb25zaWJsZSBmb3IgZHluYW1pY2FsbHkgYWxsb2NhdGluZ1xuICogbWVtb3J5IGluIHdoaWNoIHdlIHJlYWQvd3JpdGUgdGhlIFZNJ3MgaW5zdHJ1Y3Rpb25zXG4gKiBmcm9tL3RvLiBXaGVuIHdlIG1hbGxvYyB3ZSBwYXNzIG91dCBhIFZNSGFuZGxlLCB3aGljaFxuICogaXMgdXNlZCBhcyBhbiBpbmRpcmVjdCB3YXkgb2YgYWNjZXNzaW5nIHRoZSBtZW1vcnkgZHVyaW5nXG4gKiBleGVjdXRpb24gb2YgdGhlIFZNLiBJbnRlcm5hbGx5IHdlIHRyYWNrIHRoZSBkaWZmZXJlbnRcbiAqIHJlZ2lvbnMgb2YgdGhlIG1lbW9yeSBpbiBhbiBpbnQgYXJyYXkga25vd24gYXMgdGhlIHRhYmxlLlxuICpcbiAqIFRoZSB0YWJsZSAzMi1iaXQgYWxpZ25lZCBhbmQgaGFzIHRoZSBmb2xsb3dpbmcgbGF5b3V0OlxuICpcbiAqIHwgLi4uIHwgaHAgKHUzMikgfCAgICAgICBpbmZvICh1MzIpICAgfCBzaXplICh1MzIpIHxcbiAqIHwgLi4uIHwgIEhhbmRsZSAgfCBTY29wZSBTaXplIHwgU3RhdGUgfCBTaXplICAgICAgIHxcbiAqIHwgLi4uIHwgMzJiaXRzICAgfCAzMGJpdHMgICAgIHwgMmJpdHMgfCAzMmJpdCAgICAgIHxcbiAqXG4gKiBXaXRoIHRoaXMgaW5mb3JtYXRpb24gd2UgZWZmZWN0aXZlbHkgaGF2ZSB0aGUgYWJpbGl0eSB0b1xuICogY29udHJvbCB3aGVuIHdlIHdhbnQgdG8gZnJlZSBtZW1vcnkuIFRoYXQgYmVpbmcgc2FpZCB5b3VcbiAqIGNhbiBub3QgZnJlZSBkdXJpbmcgZXhlY3V0aW9uIGFzIHJhdyBhZGRyZXNzIGFyZSBvbmx5XG4gKiB2YWxpZCBkdXJpbmcgdGhlIGV4ZWN1dGlvbi4gVGhpcyBtZWFucyB5b3UgY2Fubm90IGNsb3NlXG4gKiBvdmVyIHRoZW0gYXMgeW91IHdpbGwgaGF2ZSBhIGJhZCBtZW1vcnkgYWNjZXNzIGV4Y2VwdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEhlYXBJbXBsIGltcGxlbWVudHMgQ29tcGlsZVRpbWVIZWFwLCBSdW50aW1lSGVhcCB7XG4gIG9mZnNldCA9IDA7XG5cbiAgcHJpdmF0ZSBoZWFwOiBJbnQzMkFycmF5O1xuICBwcml2YXRlIGhhbmRsZVRhYmxlOiBudW1iZXJbXTtcbiAgcHJpdmF0ZSBoYW5kbGVTdGF0ZTogVGFibGVTbG90U3RhdGVbXTtcbiAgcHJpdmF0ZSBoYW5kbGUgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaGVhcCA9IG5ldyBJbnQzMkFycmF5KFBBR0VfU0laRSk7XG4gICAgdGhpcy5oYW5kbGVUYWJsZSA9IFtdO1xuICAgIHRoaXMuaGFuZGxlU3RhdGUgPSBbXTtcbiAgfVxuXG4gIHB1c2goaXRlbTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5zaXplQ2hlY2soKTtcbiAgICB0aGlzLmhlYXBbdGhpcy5vZmZzZXQrK10gPSBpdGVtO1xuICB9XG5cbiAgcHJpdmF0ZSBzaXplQ2hlY2soKSB7XG4gICAgbGV0IHsgaGVhcCB9ID0gdGhpcztcblxuICAgIGlmICh0aGlzLm9mZnNldCA9PT0gdGhpcy5oZWFwLmxlbmd0aCkge1xuICAgICAgbGV0IG5ld0hlYXAgPSBuZXcgSW50MzJBcnJheShoZWFwLmxlbmd0aCArIFBBR0VfU0laRSk7XG4gICAgICBuZXdIZWFwLnNldChoZWFwLCAwKTtcbiAgICAgIHRoaXMuaGVhcCA9IG5ld0hlYXA7XG4gICAgfVxuICB9XG5cbiAgZ2V0YnlhZGRyKGFkZHJlc3M6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaGVhcFthZGRyZXNzXTtcbiAgfVxuXG4gIHNldGJ5YWRkcihhZGRyZXNzOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLmhlYXBbYWRkcmVzc10gPSB2YWx1ZTtcbiAgfVxuXG4gIG1hbGxvYygpOiBudW1iZXIge1xuICAgIC8vIHB1c2ggb2Zmc2V0LCBpbmZvLCBzaXplXG4gICAgdGhpcy5oYW5kbGVUYWJsZS5wdXNoKHRoaXMub2Zmc2V0KTtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVUYWJsZS5sZW5ndGggLSAxO1xuICB9XG5cbiAgZmluaXNoTWFsbG9jKGhhbmRsZTogbnVtYmVyKTogdm9pZCB7XG4gICAgLy8gQFRPRE86IEF0IHRoZSBtb21lbnQsIGdhcmJhZ2UgY29sbGVjdGlvbiBpc24ndCBhY3R1YWxseSB1c2VkLCBzbyB0aGlzIGlzXG4gICAgLy8gd3JhcHBlZCB0byBwcmV2ZW50IHVzIGZyb20gYWxsb2NhdGluZyBleHRyYSBzcGFjZSBpbiBwcm9kLiBJbiB0aGUgZnV0dXJlLFxuICAgIC8vIGlmIHdlIHN0YXJ0IHVzaW5nIHRoZSBjb21wYWN0IEFQSSwgd2Ugc2hvdWxkIGNoYW5nZSB0aGlzLlxuICAgIGlmIChMT0NBTF9ERUJVRykge1xuICAgICAgdGhpcy5oYW5kbGVTdGF0ZVtoYW5kbGVdID0gVGFibGVTbG90U3RhdGUuQWxsb2NhdGVkO1xuICAgIH1cbiAgfVxuXG4gIHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vZmZzZXQ7XG4gIH1cblxuICAvLyBJdCBpcyBpbGxlZ2FsIHRvIGNsb3NlIG92ZXIgdGhpcyBhZGRyZXNzLCBhcyBjb21wYWN0aW9uXG4gIC8vIG1heSBtb3ZlIGl0LiBIb3dldmVyLCBpdCBpcyBsZWdhbCB0byB1c2UgdGhpcyBhZGRyZXNzXG4gIC8vIG11bHRpcGxlIHRpbWVzIGJldHdlZW4gY29tcGFjdGlvbnMuXG4gIGdldGFkZHIoaGFuZGxlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmhhbmRsZVRhYmxlW2hhbmRsZV07XG4gIH1cblxuICBzaXplb2YoaGFuZGxlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBzaXplb2YodGhpcy5oYW5kbGVUYWJsZSwgaGFuZGxlKTtcbiAgfVxuXG4gIGZyZWUoaGFuZGxlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZVN0YXRlW2hhbmRsZV0gPSBUYWJsZVNsb3RTdGF0ZS5GcmVlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaGVhcCB1c2VzIHRoZSBbTWFyay1Db21wYWN0IEFsZ29yaXRobV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFyay1jb21wYWN0X2FsZ29yaXRobSkgdG8gc2hpZnRcbiAgICogcmVhY2hhYmxlIG1lbW9yeSB0byB0aGUgYm90dG9tIG9mIHRoZSBoZWFwIGFuZCBmcmVlYWJsZVxuICAgKiBtZW1vcnkgdG8gdGhlIHRvcCBvZiB0aGUgaGVhcC4gV2hlbiB3ZSBoYXZlIHNoaWZ0ZWQgYWxsXG4gICAqIHRoZSByZWFjaGFibGUgbWVtb3J5IHRvIHRoZSB0b3Agb2YgdGhlIGhlYXAsIHdlIG1vdmUgdGhlXG4gICAqIG9mZnNldCB0byB0aGUgbmV4dCBmcmVlIHBvc2l0aW9uLlxuICAgKi9cbiAgY29tcGFjdCgpOiB2b2lkIHtcbiAgICBsZXQgY29tcGFjdGVkU2l6ZSA9IDA7XG4gICAgbGV0IHsgaGFuZGxlVGFibGUsIGhhbmRsZVN0YXRlLCBoZWFwIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG9mZnNldCA9IGhhbmRsZVRhYmxlW2ldO1xuICAgICAgbGV0IHNpemUgPSBoYW5kbGVUYWJsZVtpICsgMV0gLSBvZmZzZXQ7XG4gICAgICBsZXQgc3RhdGUgPSBoYW5kbGVTdGF0ZVtpXTtcblxuICAgICAgaWYgKHN0YXRlID09PSBUYWJsZVNsb3RTdGF0ZS5QdXJnZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBUYWJsZVNsb3RTdGF0ZS5GcmVlZCkge1xuICAgICAgICAvLyB0cmFuc2l0aW9uIHRvIFwiYWxyZWFkeSBmcmVlZFwiIGFrYSBcInB1cmdlZFwiXG4gICAgICAgIC8vIGEgZ29vZCBpbXByb3ZlbWVudCB3b3VsZCBiZSB0byByZXVzZVxuICAgICAgICAvLyB0aGVzZSBzbG90c1xuICAgICAgICBoYW5kbGVTdGF0ZVtpXSA9IFRhYmxlU2xvdFN0YXRlLlB1cmdlZDtcbiAgICAgICAgY29tcGFjdGVkU2l6ZSArPSBzaXplO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuQWxsb2NhdGVkKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBvZmZzZXQ7IGogPD0gaSArIHNpemU7IGorKykge1xuICAgICAgICAgIGhlYXBbaiAtIGNvbXBhY3RlZFNpemVdID0gaGVhcFtqXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGhhbmRsZVRhYmxlW2ldID0gb2Zmc2V0IC0gY29tcGFjdGVkU2l6ZTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFRhYmxlU2xvdFN0YXRlLlBvaW50ZXIpIHtcbiAgICAgICAgaGFuZGxlVGFibGVbaV0gPSBvZmZzZXQgLSBjb21wYWN0ZWRTaXplO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMub2Zmc2V0ID0gdGhpcy5vZmZzZXQgLSBjb21wYWN0ZWRTaXplO1xuICB9XG5cbiAgY2FwdHVyZShvZmZzZXQgPSB0aGlzLm9mZnNldCk6IFNlcmlhbGl6ZWRIZWFwIHtcbiAgICAvLyBPbmx5IGNhbGxlZCBpbiBlYWdlciBtb2RlXG4gICAgbGV0IGJ1ZmZlciA9IHNsaWNlKHRoaXMuaGVhcCwgMCwgb2Zmc2V0KS5idWZmZXI7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhhbmRsZTogdGhpcy5oYW5kbGUsXG4gICAgICB0YWJsZTogdGhpcy5oYW5kbGVUYWJsZSxcbiAgICAgIGJ1ZmZlcjogYnVmZmVyIGFzIEFycmF5QnVmZmVyLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVQcm9ncmFtSW1wbCBpbXBsZW1lbnRzIFJ1bnRpbWVQcm9ncmFtIHtcbiAgW2tleTogbnVtYmVyXTogbmV2ZXI7XG5cbiAgcHJpdmF0ZSBfb3Bjb2RlOiBSdW50aW1lT3BJbXBsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjb25zdGFudHM6IFJ1bnRpbWVDb25zdGFudHMgJiBSZXNvbHV0aW9uVGltZUNvbnN0YW50cyxcbiAgICBwdWJsaWMgaGVhcDogUnVudGltZUhlYXBcbiAgKSB7XG4gICAgdGhpcy5fb3Bjb2RlID0gbmV3IFJ1bnRpbWVPcEltcGwodGhpcy5oZWFwKTtcbiAgfVxuXG4gIG9wY29kZShvZmZzZXQ6IG51bWJlcik6IFJ1bnRpbWVPcEltcGwge1xuICAgIHRoaXMuX29wY29kZS5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgcmV0dXJuIHRoaXMuX29wY29kZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzbGljZShhcnI6IEludDMyQXJyYXksIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogSW50MzJBcnJheSB7XG4gIGlmIChhcnIuc2xpY2UgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBhcnIuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH1cblxuICBsZXQgcmV0ID0gbmV3IEludDMyQXJyYXkoZW5kKTtcblxuICBmb3IgKDsgc3RhcnQgPCBlbmQ7IHN0YXJ0KyspIHtcbiAgICByZXRbc3RhcnRdID0gYXJyW3N0YXJ0XTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHNpemVvZih0YWJsZTogbnVtYmVyW10sIGhhbmRsZTogbnVtYmVyKSB7XG4gIGlmIChMT0NBTF9ERUJVRykge1xuICAgIHJldHVybiB0YWJsZVtoYW5kbGUgKyAxXSAtIHRhYmxlW2hhbmRsZV07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG59XG4iLCJpbXBvcnQgeyBDb21waWxlVGltZUFydGlmYWN0cywgUnVudGltZUFydGlmYWN0cyB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29uc3RhbnRzSW1wbCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEhlYXBJbXBsIH0gZnJvbSAnLi9wcm9ncmFtJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFydGlmYWN0cygpOiBDb21waWxlVGltZUFydGlmYWN0cyAmIFJ1bnRpbWVBcnRpZmFjdHMge1xuICByZXR1cm4ge1xuICAgIGNvbnN0YW50czogbmV3IENvbnN0YW50c0ltcGwoKSxcbiAgICBoZWFwOiBuZXcgSGVhcEltcGwoKSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6WyJjb25zdGFudHMiLCJ0ZW1wbGF0ZUZhY3RvcnkiLCJnZXRJbnRlcm5hbEhlbHBlck1hbmFnZXIiLCJtYW5hZ2VyIiwiZ2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIiLCJnZXRJbnRlcm5hbENvbXBvbmVudE1hbmFnZXIiLCJjYXBhYmlsaXR5RmxhZ3NGcm9tIiwiZ2V0Q29tcG9uZW50VGVtcGxhdGUiLCJtYW5hZ2VySGFzQ2FwYWJpbGl0eSIsInVud3JhcFRlbXBsYXRlIl0sIm1hcHBpbmdzIjoiOztFQU1BOzs7RUFHQSxJQUFNLHNCQUFzQixHQUE0QixDQUN0RCxDQUFDLENBQUE7RUFBQTtFQUFBLEVBQUEsQ0FBQSxFQURxRCxJQUNyRCxDQUFELENBRHNELEVBRXRELENBRnNELFVBRXRELENBRnNELEVBQUEsS0FBQSxFQUF4RCxFQUF3RCxDQUF4RDtFQU9PLElBQU0sZ0JBQWdCLEdBQW9DO0VBQy9ELEVBQUEsVUFBVSxFQURxRCxpQkFBQTtFQUUvRCxFQUFBLEtBQUssRUFBRSxJQUFJLENBQUosU0FBQSxDQUZ3RCxzQkFFeEQsQ0FGd0Q7RUFHL0QsRUFBQSxLQUFLLEVBSDBELElBQUE7RUFJL0QsRUFBQSxZQUFZLEVBQUU7RUFKaUQsQ0FBMUQ7OztFQ1NQLElBQU0sc0JBQXNCLEdBQVksTUFBTSxDQUFOLE1BQUEsQ0FBeEMsRUFBd0MsQ0FBeEM7RUFDQSxJQUFNLGlCQUFpQixHQUFHQSxjQUFTLENBQW5DLHNCQUFtQyxDQUFuQztFQUNBLElBQU0sK0JBQStCLEdBQVcsaUJBQWlCLENBQWpCLE9BQUEsQ0FBaEQsc0JBQWdELENBQWhEO0FBRUEsTUFBTSx1QkFBTjtFQUFBLHFDQUFBO0VBQ0U7RUFFVSxTQUFBLE1BQUEsR0FBb0IsaUJBQWlCLENBQXJDLEtBQW9CLEVBQXBCO0VBQ0EsU0FB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 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xpbW1lci1wcm9ncmFtLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi91dGlsL2RlZmF1bHQtdGVtcGxhdGUudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9jb25zdGFudHMudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9vcGNvZGUudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9wcm9ncmFtLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvcHJvZ3JhbS9saWIvaGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTZXJpYWxpemVkVGVtcGxhdGVCbG9jayxcbiAgU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jayxcbiAgU2V4cE9wY29kZXMsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG4vKipcbiAqIERlZmF1bHQgY29tcG9uZW50IHRlbXBsYXRlLCB3aGljaCBpcyBhIHBsYWluIHlpZWxkXG4gKi9cbmNvbnN0IERFRkFVTFRfVEVNUExBVEVfQkxPQ0s6IFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrID0gW1xuICBbW1NleHBPcGNvZGVzLllpZWxkLCAxLCBudWxsXV0sXG4gIFsnJmRlZmF1bHQnXSxcbiAgZmFsc2UsXG4gIFtdLFxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVEVNUExBVEU6IFNlcmlhbGl6ZWRUZW1wbGF0ZVdpdGhMYXp5QmxvY2sgPSB7XG4gIG1vZHVsZU5hbWU6ICdfX2RlZmF1bHRfXy5oYnMnLFxuICBibG9jazogSlNPTi5zdHJpbmdpZnkoREVGQVVMVF9URU1QTEFURV9CTE9DSyksXG4gIHNjb3BlOiBudWxsLFxuICBpc1N0cmljdE1vZGU6IHRydWUsXG59O1xuIiwiaW1wb3J0IHtcbiAgQ29tcGlsZVRpbWVDb25zdGFudHMsXG4gIENvbXBvbmVudERlZmluaXRpb25TdGF0ZSxcbiAgQ29uc3RhbnRQb29sLFxuICBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHksXG4gIENvbXBvbmVudERlZmluaXRpb24sXG4gIFJlc29sdXRpb25UaW1lQ29uc3RhbnRzLFxuICBSZXNvbHZlZENvbXBvbmVudERlZmluaXRpb24sXG4gIFJ1bnRpbWVDb25zdGFudHMsXG4gIE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLFxuICBIZWxwZXJEZWZpbml0aW9uU3RhdGUsXG4gIFRlbXBsYXRlLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGFzc2VydCwgY29uc3RhbnRzLCBleHBlY3QsIHVud3JhcFRlbXBsYXRlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBjYXBhYmlsaXR5RmxhZ3NGcm9tLFxuICBnZXRDb21wb25lbnRUZW1wbGF0ZSxcbiAgZ2V0SW50ZXJuYWxDb21wb25lbnRNYW5hZ2VyLFxuICBnZXRJbnRlcm5hbEhlbHBlck1hbmFnZXIsXG4gIGdldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyLFxuICBtYW5hZ2VySGFzQ2FwYWJpbGl0eSxcbn0gZnJvbSAnQGdsaW1tZXIvbWFuYWdlcic7XG5pbXBvcnQgeyB0ZW1wbGF0ZUZhY3RvcnkgfSBmcm9tICdAZ2xpbW1lci9vcGNvZGUtY29tcGlsZXInO1xuaW1wb3J0IHsgREVGQVVMVF9URU1QTEFURSB9IGZyb20gJy4vdXRpbC9kZWZhdWx0LXRlbXBsYXRlJztcblxuY29uc3QgV0VMTF9LTk9XTl9FTVBUWV9BUlJBWTogdW5rbm93biA9IE9iamVjdC5mcmVlemUoW10pO1xuY29uc3QgU1RBUlRFUl9DT05TVEFOVFMgPSBjb25zdGFudHMoV0VMTF9LTk9XTl9FTVBUWV9BUlJBWSk7XG5jb25zdCBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OOiBudW1iZXIgPSBTVEFSVEVSX0NPTlNUQU5UUy5pbmRleE9mKFdFTExfS05PV05fRU1QVFlfQVJSQVkpO1xuXG5leHBvcnQgY2xhc3MgQ29tcGlsZVRpbWVDb25zdGFudEltcGwgaW1wbGVtZW50cyBDb21waWxlVGltZUNvbnN0YW50cyB7XG4gIC8vIGAwYCBtZWFucyBOVUxMXG5cbiAgcHJvdGVjdGVkIHZhbHVlczogdW5rbm93bltdID0gU1RBUlRFUl9DT05TVEFOVFMuc2xpY2UoKTtcbiAgcHJvdGVjdGVkIGluZGV4TWFwOiBNYXA8dW5rbm93biwgbnVtYmVyPiA9IG5ldyBNYXAoXG4gICAgdGhpcy52YWx1ZXMubWFwKCh2YWx1ZSwgaW5kZXgpID0+IFt2YWx1ZSwgaW5kZXhdKVxuICApO1xuXG4gIHZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgbGV0IGluZGV4TWFwID0gdGhpcy5pbmRleE1hcDtcbiAgICBsZXQgaW5kZXggPSBpbmRleE1hcC5nZXQodmFsdWUpO1xuXG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGluZGV4ID0gdGhpcy52YWx1ZXMucHVzaCh2YWx1ZSkgLSAxO1xuICAgICAgaW5kZXhNYXAuc2V0KHZhbHVlLCBpbmRleCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgYXJyYXkodmFsdWVzOiB1bmtub3duW10pOiBudW1iZXIge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gV0VMTF9LTk9XTl9FTVBUWV9BUlJBWV9QT1NJVElPTjtcbiAgICB9XG5cbiAgICBsZXQgaGFuZGxlczogbnVtYmVyW10gPSBuZXcgQXJyYXkodmFsdWVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaGFuZGxlc1tpXSA9IHRoaXMudmFsdWUodmFsdWVzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52YWx1ZShoYW5kbGVzKTtcbiAgfVxuXG4gIHRvUG9vbCgpOiBDb25zdGFudFBvb2wge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUnVudGltZUNvbnN0YW50c0ltcGwgaW1wbGVtZW50cyBSdW50aW1lQ29uc3RhbnRzIHtcbiAgcHJvdGVjdGVkIHZhbHVlczogdW5rbm93bltdO1xuXG4gIGNvbnN0cnVjdG9yKHBvb2w6IENvbnN0YW50UG9vbCkge1xuICAgIHRoaXMudmFsdWVzID0gcG9vbDtcbiAgfVxuXG4gIGdldFZhbHVlPFQ+KGhhbmRsZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzW2hhbmRsZV0gYXMgVDtcbiAgfVxuXG4gIGdldEFycmF5PFQ+KHZhbHVlOiBudW1iZXIpOiBUW10ge1xuICAgIGxldCBoYW5kbGVzID0gdGhpcy5nZXRWYWx1ZSh2YWx1ZSkgYXMgbnVtYmVyW107XG4gICAgbGV0IHJlaWZpZWQ6IFRbXSA9IG5ldyBBcnJheShoYW5kbGVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhhbmRsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBuID0gaGFuZGxlc1tpXTtcbiAgICAgIHJlaWZpZWRbaV0gPSB0aGlzLmdldFZhbHVlKG4pO1xuICAgIH1cblxuICAgIHJldHVybiByZWlmaWVkO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb25zdGFudHNJbXBsXG4gIGV4dGVuZHMgQ29tcGlsZVRpbWVDb25zdGFudEltcGxcbiAgaW1wbGVtZW50cyBSdW50aW1lQ29uc3RhbnRzLCBSZXNvbHV0aW9uVGltZUNvbnN0YW50cyB7XG4gIHByb3RlY3RlZCByZWlmaWVkQXJyczogeyBba2V5OiBudW1iZXJdOiB1bmtub3duW10gfSA9IHtcbiAgICBbV0VMTF9LTk9XTl9FTVBUWV9BUlJBWV9QT1NJVElPTl06IFdFTExfS05PV05fRU1QVFlfQVJSQVkgYXMgdW5rbm93bltdLFxuICB9O1xuXG4gIGRlZmF1bHRUZW1wbGF0ZTogVGVtcGxhdGUgPSB0ZW1wbGF0ZUZhY3RvcnkoREVGQVVMVF9URU1QTEFURSkoKTtcblxuICAvLyBVc2VkIGZvciB0ZXN0cyBhbmQgZGVidWdnaW5nIHB1cnBvc2VzLCBhbmQgdG8gYmUgYWJsZSB0byBhbmFseXplIGxhcmdlIGFwcHNcbiAgLy8gVGhpcyBpcyB3aHkgaXQncyBlbmFibGVkIGV2ZW4gaW4gcHJvZHVjdGlvblxuICBoZWxwZXJEZWZpbml0aW9uQ291bnQgPSAwO1xuICBtb2RpZmllckRlZmluaXRpb25Db3VudCA9IDA7XG4gIGNvbXBvbmVudERlZmluaXRpb25Db3VudCA9IDA7XG5cbiAgcHJpdmF0ZSBoZWxwZXJEZWZpbml0aW9uQ2FjaGUgPSBuZXcgV2Vha01hcDxIZWxwZXJEZWZpbml0aW9uU3RhdGUsIG51bWJlciB8IG51bGw+KCk7XG5cbiAgcHJpdmF0ZSBtb2RpZmllckRlZmluaXRpb25DYWNoZSA9IG5ldyBXZWFrTWFwPE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLCBudW1iZXIgfCBudWxsPigpO1xuXG4gIHByaXZhdGUgY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlID0gbmV3IFdlYWtNYXA8XG4gICAgQ29tcG9uZW50RGVmaW5pdGlvblN0YXRlIHwgUmVzb2x2ZWRDb21wb25lbnREZWZpbml0aW9uLFxuICAgIENvbXBvbmVudERlZmluaXRpb24gfCBudWxsXG4gID4oKTtcblxuICBoZWxwZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBIZWxwZXJEZWZpbml0aW9uU3RhdGUsXG5cbiAgICAvLyBUT0RPOiBBZGQgYSB3YXkgdG8gZXhwb3NlIHJlc29sdmVkIG5hbWUgZm9yIGRlYnVnZ2luZ1xuICAgIF9yZXNvbHZlZE5hbWU6IHN0cmluZyB8IG51bGwsXG4gICAgaXNPcHRpb25hbDogdHJ1ZVxuICApOiBudW1iZXIgfCBudWxsO1xuICBoZWxwZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBIZWxwZXJEZWZpbml0aW9uU3RhdGUsXG5cbiAgICAvLyBUT0RPOiBBZGQgYSB3YXkgdG8gZXhwb3NlIHJlc29sdmVkIG5hbWUgZm9yIGRlYnVnZ2luZ1xuICAgIF9yZXNvbHZlZE5hbWU/OiBzdHJpbmcgfCBudWxsXG4gICk6IG51bWJlcjtcbiAgaGVscGVyKFxuICAgIGRlZmluaXRpb25TdGF0ZTogSGVscGVyRGVmaW5pdGlvblN0YXRlLFxuXG4gICAgLy8gVE9ETzogQWRkIGEgd2F5IHRvIGV4cG9zZSByZXNvbHZlZCBuYW1lIGZvciBkZWJ1Z2dpbmdcbiAgICBfcmVzb2x2ZWROYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBpc09wdGlvbmFsPzogdHJ1ZVxuICApOiBudW1iZXIgfCBudWxsIHtcbiAgICBsZXQgaGFuZGxlID0gdGhpcy5oZWxwZXJEZWZpbml0aW9uQ2FjaGUuZ2V0KGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICBpZiAoaGFuZGxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBtYW5hZ2VyT3JIZWxwZXIgPSBnZXRJbnRlcm5hbEhlbHBlck1hbmFnZXIoZGVmaW5pdGlvblN0YXRlLCBpc09wdGlvbmFsKTtcblxuICAgICAgaWYgKG1hbmFnZXJPckhlbHBlciA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLmhlbHBlckRlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBudWxsKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChtYW5hZ2VyT3JIZWxwZXIsICdCVUc6IGV4cGVjdGVkIG1hbmFnZXIgb3IgaGVscGVyJyk7XG5cbiAgICAgIGxldCBoZWxwZXIgPVxuICAgICAgICB0eXBlb2YgbWFuYWdlck9ySGVscGVyID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgPyBtYW5hZ2VyT3JIZWxwZXJcbiAgICAgICAgICA6IG1hbmFnZXJPckhlbHBlci5nZXRIZWxwZXIoZGVmaW5pdGlvblN0YXRlKTtcblxuICAgICAgaGFuZGxlID0gdGhpcy52YWx1ZShoZWxwZXIpO1xuXG4gICAgICB0aGlzLmhlbHBlckRlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBoYW5kbGUpO1xuICAgICAgdGhpcy5oZWxwZXJEZWZpbml0aW9uQ291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlO1xuICB9XG5cbiAgbW9kaWZpZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBNb2RpZmllckRlZmluaXRpb25TdGF0ZSxcbiAgICByZXNvbHZlZE5hbWU6IHN0cmluZyB8IG51bGwsXG4gICAgaXNPcHRpb25hbDogdHJ1ZVxuICApOiBudW1iZXIgfCBudWxsO1xuICBtb2RpZmllcihkZWZpbml0aW9uU3RhdGU6IE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLCByZXNvbHZlZE5hbWU/OiBzdHJpbmcgfCBudWxsKTogbnVtYmVyO1xuICBtb2RpZmllcihcbiAgICBkZWZpbml0aW9uU3RhdGU6IE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLFxuICAgIHJlc29sdmVkTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgaXNPcHRpb25hbD86IHRydWVcbiAgKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgbGV0IGhhbmRsZSA9IHRoaXMubW9kaWZpZXJEZWZpbml0aW9uQ2FjaGUuZ2V0KGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICBpZiAoaGFuZGxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBtYW5hZ2VyID0gZ2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIoZGVmaW5pdGlvblN0YXRlLCBpc09wdGlvbmFsKTtcblxuICAgICAgaWYgKG1hbmFnZXIgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5tb2RpZmllckRlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBudWxsKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGxldCBkZWZpbml0aW9uID0ge1xuICAgICAgICByZXNvbHZlZE5hbWUsXG4gICAgICAgIG1hbmFnZXIsXG4gICAgICAgIHN0YXRlOiBkZWZpbml0aW9uU3RhdGUsXG4gICAgICB9O1xuXG4gICAgICBoYW5kbGUgPSB0aGlzLnZhbHVlKGRlZmluaXRpb24pO1xuXG4gICAgICB0aGlzLm1vZGlmaWVyRGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIGhhbmRsZSk7XG4gICAgICB0aGlzLm1vZGlmaWVyRGVmaW5pdGlvbkNvdW50Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhbmRsZTtcbiAgfVxuXG4gIGNvbXBvbmVudChkZWZpbml0aW9uU3RhdGU6IENvbXBvbmVudERlZmluaXRpb25TdGF0ZSwgb3duZXI6IG9iamVjdCk6IENvbXBvbmVudERlZmluaXRpb247XG4gIGNvbXBvbmVudChcbiAgICBkZWZpbml0aW9uU3RhdGU6IENvbXBvbmVudERlZmluaXRpb25TdGF0ZSxcbiAgICBvd25lcjogb2JqZWN0LFxuICAgIGlzT3B0aW9uYWw/OiB0cnVlXG4gICk6IENvbXBvbmVudERlZmluaXRpb24gfCBudWxsIHtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlLmdldChkZWZpbml0aW9uU3RhdGUpO1xuXG4gICAgaWYgKGRlZmluaXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IG1hbmFnZXIgPSBnZXRJbnRlcm5hbENvbXBvbmVudE1hbmFnZXIoZGVmaW5pdGlvblN0YXRlLCBpc09wdGlvbmFsKTtcblxuICAgICAgaWYgKG1hbmFnZXIgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgbnVsbCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobWFuYWdlciwgJ0JVRzogZXhwZWN0ZWQgbWFuYWdlcicpO1xuXG4gICAgICBsZXQgY2FwYWJpbGl0aWVzID0gY2FwYWJpbGl0eUZsYWdzRnJvbShtYW5hZ2VyLmdldENhcGFiaWxpdGllcyhkZWZpbml0aW9uU3RhdGUpKTtcblxuICAgICAgbGV0IHRlbXBsYXRlRmFjdG9yeSA9IGdldENvbXBvbmVudFRlbXBsYXRlKGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICAgIGxldCBjb21waWxhYmxlID0gbnVsbDtcbiAgICAgIGxldCB0ZW1wbGF0ZTtcblxuICAgICAgaWYgKCFtYW5hZ2VySGFzQ2FwYWJpbGl0eShtYW5hZ2VyLCBjYXBhYmlsaXRpZXMsIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eS5EeW5hbWljTGF5b3V0KSkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlRmFjdG9yeT8uKG93bmVyKSA/PyB0aGlzLmRlZmF1bHRUZW1wbGF0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGVGYWN0b3J5Py4ob3duZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGVtcGxhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHVud3JhcFRlbXBsYXRlKHRlbXBsYXRlKTtcblxuICAgICAgICBjb21waWxhYmxlID0gbWFuYWdlckhhc0NhcGFiaWxpdHkoXG4gICAgICAgICAgbWFuYWdlcixcbiAgICAgICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICAgICAgSW50ZXJuYWxDb21wb25lbnRDYXBhYmlsaXR5LldyYXBwZWRcbiAgICAgICAgKVxuICAgICAgICAgID8gdGVtcGxhdGUuYXNXcmFwcGVkTGF5b3V0KClcbiAgICAgICAgICA6IHRlbXBsYXRlLmFzTGF5b3V0KCk7XG4gICAgICB9XG5cbiAgICAgIGRlZmluaXRpb24gPSB7XG4gICAgICAgIHJlc29sdmVkTmFtZTogbnVsbCxcbiAgICAgICAgaGFuZGxlOiAtMSwgLy8gcmVwbGFjZWQgbW9tZW50YXJpbHlcbiAgICAgICAgbWFuYWdlcixcbiAgICAgICAgY2FwYWJpbGl0aWVzLFxuICAgICAgICBzdGF0ZTogZGVmaW5pdGlvblN0YXRlLFxuICAgICAgICBjb21waWxhYmxlLFxuICAgICAgfTtcblxuICAgICAgZGVmaW5pdGlvbiEuaGFuZGxlID0gdGhpcy52YWx1ZShkZWZpbml0aW9uKTtcbiAgICAgIHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIGRlZmluaXRpb24pO1xuICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHJlc29sdmVkQ29tcG9uZW50KFxuICAgIHJlc29sdmVkRGVmaW5pdGlvbjogUmVzb2x2ZWRDb21wb25lbnREZWZpbml0aW9uLFxuICAgIHJlc29sdmVkTmFtZTogc3RyaW5nXG4gICk6IENvbXBvbmVudERlZmluaXRpb24ge1xuICAgIGxldCBkZWZpbml0aW9uID0gdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuZ2V0KHJlc29sdmVkRGVmaW5pdGlvbik7XG5cbiAgICBpZiAoZGVmaW5pdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgeyBtYW5hZ2VyLCBzdGF0ZSwgdGVtcGxhdGUgfSA9IHJlc29sdmVkRGVmaW5pdGlvbjtcbiAgICAgIGxldCBjYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXR5RmxhZ3NGcm9tKG1hbmFnZXIuZ2V0Q2FwYWJpbGl0aWVzKHJlc29sdmVkRGVmaW5pdGlvbikpO1xuXG4gICAgICBsZXQgY29tcGlsYWJsZSA9IG51bGw7XG5cbiAgICAgIGlmICghbWFuYWdlckhhc0NhcGFiaWxpdHkobWFuYWdlciwgY2FwYWJpbGl0aWVzLCBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHkuRHluYW1pY0xheW91dCkpIHtcbiAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZSA/PyB0aGlzLmRlZmF1bHRUZW1wbGF0ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRlbXBsYXRlICE9PSBudWxsKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdW53cmFwVGVtcGxhdGUodGVtcGxhdGUpO1xuXG4gICAgICAgIGNvbXBpbGFibGUgPSBtYW5hZ2VySGFzQ2FwYWJpbGl0eShcbiAgICAgICAgICBtYW5hZ2VyLFxuICAgICAgICAgIGNhcGFiaWxpdGllcyxcbiAgICAgICAgICBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHkuV3JhcHBlZFxuICAgICAgICApXG4gICAgICAgICAgPyB0ZW1wbGF0ZS5hc1dyYXBwZWRMYXlvdXQoKVxuICAgICAgICAgIDogdGVtcGxhdGUuYXNMYXlvdXQoKTtcbiAgICAgIH1cblxuICAgICAgZGVmaW5pdGlvbiA9IHtcbiAgICAgICAgcmVzb2x2ZWROYW1lLFxuICAgICAgICBoYW5kbGU6IC0xLCAvLyByZXBsYWNlZCBtb21lbnRhcmlseVxuICAgICAgICBtYW5hZ2VyLFxuICAgICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBjb21waWxhYmxlLFxuICAgICAgfTtcblxuICAgICAgZGVmaW5pdGlvbiEuaGFuZGxlID0gdGhpcy52YWx1ZShkZWZpbml0aW9uKTtcbiAgICAgIHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlLnNldChyZXNvbHZlZERlZmluaXRpb24sIGRlZmluaXRpb24pO1xuICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZXhwZWN0KGRlZmluaXRpb24sICdCVUc6IHJlc29sdmVkIGNvbXBvbmVudCBkZWZpbml0aW9ucyBjYW5ub3QgYmUgbnVsbCcpO1xuICB9XG5cbiAgZ2V0VmFsdWU8VD4oaW5kZXg6IG51bWJlcikge1xuICAgIGFzc2VydChpbmRleCA+PSAwLCBgY2Fubm90IGdldCB2YWx1ZSBmb3IgaGFuZGxlOiAke2luZGV4fWApO1xuXG4gICAgcmV0dXJuIHRoaXMudmFsdWVzW2luZGV4XSBhcyBUO1xuICB9XG5cbiAgZ2V0QXJyYXk8VD4oaW5kZXg6IG51bWJlcik6IFRbXSB7XG4gICAgbGV0IHJlaWZpZWRBcnJzID0gdGhpcy5yZWlmaWVkQXJycztcbiAgICBsZXQgcmVpZmllZCA9IHJlaWZpZWRBcnJzW2luZGV4XSBhcyBUW107XG5cbiAgICBpZiAocmVpZmllZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbmFtZXM6IG51bWJlcltdID0gdGhpcy5nZXRWYWx1ZShpbmRleCk7XG4gICAgICByZWlmaWVkID0gbmV3IEFycmF5KG5hbWVzLmxlbmd0aCk7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVpZmllZFtpXSA9IHRoaXMuZ2V0VmFsdWUobmFtZXNbaV0pO1xuICAgICAgfVxuXG4gICAgICByZWlmaWVkQXJyc1tpbmRleF0gPSByZWlmaWVkO1xuICAgIH1cblxuICAgIHJldHVybiByZWlmaWVkO1xuICB9XG59XG4iLCJpbXBvcnQgeyBPcGNvZGVTaXplLCBSdW50aW1lT3AsIE9wY29kZUhlYXAgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVPcEltcGwgaW1wbGVtZW50cyBSdW50aW1lT3Age1xuICBwdWJsaWMgb2Zmc2V0ID0gMDtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgaGVhcDogT3Bjb2RlSGVhcCkge31cblxuICBnZXQgc2l6ZSgpIHtcbiAgICBsZXQgcmF3VHlwZSA9IHRoaXMuaGVhcC5nZXRieWFkZHIodGhpcy5vZmZzZXQpO1xuICAgIHJldHVybiAoKHJhd1R5cGUgJiBPcGNvZGVTaXplLk9QRVJBTkRfTEVOX01BU0spID4+IE9wY29kZVNpemUuQVJHX1NISUZUKSArIDE7XG4gIH1cblxuICBnZXQgaXNNYWNoaW5lKCk6IDAgfCAxIHtcbiAgICBsZXQgcmF3VHlwZSA9IHRoaXMuaGVhcC5nZXRieWFkZHIodGhpcy5vZmZzZXQpO1xuICAgIHJldHVybiByYXdUeXBlICYgT3Bjb2RlU2l6ZS5NQUNISU5FX01BU0sgPyAxIDogMDtcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmhlYXAuZ2V0YnlhZGRyKHRoaXMub2Zmc2V0KSAmIE9wY29kZVNpemUuVFlQRV9NQVNLO1xuICB9XG5cbiAgZ2V0IG9wMSgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWFwLmdldGJ5YWRkcih0aGlzLm9mZnNldCArIDEpO1xuICB9XG5cbiAgZ2V0IG9wMigpIHtcbiAgICByZXR1cm4gdGhpcy5oZWFwLmdldGJ5YWRkcih0aGlzLm9mZnNldCArIDIpO1xuICB9XG5cbiAgZ2V0IG9wMygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWFwLmdldGJ5YWRkcih0aGlzLm9mZnNldCArIDMpO1xuICB9XG59XG4iLCJpbXBvcnQge1xuICBDb21waWxlVGltZUhlYXAsXG4gIFNlcmlhbGl6ZWRIZWFwLFxuICBSdW50aW1lSGVhcCxcbiAgU3RkTGliT3BlcmFuZCxcbiAgUnVudGltZUNvbnN0YW50cyxcbiAgUnVudGltZVByb2dyYW0sXG4gIFJlc29sdXRpb25UaW1lQ29uc3RhbnRzLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IExPQ0FMX0RFQlVHIH0gZnJvbSAnQGdsaW1tZXIvbG9jYWwtZGVidWctZmxhZ3MnO1xuaW1wb3J0IHsgUnVudGltZU9wSW1wbCB9IGZyb20gJy4vb3Bjb2RlJztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5jb25zdCBlbnVtIFRhYmxlU2xvdFN0YXRlIHtcbiAgQWxsb2NhdGVkLFxuICBGcmVlZCxcbiAgUHVyZ2VkLFxuICBQb2ludGVyLFxufVxuXG5leHBvcnQgdHlwZSBQbGFjZWhvbGRlciA9IFtudW1iZXIsICgpID0+IG51bWJlcl07XG5leHBvcnQgdHlwZSBTdGRsaWJQbGFjZWhvbGRlciA9IFtudW1iZXIsIFN0ZExpYk9wZXJhbmRdO1xuXG5jb25zdCBQQUdFX1NJWkUgPSAweDEwMDAwMDtcblxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVIZWFwSW1wbCBpbXBsZW1lbnRzIFJ1bnRpbWVIZWFwIHtcbiAgcHJpdmF0ZSBoZWFwOiBJbnQzMkFycmF5O1xuICBwcml2YXRlIHRhYmxlOiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3RvcihzZXJpYWxpemVkSGVhcDogU2VyaWFsaXplZEhlYXApIHtcbiAgICBsZXQgeyBidWZmZXIsIHRhYmxlIH0gPSBzZXJpYWxpemVkSGVhcDtcbiAgICB0aGlzLmhlYXAgPSBuZXcgSW50MzJBcnJheShidWZmZXIpO1xuICAgIHRoaXMudGFibGUgPSB0YWJsZTtcbiAgfVxuXG4gIC8vIEl0IGlzIGlsbGVnYWwgdG8gY2xvc2Ugb3ZlciB0aGlzIGFkZHJlc3MsIGFzIGNvbXBhY3Rpb25cbiAgLy8gbWF5IG1vdmUgaXQuIEhvd2V2ZXIsIGl0IGlzIGxlZ2FsIHRvIHVzZSB0aGlzIGFkZHJlc3NcbiAgLy8gbXVsdGlwbGUgdGltZXMgYmV0d2VlbiBjb21wYWN0aW9ucy5cbiAgZ2V0YWRkcihoYW5kbGU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVbaGFuZGxlXTtcbiAgfVxuXG4gIGdldGJ5YWRkcihhZGRyZXNzOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGFzc2VydCh0aGlzLmhlYXBbYWRkcmVzc10gIT09IHVuZGVmaW5lZCwgJ0FjY2VzcyBtZW1vcnkgb3V0IG9mIGJvdW5kcyBvZiB0aGUgaGVhcCcpO1xuICAgIHJldHVybiB0aGlzLmhlYXBbYWRkcmVzc107XG4gIH1cblxuICBzaXplb2YoaGFuZGxlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBzaXplb2YodGhpcy50YWJsZSwgaGFuZGxlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlkcmF0ZUhlYXAoc2VyaWFsaXplZEhlYXA6IFNlcmlhbGl6ZWRIZWFwKTogUnVudGltZUhlYXAge1xuICByZXR1cm4gbmV3IFJ1bnRpbWVIZWFwSW1wbChzZXJpYWxpemVkSGVhcCk7XG59XG5cbi8qKlxuICogVGhlIEhlYXAgaXMgcmVzcG9uc2libGUgZm9yIGR5bmFtaWNhbGx5IGFsbG9jYXRpbmdcbiAqIG1lbW9yeSBpbiB3aGljaCB3ZSByZWFkL3dyaXRlIHRoZSBWTSdzIGluc3RydWN0aW9uc1xuICogZnJvbS90by4gV2hlbiB3ZSBtYWxsb2Mgd2UgcGFzcyBvdXQgYSBWTUhhbmRsZSwgd2hpY2hcbiAqIGlzIHVzZWQgYXMgYW4gaW5kaXJlY3Qgd2F5IG9mIGFjY2Vzc2luZyB0aGUgbWVtb3J5IGR1cmluZ1xuICogZXhlY3V0aW9uIG9mIHRoZSBWTS4gSW50ZXJuYWxseSB3ZSB0cmFjayB0aGUgZGlmZmVyZW50XG4gKiByZWdpb25zIG9mIHRoZSBtZW1vcnkgaW4gYW4gaW50IGFycmF5IGtub3duIGFzIHRoZSB0YWJsZS5cbiAqXG4gKiBUaGUgdGFibGUgMzItYml0IGFsaWduZWQgYW5kIGhhcyB0aGUgZm9sbG93aW5nIGxheW91dDpcbiAqXG4gKiB8IC4uLiB8IGhwICh1MzIpIHwgICAgICAgaW5mbyAodTMyKSAgIHwgc2l6ZSAodTMyKSB8XG4gKiB8IC4uLiB8ICBIYW5kbGUgIHwgU2NvcGUgU2l6ZSB8IFN0YXRlIHwgU2l6ZSAgICAgICB8XG4gKiB8IC4uLiB8IDMyYml0cyAgIHwgMzBiaXRzICAgICB8IDJiaXRzIHwgMzJiaXQgICAgICB8XG4gKlxuICogV2l0aCB0aGlzIGluZm9ybWF0aW9uIHdlIGVmZmVjdGl2ZWx5IGhhdmUgdGhlIGFiaWxpdHkgdG9cbiAqIGNvbnRyb2wgd2hlbiB3ZSB3YW50IHRvIGZyZWUgbWVtb3J5LiBUaGF0IGJlaW5nIHNhaWQgeW91XG4gKiBjYW4gbm90IGZyZWUgZHVyaW5nIGV4ZWN1dGlvbiBhcyByYXcgYWRkcmVzcyBhcmUgb25seVxuICogdmFsaWQgZHVyaW5nIHRoZSBleGVjdXRpb24uIFRoaXMgbWVhbnMgeW91IGNhbm5vdCBjbG9zZVxuICogb3ZlciB0aGVtIGFzIHlvdSB3aWxsIGhhdmUgYSBiYWQgbWVtb3J5IGFjY2VzcyBleGNlcHRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBIZWFwSW1wbCBpbXBsZW1lbnRzIENvbXBpbGVUaW1lSGVhcCwgUnVudGltZUhlYXAge1xuICBvZmZzZXQgPSAwO1xuXG4gIHByaXZhdGUgaGVhcDogSW50MzJBcnJheTtcbiAgcHJpdmF0ZSBoYW5kbGVUYWJsZTogbnVtYmVyW107XG4gIHByaXZhdGUgaGFuZGxlU3RhdGU6IFRhYmxlU2xvdFN0YXRlW107XG4gIHByaXZhdGUgaGFuZGxlID0gMDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmhlYXAgPSBuZXcgSW50MzJBcnJheShQQUdFX1NJWkUpO1xuICAgIHRoaXMuaGFuZGxlVGFibGUgPSBbXTtcbiAgICB0aGlzLmhhbmRsZVN0YXRlID0gW107XG4gIH1cblxuICBwdXNoKGl0ZW06IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc2l6ZUNoZWNrKCk7XG4gICAgdGhpcy5oZWFwW3RoaXMub2Zmc2V0KytdID0gaXRlbTtcbiAgfVxuXG4gIHByaXZhdGUgc2l6ZUNoZWNrKCkge1xuICAgIGxldCB7IGhlYXAgfSA9IHRoaXM7XG5cbiAgICBpZiAodGhpcy5vZmZzZXQgPT09IHRoaXMuaGVhcC5sZW5ndGgpIHtcbiAgICAgIGxldCBuZXdIZWFwID0gbmV3IEludDMyQXJyYXkoaGVhcC5sZW5ndGggKyBQQUdFX1NJWkUpO1xuICAgICAgbmV3SGVhcC5zZXQoaGVhcCwgMCk7XG4gICAgICB0aGlzLmhlYXAgPSBuZXdIZWFwO1xuICAgIH1cbiAgfVxuXG4gIGdldGJ5YWRkcihhZGRyZXNzOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmhlYXBbYWRkcmVzc107XG4gIH1cblxuICBzZXRieWFkZHIoYWRkcmVzczogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5oZWFwW2FkZHJlc3NdID0gdmFsdWU7XG4gIH1cblxuICBtYWxsb2MoKTogbnVtYmVyIHtcbiAgICAvLyBwdXNoIG9mZnNldCwgaW5mbywgc2l6ZVxuICAgIHRoaXMuaGFuZGxlVGFibGUucHVzaCh0aGlzLm9mZnNldCk7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlVGFibGUubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIGZpbmlzaE1hbGxvYyhoYW5kbGU6IG51bWJlcik6IHZvaWQge1xuICAgIC8vIEBUT0RPOiBBdCB0aGUgbW9tZW50LCBnYXJiYWdlIGNvbGxlY3Rpb24gaXNuJ3QgYWN0dWFsbHkgdXNlZCwgc28gdGhpcyBpc1xuICAgIC8vIHdyYXBwZWQgdG8gcHJldmVudCB1cyBmcm9tIGFsbG9jYXRpbmcgZXh0cmEgc3BhY2UgaW4gcHJvZC4gSW4gdGhlIGZ1dHVyZSxcbiAgICAvLyBpZiB3ZSBzdGFydCB1c2luZyB0aGUgY29tcGFjdCBBUEksIHdlIHNob3VsZCBjaGFuZ2UgdGhpcy5cbiAgICBpZiAoTE9DQUxfREVCVUcpIHtcbiAgICAgIHRoaXMuaGFuZGxlU3RhdGVbaGFuZGxlXSA9IFRhYmxlU2xvdFN0YXRlLkFsbG9jYXRlZDtcbiAgICB9XG4gIH1cblxuICBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub2Zmc2V0O1xuICB9XG5cbiAgLy8gSXQgaXMgaWxsZWdhbCB0byBjbG9zZSBvdmVyIHRoaXMgYWRkcmVzcywgYXMgY29tcGFjdGlvblxuICAvLyBtYXkgbW92ZSBpdC4gSG93ZXZlciwgaXQgaXMgbGVnYWwgdG8gdXNlIHRoaXMgYWRkcmVzc1xuICAvLyBtdWx0aXBsZSB0aW1lcyBiZXR3ZWVuIGNvbXBhY3Rpb25zLlxuICBnZXRhZGRyKGhhbmRsZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVUYWJsZVtoYW5kbGVdO1xuICB9XG5cbiAgc2l6ZW9mKGhhbmRsZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc2l6ZW9mKHRoaXMuaGFuZGxlVGFibGUsIGhhbmRsZSk7XG4gIH1cblxuICBmcmVlKGhhbmRsZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVTdGF0ZVtoYW5kbGVdID0gVGFibGVTbG90U3RhdGUuRnJlZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGhlYXAgdXNlcyB0aGUgW01hcmstQ29tcGFjdCBBbGdvcml0aG1dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hcmstY29tcGFjdF9hbGdvcml0aG0pIHRvIHNoaWZ0XG4gICAqIHJlYWNoYWJsZSBtZW1vcnkgdG8gdGhlIGJvdHRvbSBvZiB0aGUgaGVhcCBhbmQgZnJlZWFibGVcbiAgICogbWVtb3J5IHRvIHRoZSB0b3Agb2YgdGhlIGhlYXAuIFdoZW4gd2UgaGF2ZSBzaGlmdGVkIGFsbFxuICAgKiB0aGUgcmVhY2hhYmxlIG1lbW9yeSB0byB0aGUgdG9wIG9mIHRoZSBoZWFwLCB3ZSBtb3ZlIHRoZVxuICAgKiBvZmZzZXQgdG8gdGhlIG5leHQgZnJlZSBwb3NpdGlvbi5cbiAgICovXG4gIGNvbXBhY3QoKTogdm9pZCB7XG4gICAgbGV0IGNvbXBhY3RlZFNpemUgPSAwO1xuICAgIGxldCB7IGhhbmRsZVRhYmxlLCBoYW5kbGVTdGF0ZSwgaGVhcCB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBvZmZzZXQgPSBoYW5kbGVUYWJsZVtpXTtcbiAgICAgIGxldCBzaXplID0gaGFuZGxlVGFibGVbaSArIDFdIC0gb2Zmc2V0O1xuICAgICAgbGV0IHN0YXRlID0gaGFuZGxlU3RhdGVbaV07XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuUHVyZ2VkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuRnJlZWQpIHtcbiAgICAgICAgLy8gdHJhbnNpdGlvbiB0byBcImFscmVhZHkgZnJlZWRcIiBha2EgXCJwdXJnZWRcIlxuICAgICAgICAvLyBhIGdvb2QgaW1wcm92ZW1lbnQgd291bGQgYmUgdG8gcmV1c2VcbiAgICAgICAgLy8gdGhlc2Ugc2xvdHNcbiAgICAgICAgaGFuZGxlU3RhdGVbaV0gPSBUYWJsZVNsb3RTdGF0ZS5QdXJnZWQ7XG4gICAgICAgIGNvbXBhY3RlZFNpemUgKz0gc2l6ZTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFRhYmxlU2xvdFN0YXRlLkFsbG9jYXRlZCkge1xuICAgICAgICBmb3IgKGxldCBqID0gb2Zmc2V0OyBqIDw9IGkgKyBzaXplOyBqKyspIHtcbiAgICAgICAgICBoZWFwW2ogLSBjb21wYWN0ZWRTaXplXSA9IGhlYXBbal07XG4gICAgICAgIH1cblxuICAgICAgICBoYW5kbGVUYWJsZVtpXSA9IG9mZnNldCAtIGNvbXBhY3RlZFNpemU7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBUYWJsZVNsb3RTdGF0ZS5Qb2ludGVyKSB7XG4gICAgICAgIGhhbmRsZVRhYmxlW2ldID0gb2Zmc2V0IC0gY29tcGFjdGVkU2l6ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9mZnNldCA9IHRoaXMub2Zmc2V0IC0gY29tcGFjdGVkU2l6ZTtcbiAgfVxuXG4gIGNhcHR1cmUob2Zmc2V0ID0gdGhpcy5vZmZzZXQpOiBTZXJpYWxpemVkSGVhcCB7XG4gICAgLy8gT25seSBjYWxsZWQgaW4gZWFnZXIgbW9kZVxuICAgIGxldCBidWZmZXIgPSBzbGljZSh0aGlzLmhlYXAsIDAsIG9mZnNldCkuYnVmZmVyO1xuICAgIHJldHVybiB7XG4gICAgICBoYW5kbGU6IHRoaXMuaGFuZGxlLFxuICAgICAgdGFibGU6IHRoaXMuaGFuZGxlVGFibGUsXG4gICAgICBidWZmZXI6IGJ1ZmZlciBhcyBBcnJheUJ1ZmZlcixcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSdW50aW1lUHJvZ3JhbUltcGwgaW1wbGVtZW50cyBSdW50aW1lUHJvZ3JhbSB7XG4gIFtrZXk6IG51bWJlcl06IG5ldmVyO1xuXG4gIHByaXZhdGUgX29wY29kZTogUnVudGltZU9wSW1wbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY29uc3RhbnRzOiBSdW50aW1lQ29uc3RhbnRzICYgUmVzb2x1dGlvblRpbWVDb25zdGFudHMsXG4gICAgcHVibGljIGhlYXA6IFJ1bnRpbWVIZWFwXG4gICkge1xuICAgIHRoaXMuX29wY29kZSA9IG5ldyBSdW50aW1lT3BJbXBsKHRoaXMuaGVhcCk7XG4gIH1cblxuICBvcGNvZGUob2Zmc2V0OiBudW1iZXIpOiBSdW50aW1lT3BJbXBsIHtcbiAgICB0aGlzLl9vcGNvZGUub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHJldHVybiB0aGlzLl9vcGNvZGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2xpY2UoYXJyOiBJbnQzMkFycmF5LCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IEludDMyQXJyYXkge1xuICBpZiAoYXJyLnNsaWNlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gYXJyLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9XG5cbiAgbGV0IHJldCA9IG5ldyBJbnQzMkFycmF5KGVuZCk7XG5cbiAgZm9yICg7IHN0YXJ0IDwgZW5kOyBzdGFydCsrKSB7XG4gICAgcmV0W3N0YXJ0XSA9IGFycltzdGFydF07XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBzaXplb2YodGFibGU6IG51bWJlcltdLCBoYW5kbGU6IG51bWJlcikge1xuICBpZiAoTE9DQUxfREVCVUcpIHtcbiAgICByZXR1cm4gdGFibGVbaGFuZGxlICsgMV0gLSB0YWJsZVtoYW5kbGVdO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAtMTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgQ29tcGlsZVRpbWVBcnRpZmFjdHMsIFJ1bnRpbWVBcnRpZmFjdHMgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbnN0YW50c0ltcGwgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBIZWFwSW1wbCB9IGZyb20gJy4vcHJvZ3JhbSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnRpZmFjdHMoKTogQ29tcGlsZVRpbWVBcnRpZmFjdHMgJiBSdW50aW1lQXJ0aWZhY3RzIHtcbiAgcmV0dXJuIHtcbiAgICBjb25zdGFudHM6IG5ldyBDb25zdGFudHNJbXBsKCksXG4gICAgaGVhcDogbmV3IEhlYXBJbXBsKCksXG4gIH07XG59XG4iXSwibmFtZXMiOlsiY29uc3RhbnRzIiwidGVtcGxhdGVGYWN0b3J5IiwiZ2V0SW50ZXJuYWxIZWxwZXJNYW5hZ2VyIiwibWFuYWdlciIsImdldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyIiwiZ2V0SW50ZXJuYWxDb21wb25lbnRNYW5hZ2VyIiwiY2FwYWJpbGl0eUZsYWdzRnJvbSIsImdldENvbXBvbmVudFRlbXBsYXRlIiwibWFuYWdlckhhc0NhcGFiaWxpdHkiLCJ1bndyYXBUZW1wbGF0ZSJdLCJtYXBwaW5ncyI6Ijs7RUFNQTs7O0VBR0EsSUFBTSxzQkFBc0IsR0FBNEIsQ0FDdEQsQ0FBQyxDQUFBO0VBQUE7RUFBQSxFQUFBLENBQUEsRUFEcUQsSUFDckQsQ0FBRCxDQURzRCxFQUV0RCxDQUZzRCxVQUV0RCxDQUZzRCxFQUFBLEtBQUEsRUFBeEQsRUFBd0QsQ0FBeEQ7RUFPTyxJQUFNLGdCQUFnQixHQUFvQztFQUMvRCxFQUFBLFVBQVUsRUFEcUQsaUJBQUE7RUFFL0QsRUFBQSxLQUFLLEVBQUUsSUFBSSxDQUFKLFNBQUEsQ0FGd0Qsc0JBRXhELENBRndEO0VBRy9ELEVBQUEsS0FBSyxFQUgwRCxJQUFBO0VBSS9ELEVBQUEsWUFBWSxFQUFFO0VBSmlELENBQTFEOzs7RUNTUCxJQUFNLHNCQUFzQixHQUFZLE1BQU0sQ0FBTixNQUFBLENBQXhDLEVBQXdDLENBQXhDO0VBQ0EsSUFBTSxpQkFBaUIsR0FBR0EsY0FBUyxDQUFuQyxzQkFBbUMsQ0FBbkM7RUFDQSxJQUFNLCtCQUErQixHQUFXLGlCQUFpQixDQUFqQixPQUFBLENBQWhELHNCQUFnRCxDQUFoRDtBQUVBLE1BQU0sdUJBQU47RUFBQSxxQ0FBQTtFQUNFO0VBRVUsU0FBQSxNQUFBLEdBQW9CLGlCQUFpQixDQUFyQyxLQUFvQixFQUFwQjtFQUNBLFNBQUEsUUFBQSxHQUFpQyxJQUFBLEdBQUEsQ0FDekMsS0FBQSxNQUFBLENBQUEsR0FBQSxDQUFnQixVQUFBLEtBQUEsRUFBQSxLQUFBO0VBQUEsYUFBa0IsQ0FBQSxLQUFBLEVBRDFCLEtB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 |
@@ -149,3 +149,3 @@ "use strict"; | ||
component(definitionState, isOptional, owner) { | ||
component(definitionState, owner, isOptional) { | ||
var _a; | ||
@@ -267,2 +267,2 @@ | ||
exports.ConstantsImpl = ConstantsImpl; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3Byb2dyYW0vbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBYUE7O0FBQ0E7O0FBUUE7O0FBQ0E7O0FBRUEsTUFBTSxzQkFBc0IsR0FBWSxNQUFNLENBQU4sTUFBQSxDQUF4QyxFQUF3QyxDQUF4QztBQUNBLE1BQU0saUJBQWlCLEdBQUcscUJBQTFCLHNCQUEwQixDQUExQjtBQUNBLE1BQU0sK0JBQStCLEdBQVcsaUJBQWlCLENBQWpCLE9BQUEsQ0FBaEQsc0JBQWdELENBQWhEOztBQUVNLE1BQUEsdUJBQUEsQ0FBOEI7QUFBcEMsRUFBQSxXQUFBLEdBQUE7QUFDRTtBQUVVLFNBQUEsTUFBQSxHQUFvQixpQkFBaUIsQ0FBckMsS0FBb0IsRUFBcEI7QUFDQSxTQUFBLFFBQUEsR0FBaUMsSUFBQSxHQUFBLENBQ3pDLEtBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBZ0IsQ0FBQSxLQUFBLEVBQUEsS0FBQSxLQUFrQixDQUFBLEtBQUEsRUFEMUIsS0FDMEIsQ0FBbEMsQ0FEeUMsQ0FBakM7QUFpQ1g7O0FBN0JDLEVBQUEsS0FBSyxDQUFBLEtBQUEsRUFBZTtBQUNsQixRQUFJLFFBQVEsR0FBRyxLQUFmLFFBQUE7QUFDQSxRQUFJLEtBQUssR0FBRyxRQUFRLENBQVIsR0FBQSxDQUFaLEtBQVksQ0FBWjs7QUFFQSxRQUFJLEtBQUssS0FBVCxTQUFBLEVBQXlCO0FBQ3ZCLE1BQUEsS0FBSyxHQUFHLEtBQUEsTUFBQSxDQUFBLElBQUEsQ0FBQSxLQUFBLElBQVIsQ0FBQTtBQUNBLE1BQUEsUUFBUSxDQUFSLEdBQUEsQ0FBQSxLQUFBLEVBQUEsS0FBQTtBQUNEOztBQUVELFdBQUEsS0FBQTtBQUNEOztBQUVELEVBQUEsS0FBSyxDQUFBLE1BQUEsRUFBa0I7QUFDckIsUUFBSSxNQUFNLENBQU4sTUFBQSxLQUFKLENBQUEsRUFBeUI7QUFDdkIsYUFBQSwrQkFBQTtBQUNEOztBQUVE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Q0FBQSxrQkFBQSxFQUFBLFVBQUE7QUFDQSxXQUFBLHdCQUFBO0FBQ0Q7O0FBRUQsV0FBQSxVQUFBO0FBQ0Q7O0FBRUQsRUFBQSxRQUFRLENBQUEsS0FBQSxFQUFpQjtBQUFBLGFBQ3ZCLGtCQUFPLEtBQUssSUFBTixDQUFOLEVBQW1CLGdDQUFnQyxLQUQ1QixFQUN2QixDQUR1QjtBQUd2QixXQUFPLEtBQUEsTUFBQSxDQUFQLEtBQU8sQ0FBUDtBQUNEOztBQUVELEVBQUEsUUFBUSxDQUFBLEtBQUEsRUFBaUI7QUFDdkIsUUFBSSxXQUFXLEdBQUcsS0FBbEIsV0FBQTtBQUNBLFFBQUksT0FBTyxHQUFHLFdBQVcsQ0FBekIsS0FBeUIsQ0FBekI7O0FBRUEsUUFBSSxPQUFPLEtBQVgsU0FBQSxFQUEyQjtBQUN6QixVQUFJLEtBQUssR0FBYSxLQUFBLFFBQUEsQ0FBdEIsS0FBc0IsQ0FBdEI7QUFDQSxNQUFBLE9BQU8sR0FBRyxJQUFBLEtBQUEsQ0FBVSxLQUFLLENBQXpCLE1BQVUsQ0FBVjs7QUFFQSxXQUFLLElBQUksQ0FBQyxHQUFWLENBQUEsRUFBZ0IsQ0FBQyxHQUFHLEtBQUssQ0FBekIsTUFBQSxFQUFrQyxDQUFsQyxFQUFBLEVBQXVDO0FBQ3JDLFFBQUEsT0FBTyxDQUFQLENBQU8sQ0FBUCxHQUFhLEtBQUEsUUFBQSxDQUFjLEtBQUssQ0FBaEMsQ0FBZ0MsQ0FBbkIsQ0FBYjtBQUNEOztBQUVELE1BQUEsV0FBVyxDQUFYLEtBQVcsQ0FBWCxHQUFBLE9BQUE7QUFDRDs7QUFFRCxXQUFBLE9BQUE7QUFDRDs7QUE1TzhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcGlsZVRpbWVDb25zdGFudHMsXG4gIENvbXBvbmVudERlZmluaXRpb25TdGF0ZSxcbiAgQ29uc3RhbnRQb29sLFxuICBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHksXG4gIENvbXBvbmVudERlZmluaXRpb24sXG4gIFJlc29sdXRpb25UaW1lQ29uc3RhbnRzLFxuICBSZXNvbHZlZENvbXBvbmVudERlZmluaXRpb24sXG4gIFJ1bnRpbWVDb25zdGFudHMsXG4gIE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLFxuICBIZWxwZXJEZWZpbml0aW9uU3RhdGUsXG4gIFRlbXBsYXRlLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGFzc2VydCwgY29uc3RhbnRzLCBleHBlY3QsIHVud3JhcFRlbXBsYXRlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBjYXBhYmlsaXR5RmxhZ3NGcm9tLFxuICBnZXRDb21wb25lbnRUZW1wbGF0ZSxcbiAgZ2V0SW50ZXJuYWxDb21wb25lbnRNYW5hZ2VyLFxuICBnZXRJbnRlcm5hbEhlbHBlck1hbmFnZXIsXG4gIGdldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyLFxuICBtYW5hZ2VySGFzQ2FwYWJpbGl0eSxcbn0gZnJvbSAnQGdsaW1tZXIvbWFuYWdlcic7XG5pbXBvcnQgeyB0ZW1wbGF0ZUZhY3RvcnkgfSBmcm9tICdAZ2xpbW1lci9vcGNvZGUtY29tcGlsZXInO1xuaW1wb3J0IHsgREVGQVVMVF9URU1QTEFURSB9IGZyb20gJy4vdXRpbC9kZWZhdWx0LXRlbXBsYXRlJztcblxuY29uc3QgV0VMTF9LTk9XTl9FTVBUWV9BUlJBWTogdW5rbm93biA9IE9iamVjdC5mcmVlemUoW10pO1xuY29uc3QgU1RBUlRFUl9DT05TVEFOVFMgPSBjb25zdGFudHMoV0VMTF9LTk9XTl9FTVBUWV9BUlJBWSk7XG5jb25zdCBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OOiBudW1iZXIgPSBTVEFSVEVSX0NPTlNUQU5UUy5pbmRleE9mKFdFTExfS05PV05fRU1QVFlfQVJSQVkpO1xuXG5leHBvcnQgY2xhc3MgQ29tcGlsZVRpbWVDb25zdGFudEltcGwgaW1wbGVtZW50cyBDb21waWxlVGltZUNvbnN0YW50cyB7XG4gIC8vIGAwYCBtZWFucyBOVUxMXG5cbiAgcHJvdGVjdGVkIHZhbHVlczogdW5rbm93bltdID0gU1RBUlRFUl9DT05TVEFOVFMuc2xpY2UoKTtcbiAgcHJvdGVjdGVkIGluZGV4TWFwOiBNYXA8dW5rbm93biwgbnVtYmVyPiA9IG5ldyBNYXAoXG4gICAgdGhpcy52YWx1ZXMubWFwKCh2YWx1ZSwgaW5kZXgpID0+IFt2YWx1ZSwgaW5kZXhdKVxuICApO1xuXG4gIHZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgbGV0IGluZGV4TWFwID0gdGhpcy5pbmRleE1hcDtcbiAgICBsZXQgaW5kZXggPSBpbmRleE1hcC5nZXQodmFsdWUpO1xuXG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGluZGV4ID0gdGhpcy52YWx1ZXMucHVzaCh2YWx1ZSkgLSAxO1xuICAgICAgaW5kZXhNYXAuc2V0KHZhbHVlLCBpbmRleCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgYXJyYXkodmFsdWVzOiB1bmtub3duW10pOiBudW1iZXIge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gV0VMTF9LTk9XTl9FTVBUWV9BUlJBWV9QT1NJVElPTjtcbiAgICB9XG5cbiAgICBsZXQgaGFuZGxlczogbnVtYmVyW10gPSBuZXcgQXJyYXkodmFsdWVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaGFuZGxlc1tpXSA9IHRoaXMudmFsdWUodmFsdWVzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52YWx1ZShoYW5kbGVzKTtcbiAgfVxuXG4gIHRvUG9vbCgpOiBDb25zdGFudFBvb2wge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUnVudGltZUNvbnN0YW50c0ltcGwgaW1wbGVtZW50cyBSdW50aW1lQ29uc3RhbnRzIHtcbiAgcHJvdGVjdGVkIHZhbHVlczogdW5rbm93bltdO1xuXG4gIGNvbnN0cnVjdG9yKHBvb2w6IENvbnN0YW50UG9vbCkge1xuICAgIHRoaXMudmFsdWVzID0gcG9vbDtcbiAgfVxuXG4gIGdldFZhbHVlPFQ+KGhhbmRsZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzW2hhbmRsZV0gYXMgVDtcbiAgfVxuXG4gIGdldEFycmF5PFQ+KHZhbHVlOiBudW1iZXIpOiBUW10ge1xuICAgIGxldCBoYW5kbGVzID0gdGhpcy5nZXRWYWx1ZSh2YWx1ZSkgYXMgbnVtYmVyW107XG4gICAgbGV0IHJlaWZpZWQ6IFRbXSA9IG5ldyBBcnJheShoYW5kbGVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhhbmRsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBuID0gaGFuZGxlc1tpXTtcbiAgICAgIHJlaWZpZWRbaV0gPSB0aGlzLmdldFZhbHVlKG4pO1xuICAgIH1cblxuICAgIHJldHVybiByZWlmaWVkO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb25zdGFudHNJbXBsXG4gIGV4dGVuZHMgQ29tcGlsZVRpbWVDb25zdGFudEltcGxcbiAgaW1wbGVtZW50cyBSdW50aW1lQ29uc3RhbnRzLCBSZXNvbHV0aW9uVGltZUNvbnN0YW50cyB7XG4gIHByb3RlY3RlZCByZWlmaWVkQXJyczogeyBba2V5OiBudW1iZXJdOiB1bmtub3duW10gfSA9IHtcbiAgICBbV0VMTF9LTk9XTl9FTVBUWV9BUlJBWV9QT1NJVElPTl06IFdFTExfS05PV05fRU1QVFlfQVJSQVkgYXMgdW5rbm93bltdLFxuICB9O1xuXG4gIGRlZmF1bHRUZW1wbGF0ZTogVGVtcGxhdGUgPSB0ZW1wbGF0ZUZhY3RvcnkoREVGQVVMVF9URU1QTEFURSkoKTtcblxuICAvLyBVc2VkIGZvciB0ZXN0cyBhbmQgZGVidWdnaW5nIHB1cnBvc2VzLCBhbmQgdG8gYmUgYWJsZSB0byBhbmFseXplIGxhcmdlIGFwcHNcbiAgLy8gVGhpcyBpcyB3aHkgaXQncyBlbmFibGVkIGV2ZW4gaW4gcHJvZHVjdGlvblxuICBoZWxwZXJEZWZpbml0aW9uQ291bnQgPSAwO1xuICBtb2RpZmllckRlZmluaXRpb25Db3VudCA9IDA7XG4gIGNvbXBvbmVudERlZmluaXRpb25Db3VudCA9IDA7XG5cbiAgcHJpdmF0ZSBoZWxwZXJEZWZpbml0aW9uQ2FjaGUgPSBuZXcgV2Vha01hcDxIZWxwZXJEZWZpbml0aW9uU3RhdGUsIG51bWJlciB8IG51bGw+KCk7XG5cbiAgcHJpdmF0ZSBtb2RpZmllckRlZmluaXRpb25DYWNoZSA9IG5ldyBXZWFrTWFwPE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLCBudW1iZXIgfCBudWxsPigpO1xuXG4gIHByaXZhdGUgY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlID0gbmV3IFdlYWtNYXA8XG4gICAgQ29tcG9uZW50RGVmaW5pdGlvblN0YXRlIHwgUmVzb2x2ZWRDb21wb25lbnREZWZpbml0aW9uLFxuICAgIENvbXBvbmVudERlZmluaXRpb24gfCBudWxsXG4gID4oKTtcblxuICBoZWxwZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBIZWxwZXJEZWZpbml0aW9uU3RhdGUsXG5cbiAgICAvLyBUT0RPOiBBZGQgYSB3YXkgdG8gZXhwb3NlIHJlc29sdmVkIG5hbWUgZm9yIGRlYnVnZ2luZ1xuICAgIF9yZXNvbHZlZE5hbWU6IHN0cmluZyB8IG51bGwsXG4gICAgaXNPcHRpb25hbDogdHJ1ZVxuICApOiBudW1iZXIgfCBudWxsO1xuICBoZWxwZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBIZWxwZXJEZWZpbml0aW9uU3RhdGUsXG5cbiAgICAvLyBUT0RPOiBBZGQgYSB3YXkgdG8gZXhwb3NlIHJlc29sdmVkIG5hbWUgZm9yIGRlYnVnZ2luZ1xuICAgIF9yZXNvbHZlZE5hbWU/OiBzdHJpbmcgfCBudWxsXG4gICk6IG51bWJlcjtcbiAgaGVscGVyKFxuICAgIGRlZmluaXRpb25TdGF0ZTogSGVscGVyRGVmaW5pdGlvblN0YXRlLFxuXG4gICAgLy8gVE9ETzogQWRkIGEgd2F5IHRvIGV4cG9zZSByZXNvbHZlZCBuYW1lIGZvciBkZWJ1Z2dpbmdcbiAgICBfcmVzb2x2ZWROYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBpc09wdGlvbmFsPzogdHJ1ZVxuICApOiBudW1iZXIgfCBudWxsIHtcbiAgICBsZXQgaGFuZGxlID0gdGhpcy5oZWxwZXJEZWZpbml0aW9uQ2FjaGUuZ2V0KGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICBpZiAoaGFuZGxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBtYW5hZ2VyT3JIZWxwZXIgPSBnZXRJbnRlcm5hbEhlbHBlck1hbmFnZXIoZGVmaW5pdGlvblN0YXRlLCBpc09wdGlvbmFsKTtcblxuICAgICAgaWYgKG1hbmFnZXJPckhlbHBlciA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLmhlbHBlckRlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBudWxsKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChtYW5hZ2VyT3JIZWxwZXIsICdCVUc6IGV4cGVjdGVkIG1hbmFnZXIgb3IgaGVscGVyJyk7XG5cbiAgICAgIGxldCBoZWxwZXIgPVxuICAgICAgICB0eXBlb2YgbWFuYWdlck9ySGVscGVyID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgPyBtYW5hZ2VyT3JIZWxwZXJcbiAgICAgICAgICA6IG1hbmFnZXJPckhlbHBlci5nZXRIZWxwZXIoZGVmaW5pdGlvblN0YXRlKTtcblxuICAgICAgaGFuZGxlID0gdGhpcy52YWx1ZShoZWxwZXIpO1xuXG4gICAgICB0aGlzLmhlbHBlckRlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBoYW5kbGUpO1xuICAgICAgdGhpcy5oZWxwZXJEZWZpbml0aW9uQ291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlO1xuICB9XG5cbiAgbW9kaWZpZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBNb2RpZmllckRlZmluaXRpb25TdGF0ZSxcbiAgICByZXNvbHZlZE5hbWU6IHN0cmluZyB8IG51bGwsXG4gICAgaXNPcHRpb25hbDogdHJ1ZVxuICApOiBudW1iZXIgfCBudWxsO1xuICBtb2RpZmllcihkZWZpbml0aW9uU3RhdGU6IE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLCByZXNvbHZlZE5hbWU/OiBzdHJpbmcgfCBudWxsKTogbnVtYmVyO1xuICBtb2RpZmllcihcbiAgICBkZWZpbml0aW9uU3RhdGU6IE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLFxuICAgIHJlc29sdmVkTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgaXNPcHRpb25hbD86IHRydWVcbiAgKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgbGV0IGhhbmRsZSA9IHRoaXMubW9kaWZpZXJEZWZpbml0aW9uQ2FjaGUuZ2V0KGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICBpZiAoaGFuZGxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBtYW5hZ2VyID0gZ2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIoZGVmaW5pdGlvblN0YXRlLCBpc09wdGlvbmFsKTtcblxuICAgICAgaWYgKG1hbmFnZXIgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5tb2RpZmllckRlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBudWxsKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGxldCBkZWZpbml0aW9uID0ge1xuICAgICAgICByZXNvbHZlZE5hbWUsXG4gICAgICAgIG1hbmFnZXIsXG4gICAgICAgIHN0YXRlOiBkZWZpbml0aW9uU3RhdGUsXG4gICAgICB9O1xuXG4gICAgICBoYW5kbGUgPSB0aGlzLnZhbHVlKGRlZmluaXRpb24pO1xuXG4gICAgICB0aGlzLm1vZGlmaWVyRGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIGhhbmRsZSk7XG4gICAgICB0aGlzLm1vZGlmaWVyRGVmaW5pdGlvbkNvdW50Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhbmRsZTtcbiAgfVxuXG4gIGNvbXBvbmVudChkZWZpbml0aW9uU3RhdGU6IENvbXBvbmVudERlZmluaXRpb25TdGF0ZSk6IENvbXBvbmVudERlZmluaXRpb247XG4gIGNvbXBvbmVudChcbiAgICBkZWZpbml0aW9uU3RhdGU6IENvbXBvbmVudERlZmluaXRpb25TdGF0ZSxcbiAgICBpc09wdGlvbmFsOiB0cnVlXG4gICk6IENvbXBvbmVudERlZmluaXRpb24gfCBudWxsO1xuICBjb21wb25lbnQoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBDb21wb25lbnREZWZpbml0aW9uU3RhdGUsXG4gICAgaXNPcHRpb25hbD86IHRydWUsXG4gICAgb3duZXI/OiBvYmplY3RcbiAgKTogQ29tcG9uZW50RGVmaW5pdGlvbiB8IG51bGwge1xuICAgIGxldCBkZWZpbml0aW9uID0gdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuZ2V0KGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICBpZiAoZGVmaW5pdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbWFuYWdlciA9IGdldEludGVybmFsQ29tcG9uZW50TWFuYWdlcihkZWZpbml0aW9uU3RhdGUsIGlzT3B0aW9uYWwpO1xuXG4gICAgICBpZiAobWFuYWdlciA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNvbXBvbmVudERlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBudWxsKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChtYW5hZ2VyLCAnQlVHOiBleHBlY3RlZCBtYW5hZ2VyJyk7XG5cbiAgICAgIGxldCBjYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXR5RmxhZ3NGcm9tKG1hbmFnZXIuZ2V0Q2FwYWJpbGl0aWVzKGRlZmluaXRpb25TdGF0ZSkpO1xuXG4gICAgICBsZXQgdGVtcGxhdGVGYWN0b3J5ID0gZ2V0Q29tcG9uZW50VGVtcGxhdGUoZGVmaW5pdGlvblN0YXRlKTtcblxuICAgICAgbGV0IGNvbXBpbGFibGUgPSBudWxsO1xuICAgICAgbGV0IHRlbXBsYXRlO1xuXG4gICAgICBpZiAoIW1hbmFnZXJIYXNDYXBhYmlsaXR5KG1hbmFnZXIsIGNhcGFiaWxpdGllcywgSW50ZXJuYWxDb21wb25lbnRDYXBhYmlsaXR5LkR5bmFtaWNMYXlvdXQpKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGVGYWN0b3J5Py4ob3duZXIpID8/IHRoaXMuZGVmYXVsdFRlbXBsYXRlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZUZhY3Rvcnk/Lihvd25lcik7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZW1wbGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdW53cmFwVGVtcGxhdGUodGVtcGxhdGUpO1xuXG4gICAgICAgIGNvbXBpbGFibGUgPSBtYW5hZ2VySGFzQ2FwYWJpbGl0eShcbiAgICAgICAgICBtYW5hZ2VyLFxuICAgICAgICAgIGNhcGFiaWxpdGllcyxcbiAgICAgICAgICBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHkuV3JhcHBlZFxuICAgICAgICApXG4gICAgICAgICAgPyB0ZW1wbGF0ZS5hc1dyYXBwZWRMYXlvdXQoKVxuICAgICAgICAgIDogdGVtcGxhdGUuYXNMYXlvdXQoKTtcbiAgICAgIH1cblxuICAgICAgZGVmaW5pdGlvbiA9IHtcbiAgICAgICAgcmVzb2x2ZWROYW1lOiBudWxsLFxuICAgICAgICBoYW5kbGU6IC0xLCAvLyByZXBsYWNlZCBtb21lbnRhcmlseVxuICAgICAgICBtYW5hZ2VyLFxuICAgICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICAgIHN0YXRlOiBkZWZpbml0aW9uU3RhdGUsXG4gICAgICAgIGNvbXBpbGFibGUsXG4gICAgICB9O1xuXG4gICAgICBkZWZpbml0aW9uIS5oYW5kbGUgPSB0aGlzLnZhbHVlKGRlZmluaXRpb24pO1xuICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgZGVmaW5pdGlvbik7XG4gICAgICB0aGlzLmNvbXBvbmVudERlZmluaXRpb25Db3VudCsrO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgcmVzb2x2ZWRDb21wb25lbnQoXG4gICAgcmVzb2x2ZWREZWZpbml0aW9uOiBSZXNvbHZlZENvbXBvbmVudERlZmluaXRpb24sXG4gICAgcmVzb2x2ZWROYW1lOiBzdHJpbmdcbiAgKTogQ29tcG9uZW50RGVmaW5pdGlvbiB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB0aGlzLmNvbXBvbmVudERlZmluaXRpb25DYWNoZS5nZXQocmVzb2x2ZWREZWZpbml0aW9uKTtcblxuICAgIGlmIChkZWZpbml0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCB7IG1hbmFnZXIsIHN0YXRlLCB0ZW1wbGF0ZSB9ID0gcmVzb2x2ZWREZWZpbml0aW9uO1xuICAgICAgbGV0IGNhcGFiaWxpdGllcyA9IGNhcGFiaWxpdHlGbGFnc0Zyb20obWFuYWdlci5nZXRDYXBhYmlsaXRpZXMocmVzb2x2ZWREZWZpbml0aW9uKSk7XG5cbiAgICAgIGxldCBjb21waWxhYmxlID0gbnVsbDtcblxuICAgICAgaWYgKCFtYW5hZ2VySGFzQ2FwYWJpbGl0eShtYW5hZ2VyLCBjYXBhYmlsaXRpZXMsIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eS5EeW5hbWljTGF5b3V0KSkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlID8/IHRoaXMuZGVmYXVsdFRlbXBsYXRlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGVtcGxhdGUgIT09IG51bGwpIHtcbiAgICAgICAgdGVtcGxhdGUgPSB1bndyYXBUZW1wbGF0ZSh0ZW1wbGF0ZSk7XG5cbiAgICAgICAgY29tcGlsYWJsZSA9IG1hbmFnZXJIYXNDYXBhYmlsaXR5KFxuICAgICAgICAgIG1hbmFnZXIsXG4gICAgICAgICAgY2FwYWJpbGl0aWVzLFxuICAgICAgICAgIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eS5XcmFwcGVkXG4gICAgICAgIClcbiAgICAgICAgICA/IHRlbXBsYXRlLmFzV3JhcHBlZExheW91dCgpXG4gICAgICAgICAgOiB0ZW1wbGF0ZS5hc0xheW91dCgpO1xuICAgICAgfVxuXG4gICAgICBkZWZpbml0aW9uID0ge1xuICAgICAgICByZXNvbHZlZE5hbWUsXG4gICAgICAgIGhhbmRsZTogLTEsIC8vIHJlcGxhY2VkIG1vbWVudGFyaWx5XG4gICAgICAgIG1hbmFnZXIsXG4gICAgICAgIGNhcGFiaWxpdGllcyxcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIGNvbXBpbGFibGUsXG4gICAgICB9O1xuXG4gICAgICBkZWZpbml0aW9uIS5oYW5kbGUgPSB0aGlzLnZhbHVlKGRlZmluaXRpb24pO1xuICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuc2V0KHJlc29sdmVkRGVmaW5pdGlvbiwgZGVmaW5pdGlvbik7XG4gICAgICB0aGlzLmNvbXBvbmVudERlZmluaXRpb25Db3VudCsrO1xuICAgIH1cblxuICAgIHJldHVybiBleHBlY3QoZGVmaW5pdGlvbiwgJ0JVRzogcmVzb2x2ZWQgY29tcG9uZW50IGRlZmluaXRpb25zIGNhbm5vdCBiZSBudWxsJyk7XG4gIH1cblxuICBnZXRWYWx1ZTxUPihpbmRleDogbnVtYmVyKSB7XG4gICAgYXNzZXJ0KGluZGV4ID49IDAsIGBjYW5ub3QgZ2V0IHZhbHVlIGZvciBoYW5kbGU6ICR7aW5kZXh9YCk7XG5cbiAgICByZXR1cm4gdGhpcy52YWx1ZXNbaW5kZXhdIGFzIFQ7XG4gIH1cblxuICBnZXRBcnJheTxUPihpbmRleDogbnVtYmVyKTogVFtdIHtcbiAgICBsZXQgcmVpZmllZEFycnMgPSB0aGlzLnJlaWZpZWRBcnJzO1xuICAgIGxldCByZWlmaWVkID0gcmVpZmllZEFycnNbaW5kZXhdIGFzIFRbXTtcblxuICAgIGlmIChyZWlmaWVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBuYW1lczogbnVtYmVyW10gPSB0aGlzLmdldFZhbHVlKGluZGV4KTtcbiAgICAgIHJlaWZpZWQgPSBuZXcgQXJyYXkobmFtZXMubGVuZ3RoKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZWlmaWVkW2ldID0gdGhpcy5nZXRWYWx1ZShuYW1lc1tpXSk7XG4gICAgICB9XG5cbiAgICAgIHJlaWZpZWRBcnJzW2luZGV4XSA9IHJlaWZpZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlaWZpZWQ7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3Byb2dyYW0vbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBYUE7O0FBQ0E7O0FBUUE7O0FBQ0E7O0FBRUEsTUFBTSxzQkFBc0IsR0FBWSxNQUFNLENBQU4sTUFBQSxDQUF4QyxFQUF3QyxDQUF4QztBQUNBLE1BQU0saUJBQWlCLEdBQUcscUJBQTFCLHNCQUEwQixDQUExQjtBQUNBLE1BQU0sK0JBQStCLEdBQVcsaUJBQWlCLENBQWpCLE9BQUEsQ0FBaEQsc0JBQWdELENBQWhEOztBQUVNLE1BQUEsdUJBQUEsQ0FBOEI7QUFBcEMsRUFBQSxXQUFBLEdBQUE7QUFDRTtBQUVVLFNBQUEsTUFBQSxHQUFvQixpQkFBaUIsQ0FBckMsS0FBb0IsRUFBcEI7QUFDQSxTQUFBLFFBQUEsR0FBaUMsSUFBQSxHQUFBLENBQ3pDLEtBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBZ0IsQ0FBQSxLQUFBLEVBQUEsS0FBQSxLQUFrQixDQUFBLEtBQUEsRUFEMUIsS0FDMEIsQ0FBbEMsQ0FEeUMsQ0FBakM7QUFpQ1g7O0FBN0JDLEVBQUEsS0FBSyxDQUFBLEtBQUEsRUFBZTtBQUNsQixRQUFJLFFBQVEsR0FBRyxLQUFmLFFBQUE7QUFDQSxRQUFJLEtBQUssR0FBRyxRQUFRLENBQVIsR0FBQSxDQUFaLEtBQVksQ0FBWjs7QUFFQSxRQUFJLEtBQUssS0FBVCxTQUFBLEVBQXlCO0FBQ3ZCLE1BQUEsS0FBSyxHQUFHLEtBQUEsTUFBQSxDQUFBLElBQUEsQ0FBQSxLQUFBLElBQVIsQ0FBQTtBQUNBLE1BQUEsUUFBUSxDQUFSLEdBQUEsQ0FBQSxLQUFBLEVBQUEsS0FBQTtBQUNEOztBQUVELFdBQUEsS0FBQTtBQUNEOztBQUVELEVBQUEsS0FBSyxDQUFBLE1BQUEsRUFBa0I7QUFDckIsUUFBSSxNQUFNLENBQU4sTUFBQSxLQUFKLENBQUEsRUFBeUI7QUFDdkIsYUFBQSwrQkFBQTtBQUNEOztBQUVE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LENBQUEsa0JBQUEsRUFBQSxVQUFBO0FBQ0EsV0FBQSx3QkFBQTtBQUNEOztBQUVELFdBQUEsVUFBQTtBQUNEOztBQUVELEVBQUEsUUFBUSxDQUFBLEtBQUEsRUFBaUI7QUFBQSxhQUN2QixrQkFBTyxLQUFLLElBQU4sQ0FBTixFQUFtQixnQ0FBZ0MsS0FENUIsRUFDdkIsQ0FEdUI7QUFHdkIsV0FBTyxLQUFBLE1BQUEsQ0FBUCxLQUFPLENBQVA7QUFDRDs7QUFFRCxFQUFBLFFBQVEsQ0FBQSxLQUFBLEVBQWlCO0FBQ3ZCLFFBQUksV0FBVyxHQUFHLEtBQWxCLFdBQUE7QUFDQSxRQUFJLE9BQU8sR0FBRyxXQUFXLENBQXpCLEtBQXlCLENBQXpCOztBQUVBLFFBQUksT0FBTyxLQUFYLFNBQUEsRUFBMkI7QUFDekIsVUFBSSxLQUFLLEdBQWEsS0FBQSxRQUFBLENBQXRCLEtBQXNCLENBQXRCO0FBQ0EsTUFBQSxPQUFPLEdBQUcsSUFBQSxLQUFBLENBQVUsS0FBSyxDQUF6QixNQUFVLENBQVY7O0FBRUEsV0FBSyxJQUFJLENBQUMsR0FBVixDQUFBLEVBQWdCLENBQUMsR0FBRyxLQUFLLENBQXpCLE1BQUEsRUFBa0MsQ0FBbEMsRUFBQSxFQUF1QztBQUNyQyxRQUFBLE9BQU8sQ0FBUCxDQUFPLENBQVAsR0FBYSxLQUFBLFFBQUEsQ0FBYyxLQUFLLENBQWhDLENBQWdDLENBQW5CLENBQWI7QUFDRDs7QUFFRCxNQUFBLFdBQVcsQ0FBWCxLQUFXLENBQVgsR0FBQSxPQUFBO0FBQ0Q7O0FBRUQsV0FBQSxPQUFBO0FBQ0Q7O0FBeE84QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBpbGVUaW1lQ29uc3RhbnRzLFxuICBDb21wb25lbnREZWZpbml0aW9uU3RhdGUsXG4gIENvbnN0YW50UG9vbCxcbiAgSW50ZXJuYWxDb21wb25lbnRDYXBhYmlsaXR5LFxuICBDb21wb25lbnREZWZpbml0aW9uLFxuICBSZXNvbHV0aW9uVGltZUNvbnN0YW50cyxcbiAgUmVzb2x2ZWRDb21wb25lbnREZWZpbml0aW9uLFxuICBSdW50aW1lQ29uc3RhbnRzLFxuICBNb2RpZmllckRlZmluaXRpb25TdGF0ZSxcbiAgSGVscGVyRGVmaW5pdGlvblN0YXRlLFxuICBUZW1wbGF0ZSxcbn0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBhc3NlcnQsIGNvbnN0YW50cywgZXhwZWN0LCB1bndyYXBUZW1wbGF0ZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgY2FwYWJpbGl0eUZsYWdzRnJvbSxcbiAgZ2V0Q29tcG9uZW50VGVtcGxhdGUsXG4gIGdldEludGVybmFsQ29tcG9uZW50TWFuYWdlcixcbiAgZ2V0SW50ZXJuYWxIZWxwZXJNYW5hZ2VyLFxuICBnZXRJbnRlcm5hbE1vZGlmaWVyTWFuYWdlcixcbiAgbWFuYWdlckhhc0NhcGFiaWxpdHksXG59IGZyb20gJ0BnbGltbWVyL21hbmFnZXInO1xuaW1wb3J0IHsgdGVtcGxhdGVGYWN0b3J5IH0gZnJvbSAnQGdsaW1tZXIvb3Bjb2RlLWNvbXBpbGVyJztcbmltcG9ydCB7IERFRkFVTFRfVEVNUExBVEUgfSBmcm9tICcuL3V0aWwvZGVmYXVsdC10ZW1wbGF0ZSc7XG5cbmNvbnN0IFdFTExfS05PV05fRU1QVFlfQVJSQVk6IHVua25vd24gPSBPYmplY3QuZnJlZXplKFtdKTtcbmNvbnN0IFNUQVJURVJfQ09OU1RBTlRTID0gY29uc3RhbnRzKFdFTExfS05PV05fRU1QVFlfQVJSQVkpO1xuY29uc3QgV0VMTF9LTk9XTl9FTVBUWV9BUlJBWV9QT1NJVElPTjogbnVtYmVyID0gU1RBUlRFUl9DT05TVEFOVFMuaW5kZXhPZihXRUxMX0tOT1dOX0VNUFRZX0FSUkFZKTtcblxuZXhwb3J0IGNsYXNzIENvbXBpbGVUaW1lQ29uc3RhbnRJbXBsIGltcGxlbWVudHMgQ29tcGlsZVRpbWVDb25zdGFudHMge1xuICAvLyBgMGAgbWVhbnMgTlVMTFxuXG4gIHByb3RlY3RlZCB2YWx1ZXM6IHVua25vd25bXSA9IFNUQVJURVJfQ09OU1RBTlRTLnNsaWNlKCk7XG4gIHByb3RlY3RlZCBpbmRleE1hcDogTWFwPHVua25vd24sIG51bWJlcj4gPSBuZXcgTWFwKFxuICAgIHRoaXMudmFsdWVzLm1hcCgodmFsdWUsIGluZGV4KSA9PiBbdmFsdWUsIGluZGV4XSlcbiAgKTtcblxuICB2YWx1ZSh2YWx1ZTogdW5rbm93bikge1xuICAgIGxldCBpbmRleE1hcCA9IHRoaXMuaW5kZXhNYXA7XG4gICAgbGV0IGluZGV4ID0gaW5kZXhNYXAuZ2V0KHZhbHVlKTtcblxuICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpbmRleCA9IHRoaXMudmFsdWVzLnB1c2godmFsdWUpIC0gMTtcbiAgICAgIGluZGV4TWFwLnNldCh2YWx1ZSwgaW5kZXgpO1xuICAgIH1cblxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIGFycmF5KHZhbHVlczogdW5rbm93bltdKTogbnVtYmVyIHtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFdFTExfS05PV05fRU1QVFlfQVJSQVlfUE9TSVRJT047XG4gICAgfVxuXG4gICAgbGV0IGhhbmRsZXM6IG51bWJlcltdID0gbmV3IEFycmF5KHZhbHVlcy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhhbmRsZXNbaV0gPSB0aGlzLnZhbHVlKHZhbHVlc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmFsdWUoaGFuZGxlcyk7XG4gIH1cblxuICB0b1Bvb2woKTogQ29uc3RhbnRQb29sIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVDb25zdGFudHNJbXBsIGltcGxlbWVudHMgUnVudGltZUNvbnN0YW50cyB7XG4gIHByb3RlY3RlZCB2YWx1ZXM6IHVua25vd25bXTtcblxuICBjb25zdHJ1Y3Rvcihwb29sOiBDb25zdGFudFBvb2wpIHtcbiAgICB0aGlzLnZhbHVlcyA9IHBvb2w7XG4gIH1cblxuICBnZXRWYWx1ZTxUPihoYW5kbGU6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLnZhbHVlc1toYW5kbGVdIGFzIFQ7XG4gIH1cblxuICBnZXRBcnJheTxUPih2YWx1ZTogbnVtYmVyKTogVFtdIHtcbiAgICBsZXQgaGFuZGxlcyA9IHRoaXMuZ2V0VmFsdWUodmFsdWUpIGFzIG51bWJlcltdO1xuICAgIGxldCByZWlmaWVkOiBUW10gPSBuZXcgQXJyYXkoaGFuZGxlcy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoYW5kbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbiA9IGhhbmRsZXNbaV07XG4gICAgICByZWlmaWVkW2ldID0gdGhpcy5nZXRWYWx1ZShuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVpZmllZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29uc3RhbnRzSW1wbFxuICBleHRlbmRzIENvbXBpbGVUaW1lQ29uc3RhbnRJbXBsXG4gIGltcGxlbWVudHMgUnVudGltZUNvbnN0YW50cywgUmVzb2x1dGlvblRpbWVDb25zdGFudHMge1xuICBwcm90ZWN0ZWQgcmVpZmllZEFycnM6IHsgW2tleTogbnVtYmVyXTogdW5rbm93bltdIH0gPSB7XG4gICAgW1dFTExfS05PV05fRU1QVFlfQVJSQVlfUE9TSVRJT05dOiBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZIGFzIHVua25vd25bXSxcbiAgfTtcblxuICBkZWZhdWx0VGVtcGxhdGU6IFRlbXBsYXRlID0gdGVtcGxhdGVGYWN0b3J5KERFRkFVTFRfVEVNUExBVEUpKCk7XG5cbiAgLy8gVXNlZCBmb3IgdGVzdHMgYW5kIGRlYnVnZ2luZyBwdXJwb3NlcywgYW5kIHRvIGJlIGFibGUgdG8gYW5hbHl6ZSBsYXJnZSBhcHBzXG4gIC8vIFRoaXMgaXMgd2h5IGl0J3MgZW5hYmxlZCBldmVuIGluIHByb2R1Y3Rpb25cbiAgaGVscGVyRGVmaW5pdGlvbkNvdW50ID0gMDtcbiAgbW9kaWZpZXJEZWZpbml0aW9uQ291bnQgPSAwO1xuICBjb21wb25lbnREZWZpbml0aW9uQ291bnQgPSAwO1xuXG4gIHByaXZhdGUgaGVscGVyRGVmaW5pdGlvbkNhY2hlID0gbmV3IFdlYWtNYXA8SGVscGVyRGVmaW5pdGlvblN0YXRlLCBudW1iZXIgfCBudWxsPigpO1xuXG4gIHByaXZhdGUgbW9kaWZpZXJEZWZpbml0aW9uQ2FjaGUgPSBuZXcgV2Vha01hcDxNb2RpZmllckRlZmluaXRpb25TdGF0ZSwgbnVtYmVyIHwgbnVsbD4oKTtcblxuICBwcml2YXRlIGNvbXBvbmVudERlZmluaXRpb25DYWNoZSA9IG5ldyBXZWFrTWFwPFxuICAgIENvbXBvbmVudERlZmluaXRpb25TdGF0ZSB8IFJlc29sdmVkQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgICBDb21wb25lbnREZWZpbml0aW9uIHwgbnVsbFxuICA+KCk7XG5cbiAgaGVscGVyKFxuICAgIGRlZmluaXRpb25TdGF0ZTogSGVscGVyRGVmaW5pdGlvblN0YXRlLFxuXG4gICAgLy8gVE9ETzogQWRkIGEgd2F5IHRvIGV4cG9zZSByZXNvbHZlZCBuYW1lIGZvciBkZWJ1Z2dpbmdcbiAgICBfcmVzb2x2ZWROYW1lOiBzdHJpbmcgfCBudWxsLFxuICAgIGlzT3B0aW9uYWw6IHRydWVcbiAgKTogbnVtYmVyIHwgbnVsbDtcbiAgaGVscGVyKFxuICAgIGRlZmluaXRpb25TdGF0ZTogSGVscGVyRGVmaW5pdGlvblN0YXRlLFxuXG4gICAgLy8gVE9ETzogQWRkIGEgd2F5IHRvIGV4cG9zZSByZXNvbHZlZCBuYW1lIGZvciBkZWJ1Z2dpbmdcbiAgICBfcmVzb2x2ZWROYW1lPzogc3RyaW5nIHwgbnVsbFxuICApOiBudW1iZXI7XG4gIGhlbHBlcihcbiAgICBkZWZpbml0aW9uU3RhdGU6IEhlbHBlckRlZmluaXRpb25TdGF0ZSxcblxuICAgIC8vIFRPRE86IEFkZCBhIHdheSB0byBleHBvc2UgcmVzb2x2ZWQgbmFtZSBmb3IgZGVidWdnaW5nXG4gICAgX3Jlc29sdmVkTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgaXNPcHRpb25hbD86IHRydWVcbiAgKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgbGV0IGhhbmRsZSA9IHRoaXMuaGVscGVyRGVmaW5pdGlvbkNhY2hlLmdldChkZWZpbml0aW9uU3RhdGUpO1xuXG4gICAgaWYgKGhhbmRsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbWFuYWdlck9ySGVscGVyID0gZ2V0SW50ZXJuYWxIZWxwZXJNYW5hZ2VyKGRlZmluaXRpb25TdGF0ZSwgaXNPcHRpb25hbCk7XG5cbiAgICAgIGlmIChtYW5hZ2VyT3JIZWxwZXIgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5oZWxwZXJEZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgbnVsbCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobWFuYWdlck9ySGVscGVyLCAnQlVHOiBleHBlY3RlZCBtYW5hZ2VyIG9yIGhlbHBlcicpO1xuXG4gICAgICBsZXQgaGVscGVyID1cbiAgICAgICAgdHlwZW9mIG1hbmFnZXJPckhlbHBlciA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgID8gbWFuYWdlck9ySGVscGVyXG4gICAgICAgICAgOiBtYW5hZ2VyT3JIZWxwZXIuZ2V0SGVscGVyKGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICAgIGhhbmRsZSA9IHRoaXMudmFsdWUoaGVscGVyKTtcblxuICAgICAgdGhpcy5oZWxwZXJEZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgaGFuZGxlKTtcbiAgICAgIHRoaXMuaGVscGVyRGVmaW5pdGlvbkNvdW50Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhbmRsZTtcbiAgfVxuXG4gIG1vZGlmaWVyKFxuICAgIGRlZmluaXRpb25TdGF0ZTogTW9kaWZpZXJEZWZpbml0aW9uU3RhdGUsXG4gICAgcmVzb2x2ZWROYW1lOiBzdHJpbmcgfCBudWxsLFxuICAgIGlzT3B0aW9uYWw6IHRydWVcbiAgKTogbnVtYmVyIHwgbnVsbDtcbiAgbW9kaWZpZXIoZGVmaW5pdGlvblN0YXRlOiBNb2RpZmllckRlZmluaXRpb25TdGF0ZSwgcmVzb2x2ZWROYW1lPzogc3RyaW5nIHwgbnVsbCk6IG51bWJlcjtcbiAgbW9kaWZpZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBNb2RpZmllckRlZmluaXRpb25TdGF0ZSxcbiAgICByZXNvbHZlZE5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGlzT3B0aW9uYWw/OiB0cnVlXG4gICk6IG51bWJlciB8IG51bGwge1xuICAgIGxldCBoYW5kbGUgPSB0aGlzLm1vZGlmaWVyRGVmaW5pdGlvbkNhY2hlLmdldChkZWZpbml0aW9uU3RhdGUpO1xuXG4gICAgaWYgKGhhbmRsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbWFuYWdlciA9IGdldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyKGRlZmluaXRpb25TdGF0ZSwgaXNPcHRpb25hbCk7XG5cbiAgICAgIGlmIChtYW5hZ2VyID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMubW9kaWZpZXJEZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgbnVsbCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBsZXQgZGVmaW5pdGlvbiA9IHtcbiAgICAgICAgcmVzb2x2ZWROYW1lLFxuICAgICAgICBtYW5hZ2VyLFxuICAgICAgICBzdGF0ZTogZGVmaW5pdGlvblN0YXRlLFxuICAgICAgfTtcblxuICAgICAgaGFuZGxlID0gdGhpcy52YWx1ZShkZWZpbml0aW9uKTtcblxuICAgICAgdGhpcy5tb2RpZmllckRlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBoYW5kbGUpO1xuICAgICAgdGhpcy5tb2RpZmllckRlZmluaXRpb25Db3VudCsrO1xuICAgIH1cblxuICAgIHJldHVybiBoYW5kbGU7XG4gIH1cblxuICBjb21wb25lbnQoZGVmaW5pdGlvblN0YXRlOiBDb21wb25lbnREZWZpbml0aW9uU3RhdGUsIG93bmVyOiBvYmplY3QpOiBDb21wb25lbnREZWZpbml0aW9uO1xuICBjb21wb25lbnQoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBDb21wb25lbnREZWZpbml0aW9uU3RhdGUsXG4gICAgb3duZXI6IG9iamVjdCxcbiAgICBpc09wdGlvbmFsPzogdHJ1ZVxuICApOiBDb21wb25lbnREZWZpbml0aW9uIHwgbnVsbCB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB0aGlzLmNvbXBvbmVudERlZmluaXRpb25DYWNoZS5nZXQoZGVmaW5pdGlvblN0YXRlKTtcblxuICAgIGlmIChkZWZpbml0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBtYW5hZ2VyID0gZ2V0SW50ZXJuYWxDb21wb25lbnRNYW5hZ2VyKGRlZmluaXRpb25TdGF0ZSwgaXNPcHRpb25hbCk7XG5cbiAgICAgIGlmIChtYW5hZ2VyID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIG51bGwpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0KG1hbmFnZXIsICdCVUc6IGV4cGVjdGVkIG1hbmFnZXInKTtcblxuICAgICAgbGV0IGNhcGFiaWxpdGllcyA9IGNhcGFiaWxpdHlGbGFnc0Zyb20obWFuYWdlci5nZXRDYXBhYmlsaXRpZXMoZGVmaW5pdGlvblN0YXRlKSk7XG5cbiAgICAgIGxldCB0ZW1wbGF0ZUZhY3RvcnkgPSBnZXRDb21wb25lbnRUZW1wbGF0ZShkZWZpbml0aW9uU3RhdGUpO1xuXG4gICAgICBsZXQgY29tcGlsYWJsZSA9IG51bGw7XG4gICAgICBsZXQgdGVtcGxhdGU7XG5cbiAgICAgIGlmICghbWFuYWdlckhhc0NhcGFiaWxpdHkobWFuYWdlciwgY2FwYWJpbGl0aWVzLCBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHkuRHluYW1pY0xheW91dCkpIHtcbiAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZUZhY3Rvcnk/Lihvd25lcikgPz8gdGhpcy5kZWZhdWx0VGVtcGxhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlRmFjdG9yeT8uKG93bmVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRlbXBsYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGVtcGxhdGUgPSB1bndyYXBUZW1wbGF0ZSh0ZW1wbGF0ZSk7XG5cbiAgICAgICAgY29tcGlsYWJsZSA9IG1hbmFnZXJIYXNDYXBhYmlsaXR5KFxuICAgICAgICAgIG1hbmFnZXIsXG4gICAgICAgICAgY2FwYWJpbGl0aWVzLFxuICAgICAgICAgIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eS5XcmFwcGVkXG4gICAgICAgIClcbiAgICAgICAgICA/IHRlbXBsYXRlLmFzV3JhcHBlZExheW91dCgpXG4gICAgICAgICAgOiB0ZW1wbGF0ZS5hc0xheW91dCgpO1xuICAgICAgfVxuXG4gICAgICBkZWZpbml0aW9uID0ge1xuICAgICAgICByZXNvbHZlZE5hbWU6IG51bGwsXG4gICAgICAgIGhhbmRsZTogLTEsIC8vIHJlcGxhY2VkIG1vbWVudGFyaWx5XG4gICAgICAgIG1hbmFnZXIsXG4gICAgICAgIGNhcGFiaWxpdGllcyxcbiAgICAgICAgc3RhdGU6IGRlZmluaXRpb25TdGF0ZSxcbiAgICAgICAgY29tcGlsYWJsZSxcbiAgICAgIH07XG5cbiAgICAgIGRlZmluaXRpb24hLmhhbmRsZSA9IHRoaXMudmFsdWUoZGVmaW5pdGlvbik7XG4gICAgICB0aGlzLmNvbXBvbmVudERlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBkZWZpbml0aW9uKTtcbiAgICAgIHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNvdW50Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICByZXNvbHZlZENvbXBvbmVudChcbiAgICByZXNvbHZlZERlZmluaXRpb246IFJlc29sdmVkQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgICByZXNvbHZlZE5hbWU6IHN0cmluZ1xuICApOiBDb21wb25lbnREZWZpbml0aW9uIHtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlLmdldChyZXNvbHZlZERlZmluaXRpb24pO1xuXG4gICAgaWYgKGRlZmluaXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IHsgbWFuYWdlciwgc3RhdGUsIHRlbXBsYXRlIH0gPSByZXNvbHZlZERlZmluaXRpb247XG4gICAgICBsZXQgY2FwYWJpbGl0aWVzID0gY2FwYWJpbGl0eUZsYWdzRnJvbShtYW5hZ2VyLmdldENhcGFiaWxpdGllcyhyZXNvbHZlZERlZmluaXRpb24pKTtcblxuICAgICAgbGV0IGNvbXBpbGFibGUgPSBudWxsO1xuXG4gICAgICBpZiAoIW1hbmFnZXJIYXNDYXBhYmlsaXR5KG1hbmFnZXIsIGNhcGFiaWxpdGllcywgSW50ZXJuYWxDb21wb25lbnRDYXBhYmlsaXR5LkR5bmFtaWNMYXlvdXQpKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUgPz8gdGhpcy5kZWZhdWx0VGVtcGxhdGU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZW1wbGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHVud3JhcFRlbXBsYXRlKHRlbXBsYXRlKTtcblxuICAgICAgICBjb21waWxhYmxlID0gbWFuYWdlckhhc0NhcGFiaWxpdHkoXG4gICAgICAgICAgbWFuYWdlcixcbiAgICAgICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICAgICAgSW50ZXJuYWxDb21wb25lbnRDYXBhYmlsaXR5LldyYXBwZWRcbiAgICAgICAgKVxuICAgICAgICAgID8gdGVtcGxhdGUuYXNXcmFwcGVkTGF5b3V0KClcbiAgICAgICAgICA6IHRlbXBsYXRlLmFzTGF5b3V0KCk7XG4gICAgICB9XG5cbiAgICAgIGRlZmluaXRpb24gPSB7XG4gICAgICAgIHJlc29sdmVkTmFtZSxcbiAgICAgICAgaGFuZGxlOiAtMSwgLy8gcmVwbGFjZWQgbW9tZW50YXJpbHlcbiAgICAgICAgbWFuYWdlcixcbiAgICAgICAgY2FwYWJpbGl0aWVzLFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgY29tcGlsYWJsZSxcbiAgICAgIH07XG5cbiAgICAgIGRlZmluaXRpb24hLmhhbmRsZSA9IHRoaXMudmFsdWUoZGVmaW5pdGlvbik7XG4gICAgICB0aGlzLmNvbXBvbmVudERlZmluaXRpb25DYWNoZS5zZXQocmVzb2x2ZWREZWZpbml0aW9uLCBkZWZpbml0aW9uKTtcbiAgICAgIHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNvdW50Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4cGVjdChkZWZpbml0aW9uLCAnQlVHOiByZXNvbHZlZCBjb21wb25lbnQgZGVmaW5pdGlvbnMgY2Fubm90IGJlIG51bGwnKTtcbiAgfVxuXG4gIGdldFZhbHVlPFQ+KGluZGV4OiBudW1iZXIpIHtcbiAgICBhc3NlcnQoaW5kZXggPj0gMCwgYGNhbm5vdCBnZXQgdmFsdWUgZm9yIGhhbmRsZTogJHtpbmRleH1gKTtcblxuICAgIHJldHVybiB0aGlzLnZhbHVlc1tpbmRleF0gYXMgVDtcbiAgfVxuXG4gIGdldEFycmF5PFQ+KGluZGV4OiBudW1iZXIpOiBUW10ge1xuICAgIGxldCByZWlmaWVkQXJycyA9IHRoaXMucmVpZmllZEFycnM7XG4gICAgbGV0IHJlaWZpZWQgPSByZWlmaWVkQXJyc1tpbmRleF0gYXMgVFtdO1xuXG4gICAgaWYgKHJlaWZpZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IG5hbWVzOiBudW1iZXJbXSA9IHRoaXMuZ2V0VmFsdWUoaW5kZXgpO1xuICAgICAgcmVpZmllZCA9IG5ldyBBcnJheShuYW1lcy5sZW5ndGgpO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlaWZpZWRbaV0gPSB0aGlzLmdldFZhbHVlKG5hbWVzW2ldKTtcbiAgICAgIH1cblxuICAgICAgcmVpZmllZEFycnNbaW5kZXhdID0gcmVpZmllZDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVpZmllZDtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== |
@@ -178,3 +178,3 @@ "use strict"; | ||
_proto3.component = function component(definitionState, isOptional, owner) { | ||
_proto3.component = function component(definitionState, owner, isOptional) { | ||
var _a; | ||
@@ -297,2 +297,2 @@ | ||
exports.ConstantsImpl = ConstantsImpl; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3Byb2dyYW0vbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBYUE7O0FBQ0E7O0FBUUE7O0FBQ0E7Ozs7Ozs7O0FBRUEsSUFBTSxzQkFBc0IsR0FBWSxNQUFNLENBQU4sTUFBQSxDQUF4QyxFQUF3QyxDQUF4QztBQUNBLElBQU0saUJBQWlCLEdBQUcscUJBQTFCLHNCQUEwQixDQUExQjtBQUNBLElBQU0sK0JBQStCLEdBQVcsaUJBQWlCLENBQWpCLE9BQUEsQ0FBaEQsc0JBQWdELENBQWhEOztBQUVBLElBQU0sdUJBQU4sR0FBQSxhQUFBLFlBQUE7QUFBQSxXQUFBLHVCQUFBLEdBQUE7QUFDRTtBQUVVLFNBQUEsTUFBQSxHQUFvQixpQkFBaUIsQ0FBckMsS0FBb0IsRUFBcEI7QUFDQSxTQUFBLFFBQUEsR0FBaUMsSUFBQSxHQUFBLENBQ3pDLEtBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBZ0IsVUFBQSxLQUFBLEVBQUEsS0FBQSxFQUFBO0FBQUEsYUFBa0IsQ0FBQSxLQUFBLEVBRDFCLEtBQzBCLENBQWxCO0FBRFIsS0FDUixDQUR5QyxDQUFqQztBQWlDWDs7QUFyQ0QsTUFBQSxNQUFBLEdBQUEsdUJBQUEsQ0FBQSxTQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLEtBQUEsR0FRRSxTQUFBLEtBQUEsQ0FBQSxNQUFBLEVBQW9CO0FBQ2xCLFFBQUksUUFBUSxHQUFHLEtBQWYsUUFBQTtBQUNBLFFBQUksS0FBSyxHQUFHLFFBQVEsQ0FBUixHQUFBLENBQVosTUFBWSxDQUFaOztBQUVBLFFBQUksS0FBSyxLQUFULFNBQUEsRUFBeUI7QUFDdkIsTUFBQSxLQUFLLEdBQUcsS0FBQSxNQUFBLENBQUEsSUFBQSxDQUFBLE1BQUEsSUFBUixDQUFBO0FBQ0EsTUFBQSxRQUFRLENBQVIsR0FBQSxDQUFBLE1BQUEsRUFBQSxLQUFBO0FBQ0Q7O0FBRUQsV0FBQSxLQUFBO0FBakJKLEdB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Q29uc3RhbnRzLFxuICBDb21wb25lbnREZWZpbml0aW9uU3RhdGUsXG4gIENvbnN0YW50UG9vbCxcbiAgSW50ZXJuYWxDb21wb25lbnRDYXBhYmlsaXR5LFxuICBDb21wb25lbnREZWZpbml0aW9uLFxuICBSZXNvbHV0aW9uVGltZUNvbnN0YW50cyxcbiAgUmVzb2x2ZWRDb21wb25lbnREZWZpbml0aW9uLFxuICBSdW50aW1lQ29uc3RhbnRzLFxuICBNb2RpZmllckRlZmluaXRpb25TdGF0ZSxcbiAgSGVscGVyRGVmaW5pdGlvblN0YXRlLFxuICBUZW1wbGF0ZSxcbn0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBhc3NlcnQsIGNvbnN0YW50cywgZXhwZWN0LCB1bndyYXBUZW1wbGF0ZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgY2FwYWJpbGl0eUZsYWdzRnJvbSxcbiAgZ2V0Q29tcG9uZW50VGVtcGxhdGUsXG4gIGdldEludGVybmFsQ29tcG9uZW50TWFuYWdlcixcbiAgZ2V0SW50ZXJuYWxIZWxwZXJNYW5hZ2VyLFxuICBnZXRJbnRlcm5hbE1vZGlmaWVyTWFuYWdlcixcbiAgbWFuYWdlckhhc0NhcGFiaWxpdHksXG59IGZyb20gJ0BnbGltbWVyL21hbmFnZXInO1xuaW1wb3J0IHsgdGVtcGxhdGVGYWN0b3J5IH0gZnJvbSAnQGdsaW1tZXIvb3Bjb2RlLWNvbXBpbGVyJztcbmltcG9ydCB7IERFRkFVTFRfVEVNUExBVEUgfSBmcm9tICcuL3V0aWwvZGVmYXVsdC10ZW1wbGF0ZSc7XG5cbmNvbnN0IFdFTExfS05PV05fRU1QVFlfQVJSQVk6IHVua25vd24gPSBPYmplY3QuZnJlZXplKFtdKTtcbmNvbnN0IFNUQVJURVJfQ09OU1RBTlRTID0gY29uc3RhbnRzKFdFTExfS05PV05fRU1QVFlfQVJSQVkpO1xuY29uc3QgV0VMTF9LTk9XTl9FTVBUWV9BUlJBWV9QT1NJVElPTjogbnVtYmVyID0gU1RBUlRFUl9DT05TVEFOVFMuaW5kZXhPZihXRUxMX0tOT1dOX0VNUFRZX0FSUkFZKTtcblxuZXhwb3J0IGNsYXNzIENvbXBpbGVUaW1lQ29uc3RhbnRJbXBsIGltcGxlbWVudHMgQ29tcGlsZVRpbWVDb25zdGFudHMge1xuICAvLyBgMGAgbWVhbnMgTlVMTFxuXG4gIHByb3RlY3RlZCB2YWx1ZXM6IHVua25vd25bXSA9IFNUQVJURVJfQ09OU1RBTlRTLnNsaWNlKCk7XG4gIHByb3RlY3RlZCBpbmRleE1hcDogTWFwPHVua25vd24sIG51bWJlcj4gPSBuZXcgTWFwKFxuICAgIHRoaXMudmFsdWVzLm1hcCgodmFsdWUsIGluZGV4KSA9PiBbdmFsdWUsIGluZGV4XSlcbiAgKTtcblxuICB2YWx1ZSh2YWx1ZTogdW5rbm93bikge1xuICAgIGxldCBpbmRleE1hcCA9IHRoaXMuaW5kZXhNYXA7XG4gICAgbGV0IGluZGV4ID0gaW5kZXhNYXAuZ2V0KHZhbHVlKTtcblxuICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpbmRleCA9IHRoaXMudmFsdWVzLnB1c2godmFsdWUpIC0gMTtcbiAgICAgIGluZGV4TWFwLnNldCh2YWx1ZSwgaW5kZXgpO1xuICAgIH1cblxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIGFycmF5KHZhbHVlczogdW5rbm93bltdKTogbnVtYmVyIHtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFdFTExfS05PV05fRU1QVFlfQVJSQVlfUE9TSVRJT047XG4gICAgfVxuXG4gICAgbGV0IGhhbmRsZXM6IG51bWJlcltdID0gbmV3IEFycmF5KHZhbHVlcy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhhbmRsZXNbaV0gPSB0aGlzLnZhbHVlKHZhbHVlc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmFsdWUoaGFuZGxlcyk7XG4gIH1cblxuICB0b1Bvb2woKTogQ29uc3RhbnRQb29sIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVDb25zdGFudHNJbXBsIGltcGxlbWVudHMgUnVudGltZUNvbnN0YW50cyB7XG4gIHByb3RlY3RlZCB2YWx1ZXM6IHVua25vd25bXTtcblxuICBjb25zdHJ1Y3Rvcihwb29sOiBDb25zdGFudFBvb2wpIHtcbiAgICB0aGlzLnZhbHVlcyA9IHBvb2w7XG4gIH1cblxuICBnZXRWYWx1ZTxUPihoYW5kbGU6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLnZhbHVlc1toYW5kbGVdIGFzIFQ7XG4gIH1cblxuICBnZXRBcnJheTxUPih2YWx1ZTogbnVtYmVyKTogVFtdIHtcbiAgICBsZXQgaGFuZGxlcyA9IHRoaXMuZ2V0VmFsdWUodmFsdWUpIGFzIG51bWJlcltdO1xuICAgIGxldCByZWlmaWVkOiBUW10gPSBuZXcgQXJyYXkoaGFuZGxlcy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoYW5kbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbiA9IGhhbmRsZXNbaV07XG4gICAgICByZWlmaWVkW2ldID0gdGhpcy5nZXRWYWx1ZShuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVpZmllZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29uc3RhbnRzSW1wbFxuICBleHRlbmRzIENvbXBpbGVUaW1lQ29uc3RhbnRJbXBsXG4gIGltcGxlbWVudHMgUnVudGltZUNvbnN0YW50cywgUmVzb2x1dGlvblRpbWVDb25zdGFudHMge1xuICBwcm90ZWN0ZWQgcmVpZmllZEFycnM6IHsgW2tleTogbnVtYmVyXTogdW5rbm93bltdIH0gPSB7XG4gICAgW1dFTExfS05PV05fRU1QVFlfQVJSQVlfUE9TSVRJT05dOiBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZIGFzIHVua25vd25bXSxcbiAgfTtcblxuICBkZWZhdWx0VGVtcGxhdGU6IFRlbXBsYXRlID0gdGVtcGxhdGVGYWN0b3J5KERFRkFVTFRfVEVNUExBVEUpKCk7XG5cbiAgLy8gVXNlZCBmb3IgdGVzdHMgYW5kIGRlYnVnZ2luZyBwdXJwb3NlcywgYW5kIHRvIGJlIGFibGUgdG8gYW5hbHl6ZSBsYXJnZSBhcHBzXG4gIC8vIFRoaXMgaXMgd2h5IGl0J3MgZW5hYmxlZCBldmVuIGluIHByb2R1Y3Rpb25cbiAgaGVscGVyRGVmaW5pdGlvbkNvdW50ID0gMDtcbiAgbW9kaWZpZXJEZWZpbml0aW9uQ291bnQgPSAwO1xuICBjb21wb25lbnREZWZpbml0aW9uQ291bnQgPSAwO1xuXG4gIHByaXZhdGUgaGVscGVyRGVmaW5pdGlvbkNhY2hlID0gbmV3IFdlYWtNYXA8SGVscGVyRGVmaW5pdGlvblN0YXRlLCBudW1iZXIgfCBudWxsPigpO1xuXG4gIHByaXZhdGUgbW9kaWZpZXJEZWZpbml0aW9uQ2FjaGUgPSBuZXcgV2Vha01hcDxNb2RpZmllckRlZmluaXRpb25TdGF0ZSwgbnVtYmVyIHwgbnVsbD4oKTtcblxuICBwcml2YXRlIGNvbXBvbmVudERlZmluaXRpb25DYWNoZSA9IG5ldyBXZWFrTWFwPFxuICAgIENvbXBvbmVudERlZmluaXRpb25TdGF0ZSB8IFJlc29sdmVkQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgICBDb21wb25lbnREZWZpbml0aW9uIHwgbnVsbFxuICA+KCk7XG5cbiAgaGVscGVyKFxuICAgIGRlZmluaXRpb25TdGF0ZTogSGVscGVyRGVmaW5pdGlvblN0YXRlLFxuXG4gICAgLy8gVE9ETzogQWRkIGEgd2F5IHRvIGV4cG9zZSByZXNvbHZlZCBuYW1lIGZvciBkZWJ1Z2dpbmdcbiAgICBfcmVzb2x2ZWROYW1lOiBzdHJpbmcgfCBudWxsLFxuICAgIGlzT3B0aW9uYWw6IHRydWVcbiAgKTogbnVtYmVyIHwgbnVsbDtcbiAgaGVscGVyKFxuICAgIGRlZmluaXRpb25TdGF0ZTogSGVscGVyRGVmaW5pdGlvblN0YXRlLFxuXG4gICAgLy8gVE9ETzogQWRkIGEgd2F5IHRvIGV4cG9zZSByZXNvbHZlZCBuYW1lIGZvciBkZWJ1Z2dpbmdcbiAgICBfcmVzb2x2ZWROYW1lPzogc3RyaW5nIHwgbnVsbFxuICApOiBudW1iZXI7XG4gIGhlbHBlcihcbiAgICBkZWZpbml0aW9uU3RhdGU6IEhlbHBlckRlZmluaXRpb25TdGF0ZSxcblxuICAgIC8vIFRPRE86IEFkZCBhIHdheSB0byBleHBvc2UgcmVzb2x2ZWQgbmFtZSBmb3IgZGVidWdnaW5nXG4gICAgX3Jlc29sdmVkTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgaXNPcHRpb25hbD86IHRydWVcbiAgKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgbGV0IGhhbmRsZSA9IHRoaXMuaGVscGVyRGVmaW5pdGlvbkNhY2hlLmdldChkZWZpbml0aW9uU3RhdGUpO1xuXG4gICAgaWYgKGhhbmRsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbWFuYWdlck9ySGVscGVyID0gZ2V0SW50ZXJuYWxIZWxwZXJNYW5hZ2VyKGRlZmluaXRpb25TdGF0ZSwgaXNPcHRpb25hbCk7XG5cbiAgICAgIGlmIChtYW5hZ2VyT3JIZWxwZXIgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5oZWxwZXJEZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgbnVsbCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobWFuYWdlck9ySGVscGVyLCAnQlVHOiBleHBlY3RlZCBtYW5hZ2VyIG9yIGhlbHBlcicpO1xuXG4gICAgICBsZXQgaGVscGVyID1cbiAgICAgICAgdHlwZW9mIG1hbmFnZXJPckhlbHBlciA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgID8gbWFuYWdlck9ySGVscGVyXG4gICAgICAgICAgOiBtYW5hZ2VyT3JIZWxwZXIuZ2V0SGVscGVyKGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICAgIGhhbmRsZSA9IHRoaXMudmFsdWUoaGVscGVyKTtcblxuICAgICAgdGhpcy5oZWxwZXJEZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgaGFuZGxlKTtcbiAgICAgIHRoaXMuaGVscGVyRGVmaW5pdGlvbkNvdW50Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhbmRsZTtcbiAgfVxuXG4gIG1vZGlmaWVyKFxuICAgIGRlZmluaXRpb25TdGF0ZTogTW9kaWZpZXJEZWZpbml0aW9uU3RhdGUsXG4gICAgcmVzb2x2ZWROYW1lOiBzdHJpbmcgfCBudWxsLFxuICAgIGlzT3B0aW9uYWw6IHRydWVcbiAgKTogbnVtYmVyIHwgbnVsbDtcbiAgbW9kaWZpZXIoZGVmaW5pdGlvblN0YXRlOiBNb2RpZmllckRlZmluaXRpb25TdGF0ZSwgcmVzb2x2ZWROYW1lPzogc3RyaW5nIHwgbnVsbCk6IG51bWJlcjtcbiAgbW9kaWZpZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBNb2RpZmllckRlZmluaXRpb25TdGF0ZSxcbiAgICByZXNvbHZlZE5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGlzT3B0aW9uYWw/OiB0cnVlXG4gICk6IG51bWJlciB8IG51bGwge1xuICAgIGxldCBoYW5kbGUgPSB0aGlzLm1vZGlmaWVyRGVmaW5pdGlvbkNhY2hlLmdldChkZWZpbml0aW9uU3RhdGUpO1xuXG4gICAgaWYgKGhhbmRsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbWFuYWdlciA9IGdldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyKGRlZmluaXRpb25TdGF0ZSwgaXNPcHRpb25hbCk7XG5cbiAgICAgIGlmIChtYW5hZ2VyID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMubW9kaWZpZXJEZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgbnVsbCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBsZXQgZGVmaW5pdGlvbiA9IHtcbiAgICAgICAgcmVzb2x2ZWROYW1lLFxuICAgICAgICBtYW5hZ2VyLFxuICAgICAgICBzdGF0ZTogZGVmaW5pdGlvblN0YXRlLFxuICAgICAgfTtcblxuICAgICAgaGFuZGxlID0gdGhpcy52YWx1ZShkZWZpbml0aW9uKTtcblxuICAgICAgdGhpcy5tb2RpZmllckRlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBoYW5kbGUpO1xuICAgICAgdGhpcy5tb2RpZmllckRlZmluaXRpb25Db3VudCsrO1xuICAgIH1cblxuICAgIHJldHVybiBoYW5kbGU7XG4gIH1cblxuICBjb21wb25lbnQoZGVmaW5pdGlvblN0YXRlOiBDb21wb25lbnREZWZpbml0aW9uU3RhdGUpOiBDb21wb25lbnREZWZpbml0aW9uO1xuICBjb21wb25lbnQoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBDb21wb25lbnREZWZpbml0aW9uU3RhdGUsXG4gICAgaXNPcHRpb25hbDogdHJ1ZVxuICApOiBDb21wb25lbnREZWZpbml0aW9uIHwgbnVsbDtcbiAgY29tcG9uZW50KFxuICAgIGRlZmluaXRpb25TdGF0ZTogQ29tcG9uZW50RGVmaW5pdGlvblN0YXRlLFxuICAgIGlzT3B0aW9uYWw/OiB0cnVlLFxuICAgIG93bmVyPzogb2JqZWN0XG4gICk6IENvbXBvbmVudERlZmluaXRpb24gfCBudWxsIHtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlLmdldChkZWZpbml0aW9uU3RhdGUpO1xuXG4gICAgaWYgKGRlZmluaXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IG1hbmFnZXIgPSBnZXRJbnRlcm5hbENvbXBvbmVudE1hbmFnZXIoZGVmaW5pdGlvblN0YXRlLCBpc09wdGlvbmFsKTtcblxuICAgICAgaWYgKG1hbmFnZXIgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgbnVsbCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobWFuYWdlciwgJ0JVRzogZXhwZWN0ZWQgbWFuYWdlcicpO1xuXG4gICAgICBsZXQgY2FwYWJpbGl0aWVzID0gY2FwYWJpbGl0eUZsYWdzRnJvbShtYW5hZ2VyLmdldENhcGFiaWxpdGllcyhkZWZpbml0aW9uU3RhdGUpKTtcblxuICAgICAgbGV0IHRlbXBsYXRlRmFjdG9yeSA9IGdldENvbXBvbmVudFRlbXBsYXRlKGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICAgIGxldCBjb21waWxhYmxlID0gbnVsbDtcbiAgICAgIGxldCB0ZW1wbGF0ZTtcblxuICAgICAgaWYgKCFtYW5hZ2VySGFzQ2FwYWJpbGl0eShtYW5hZ2VyLCBjYXBhYmlsaXRpZXMsIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eS5EeW5hbWljTGF5b3V0KSkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlRmFjdG9yeT8uKG93bmVyKSA/PyB0aGlzLmRlZmF1bHRUZW1wbGF0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGVGYWN0b3J5Py4ob3duZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGVtcGxhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHVud3JhcFRlbXBsYXRlKHRlbXBsYXRlKTtcblxuICAgICAgICBjb21waWxhYmxlID0gbWFuYWdlckhhc0NhcGFiaWxpdHkoXG4gICAgICAgICAgbWFuYWdlcixcbiAgICAgICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICAgICAgSW50ZXJuYWxDb21wb25lbnRDYXBhYmlsaXR5LldyYXBwZWRcbiAgICAgICAgKVxuICAgICAgICAgID8gdGVtcGxhdGUuYXNXcmFwcGVkTGF5b3V0KClcbiAgICAgICAgICA6IHRlbXBsYXRlLmFzTGF5b3V0KCk7XG4gICAgICB9XG5cbiAgICAgIGRlZmluaXRpb24gPSB7XG4gICAgICAgIHJlc29sdmVkTmFtZTogbnVsbCxcbiAgICAgICAgaGFuZGxlOiAtMSwgLy8gcmVwbGFjZWQgbW9tZW50YXJpbHlcbiAgICAgICAgbWFuYWdlcixcbiAgICAgICAgY2FwYWJpbGl0aWVzLFxuICAgICAgICBzdGF0ZTogZGVmaW5pdGlvblN0YXRlLFxuICAgICAgICBjb21waWxhYmxlLFxuICAgICAgfTtcblxuICAgICAgZGVmaW5pdGlvbiEuaGFuZGxlID0gdGhpcy52YWx1ZShkZWZpbml0aW9uKTtcbiAgICAgIHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIGRlZmluaXRpb24pO1xuICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHJlc29sdmVkQ29tcG9uZW50KFxuICAgIHJlc29sdmVkRGVmaW5pdGlvbjogUmVzb2x2ZWRDb21wb25lbnREZWZpbml0aW9uLFxuICAgIHJlc29sdmVkTmFtZTogc3RyaW5nXG4gICk6IENvbXBvbmVudERlZmluaXRpb24ge1xuICAgIGxldCBkZWZpbml0aW9uID0gdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuZ2V0KHJlc29sdmVkRGVmaW5pdGlvbik7XG5cbiAgICBpZiAoZGVmaW5pdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgeyBtYW5hZ2VyLCBzdGF0ZSwgdGVtcGxhdGUgfSA9IHJlc29sdmVkRGVmaW5pdGlvbjtcbiAgICAgIGxldCBjYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXR5RmxhZ3NGcm9tKG1hbmFnZXIuZ2V0Q2FwYWJpbGl0aWVzKHJlc29sdmVkRGVmaW5pdGlvbikpO1xuXG4gICAgICBsZXQgY29tcGlsYWJsZSA9IG51bGw7XG5cbiAgICAgIGlmICghbWFuYWdlckhhc0NhcGFiaWxpdHkobWFuYWdlciwgY2FwYWJpbGl0aWVzLCBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHkuRHluYW1pY0xheW91dCkpIHtcbiAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZSA/PyB0aGlzLmRlZmF1bHRUZW1wbGF0ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRlbXBsYXRlICE9PSBudWxsKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdW53cmFwVGVtcGxhdGUodGVtcGxhdGUpO1xuXG4gICAgICAgIGNvbXBpbGFibGUgPSBtYW5hZ2VySGFzQ2FwYWJpbGl0eShcbiAgICAgICAgICBtYW5hZ2VyLFxuICAgICAgICAgIGNhcGFiaWxpdGllcyxcbiAgICAgICAgICBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHkuV3JhcHBlZFxuICAgICAgICApXG4gICAgICAgICAgPyB0ZW1wbGF0ZS5hc1dyYXBwZWRMYXlvdXQoKVxuICAgICAgICAgIDogdGVtcGxhdGUuYXNMYXlvdXQoKTtcbiAgICAgIH1cblxuICAgICAgZGVmaW5pdGlvbiA9IHtcbiAgICAgICAgcmVzb2x2ZWROYW1lLFxuICAgICAgICBoYW5kbGU6IC0xLCAvLyByZXBsYWNlZCBtb21lbnRhcmlseVxuICAgICAgICBtYW5hZ2VyLFxuICAgICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBjb21waWxhYmxlLFxuICAgICAgfTtcblxuICAgICAgZGVmaW5pdGlvbiEuaGFuZGxlID0gdGhpcy52YWx1ZShkZWZpbml0aW9uKTtcbiAgICAgIHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlLnNldChyZXNvbHZlZERlZmluaXRpb24sIGRlZmluaXRpb24pO1xuICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZXhwZWN0KGRlZmluaXRpb24sICdCVUc6IHJlc29sdmVkIGNvbXBvbmVudCBkZWZpbml0aW9ucyBjYW5ub3QgYmUgbnVsbCcpO1xuICB9XG5cbiAgZ2V0VmFsdWU8VD4oaW5kZXg6IG51bWJlcikge1xuICAgIGFzc2VydChpbmRleCA+PSAwLCBgY2Fubm90IGdldCB2YWx1ZSBmb3IgaGFuZGxlOiAke2luZGV4fWApO1xuXG4gICAgcmV0dXJuIHRoaXMudmFsdWVzW2luZGV4XSBhcyBUO1xuICB9XG5cbiAgZ2V0QXJyYXk8VD4oaW5kZXg6IG51bWJlcik6IFRbXSB7XG4gICAgbGV0IHJlaWZpZWRBcnJzID0gdGhpcy5yZWlmaWVkQXJycztcbiAgICBsZXQgcmVpZmllZCA9IHJlaWZpZWRBcnJzW2luZGV4XSBhcyBUW107XG5cbiAgICBpZiAocmVpZmllZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbmFtZXM6IG51bWJlcltdID0gdGhpcy5nZXRWYWx1ZShpbmRleCk7XG4gICAgICByZWlmaWVkID0gbmV3IEFycmF5KG5hbWVzLmxlbmd0aCk7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVpZmllZFtpXSA9IHRoaXMuZ2V0VmFsdWUobmFtZXNbaV0pO1xuICAgICAgfVxuXG4gICAgICByZWlmaWVkQXJyc1tpbmRleF0gPSByZWlmaWVkO1xuICAgIH1cblxuICAgIHJldHVybiByZWlmaWVkO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3Byb2dyYW0vbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBYUE7O0FBQ0E7O0FBUUE7O0FBQ0E7Ozs7Ozs7O0FBRUEsSUFBTSxzQkFBc0IsR0FBWSxNQUFNLENBQU4sTUFBQSxDQUF4QyxFQUF3QyxDQUF4QztBQUNBLElBQU0saUJBQWlCLEdBQUcscUJBQTFCLHNCQUEwQixDQUExQjtBQUNBLElBQU0sK0JBQStCLEdBQVcsaUJBQWlCLENBQWpCLE9BQUEsQ0FBaEQsc0JBQWdELENBQWhEOztBQUVBLElBQU0sdUJBQU4sR0FBQSxhQUFBLFlBQUE7QUFBQSxXQUFBLHVCQUFBLEdBQUE7QUFDRTtBQUVVLFNBQUEsTUFBQSxHQUFvQixpQkFBaUIsQ0FBckMsS0FBb0IsRUFBcEI7QUFDQSxTQUFBLFFBQUEsR0FBaUMsSUFBQSxHQUFBLENBQ3pDLEtBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBZ0IsVUFBQSxLQUFBLEVBQUEsS0FBQSxFQUFBO0FBQUEsYUFBa0IsQ0FBQSxLQUFBLEVBRDFCLEtBQzBCLENBQWxCO0FBRFIsS0FDUixDQUR5QyxDQUFqQztBQWlDWDs7QUFyQ0QsTUFBQSxNQUFBLEdBQUEsdUJBQUEsQ0FBQSxTQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLEtBQUEsR0FRRSxTQUFBLEtBQUEsQ0FBQSxNQUFBLEVBQW9CO0FBQ2xCLFFBQUksUUFBUSxHQUFHLEtBQWYsUUFBQTtBQUNBLFFBQUksS0FBSyxHQUFHLFFBQVEsQ0FBUixHQUFBLENBQVosTUFBWSxDQUFaOztBQUVBLFFBQUksS0FBSyxLQUFULFNBQUEsRUFBeUI7QUFDdkIsTUFBQSxLQUFLLEdBQUcsS0FBQSxNQUFBLENBQUEsSUFBQSxDQUFBLE1BQUEsSUFBUixDQUFBO0FBQ0EsTUFBQSxRQUFRLENBQVIsR0FBQSxDQUFBLE1BQUEsRUFBQSxLQUFBO0FBQ0Q7O0FBRUQsV0FBQSxLQUFBO0FBakJKLEdB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ZUNvbnN0YW50cyxcbiAgQ29tcG9uZW50RGVmaW5pdGlvblN0YXRlLFxuICBDb25zdGFudFBvb2wsXG4gIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eSxcbiAgQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgUmVzb2x1dGlvblRpbWVDb25zdGFudHMsXG4gIFJlc29sdmVkQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgUnVudGltZUNvbnN0YW50cyxcbiAgTW9kaWZpZXJEZWZpbml0aW9uU3RhdGUsXG4gIEhlbHBlckRlZmluaXRpb25TdGF0ZSxcbiAgVGVtcGxhdGUsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgYXNzZXJ0LCBjb25zdGFudHMsIGV4cGVjdCwgdW53cmFwVGVtcGxhdGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIGNhcGFiaWxpdHlGbGFnc0Zyb20sXG4gIGdldENvbXBvbmVudFRlbXBsYXRlLFxuICBnZXRJbnRlcm5hbENvbXBvbmVudE1hbmFnZXIsXG4gIGdldEludGVybmFsSGVscGVyTWFuYWdlcixcbiAgZ2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIsXG4gIG1hbmFnZXJIYXNDYXBhYmlsaXR5LFxufSBmcm9tICdAZ2xpbW1lci9tYW5hZ2VyJztcbmltcG9ydCB7IHRlbXBsYXRlRmFjdG9yeSB9IGZyb20gJ0BnbGltbWVyL29wY29kZS1jb21waWxlcic7XG5pbXBvcnQgeyBERUZBVUxUX1RFTVBMQVRFIH0gZnJvbSAnLi91dGlsL2RlZmF1bHQtdGVtcGxhdGUnO1xuXG5jb25zdCBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZOiB1bmtub3duID0gT2JqZWN0LmZyZWV6ZShbXSk7XG5jb25zdCBTVEFSVEVSX0NPTlNUQU5UUyA9IGNvbnN0YW50cyhXRUxMX0tOT1dOX0VNUFRZX0FSUkFZKTtcbmNvbnN0IFdFTExfS05PV05fRU1QVFlfQVJSQVlfUE9TSVRJT046IG51bWJlciA9IFNUQVJURVJfQ09OU1RBTlRTLmluZGV4T2YoV0VMTF9LTk9XTl9FTVBUWV9BUlJBWSk7XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlVGltZUNvbnN0YW50SW1wbCBpbXBsZW1lbnRzIENvbXBpbGVUaW1lQ29uc3RhbnRzIHtcbiAgLy8gYDBgIG1lYW5zIE5VTExcblxuICBwcm90ZWN0ZWQgdmFsdWVzOiB1bmtub3duW10gPSBTVEFSVEVSX0NPTlNUQU5UUy5zbGljZSgpO1xuICBwcm90ZWN0ZWQgaW5kZXhNYXA6IE1hcDx1bmtub3duLCBudW1iZXI+ID0gbmV3IE1hcChcbiAgICB0aGlzLnZhbHVlcy5tYXAoKHZhbHVlLCBpbmRleCkgPT4gW3ZhbHVlLCBpbmRleF0pXG4gICk7XG5cbiAgdmFsdWUodmFsdWU6IHVua25vd24pIHtcbiAgICBsZXQgaW5kZXhNYXAgPSB0aGlzLmluZGV4TWFwO1xuICAgIGxldCBpbmRleCA9IGluZGV4TWFwLmdldCh2YWx1ZSk7XG5cbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgaW5kZXggPSB0aGlzLnZhbHVlcy5wdXNoKHZhbHVlKSAtIDE7XG4gICAgICBpbmRleE1hcC5zZXQodmFsdWUsIGluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBhcnJheSh2YWx1ZXM6IHVua25vd25bXSk6IG51bWJlciB7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OO1xuICAgIH1cblxuICAgIGxldCBoYW5kbGVzOiBudW1iZXJbXSA9IG5ldyBBcnJheSh2YWx1ZXMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBoYW5kbGVzW2ldID0gdGhpcy52YWx1ZSh2YWx1ZXNbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnZhbHVlKGhhbmRsZXMpO1xuICB9XG5cbiAgdG9Qb29sKCk6IENvbnN0YW50UG9vbCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSdW50aW1lQ29uc3RhbnRzSW1wbCBpbXBsZW1lbnRzIFJ1bnRpbWVDb25zdGFudHMge1xuICBwcm90ZWN0ZWQgdmFsdWVzOiB1bmtub3duW107XG5cbiAgY29uc3RydWN0b3IocG9vbDogQ29uc3RhbnRQb29sKSB7XG4gICAgdGhpcy52YWx1ZXMgPSBwb29sO1xuICB9XG5cbiAgZ2V0VmFsdWU8VD4oaGFuZGxlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXNbaGFuZGxlXSBhcyBUO1xuICB9XG5cbiAgZ2V0QXJyYXk8VD4odmFsdWU6IG51bWJlcik6IFRbXSB7XG4gICAgbGV0IGhhbmRsZXMgPSB0aGlzLmdldFZhbHVlKHZhbHVlKSBhcyBudW1iZXJbXTtcbiAgICBsZXQgcmVpZmllZDogVFtdID0gbmV3IEFycmF5KGhhbmRsZXMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGFuZGxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG4gPSBoYW5kbGVzW2ldO1xuICAgICAgcmVpZmllZFtpXSA9IHRoaXMuZ2V0VmFsdWUobik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlaWZpZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbnN0YW50c0ltcGxcbiAgZXh0ZW5kcyBDb21waWxlVGltZUNvbnN0YW50SW1wbFxuICBpbXBsZW1lbnRzIFJ1bnRpbWVDb25zdGFudHMsIFJlc29sdXRpb25UaW1lQ29uc3RhbnRzIHtcbiAgcHJvdGVjdGVkIHJlaWZpZWRBcnJzOiB7IFtrZXk6IG51bWJlcl06IHVua25vd25bXSB9ID0ge1xuICAgIFtXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OXTogV0VMTF9LTk9XTl9FTVBUWV9BUlJBWSBhcyB1bmtub3duW10sXG4gIH07XG5cbiAgZGVmYXVsdFRlbXBsYXRlOiBUZW1wbGF0ZSA9IHRlbXBsYXRlRmFjdG9yeShERUZBVUxUX1RFTVBMQVRFKSgpO1xuXG4gIC8vIFVzZWQgZm9yIHRlc3RzIGFuZCBkZWJ1Z2dpbmcgcHVycG9zZXMsIGFuZCB0byBiZSBhYmxlIHRvIGFuYWx5emUgbGFyZ2UgYXBwc1xuICAvLyBUaGlzIGlzIHdoeSBpdCdzIGVuYWJsZWQgZXZlbiBpbiBwcm9kdWN0aW9uXG4gIGhlbHBlckRlZmluaXRpb25Db3VudCA9IDA7XG4gIG1vZGlmaWVyRGVmaW5pdGlvbkNvdW50ID0gMDtcbiAgY29tcG9uZW50RGVmaW5pdGlvbkNvdW50ID0gMDtcblxuICBwcml2YXRlIGhlbHBlckRlZmluaXRpb25DYWNoZSA9IG5ldyBXZWFrTWFwPEhlbHBlckRlZmluaXRpb25TdGF0ZSwgbnVtYmVyIHwgbnVsbD4oKTtcblxuICBwcml2YXRlIG1vZGlmaWVyRGVmaW5pdGlvbkNhY2hlID0gbmV3IFdlYWtNYXA8TW9kaWZpZXJEZWZpbml0aW9uU3RhdGUsIG51bWJlciB8IG51bGw+KCk7XG5cbiAgcHJpdmF0ZSBjb21wb25lbnREZWZpbml0aW9uQ2FjaGUgPSBuZXcgV2Vha01hcDxcbiAgICBDb21wb25lbnREZWZpbml0aW9uU3RhdGUgfCBSZXNvbHZlZENvbXBvbmVudERlZmluaXRpb24sXG4gICAgQ29tcG9uZW50RGVmaW5pdGlvbiB8IG51bGxcbiAgPigpO1xuXG4gIGhlbHBlcihcbiAgICBkZWZpbml0aW9uU3RhdGU6IEhlbHBlckRlZmluaXRpb25TdGF0ZSxcblxuICAgIC8vIFRPRE86IEFkZCBhIHdheSB0byBleHBvc2UgcmVzb2x2ZWQgbmFtZSBmb3IgZGVidWdnaW5nXG4gICAgX3Jlc29sdmVkTmFtZTogc3RyaW5nIHwgbnVsbCxcbiAgICBpc09wdGlvbmFsOiB0cnVlXG4gICk6IG51bWJlciB8IG51bGw7XG4gIGhlbHBlcihcbiAgICBkZWZpbml0aW9uU3RhdGU6IEhlbHBlckRlZmluaXRpb25TdGF0ZSxcblxuICAgIC8vIFRPRE86IEFkZCBhIHdheSB0byBleHBvc2UgcmVzb2x2ZWQgbmFtZSBmb3IgZGVidWdnaW5nXG4gICAgX3Jlc29sdmVkTmFtZT86IHN0cmluZyB8IG51bGxcbiAgKTogbnVtYmVyO1xuICBoZWxwZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBIZWxwZXJEZWZpbml0aW9uU3RhdGUsXG5cbiAgICAvLyBUT0RPOiBBZGQgYSB3YXkgdG8gZXhwb3NlIHJlc29sdmVkIG5hbWUgZm9yIGRlYnVnZ2luZ1xuICAgIF9yZXNvbHZlZE5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGlzT3B0aW9uYWw/OiB0cnVlXG4gICk6IG51bWJlciB8IG51bGwge1xuICAgIGxldCBoYW5kbGUgPSB0aGlzLmhlbHBlckRlZmluaXRpb25DYWNoZS5nZXQoZGVmaW5pdGlvblN0YXRlKTtcblxuICAgIGlmIChoYW5kbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IG1hbmFnZXJPckhlbHBlciA9IGdldEludGVybmFsSGVscGVyTWFuYWdlcihkZWZpbml0aW9uU3RhdGUsIGlzT3B0aW9uYWwpO1xuXG4gICAgICBpZiAobWFuYWdlck9ySGVscGVyID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuaGVscGVyRGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIG51bGwpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0KG1hbmFnZXJPckhlbHBlciwgJ0JVRzogZXhwZWN0ZWQgbWFuYWdlciBvciBoZWxwZXInKTtcblxuICAgICAgbGV0IGhlbHBlciA9XG4gICAgICAgIHR5cGVvZiBtYW5hZ2VyT3JIZWxwZXIgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICA/IG1hbmFnZXJPckhlbHBlclxuICAgICAgICAgIDogbWFuYWdlck9ySGVscGVyLmdldEhlbHBlcihkZWZpbml0aW9uU3RhdGUpO1xuXG4gICAgICBoYW5kbGUgPSB0aGlzLnZhbHVlKGhlbHBlcik7XG5cbiAgICAgIHRoaXMuaGVscGVyRGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIGhhbmRsZSk7XG4gICAgICB0aGlzLmhlbHBlckRlZmluaXRpb25Db3VudCsrO1xuICAgIH1cblxuICAgIHJldHVybiBoYW5kbGU7XG4gIH1cblxuICBtb2RpZmllcihcbiAgICBkZWZpbml0aW9uU3RhdGU6IE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLFxuICAgIHJlc29sdmVkTmFtZTogc3RyaW5nIHwgbnVsbCxcbiAgICBpc09wdGlvbmFsOiB0cnVlXG4gICk6IG51bWJlciB8IG51bGw7XG4gIG1vZGlmaWVyKGRlZmluaXRpb25TdGF0ZTogTW9kaWZpZXJEZWZpbml0aW9uU3RhdGUsIHJlc29sdmVkTmFtZT86IHN0cmluZyB8IG51bGwpOiBudW1iZXI7XG4gIG1vZGlmaWVyKFxuICAgIGRlZmluaXRpb25TdGF0ZTogTW9kaWZpZXJEZWZpbml0aW9uU3RhdGUsXG4gICAgcmVzb2x2ZWROYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBpc09wdGlvbmFsPzogdHJ1ZVxuICApOiBudW1iZXIgfCBudWxsIHtcbiAgICBsZXQgaGFuZGxlID0gdGhpcy5tb2RpZmllckRlZmluaXRpb25DYWNoZS5nZXQoZGVmaW5pdGlvblN0YXRlKTtcblxuICAgIGlmIChoYW5kbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IG1hbmFnZXIgPSBnZXRJbnRlcm5hbE1vZGlmaWVyTWFuYWdlcihkZWZpbml0aW9uU3RhdGUsIGlzT3B0aW9uYWwpO1xuXG4gICAgICBpZiAobWFuYWdlciA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLm1vZGlmaWVyRGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIG51bGwpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgbGV0IGRlZmluaXRpb24gPSB7XG4gICAgICAgIHJlc29sdmVkTmFtZSxcbiAgICAgICAgbWFuYWdlcixcbiAgICAgICAgc3RhdGU6IGRlZmluaXRpb25TdGF0ZSxcbiAgICAgIH07XG5cbiAgICAgIGhhbmRsZSA9IHRoaXMudmFsdWUoZGVmaW5pdGlvbik7XG5cbiAgICAgIHRoaXMubW9kaWZpZXJEZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgaGFuZGxlKTtcbiAgICAgIHRoaXMubW9kaWZpZXJEZWZpbml0aW9uQ291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlO1xuICB9XG5cbiAgY29tcG9uZW50KGRlZmluaXRpb25TdGF0ZTogQ29tcG9uZW50RGVmaW5pdGlvblN0YXRlLCBvd25lcjogb2JqZWN0KTogQ29tcG9uZW50RGVmaW5pdGlvbjtcbiAgY29tcG9uZW50KFxuICAgIGRlZmluaXRpb25TdGF0ZTogQ29tcG9uZW50RGVmaW5pdGlvblN0YXRlLFxuICAgIG93bmVyOiBvYmplY3QsXG4gICAgaXNPcHRpb25hbD86IHRydWVcbiAgKTogQ29tcG9uZW50RGVmaW5pdGlvbiB8IG51bGwge1xuICAgIGxldCBkZWZpbml0aW9uID0gdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuZ2V0KGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICBpZiAoZGVmaW5pdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbWFuYWdlciA9IGdldEludGVybmFsQ29tcG9uZW50TWFuYWdlcihkZWZpbml0aW9uU3RhdGUsIGlzT3B0aW9uYWwpO1xuXG4gICAgICBpZiAobWFuYWdlciA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNvbXBvbmVudERlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBudWxsKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChtYW5hZ2VyLCAnQlVHOiBleHBlY3RlZCBtYW5hZ2VyJyk7XG5cbiAgICAgIGxldCBjYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXR5RmxhZ3NGcm9tKG1hbmFnZXIuZ2V0Q2FwYWJpbGl0aWVzKGRlZmluaXRpb25TdGF0ZSkpO1xuXG4gICAgICBsZXQgdGVtcGxhdGVGYWN0b3J5ID0gZ2V0Q29tcG9uZW50VGVtcGxhdGUoZGVmaW5pdGlvblN0YXRlKTtcblxuICAgICAgbGV0IGNvbXBpbGFibGUgPSBudWxsO1xuICAgICAgbGV0IHRlbXBsYXRlO1xuXG4gICAgICBpZiAoIW1hbmFnZXJIYXNDYXBhYmlsaXR5KG1hbmFnZXIsIGNhcGFiaWxpdGllcywgSW50ZXJuYWxDb21wb25lbnRDYXBhYmlsaXR5LkR5bmFtaWNMYXlvdXQpKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGVGYWN0b3J5Py4ob3duZXIpID8/IHRoaXMuZGVmYXVsdFRlbXBsYXRlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZUZhY3Rvcnk/Lihvd25lcik7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZW1wbGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdW53cmFwVGVtcGxhdGUodGVtcGxhdGUpO1xuXG4gICAgICAgIGNvbXBpbGFibGUgPSBtYW5hZ2VySGFzQ2FwYWJpbGl0eShcbiAgICAgICAgICBtYW5hZ2VyLFxuICAgICAgICAgIGNhcGFiaWxpdGllcyxcbiAgICAgICAgICBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHkuV3JhcHBlZFxuICAgICAgICApXG4gICAgICAgICAgPyB0ZW1wbGF0ZS5hc1dyYXBwZWRMYXlvdXQoKVxuICAgICAgICAgIDogdGVtcGxhdGUuYXNMYXlvdXQoKTtcbiAgICAgIH1cblxuICAgICAgZGVmaW5pdGlvbiA9IHtcbiAgICAgICAgcmVzb2x2ZWROYW1lOiBudWxsLFxuICAgICAgICBoYW5kbGU6IC0xLCAvLyByZXBsYWNlZCBtb21lbnRhcmlseVxuICAgICAgICBtYW5hZ2VyLFxuICAgICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICAgIHN0YXRlOiBkZWZpbml0aW9uU3RhdGUsXG4gICAgICAgIGNvbXBpbGFibGUsXG4gICAgICB9O1xuXG4gICAgICBkZWZpbml0aW9uIS5oYW5kbGUgPSB0aGlzLnZhbHVlKGRlZmluaXRpb24pO1xuICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgZGVmaW5pdGlvbik7XG4gICAgICB0aGlzLmNvbXBvbmVudERlZmluaXRpb25Db3VudCsrO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgcmVzb2x2ZWRDb21wb25lbnQoXG4gICAgcmVzb2x2ZWREZWZpbml0aW9uOiBSZXNvbHZlZENvbXBvbmVudERlZmluaXRpb24sXG4gICAgcmVzb2x2ZWROYW1lOiBzdHJpbmdcbiAgKTogQ29tcG9uZW50RGVmaW5pdGlvbiB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB0aGlzLmNvbXBvbmVudERlZmluaXRpb25DYWNoZS5nZXQocmVzb2x2ZWREZWZpbml0aW9uKTtcblxuICAgIGlmIChkZWZpbml0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCB7IG1hbmFnZXIsIHN0YXRlLCB0ZW1wbGF0ZSB9ID0gcmVzb2x2ZWREZWZpbml0aW9uO1xuICAgICAgbGV0IGNhcGFiaWxpdGllcyA9IGNhcGFiaWxpdHlGbGFnc0Zyb20obWFuYWdlci5nZXRDYXBhYmlsaXRpZXMocmVzb2x2ZWREZWZpbml0aW9uKSk7XG5cbiAgICAgIGxldCBjb21waWxhYmxlID0gbnVsbDtcblxuICAgICAgaWYgKCFtYW5hZ2VySGFzQ2FwYWJpbGl0eShtYW5hZ2VyLCBjYXBhYmlsaXRpZXMsIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eS5EeW5hbWljTGF5b3V0KSkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlID8/IHRoaXMuZGVmYXVsdFRlbXBsYXRlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGVtcGxhdGUgIT09IG51bGwpIHtcbiAgICAgICAgdGVtcGxhdGUgPSB1bndyYXBUZW1wbGF0ZSh0ZW1wbGF0ZSk7XG5cbiAgICAgICAgY29tcGlsYWJsZSA9IG1hbmFnZXJIYXNDYXBhYmlsaXR5KFxuICAgICAgICAgIG1hbmFnZXIsXG4gICAgICAgICAgY2FwYWJpbGl0aWVzLFxuICAgICAgICAgIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eS5XcmFwcGVkXG4gICAgICAgIClcbiAgICAgICAgICA/IHRlbXBsYXRlLmFzV3JhcHBlZExheW91dCgpXG4gICAgICAgICAgOiB0ZW1wbGF0ZS5hc0xheW91dCgpO1xuICAgICAgfVxuXG4gICAgICBkZWZpbml0aW9uID0ge1xuICAgICAgICByZXNvbHZlZE5hbWUsXG4gICAgICAgIGhhbmRsZTogLTEsIC8vIHJlcGxhY2VkIG1vbWVudGFyaWx5XG4gICAgICAgIG1hbmFnZXIsXG4gICAgICAgIGNhcGFiaWxpdGllcyxcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIGNvbXBpbGFibGUsXG4gICAgICB9O1xuXG4gICAgICBkZWZpbml0aW9uIS5oYW5kbGUgPSB0aGlzLnZhbHVlKGRlZmluaXRpb24pO1xuICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuc2V0KHJlc29sdmVkRGVmaW5pdGlvbiwgZGVmaW5pdGlvbik7XG4gICAgICB0aGlzLmNvbXBvbmVudERlZmluaXRpb25Db3VudCsrO1xuICAgIH1cblxuICAgIHJldHVybiBleHBlY3QoZGVmaW5pdGlvbiwgJ0JVRzogcmVzb2x2ZWQgY29tcG9uZW50IGRlZmluaXRpb25zIGNhbm5vdCBiZSBudWxsJyk7XG4gIH1cblxuICBnZXRWYWx1ZTxUPihpbmRleDogbnVtYmVyKSB7XG4gICAgYXNzZXJ0KGluZGV4ID49IDAsIGBjYW5ub3QgZ2V0IHZhbHVlIGZvciBoYW5kbGU6ICR7aW5kZXh9YCk7XG5cbiAgICByZXR1cm4gdGhpcy52YWx1ZXNbaW5kZXhdIGFzIFQ7XG4gIH1cblxuICBnZXRBcnJheTxUPihpbmRleDogbnVtYmVyKTogVFtdIHtcbiAgICBsZXQgcmVpZmllZEFycnMgPSB0aGlzLnJlaWZpZWRBcnJzO1xuICAgIGxldCByZWlmaWVkID0gcmVpZmllZEFycnNbaW5kZXhdIGFzIFRbXTtcblxuICAgIGlmIChyZWlmaWVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBuYW1lczogbnVtYmVyW10gPSB0aGlzLmdldFZhbHVlKGluZGV4KTtcbiAgICAgIHJlaWZpZWQgPSBuZXcgQXJyYXkobmFtZXMubGVuZ3RoKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZWlmaWVkW2ldID0gdGhpcy5nZXRWYWx1ZShuYW1lc1tpXSk7XG4gICAgICB9XG5cbiAgICAgIHJlaWZpZWRBcnJzW2luZGV4XSA9IHJlaWZpZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlaWZpZWQ7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= |
@@ -131,3 +131,3 @@ import { assert, constants, unwrapTemplate } from '@glimmer/util'; | ||
component(definitionState, isOptional, owner) { | ||
component(definitionState, owner, isOptional) { | ||
var _a; | ||
@@ -247,2 +247,2 @@ | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3Byb2dyYW0vbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxTQUFTLE1BQVQsRUFBaUIsU0FBakIsRUFBb0MsY0FBcEMsUUFBMEQsZUFBMUQ7QUFDQSxTQUNFLG1CQURGLEVBRUUsb0JBRkYsRUFHRSwyQkFIRixFQUlFLHdCQUpGLEVBS0UsMEJBTEYsRUFNRSxvQkFORixRQU9PLGtCQVBQO0FBUUEsU0FBUyxlQUFULFFBQWdDLDBCQUFoQztBQUNBLFNBQVMsZ0JBQVQsUUFBaUMseUJBQWpDO0FBRUEsTUFBTSxzQkFBc0IsR0FBWSxNQUFNLENBQUMsTUFBUCxDQUFjLEVBQWQsQ0FBeEM7QUFDQSxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxzQkFBRCxDQUFuQztBQUNBLE1BQU0sK0JBQStCLEdBQVcsaUJBQWlCLENBQUMsT0FBbEIsQ0FBMEIsc0JBQTFCLENBQWhEO0FBRUEsT0FBTSxNQUFPLHVCQUFQLENBQThCO0FBQXBDLEVBQUEsV0FBQSxHQUFBO0FBQ0U7QUFFVSxTQUFBLE1BQUEsR0FBb0IsaUJBQWlCLENBQUMsS0FBbEIsRUFBcEI7QUFDQSxTQUFBLFFBQUEsR0FBaUMsSUFBSSxHQUFKLENBQ3pDLEtBQUssTUFBTCxDQUFZLEdBQVosQ0FBZ0IsQ0FBQyxLQUFELEVBQVEsS0FBUixLQUFrQixDQUFDLEtBQUQsRUFBUSxLQUFSLENBQWxDLENBRHlDLENBQWpDO0FBaUNYOztBQTdCQyxFQUFBLEtBQUssQ0FBQyxLQUFELEVBQWU7QUFDbEIsUUFBSSxRQUFRLEdBQUcsS0FBSyxRQUFwQjtBQUNBLFFBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFULENBQWEsS0FBYixDQUFaOztBQUVBLFFBQUksS0FBSyxLQUFLLFNBQWQsRUFBeUI7QUFDdkIsTUFBQSxLQUFLLEdBQUcsS0FBSyxNQUFMLENBQVksSUFBWixDQUFpQixLQUFqQixJQUEwQixDQUFsQztBQUNBLE1B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LENBQWMsS0FBSyxDQUFDLENBQUQsQ0FBbkIsQ0FBYjtBQUNEOztBQUVELE1BQUEsV0FBVyxDQUFDLEtBQUQsQ0FBWCxHQUFxQixPQUFyQjtBQUNEOztBQUVELFdBQU8sT0FBUDtBQUNEOztBQTVPOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21waWxlVGltZUNvbnN0YW50cyxcbiAgQ29tcG9uZW50RGVmaW5pdGlvblN0YXRlLFxuICBDb25zdGFudFBvb2wsXG4gIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eSxcbiAgQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgUmVzb2x1dGlvblRpbWVDb25zdGFudHMsXG4gIFJlc29sdmVkQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgUnVudGltZUNvbnN0YW50cyxcbiAgTW9kaWZpZXJEZWZpbml0aW9uU3RhdGUsXG4gIEhlbHBlckRlZmluaXRpb25TdGF0ZSxcbiAgVGVtcGxhdGUsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgYXNzZXJ0LCBjb25zdGFudHMsIGV4cGVjdCwgdW53cmFwVGVtcGxhdGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIGNhcGFiaWxpdHlGbGFnc0Zyb20sXG4gIGdldENvbXBvbmVudFRlbXBsYXRlLFxuICBnZXRJbnRlcm5hbENvbXBvbmVudE1hbmFnZXIsXG4gIGdldEludGVybmFsSGVscGVyTWFuYWdlcixcbiAgZ2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIsXG4gIG1hbmFnZXJIYXNDYXBhYmlsaXR5LFxufSBmcm9tICdAZ2xpbW1lci9tYW5hZ2VyJztcbmltcG9ydCB7IHRlbXBsYXRlRmFjdG9yeSB9IGZyb20gJ0BnbGltbWVyL29wY29kZS1jb21waWxlcic7XG5pbXBvcnQgeyBERUZBVUxUX1RFTVBMQVRFIH0gZnJvbSAnLi91dGlsL2RlZmF1bHQtdGVtcGxhdGUnO1xuXG5jb25zdCBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZOiB1bmtub3duID0gT2JqZWN0LmZyZWV6ZShbXSk7XG5jb25zdCBTVEFSVEVSX0NPTlNUQU5UUyA9IGNvbnN0YW50cyhXRUxMX0tOT1dOX0VNUFRZX0FSUkFZKTtcbmNvbnN0IFdFTExfS05PV05fRU1QVFlfQVJSQVlfUE9TSVRJT046IG51bWJlciA9IFNUQVJURVJfQ09OU1RBTlRTLmluZGV4T2YoV0VMTF9LTk9XTl9FTVBUWV9BUlJBWSk7XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlVGltZUNvbnN0YW50SW1wbCBpbXBsZW1lbnRzIENvbXBpbGVUaW1lQ29uc3RhbnRzIHtcbiAgLy8gYDBgIG1lYW5zIE5VTExcblxuICBwcm90ZWN0ZWQgdmFsdWVzOiB1bmtub3duW10gPSBTVEFSVEVSX0NPTlNUQU5UUy5zbGljZSgpO1xuICBwcm90ZWN0ZWQgaW5kZXhNYXA6IE1hcDx1bmtub3duLCBudW1iZXI+ID0gbmV3IE1hcChcbiAgICB0aGlzLnZhbHVlcy5tYXAoKHZhbHVlLCBpbmRleCkgPT4gW3ZhbHVlLCBpbmRleF0pXG4gICk7XG5cbiAgdmFsdWUodmFsdWU6IHVua25vd24pIHtcbiAgICBsZXQgaW5kZXhNYXAgPSB0aGlzLmluZGV4TWFwO1xuICAgIGxldCBpbmRleCA9IGluZGV4TWFwLmdldCh2YWx1ZSk7XG5cbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgaW5kZXggPSB0aGlzLnZhbHVlcy5wdXNoKHZhbHVlKSAtIDE7XG4gICAgICBpbmRleE1hcC5zZXQodmFsdWUsIGluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBhcnJheSh2YWx1ZXM6IHVua25vd25bXSk6IG51bWJlciB7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OO1xuICAgIH1cblxuICAgIGxldCBoYW5kbGVzOiBudW1iZXJbXSA9IG5ldyBBcnJheSh2YWx1ZXMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBoYW5kbGVzW2ldID0gdGhpcy52YWx1ZSh2YWx1ZXNbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnZhbHVlKGhhbmRsZXMpO1xuICB9XG5cbiAgdG9Qb29sKCk6IENvbnN0YW50UG9vbCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSdW50aW1lQ29uc3RhbnRzSW1wbCBpbXBsZW1lbnRzIFJ1bnRpbWVDb25zdGFudHMge1xuICBwcm90ZWN0ZWQgdmFsdWVzOiB1bmtub3duW107XG5cbiAgY29uc3RydWN0b3IocG9vbDogQ29uc3RhbnRQb29sKSB7XG4gICAgdGhpcy52YWx1ZXMgPSBwb29sO1xuICB9XG5cbiAgZ2V0VmFsdWU8VD4oaGFuZGxlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXNbaGFuZGxlXSBhcyBUO1xuICB9XG5cbiAgZ2V0QXJyYXk8VD4odmFsdWU6IG51bWJlcik6IFRbXSB7XG4gICAgbGV0IGhhbmRsZXMgPSB0aGlzLmdldFZhbHVlKHZhbHVlKSBhcyBudW1iZXJbXTtcbiAgICBsZXQgcmVpZmllZDogVFtdID0gbmV3IEFycmF5KGhhbmRsZXMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGFuZGxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG4gPSBoYW5kbGVzW2ldO1xuICAgICAgcmVpZmllZFtpXSA9IHRoaXMuZ2V0VmFsdWUobik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlaWZpZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbnN0YW50c0ltcGxcbiAgZXh0ZW5kcyBDb21waWxlVGltZUNvbnN0YW50SW1wbFxuICBpbXBsZW1lbnRzIFJ1bnRpbWVDb25zdGFudHMsIFJlc29sdXRpb25UaW1lQ29uc3RhbnRzIHtcbiAgcHJvdGVjdGVkIHJlaWZpZWRBcnJzOiB7IFtrZXk6IG51bWJlcl06IHVua25vd25bXSB9ID0ge1xuICAgIFtXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OXTogV0VMTF9LTk9XTl9FTVBUWV9BUlJBWSBhcyB1bmtub3duW10sXG4gIH07XG5cbiAgZGVmYXVsdFRlbXBsYXRlOiBUZW1wbGF0ZSA9IHRlbXBsYXRlRmFjdG9yeShERUZBVUxUX1RFTVBMQVRFKSgpO1xuXG4gIC8vIFVzZWQgZm9yIHRlc3RzIGFuZCBkZWJ1Z2dpbmcgcHVycG9zZXMsIGFuZCB0byBiZSBhYmxlIHRvIGFuYWx5emUgbGFyZ2UgYXBwc1xuICAvLyBUaGlzIGlzIHdoeSBpdCdzIGVuYWJsZWQgZXZlbiBpbiBwcm9kdWN0aW9uXG4gIGhlbHBlckRlZmluaXRpb25Db3VudCA9IDA7XG4gIG1vZGlmaWVyRGVmaW5pdGlvbkNvdW50ID0gMDtcbiAgY29tcG9uZW50RGVmaW5pdGlvbkNvdW50ID0gMDtcblxuICBwcml2YXRlIGhlbHBlckRlZmluaXRpb25DYWNoZSA9IG5ldyBXZWFrTWFwPEhlbHBlckRlZmluaXRpb25TdGF0ZSwgbnVtYmVyIHwgbnVsbD4oKTtcblxuICBwcml2YXRlIG1vZGlmaWVyRGVmaW5pdGlvbkNhY2hlID0gbmV3IFdlYWtNYXA8TW9kaWZpZXJEZWZpbml0aW9uU3RhdGUsIG51bWJlciB8IG51bGw+KCk7XG5cbiAgcHJpdmF0ZSBjb21wb25lbnREZWZpbml0aW9uQ2FjaGUgPSBuZXcgV2Vha01hcDxcbiAgICBDb21wb25lbnREZWZpbml0aW9uU3RhdGUgfCBSZXNvbHZlZENvbXBvbmVudERlZmluaXRpb24sXG4gICAgQ29tcG9uZW50RGVmaW5pdGlvbiB8IG51bGxcbiAgPigpO1xuXG4gIGhlbHBlcihcbiAgICBkZWZpbml0aW9uU3RhdGU6IEhlbHBlckRlZmluaXRpb25TdGF0ZSxcblxuICAgIC8vIFRPRE86IEFkZCBhIHdheSB0byBleHBvc2UgcmVzb2x2ZWQgbmFtZSBmb3IgZGVidWdnaW5nXG4gICAgX3Jlc29sdmVkTmFtZTogc3RyaW5nIHwgbnVsbCxcbiAgICBpc09wdGlvbmFsOiB0cnVlXG4gICk6IG51bWJlciB8IG51bGw7XG4gIGhlbHBlcihcbiAgICBkZWZpbml0aW9uU3RhdGU6IEhlbHBlckRlZmluaXRpb25TdGF0ZSxcblxuICAgIC8vIFRPRE86IEFkZCBhIHdheSB0byBleHBvc2UgcmVzb2x2ZWQgbmFtZSBmb3IgZGVidWdnaW5nXG4gICAgX3Jlc29sdmVkTmFtZT86IHN0cmluZyB8IG51bGxcbiAgKTogbnVtYmVyO1xuICBoZWxwZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBIZWxwZXJEZWZpbml0aW9uU3RhdGUsXG5cbiAgICAvLyBUT0RPOiBBZGQgYSB3YXkgdG8gZXhwb3NlIHJlc29sdmVkIG5hbWUgZm9yIGRlYnVnZ2luZ1xuICAgIF9yZXNvbHZlZE5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGlzT3B0aW9uYWw/OiB0cnVlXG4gICk6IG51bWJlciB8IG51bGwge1xuICAgIGxldCBoYW5kbGUgPSB0aGlzLmhlbHBlckRlZmluaXRpb25DYWNoZS5nZXQoZGVmaW5pdGlvblN0YXRlKTtcblxuICAgIGlmIChoYW5kbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IG1hbmFnZXJPckhlbHBlciA9IGdldEludGVybmFsSGVscGVyTWFuYWdlcihkZWZpbml0aW9uU3RhdGUsIGlzT3B0aW9uYWwpO1xuXG4gICAgICBpZiAobWFuYWdlck9ySGVscGVyID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuaGVscGVyRGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIG51bGwpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0KG1hbmFnZXJPckhlbHBlciwgJ0JVRzogZXhwZWN0ZWQgbWFuYWdlciBvciBoZWxwZXInKTtcblxuICAgICAgbGV0IGhlbHBlciA9XG4gICAgICAgIHR5cGVvZiBtYW5hZ2VyT3JIZWxwZXIgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICA/IG1hbmFnZXJPckhlbHBlclxuICAgICAgICAgIDogbWFuYWdlck9ySGVscGVyLmdldEhlbHBlcihkZWZpbml0aW9uU3RhdGUpO1xuXG4gICAgICBoYW5kbGUgPSB0aGlzLnZhbHVlKGhlbHBlcik7XG5cbiAgICAgIHRoaXMuaGVscGVyRGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIGhhbmRsZSk7XG4gICAgICB0aGlzLmhlbHBlckRlZmluaXRpb25Db3VudCsrO1xuICAgIH1cblxuICAgIHJldHVybiBoYW5kbGU7XG4gIH1cblxuICBtb2RpZmllcihcbiAgICBkZWZpbml0aW9uU3RhdGU6IE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLFxuICAgIHJlc29sdmVkTmFtZTogc3RyaW5nIHwgbnVsbCxcbiAgICBpc09wdGlvbmFsOiB0cnVlXG4gICk6IG51bWJlciB8IG51bGw7XG4gIG1vZGlmaWVyKGRlZmluaXRpb25TdGF0ZTogTW9kaWZpZXJEZWZpbml0aW9uU3RhdGUsIHJlc29sdmVkTmFtZT86IHN0cmluZyB8IG51bGwpOiBudW1iZXI7XG4gIG1vZGlmaWVyKFxuICAgIGRlZmluaXRpb25TdGF0ZTogTW9kaWZpZXJEZWZpbml0aW9uU3RhdGUsXG4gICAgcmVzb2x2ZWROYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBpc09wdGlvbmFsPzogdHJ1ZVxuICApOiBudW1iZXIgfCBudWxsIHtcbiAgICBsZXQgaGFuZGxlID0gdGhpcy5tb2RpZmllckRlZmluaXRpb25DYWNoZS5nZXQoZGVmaW5pdGlvblN0YXRlKTtcblxuICAgIGlmIChoYW5kbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IG1hbmFnZXIgPSBnZXRJbnRlcm5hbE1vZGlmaWVyTWFuYWdlcihkZWZpbml0aW9uU3RhdGUsIGlzT3B0aW9uYWwpO1xuXG4gICAgICBpZiAobWFuYWdlciA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLm1vZGlmaWVyRGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIG51bGwpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgbGV0IGRlZmluaXRpb24gPSB7XG4gICAgICAgIHJlc29sdmVkTmFtZSxcbiAgICAgICAgbWFuYWdlcixcbiAgICAgICAgc3RhdGU6IGRlZmluaXRpb25TdGF0ZSxcbiAgICAgIH07XG5cbiAgICAgIGhhbmRsZSA9IHRoaXMudmFsdWUoZGVmaW5pdGlvbik7XG5cbiAgICAgIHRoaXMubW9kaWZpZXJEZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgaGFuZGxlKTtcbiAgICAgIHRoaXMubW9kaWZpZXJEZWZpbml0aW9uQ291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlO1xuICB9XG5cbiAgY29tcG9uZW50KGRlZmluaXRpb25TdGF0ZTogQ29tcG9uZW50RGVmaW5pdGlvblN0YXRlKTogQ29tcG9uZW50RGVmaW5pdGlvbjtcbiAgY29tcG9uZW50KFxuICAgIGRlZmluaXRpb25TdGF0ZTogQ29tcG9uZW50RGVmaW5pdGlvblN0YXRlLFxuICAgIGlzT3B0aW9uYWw6IHRydWVcbiAgKTogQ29tcG9uZW50RGVmaW5pdGlvbiB8IG51bGw7XG4gIGNvbXBvbmVudChcbiAgICBkZWZpbml0aW9uU3RhdGU6IENvbXBvbmVudERlZmluaXRpb25TdGF0ZSxcbiAgICBpc09wdGlvbmFsPzogdHJ1ZSxcbiAgICBvd25lcj86IG9iamVjdFxuICApOiBDb21wb25lbnREZWZpbml0aW9uIHwgbnVsbCB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB0aGlzLmNvbXBvbmVudERlZmluaXRpb25DYWNoZS5nZXQoZGVmaW5pdGlvblN0YXRlKTtcblxuICAgIGlmIChkZWZpbml0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBtYW5hZ2VyID0gZ2V0SW50ZXJuYWxDb21wb25lbnRNYW5hZ2VyKGRlZmluaXRpb25TdGF0ZSwgaXNPcHRpb25hbCk7XG5cbiAgICAgIGlmIChtYW5hZ2VyID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIG51bGwpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0KG1hbmFnZXIsICdCVUc6IGV4cGVjdGVkIG1hbmFnZXInKTtcblxuICAgICAgbGV0IGNhcGFiaWxpdGllcyA9IGNhcGFiaWxpdHlGbGFnc0Zyb20obWFuYWdlci5nZXRDYXBhYmlsaXRpZXMoZGVmaW5pdGlvblN0YXRlKSk7XG5cbiAgICAgIGxldCB0ZW1wbGF0ZUZhY3RvcnkgPSBnZXRDb21wb25lbnRUZW1wbGF0ZShkZWZpbml0aW9uU3RhdGUpO1xuXG4gICAgICBsZXQgY29tcGlsYWJsZSA9IG51bGw7XG4gICAgICBsZXQgdGVtcGxhdGU7XG5cbiAgICAgIGlmICghbWFuYWdlckhhc0NhcGFiaWxpdHkobWFuYWdlciwgY2FwYWJpbGl0aWVzLCBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHkuRHluYW1pY0xheW91dCkpIHtcbiAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZUZhY3Rvcnk/Lihvd25lcikgPz8gdGhpcy5kZWZhdWx0VGVtcGxhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlRmFjdG9yeT8uKG93bmVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRlbXBsYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGVtcGxhdGUgPSB1bndyYXBUZW1wbGF0ZSh0ZW1wbGF0ZSk7XG5cbiAgICAgICAgY29tcGlsYWJsZSA9IG1hbmFnZXJIYXNDYXBhYmlsaXR5KFxuICAgICAgICAgIG1hbmFnZXIsXG4gICAgICAgICAgY2FwYWJpbGl0aWVzLFxuICAgICAgICAgIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eS5XcmFwcGVkXG4gICAgICAgIClcbiAgICAgICAgICA/IHRlbXBsYXRlLmFzV3JhcHBlZExheW91dCgpXG4gICAgICAgICAgOiB0ZW1wbGF0ZS5hc0xheW91dCgpO1xuICAgICAgfVxuXG4gICAgICBkZWZpbml0aW9uID0ge1xuICAgICAgICByZXNvbHZlZE5hbWU6IG51bGwsXG4gICAgICAgIGhhbmRsZTogLTEsIC8vIHJlcGxhY2VkIG1vbWVudGFyaWx5XG4gICAgICAgIG1hbmFnZXIsXG4gICAgICAgIGNhcGFiaWxpdGllcyxcbiAgICAgICAgc3RhdGU6IGRlZmluaXRpb25TdGF0ZSxcbiAgICAgICAgY29tcGlsYWJsZSxcbiAgICAgIH07XG5cbiAgICAgIGRlZmluaXRpb24hLmhhbmRsZSA9IHRoaXMudmFsdWUoZGVmaW5pdGlvbik7XG4gICAgICB0aGlzLmNvbXBvbmVudERlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBkZWZpbml0aW9uKTtcbiAgICAgIHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNvdW50Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICByZXNvbHZlZENvbXBvbmVudChcbiAgICByZXNvbHZlZERlZmluaXRpb246IFJlc29sdmVkQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgICByZXNvbHZlZE5hbWU6IHN0cmluZ1xuICApOiBDb21wb25lbnREZWZpbml0aW9uIHtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlLmdldChyZXNvbHZlZERlZmluaXRpb24pO1xuXG4gICAgaWYgKGRlZmluaXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IHsgbWFuYWdlciwgc3RhdGUsIHRlbXBsYXRlIH0gPSByZXNvbHZlZERlZmluaXRpb247XG4gICAgICBsZXQgY2FwYWJpbGl0aWVzID0gY2FwYWJpbGl0eUZsYWdzRnJvbShtYW5hZ2VyLmdldENhcGFiaWxpdGllcyhyZXNvbHZlZERlZmluaXRpb24pKTtcblxuICAgICAgbGV0IGNvbXBpbGFibGUgPSBudWxsO1xuXG4gICAgICBpZiAoIW1hbmFnZXJIYXNDYXBhYmlsaXR5KG1hbmFnZXIsIGNhcGFiaWxpdGllcywgSW50ZXJuYWxDb21wb25lbnRDYXBhYmlsaXR5LkR5bmFtaWNMYXlvdXQpKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUgPz8gdGhpcy5kZWZhdWx0VGVtcGxhdGU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZW1wbGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHVud3JhcFRlbXBsYXRlKHRlbXBsYXRlKTtcblxuICAgICAgICBjb21waWxhYmxlID0gbWFuYWdlckhhc0NhcGFiaWxpdHkoXG4gICAgICAgICAgbWFuYWdlcixcbiAgICAgICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICAgICAgSW50ZXJuYWxDb21wb25lbnRDYXBhYmlsaXR5LldyYXBwZWRcbiAgICAgICAgKVxuICAgICAgICAgID8gdGVtcGxhdGUuYXNXcmFwcGVkTGF5b3V0KClcbiAgICAgICAgICA6IHRlbXBsYXRlLmFzTGF5b3V0KCk7XG4gICAgICB9XG5cbiAgICAgIGRlZmluaXRpb24gPSB7XG4gICAgICAgIHJlc29sdmVkTmFtZSxcbiAgICAgICAgaGFuZGxlOiAtMSwgLy8gcmVwbGFjZWQgbW9tZW50YXJpbHlcbiAgICAgICAgbWFuYWdlcixcbiAgICAgICAgY2FwYWJpbGl0aWVzLFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgY29tcGlsYWJsZSxcbiAgICAgIH07XG5cbiAgICAgIGRlZmluaXRpb24hLmhhbmRsZSA9IHRoaXMudmFsdWUoZGVmaW5pdGlvbik7XG4gICAgICB0aGlzLmNvbXBvbmVudERlZmluaXRpb25DYWNoZS5zZXQocmVzb2x2ZWREZWZpbml0aW9uLCBkZWZpbml0aW9uKTtcbiAgICAgIHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNvdW50Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4cGVjdChkZWZpbml0aW9uLCAnQlVHOiByZXNvbHZlZCBjb21wb25lbnQgZGVmaW5pdGlvbnMgY2Fubm90IGJlIG51bGwnKTtcbiAgfVxuXG4gIGdldFZhbHVlPFQ+KGluZGV4OiBudW1iZXIpIHtcbiAgICBhc3NlcnQoaW5kZXggPj0gMCwgYGNhbm5vdCBnZXQgdmFsdWUgZm9yIGhhbmRsZTogJHtpbmRleH1gKTtcblxuICAgIHJldHVybiB0aGlzLnZhbHVlc1tpbmRleF0gYXMgVDtcbiAgfVxuXG4gIGdldEFycmF5PFQ+KGluZGV4OiBudW1iZXIpOiBUW10ge1xuICAgIGxldCByZWlmaWVkQXJycyA9IHRoaXMucmVpZmllZEFycnM7XG4gICAgbGV0IHJlaWZpZWQgPSByZWlmaWVkQXJyc1tpbmRleF0gYXMgVFtdO1xuXG4gICAgaWYgKHJlaWZpZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IG5hbWVzOiBudW1iZXJbXSA9IHRoaXMuZ2V0VmFsdWUoaW5kZXgpO1xuICAgICAgcmVpZmllZCA9IG5ldyBBcnJheShuYW1lcy5sZW5ndGgpO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlaWZpZWRbaV0gPSB0aGlzLmdldFZhbHVlKG5hbWVzW2ldKTtcbiAgICAgIH1cblxuICAgICAgcmVpZmllZEFycnNbaW5kZXhdID0gcmVpZmllZDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVpZmllZDtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3Byb2dyYW0vbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxTQUFTLE1BQVQsRUFBaUIsU0FBakIsRUFBb0MsY0FBcEMsUUFBMEQsZUFBMUQ7QUFDQSxTQUNFLG1CQURGLEVBRUUsb0JBRkYsRUFHRSwyQkFIRixFQUlFLHdCQUpGLEVBS0UsMEJBTEYsRUFNRSxvQkFORixRQU9PLGtCQVBQO0FBUUEsU0FBUyxlQUFULFFBQWdDLDBCQUFoQztBQUNBLFNBQVMsZ0JBQVQsUUFBaUMseUJBQWpDO0FBRUEsTUFBTSxzQkFBc0IsR0FBWSxNQUFNLENBQUMsTUFBUCxDQUFjLEVBQWQsQ0FBeEM7QUFDQSxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxzQkFBRCxDQUFuQztBQUNBLE1BQU0sK0JBQStCLEdBQVcsaUJBQWlCLENBQUMsT0FBbEIsQ0FBMEIsc0JBQTFCLENBQWhEO0FBRUEsT0FBTSxNQUFPLHVCQUFQLENBQThCO0FBQXBDLEVBQUEsV0FBQSxHQUFBO0FBQ0U7QUFFVSxTQUFBLE1BQUEsR0FBb0IsaUJBQWlCLENBQUMsS0FBbEIsRUFBcEI7QUFDQSxTQUFBLFFBQUEsR0FBaUMsSUFBSSxHQUFKLENBQ3pDLEtBQUssTUFBTCxDQUFZLEdBQVosQ0FBZ0IsQ0FBQyxLQUFELEVBQVEsS0FBUixLQUFrQixDQUFDLEtBQUQsRUFBUSxLQUFSLENBQWxDLENBRHlDLENBQWpDO0FBaUNYOztBQTdCQyxFQUFBLEtBQUssQ0FBQyxLQUFELEVBQWU7QUFDbEIsUUFBSSxRQUFRLEdBQUcsS0FBSyxRQUFwQjtBQUNBLFFBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFULENBQWEsS0FBYixDQUFaOztBQUVBLFFBQUksS0FBSyxLQUFLLFNBQWQsRUFBeUI7QUFDdkIsTUFBQSxLQUFLLEdBQUcsS0FBSyxNQUFMLENBQVksSUFBWixDQUFpQixLQUFqQixJQUEwQixDQUFsQztBQUNBLE1B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TCxDQUFjLEtBQUssQ0FBQyxDQUFELENBQW5CLENBQWI7QUFDRDs7QUFFRCxNQUFBLFdBQVcsQ0FBQyxLQUFELENBQVgsR0FBcUIsT0FBckI7QUFDRDs7QUFFRCxXQUFPLE9BQVA7QUFDRDs7QUF4TzhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcGlsZVRpbWVDb25zdGFudHMsXG4gIENvbXBvbmVudERlZmluaXRpb25TdGF0ZSxcbiAgQ29uc3RhbnRQb29sLFxuICBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHksXG4gIENvbXBvbmVudERlZmluaXRpb24sXG4gIFJlc29sdXRpb25UaW1lQ29uc3RhbnRzLFxuICBSZXNvbHZlZENvbXBvbmVudERlZmluaXRpb24sXG4gIFJ1bnRpbWVDb25zdGFudHMsXG4gIE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLFxuICBIZWxwZXJEZWZpbml0aW9uU3RhdGUsXG4gIFRlbXBsYXRlLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGFzc2VydCwgY29uc3RhbnRzLCBleHBlY3QsIHVud3JhcFRlbXBsYXRlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBjYXBhYmlsaXR5RmxhZ3NGcm9tLFxuICBnZXRDb21wb25lbnRUZW1wbGF0ZSxcbiAgZ2V0SW50ZXJuYWxDb21wb25lbnRNYW5hZ2VyLFxuICBnZXRJbnRlcm5hbEhlbHBlck1hbmFnZXIsXG4gIGdldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyLFxuICBtYW5hZ2VySGFzQ2FwYWJpbGl0eSxcbn0gZnJvbSAnQGdsaW1tZXIvbWFuYWdlcic7XG5pbXBvcnQgeyB0ZW1wbGF0ZUZhY3RvcnkgfSBmcm9tICdAZ2xpbW1lci9vcGNvZGUtY29tcGlsZXInO1xuaW1wb3J0IHsgREVGQVVMVF9URU1QTEFURSB9IGZyb20gJy4vdXRpbC9kZWZhdWx0LXRlbXBsYXRlJztcblxuY29uc3QgV0VMTF9LTk9XTl9FTVBUWV9BUlJBWTogdW5rbm93biA9IE9iamVjdC5mcmVlemUoW10pO1xuY29uc3QgU1RBUlRFUl9DT05TVEFOVFMgPSBjb25zdGFudHMoV0VMTF9LTk9XTl9FTVBUWV9BUlJBWSk7XG5jb25zdCBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OOiBudW1iZXIgPSBTVEFSVEVSX0NPTlNUQU5UUy5pbmRleE9mKFdFTExfS05PV05fRU1QVFlfQVJSQVkpO1xuXG5leHBvcnQgY2xhc3MgQ29tcGlsZVRpbWVDb25zdGFudEltcGwgaW1wbGVtZW50cyBDb21waWxlVGltZUNvbnN0YW50cyB7XG4gIC8vIGAwYCBtZWFucyBOVUxMXG5cbiAgcHJvdGVjdGVkIHZhbHVlczogdW5rbm93bltdID0gU1RBUlRFUl9DT05TVEFOVFMuc2xpY2UoKTtcbiAgcHJvdGVjdGVkIGluZGV4TWFwOiBNYXA8dW5rbm93biwgbnVtYmVyPiA9IG5ldyBNYXAoXG4gICAgdGhpcy52YWx1ZXMubWFwKCh2YWx1ZSwgaW5kZXgpID0+IFt2YWx1ZSwgaW5kZXhdKVxuICApO1xuXG4gIHZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgbGV0IGluZGV4TWFwID0gdGhpcy5pbmRleE1hcDtcbiAgICBsZXQgaW5kZXggPSBpbmRleE1hcC5nZXQodmFsdWUpO1xuXG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGluZGV4ID0gdGhpcy52YWx1ZXMucHVzaCh2YWx1ZSkgLSAxO1xuICAgICAgaW5kZXhNYXAuc2V0KHZhbHVlLCBpbmRleCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgYXJyYXkodmFsdWVzOiB1bmtub3duW10pOiBudW1iZXIge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gV0VMTF9LTk9XTl9FTVBUWV9BUlJBWV9QT1NJVElPTjtcbiAgICB9XG5cbiAgICBsZXQgaGFuZGxlczogbnVtYmVyW10gPSBuZXcgQXJyYXkodmFsdWVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaGFuZGxlc1tpXSA9IHRoaXMudmFsdWUodmFsdWVzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52YWx1ZShoYW5kbGVzKTtcbiAgfVxuXG4gIHRvUG9vbCgpOiBDb25zdGFudFBvb2wge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUnVudGltZUNvbnN0YW50c0ltcGwgaW1wbGVtZW50cyBSdW50aW1lQ29uc3RhbnRzIHtcbiAgcHJvdGVjdGVkIHZhbHVlczogdW5rbm93bltdO1xuXG4gIGNvbnN0cnVjdG9yKHBvb2w6IENvbnN0YW50UG9vbCkge1xuICAgIHRoaXMudmFsdWVzID0gcG9vbDtcbiAgfVxuXG4gIGdldFZhbHVlPFQ+KGhhbmRsZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzW2hhbmRsZV0gYXMgVDtcbiAgfVxuXG4gIGdldEFycmF5PFQ+KHZhbHVlOiBudW1iZXIpOiBUW10ge1xuICAgIGxldCBoYW5kbGVzID0gdGhpcy5nZXRWYWx1ZSh2YWx1ZSkgYXMgbnVtYmVyW107XG4gICAgbGV0IHJlaWZpZWQ6IFRbXSA9IG5ldyBBcnJheShoYW5kbGVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhhbmRsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBuID0gaGFuZGxlc1tpXTtcbiAgICAgIHJlaWZpZWRbaV0gPSB0aGlzLmdldFZhbHVlKG4pO1xuICAgIH1cblxuICAgIHJldHVybiByZWlmaWVkO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb25zdGFudHNJbXBsXG4gIGV4dGVuZHMgQ29tcGlsZVRpbWVDb25zdGFudEltcGxcbiAgaW1wbGVtZW50cyBSdW50aW1lQ29uc3RhbnRzLCBSZXNvbHV0aW9uVGltZUNvbnN0YW50cyB7XG4gIHByb3RlY3RlZCByZWlmaWVkQXJyczogeyBba2V5OiBudW1iZXJdOiB1bmtub3duW10gfSA9IHtcbiAgICBbV0VMTF9LTk9XTl9FTVBUWV9BUlJBWV9QT1NJVElPTl06IFdFTExfS05PV05fRU1QVFlfQVJSQVkgYXMgdW5rbm93bltdLFxuICB9O1xuXG4gIGRlZmF1bHRUZW1wbGF0ZTogVGVtcGxhdGUgPSB0ZW1wbGF0ZUZhY3RvcnkoREVGQVVMVF9URU1QTEFURSkoKTtcblxuICAvLyBVc2VkIGZvciB0ZXN0cyBhbmQgZGVidWdnaW5nIHB1cnBvc2VzLCBhbmQgdG8gYmUgYWJsZSB0byBhbmFseXplIGxhcmdlIGFwcHNcbiAgLy8gVGhpcyBpcyB3aHkgaXQncyBlbmFibGVkIGV2ZW4gaW4gcHJvZHVjdGlvblxuICBoZWxwZXJEZWZpbml0aW9uQ291bnQgPSAwO1xuICBtb2RpZmllckRlZmluaXRpb25Db3VudCA9IDA7XG4gIGNvbXBvbmVudERlZmluaXRpb25Db3VudCA9IDA7XG5cbiAgcHJpdmF0ZSBoZWxwZXJEZWZpbml0aW9uQ2FjaGUgPSBuZXcgV2Vha01hcDxIZWxwZXJEZWZpbml0aW9uU3RhdGUsIG51bWJlciB8IG51bGw+KCk7XG5cbiAgcHJpdmF0ZSBtb2RpZmllckRlZmluaXRpb25DYWNoZSA9IG5ldyBXZWFrTWFwPE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLCBudW1iZXIgfCBudWxsPigpO1xuXG4gIHByaXZhdGUgY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlID0gbmV3IFdlYWtNYXA8XG4gICAgQ29tcG9uZW50RGVmaW5pdGlvblN0YXRlIHwgUmVzb2x2ZWRDb21wb25lbnREZWZpbml0aW9uLFxuICAgIENvbXBvbmVudERlZmluaXRpb24gfCBudWxsXG4gID4oKTtcblxuICBoZWxwZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBIZWxwZXJEZWZpbml0aW9uU3RhdGUsXG5cbiAgICAvLyBUT0RPOiBBZGQgYSB3YXkgdG8gZXhwb3NlIHJlc29sdmVkIG5hbWUgZm9yIGRlYnVnZ2luZ1xuICAgIF9yZXNvbHZlZE5hbWU6IHN0cmluZyB8IG51bGwsXG4gICAgaXNPcHRpb25hbDogdHJ1ZVxuICApOiBudW1iZXIgfCBudWxsO1xuICBoZWxwZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBIZWxwZXJEZWZpbml0aW9uU3RhdGUsXG5cbiAgICAvLyBUT0RPOiBBZGQgYSB3YXkgdG8gZXhwb3NlIHJlc29sdmVkIG5hbWUgZm9yIGRlYnVnZ2luZ1xuICAgIF9yZXNvbHZlZE5hbWU/OiBzdHJpbmcgfCBudWxsXG4gICk6IG51bWJlcjtcbiAgaGVscGVyKFxuICAgIGRlZmluaXRpb25TdGF0ZTogSGVscGVyRGVmaW5pdGlvblN0YXRlLFxuXG4gICAgLy8gVE9ETzogQWRkIGEgd2F5IHRvIGV4cG9zZSByZXNvbHZlZCBuYW1lIGZvciBkZWJ1Z2dpbmdcbiAgICBfcmVzb2x2ZWROYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBpc09wdGlvbmFsPzogdHJ1ZVxuICApOiBudW1iZXIgfCBudWxsIHtcbiAgICBsZXQgaGFuZGxlID0gdGhpcy5oZWxwZXJEZWZpbml0aW9uQ2FjaGUuZ2V0KGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICBpZiAoaGFuZGxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBtYW5hZ2VyT3JIZWxwZXIgPSBnZXRJbnRlcm5hbEhlbHBlck1hbmFnZXIoZGVmaW5pdGlvblN0YXRlLCBpc09wdGlvbmFsKTtcblxuICAgICAgaWYgKG1hbmFnZXJPckhlbHBlciA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLmhlbHBlckRlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBudWxsKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChtYW5hZ2VyT3JIZWxwZXIsICdCVUc6IGV4cGVjdGVkIG1hbmFnZXIgb3IgaGVscGVyJyk7XG5cbiAgICAgIGxldCBoZWxwZXIgPVxuICAgICAgICB0eXBlb2YgbWFuYWdlck9ySGVscGVyID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgPyBtYW5hZ2VyT3JIZWxwZXJcbiAgICAgICAgICA6IG1hbmFnZXJPckhlbHBlci5nZXRIZWxwZXIoZGVmaW5pdGlvblN0YXRlKTtcblxuICAgICAgaGFuZGxlID0gdGhpcy52YWx1ZShoZWxwZXIpO1xuXG4gICAgICB0aGlzLmhlbHBlckRlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBoYW5kbGUpO1xuICAgICAgdGhpcy5oZWxwZXJEZWZpbml0aW9uQ291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlO1xuICB9XG5cbiAgbW9kaWZpZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBNb2RpZmllckRlZmluaXRpb25TdGF0ZSxcbiAgICByZXNvbHZlZE5hbWU6IHN0cmluZyB8IG51bGwsXG4gICAgaXNPcHRpb25hbDogdHJ1ZVxuICApOiBudW1iZXIgfCBudWxsO1xuICBtb2RpZmllcihkZWZpbml0aW9uU3RhdGU6IE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLCByZXNvbHZlZE5hbWU/OiBzdHJpbmcgfCBudWxsKTogbnVtYmVyO1xuICBtb2RpZmllcihcbiAgICBkZWZpbml0aW9uU3RhdGU6IE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLFxuICAgIHJlc29sdmVkTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgaXNPcHRpb25hbD86IHRydWVcbiAgKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgbGV0IGhhbmRsZSA9IHRoaXMubW9kaWZpZXJEZWZpbml0aW9uQ2FjaGUuZ2V0KGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICBpZiAoaGFuZGxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBtYW5hZ2VyID0gZ2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIoZGVmaW5pdGlvblN0YXRlLCBpc09wdGlvbmFsKTtcblxuICAgICAgaWYgKG1hbmFnZXIgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5tb2RpZmllckRlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBudWxsKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGxldCBkZWZpbml0aW9uID0ge1xuICAgICAgICByZXNvbHZlZE5hbWUsXG4gICAgICAgIG1hbmFnZXIsXG4gICAgICAgIHN0YXRlOiBkZWZpbml0aW9uU3RhdGUsXG4gICAgICB9O1xuXG4gICAgICBoYW5kbGUgPSB0aGlzLnZhbHVlKGRlZmluaXRpb24pO1xuXG4gICAgICB0aGlzLm1vZGlmaWVyRGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIGhhbmRsZSk7XG4gICAgICB0aGlzLm1vZGlmaWVyRGVmaW5pdGlvbkNvdW50Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhbmRsZTtcbiAgfVxuXG4gIGNvbXBvbmVudChkZWZpbml0aW9uU3RhdGU6IENvbXBvbmVudERlZmluaXRpb25TdGF0ZSwgb3duZXI6IG9iamVjdCk6IENvbXBvbmVudERlZmluaXRpb247XG4gIGNvbXBvbmVudChcbiAgICBkZWZpbml0aW9uU3RhdGU6IENvbXBvbmVudERlZmluaXRpb25TdGF0ZSxcbiAgICBvd25lcjogb2JqZWN0LFxuICAgIGlzT3B0aW9uYWw/OiB0cnVlXG4gICk6IENvbXBvbmVudERlZmluaXRpb24gfCBudWxsIHtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlLmdldChkZWZpbml0aW9uU3RhdGUpO1xuXG4gICAgaWYgKGRlZmluaXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IG1hbmFnZXIgPSBnZXRJbnRlcm5hbENvbXBvbmVudE1hbmFnZXIoZGVmaW5pdGlvblN0YXRlLCBpc09wdGlvbmFsKTtcblxuICAgICAgaWYgKG1hbmFnZXIgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgbnVsbCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobWFuYWdlciwgJ0JVRzogZXhwZWN0ZWQgbWFuYWdlcicpO1xuXG4gICAgICBsZXQgY2FwYWJpbGl0aWVzID0gY2FwYWJpbGl0eUZsYWdzRnJvbShtYW5hZ2VyLmdldENhcGFiaWxpdGllcyhkZWZpbml0aW9uU3RhdGUpKTtcblxuICAgICAgbGV0IHRlbXBsYXRlRmFjdG9yeSA9IGdldENvbXBvbmVudFRlbXBsYXRlKGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICAgIGxldCBjb21waWxhYmxlID0gbnVsbDtcbiAgICAgIGxldCB0ZW1wbGF0ZTtcblxuICAgICAgaWYgKCFtYW5hZ2VySGFzQ2FwYWJpbGl0eShtYW5hZ2VyLCBjYXBhYmlsaXRpZXMsIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eS5EeW5hbWljTGF5b3V0KSkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlRmFjdG9yeT8uKG93bmVyKSA/PyB0aGlzLmRlZmF1bHRUZW1wbGF0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGVGYWN0b3J5Py4ob3duZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGVtcGxhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHVud3JhcFRlbXBsYXRlKHRlbXBsYXRlKTtcblxuICAgICAgICBjb21waWxhYmxlID0gbWFuYWdlckhhc0NhcGFiaWxpdHkoXG4gICAgICAgICAgbWFuYWdlcixcbiAgICAgICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICAgICAgSW50ZXJuYWxDb21wb25lbnRDYXBhYmlsaXR5LldyYXBwZWRcbiAgICAgICAgKVxuICAgICAgICAgID8gdGVtcGxhdGUuYXNXcmFwcGVkTGF5b3V0KClcbiAgICAgICAgICA6IHRlbXBsYXRlLmFzTGF5b3V0KCk7XG4gICAgICB9XG5cbiAgICAgIGRlZmluaXRpb24gPSB7XG4gICAgICAgIHJlc29sdmVkTmFtZTogbnVsbCxcbiAgICAgICAgaGFuZGxlOiAtMSwgLy8gcmVwbGFjZWQgbW9tZW50YXJpbHlcbiAgICAgICAgbWFuYWdlcixcbiAgICAgICAgY2FwYWJpbGl0aWVzLFxuICAgICAgICBzdGF0ZTogZGVmaW5pdGlvblN0YXRlLFxuICAgICAgICBjb21waWxhYmxlLFxuICAgICAgfTtcblxuICAgICAgZGVmaW5pdGlvbiEuaGFuZGxlID0gdGhpcy52YWx1ZShkZWZpbml0aW9uKTtcbiAgICAgIHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIGRlZmluaXRpb24pO1xuICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHJlc29sdmVkQ29tcG9uZW50KFxuICAgIHJlc29sdmVkRGVmaW5pdGlvbjogUmVzb2x2ZWRDb21wb25lbnREZWZpbml0aW9uLFxuICAgIHJlc29sdmVkTmFtZTogc3RyaW5nXG4gICk6IENvbXBvbmVudERlZmluaXRpb24ge1xuICAgIGxldCBkZWZpbml0aW9uID0gdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuZ2V0KHJlc29sdmVkRGVmaW5pdGlvbik7XG5cbiAgICBpZiAoZGVmaW5pdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgeyBtYW5hZ2VyLCBzdGF0ZSwgdGVtcGxhdGUgfSA9IHJlc29sdmVkRGVmaW5pdGlvbjtcbiAgICAgIGxldCBjYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXR5RmxhZ3NGcm9tKG1hbmFnZXIuZ2V0Q2FwYWJpbGl0aWVzKHJlc29sdmVkRGVmaW5pdGlvbikpO1xuXG4gICAgICBsZXQgY29tcGlsYWJsZSA9IG51bGw7XG5cbiAgICAgIGlmICghbWFuYWdlckhhc0NhcGFiaWxpdHkobWFuYWdlciwgY2FwYWJpbGl0aWVzLCBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHkuRHluYW1pY0xheW91dCkpIHtcbiAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZSA/PyB0aGlzLmRlZmF1bHRUZW1wbGF0ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRlbXBsYXRlICE9PSBudWxsKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdW53cmFwVGVtcGxhdGUodGVtcGxhdGUpO1xuXG4gICAgICAgIGNvbXBpbGFibGUgPSBtYW5hZ2VySGFzQ2FwYWJpbGl0eShcbiAgICAgICAgICBtYW5hZ2VyLFxuICAgICAgICAgIGNhcGFiaWxpdGllcyxcbiAgICAgICAgICBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHkuV3JhcHBlZFxuICAgICAgICApXG4gICAgICAgICAgPyB0ZW1wbGF0ZS5hc1dyYXBwZWRMYXlvdXQoKVxuICAgICAgICAgIDogdGVtcGxhdGUuYXNMYXlvdXQoKTtcbiAgICAgIH1cblxuICAgICAgZGVmaW5pdGlvbiA9IHtcbiAgICAgICAgcmVzb2x2ZWROYW1lLFxuICAgICAgICBoYW5kbGU6IC0xLCAvLyByZXBsYWNlZCBtb21lbnRhcmlseVxuICAgICAgICBtYW5hZ2VyLFxuICAgICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBjb21waWxhYmxlLFxuICAgICAgfTtcblxuICAgICAgZGVmaW5pdGlvbiEuaGFuZGxlID0gdGhpcy52YWx1ZShkZWZpbml0aW9uKTtcbiAgICAgIHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlLnNldChyZXNvbHZlZERlZmluaXRpb24sIGRlZmluaXRpb24pO1xuICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZXhwZWN0KGRlZmluaXRpb24sICdCVUc6IHJlc29sdmVkIGNvbXBvbmVudCBkZWZpbml0aW9ucyBjYW5ub3QgYmUgbnVsbCcpO1xuICB9XG5cbiAgZ2V0VmFsdWU8VD4oaW5kZXg6IG51bWJlcikge1xuICAgIGFzc2VydChpbmRleCA+PSAwLCBgY2Fubm90IGdldCB2YWx1ZSBmb3IgaGFuZGxlOiAke2luZGV4fWApO1xuXG4gICAgcmV0dXJuIHRoaXMudmFsdWVzW2luZGV4XSBhcyBUO1xuICB9XG5cbiAgZ2V0QXJyYXk8VD4oaW5kZXg6IG51bWJlcik6IFRbXSB7XG4gICAgbGV0IHJlaWZpZWRBcnJzID0gdGhpcy5yZWlmaWVkQXJycztcbiAgICBsZXQgcmVpZmllZCA9IHJlaWZpZWRBcnJzW2luZGV4XSBhcyBUW107XG5cbiAgICBpZiAocmVpZmllZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbmFtZXM6IG51bWJlcltdID0gdGhpcy5nZXRWYWx1ZShpbmRleCk7XG4gICAgICByZWlmaWVkID0gbmV3IEFycmF5KG5hbWVzLmxlbmd0aCk7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVpZmllZFtpXSA9IHRoaXMuZ2V0VmFsdWUobmFtZXNbaV0pO1xuICAgICAgfVxuXG4gICAgICByZWlmaWVkQXJyc1tpbmRleF0gPSByZWlmaWVkO1xuICAgIH1cblxuICAgIHJldHVybiByZWlmaWVkO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 |
@@ -156,3 +156,3 @@ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } | ||
_proto3.component = function component(definitionState, isOptional, owner) { | ||
_proto3.component = function component(definitionState, owner, isOptional) { | ||
var _a; | ||
@@ -273,2 +273,2 @@ | ||
}(CompileTimeConstantImpl); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3Byb2dyYW0vbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLFNBQUEsTUFBQSxFQUFBLFNBQUEsRUFBQSxjQUFBLFFBQUEsZUFBQTtBQUNBLFNBQUEsbUJBQUEsRUFBQSxvQkFBQSxFQUFBLDJCQUFBLEVBQUEsd0JBQUEsRUFBQSwwQkFBQSxFQUFBLG9CQUFBLFFBQUEsa0JBQUE7QUFRQSxTQUFBLGVBQUEsUUFBQSwwQkFBQTtBQUNBLFNBQUEsZ0JBQUEsUUFBQSx5QkFBQTtBQUVBLElBQU0sc0JBQXNCLEdBQVksTUFBTSxDQUFOLE1BQUEsQ0FBeEMsRUFBd0MsQ0FBeEM7QUFDQSxJQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBbkMsc0JBQW1DLENBQW5DO0FBQ0EsSUFBTSwrQkFBK0IsR0FBVyxpQkFBaUIsQ0FBakIsT0FBQSxDQUFoRCxzQkFBZ0QsQ0FBaEQ7QUFFQSxXQUFNLHVCQUFOO0FBQUEscUNBQUE7QUFDRTtBQUVVLFNBQUEsTUFBQSxHQUFvQixpQkFBaUIsQ0FBckMsS0FBb0IsRUFBcEI7QUFDQSxTQUFBLFFBQUEsR0FBaUMsSUFBQSxHQUFBLENBQ3pDLEtBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBZ0IsVUFBQSxLQUFBLEVBQUEsS0FBQTtBQUFBLGFBQWtCLENBQUEsS0FBQSxFQUQxQixLQUMwQixDQUFsQjtBQUFBLEtBQWhCLENBRHlDLENBQWpDO0FBaUNYOztBQXJDRDs7QUFBQSxTQVFFLEtBUkYsR0FRRSxlQUFLLE1BQUwsRUFBb0I7QUFDbEIsUUFBSSxRQUFRLEdBQUcsS0FBZixRQUFBO0FBQ0EsUUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFSLEdBQUEsQ0FBWixNQUFZLENBQVo7O0FBRUEsUUFBSSxLQUFLLEtBQVQsU0FBQSxFQUF5QjtBQUN2QixNQUFBLEtBQUssR0FBRyxLQUFBLE1BQUEsQ0FBQSxJQUFBLENBQUEsTUFBQSxJQUFSLENBQUE7QUFDQSxN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VyxDQUF6QixLQUF5QixDQUF6Qjs7QUFFQSxRQUFJLE9BQU8sS0FBWCxTQUFBLEVBQTJCO0FBQ3pCLFVBQUksS0FBSyxHQUFhLEtBQUEsUUFBQSxDQUF0QixLQUFzQixDQUF0QjtBQUNBLE1BQUEsT0FBTyxHQUFHLElBQUEsS0FBQSxDQUFVLEtBQUssQ0FBekIsTUFBVSxDQUFWOztBQUVBLFdBQUssSUFBSSxDQUFDLEdBQVYsQ0FBQSxFQUFnQixDQUFDLEdBQUcsS0FBSyxDQUF6QixNQUFBLEVBQWtDLENBQWxDLEVBQUEsRUFBdUM7QUFDckMsUUFBQSxPQUFPLENBQVAsQ0FBTyxDQUFQLEdBQWEsS0FBQSxRQUFBLENBQWMsS0FBSyxDQUFoQyxDQUFnQyxDQUFuQixDQUFiO0FBQ0Q7O0FBRUQsTUFBQSxXQUFXLENBQVgsS0FBVyxDQUFYLEdBQUEsT0FBQTtBQUNEOztBQUVELFdBQUEsT0FBQTtBQUNELEdBN09IOztBQUFBO0FBQUEsRUFBTSx1QkFBTiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBpbGVUaW1lQ29uc3RhbnRzLFxuICBDb21wb25lbnREZWZpbml0aW9uU3RhdGUsXG4gIENvbnN0YW50UG9vbCxcbiAgSW50ZXJuYWxDb21wb25lbnRDYXBhYmlsaXR5LFxuICBDb21wb25lbnREZWZpbml0aW9uLFxuICBSZXNvbHV0aW9uVGltZUNvbnN0YW50cyxcbiAgUmVzb2x2ZWRDb21wb25lbnREZWZpbml0aW9uLFxuICBSdW50aW1lQ29uc3RhbnRzLFxuICBNb2RpZmllckRlZmluaXRpb25TdGF0ZSxcbiAgSGVscGVyRGVmaW5pdGlvblN0YXRlLFxuICBUZW1wbGF0ZSxcbn0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBhc3NlcnQsIGNvbnN0YW50cywgZXhwZWN0LCB1bndyYXBUZW1wbGF0ZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgY2FwYWJpbGl0eUZsYWdzRnJvbSxcbiAgZ2V0Q29tcG9uZW50VGVtcGxhdGUsXG4gIGdldEludGVybmFsQ29tcG9uZW50TWFuYWdlcixcbiAgZ2V0SW50ZXJuYWxIZWxwZXJNYW5hZ2VyLFxuICBnZXRJbnRlcm5hbE1vZGlmaWVyTWFuYWdlcixcbiAgbWFuYWdlckhhc0NhcGFiaWxpdHksXG59IGZyb20gJ0BnbGltbWVyL21hbmFnZXInO1xuaW1wb3J0IHsgdGVtcGxhdGVGYWN0b3J5IH0gZnJvbSAnQGdsaW1tZXIvb3Bjb2RlLWNvbXBpbGVyJztcbmltcG9ydCB7IERFRkFVTFRfVEVNUExBVEUgfSBmcm9tICcuL3V0aWwvZGVmYXVsdC10ZW1wbGF0ZSc7XG5cbmNvbnN0IFdFTExfS05PV05fRU1QVFlfQVJSQVk6IHVua25vd24gPSBPYmplY3QuZnJlZXplKFtdKTtcbmNvbnN0IFNUQVJURVJfQ09OU1RBTlRTID0gY29uc3RhbnRzKFdFTExfS05PV05fRU1QVFlfQVJSQVkpO1xuY29uc3QgV0VMTF9LTk9XTl9FTVBUWV9BUlJBWV9QT1NJVElPTjogbnVtYmVyID0gU1RBUlRFUl9DT05TVEFOVFMuaW5kZXhPZihXRUxMX0tOT1dOX0VNUFRZX0FSUkFZKTtcblxuZXhwb3J0IGNsYXNzIENvbXBpbGVUaW1lQ29uc3RhbnRJbXBsIGltcGxlbWVudHMgQ29tcGlsZVRpbWVDb25zdGFudHMge1xuICAvLyBgMGAgbWVhbnMgTlVMTFxuXG4gIHByb3RlY3RlZCB2YWx1ZXM6IHVua25vd25bXSA9IFNUQVJURVJfQ09OU1RBTlRTLnNsaWNlKCk7XG4gIHByb3RlY3RlZCBpbmRleE1hcDogTWFwPHVua25vd24sIG51bWJlcj4gPSBuZXcgTWFwKFxuICAgIHRoaXMudmFsdWVzLm1hcCgodmFsdWUsIGluZGV4KSA9PiBbdmFsdWUsIGluZGV4XSlcbiAgKTtcblxuICB2YWx1ZSh2YWx1ZTogdW5rbm93bikge1xuICAgIGxldCBpbmRleE1hcCA9IHRoaXMuaW5kZXhNYXA7XG4gICAgbGV0IGluZGV4ID0gaW5kZXhNYXAuZ2V0KHZhbHVlKTtcblxuICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpbmRleCA9IHRoaXMudmFsdWVzLnB1c2godmFsdWUpIC0gMTtcbiAgICAgIGluZGV4TWFwLnNldCh2YWx1ZSwgaW5kZXgpO1xuICAgIH1cblxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIGFycmF5KHZhbHVlczogdW5rbm93bltdKTogbnVtYmVyIHtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFdFTExfS05PV05fRU1QVFlfQVJSQVlfUE9TSVRJT047XG4gICAgfVxuXG4gICAgbGV0IGhhbmRsZXM6IG51bWJlcltdID0gbmV3IEFycmF5KHZhbHVlcy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhhbmRsZXNbaV0gPSB0aGlzLnZhbHVlKHZhbHVlc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmFsdWUoaGFuZGxlcyk7XG4gIH1cblxuICB0b1Bvb2woKTogQ29uc3RhbnRQb29sIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVDb25zdGFudHNJbXBsIGltcGxlbWVudHMgUnVudGltZUNvbnN0YW50cyB7XG4gIHByb3RlY3RlZCB2YWx1ZXM6IHVua25vd25bXTtcblxuICBjb25zdHJ1Y3Rvcihwb29sOiBDb25zdGFudFBvb2wpIHtcbiAgICB0aGlzLnZhbHVlcyA9IHBvb2w7XG4gIH1cblxuICBnZXRWYWx1ZTxUPihoYW5kbGU6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLnZhbHVlc1toYW5kbGVdIGFzIFQ7XG4gIH1cblxuICBnZXRBcnJheTxUPih2YWx1ZTogbnVtYmVyKTogVFtdIHtcbiAgICBsZXQgaGFuZGxlcyA9IHRoaXMuZ2V0VmFsdWUodmFsdWUpIGFzIG51bWJlcltdO1xuICAgIGxldCByZWlmaWVkOiBUW10gPSBuZXcgQXJyYXkoaGFuZGxlcy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoYW5kbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbiA9IGhhbmRsZXNbaV07XG4gICAgICByZWlmaWVkW2ldID0gdGhpcy5nZXRWYWx1ZShuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVpZmllZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29uc3RhbnRzSW1wbFxuICBleHRlbmRzIENvbXBpbGVUaW1lQ29uc3RhbnRJbXBsXG4gIGltcGxlbWVudHMgUnVudGltZUNvbnN0YW50cywgUmVzb2x1dGlvblRpbWVDb25zdGFudHMge1xuICBwcm90ZWN0ZWQgcmVpZmllZEFycnM6IHsgW2tleTogbnVtYmVyXTogdW5rbm93bltdIH0gPSB7XG4gICAgW1dFTExfS05PV05fRU1QVFlfQVJSQVlfUE9TSVRJT05dOiBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZIGFzIHVua25vd25bXSxcbiAgfTtcblxuICBkZWZhdWx0VGVtcGxhdGU6IFRlbXBsYXRlID0gdGVtcGxhdGVGYWN0b3J5KERFRkFVTFRfVEVNUExBVEUpKCk7XG5cbiAgLy8gVXNlZCBmb3IgdGVzdHMgYW5kIGRlYnVnZ2luZyBwdXJwb3NlcywgYW5kIHRvIGJlIGFibGUgdG8gYW5hbHl6ZSBsYXJnZSBhcHBzXG4gIC8vIFRoaXMgaXMgd2h5IGl0J3MgZW5hYmxlZCBldmVuIGluIHByb2R1Y3Rpb25cbiAgaGVscGVyRGVmaW5pdGlvbkNvdW50ID0gMDtcbiAgbW9kaWZpZXJEZWZpbml0aW9uQ291bnQgPSAwO1xuICBjb21wb25lbnREZWZpbml0aW9uQ291bnQgPSAwO1xuXG4gIHByaXZhdGUgaGVscGVyRGVmaW5pdGlvbkNhY2hlID0gbmV3IFdlYWtNYXA8SGVscGVyRGVmaW5pdGlvblN0YXRlLCBudW1iZXIgfCBudWxsPigpO1xuXG4gIHByaXZhdGUgbW9kaWZpZXJEZWZpbml0aW9uQ2FjaGUgPSBuZXcgV2Vha01hcDxNb2RpZmllckRlZmluaXRpb25TdGF0ZSwgbnVtYmVyIHwgbnVsbD4oKTtcblxuICBwcml2YXRlIGNvbXBvbmVudERlZmluaXRpb25DYWNoZSA9IG5ldyBXZWFrTWFwPFxuICAgIENvbXBvbmVudERlZmluaXRpb25TdGF0ZSB8IFJlc29sdmVkQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgICBDb21wb25lbnREZWZpbml0aW9uIHwgbnVsbFxuICA+KCk7XG5cbiAgaGVscGVyKFxuICAgIGRlZmluaXRpb25TdGF0ZTogSGVscGVyRGVmaW5pdGlvblN0YXRlLFxuXG4gICAgLy8gVE9ETzogQWRkIGEgd2F5IHRvIGV4cG9zZSByZXNvbHZlZCBuYW1lIGZvciBkZWJ1Z2dpbmdcbiAgICBfcmVzb2x2ZWROYW1lOiBzdHJpbmcgfCBudWxsLFxuICAgIGlzT3B0aW9uYWw6IHRydWVcbiAgKTogbnVtYmVyIHwgbnVsbDtcbiAgaGVscGVyKFxuICAgIGRlZmluaXRpb25TdGF0ZTogSGVscGVyRGVmaW5pdGlvblN0YXRlLFxuXG4gICAgLy8gVE9ETzogQWRkIGEgd2F5IHRvIGV4cG9zZSByZXNvbHZlZCBuYW1lIGZvciBkZWJ1Z2dpbmdcbiAgICBfcmVzb2x2ZWROYW1lPzogc3RyaW5nIHwgbnVsbFxuICApOiBudW1iZXI7XG4gIGhlbHBlcihcbiAgICBkZWZpbml0aW9uU3RhdGU6IEhlbHBlckRlZmluaXRpb25TdGF0ZSxcblxuICAgIC8vIFRPRE86IEFkZCBhIHdheSB0byBleHBvc2UgcmVzb2x2ZWQgbmFtZSBmb3IgZGVidWdnaW5nXG4gICAgX3Jlc29sdmVkTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgaXNPcHRpb25hbD86IHRydWVcbiAgKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgbGV0IGhhbmRsZSA9IHRoaXMuaGVscGVyRGVmaW5pdGlvbkNhY2hlLmdldChkZWZpbml0aW9uU3RhdGUpO1xuXG4gICAgaWYgKGhhbmRsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbWFuYWdlck9ySGVscGVyID0gZ2V0SW50ZXJuYWxIZWxwZXJNYW5hZ2VyKGRlZmluaXRpb25TdGF0ZSwgaXNPcHRpb25hbCk7XG5cbiAgICAgIGlmIChtYW5hZ2VyT3JIZWxwZXIgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5oZWxwZXJEZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgbnVsbCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobWFuYWdlck9ySGVscGVyLCAnQlVHOiBleHBlY3RlZCBtYW5hZ2VyIG9yIGhlbHBlcicpO1xuXG4gICAgICBsZXQgaGVscGVyID1cbiAgICAgICAgdHlwZW9mIG1hbmFnZXJPckhlbHBlciA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgID8gbWFuYWdlck9ySGVscGVyXG4gICAgICAgICAgOiBtYW5hZ2VyT3JIZWxwZXIuZ2V0SGVscGVyKGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICAgIGhhbmRsZSA9IHRoaXMudmFsdWUoaGVscGVyKTtcblxuICAgICAgdGhpcy5oZWxwZXJEZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgaGFuZGxlKTtcbiAgICAgIHRoaXMuaGVscGVyRGVmaW5pdGlvbkNvdW50Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhbmRsZTtcbiAgfVxuXG4gIG1vZGlmaWVyKFxuICAgIGRlZmluaXRpb25TdGF0ZTogTW9kaWZpZXJEZWZpbml0aW9uU3RhdGUsXG4gICAgcmVzb2x2ZWROYW1lOiBzdHJpbmcgfCBudWxsLFxuICAgIGlzT3B0aW9uYWw6IHRydWVcbiAgKTogbnVtYmVyIHwgbnVsbDtcbiAgbW9kaWZpZXIoZGVmaW5pdGlvblN0YXRlOiBNb2RpZmllckRlZmluaXRpb25TdGF0ZSwgcmVzb2x2ZWROYW1lPzogc3RyaW5nIHwgbnVsbCk6IG51bWJlcjtcbiAgbW9kaWZpZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBNb2RpZmllckRlZmluaXRpb25TdGF0ZSxcbiAgICByZXNvbHZlZE5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGlzT3B0aW9uYWw/OiB0cnVlXG4gICk6IG51bWJlciB8IG51bGwge1xuICAgIGxldCBoYW5kbGUgPSB0aGlzLm1vZGlmaWVyRGVmaW5pdGlvbkNhY2hlLmdldChkZWZpbml0aW9uU3RhdGUpO1xuXG4gICAgaWYgKGhhbmRsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbWFuYWdlciA9IGdldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyKGRlZmluaXRpb25TdGF0ZSwgaXNPcHRpb25hbCk7XG5cbiAgICAgIGlmIChtYW5hZ2VyID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMubW9kaWZpZXJEZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgbnVsbCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBsZXQgZGVmaW5pdGlvbiA9IHtcbiAgICAgICAgcmVzb2x2ZWROYW1lLFxuICAgICAgICBtYW5hZ2VyLFxuICAgICAgICBzdGF0ZTogZGVmaW5pdGlvblN0YXRlLFxuICAgICAgfTtcblxuICAgICAgaGFuZGxlID0gdGhpcy52YWx1ZShkZWZpbml0aW9uKTtcblxuICAgICAgdGhpcy5tb2RpZmllckRlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBoYW5kbGUpO1xuICAgICAgdGhpcy5tb2RpZmllckRlZmluaXRpb25Db3VudCsrO1xuICAgIH1cblxuICAgIHJldHVybiBoYW5kbGU7XG4gIH1cblxuICBjb21wb25lbnQoZGVmaW5pdGlvblN0YXRlOiBDb21wb25lbnREZWZpbml0aW9uU3RhdGUpOiBDb21wb25lbnREZWZpbml0aW9uO1xuICBjb21wb25lbnQoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBDb21wb25lbnREZWZpbml0aW9uU3RhdGUsXG4gICAgaXNPcHRpb25hbDogdHJ1ZVxuICApOiBDb21wb25lbnREZWZpbml0aW9uIHwgbnVsbDtcbiAgY29tcG9uZW50KFxuICAgIGRlZmluaXRpb25TdGF0ZTogQ29tcG9uZW50RGVmaW5pdGlvblN0YXRlLFxuICAgIGlzT3B0aW9uYWw/OiB0cnVlLFxuICAgIG93bmVyPzogb2JqZWN0XG4gICk6IENvbXBvbmVudERlZmluaXRpb24gfCBudWxsIHtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlLmdldChkZWZpbml0aW9uU3RhdGUpO1xuXG4gICAgaWYgKGRlZmluaXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IG1hbmFnZXIgPSBnZXRJbnRlcm5hbENvbXBvbmVudE1hbmFnZXIoZGVmaW5pdGlvblN0YXRlLCBpc09wdGlvbmFsKTtcblxuICAgICAgaWYgKG1hbmFnZXIgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgbnVsbCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobWFuYWdlciwgJ0JVRzogZXhwZWN0ZWQgbWFuYWdlcicpO1xuXG4gICAgICBsZXQgY2FwYWJpbGl0aWVzID0gY2FwYWJpbGl0eUZsYWdzRnJvbShtYW5hZ2VyLmdldENhcGFiaWxpdGllcyhkZWZpbml0aW9uU3RhdGUpKTtcblxuICAgICAgbGV0IHRlbXBsYXRlRmFjdG9yeSA9IGdldENvbXBvbmVudFRlbXBsYXRlKGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICAgIGxldCBjb21waWxhYmxlID0gbnVsbDtcbiAgICAgIGxldCB0ZW1wbGF0ZTtcblxuICAgICAgaWYgKCFtYW5hZ2VySGFzQ2FwYWJpbGl0eShtYW5hZ2VyLCBjYXBhYmlsaXRpZXMsIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eS5EeW5hbWljTGF5b3V0KSkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlRmFjdG9yeT8uKG93bmVyKSA/PyB0aGlzLmRlZmF1bHRUZW1wbGF0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGVGYWN0b3J5Py4ob3duZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGVtcGxhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHVud3JhcFRlbXBsYXRlKHRlbXBsYXRlKTtcblxuICAgICAgICBjb21waWxhYmxlID0gbWFuYWdlckhhc0NhcGFiaWxpdHkoXG4gICAgICAgICAgbWFuYWdlcixcbiAgICAgICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICAgICAgSW50ZXJuYWxDb21wb25lbnRDYXBhYmlsaXR5LldyYXBwZWRcbiAgICAgICAgKVxuICAgICAgICAgID8gdGVtcGxhdGUuYXNXcmFwcGVkTGF5b3V0KClcbiAgICAgICAgICA6IHRlbXBsYXRlLmFzTGF5b3V0KCk7XG4gICAgICB9XG5cbiAgICAgIGRlZmluaXRpb24gPSB7XG4gICAgICAgIHJlc29sdmVkTmFtZTogbnVsbCxcbiAgICAgICAgaGFuZGxlOiAtMSwgLy8gcmVwbGFjZWQgbW9tZW50YXJpbHlcbiAgICAgICAgbWFuYWdlcixcbiAgICAgICAgY2FwYWJpbGl0aWVzLFxuICAgICAgICBzdGF0ZTogZGVmaW5pdGlvblN0YXRlLFxuICAgICAgICBjb21waWxhYmxlLFxuICAgICAgfTtcblxuICAgICAgZGVmaW5pdGlvbiEuaGFuZGxlID0gdGhpcy52YWx1ZShkZWZpbml0aW9uKTtcbiAgICAgIHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIGRlZmluaXRpb24pO1xuICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHJlc29sdmVkQ29tcG9uZW50KFxuICAgIHJlc29sdmVkRGVmaW5pdGlvbjogUmVzb2x2ZWRDb21wb25lbnREZWZpbml0aW9uLFxuICAgIHJlc29sdmVkTmFtZTogc3RyaW5nXG4gICk6IENvbXBvbmVudERlZmluaXRpb24ge1xuICAgIGxldCBkZWZpbml0aW9uID0gdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuZ2V0KHJlc29sdmVkRGVmaW5pdGlvbik7XG5cbiAgICBpZiAoZGVmaW5pdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgeyBtYW5hZ2VyLCBzdGF0ZSwgdGVtcGxhdGUgfSA9IHJlc29sdmVkRGVmaW5pdGlvbjtcbiAgICAgIGxldCBjYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXR5RmxhZ3NGcm9tKG1hbmFnZXIuZ2V0Q2FwYWJpbGl0aWVzKHJlc29sdmVkRGVmaW5pdGlvbikpO1xuXG4gICAgICBsZXQgY29tcGlsYWJsZSA9IG51bGw7XG5cbiAgICAgIGlmICghbWFuYWdlckhhc0NhcGFiaWxpdHkobWFuYWdlciwgY2FwYWJpbGl0aWVzLCBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHkuRHluYW1pY0xheW91dCkpIHtcbiAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZSA/PyB0aGlzLmRlZmF1bHRUZW1wbGF0ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRlbXBsYXRlICE9PSBudWxsKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdW53cmFwVGVtcGxhdGUodGVtcGxhdGUpO1xuXG4gICAgICAgIGNvbXBpbGFibGUgPSBtYW5hZ2VySGFzQ2FwYWJpbGl0eShcbiAgICAgICAgICBtYW5hZ2VyLFxuICAgICAgICAgIGNhcGFiaWxpdGllcyxcbiAgICAgICAgICBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHkuV3JhcHBlZFxuICAgICAgICApXG4gICAgICAgICAgPyB0ZW1wbGF0ZS5hc1dyYXBwZWRMYXlvdXQoKVxuICAgICAgICAgIDogdGVtcGxhdGUuYXNMYXlvdXQoKTtcbiAgICAgIH1cblxuICAgICAgZGVmaW5pdGlvbiA9IHtcbiAgICAgICAgcmVzb2x2ZWROYW1lLFxuICAgICAgICBoYW5kbGU6IC0xLCAvLyByZXBsYWNlZCBtb21lbnRhcmlseVxuICAgICAgICBtYW5hZ2VyLFxuICAgICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBjb21waWxhYmxlLFxuICAgICAgfTtcblxuICAgICAgZGVmaW5pdGlvbiEuaGFuZGxlID0gdGhpcy52YWx1ZShkZWZpbml0aW9uKTtcbiAgICAgIHRoaXMuY29tcG9uZW50RGVmaW5pdGlvbkNhY2hlLnNldChyZXNvbHZlZERlZmluaXRpb24sIGRlZmluaXRpb24pO1xuICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZXhwZWN0KGRlZmluaXRpb24sICdCVUc6IHJlc29sdmVkIGNvbXBvbmVudCBkZWZpbml0aW9ucyBjYW5ub3QgYmUgbnVsbCcpO1xuICB9XG5cbiAgZ2V0VmFsdWU8VD4oaW5kZXg6IG51bWJlcikge1xuICAgIGFzc2VydChpbmRleCA+PSAwLCBgY2Fubm90IGdldCB2YWx1ZSBmb3IgaGFuZGxlOiAke2luZGV4fWApO1xuXG4gICAgcmV0dXJuIHRoaXMudmFsdWVzW2luZGV4XSBhcyBUO1xuICB9XG5cbiAgZ2V0QXJyYXk8VD4oaW5kZXg6IG51bWJlcik6IFRbXSB7XG4gICAgbGV0IHJlaWZpZWRBcnJzID0gdGhpcy5yZWlmaWVkQXJycztcbiAgICBsZXQgcmVpZmllZCA9IHJlaWZpZWRBcnJzW2luZGV4XSBhcyBUW107XG5cbiAgICBpZiAocmVpZmllZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbmFtZXM6IG51bWJlcltdID0gdGhpcy5nZXRWYWx1ZShpbmRleCk7XG4gICAgICByZWlmaWVkID0gbmV3IEFycmF5KG5hbWVzLmxlbmd0aCk7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVpZmllZFtpXSA9IHRoaXMuZ2V0VmFsdWUobmFtZXNbaV0pO1xuICAgICAgfVxuXG4gICAgICByZWlmaWVkQXJyc1tpbmRleF0gPSByZWlmaWVkO1xuICAgIH1cblxuICAgIHJldHVybiByZWlmaWVkO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3Byb2dyYW0vbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLFNBQUEsTUFBQSxFQUFBLFNBQUEsRUFBQSxjQUFBLFFBQUEsZUFBQTtBQUNBLFNBQUEsbUJBQUEsRUFBQSxvQkFBQSxFQUFBLDJCQUFBLEVBQUEsd0JBQUEsRUFBQSwwQkFBQSxFQUFBLG9CQUFBLFFBQUEsa0JBQUE7QUFRQSxTQUFBLGVBQUEsUUFBQSwwQkFBQTtBQUNBLFNBQUEsZ0JBQUEsUUFBQSx5QkFBQTtBQUVBLElBQU0sc0JBQXNCLEdBQVksTUFBTSxDQUFOLE1BQUEsQ0FBeEMsRUFBd0MsQ0FBeEM7QUFDQSxJQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBbkMsc0JBQW1DLENBQW5DO0FBQ0EsSUFBTSwrQkFBK0IsR0FBVyxpQkFBaUIsQ0FBakIsT0FBQSxDQUFoRCxzQkFBZ0QsQ0FBaEQ7QUFFQSxXQUFNLHVCQUFOO0FBQUEscUNBQUE7QUFDRTtBQUVVLFNBQUEsTUFBQSxHQUFvQixpQkFBaUIsQ0FBckMsS0FBb0IsRUFBcEI7QUFDQSxTQUFBLFFBQUEsR0FBaUMsSUFBQSxHQUFBLENBQ3pDLEtBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBZ0IsVUFBQSxLQUFBLEVBQUEsS0FBQTtBQUFBLGFBQWtCLENBQUEsS0FBQSxFQUQxQixLQUMwQixDQUFsQjtBQUFBLEtBQWhCLENBRHlDLENBQWpDO0FBaUNYOztBQXJDRDs7QUFBQSxTQVFFLEtBUkYsR0FRRSxlQUFLLE1BQUwsRUFBb0I7QUFDbEIsUUFBSSxRQUFRLEdBQUcsS0FBZixRQUFBO0FBQ0EsUUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFSLEdBQUEsQ0FBWixNQUFZLENBQVo7O0FBRUEsUUFBSSxLQUFLLEtBQVQsU0FBQSxFQUF5QjtBQUN2QixNQUFBLEtBQUssR0FBRyxLQUFBLE1BQUEsQ0FBQSxJQUFBLENBQUEsTUFBQSxJQUFSLENBQUE7QUFDQSxN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QVcsQ0FBekIsS0FBeUIsQ0FBekI7O0FBRUEsUUFBSSxPQUFPLEtBQVgsU0FBQSxFQUEyQjtBQUN6QixVQUFJLEtBQUssR0FBYSxLQUFBLFFBQUEsQ0FBdEIsS0FBc0IsQ0FBdEI7QUFDQSxNQUFBLE9BQU8sR0FBRyxJQUFBLEtBQUEsQ0FBVSxLQUFLLENBQXpCLE1BQVUsQ0FBVjs7QUFFQSxXQUFLLElBQUksQ0FBQyxHQUFWLENBQUEsRUFBZ0IsQ0FBQyxHQUFHLEtBQUssQ0FBekIsTUFBQSxFQUFrQyxDQUFsQyxFQUFBLEVBQXVDO0FBQ3JDLFFBQUEsT0FBTyxDQUFQLENBQU8sQ0FBUCxHQUFhLEtBQUEsUUFBQSxDQUFjLEtBQUssQ0FBaEMsQ0FBZ0MsQ0FBbkIsQ0FBYjtBQUNEOztBQUVELE1BQUEsV0FBVyxDQUFYLEtBQVcsQ0FBWCxHQUFBLE9BQUE7QUFDRDs7QUFFRCxXQUFBLE9BQUE7QUFDRCxHQXpPSDs7QUFBQTtBQUFBLEVBQU0sdUJBQU4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21waWxlVGltZUNvbnN0YW50cyxcbiAgQ29tcG9uZW50RGVmaW5pdGlvblN0YXRlLFxuICBDb25zdGFudFBvb2wsXG4gIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eSxcbiAgQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgUmVzb2x1dGlvblRpbWVDb25zdGFudHMsXG4gIFJlc29sdmVkQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgUnVudGltZUNvbnN0YW50cyxcbiAgTW9kaWZpZXJEZWZpbml0aW9uU3RhdGUsXG4gIEhlbHBlckRlZmluaXRpb25TdGF0ZSxcbiAgVGVtcGxhdGUsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgYXNzZXJ0LCBjb25zdGFudHMsIGV4cGVjdCwgdW53cmFwVGVtcGxhdGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIGNhcGFiaWxpdHlGbGFnc0Zyb20sXG4gIGdldENvbXBvbmVudFRlbXBsYXRlLFxuICBnZXRJbnRlcm5hbENvbXBvbmVudE1hbmFnZXIsXG4gIGdldEludGVybmFsSGVscGVyTWFuYWdlcixcbiAgZ2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIsXG4gIG1hbmFnZXJIYXNDYXBhYmlsaXR5LFxufSBmcm9tICdAZ2xpbW1lci9tYW5hZ2VyJztcbmltcG9ydCB7IHRlbXBsYXRlRmFjdG9yeSB9IGZyb20gJ0BnbGltbWVyL29wY29kZS1jb21waWxlcic7XG5pbXBvcnQgeyBERUZBVUxUX1RFTVBMQVRFIH0gZnJvbSAnLi91dGlsL2RlZmF1bHQtdGVtcGxhdGUnO1xuXG5jb25zdCBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZOiB1bmtub3duID0gT2JqZWN0LmZyZWV6ZShbXSk7XG5jb25zdCBTVEFSVEVSX0NPTlNUQU5UUyA9IGNvbnN0YW50cyhXRUxMX0tOT1dOX0VNUFRZX0FSUkFZKTtcbmNvbnN0IFdFTExfS05PV05fRU1QVFlfQVJSQVlfUE9TSVRJT046IG51bWJlciA9IFNUQVJURVJfQ09OU1RBTlRTLmluZGV4T2YoV0VMTF9LTk9XTl9FTVBUWV9BUlJBWSk7XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlVGltZUNvbnN0YW50SW1wbCBpbXBsZW1lbnRzIENvbXBpbGVUaW1lQ29uc3RhbnRzIHtcbiAgLy8gYDBgIG1lYW5zIE5VTExcblxuICBwcm90ZWN0ZWQgdmFsdWVzOiB1bmtub3duW10gPSBTVEFSVEVSX0NPTlNUQU5UUy5zbGljZSgpO1xuICBwcm90ZWN0ZWQgaW5kZXhNYXA6IE1hcDx1bmtub3duLCBudW1iZXI+ID0gbmV3IE1hcChcbiAgICB0aGlzLnZhbHVlcy5tYXAoKHZhbHVlLCBpbmRleCkgPT4gW3ZhbHVlLCBpbmRleF0pXG4gICk7XG5cbiAgdmFsdWUodmFsdWU6IHVua25vd24pIHtcbiAgICBsZXQgaW5kZXhNYXAgPSB0aGlzLmluZGV4TWFwO1xuICAgIGxldCBpbmRleCA9IGluZGV4TWFwLmdldCh2YWx1ZSk7XG5cbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgaW5kZXggPSB0aGlzLnZhbHVlcy5wdXNoKHZhbHVlKSAtIDE7XG4gICAgICBpbmRleE1hcC5zZXQodmFsdWUsIGluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBhcnJheSh2YWx1ZXM6IHVua25vd25bXSk6IG51bWJlciB7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OO1xuICAgIH1cblxuICAgIGxldCBoYW5kbGVzOiBudW1iZXJbXSA9IG5ldyBBcnJheSh2YWx1ZXMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBoYW5kbGVzW2ldID0gdGhpcy52YWx1ZSh2YWx1ZXNbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnZhbHVlKGhhbmRsZXMpO1xuICB9XG5cbiAgdG9Qb29sKCk6IENvbnN0YW50UG9vbCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSdW50aW1lQ29uc3RhbnRzSW1wbCBpbXBsZW1lbnRzIFJ1bnRpbWVDb25zdGFudHMge1xuICBwcm90ZWN0ZWQgdmFsdWVzOiB1bmtub3duW107XG5cbiAgY29uc3RydWN0b3IocG9vbDogQ29uc3RhbnRQb29sKSB7XG4gICAgdGhpcy52YWx1ZXMgPSBwb29sO1xuICB9XG5cbiAgZ2V0VmFsdWU8VD4oaGFuZGxlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXNbaGFuZGxlXSBhcyBUO1xuICB9XG5cbiAgZ2V0QXJyYXk8VD4odmFsdWU6IG51bWJlcik6IFRbXSB7XG4gICAgbGV0IGhhbmRsZXMgPSB0aGlzLmdldFZhbHVlKHZhbHVlKSBhcyBudW1iZXJbXTtcbiAgICBsZXQgcmVpZmllZDogVFtdID0gbmV3IEFycmF5KGhhbmRsZXMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGFuZGxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG4gPSBoYW5kbGVzW2ldO1xuICAgICAgcmVpZmllZFtpXSA9IHRoaXMuZ2V0VmFsdWUobik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlaWZpZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbnN0YW50c0ltcGxcbiAgZXh0ZW5kcyBDb21waWxlVGltZUNvbnN0YW50SW1wbFxuICBpbXBsZW1lbnRzIFJ1bnRpbWVDb25zdGFudHMsIFJlc29sdXRpb25UaW1lQ29uc3RhbnRzIHtcbiAgcHJvdGVjdGVkIHJlaWZpZWRBcnJzOiB7IFtrZXk6IG51bWJlcl06IHVua25vd25bXSB9ID0ge1xuICAgIFtXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OXTogV0VMTF9LTk9XTl9FTVBUWV9BUlJBWSBhcyB1bmtub3duW10sXG4gIH07XG5cbiAgZGVmYXVsdFRlbXBsYXRlOiBUZW1wbGF0ZSA9IHRlbXBsYXRlRmFjdG9yeShERUZBVUxUX1RFTVBMQVRFKSgpO1xuXG4gIC8vIFVzZWQgZm9yIHRlc3RzIGFuZCBkZWJ1Z2dpbmcgcHVycG9zZXMsIGFuZCB0byBiZSBhYmxlIHRvIGFuYWx5emUgbGFyZ2UgYXBwc1xuICAvLyBUaGlzIGlzIHdoeSBpdCdzIGVuYWJsZWQgZXZlbiBpbiBwcm9kdWN0aW9uXG4gIGhlbHBlckRlZmluaXRpb25Db3VudCA9IDA7XG4gIG1vZGlmaWVyRGVmaW5pdGlvbkNvdW50ID0gMDtcbiAgY29tcG9uZW50RGVmaW5pdGlvbkNvdW50ID0gMDtcblxuICBwcml2YXRlIGhlbHBlckRlZmluaXRpb25DYWNoZSA9IG5ldyBXZWFrTWFwPEhlbHBlckRlZmluaXRpb25TdGF0ZSwgbnVtYmVyIHwgbnVsbD4oKTtcblxuICBwcml2YXRlIG1vZGlmaWVyRGVmaW5pdGlvbkNhY2hlID0gbmV3IFdlYWtNYXA8TW9kaWZpZXJEZWZpbml0aW9uU3RhdGUsIG51bWJlciB8IG51bGw+KCk7XG5cbiAgcHJpdmF0ZSBjb21wb25lbnREZWZpbml0aW9uQ2FjaGUgPSBuZXcgV2Vha01hcDxcbiAgICBDb21wb25lbnREZWZpbml0aW9uU3RhdGUgfCBSZXNvbHZlZENvbXBvbmVudERlZmluaXRpb24sXG4gICAgQ29tcG9uZW50RGVmaW5pdGlvbiB8IG51bGxcbiAgPigpO1xuXG4gIGhlbHBlcihcbiAgICBkZWZpbml0aW9uU3RhdGU6IEhlbHBlckRlZmluaXRpb25TdGF0ZSxcblxuICAgIC8vIFRPRE86IEFkZCBhIHdheSB0byBleHBvc2UgcmVzb2x2ZWQgbmFtZSBmb3IgZGVidWdnaW5nXG4gICAgX3Jlc29sdmVkTmFtZTogc3RyaW5nIHwgbnVsbCxcbiAgICBpc09wdGlvbmFsOiB0cnVlXG4gICk6IG51bWJlciB8IG51bGw7XG4gIGhlbHBlcihcbiAgICBkZWZpbml0aW9uU3RhdGU6IEhlbHBlckRlZmluaXRpb25TdGF0ZSxcblxuICAgIC8vIFRPRE86IEFkZCBhIHdheSB0byBleHBvc2UgcmVzb2x2ZWQgbmFtZSBmb3IgZGVidWdnaW5nXG4gICAgX3Jlc29sdmVkTmFtZT86IHN0cmluZyB8IG51bGxcbiAgKTogbnVtYmVyO1xuICBoZWxwZXIoXG4gICAgZGVmaW5pdGlvblN0YXRlOiBIZWxwZXJEZWZpbml0aW9uU3RhdGUsXG5cbiAgICAvLyBUT0RPOiBBZGQgYSB3YXkgdG8gZXhwb3NlIHJlc29sdmVkIG5hbWUgZm9yIGRlYnVnZ2luZ1xuICAgIF9yZXNvbHZlZE5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGlzT3B0aW9uYWw/OiB0cnVlXG4gICk6IG51bWJlciB8IG51bGwge1xuICAgIGxldCBoYW5kbGUgPSB0aGlzLmhlbHBlckRlZmluaXRpb25DYWNoZS5nZXQoZGVmaW5pdGlvblN0YXRlKTtcblxuICAgIGlmIChoYW5kbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IG1hbmFnZXJPckhlbHBlciA9IGdldEludGVybmFsSGVscGVyTWFuYWdlcihkZWZpbml0aW9uU3RhdGUsIGlzT3B0aW9uYWwpO1xuXG4gICAgICBpZiAobWFuYWdlck9ySGVscGVyID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuaGVscGVyRGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIG51bGwpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0KG1hbmFnZXJPckhlbHBlciwgJ0JVRzogZXhwZWN0ZWQgbWFuYWdlciBvciBoZWxwZXInKTtcblxuICAgICAgbGV0IGhlbHBlciA9XG4gICAgICAgIHR5cGVvZiBtYW5hZ2VyT3JIZWxwZXIgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICA/IG1hbmFnZXJPckhlbHBlclxuICAgICAgICAgIDogbWFuYWdlck9ySGVscGVyLmdldEhlbHBlcihkZWZpbml0aW9uU3RhdGUpO1xuXG4gICAgICBoYW5kbGUgPSB0aGlzLnZhbHVlKGhlbHBlcik7XG5cbiAgICAgIHRoaXMuaGVscGVyRGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIGhhbmRsZSk7XG4gICAgICB0aGlzLmhlbHBlckRlZmluaXRpb25Db3VudCsrO1xuICAgIH1cblxuICAgIHJldHVybiBoYW5kbGU7XG4gIH1cblxuICBtb2RpZmllcihcbiAgICBkZWZpbml0aW9uU3RhdGU6IE1vZGlmaWVyRGVmaW5pdGlvblN0YXRlLFxuICAgIHJlc29sdmVkTmFtZTogc3RyaW5nIHwgbnVsbCxcbiAgICBpc09wdGlvbmFsOiB0cnVlXG4gICk6IG51bWJlciB8IG51bGw7XG4gIG1vZGlmaWVyKGRlZmluaXRpb25TdGF0ZTogTW9kaWZpZXJEZWZpbml0aW9uU3RhdGUsIHJlc29sdmVkTmFtZT86IHN0cmluZyB8IG51bGwpOiBudW1iZXI7XG4gIG1vZGlmaWVyKFxuICAgIGRlZmluaXRpb25TdGF0ZTogTW9kaWZpZXJEZWZpbml0aW9uU3RhdGUsXG4gICAgcmVzb2x2ZWROYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBpc09wdGlvbmFsPzogdHJ1ZVxuICApOiBudW1iZXIgfCBudWxsIHtcbiAgICBsZXQgaGFuZGxlID0gdGhpcy5tb2RpZmllckRlZmluaXRpb25DYWNoZS5nZXQoZGVmaW5pdGlvblN0YXRlKTtcblxuICAgIGlmIChoYW5kbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IG1hbmFnZXIgPSBnZXRJbnRlcm5hbE1vZGlmaWVyTWFuYWdlcihkZWZpbml0aW9uU3RhdGUsIGlzT3B0aW9uYWwpO1xuXG4gICAgICBpZiAobWFuYWdlciA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLm1vZGlmaWVyRGVmaW5pdGlvbkNhY2hlLnNldChkZWZpbml0aW9uU3RhdGUsIG51bGwpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgbGV0IGRlZmluaXRpb24gPSB7XG4gICAgICAgIHJlc29sdmVkTmFtZSxcbiAgICAgICAgbWFuYWdlcixcbiAgICAgICAgc3RhdGU6IGRlZmluaXRpb25TdGF0ZSxcbiAgICAgIH07XG5cbiAgICAgIGhhbmRsZSA9IHRoaXMudmFsdWUoZGVmaW5pdGlvbik7XG5cbiAgICAgIHRoaXMubW9kaWZpZXJEZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgaGFuZGxlKTtcbiAgICAgIHRoaXMubW9kaWZpZXJEZWZpbml0aW9uQ291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlO1xuICB9XG5cbiAgY29tcG9uZW50KGRlZmluaXRpb25TdGF0ZTogQ29tcG9uZW50RGVmaW5pdGlvblN0YXRlLCBvd25lcjogb2JqZWN0KTogQ29tcG9uZW50RGVmaW5pdGlvbjtcbiAgY29tcG9uZW50KFxuICAgIGRlZmluaXRpb25TdGF0ZTogQ29tcG9uZW50RGVmaW5pdGlvblN0YXRlLFxuICAgIG93bmVyOiBvYmplY3QsXG4gICAgaXNPcHRpb25hbD86IHRydWVcbiAgKTogQ29tcG9uZW50RGVmaW5pdGlvbiB8IG51bGwge1xuICAgIGxldCBkZWZpbml0aW9uID0gdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuZ2V0KGRlZmluaXRpb25TdGF0ZSk7XG5cbiAgICBpZiAoZGVmaW5pdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbWFuYWdlciA9IGdldEludGVybmFsQ29tcG9uZW50TWFuYWdlcihkZWZpbml0aW9uU3RhdGUsIGlzT3B0aW9uYWwpO1xuXG4gICAgICBpZiAobWFuYWdlciA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNvbXBvbmVudERlZmluaXRpb25DYWNoZS5zZXQoZGVmaW5pdGlvblN0YXRlLCBudWxsKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChtYW5hZ2VyLCAnQlVHOiBleHBlY3RlZCBtYW5hZ2VyJyk7XG5cbiAgICAgIGxldCBjYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXR5RmxhZ3NGcm9tKG1hbmFnZXIuZ2V0Q2FwYWJpbGl0aWVzKGRlZmluaXRpb25TdGF0ZSkpO1xuXG4gICAgICBsZXQgdGVtcGxhdGVGYWN0b3J5ID0gZ2V0Q29tcG9uZW50VGVtcGxhdGUoZGVmaW5pdGlvblN0YXRlKTtcblxuICAgICAgbGV0IGNvbXBpbGFibGUgPSBudWxsO1xuICAgICAgbGV0IHRlbXBsYXRlO1xuXG4gICAgICBpZiAoIW1hbmFnZXJIYXNDYXBhYmlsaXR5KG1hbmFnZXIsIGNhcGFiaWxpdGllcywgSW50ZXJuYWxDb21wb25lbnRDYXBhYmlsaXR5LkR5bmFtaWNMYXlvdXQpKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGVGYWN0b3J5Py4ob3duZXIpID8/IHRoaXMuZGVmYXVsdFRlbXBsYXRlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZUZhY3Rvcnk/Lihvd25lcik7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZW1wbGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdW53cmFwVGVtcGxhdGUodGVtcGxhdGUpO1xuXG4gICAgICAgIGNvbXBpbGFibGUgPSBtYW5hZ2VySGFzQ2FwYWJpbGl0eShcbiAgICAgICAgICBtYW5hZ2VyLFxuICAgICAgICAgIGNhcGFiaWxpdGllcyxcbiAgICAgICAgICBJbnRlcm5hbENvbXBvbmVudENhcGFiaWxpdHkuV3JhcHBlZFxuICAgICAgICApXG4gICAgICAgICAgPyB0ZW1wbGF0ZS5hc1dyYXBwZWRMYXlvdXQoKVxuICAgICAgICAgIDogdGVtcGxhdGUuYXNMYXlvdXQoKTtcbiAgICAgIH1cblxuICAgICAgZGVmaW5pdGlvbiA9IHtcbiAgICAgICAgcmVzb2x2ZWROYW1lOiBudWxsLFxuICAgICAgICBoYW5kbGU6IC0xLCAvLyByZXBsYWNlZCBtb21lbnRhcmlseVxuICAgICAgICBtYW5hZ2VyLFxuICAgICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICAgIHN0YXRlOiBkZWZpbml0aW9uU3RhdGUsXG4gICAgICAgIGNvbXBpbGFibGUsXG4gICAgICB9O1xuXG4gICAgICBkZWZpbml0aW9uIS5oYW5kbGUgPSB0aGlzLnZhbHVlKGRlZmluaXRpb24pO1xuICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuc2V0KGRlZmluaXRpb25TdGF0ZSwgZGVmaW5pdGlvbik7XG4gICAgICB0aGlzLmNvbXBvbmVudERlZmluaXRpb25Db3VudCsrO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgcmVzb2x2ZWRDb21wb25lbnQoXG4gICAgcmVzb2x2ZWREZWZpbml0aW9uOiBSZXNvbHZlZENvbXBvbmVudERlZmluaXRpb24sXG4gICAgcmVzb2x2ZWROYW1lOiBzdHJpbmdcbiAgKTogQ29tcG9uZW50RGVmaW5pdGlvbiB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB0aGlzLmNvbXBvbmVudERlZmluaXRpb25DYWNoZS5nZXQocmVzb2x2ZWREZWZpbml0aW9uKTtcblxuICAgIGlmIChkZWZpbml0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCB7IG1hbmFnZXIsIHN0YXRlLCB0ZW1wbGF0ZSB9ID0gcmVzb2x2ZWREZWZpbml0aW9uO1xuICAgICAgbGV0IGNhcGFiaWxpdGllcyA9IGNhcGFiaWxpdHlGbGFnc0Zyb20obWFuYWdlci5nZXRDYXBhYmlsaXRpZXMocmVzb2x2ZWREZWZpbml0aW9uKSk7XG5cbiAgICAgIGxldCBjb21waWxhYmxlID0gbnVsbDtcblxuICAgICAgaWYgKCFtYW5hZ2VySGFzQ2FwYWJpbGl0eShtYW5hZ2VyLCBjYXBhYmlsaXRpZXMsIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eS5EeW5hbWljTGF5b3V0KSkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlID8/IHRoaXMuZGVmYXVsdFRlbXBsYXRlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGVtcGxhdGUgIT09IG51bGwpIHtcbiAgICAgICAgdGVtcGxhdGUgPSB1bndyYXBUZW1wbGF0ZSh0ZW1wbGF0ZSk7XG5cbiAgICAgICAgY29tcGlsYWJsZSA9IG1hbmFnZXJIYXNDYXBhYmlsaXR5KFxuICAgICAgICAgIG1hbmFnZXIsXG4gICAgICAgICAgY2FwYWJpbGl0aWVzLFxuICAgICAgICAgIEludGVybmFsQ29tcG9uZW50Q2FwYWJpbGl0eS5XcmFwcGVkXG4gICAgICAgIClcbiAgICAgICAgICA/IHRlbXBsYXRlLmFzV3JhcHBlZExheW91dCgpXG4gICAgICAgICAgOiB0ZW1wbGF0ZS5hc0xheW91dCgpO1xuICAgICAgfVxuXG4gICAgICBkZWZpbml0aW9uID0ge1xuICAgICAgICByZXNvbHZlZE5hbWUsXG4gICAgICAgIGhhbmRsZTogLTEsIC8vIHJlcGxhY2VkIG1vbWVudGFyaWx5XG4gICAgICAgIG1hbmFnZXIsXG4gICAgICAgIGNhcGFiaWxpdGllcyxcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIGNvbXBpbGFibGUsXG4gICAgICB9O1xuXG4gICAgICBkZWZpbml0aW9uIS5oYW5kbGUgPSB0aGlzLnZhbHVlKGRlZmluaXRpb24pO1xuICAgICAgdGhpcy5jb21wb25lbnREZWZpbml0aW9uQ2FjaGUuc2V0KHJlc29sdmVkRGVmaW5pdGlvbiwgZGVmaW5pdGlvbik7XG4gICAgICB0aGlzLmNvbXBvbmVudERlZmluaXRpb25Db3VudCsrO1xuICAgIH1cblxuICAgIHJldHVybiBleHBlY3QoZGVmaW5pdGlvbiwgJ0JVRzogcmVzb2x2ZWQgY29tcG9uZW50IGRlZmluaXRpb25zIGNhbm5vdCBiZSBudWxsJyk7XG4gIH1cblxuICBnZXRWYWx1ZTxUPihpbmRleDogbnVtYmVyKSB7XG4gICAgYXNzZXJ0KGluZGV4ID49IDAsIGBjYW5ub3QgZ2V0IHZhbHVlIGZvciBoYW5kbGU6ICR7aW5kZXh9YCk7XG5cbiAgICByZXR1cm4gdGhpcy52YWx1ZXNbaW5kZXhdIGFzIFQ7XG4gIH1cblxuICBnZXRBcnJheTxUPihpbmRleDogbnVtYmVyKTogVFtdIHtcbiAgICBsZXQgcmVpZmllZEFycnMgPSB0aGlzLnJlaWZpZWRBcnJzO1xuICAgIGxldCByZWlmaWVkID0gcmVpZmllZEFycnNbaW5kZXhdIGFzIFRbXTtcblxuICAgIGlmIChyZWlmaWVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBuYW1lczogbnVtYmVyW10gPSB0aGlzLmdldFZhbHVlKGluZGV4KTtcbiAgICAgIHJlaWZpZWQgPSBuZXcgQXJyYXkobmFtZXMubGVuZ3RoKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZWlmaWVkW2ldID0gdGhpcy5nZXRWYWx1ZShuYW1lc1tpXSk7XG4gICAgICB9XG5cbiAgICAgIHJlaWZpZWRBcnJzW2luZGV4XSA9IHJlaWZpZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlaWZpZWQ7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= |
@@ -30,4 +30,3 @@ import { CompileTimeConstants, ComponentDefinitionState, ConstantPool, ComponentDefinition, ResolutionTimeConstants, ResolvedComponentDefinition, RuntimeConstants, ModifierDefinitionState, HelperDefinitionState, Template } from '@glimmer/interfaces'; | ||
modifier(definitionState: ModifierDefinitionState, resolvedName?: string | null): number; | ||
component(definitionState: ComponentDefinitionState): ComponentDefinition; | ||
component(definitionState: ComponentDefinitionState, isOptional: true): ComponentDefinition | null; | ||
component(definitionState: ComponentDefinitionState, owner: object): ComponentDefinition; | ||
resolvedComponent(resolvedDefinition: ResolvedComponentDefinition, resolvedName: string): ComponentDefinition; | ||
@@ -34,0 +33,0 @@ getValue<T>(index: number): T; |
{ | ||
"name": "@glimmer/program", | ||
"version": "0.75.0", | ||
"version": "0.76.0", | ||
"repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/program", | ||
"dependencies": { | ||
"@glimmer/env": "0.1.7", | ||
"@glimmer/util": "0.75.0", | ||
"@glimmer/opcode-compiler": "0.75.0", | ||
"@glimmer/manager": "0.75.0", | ||
"@glimmer/interfaces": "0.75.0", | ||
"@glimmer/encoder": "0.75.0" | ||
"@glimmer/util": "0.76.0", | ||
"@glimmer/opcode-compiler": "0.76.0", | ||
"@glimmer/manager": "0.76.0", | ||
"@glimmer/interfaces": "0.76.0", | ||
"@glimmer/encoder": "0.76.0" | ||
}, | ||
"devDependencies": { | ||
"@glimmer/local-debug-flags": "0.75.0" | ||
"@glimmer/local-debug-flags": "0.76.0" | ||
}, | ||
@@ -16,0 +16,0 @@ "main": "dist/commonjs/es2017/index.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
313858
-0.32%2789
-0.07%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated
Updated
Updated
Updated