Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@glimmer/runtime

Package Overview
Dependencies
Maintainers
12
Versions
289
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/runtime - npm Package Compare versions

Comparing version 0.50.1 to 0.50.2

30

dist/commonjs/es2017/lib/compiled/opcodes/expressions.js

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

var _assert = require("./assert");
var _symbols = require("../../symbols");

@@ -128,3 +126,3 @@

if (block) {
if (block && !isUndefinedReference(block)) {
stack.push(block[2]);

@@ -140,15 +138,20 @@ stack.push(block[1]);

function isUndefinedReference(input) {
false && (0, _util.assert)(Array.isArray(input) || input === _references.UNDEFINED_REFERENCE, 'a reference other than UNDEFINED_REFERENCE is illegal here');
return input === _references.UNDEFINED_REFERENCE;
}
_opcodes.APPEND_OPCODES.add(26
/* HasBlock */
, vm => {
let block = vm.stack.pop(); // TODO: We check if the block is null or UNDEFINED_REFERENCE here, but it should
// really only check if the block is null. The UNDEFINED_REFERENCE use case is for
// when we try to invoke a curry-component directly as a variable:
//
// <Foo as |bar|>{{bar}}</Foo>
//
// This code path does not work the same way as most components. In the future,
// we should make sure that it does, so things are setup correctly.
let {
stack
} = vm;
let block = stack.pop();
vm.stack.push(block === null || block === _references.UNDEFINED_REFERENCE ? _references.FALSE_REFERENCE : _references.TRUE_REFERENCE);
if (block && !isUndefinedReference(block)) {
stack.push(_references.TRUE_REFERENCE);
} else {
stack.push(_references.FALSE_REFERENCE);
}
});

@@ -163,3 +166,2 @@

let table = vm.stack.pop();
false && (0, _util.assert)(table === null || table && typeof table === 'object' && Array.isArray(table.parameters), (0, _assert.stackAssert)('Option<BlockSymbolTable>', table));
let hasBlockParams = table && table.parameters.length;

@@ -183,2 +185,2 @@ vm.stack.push(hasBlockParams ? _references.TRUE_REFERENCE : _references.FALSE_REFERENCE);

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2NvbXBpbGVkL29wY29kZXMvZXhwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFRQTs7QUFJQSx3QkFBQSxHQUFBLENBQWtCO0FBQUE7QUFBbEIsRUFBOEIsQ0FBQSxFQUFBLEVBQUs7QUFBRSxFQUFBLEdBQUcsRUFBRTtBQUFQLENBQUwsS0FBd0I7QUFDcEQsTUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFkLEtBQUE7QUFDQSxNQUFJLE1BQU0sR0FBUyxFQUFFLENBQUYsT0FBQSxDQUFBLFFBQUEsQ0FBQSxPQUFBLENBQW5CLE1BQW1CLENBQW5CO0FBQ0EsTUFBSSxJQUFJLEdBQVMsS0FBSyxDQUF0QixHQUFpQixFQUFqQjtBQUNBLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQSxJQUFBLEVBQWxCLEVBQWtCLENBQWxCO0FBRUEsRUFBQSxFQUFFLENBQUYsU0FBQSxDQUFBLE9BQUEsRUFBQSxLQUFBO0FBTkYsQ0FBQTs7QUFTQSx3QkFBQSxHQUFBLENBQWtCO0FBQUE7QUFBbEIsRUFBbUMsQ0FBQSxFQUFBLEVBQUs7QUFBRSxFQUFBLEdBQUcsRUFBRTtBQUFQLENBQUwsS0FBd0I7QUFDekQsTUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFGLGtCQUFBLENBQVgsTUFBVyxDQUFYO0FBQ0EsRUFBQSxFQUFFLENBQUYsS0FBQSxDQUFBLElBQUEsQ0FBQSxJQUFBO0FBRkYsQ0FBQTs7QUFLQSx3QkFBQSxHQUFBLENBQWtCO0FBQUE7QUFBbEIsRUFBbUMsQ0FBQSxFQUFBLEVBQUs7QUFBRSxFQUFBLEdBQUcsRUFBRTtBQUFQLENBQUwsS0FBd0I7QUFDekQsTUFBSSxJQUFJLEdBQVMsRUFBRSxDQUFGLEtBQUEsQ0FBakIsR0FBaUIsRUFBakI7QUFDQSxFQUFBLEVBQUUsQ0FBRixLQUFBLEdBQUEsVUFB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QVo7QUFDQSxNQUFJLEtBQUssR0FBRyxFQUFFLENBQUYsS0FBQSxDQUFaLEdBQVksRUFBWjtBQUdBLE1BQUksS0FBSyxHQUFTLEVBQUUsQ0FBRixLQUFBLENBQWxCLEdBQWtCLEVBQWxCO0FBTnlDLFdBUXpDLGtCQUNFLEtBQUssS0FBTCxJQUFBLElBQW1CLEtBQUssSUFBSSxPQUFBLEtBQUEsS0FBVCxRQUFBLElBQXNDLEtBQUssQ0FBTCxPQUFBLENBQWMsS0FBSyxDQUR4RSxVQUNxRCxDQUQzRCxFQUVFLHlCQUFXLDBCQUFYLEVBVnVDLEtBVXZDLENBRkYsQ0FSeUM7QUFhekMsTUFBSSxjQUFjLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBTCxVQUFBLENBQTlCLE1BQUE7QUFDQSxFQUFBLEVBQUUsQ0FBRixLQUFBLENBQUEsSUFBQSxDQUFjLGNBQWMsR0FBQSwwQkFBQSxHQUE1QiwyQkFBQTtBQWRGLENBQUE7O0FBaUJBLHdCQUFBLEdBQUEsQ0FBa0I7QUFBQTtBQUFsQixFQUE4QixDQUFBLEVBQUEsRUFBSztBQUFFLEVBQUEsR0FBRyxFQUFFO0FBQVAsQ0FBTCxLQUF1QjtBQUNuRCxNQUFJLEdBQUcsR0FBMkMsSUFBQSxLQUFBLENBQWxELEtBQWtELENBQWxEOztBQUVBLE9BQUssSUFBSSxDQUFDLEdBQVYsS0FBQSxFQUFvQixDQUFDLEdBQXJCLENBQUEsRUFBMkIsQ0FBM0IsRUFBQSxFQUFnQztBQUM5QixRQUFJLE1BQU0sR0FBRyxDQUFDLEdBQWQsQ0FBQTtBQUNBLElBQUEsR0FBRyxDQUFILE1BQUcsQ0FBSCxHQUFvQixFQUFFLENBQUYsS0FBQSxDQUFwQixHQUFvQixFQUFwQjtBQUNEOztBQUVELEVBQUEsRUFBRSxDQUFGLEtBQUEsQ0FBQSxJQUFBLENBQWMsSUFBQSx1QkFBQSxDQUFkLEdBQWMsQ0FBZDtBQVJGLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcHRpb24sIE9wLCBKaXRTY29wZUJsb2NrLCBBb3RTY29wZUJsb2NrLCBWTSBhcyBQdWJsaWNWTSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyAkdjAgfSBmcm9tICdAZ2xpbW1lci92bSc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgRkFMU0VfUkVGRVJFTkNFLCBUUlVFX1JFRkVSRU5DRSwgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgQ29uY2F0UmVmZXJlbmNlIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMvY29uY2F0JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgY2hlY2ssIENoZWNrT3B0aW9uLCBDaGVja0hhbmRsZSwgQ2hlY2tCbG9ja1N5bWJvbFRhYmxlLCBDaGVja09yIH0gZnJvbSAnQGdsaW1tZXIvZGVidWcnO1xuaW1wb3J0IHsgc3RhY2tBc3NlcnQgfSBmcm9tICcuL2Fzc2VydCc7XG5pbXBvcnQge1xuICBDaGVja0FyZ3VtZW50cyxcbiAgQ2hlY2tQYXRoUmVmZXJlbmNlLFxuICBDaGVja0NvbXBpbGFibGVCbG9jayxcbiAgQ2hlY2tTY29wZSxcbiAgQ2hlY2tIZWxwZXIsXG59IGZyb20gJy4vLWRlYnVnLXN0cmlwJztcbmltcG9ydCB7IENPTlNUQU5UUyB9IGZyb20gJy4uLy4uL3N5bWJvbHMnO1xuXG5leHBvcnQgdHlwZSBGdW5jdGlvbkV4cHJlc3Npb248VD4gPSAodm06IFB1YmxpY1ZNKSA9PiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPFQ+O1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSGVscGVyLCAodm0sIHsgb3AxOiBoYW5kbGUgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IGhlbHBlciA9IGNoZWNrKHZtLnJ1bnRpbWUucmVzb2x2ZXIucmVzb2x2ZShoYW5kbGUpLCBDaGVja0hlbHBlcik7XG4gIGxldCBhcmdzID0gY2hlY2soc3RhY2sucG9wKCksIENoZWNrQXJndW1lbnRzKTtcbiAgbGV0IHZhbHVlID0gaGVscGVyKGFyZ3MsIHZtKTtcblxuICB2bS5sb2FkVmFsdWUoJHYwLCB2YWx1ZSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkdldFZhcmlhYmxlLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICBsZXQgZXhwciA9IHZtLnJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2wpO1xuICB2bS5zdGFjay5wdXNoKGV4cHIpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5TZXRWYXJpYWJsZSwgKHZtLCB7IG9wMTogc3ltYm9sIH0pID0+IHtcbiAgbGV0IGV4cHIgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tQYXRoUmVmZXJlbmNlKTtcbiAgdm0uc2NvcGUoKS5iaW5kU3ltYm9sKHN5bWJvbCwgZXhwcik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKFxuICBPcC5TZXRKaXRCbG9jayxcbiAgKHZtLCB7IG9wMTogc3ltYm9sIH0pID0+IHtcbiAgICBsZXQgaGFuZGxlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrQ29tcGlsYWJsZUJsb2NrKSk7XG4gICAgbGV0IHNjb3BlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrU2NvcGUpO1xuICAgIGxldCB0YWJsZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja09wdGlvbihDaGVja0Jsb2NrU3ltYm9sVGFibGUpKTtcblxuICAgIGxldCBibG9jazogT3B0aW9uPEppdFNjb3BlQmxvY2s+ID0gdGFibGUgPyBbaGFuZGxlISwgc2NvcGUsIHRhYmxlXSA6IG51bGw7XG5cbiAgICB2bS5zY29wZSgpLmJpbmRCbG9jayhzeW1ib2wsIGJsb2NrKTtcbiAgfSxcbiAgJ2ppdCdcbik7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5TZXRBb3RCbG9jaywgKHZtLCB7IG9wMTogc3ltYm9sIH0pID0+IHtcbiAgbGV0IGhhbmRsZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja09wdGlvbihDaGVja0hhbmRsZSkpO1xuICBsZXQgc2NvcGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tTY29wZSk7XG4gIGxldCB0YWJsZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja09wdGlvbihDaGVja0Jsb2NrU3ltYm9sVGFibGUpKTtcblxuICBsZXQgYmxvY2s6IE9wdGlvbjxBb3RTY29wZUJsb2NrPiA9IHRhYmxlID8gW2hhbmRsZSEsIHNjb3BlLCB0YWJsZV0gOiBudWxsO1xuXG4gIHZtLnNjb3BlKCkuYmluZEJsb2NrKHN5bWJvbCwgYmxvY2spO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5SZXNvbHZlTWF5YmVMb2NhbCwgKHZtLCB7IG9wMTogX25hbWUgfSkgPT4ge1xuICBsZXQgbmFtZSA9IHZtW0NPTlNUQU5UU10uZ2V0U3RyaW5nKF9uYW1lKTtcbiAgbGV0IGxvY2FscyA9IHZtLnNjb3BlKCkuZ2V0UGFydGlhbE1hcCgpITtcblxuICBsZXQgcmVmID0gbG9jYWxzW25hbWVdO1xuICBpZiAocmVmID09PSB1bmRlZmluZWQpIHtcbiAgICByZWYgPSB2bS5nZXRTZWxmKCkuZ2V0KG5hbWUpO1xuICB9XG5cbiAgdm0uc3RhY2sucHVzaChyZWYpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Sb290U2NvcGUsICh2bSwgeyBvcDE6IHN5bWJvbHMgfSkgPT4ge1xuICB2bS5wdXNoUm9vdFNjb3BlKHN5bWJvbHMpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRQcm9wZXJ0eSwgKHZtLCB7IG9wMTogX2tleSB9KSA9PiB7XG4gIGxldCBrZXkgPSB2bVtDT05TVEFOVFNdLmdldFN0cmluZyhfa2V5KTtcbiAgbGV0IGV4cHIgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tQYXRoUmVmZXJlbmNlKTtcbiAgdm0uc3RhY2sucHVzaChleHByLmdldChrZXkpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuR2V0QmxvY2ssICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gIGxldCB7IHN0YWNrIH0gPSB2bTtcbiAgbGV0IGJsb2NrID0gdm0uc2NvcGUoKS5nZXRCbG9jayhfYmxvY2spO1xuXG4gIHN0YWNrLnB1c2goYmxvY2spO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5KaXRTcHJlYWRCbG9jaywgdm0gPT4ge1xuICBsZXQgeyBzdGFjayB9ID0gdm07XG4gIGxldCBibG9jayA9IHN0YWNrLnBvcDxKaXRTY29wZUJsb2NrPigpO1xuXG4gIGlmIChibG9jaykge1xuICAgIHN0YWNrLnB1c2goYmxvY2tbMl0pO1xuICAgIHN0YWNrLnB1c2goYmxvY2tbMV0pO1xuICAgIHN0YWNrLnB1c2goYmxvY2tbMF0pO1xuICB9IGVsc2Uge1xuICAgIHN0YWNrLnB1c2gobnVsbCk7XG4gICAgc3RhY2sucHVzaChudWxsKTtcbiAgICBzdGFjay5wdXNoKG51bGwpO1xuICB9XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkhhc0Jsb2NrLCB2bSA9PiB7XG4gIGxldCBibG9jayA9IHZtLnN0YWNrLnBvcCgpO1xuXG4gIC8vIFRPRE86IFdlIGNoZWNrIGlmIHRoZSBibG9jayBpcyBudWxsIG9yIFVOREVGSU5FRF9SRUZFUkVOQ0UgaGVyZSwgYnV0IGl0IHNob3VsZFxuICAvLyByZWFsbHkgb25seSBjaGVjayBpZiB0aGUgYmxvY2sgaXMgbnVsbC4gVGhlIFVOREVGSU5FRF9SRUZFUkVOQ0UgdXNlIGNhc2UgaXMgZm9yXG4gIC8vIHdoZW4gd2UgdHJ5IHRvIGludm9rZSBhIGN1cnJ5LWNvbXBvbmVudCBkaXJlY3RseSBhcyBhIHZhcmlhYmxlOlxuICAvL1xuICAvLyA8Rm9vIGFzIHxiYXJ8Pnt7YmFyfX08L0Zvbz5cbiAgLy9cbiAgLy8gVGhpcyBjb2RlIHBhdGggZG9lcyBub3Qgd29yayB0aGUgc2FtZSB3YXkgYXMgbW9zdCBjb21wb25lbnRzLiBJbiB0aGUgZnV0dXJlLFxuICAvLyB3ZSBzaG91bGQgbWFrZSBzdXJlIHRoYXQgaXQgZG9lcywgc28gdGhpbmdzIGFyZSBzZXR1cCBjb3JyZWN0bHkuXG4gIHZtLnN0YWNrLnB1c2goYmxvY2sgPT09IG51bGwgfHwgYmxvY2sgPT09IFVOREVGSU5FRF9SRUZFUkVOQ0UgPyBGQUxTRV9SRUZFUkVOQ0UgOiBUUlVFX1JFRkVSRU5DRSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkhhc0Jsb2NrUGFyYW1zLCB2bSA9PiB7XG4gIC8vIEZJWE1FKG1tdW4pOiBzaG91bGQgb25seSBuZWVkIHRvIHB1c2ggdGhlIHN5bWJvbCB0YWJsZVxuICBsZXQgYmxvY2sgPSB2bS5zdGFjay5wb3AoKTtcbiAgbGV0IHNjb3BlID0gdm0uc3RhY2sucG9wKCk7XG4gIGNoZWNrKGJsb2NrLCBDaGVja09wdGlvbihDaGVja09yKENoZWNrSGFuZGxlLCBDaGVja0NvbXBpbGFibGVCbG9jaykpKTtcbiAgY2hlY2soc2NvcGUsIENoZWNrT3B0aW9uKENoZWNrU2NvcGUpKTtcbiAgbGV0IHRhYmxlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrQmxvY2tTeW1ib2xUYWJsZSkpO1xuXG4gIGFzc2VydChcbiAgICB0YWJsZSA9PT0gbnVsbCB8fCAodGFibGUgJiYgdHlwZW9mIHRhYmxlID09PSAnb2JqZWN0JyAmJiBBcnJheS5pc0FycmF5KHRhYmxlLnBhcmFtZXRlcnMpKSxcbiAgICBzdGFja0Fzc2VydCgnT3B0aW9uPEJsb2NrU3ltYm9sVGFibGU+JywgdGFibGUpXG4gICk7XG5cbiAgbGV0IGhhc0Jsb2NrUGFyYW1zID0gdGFibGUgJiYgdGFibGUucGFyYW1ldGVycy5sZW5ndGg7XG4gIHZtLnN0YWNrLnB1c2goaGFzQmxvY2tQYXJhbXMgPyBUUlVFX1JFRkVSRU5DRSA6IEZBTFNFX1JFRkVSRU5DRSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNvbmNhdCwgKHZtLCB7IG9wMTogY291bnQgfSkgPT4ge1xuICBsZXQgb3V0OiBBcnJheTxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+PiA9IG5ldyBBcnJheShjb3VudCk7XG5cbiAgZm9yIChsZXQgaSA9IGNvdW50OyBpID4gMDsgaS0tKSB7XG4gICAgbGV0IG9mZnNldCA9IGkgLSAxO1xuICAgIG91dFtvZmZzZXRdID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrUGF0aFJlZmVyZW5jZSk7XG4gIH1cblxuICB2bS5zdGFjay5wdXNoKG5ldyBDb25jYXRSZWZlcmVuY2Uob3V0KSk7XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2NvbXBpbGVkL29wY29kZXMvZXhwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFrQkE7O0FBSUEsd0JBQUEsR0FBQSxDQUFrQjtBQUFBO0FBQWxCLEVBQThCLENBQUEsRUFBQSxFQUFLO0FBQUUsRUFBQSxHQUFHLEVBQUU7QUFBUCxDQUFMLEtBQXdCO0FBQ3BELE1BQUksS0FBSyxHQUFHLEVBQUUsQ0FBZCxLQUFBO0FBQ0EsTUFBSSxNQUFNLEdBQVMsRUFBRSxDQUFGLE9BQUEsQ0FBQSxRQUFBLENBQUEsT0FBQSxDQUFuQixNQUFtQixDQUFuQjtBQUNBLE1BQUksSUFBSSxHQUFTLEtBQUssQ0FBdEIsR0FBaUIsRUFBakI7QUFDQSxNQUFJLEtBQUssR0FBRyxNQUFNLENBQUEsSUFBQSxFQUFsQixFQUFrQixDQUFsQjtBQUVBLEVBQUEsRUFBRSxDQUFGLFNBQUEsQ0FBQSxPQUFBLEVBQUEsS0FBQTtBQU5GLENBQUE7O0FBU0Esd0JBQUEsR0FBQSxDQUFrQjtBQUFBO0FBQWxCLEVBQW1DLENBQUEsRUFBQSxFQUFLO0FBQUUsRUFBQSxHQUFHLEVBQUU7QUFBUCxDQUFMLEtBQXdCO0FBQ3pELE1BQUksSUFBSSxHQUFHLEVBQUUsQ0FBRixrQkFBQSxDQUFYLE1BQVcsQ0FBWDtBQUNBLEVBQUEsRUFBRSxDQUFGLEtBQUEsQ0FBQSxJQUFBLENBQUEsSUFBQTtBQUZGLENBQUE7O0FBS0Esd0JBQUEsR0FBQSxDQUFrQjtBQUFBO0FBQWxCLEVBQW1DLENBQUEsRUFBQSxFQUFLO0FBQUUsRUFBQSxHQUFHLEVBQUU7QUFBUCxDQUFMLEtBQXdCO0FBQ3pELE1BQUksSUFBSSxHQUFTLEVBQUUsQ0FBRixLQUFBLENBQWpCLEdBQWlCLEVBQWpCO0FBQ0EsRUFBQSxFQUFFLENBQUYsS0FBQSxHQUFBLFVBQUEsQ0FBQSxNQUFBLEVBQUEsSUFBQTtBQUZGLENBQUE7O0FBS0Esd0JBQUEsR0FBQSxDQUFrQjtBQUFBO0FBQWxCLEVBRUUsQ0FBQSxFQUFBLEVBQUs7QUFBRSxFQUFBLEdBQUcsRUFBRTtBQUFQLENBQUwsS0FBd0I7QUFDdEIsTUFBSSxNQUFNLEdBQVMsRUFBRSxDQUFGLEtBQUEsQ0FBbkIsR0FBbUIsRUFBbkI7QUFDQSxNQUFJLEtBQUssR0FBUyxFQUFFLENBQUYsS0FBQSxDQUFsQixHQUFrQixFQUFsQjtBQUNBLE1BQUksS0FBSyxHQUFTLEVBQUUsQ0FBRixLQUFBLENBQWxCLEdBQWtCLEVBQWxCO0FBRUEsTUFBSSxLQUFLLEdBQTBCLEtBQUssR0FBRyxDQUFBLE1BQUEsRUFBQSxLQUFBLEVBQUgsS0FBRyxDQUFILEdBQXhDLElBQUE7QUFFQSxFQUFBLEVBQUUsQ0FBRixLQUFBLEdBQUEsU0FBQSxDQUFBLE1BQUEsRUFBQSxLQUFBO0FBVEosQ0FBQSxFQUFBLEtBQUE7O0FBY0Esd0JBQUEsR0FBQSxDQUFrQjtBQUFBO0FBQWxCLEVBQW1DLENBQUEsRUFBQSxFQUFLO0FBQUUsRUFBQSxHQUFHLEVBQUU7QUFBUCxDQUFMLEtBQXdCO0FBQ3pELE1BQUksTUFBTSxHQUFTLEVBQUUsQ0FBRixLQUFBLENBQW5CLEdBQW1CLEVBQW5CO0FBQ0EsTUFBSSxLQUFLLEdBQVMsRUFBRSxDQUFGLEtBQUEsQ0FBbEIsR0FBa0IsRUFBbEI7QUFDQSxNQUFJLEtBQUssR0FBUyxFQUFFLENBQUYsS0FBQSxDQUFsQixHQUFrQixFQUFsQjtBQUVBLE1BQUksS0FBSyxHQUEwQixLQUFLLEdBQUcsQ0FBQSxNQUFBLEVBQUEsS0FBQSxFQUFILEtBQUcsQ0FBSCxHQUF4QyxJQUFBO0FBRUEsRUFBQSxFQUFFLENBQUYsS0FBQSxHQUFBLFNBQUEsQ0FBQSxNQUFBLEVBQUEsS0FBQTtBQVBGLENBQUE7O0FBVUEsd0JBQUEsR0FBQSxDQUFrQjtBQUFBO0FBQWxCLEVBQXlDLENBQUEsRUFBQSxFQUFLO0FBQUUsRUFBQSxHQUFHLEVBQUU7QUFBUCxDQUFMLEtBQXVCO0FBQzlELE1BQUksSUFBSSxHQUFHLEVBQUUsQ0FBRixrQkFBRSxDQUFGLENBQUEsU0FBQSxDQUFYLEtBQVcsQ0FBWDs7QUFDQSxNQUFJLE1BQU0sR0FBRyxFQUFFLENBQUYsS0FBQSxHQUFiLGFBQWEsRUFBYjtBQUVBLE1BQUksR0FBRyxHQUFHLE1BQU0sQ0FBaEIsSUFBZ0IsQ0FBaEI7O0FBQ0EsTUFBSSxHQUFHLEtBQVAsU0FBQSxFQUF1QjtBQUNyQixJQUFBLEdBQUcsR0FBRyxFQUFFLENBQUYsT0FBQSxHQUFBLEdBQUEsQ0FBTixJQUFNLENBQU47QUFDRDs7QUFFRCxFQUFBLEVBQUUsQ0FBRixLQUFBLENBQUEsSUFBQSxDQUFBLEdBQUE7QUFURixDQUFBOztBQVlBLHdCQUFBLEdBQUEsQ0FBa0I7QUFBQTtBQUFsQixFQUFpQyxDQUFBLEVBQUEsRUFBSztBQUFFLEVBQUEsR0FBRyxFQUFFO0FBQVAsQ0FBTCxLQUF5QjtBQUN4RCxFQUFBLEVBQUUsQ0FBRixhQUFBLENBQUEsT0FBQTtBQURGLENBQUE7O0FBSUEsd0JBQUEsR0FBQSxDQUFrQjtBQUFBO0FBQWxCLEVBQW1DLENBQUEsRUFBQSxFQUFLO0FBQUUsRUFBQSxHQUFHLEVBQUU7QUFBUCxDQUFMLEtBQXNCO0FBQ3ZELE1BQUksR0FBRyxHQUFHLEVBQUUsQ0FBRixrQkFBRSxDQUFGLENBQUEsU0FBQSxDQUFWLElBQVUsQ0FBVjs7QUFDQSxNQUFJLElBQUksR0FBUyxFQUFFLENBQUYsS0FBQSxDQUFqQixHQUFpQixFQUFqQjtBQUNBLEVBQUEsRUFBRSxDQUFGLEtBQUEsQ0FBQSxJQUFBLENBQWMsSUFBSSxDQUFKLEdBQUEsQ0FBZCxHQUFjLENBQWQ7QUFIRixDQUFBOztBQU1BLHdCQUFBLEdBQUEsQ0FBa0I7QUFBQTtBQUFsQixFQUFnQyxDQUFBLEVBQUEsRUFBSztBQUFFLEVBQUEsR0FBRyxFQUFFO0FBQVAsQ0FBTCxLQUF3QjtBQUN0RCxNQUFJO0FBQUUsSUFBQTtBQUFGLE1BQUosRUFBQTtBQUNBLE1BQUksS0FBSyxHQUFHLEVBQUUsQ0FBRixLQUFBLEdBQUEsUUFBQSxDQUFaLE1BQVksQ0FBWjtBQUVBLEVBQUEsS0FBSyxDQUFMLElBQUEsQ0FBQSxLQUFBO0FBSkYsQ0FBQTs7QUFPQSx3QkFBQSxHQUFBLENBQWtCO0FBQUE7QUFBbEIsRUFBc0MsRUFBRSxJQUFHO0FBQ3pDLE1BQUk7QUFBRSxJQUFBO0FBQUYsTUFBSixFQUFBO0FBQ0EsTUFBSSxLQUFLLEdBQVMsS0FBSyxDQUF2QixHQUFrQixFQUFsQjs7QUFFQSxNQUFJLEtBQUssSUFBSSxDQUFDLG9CQUFvQixDQUFsQyxLQUFrQyxDQUFsQyxFQUEyQztBQUN6QyxJQUFBLEtBQUssQ0FBTCxJQUFBLENBQVcsS0FBSyxDQUFoQixDQUFnQixDQUFoQjtBQUNBLElBQUEsS0FBSyxDQUFMLElBQUEsQ0FBVyxLQUFLLENBQWhCLENBQWdCLENBQWhCO0FBQ0EsSUFBQSxLQUFLLENBQUwsSUFBQSxDQUFXLEtBQUssQ0FBaEIsQ0FBZ0IsQ0FBaEI7QUFIRixHQUFBLE1BSU87QUFDTCxJQUFBLEtBQUssQ0FBTCxJQUFBLENBQUEsSUFBQTtBQUNBLElBQUEsS0FBSyxDQUFMLElBQUEsQ0FBQSxJQUFBO0FBQ0EsSUFBQSxLQUFLLENBQUwsSUFBQSxDQUFBLElBQUE7QUFDRDtBQVpILENBQUE7O0FBZUEsU0FBQSxvQkFBQSxDQUFBLEtBQUEsRUFBOEQ7QUFBQSxXQUM1RCxrQkFDRSxLQUFLLENBQUwsT0FBQSxDQUFBLEtBQUEsS0FBd0IsS0FBSyxLQUR6QiwrQkFBTixFQUQ0RCw0REFDNUQsQ0FENEQ7QUFLNUQsU0FBTyxLQUFLLEtBQVosK0JBQUE7QUFDRDs7QUFFRCx3QkFBQSxHQUFBLENBQWtCO0FBQUE7QUFBbEIsRUFBZ0MsRUFBRSxJQUFHO0FBQ25DLE1BQUk7QUFBRSxJQUFBO0FBQUYsTUFBSixFQUFBO0FBQ0EsTUFBSSxLQUFLLEdBQVMsS0FBSyxDQUF2QixHQUFrQixFQUFsQjs7QUFFQSxNQUFJLEtBQUssSUFBSSxDQUFDLG9CQUFvQixDQUFsQyxLQUFrQyxDQUFsQyxFQUEyQztBQUN6QyxJQUFBLEtBQUssQ0FBTCxJQUFBLENBQUEsMEJBQUE7QUFERixHQUFBLE1BRU87QUFDTCxJQUFBLEtBQUssQ0FBTCxJQUFBLENBQUEsMkJBQUE7QUFDRDtBQVJILENBQUE7O0FBV0Esd0JBQUEsR0FBQSxDQUFrQjtBQUFBO0FBQWxCLEVBQXNDLEVBQUUsSUFBRztBQUN6QztBQUNBLE1BQUksS0FBSyxHQUFHLEVBQUUsQ0FBRixLQUFBLENBQVosR0FBWSxFQUFaO0FBQ0EsTUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFGLEtBQUEsQ0FBWixHQUFZLEVBQVo7QUFJQSxNQUFJLEtBQUssR0FBUyxFQUFFLENBQUYsS0FBQSxDQUFsQixHQUFrQixFQUFsQjtBQUVBLE1BQUksY0FBYyxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUwsVUFBQSxDQUE5QixNQUFBO0FBQ0EsRUFBQSxFQUFFLENBQUYsS0FBQSxDQUFBLElBQUEsQ0FBYyxjQUFjLEdBQUEsMEJBQUEsR0FBNUIsMkJBQUE7QUFWRixDQUFBOztBQWFBLHdCQUFBLEdBQUEsQ0FBa0I7QUFBQTtBQUFsQixFQUE4QixDQUFBLEVBQUEsRUFBSztBQUFFLEVBQUEsR0FBRyxFQUFFO0FBQVAsQ0FBTCxLQUF1QjtBQUNuRCxNQUFJLEdBQUcsR0FBMkMsSUFBQSxLQUFBLENBQWxELEtBQWtELENBQWxEOztBQUVBLE9BQUssSUFBSSxDQUFDLEdBQVYsS0FBQSxFQUFvQixDQUFDLEdBQXJCLENBQUEsRUFBMkIsQ0FBM0IsRUFBQSxFQUFnQztBQUM5QixRQUFJLE1BQU0sR0FBRyxDQUFDLEdBQWQsQ0FBQTtBQUNBLElBQUEsR0FBRyxDQUFILE1BQUcsQ0FBSCxHQUFvQixFQUFFLENBQUYsS0FBQSxDQUFwQixHQUFvQixFQUFwQjtBQUNEOztBQUVELEVBQUEsRUFBRSxDQUFGLEtBQUEsQ0FBQSxJQUFBLENBQWMsSUFBQSx1QkFBQSxDQUFkLEdBQWMsQ0FBZDtBQVJGLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcHRpb24sIE9wLCBKaXRTY29wZUJsb2NrLCBBb3RTY29wZUJsb2NrLCBWTSBhcyBQdWJsaWNWTSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7ICR2MCB9IGZyb20gJ0BnbGltbWVyL3ZtJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBGQUxTRV9SRUZFUkVOQ0UsIFRSVUVfUkVGRVJFTkNFLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb25jYXRSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy9jb25jYXQnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBjaGVjayxcbiAgQ2hlY2tPcHRpb24sXG4gIENoZWNrSGFuZGxlLFxuICBDaGVja0Jsb2NrU3ltYm9sVGFibGUsXG4gIENoZWNrT3IsXG4gIENoZWNrTWF5YmUsXG59IGZyb20gJ0BnbGltbWVyL2RlYnVnJztcbmltcG9ydCB7XG4gIENoZWNrQXJndW1lbnRzLFxuICBDaGVja1BhdGhSZWZlcmVuY2UsXG4gIENoZWNrQ29tcGlsYWJsZUJsb2NrLFxuICBDaGVja1Njb3BlLFxuICBDaGVja0hlbHBlcixcbiAgQ2hlY2tVbmRlZmluZWRSZWZlcmVuY2UsXG4gIENoZWNrU2NvcGVCbG9jayxcbn0gZnJvbSAnLi8tZGVidWctc3RyaXAnO1xuaW1wb3J0IHsgQ09OU1RBTlRTIH0gZnJvbSAnLi4vLi4vc3ltYm9scyc7XG5cbmV4cG9ydCB0eXBlIEZ1bmN0aW9uRXhwcmVzc2lvbjxUPiA9ICh2bTogUHVibGljVk0pID0+IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8VD47XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5IZWxwZXIsICh2bSwgeyBvcDE6IGhhbmRsZSB9KSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgaGVscGVyID0gY2hlY2sodm0ucnVudGltZS5yZXNvbHZlci5yZXNvbHZlKGhhbmRsZSksIENoZWNrSGVscGVyKTtcbiAgbGV0IGFyZ3MgPSBjaGVjayhzdGFjay5wb3AoKSwgQ2hlY2tBcmd1bWVudHMpO1xuICBsZXQgdmFsdWUgPSBoZWxwZXIoYXJncywgdm0pO1xuXG4gIHZtLmxvYWRWYWx1ZSgkdjAsIHZhbHVlKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuR2V0VmFyaWFibGUsICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gIGxldCBleHByID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCk7XG4gIHZtLnN0YWNrLnB1c2goZXhwcik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlNldFZhcmlhYmxlLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICBsZXQgZXhwciA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1BhdGhSZWZlcmVuY2UpO1xuICB2bS5zY29wZSgpLmJpbmRTeW1ib2woc3ltYm9sLCBleHByKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoXG4gIE9wLlNldEppdEJsb2NrLFxuICAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICAgIGxldCBoYW5kbGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tDb21waWxhYmxlQmxvY2spKTtcbiAgICBsZXQgc2NvcGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tTY29wZSk7XG4gICAgbGV0IHRhYmxlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrQmxvY2tTeW1ib2xUYWJsZSkpO1xuXG4gICAgbGV0IGJsb2NrOiBPcHRpb248Sml0U2NvcGVCbG9jaz4gPSB0YWJsZSA/IFtoYW5kbGUhLCBzY29wZSwgdGFibGVdIDogbnVsbDtcblxuICAgIHZtLnNjb3BlKCkuYmluZEJsb2NrKHN5bWJvbCwgYmxvY2spO1xuICB9LFxuICAnaml0J1xuKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlNldEFvdEJsb2NrLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICBsZXQgaGFuZGxlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrSGFuZGxlKSk7XG4gIGxldCBzY29wZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1Njb3BlKTtcbiAgbGV0IHRhYmxlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrQmxvY2tTeW1ib2xUYWJsZSkpO1xuXG4gIGxldCBibG9jazogT3B0aW9uPEFvdFNjb3BlQmxvY2s+ID0gdGFibGUgPyBbaGFuZGxlISwgc2NvcGUsIHRhYmxlXSA6IG51bGw7XG5cbiAgdm0uc2NvcGUoKS5iaW5kQmxvY2soc3ltYm9sLCBibG9jayk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlJlc29sdmVNYXliZUxvY2FsLCAodm0sIHsgb3AxOiBfbmFtZSB9KSA9PiB7XG4gIGxldCBuYW1lID0gdm1bQ09OU1RBTlRTXS5nZXRTdHJpbmcoX25hbWUpO1xuICBsZXQgbG9jYWxzID0gdm0uc2NvcGUoKS5nZXRQYXJ0aWFsTWFwKCkhO1xuXG4gIGxldCByZWYgPSBsb2NhbHNbbmFtZV07XG4gIGlmIChyZWYgPT09IHVuZGVmaW5lZCkge1xuICAgIHJlZiA9IHZtLmdldFNlbGYoKS5nZXQobmFtZSk7XG4gIH1cblxuICB2bS5zdGFjay5wdXNoKHJlZik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlJvb3RTY29wZSwgKHZtLCB7IG9wMTogc3ltYm9scyB9KSA9PiB7XG4gIHZtLnB1c2hSb290U2NvcGUoc3ltYm9scyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkdldFByb3BlcnR5LCAodm0sIHsgb3AxOiBfa2V5IH0pID0+IHtcbiAgbGV0IGtleSA9IHZtW0NPTlNUQU5UU10uZ2V0U3RyaW5nKF9rZXkpO1xuICBsZXQgZXhwciA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1BhdGhSZWZlcmVuY2UpO1xuICB2bS5zdGFjay5wdXNoKGV4cHIuZ2V0KGtleSkpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRCbG9jaywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgbGV0IHsgc3RhY2sgfSA9IHZtO1xuICBsZXQgYmxvY2sgPSB2bS5zY29wZSgpLmdldEJsb2NrKF9ibG9jayk7XG5cbiAgc3RhY2sucHVzaChibG9jayk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkppdFNwcmVhZEJsb2NrLCB2bSA9PiB7XG4gIGxldCB7IHN0YWNrIH0gPSB2bTtcbiAgbGV0IGJsb2NrID0gY2hlY2soc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrT3IoQ2hlY2tTY29wZUJsb2NrLCBDaGVja1VuZGVmaW5lZFJlZmVyZW5jZSkpKTtcblxuICBpZiAoYmxvY2sgJiYgIWlzVW5kZWZpbmVkUmVmZXJlbmNlKGJsb2NrKSkge1xuICAgIHN0YWNrLnB1c2goYmxvY2tbMl0pO1xuICAgIHN0YWNrLnB1c2goYmxvY2tbMV0pO1xuICAgIHN0YWNrLnB1c2goYmxvY2tbMF0pO1xuICB9IGVsc2Uge1xuICAgIHN0YWNrLnB1c2gobnVsbCk7XG4gICAgc3RhY2sucHVzaChudWxsKTtcbiAgICBzdGFjay5wdXNoKG51bGwpO1xuICB9XG59KTtcblxuZnVuY3Rpb24gaXNVbmRlZmluZWRSZWZlcmVuY2UoaW5wdXQ6IEppdFNjb3BlQmxvY2sgfCBSZWZlcmVuY2UpOiBpbnB1dCBpcyBSZWZlcmVuY2Uge1xuICBhc3NlcnQoXG4gICAgQXJyYXkuaXNBcnJheShpbnB1dCkgfHwgaW5wdXQgPT09IFVOREVGSU5FRF9SRUZFUkVOQ0UsXG4gICAgJ2EgcmVmZXJlbmNlIG90aGVyIHRoYW4gVU5ERUZJTkVEX1JFRkVSRU5DRSBpcyBpbGxlZ2FsIGhlcmUnXG4gICk7XG4gIHJldHVybiBpbnB1dCA9PT0gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbn1cblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkhhc0Jsb2NrLCB2bSA9PiB7XG4gIGxldCB7IHN0YWNrIH0gPSB2bTtcbiAgbGV0IGJsb2NrID0gY2hlY2soc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrT3IoQ2hlY2tTY29wZUJsb2NrLCBDaGVja1VuZGVmaW5lZFJlZmVyZW5jZSkpKTtcblxuICBpZiAoYmxvY2sgJiYgIWlzVW5kZWZpbmVkUmVmZXJlbmNlKGJsb2NrKSkge1xuICAgIHN0YWNrLnB1c2goVFJVRV9SRUZFUkVOQ0UpO1xuICB9IGVsc2Uge1xuICAgIHN0YWNrLnB1c2goRkFMU0VfUkVGRVJFTkNFKTtcbiAgfVxufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5IYXNCbG9ja1BhcmFtcywgdm0gPT4ge1xuICAvLyBGSVhNRShtbXVuKTogc2hvdWxkIG9ubHkgbmVlZCB0byBwdXNoIHRoZSBzeW1ib2wgdGFibGVcbiAgbGV0IGJsb2NrID0gdm0uc3RhY2sucG9wKCk7XG4gIGxldCBzY29wZSA9IHZtLnN0YWNrLnBvcCgpO1xuXG4gIGNoZWNrKGJsb2NrLCBDaGVja01heWJlKENoZWNrT3IoQ2hlY2tIYW5kbGUsIENoZWNrQ29tcGlsYWJsZUJsb2NrKSkpO1xuICBjaGVjayhzY29wZSwgQ2hlY2tNYXliZShDaGVja1Njb3BlKSk7XG4gIGxldCB0YWJsZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja01heWJlKENoZWNrQmxvY2tTeW1ib2xUYWJsZSkpO1xuXG4gIGxldCBoYXNCbG9ja1BhcmFtcyA9IHRhYmxlICYmIHRhYmxlLnBhcmFtZXRlcnMubGVuZ3RoO1xuICB2bS5zdGFjay5wdXNoKGhhc0Jsb2NrUGFyYW1zID8gVFJVRV9SRUZFUkVOQ0UgOiBGQUxTRV9SRUZFUkVOQ0UpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Db25jYXQsICh2bSwgeyBvcDE6IGNvdW50IH0pID0+IHtcbiAgbGV0IG91dDogQXJyYXk8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4gPSBuZXcgQXJyYXkoY291bnQpO1xuXG4gIGZvciAobGV0IGkgPSBjb3VudDsgaSA+IDA7IGktLSkge1xuICAgIGxldCBvZmZzZXQgPSBpIC0gMTtcbiAgICBvdXRbb2Zmc2V0XSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1BhdGhSZWZlcmVuY2UpO1xuICB9XG5cbiAgdm0uc3RhY2sucHVzaChuZXcgQ29uY2F0UmVmZXJlbmNlKG91dCkpO1xufSk7XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -483,5 +483,10 @@ "use strict";

function toSymbolName(name) {
return `&${name}`;
}
class BlockArgumentsImpl {
constructor() {
this.internalValues = null;
this._symbolNames = null;
this.internalTag = null;

@@ -498,2 +503,3 @@ this.names = _util.EMPTY_ARRAY;

this.length = 0;
this._symbolNames = null;
this.internalTag = _validator.CONSTANT_TAG;

@@ -508,2 +514,3 @@ this.internalValues = _util.EMPTY_ARRAY;

this.length = length;
this._symbolNames = null;

@@ -559,2 +566,12 @@ if (length === 0) {

get symbolNames() {
let symbolNames = this._symbolNames;
if (symbolNames === null) {
symbolNames = this._symbolNames = this.names.map(toSymbolName);
}
return symbolNames;
}
}

@@ -605,2 +622,2 @@

exports.EMPTY_ARGS = EMPTY_ARGS;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2FyZ3VtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBb0JBOztBQUNBOztBQU9BOztBQUNBOztBQUNBOztBQUVBOzs7Ozs7O0FBUU0sTUFBQSxlQUFBLENBQXNCO0FBQTVCLEVBQUEsV0FBQSxHQUFBO0FBQ1UsU0FBQSxLQUFBLEdBQUEsSUFBQTtBQUNELFNBQUEsVUFBQSxHQUFhLElBQWIsdUJBQWEsRUFBYjtBQUNBLFNBQUEsS0FBQSxHQUFRLElBQVIsa0JBQVEsRUFBUjtBQUNBLFNBQUEsTUFBQSxHQUFTLElBQVQsa0JBQVMsRUFBVDtBQTJGUjs7QUF6RkMsRUFBQSxLQUFLLENBQUEsS0FBQSxFQUF1QjtBQUMxQixRQUFJLElBQUksR0FBRyxLQUFLLENBQUwsa0JBQUssQ0FBTCxDQUFBLE9BQUEsSUFBWCxDQUFBO0FBRUEsU0FBQSxLQUFBLENBQUEsS0FBQSxDQUFBLEtBQUEsRUFBQSxJQUFBO0FBQ0EsU0FBQSxVQUFBLENBQUEsS0FBQSxDQUFBLEtBQUEsRUFBQSxJQUFBO0FBQ0EsU0FBQSxNQUFBLENBQUEsS0FBQSxDQUFBLEtBQUEsRUFBQSxJQUFBO0FBRUEsV0FBQSxJQUFBO0FBQ0Q7O0FBRUQsRUFBQSxLQUFLLENBQUEsS0FBQSxFQUFBLEtBQUEsRUFBQSxVQUFBLEVBQUEsZUFBQSxFQUFBLE9BQUEsRUFLYTtBQUVoQixTQUFBLEtBQUEsR0FBQSxLQUFBO0FBRUE7Ozs7Ozs7O0FBUUEsUUFBSSxLQUFLLEdBQUcsS0FBWixLQUFBO0FBQ0EsUUFBSSxVQUFVLEdBQUcsS0FBSyxDQUF0QixNQUFBO0FBQ0EsUUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFMLGtCQUFLLENBQUwsQ0FBQSxPQUFBLElBQUEsVUFBQSxHQUFoQixDQUFBO0FBRUEsSUFBQSxLQUFLLENBQUwsS0FBQSxDQUFBLEtBQUEsRUFBQSxTQUFBLEVBQUEsVUFBQSxF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LEdBRlAsQ0FFTCxDQUZLLEVBR0wsS0FBQSxNQUFBLENBQVksR0FBRyxHQUhqQixDQUdFLENBSEssQ0FBUDtBQUtEOztBQXJCNkI7O0FBd0IxQixNQUFBLHFCQUFBLENBQTRCO0FBQ2hDLEVBQUEsV0FBQSxDQUFBLEdBQUEsRUFBQSxVQUFBLEVBQUEsS0FBQSxFQUFBLE1BQUEsRUFJdUI7QUFIZCxTQUFBLEdBQUEsR0FBQSxHQUFBO0FBQ0EsU0FBQSxVQUFBLEdBQUEsVUFBQTtBQUNBLFNBQUEsS0FBQSxHQUFBLEtBQUE7QUFDQSxTQUFBLE1BQUEsR0FBQSxNQUFBO0FBQ0w7O0FBRUosRUFBQSxLQUFLLEdBQUE7QUFDSCxXQUFPO0FBQ0wsTUFBQSxLQUFLLEVBQUUsS0FBQSxLQUFBLENBREYsS0FDRSxFQURGO0FBRUwsTUFBQSxVQUFVLEVBQUUsS0FBQSxVQUFBLENBQUEsS0FBQTtBQUZQLEtBQVA7QUFJRDs7QUFiK0I7OztBQWdCbEMsTUFBTSxXQUFXLEdBQUcsSUFBQSwwQkFBQSxDQUFBLHVCQUFBLEVBQUEsaUJBQUEsRUFBcEIsaUJBQW9CLENBQXBCO0FBQ0EsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLCtCQUFBLENBQUEsdUJBQUEsRUFBekIsaUJBQXlCLENBQXpCO0FBQ08sTUFBTSxVQUFVLEdBQUcsSUFBQSxxQkFBQSxDQUFBLHVCQUFBLEVBQUEsZ0JBQUEsRUFBQSxXQUFBLEVBQW5CLENBQW1CLENBQW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZhbHVhdGlvblN0YWNrIH0gZnJvbSAnLi9zdGFjayc7XG5pbXBvcnQgeyBkaWN0LCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgRGljdCxcbiAgT3B0aW9uLFxuICB1bnNhZmUsXG4gIEJsb2NrU3ltYm9sVGFibGUsXG4gIFZNQXJndW1lbnRzLFxuICBDYXB0dXJlZEFyZ3VtZW50cyxcbiAgUG9zaXRpb25hbEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzLFxuICBOYW1lZEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyxcbiAgSml0T3JBb3RCbG9jayxcbiAgQmxvY2tWYWx1ZSxcbiAgU2NvcGVCbG9jayxcbiAgQ2FwdHVyZWRCbG9ja0FyZ3VtZW50cyxcbiAgU2NvcGUsXG4gIEJsb2NrQXJndW1lbnRzLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgVGFnLCBDT05TVEFOVF9UQUcgfSBmcm9tICdAZ2xpbW1lci92YWxpZGF0b3InO1xuaW1wb3J0IHsgUHJpbWl0aXZlUmVmZXJlbmNlLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDaGVja0Jsb2NrU3ltYm9sVGFibGUsIGNoZWNrLCBDaGVja0hhbmRsZSwgQ2hlY2tPcHRpb24sIENoZWNrT3IgfSBmcm9tICdAZ2xpbW1lci9kZWJ1Zyc7XG5pbXBvcnQge1xuICBDaGVja1BhdGhSZWZlcmVuY2UsXG4gIENoZWNrQ29tcGlsYWJsZUJsb2NrLFxuICBDaGVja1Njb3BlLFxufSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzLy1kZWJ1Zy1zdHJpcCc7XG5pbXBvcnQgeyBjb21iaW5lVGFnZ2VkIH0gZnJvbSAnLi4vdXRpbHMvdGFncyc7XG5pbXBvcnQgeyBSRUdJU1RFUlMgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7ICRzcCB9IGZyb20gJ0BnbGltbWVyL3ZtJztcblxuLypcbiAgVGhlIGNhbGxpbmcgY29udmVudGlvbiBpczpcblxuICAqIDAtTiBibG9jayBhcmd1bWVudHMgYXQgdGhlIGJvdHRvbVxuICAqIDAtTiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBuZXh0IChsZWZ0LXRvLXJpZ2h0KVxuICAqIDAtTiBuYW1lZCBhcmd1bWVudHMgbmV4dFxuKi9cblxuZXhwb3J0IGNsYXNzIFZNQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIFZNQXJndW1lbnRzIHtcbiAgcHJpdmF0ZSBzdGFjazogT3B0aW9uPEV2YWx1YXRpb25TdGFjaz4gPSBudWxsO1xuICBwdWJsaWMgcG9zaXRpb25hbCA9IG5ldyBQb3NpdGlvbmFsQXJndW1lbnRzSW1wbCgpO1xuICBwdWJsaWMgbmFtZWQgPSBuZXcgTmFtZWRBcmd1bWVudHNJbXBsKCk7XG4gIHB1YmxpYyBibG9ja3MgPSBuZXcgQmxvY2tBcmd1bWVudHNJbXBsKCk7XG5cbiAgZW1wdHkoc3RhY2s6IEV2YWx1YXRpb25TdGFjayk6IHRoaXMge1xuICAgIGxldCBiYXNlID0gc3RhY2tbUkVHSVNURVJTXVskc3BdICsgMTtcblxuICAgIHRoaXMubmFtZWQuZW1wdHkoc3RhY2ssIGJhc2UpO1xuICAgIHRoaXMucG9zaXRpb25hbC5lbXB0eShzdGFjaywgYmFzZSk7XG4gICAgdGhpcy5ibG9ja3MuZW1wdHkoc3RhY2ssIGJhc2UpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXR1cChcbiAgICBzdGFjazogRXZhbHVhdGlvblN0YWNrLFxuICAgIG5hbWVzOiBzdHJpbmdbXSxcbiAgICBibG9ja05hbWVzOiBzdHJpbmdbXSxcbiAgICBwb3NpdGlvbmFsQ291bnQ6IG51bWJlcixcbiAgICBhdE5hbWVzOiBib29sZWFuXG4gICkge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcblxuICAgIC8qXG4gICAgICAgICAgIHwgLi4uIHwgYmxvY2tzICAgICAgfCBwb3NpdGlvbmFsICB8IG5hbWVkIHxcbiAgICAgICAgICAgfCAuLi4gfCBiMCAgICBiMSAgICB8IHAwIHAxIHAyIHAzIHwgbjAgbjEgfFxuICAgICBpbmRleCB8IC4uLiB8IDQvNS82IDcvOC85IHwgMTAgMTEgMTIgMTMgfCAxNCAxNSB8XG4gICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICBeICAgICAgICAgICAgIF4gIF5cbiAgICAgICAgICAgICAgICAgYmJhc2UgICAgICAgICBwYmFzZSAgICAgICBuYmFzZSAgc3BcbiAgICAqL1xuXG4gICAgbGV0IG5hbWVkID0gdGhpcy5uYW1lZDtcbiAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcbiAgICBsZXQgbmFtZWRCYXNlID0gc3RhY2tbUkVHSVNURVJTXVskc3BdIC0gbmFtZWRDb3VudCArIDE7XG5cbiAgICBuYW1lZC5zZXR1cChzdGFjaywgbmFtZWRCYXNlLCBuYW1lZENvdW50LCBuYW1lcywgYXROYW1lcyk7XG5cbiAgICBsZXQgcG9zaXRpb25hbCA9IHRoaXMucG9zaXRpb25hbDtcbiAgICBsZXQgcG9zaXRpb25hbEJhc2UgPSBuYW1lZEJhc2UgLSBwb3NpdGlvbmFsQ291bnQ7XG5cbiAgICBwb3NpdGlvbmFsLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsQmFzZSwgcG9zaXRpb25hbENvdW50KTtcblxuICAgIGxldCBibG9ja3MgPSB0aGlzLmJsb2NrcztcbiAgICBsZXQgYmxvY2tzQ291bnQgPSBibG9ja05hbWVzLmxlbmd0aDtcbiAgICBsZXQgYmxvY2tzQmFzZSA9IHBvc2l0aW9uYWxCYXNlIC0gYmxvY2tzQ291bnQgKiAzO1xuXG4gICAgYmxvY2tzLnNldHVwKHN0YWNrLCBibG9ja3NCYXNlLCBibG9ja3NDb3VudCwgYmxvY2tOYW1lcyk7XG4gIH1cblxuICBnZXQgdGFnKCk6IFRhZyB7XG4gICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQoW3RoaXMucG9zaXRpb25hbCwgdGhpcy5uYW1lZF0pO1xuICB9XG5cbiAgZ2V0IGJhc2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ibG9ja3MuYmFzZTtcbiAgfVxuXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmxlbmd0aCArIHRoaXMubmFtZWQubGVuZ3RoICsgdGhpcy5ibG9ja3MubGVuZ3RoICogMztcbiAgfVxuXG4gIGF0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+Pihwb3M6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uYWwuYXQ8VD4ocG9zKTtcbiAgfVxuXG4gIHJlYWxsb2Mob2Zmc2V0OiBudW1iZXIpIHtcbiAgICBsZXQgeyBzdGFjayB9ID0gdGhpcztcbiAgICBpZiAob2Zmc2V0ID4gMCAmJiBzdGFjayAhPT0gbnVsbCkge1xuICAgICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHRoaXM7XG4gICAgICBsZXQgbmV3QmFzZSA9IHBvc2l0aW9uYWwuYmFzZSArIG9mZnNldDtcbiAgICAgIGxldCBsZW5ndGggPSBwb3NpdGlvbmFsLmxlbmd0aCArIG5hbWVkLmxlbmd0aDtcblxuICAgICAgZm9yIChsZXQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHN0YWNrLmNvcHkoaSArIHBvc2l0aW9uYWwuYmFzZSwgaSArIG5ld0Jhc2UpO1xuICAgICAgfVxuXG4gICAgICBwb3NpdGlvbmFsLmJhc2UgKz0gb2Zmc2V0O1xuICAgICAgbmFtZWQuYmFzZSArPSBvZmZzZXQ7XG4gICAgICBzdGFja1tSRUdJU1RFUlNdWyRzcF0gKz0gb2Zmc2V0O1xuICAgIH1cbiAgfVxuXG4gIGNhcHR1cmUoKTogQ2FwdHVyZWRBcmd1bWVudHMge1xuICAgIGxldCBwb3NpdGlvbmFsID0gdGhpcy5wb3NpdGlvbmFsLmxlbmd0aCA9PT0gMCA/IEVNUFRZX1BPU0lUSU9OQUwgOiB0aGlzLnBvc2l0aW9uYWwuY2FwdHVyZSgpO1xuICAgIGxldCBuYW1lZCA9IHRoaXMubmFtZWQubGVuZ3RoID09PSAwID8gRU1QVFlfTkFNRUQgOiB0aGlzLm5hbWVkLmNhcHR1cmUoKTtcblxuICAgIHJldHVybiBuZXcgQ2FwdHVyZWRBcmd1bWVudHNJbXBsKHRoaXMudGFnLCBwb3NpdGlvbmFsLCBuYW1lZCwgdGhpcy5sZW5ndGgpO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgbGV0IHsgc3RhY2ssIGxlbmd0aCB9ID0gdGhpcztcbiAgICBpZiAobGVuZ3RoID4gMCAmJiBzdGFjayAhPT0gbnVsbCkgc3RhY2sucG9wKGxlbmd0aCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsIGltcGxlbWVudHMgUG9zaXRpb25hbEFyZ3VtZW50cyB7XG4gIHB1YmxpYyBiYXNlID0gMDtcbiAgcHVibGljIGxlbmd0aCA9IDA7XG5cbiAgcHJpdmF0ZSBzdGFjazogRXZhbHVhdGlvblN0YWNrID0gbnVsbCBhcyBhbnk7XG5cbiAgcHJpdmF0ZSBfdGFnOiBPcHRpb248VGFnPiA9IG51bGw7XG4gIHByaXZhdGUgX3JlZmVyZW5jZXM6IE9wdGlvbjxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W10+ID0gbnVsbDtcblxuICBlbXB0eShzdGFjazogRXZhbHVhdGlvblN0YWNrLCBiYXNlOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICB0aGlzLl90YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICB9XG5cbiAgc2V0dXAoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyLCBsZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLmJhc2UgPSBiYXNlO1xuICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuXG4gICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5fdGFnID0gQ09OU1RBTlRfVEFHO1xuICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRhZygpOiBUYWcge1xuICAgIGxldCB0YWcgPSB0aGlzLl90YWc7XG5cbiAgICBpZiAoIXRhZykge1xuICAgICAgdGFnID0gdGhpcy5fdGFnID0gY29tYmluZVRhZ2dlZCh0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0YWc7XG4gIH1cblxuICBhdDxUIGV4dGVuZHMgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4ocG9zaXRpb246IG51bWJlcik6IFQge1xuICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG5cbiAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIChVTkRFRklORURfUkVGRVJFTkNFIGFzIHVuc2FmZSkgYXMgVDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hlY2soc3RhY2suZ2V0KHBvc2l0aW9uLCBiYXNlKSwgQ2hlY2tQYXRoUmVmZXJlbmNlKSBhcyBUO1xuICB9XG5cbiAgY2FwdHVyZSgpOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwodGhpcy50YWcsIHRoaXMucmVmZXJlbmNlcyk7XG4gIH1cblxuICBwcmVwZW5kKG90aGVyOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMpIHtcbiAgICBsZXQgYWRkaXRpb25zID0gb3RoZXIubGVuZ3RoO1xuXG4gICAgaWYgKGFkZGl0aW9ucyA+IDApIHtcbiAgICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG5cbiAgICAgIHRoaXMuYmFzZSA9IGJhc2UgPSBiYXNlIC0gYWRkaXRpb25zO1xuICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGggKyBhZGRpdGlvbnM7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWRkaXRpb25zOyBpKyspIHtcbiAgICAgICAgc3RhY2suc2V0KG90aGVyLmF0KGkpLCBpLCBiYXNlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHJlZmVyZW5jZXMoKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdIHtcbiAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG5cbiAgICBpZiAoIXJlZmVyZW5jZXMpIHtcbiAgICAgIGxldCB7IHN0YWNrLCBiYXNlLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IHN0YWNrLnNsaWNlQXJyYXk8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oXG4gICAgICAgIGJhc2UsXG4gICAgICAgIGJhc2UgKyBsZW5ndGhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwgaW1wbGVtZW50cyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICBzdGF0aWMgZW1wdHkoKTogQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwoQ09OU1RBTlRfVEFHLCBFTVBUWV9BUlJBWSwgMCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGFnOiBUYWcsXG4gICAgcHVibGljIHJlZmVyZW5jZXM6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj5bXSxcbiAgICBwdWJsaWMgbGVuZ3RoID0gcmVmZXJlbmNlcy5sZW5ndGhcbiAgKSB7fVxuXG4gIGF0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+Pihwb3NpdGlvbjogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1twb3NpdGlvbl0gYXMgVDtcbiAgfVxuXG4gIHZhbHVlKCk6IHVua25vd25bXSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlcy5tYXAodGhpcy52YWx1ZU9mKTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+IHtcbiAgICBsZXQgeyByZWZlcmVuY2VzLCBsZW5ndGggfSA9IHRoaXM7XG5cbiAgICBpZiAobmFtZSA9PT0gJ2xlbmd0aCcpIHtcbiAgICAgIHJldHVybiBQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKGxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpZHggPSBwYXJzZUludChuYW1lLCAxMCk7XG5cbiAgICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVmZXJlbmNlc1tpZHhdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsdWVPZih0aGlzOiB2b2lkLCByZWZlcmVuY2U6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4pOiB1bmtub3duIHtcbiAgICByZXR1cm4gcmVmZXJlbmNlLnZhbHVlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5hbWVkQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIE5hbWVkQXJndW1lbnRzIHtcbiAgcHVibGljIGJhc2UgPSAwO1xuICBwdWJsaWMgbGVuZ3RoID0gMDtcblxuICBwcml2YXRlIHN0YWNrITogRXZhbHVhdGlvblN0YWNrO1xuXG4gIHByaXZhdGUgX3JlZmVyZW5jZXM6IE9wdGlvbjxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W10+ID0gbnVsbDtcblxuICBwcml2YXRlIF9uYW1lczogT3B0aW9uPHN0cmluZ1tdPiA9IEVNUFRZX0FSUkFZO1xuICBwcml2YXRlIF9hdE5hbWVzOiBPcHRpb248c3RyaW5nW10+ID0gRU1QVFlfQVJSQVk7XG5cbiAgZW1wdHkoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICAgIHRoaXMuX25hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgdGhpcy5fYXROYW1lcyA9IEVNUFRZX0FSUkFZO1xuICB9XG5cbiAgc2V0dXAoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbmFtZXM6IHN0cmluZ1tdLCBhdE5hbWVzOiBib29sZWFuKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLl9yZWZlcmVuY2VzID0gRU1QVFlfQVJSQVk7XG4gICAgICB0aGlzLl9uYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgICAgdGhpcy5fYXROYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcblxuICAgICAgaWYgKGF0TmFtZXMpIHtcbiAgICAgICAgdGhpcy5fbmFtZXMgPSBudWxsO1xuICAgICAgICB0aGlzLl9hdE5hbWVzID0gbmFtZXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9uYW1lcyA9IG5hbWVzO1xuICAgICAgICB0aGlzLl9hdE5hbWVzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgdGFnKCk6IFRhZyB7XG4gICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQodGhpcy5yZWZlcmVuY2VzKTtcbiAgfVxuXG4gIGdldCBuYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgbGV0IG5hbWVzID0gdGhpcy5fbmFtZXM7XG5cbiAgICBpZiAoIW5hbWVzKSB7XG4gICAgICBuYW1lcyA9IHRoaXMuX25hbWVzID0gdGhpcy5fYXROYW1lcyEubWFwKHRoaXMudG9TeW50aGV0aWNOYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmFtZXMhO1xuICB9XG5cbiAgZ2V0IGF0TmFtZXMoKTogc3RyaW5nW10ge1xuICAgIGxldCBhdE5hbWVzID0gdGhpcy5fYXROYW1lcztcblxuICAgIGlmICghYXROYW1lcykge1xuICAgICAgYXROYW1lcyA9IHRoaXMuX2F0TmFtZXMgPSB0aGlzLl9uYW1lcyEubWFwKHRoaXMudG9BdE5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBhdE5hbWVzITtcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGdldDxUIGV4dGVuZHMgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4obmFtZTogc3RyaW5nLCBhdE5hbWVzID0gZmFsc2UpOiBUIHtcbiAgICBsZXQgeyBiYXNlLCBzdGFjayB9ID0gdGhpcztcblxuICAgIGxldCBuYW1lcyA9IGF0TmFtZXMgPyB0aGlzLmF0TmFtZXMgOiB0aGlzLm5hbWVzO1xuXG4gICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG5cbiAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIChVTkRFRklORURfUkVGRVJFTkNFIGFzIHVuc2FmZSkgYXMgVDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhY2suZ2V0PFQ+KGlkeCwgYmFzZSk7XG4gIH1cblxuICBjYXB0dXJlKCk6IENhcHR1cmVkTmFtZWRBcmd1bWVudHMge1xuICAgIHJldHVybiBuZXcgQ2FwdHVyZWROYW1lZEFyZ3VtZW50c0ltcGwodGhpcy50YWcsIHRoaXMubmFtZXMsIHRoaXMucmVmZXJlbmNlcyk7XG4gIH1cblxuICBtZXJnZShvdGhlcjogQ2FwdHVyZWROYW1lZEFyZ3VtZW50cykge1xuICAgIGxldCB7IGxlbmd0aDogZXh0cmFzIH0gPSBvdGhlcjtcblxuICAgIGlmIChleHRyYXMgPiAwKSB7XG4gICAgICBsZXQgeyBuYW1lcywgbGVuZ3RoLCBzdGFjayB9ID0gdGhpcztcbiAgICAgIGxldCB7IG5hbWVzOiBleHRyYU5hbWVzIH0gPSBvdGhlcjtcblxuICAgICAgaWYgKE9iamVjdC5pc0Zyb3plbihuYW1lcykgJiYgbmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIG5hbWVzID0gW107XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXh0cmFzOyBpKyspIHtcbiAgICAgICAgbGV0IG5hbWUgPSBleHRyYU5hbWVzW2ldO1xuICAgICAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcblxuICAgICAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgICAgIGxlbmd0aCA9IG5hbWVzLnB1c2gobmFtZSk7XG4gICAgICAgICAgc3RhY2sucHVzaChvdGhlci5yZWZlcmVuY2VzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgdGhpcy5fbmFtZXMgPSBuYW1lcztcbiAgICAgIHRoaXMuX2F0TmFtZXMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHJlZmVyZW5jZXMoKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdIHtcbiAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG5cbiAgICBpZiAoIXJlZmVyZW5jZXMpIHtcbiAgICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG4gICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IHN0YWNrLnNsaWNlQXJyYXk8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oXG4gICAgICAgIGJhc2UsXG4gICAgICAgIGJhc2UgKyBsZW5ndGhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gIH1cblxuICBwcml2YXRlIHRvU3ludGhldGljTmFtZSh0aGlzOiB2b2lkLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuYW1lLnNsaWNlKDEpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b0F0TmFtZSh0aGlzOiB2b2lkLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgQCR7bmFtZX1gO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIENhcHR1cmVkTmFtZWRBcmd1bWVudHMge1xuICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG4gIHByaXZhdGUgX21hcDogT3B0aW9uPERpY3Q8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWc6IFRhZyxcbiAgICBwdWJsaWMgbmFtZXM6IHN0cmluZ1tdLFxuICAgIHB1YmxpYyByZWZlcmVuY2VzOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W11cbiAgKSB7XG4gICAgdGhpcy5sZW5ndGggPSBuYW1lcy5sZW5ndGg7XG4gICAgdGhpcy5fbWFwID0gbnVsbDtcbiAgfVxuXG4gIGdldCBtYXAoKSB7XG4gICAgbGV0IG1hcCA9IHRoaXMuX21hcDtcblxuICAgIGlmICghbWFwKSB7XG4gICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgIG1hcCA9IHRoaXMuX21hcCA9IGRpY3Q8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICBtYXAhW25hbWVdID0gcmVmZXJlbmNlc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICB9XG5cbiAgZ2V0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+PihuYW1lOiBzdHJpbmcpOiBUIHtcbiAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcblxuICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICByZXR1cm4gKFVOREVGSU5FRF9SRUZFUkVOQ0UgYXMgdW5zYWZlKSBhcyBUO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVmZXJlbmNlc1tpZHhdIGFzIFQ7XG4gICAgfVxuICB9XG5cbiAgdmFsdWUoKTogRGljdDx1bmtub3duPiB7XG4gICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgbGV0IG91dCA9IGRpY3Q8dW5rbm93bj4oKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBuYW1lID0gbmFtZXNbaV07XG4gICAgICBvdXRbbmFtZV0gPSByZWZlcmVuY2VzW2ldLnZhbHVlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmxvY2tBcmd1bWVudHNJbXBsPEMgZXh0ZW5kcyBKaXRPckFvdEJsb2NrPiBpbXBsZW1lbnRzIEJsb2NrQXJndW1lbnRzPEM+IHtcbiAgcHJpdmF0ZSBzdGFjayE6IEV2YWx1YXRpb25TdGFjaztcbiAgcHJpdmF0ZSBpbnRlcm5hbFZhbHVlczogT3B0aW9uPG51bWJlcltdPiA9IG51bGw7XG5cbiAgcHVibGljIGludGVybmFsVGFnOiBPcHRpb248VGFnPiA9IG51bGw7XG4gIHB1YmxpYyBuYW1lczogc3RyaW5nW10gPSBFTVBUWV9BUlJBWTtcblxuICBwdWJsaWMgbGVuZ3RoID0gMDtcbiAgcHVibGljIGJhc2UgPSAwO1xuXG4gIGVtcHR5KHN0YWNrOiBFdmFsdWF0aW9uU3RhY2ssIGJhc2U6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLm5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICB0aGlzLmludGVybmFsVGFnID0gQ09OU1RBTlRfVEFHO1xuICAgIHRoaXMuaW50ZXJuYWxWYWx1ZXMgPSBFTVBUWV9BUlJBWTtcbiAgfVxuXG4gIHNldHVwKHN0YWNrOiBFdmFsdWF0aW9uU3RhY2ssIGJhc2U6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIsIG5hbWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLm5hbWVzID0gbmFtZXM7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcblxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxUYWcgPSBDT05TVEFOVF9UQUc7XG4gICAgICB0aGlzLmludGVybmFsVmFsdWVzID0gRU1QVFlfQVJSQVk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxUYWcgPSBudWxsO1xuICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlcyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlcygpOiBCbG9ja1ZhbHVlW10ge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmludGVybmFsVmFsdWVzO1xuXG4gICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG4gICAgICB2YWx1ZXMgPSB0aGlzLmludGVybmFsVmFsdWVzID0gc3RhY2suc2xpY2VBcnJheTxudW1iZXI+KGJhc2UsIGJhc2UgKyBsZW5ndGggKiAzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVzO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWVzIS5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBPcHRpb248U2NvcGVCbG9jazxDPj4ge1xuICAgIGxldCBpZHggPSB0aGlzLm5hbWVzIS5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB7IGJhc2UsIHN0YWNrIH0gPSB0aGlzO1xuXG4gICAgbGV0IHRhYmxlID0gY2hlY2soc3RhY2suZ2V0KGlkeCAqIDMsIGJhc2UpLCBDaGVja09wdGlvbihDaGVja0Jsb2NrU3ltYm9sVGFibGUpKTtcbiAgICBsZXQgc2NvcGUgPSBjaGVjayhzdGFjay5nZXQoaWR4ICogMyArIDEsIGJhc2UpLCBDaGVja09wdGlvbihDaGVja1Njb3BlKSk7XG4gICAgbGV0IGhhbmRsZSA9IGNoZWNrKFxuICAgICAgc3RhY2suZ2V0KGlkeCAqIDMgKyAyLCBiYXNlKSxcbiAgICAgIENoZWNrT3B0aW9uKENoZWNrT3IoQ2hlY2tIYW5kbGUsIENoZWNrQ29tcGlsYWJsZUJsb2NrKSlcbiAgICApO1xuXG4gICAgcmV0dXJuIGhhbmRsZSA9PT0gbnVsbCA/IG51bGwgOiAoW2hhbmRsZSwgc2NvcGUhLCB0YWJsZSFdIGFzIFNjb3BlQmxvY2s8Qz4pO1xuICB9XG5cbiAgY2FwdHVyZSgpOiBDYXB0dXJlZEJsb2NrQXJndW1lbnRzIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkQmxvY2tBcmd1bWVudHNJbXBsKHRoaXMubmFtZXMsIHRoaXMudmFsdWVzKTtcbiAgfVxufVxuXG5jbGFzcyBDYXB0dXJlZEJsb2NrQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIENhcHR1cmVkQmxvY2tBcmd1bWVudHMge1xuICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG5hbWVzOiBzdHJpbmdbXSwgcHVibGljIHZhbHVlczogQmxvY2tWYWx1ZVtdKSB7XG4gICAgdGhpcy5sZW5ndGggPSBuYW1lcy5sZW5ndGg7XG4gIH1cblxuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogT3B0aW9uPFNjb3BlQmxvY2s+IHtcbiAgICBsZXQgaWR4ID0gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGlkeCA9PT0gLTEpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMudmFsdWVzW2lkeCAqIDMgKyAyXSBhcyBudW1iZXIsXG4gICAgICB0aGlzLnZhbHVlc1tpZHggKiAzICsgMV0gYXMgU2NvcGU8Sml0T3JBb3RCbG9jaz4sXG4gICAgICB0aGlzLnZhbHVlc1tpZHggKiAzXSBhcyBCbG9ja1N5bWJvbFRhYmxlLFxuICAgIF07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhcHR1cmVkQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIENhcHR1cmVkQXJndW1lbnRzIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhZzogVGFnLFxuICAgIHB1YmxpYyBwb3NpdGlvbmFsOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMsXG4gICAgcHVibGljIG5hbWVkOiBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLFxuICAgIHB1YmxpYyBsZW5ndGg6IG51bWJlclxuICApIHt9XG5cbiAgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWVkOiB0aGlzLm5hbWVkLnZhbHVlKCksXG4gICAgICBwb3NpdGlvbmFsOiB0aGlzLnBvc2l0aW9uYWwudmFsdWUoKSxcbiAgICB9O1xuICB9XG59XG5cbmNvbnN0IEVNUFRZX05BTUVEID0gbmV3IENhcHR1cmVkTmFtZWRBcmd1bWVudHNJbXBsKENPTlNUQU5UX1RBRywgRU1QVFlfQVJSQVksIEVNUFRZX0FSUkFZKTtcbmNvbnN0IEVNUFRZX1BPU0lUSU9OQUwgPSBuZXcgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzSW1wbChDT05TVEFOVF9UQUcsIEVNUFRZX0FSUkFZKTtcbmV4cG9ydCBjb25zdCBFTVBUWV9BUkdTID0gbmV3IENhcHR1cmVkQXJndW1lbnRzSW1wbChDT05TVEFOVF9UQUcsIEVNUFRZX1BPU0lUSU9OQUwsIEVNUFRZX05BTUVELCAwKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2FyZ3VtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBb0JBOztBQUNBOztBQU9BOztBQUNBOztBQUNBOztBQUVBOzs7Ozs7O0FBUU0sTUFBQSxlQUFBLENBQXNCO0FBQTVCLEVBQUEsV0FBQSxHQUFBO0FBQ1UsU0FBQSxLQUFBLEdBQUEsSUFBQTtBQUNELFNBQUEsVUFBQSxHQUFhLElBQWIsdUJBQWEsRUFBYjtBQUNBLFNBQUEsS0FBQSxHQUFRLElBQVIsa0JBQVEsRUFBUjtBQUNBLFNBQUEsTUFBQSxHQUFTLElBQVQsa0JBQVMsRUFBVDtBQTJGUjs7QUF6RkMsRUFBQSxLQUFLLENBQUEsS0FBQSxFQUF1QjtBQUMxQixRQUFJLElBQUksR0FBRyxLQUFLLENBQUwsa0JBQUssQ0FBTCxDQUFBLE9BQUEsSUFBWCxDQUFBO0FBRUEsU0FBQSxLQUFBLENBQUEsS0FBQSxDQUFBLEtBQUEsRUFBQSxJQUFBO0FBQ0EsU0FBQSxVQUFBLENBQUEsS0FBQSxDQUFBLEtBQUEsRUFBQSxJQUFBO0FBQ0EsU0FBQSxNQUFBLENBQUEsS0FBQSxDQUFBLEtBQUEsRUFBQSxJQUFBO0FBRUEsV0FBQSxJQUFBO0FBQ0Q7O0FBRUQsRUFBQSxLQUFLLENBQUEsS0FBQSxFQUFBLEtBQUEsRUFBQSxVQUFBLEVBQUEsZUFBQSxFQUFBLE9BQUEsRUFLYTtBQUVoQixTQUFBLEtBQUEsR0FBQSxLQUFBO0FBRUE7Ozs7Ozs7O0FBUUEsUUFBSSxLQUFLLEdBQUcsS0FBWixLQUFBO0FBQ0EsUUFBSSxVQUFVLEdBQUcsS0FBSyxDQUF0QixNQUFBO0FBQ0EsUUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFMLGtCQUFLLENBQUwsQ0FBQSxPQUFBLElBQUEsVUFBQSxHQUFoQixDQUFBO0FBRUEsSUFBQSxLQUFLLENBQUwsS0FBQSxDQUFBLEtBQUEsRUFBQSxTQUFBLEVBQUEsVUFBQSxF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QUEsdUJBQUEsRUFBQSxnQkFBQSxFQUFBLFdBQUEsRUFBbkIsQ0FBbUIsQ0FBbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmFsdWF0aW9uU3RhY2sgfSBmcm9tICcuL3N0YWNrJztcbmltcG9ydCB7IGRpY3QsIEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBEaWN0LFxuICBPcHRpb24sXG4gIHVuc2FmZSxcbiAgQmxvY2tTeW1ib2xUYWJsZSxcbiAgVk1Bcmd1bWVudHMsXG4gIENhcHR1cmVkQXJndW1lbnRzLFxuICBQb3NpdGlvbmFsQXJndW1lbnRzLFxuICBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMsXG4gIE5hbWVkQXJndW1lbnRzLFxuICBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLFxuICBKaXRPckFvdEJsb2NrLFxuICBCbG9ja1ZhbHVlLFxuICBTY29wZUJsb2NrLFxuICBDYXB0dXJlZEJsb2NrQXJndW1lbnRzLFxuICBTY29wZSxcbiAgQmxvY2tBcmd1bWVudHMsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBUYWcsIENPTlNUQU5UX1RBRyB9IGZyb20gJ0BnbGltbWVyL3ZhbGlkYXRvcic7XG5pbXBvcnQgeyBQcmltaXRpdmVSZWZlcmVuY2UsIFVOREVGSU5FRF9SRUZFUkVOQ0UgfSBmcm9tICcuLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IENoZWNrQmxvY2tTeW1ib2xUYWJsZSwgY2hlY2ssIENoZWNrSGFuZGxlLCBDaGVja09wdGlvbiwgQ2hlY2tPciB9IGZyb20gJ0BnbGltbWVyL2RlYnVnJztcbmltcG9ydCB7XG4gIENoZWNrUGF0aFJlZmVyZW5jZSxcbiAgQ2hlY2tDb21waWxhYmxlQmxvY2ssXG4gIENoZWNrU2NvcGUsXG59IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvLWRlYnVnLXN0cmlwJztcbmltcG9ydCB7IGNvbWJpbmVUYWdnZWQgfSBmcm9tICcuLi91dGlscy90YWdzJztcbmltcG9ydCB7IFJFR0lTVEVSUyB9IGZyb20gJy4uL3N5bWJvbHMnO1xuaW1wb3J0IHsgJHNwIH0gZnJvbSAnQGdsaW1tZXIvdm0nO1xuXG4vKlxuICBUaGUgY2FsbGluZyBjb252ZW50aW9uIGlzOlxuXG4gICogMC1OIGJsb2NrIGFyZ3VtZW50cyBhdCB0aGUgYm90dG9tXG4gICogMC1OIHBvc2l0aW9uYWwgYXJndW1lbnRzIG5leHQgKGxlZnQtdG8tcmlnaHQpXG4gICogMC1OIG5hbWVkIGFyZ3VtZW50cyBuZXh0XG4qL1xuXG5leHBvcnQgY2xhc3MgVk1Bcmd1bWVudHNJbXBsIGltcGxlbWVudHMgVk1Bcmd1bWVudHMge1xuICBwcml2YXRlIHN0YWNrOiBPcHRpb248RXZhbHVhdGlvblN0YWNrPiA9IG51bGw7XG4gIHB1YmxpYyBwb3NpdGlvbmFsID0gbmV3IFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsKCk7XG4gIHB1YmxpYyBuYW1lZCA9IG5ldyBOYW1lZEFyZ3VtZW50c0ltcGwoKTtcbiAgcHVibGljIGJsb2NrcyA9IG5ldyBCbG9ja0FyZ3VtZW50c0ltcGwoKTtcblxuICBlbXB0eShzdGFjazogRXZhbHVhdGlvblN0YWNrKTogdGhpcyB7XG4gICAgbGV0IGJhc2UgPSBzdGFja1tSRUdJU1RFUlNdWyRzcF0gKyAxO1xuXG4gICAgdGhpcy5uYW1lZC5lbXB0eShzdGFjaywgYmFzZSk7XG4gICAgdGhpcy5wb3NpdGlvbmFsLmVtcHR5KHN0YWNrLCBiYXNlKTtcbiAgICB0aGlzLmJsb2Nrcy5lbXB0eShzdGFjaywgYmFzZSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldHVwKFxuICAgIHN0YWNrOiBFdmFsdWF0aW9uU3RhY2ssXG4gICAgbmFtZXM6IHN0cmluZ1tdLFxuICAgIGJsb2NrTmFtZXM6IHN0cmluZ1tdLFxuICAgIHBvc2l0aW9uYWxDb3VudDogbnVtYmVyLFxuICAgIGF0TmFtZXM6IGJvb2xlYW5cbiAgKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuXG4gICAgLypcbiAgICAgICAgICAgfCAuLi4gfCBibG9ja3MgICAgICB8IHBvc2l0aW9uYWwgIHwgbmFtZWQgfFxuICAgICAgICAgICB8IC4uLiB8IGIwICAgIGIxICAgIHwgcDAgcDEgcDIgcDMgfCBuMCBuMSB8XG4gICAgIGluZGV4IHwgLi4uIHwgNC81LzYgNy84LzkgfCAxMCAxMSAxMiAxMyB8IDE0IDE1IHxcbiAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgIF4gICAgICAgICAgICAgXiAgXlxuICAgICAgICAgICAgICAgICBiYmFzZSAgICAgICAgIHBiYXNlICAgICAgIG5iYXNlICBzcFxuICAgICovXG5cbiAgICBsZXQgbmFtZWQgPSB0aGlzLm5hbWVkO1xuICAgIGxldCBuYW1lZENvdW50ID0gbmFtZXMubGVuZ3RoO1xuICAgIGxldCBuYW1lZEJhc2UgPSBzdGFja1tSRUdJU1RFUlNdWyRzcF0gLSBuYW1lZENvdW50ICsgMTtcblxuICAgIG5hbWVkLnNldHVwKHN0YWNrLCBuYW1lZEJhc2UsIG5hbWVkQ291bnQsIG5hbWVzLCBhdE5hbWVzKTtcblxuICAgIGxldCBwb3NpdGlvbmFsID0gdGhpcy5wb3NpdGlvbmFsO1xuICAgIGxldCBwb3NpdGlvbmFsQmFzZSA9IG5hbWVkQmFzZSAtIHBvc2l0aW9uYWxDb3VudDtcblxuICAgIHBvc2l0aW9uYWwuc2V0dXAoc3RhY2ssIHBvc2l0aW9uYWxCYXNlLCBwb3NpdGlvbmFsQ291bnQpO1xuXG4gICAgbGV0IGJsb2NrcyA9IHRoaXMuYmxvY2tzO1xuICAgIGxldCBibG9ja3NDb3VudCA9IGJsb2NrTmFtZXMubGVuZ3RoO1xuICAgIGxldCBibG9ja3NCYXNlID0gcG9zaXRpb25hbEJhc2UgLSBibG9ja3NDb3VudCAqIDM7XG5cbiAgICBibG9ja3Muc2V0dXAoc3RhY2ssIGJsb2Nrc0Jhc2UsIGJsb2Nrc0NvdW50LCBibG9ja05hbWVzKTtcbiAgfVxuXG4gIGdldCB0YWcoKTogVGFnIHtcbiAgICByZXR1cm4gY29tYmluZVRhZ2dlZChbdGhpcy5wb3NpdGlvbmFsLCB0aGlzLm5hbWVkXSk7XG4gIH1cblxuICBnZXQgYmFzZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmJsb2Nrcy5iYXNlO1xuICB9XG5cbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uYWwubGVuZ3RoICsgdGhpcy5uYW1lZC5sZW5ndGggKyB0aGlzLmJsb2Nrcy5sZW5ndGggKiAzO1xuICB9XG5cbiAgYXQ8VCBleHRlbmRzIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+KHBvczogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMucG9zaXRpb25hbC5hdDxUPihwb3MpO1xuICB9XG5cbiAgcmVhbGxvYyhvZmZzZXQ6IG51bWJlcikge1xuICAgIGxldCB7IHN0YWNrIH0gPSB0aGlzO1xuICAgIGlmIChvZmZzZXQgPiAwICYmIHN0YWNrICE9PSBudWxsKSB7XG4gICAgICBsZXQgeyBwb3NpdGlvbmFsLCBuYW1lZCB9ID0gdGhpcztcbiAgICAgIGxldCBuZXdCYXNlID0gcG9zaXRpb25hbC5iYXNlICsgb2Zmc2V0O1xuICAgICAgbGV0IGxlbmd0aCA9IHBvc2l0aW9uYWwubGVuZ3RoICsgbmFtZWQubGVuZ3RoO1xuXG4gICAgICBmb3IgKGxldCBpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgc3RhY2suY29weShpICsgcG9zaXRpb25hbC5iYXNlLCBpICsgbmV3QmFzZSk7XG4gICAgICB9XG5cbiAgICAgIHBvc2l0aW9uYWwuYmFzZSArPSBvZmZzZXQ7XG4gICAgICBuYW1lZC5iYXNlICs9IG9mZnNldDtcbiAgICAgIHN0YWNrW1JFR0lTVEVSU11bJHNwXSArPSBvZmZzZXQ7XG4gICAgfVxuICB9XG5cbiAgY2FwdHVyZSgpOiBDYXB0dXJlZEFyZ3VtZW50cyB7XG4gICAgbGV0IHBvc2l0aW9uYWwgPSB0aGlzLnBvc2l0aW9uYWwubGVuZ3RoID09PSAwID8gRU1QVFlfUE9TSVRJT05BTCA6IHRoaXMucG9zaXRpb25hbC5jYXB0dXJlKCk7XG4gICAgbGV0IG5hbWVkID0gdGhpcy5uYW1lZC5sZW5ndGggPT09IDAgPyBFTVBUWV9OQU1FRCA6IHRoaXMubmFtZWQuY2FwdHVyZSgpO1xuXG4gICAgcmV0dXJuIG5ldyBDYXB0dXJlZEFyZ3VtZW50c0ltcGwodGhpcy50YWcsIHBvc2l0aW9uYWwsIG5hbWVkLCB0aGlzLmxlbmd0aCk7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICBsZXQgeyBzdGFjaywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgIGlmIChsZW5ndGggPiAwICYmIHN0YWNrICE9PSBudWxsKSBzdGFjay5wb3AobGVuZ3RoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwgaW1wbGVtZW50cyBQb3NpdGlvbmFsQXJndW1lbnRzIHtcbiAgcHVibGljIGJhc2UgPSAwO1xuICBwdWJsaWMgbGVuZ3RoID0gMDtcblxuICBwcml2YXRlIHN0YWNrOiBFdmFsdWF0aW9uU3RhY2sgPSBudWxsIGFzIGFueTtcblxuICBwcml2YXRlIF90YWc6IE9wdGlvbjxUYWc+ID0gbnVsbDtcbiAgcHJpdmF0ZSBfcmVmZXJlbmNlczogT3B0aW9uPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj5bXT4gPSBudWxsO1xuXG4gIGVtcHR5KHN0YWNrOiBFdmFsdWF0aW9uU3RhY2ssIGJhc2U6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLmJhc2UgPSBiYXNlO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcblxuICAgIHRoaXMuX3RhZyA9IENPTlNUQU5UX1RBRztcbiAgICB0aGlzLl9yZWZlcmVuY2VzID0gRU1QVFlfQVJSQVk7XG4gIH1cblxuICBzZXR1cChzdGFjazogRXZhbHVhdGlvblN0YWNrLCBiYXNlOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLl90YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgICB0aGlzLl9yZWZlcmVuY2VzID0gRU1QVFlfQVJSQVk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXQgdGFnKCk6IFRhZyB7XG4gICAgbGV0IHRhZyA9IHRoaXMuX3RhZztcblxuICAgIGlmICghdGFnKSB7XG4gICAgICB0YWcgPSB0aGlzLl90YWcgPSBjb21iaW5lVGFnZ2VkKHRoaXMucmVmZXJlbmNlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhZztcbiAgfVxuXG4gIGF0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+Pihwb3NpdGlvbjogbnVtYmVyKTogVCB7XG4gICAgbGV0IHsgYmFzZSwgbGVuZ3RoLCBzdGFjayB9ID0gdGhpcztcblxuICAgIGlmIChwb3NpdGlvbiA8IDAgfHwgcG9zaXRpb24gPj0gbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gKFVOREVGSU5FRF9SRUZFUkVOQ0UgYXMgdW5zYWZlKSBhcyBUO1xuICAgIH1cblxuICAgIHJldHVybiBjaGVjayhzdGFjay5nZXQocG9zaXRpb24sIGJhc2UpLCBDaGVja1BhdGhSZWZlcmVuY2UpIGFzIFQ7XG4gIH1cblxuICBjYXB0dXJlKCk6IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwge1xuICAgIHJldHVybiBuZXcgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzSW1wbCh0aGlzLnRhZywgdGhpcy5yZWZlcmVuY2VzKTtcbiAgfVxuXG4gIHByZXBlbmQob3RoZXI6IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cykge1xuICAgIGxldCBhZGRpdGlvbnMgPSBvdGhlci5sZW5ndGg7XG5cbiAgICBpZiAoYWRkaXRpb25zID4gMCkge1xuICAgICAgbGV0IHsgYmFzZSwgbGVuZ3RoLCBzdGFjayB9ID0gdGhpcztcblxuICAgICAgdGhpcy5iYXNlID0gYmFzZSA9IGJhc2UgLSBhZGRpdGlvbnM7XG4gICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aCArIGFkZGl0aW9ucztcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhZGRpdGlvbnM7IGkrKykge1xuICAgICAgICBzdGFjay5zZXQob3RoZXIuYXQoaSksIGksIGJhc2UpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcmVmZXJlbmNlcygpOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W10ge1xuICAgIGxldCByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcztcblxuICAgIGlmICghcmVmZXJlbmNlcykge1xuICAgICAgbGV0IHsgc3RhY2ssIGJhc2UsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgIHJlZmVyZW5jZXMgPSB0aGlzLl9yZWZlcmVuY2VzID0gc3RhY2suc2xpY2VBcnJheTxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+PihcbiAgICAgICAgYmFzZSxcbiAgICAgICAgYmFzZSArIGxlbmd0aFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyB7XG4gIHN0YXRpYyBlbXB0eSgpOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICAgIHJldHVybiBuZXcgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzSW1wbChDT05TVEFOVF9UQUcsIEVNUFRZX0FSUkFZLCAwKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWc6IFRhZyxcbiAgICBwdWJsaWMgcmVmZXJlbmNlczogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdLFxuICAgIHB1YmxpYyBsZW5ndGggPSByZWZlcmVuY2VzLmxlbmd0aFxuICApIHt9XG5cbiAgYXQ8VCBleHRlbmRzIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+KHBvc2l0aW9uOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzW3Bvc2l0aW9uXSBhcyBUO1xuICB9XG5cbiAgdmFsdWUoKTogdW5rbm93bltdIHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzLm1hcCh0aGlzLnZhbHVlT2YpO1xuICB9XG5cbiAgZ2V0KG5hbWU6IHN0cmluZyk6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4ge1xuICAgIGxldCB7IHJlZmVyZW5jZXMsIGxlbmd0aCB9ID0gdGhpcztcblxuICAgIGlmIChuYW1lID09PSAnbGVuZ3RoJykge1xuICAgICAgcmV0dXJuIFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUobGVuZ3RoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGlkeCA9IHBhcnNlSW50KG5hbWUsIDEwKTtcblxuICAgICAgaWYgKGlkeCA8IDAgfHwgaWR4ID49IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZWZlcmVuY2VzW2lkeF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWx1ZU9mKHRoaXM6IHZvaWQsIHJlZmVyZW5jZTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPik6IHVua25vd24ge1xuICAgIHJldHVybiByZWZlcmVuY2UudmFsdWUoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTmFtZWRBcmd1bWVudHNJbXBsIGltcGxlbWVudHMgTmFtZWRBcmd1bWVudHMge1xuICBwdWJsaWMgYmFzZSA9IDA7XG4gIHB1YmxpYyBsZW5ndGggPSAwO1xuXG4gIHByaXZhdGUgc3RhY2shOiBFdmFsdWF0aW9uU3RhY2s7XG5cbiAgcHJpdmF0ZSBfcmVmZXJlbmNlczogT3B0aW9uPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj5bXT4gPSBudWxsO1xuXG4gIHByaXZhdGUgX25hbWVzOiBPcHRpb248c3RyaW5nW10+ID0gRU1QVFlfQVJSQVk7XG4gIHByaXZhdGUgX2F0TmFtZXM6IE9wdGlvbjxzdHJpbmdbXT4gPSBFTVBUWV9BUlJBWTtcblxuICBlbXB0eShzdGFjazogRXZhbHVhdGlvblN0YWNrLCBiYXNlOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICB0aGlzLl9yZWZlcmVuY2VzID0gRU1QVFlfQVJSQVk7XG4gICAgdGhpcy5fbmFtZXMgPSBFTVBUWV9BUlJBWTtcbiAgICB0aGlzLl9hdE5hbWVzID0gRU1QVFlfQVJSQVk7XG4gIH1cblxuICBzZXR1cChzdGFjazogRXZhbHVhdGlvblN0YWNrLCBiYXNlOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCBuYW1lczogc3RyaW5nW10sIGF0TmFtZXM6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcblxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBFTVBUWV9BUlJBWTtcbiAgICAgIHRoaXMuX25hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgICB0aGlzLl9hdE5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuXG4gICAgICBpZiAoYXROYW1lcykge1xuICAgICAgICB0aGlzLl9uYW1lcyA9IG51bGw7XG4gICAgICAgIHRoaXMuX2F0TmFtZXMgPSBuYW1lcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX25hbWVzID0gbmFtZXM7XG4gICAgICAgIHRoaXMuX2F0TmFtZXMgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCB0YWcoKTogVGFnIHtcbiAgICByZXR1cm4gY29tYmluZVRhZ2dlZCh0aGlzLnJlZmVyZW5jZXMpO1xuICB9XG5cbiAgZ2V0IG5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgbmFtZXMgPSB0aGlzLl9uYW1lcztcblxuICAgIGlmICghbmFtZXMpIHtcbiAgICAgIG5hbWVzID0gdGhpcy5fbmFtZXMgPSB0aGlzLl9hdE5hbWVzIS5tYXAodGhpcy50b1N5bnRoZXRpY05hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBuYW1lcyE7XG4gIH1cblxuICBnZXQgYXROYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgbGV0IGF0TmFtZXMgPSB0aGlzLl9hdE5hbWVzO1xuXG4gICAgaWYgKCFhdE5hbWVzKSB7XG4gICAgICBhdE5hbWVzID0gdGhpcy5fYXROYW1lcyA9IHRoaXMuX25hbWVzIS5tYXAodGhpcy50b0F0TmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF0TmFtZXMhO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICB9XG5cbiAgZ2V0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+PihuYW1lOiBzdHJpbmcsIGF0TmFtZXMgPSBmYWxzZSk6IFQge1xuICAgIGxldCB7IGJhc2UsIHN0YWNrIH0gPSB0aGlzO1xuXG4gICAgbGV0IG5hbWVzID0gYXROYW1lcyA/IHRoaXMuYXROYW1lcyA6IHRoaXMubmFtZXM7XG5cbiAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcblxuICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICByZXR1cm4gKFVOREVGSU5FRF9SRUZFUkVOQ0UgYXMgdW5zYWZlKSBhcyBUO1xuICAgIH1cblxuICAgIHJldHVybiBzdGFjay5nZXQ8VD4oaWR4LCBiYXNlKTtcbiAgfVxuXG4gIGNhcHR1cmUoKTogQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyB7XG4gICAgcmV0dXJuIG5ldyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzSW1wbCh0aGlzLnRhZywgdGhpcy5uYW1lcywgdGhpcy5yZWZlcmVuY2VzKTtcbiAgfVxuXG4gIG1lcmdlKG90aGVyOiBDYXB0dXJlZE5hbWVkQXJndW1lbnRzKSB7XG4gICAgbGV0IHsgbGVuZ3RoOiBleHRyYXMgfSA9IG90aGVyO1xuXG4gICAgaWYgKGV4dHJhcyA+IDApIHtcbiAgICAgIGxldCB7IG5hbWVzLCBsZW5ndGgsIHN0YWNrIH0gPSB0aGlzO1xuICAgICAgbGV0IHsgbmFtZXM6IGV4dHJhTmFtZXMgfSA9IG90aGVyO1xuXG4gICAgICBpZiAoT2JqZWN0LmlzRnJvemVuKG5hbWVzKSAmJiBuYW1lcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgbmFtZXMgPSBbXTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBleHRyYXM7IGkrKykge1xuICAgICAgICBsZXQgbmFtZSA9IGV4dHJhTmFtZXNbaV07XG4gICAgICAgIGxldCBpZHggPSBuYW1lcy5pbmRleE9mKG5hbWUpO1xuXG4gICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgbGVuZ3RoID0gbmFtZXMucHVzaChuYW1lKTtcbiAgICAgICAgICBzdGFjay5wdXNoKG90aGVyLnJlZmVyZW5jZXNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgICB0aGlzLl9uYW1lcyA9IG5hbWVzO1xuICAgICAgdGhpcy5fYXROYW1lcyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcmVmZXJlbmNlcygpOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W10ge1xuICAgIGxldCByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcztcblxuICAgIGlmICghcmVmZXJlbmNlcykge1xuICAgICAgbGV0IHsgYmFzZSwgbGVuZ3RoLCBzdGFjayB9ID0gdGhpcztcbiAgICAgIHJlZmVyZW5jZXMgPSB0aGlzLl9yZWZlcmVuY2VzID0gc3RhY2suc2xpY2VBcnJheTxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+PihcbiAgICAgICAgYmFzZSxcbiAgICAgICAgYmFzZSArIGxlbmd0aFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgfVxuXG4gIHByaXZhdGUgdG9TeW50aGV0aWNOYW1lKHRoaXM6IHZvaWQsIG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5hbWUuc2xpY2UoMSk7XG4gIH1cblxuICBwcml2YXRlIHRvQXROYW1lKHRoaXM6IHZvaWQsIG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBAJHtuYW1lfWA7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhcHR1cmVkTmFtZWRBcmd1bWVudHNJbXBsIGltcGxlbWVudHMgQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyB7XG4gIHB1YmxpYyBsZW5ndGg6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWFwOiBPcHRpb248RGljdDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+Pj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhZzogVGFnLFxuICAgIHB1YmxpYyBuYW1lczogc3RyaW5nW10sXG4gICAgcHVibGljIHJlZmVyZW5jZXM6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj5bXVxuICApIHtcbiAgICB0aGlzLmxlbmd0aCA9IG5hbWVzLmxlbmd0aDtcbiAgICB0aGlzLl9tYXAgPSBudWxsO1xuICB9XG5cbiAgZ2V0IG1hcCgpIHtcbiAgICBsZXQgbWFwID0gdGhpcy5fbWFwO1xuXG4gICAgaWYgKCFtYXApIHtcbiAgICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgICAgbWFwID0gdGhpcy5fbWFwID0gZGljdDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+PigpO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBuYW1lID0gbmFtZXNbaV07XG4gICAgICAgIG1hcCFbbmFtZV0gPSByZWZlcmVuY2VzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXA7XG4gIH1cblxuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gIH1cblxuICBnZXQ8VCBleHRlbmRzIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+KG5hbWU6IHN0cmluZyk6IFQge1xuICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgIGxldCBpZHggPSBuYW1lcy5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiAoVU5ERUZJTkVEX1JFRkVSRU5DRSBhcyB1bnNhZmUpIGFzIFQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZWZlcmVuY2VzW2lkeF0gYXMgVDtcbiAgICB9XG4gIH1cblxuICB2YWx1ZSgpOiBEaWN0PHVua25vd24+IHtcbiAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICBsZXQgb3V0ID0gZGljdDx1bmtub3duPigpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG5hbWUgPSBuYW1lc1tpXTtcbiAgICAgIG91dFtuYW1lXSA9IHJlZmVyZW5jZXNbaV0udmFsdWUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvU3ltYm9sTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCYke25hbWV9YDtcbn1cblxuZXhwb3J0IGNsYXNzIEJsb2NrQXJndW1lbnRzSW1wbDxDIGV4dGVuZHMgSml0T3JBb3RCbG9jaz4gaW1wbGVtZW50cyBCbG9ja0FyZ3VtZW50czxDPiB7XG4gIHByaXZhdGUgc3RhY2shOiBFdmFsdWF0aW9uU3RhY2s7XG4gIHByaXZhdGUgaW50ZXJuYWxWYWx1ZXM6IE9wdGlvbjxudW1iZXJbXT4gPSBudWxsO1xuICBwcml2YXRlIF9zeW1ib2xOYW1lczogT3B0aW9uPHN0cmluZ1tdPiA9IG51bGw7XG5cbiAgcHVibGljIGludGVybmFsVGFnOiBPcHRpb248VGFnPiA9IG51bGw7XG4gIHB1YmxpYyBuYW1lczogc3RyaW5nW10gPSBFTVBUWV9BUlJBWTtcblxuICBwdWJsaWMgbGVuZ3RoID0gMDtcbiAgcHVibGljIGJhc2UgPSAwO1xuXG4gIGVtcHR5KHN0YWNrOiBFdmFsdWF0aW9uU3RhY2ssIGJhc2U6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLm5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5fc3ltYm9sTmFtZXMgPSBudWxsO1xuXG4gICAgdGhpcy5pbnRlcm5hbFRhZyA9IENPTlNUQU5UX1RBRztcbiAgICB0aGlzLmludGVybmFsVmFsdWVzID0gRU1QVFlfQVJSQVk7XG4gIH1cblxuICBzZXR1cChzdGFjazogRXZhbHVhdGlvblN0YWNrLCBiYXNlOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCBuYW1lczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgdGhpcy5uYW1lcyA9IG5hbWVzO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgdGhpcy5fc3ltYm9sTmFtZXMgPSBudWxsO1xuXG4gICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5pbnRlcm5hbFRhZyA9IENPTlNUQU5UX1RBRztcbiAgICAgIHRoaXMuaW50ZXJuYWxWYWx1ZXMgPSBFTVBUWV9BUlJBWTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnRlcm5hbFRhZyA9IG51bGw7XG4gICAgICB0aGlzLmludGVybmFsVmFsdWVzID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXQgdmFsdWVzKCk6IEJsb2NrVmFsdWVbXSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuaW50ZXJuYWxWYWx1ZXM7XG5cbiAgICBpZiAoIXZhbHVlcykge1xuICAgICAgbGV0IHsgYmFzZSwgbGVuZ3RoLCBzdGFjayB9ID0gdGhpcztcbiAgICAgIHZhbHVlcyA9IHRoaXMuaW50ZXJuYWxWYWx1ZXMgPSBzdGFjay5zbGljZUFycmF5PG51bWJlcj4oYmFzZSwgYmFzZSArIGxlbmd0aCAqIDMpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZXM7XG4gIH1cblxuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmFtZXMhLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICB9XG5cbiAgZ2V0KG5hbWU6IHN0cmluZyk6IE9wdGlvbjxTY29wZUJsb2NrPEM+PiB7XG4gICAgbGV0IGlkeCA9IHRoaXMubmFtZXMhLmluZGV4T2YobmFtZSk7XG5cbiAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IHsgYmFzZSwgc3RhY2sgfSA9IHRoaXM7XG5cbiAgICBsZXQgdGFibGUgPSBjaGVjayhzdGFjay5nZXQoaWR4ICogMywgYmFzZSksIENoZWNrT3B0aW9uKENoZWNrQmxvY2tTeW1ib2xUYWJsZSkpO1xuICAgIGxldCBzY29wZSA9IGNoZWNrKHN0YWNrLmdldChpZHggKiAzICsgMSwgYmFzZSksIENoZWNrT3B0aW9uKENoZWNrU2NvcGUpKTtcbiAgICBsZXQgaGFuZGxlID0gY2hlY2soXG4gICAgICBzdGFjay5nZXQoaWR4ICogMyArIDIsIGJhc2UpLFxuICAgICAgQ2hlY2tPcHRpb24oQ2hlY2tPcihDaGVja0hhbmRsZSwgQ2hlY2tDb21waWxhYmxlQmxvY2spKVxuICAgICk7XG5cbiAgICByZXR1cm4gaGFuZGxlID09PSBudWxsID8gbnVsbCA6IChbaGFuZGxlLCBzY29wZSEsIHRhYmxlIV0gYXMgU2NvcGVCbG9jazxDPik7XG4gIH1cblxuICBjYXB0dXJlKCk6IENhcHR1cmVkQmxvY2tBcmd1bWVudHMge1xuICAgIHJldHVybiBuZXcgQ2FwdHVyZWRCbG9ja0FyZ3VtZW50c0ltcGwodGhpcy5uYW1lcywgdGhpcy52YWx1ZXMpO1xuICB9XG5cbiAgZ2V0IHN5bWJvbE5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgc3ltYm9sTmFtZXMgPSB0aGlzLl9zeW1ib2xOYW1lcztcblxuICAgIGlmIChzeW1ib2xOYW1lcyA9PT0gbnVsbCkge1xuICAgICAgc3ltYm9sTmFtZXMgPSB0aGlzLl9zeW1ib2xOYW1lcyA9IHRoaXMubmFtZXMubWFwKHRvU3ltYm9sTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN5bWJvbE5hbWVzO1xuICB9XG59XG5cbmNsYXNzIENhcHR1cmVkQmxvY2tBcmd1bWVudHNJbXBsIGltcGxlbWVudHMgQ2FwdHVyZWRCbG9ja0FyZ3VtZW50cyB7XG4gIHB1YmxpYyBsZW5ndGg6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZXM6IHN0cmluZ1tdLCBwdWJsaWMgdmFsdWVzOiBCbG9ja1ZhbHVlW10pIHtcbiAgICB0aGlzLmxlbmd0aCA9IG5hbWVzLmxlbmd0aDtcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBPcHRpb248U2NvcGVCbG9jaz4ge1xuICAgIGxldCBpZHggPSB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSk7XG5cbiAgICBpZiAoaWR4ID09PSAtMSkgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy52YWx1ZXNbaWR4ICogMyArIDJdIGFzIG51bWJlcixcbiAgICAgIHRoaXMudmFsdWVzW2lkeCAqIDMgKyAxXSBhcyBTY29wZTxKaXRPckFvdEJsb2NrPixcbiAgICAgIHRoaXMudmFsdWVzW2lkeCAqIDNdIGFzIEJsb2NrU3ltYm9sVGFibGUsXG4gICAgXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2FwdHVyZWRBcmd1bWVudHNJbXBsIGltcGxlbWVudHMgQ2FwdHVyZWRBcmd1bWVudHMge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGFnOiBUYWcsXG4gICAgcHVibGljIHBvc2l0aW9uYWw6IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyxcbiAgICBwdWJsaWMgbmFtZWQ6IENhcHR1cmVkTmFtZWRBcmd1bWVudHMsXG4gICAgcHVibGljIGxlbmd0aDogbnVtYmVyXG4gICkge31cblxuICB2YWx1ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZWQ6IHRoaXMubmFtZWQudmFsdWUoKSxcbiAgICAgIHBvc2l0aW9uYWw6IHRoaXMucG9zaXRpb25hbC52YWx1ZSgpLFxuICAgIH07XG4gIH1cbn1cblxuY29uc3QgRU1QVFlfTkFNRUQgPSBuZXcgQ2FwdHVyZWROYW1lZEFyZ3VtZW50c0ltcGwoQ09OU1RBTlRfVEFHLCBFTVBUWV9BUlJBWSwgRU1QVFlfQVJSQVkpO1xuY29uc3QgRU1QVFlfUE9TSVRJT05BTCA9IG5ldyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsKENPTlNUQU5UX1RBRywgRU1QVFlfQVJSQVkpO1xuZXhwb3J0IGNvbnN0IEVNUFRZX0FSR1MgPSBuZXcgQ2FwdHVyZWRBcmd1bWVudHNJbXBsKENPTlNUQU5UX1RBRywgRU1QVFlfUE9TSVRJT05BTCwgRU1QVFlfTkFNRUQsIDApO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==

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

var _assert = require("./assert");
var _symbols = require("../../symbols");

@@ -117,3 +115,3 @@

if (block) {
if (block && !isUndefinedReference(block)) {
stack.push(block[2]);

@@ -129,15 +127,18 @@ stack.push(block[1]);

function isUndefinedReference(input) {
false && (0, _util.assert)(Array.isArray(input) || input === _references.UNDEFINED_REFERENCE, 'a reference other than UNDEFINED_REFERENCE is illegal here');
return input === _references.UNDEFINED_REFERENCE;
}
_opcodes.APPEND_OPCODES.add(26
/* HasBlock */
, function (vm) {
var block = vm.stack.pop(); // TODO: We check if the block is null or UNDEFINED_REFERENCE here, but it should
// really only check if the block is null. The UNDEFINED_REFERENCE use case is for
// when we try to invoke a curry-component directly as a variable:
//
// <Foo as |bar|>{{bar}}</Foo>
//
// This code path does not work the same way as most components. In the future,
// we should make sure that it does, so things are setup correctly.
var stack = vm.stack;
var block = stack.pop();
vm.stack.push(block === null || block === _references.UNDEFINED_REFERENCE ? _references.FALSE_REFERENCE : _references.TRUE_REFERENCE);
if (block && !isUndefinedReference(block)) {
stack.push(_references.TRUE_REFERENCE);
} else {
stack.push(_references.FALSE_REFERENCE);
}
});

@@ -152,3 +153,2 @@

var table = vm.stack.pop();
false && (0, _util.assert)(table === null || table && typeof table === 'object' && Array.isArray(table.parameters), (0, _assert.stackAssert)('Option<BlockSymbolTable>', table));
var hasBlockParams = table && table.parameters.length;

@@ -171,2 +171,2 @@ vm.stack.push(hasBlockParams ? _references.TRUE_REFERENCE : _references.FALSE_REFERENCE);

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2NvbXBpbGVkL29wY29kZXMvZXhwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFRQTs7QUFJQSx3QkFBQSxHQUFBLENBQWtCO0FBQUE7QUFBbEIsRUFBOEIsVUFBQSxFQUFBLEVBQUEsSUFBQSxFQUF3QjtBQUFBLE1BQVosTUFBWSxHQUFBLElBQUEsQ0FBakIsR0FBaUI7QUFDcEQsTUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFkLEtBQUE7QUFDQSxNQUFJLE1BQU0sR0FBUyxFQUFFLENBQUYsT0FBQSxDQUFBLFFBQUEsQ0FBQSxPQUFBLENBQW5CLE1BQW1CLENBQW5CO0FBQ0EsTUFBSSxJQUFJLEdBQVMsS0FBSyxDQUF0QixHQUFpQixFQUFqQjtBQUNBLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQSxJQUFBLEVBQWxCLEVBQWtCLENBQWxCO0FBRUEsRUFBQSxFQUFFLENBQUYsU0FBQSxDQUFBLE9BQUEsRUFBQSxLQUFBO0FBTkYsQ0FBQTs7QUFTQSx3QkFBQSxHQUFBLENBQWtCO0FBQUE7QUFBbEIsRUFBbUMsVUFBQSxFQUFBLEVBQUEsS0FBQSxFQUF3QjtBQUFBLE1BQVosTUFBWSxHQUFBLEtBQUEsQ0FBakIsR0FBaUI7QUFDekQsTUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFGLGtCQUFBLENBQVgsTUFBVyxDQUFYO0FBQ0EsRUFBQSxFQUFFLENBQUYsS0FBQSxDQUFBLElBQUEsQ0FBQSxJQUFBO0FBRkYsQ0FBQTs7QUFLQSx3QkFBQSxHQUFBLENBQWtCO0FBQUE7QUFBbEIsRUFBbUMsVUFBQSxFQUFBLEVBQUEsS0FBQSxFQUF3QjtBQUFBLE1BQVosTUFBWSxHQUFBLEtBQUEsQ0FBakIsR0FBaUI7QUFDekQsTUFBSSxJQUFJLEdBQVMsRUFBRSxDQUFGLEtBQUEsQ0FBakIsR0FBaUIsRUFB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LElBQUEsQ0FBYyxJQUFBLHVCQUFBLENBQWQsR0FBYyxDQUFkO0FBUkYsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbiwgT3AsIEppdFNjb3BlQmxvY2ssIEFvdFNjb3BlQmxvY2ssIFZNIGFzIFB1YmxpY1ZNIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7ICR2MCB9IGZyb20gJ0BnbGltbWVyL3ZtJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBGQUxTRV9SRUZFUkVOQ0UsIFRSVUVfUkVGRVJFTkNFLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb25jYXRSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy9jb25jYXQnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBjaGVjaywgQ2hlY2tPcHRpb24sIENoZWNrSGFuZGxlLCBDaGVja0Jsb2NrU3ltYm9sVGFibGUsIENoZWNrT3IgfSBmcm9tICdAZ2xpbW1lci9kZWJ1Zyc7XG5pbXBvcnQgeyBzdGFja0Fzc2VydCB9IGZyb20gJy4vYXNzZXJ0JztcbmltcG9ydCB7XG4gIENoZWNrQXJndW1lbnRzLFxuICBDaGVja1BhdGhSZWZlcmVuY2UsXG4gIENoZWNrQ29tcGlsYWJsZUJsb2NrLFxuICBDaGVja1Njb3BlLFxuICBDaGVja0hlbHBlcixcbn0gZnJvbSAnLi8tZGVidWctc3RyaXAnO1xuaW1wb3J0IHsgQ09OU1RBTlRTIH0gZnJvbSAnLi4vLi4vc3ltYm9scyc7XG5cbmV4cG9ydCB0eXBlIEZ1bmN0aW9uRXhwcmVzc2lvbjxUPiA9ICh2bTogUHVibGljVk0pID0+IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8VD47XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5IZWxwZXIsICh2bSwgeyBvcDE6IGhhbmRsZSB9KSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgaGVscGVyID0gY2hlY2sodm0ucnVudGltZS5yZXNvbHZlci5yZXNvbHZlKGhhbmRsZSksIENoZWNrSGVscGVyKTtcbiAgbGV0IGFyZ3MgPSBjaGVjayhzdGFjay5wb3AoKSwgQ2hlY2tBcmd1bWVudHMpO1xuICBsZXQgdmFsdWUgPSBoZWxwZXIoYXJncywgdm0pO1xuXG4gIHZtLmxvYWRWYWx1ZSgkdjAsIHZhbHVlKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuR2V0VmFyaWFibGUsICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gIGxldCBleHByID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCk7XG4gIHZtLnN0YWNrLnB1c2goZXhwcik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlNldFZhcmlhYmxlLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICBsZXQgZXhwciA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1BhdGhSZWZlcmVuY2UpO1xuICB2bS5zY29wZSgpLmJpbmRTeW1ib2woc3ltYm9sLCBleHByKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoXG4gIE9wLlNldEppdEJsb2NrLFxuICAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICAgIGxldCBoYW5kbGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tDb21waWxhYmxlQmxvY2spKTtcbiAgICBsZXQgc2NvcGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tTY29wZSk7XG4gICAgbGV0IHRhYmxlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrQmxvY2tTeW1ib2xUYWJsZSkpO1xuXG4gICAgbGV0IGJsb2NrOiBPcHRpb248Sml0U2NvcGVCbG9jaz4gPSB0YWJsZSA/IFtoYW5kbGUhLCBzY29wZSwgdGFibGVdIDogbnVsbDtcblxuICAgIHZtLnNjb3BlKCkuYmluZEJsb2NrKHN5bWJvbCwgYmxvY2spO1xuICB9LFxuICAnaml0J1xuKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlNldEFvdEJsb2NrLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICBsZXQgaGFuZGxlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrSGFuZGxlKSk7XG4gIGxldCBzY29wZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1Njb3BlKTtcbiAgbGV0IHRhYmxlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrQmxvY2tTeW1ib2xUYWJsZSkpO1xuXG4gIGxldCBibG9jazogT3B0aW9uPEFvdFNjb3BlQmxvY2s+ID0gdGFibGUgPyBbaGFuZGxlISwgc2NvcGUsIHRhYmxlXSA6IG51bGw7XG5cbiAgdm0uc2NvcGUoKS5iaW5kQmxvY2soc3ltYm9sLCBibG9jayk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlJlc29sdmVNYXliZUxvY2FsLCAodm0sIHsgb3AxOiBfbmFtZSB9KSA9PiB7XG4gIGxldCBuYW1lID0gdm1bQ09OU1RBTlRTXS5nZXRTdHJpbmcoX25hbWUpO1xuICBsZXQgbG9jYWxzID0gdm0uc2NvcGUoKS5nZXRQYXJ0aWFsTWFwKCkhO1xuXG4gIGxldCByZWYgPSBsb2NhbHNbbmFtZV07XG4gIGlmIChyZWYgPT09IHVuZGVmaW5lZCkge1xuICAgIHJlZiA9IHZtLmdldFNlbGYoKS5nZXQobmFtZSk7XG4gIH1cblxuICB2bS5zdGFjay5wdXNoKHJlZik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlJvb3RTY29wZSwgKHZtLCB7IG9wMTogc3ltYm9scyB9KSA9PiB7XG4gIHZtLnB1c2hSb290U2NvcGUoc3ltYm9scyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkdldFByb3BlcnR5LCAodm0sIHsgb3AxOiBfa2V5IH0pID0+IHtcbiAgbGV0IGtleSA9IHZtW0NPTlNUQU5UU10uZ2V0U3RyaW5nKF9rZXkpO1xuICBsZXQgZXhwciA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1BhdGhSZWZlcmVuY2UpO1xuICB2bS5zdGFjay5wdXNoKGV4cHIuZ2V0KGtleSkpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRCbG9jaywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgbGV0IHsgc3RhY2sgfSA9IHZtO1xuICBsZXQgYmxvY2sgPSB2bS5zY29wZSgpLmdldEJsb2NrKF9ibG9jayk7XG5cbiAgc3RhY2sucHVzaChibG9jayk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkppdFNwcmVhZEJsb2NrLCB2bSA9PiB7XG4gIGxldCB7IHN0YWNrIH0gPSB2bTtcbiAgbGV0IGJsb2NrID0gc3RhY2sucG9wPEppdFNjb3BlQmxvY2s+KCk7XG5cbiAgaWYgKGJsb2NrKSB7XG4gICAgc3RhY2sucHVzaChibG9ja1syXSk7XG4gICAgc3RhY2sucHVzaChibG9ja1sxXSk7XG4gICAgc3RhY2sucHVzaChibG9ja1swXSk7XG4gIH0gZWxzZSB7XG4gICAgc3RhY2sucHVzaChudWxsKTtcbiAgICBzdGFjay5wdXNoKG51bGwpO1xuICAgIHN0YWNrLnB1c2gobnVsbCk7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSGFzQmxvY2ssIHZtID0+IHtcbiAgbGV0IGJsb2NrID0gdm0uc3RhY2sucG9wKCk7XG5cbiAgLy8gVE9ETzogV2UgY2hlY2sgaWYgdGhlIGJsb2NrIGlzIG51bGwgb3IgVU5ERUZJTkVEX1JFRkVSRU5DRSBoZXJlLCBidXQgaXQgc2hvdWxkXG4gIC8vIHJlYWxseSBvbmx5IGNoZWNrIGlmIHRoZSBibG9jayBpcyBudWxsLiBUaGUgVU5ERUZJTkVEX1JFRkVSRU5DRSB1c2UgY2FzZSBpcyBmb3JcbiAgLy8gd2hlbiB3ZSB0cnkgdG8gaW52b2tlIGEgY3VycnktY29tcG9uZW50IGRpcmVjdGx5IGFzIGEgdmFyaWFibGU6XG4gIC8vXG4gIC8vIDxGb28gYXMgfGJhcnw+e3tiYXJ9fTwvRm9vPlxuICAvL1xuICAvLyBUaGlzIGNvZGUgcGF0aCBkb2VzIG5vdCB3b3JrIHRoZSBzYW1lIHdheSBhcyBtb3N0IGNvbXBvbmVudHMuIEluIHRoZSBmdXR1cmUsXG4gIC8vIHdlIHNob3VsZCBtYWtlIHN1cmUgdGhhdCBpdCBkb2VzLCBzbyB0aGluZ3MgYXJlIHNldHVwIGNvcnJlY3RseS5cbiAgdm0uc3RhY2sucHVzaChibG9jayA9PT0gbnVsbCB8fCBibG9jayA9PT0gVU5ERUZJTkVEX1JFRkVSRU5DRSA/IEZBTFNFX1JFRkVSRU5DRSA6IFRSVUVfUkVGRVJFTkNFKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSGFzQmxvY2tQYXJhbXMsIHZtID0+IHtcbiAgLy8gRklYTUUobW11bik6IHNob3VsZCBvbmx5IG5lZWQgdG8gcHVzaCB0aGUgc3ltYm9sIHRhYmxlXG4gIGxldCBibG9jayA9IHZtLnN0YWNrLnBvcCgpO1xuICBsZXQgc2NvcGUgPSB2bS5zdGFjay5wb3AoKTtcbiAgY2hlY2soYmxvY2ssIENoZWNrT3B0aW9uKENoZWNrT3IoQ2hlY2tIYW5kbGUsIENoZWNrQ29tcGlsYWJsZUJsb2NrKSkpO1xuICBjaGVjayhzY29wZSwgQ2hlY2tPcHRpb24oQ2hlY2tTY29wZSkpO1xuICBsZXQgdGFibGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tCbG9ja1N5bWJvbFRhYmxlKSk7XG5cbiAgYXNzZXJ0KFxuICAgIHRhYmxlID09PSBudWxsIHx8ICh0YWJsZSAmJiB0eXBlb2YgdGFibGUgPT09ICdvYmplY3QnICYmIEFycmF5LmlzQXJyYXkodGFibGUucGFyYW1ldGVycykpLFxuICAgIHN0YWNrQXNzZXJ0KCdPcHRpb248QmxvY2tTeW1ib2xUYWJsZT4nLCB0YWJsZSlcbiAgKTtcblxuICBsZXQgaGFzQmxvY2tQYXJhbXMgPSB0YWJsZSAmJiB0YWJsZS5wYXJhbWV0ZXJzLmxlbmd0aDtcbiAgdm0uc3RhY2sucHVzaChoYXNCbG9ja1BhcmFtcyA/IFRSVUVfUkVGRVJFTkNFIDogRkFMU0VfUkVGRVJFTkNFKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ29uY2F0LCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB7XG4gIGxldCBvdXQ6IEFycmF5PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+ID0gbmV3IEFycmF5KGNvdW50KTtcblxuICBmb3IgKGxldCBpID0gY291bnQ7IGkgPiAwOyBpLS0pIHtcbiAgICBsZXQgb2Zmc2V0ID0gaSAtIDE7XG4gICAgb3V0W29mZnNldF0gPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tQYXRoUmVmZXJlbmNlKTtcbiAgfVxuXG4gIHZtLnN0YWNrLnB1c2gobmV3IENvbmNhdFJlZmVyZW5jZShvdXQpKTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2NvbXBpbGVkL29wY29kZXMvZXhwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFrQkE7O0FBSUEsd0JBQUEsR0FBQSxDQUFrQjtBQUFBO0FBQWxCLEVBQThCLFVBQUEsRUFBQSxFQUFBLElBQUEsRUFBd0I7QUFBQSxNQUFaLE1BQVksR0FBQSxJQUFBLENBQWpCLEdBQWlCO0FBQ3BELE1BQUksS0FBSyxHQUFHLEVBQUUsQ0FBZCxLQUFBO0FBQ0EsTUFBSSxNQUFNLEdBQVMsRUFBRSxDQUFGLE9BQUEsQ0FBQSxRQUFBLENBQUEsT0FBQSxDQUFuQixNQUFtQixDQUFuQjtBQUNBLE1BQUksSUFBSSxHQUFTLEtBQUssQ0FBdEIsR0FBaUIsRUFBakI7QUFDQSxNQUFJLEtBQUssR0FBRyxNQUFNLENBQUEsSUFBQSxFQUFsQixFQUFrQixDQUFsQjtBQUVBLEVBQUEsRUFBRSxDQUFGLFNBQUEsQ0FBQSxPQUFBLEVBQUEsS0FBQTtBQU5GLENBQUE7O0FBU0Esd0JBQUEsR0FBQSxDQUFrQjtBQUFBO0FBQWxCLEVBQW1DLFVBQUEsRUFBQSxFQUFBLEtBQUEsRUFBd0I7QUFBQSxNQUFaLE1BQVksR0FBQSxLQUFBLENBQWpCLEdBQWlCO0FBQ3pELE1BQUksSUFBSSxHQUFHLEVBQUUsQ0FBRixrQkFBQSxDQUFYLE1BQVcsQ0FBWDtBQUNBLEVBQUEsRUFBRSxDQUFGLEtBQUEsQ0FBQSxJQUFBLENBQUEsSUFBQTtBQUZGLENBQUE7O0FBS0Esd0JBQUEsR0FBQSxDQUFrQjtBQUFBO0FBQWxCLEVBQW1DLFVBQUEsRUFBQSxFQUFBLEtBQUEsRUFBd0I7QUFBQSxNQUFaLE1BQVksR0FBQSxLQUFBLENBQWpCLEdBQWlCO0FBQ3pELE1BQUksSUFBSSxHQUFTLEVBQUUsQ0FBRixLQUFBLENBQWpCLEdBQWlCLEVBQWpCO0FB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QSxDQUFwQixHQUFvQixFQUFwQjtBQUNEOztBQUVELEVBQUEsRUFBRSxDQUFGLEtBQUEsQ0FBQSxJQUFBLENBQWMsSUFBQSx1QkFBQSxDQUFkLEdBQWMsQ0FBZDtBQVJGLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcHRpb24sIE9wLCBKaXRTY29wZUJsb2NrLCBBb3RTY29wZUJsb2NrLCBWTSBhcyBQdWJsaWNWTSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7ICR2MCB9IGZyb20gJ0BnbGltbWVyL3ZtJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBGQUxTRV9SRUZFUkVOQ0UsIFRSVUVfUkVGRVJFTkNFLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb25jYXRSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy9jb25jYXQnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBjaGVjayxcbiAgQ2hlY2tPcHRpb24sXG4gIENoZWNrSGFuZGxlLFxuICBDaGVja0Jsb2NrU3ltYm9sVGFibGUsXG4gIENoZWNrT3IsXG4gIENoZWNrTWF5YmUsXG59IGZyb20gJ0BnbGltbWVyL2RlYnVnJztcbmltcG9ydCB7XG4gIENoZWNrQXJndW1lbnRzLFxuICBDaGVja1BhdGhSZWZlcmVuY2UsXG4gIENoZWNrQ29tcGlsYWJsZUJsb2NrLFxuICBDaGVja1Njb3BlLFxuICBDaGVja0hlbHBlcixcbiAgQ2hlY2tVbmRlZmluZWRSZWZlcmVuY2UsXG4gIENoZWNrU2NvcGVCbG9jayxcbn0gZnJvbSAnLi8tZGVidWctc3RyaXAnO1xuaW1wb3J0IHsgQ09OU1RBTlRTIH0gZnJvbSAnLi4vLi4vc3ltYm9scyc7XG5cbmV4cG9ydCB0eXBlIEZ1bmN0aW9uRXhwcmVzc2lvbjxUPiA9ICh2bTogUHVibGljVk0pID0+IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8VD47XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5IZWxwZXIsICh2bSwgeyBvcDE6IGhhbmRsZSB9KSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgaGVscGVyID0gY2hlY2sodm0ucnVudGltZS5yZXNvbHZlci5yZXNvbHZlKGhhbmRsZSksIENoZWNrSGVscGVyKTtcbiAgbGV0IGFyZ3MgPSBjaGVjayhzdGFjay5wb3AoKSwgQ2hlY2tBcmd1bWVudHMpO1xuICBsZXQgdmFsdWUgPSBoZWxwZXIoYXJncywgdm0pO1xuXG4gIHZtLmxvYWRWYWx1ZSgkdjAsIHZhbHVlKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuR2V0VmFyaWFibGUsICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gIGxldCBleHByID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCk7XG4gIHZtLnN0YWNrLnB1c2goZXhwcik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlNldFZhcmlhYmxlLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICBsZXQgZXhwciA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1BhdGhSZWZlcmVuY2UpO1xuICB2bS5zY29wZSgpLmJpbmRTeW1ib2woc3ltYm9sLCBleHByKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoXG4gIE9wLlNldEppdEJsb2NrLFxuICAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICAgIGxldCBoYW5kbGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tDb21waWxhYmxlQmxvY2spKTtcbiAgICBsZXQgc2NvcGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tTY29wZSk7XG4gICAgbGV0IHRhYmxlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrQmxvY2tTeW1ib2xUYWJsZSkpO1xuXG4gICAgbGV0IGJsb2NrOiBPcHRpb248Sml0U2NvcGVCbG9jaz4gPSB0YWJsZSA/IFtoYW5kbGUhLCBzY29wZSwgdGFibGVdIDogbnVsbDtcblxuICAgIHZtLnNjb3BlKCkuYmluZEJsb2NrKHN5bWJvbCwgYmxvY2spO1xuICB9LFxuICAnaml0J1xuKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlNldEFvdEJsb2NrLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICBsZXQgaGFuZGxlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrSGFuZGxlKSk7XG4gIGxldCBzY29wZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1Njb3BlKTtcbiAgbGV0IHRhYmxlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrQmxvY2tTeW1ib2xUYWJsZSkpO1xuXG4gIGxldCBibG9jazogT3B0aW9uPEFvdFNjb3BlQmxvY2s+ID0gdGFibGUgPyBbaGFuZGxlISwgc2NvcGUsIHRhYmxlXSA6IG51bGw7XG5cbiAgdm0uc2NvcGUoKS5iaW5kQmxvY2soc3ltYm9sLCBibG9jayk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlJlc29sdmVNYXliZUxvY2FsLCAodm0sIHsgb3AxOiBfbmFtZSB9KSA9PiB7XG4gIGxldCBuYW1lID0gdm1bQ09OU1RBTlRTXS5nZXRTdHJpbmcoX25hbWUpO1xuICBsZXQgbG9jYWxzID0gdm0uc2NvcGUoKS5nZXRQYXJ0aWFsTWFwKCkhO1xuXG4gIGxldCByZWYgPSBsb2NhbHNbbmFtZV07XG4gIGlmIChyZWYgPT09IHVuZGVmaW5lZCkge1xuICAgIHJlZiA9IHZtLmdldFNlbGYoKS5nZXQobmFtZSk7XG4gIH1cblxuICB2bS5zdGFjay5wdXNoKHJlZik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlJvb3RTY29wZSwgKHZtLCB7IG9wMTogc3ltYm9scyB9KSA9PiB7XG4gIHZtLnB1c2hSb290U2NvcGUoc3ltYm9scyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkdldFByb3BlcnR5LCAodm0sIHsgb3AxOiBfa2V5IH0pID0+IHtcbiAgbGV0IGtleSA9IHZtW0NPTlNUQU5UU10uZ2V0U3RyaW5nKF9rZXkpO1xuICBsZXQgZXhwciA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1BhdGhSZWZlcmVuY2UpO1xuICB2bS5zdGFjay5wdXNoKGV4cHIuZ2V0KGtleSkpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRCbG9jaywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgbGV0IHsgc3RhY2sgfSA9IHZtO1xuICBsZXQgYmxvY2sgPSB2bS5zY29wZSgpLmdldEJsb2NrKF9ibG9jayk7XG5cbiAgc3RhY2sucHVzaChibG9jayk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkppdFNwcmVhZEJsb2NrLCB2bSA9PiB7XG4gIGxldCB7IHN0YWNrIH0gPSB2bTtcbiAgbGV0IGJsb2NrID0gY2hlY2soc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrT3IoQ2hlY2tTY29wZUJsb2NrLCBDaGVja1VuZGVmaW5lZFJlZmVyZW5jZSkpKTtcblxuICBpZiAoYmxvY2sgJiYgIWlzVW5kZWZpbmVkUmVmZXJlbmNlKGJsb2NrKSkge1xuICAgIHN0YWNrLnB1c2goYmxvY2tbMl0pO1xuICAgIHN0YWNrLnB1c2goYmxvY2tbMV0pO1xuICAgIHN0YWNrLnB1c2goYmxvY2tbMF0pO1xuICB9IGVsc2Uge1xuICAgIHN0YWNrLnB1c2gobnVsbCk7XG4gICAgc3RhY2sucHVzaChudWxsKTtcbiAgICBzdGFjay5wdXNoKG51bGwpO1xuICB9XG59KTtcblxuZnVuY3Rpb24gaXNVbmRlZmluZWRSZWZlcmVuY2UoaW5wdXQ6IEppdFNjb3BlQmxvY2sgfCBSZWZlcmVuY2UpOiBpbnB1dCBpcyBSZWZlcmVuY2Uge1xuICBhc3NlcnQoXG4gICAgQXJyYXkuaXNBcnJheShpbnB1dCkgfHwgaW5wdXQgPT09IFVOREVGSU5FRF9SRUZFUkVOQ0UsXG4gICAgJ2EgcmVmZXJlbmNlIG90aGVyIHRoYW4gVU5ERUZJTkVEX1JFRkVSRU5DRSBpcyBpbGxlZ2FsIGhlcmUnXG4gICk7XG4gIHJldHVybiBpbnB1dCA9PT0gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbn1cblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkhhc0Jsb2NrLCB2bSA9PiB7XG4gIGxldCB7IHN0YWNrIH0gPSB2bTtcbiAgbGV0IGJsb2NrID0gY2hlY2soc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrT3IoQ2hlY2tTY29wZUJsb2NrLCBDaGVja1VuZGVmaW5lZFJlZmVyZW5jZSkpKTtcblxuICBpZiAoYmxvY2sgJiYgIWlzVW5kZWZpbmVkUmVmZXJlbmNlKGJsb2NrKSkge1xuICAgIHN0YWNrLnB1c2goVFJVRV9SRUZFUkVOQ0UpO1xuICB9IGVsc2Uge1xuICAgIHN0YWNrLnB1c2goRkFMU0VfUkVGRVJFTkNFKTtcbiAgfVxufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5IYXNCbG9ja1BhcmFtcywgdm0gPT4ge1xuICAvLyBGSVhNRShtbXVuKTogc2hvdWxkIG9ubHkgbmVlZCB0byBwdXNoIHRoZSBzeW1ib2wgdGFibGVcbiAgbGV0IGJsb2NrID0gdm0uc3RhY2sucG9wKCk7XG4gIGxldCBzY29wZSA9IHZtLnN0YWNrLnBvcCgpO1xuXG4gIGNoZWNrKGJsb2NrLCBDaGVja01heWJlKENoZWNrT3IoQ2hlY2tIYW5kbGUsIENoZWNrQ29tcGlsYWJsZUJsb2NrKSkpO1xuICBjaGVjayhzY29wZSwgQ2hlY2tNYXliZShDaGVja1Njb3BlKSk7XG4gIGxldCB0YWJsZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja01heWJlKENoZWNrQmxvY2tTeW1ib2xUYWJsZSkpO1xuXG4gIGxldCBoYXNCbG9ja1BhcmFtcyA9IHRhYmxlICYmIHRhYmxlLnBhcmFtZXRlcnMubGVuZ3RoO1xuICB2bS5zdGFjay5wdXNoKGhhc0Jsb2NrUGFyYW1zID8gVFJVRV9SRUZFUkVOQ0UgOiBGQUxTRV9SRUZFUkVOQ0UpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Db25jYXQsICh2bSwgeyBvcDE6IGNvdW50IH0pID0+IHtcbiAgbGV0IG91dDogQXJyYXk8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4gPSBuZXcgQXJyYXkoY291bnQpO1xuXG4gIGZvciAobGV0IGkgPSBjb3VudDsgaSA+IDA7IGktLSkge1xuICAgIGxldCBvZmZzZXQgPSBpIC0gMTtcbiAgICBvdXRbb2Zmc2V0XSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1BhdGhSZWZlcmVuY2UpO1xuICB9XG5cbiAgdm0uc3RhY2sucHVzaChuZXcgQ29uY2F0UmVmZXJlbmNlKG91dCkpO1xufSk7XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -520,2 +520,6 @@ "use strict";

function toSymbolName(name) {
return "&" + name;
}
var BlockArgumentsImpl =

@@ -526,2 +530,3 @@ /*#__PURE__*/

this.internalValues = null;
this._symbolNames = null;
this.internalTag = null;

@@ -540,2 +545,3 @@ this.names = _util.EMPTY_ARRAY;

this.length = 0;
this._symbolNames = null;
this.internalTag = _validator.CONSTANT_TAG;

@@ -550,2 +556,3 @@ this.internalValues = _util.EMPTY_ARRAY;

this.length = length;
this._symbolNames = null;

@@ -598,2 +605,13 @@ if (length === 0) {

}
}, {
key: "symbolNames",
get: function get() {
var symbolNames = this._symbolNames;
if (symbolNames === null) {
symbolNames = this._symbolNames = this.names.map(toSymbolName);
}
return symbolNames;
}
}]);

@@ -657,2 +675,2 @@

exports.EMPTY_ARGS = EMPTY_ARGS;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2FyZ3VtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBb0JBOztBQUNBOztBQU9BOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7Ozs7OztBQVFBLElBQU0sZUFBTjtBQUFBO0FBQUEsWUFBQTtBQUFBLFdBQUEsZUFBQSxHQUFBO0FBQ1UsU0FBQSxLQUFBLEdBQUEsSUFBQTtBQUNELFNBQUEsVUFBQSxHQUFhLElBQWIsdUJBQWEsRUFBYjtBQUNBLFNBQUEsS0FBQSxHQUFRLElBQVIsa0JBQVEsRUFBUjtBQUNBLFNBQUEsTUFBQSxHQUFTLElBQVQsa0JBQVMsRUFBVDtBQTJGUjs7QUEvRkQsTUFBQSxNQUFBLEdBQUEsZUFBQSxDQUFBLFNBQUE7O0FBQUEsRUFBQSxNQUFBLENBQUEsS0FBQSxHQU1FLFNBQUEsS0FBQSxDQUFBLEtBQUEsRUFBNEI7QUFDMUIsUUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFMLGtCQUFLLENBQUwsQ0FBQSxPQUFBLElBQVgsQ0FBQTtBQUVBLFNBQUEsS0FBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQUEsSUFBQTtBQUNBLFNBQUEsVUFBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQUEsSUFBQTtBQUNBLFNBQUEsTUFBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQUEsSUFBQTtBQUVBLFdBQUEsSUFBQTtBQWJKLEdBQUE7O0FBQUEsRUFBQSxNQUFBLENBQUEsS0FBQSxHQWdCRSxTQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQUEsS0FBQSxFQUFBLFVBQUEsRUFBQSxlQUFBLEVBQUEsT0FBQSxFQUtrQjtBQUVoQixTQUFBLEtBQUEsR0FBQSxLQUFBO0FBRUE7Ozs7Ozs7O0FBUUEsUUFBSSxLQUFLLEdBQUcsS0FBWixLQUFBO0FBQ0EsUUFBSSxVQUFVLEdBQUcsS0FBSyxDQUF0QixNQUFBO0FBQ0EsUUFBSSxT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QUFDRSxXQUFBLHFCQUFBLENBQUEsR0FBQSxFQUFBLFVBQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxFQUl1QjtBQUhkLFNBQUEsR0FBQSxHQUFBLEdBQUE7QUFDQSxTQUFBLFVBQUEsR0FBQSxVQUFBO0FBQ0EsU0FBQSxLQUFBLEdBQUEsS0FBQTtBQUNBLFNBQUEsTUFBQSxHQUFBLE1BQUE7QUFDTDs7QUFOTixNQUFBLE9BQUEsR0FBQSxxQkFBQSxDQUFBLFNBQUE7O0FBQUEsRUFBQSxPQUFBLENBQUEsS0FBQSxHQVFFLFNBQUEsS0FBQSxHQUFLO0FBQ0gsV0FBTztBQUNMLE1BQUEsS0FBSyxFQUFFLEtBQUEsS0FBQSxDQURGLEtBQ0UsRUFERjtBQUVMLE1BQUEsVUFBVSxFQUFFLEtBQUEsVUFBQSxDQUFBLEtBQUE7QUFGUCxLQUFQO0FBVEosR0FBQTs7QUFBQSxTQUFBLHFCQUFBO0FBQUEsQ0FBQSxFQUFBOzs7QUFnQkEsSUFBTSxXQUFXLEdBQUcsSUFBQSwwQkFBQSxDQUFBLHVCQUFBLEVBQUEsaUJBQUEsRUFBcEIsaUJBQW9CLENBQXBCO0FBQ0EsSUFBTSxnQkFBZ0IsR0FBRyxJQUFBLCtCQUFBLENBQUEsdUJBQUEsRUFBekIsaUJBQXlCLENBQXpCO0FBQ08sSUFBTSxVQUFVLEdBQUcsSUFBQSxxQkFBQSxDQUFBLHVCQUFBLEVBQUEsZ0JBQUEsRUFBQSxXQUFBLEVBQW5CLENBQW1CLENBQW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZhbHVhdGlvblN0YWNrIH0gZnJvbSAnLi9zdGFjayc7XG5pbXBvcnQgeyBkaWN0LCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgRGljdCxcbiAgT3B0aW9uLFxuICB1bnNhZmUsXG4gIEJsb2NrU3ltYm9sVGFibGUsXG4gIFZNQXJndW1lbnRzLFxuICBDYXB0dXJlZEFyZ3VtZW50cyxcbiAgUG9zaXRpb25hbEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzLFxuICBOYW1lZEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyxcbiAgSml0T3JBb3RCbG9jayxcbiAgQmxvY2tWYWx1ZSxcbiAgU2NvcGVCbG9jayxcbiAgQ2FwdHVyZWRCbG9ja0FyZ3VtZW50cyxcbiAgU2NvcGUsXG4gIEJsb2NrQXJndW1lbnRzLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgVGFnLCBDT05TVEFOVF9UQUcgfSBmcm9tICdAZ2xpbW1lci92YWxpZGF0b3InO1xuaW1wb3J0IHsgUHJpbWl0aXZlUmVmZXJlbmNlLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDaGVja0Jsb2NrU3ltYm9sVGFibGUsIGNoZWNrLCBDaGVja0hhbmRsZSwgQ2hlY2tPcHRpb24sIENoZWNrT3IgfSBmcm9tICdAZ2xpbW1lci9kZWJ1Zyc7XG5pbXBvcnQge1xuICBDaGVja1BhdGhSZWZlcmVuY2UsXG4gIENoZWNrQ29tcGlsYWJsZUJsb2NrLFxuICBDaGVja1Njb3BlLFxufSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzLy1kZWJ1Zy1zdHJpcCc7XG5pbXBvcnQgeyBjb21iaW5lVGFnZ2VkIH0gZnJvbSAnLi4vdXRpbHMvdGFncyc7XG5pbXBvcnQgeyBSRUdJU1RFUlMgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7ICRzcCB9IGZyb20gJ0BnbGltbWVyL3ZtJztcblxuLypcbiAgVGhlIGNhbGxpbmcgY29udmVudGlvbiBpczpcblxuICAqIDAtTiBibG9jayBhcmd1bWVudHMgYXQgdGhlIGJvdHRvbVxuICAqIDAtTiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBuZXh0IChsZWZ0LXRvLXJpZ2h0KVxuICAqIDAtTiBuYW1lZCBhcmd1bWVudHMgbmV4dFxuKi9cblxuZXhwb3J0IGNsYXNzIFZNQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIFZNQXJndW1lbnRzIHtcbiAgcHJpdmF0ZSBzdGFjazogT3B0aW9uPEV2YWx1YXRpb25TdGFjaz4gPSBudWxsO1xuICBwdWJsaWMgcG9zaXRpb25hbCA9IG5ldyBQb3NpdGlvbmFsQXJndW1lbnRzSW1wbCgpO1xuICBwdWJsaWMgbmFtZWQgPSBuZXcgTmFtZWRBcmd1bWVudHNJbXBsKCk7XG4gIHB1YmxpYyBibG9ja3MgPSBuZXcgQmxvY2tBcmd1bWVudHNJbXBsKCk7XG5cbiAgZW1wdHkoc3RhY2s6IEV2YWx1YXRpb25TdGFjayk6IHRoaXMge1xuICAgIGxldCBiYXNlID0gc3RhY2tbUkVHSVNURVJTXVskc3BdICsgMTtcblxuICAgIHRoaXMubmFtZWQuZW1wdHkoc3RhY2ssIGJhc2UpO1xuICAgIHRoaXMucG9zaXRpb25hbC5lbXB0eShzdGFjaywgYmFzZSk7XG4gICAgdGhpcy5ibG9ja3MuZW1wdHkoc3RhY2ssIGJhc2UpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXR1cChcbiAgICBzdGFjazogRXZhbHVhdGlvblN0YWNrLFxuICAgIG5hbWVzOiBzdHJpbmdbXSxcbiAgICBibG9ja05hbWVzOiBzdHJpbmdbXSxcbiAgICBwb3NpdGlvbmFsQ291bnQ6IG51bWJlcixcbiAgICBhdE5hbWVzOiBib29sZWFuXG4gICkge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcblxuICAgIC8qXG4gICAgICAgICAgIHwgLi4uIHwgYmxvY2tzICAgICAgfCBwb3NpdGlvbmFsICB8IG5hbWVkIHxcbiAgICAgICAgICAgfCAuLi4gfCBiMCAgICBiMSAgICB8IHAwIHAxIHAyIHAzIHwgbjAgbjEgfFxuICAgICBpbmRleCB8IC4uLiB8IDQvNS82IDcvOC85IHwgMTAgMTEgMTIgMTMgfCAxNCAxNSB8XG4gICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICBeICAgICAgICAgICAgIF4gIF5cbiAgICAgICAgICAgICAgICAgYmJhc2UgICAgICAgICBwYmFzZSAgICAgICBuYmFzZSAgc3BcbiAgICAqL1xuXG4gICAgbGV0IG5hbWVkID0gdGhpcy5uYW1lZDtcbiAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcbiAgICBsZXQgbmFtZWRCYXNlID0gc3RhY2tbUkVHSVNURVJTXVskc3BdIC0gbmFtZWRDb3VudCArIDE7XG5cbiAgICBuYW1lZC5zZXR1cChzdGFjaywgbmFtZWRCYXNlLCBuYW1lZENvdW50LCBuYW1lcywgYXROYW1lcyk7XG5cbiAgICBsZXQgcG9zaXRpb25hbCA9IHRoaXMucG9zaXRpb25hbDtcbiAgICBsZXQgcG9zaXRpb25hbEJhc2UgPSBuYW1lZEJhc2UgLSBwb3NpdGlvbmFsQ291bnQ7XG5cbiAgICBwb3NpdGlvbmFsLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsQmFzZSwgcG9zaXRpb25hbENvdW50KTtcblxuICAgIGxldCBibG9ja3MgPSB0aGlzLmJsb2NrcztcbiAgICBsZXQgYmxvY2tzQ291bnQgPSBibG9ja05hbWVzLmxlbmd0aDtcbiAgICBsZXQgYmxvY2tzQmFzZSA9IHBvc2l0aW9uYWxCYXNlIC0gYmxvY2tzQ291bnQgKiAzO1xuXG4gICAgYmxvY2tzLnNldHVwKHN0YWNrLCBibG9ja3NCYXNlLCBibG9ja3NDb3VudCwgYmxvY2tOYW1lcyk7XG4gIH1cblxuICBnZXQgdGFnKCk6IFRhZyB7XG4gICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQoW3RoaXMucG9zaXRpb25hbCwgdGhpcy5uYW1lZF0pO1xuICB9XG5cbiAgZ2V0IGJhc2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ibG9ja3MuYmFzZTtcbiAgfVxuXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmxlbmd0aCArIHRoaXMubmFtZWQubGVuZ3RoICsgdGhpcy5ibG9ja3MubGVuZ3RoICogMztcbiAgfVxuXG4gIGF0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+Pihwb3M6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uYWwuYXQ8VD4ocG9zKTtcbiAgfVxuXG4gIHJlYWxsb2Mob2Zmc2V0OiBudW1iZXIpIHtcbiAgICBsZXQgeyBzdGFjayB9ID0gdGhpcztcbiAgICBpZiAob2Zmc2V0ID4gMCAmJiBzdGFjayAhPT0gbnVsbCkge1xuICAgICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHRoaXM7XG4gICAgICBsZXQgbmV3QmFzZSA9IHBvc2l0aW9uYWwuYmFzZSArIG9mZnNldDtcbiAgICAgIGxldCBsZW5ndGggPSBwb3NpdGlvbmFsLmxlbmd0aCArIG5hbWVkLmxlbmd0aDtcblxuICAgICAgZm9yIChsZXQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHN0YWNrLmNvcHkoaSArIHBvc2l0aW9uYWwuYmFzZSwgaSArIG5ld0Jhc2UpO1xuICAgICAgfVxuXG4gICAgICBwb3NpdGlvbmFsLmJhc2UgKz0gb2Zmc2V0O1xuICAgICAgbmFtZWQuYmFzZSArPSBvZmZzZXQ7XG4gICAgICBzdGFja1tSRUdJU1RFUlNdWyRzcF0gKz0gb2Zmc2V0O1xuICAgIH1cbiAgfVxuXG4gIGNhcHR1cmUoKTogQ2FwdHVyZWRBcmd1bWVudHMge1xuICAgIGxldCBwb3NpdGlvbmFsID0gdGhpcy5wb3NpdGlvbmFsLmxlbmd0aCA9PT0gMCA/IEVNUFRZX1BPU0lUSU9OQUwgOiB0aGlzLnBvc2l0aW9uYWwuY2FwdHVyZSgpO1xuICAgIGxldCBuYW1lZCA9IHRoaXMubmFtZWQubGVuZ3RoID09PSAwID8gRU1QVFlfTkFNRUQgOiB0aGlzLm5hbWVkLmNhcHR1cmUoKTtcblxuICAgIHJldHVybiBuZXcgQ2FwdHVyZWRBcmd1bWVudHNJbXBsKHRoaXMudGFnLCBwb3NpdGlvbmFsLCBuYW1lZCwgdGhpcy5sZW5ndGgpO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgbGV0IHsgc3RhY2ssIGxlbmd0aCB9ID0gdGhpcztcbiAgICBpZiAobGVuZ3RoID4gMCAmJiBzdGFjayAhPT0gbnVsbCkgc3RhY2sucG9wKGxlbmd0aCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsIGltcGxlbWVudHMgUG9zaXRpb25hbEFyZ3VtZW50cyB7XG4gIHB1YmxpYyBiYXNlID0gMDtcbiAgcHVibGljIGxlbmd0aCA9IDA7XG5cbiAgcHJpdmF0ZSBzdGFjazogRXZhbHVhdGlvblN0YWNrID0gbnVsbCBhcyBhbnk7XG5cbiAgcHJpdmF0ZSBfdGFnOiBPcHRpb248VGFnPiA9IG51bGw7XG4gIHByaXZhdGUgX3JlZmVyZW5jZXM6IE9wdGlvbjxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W10+ID0gbnVsbDtcblxuICBlbXB0eShzdGFjazogRXZhbHVhdGlvblN0YWNrLCBiYXNlOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICB0aGlzLl90YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICB9XG5cbiAgc2V0dXAoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyLCBsZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLmJhc2UgPSBiYXNlO1xuICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuXG4gICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5fdGFnID0gQ09OU1RBTlRfVEFHO1xuICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRhZygpOiBUYWcge1xuICAgIGxldCB0YWcgPSB0aGlzLl90YWc7XG5cbiAgICBpZiAoIXRhZykge1xuICAgICAgdGFnID0gdGhpcy5fdGFnID0gY29tYmluZVRhZ2dlZCh0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0YWc7XG4gIH1cblxuICBhdDxUIGV4dGVuZHMgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4ocG9zaXRpb246IG51bWJlcik6IFQge1xuICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG5cbiAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIChVTkRFRklORURfUkVGRVJFTkNFIGFzIHVuc2FmZSkgYXMgVDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hlY2soc3RhY2suZ2V0KHBvc2l0aW9uLCBiYXNlKSwgQ2hlY2tQYXRoUmVmZXJlbmNlKSBhcyBUO1xuICB9XG5cbiAgY2FwdHVyZSgpOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwodGhpcy50YWcsIHRoaXMucmVmZXJlbmNlcyk7XG4gIH1cblxuICBwcmVwZW5kKG90aGVyOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMpIHtcbiAgICBsZXQgYWRkaXRpb25zID0gb3RoZXIubGVuZ3RoO1xuXG4gICAgaWYgKGFkZGl0aW9ucyA+IDApIHtcbiAgICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG5cbiAgICAgIHRoaXMuYmFzZSA9IGJhc2UgPSBiYXNlIC0gYWRkaXRpb25zO1xuICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGggKyBhZGRpdGlvbnM7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWRkaXRpb25zOyBpKyspIHtcbiAgICAgICAgc3RhY2suc2V0KG90aGVyLmF0KGkpLCBpLCBiYXNlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHJlZmVyZW5jZXMoKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdIHtcbiAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG5cbiAgICBpZiAoIXJlZmVyZW5jZXMpIHtcbiAgICAgIGxldCB7IHN0YWNrLCBiYXNlLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IHN0YWNrLnNsaWNlQXJyYXk8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oXG4gICAgICAgIGJhc2UsXG4gICAgICAgIGJhc2UgKyBsZW5ndGhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwgaW1wbGVtZW50cyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICBzdGF0aWMgZW1wdHkoKTogQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwoQ09OU1RBTlRfVEFHLCBFTVBUWV9BUlJBWSwgMCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGFnOiBUYWcsXG4gICAgcHVibGljIHJlZmVyZW5jZXM6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj5bXSxcbiAgICBwdWJsaWMgbGVuZ3RoID0gcmVmZXJlbmNlcy5sZW5ndGhcbiAgKSB7fVxuXG4gIGF0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+Pihwb3NpdGlvbjogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1twb3NpdGlvbl0gYXMgVDtcbiAgfVxuXG4gIHZhbHVlKCk6IHVua25vd25bXSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlcy5tYXAodGhpcy52YWx1ZU9mKTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+IHtcbiAgICBsZXQgeyByZWZlcmVuY2VzLCBsZW5ndGggfSA9IHRoaXM7XG5cbiAgICBpZiAobmFtZSA9PT0gJ2xlbmd0aCcpIHtcbiAgICAgIHJldHVybiBQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKGxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpZHggPSBwYXJzZUludChuYW1lLCAxMCk7XG5cbiAgICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVmZXJlbmNlc1tpZHhdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsdWVPZih0aGlzOiB2b2lkLCByZWZlcmVuY2U6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4pOiB1bmtub3duIHtcbiAgICByZXR1cm4gcmVmZXJlbmNlLnZhbHVlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5hbWVkQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIE5hbWVkQXJndW1lbnRzIHtcbiAgcHVibGljIGJhc2UgPSAwO1xuICBwdWJsaWMgbGVuZ3RoID0gMDtcblxuICBwcml2YXRlIHN0YWNrITogRXZhbHVhdGlvblN0YWNrO1xuXG4gIHByaXZhdGUgX3JlZmVyZW5jZXM6IE9wdGlvbjxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W10+ID0gbnVsbDtcblxuICBwcml2YXRlIF9uYW1lczogT3B0aW9uPHN0cmluZ1tdPiA9IEVNUFRZX0FSUkFZO1xuICBwcml2YXRlIF9hdE5hbWVzOiBPcHRpb248c3RyaW5nW10+ID0gRU1QVFlfQVJSQVk7XG5cbiAgZW1wdHkoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICAgIHRoaXMuX25hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgdGhpcy5fYXROYW1lcyA9IEVNUFRZX0FSUkFZO1xuICB9XG5cbiAgc2V0dXAoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbmFtZXM6IHN0cmluZ1tdLCBhdE5hbWVzOiBib29sZWFuKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLl9yZWZlcmVuY2VzID0gRU1QVFlfQVJSQVk7XG4gICAgICB0aGlzLl9uYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgICAgdGhpcy5fYXROYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcblxuICAgICAgaWYgKGF0TmFtZXMpIHtcbiAgICAgICAgdGhpcy5fbmFtZXMgPSBudWxsO1xuICAgICAgICB0aGlzLl9hdE5hbWVzID0gbmFtZXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9uYW1lcyA9IG5hbWVzO1xuICAgICAgICB0aGlzLl9hdE5hbWVzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgdGFnKCk6IFRhZyB7XG4gICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQodGhpcy5yZWZlcmVuY2VzKTtcbiAgfVxuXG4gIGdldCBuYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgbGV0IG5hbWVzID0gdGhpcy5fbmFtZXM7XG5cbiAgICBpZiAoIW5hbWVzKSB7XG4gICAgICBuYW1lcyA9IHRoaXMuX25hbWVzID0gdGhpcy5fYXROYW1lcyEubWFwKHRoaXMudG9TeW50aGV0aWNOYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmFtZXMhO1xuICB9XG5cbiAgZ2V0IGF0TmFtZXMoKTogc3RyaW5nW10ge1xuICAgIGxldCBhdE5hbWVzID0gdGhpcy5fYXROYW1lcztcblxuICAgIGlmICghYXROYW1lcykge1xuICAgICAgYXROYW1lcyA9IHRoaXMuX2F0TmFtZXMgPSB0aGlzLl9uYW1lcyEubWFwKHRoaXMudG9BdE5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBhdE5hbWVzITtcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGdldDxUIGV4dGVuZHMgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4obmFtZTogc3RyaW5nLCBhdE5hbWVzID0gZmFsc2UpOiBUIHtcbiAgICBsZXQgeyBiYXNlLCBzdGFjayB9ID0gdGhpcztcblxuICAgIGxldCBuYW1lcyA9IGF0TmFtZXMgPyB0aGlzLmF0TmFtZXMgOiB0aGlzLm5hbWVzO1xuXG4gICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG5cbiAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIChVTkRFRklORURfUkVGRVJFTkNFIGFzIHVuc2FmZSkgYXMgVDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhY2suZ2V0PFQ+KGlkeCwgYmFzZSk7XG4gIH1cblxuICBjYXB0dXJlKCk6IENhcHR1cmVkTmFtZWRBcmd1bWVudHMge1xuICAgIHJldHVybiBuZXcgQ2FwdHVyZWROYW1lZEFyZ3VtZW50c0ltcGwodGhpcy50YWcsIHRoaXMubmFtZXMsIHRoaXMucmVmZXJlbmNlcyk7XG4gIH1cblxuICBtZXJnZShvdGhlcjogQ2FwdHVyZWROYW1lZEFyZ3VtZW50cykge1xuICAgIGxldCB7IGxlbmd0aDogZXh0cmFzIH0gPSBvdGhlcjtcblxuICAgIGlmIChleHRyYXMgPiAwKSB7XG4gICAgICBsZXQgeyBuYW1lcywgbGVuZ3RoLCBzdGFjayB9ID0gdGhpcztcbiAgICAgIGxldCB7IG5hbWVzOiBleHRyYU5hbWVzIH0gPSBvdGhlcjtcblxuICAgICAgaWYgKE9iamVjdC5pc0Zyb3plbihuYW1lcykgJiYgbmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIG5hbWVzID0gW107XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXh0cmFzOyBpKyspIHtcbiAgICAgICAgbGV0IG5hbWUgPSBleHRyYU5hbWVzW2ldO1xuICAgICAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcblxuICAgICAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgICAgIGxlbmd0aCA9IG5hbWVzLnB1c2gobmFtZSk7XG4gICAgICAgICAgc3RhY2sucHVzaChvdGhlci5yZWZlcmVuY2VzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgdGhpcy5fbmFtZXMgPSBuYW1lcztcbiAgICAgIHRoaXMuX2F0TmFtZXMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHJlZmVyZW5jZXMoKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdIHtcbiAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG5cbiAgICBpZiAoIXJlZmVyZW5jZXMpIHtcbiAgICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG4gICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IHN0YWNrLnNsaWNlQXJyYXk8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oXG4gICAgICAgIGJhc2UsXG4gICAgICAgIGJhc2UgKyBsZW5ndGhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gIH1cblxuICBwcml2YXRlIHRvU3ludGhldGljTmFtZSh0aGlzOiB2b2lkLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuYW1lLnNsaWNlKDEpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b0F0TmFtZSh0aGlzOiB2b2lkLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgQCR7bmFtZX1gO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIENhcHR1cmVkTmFtZWRBcmd1bWVudHMge1xuICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG4gIHByaXZhdGUgX21hcDogT3B0aW9uPERpY3Q8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWc6IFRhZyxcbiAgICBwdWJsaWMgbmFtZXM6IHN0cmluZ1tdLFxuICAgIHB1YmxpYyByZWZlcmVuY2VzOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W11cbiAgKSB7XG4gICAgdGhpcy5sZW5ndGggPSBuYW1lcy5sZW5ndGg7XG4gICAgdGhpcy5fbWFwID0gbnVsbDtcbiAgfVxuXG4gIGdldCBtYXAoKSB7XG4gICAgbGV0IG1hcCA9IHRoaXMuX21hcDtcblxuICAgIGlmICghbWFwKSB7XG4gICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgIG1hcCA9IHRoaXMuX21hcCA9IGRpY3Q8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICBtYXAhW25hbWVdID0gcmVmZXJlbmNlc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICB9XG5cbiAgZ2V0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+PihuYW1lOiBzdHJpbmcpOiBUIHtcbiAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcblxuICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICByZXR1cm4gKFVOREVGSU5FRF9SRUZFUkVOQ0UgYXMgdW5zYWZlKSBhcyBUO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVmZXJlbmNlc1tpZHhdIGFzIFQ7XG4gICAgfVxuICB9XG5cbiAgdmFsdWUoKTogRGljdDx1bmtub3duPiB7XG4gICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgbGV0IG91dCA9IGRpY3Q8dW5rbm93bj4oKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBuYW1lID0gbmFtZXNbaV07XG4gICAgICBvdXRbbmFtZV0gPSByZWZlcmVuY2VzW2ldLnZhbHVlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmxvY2tBcmd1bWVudHNJbXBsPEMgZXh0ZW5kcyBKaXRPckFvdEJsb2NrPiBpbXBsZW1lbnRzIEJsb2NrQXJndW1lbnRzPEM+IHtcbiAgcHJpdmF0ZSBzdGFjayE6IEV2YWx1YXRpb25TdGFjaztcbiAgcHJpdmF0ZSBpbnRlcm5hbFZhbHVlczogT3B0aW9uPG51bWJlcltdPiA9IG51bGw7XG5cbiAgcHVibGljIGludGVybmFsVGFnOiBPcHRpb248VGFnPiA9IG51bGw7XG4gIHB1YmxpYyBuYW1lczogc3RyaW5nW10gPSBFTVBUWV9BUlJBWTtcblxuICBwdWJsaWMgbGVuZ3RoID0gMDtcbiAgcHVibGljIGJhc2UgPSAwO1xuXG4gIGVtcHR5KHN0YWNrOiBFdmFsdWF0aW9uU3RhY2ssIGJhc2U6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLm5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICB0aGlzLmludGVybmFsVGFnID0gQ09OU1RBTlRfVEFHO1xuICAgIHRoaXMuaW50ZXJuYWxWYWx1ZXMgPSBFTVBUWV9BUlJBWTtcbiAgfVxuXG4gIHNldHVwKHN0YWNrOiBFdmFsdWF0aW9uU3RhY2ssIGJhc2U6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIsIG5hbWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLm5hbWVzID0gbmFtZXM7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcblxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxUYWcgPSBDT05TVEFOVF9UQUc7XG4gICAgICB0aGlzLmludGVybmFsVmFsdWVzID0gRU1QVFlfQVJSQVk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxUYWcgPSBudWxsO1xuICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlcyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlcygpOiBCbG9ja1ZhbHVlW10ge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmludGVybmFsVmFsdWVzO1xuXG4gICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG4gICAgICB2YWx1ZXMgPSB0aGlzLmludGVybmFsVmFsdWVzID0gc3RhY2suc2xpY2VBcnJheTxudW1iZXI+KGJhc2UsIGJhc2UgKyBsZW5ndGggKiAzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVzO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWVzIS5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBPcHRpb248U2NvcGVCbG9jazxDPj4ge1xuICAgIGxldCBpZHggPSB0aGlzLm5hbWVzIS5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB7IGJhc2UsIHN0YWNrIH0gPSB0aGlzO1xuXG4gICAgbGV0IHRhYmxlID0gY2hlY2soc3RhY2suZ2V0KGlkeCAqIDMsIGJhc2UpLCBDaGVja09wdGlvbihDaGVja0Jsb2NrU3ltYm9sVGFibGUpKTtcbiAgICBsZXQgc2NvcGUgPSBjaGVjayhzdGFjay5nZXQoaWR4ICogMyArIDEsIGJhc2UpLCBDaGVja09wdGlvbihDaGVja1Njb3BlKSk7XG4gICAgbGV0IGhhbmRsZSA9IGNoZWNrKFxuICAgICAgc3RhY2suZ2V0KGlkeCAqIDMgKyAyLCBiYXNlKSxcbiAgICAgIENoZWNrT3B0aW9uKENoZWNrT3IoQ2hlY2tIYW5kbGUsIENoZWNrQ29tcGlsYWJsZUJsb2NrKSlcbiAgICApO1xuXG4gICAgcmV0dXJuIGhhbmRsZSA9PT0gbnVsbCA/IG51bGwgOiAoW2hhbmRsZSwgc2NvcGUhLCB0YWJsZSFdIGFzIFNjb3BlQmxvY2s8Qz4pO1xuICB9XG5cbiAgY2FwdHVyZSgpOiBDYXB0dXJlZEJsb2NrQXJndW1lbnRzIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkQmxvY2tBcmd1bWVudHNJbXBsKHRoaXMubmFtZXMsIHRoaXMudmFsdWVzKTtcbiAgfVxufVxuXG5jbGFzcyBDYXB0dXJlZEJsb2NrQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIENhcHR1cmVkQmxvY2tBcmd1bWVudHMge1xuICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG5hbWVzOiBzdHJpbmdbXSwgcHVibGljIHZhbHVlczogQmxvY2tWYWx1ZVtdKSB7XG4gICAgdGhpcy5sZW5ndGggPSBuYW1lcy5sZW5ndGg7XG4gIH1cblxuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogT3B0aW9uPFNjb3BlQmxvY2s+IHtcbiAgICBsZXQgaWR4ID0gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGlkeCA9PT0gLTEpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMudmFsdWVzW2lkeCAqIDMgKyAyXSBhcyBudW1iZXIsXG4gICAgICB0aGlzLnZhbHVlc1tpZHggKiAzICsgMV0gYXMgU2NvcGU8Sml0T3JBb3RCbG9jaz4sXG4gICAgICB0aGlzLnZhbHVlc1tpZHggKiAzXSBhcyBCbG9ja1N5bWJvbFRhYmxlLFxuICAgIF07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhcHR1cmVkQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIENhcHR1cmVkQXJndW1lbnRzIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhZzogVGFnLFxuICAgIHB1YmxpYyBwb3NpdGlvbmFsOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMsXG4gICAgcHVibGljIG5hbWVkOiBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLFxuICAgIHB1YmxpYyBsZW5ndGg6IG51bWJlclxuICApIHt9XG5cbiAgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWVkOiB0aGlzLm5hbWVkLnZhbHVlKCksXG4gICAgICBwb3NpdGlvbmFsOiB0aGlzLnBvc2l0aW9uYWwudmFsdWUoKSxcbiAgICB9O1xuICB9XG59XG5cbmNvbnN0IEVNUFRZX05BTUVEID0gbmV3IENhcHR1cmVkTmFtZWRBcmd1bWVudHNJbXBsKENPTlNUQU5UX1RBRywgRU1QVFlfQVJSQVksIEVNUFRZX0FSUkFZKTtcbmNvbnN0IEVNUFRZX1BPU0lUSU9OQUwgPSBuZXcgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzSW1wbChDT05TVEFOVF9UQUcsIEVNUFRZX0FSUkFZKTtcbmV4cG9ydCBjb25zdCBFTVBUWV9BUkdTID0gbmV3IENhcHR1cmVkQXJndW1lbnRzSW1wbChDT05TVEFOVF9UQUcsIEVNUFRZX1BPU0lUSU9OQUwsIEVNUFRZX05BTUVELCAwKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2FyZ3VtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBb0JBOztBQUNBOztBQU9BOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7Ozs7OztBQVFBLElBQU0sZUFBTjtBQUFBO0FBQUEsWUFBQTtBQUFBLFdBQUEsZUFBQSxHQUFBO0FBQ1UsU0FBQSxLQUFBLEdBQUEsSUFBQTtBQUNELFNBQUEsVUFBQSxHQUFhLElBQWIsdUJBQWEsRUFBYjtBQUNBLFNBQUEsS0FBQSxHQUFRLElBQVIsa0JBQVEsRUFBUjtBQUNBLFNBQUEsTUFBQSxHQUFTLElBQVQsa0JBQVMsRUFBVDtBQTJGUjs7QUEvRkQsTUFBQSxNQUFBLEdBQUEsZUFBQSxDQUFBLFNBQUE7O0FBQUEsRUFBQSxNQUFBLENBQUEsS0FBQSxHQU1FLFNBQUEsS0FBQSxDQUFBLEtBQUEsRUFBNEI7QUFDMUIsUUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFMLGtCQUFLLENBQUwsQ0FBQSxPQUFBLElBQVgsQ0FBQTtBQUVBLFNBQUEsS0FBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQUEsSUFBQTtBQUNBLFNBQUEsVUFBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQUEsSUFBQTtBQUNBLFNBQUEsTUFBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQUEsSUFBQTtBQUVBLFdBQUEsSUFBQTtBQWJKLEdBQUE7O0FBQUEsRUFBQSxNQUFBLENBQUEsS0FBQSxHQWdCRSxTQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQUEsS0FBQSxFQUFBLFVBQUEsRUFBQSxlQUFBLEVBQUEsT0FBQSxFQUtrQjtBQUVoQixTQUFBLEtBQUEsR0FBQSxLQUFBO0FBRUE7Ozs7Ozs7O0FBUUEsUUFBSSxLQUFLLEdBQUcsS0FBWixLQUFBO0FBQ0EsUUFBSSxVQUFVLEdBQUcsS0FBSyxDQUF0QixNQUFBO0FBQ0EsUUFBSSxT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QXlCLENBQXpCO0FBQ08sSUFBTSxVQUFVLEdBQUcsSUFBQSxxQkFBQSxDQUFBLHVCQUFBLEVBQUEsZ0JBQUEsRUFBQSxXQUFBLEVBQW5CLENBQW1CLENBQW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZhbHVhdGlvblN0YWNrIH0gZnJvbSAnLi9zdGFjayc7XG5pbXBvcnQgeyBkaWN0LCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgRGljdCxcbiAgT3B0aW9uLFxuICB1bnNhZmUsXG4gIEJsb2NrU3ltYm9sVGFibGUsXG4gIFZNQXJndW1lbnRzLFxuICBDYXB0dXJlZEFyZ3VtZW50cyxcbiAgUG9zaXRpb25hbEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzLFxuICBOYW1lZEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyxcbiAgSml0T3JBb3RCbG9jayxcbiAgQmxvY2tWYWx1ZSxcbiAgU2NvcGVCbG9jayxcbiAgQ2FwdHVyZWRCbG9ja0FyZ3VtZW50cyxcbiAgU2NvcGUsXG4gIEJsb2NrQXJndW1lbnRzLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgVGFnLCBDT05TVEFOVF9UQUcgfSBmcm9tICdAZ2xpbW1lci92YWxpZGF0b3InO1xuaW1wb3J0IHsgUHJpbWl0aXZlUmVmZXJlbmNlLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDaGVja0Jsb2NrU3ltYm9sVGFibGUsIGNoZWNrLCBDaGVja0hhbmRsZSwgQ2hlY2tPcHRpb24sIENoZWNrT3IgfSBmcm9tICdAZ2xpbW1lci9kZWJ1Zyc7XG5pbXBvcnQge1xuICBDaGVja1BhdGhSZWZlcmVuY2UsXG4gIENoZWNrQ29tcGlsYWJsZUJsb2NrLFxuICBDaGVja1Njb3BlLFxufSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzLy1kZWJ1Zy1zdHJpcCc7XG5pbXBvcnQgeyBjb21iaW5lVGFnZ2VkIH0gZnJvbSAnLi4vdXRpbHMvdGFncyc7XG5pbXBvcnQgeyBSRUdJU1RFUlMgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7ICRzcCB9IGZyb20gJ0BnbGltbWVyL3ZtJztcblxuLypcbiAgVGhlIGNhbGxpbmcgY29udmVudGlvbiBpczpcblxuICAqIDAtTiBibG9jayBhcmd1bWVudHMgYXQgdGhlIGJvdHRvbVxuICAqIDAtTiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBuZXh0IChsZWZ0LXRvLXJpZ2h0KVxuICAqIDAtTiBuYW1lZCBhcmd1bWVudHMgbmV4dFxuKi9cblxuZXhwb3J0IGNsYXNzIFZNQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIFZNQXJndW1lbnRzIHtcbiAgcHJpdmF0ZSBzdGFjazogT3B0aW9uPEV2YWx1YXRpb25TdGFjaz4gPSBudWxsO1xuICBwdWJsaWMgcG9zaXRpb25hbCA9IG5ldyBQb3NpdGlvbmFsQXJndW1lbnRzSW1wbCgpO1xuICBwdWJsaWMgbmFtZWQgPSBuZXcgTmFtZWRBcmd1bWVudHNJbXBsKCk7XG4gIHB1YmxpYyBibG9ja3MgPSBuZXcgQmxvY2tBcmd1bWVudHNJbXBsKCk7XG5cbiAgZW1wdHkoc3RhY2s6IEV2YWx1YXRpb25TdGFjayk6IHRoaXMge1xuICAgIGxldCBiYXNlID0gc3RhY2tbUkVHSVNURVJTXVskc3BdICsgMTtcblxuICAgIHRoaXMubmFtZWQuZW1wdHkoc3RhY2ssIGJhc2UpO1xuICAgIHRoaXMucG9zaXRpb25hbC5lbXB0eShzdGFjaywgYmFzZSk7XG4gICAgdGhpcy5ibG9ja3MuZW1wdHkoc3RhY2ssIGJhc2UpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXR1cChcbiAgICBzdGFjazogRXZhbHVhdGlvblN0YWNrLFxuICAgIG5hbWVzOiBzdHJpbmdbXSxcbiAgICBibG9ja05hbWVzOiBzdHJpbmdbXSxcbiAgICBwb3NpdGlvbmFsQ291bnQ6IG51bWJlcixcbiAgICBhdE5hbWVzOiBib29sZWFuXG4gICkge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcblxuICAgIC8qXG4gICAgICAgICAgIHwgLi4uIHwgYmxvY2tzICAgICAgfCBwb3NpdGlvbmFsICB8IG5hbWVkIHxcbiAgICAgICAgICAgfCAuLi4gfCBiMCAgICBiMSAgICB8IHAwIHAxIHAyIHAzIHwgbjAgbjEgfFxuICAgICBpbmRleCB8IC4uLiB8IDQvNS82IDcvOC85IHwgMTAgMTEgMTIgMTMgfCAxNCAxNSB8XG4gICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICBeICAgICAgICAgICAgIF4gIF5cbiAgICAgICAgICAgICAgICAgYmJhc2UgICAgICAgICBwYmFzZSAgICAgICBuYmFzZSAgc3BcbiAgICAqL1xuXG4gICAgbGV0IG5hbWVkID0gdGhpcy5uYW1lZDtcbiAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcbiAgICBsZXQgbmFtZWRCYXNlID0gc3RhY2tbUkVHSVNURVJTXVskc3BdIC0gbmFtZWRDb3VudCArIDE7XG5cbiAgICBuYW1lZC5zZXR1cChzdGFjaywgbmFtZWRCYXNlLCBuYW1lZENvdW50LCBuYW1lcywgYXROYW1lcyk7XG5cbiAgICBsZXQgcG9zaXRpb25hbCA9IHRoaXMucG9zaXRpb25hbDtcbiAgICBsZXQgcG9zaXRpb25hbEJhc2UgPSBuYW1lZEJhc2UgLSBwb3NpdGlvbmFsQ291bnQ7XG5cbiAgICBwb3NpdGlvbmFsLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsQmFzZSwgcG9zaXRpb25hbENvdW50KTtcblxuICAgIGxldCBibG9ja3MgPSB0aGlzLmJsb2NrcztcbiAgICBsZXQgYmxvY2tzQ291bnQgPSBibG9ja05hbWVzLmxlbmd0aDtcbiAgICBsZXQgYmxvY2tzQmFzZSA9IHBvc2l0aW9uYWxCYXNlIC0gYmxvY2tzQ291bnQgKiAzO1xuXG4gICAgYmxvY2tzLnNldHVwKHN0YWNrLCBibG9ja3NCYXNlLCBibG9ja3NDb3VudCwgYmxvY2tOYW1lcyk7XG4gIH1cblxuICBnZXQgdGFnKCk6IFRhZyB7XG4gICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQoW3RoaXMucG9zaXRpb25hbCwgdGhpcy5uYW1lZF0pO1xuICB9XG5cbiAgZ2V0IGJhc2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ibG9ja3MuYmFzZTtcbiAgfVxuXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmxlbmd0aCArIHRoaXMubmFtZWQubGVuZ3RoICsgdGhpcy5ibG9ja3MubGVuZ3RoICogMztcbiAgfVxuXG4gIGF0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+Pihwb3M6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uYWwuYXQ8VD4ocG9zKTtcbiAgfVxuXG4gIHJlYWxsb2Mob2Zmc2V0OiBudW1iZXIpIHtcbiAgICBsZXQgeyBzdGFjayB9ID0gdGhpcztcbiAgICBpZiAob2Zmc2V0ID4gMCAmJiBzdGFjayAhPT0gbnVsbCkge1xuICAgICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHRoaXM7XG4gICAgICBsZXQgbmV3QmFzZSA9IHBvc2l0aW9uYWwuYmFzZSArIG9mZnNldDtcbiAgICAgIGxldCBsZW5ndGggPSBwb3NpdGlvbmFsLmxlbmd0aCArIG5hbWVkLmxlbmd0aDtcblxuICAgICAgZm9yIChsZXQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHN0YWNrLmNvcHkoaSArIHBvc2l0aW9uYWwuYmFzZSwgaSArIG5ld0Jhc2UpO1xuICAgICAgfVxuXG4gICAgICBwb3NpdGlvbmFsLmJhc2UgKz0gb2Zmc2V0O1xuICAgICAgbmFtZWQuYmFzZSArPSBvZmZzZXQ7XG4gICAgICBzdGFja1tSRUdJU1RFUlNdWyRzcF0gKz0gb2Zmc2V0O1xuICAgIH1cbiAgfVxuXG4gIGNhcHR1cmUoKTogQ2FwdHVyZWRBcmd1bWVudHMge1xuICAgIGxldCBwb3NpdGlvbmFsID0gdGhpcy5wb3NpdGlvbmFsLmxlbmd0aCA9PT0gMCA/IEVNUFRZX1BPU0lUSU9OQUwgOiB0aGlzLnBvc2l0aW9uYWwuY2FwdHVyZSgpO1xuICAgIGxldCBuYW1lZCA9IHRoaXMubmFtZWQubGVuZ3RoID09PSAwID8gRU1QVFlfTkFNRUQgOiB0aGlzLm5hbWVkLmNhcHR1cmUoKTtcblxuICAgIHJldHVybiBuZXcgQ2FwdHVyZWRBcmd1bWVudHNJbXBsKHRoaXMudGFnLCBwb3NpdGlvbmFsLCBuYW1lZCwgdGhpcy5sZW5ndGgpO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgbGV0IHsgc3RhY2ssIGxlbmd0aCB9ID0gdGhpcztcbiAgICBpZiAobGVuZ3RoID4gMCAmJiBzdGFjayAhPT0gbnVsbCkgc3RhY2sucG9wKGxlbmd0aCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsIGltcGxlbWVudHMgUG9zaXRpb25hbEFyZ3VtZW50cyB7XG4gIHB1YmxpYyBiYXNlID0gMDtcbiAgcHVibGljIGxlbmd0aCA9IDA7XG5cbiAgcHJpdmF0ZSBzdGFjazogRXZhbHVhdGlvblN0YWNrID0gbnVsbCBhcyBhbnk7XG5cbiAgcHJpdmF0ZSBfdGFnOiBPcHRpb248VGFnPiA9IG51bGw7XG4gIHByaXZhdGUgX3JlZmVyZW5jZXM6IE9wdGlvbjxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W10+ID0gbnVsbDtcblxuICBlbXB0eShzdGFjazogRXZhbHVhdGlvblN0YWNrLCBiYXNlOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICB0aGlzLl90YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICB9XG5cbiAgc2V0dXAoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyLCBsZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLmJhc2UgPSBiYXNlO1xuICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuXG4gICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5fdGFnID0gQ09OU1RBTlRfVEFHO1xuICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRhZygpOiBUYWcge1xuICAgIGxldCB0YWcgPSB0aGlzLl90YWc7XG5cbiAgICBpZiAoIXRhZykge1xuICAgICAgdGFnID0gdGhpcy5fdGFnID0gY29tYmluZVRhZ2dlZCh0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0YWc7XG4gIH1cblxuICBhdDxUIGV4dGVuZHMgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4ocG9zaXRpb246IG51bWJlcik6IFQge1xuICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG5cbiAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIChVTkRFRklORURfUkVGRVJFTkNFIGFzIHVuc2FmZSkgYXMgVDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hlY2soc3RhY2suZ2V0KHBvc2l0aW9uLCBiYXNlKSwgQ2hlY2tQYXRoUmVmZXJlbmNlKSBhcyBUO1xuICB9XG5cbiAgY2FwdHVyZSgpOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwodGhpcy50YWcsIHRoaXMucmVmZXJlbmNlcyk7XG4gIH1cblxuICBwcmVwZW5kKG90aGVyOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMpIHtcbiAgICBsZXQgYWRkaXRpb25zID0gb3RoZXIubGVuZ3RoO1xuXG4gICAgaWYgKGFkZGl0aW9ucyA+IDApIHtcbiAgICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG5cbiAgICAgIHRoaXMuYmFzZSA9IGJhc2UgPSBiYXNlIC0gYWRkaXRpb25zO1xuICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGggKyBhZGRpdGlvbnM7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWRkaXRpb25zOyBpKyspIHtcbiAgICAgICAgc3RhY2suc2V0KG90aGVyLmF0KGkpLCBpLCBiYXNlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHJlZmVyZW5jZXMoKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdIHtcbiAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG5cbiAgICBpZiAoIXJlZmVyZW5jZXMpIHtcbiAgICAgIGxldCB7IHN0YWNrLCBiYXNlLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IHN0YWNrLnNsaWNlQXJyYXk8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oXG4gICAgICAgIGJhc2UsXG4gICAgICAgIGJhc2UgKyBsZW5ndGhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwgaW1wbGVtZW50cyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICBzdGF0aWMgZW1wdHkoKTogQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwoQ09OU1RBTlRfVEFHLCBFTVBUWV9BUlJBWSwgMCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGFnOiBUYWcsXG4gICAgcHVibGljIHJlZmVyZW5jZXM6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj5bXSxcbiAgICBwdWJsaWMgbGVuZ3RoID0gcmVmZXJlbmNlcy5sZW5ndGhcbiAgKSB7fVxuXG4gIGF0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+Pihwb3NpdGlvbjogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1twb3NpdGlvbl0gYXMgVDtcbiAgfVxuXG4gIHZhbHVlKCk6IHVua25vd25bXSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlcy5tYXAodGhpcy52YWx1ZU9mKTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+IHtcbiAgICBsZXQgeyByZWZlcmVuY2VzLCBsZW5ndGggfSA9IHRoaXM7XG5cbiAgICBpZiAobmFtZSA9PT0gJ2xlbmd0aCcpIHtcbiAgICAgIHJldHVybiBQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKGxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpZHggPSBwYXJzZUludChuYW1lLCAxMCk7XG5cbiAgICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVmZXJlbmNlc1tpZHhdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsdWVPZih0aGlzOiB2b2lkLCByZWZlcmVuY2U6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4pOiB1bmtub3duIHtcbiAgICByZXR1cm4gcmVmZXJlbmNlLnZhbHVlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5hbWVkQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIE5hbWVkQXJndW1lbnRzIHtcbiAgcHVibGljIGJhc2UgPSAwO1xuICBwdWJsaWMgbGVuZ3RoID0gMDtcblxuICBwcml2YXRlIHN0YWNrITogRXZhbHVhdGlvblN0YWNrO1xuXG4gIHByaXZhdGUgX3JlZmVyZW5jZXM6IE9wdGlvbjxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W10+ID0gbnVsbDtcblxuICBwcml2YXRlIF9uYW1lczogT3B0aW9uPHN0cmluZ1tdPiA9IEVNUFRZX0FSUkFZO1xuICBwcml2YXRlIF9hdE5hbWVzOiBPcHRpb248c3RyaW5nW10+ID0gRU1QVFlfQVJSQVk7XG5cbiAgZW1wdHkoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICAgIHRoaXMuX25hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgdGhpcy5fYXROYW1lcyA9IEVNUFRZX0FSUkFZO1xuICB9XG5cbiAgc2V0dXAoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbmFtZXM6IHN0cmluZ1tdLCBhdE5hbWVzOiBib29sZWFuKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLl9yZWZlcmVuY2VzID0gRU1QVFlfQVJSQVk7XG4gICAgICB0aGlzLl9uYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgICAgdGhpcy5fYXROYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcblxuICAgICAgaWYgKGF0TmFtZXMpIHtcbiAgICAgICAgdGhpcy5fbmFtZXMgPSBudWxsO1xuICAgICAgICB0aGlzLl9hdE5hbWVzID0gbmFtZXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9uYW1lcyA9IG5hbWVzO1xuICAgICAgICB0aGlzLl9hdE5hbWVzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgdGFnKCk6IFRhZyB7XG4gICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQodGhpcy5yZWZlcmVuY2VzKTtcbiAgfVxuXG4gIGdldCBuYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgbGV0IG5hbWVzID0gdGhpcy5fbmFtZXM7XG5cbiAgICBpZiAoIW5hbWVzKSB7XG4gICAgICBuYW1lcyA9IHRoaXMuX25hbWVzID0gdGhpcy5fYXROYW1lcyEubWFwKHRoaXMudG9TeW50aGV0aWNOYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmFtZXMhO1xuICB9XG5cbiAgZ2V0IGF0TmFtZXMoKTogc3RyaW5nW10ge1xuICAgIGxldCBhdE5hbWVzID0gdGhpcy5fYXROYW1lcztcblxuICAgIGlmICghYXROYW1lcykge1xuICAgICAgYXROYW1lcyA9IHRoaXMuX2F0TmFtZXMgPSB0aGlzLl9uYW1lcyEubWFwKHRoaXMudG9BdE5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBhdE5hbWVzITtcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGdldDxUIGV4dGVuZHMgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4obmFtZTogc3RyaW5nLCBhdE5hbWVzID0gZmFsc2UpOiBUIHtcbiAgICBsZXQgeyBiYXNlLCBzdGFjayB9ID0gdGhpcztcblxuICAgIGxldCBuYW1lcyA9IGF0TmFtZXMgPyB0aGlzLmF0TmFtZXMgOiB0aGlzLm5hbWVzO1xuXG4gICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG5cbiAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIChVTkRFRklORURfUkVGRVJFTkNFIGFzIHVuc2FmZSkgYXMgVDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhY2suZ2V0PFQ+KGlkeCwgYmFzZSk7XG4gIH1cblxuICBjYXB0dXJlKCk6IENhcHR1cmVkTmFtZWRBcmd1bWVudHMge1xuICAgIHJldHVybiBuZXcgQ2FwdHVyZWROYW1lZEFyZ3VtZW50c0ltcGwodGhpcy50YWcsIHRoaXMubmFtZXMsIHRoaXMucmVmZXJlbmNlcyk7XG4gIH1cblxuICBtZXJnZShvdGhlcjogQ2FwdHVyZWROYW1lZEFyZ3VtZW50cykge1xuICAgIGxldCB7IGxlbmd0aDogZXh0cmFzIH0gPSBvdGhlcjtcblxuICAgIGlmIChleHRyYXMgPiAwKSB7XG4gICAgICBsZXQgeyBuYW1lcywgbGVuZ3RoLCBzdGFjayB9ID0gdGhpcztcbiAgICAgIGxldCB7IG5hbWVzOiBleHRyYU5hbWVzIH0gPSBvdGhlcjtcblxuICAgICAgaWYgKE9iamVjdC5pc0Zyb3plbihuYW1lcykgJiYgbmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIG5hbWVzID0gW107XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXh0cmFzOyBpKyspIHtcbiAgICAgICAgbGV0IG5hbWUgPSBleHRyYU5hbWVzW2ldO1xuICAgICAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcblxuICAgICAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgICAgIGxlbmd0aCA9IG5hbWVzLnB1c2gobmFtZSk7XG4gICAgICAgICAgc3RhY2sucHVzaChvdGhlci5yZWZlcmVuY2VzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgdGhpcy5fbmFtZXMgPSBuYW1lcztcbiAgICAgIHRoaXMuX2F0TmFtZXMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHJlZmVyZW5jZXMoKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdIHtcbiAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG5cbiAgICBpZiAoIXJlZmVyZW5jZXMpIHtcbiAgICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG4gICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IHN0YWNrLnNsaWNlQXJyYXk8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oXG4gICAgICAgIGJhc2UsXG4gICAgICAgIGJhc2UgKyBsZW5ndGhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gIH1cblxuICBwcml2YXRlIHRvU3ludGhldGljTmFtZSh0aGlzOiB2b2lkLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuYW1lLnNsaWNlKDEpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b0F0TmFtZSh0aGlzOiB2b2lkLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgQCR7bmFtZX1gO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIENhcHR1cmVkTmFtZWRBcmd1bWVudHMge1xuICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG4gIHByaXZhdGUgX21hcDogT3B0aW9uPERpY3Q8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWc6IFRhZyxcbiAgICBwdWJsaWMgbmFtZXM6IHN0cmluZ1tdLFxuICAgIHB1YmxpYyByZWZlcmVuY2VzOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W11cbiAgKSB7XG4gICAgdGhpcy5sZW5ndGggPSBuYW1lcy5sZW5ndGg7XG4gICAgdGhpcy5fbWFwID0gbnVsbDtcbiAgfVxuXG4gIGdldCBtYXAoKSB7XG4gICAgbGV0IG1hcCA9IHRoaXMuX21hcDtcblxuICAgIGlmICghbWFwKSB7XG4gICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgIG1hcCA9IHRoaXMuX21hcCA9IGRpY3Q8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICBtYXAhW25hbWVdID0gcmVmZXJlbmNlc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICB9XG5cbiAgZ2V0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+PihuYW1lOiBzdHJpbmcpOiBUIHtcbiAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcblxuICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICByZXR1cm4gKFVOREVGSU5FRF9SRUZFUkVOQ0UgYXMgdW5zYWZlKSBhcyBUO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVmZXJlbmNlc1tpZHhdIGFzIFQ7XG4gICAgfVxuICB9XG5cbiAgdmFsdWUoKTogRGljdDx1bmtub3duPiB7XG4gICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgbGV0IG91dCA9IGRpY3Q8dW5rbm93bj4oKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBuYW1lID0gbmFtZXNbaV07XG4gICAgICBvdXRbbmFtZV0gPSByZWZlcmVuY2VzW2ldLnZhbHVlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b1N5bWJvbE5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAmJHtuYW1lfWA7XG59XG5cbmV4cG9ydCBjbGFzcyBCbG9ja0FyZ3VtZW50c0ltcGw8QyBleHRlbmRzIEppdE9yQW90QmxvY2s+IGltcGxlbWVudHMgQmxvY2tBcmd1bWVudHM8Qz4ge1xuICBwcml2YXRlIHN0YWNrITogRXZhbHVhdGlvblN0YWNrO1xuICBwcml2YXRlIGludGVybmFsVmFsdWVzOiBPcHRpb248bnVtYmVyW10+ID0gbnVsbDtcbiAgcHJpdmF0ZSBfc3ltYm9sTmFtZXM6IE9wdGlvbjxzdHJpbmdbXT4gPSBudWxsO1xuXG4gIHB1YmxpYyBpbnRlcm5hbFRhZzogT3B0aW9uPFRhZz4gPSBudWxsO1xuICBwdWJsaWMgbmFtZXM6IHN0cmluZ1tdID0gRU1QVFlfQVJSQVk7XG5cbiAgcHVibGljIGxlbmd0aCA9IDA7XG4gIHB1YmxpYyBiYXNlID0gMDtcblxuICBlbXB0eShzdGFjazogRXZhbHVhdGlvblN0YWNrLCBiYXNlOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgdGhpcy5uYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIHRoaXMuX3N5bWJvbE5hbWVzID0gbnVsbDtcblxuICAgIHRoaXMuaW50ZXJuYWxUYWcgPSBDT05TVEFOVF9UQUc7XG4gICAgdGhpcy5pbnRlcm5hbFZhbHVlcyA9IEVNUFRZX0FSUkFZO1xuICB9XG5cbiAgc2V0dXAoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbmFtZXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMubmFtZXMgPSBuYW1lcztcbiAgICB0aGlzLmJhc2UgPSBiYXNlO1xuICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuICAgIHRoaXMuX3N5bWJvbE5hbWVzID0gbnVsbDtcblxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxUYWcgPSBDT05TVEFOVF9UQUc7XG4gICAgICB0aGlzLmludGVybmFsVmFsdWVzID0gRU1QVFlfQVJSQVk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxUYWcgPSBudWxsO1xuICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlcyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlcygpOiBCbG9ja1ZhbHVlW10ge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmludGVybmFsVmFsdWVzO1xuXG4gICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG4gICAgICB2YWx1ZXMgPSB0aGlzLmludGVybmFsVmFsdWVzID0gc3RhY2suc2xpY2VBcnJheTxudW1iZXI+KGJhc2UsIGJhc2UgKyBsZW5ndGggKiAzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVzO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWVzIS5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBPcHRpb248U2NvcGVCbG9jazxDPj4ge1xuICAgIGxldCBpZHggPSB0aGlzLm5hbWVzIS5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB7IGJhc2UsIHN0YWNrIH0gPSB0aGlzO1xuXG4gICAgbGV0IHRhYmxlID0gY2hlY2soc3RhY2suZ2V0KGlkeCAqIDMsIGJhc2UpLCBDaGVja09wdGlvbihDaGVja0Jsb2NrU3ltYm9sVGFibGUpKTtcbiAgICBsZXQgc2NvcGUgPSBjaGVjayhzdGFjay5nZXQoaWR4ICogMyArIDEsIGJhc2UpLCBDaGVja09wdGlvbihDaGVja1Njb3BlKSk7XG4gICAgbGV0IGhhbmRsZSA9IGNoZWNrKFxuICAgICAgc3RhY2suZ2V0KGlkeCAqIDMgKyAyLCBiYXNlKSxcbiAgICAgIENoZWNrT3B0aW9uKENoZWNrT3IoQ2hlY2tIYW5kbGUsIENoZWNrQ29tcGlsYWJsZUJsb2NrKSlcbiAgICApO1xuXG4gICAgcmV0dXJuIGhhbmRsZSA9PT0gbnVsbCA/IG51bGwgOiAoW2hhbmRsZSwgc2NvcGUhLCB0YWJsZSFdIGFzIFNjb3BlQmxvY2s8Qz4pO1xuICB9XG5cbiAgY2FwdHVyZSgpOiBDYXB0dXJlZEJsb2NrQXJndW1lbnRzIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkQmxvY2tBcmd1bWVudHNJbXBsKHRoaXMubmFtZXMsIHRoaXMudmFsdWVzKTtcbiAgfVxuXG4gIGdldCBzeW1ib2xOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgbGV0IHN5bWJvbE5hbWVzID0gdGhpcy5fc3ltYm9sTmFtZXM7XG5cbiAgICBpZiAoc3ltYm9sTmFtZXMgPT09IG51bGwpIHtcbiAgICAgIHN5bWJvbE5hbWVzID0gdGhpcy5fc3ltYm9sTmFtZXMgPSB0aGlzLm5hbWVzLm1hcCh0b1N5bWJvbE5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBzeW1ib2xOYW1lcztcbiAgfVxufVxuXG5jbGFzcyBDYXB0dXJlZEJsb2NrQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIENhcHR1cmVkQmxvY2tBcmd1bWVudHMge1xuICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG5hbWVzOiBzdHJpbmdbXSwgcHVibGljIHZhbHVlczogQmxvY2tWYWx1ZVtdKSB7XG4gICAgdGhpcy5sZW5ndGggPSBuYW1lcy5sZW5ndGg7XG4gIH1cblxuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogT3B0aW9uPFNjb3BlQmxvY2s+IHtcbiAgICBsZXQgaWR4ID0gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGlkeCA9PT0gLTEpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMudmFsdWVzW2lkeCAqIDMgKyAyXSBhcyBudW1iZXIsXG4gICAgICB0aGlzLnZhbHVlc1tpZHggKiAzICsgMV0gYXMgU2NvcGU8Sml0T3JBb3RCbG9jaz4sXG4gICAgICB0aGlzLnZhbHVlc1tpZHggKiAzXSBhcyBCbG9ja1N5bWJvbFRhYmxlLFxuICAgIF07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhcHR1cmVkQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIENhcHR1cmVkQXJndW1lbnRzIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhZzogVGFnLFxuICAgIHB1YmxpYyBwb3NpdGlvbmFsOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMsXG4gICAgcHVibGljIG5hbWVkOiBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLFxuICAgIHB1YmxpYyBsZW5ndGg6IG51bWJlclxuICApIHt9XG5cbiAgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWVkOiB0aGlzLm5hbWVkLnZhbHVlKCksXG4gICAgICBwb3NpdGlvbmFsOiB0aGlzLnBvc2l0aW9uYWwudmFsdWUoKSxcbiAgICB9O1xuICB9XG59XG5cbmNvbnN0IEVNUFRZX05BTUVEID0gbmV3IENhcHR1cmVkTmFtZWRBcmd1bWVudHNJbXBsKENPTlNUQU5UX1RBRywgRU1QVFlfQVJSQVksIEVNUFRZX0FSUkFZKTtcbmNvbnN0IEVNUFRZX1BPU0lUSU9OQUwgPSBuZXcgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzSW1wbChDT05TVEFOVF9UQUcsIEVNUFRZX0FSUkFZKTtcbmV4cG9ydCBjb25zdCBFTVBUWV9BUkdTID0gbmV3IENhcHR1cmVkQXJndW1lbnRzSW1wbChDT05TVEFOVF9UQUcsIEVNUFRZX1BPU0lUSU9OQUwsIEVNUFRZX05BTUVELCAwKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -6,3 +6,2 @@ import { $v0 } from '@glimmer/vm';

import { assert } from '@glimmer/util';
import { stackAssert } from './assert';
import { CONSTANTS } from '../../symbols';

@@ -108,3 +107,3 @@ APPEND_OPCODES.add(16

if (block) {
if (block && !isUndefinedReference(block)) {
stack.push(block[2]);

@@ -119,15 +118,21 @@ stack.push(block[1]);

});
function isUndefinedReference(input) {
(false && assert(Array.isArray(input) || input === UNDEFINED_REFERENCE, 'a reference other than UNDEFINED_REFERENCE is illegal here'));
return input === UNDEFINED_REFERENCE;
}
APPEND_OPCODES.add(26
/* HasBlock */
, vm => {
let block = vm.stack.pop(); // TODO: We check if the block is null or UNDEFINED_REFERENCE here, but it should
// really only check if the block is null. The UNDEFINED_REFERENCE use case is for
// when we try to invoke a curry-component directly as a variable:
//
// <Foo as |bar|>{{bar}}</Foo>
//
// This code path does not work the same way as most components. In the future,
// we should make sure that it does, so things are setup correctly.
let {
stack
} = vm;
let block = stack.pop();
vm.stack.push(block === null || block === UNDEFINED_REFERENCE ? FALSE_REFERENCE : TRUE_REFERENCE);
if (block && !isUndefinedReference(block)) {
stack.push(TRUE_REFERENCE);
} else {
stack.push(FALSE_REFERENCE);
}
});

@@ -141,3 +146,2 @@ APPEND_OPCODES.add(27

let table = vm.stack.pop();
(false && assert(table === null || table && typeof table === 'object' && Array.isArray(table.parameters), stackAssert('Option<BlockSymbolTable>', table)));
let hasBlockParams = table && table.parameters.length;

@@ -160,2 +164,2 @@ vm.stack.push(hasBlockParams ? TRUE_REFERENCE : FALSE_REFERENCE);

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2NvbXBpbGVkL29wY29kZXMvZXhwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsU0FBUyxHQUFULFFBQW9CLGFBQXBCO0FBQ0EsU0FBUyxjQUFULFFBQStCLGVBQS9CO0FBQ0EsU0FBUyxlQUFULEVBQTBCLGNBQTFCLEVBQTBDLG1CQUExQyxRQUFxRSxrQkFBckU7QUFDQSxTQUFTLGVBQVQsUUFBZ0MsdUJBQWhDO0FBQ0EsU0FBUyxNQUFULFFBQXVCLGVBQXZCO0FBRUEsU0FBUyxXQUFULFFBQTRCLFVBQTVCO0FBUUEsU0FBUyxTQUFULFFBQTBCLGVBQTFCO0FBSUEsY0FBYyxDQUFDLEdBQWYsQ0FBa0I7QUFBQTtBQUFsQixFQUE4QixDQUFDLEVBQUQsRUFBSztBQUFFLEVBQUEsR0FBRyxFQUFFO0FBQVAsQ0FBTCxLQUF3QjtBQUNwRCxNQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBZjtBQUNBLE1BQUksTUFBTSxHQUFTLEVBQUUsQ0FBQyxPQUFILENBQVcsUUFBWCxDQUFvQixPQUFwQixDQUE0QixNQUE1QixDQUFuQjtBQUNBLE1BQUksSUFBSSxHQUFTLEtBQUssQ0FBQyxHQUFOLEVBQWpCO0FBQ0EsTUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUQsRUFBTyxFQUFQLENBQWxCO0FBRUEsRUFBQSxFQUFFLENBQUMsU0FBSCxDQUFhLEdBQWIsRUFBa0IsS0FBbEI7QUFDRCxDQVBEO0FBU0EsY0FBYyxDQUFDLEdBQWYsQ0FBa0I7QUFBQTtBQUFsQixFQUFtQyxDQUFDLEVBQUQsRUFBSztBQUFFLEVBQUEsR0FBRyxFQUFFO0FBQVAsQ0FBTCxLQUF3QjtBQUN6RCxNQUFJLElBQUksR0FBRyxFQUFFLENBQUMsa0JBQUgsQ0FBc0IsTUFBdEIsQ0FBWDtBQUNBLEVBQUEsRUFBRSxDQUFDLEtBQUgsQ0FBUyxJQUFULENBQWMsSUFBZDtBQUNELENB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QUFILEdBQW9CLEVBQUUsQ0FBQyxLQUFILENBQVMsR0FBVCxFQUFwQjtBQUNEOztBQUVELEVBQUEsRUFBRSxDQUFDLEtBQUgsQ0FBUyxJQUFULENBQWMsSUFBSSxlQUFKLENBQW9CLEdBQXBCLENBQWQ7QUFDRCxDQVREIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3B0aW9uLCBPcCwgSml0U2NvcGVCbG9jaywgQW90U2NvcGVCbG9jaywgVk0gYXMgUHVibGljVk0gfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgJHYwIH0gZnJvbSAnQGdsaW1tZXIvdm0nO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IEZBTFNFX1JFRkVSRU5DRSwgVFJVRV9SRUZFUkVOQ0UsIFVOREVGSU5FRF9SRUZFUkVOQ0UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IENvbmNhdFJlZmVyZW5jZSB9IGZyb20gJy4uL2V4cHJlc3Npb25zL2NvbmNhdCc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNoZWNrLCBDaGVja09wdGlvbiwgQ2hlY2tIYW5kbGUsIENoZWNrQmxvY2tTeW1ib2xUYWJsZSwgQ2hlY2tPciB9IGZyb20gJ0BnbGltbWVyL2RlYnVnJztcbmltcG9ydCB7IHN0YWNrQXNzZXJ0IH0gZnJvbSAnLi9hc3NlcnQnO1xuaW1wb3J0IHtcbiAgQ2hlY2tBcmd1bWVudHMsXG4gIENoZWNrUGF0aFJlZmVyZW5jZSxcbiAgQ2hlY2tDb21waWxhYmxlQmxvY2ssXG4gIENoZWNrU2NvcGUsXG4gIENoZWNrSGVscGVyLFxufSBmcm9tICcuLy1kZWJ1Zy1zdHJpcCc7XG5pbXBvcnQgeyBDT05TVEFOVFMgfSBmcm9tICcuLi8uLi9zeW1ib2xzJztcblxuZXhwb3J0IHR5cGUgRnVuY3Rpb25FeHByZXNzaW9uPFQ+ID0gKHZtOiBQdWJsaWNWTSkgPT4gVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxUPjtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkhlbHBlciwgKHZtLCB7IG9wMTogaGFuZGxlIH0pID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCBoZWxwZXIgPSBjaGVjayh2bS5ydW50aW1lLnJlc29sdmVyLnJlc29sdmUoaGFuZGxlKSwgQ2hlY2tIZWxwZXIpO1xuICBsZXQgYXJncyA9IGNoZWNrKHN0YWNrLnBvcCgpLCBDaGVja0FyZ3VtZW50cyk7XG4gIGxldCB2YWx1ZSA9IGhlbHBlcihhcmdzLCB2bSk7XG5cbiAgdm0ubG9hZFZhbHVlKCR2MCwgdmFsdWUpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRWYXJpYWJsZSwgKHZtLCB7IG9wMTogc3ltYm9sIH0pID0+IHtcbiAgbGV0IGV4cHIgPSB2bS5yZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sKTtcbiAgdm0uc3RhY2sucHVzaChleHByKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuU2V0VmFyaWFibGUsICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gIGxldCBleHByID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrUGF0aFJlZmVyZW5jZSk7XG4gIHZtLnNjb3BlKCkuYmluZFN5bWJvbChzeW1ib2wsIGV4cHIpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChcbiAgT3AuU2V0Sml0QmxvY2ssXG4gICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gICAgbGV0IGhhbmRsZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja09wdGlvbihDaGVja0NvbXBpbGFibGVCbG9jaykpO1xuICAgIGxldCBzY29wZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1Njb3BlKTtcbiAgICBsZXQgdGFibGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tCbG9ja1N5bWJvbFRhYmxlKSk7XG5cbiAgICBsZXQgYmxvY2s6IE9wdGlvbjxKaXRTY29wZUJsb2NrPiA9IHRhYmxlID8gW2hhbmRsZSEsIHNjb3BlLCB0YWJsZV0gOiBudWxsO1xuXG4gICAgdm0uc2NvcGUoKS5iaW5kQmxvY2soc3ltYm9sLCBibG9jayk7XG4gIH0sXG4gICdqaXQnXG4pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuU2V0QW90QmxvY2ssICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gIGxldCBoYW5kbGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tIYW5kbGUpKTtcbiAgbGV0IHNjb3BlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrU2NvcGUpO1xuICBsZXQgdGFibGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tCbG9ja1N5bWJvbFRhYmxlKSk7XG5cbiAgbGV0IGJsb2NrOiBPcHRpb248QW90U2NvcGVCbG9jaz4gPSB0YWJsZSA/IFtoYW5kbGUhLCBzY29wZSwgdGFibGVdIDogbnVsbDtcblxuICB2bS5zY29wZSgpLmJpbmRCbG9jayhzeW1ib2wsIGJsb2NrKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUmVzb2x2ZU1heWJlTG9jYWwsICh2bSwgeyBvcDE6IF9uYW1lIH0pID0+IHtcbiAgbGV0IG5hbWUgPSB2bVtDT05TVEFOVFNdLmdldFN0cmluZyhfbmFtZSk7XG4gIGxldCBsb2NhbHMgPSB2bS5zY29wZSgpLmdldFBhcnRpYWxNYXAoKSE7XG5cbiAgbGV0IHJlZiA9IGxvY2Fsc1tuYW1lXTtcbiAgaWYgKHJlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmVmID0gdm0uZ2V0U2VsZigpLmdldChuYW1lKTtcbiAgfVxuXG4gIHZtLnN0YWNrLnB1c2gocmVmKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUm9vdFNjb3BlLCAodm0sIHsgb3AxOiBzeW1ib2xzIH0pID0+IHtcbiAgdm0ucHVzaFJvb3RTY29wZShzeW1ib2xzKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuR2V0UHJvcGVydHksICh2bSwgeyBvcDE6IF9rZXkgfSkgPT4ge1xuICBsZXQga2V5ID0gdm1bQ09OU1RBTlRTXS5nZXRTdHJpbmcoX2tleSk7XG4gIGxldCBleHByID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrUGF0aFJlZmVyZW5jZSk7XG4gIHZtLnN0YWNrLnB1c2goZXhwci5nZXQoa2V5KSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkdldEJsb2NrLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICBsZXQgeyBzdGFjayB9ID0gdm07XG4gIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2soX2Jsb2NrKTtcblxuICBzdGFjay5wdXNoKGJsb2NrKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSml0U3ByZWFkQmxvY2ssIHZtID0+IHtcbiAgbGV0IHsgc3RhY2sgfSA9IHZtO1xuICBsZXQgYmxvY2sgPSBzdGFjay5wb3A8Sml0U2NvcGVCbG9jaz4oKTtcblxuICBpZiAoYmxvY2spIHtcbiAgICBzdGFjay5wdXNoKGJsb2NrWzJdKTtcbiAgICBzdGFjay5wdXNoKGJsb2NrWzFdKTtcbiAgICBzdGFjay5wdXNoKGJsb2NrWzBdKTtcbiAgfSBlbHNlIHtcbiAgICBzdGFjay5wdXNoKG51bGwpO1xuICAgIHN0YWNrLnB1c2gobnVsbCk7XG4gICAgc3RhY2sucHVzaChudWxsKTtcbiAgfVxufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5IYXNCbG9jaywgdm0gPT4ge1xuICBsZXQgYmxvY2sgPSB2bS5zdGFjay5wb3AoKTtcblxuICAvLyBUT0RPOiBXZSBjaGVjayBpZiB0aGUgYmxvY2sgaXMgbnVsbCBvciBVTkRFRklORURfUkVGRVJFTkNFIGhlcmUsIGJ1dCBpdCBzaG91bGRcbiAgLy8gcmVhbGx5IG9ubHkgY2hlY2sgaWYgdGhlIGJsb2NrIGlzIG51bGwuIFRoZSBVTkRFRklORURfUkVGRVJFTkNFIHVzZSBjYXNlIGlzIGZvclxuICAvLyB3aGVuIHdlIHRyeSB0byBpbnZva2UgYSBjdXJyeS1jb21wb25lbnQgZGlyZWN0bHkgYXMgYSB2YXJpYWJsZTpcbiAgLy9cbiAgLy8gPEZvbyBhcyB8YmFyfD57e2Jhcn19PC9Gb28+XG4gIC8vXG4gIC8vIFRoaXMgY29kZSBwYXRoIGRvZXMgbm90IHdvcmsgdGhlIHNhbWUgd2F5IGFzIG1vc3QgY29tcG9uZW50cy4gSW4gdGhlIGZ1dHVyZSxcbiAgLy8gd2Ugc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IGl0IGRvZXMsIHNvIHRoaW5ncyBhcmUgc2V0dXAgY29ycmVjdGx5LlxuICB2bS5zdGFjay5wdXNoKGJsb2NrID09PSBudWxsIHx8IGJsb2NrID09PSBVTkRFRklORURfUkVGRVJFTkNFID8gRkFMU0VfUkVGRVJFTkNFIDogVFJVRV9SRUZFUkVOQ0UpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5IYXNCbG9ja1BhcmFtcywgdm0gPT4ge1xuICAvLyBGSVhNRShtbXVuKTogc2hvdWxkIG9ubHkgbmVlZCB0byBwdXNoIHRoZSBzeW1ib2wgdGFibGVcbiAgbGV0IGJsb2NrID0gdm0uc3RhY2sucG9wKCk7XG4gIGxldCBzY29wZSA9IHZtLnN0YWNrLnBvcCgpO1xuICBjaGVjayhibG9jaywgQ2hlY2tPcHRpb24oQ2hlY2tPcihDaGVja0hhbmRsZSwgQ2hlY2tDb21waWxhYmxlQmxvY2spKSk7XG4gIGNoZWNrKHNjb3BlLCBDaGVja09wdGlvbihDaGVja1Njb3BlKSk7XG4gIGxldCB0YWJsZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja09wdGlvbihDaGVja0Jsb2NrU3ltYm9sVGFibGUpKTtcblxuICBhc3NlcnQoXG4gICAgdGFibGUgPT09IG51bGwgfHwgKHRhYmxlICYmIHR5cGVvZiB0YWJsZSA9PT0gJ29iamVjdCcgJiYgQXJyYXkuaXNBcnJheSh0YWJsZS5wYXJhbWV0ZXJzKSksXG4gICAgc3RhY2tBc3NlcnQoJ09wdGlvbjxCbG9ja1N5bWJvbFRhYmxlPicsIHRhYmxlKVxuICApO1xuXG4gIGxldCBoYXNCbG9ja1BhcmFtcyA9IHRhYmxlICYmIHRhYmxlLnBhcmFtZXRlcnMubGVuZ3RoO1xuICB2bS5zdGFjay5wdXNoKGhhc0Jsb2NrUGFyYW1zID8gVFJVRV9SRUZFUkVOQ0UgOiBGQUxTRV9SRUZFUkVOQ0UpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Db25jYXQsICh2bSwgeyBvcDE6IGNvdW50IH0pID0+IHtcbiAgbGV0IG91dDogQXJyYXk8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4gPSBuZXcgQXJyYXkoY291bnQpO1xuXG4gIGZvciAobGV0IGkgPSBjb3VudDsgaSA+IDA7IGktLSkge1xuICAgIGxldCBvZmZzZXQgPSBpIC0gMTtcbiAgICBvdXRbb2Zmc2V0XSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1BhdGhSZWZlcmVuY2UpO1xuICB9XG5cbiAgdm0uc3RhY2sucHVzaChuZXcgQ29uY2F0UmVmZXJlbmNlKG91dCkpO1xufSk7XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2NvbXBpbGVkL29wY29kZXMvZXhwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsU0FBUyxHQUFULFFBQW9CLGFBQXBCO0FBQ0EsU0FBUyxjQUFULFFBQStCLGVBQS9CO0FBQ0EsU0FBUyxlQUFULEVBQTBCLGNBQTFCLEVBQTBDLG1CQUExQyxRQUFxRSxrQkFBckU7QUFDQSxTQUFTLGVBQVQsUUFBZ0MsdUJBQWhDO0FBQ0EsU0FBUyxNQUFULFFBQXVCLGVBQXZCO0FBa0JBLFNBQVMsU0FBVCxRQUEwQixlQUExQjtBQUlBLGNBQWMsQ0FBQyxHQUFmLENBQWtCO0FBQUE7QUFBbEIsRUFBOEIsQ0FBQyxFQUFELEVBQUs7QUFBRSxFQUFBLEdBQUcsRUFBRTtBQUFQLENBQUwsS0FBd0I7QUFDcEQsTUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQWY7QUFDQSxNQUFJLE1BQU0sR0FBUyxFQUFFLENBQUMsT0FBSCxDQUFXLFFBQVgsQ0FBb0IsT0FBcEIsQ0FBNEIsTUFBNUIsQ0FBbkI7QUFDQSxNQUFJLElBQUksR0FBUyxLQUFLLENBQUMsR0FBTixFQUFqQjtBQUNBLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFELEVBQU8sRUFBUCxDQUFsQjtBQUVBLEVBQUEsRUFBRSxDQUFDLFNBQUgsQ0FBYSxHQUFiLEVBQWtCLEtBQWxCO0FBQ0QsQ0FQRDtBQVNBLGNBQWMsQ0FBQyxHQUFmLENBQWtCO0FBQUE7QUFBbEIsRUFBbUMsQ0FBQyxFQUFELEVBQUs7QUFBRSxFQUFBLEdBQUcsRUFBRTtBQUFQLENBQUwsS0FBd0I7QUFDekQsTUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLGtCQUFILENBQXNCLE1BQXRCLENBQVg7QUFDQSxFQUFBLEVBQUUsQ0FBQyxLQUFILENBQVMsSUFBVCxDQUFjLElBQWQ7QUFDRCxDQUhEO0FBS0EsY0FBYyxDQUFDLEdBQWYsQ0FBa0I7QUFBQTtBQUFsQixFQUFtQyxDQUFDLEVBQUQsRUFBSztBQUFFLEVBQUEsR0FBRyxFQUFFO0FBQVAsQ0FBTCxLQUF3QjtBQUN6RCxNQUFJLElBQUksR0FBUyxFQUFFLENBQUMsS0FBSCxDQUFTLEdBQVQsRUFBakI7QUFDQSxFQUFBLEVBQUUsQ0FBQyxLQUFILEdBQVcsVUFBWCxDQUFzQixNQUF0QixFQUE4QixJQUE5QjtBQUNELENBSEQ7QUFLQSxjQUFjLENBQUMsR0FBZixDQUFrQjtBQUFBO0FBQWxCLEVBRUUsQ0FBQyxFQUFELEVBQUs7QUFBRSxFQUFBLEdBQUcsRUFBRTtBQUFQLENBQUwsS0FBd0I7QUFDdEIsTUFBSSxNQUFNLEdBQVMsRUFBRSxDQUFDLEtBQUgsQ0FBUyxHQUFULEVBQW5CO0FBQ0EsTUFBSSxLQUFLLEdBQVMsRUFBRSxDQUFDLEtBQUgsQ0FBUyxHQUFULEVBQWxCO0FBQ0EsTUFBSSxLQUFLLEdBQVMsRUFBRSxDQUFDLEtBQUgsQ0FBUyxHQUFULEVBQWxCO0FBRUEsTUFBSSxLQUFLLEdBQTBCLEtBQUssR0FBRyxDQUFDLE1BQUQsRUFBVSxLQUFWLEVBQWlCLEtBQWpCLENBQUgsR0FBNkIsSUFBckU7QUFFQSxFQUFBLEVBQUUsQ0FBQyxLQUFILEdBQVcsU0FBWCxDQUFxQixNQUFyQixFQUE2QixLQUE3QjtBQUNELENBVkgsRUFXRSxLQVhGO0FBY0EsY0FBYyxDQUFDLEdBQWYsQ0FBa0I7QUFBQTtBQUFsQixFQUFtQyxDQUFDLEVBQUQsRUFBSztBQUFFLEVBQUEsR0FBRyxFQUFFO0FBQVAsQ0FBTCxLQUF3QjtBQUN6RCxNQUFJLE1BQU0sR0FBUyxFQUFFLENBQUMsS0FBSCxDQUFTLEdBQVQsRUFBbkI7QUFDQSxNQUFJLEtBQUssR0FBUyxFQUFFLENBQUMsS0FBSCxDQUFTLEdBQVQsRUFBbEI7QUFDQSxNQUFJLEtBQUssR0FBUyxFQUFFLENBQUMsS0FBSCxDQUFTLEdBQVQsRUFBbEI7QUFFQSxNQUFJLEtBQUssR0FBMEIsS0FBSyxHQUFHLENBQUMsTUFBRCxFQUFVLEtBQVYsRUFBaUIsS0FBakIsQ0FBSCxHQUE2QixJQUFyRTtBQUVBLEVBQUEsRUFBRSxDQUFDLEtBQUgsR0FBVyxTQUFYLENBQXFCLE1BQXJCLEVBQTZCLEtBQTdCO0FBQ0QsQ0FSRDtBQVVBLGNBQWMsQ0FBQyxHQUFmLENBQWtCO0FBQUE7QUFBbEIsRUFBeUMsQ0FBQyxFQUFELEVBQUs7QUFBRSxFQUFBLEdBQUcsRUFBRTtBQUFQLENBQUwsS0FBdUI7QUFDOUQsTUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLFNBQUQsQ0FBRixDQUFjLFNBQWQsQ0FBd0IsS0FBeEIsQ0FBWDtBQUNBLE1BQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxLQUFILEdBQVcsYUFBWCxFQUFiO0FBRUEsTUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUQsQ0FBaEI7O0FBQ0EsTUFBSSxHQUFHLEtBQUssU0FBWixFQUF1QjtBQUNyQixJQUFBLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBSCxHQUFhLEdBQWIsQ0FBaUIsSUFBakIsQ0FBTjtBQUNEOztBQUVELEVBQUEsRUFBRSxDQUFDLEtBQUgsQ0FBUyxJQUFULENBQWMsR0FBZDtBQUNELENBVkQ7QUFZQSxjQUFjLENBQUMsR0FBZixDQUFrQjtBQUFBO0FBQWxCLEVBQWlDLENBQUMsRUFBRCxFQUFLO0FBQUUsRUFBQSxHQUFHLEVBQUU7QUFBUCxDQUFMLEtBQXlCO0FBQ3hELEVBQUEsRUFBRSxDQUFDLGFBQUgsQ0FBaUIsT0FBakI7QUFDRCxDQUZEO0FBSUEsY0FBYyxDQUFDLEdBQWYsQ0FBa0I7QUFBQTtBQUFsQixFQUFtQyxDQUFDLEVBQUQsRUFBSztBQUFFLEVBQUEsR0FBRyxFQUFFO0FBQVAsQ0FBTCxLQUFzQjtBQUN2RCxNQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBRCxDQUFGLENBQWMsU0FBZCxDQUF3QixJQUF4QixDQUFWO0FBQ0EsTUFBSSxJQUFJLEdBQVMsRUFBRSxDQUFDLEtBQUgsQ0FBUyxHQUFULEVBQWpCO0FBQ0EsRUFBQSxFQUFFLENBQUMsS0FBSCxDQUFTLElBQVQsQ0FBYyxJQUFJLENBQUMsR0FBTCxDQUFTLEdBQVQsQ0FBZDtBQUNELENBSkQ7QUFNQSxjQUFjLENBQUMsR0FBZixDQUFrQjtBQUFBO0FBQWxCLEVBQWdDLENBQUMsRUFBRCxFQUFLO0FBQUUsRUFBQSxHQUFHLEVBQUU7QUFBUCxDQUFMLEtBQXdCO0FBQ3RELE1BQUk7QUFBRSxJQUFBO0FBQUYsTUFBWSxFQUFoQjtBQUNBLE1BQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFILEdBQVcsUUFBWCxDQUFvQixNQUFwQixDQUFaO0FBRUEsRUFBQSxLQUFLLENBQUMsSUFBTixDQUFXLEtBQVg7QUFDRCxDQUxEO0FBT0EsY0FBYyxDQUFDLEdBQWYsQ0FBa0I7QUFBQTtBQUFsQixFQUFzQyxFQUFFLElBQUc7QUFDekMsTUFBSTtBQUFFLElBQUE7QUFBRixNQUFZLEVBQWhCO0FBQ0EsTUFBSSxLQUFLLEdBQVMsS0FBSyxDQUFDLEdBQU4sRUFBbEI7O0FBRUEsTUFBSSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFELENBQWxDLEVBQTJDO0FBQ3pDLElBQUEsS0FBSyxDQUFDLElBQU4sQ0FBVyxLQUFLLENBQUMsQ0FBRCxDQUFoQjtBQUNBLElBQUEsS0FBSyxDQUFDLElBQU4sQ0FBVyxLQUFLLENBQUMsQ0FBRCxDQUFoQjtBQUNBLElBQUEsS0FBSyxDQUFDLElBQU4sQ0FBVyxLQUFLLENBQUMsQ0FBRCxDQUFoQjtBQUNELEdBSkQsTUFJTztBQUNMLElBQUEsS0FBSyxDQUFDLElBQU4sQ0FBVyxJQUFYO0FBQ0EsSUFBQSxLQUFLLENBQUMsSUFBTixDQUFXLElBQVg7QUFDQSxJQUFBLEtBQUssQ0FBQyxJQUFOLENBQVcsSUFBWDtBQUNEO0FBQ0YsQ0FiRDs7QUFlQSxTQUFTLG9CQUFULENBQThCLEtBQTlCLEVBQThEO0FBQUEsWUFDNUQsTUFBTSxDQUNKLEtBQUssQ0FBQyxPQUFOLENBQWMsS0FBZCxLQUF3QixLQUFLLEtBQUssbUJBRDlCLEVBRUosNERBRkksQ0FEc0Q7QUFLNUQsU0FBTyxLQUFLLEtBQUssbUJBQWpCO0FBQ0Q7O0FBRUQsY0FBYyxDQUFDLEdBQWYsQ0FBa0I7QUFBQTtBQUFsQixFQUFnQyxFQUFFLElBQUc7QUFDbkMsTUFBSTtBQUFFLElBQUE7QUFBRixNQUFZLEVBQWhCO0FBQ0EsTUFBSSxLQUFLLEdBQVMsS0FBSyxDQUFDLEdBQU4sRUFBbEI7O0FBRUEsTUFBSSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFELENBQWxDLEVBQTJDO0FBQ3pDLElBQUEsS0FBSyxDQUFDLElBQU4sQ0FBVyxjQUFYO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsSUFBQSxLQUFLLENBQUMsSUFBTixDQUFXLGVBQVg7QUFDRDtBQUNGLENBVEQ7QUFXQSxjQUFjLENBQUMsR0FBZixDQUFrQjtBQUFBO0FBQWxCLEVBQXNDLEVBQUUsSUFBRztBQUN6QztBQUNBLE1BQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFILENBQVMsR0FBVCxFQUFaO0FBQ0EsTUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUgsQ0FBUyxHQUFULEVBQVo7QUFJQSxNQUFJLEtBQUssR0FBUyxFQUFFLENBQUMsS0FBSCxDQUFTLEdBQVQsRUFBbEI7QUFFQSxNQUFJLGNBQWMsR0FBRyxLQUFLLElBQUksS0FBSyxDQUFDLFVBQU4sQ0FBaUIsTUFBL0M7QUFDQSxFQUFBLEVBQUUsQ0FBQyxLQUFILENBQVMsSUFBVCxDQUFjLGNBQWMsR0FBRyxjQUFILEdBQW9CLGVBQWhEO0FBQ0QsQ0FYRDtBQWFBLGNBQWMsQ0FBQyxHQUFmLENBQWtCO0FBQUE7QUFBbEIsRUFBOEIsQ0FBQyxFQUFELEVBQUs7QUFBRSxFQUFBLEdBQUcsRUFBRTtBQUFQLENBQUwsS0FBdUI7QUFDbkQsTUFBSSxHQUFHLEdBQTJDLElBQUksS0FBSixDQUFVLEtBQVYsQ0FBbEQ7O0FBRUEsT0FBSyxJQUFJLENBQUMsR0FBRyxLQUFiLEVBQW9CLENBQUMsR0FBRyxDQUF4QixFQUEyQixDQUFDLEVBQTVCLEVBQWdDO0FBQzlCLFFBQUksTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFqQjtBQUNBLElBQUEsR0FBRyxDQUFDLE1BQUQsQ0FBSCxHQUFvQixFQUFFLENBQUMsS0FBSCxDQUFTLEdBQVQsRUFBcEI7QUFDRDs7QUFFRCxFQUFBLEVBQUUsQ0FBQyxLQUFILENBQVMsSUFBVCxDQUFjLElBQUksZUFBSixDQUFvQixHQUFwQixDQUFkO0FBQ0QsQ0FURCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbiwgT3AsIEppdFNjb3BlQmxvY2ssIEFvdFNjb3BlQmxvY2ssIFZNIGFzIFB1YmxpY1ZNIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgJHYwIH0gZnJvbSAnQGdsaW1tZXIvdm0nO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IEZBTFNFX1JFRkVSRU5DRSwgVFJVRV9SRUZFUkVOQ0UsIFVOREVGSU5FRF9SRUZFUkVOQ0UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IENvbmNhdFJlZmVyZW5jZSB9IGZyb20gJy4uL2V4cHJlc3Npb25zL2NvbmNhdCc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIGNoZWNrLFxuICBDaGVja09wdGlvbixcbiAgQ2hlY2tIYW5kbGUsXG4gIENoZWNrQmxvY2tTeW1ib2xUYWJsZSxcbiAgQ2hlY2tPcixcbiAgQ2hlY2tNYXliZSxcbn0gZnJvbSAnQGdsaW1tZXIvZGVidWcnO1xuaW1wb3J0IHtcbiAgQ2hlY2tBcmd1bWVudHMsXG4gIENoZWNrUGF0aFJlZmVyZW5jZSxcbiAgQ2hlY2tDb21waWxhYmxlQmxvY2ssXG4gIENoZWNrU2NvcGUsXG4gIENoZWNrSGVscGVyLFxuICBDaGVja1VuZGVmaW5lZFJlZmVyZW5jZSxcbiAgQ2hlY2tTY29wZUJsb2NrLFxufSBmcm9tICcuLy1kZWJ1Zy1zdHJpcCc7XG5pbXBvcnQgeyBDT05TVEFOVFMgfSBmcm9tICcuLi8uLi9zeW1ib2xzJztcblxuZXhwb3J0IHR5cGUgRnVuY3Rpb25FeHByZXNzaW9uPFQ+ID0gKHZtOiBQdWJsaWNWTSkgPT4gVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxUPjtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkhlbHBlciwgKHZtLCB7IG9wMTogaGFuZGxlIH0pID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCBoZWxwZXIgPSBjaGVjayh2bS5ydW50aW1lLnJlc29sdmVyLnJlc29sdmUoaGFuZGxlKSwgQ2hlY2tIZWxwZXIpO1xuICBsZXQgYXJncyA9IGNoZWNrKHN0YWNrLnBvcCgpLCBDaGVja0FyZ3VtZW50cyk7XG4gIGxldCB2YWx1ZSA9IGhlbHBlcihhcmdzLCB2bSk7XG5cbiAgdm0ubG9hZFZhbHVlKCR2MCwgdmFsdWUpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRWYXJpYWJsZSwgKHZtLCB7IG9wMTogc3ltYm9sIH0pID0+IHtcbiAgbGV0IGV4cHIgPSB2bS5yZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sKTtcbiAgdm0uc3RhY2sucHVzaChleHByKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuU2V0VmFyaWFibGUsICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gIGxldCBleHByID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrUGF0aFJlZmVyZW5jZSk7XG4gIHZtLnNjb3BlKCkuYmluZFN5bWJvbChzeW1ib2wsIGV4cHIpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChcbiAgT3AuU2V0Sml0QmxvY2ssXG4gICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gICAgbGV0IGhhbmRsZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja09wdGlvbihDaGVja0NvbXBpbGFibGVCbG9jaykpO1xuICAgIGxldCBzY29wZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1Njb3BlKTtcbiAgICBsZXQgdGFibGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tCbG9ja1N5bWJvbFRhYmxlKSk7XG5cbiAgICBsZXQgYmxvY2s6IE9wdGlvbjxKaXRTY29wZUJsb2NrPiA9IHRhYmxlID8gW2hhbmRsZSEsIHNjb3BlLCB0YWJsZV0gOiBudWxsO1xuXG4gICAgdm0uc2NvcGUoKS5iaW5kQmxvY2soc3ltYm9sLCBibG9jayk7XG4gIH0sXG4gICdqaXQnXG4pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuU2V0QW90QmxvY2ssICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gIGxldCBoYW5kbGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tIYW5kbGUpKTtcbiAgbGV0IHNjb3BlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrU2NvcGUpO1xuICBsZXQgdGFibGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tCbG9ja1N5bWJvbFRhYmxlKSk7XG5cbiAgbGV0IGJsb2NrOiBPcHRpb248QW90U2NvcGVCbG9jaz4gPSB0YWJsZSA/IFtoYW5kbGUhLCBzY29wZSwgdGFibGVdIDogbnVsbDtcblxuICB2bS5zY29wZSgpLmJpbmRCbG9jayhzeW1ib2wsIGJsb2NrKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUmVzb2x2ZU1heWJlTG9jYWwsICh2bSwgeyBvcDE6IF9uYW1lIH0pID0+IHtcbiAgbGV0IG5hbWUgPSB2bVtDT05TVEFOVFNdLmdldFN0cmluZyhfbmFtZSk7XG4gIGxldCBsb2NhbHMgPSB2bS5zY29wZSgpLmdldFBhcnRpYWxNYXAoKSE7XG5cbiAgbGV0IHJlZiA9IGxvY2Fsc1tuYW1lXTtcbiAgaWYgKHJlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmVmID0gdm0uZ2V0U2VsZigpLmdldChuYW1lKTtcbiAgfVxuXG4gIHZtLnN0YWNrLnB1c2gocmVmKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUm9vdFNjb3BlLCAodm0sIHsgb3AxOiBzeW1ib2xzIH0pID0+IHtcbiAgdm0ucHVzaFJvb3RTY29wZShzeW1ib2xzKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuR2V0UHJvcGVydHksICh2bSwgeyBvcDE6IF9rZXkgfSkgPT4ge1xuICBsZXQga2V5ID0gdm1bQ09OU1RBTlRTXS5nZXRTdHJpbmcoX2tleSk7XG4gIGxldCBleHByID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrUGF0aFJlZmVyZW5jZSk7XG4gIHZtLnN0YWNrLnB1c2goZXhwci5nZXQoa2V5KSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkdldEJsb2NrLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICBsZXQgeyBzdGFjayB9ID0gdm07XG4gIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2soX2Jsb2NrKTtcblxuICBzdGFjay5wdXNoKGJsb2NrKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSml0U3ByZWFkQmxvY2ssIHZtID0+IHtcbiAgbGV0IHsgc3RhY2sgfSA9IHZtO1xuICBsZXQgYmxvY2sgPSBjaGVjayhzdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tPcihDaGVja1Njb3BlQmxvY2ssIENoZWNrVW5kZWZpbmVkUmVmZXJlbmNlKSkpO1xuXG4gIGlmIChibG9jayAmJiAhaXNVbmRlZmluZWRSZWZlcmVuY2UoYmxvY2spKSB7XG4gICAgc3RhY2sucHVzaChibG9ja1syXSk7XG4gICAgc3RhY2sucHVzaChibG9ja1sxXSk7XG4gICAgc3RhY2sucHVzaChibG9ja1swXSk7XG4gIH0gZWxzZSB7XG4gICAgc3RhY2sucHVzaChudWxsKTtcbiAgICBzdGFjay5wdXNoKG51bGwpO1xuICAgIHN0YWNrLnB1c2gobnVsbCk7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZFJlZmVyZW5jZShpbnB1dDogSml0U2NvcGVCbG9jayB8IFJlZmVyZW5jZSk6IGlucHV0IGlzIFJlZmVyZW5jZSB7XG4gIGFzc2VydChcbiAgICBBcnJheS5pc0FycmF5KGlucHV0KSB8fCBpbnB1dCA9PT0gVU5ERUZJTkVEX1JFRkVSRU5DRSxcbiAgICAnYSByZWZlcmVuY2Ugb3RoZXIgdGhhbiBVTkRFRklORURfUkVGRVJFTkNFIGlzIGlsbGVnYWwgaGVyZSdcbiAgKTtcbiAgcmV0dXJuIGlucHV0ID09PSBVTkRFRklORURfUkVGRVJFTkNFO1xufVxuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSGFzQmxvY2ssIHZtID0+IHtcbiAgbGV0IHsgc3RhY2sgfSA9IHZtO1xuICBsZXQgYmxvY2sgPSBjaGVjayhzdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tPcihDaGVja1Njb3BlQmxvY2ssIENoZWNrVW5kZWZpbmVkUmVmZXJlbmNlKSkpO1xuXG4gIGlmIChibG9jayAmJiAhaXNVbmRlZmluZWRSZWZlcmVuY2UoYmxvY2spKSB7XG4gICAgc3RhY2sucHVzaChUUlVFX1JFRkVSRU5DRSk7XG4gIH0gZWxzZSB7XG4gICAgc3RhY2sucHVzaChGQUxTRV9SRUZFUkVOQ0UpO1xuICB9XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkhhc0Jsb2NrUGFyYW1zLCB2bSA9PiB7XG4gIC8vIEZJWE1FKG1tdW4pOiBzaG91bGQgb25seSBuZWVkIHRvIHB1c2ggdGhlIHN5bWJvbCB0YWJsZVxuICBsZXQgYmxvY2sgPSB2bS5zdGFjay5wb3AoKTtcbiAgbGV0IHNjb3BlID0gdm0uc3RhY2sucG9wKCk7XG5cbiAgY2hlY2soYmxvY2ssIENoZWNrTWF5YmUoQ2hlY2tPcihDaGVja0hhbmRsZSwgQ2hlY2tDb21waWxhYmxlQmxvY2spKSk7XG4gIGNoZWNrKHNjb3BlLCBDaGVja01heWJlKENoZWNrU2NvcGUpKTtcbiAgbGV0IHRhYmxlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrTWF5YmUoQ2hlY2tCbG9ja1N5bWJvbFRhYmxlKSk7XG5cbiAgbGV0IGhhc0Jsb2NrUGFyYW1zID0gdGFibGUgJiYgdGFibGUucGFyYW1ldGVycy5sZW5ndGg7XG4gIHZtLnN0YWNrLnB1c2goaGFzQmxvY2tQYXJhbXMgPyBUUlVFX1JFRkVSRU5DRSA6IEZBTFNFX1JFRkVSRU5DRSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNvbmNhdCwgKHZtLCB7IG9wMTogY291bnQgfSkgPT4ge1xuICBsZXQgb3V0OiBBcnJheTxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+PiA9IG5ldyBBcnJheShjb3VudCk7XG5cbiAgZm9yIChsZXQgaSA9IGNvdW50OyBpID4gMDsgaS0tKSB7XG4gICAgbGV0IG9mZnNldCA9IGkgLSAxO1xuICAgIG91dFtvZmZzZXRdID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrUGF0aFJlZmVyZW5jZSk7XG4gIH1cblxuICB2bS5zdGFjay5wdXNoKG5ldyBDb25jYXRSZWZlcmVuY2Uob3V0KSk7XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -456,5 +456,11 @@ import { dict, EMPTY_ARRAY } from '@glimmer/util';

}
function toSymbolName(name) {
return `&${name}`;
}
export class BlockArgumentsImpl {
constructor() {
this.internalValues = null;
this._symbolNames = null;
this.internalTag = null;

@@ -471,2 +477,3 @@ this.names = EMPTY_ARRAY;

this.length = 0;
this._symbolNames = null;
this.internalTag = CONSTANT_TAG;

@@ -481,2 +488,3 @@ this.internalValues = EMPTY_ARRAY;

this.length = length;
this._symbolNames = null;

@@ -532,2 +540,12 @@ if (length === 0) {

get symbolNames() {
let symbolNames = this._symbolNames;
if (symbolNames === null) {
symbolNames = this._symbolNames = this.names.map(toSymbolName);
}
return symbolNames;
}
}

@@ -573,2 +591,2 @@

export const EMPTY_ARGS = new CapturedArgumentsImpl(CONSTANT_TAG, EMPTY_POSITIONAL, EMPTY_NAMED, 0);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2FyZ3VtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUFTLElBQVQsRUFBZSxXQUFmLFFBQWtDLGVBQWxDO0FBb0JBLFNBQWMsWUFBZCxRQUFrQyxvQkFBbEM7QUFDQSxTQUFTLGtCQUFULEVBQTZCLG1CQUE3QixRQUF3RCxlQUF4RDtBQU9BLFNBQVMsYUFBVCxRQUE4QixlQUE5QjtBQUNBLFNBQVMsU0FBVCxRQUEwQixZQUExQjtBQUNBLFNBQVMsR0FBVCxRQUFvQixhQUFwQjtBQUVBOzs7Ozs7OztBQVFBLE9BQU0sTUFBTyxlQUFQLENBQXNCO0FBQTVCLEVBQUEsV0FBQSxHQUFBO0FBQ1UsU0FBQSxLQUFBLEdBQWlDLElBQWpDO0FBQ0QsU0FBQSxVQUFBLEdBQWEsSUFBSSx1QkFBSixFQUFiO0FBQ0EsU0FBQSxLQUFBLEdBQVEsSUFBSSxrQkFBSixFQUFSO0FBQ0EsU0FBQSxNQUFBLEdBQVMsSUFBSSxrQkFBSixFQUFUO0FBMkZSOztBQXpGQyxFQUFBLEtBQUssQ0FBQyxLQUFELEVBQXVCO0FBQzFCLFFBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFELENBQUwsQ0FBaUIsR0FBakIsSUFBd0IsQ0FBbkM7QUFFQSxTQUFLLEtBQUwsQ0FBVyxLQUFYLENBQWlCLEtBQWpCLEVBQXdCLElBQXhCO0FBQ0EsU0FBSyxVQUFMLENBQWdCLEtBQWhCLENBQXNCLEtBQXRCLEVBQTZCLElBQTdCO0FBQ0EsU0FBSyxNQUFMLENBQVksS0FBWixDQUFrQixLQUFsQixFQUF5QixJQUF6QjtBQUVBLFdBQU8sSUFBUDtBQUNEOztBQUVELEVBQUEsS0FBSyxDQUNILEtBREcsRUFFSCxLQUZHLEVBR0gsVUFIRyxFQUlILGVBSkcsRUFLSCxPQUxHLEVBS2E7QUFFaEIsU0FBSyxLQUFMLEdBQWEsS0FBYjtBQUVBOzs7Ozs7OztBQVFBLFFBQUksS0FBSyxHQUFHLEtBQUss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QUFnQixHQUFHLElBQUksK0JBQUosQ0FBb0MsWUFBcEMsRUFBa0QsV0FBbEQsQ0FBekI7QUFDQSxPQUFPLE1BQU0sVUFBVSxHQUFHLElBQUkscUJBQUosQ0FBMEIsWUFBMUIsRUFBd0MsZ0JBQXhDLEVBQTBELFdBQTFELEVBQXVFLENBQXZFLENBQW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZhbHVhdGlvblN0YWNrIH0gZnJvbSAnLi9zdGFjayc7XG5pbXBvcnQgeyBkaWN0LCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgRGljdCxcbiAgT3B0aW9uLFxuICB1bnNhZmUsXG4gIEJsb2NrU3ltYm9sVGFibGUsXG4gIFZNQXJndW1lbnRzLFxuICBDYXB0dXJlZEFyZ3VtZW50cyxcbiAgUG9zaXRpb25hbEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzLFxuICBOYW1lZEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyxcbiAgSml0T3JBb3RCbG9jayxcbiAgQmxvY2tWYWx1ZSxcbiAgU2NvcGVCbG9jayxcbiAgQ2FwdHVyZWRCbG9ja0FyZ3VtZW50cyxcbiAgU2NvcGUsXG4gIEJsb2NrQXJndW1lbnRzLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgVGFnLCBDT05TVEFOVF9UQUcgfSBmcm9tICdAZ2xpbW1lci92YWxpZGF0b3InO1xuaW1wb3J0IHsgUHJpbWl0aXZlUmVmZXJlbmNlLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDaGVja0Jsb2NrU3ltYm9sVGFibGUsIGNoZWNrLCBDaGVja0hhbmRsZSwgQ2hlY2tPcHRpb24sIENoZWNrT3IgfSBmcm9tICdAZ2xpbW1lci9kZWJ1Zyc7XG5pbXBvcnQge1xuICBDaGVja1BhdGhSZWZlcmVuY2UsXG4gIENoZWNrQ29tcGlsYWJsZUJsb2NrLFxuICBDaGVja1Njb3BlLFxufSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzLy1kZWJ1Zy1zdHJpcCc7XG5pbXBvcnQgeyBjb21iaW5lVGFnZ2VkIH0gZnJvbSAnLi4vdXRpbHMvdGFncyc7XG5pbXBvcnQgeyBSRUdJU1RFUlMgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7ICRzcCB9IGZyb20gJ0BnbGltbWVyL3ZtJztcblxuLypcbiAgVGhlIGNhbGxpbmcgY29udmVudGlvbiBpczpcblxuICAqIDAtTiBibG9jayBhcmd1bWVudHMgYXQgdGhlIGJvdHRvbVxuICAqIDAtTiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBuZXh0IChsZWZ0LXRvLXJpZ2h0KVxuICAqIDAtTiBuYW1lZCBhcmd1bWVudHMgbmV4dFxuKi9cblxuZXhwb3J0IGNsYXNzIFZNQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIFZNQXJndW1lbnRzIHtcbiAgcHJpdmF0ZSBzdGFjazogT3B0aW9uPEV2YWx1YXRpb25TdGFjaz4gPSBudWxsO1xuICBwdWJsaWMgcG9zaXRpb25hbCA9IG5ldyBQb3NpdGlvbmFsQXJndW1lbnRzSW1wbCgpO1xuICBwdWJsaWMgbmFtZWQgPSBuZXcgTmFtZWRBcmd1bWVudHNJbXBsKCk7XG4gIHB1YmxpYyBibG9ja3MgPSBuZXcgQmxvY2tBcmd1bWVudHNJbXBsKCk7XG5cbiAgZW1wdHkoc3RhY2s6IEV2YWx1YXRpb25TdGFjayk6IHRoaXMge1xuICAgIGxldCBiYXNlID0gc3RhY2tbUkVHSVNURVJTXVskc3BdICsgMTtcblxuICAgIHRoaXMubmFtZWQuZW1wdHkoc3RhY2ssIGJhc2UpO1xuICAgIHRoaXMucG9zaXRpb25hbC5lbXB0eShzdGFjaywgYmFzZSk7XG4gICAgdGhpcy5ibG9ja3MuZW1wdHkoc3RhY2ssIGJhc2UpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXR1cChcbiAgICBzdGFjazogRXZhbHVhdGlvblN0YWNrLFxuICAgIG5hbWVzOiBzdHJpbmdbXSxcbiAgICBibG9ja05hbWVzOiBzdHJpbmdbXSxcbiAgICBwb3NpdGlvbmFsQ291bnQ6IG51bWJlcixcbiAgICBhdE5hbWVzOiBib29sZWFuXG4gICkge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcblxuICAgIC8qXG4gICAgICAgICAgIHwgLi4uIHwgYmxvY2tzICAgICAgfCBwb3NpdGlvbmFsICB8IG5hbWVkIHxcbiAgICAgICAgICAgfCAuLi4gfCBiMCAgICBiMSAgICB8IHAwIHAxIHAyIHAzIHwgbjAgbjEgfFxuICAgICBpbmRleCB8IC4uLiB8IDQvNS82IDcvOC85IHwgMTAgMTEgMTIgMTMgfCAxNCAxNSB8XG4gICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICBeICAgICAgICAgICAgIF4gIF5cbiAgICAgICAgICAgICAgICAgYmJhc2UgICAgICAgICBwYmFzZSAgICAgICBuYmFzZSAgc3BcbiAgICAqL1xuXG4gICAgbGV0IG5hbWVkID0gdGhpcy5uYW1lZDtcbiAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcbiAgICBsZXQgbmFtZWRCYXNlID0gc3RhY2tbUkVHSVNURVJTXVskc3BdIC0gbmFtZWRDb3VudCArIDE7XG5cbiAgICBuYW1lZC5zZXR1cChzdGFjaywgbmFtZWRCYXNlLCBuYW1lZENvdW50LCBuYW1lcywgYXROYW1lcyk7XG5cbiAgICBsZXQgcG9zaXRpb25hbCA9IHRoaXMucG9zaXRpb25hbDtcbiAgICBsZXQgcG9zaXRpb25hbEJhc2UgPSBuYW1lZEJhc2UgLSBwb3NpdGlvbmFsQ291bnQ7XG5cbiAgICBwb3NpdGlvbmFsLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsQmFzZSwgcG9zaXRpb25hbENvdW50KTtcblxuICAgIGxldCBibG9ja3MgPSB0aGlzLmJsb2NrcztcbiAgICBsZXQgYmxvY2tzQ291bnQgPSBibG9ja05hbWVzLmxlbmd0aDtcbiAgICBsZXQgYmxvY2tzQmFzZSA9IHBvc2l0aW9uYWxCYXNlIC0gYmxvY2tzQ291bnQgKiAzO1xuXG4gICAgYmxvY2tzLnNldHVwKHN0YWNrLCBibG9ja3NCYXNlLCBibG9ja3NDb3VudCwgYmxvY2tOYW1lcyk7XG4gIH1cblxuICBnZXQgdGFnKCk6IFRhZyB7XG4gICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQoW3RoaXMucG9zaXRpb25hbCwgdGhpcy5uYW1lZF0pO1xuICB9XG5cbiAgZ2V0IGJhc2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ibG9ja3MuYmFzZTtcbiAgfVxuXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmxlbmd0aCArIHRoaXMubmFtZWQubGVuZ3RoICsgdGhpcy5ibG9ja3MubGVuZ3RoICogMztcbiAgfVxuXG4gIGF0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+Pihwb3M6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uYWwuYXQ8VD4ocG9zKTtcbiAgfVxuXG4gIHJlYWxsb2Mob2Zmc2V0OiBudW1iZXIpIHtcbiAgICBsZXQgeyBzdGFjayB9ID0gdGhpcztcbiAgICBpZiAob2Zmc2V0ID4gMCAmJiBzdGFjayAhPT0gbnVsbCkge1xuICAgICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHRoaXM7XG4gICAgICBsZXQgbmV3QmFzZSA9IHBvc2l0aW9uYWwuYmFzZSArIG9mZnNldDtcbiAgICAgIGxldCBsZW5ndGggPSBwb3NpdGlvbmFsLmxlbmd0aCArIG5hbWVkLmxlbmd0aDtcblxuICAgICAgZm9yIChsZXQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHN0YWNrLmNvcHkoaSArIHBvc2l0aW9uYWwuYmFzZSwgaSArIG5ld0Jhc2UpO1xuICAgICAgfVxuXG4gICAgICBwb3NpdGlvbmFsLmJhc2UgKz0gb2Zmc2V0O1xuICAgICAgbmFtZWQuYmFzZSArPSBvZmZzZXQ7XG4gICAgICBzdGFja1tSRUdJU1RFUlNdWyRzcF0gKz0gb2Zmc2V0O1xuICAgIH1cbiAgfVxuXG4gIGNhcHR1cmUoKTogQ2FwdHVyZWRBcmd1bWVudHMge1xuICAgIGxldCBwb3NpdGlvbmFsID0gdGhpcy5wb3NpdGlvbmFsLmxlbmd0aCA9PT0gMCA/IEVNUFRZX1BPU0lUSU9OQUwgOiB0aGlzLnBvc2l0aW9uYWwuY2FwdHVyZSgpO1xuICAgIGxldCBuYW1lZCA9IHRoaXMubmFtZWQubGVuZ3RoID09PSAwID8gRU1QVFlfTkFNRUQgOiB0aGlzLm5hbWVkLmNhcHR1cmUoKTtcblxuICAgIHJldHVybiBuZXcgQ2FwdHVyZWRBcmd1bWVudHNJbXBsKHRoaXMudGFnLCBwb3NpdGlvbmFsLCBuYW1lZCwgdGhpcy5sZW5ndGgpO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgbGV0IHsgc3RhY2ssIGxlbmd0aCB9ID0gdGhpcztcbiAgICBpZiAobGVuZ3RoID4gMCAmJiBzdGFjayAhPT0gbnVsbCkgc3RhY2sucG9wKGxlbmd0aCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsIGltcGxlbWVudHMgUG9zaXRpb25hbEFyZ3VtZW50cyB7XG4gIHB1YmxpYyBiYXNlID0gMDtcbiAgcHVibGljIGxlbmd0aCA9IDA7XG5cbiAgcHJpdmF0ZSBzdGFjazogRXZhbHVhdGlvblN0YWNrID0gbnVsbCBhcyBhbnk7XG5cbiAgcHJpdmF0ZSBfdGFnOiBPcHRpb248VGFnPiA9IG51bGw7XG4gIHByaXZhdGUgX3JlZmVyZW5jZXM6IE9wdGlvbjxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W10+ID0gbnVsbDtcblxuICBlbXB0eShzdGFjazogRXZhbHVhdGlvblN0YWNrLCBiYXNlOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICB0aGlzLl90YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICB9XG5cbiAgc2V0dXAoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyLCBsZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLmJhc2UgPSBiYXNlO1xuICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuXG4gICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5fdGFnID0gQ09OU1RBTlRfVEFHO1xuICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRhZygpOiBUYWcge1xuICAgIGxldCB0YWcgPSB0aGlzLl90YWc7XG5cbiAgICBpZiAoIXRhZykge1xuICAgICAgdGFnID0gdGhpcy5fdGFnID0gY29tYmluZVRhZ2dlZCh0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0YWc7XG4gIH1cblxuICBhdDxUIGV4dGVuZHMgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4ocG9zaXRpb246IG51bWJlcik6IFQge1xuICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG5cbiAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIChVTkRFRklORURfUkVGRVJFTkNFIGFzIHVuc2FmZSkgYXMgVDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hlY2soc3RhY2suZ2V0KHBvc2l0aW9uLCBiYXNlKSwgQ2hlY2tQYXRoUmVmZXJlbmNlKSBhcyBUO1xuICB9XG5cbiAgY2FwdHVyZSgpOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwodGhpcy50YWcsIHRoaXMucmVmZXJlbmNlcyk7XG4gIH1cblxuICBwcmVwZW5kKG90aGVyOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMpIHtcbiAgICBsZXQgYWRkaXRpb25zID0gb3RoZXIubGVuZ3RoO1xuXG4gICAgaWYgKGFkZGl0aW9ucyA+IDApIHtcbiAgICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG5cbiAgICAgIHRoaXMuYmFzZSA9IGJhc2UgPSBiYXNlIC0gYWRkaXRpb25zO1xuICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGggKyBhZGRpdGlvbnM7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWRkaXRpb25zOyBpKyspIHtcbiAgICAgICAgc3RhY2suc2V0KG90aGVyLmF0KGkpLCBpLCBiYXNlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHJlZmVyZW5jZXMoKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdIHtcbiAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG5cbiAgICBpZiAoIXJlZmVyZW5jZXMpIHtcbiAgICAgIGxldCB7IHN0YWNrLCBiYXNlLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IHN0YWNrLnNsaWNlQXJyYXk8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oXG4gICAgICAgIGJhc2UsXG4gICAgICAgIGJhc2UgKyBsZW5ndGhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwgaW1wbGVtZW50cyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICBzdGF0aWMgZW1wdHkoKTogQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwoQ09OU1RBTlRfVEFHLCBFTVBUWV9BUlJBWSwgMCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGFnOiBUYWcsXG4gICAgcHVibGljIHJlZmVyZW5jZXM6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj5bXSxcbiAgICBwdWJsaWMgbGVuZ3RoID0gcmVmZXJlbmNlcy5sZW5ndGhcbiAgKSB7fVxuXG4gIGF0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+Pihwb3NpdGlvbjogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1twb3NpdGlvbl0gYXMgVDtcbiAgfVxuXG4gIHZhbHVlKCk6IHVua25vd25bXSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlcy5tYXAodGhpcy52YWx1ZU9mKTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+IHtcbiAgICBsZXQgeyByZWZlcmVuY2VzLCBsZW5ndGggfSA9IHRoaXM7XG5cbiAgICBpZiAobmFtZSA9PT0gJ2xlbmd0aCcpIHtcbiAgICAgIHJldHVybiBQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKGxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpZHggPSBwYXJzZUludChuYW1lLCAxMCk7XG5cbiAgICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVmZXJlbmNlc1tpZHhdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsdWVPZih0aGlzOiB2b2lkLCByZWZlcmVuY2U6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4pOiB1bmtub3duIHtcbiAgICByZXR1cm4gcmVmZXJlbmNlLnZhbHVlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5hbWVkQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIE5hbWVkQXJndW1lbnRzIHtcbiAgcHVibGljIGJhc2UgPSAwO1xuICBwdWJsaWMgbGVuZ3RoID0gMDtcblxuICBwcml2YXRlIHN0YWNrITogRXZhbHVhdGlvblN0YWNrO1xuXG4gIHByaXZhdGUgX3JlZmVyZW5jZXM6IE9wdGlvbjxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W10+ID0gbnVsbDtcblxuICBwcml2YXRlIF9uYW1lczogT3B0aW9uPHN0cmluZ1tdPiA9IEVNUFRZX0FSUkFZO1xuICBwcml2YXRlIF9hdE5hbWVzOiBPcHRpb248c3RyaW5nW10+ID0gRU1QVFlfQVJSQVk7XG5cbiAgZW1wdHkoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICAgIHRoaXMuX25hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgdGhpcy5fYXROYW1lcyA9IEVNUFRZX0FSUkFZO1xuICB9XG5cbiAgc2V0dXAoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbmFtZXM6IHN0cmluZ1tdLCBhdE5hbWVzOiBib29sZWFuKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLl9yZWZlcmVuY2VzID0gRU1QVFlfQVJSQVk7XG4gICAgICB0aGlzLl9uYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgICAgdGhpcy5fYXROYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcblxuICAgICAgaWYgKGF0TmFtZXMpIHtcbiAgICAgICAgdGhpcy5fbmFtZXMgPSBudWxsO1xuICAgICAgICB0aGlzLl9hdE5hbWVzID0gbmFtZXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9uYW1lcyA9IG5hbWVzO1xuICAgICAgICB0aGlzLl9hdE5hbWVzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgdGFnKCk6IFRhZyB7XG4gICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQodGhpcy5yZWZlcmVuY2VzKTtcbiAgfVxuXG4gIGdldCBuYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgbGV0IG5hbWVzID0gdGhpcy5fbmFtZXM7XG5cbiAgICBpZiAoIW5hbWVzKSB7XG4gICAgICBuYW1lcyA9IHRoaXMuX25hbWVzID0gdGhpcy5fYXROYW1lcyEubWFwKHRoaXMudG9TeW50aGV0aWNOYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmFtZXMhO1xuICB9XG5cbiAgZ2V0IGF0TmFtZXMoKTogc3RyaW5nW10ge1xuICAgIGxldCBhdE5hbWVzID0gdGhpcy5fYXROYW1lcztcblxuICAgIGlmICghYXROYW1lcykge1xuICAgICAgYXROYW1lcyA9IHRoaXMuX2F0TmFtZXMgPSB0aGlzLl9uYW1lcyEubWFwKHRoaXMudG9BdE5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBhdE5hbWVzITtcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGdldDxUIGV4dGVuZHMgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4obmFtZTogc3RyaW5nLCBhdE5hbWVzID0gZmFsc2UpOiBUIHtcbiAgICBsZXQgeyBiYXNlLCBzdGFjayB9ID0gdGhpcztcblxuICAgIGxldCBuYW1lcyA9IGF0TmFtZXMgPyB0aGlzLmF0TmFtZXMgOiB0aGlzLm5hbWVzO1xuXG4gICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG5cbiAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIChVTkRFRklORURfUkVGRVJFTkNFIGFzIHVuc2FmZSkgYXMgVDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhY2suZ2V0PFQ+KGlkeCwgYmFzZSk7XG4gIH1cblxuICBjYXB0dXJlKCk6IENhcHR1cmVkTmFtZWRBcmd1bWVudHMge1xuICAgIHJldHVybiBuZXcgQ2FwdHVyZWROYW1lZEFyZ3VtZW50c0ltcGwodGhpcy50YWcsIHRoaXMubmFtZXMsIHRoaXMucmVmZXJlbmNlcyk7XG4gIH1cblxuICBtZXJnZShvdGhlcjogQ2FwdHVyZWROYW1lZEFyZ3VtZW50cykge1xuICAgIGxldCB7IGxlbmd0aDogZXh0cmFzIH0gPSBvdGhlcjtcblxuICAgIGlmIChleHRyYXMgPiAwKSB7XG4gICAgICBsZXQgeyBuYW1lcywgbGVuZ3RoLCBzdGFjayB9ID0gdGhpcztcbiAgICAgIGxldCB7IG5hbWVzOiBleHRyYU5hbWVzIH0gPSBvdGhlcjtcblxuICAgICAgaWYgKE9iamVjdC5pc0Zyb3plbihuYW1lcykgJiYgbmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIG5hbWVzID0gW107XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXh0cmFzOyBpKyspIHtcbiAgICAgICAgbGV0IG5hbWUgPSBleHRyYU5hbWVzW2ldO1xuICAgICAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcblxuICAgICAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgICAgIGxlbmd0aCA9IG5hbWVzLnB1c2gobmFtZSk7XG4gICAgICAgICAgc3RhY2sucHVzaChvdGhlci5yZWZlcmVuY2VzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgdGhpcy5fbmFtZXMgPSBuYW1lcztcbiAgICAgIHRoaXMuX2F0TmFtZXMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHJlZmVyZW5jZXMoKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdIHtcbiAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG5cbiAgICBpZiAoIXJlZmVyZW5jZXMpIHtcbiAgICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG4gICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IHN0YWNrLnNsaWNlQXJyYXk8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oXG4gICAgICAgIGJhc2UsXG4gICAgICAgIGJhc2UgKyBsZW5ndGhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gIH1cblxuICBwcml2YXRlIHRvU3ludGhldGljTmFtZSh0aGlzOiB2b2lkLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuYW1lLnNsaWNlKDEpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b0F0TmFtZSh0aGlzOiB2b2lkLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgQCR7bmFtZX1gO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIENhcHR1cmVkTmFtZWRBcmd1bWVudHMge1xuICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG4gIHByaXZhdGUgX21hcDogT3B0aW9uPERpY3Q8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWc6IFRhZyxcbiAgICBwdWJsaWMgbmFtZXM6IHN0cmluZ1tdLFxuICAgIHB1YmxpYyByZWZlcmVuY2VzOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W11cbiAgKSB7XG4gICAgdGhpcy5sZW5ndGggPSBuYW1lcy5sZW5ndGg7XG4gICAgdGhpcy5fbWFwID0gbnVsbDtcbiAgfVxuXG4gIGdldCBtYXAoKSB7XG4gICAgbGV0IG1hcCA9IHRoaXMuX21hcDtcblxuICAgIGlmICghbWFwKSB7XG4gICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgIG1hcCA9IHRoaXMuX21hcCA9IGRpY3Q8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICBtYXAhW25hbWVdID0gcmVmZXJlbmNlc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICB9XG5cbiAgZ2V0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+PihuYW1lOiBzdHJpbmcpOiBUIHtcbiAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcblxuICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICByZXR1cm4gKFVOREVGSU5FRF9SRUZFUkVOQ0UgYXMgdW5zYWZlKSBhcyBUO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVmZXJlbmNlc1tpZHhdIGFzIFQ7XG4gICAgfVxuICB9XG5cbiAgdmFsdWUoKTogRGljdDx1bmtub3duPiB7XG4gICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgbGV0IG91dCA9IGRpY3Q8dW5rbm93bj4oKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBuYW1lID0gbmFtZXNbaV07XG4gICAgICBvdXRbbmFtZV0gPSByZWZlcmVuY2VzW2ldLnZhbHVlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmxvY2tBcmd1bWVudHNJbXBsPEMgZXh0ZW5kcyBKaXRPckFvdEJsb2NrPiBpbXBsZW1lbnRzIEJsb2NrQXJndW1lbnRzPEM+IHtcbiAgcHJpdmF0ZSBzdGFjayE6IEV2YWx1YXRpb25TdGFjaztcbiAgcHJpdmF0ZSBpbnRlcm5hbFZhbHVlczogT3B0aW9uPG51bWJlcltdPiA9IG51bGw7XG5cbiAgcHVibGljIGludGVybmFsVGFnOiBPcHRpb248VGFnPiA9IG51bGw7XG4gIHB1YmxpYyBuYW1lczogc3RyaW5nW10gPSBFTVBUWV9BUlJBWTtcblxuICBwdWJsaWMgbGVuZ3RoID0gMDtcbiAgcHVibGljIGJhc2UgPSAwO1xuXG4gIGVtcHR5KHN0YWNrOiBFdmFsdWF0aW9uU3RhY2ssIGJhc2U6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLm5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICB0aGlzLmludGVybmFsVGFnID0gQ09OU1RBTlRfVEFHO1xuICAgIHRoaXMuaW50ZXJuYWxWYWx1ZXMgPSBFTVBUWV9BUlJBWTtcbiAgfVxuXG4gIHNldHVwKHN0YWNrOiBFdmFsdWF0aW9uU3RhY2ssIGJhc2U6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIsIG5hbWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLm5hbWVzID0gbmFtZXM7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcblxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxUYWcgPSBDT05TVEFOVF9UQUc7XG4gICAgICB0aGlzLmludGVybmFsVmFsdWVzID0gRU1QVFlfQVJSQVk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxUYWcgPSBudWxsO1xuICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlcyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlcygpOiBCbG9ja1ZhbHVlW10ge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmludGVybmFsVmFsdWVzO1xuXG4gICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG4gICAgICB2YWx1ZXMgPSB0aGlzLmludGVybmFsVmFsdWVzID0gc3RhY2suc2xpY2VBcnJheTxudW1iZXI+KGJhc2UsIGJhc2UgKyBsZW5ndGggKiAzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVzO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWVzIS5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBPcHRpb248U2NvcGVCbG9jazxDPj4ge1xuICAgIGxldCBpZHggPSB0aGlzLm5hbWVzIS5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB7IGJhc2UsIHN0YWNrIH0gPSB0aGlzO1xuXG4gICAgbGV0IHRhYmxlID0gY2hlY2soc3RhY2suZ2V0KGlkeCAqIDMsIGJhc2UpLCBDaGVja09wdGlvbihDaGVja0Jsb2NrU3ltYm9sVGFibGUpKTtcbiAgICBsZXQgc2NvcGUgPSBjaGVjayhzdGFjay5nZXQoaWR4ICogMyArIDEsIGJhc2UpLCBDaGVja09wdGlvbihDaGVja1Njb3BlKSk7XG4gICAgbGV0IGhhbmRsZSA9IGNoZWNrKFxuICAgICAgc3RhY2suZ2V0KGlkeCAqIDMgKyAyLCBiYXNlKSxcbiAgICAgIENoZWNrT3B0aW9uKENoZWNrT3IoQ2hlY2tIYW5kbGUsIENoZWNrQ29tcGlsYWJsZUJsb2NrKSlcbiAgICApO1xuXG4gICAgcmV0dXJuIGhhbmRsZSA9PT0gbnVsbCA/IG51bGwgOiAoW2hhbmRsZSwgc2NvcGUhLCB0YWJsZSFdIGFzIFNjb3BlQmxvY2s8Qz4pO1xuICB9XG5cbiAgY2FwdHVyZSgpOiBDYXB0dXJlZEJsb2NrQXJndW1lbnRzIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkQmxvY2tBcmd1bWVudHNJbXBsKHRoaXMubmFtZXMsIHRoaXMudmFsdWVzKTtcbiAgfVxufVxuXG5jbGFzcyBDYXB0dXJlZEJsb2NrQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIENhcHR1cmVkQmxvY2tBcmd1bWVudHMge1xuICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG5hbWVzOiBzdHJpbmdbXSwgcHVibGljIHZhbHVlczogQmxvY2tWYWx1ZVtdKSB7XG4gICAgdGhpcy5sZW5ndGggPSBuYW1lcy5sZW5ndGg7XG4gIH1cblxuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogT3B0aW9uPFNjb3BlQmxvY2s+IHtcbiAgICBsZXQgaWR4ID0gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGlkeCA9PT0gLTEpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMudmFsdWVzW2lkeCAqIDMgKyAyXSBhcyBudW1iZXIsXG4gICAgICB0aGlzLnZhbHVlc1tpZHggKiAzICsgMV0gYXMgU2NvcGU8Sml0T3JBb3RCbG9jaz4sXG4gICAgICB0aGlzLnZhbHVlc1tpZHggKiAzXSBhcyBCbG9ja1N5bWJvbFRhYmxlLFxuICAgIF07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhcHR1cmVkQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIENhcHR1cmVkQXJndW1lbnRzIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhZzogVGFnLFxuICAgIHB1YmxpYyBwb3NpdGlvbmFsOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMsXG4gICAgcHVibGljIG5hbWVkOiBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLFxuICAgIHB1YmxpYyBsZW5ndGg6IG51bWJlclxuICApIHt9XG5cbiAgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWVkOiB0aGlzLm5hbWVkLnZhbHVlKCksXG4gICAgICBwb3NpdGlvbmFsOiB0aGlzLnBvc2l0aW9uYWwudmFsdWUoKSxcbiAgICB9O1xuICB9XG59XG5cbmNvbnN0IEVNUFRZX05BTUVEID0gbmV3IENhcHR1cmVkTmFtZWRBcmd1bWVudHNJbXBsKENPTlNUQU5UX1RBRywgRU1QVFlfQVJSQVksIEVNUFRZX0FSUkFZKTtcbmNvbnN0IEVNUFRZX1BPU0lUSU9OQUwgPSBuZXcgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzSW1wbChDT05TVEFOVF9UQUcsIEVNUFRZX0FSUkFZKTtcbmV4cG9ydCBjb25zdCBFTVBUWV9BUkdTID0gbmV3IENhcHR1cmVkQXJndW1lbnRzSW1wbChDT05TVEFOVF9UQUcsIEVNUFRZX1BPU0lUSU9OQUwsIEVNUFRZX05BTUVELCAwKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2FyZ3VtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUFTLElBQVQsRUFBZSxXQUFmLFFBQWtDLGVBQWxDO0FBb0JBLFNBQWMsWUFBZCxRQUFrQyxvQkFBbEM7QUFDQSxTQUFTLGtCQUFULEVBQTZCLG1CQUE3QixRQUF3RCxlQUF4RDtBQU9BLFNBQVMsYUFBVCxRQUE4QixlQUE5QjtBQUNBLFNBQVMsU0FBVCxRQUEwQixZQUExQjtBQUNBLFNBQVMsR0FBVCxRQUFvQixhQUFwQjtBQUVBOzs7Ozs7OztBQVFBLE9BQU0sTUFBTyxlQUFQLENBQXNCO0FBQTVCLEVBQUEsV0FBQSxHQUFBO0FBQ1UsU0FBQSxLQUFBLEdBQWlDLElBQWpDO0FBQ0QsU0FBQSxVQUFBLEdBQWEsSUFBSSx1QkFBSixFQUFiO0FBQ0EsU0FBQSxLQUFBLEdBQVEsSUFBSSxrQkFBSixFQUFSO0FBQ0EsU0FBQSxNQUFBLEdBQVMsSUFBSSxrQkFBSixFQUFUO0FBMkZSOztBQXpGQyxFQUFBLEtBQUssQ0FBQyxLQUFELEVBQXVCO0FBQzFCLFFBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFELENBQUwsQ0FBaUIsR0FBakIsSUFBd0IsQ0FBbkM7QUFFQSxTQUFLLEtBQUwsQ0FBVyxLQUFYLENBQWlCLEtBQWpCLEVBQXdCLElBQXhCO0FBQ0EsU0FBSyxVQUFMLENBQWdCLEtBQWhCLENBQXNCLEtBQXRCLEVBQTZCLElBQTdCO0FBQ0EsU0FBSyxNQUFMLENBQVksS0FBWixDQUFrQixLQUFsQixFQUF5QixJQUF6QjtBQUVBLFdBQU8sSUFBUDtBQUNEOztBQUVELEVBQUEsS0FBSyxDQUNILEtBREcsRUFFSCxLQUZHLEVBR0gsVUFIRyxFQUlILGVBSkcsRUFLSCxPQUxHLEVBS2E7QUFFaEIsU0FBSyxLQUFMLEdBQWEsS0FBYjtBQUVBOzs7Ozs7OztBQVFBLFFBQUksS0FBSyxHQUFHLEtBQUss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QUhkLFNBQUEsR0FBQSxHQUFBLEdBQUE7QUFDQSxTQUFBLFVBQUEsR0FBQSxVQUFBO0FBQ0EsU0FBQSxLQUFBLEdBQUEsS0FBQTtBQUNBLFNBQUEsTUFBQSxHQUFBLE1BQUE7QUFDTDs7QUFFSixFQUFBLEtBQUssR0FBQTtBQUNILFdBQU87QUFDTCxNQUFBLEtBQUssRUFBRSxLQUFLLEtBQUwsQ0FBVyxLQUFYLEVBREY7QUFFTCxNQUFBLFVBQVUsRUFBRSxLQUFLLFVBQUwsQ0FBZ0IsS0FBaEI7QUFGUCxLQUFQO0FBSUQ7O0FBYitCO0FBZ0JsQyxNQUFNLFdBQVcsR0FBRyxJQUFJLDBCQUFKLENBQStCLFlBQS9CLEVBQTZDLFdBQTdDLEVBQTBELFdBQTFELENBQXBCO0FBQ0EsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLCtCQUFKLENBQW9DLFlBQXBDLEVBQWtELFdBQWxELENBQXpCO0FBQ0EsT0FBTyxNQUFNLFVBQVUsR0FBRyxJQUFJLHFCQUFKLENBQTBCLFlBQTFCLEVBQXdDLGdCQUF4QyxFQUEwRCxXQUExRCxFQUF1RSxDQUF2RSxDQUFuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2YWx1YXRpb25TdGFjayB9IGZyb20gJy4vc3RhY2snO1xuaW1wb3J0IHsgZGljdCwgRU1QVFlfQVJSQVkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIERpY3QsXG4gIE9wdGlvbixcbiAgdW5zYWZlLFxuICBCbG9ja1N5bWJvbFRhYmxlLFxuICBWTUFyZ3VtZW50cyxcbiAgQ2FwdHVyZWRBcmd1bWVudHMsXG4gIFBvc2l0aW9uYWxBcmd1bWVudHMsXG4gIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyxcbiAgTmFtZWRBcmd1bWVudHMsXG4gIENhcHR1cmVkTmFtZWRBcmd1bWVudHMsXG4gIEppdE9yQW90QmxvY2ssXG4gIEJsb2NrVmFsdWUsXG4gIFNjb3BlQmxvY2ssXG4gIENhcHR1cmVkQmxvY2tBcmd1bWVudHMsXG4gIFNjb3BlLFxuICBCbG9ja0FyZ3VtZW50cyxcbn0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IFRhZywgQ09OU1RBTlRfVEFHIH0gZnJvbSAnQGdsaW1tZXIvdmFsaWRhdG9yJztcbmltcG9ydCB7IFByaW1pdGl2ZVJlZmVyZW5jZSwgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgQ2hlY2tCbG9ja1N5bWJvbFRhYmxlLCBjaGVjaywgQ2hlY2tIYW5kbGUsIENoZWNrT3B0aW9uLCBDaGVja09yIH0gZnJvbSAnQGdsaW1tZXIvZGVidWcnO1xuaW1wb3J0IHtcbiAgQ2hlY2tQYXRoUmVmZXJlbmNlLFxuICBDaGVja0NvbXBpbGFibGVCbG9jayxcbiAgQ2hlY2tTY29wZSxcbn0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy8tZGVidWctc3RyaXAnO1xuaW1wb3J0IHsgY29tYmluZVRhZ2dlZCB9IGZyb20gJy4uL3V0aWxzL3RhZ3MnO1xuaW1wb3J0IHsgUkVHSVNURVJTIH0gZnJvbSAnLi4vc3ltYm9scyc7XG5pbXBvcnQgeyAkc3AgfSBmcm9tICdAZ2xpbW1lci92bSc7XG5cbi8qXG4gIFRoZSBjYWxsaW5nIGNvbnZlbnRpb24gaXM6XG5cbiAgKiAwLU4gYmxvY2sgYXJndW1lbnRzIGF0IHRoZSBib3R0b21cbiAgKiAwLU4gcG9zaXRpb25hbCBhcmd1bWVudHMgbmV4dCAobGVmdC10by1yaWdodClcbiAgKiAwLU4gbmFtZWQgYXJndW1lbnRzIG5leHRcbiovXG5cbmV4cG9ydCBjbGFzcyBWTUFyZ3VtZW50c0ltcGwgaW1wbGVtZW50cyBWTUFyZ3VtZW50cyB7XG4gIHByaXZhdGUgc3RhY2s6IE9wdGlvbjxFdmFsdWF0aW9uU3RhY2s+ID0gbnVsbDtcbiAgcHVibGljIHBvc2l0aW9uYWwgPSBuZXcgUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwoKTtcbiAgcHVibGljIG5hbWVkID0gbmV3IE5hbWVkQXJndW1lbnRzSW1wbCgpO1xuICBwdWJsaWMgYmxvY2tzID0gbmV3IEJsb2NrQXJndW1lbnRzSW1wbCgpO1xuXG4gIGVtcHR5KHN0YWNrOiBFdmFsdWF0aW9uU3RhY2spOiB0aGlzIHtcbiAgICBsZXQgYmFzZSA9IHN0YWNrW1JFR0lTVEVSU11bJHNwXSArIDE7XG5cbiAgICB0aGlzLm5hbWVkLmVtcHR5KHN0YWNrLCBiYXNlKTtcbiAgICB0aGlzLnBvc2l0aW9uYWwuZW1wdHkoc3RhY2ssIGJhc2UpO1xuICAgIHRoaXMuYmxvY2tzLmVtcHR5KHN0YWNrLCBiYXNlKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0dXAoXG4gICAgc3RhY2s6IEV2YWx1YXRpb25TdGFjayxcbiAgICBuYW1lczogc3RyaW5nW10sXG4gICAgYmxvY2tOYW1lczogc3RyaW5nW10sXG4gICAgcG9zaXRpb25hbENvdW50OiBudW1iZXIsXG4gICAgYXROYW1lczogYm9vbGVhblxuICApIHtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG5cbiAgICAvKlxuICAgICAgICAgICB8IC4uLiB8IGJsb2NrcyAgICAgIHwgcG9zaXRpb25hbCAgfCBuYW1lZCB8XG4gICAgICAgICAgIHwgLi4uIHwgYjAgICAgYjEgICAgfCBwMCBwMSBwMiBwMyB8IG4wIG4xIHxcbiAgICAgaW5kZXggfCAuLi4gfCA0LzUvNiA3LzgvOSB8IDEwIDExIDEyIDEzIHwgMTQgMTUgfFxuICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgXiAgICAgICAgICAgICBeICBeXG4gICAgICAgICAgICAgICAgIGJiYXNlICAgICAgICAgcGJhc2UgICAgICAgbmJhc2UgIHNwXG4gICAgKi9cblxuICAgIGxldCBuYW1lZCA9IHRoaXMubmFtZWQ7XG4gICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG4gICAgbGV0IG5hbWVkQmFzZSA9IHN0YWNrW1JFR0lTVEVSU11bJHNwXSAtIG5hbWVkQ291bnQgKyAxO1xuXG4gICAgbmFtZWQuc2V0dXAoc3RhY2ssIG5hbWVkQmFzZSwgbmFtZWRDb3VudCwgbmFtZXMsIGF0TmFtZXMpO1xuXG4gICAgbGV0IHBvc2l0aW9uYWwgPSB0aGlzLnBvc2l0aW9uYWw7XG4gICAgbGV0IHBvc2l0aW9uYWxCYXNlID0gbmFtZWRCYXNlIC0gcG9zaXRpb25hbENvdW50O1xuXG4gICAgcG9zaXRpb25hbC5zZXR1cChzdGFjaywgcG9zaXRpb25hbEJhc2UsIHBvc2l0aW9uYWxDb3VudCk7XG5cbiAgICBsZXQgYmxvY2tzID0gdGhpcy5ibG9ja3M7XG4gICAgbGV0IGJsb2Nrc0NvdW50ID0gYmxvY2tOYW1lcy5sZW5ndGg7XG4gICAgbGV0IGJsb2Nrc0Jhc2UgPSBwb3NpdGlvbmFsQmFzZSAtIGJsb2Nrc0NvdW50ICogMztcblxuICAgIGJsb2Nrcy5zZXR1cChzdGFjaywgYmxvY2tzQmFzZSwgYmxvY2tzQ291bnQsIGJsb2NrTmFtZXMpO1xuICB9XG5cbiAgZ2V0IHRhZygpOiBUYWcge1xuICAgIHJldHVybiBjb21iaW5lVGFnZ2VkKFt0aGlzLnBvc2l0aW9uYWwsIHRoaXMubmFtZWRdKTtcbiAgfVxuXG4gIGdldCBiYXNlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYmxvY2tzLmJhc2U7XG4gIH1cblxuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucG9zaXRpb25hbC5sZW5ndGggKyB0aGlzLm5hbWVkLmxlbmd0aCArIHRoaXMuYmxvY2tzLmxlbmd0aCAqIDM7XG4gIH1cblxuICBhdDxUIGV4dGVuZHMgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4ocG9zOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmF0PFQ+KHBvcyk7XG4gIH1cblxuICByZWFsbG9jKG9mZnNldDogbnVtYmVyKSB7XG4gICAgbGV0IHsgc3RhY2sgfSA9IHRoaXM7XG4gICAgaWYgKG9mZnNldCA+IDAgJiYgc3RhY2sgIT09IG51bGwpIHtcbiAgICAgIGxldCB7IHBvc2l0aW9uYWwsIG5hbWVkIH0gPSB0aGlzO1xuICAgICAgbGV0IG5ld0Jhc2UgPSBwb3NpdGlvbmFsLmJhc2UgKyBvZmZzZXQ7XG4gICAgICBsZXQgbGVuZ3RoID0gcG9zaXRpb25hbC5sZW5ndGggKyBuYW1lZC5sZW5ndGg7XG5cbiAgICAgIGZvciAobGV0IGkgPSBsZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBzdGFjay5jb3B5KGkgKyBwb3NpdGlvbmFsLmJhc2UsIGkgKyBuZXdCYXNlKTtcbiAgICAgIH1cblxuICAgICAgcG9zaXRpb25hbC5iYXNlICs9IG9mZnNldDtcbiAgICAgIG5hbWVkLmJhc2UgKz0gb2Zmc2V0O1xuICAgICAgc3RhY2tbUkVHSVNURVJTXVskc3BdICs9IG9mZnNldDtcbiAgICB9XG4gIH1cblxuICBjYXB0dXJlKCk6IENhcHR1cmVkQXJndW1lbnRzIHtcbiAgICBsZXQgcG9zaXRpb25hbCA9IHRoaXMucG9zaXRpb25hbC5sZW5ndGggPT09IDAgPyBFTVBUWV9QT1NJVElPTkFMIDogdGhpcy5wb3NpdGlvbmFsLmNhcHR1cmUoKTtcbiAgICBsZXQgbmFtZWQgPSB0aGlzLm5hbWVkLmxlbmd0aCA9PT0gMCA/IEVNUFRZX05BTUVEIDogdGhpcy5uYW1lZC5jYXB0dXJlKCk7XG5cbiAgICByZXR1cm4gbmV3IENhcHR1cmVkQXJndW1lbnRzSW1wbCh0aGlzLnRhZywgcG9zaXRpb25hbCwgbmFtZWQsIHRoaXMubGVuZ3RoKTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIGxldCB7IHN0YWNrLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgaWYgKGxlbmd0aCA+IDAgJiYgc3RhY2sgIT09IG51bGwpIHN0YWNrLnBvcChsZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQb3NpdGlvbmFsQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICBwdWJsaWMgYmFzZSA9IDA7XG4gIHB1YmxpYyBsZW5ndGggPSAwO1xuXG4gIHByaXZhdGUgc3RhY2s6IEV2YWx1YXRpb25TdGFjayA9IG51bGwgYXMgYW55O1xuXG4gIHByaXZhdGUgX3RhZzogT3B0aW9uPFRhZz4gPSBudWxsO1xuICBwcml2YXRlIF9yZWZlcmVuY2VzOiBPcHRpb248VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdPiA9IG51bGw7XG5cbiAgZW1wdHkoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgdGhpcy5fdGFnID0gQ09OU1RBTlRfVEFHO1xuICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBFTVBUWV9BUlJBWTtcbiAgfVxuXG4gIHNldHVwKHN0YWNrOiBFdmFsdWF0aW9uU3RhY2ssIGJhc2U6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcblxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuX3RhZyA9IENPTlNUQU5UX1RBRztcbiAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBFTVBUWV9BUlJBWTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0YWcoKTogVGFnIHtcbiAgICBsZXQgdGFnID0gdGhpcy5fdGFnO1xuXG4gICAgaWYgKCF0YWcpIHtcbiAgICAgIHRhZyA9IHRoaXMuX3RhZyA9IGNvbWJpbmVUYWdnZWQodGhpcy5yZWZlcmVuY2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFnO1xuICB9XG5cbiAgYXQ8VCBleHRlbmRzIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+KHBvc2l0aW9uOiBudW1iZXIpOiBUIHtcbiAgICBsZXQgeyBiYXNlLCBsZW5ndGgsIHN0YWNrIH0gPSB0aGlzO1xuXG4gICAgaWYgKHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiAoVU5ERUZJTkVEX1JFRkVSRU5DRSBhcyB1bnNhZmUpIGFzIFQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoZWNrKHN0YWNrLmdldChwb3NpdGlvbiwgYmFzZSksIENoZWNrUGF0aFJlZmVyZW5jZSkgYXMgVDtcbiAgfVxuXG4gIGNhcHR1cmUoKTogQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzSW1wbCB7XG4gICAgcmV0dXJuIG5ldyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsKHRoaXMudGFnLCB0aGlzLnJlZmVyZW5jZXMpO1xuICB9XG5cbiAgcHJlcGVuZChvdGhlcjogQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzKSB7XG4gICAgbGV0IGFkZGl0aW9ucyA9IG90aGVyLmxlbmd0aDtcblxuICAgIGlmIChhZGRpdGlvbnMgPiAwKSB7XG4gICAgICBsZXQgeyBiYXNlLCBsZW5ndGgsIHN0YWNrIH0gPSB0aGlzO1xuXG4gICAgICB0aGlzLmJhc2UgPSBiYXNlID0gYmFzZSAtIGFkZGl0aW9ucztcbiAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoICsgYWRkaXRpb25zO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFkZGl0aW9uczsgaSsrKSB7XG4gICAgICAgIHN0YWNrLnNldChvdGhlci5hdChpKSwgaSwgYmFzZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCByZWZlcmVuY2VzKCk6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj5bXSB7XG4gICAgbGV0IHJlZmVyZW5jZXMgPSB0aGlzLl9yZWZlcmVuY2VzO1xuXG4gICAgaWYgKCFyZWZlcmVuY2VzKSB7XG4gICAgICBsZXQgeyBzdGFjaywgYmFzZSwgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXMgPSBzdGFjay5zbGljZUFycmF5PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+KFxuICAgICAgICBiYXNlLFxuICAgICAgICBiYXNlICsgbGVuZ3RoXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2VzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsIGltcGxlbWVudHMgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIHtcbiAgc3RhdGljIGVtcHR5KCk6IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyB7XG4gICAgcmV0dXJuIG5ldyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsKENPTlNUQU5UX1RBRywgRU1QVFlfQVJSQVksIDApO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhZzogVGFnLFxuICAgIHB1YmxpYyByZWZlcmVuY2VzOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W10sXG4gICAgcHVibGljIGxlbmd0aCA9IHJlZmVyZW5jZXMubGVuZ3RoXG4gICkge31cblxuICBhdDxUIGV4dGVuZHMgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4ocG9zaXRpb246IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNbcG9zaXRpb25dIGFzIFQ7XG4gIH1cblxuICB2YWx1ZSgpOiB1bmtub3duW10ge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXMubWFwKHRoaXMudmFsdWVPZik7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPiB7XG4gICAgbGV0IHsgcmVmZXJlbmNlcywgbGVuZ3RoIH0gPSB0aGlzO1xuXG4gICAgaWYgKG5hbWUgPT09ICdsZW5ndGgnKSB7XG4gICAgICByZXR1cm4gUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZShsZW5ndGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgaWR4ID0gcGFyc2VJbnQobmFtZSwgMTApO1xuXG4gICAgICBpZiAoaWR4IDwgMCB8fCBpZHggPj0gbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXNbaWR4XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbHVlT2YodGhpczogdm9pZCwgcmVmZXJlbmNlOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+KTogdW5rbm93biB7XG4gICAgcmV0dXJuIHJlZmVyZW5jZS52YWx1ZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOYW1lZEFyZ3VtZW50c0ltcGwgaW1wbGVtZW50cyBOYW1lZEFyZ3VtZW50cyB7XG4gIHB1YmxpYyBiYXNlID0gMDtcbiAgcHVibGljIGxlbmd0aCA9IDA7XG5cbiAgcHJpdmF0ZSBzdGFjayE6IEV2YWx1YXRpb25TdGFjaztcblxuICBwcml2YXRlIF9yZWZlcmVuY2VzOiBPcHRpb248VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdPiA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfbmFtZXM6IE9wdGlvbjxzdHJpbmdbXT4gPSBFTVBUWV9BUlJBWTtcbiAgcHJpdmF0ZSBfYXROYW1lczogT3B0aW9uPHN0cmluZ1tdPiA9IEVNUFRZX0FSUkFZO1xuXG4gIGVtcHR5KHN0YWNrOiBFdmFsdWF0aW9uU3RhY2ssIGJhc2U6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLmJhc2UgPSBiYXNlO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcblxuICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBFTVBUWV9BUlJBWTtcbiAgICB0aGlzLl9uYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgIHRoaXMuX2F0TmFtZXMgPSBFTVBUWV9BUlJBWTtcbiAgfVxuXG4gIHNldHVwKHN0YWNrOiBFdmFsdWF0aW9uU3RhY2ssIGJhc2U6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIsIG5hbWVzOiBzdHJpbmdbXSwgYXROYW1lczogYm9vbGVhbikge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLmJhc2UgPSBiYXNlO1xuICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuXG4gICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICAgICAgdGhpcy5fbmFtZXMgPSBFTVBUWV9BUlJBWTtcbiAgICAgIHRoaXMuX2F0TmFtZXMgPSBFTVBUWV9BUlJBWTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG5cbiAgICAgIGlmIChhdE5hbWVzKSB7XG4gICAgICAgIHRoaXMuX25hbWVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5fYXROYW1lcyA9IG5hbWVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fbmFtZXMgPSBuYW1lcztcbiAgICAgICAgdGhpcy5fYXROYW1lcyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRhZygpOiBUYWcge1xuICAgIHJldHVybiBjb21iaW5lVGFnZ2VkKHRoaXMucmVmZXJlbmNlcyk7XG4gIH1cblxuICBnZXQgbmFtZXMoKTogc3RyaW5nW10ge1xuICAgIGxldCBuYW1lcyA9IHRoaXMuX25hbWVzO1xuXG4gICAgaWYgKCFuYW1lcykge1xuICAgICAgbmFtZXMgPSB0aGlzLl9uYW1lcyA9IHRoaXMuX2F0TmFtZXMhLm1hcCh0aGlzLnRvU3ludGhldGljTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5hbWVzITtcbiAgfVxuXG4gIGdldCBhdE5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgYXROYW1lcyA9IHRoaXMuX2F0TmFtZXM7XG5cbiAgICBpZiAoIWF0TmFtZXMpIHtcbiAgICAgIGF0TmFtZXMgPSB0aGlzLl9hdE5hbWVzID0gdGhpcy5fbmFtZXMhLm1hcCh0aGlzLnRvQXROYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXROYW1lcyE7XG4gIH1cblxuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gIH1cblxuICBnZXQ8VCBleHRlbmRzIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+KG5hbWU6IHN0cmluZywgYXROYW1lcyA9IGZhbHNlKTogVCB7XG4gICAgbGV0IHsgYmFzZSwgc3RhY2sgfSA9IHRoaXM7XG5cbiAgICBsZXQgbmFtZXMgPSBhdE5hbWVzID8gdGhpcy5hdE5hbWVzIDogdGhpcy5uYW1lcztcblxuICAgIGxldCBpZHggPSBuYW1lcy5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiAoVU5ERUZJTkVEX1JFRkVSRU5DRSBhcyB1bnNhZmUpIGFzIFQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YWNrLmdldDxUPihpZHgsIGJhc2UpO1xuICB9XG5cbiAgY2FwdHVyZSgpOiBDYXB0dXJlZE5hbWVkQXJndW1lbnRzIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkTmFtZWRBcmd1bWVudHNJbXBsKHRoaXMudGFnLCB0aGlzLm5hbWVzLCB0aGlzLnJlZmVyZW5jZXMpO1xuICB9XG5cbiAgbWVyZ2Uob3RoZXI6IENhcHR1cmVkTmFtZWRBcmd1bWVudHMpIHtcbiAgICBsZXQgeyBsZW5ndGg6IGV4dHJhcyB9ID0gb3RoZXI7XG5cbiAgICBpZiAoZXh0cmFzID4gMCkge1xuICAgICAgbGV0IHsgbmFtZXMsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG4gICAgICBsZXQgeyBuYW1lczogZXh0cmFOYW1lcyB9ID0gb3RoZXI7XG5cbiAgICAgIGlmIChPYmplY3QuaXNGcm96ZW4obmFtZXMpICYmIG5hbWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBuYW1lcyA9IFtdO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV4dHJhczsgaSsrKSB7XG4gICAgICAgIGxldCBuYW1lID0gZXh0cmFOYW1lc1tpXTtcbiAgICAgICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG5cbiAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICBsZW5ndGggPSBuYW1lcy5wdXNoKG5hbWUpO1xuICAgICAgICAgIHN0YWNrLnB1c2gob3RoZXIucmVmZXJlbmNlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICAgIHRoaXMuX25hbWVzID0gbmFtZXM7XG4gICAgICB0aGlzLl9hdE5hbWVzID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCByZWZlcmVuY2VzKCk6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj5bXSB7XG4gICAgbGV0IHJlZmVyZW5jZXMgPSB0aGlzLl9yZWZlcmVuY2VzO1xuXG4gICAgaWYgKCFyZWZlcmVuY2VzKSB7XG4gICAgICBsZXQgeyBiYXNlLCBsZW5ndGgsIHN0YWNrIH0gPSB0aGlzO1xuICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXMgPSBzdGFjay5zbGljZUFycmF5PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+KFxuICAgICAgICBiYXNlLFxuICAgICAgICBiYXNlICsgbGVuZ3RoXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2VzO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1N5bnRoZXRpY05hbWUodGhpczogdm9pZCwgbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmFtZS5zbGljZSgxKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9BdE5hbWUodGhpczogdm9pZCwgbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYEAke25hbWV9YDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2FwdHVyZWROYW1lZEFyZ3VtZW50c0ltcGwgaW1wbGVtZW50cyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzIHtcbiAgcHVibGljIGxlbmd0aDogbnVtYmVyO1xuICBwcml2YXRlIF9tYXA6IE9wdGlvbjxEaWN0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGFnOiBUYWcsXG4gICAgcHVibGljIG5hbWVzOiBzdHJpbmdbXSxcbiAgICBwdWJsaWMgcmVmZXJlbmNlczogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdXG4gICkge1xuICAgIHRoaXMubGVuZ3RoID0gbmFtZXMubGVuZ3RoO1xuICAgIHRoaXMuX21hcCA9IG51bGw7XG4gIH1cblxuICBnZXQgbWFwKCkge1xuICAgIGxldCBtYXAgPSB0aGlzLl9tYXA7XG5cbiAgICBpZiAoIW1hcCkge1xuICAgICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgICBtYXAgPSB0aGlzLl9tYXAgPSBkaWN0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+KCk7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IG5hbWUgPSBuYW1lc1tpXTtcbiAgICAgICAgbWFwIVtuYW1lXSA9IHJlZmVyZW5jZXNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcDtcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGdldDxUIGV4dGVuZHMgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4obmFtZTogc3RyaW5nKTogVCB7XG4gICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG5cbiAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIChVTkRFRklORURfUkVGRVJFTkNFIGFzIHVuc2FmZSkgYXMgVDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlZmVyZW5jZXNbaWR4XSBhcyBUO1xuICAgIH1cbiAgfVxuXG4gIHZhbHVlKCk6IERpY3Q8dW5rbm93bj4ge1xuICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgIGxldCBvdXQgPSBkaWN0PHVua25vd24+KCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgb3V0W25hbWVdID0gcmVmZXJlbmNlc1tpXS52YWx1ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9TeW1ib2xOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJiR7bmFtZX1gO1xufVxuXG5leHBvcnQgY2xhc3MgQmxvY2tBcmd1bWVudHNJbXBsPEMgZXh0ZW5kcyBKaXRPckFvdEJsb2NrPiBpbXBsZW1lbnRzIEJsb2NrQXJndW1lbnRzPEM+IHtcbiAgcHJpdmF0ZSBzdGFjayE6IEV2YWx1YXRpb25TdGFjaztcbiAgcHJpdmF0ZSBpbnRlcm5hbFZhbHVlczogT3B0aW9uPG51bWJlcltdPiA9IG51bGw7XG4gIHByaXZhdGUgX3N5bWJvbE5hbWVzOiBPcHRpb248c3RyaW5nW10+ID0gbnVsbDtcblxuICBwdWJsaWMgaW50ZXJuYWxUYWc6IE9wdGlvbjxUYWc+ID0gbnVsbDtcbiAgcHVibGljIG5hbWVzOiBzdHJpbmdbXSA9IEVNUFRZX0FSUkFZO1xuXG4gIHB1YmxpYyBsZW5ndGggPSAwO1xuICBwdWJsaWMgYmFzZSA9IDA7XG5cbiAgZW1wdHkoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMubmFtZXMgPSBFTVBUWV9BUlJBWTtcbiAgICB0aGlzLmJhc2UgPSBiYXNlO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICB0aGlzLl9zeW1ib2xOYW1lcyA9IG51bGw7XG5cbiAgICB0aGlzLmludGVybmFsVGFnID0gQ09OU1RBTlRfVEFHO1xuICAgIHRoaXMuaW50ZXJuYWxWYWx1ZXMgPSBFTVBUWV9BUlJBWTtcbiAgfVxuXG4gIHNldHVwKHN0YWNrOiBFdmFsdWF0aW9uU3RhY2ssIGJhc2U6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIsIG5hbWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLm5hbWVzID0gbmFtZXM7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICB0aGlzLl9zeW1ib2xOYW1lcyA9IG51bGw7XG5cbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmludGVybmFsVGFnID0gQ09OU1RBTlRfVEFHO1xuICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlcyA9IEVNUFRZX0FSUkFZO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmludGVybmFsVGFnID0gbnVsbDtcbiAgICAgIHRoaXMuaW50ZXJuYWxWYWx1ZXMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZXMoKTogQmxvY2tWYWx1ZVtdIHtcbiAgICBsZXQgdmFsdWVzID0gdGhpcy5pbnRlcm5hbFZhbHVlcztcblxuICAgIGlmICghdmFsdWVzKSB7XG4gICAgICBsZXQgeyBiYXNlLCBsZW5ndGgsIHN0YWNrIH0gPSB0aGlzO1xuICAgICAgdmFsdWVzID0gdGhpcy5pbnRlcm5hbFZhbHVlcyA9IHN0YWNrLnNsaWNlQXJyYXk8bnVtYmVyPihiYXNlLCBiYXNlICsgbGVuZ3RoICogMyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lcyEuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogT3B0aW9uPFNjb3BlQmxvY2s8Qz4+IHtcbiAgICBsZXQgaWR4ID0gdGhpcy5uYW1lcyEuaW5kZXhPZihuYW1lKTtcblxuICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgeyBiYXNlLCBzdGFjayB9ID0gdGhpcztcblxuICAgIGxldCB0YWJsZSA9IGNoZWNrKHN0YWNrLmdldChpZHggKiAzLCBiYXNlKSwgQ2hlY2tPcHRpb24oQ2hlY2tCbG9ja1N5bWJvbFRhYmxlKSk7XG4gICAgbGV0IHNjb3BlID0gY2hlY2soc3RhY2suZ2V0KGlkeCAqIDMgKyAxLCBiYXNlKSwgQ2hlY2tPcHRpb24oQ2hlY2tTY29wZSkpO1xuICAgIGxldCBoYW5kbGUgPSBjaGVjayhcbiAgICAgIHN0YWNrLmdldChpZHggKiAzICsgMiwgYmFzZSksXG4gICAgICBDaGVja09wdGlvbihDaGVja09yKENoZWNrSGFuZGxlLCBDaGVja0NvbXBpbGFibGVCbG9jaykpXG4gICAgKTtcblxuICAgIHJldHVybiBoYW5kbGUgPT09IG51bGwgPyBudWxsIDogKFtoYW5kbGUsIHNjb3BlISwgdGFibGUhXSBhcyBTY29wZUJsb2NrPEM+KTtcbiAgfVxuXG4gIGNhcHR1cmUoKTogQ2FwdHVyZWRCbG9ja0FyZ3VtZW50cyB7XG4gICAgcmV0dXJuIG5ldyBDYXB0dXJlZEJsb2NrQXJndW1lbnRzSW1wbCh0aGlzLm5hbWVzLCB0aGlzLnZhbHVlcyk7XG4gIH1cblxuICBnZXQgc3ltYm9sTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIGxldCBzeW1ib2xOYW1lcyA9IHRoaXMuX3N5bWJvbE5hbWVzO1xuXG4gICAgaWYgKHN5bWJvbE5hbWVzID09PSBudWxsKSB7XG4gICAgICBzeW1ib2xOYW1lcyA9IHRoaXMuX3N5bWJvbE5hbWVzID0gdGhpcy5uYW1lcy5tYXAodG9TeW1ib2xOYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ltYm9sTmFtZXM7XG4gIH1cbn1cblxuY2xhc3MgQ2FwdHVyZWRCbG9ja0FyZ3VtZW50c0ltcGwgaW1wbGVtZW50cyBDYXB0dXJlZEJsb2NrQXJndW1lbnRzIHtcbiAgcHVibGljIGxlbmd0aDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lczogc3RyaW5nW10sIHB1YmxpYyB2YWx1ZXM6IEJsb2NrVmFsdWVbXSkge1xuICAgIHRoaXMubGVuZ3RoID0gbmFtZXMubGVuZ3RoO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICB9XG5cbiAgZ2V0KG5hbWU6IHN0cmluZyk6IE9wdGlvbjxTY29wZUJsb2NrPiB7XG4gICAgbGV0IGlkeCA9IHRoaXMubmFtZXMuaW5kZXhPZihuYW1lKTtcblxuICAgIGlmIChpZHggPT09IC0xKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiBbXG4gICAgICB0aGlzLnZhbHVlc1tpZHggKiAzICsgMl0gYXMgbnVtYmVyLFxuICAgICAgdGhpcy52YWx1ZXNbaWR4ICogMyArIDFdIGFzIFNjb3BlPEppdE9yQW90QmxvY2s+LFxuICAgICAgdGhpcy52YWx1ZXNbaWR4ICogM10gYXMgQmxvY2tTeW1ib2xUYWJsZSxcbiAgICBdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYXB0dXJlZEFyZ3VtZW50c0ltcGwgaW1wbGVtZW50cyBDYXB0dXJlZEFyZ3VtZW50cyB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWc6IFRhZyxcbiAgICBwdWJsaWMgcG9zaXRpb25hbDogQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzLFxuICAgIHB1YmxpYyBuYW1lZDogQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyxcbiAgICBwdWJsaWMgbGVuZ3RoOiBudW1iZXJcbiAgKSB7fVxuXG4gIHZhbHVlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lZDogdGhpcy5uYW1lZC52YWx1ZSgpLFxuICAgICAgcG9zaXRpb25hbDogdGhpcy5wb3NpdGlvbmFsLnZhbHVlKCksXG4gICAgfTtcbiAgfVxufVxuXG5jb25zdCBFTVBUWV9OQU1FRCA9IG5ldyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzSW1wbChDT05TVEFOVF9UQUcsIEVNUFRZX0FSUkFZLCBFTVBUWV9BUlJBWSk7XG5jb25zdCBFTVBUWV9QT1NJVElPTkFMID0gbmV3IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwoQ09OU1RBTlRfVEFHLCBFTVBUWV9BUlJBWSk7XG5leHBvcnQgY29uc3QgRU1QVFlfQVJHUyA9IG5ldyBDYXB0dXJlZEFyZ3VtZW50c0ltcGwoQ09OU1RBTlRfVEFHLCBFTVBUWV9QT1NJVElPTkFMLCBFTVBUWV9OQU1FRCwgMCk7XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -6,3 +6,2 @@ import { $v0 } from '@glimmer/vm';

import { assert } from '@glimmer/util';
import { stackAssert } from './assert';
import { CONSTANTS } from '../../symbols';

@@ -95,3 +94,3 @@ APPEND_OPCODES.add(16

if (block) {
if (block && !isUndefinedReference(block)) {
stack.push(block[2]);

@@ -106,15 +105,19 @@ stack.push(block[1]);

});
function isUndefinedReference(input) {
false && assert(Array.isArray(input) || input === UNDEFINED_REFERENCE, 'a reference other than UNDEFINED_REFERENCE is illegal here');
return input === UNDEFINED_REFERENCE;
}
APPEND_OPCODES.add(26
/* HasBlock */
, function (vm) {
var block = vm.stack.pop(); // TODO: We check if the block is null or UNDEFINED_REFERENCE here, but it should
// really only check if the block is null. The UNDEFINED_REFERENCE use case is for
// when we try to invoke a curry-component directly as a variable:
//
// <Foo as |bar|>{{bar}}</Foo>
//
// This code path does not work the same way as most components. In the future,
// we should make sure that it does, so things are setup correctly.
var stack = vm.stack;
var block = stack.pop();
vm.stack.push(block === null || block === UNDEFINED_REFERENCE ? FALSE_REFERENCE : TRUE_REFERENCE);
if (block && !isUndefinedReference(block)) {
stack.push(TRUE_REFERENCE);
} else {
stack.push(FALSE_REFERENCE);
}
});

@@ -128,3 +131,2 @@ APPEND_OPCODES.add(27

var table = vm.stack.pop();
false && assert(table === null || table && typeof table === 'object' && Array.isArray(table.parameters), stackAssert('Option<BlockSymbolTable>', table));
var hasBlockParams = table && table.parameters.length;

@@ -146,2 +148,2 @@ vm.stack.push(hasBlockParams ? TRUE_REFERENCE : FALSE_REFERENCE);

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2NvbXBpbGVkL29wY29kZXMvZXhwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsU0FBQSxHQUFBLFFBQUEsYUFBQTtBQUNBLFNBQUEsY0FBQSxRQUFBLGVBQUE7QUFDQSxTQUFBLGVBQUEsRUFBQSxjQUFBLEVBQUEsbUJBQUEsUUFBQSxrQkFBQTtBQUNBLFNBQUEsZUFBQSxRQUFBLHVCQUFBO0FBQ0EsU0FBQSxNQUFBLFFBQUEsZUFBQTtBQUVBLFNBQUEsV0FBQSxRQUFBLFVBQUE7QUFRQSxTQUFBLFNBQUEsUUFBQSxlQUFBO0FBSUEsY0FBYyxDQUFkLEdBQUEsQ0FBa0I7QUFBQTtBQUFsQixFQUE4QixVQUFBLEVBQUEsUUFBd0I7QUFBQSxNQUFaLE1BQVksUUFBakIsR0FBaUI7QUFDcEQsTUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFkLEtBQUE7QUFDQSxNQUFJLE1BQU0sR0FBUyxFQUFFLENBQUYsT0FBQSxDQUFBLFFBQUEsQ0FBQSxPQUFBLENBQW5CLE1BQW1CLENBQW5CO0FBQ0EsTUFBSSxJQUFJLEdBQVMsS0FBSyxDQUF0QixHQUFpQixFQUFqQjtBQUNBLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQSxJQUFBLEVBQWxCLEVBQWtCLENBQWxCO0FBRUEsRUFBQSxFQUFFLENBQUYsU0FBQSxDQUFBLEdBQUEsRUFBQSxLQUFBO0FBTkYsQ0FBQTtBQVNBLGNBQWMsQ0FBZCxHQUFBLENBQWtCO0FBQUE7QUFBbEIsRUFBbUMsVUFBQSxFQUFBLFNBQXdCO0FBQUEsTUFBWixNQUFZLFNBQWpCLEdBQWlCO0FBQ3pELE1BQUksSUFBSSxHQUFHLEVBQUUsQ0FBRixrQkFBQSxDQUFYLE1BQVcsQ0FBWDtBQUNBLEVBQUEsRUFBRSxDQUFGLEtBQUEsQ0FBQSxJQUFBLENBQUEsSUFBQTtBQUZGLENBQUE7QUFLQSxjQUFjLENBQWQsR0FBQSxDQUFrQjtBQUFBO0FB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QSxDQUFjLElBQUEsZUFBQSxDQUFkLEdBQWMsQ0FBZDtBQVJGLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcHRpb24sIE9wLCBKaXRTY29wZUJsb2NrLCBBb3RTY29wZUJsb2NrLCBWTSBhcyBQdWJsaWNWTSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyAkdjAgfSBmcm9tICdAZ2xpbW1lci92bSc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgRkFMU0VfUkVGRVJFTkNFLCBUUlVFX1JFRkVSRU5DRSwgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgQ29uY2F0UmVmZXJlbmNlIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMvY29uY2F0JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgY2hlY2ssIENoZWNrT3B0aW9uLCBDaGVja0hhbmRsZSwgQ2hlY2tCbG9ja1N5bWJvbFRhYmxlLCBDaGVja09yIH0gZnJvbSAnQGdsaW1tZXIvZGVidWcnO1xuaW1wb3J0IHsgc3RhY2tBc3NlcnQgfSBmcm9tICcuL2Fzc2VydCc7XG5pbXBvcnQge1xuICBDaGVja0FyZ3VtZW50cyxcbiAgQ2hlY2tQYXRoUmVmZXJlbmNlLFxuICBDaGVja0NvbXBpbGFibGVCbG9jayxcbiAgQ2hlY2tTY29wZSxcbiAgQ2hlY2tIZWxwZXIsXG59IGZyb20gJy4vLWRlYnVnLXN0cmlwJztcbmltcG9ydCB7IENPTlNUQU5UUyB9IGZyb20gJy4uLy4uL3N5bWJvbHMnO1xuXG5leHBvcnQgdHlwZSBGdW5jdGlvbkV4cHJlc3Npb248VD4gPSAodm06IFB1YmxpY1ZNKSA9PiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPFQ+O1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSGVscGVyLCAodm0sIHsgb3AxOiBoYW5kbGUgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IGhlbHBlciA9IGNoZWNrKHZtLnJ1bnRpbWUucmVzb2x2ZXIucmVzb2x2ZShoYW5kbGUpLCBDaGVja0hlbHBlcik7XG4gIGxldCBhcmdzID0gY2hlY2soc3RhY2sucG9wKCksIENoZWNrQXJndW1lbnRzKTtcbiAgbGV0IHZhbHVlID0gaGVscGVyKGFyZ3MsIHZtKTtcblxuICB2bS5sb2FkVmFsdWUoJHYwLCB2YWx1ZSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkdldFZhcmlhYmxlLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICBsZXQgZXhwciA9IHZtLnJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2wpO1xuICB2bS5zdGFjay5wdXNoKGV4cHIpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5TZXRWYXJpYWJsZSwgKHZtLCB7IG9wMTogc3ltYm9sIH0pID0+IHtcbiAgbGV0IGV4cHIgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tQYXRoUmVmZXJlbmNlKTtcbiAgdm0uc2NvcGUoKS5iaW5kU3ltYm9sKHN5bWJvbCwgZXhwcik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKFxuICBPcC5TZXRKaXRCbG9jayxcbiAgKHZtLCB7IG9wMTogc3ltYm9sIH0pID0+IHtcbiAgICBsZXQgaGFuZGxlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrQ29tcGlsYWJsZUJsb2NrKSk7XG4gICAgbGV0IHNjb3BlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrU2NvcGUpO1xuICAgIGxldCB0YWJsZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja09wdGlvbihDaGVja0Jsb2NrU3ltYm9sVGFibGUpKTtcblxuICAgIGxldCBibG9jazogT3B0aW9uPEppdFNjb3BlQmxvY2s+ID0gdGFibGUgPyBbaGFuZGxlISwgc2NvcGUsIHRhYmxlXSA6IG51bGw7XG5cbiAgICB2bS5zY29wZSgpLmJpbmRCbG9jayhzeW1ib2wsIGJsb2NrKTtcbiAgfSxcbiAgJ2ppdCdcbik7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5TZXRBb3RCbG9jaywgKHZtLCB7IG9wMTogc3ltYm9sIH0pID0+IHtcbiAgbGV0IGhhbmRsZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja09wdGlvbihDaGVja0hhbmRsZSkpO1xuICBsZXQgc2NvcGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tTY29wZSk7XG4gIGxldCB0YWJsZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja09wdGlvbihDaGVja0Jsb2NrU3ltYm9sVGFibGUpKTtcblxuICBsZXQgYmxvY2s6IE9wdGlvbjxBb3RTY29wZUJsb2NrPiA9IHRhYmxlID8gW2hhbmRsZSEsIHNjb3BlLCB0YWJsZV0gOiBudWxsO1xuXG4gIHZtLnNjb3BlKCkuYmluZEJsb2NrKHN5bWJvbCwgYmxvY2spO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5SZXNvbHZlTWF5YmVMb2NhbCwgKHZtLCB7IG9wMTogX25hbWUgfSkgPT4ge1xuICBsZXQgbmFtZSA9IHZtW0NPTlNUQU5UU10uZ2V0U3RyaW5nKF9uYW1lKTtcbiAgbGV0IGxvY2FscyA9IHZtLnNjb3BlKCkuZ2V0UGFydGlhbE1hcCgpITtcblxuICBsZXQgcmVmID0gbG9jYWxzW25hbWVdO1xuICBpZiAocmVmID09PSB1bmRlZmluZWQpIHtcbiAgICByZWYgPSB2bS5nZXRTZWxmKCkuZ2V0KG5hbWUpO1xuICB9XG5cbiAgdm0uc3RhY2sucHVzaChyZWYpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Sb290U2NvcGUsICh2bSwgeyBvcDE6IHN5bWJvbHMgfSkgPT4ge1xuICB2bS5wdXNoUm9vdFNjb3BlKHN5bWJvbHMpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRQcm9wZXJ0eSwgKHZtLCB7IG9wMTogX2tleSB9KSA9PiB7XG4gIGxldCBrZXkgPSB2bVtDT05TVEFOVFNdLmdldFN0cmluZyhfa2V5KTtcbiAgbGV0IGV4cHIgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tQYXRoUmVmZXJlbmNlKTtcbiAgdm0uc3RhY2sucHVzaChleHByLmdldChrZXkpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuR2V0QmxvY2ssICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gIGxldCB7IHN0YWNrIH0gPSB2bTtcbiAgbGV0IGJsb2NrID0gdm0uc2NvcGUoKS5nZXRCbG9jayhfYmxvY2spO1xuXG4gIHN0YWNrLnB1c2goYmxvY2spO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5KaXRTcHJlYWRCbG9jaywgdm0gPT4ge1xuICBsZXQgeyBzdGFjayB9ID0gdm07XG4gIGxldCBibG9jayA9IHN0YWNrLnBvcDxKaXRTY29wZUJsb2NrPigpO1xuXG4gIGlmIChibG9jaykge1xuICAgIHN0YWNrLnB1c2goYmxvY2tbMl0pO1xuICAgIHN0YWNrLnB1c2goYmxvY2tbMV0pO1xuICAgIHN0YWNrLnB1c2goYmxvY2tbMF0pO1xuICB9IGVsc2Uge1xuICAgIHN0YWNrLnB1c2gobnVsbCk7XG4gICAgc3RhY2sucHVzaChudWxsKTtcbiAgICBzdGFjay5wdXNoKG51bGwpO1xuICB9XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkhhc0Jsb2NrLCB2bSA9PiB7XG4gIGxldCBibG9jayA9IHZtLnN0YWNrLnBvcCgpO1xuXG4gIC8vIFRPRE86IFdlIGNoZWNrIGlmIHRoZSBibG9jayBpcyBudWxsIG9yIFVOREVGSU5FRF9SRUZFUkVOQ0UgaGVyZSwgYnV0IGl0IHNob3VsZFxuICAvLyByZWFsbHkgb25seSBjaGVjayBpZiB0aGUgYmxvY2sgaXMgbnVsbC4gVGhlIFVOREVGSU5FRF9SRUZFUkVOQ0UgdXNlIGNhc2UgaXMgZm9yXG4gIC8vIHdoZW4gd2UgdHJ5IHRvIGludm9rZSBhIGN1cnJ5LWNvbXBvbmVudCBkaXJlY3RseSBhcyBhIHZhcmlhYmxlOlxuICAvL1xuICAvLyA8Rm9vIGFzIHxiYXJ8Pnt7YmFyfX08L0Zvbz5cbiAgLy9cbiAgLy8gVGhpcyBjb2RlIHBhdGggZG9lcyBub3Qgd29yayB0aGUgc2FtZSB3YXkgYXMgbW9zdCBjb21wb25lbnRzLiBJbiB0aGUgZnV0dXJlLFxuICAvLyB3ZSBzaG91bGQgbWFrZSBzdXJlIHRoYXQgaXQgZG9lcywgc28gdGhpbmdzIGFyZSBzZXR1cCBjb3JyZWN0bHkuXG4gIHZtLnN0YWNrLnB1c2goYmxvY2sgPT09IG51bGwgfHwgYmxvY2sgPT09IFVOREVGSU5FRF9SRUZFUkVOQ0UgPyBGQUxTRV9SRUZFUkVOQ0UgOiBUUlVFX1JFRkVSRU5DRSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkhhc0Jsb2NrUGFyYW1zLCB2bSA9PiB7XG4gIC8vIEZJWE1FKG1tdW4pOiBzaG91bGQgb25seSBuZWVkIHRvIHB1c2ggdGhlIHN5bWJvbCB0YWJsZVxuICBsZXQgYmxvY2sgPSB2bS5zdGFjay5wb3AoKTtcbiAgbGV0IHNjb3BlID0gdm0uc3RhY2sucG9wKCk7XG4gIGNoZWNrKGJsb2NrLCBDaGVja09wdGlvbihDaGVja09yKENoZWNrSGFuZGxlLCBDaGVja0NvbXBpbGFibGVCbG9jaykpKTtcbiAgY2hlY2soc2NvcGUsIENoZWNrT3B0aW9uKENoZWNrU2NvcGUpKTtcbiAgbGV0IHRhYmxlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrT3B0aW9uKENoZWNrQmxvY2tTeW1ib2xUYWJsZSkpO1xuXG4gIGFzc2VydChcbiAgICB0YWJsZSA9PT0gbnVsbCB8fCAodGFibGUgJiYgdHlwZW9mIHRhYmxlID09PSAnb2JqZWN0JyAmJiBBcnJheS5pc0FycmF5KHRhYmxlLnBhcmFtZXRlcnMpKSxcbiAgICBzdGFja0Fzc2VydCgnT3B0aW9uPEJsb2NrU3ltYm9sVGFibGU+JywgdGFibGUpXG4gICk7XG5cbiAgbGV0IGhhc0Jsb2NrUGFyYW1zID0gdGFibGUgJiYgdGFibGUucGFyYW1ldGVycy5sZW5ndGg7XG4gIHZtLnN0YWNrLnB1c2goaGFzQmxvY2tQYXJhbXMgPyBUUlVFX1JFRkVSRU5DRSA6IEZBTFNFX1JFRkVSRU5DRSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNvbmNhdCwgKHZtLCB7IG9wMTogY291bnQgfSkgPT4ge1xuICBsZXQgb3V0OiBBcnJheTxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+PiA9IG5ldyBBcnJheShjb3VudCk7XG5cbiAgZm9yIChsZXQgaSA9IGNvdW50OyBpID4gMDsgaS0tKSB7XG4gICAgbGV0IG9mZnNldCA9IGkgLSAxO1xuICAgIG91dFtvZmZzZXRdID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrUGF0aFJlZmVyZW5jZSk7XG4gIH1cblxuICB2bS5zdGFjay5wdXNoKG5ldyBDb25jYXRSZWZlcmVuY2Uob3V0KSk7XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2NvbXBpbGVkL29wY29kZXMvZXhwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsU0FBQSxHQUFBLFFBQUEsYUFBQTtBQUNBLFNBQUEsY0FBQSxRQUFBLGVBQUE7QUFDQSxTQUFBLGVBQUEsRUFBQSxjQUFBLEVBQUEsbUJBQUEsUUFBQSxrQkFBQTtBQUNBLFNBQUEsZUFBQSxRQUFBLHVCQUFBO0FBQ0EsU0FBQSxNQUFBLFFBQUEsZUFBQTtBQWtCQSxTQUFBLFNBQUEsUUFBQSxlQUFBO0FBSUEsY0FBYyxDQUFkLEdBQUEsQ0FBa0I7QUFBQTtBQUFsQixFQUE4QixVQUFBLEVBQUEsUUFBd0I7QUFBQSxNQUFaLE1BQVksUUFBakIsR0FBaUI7QUFDcEQsTUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFkLEtBQUE7QUFDQSxNQUFJLE1BQU0sR0FBUyxFQUFFLENBQUYsT0FBQSxDQUFBLFFBQUEsQ0FBQSxPQUFBLENBQW5CLE1BQW1CLENBQW5CO0FBQ0EsTUFBSSxJQUFJLEdBQVMsS0FBSyxDQUF0QixHQUFpQixFQUFqQjtBQUNBLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQSxJQUFBLEVBQWxCLEVBQWtCLENBQWxCO0FBRUEsRUFBQSxFQUFFLENBQUYsU0FBQSxDQUFBLEdBQUEsRUFBQSxLQUFBO0FBTkYsQ0FBQTtBQVNBLGNBQWMsQ0FBZCxHQUFBLENBQWtCO0FBQUE7QUFBbEIsRUFBbUMsVUFBQSxFQUFBLFNBQXdCO0FBQUEsTUFBWixNQUFZLFNBQWpCLEdBQWlCO0FBQ3pELE1BQUksSUFBSSxHQUFHLEVBQUUsQ0FBRixrQkFBQSxDQUFYLE1BQVcsQ0FBWDtBQUNBLEVBQUEsRUFBRSxDQUFGLEtBQUEsQ0FBQSxJQUFBLENBQUEsSUFBQTtBQUZGLENBQUE7QUFLQSxjQUFjLENBQWQsR0FBQSxDQUFrQjtBQUFBO0FBQWxCLEVBQW1DLFVBQUEsRUFBQSxTQUF3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OztBQUVELEVBQUEsRUFBRSxDQUFGLEtBQUEsQ0FBQSxJQUFBLENBQWMsSUFBQSxlQUFBLENBQWQsR0FBYyxDQUFkO0FBUkYsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbiwgT3AsIEppdFNjb3BlQmxvY2ssIEFvdFNjb3BlQmxvY2ssIFZNIGFzIFB1YmxpY1ZNIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgJHYwIH0gZnJvbSAnQGdsaW1tZXIvdm0nO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IEZBTFNFX1JFRkVSRU5DRSwgVFJVRV9SRUZFUkVOQ0UsIFVOREVGSU5FRF9SRUZFUkVOQ0UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IENvbmNhdFJlZmVyZW5jZSB9IGZyb20gJy4uL2V4cHJlc3Npb25zL2NvbmNhdCc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIGNoZWNrLFxuICBDaGVja09wdGlvbixcbiAgQ2hlY2tIYW5kbGUsXG4gIENoZWNrQmxvY2tTeW1ib2xUYWJsZSxcbiAgQ2hlY2tPcixcbiAgQ2hlY2tNYXliZSxcbn0gZnJvbSAnQGdsaW1tZXIvZGVidWcnO1xuaW1wb3J0IHtcbiAgQ2hlY2tBcmd1bWVudHMsXG4gIENoZWNrUGF0aFJlZmVyZW5jZSxcbiAgQ2hlY2tDb21waWxhYmxlQmxvY2ssXG4gIENoZWNrU2NvcGUsXG4gIENoZWNrSGVscGVyLFxuICBDaGVja1VuZGVmaW5lZFJlZmVyZW5jZSxcbiAgQ2hlY2tTY29wZUJsb2NrLFxufSBmcm9tICcuLy1kZWJ1Zy1zdHJpcCc7XG5pbXBvcnQgeyBDT05TVEFOVFMgfSBmcm9tICcuLi8uLi9zeW1ib2xzJztcblxuZXhwb3J0IHR5cGUgRnVuY3Rpb25FeHByZXNzaW9uPFQ+ID0gKHZtOiBQdWJsaWNWTSkgPT4gVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxUPjtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkhlbHBlciwgKHZtLCB7IG9wMTogaGFuZGxlIH0pID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCBoZWxwZXIgPSBjaGVjayh2bS5ydW50aW1lLnJlc29sdmVyLnJlc29sdmUoaGFuZGxlKSwgQ2hlY2tIZWxwZXIpO1xuICBsZXQgYXJncyA9IGNoZWNrKHN0YWNrLnBvcCgpLCBDaGVja0FyZ3VtZW50cyk7XG4gIGxldCB2YWx1ZSA9IGhlbHBlcihhcmdzLCB2bSk7XG5cbiAgdm0ubG9hZFZhbHVlKCR2MCwgdmFsdWUpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRWYXJpYWJsZSwgKHZtLCB7IG9wMTogc3ltYm9sIH0pID0+IHtcbiAgbGV0IGV4cHIgPSB2bS5yZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sKTtcbiAgdm0uc3RhY2sucHVzaChleHByKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuU2V0VmFyaWFibGUsICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gIGxldCBleHByID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrUGF0aFJlZmVyZW5jZSk7XG4gIHZtLnNjb3BlKCkuYmluZFN5bWJvbChzeW1ib2wsIGV4cHIpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChcbiAgT3AuU2V0Sml0QmxvY2ssXG4gICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gICAgbGV0IGhhbmRsZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja09wdGlvbihDaGVja0NvbXBpbGFibGVCbG9jaykpO1xuICAgIGxldCBzY29wZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1Njb3BlKTtcbiAgICBsZXQgdGFibGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tCbG9ja1N5bWJvbFRhYmxlKSk7XG5cbiAgICBsZXQgYmxvY2s6IE9wdGlvbjxKaXRTY29wZUJsb2NrPiA9IHRhYmxlID8gW2hhbmRsZSEsIHNjb3BlLCB0YWJsZV0gOiBudWxsO1xuXG4gICAgdm0uc2NvcGUoKS5iaW5kQmxvY2soc3ltYm9sLCBibG9jayk7XG4gIH0sXG4gICdqaXQnXG4pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuU2V0QW90QmxvY2ssICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gIGxldCBoYW5kbGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tIYW5kbGUpKTtcbiAgbGV0IHNjb3BlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrU2NvcGUpO1xuICBsZXQgdGFibGUgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tCbG9ja1N5bWJvbFRhYmxlKSk7XG5cbiAgbGV0IGJsb2NrOiBPcHRpb248QW90U2NvcGVCbG9jaz4gPSB0YWJsZSA/IFtoYW5kbGUhLCBzY29wZSwgdGFibGVdIDogbnVsbDtcblxuICB2bS5zY29wZSgpLmJpbmRCbG9jayhzeW1ib2wsIGJsb2NrKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUmVzb2x2ZU1heWJlTG9jYWwsICh2bSwgeyBvcDE6IF9uYW1lIH0pID0+IHtcbiAgbGV0IG5hbWUgPSB2bVtDT05TVEFOVFNdLmdldFN0cmluZyhfbmFtZSk7XG4gIGxldCBsb2NhbHMgPSB2bS5zY29wZSgpLmdldFBhcnRpYWxNYXAoKSE7XG5cbiAgbGV0IHJlZiA9IGxvY2Fsc1tuYW1lXTtcbiAgaWYgKHJlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmVmID0gdm0uZ2V0U2VsZigpLmdldChuYW1lKTtcbiAgfVxuXG4gIHZtLnN0YWNrLnB1c2gocmVmKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUm9vdFNjb3BlLCAodm0sIHsgb3AxOiBzeW1ib2xzIH0pID0+IHtcbiAgdm0ucHVzaFJvb3RTY29wZShzeW1ib2xzKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuR2V0UHJvcGVydHksICh2bSwgeyBvcDE6IF9rZXkgfSkgPT4ge1xuICBsZXQga2V5ID0gdm1bQ09OU1RBTlRTXS5nZXRTdHJpbmcoX2tleSk7XG4gIGxldCBleHByID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrUGF0aFJlZmVyZW5jZSk7XG4gIHZtLnN0YWNrLnB1c2goZXhwci5nZXQoa2V5KSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkdldEJsb2NrLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICBsZXQgeyBzdGFjayB9ID0gdm07XG4gIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2soX2Jsb2NrKTtcblxuICBzdGFjay5wdXNoKGJsb2NrKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSml0U3ByZWFkQmxvY2ssIHZtID0+IHtcbiAgbGV0IHsgc3RhY2sgfSA9IHZtO1xuICBsZXQgYmxvY2sgPSBjaGVjayhzdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tPcihDaGVja1Njb3BlQmxvY2ssIENoZWNrVW5kZWZpbmVkUmVmZXJlbmNlKSkpO1xuXG4gIGlmIChibG9jayAmJiAhaXNVbmRlZmluZWRSZWZlcmVuY2UoYmxvY2spKSB7XG4gICAgc3RhY2sucHVzaChibG9ja1syXSk7XG4gICAgc3RhY2sucHVzaChibG9ja1sxXSk7XG4gICAgc3RhY2sucHVzaChibG9ja1swXSk7XG4gIH0gZWxzZSB7XG4gICAgc3RhY2sucHVzaChudWxsKTtcbiAgICBzdGFjay5wdXNoKG51bGwpO1xuICAgIHN0YWNrLnB1c2gobnVsbCk7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZFJlZmVyZW5jZShpbnB1dDogSml0U2NvcGVCbG9jayB8IFJlZmVyZW5jZSk6IGlucHV0IGlzIFJlZmVyZW5jZSB7XG4gIGFzc2VydChcbiAgICBBcnJheS5pc0FycmF5KGlucHV0KSB8fCBpbnB1dCA9PT0gVU5ERUZJTkVEX1JFRkVSRU5DRSxcbiAgICAnYSByZWZlcmVuY2Ugb3RoZXIgdGhhbiBVTkRFRklORURfUkVGRVJFTkNFIGlzIGlsbGVnYWwgaGVyZSdcbiAgKTtcbiAgcmV0dXJuIGlucHV0ID09PSBVTkRFRklORURfUkVGRVJFTkNFO1xufVxuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSGFzQmxvY2ssIHZtID0+IHtcbiAgbGV0IHsgc3RhY2sgfSA9IHZtO1xuICBsZXQgYmxvY2sgPSBjaGVjayhzdGFjay5wb3AoKSwgQ2hlY2tPcHRpb24oQ2hlY2tPcihDaGVja1Njb3BlQmxvY2ssIENoZWNrVW5kZWZpbmVkUmVmZXJlbmNlKSkpO1xuXG4gIGlmIChibG9jayAmJiAhaXNVbmRlZmluZWRSZWZlcmVuY2UoYmxvY2spKSB7XG4gICAgc3RhY2sucHVzaChUUlVFX1JFRkVSRU5DRSk7XG4gIH0gZWxzZSB7XG4gICAgc3RhY2sucHVzaChGQUxTRV9SRUZFUkVOQ0UpO1xuICB9XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkhhc0Jsb2NrUGFyYW1zLCB2bSA9PiB7XG4gIC8vIEZJWE1FKG1tdW4pOiBzaG91bGQgb25seSBuZWVkIHRvIHB1c2ggdGhlIHN5bWJvbCB0YWJsZVxuICBsZXQgYmxvY2sgPSB2bS5zdGFjay5wb3AoKTtcbiAgbGV0IHNjb3BlID0gdm0uc3RhY2sucG9wKCk7XG5cbiAgY2hlY2soYmxvY2ssIENoZWNrTWF5YmUoQ2hlY2tPcihDaGVja0hhbmRsZSwgQ2hlY2tDb21waWxhYmxlQmxvY2spKSk7XG4gIGNoZWNrKHNjb3BlLCBDaGVja01heWJlKENoZWNrU2NvcGUpKTtcbiAgbGV0IHRhYmxlID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrTWF5YmUoQ2hlY2tCbG9ja1N5bWJvbFRhYmxlKSk7XG5cbiAgbGV0IGhhc0Jsb2NrUGFyYW1zID0gdGFibGUgJiYgdGFibGUucGFyYW1ldGVycy5sZW5ndGg7XG4gIHZtLnN0YWNrLnB1c2goaGFzQmxvY2tQYXJhbXMgPyBUUlVFX1JFRkVSRU5DRSA6IEZBTFNFX1JFRkVSRU5DRSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNvbmNhdCwgKHZtLCB7IG9wMTogY291bnQgfSkgPT4ge1xuICBsZXQgb3V0OiBBcnJheTxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+PiA9IG5ldyBBcnJheShjb3VudCk7XG5cbiAgZm9yIChsZXQgaSA9IGNvdW50OyBpID4gMDsgaS0tKSB7XG4gICAgbGV0IG9mZnNldCA9IGkgLSAxO1xuICAgIG91dFtvZmZzZXRdID0gY2hlY2sodm0uc3RhY2sucG9wKCksIENoZWNrUGF0aFJlZmVyZW5jZSk7XG4gIH1cblxuICB2bS5zdGFjay5wdXNoKG5ldyBDb25jYXRSZWZlcmVuY2Uob3V0KSk7XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=

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

}();
function toSymbolName(name) {
return "&" + name;
}
export var BlockArgumentsImpl =

@@ -487,2 +492,3 @@ /*#__PURE__*/

this.internalValues = null;
this._symbolNames = null;
this.internalTag = null;

@@ -501,2 +507,3 @@ this.names = EMPTY_ARRAY;

this.length = 0;
this._symbolNames = null;
this.internalTag = CONSTANT_TAG;

@@ -511,2 +518,3 @@ this.internalValues = EMPTY_ARRAY;

this.length = length;
this._symbolNames = null;

@@ -559,2 +567,13 @@ if (length === 0) {

}
}, {
key: "symbolNames",
get: function get() {
var symbolNames = this._symbolNames;
if (symbolNames === null) {
symbolNames = this._symbolNames = this.names.map(toSymbolName);
}
return symbolNames;
}
}]);

@@ -613,2 +632,2 @@

export var EMPTY_ARGS = new CapturedArgumentsImpl(CONSTANT_TAG, EMPTY_POSITIONAL, EMPTY_NAMED, 0);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2FyZ3VtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsU0FBQSxJQUFBLEVBQUEsV0FBQSxRQUFBLGVBQUE7QUFvQkEsU0FBQSxZQUFBLFFBQUEsb0JBQUE7QUFDQSxTQUFBLGtCQUFBLEVBQUEsbUJBQUEsUUFBQSxlQUFBO0FBT0EsU0FBQSxhQUFBLFFBQUEsZUFBQTtBQUNBLFNBQUEsU0FBQSxRQUFBLFlBQUE7QUFDQSxTQUFBLEdBQUEsUUFBQSxhQUFBO0FBRUE7Ozs7Ozs7O0FBUUEsV0FBTSxlQUFOO0FBQUE7QUFBQTtBQUFBLDZCQUFBO0FBQ1UsU0FBQSxLQUFBLEdBQUEsSUFBQTtBQUNELFNBQUEsVUFBQSxHQUFhLElBQWIsdUJBQWEsRUFBYjtBQUNBLFNBQUEsS0FBQSxHQUFRLElBQVIsa0JBQVEsRUFBUjtBQUNBLFNBQUEsTUFBQSxHQUFTLElBQVQsa0JBQVMsRUFBVDtBQTJGUjs7QUEvRkQ7O0FBQUEsU0FNRSxLQU5GLEdBTUUsZUFBSyxLQUFMLEVBQTRCO0FBQzFCLFFBQUksSUFBSSxHQUFHLEtBQUssQ0FBTCxTQUFLLENBQUwsQ0FBQSxHQUFBLElBQVgsQ0FBQTtBQUVBLFNBQUEsS0FBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQUEsSUFBQTtBQUNBLFNBQUEsVUFBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQUEsSUFBQTtBQUNBLFNBQUEsTUFBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQUEsSUFBQTtBQUVBLFdBQUEsSUFBQTtBQUNELEdBZEg7O0FBQUEsU0FnQkUsS0FoQkYsR0FnQkUsZUFBSyxLQUFMLEVBQUssS0FBTCxFQUFLLFVBQUwsRUFBSyxlQUFMLEVBQUssT0FBTCxFQUtrQjtBQUVoQixTQUFBLEtBQUEsR0FBQSxLQUFBO0FBRUE7Ozs7Ozs7O0FBUUEsUUFBSSxLQUFLLEdBQUcsS0FBWixLQUFBO0FBQ0EsUUFBSSxV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Jy4vc3RhY2snO1xuaW1wb3J0IHsgZGljdCwgRU1QVFlfQVJSQVkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIERpY3QsXG4gIE9wdGlvbixcbiAgdW5zYWZlLFxuICBCbG9ja1N5bWJvbFRhYmxlLFxuICBWTUFyZ3VtZW50cyxcbiAgQ2FwdHVyZWRBcmd1bWVudHMsXG4gIFBvc2l0aW9uYWxBcmd1bWVudHMsXG4gIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyxcbiAgTmFtZWRBcmd1bWVudHMsXG4gIENhcHR1cmVkTmFtZWRBcmd1bWVudHMsXG4gIEppdE9yQW90QmxvY2ssXG4gIEJsb2NrVmFsdWUsXG4gIFNjb3BlQmxvY2ssXG4gIENhcHR1cmVkQmxvY2tBcmd1bWVudHMsXG4gIFNjb3BlLFxuICBCbG9ja0FyZ3VtZW50cyxcbn0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IFRhZywgQ09OU1RBTlRfVEFHIH0gZnJvbSAnQGdsaW1tZXIvdmFsaWRhdG9yJztcbmltcG9ydCB7IFByaW1pdGl2ZVJlZmVyZW5jZSwgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgQ2hlY2tCbG9ja1N5bWJvbFRhYmxlLCBjaGVjaywgQ2hlY2tIYW5kbGUsIENoZWNrT3B0aW9uLCBDaGVja09yIH0gZnJvbSAnQGdsaW1tZXIvZGVidWcnO1xuaW1wb3J0IHtcbiAgQ2hlY2tQYXRoUmVmZXJlbmNlLFxuICBDaGVja0NvbXBpbGFibGVCbG9jayxcbiAgQ2hlY2tTY29wZSxcbn0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy8tZGVidWctc3RyaXAnO1xuaW1wb3J0IHsgY29tYmluZVRhZ2dlZCB9IGZyb20gJy4uL3V0aWxzL3RhZ3MnO1xuaW1wb3J0IHsgUkVHSVNURVJTIH0gZnJvbSAnLi4vc3ltYm9scyc7XG5pbXBvcnQgeyAkc3AgfSBmcm9tICdAZ2xpbW1lci92bSc7XG5cbi8qXG4gIFRoZSBjYWxsaW5nIGNvbnZlbnRpb24gaXM6XG5cbiAgKiAwLU4gYmxvY2sgYXJndW1lbnRzIGF0IHRoZSBib3R0b21cbiAgKiAwLU4gcG9zaXRpb25hbCBhcmd1bWVudHMgbmV4dCAobGVmdC10by1yaWdodClcbiAgKiAwLU4gbmFtZWQgYXJndW1lbnRzIG5leHRcbiovXG5cbmV4cG9ydCBjbGFzcyBWTUFyZ3VtZW50c0ltcGwgaW1wbGVtZW50cyBWTUFyZ3VtZW50cyB7XG4gIHByaXZhdGUgc3RhY2s6IE9wdGlvbjxFdmFsdWF0aW9uU3RhY2s+ID0gbnVsbDtcbiAgcHVibGljIHBvc2l0aW9uYWwgPSBuZXcgUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwoKTtcbiAgcHVibGljIG5hbWVkID0gbmV3IE5hbWVkQXJndW1lbnRzSW1wbCgpO1xuICBwdWJsaWMgYmxvY2tzID0gbmV3IEJsb2NrQXJndW1lbnRzSW1wbCgpO1xuXG4gIGVtcHR5KHN0YWNrOiBFdmFsdWF0aW9uU3RhY2spOiB0aGlzIHtcbiAgICBsZXQgYmFzZSA9IHN0YWNrW1JFR0lTVEVSU11bJHNwXSArIDE7XG5cbiAgICB0aGlzLm5hbWVkLmVtcHR5KHN0YWNrLCBiYXNlKTtcbiAgICB0aGlzLnBvc2l0aW9uYWwuZW1wdHkoc3RhY2ssIGJhc2UpO1xuICAgIHRoaXMuYmxvY2tzLmVtcHR5KHN0YWNrLCBiYXNlKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0dXAoXG4gICAgc3RhY2s6IEV2YWx1YXRpb25TdGFjayxcbiAgICBuYW1lczogc3RyaW5nW10sXG4gICAgYmxvY2tOYW1lczogc3RyaW5nW10sXG4gICAgcG9zaXRpb25hbENvdW50OiBudW1iZXIsXG4gICAgYXROYW1lczogYm9vbGVhblxuICApIHtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG5cbiAgICAvKlxuICAgICAgICAgICB8IC4uLiB8IGJsb2NrcyAgICAgIHwgcG9zaXRpb25hbCAgfCBuYW1lZCB8XG4gICAgICAgICAgIHwgLi4uIHwgYjAgICAgYjEgICAgfCBwMCBwMSBwMiBwMyB8IG4wIG4xIHxcbiAgICAgaW5kZXggfCAuLi4gfCA0LzUvNiA3LzgvOSB8IDEwIDExIDEyIDEzIHwgMTQgMTUgfFxuICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgXiAgICAgICAgICAgICBeICBeXG4gICAgICAgICAgICAgICAgIGJiYXNlICAgICAgICAgcGJhc2UgICAgICAgbmJhc2UgIHNwXG4gICAgKi9cblxuICAgIGxldCBuYW1lZCA9IHRoaXMubmFtZWQ7XG4gICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG4gICAgbGV0IG5hbWVkQmFzZSA9IHN0YWNrW1JFR0lTVEVSU11bJHNwXSAtIG5hbWVkQ291bnQgKyAxO1xuXG4gICAgbmFtZWQuc2V0dXAoc3RhY2ssIG5hbWVkQmFzZSwgbmFtZWRDb3VudCwgbmFtZXMsIGF0TmFtZXMpO1xuXG4gICAgbGV0IHBvc2l0aW9uYWwgPSB0aGlzLnBvc2l0aW9uYWw7XG4gICAgbGV0IHBvc2l0aW9uYWxCYXNlID0gbmFtZWRCYXNlIC0gcG9zaXRpb25hbENvdW50O1xuXG4gICAgcG9zaXRpb25hbC5zZXR1cChzdGFjaywgcG9zaXRpb25hbEJhc2UsIHBvc2l0aW9uYWxDb3VudCk7XG5cbiAgICBsZXQgYmxvY2tzID0gdGhpcy5ibG9ja3M7XG4gICAgbGV0IGJsb2Nrc0NvdW50ID0gYmxvY2tOYW1lcy5sZW5ndGg7XG4gICAgbGV0IGJsb2Nrc0Jhc2UgPSBwb3NpdGlvbmFsQmFzZSAtIGJsb2Nrc0NvdW50ICogMztcblxuICAgIGJsb2Nrcy5zZXR1cChzdGFjaywgYmxvY2tzQmFzZSwgYmxvY2tzQ291bnQsIGJsb2NrTmFtZXMpO1xuICB9XG5cbiAgZ2V0IHRhZygpOiBUYWcge1xuICAgIHJldHVybiBjb21iaW5lVGFnZ2VkKFt0aGlzLnBvc2l0aW9uYWwsIHRoaXMubmFtZWRdKTtcbiAgfVxuXG4gIGdldCBiYXNlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYmxvY2tzLmJhc2U7XG4gIH1cblxuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucG9zaXRpb25hbC5sZW5ndGggKyB0aGlzLm5hbWVkLmxlbmd0aCArIHRoaXMuYmxvY2tzLmxlbmd0aCAqIDM7XG4gIH1cblxuICBhdDxUIGV4dGVuZHMgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4ocG9zOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmF0PFQ+KHBvcyk7XG4gIH1cblxuICByZWFsbG9jKG9mZnNldDogbnVtYmVyKSB7XG4gICAgbGV0IHsgc3RhY2sgfSA9IHRoaXM7XG4gICAgaWYgKG9mZnNldCA+IDAgJiYgc3RhY2sgIT09IG51bGwpIHtcbiAgICAgIGxldCB7IHBvc2l0aW9uYWwsIG5hbWVkIH0gPSB0aGlzO1xuICAgICAgbGV0IG5ld0Jhc2UgPSBwb3NpdGlvbmFsLmJhc2UgKyBvZmZzZXQ7XG4gICAgICBsZXQgbGVuZ3RoID0gcG9zaXRpb25hbC5sZW5ndGggKyBuYW1lZC5sZW5ndGg7XG5cbiAgICAgIGZvciAobGV0IGkgPSBsZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBzdGFjay5jb3B5KGkgKyBwb3NpdGlvbmFsLmJhc2UsIGkgKyBuZXdCYXNlKTtcbiAgICAgIH1cblxuICAgICAgcG9zaXRpb25hbC5iYXNlICs9IG9mZnNldDtcbiAgICAgIG5hbWVkLmJhc2UgKz0gb2Zmc2V0O1xuICAgICAgc3RhY2tbUkVHSVNURVJTXVskc3BdICs9IG9mZnNldDtcbiAgICB9XG4gIH1cblxuICBjYXB0dXJlKCk6IENhcHR1cmVkQXJndW1lbnRzIHtcbiAgICBsZXQgcG9zaXRpb25hbCA9IHRoaXMucG9zaXRpb25hbC5sZW5ndGggPT09IDAgPyBFTVBUWV9QT1NJVElPTkFMIDogdGhpcy5wb3NpdGlvbmFsLmNhcHR1cmUoKTtcbiAgICBsZXQgbmFtZWQgPSB0aGlzLm5hbWVkLmxlbmd0aCA9PT0gMCA/IEVNUFRZX05BTUVEIDogdGhpcy5uYW1lZC5jYXB0dXJlKCk7XG5cbiAgICByZXR1cm4gbmV3IENhcHR1cmVkQXJndW1lbnRzSW1wbCh0aGlzLnRhZywgcG9zaXRpb25hbCwgbmFtZWQsIHRoaXMubGVuZ3RoKTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIGxldCB7IHN0YWNrLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgaWYgKGxlbmd0aCA+IDAgJiYgc3RhY2sgIT09IG51bGwpIHN0YWNrLnBvcChsZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQb3NpdGlvbmFsQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICBwdWJsaWMgYmFzZSA9IDA7XG4gIHB1YmxpYyBsZW5ndGggPSAwO1xuXG4gIHByaXZhdGUgc3RhY2s6IEV2YWx1YXRpb25TdGFjayA9IG51bGwgYXMgYW55O1xuXG4gIHByaXZhdGUgX3RhZzogT3B0aW9uPFRhZz4gPSBudWxsO1xuICBwcml2YXRlIF9yZWZlcmVuY2VzOiBPcHRpb248VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdPiA9IG51bGw7XG5cbiAgZW1wdHkoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgdGhpcy5fdGFnID0gQ09OU1RBTlRfVEFHO1xuICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBFTVBUWV9BUlJBWTtcbiAgfVxuXG4gIHNldHVwKHN0YWNrOiBFdmFsdWF0aW9uU3RhY2ssIGJhc2U6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcblxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuX3RhZyA9IENPTlNUQU5UX1RBRztcbiAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBFTVBUWV9BUlJBWTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0YWcoKTogVGFnIHtcbiAgICBsZXQgdGFnID0gdGhpcy5fdGFnO1xuXG4gICAgaWYgKCF0YWcpIHtcbiAgICAgIHRhZyA9IHRoaXMuX3RhZyA9IGNvbWJpbmVUYWdnZWQodGhpcy5yZWZlcmVuY2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFnO1xuICB9XG5cbiAgYXQ8VCBleHRlbmRzIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+KHBvc2l0aW9uOiBudW1iZXIpOiBUIHtcbiAgICBsZXQgeyBiYXNlLCBsZW5ndGgsIHN0YWNrIH0gPSB0aGlzO1xuXG4gICAgaWYgKHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiAoVU5ERUZJTkVEX1JFRkVSRU5DRSBhcyB1bnNhZmUpIGFzIFQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoZWNrKHN0YWNrLmdldChwb3NpdGlvbiwgYmFzZSksIENoZWNrUGF0aFJlZmVyZW5jZSkgYXMgVDtcbiAgfVxuXG4gIGNhcHR1cmUoKTogQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzSW1wbCB7XG4gICAgcmV0dXJuIG5ldyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsKHRoaXMudGFnLCB0aGlzLnJlZmVyZW5jZXMpO1xuICB9XG5cbiAgcHJlcGVuZChvdGhlcjogQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzKSB7XG4gICAgbGV0IGFkZGl0aW9ucyA9IG90aGVyLmxlbmd0aDtcblxuICAgIGlmIChhZGRpdGlvbnMgPiAwKSB7XG4gICAgICBsZXQgeyBiYXNlLCBsZW5ndGgsIHN0YWNrIH0gPSB0aGlzO1xuXG4gICAgICB0aGlzLmJhc2UgPSBiYXNlID0gYmFzZSAtIGFkZGl0aW9ucztcbiAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoICsgYWRkaXRpb25zO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFkZGl0aW9uczsgaSsrKSB7XG4gICAgICAgIHN0YWNrLnNldChvdGhlci5hdChpKSwgaSwgYmFzZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCByZWZlcmVuY2VzKCk6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj5bXSB7XG4gICAgbGV0IHJlZmVyZW5jZXMgPSB0aGlzLl9yZWZlcmVuY2VzO1xuXG4gICAgaWYgKCFyZWZlcmVuY2VzKSB7XG4gICAgICBsZXQgeyBzdGFjaywgYmFzZSwgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXMgPSBzdGFjay5zbGljZUFycmF5PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+KFxuICAgICAgICBiYXNlLFxuICAgICAgICBiYXNlICsgbGVuZ3RoXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2VzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsIGltcGxlbWVudHMgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIHtcbiAgc3RhdGljIGVtcHR5KCk6IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyB7XG4gICAgcmV0dXJuIG5ldyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsKENPTlNUQU5UX1RBRywgRU1QVFlfQVJSQVksIDApO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhZzogVGFnLFxuICAgIHB1YmxpYyByZWZlcmVuY2VzOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W10sXG4gICAgcHVibGljIGxlbmd0aCA9IHJlZmVyZW5jZXMubGVuZ3RoXG4gICkge31cblxuICBhdDxUIGV4dGVuZHMgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4ocG9zaXRpb246IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNbcG9zaXRpb25dIGFzIFQ7XG4gIH1cblxuICB2YWx1ZSgpOiB1bmtub3duW10ge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXMubWFwKHRoaXMudmFsdWVPZik7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPiB7XG4gICAgbGV0IHsgcmVmZXJlbmNlcywgbGVuZ3RoIH0gPSB0aGlzO1xuXG4gICAgaWYgKG5hbWUgPT09ICdsZW5ndGgnKSB7XG4gICAgICByZXR1cm4gUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZShsZW5ndGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgaWR4ID0gcGFyc2VJbnQobmFtZSwgMTApO1xuXG4gICAgICBpZiAoaWR4IDwgMCB8fCBpZHggPj0gbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXNbaWR4XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbHVlT2YodGhpczogdm9pZCwgcmVmZXJlbmNlOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+KTogdW5rbm93biB7XG4gICAgcmV0dXJuIHJlZmVyZW5jZS52YWx1ZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOYW1lZEFyZ3VtZW50c0ltcGwgaW1wbGVtZW50cyBOYW1lZEFyZ3VtZW50cyB7XG4gIHB1YmxpYyBiYXNlID0gMDtcbiAgcHVibGljIGxlbmd0aCA9IDA7XG5cbiAgcHJpdmF0ZSBzdGFjayE6IEV2YWx1YXRpb25TdGFjaztcblxuICBwcml2YXRlIF9yZWZlcmVuY2VzOiBPcHRpb248VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdPiA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfbmFtZXM6IE9wdGlvbjxzdHJpbmdbXT4gPSBFTVBUWV9BUlJBWTtcbiAgcHJpdmF0ZSBfYXROYW1lczogT3B0aW9uPHN0cmluZ1tdPiA9IEVNUFRZX0FSUkFZO1xuXG4gIGVtcHR5KHN0YWNrOiBFdmFsdWF0aW9uU3RhY2ssIGJhc2U6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLmJhc2UgPSBiYXNlO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcblxuICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBFTVBUWV9BUlJBWTtcbiAgICB0aGlzLl9uYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgIHRoaXMuX2F0TmFtZXMgPSBFTVBUWV9BUlJBWTtcbiAgfVxuXG4gIHNldHVwKHN0YWNrOiBFdmFsdWF0aW9uU3RhY2ssIGJhc2U6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIsIG5hbWVzOiBzdHJpbmdbXSwgYXROYW1lczogYm9vbGVhbikge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLmJhc2UgPSBiYXNlO1xuICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuXG4gICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICAgICAgdGhpcy5fbmFtZXMgPSBFTVBUWV9BUlJBWTtcbiAgICAgIHRoaXMuX2F0TmFtZXMgPSBFTVBUWV9BUlJBWTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG5cbiAgICAgIGlmIChhdE5hbWVzKSB7XG4gICAgICAgIHRoaXMuX25hbWVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5fYXROYW1lcyA9IG5hbWVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fbmFtZXMgPSBuYW1lcztcbiAgICAgICAgdGhpcy5fYXROYW1lcyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRhZygpOiBUYWcge1xuICAgIHJldHVybiBjb21iaW5lVGFnZ2VkKHRoaXMucmVmZXJlbmNlcyk7XG4gIH1cblxuICBnZXQgbmFtZXMoKTogc3RyaW5nW10ge1xuICAgIGxldCBuYW1lcyA9IHRoaXMuX25hbWVzO1xuXG4gICAgaWYgKCFuYW1lcykge1xuICAgICAgbmFtZXMgPSB0aGlzLl9uYW1lcyA9IHRoaXMuX2F0TmFtZXMhLm1hcCh0aGlzLnRvU3ludGhldGljTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5hbWVzITtcbiAgfVxuXG4gIGdldCBhdE5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgYXROYW1lcyA9IHRoaXMuX2F0TmFtZXM7XG5cbiAgICBpZiAoIWF0TmFtZXMpIHtcbiAgICAgIGF0TmFtZXMgPSB0aGlzLl9hdE5hbWVzID0gdGhpcy5fbmFtZXMhLm1hcCh0aGlzLnRvQXROYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXROYW1lcyE7XG4gIH1cblxuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gIH1cblxuICBnZXQ8VCBleHRlbmRzIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+KG5hbWU6IHN0cmluZywgYXROYW1lcyA9IGZhbHNlKTogVCB7XG4gICAgbGV0IHsgYmFzZSwgc3RhY2sgfSA9IHRoaXM7XG5cbiAgICBsZXQgbmFtZXMgPSBhdE5hbWVzID8gdGhpcy5hdE5hbWVzIDogdGhpcy5uYW1lcztcblxuICAgIGxldCBpZHggPSBuYW1lcy5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiAoVU5ERUZJTkVEX1JFRkVSRU5DRSBhcyB1bnNhZmUpIGFzIFQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YWNrLmdldDxUPihpZHgsIGJhc2UpO1xuICB9XG5cbiAgY2FwdHVyZSgpOiBDYXB0dXJlZE5hbWVkQXJndW1lbnRzIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkTmFtZWRBcmd1bWVudHNJbXBsKHRoaXMudGFnLCB0aGlzLm5hbWVzLCB0aGlzLnJlZmVyZW5jZXMpO1xuICB9XG5cbiAgbWVyZ2Uob3RoZXI6IENhcHR1cmVkTmFtZWRBcmd1bWVudHMpIHtcbiAgICBsZXQgeyBsZW5ndGg6IGV4dHJhcyB9ID0gb3RoZXI7XG5cbiAgICBpZiAoZXh0cmFzID4gMCkge1xuICAgICAgbGV0IHsgbmFtZXMsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG4gICAgICBsZXQgeyBuYW1lczogZXh0cmFOYW1lcyB9ID0gb3RoZXI7XG5cbiAgICAgIGlmIChPYmplY3QuaXNGcm96ZW4obmFtZXMpICYmIG5hbWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBuYW1lcyA9IFtdO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV4dHJhczsgaSsrKSB7XG4gICAgICAgIGxldCBuYW1lID0gZXh0cmFOYW1lc1tpXTtcbiAgICAgICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG5cbiAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICBsZW5ndGggPSBuYW1lcy5wdXNoKG5hbWUpO1xuICAgICAgICAgIHN0YWNrLnB1c2gob3RoZXIucmVmZXJlbmNlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICAgIHRoaXMuX25hbWVzID0gbmFtZXM7XG4gICAgICB0aGlzLl9hdE5hbWVzID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCByZWZlcmVuY2VzKCk6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj5bXSB7XG4gICAgbGV0IHJlZmVyZW5jZXMgPSB0aGlzLl9yZWZlcmVuY2VzO1xuXG4gICAgaWYgKCFyZWZlcmVuY2VzKSB7XG4gICAgICBsZXQgeyBiYXNlLCBsZW5ndGgsIHN0YWNrIH0gPSB0aGlzO1xuICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXMgPSBzdGFjay5zbGljZUFycmF5PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+KFxuICAgICAgICBiYXNlLFxuICAgICAgICBiYXNlICsgbGVuZ3RoXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2VzO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1N5bnRoZXRpY05hbWUodGhpczogdm9pZCwgbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmFtZS5zbGljZSgxKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9BdE5hbWUodGhpczogdm9pZCwgbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYEAke25hbWV9YDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2FwdHVyZWROYW1lZEFyZ3VtZW50c0ltcGwgaW1wbGVtZW50cyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzIHtcbiAgcHVibGljIGxlbmd0aDogbnVtYmVyO1xuICBwcml2YXRlIF9tYXA6IE9wdGlvbjxEaWN0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGFnOiBUYWcsXG4gICAgcHVibGljIG5hbWVzOiBzdHJpbmdbXSxcbiAgICBwdWJsaWMgcmVmZXJlbmNlczogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdXG4gICkge1xuICAgIHRoaXMubGVuZ3RoID0gbmFtZXMubGVuZ3RoO1xuICAgIHRoaXMuX21hcCA9IG51bGw7XG4gIH1cblxuICBnZXQgbWFwKCkge1xuICAgIGxldCBtYXAgPSB0aGlzLl9tYXA7XG5cbiAgICBpZiAoIW1hcCkge1xuICAgICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgICBtYXAgPSB0aGlzLl9tYXAgPSBkaWN0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+KCk7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IG5hbWUgPSBuYW1lc1tpXTtcbiAgICAgICAgbWFwIVtuYW1lXSA9IHJlZmVyZW5jZXNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcDtcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGdldDxUIGV4dGVuZHMgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4obmFtZTogc3RyaW5nKTogVCB7XG4gICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG5cbiAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIChVTkRFRklORURfUkVGRVJFTkNFIGFzIHVuc2FmZSkgYXMgVDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlZmVyZW5jZXNbaWR4XSBhcyBUO1xuICAgIH1cbiAgfVxuXG4gIHZhbHVlKCk6IERpY3Q8dW5rbm93bj4ge1xuICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgIGxldCBvdXQgPSBkaWN0PHVua25vd24+KCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgb3V0W25hbWVdID0gcmVmZXJlbmNlc1tpXS52YWx1ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJsb2NrQXJndW1lbnRzSW1wbDxDIGV4dGVuZHMgSml0T3JBb3RCbG9jaz4gaW1wbGVtZW50cyBCbG9ja0FyZ3VtZW50czxDPiB7XG4gIHByaXZhdGUgc3RhY2shOiBFdmFsdWF0aW9uU3RhY2s7XG4gIHByaXZhdGUgaW50ZXJuYWxWYWx1ZXM6IE9wdGlvbjxudW1iZXJbXT4gPSBudWxsO1xuXG4gIHB1YmxpYyBpbnRlcm5hbFRhZzogT3B0aW9uPFRhZz4gPSBudWxsO1xuICBwdWJsaWMgbmFtZXM6IHN0cmluZ1tdID0gRU1QVFlfQVJSQVk7XG5cbiAgcHVibGljIGxlbmd0aCA9IDA7XG4gIHB1YmxpYyBiYXNlID0gMDtcblxuICBlbXB0eShzdGFjazogRXZhbHVhdGlvblN0YWNrLCBiYXNlOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgdGhpcy5uYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgdGhpcy5pbnRlcm5hbFRhZyA9IENPTlNUQU5UX1RBRztcbiAgICB0aGlzLmludGVybmFsVmFsdWVzID0gRU1QVFlfQVJSQVk7XG4gIH1cblxuICBzZXR1cChzdGFjazogRXZhbHVhdGlvblN0YWNrLCBiYXNlOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCBuYW1lczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgdGhpcy5uYW1lcyA9IG5hbWVzO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmludGVybmFsVGFnID0gQ09OU1RBTlRfVEFHO1xuICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlcyA9IEVNUFRZX0FSUkFZO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmludGVybmFsVGFnID0gbnVsbDtcbiAgICAgIHRoaXMuaW50ZXJuYWxWYWx1ZXMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZXMoKTogQmxvY2tWYWx1ZVtdIHtcbiAgICBsZXQgdmFsdWVzID0gdGhpcy5pbnRlcm5hbFZhbHVlcztcblxuICAgIGlmICghdmFsdWVzKSB7XG4gICAgICBsZXQgeyBiYXNlLCBsZW5ndGgsIHN0YWNrIH0gPSB0aGlzO1xuICAgICAgdmFsdWVzID0gdGhpcy5pbnRlcm5hbFZhbHVlcyA9IHN0YWNrLnNsaWNlQXJyYXk8bnVtYmVyPihiYXNlLCBiYXNlICsgbGVuZ3RoICogMyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lcyEuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogT3B0aW9uPFNjb3BlQmxvY2s8Qz4+IHtcbiAgICBsZXQgaWR4ID0gdGhpcy5uYW1lcyEuaW5kZXhPZihuYW1lKTtcblxuICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgeyBiYXNlLCBzdGFjayB9ID0gdGhpcztcblxuICAgIGxldCB0YWJsZSA9IGNoZWNrKHN0YWNrLmdldChpZHggKiAzLCBiYXNlKSwgQ2hlY2tPcHRpb24oQ2hlY2tCbG9ja1N5bWJvbFRhYmxlKSk7XG4gICAgbGV0IHNjb3BlID0gY2hlY2soc3RhY2suZ2V0KGlkeCAqIDMgKyAxLCBiYXNlKSwgQ2hlY2tPcHRpb24oQ2hlY2tTY29wZSkpO1xuICAgIGxldCBoYW5kbGUgPSBjaGVjayhcbiAgICAgIHN0YWNrLmdldChpZHggKiAzICsgMiwgYmFzZSksXG4gICAgICBDaGVja09wdGlvbihDaGVja09yKENoZWNrSGFuZGxlLCBDaGVja0NvbXBpbGFibGVCbG9jaykpXG4gICAgKTtcblxuICAgIHJldHVybiBoYW5kbGUgPT09IG51bGwgPyBudWxsIDogKFtoYW5kbGUsIHNjb3BlISwgdGFibGUhXSBhcyBTY29wZUJsb2NrPEM+KTtcbiAgfVxuXG4gIGNhcHR1cmUoKTogQ2FwdHVyZWRCbG9ja0FyZ3VtZW50cyB7XG4gICAgcmV0dXJuIG5ldyBDYXB0dXJlZEJsb2NrQXJndW1lbnRzSW1wbCh0aGlzLm5hbWVzLCB0aGlzLnZhbHVlcyk7XG4gIH1cbn1cblxuY2xhc3MgQ2FwdHVyZWRCbG9ja0FyZ3VtZW50c0ltcGwgaW1wbGVtZW50cyBDYXB0dXJlZEJsb2NrQXJndW1lbnRzIHtcbiAgcHVibGljIGxlbmd0aDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lczogc3RyaW5nW10sIHB1YmxpYyB2YWx1ZXM6IEJsb2NrVmFsdWVbXSkge1xuICAgIHRoaXMubGVuZ3RoID0gbmFtZXMubGVuZ3RoO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICB9XG5cbiAgZ2V0KG5hbWU6IHN0cmluZyk6IE9wdGlvbjxTY29wZUJsb2NrPiB7XG4gICAgbGV0IGlkeCA9IHRoaXMubmFtZXMuaW5kZXhPZihuYW1lKTtcblxuICAgIGlmIChpZHggPT09IC0xKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiBbXG4gICAgICB0aGlzLnZhbHVlc1tpZHggKiAzICsgMl0gYXMgbnVtYmVyLFxuICAgICAgdGhpcy52YWx1ZXNbaWR4ICogMyArIDFdIGFzIFNjb3BlPEppdE9yQW90QmxvY2s+LFxuICAgICAgdGhpcy52YWx1ZXNbaWR4ICogM10gYXMgQmxvY2tTeW1ib2xUYWJsZSxcbiAgICBdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYXB0dXJlZEFyZ3VtZW50c0ltcGwgaW1wbGVtZW50cyBDYXB0dXJlZEFyZ3VtZW50cyB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWc6IFRhZyxcbiAgICBwdWJsaWMgcG9zaXRpb25hbDogQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzLFxuICAgIHB1YmxpYyBuYW1lZDogQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyxcbiAgICBwdWJsaWMgbGVuZ3RoOiBudW1iZXJcbiAgKSB7fVxuXG4gIHZhbHVlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lZDogdGhpcy5uYW1lZC52YWx1ZSgpLFxuICAgICAgcG9zaXRpb25hbDogdGhpcy5wb3NpdGlvbmFsLnZhbHVlKCksXG4gICAgfTtcbiAgfVxufVxuXG5jb25zdCBFTVBUWV9OQU1FRCA9IG5ldyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzSW1wbChDT05TVEFOVF9UQUcsIEVNUFRZX0FSUkFZLCBFTVBUWV9BUlJBWSk7XG5jb25zdCBFTVBUWV9QT1NJVElPTkFMID0gbmV3IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwoQ09OU1RBTlRfVEFHLCBFTVBUWV9BUlJBWSk7XG5leHBvcnQgY29uc3QgRU1QVFlfQVJHUyA9IG5ldyBDYXB0dXJlZEFyZ3VtZW50c0ltcGwoQ09OU1RBTlRfVEFHLCBFTVBUWV9QT1NJVElPTkFMLCBFTVBUWV9OQU1FRCwgMCk7XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2FyZ3VtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsU0FBQSxJQUFBLEVBQUEsV0FBQSxRQUFBLGVBQUE7QUFvQkEsU0FBQSxZQUFBLFFBQUEsb0JBQUE7QUFDQSxTQUFBLGtCQUFBLEVBQUEsbUJBQUEsUUFBQSxlQUFBO0FBT0EsU0FBQSxhQUFBLFFBQUEsZUFBQTtBQUNBLFNBQUEsU0FBQSxRQUFBLFlBQUE7QUFDQSxTQUFBLEdBQUEsUUFBQSxhQUFBO0FBRUE7Ozs7Ozs7O0FBUUEsV0FBTSxlQUFOO0FBQUE7QUFBQTtBQUFBLDZCQUFBO0FBQ1UsU0FBQSxLQUFBLEdBQUEsSUFBQTtBQUNELFNBQUEsVUFBQSxHQUFhLElBQWIsdUJBQWEsRUFBYjtBQUNBLFNBQUEsS0FBQSxHQUFRLElBQVIsa0JBQVEsRUFBUjtBQUNBLFNBQUEsTUFBQSxHQUFTLElBQVQsa0JBQVMsRUFBVDtBQTJGUjs7QUEvRkQ7O0FBQUEsU0FNRSxLQU5GLEdBTUUsZUFBSyxLQUFMLEVBQTRCO0FBQzFCLFFBQUksSUFBSSxHQUFHLEtBQUssQ0FBTCxTQUFLLENBQUwsQ0FBQSxHQUFBLElBQVgsQ0FBQTtBQUVBLFNBQUEsS0FBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQUEsSUFBQTtBQUNBLFNBQUEsVUFBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQUEsSUFBQTtBQUNBLFNBQUEsTUFBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQUEsSUFBQTtBQUVBLFdBQUEsSUFBQTtBQUNELEdBZEg7O0FBQUEsU0FnQkUsS0FoQkYsR0FnQkUsZUFBSyxLQUFMLEVBQUssS0FBTCxFQUFLLFVBQUwsRUFBSyxlQUFMLEVBQUssT0FBTCxFQUtrQjtBQUVoQixTQUFBLEtBQUEsR0FBQSxLQUFBO0FBRUE7Ozs7Ozs7O0FBUUEsUUFBSSxLQUFLLEdBQUcsS0FBWixLQUFBO0FBQ0EsUUFBSSxV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QUEsVUFBQSxDQUFBLEtBQUE7QUFGUCxLQUFQO0FBSUQsR0FiSDs7QUFBQTtBQUFBO0FBZ0JBLElBQU0sV0FBVyxHQUFHLElBQUEsMEJBQUEsQ0FBQSxZQUFBLEVBQUEsV0FBQSxFQUFwQixXQUFvQixDQUFwQjtBQUNBLElBQU0sZ0JBQWdCLEdBQUcsSUFBQSwrQkFBQSxDQUFBLFlBQUEsRUFBekIsV0FBeUIsQ0FBekI7QUFDQSxPQUFPLElBQU0sVUFBVSxHQUFHLElBQUEscUJBQUEsQ0FBQSxZQUFBLEVBQUEsZ0JBQUEsRUFBQSxXQUFBLEVBQW5CLENBQW1CLENBQW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZhbHVhdGlvblN0YWNrIH0gZnJvbSAnLi9zdGFjayc7XG5pbXBvcnQgeyBkaWN0LCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgRGljdCxcbiAgT3B0aW9uLFxuICB1bnNhZmUsXG4gIEJsb2NrU3ltYm9sVGFibGUsXG4gIFZNQXJndW1lbnRzLFxuICBDYXB0dXJlZEFyZ3VtZW50cyxcbiAgUG9zaXRpb25hbEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzLFxuICBOYW1lZEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyxcbiAgSml0T3JBb3RCbG9jayxcbiAgQmxvY2tWYWx1ZSxcbiAgU2NvcGVCbG9jayxcbiAgQ2FwdHVyZWRCbG9ja0FyZ3VtZW50cyxcbiAgU2NvcGUsXG4gIEJsb2NrQXJndW1lbnRzLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgVGFnLCBDT05TVEFOVF9UQUcgfSBmcm9tICdAZ2xpbW1lci92YWxpZGF0b3InO1xuaW1wb3J0IHsgUHJpbWl0aXZlUmVmZXJlbmNlLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDaGVja0Jsb2NrU3ltYm9sVGFibGUsIGNoZWNrLCBDaGVja0hhbmRsZSwgQ2hlY2tPcHRpb24sIENoZWNrT3IgfSBmcm9tICdAZ2xpbW1lci9kZWJ1Zyc7XG5pbXBvcnQge1xuICBDaGVja1BhdGhSZWZlcmVuY2UsXG4gIENoZWNrQ29tcGlsYWJsZUJsb2NrLFxuICBDaGVja1Njb3BlLFxufSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzLy1kZWJ1Zy1zdHJpcCc7XG5pbXBvcnQgeyBjb21iaW5lVGFnZ2VkIH0gZnJvbSAnLi4vdXRpbHMvdGFncyc7XG5pbXBvcnQgeyBSRUdJU1RFUlMgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7ICRzcCB9IGZyb20gJ0BnbGltbWVyL3ZtJztcblxuLypcbiAgVGhlIGNhbGxpbmcgY29udmVudGlvbiBpczpcblxuICAqIDAtTiBibG9jayBhcmd1bWVudHMgYXQgdGhlIGJvdHRvbVxuICAqIDAtTiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBuZXh0IChsZWZ0LXRvLXJpZ2h0KVxuICAqIDAtTiBuYW1lZCBhcmd1bWVudHMgbmV4dFxuKi9cblxuZXhwb3J0IGNsYXNzIFZNQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIFZNQXJndW1lbnRzIHtcbiAgcHJpdmF0ZSBzdGFjazogT3B0aW9uPEV2YWx1YXRpb25TdGFjaz4gPSBudWxsO1xuICBwdWJsaWMgcG9zaXRpb25hbCA9IG5ldyBQb3NpdGlvbmFsQXJndW1lbnRzSW1wbCgpO1xuICBwdWJsaWMgbmFtZWQgPSBuZXcgTmFtZWRBcmd1bWVudHNJbXBsKCk7XG4gIHB1YmxpYyBibG9ja3MgPSBuZXcgQmxvY2tBcmd1bWVudHNJbXBsKCk7XG5cbiAgZW1wdHkoc3RhY2s6IEV2YWx1YXRpb25TdGFjayk6IHRoaXMge1xuICAgIGxldCBiYXNlID0gc3RhY2tbUkVHSVNURVJTXVskc3BdICsgMTtcblxuICAgIHRoaXMubmFtZWQuZW1wdHkoc3RhY2ssIGJhc2UpO1xuICAgIHRoaXMucG9zaXRpb25hbC5lbXB0eShzdGFjaywgYmFzZSk7XG4gICAgdGhpcy5ibG9ja3MuZW1wdHkoc3RhY2ssIGJhc2UpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXR1cChcbiAgICBzdGFjazogRXZhbHVhdGlvblN0YWNrLFxuICAgIG5hbWVzOiBzdHJpbmdbXSxcbiAgICBibG9ja05hbWVzOiBzdHJpbmdbXSxcbiAgICBwb3NpdGlvbmFsQ291bnQ6IG51bWJlcixcbiAgICBhdE5hbWVzOiBib29sZWFuXG4gICkge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcblxuICAgIC8qXG4gICAgICAgICAgIHwgLi4uIHwgYmxvY2tzICAgICAgfCBwb3NpdGlvbmFsICB8IG5hbWVkIHxcbiAgICAgICAgICAgfCAuLi4gfCBiMCAgICBiMSAgICB8IHAwIHAxIHAyIHAzIHwgbjAgbjEgfFxuICAgICBpbmRleCB8IC4uLiB8IDQvNS82IDcvOC85IHwgMTAgMTEgMTIgMTMgfCAxNCAxNSB8XG4gICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICBeICAgICAgICAgICAgIF4gIF5cbiAgICAgICAgICAgICAgICAgYmJhc2UgICAgICAgICBwYmFzZSAgICAgICBuYmFzZSAgc3BcbiAgICAqL1xuXG4gICAgbGV0IG5hbWVkID0gdGhpcy5uYW1lZDtcbiAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcbiAgICBsZXQgbmFtZWRCYXNlID0gc3RhY2tbUkVHSVNURVJTXVskc3BdIC0gbmFtZWRDb3VudCArIDE7XG5cbiAgICBuYW1lZC5zZXR1cChzdGFjaywgbmFtZWRCYXNlLCBuYW1lZENvdW50LCBuYW1lcywgYXROYW1lcyk7XG5cbiAgICBsZXQgcG9zaXRpb25hbCA9IHRoaXMucG9zaXRpb25hbDtcbiAgICBsZXQgcG9zaXRpb25hbEJhc2UgPSBuYW1lZEJhc2UgLSBwb3NpdGlvbmFsQ291bnQ7XG5cbiAgICBwb3NpdGlvbmFsLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsQmFzZSwgcG9zaXRpb25hbENvdW50KTtcblxuICAgIGxldCBibG9ja3MgPSB0aGlzLmJsb2NrcztcbiAgICBsZXQgYmxvY2tzQ291bnQgPSBibG9ja05hbWVzLmxlbmd0aDtcbiAgICBsZXQgYmxvY2tzQmFzZSA9IHBvc2l0aW9uYWxCYXNlIC0gYmxvY2tzQ291bnQgKiAzO1xuXG4gICAgYmxvY2tzLnNldHVwKHN0YWNrLCBibG9ja3NCYXNlLCBibG9ja3NDb3VudCwgYmxvY2tOYW1lcyk7XG4gIH1cblxuICBnZXQgdGFnKCk6IFRhZyB7XG4gICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQoW3RoaXMucG9zaXRpb25hbCwgdGhpcy5uYW1lZF0pO1xuICB9XG5cbiAgZ2V0IGJhc2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ibG9ja3MuYmFzZTtcbiAgfVxuXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmxlbmd0aCArIHRoaXMubmFtZWQubGVuZ3RoICsgdGhpcy5ibG9ja3MubGVuZ3RoICogMztcbiAgfVxuXG4gIGF0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+Pihwb3M6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uYWwuYXQ8VD4ocG9zKTtcbiAgfVxuXG4gIHJlYWxsb2Mob2Zmc2V0OiBudW1iZXIpIHtcbiAgICBsZXQgeyBzdGFjayB9ID0gdGhpcztcbiAgICBpZiAob2Zmc2V0ID4gMCAmJiBzdGFjayAhPT0gbnVsbCkge1xuICAgICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHRoaXM7XG4gICAgICBsZXQgbmV3QmFzZSA9IHBvc2l0aW9uYWwuYmFzZSArIG9mZnNldDtcbiAgICAgIGxldCBsZW5ndGggPSBwb3NpdGlvbmFsLmxlbmd0aCArIG5hbWVkLmxlbmd0aDtcblxuICAgICAgZm9yIChsZXQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHN0YWNrLmNvcHkoaSArIHBvc2l0aW9uYWwuYmFzZSwgaSArIG5ld0Jhc2UpO1xuICAgICAgfVxuXG4gICAgICBwb3NpdGlvbmFsLmJhc2UgKz0gb2Zmc2V0O1xuICAgICAgbmFtZWQuYmFzZSArPSBvZmZzZXQ7XG4gICAgICBzdGFja1tSRUdJU1RFUlNdWyRzcF0gKz0gb2Zmc2V0O1xuICAgIH1cbiAgfVxuXG4gIGNhcHR1cmUoKTogQ2FwdHVyZWRBcmd1bWVudHMge1xuICAgIGxldCBwb3NpdGlvbmFsID0gdGhpcy5wb3NpdGlvbmFsLmxlbmd0aCA9PT0gMCA/IEVNUFRZX1BPU0lUSU9OQUwgOiB0aGlzLnBvc2l0aW9uYWwuY2FwdHVyZSgpO1xuICAgIGxldCBuYW1lZCA9IHRoaXMubmFtZWQubGVuZ3RoID09PSAwID8gRU1QVFlfTkFNRUQgOiB0aGlzLm5hbWVkLmNhcHR1cmUoKTtcblxuICAgIHJldHVybiBuZXcgQ2FwdHVyZWRBcmd1bWVudHNJbXBsKHRoaXMudGFnLCBwb3NpdGlvbmFsLCBuYW1lZCwgdGhpcy5sZW5ndGgpO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgbGV0IHsgc3RhY2ssIGxlbmd0aCB9ID0gdGhpcztcbiAgICBpZiAobGVuZ3RoID4gMCAmJiBzdGFjayAhPT0gbnVsbCkgc3RhY2sucG9wKGxlbmd0aCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsIGltcGxlbWVudHMgUG9zaXRpb25hbEFyZ3VtZW50cyB7XG4gIHB1YmxpYyBiYXNlID0gMDtcbiAgcHVibGljIGxlbmd0aCA9IDA7XG5cbiAgcHJpdmF0ZSBzdGFjazogRXZhbHVhdGlvblN0YWNrID0gbnVsbCBhcyBhbnk7XG5cbiAgcHJpdmF0ZSBfdGFnOiBPcHRpb248VGFnPiA9IG51bGw7XG4gIHByaXZhdGUgX3JlZmVyZW5jZXM6IE9wdGlvbjxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W10+ID0gbnVsbDtcblxuICBlbXB0eShzdGFjazogRXZhbHVhdGlvblN0YWNrLCBiYXNlOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgdGhpcy5iYXNlID0gYmFzZTtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICB0aGlzLl90YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICB9XG5cbiAgc2V0dXAoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyLCBsZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLmJhc2UgPSBiYXNlO1xuICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuXG4gICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5fdGFnID0gQ09OU1RBTlRfVEFHO1xuICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRhZygpOiBUYWcge1xuICAgIGxldCB0YWcgPSB0aGlzLl90YWc7XG5cbiAgICBpZiAoIXRhZykge1xuICAgICAgdGFnID0gdGhpcy5fdGFnID0gY29tYmluZVRhZ2dlZCh0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0YWc7XG4gIH1cblxuICBhdDxUIGV4dGVuZHMgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4ocG9zaXRpb246IG51bWJlcik6IFQge1xuICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG5cbiAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIChVTkRFRklORURfUkVGRVJFTkNFIGFzIHVuc2FmZSkgYXMgVDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hlY2soc3RhY2suZ2V0KHBvc2l0aW9uLCBiYXNlKSwgQ2hlY2tQYXRoUmVmZXJlbmNlKSBhcyBUO1xuICB9XG5cbiAgY2FwdHVyZSgpOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHNJbXBsIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwodGhpcy50YWcsIHRoaXMucmVmZXJlbmNlcyk7XG4gIH1cblxuICBwcmVwZW5kKG90aGVyOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMpIHtcbiAgICBsZXQgYWRkaXRpb25zID0gb3RoZXIubGVuZ3RoO1xuXG4gICAgaWYgKGFkZGl0aW9ucyA+IDApIHtcbiAgICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG5cbiAgICAgIHRoaXMuYmFzZSA9IGJhc2UgPSBiYXNlIC0gYWRkaXRpb25zO1xuICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGggKyBhZGRpdGlvbnM7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWRkaXRpb25zOyBpKyspIHtcbiAgICAgICAgc3RhY2suc2V0KG90aGVyLmF0KGkpLCBpLCBiYXNlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHJlZmVyZW5jZXMoKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdIHtcbiAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG5cbiAgICBpZiAoIXJlZmVyZW5jZXMpIHtcbiAgICAgIGxldCB7IHN0YWNrLCBiYXNlLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IHN0YWNrLnNsaWNlQXJyYXk8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oXG4gICAgICAgIGJhc2UsXG4gICAgICAgIGJhc2UgKyBsZW5ndGhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwgaW1wbGVtZW50cyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICBzdGF0aWMgZW1wdHkoKTogQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50c0ltcGwoQ09OU1RBTlRfVEFHLCBFTVBUWV9BUlJBWSwgMCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGFnOiBUYWcsXG4gICAgcHVibGljIHJlZmVyZW5jZXM6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj5bXSxcbiAgICBwdWJsaWMgbGVuZ3RoID0gcmVmZXJlbmNlcy5sZW5ndGhcbiAgKSB7fVxuXG4gIGF0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+Pihwb3NpdGlvbjogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1twb3NpdGlvbl0gYXMgVDtcbiAgfVxuXG4gIHZhbHVlKCk6IHVua25vd25bXSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlcy5tYXAodGhpcy52YWx1ZU9mKTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+IHtcbiAgICBsZXQgeyByZWZlcmVuY2VzLCBsZW5ndGggfSA9IHRoaXM7XG5cbiAgICBpZiAobmFtZSA9PT0gJ2xlbmd0aCcpIHtcbiAgICAgIHJldHVybiBQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKGxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpZHggPSBwYXJzZUludChuYW1lLCAxMCk7XG5cbiAgICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVmZXJlbmNlc1tpZHhdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsdWVPZih0aGlzOiB2b2lkLCByZWZlcmVuY2U6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4pOiB1bmtub3duIHtcbiAgICByZXR1cm4gcmVmZXJlbmNlLnZhbHVlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5hbWVkQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIE5hbWVkQXJndW1lbnRzIHtcbiAgcHVibGljIGJhc2UgPSAwO1xuICBwdWJsaWMgbGVuZ3RoID0gMDtcblxuICBwcml2YXRlIHN0YWNrITogRXZhbHVhdGlvblN0YWNrO1xuXG4gIHByaXZhdGUgX3JlZmVyZW5jZXM6IE9wdGlvbjxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W10+ID0gbnVsbDtcblxuICBwcml2YXRlIF9uYW1lczogT3B0aW9uPHN0cmluZ1tdPiA9IEVNUFRZX0FSUkFZO1xuICBwcml2YXRlIF9hdE5hbWVzOiBPcHRpb248c3RyaW5nW10+ID0gRU1QVFlfQVJSQVk7XG5cbiAgZW1wdHkoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgdGhpcy5fcmVmZXJlbmNlcyA9IEVNUFRZX0FSUkFZO1xuICAgIHRoaXMuX25hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgdGhpcy5fYXROYW1lcyA9IEVNUFRZX0FSUkFZO1xuICB9XG5cbiAgc2V0dXAoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbmFtZXM6IHN0cmluZ1tdLCBhdE5hbWVzOiBib29sZWFuKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLl9yZWZlcmVuY2VzID0gRU1QVFlfQVJSQVk7XG4gICAgICB0aGlzLl9uYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgICAgdGhpcy5fYXROYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcblxuICAgICAgaWYgKGF0TmFtZXMpIHtcbiAgICAgICAgdGhpcy5fbmFtZXMgPSBudWxsO1xuICAgICAgICB0aGlzLl9hdE5hbWVzID0gbmFtZXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9uYW1lcyA9IG5hbWVzO1xuICAgICAgICB0aGlzLl9hdE5hbWVzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgdGFnKCk6IFRhZyB7XG4gICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQodGhpcy5yZWZlcmVuY2VzKTtcbiAgfVxuXG4gIGdldCBuYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgbGV0IG5hbWVzID0gdGhpcy5fbmFtZXM7XG5cbiAgICBpZiAoIW5hbWVzKSB7XG4gICAgICBuYW1lcyA9IHRoaXMuX25hbWVzID0gdGhpcy5fYXROYW1lcyEubWFwKHRoaXMudG9TeW50aGV0aWNOYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmFtZXMhO1xuICB9XG5cbiAgZ2V0IGF0TmFtZXMoKTogc3RyaW5nW10ge1xuICAgIGxldCBhdE5hbWVzID0gdGhpcy5fYXROYW1lcztcblxuICAgIGlmICghYXROYW1lcykge1xuICAgICAgYXROYW1lcyA9IHRoaXMuX2F0TmFtZXMgPSB0aGlzLl9uYW1lcyEubWFwKHRoaXMudG9BdE5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBhdE5hbWVzITtcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGdldDxUIGV4dGVuZHMgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4obmFtZTogc3RyaW5nLCBhdE5hbWVzID0gZmFsc2UpOiBUIHtcbiAgICBsZXQgeyBiYXNlLCBzdGFjayB9ID0gdGhpcztcblxuICAgIGxldCBuYW1lcyA9IGF0TmFtZXMgPyB0aGlzLmF0TmFtZXMgOiB0aGlzLm5hbWVzO1xuXG4gICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG5cbiAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIChVTkRFRklORURfUkVGRVJFTkNFIGFzIHVuc2FmZSkgYXMgVDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhY2suZ2V0PFQ+KGlkeCwgYmFzZSk7XG4gIH1cblxuICBjYXB0dXJlKCk6IENhcHR1cmVkTmFtZWRBcmd1bWVudHMge1xuICAgIHJldHVybiBuZXcgQ2FwdHVyZWROYW1lZEFyZ3VtZW50c0ltcGwodGhpcy50YWcsIHRoaXMubmFtZXMsIHRoaXMucmVmZXJlbmNlcyk7XG4gIH1cblxuICBtZXJnZShvdGhlcjogQ2FwdHVyZWROYW1lZEFyZ3VtZW50cykge1xuICAgIGxldCB7IGxlbmd0aDogZXh0cmFzIH0gPSBvdGhlcjtcblxuICAgIGlmIChleHRyYXMgPiAwKSB7XG4gICAgICBsZXQgeyBuYW1lcywgbGVuZ3RoLCBzdGFjayB9ID0gdGhpcztcbiAgICAgIGxldCB7IG5hbWVzOiBleHRyYU5hbWVzIH0gPSBvdGhlcjtcblxuICAgICAgaWYgKE9iamVjdC5pc0Zyb3plbihuYW1lcykgJiYgbmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIG5hbWVzID0gW107XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXh0cmFzOyBpKyspIHtcbiAgICAgICAgbGV0IG5hbWUgPSBleHRyYU5hbWVzW2ldO1xuICAgICAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcblxuICAgICAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgICAgIGxlbmd0aCA9IG5hbWVzLnB1c2gobmFtZSk7XG4gICAgICAgICAgc3RhY2sucHVzaChvdGhlci5yZWZlcmVuY2VzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgdGhpcy5fbmFtZXMgPSBuYW1lcztcbiAgICAgIHRoaXMuX2F0TmFtZXMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHJlZmVyZW5jZXMoKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPltdIHtcbiAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG5cbiAgICBpZiAoIXJlZmVyZW5jZXMpIHtcbiAgICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG4gICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IHN0YWNrLnNsaWNlQXJyYXk8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oXG4gICAgICAgIGJhc2UsXG4gICAgICAgIGJhc2UgKyBsZW5ndGhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gIH1cblxuICBwcml2YXRlIHRvU3ludGhldGljTmFtZSh0aGlzOiB2b2lkLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuYW1lLnNsaWNlKDEpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b0F0TmFtZSh0aGlzOiB2b2lkLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgQCR7bmFtZX1gO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIENhcHR1cmVkTmFtZWRBcmd1bWVudHMge1xuICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG4gIHByaXZhdGUgX21hcDogT3B0aW9uPERpY3Q8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWc6IFRhZyxcbiAgICBwdWJsaWMgbmFtZXM6IHN0cmluZ1tdLFxuICAgIHB1YmxpYyByZWZlcmVuY2VzOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+W11cbiAgKSB7XG4gICAgdGhpcy5sZW5ndGggPSBuYW1lcy5sZW5ndGg7XG4gICAgdGhpcy5fbWFwID0gbnVsbDtcbiAgfVxuXG4gIGdldCBtYXAoKSB7XG4gICAgbGV0IG1hcCA9IHRoaXMuX21hcDtcblxuICAgIGlmICghbWFwKSB7XG4gICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgIG1hcCA9IHRoaXMuX21hcCA9IGRpY3Q8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICBtYXAhW25hbWVdID0gcmVmZXJlbmNlc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICB9XG5cbiAgZ2V0PFQgZXh0ZW5kcyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+PihuYW1lOiBzdHJpbmcpOiBUIHtcbiAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcblxuICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICByZXR1cm4gKFVOREVGSU5FRF9SRUZFUkVOQ0UgYXMgdW5zYWZlKSBhcyBUO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVmZXJlbmNlc1tpZHhdIGFzIFQ7XG4gICAgfVxuICB9XG5cbiAgdmFsdWUoKTogRGljdDx1bmtub3duPiB7XG4gICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgbGV0IG91dCA9IGRpY3Q8dW5rbm93bj4oKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBuYW1lID0gbmFtZXNbaV07XG4gICAgICBvdXRbbmFtZV0gPSByZWZlcmVuY2VzW2ldLnZhbHVlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b1N5bWJvbE5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAmJHtuYW1lfWA7XG59XG5cbmV4cG9ydCBjbGFzcyBCbG9ja0FyZ3VtZW50c0ltcGw8QyBleHRlbmRzIEppdE9yQW90QmxvY2s+IGltcGxlbWVudHMgQmxvY2tBcmd1bWVudHM8Qz4ge1xuICBwcml2YXRlIHN0YWNrITogRXZhbHVhdGlvblN0YWNrO1xuICBwcml2YXRlIGludGVybmFsVmFsdWVzOiBPcHRpb248bnVtYmVyW10+ID0gbnVsbDtcbiAgcHJpdmF0ZSBfc3ltYm9sTmFtZXM6IE9wdGlvbjxzdHJpbmdbXT4gPSBudWxsO1xuXG4gIHB1YmxpYyBpbnRlcm5hbFRhZzogT3B0aW9uPFRhZz4gPSBudWxsO1xuICBwdWJsaWMgbmFtZXM6IHN0cmluZ1tdID0gRU1QVFlfQVJSQVk7XG5cbiAgcHVibGljIGxlbmd0aCA9IDA7XG4gIHB1YmxpYyBiYXNlID0gMDtcblxuICBlbXB0eShzdGFjazogRXZhbHVhdGlvblN0YWNrLCBiYXNlOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgdGhpcy5uYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgIHRoaXMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIHRoaXMuX3N5bWJvbE5hbWVzID0gbnVsbDtcblxuICAgIHRoaXMuaW50ZXJuYWxUYWcgPSBDT05TVEFOVF9UQUc7XG4gICAgdGhpcy5pbnRlcm5hbFZhbHVlcyA9IEVNUFRZX0FSUkFZO1xuICB9XG5cbiAgc2V0dXAoc3RhY2s6IEV2YWx1YXRpb25TdGFjaywgYmFzZTogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbmFtZXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMubmFtZXMgPSBuYW1lcztcbiAgICB0aGlzLmJhc2UgPSBiYXNlO1xuICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuICAgIHRoaXMuX3N5bWJvbE5hbWVzID0gbnVsbDtcblxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxUYWcgPSBDT05TVEFOVF9UQUc7XG4gICAgICB0aGlzLmludGVybmFsVmFsdWVzID0gRU1QVFlfQVJSQVk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxUYWcgPSBudWxsO1xuICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlcyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlcygpOiBCbG9ja1ZhbHVlW10ge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmludGVybmFsVmFsdWVzO1xuXG4gICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgIGxldCB7IGJhc2UsIGxlbmd0aCwgc3RhY2sgfSA9IHRoaXM7XG4gICAgICB2YWx1ZXMgPSB0aGlzLmludGVybmFsVmFsdWVzID0gc3RhY2suc2xpY2VBcnJheTxudW1iZXI+KGJhc2UsIGJhc2UgKyBsZW5ndGggKiAzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVzO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWVzIS5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBPcHRpb248U2NvcGVCbG9jazxDPj4ge1xuICAgIGxldCBpZHggPSB0aGlzLm5hbWVzIS5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB7IGJhc2UsIHN0YWNrIH0gPSB0aGlzO1xuXG4gICAgbGV0IHRhYmxlID0gY2hlY2soc3RhY2suZ2V0KGlkeCAqIDMsIGJhc2UpLCBDaGVja09wdGlvbihDaGVja0Jsb2NrU3ltYm9sVGFibGUpKTtcbiAgICBsZXQgc2NvcGUgPSBjaGVjayhzdGFjay5nZXQoaWR4ICogMyArIDEsIGJhc2UpLCBDaGVja09wdGlvbihDaGVja1Njb3BlKSk7XG4gICAgbGV0IGhhbmRsZSA9IGNoZWNrKFxuICAgICAgc3RhY2suZ2V0KGlkeCAqIDMgKyAyLCBiYXNlKSxcbiAgICAgIENoZWNrT3B0aW9uKENoZWNrT3IoQ2hlY2tIYW5kbGUsIENoZWNrQ29tcGlsYWJsZUJsb2NrKSlcbiAgICApO1xuXG4gICAgcmV0dXJuIGhhbmRsZSA9PT0gbnVsbCA/IG51bGwgOiAoW2hhbmRsZSwgc2NvcGUhLCB0YWJsZSFdIGFzIFNjb3BlQmxvY2s8Qz4pO1xuICB9XG5cbiAgY2FwdHVyZSgpOiBDYXB0dXJlZEJsb2NrQXJndW1lbnRzIHtcbiAgICByZXR1cm4gbmV3IENhcHR1cmVkQmxvY2tBcmd1bWVudHNJbXBsKHRoaXMubmFtZXMsIHRoaXMudmFsdWVzKTtcbiAgfVxuXG4gIGdldCBzeW1ib2xOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgbGV0IHN5bWJvbE5hbWVzID0gdGhpcy5fc3ltYm9sTmFtZXM7XG5cbiAgICBpZiAoc3ltYm9sTmFtZXMgPT09IG51bGwpIHtcbiAgICAgIHN5bWJvbE5hbWVzID0gdGhpcy5fc3ltYm9sTmFtZXMgPSB0aGlzLm5hbWVzLm1hcCh0b1N5bWJvbE5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBzeW1ib2xOYW1lcztcbiAgfVxufVxuXG5jbGFzcyBDYXB0dXJlZEJsb2NrQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIENhcHR1cmVkQmxvY2tBcmd1bWVudHMge1xuICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG5hbWVzOiBzdHJpbmdbXSwgcHVibGljIHZhbHVlczogQmxvY2tWYWx1ZVtdKSB7XG4gICAgdGhpcy5sZW5ndGggPSBuYW1lcy5sZW5ndGg7XG4gIH1cblxuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogT3B0aW9uPFNjb3BlQmxvY2s+IHtcbiAgICBsZXQgaWR4ID0gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGlkeCA9PT0gLTEpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMudmFsdWVzW2lkeCAqIDMgKyAyXSBhcyBudW1iZXIsXG4gICAgICB0aGlzLnZhbHVlc1tpZHggKiAzICsgMV0gYXMgU2NvcGU8Sml0T3JBb3RCbG9jaz4sXG4gICAgICB0aGlzLnZhbHVlc1tpZHggKiAzXSBhcyBCbG9ja1N5bWJvbFRhYmxlLFxuICAgIF07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhcHR1cmVkQXJndW1lbnRzSW1wbCBpbXBsZW1lbnRzIENhcHR1cmVkQXJndW1lbnRzIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhZzogVGFnLFxuICAgIHB1YmxpYyBwb3NpdGlvbmFsOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMsXG4gICAgcHVibGljIG5hbWVkOiBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLFxuICAgIHB1YmxpYyBsZW5ndGg6IG51bWJlclxuICApIHt9XG5cbiAgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWVkOiB0aGlzLm5hbWVkLnZhbHVlKCksXG4gICAgICBwb3NpdGlvbmFsOiB0aGlzLnBvc2l0aW9uYWwudmFsdWUoKSxcbiAgICB9O1xuICB9XG59XG5cbmNvbnN0IEVNUFRZX05BTUVEID0gbmV3IENhcHR1cmVkTmFtZWRBcmd1bWVudHNJbXBsKENPTlNUQU5UX1RBRywgRU1QVFlfQVJSQVksIEVNUFRZX0FSUkFZKTtcbmNvbnN0IEVNUFRZX1BPU0lUSU9OQUwgPSBuZXcgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzSW1wbChDT05TVEFOVF9UQUcsIEVNUFRZX0FSUkFZKTtcbmV4cG9ydCBjb25zdCBFTVBUWV9BUkdTID0gbmV3IENhcHR1cmVkQXJndW1lbnRzSW1wbChDT05TVEFOVF9UQUcsIEVNUFRZX1BPU0lUSU9OQUwsIEVNUFRZX05BTUVELCAwKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=
import { Checker } from '@glimmer/debug';
import { CapturedArguments, CompilableBlock, ComponentDefinition, ComponentManager, ElementOperations, Invocation, JitOrAotBlock, Scope, Helper, Option } from '@glimmer/interfaces';
import { CapturedArguments, CompilableBlock, ComponentDefinition, ComponentManager, ElementOperations, Invocation, JitOrAotBlock, Scope, Helper, Option, JitScopeBlock } from '@glimmer/interfaces';
import { VersionedPathReference, Reference } from '@glimmer/reference';

@@ -14,2 +14,8 @@ import { Tag } from '@glimmer/validator';

export declare const CheckHelper: Checker<Helper>;
export declare class UndefinedReferenceChecker implements Checker<Reference> {
type: Reference;
validate(value: unknown): value is Reference;
expected(): string;
}
export declare const CheckUndefinedReference: UndefinedReferenceChecker;
export declare const CheckCapturedArguments: Checker<CapturedArguments>;

@@ -25,2 +31,3 @@ export declare const CheckCurryComponent: Checker<CurryComponentReference>;

export declare const CheckCompilableBlock: Checker<CompilableBlock>;
export declare const CheckScopeBlock: Checker<JitScopeBlock>;
//# sourceMappingURL=-debug-strip.d.ts.map

@@ -80,2 +80,3 @@ import { EvaluationStack } from './stack';

private internalValues;
private _symbolNames;
internalTag: Option<Tag>;

@@ -91,2 +92,3 @@ names: string[];

capture(): CapturedBlockArguments;
get symbolNames(): string[];
}

@@ -93,0 +95,0 @@ export declare class CapturedArgumentsImpl implements CapturedArguments {

{
"name": "@glimmer/runtime",
"version": "0.50.1",
"version": "0.50.2",
"description": "Minimal runtime needed to render Glimmer templates",

@@ -9,16 +9,16 @@ "repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/runtime",

"@glimmer/env": "0.1.7",
"@glimmer/low-level": "^0.50.1",
"@glimmer/util": "^0.50.1",
"@glimmer/reference": "^0.50.1",
"@glimmer/validator": "^0.50.1",
"@glimmer/wire-format": "^0.50.1",
"@glimmer/interfaces": "^0.50.1",
"@glimmer/program": "^0.50.1",
"@glimmer/vm": "^0.50.1",
"@glimmer/low-level": "^0.50.2",
"@glimmer/util": "^0.50.2",
"@glimmer/reference": "^0.50.2",
"@glimmer/validator": "^0.50.2",
"@glimmer/wire-format": "^0.50.2",
"@glimmer/interfaces": "^0.50.2",
"@glimmer/program": "^0.50.2",
"@glimmer/vm": "^0.50.2",
"@simple-dom/interface": "^1.4.0"
},
"devDependencies": {
"@glimmer/local-debug-flags": "^0.50.1",
"@glimmer/opcode-compiler": "^0.50.1",
"@glimmer/debug": "^0.50.1",
"@glimmer/local-debug-flags": "^0.50.2",
"@glimmer/opcode-compiler": "^0.50.2",
"@glimmer/debug": "^0.50.2",
"@types/qunit": "^2.9.0"

@@ -25,0 +25,0 @@ },

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

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc