🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket

ng2-input-autocomplete

Package Overview
Dependencies
Maintainers
1
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ng2-input-autocomplete - npm Package Compare versions

Comparing version

to
1.1.2

8

bundles/ng2-input-autocomplete.umd.js

@@ -367,2 +367,7 @@ (function (global, factory) {

var input = this.getInputElement();
if (this.control) {
this.control.valueChanges.subscribe(function () {
_this.reset = true;
});
}
if (input.form) {

@@ -477,2 +482,3 @@ input.form.addEventListener('reset', function () {

ngModel: [{ type: core.Input }],
control: [{ type: core.Input }],
ngModelChange: [{ type: core.Output }],

@@ -533,2 +539,2 @@ inputChangedEvent: [{ type: core.Output }],

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLWlucHV0LWF1dG9jb21wbGV0ZS51bWQuanMubWFwIiwic291cmNlcyI6WyJuZzovL25nMi1pbnB1dC1hdXRvY29tcGxldGUvbGliL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCJuZzovL25nMi1pbnB1dC1hdXRvY29tcGxldGUvbGliL2F1dG9jb21wbGV0ZS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgTUlUIExJQ0VOU0UgQGxpdXk5N1xuKi9cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZSxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgSG9zdEJpbmRpbmdcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgc2VsZWN0b3I6ICduZzItaW5wdXQtYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGU6IGBcbiAgPGRpdiBbbmdDbGFzc109XCJjbGFzc0xpc3RcIj5cbiAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7e3BsYWNlaG9sZGVyfX1cIlxuICAgICAgKGJsdXIpPVwic2hvd0F1dG9Db21wbGV0ZSA9IGZhbHNlO1wiXG4gICAgICAoZm9jdXMpPVwic2hvd0F1dG9Db21wbGV0ZSA9IHRydWU7XCJcbiAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAoa2V5dXApPVwiZW50ZXJUZXh0KCRldmVudClcIj5cbiAgICA8dWwgKm5nSWY9XCJzaG93QXV0b0NvbXBsZXRlICYmIGNhbmRpZGF0ZXMgJiYgY2FuZGlkYXRlcy5sZW5ndGggPiAwXCI+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzOyBsZXQgaWR4ID0gaW5kZXhcIlxuICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogKGlkeCA9PT0gc2VsZWN0ZWRJbmRleCkgfVwiXG4gICAgICAgIChrZXl1cCk9XCJvbktleVVwRXZlbnQoJGV2ZW50LCBpZHgpXCJcbiAgICAgICAgKG1vdXNlb3Zlcik9XCJzZWxlY3RlZEluZGV4ID0gaWR4O1wiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25TZWxlY3QoaWR4KVwiPlxuICAgICAgICB7e2NhbmRpZGF0ZXNMYWJlbHNbaWR4XX19XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PmAsXG4gIHN0eWxlczogW1xuICAgIGAuYXV0b2NvbXBsZXRlIHVsIHtcbiAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgbGVmdDogMDtcbiAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICM4ODg7XG4gICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzg4ODtcbiAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzg4ODtcbiAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgIHBhZGRpbmctbGVmdDogMHB4O1xuICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgIHotaW5kZXg6IDEwMDtcbiAgICAgfVxuICAgICAuYXV0b2NvbXBsZXRlIGxpIHtcbiAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgcGFkZGluZzogMC40ZW0gMCAwLjRlbSAwO1xuICAgICB9XG4gICAgIC5hdXRvY29tcGxldGUgbGkuYWN0aXZlIHtcbiAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGJmO1xuICAgICB9XG5cbiAgICAgLmF1dG9jb21wbGV0ZSAuaGlnaGxpZ2h0IHtcbiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTJlMmUyO1xuICAgICB9XG4gICAgIC5hdXRvY29tcGxldGUgbGkuYWN0aXZlIC5oaWdobGlnaHQge1xuICAgICAgIGJhY2tncm91bmQ6ICM2NjY7XG4gICAgICAgY29sb3I6ICNmZmY7XG4gICAgIH1gXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBjbGFzc0xpc3QgPSAnYXV0b2NvbXBsZXRlJztcbiAgQElucHV0KCkgaXRlbXM6IGFueVtdO1xuICBASW5wdXQoKSBjb25maWc6IGFueTtcbiAgQE91dHB1dCgpIHNlbGVjdEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2VkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudDtcbiAgdmFsdWU6IHN0cmluZztcbiAgY2FuZGlkYXRlczogYW55W107XG4gIGNhbmRpZGF0ZXNMYWJlbHM6IGFueVtdO1xuICBzZWxlY3RlZEluZGV4OiBudW1iZXI7XG4gIHNob3dBdXRvQ29tcGxldGU6IGJvb2xlYW47XG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIG1heExpbWl0ID0gMDtcbiAgcHJpdmF0ZSBzb3VyY2VGaWVsZDogYW55O1xuICBwcml2YXRlIHRoaXNFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy50aGlzRWxlbWVudCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xuICAgIHRoaXMuc2hvd0F1dG9Db21wbGV0ZSA9IGZhbHNlO1xuICAgIHRoaXMudmFsdWUgPSAnJztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5jbGFzcykge1xuICAgICAgdGhpcy5jbGFzc0xpc3QgKz0gJyAnICsgdGhpcy5jb25maWcuY2xhc3M7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5tYXggPiAwKSB7XG4gICAgICB0aGlzLm1heExpbWl0ID0gdGhpcy5jb25maWcubWF4O1xuICAgIH1cbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQgPSB0aGlzLnRoaXNFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnaW5wdXQnXG4gICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgaWYgKCF0aGlzLmlzTnVsbCh0aGlzLmNvbmZpZykpIHtcbiAgICAgIGlmICghdGhpcy5pc051bGwodGhpcy5jb25maWcucGxhY2Vob2xkZXIpKSB7XG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLmNvbmZpZy5wbGFjZWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5pc051bGwodGhpcy5jb25maWcuc291cmNlRmllbGQpKSB7XG4gICAgICAgIHRoaXMuc291cmNlRmllbGQgPSB0aGlzLmNvbmZpZy5zb3VyY2VGaWVsZDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5maWx0ZXJJdGVtcyh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLmlucHV0RWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5maWx0ZXJJdGVtcyh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGVudGVyVGV4dChldmVudDogYW55KSB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLmNhbmRpZGF0ZXMubGVuZ3RoO1xuICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgY2FzZSAyNzpcbiAgICAgICAgdGhpcy5zaG93QXV0b0NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzODpcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gKHRvdGFsICsgdGhpcy5zZWxlY3RlZEluZGV4IC0gMSkgJSB0b3RhbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQwOlxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAodG90YWwgKyB0aGlzLnNlbGVjdGVkSW5kZXggKyAxKSAlIHRvdGFsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTM6XG4gICAgICAgIGlmICh0aGlzLmNhbmRpZGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMub25TZWxlY3QodGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMudmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2VkRXZlbnQuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb25TZWxlY3QoaWR4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNob3dBdXRvQ29tcGxldGUgPSBmYWxzZTtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5jYW5kaWRhdGVzTGFiZWxzW2lkeF07XG4gICAgdGhpcy5zZWxlY3RFdmVudC5lbWl0KHRoaXMuY2FuZGlkYXRlc1tpZHhdKTtcbiAgfVxuXG4gIG9uS2V5VXBFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCwgaWR4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgIHRoaXMub25TZWxlY3QoaWR4KTtcbiAgICB9XG4gfVxuXG4gIGZpbHRlckl0ZW1zKHNlYXJjaDogc3RyaW5nKSB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLnNvdXJjZUZpZWxkO1xuICAgIGNvbnN0IGZpbHRlckl0ZW0gPSB0aGlzLmZpbHRlckl0ZW07XG4gICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgIHRoaXMuY2FuZGlkYXRlcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4gZmlsdGVySXRlbShpdGVtLCBmaWVsZCwgc2VhcmNoKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMubWF4TGltaXQgPiAwKSB7XG4gICAgICAgIHRoaXMuY2FuZGlkYXRlcyA9IHRoaXMuY2FuZGlkYXRlcy5zbGljZSgwLCB0aGlzLm1heExpbWl0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnVpbGRMYWJlbHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEZpZWxkVmFsdWUob2JqZWN0OiBhbnksIHBhdGg6IGFueSkge1xuICAgIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG4gICAgaWYgKHBhdGggaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgbGV0IHJlc3VsdDogYW55ID0gb2JqZWN0O1xuICAgICAgcGF0aC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlc3VsdCAhPT0gbnVsbCAmJlxuICAgICAgICAgIHJlc3VsdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgcmVzdWx0W2VsZW1lbnRdICE9PSBudWxsICYmXG4gICAgICAgICAgcmVzdWx0W2VsZW1lbnRdICE9PSB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0W2VsZW1lbnRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9ICcnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvYmplY3RbcGF0aF0gfHwgJyc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc051bGwob2JqZWN0OiBhbnkpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09PSBudWxsIHx8IG9iamVjdCA9PT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZExhYmVscygpIHtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuc291cmNlRmllbGQ7XG4gICAgY29uc3QgZ2V0RmllbGRWYWx1ZSA9IHRoaXMuZ2V0RmllbGRWYWx1ZTtcbiAgICB0aGlzLmNhbmRpZGF0ZXNMYWJlbHMgPSB0aGlzLmNhbmRpZGF0ZXMubWFwKChlOiBhbnkpID0+XG4gICAgICBnZXRGaWVsZFZhbHVlKGUsIGZpZWxkKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckl0ZW0oaXRlbTogYW55LCBwYXRoOiBhbnksIHNlYXJjaDogc3RyaW5nKSB7XG4gICAgaWYgKHNlYXJjaCA9PT0gbnVsbCB8fCBzZWFyY2ggPT09IHVuZGVmaW5lZCB8fCBzZWFyY2gubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdDogYW55O1xuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdCA9IGl0ZW07XG4gICAgfSBlbHNlIGlmIChwYXRoIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHJlc3VsdCA9IGl0ZW07XG4gICAgICBwYXRoLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVzdWx0ICE9PSBudWxsICYmXG4gICAgICAgICAgcmVzdWx0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICByZXN1bHRbZWxlbWVudF0gIT09IG51bGwgJiZcbiAgICAgICAgICByZXN1bHRbZWxlbWVudF0gIT09IHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHRbZWxlbWVudF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBpdGVtW3BhdGhdIHx8ICcnO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2gudG9Mb3dlckNhc2UoKSkgPj0gMDtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIHNlbGVjdG9yOiAnW2lucHV0LWF1dG9jb21wbGV0ZV0nXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBjb25maWc6IGFueTtcbiAgQElucHV0KCkgaXRlbXM6IGFueTtcbiAgQElucHV0KCkgbmdNb2RlbDogc3RyaW5nO1xuICBAT3V0cHV0KCkgbmdNb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2VsZWN0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxBdXRvY29tcGxldGVDb21wb25lbnQ+O1xuICBwcml2YXRlIHRoaXNFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBhdXRvY29tcGxldGVFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gIHByaXZhdGUgdGFiSW5kZXg6IG51bWJlcjtcbiAgcHJpdmF0ZSByZXNldDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICApIHtcbiAgICB0aGlzLnRoaXNFbGVtZW50ID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnRoaXNFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2Zvcm0nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3JlYXRlRGl2KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbnB1dENoYW5nZWRFdmVudC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGlkZUF1dG9jb21wbGV0ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7IFtwcm9wS2V5OiBzdHJpbmddOiBTaW1wbGVDaGFuZ2UgfSkge1xuICAgIGlmIChjaGFuZ2VzWydpdGVtcyddICYmIHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICAgIGNvbXBvbmVudC5pdGVtcyA9IGNoYW5nZXNbJ2l0ZW1zJ10uY3VycmVudFZhbHVlO1xuICAgICAgY29tcG9uZW50LmZpbHRlckl0ZW1zKGNvbXBvbmVudC52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dEVsZW1lbnQoKTtcbiAgICBpZiAoaW5wdXQuZm9ybSkge1xuICAgICAgaW5wdXQuZm9ybS5hZGRFdmVudExpc3RlbmVyKCdyZXNldCcsICgpID0+IHtcbiAgICAgICAgdGhpcy5yZXNldCA9IHRydWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBASG9zdExpc3RlbmVyKCdmb2N1cycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBzaG93QXV0b2NvbXBsZXRlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmhpZGVBdXRvY29tcGxldGUoKTtcbiAgICBpZiAoZXZlbnQgPT09IHRoaXMudGhpc0VsZW1lbnQpIHtcbiAgICAgIHRoaXMuY3JlYXRlQXV0b2NvbXBsZXRlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SW5wdXRFbGVtZW50KCkge1xuICAgIGxldCBpbnB1dCA9IHRoaXMudGhpc0VsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgIGlmICh0aGlzLnRoaXNFbGVtZW50LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50KSB7XG4gICAgICBpbnB1dCA9IHRoaXMudGhpc0VsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJ2lucHV0J1xuICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuXG4gIGhpZGVBdXRvY29tcGxldGUgPSAoZXZlbnQ/OiBhbnkpOiB2b2lkID0+IHtcbiAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldmVudCAmJiBldmVudC50YXJnZXQgJiYgdGhpcy50aGlzRWxlbWVudCAmJiBldmVudC50YXJnZXQgPT09IHRoaXMudGhpc0VsZW1lbnQucGFyZW50RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhZXZlbnQgfHxcbiAgICAgIChldmVudC50YXJnZXQgIT09IHRoaXMudGhpc0VsZW1lbnQgJiYgZXZlbnQudHlwZSA9PT0gJ2NsaWNrJylcbiAgICApIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnRbJ3RhYkluZGV4J10gPCAwKSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudFsndGFiSW5kZXgnXSA9IHRoaXMudGFiSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgb25JbnB1dENoYW5nZWQgPSAodmFsOiBzdHJpbmcpID0+IHtcbiAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9IHZhbDtcbiAgICBpZiAodmFsICE9PSB0aGlzLm5nTW9kZWwpIHtcbiAgICAgIHRoaXMubmdNb2RlbCA9IHZhbDtcbiAgICAgIHRoaXMubmdNb2RlbENoYW5nZS5lbWl0KHZhbCk7XG4gICAgfVxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIGNvbXBvbmVudC5maWx0ZXJJdGVtcyh2YWwpO1xuICAgIHRoaXMuaW5wdXRDaGFuZ2VkRXZlbnQuZW1pdCh2YWwpO1xuICB9XG5cbiAgb25TZWxlY3QgPSAoaXRlbTogYW55KSA9PiB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgY29uc3QgdmFsID0gY29tcG9uZW50LnZhbHVlO1xuICAgIGlmICh2YWwgIT09IHRoaXMubmdNb2RlbCkge1xuICAgICAgdGhpcy5uZ01vZGVsID0gdmFsO1xuICAgICAgdGhpcy5uZ01vZGVsQ2hhbmdlLmVtaXQodmFsKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RFdmVudC5lbWl0KGl0ZW0pO1xuICAgIGlmICh0aGlzLmlucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgPSAnJyArIHZhbDtcbiAgICB9XG4gICAgdGhpcy5oaWRlQXV0b2NvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURpdigpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgdGhpcy50aGlzRWxlbWVudC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShcbiAgICAgIGVsZW1lbnQsXG4gICAgICB0aGlzLnRoaXNFbGVtZW50Lm5leHRTaWJsaW5nXG4gICAgKTtcbiAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudGhpc0VsZW1lbnQpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oaWRlQXV0b2NvbXBsZXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQXV0b2NvbXBsZXRlKCkge1xuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLnJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFxuICAgICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSk7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgY29tcG9uZW50LmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgIGNvbXBvbmVudC5pdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgY29tcG9uZW50LnNlbGVjdEV2ZW50LnN1YnNjcmliZSh0aGlzLm9uU2VsZWN0KTtcbiAgICBjb21wb25lbnQuaW5wdXRDaGFuZ2VkRXZlbnQuc3Vic2NyaWJlKHRoaXMub25JbnB1dENoYW5nZWQpO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlRWxlbWVudCA9IHRoaXMuY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQgPSB0aGlzLmdldElucHV0RWxlbWVudCgpO1xuICAgIGlmICh0aGlzLnRoaXNFbGVtZW50LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50KSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50LFxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uZXh0U2libGluZ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNldCkge1xuICAgICAgdGhpcy5uZ01vZGVsID0gJyc7XG4gICAgICB0aGlzLnJlc2V0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgPSB0aGlzLm5nTW9kZWwgPyB0aGlzLm5nTW9kZWwgOiAnJztcbiAgICBjb21wb25lbnQudmFsdWUgPSB0aGlzLmlucHV0RWxlbWVudC52YWx1ZTtcbiAgICB0aGlzLnRhYkluZGV4ID0gdGhpcy5pbnB1dEVsZW1lbnRbJ3RhYkluZGV4J107XG4gICAgdGhpcy5pbnB1dEVsZW1lbnRbJ3RhYkluZGV4J10gPSAtMTAwO1xuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgY29uc3QgcmVjdCA9IHRoaXMudGhpc0VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBzdHlsZSA9IHRoaXMuYXV0b2NvbXBsZXRlRWxlbWVudC5zdHlsZTtcbiAgICAgIHN0eWxlLndpZHRoID0gcmVjdC53aWR0aCArICdweCc7XG4gICAgICBzdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICBzdHlsZS56SW5kZXggPSAnMSc7XG4gICAgICBzdHlsZS50b3AgPSAnMCc7XG4gICAgICBzdHlsZS5sZWZ0ID0gJzAnO1xuICAgICAgc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNvbXBvbmVudCwgQXV0b2NvbXBsZXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtBdXRvY29tcGxldGVDb21wb25lbnQsIEF1dG9jb21wbGV0ZURpcmVjdGl2ZV0sXG4gIGV4cG9ydHM6IFtBdXRvY29tcGxldGVDb21wb25lbnQsIEF1dG9jb21wbGV0ZURpcmVjdGl2ZV0sXG4gIGVudHJ5Q29tcG9uZW50czogW0F1dG9jb21wbGV0ZUNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBdXRvY29tcGxldGVNb2R1bGVcbiAgICB9O1xuICB9XG59XG5cbiJdLCJuYW1lcyI6WyJFdmVudEVtaXR0ZXIiLCJDb21wb25lbnQiLCJFbGVtZW50UmVmIiwiSW5wdXQiLCJPdXRwdXQiLCJEaXJlY3RpdmUiLCJDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIiLCJWaWV3Q29udGFpbmVyUmVmIiwiSG9zdExpc3RlbmVyIiwiTmdNb2R1bGUiLCJDb21tb25Nb2R1bGUiLCJGb3Jtc01vZHVsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUdBO1FBMkZFLCtCQUFZLFVBQXNCOzZCQWhCdEIsY0FBYzsrQkFHaUIsSUFBSUEsaUJBQVksRUFBTztxQ0FDakIsSUFBSUEsaUJBQVksRUFBTzs0QkFRN0QsQ0FBQztZQUtWLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztZQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1lBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ2pCOzs7O1FBRUQsd0NBQVE7OztZQUFSO2dCQUNFLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtvQkFDcEMsSUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7aUJBQzNDO2dCQUNELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7b0JBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7aUJBQ2pDO2dCQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsWUFBWSxxQkFBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FDaEQsT0FBTyxDQUNZLENBQUEsQ0FBQztnQkFFdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUM3QixJQUFJLENB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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLWlucHV0LWF1dG9jb21wbGV0ZS51bWQuanMubWFwIiwic291cmNlcyI6WyJuZzovL25nMi1pbnB1dC1hdXRvY29tcGxldGUvbGliL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCJuZzovL25nMi1pbnB1dC1hdXRvY29tcGxldGUvbGliL2F1dG9jb21wbGV0ZS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgTUlUIExJQ0VOU0UgQGxpdXk5N1xuKi9cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZSxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgSG9zdEJpbmRpbmdcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgc2VsZWN0b3I6ICduZzItaW5wdXQtYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGU6IGBcbiAgPGRpdiBbbmdDbGFzc109XCJjbGFzc0xpc3RcIj5cbiAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7e3BsYWNlaG9sZGVyfX1cIlxuICAgICAgKGJsdXIpPVwic2hvd0F1dG9Db21wbGV0ZSA9IGZhbHNlO1wiXG4gICAgICAoZm9jdXMpPVwic2hvd0F1dG9Db21wbGV0ZSA9IHRydWU7XCJcbiAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAoa2V5dXApPVwiZW50ZXJUZXh0KCRldmVudClcIj5cbiAgICA8dWwgKm5nSWY9XCJzaG93QXV0b0NvbXBsZXRlICYmIGNhbmRpZGF0ZXMgJiYgY2FuZGlkYXRlcy5sZW5ndGggPiAwXCI+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzOyBsZXQgaWR4ID0gaW5kZXhcIlxuICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogKGlkeCA9PT0gc2VsZWN0ZWRJbmRleCkgfVwiXG4gICAgICAgIChrZXl1cCk9XCJvbktleVVwRXZlbnQoJGV2ZW50LCBpZHgpXCJcbiAgICAgICAgKG1vdXNlb3Zlcik9XCJzZWxlY3RlZEluZGV4ID0gaWR4O1wiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25TZWxlY3QoaWR4KVwiPlxuICAgICAgICB7e2NhbmRpZGF0ZXNMYWJlbHNbaWR4XX19XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PmAsXG4gIHN0eWxlczogW1xuICAgIGAuYXV0b2NvbXBsZXRlIHVsIHtcbiAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgbGVmdDogMDtcbiAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICM4ODg7XG4gICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzg4ODtcbiAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzg4ODtcbiAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgIHBhZGRpbmctbGVmdDogMHB4O1xuICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgIHotaW5kZXg6IDEwMDtcbiAgICAgfVxuICAgICAuYXV0b2NvbXBsZXRlIGxpIHtcbiAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgcGFkZGluZzogMC40ZW0gMCAwLjRlbSAwO1xuICAgICB9XG4gICAgIC5hdXRvY29tcGxldGUgbGkuYWN0aXZlIHtcbiAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGJmO1xuICAgICB9XG5cbiAgICAgLmF1dG9jb21wbGV0ZSAuaGlnaGxpZ2h0IHtcbiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTJlMmUyO1xuICAgICB9XG4gICAgIC5hdXRvY29tcGxldGUgbGkuYWN0aXZlIC5oaWdobGlnaHQge1xuICAgICAgIGJhY2tncm91bmQ6ICM2NjY7XG4gICAgICAgY29sb3I6ICNmZmY7XG4gICAgIH1gXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBjbGFzc0xpc3QgPSAnYXV0b2NvbXBsZXRlJztcbiAgQElucHV0KCkgaXRlbXM6IGFueVtdO1xuICBASW5wdXQoKSBjb25maWc6IGFueTtcbiAgQE91dHB1dCgpIHNlbGVjdEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2VkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudDtcbiAgdmFsdWU6IHN0cmluZztcbiAgY2FuZGlkYXRlczogYW55W107XG4gIGNhbmRpZGF0ZXNMYWJlbHM6IGFueVtdO1xuICBzZWxlY3RlZEluZGV4OiBudW1iZXI7XG4gIHNob3dBdXRvQ29tcGxldGU6IGJvb2xlYW47XG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIG1heExpbWl0ID0gMDtcbiAgcHJpdmF0ZSBzb3VyY2VGaWVsZDogYW55O1xuICBwcml2YXRlIHRoaXNFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy50aGlzRWxlbWVudCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xuICAgIHRoaXMuc2hvd0F1dG9Db21wbGV0ZSA9IGZhbHNlO1xuICAgIHRoaXMudmFsdWUgPSAnJztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5jbGFzcykge1xuICAgICAgdGhpcy5jbGFzc0xpc3QgKz0gJyAnICsgdGhpcy5jb25maWcuY2xhc3M7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5tYXggPiAwKSB7XG4gICAgICB0aGlzLm1heExpbWl0ID0gdGhpcy5jb25maWcubWF4O1xuICAgIH1cbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQgPSB0aGlzLnRoaXNFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnaW5wdXQnXG4gICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgaWYgKCF0aGlzLmlzTnVsbCh0aGlzLmNvbmZpZykpIHtcbiAgICAgIGlmICghdGhpcy5pc051bGwodGhpcy5jb25maWcucGxhY2Vob2xkZXIpKSB7XG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLmNvbmZpZy5wbGFjZWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5pc051bGwodGhpcy5jb25maWcuc291cmNlRmllbGQpKSB7XG4gICAgICAgIHRoaXMuc291cmNlRmllbGQgPSB0aGlzLmNvbmZpZy5zb3VyY2VGaWVsZDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5maWx0ZXJJdGVtcyh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLmlucHV0RWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5maWx0ZXJJdGVtcyh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGVudGVyVGV4dChldmVudDogYW55KSB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLmNhbmRpZGF0ZXMubGVuZ3RoO1xuICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgY2FzZSAyNzpcbiAgICAgICAgdGhpcy5zaG93QXV0b0NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzODpcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gKHRvdGFsICsgdGhpcy5zZWxlY3RlZEluZGV4IC0gMSkgJSB0b3RhbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQwOlxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAodG90YWwgKyB0aGlzLnNlbGVjdGVkSW5kZXggKyAxKSAlIHRvdGFsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTM6XG4gICAgICAgIGlmICh0aGlzLmNhbmRpZGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMub25TZWxlY3QodGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMudmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2VkRXZlbnQuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb25TZWxlY3QoaWR4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNob3dBdXRvQ29tcGxldGUgPSBmYWxzZTtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5jYW5kaWRhdGVzTGFiZWxzW2lkeF07XG4gICAgdGhpcy5zZWxlY3RFdmVudC5lbWl0KHRoaXMuY2FuZGlkYXRlc1tpZHhdKTtcbiAgfVxuXG4gIG9uS2V5VXBFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCwgaWR4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgIHRoaXMub25TZWxlY3QoaWR4KTtcbiAgICB9XG4gfVxuXG4gIGZpbHRlckl0ZW1zKHNlYXJjaDogc3RyaW5nKSB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLnNvdXJjZUZpZWxkO1xuICAgIGNvbnN0IGZpbHRlckl0ZW0gPSB0aGlzLmZpbHRlckl0ZW07XG4gICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgIHRoaXMuY2FuZGlkYXRlcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4gZmlsdGVySXRlbShpdGVtLCBmaWVsZCwgc2VhcmNoKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMubWF4TGltaXQgPiAwKSB7XG4gICAgICAgIHRoaXMuY2FuZGlkYXRlcyA9IHRoaXMuY2FuZGlkYXRlcy5zbGljZSgwLCB0aGlzLm1heExpbWl0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnVpbGRMYWJlbHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEZpZWxkVmFsdWUob2JqZWN0OiBhbnksIHBhdGg6IGFueSkge1xuICAgIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG4gICAgaWYgKHBhdGggaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgbGV0IHJlc3VsdDogYW55ID0gb2JqZWN0O1xuICAgICAgcGF0aC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlc3VsdCAhPT0gbnVsbCAmJlxuICAgICAgICAgIHJlc3VsdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgcmVzdWx0W2VsZW1lbnRdICE9PSBudWxsICYmXG4gICAgICAgICAgcmVzdWx0W2VsZW1lbnRdICE9PSB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0W2VsZW1lbnRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9ICcnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvYmplY3RbcGF0aF0gfHwgJyc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc051bGwob2JqZWN0OiBhbnkpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09PSBudWxsIHx8IG9iamVjdCA9PT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZExhYmVscygpIHtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuc291cmNlRmllbGQ7XG4gICAgY29uc3QgZ2V0RmllbGRWYWx1ZSA9IHRoaXMuZ2V0RmllbGRWYWx1ZTtcbiAgICB0aGlzLmNhbmRpZGF0ZXNMYWJlbHMgPSB0aGlzLmNhbmRpZGF0ZXMubWFwKChlOiBhbnkpID0+XG4gICAgICBnZXRGaWVsZFZhbHVlKGUsIGZpZWxkKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckl0ZW0oaXRlbTogYW55LCBwYXRoOiBhbnksIHNlYXJjaDogc3RyaW5nKSB7XG4gICAgaWYgKHNlYXJjaCA9PT0gbnVsbCB8fCBzZWFyY2ggPT09IHVuZGVmaW5lZCB8fCBzZWFyY2gubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdDogYW55O1xuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdCA9IGl0ZW07XG4gICAgfSBlbHNlIGlmIChwYXRoIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHJlc3VsdCA9IGl0ZW07XG4gICAgICBwYXRoLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVzdWx0ICE9PSBudWxsICYmXG4gICAgICAgICAgcmVzdWx0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICByZXN1bHRbZWxlbWVudF0gIT09IG51bGwgJiZcbiAgICAgICAgICByZXN1bHRbZWxlbWVudF0gIT09IHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHRbZWxlbWVudF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBpdGVtW3BhdGhdIHx8ICcnO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2gudG9Mb3dlckNhc2UoKSkgPj0gMDtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIHNlbGVjdG9yOiAnW2lucHV0LWF1dG9jb21wbGV0ZV0nXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBjb25maWc6IGFueTtcbiAgQElucHV0KCkgaXRlbXM6IGFueTtcbiAgQElucHV0KCkgbmdNb2RlbDogc3RyaW5nO1xuICBASW5wdXQoKSBjb250cm9sOiBGb3JtQ29udHJvbDtcbiAgQE91dHB1dCgpIG5nTW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZWRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNlbGVjdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8QXV0b2NvbXBsZXRlQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSB0aGlzRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgYXV0b2NvbXBsZXRlRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xuICBwcml2YXRlIHRhYkluZGV4OiBudW1iZXI7XG4gIHByaXZhdGUgcmVzZXQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgKSB7XG4gICAgdGhpcy50aGlzRWxlbWVudCA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy50aGlzRWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdmb3JtJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZURpdigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWxlY3RFdmVudC51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuaW5wdXRDaGFuZ2VkRXZlbnQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhpZGVBdXRvY29tcGxldGUpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogeyBbcHJvcEtleTogc3RyaW5nXTogU2ltcGxlQ2hhbmdlIH0pIHtcbiAgICBpZiAoY2hhbmdlc1snaXRlbXMnXSAmJiB0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgICBjb21wb25lbnQuaXRlbXMgPSBjaGFuZ2VzWydpdGVtcyddLmN1cnJlbnRWYWx1ZTtcbiAgICAgIGNvbXBvbmVudC5maWx0ZXJJdGVtcyhjb21wb25lbnQudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuZ2V0SW5wdXRFbGVtZW50KCk7XG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0ID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoaW5wdXQuZm9ybSkge1xuICAgICAgaW5wdXQuZm9ybS5hZGRFdmVudExpc3RlbmVyKCdyZXNldCcsICgpID0+IHtcbiAgICAgICAgdGhpcy5yZXNldCA9IHRydWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBASG9zdExpc3RlbmVyKCdmb2N1cycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBzaG93QXV0b2NvbXBsZXRlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmhpZGVBdXRvY29tcGxldGUoKTtcbiAgICBpZiAoZXZlbnQgPT09IHRoaXMudGhpc0VsZW1lbnQpIHtcbiAgICAgIHRoaXMuY3JlYXRlQXV0b2NvbXBsZXRlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SW5wdXRFbGVtZW50KCkge1xuICAgIGxldCBpbnB1dCA9IHRoaXMudGhpc0VsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgIGlmICh0aGlzLnRoaXNFbGVtZW50LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50KSB7XG4gICAgICBpbnB1dCA9IHRoaXMudGhpc0VsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJ2lucHV0J1xuICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuXG4gIGhpZGVBdXRvY29tcGxldGUgPSAoZXZlbnQ/OiBhbnkpOiB2b2lkID0+IHtcbiAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldmVudCAmJiBldmVudC50YXJnZXQgJiYgdGhpcy50aGlzRWxlbWVudCAmJiBldmVudC50YXJnZXQgPT09IHRoaXMudGhpc0VsZW1lbnQucGFyZW50RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhZXZlbnQgfHxcbiAgICAgIChldmVudC50YXJnZXQgIT09IHRoaXMudGhpc0VsZW1lbnQgJiYgZXZlbnQudHlwZSA9PT0gJ2NsaWNrJylcbiAgICApIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnRbJ3RhYkluZGV4J10gPCAwKSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudFsndGFiSW5kZXgnXSA9IHRoaXMudGFiSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgb25JbnB1dENoYW5nZWQgPSAodmFsOiBzdHJpbmcpID0+IHtcbiAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9IHZhbDtcbiAgICBpZiAodmFsICE9PSB0aGlzLm5nTW9kZWwpIHtcbiAgICAgIHRoaXMubmdNb2RlbCA9IHZhbDtcbiAgICAgIHRoaXMubmdNb2RlbENoYW5nZS5lbWl0KHZhbCk7XG4gICAgfVxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIGNvbXBvbmVudC5maWx0ZXJJdGVtcyh2YWwpO1xuICAgIHRoaXMuaW5wdXRDaGFuZ2VkRXZlbnQuZW1pdCh2YWwpO1xuICB9XG5cbiAgb25TZWxlY3QgPSAoaXRlbTogYW55KSA9PiB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgY29uc3QgdmFsID0gY29tcG9uZW50LnZhbHVlO1xuICAgIGlmICh2YWwgIT09IHRoaXMubmdNb2RlbCkge1xuICAgICAgdGhpcy5uZ01vZGVsID0gdmFsO1xuICAgICAgdGhpcy5uZ01vZGVsQ2hhbmdlLmVtaXQodmFsKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RFdmVudC5lbWl0KGl0ZW0pO1xuICAgIGlmICh0aGlzLmlucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgPSAnJyArIHZhbDtcbiAgICB9XG4gICAgdGhpcy5oaWRlQXV0b2NvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURpdigpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgdGhpcy50aGlzRWxlbWVudC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShcbiAgICAgIGVsZW1lbnQsXG4gICAgICB0aGlzLnRoaXNFbGVtZW50Lm5leHRTaWJsaW5nXG4gICAgKTtcbiAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudGhpc0VsZW1lbnQpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oaWRlQXV0b2NvbXBsZXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQXV0b2NvbXBsZXRlKCkge1xuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLnJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFxuICAgICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSk7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgY29tcG9uZW50LmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgIGNvbXBvbmVudC5pdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgY29tcG9uZW50LnNlbGVjdEV2ZW50LnN1YnNjcmliZSh0aGlzLm9uU2VsZWN0KTtcbiAgICBjb21wb25lbnQuaW5wdXRDaGFuZ2VkRXZlbnQuc3Vic2NyaWJlKHRoaXMub25JbnB1dENoYW5nZWQpO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlRWxlbWVudCA9IHRoaXMuY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQgPSB0aGlzLmdldElucHV0RWxlbWVudCgpO1xuICAgIGlmICh0aGlzLnRoaXNFbGVtZW50LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50KSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50LFxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uZXh0U2libGluZ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNldCkge1xuICAgICAgdGhpcy5uZ01vZGVsID0gJyc7XG4gICAgICB0aGlzLnJlc2V0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgPSB0aGlzLm5nTW9kZWwgPyB0aGlzLm5nTW9kZWwgOiAnJztcbiAgICBjb21wb25lbnQudmFsdWUgPSB0aGlzLmlucHV0RWxlbWVudC52YWx1ZTtcbiAgICB0aGlzLnRhYkluZGV4ID0gdGhpcy5pbnB1dEVsZW1lbnRbJ3RhYkluZGV4J107XG4gICAgdGhpcy5pbnB1dEVsZW1lbnRbJ3RhYkluZGV4J10gPSAtMTAwO1xuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgY29uc3QgcmVjdCA9IHRoaXMudGhpc0VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBzdHlsZSA9IHRoaXMuYXV0b2NvbXBsZXRlRWxlbWVudC5zdHlsZTtcbiAgICAgIHN0eWxlLndpZHRoID0gcmVjdC53aWR0aCArICdweCc7XG4gICAgICBzdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICBzdHlsZS56SW5kZXggPSAnMSc7XG4gICAgICBzdHlsZS50b3AgPSAnMCc7XG4gICAgICBzdHlsZS5sZWZ0ID0gJzAnO1xuICAgICAgc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNvbXBvbmVudCwgQXV0b2NvbXBsZXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtBdXRvY29tcGxldGVDb21wb25lbnQsIEF1dG9jb21wbGV0ZURpcmVjdGl2ZV0sXG4gIGV4cG9ydHM6IFtBdXRvY29tcGxldGVDb21wb25lbnQsIEF1dG9jb21wbGV0ZURpcmVjdGl2ZV0sXG4gIGVudHJ5Q29tcG9uZW50czogW0F1dG9jb21wbGV0ZUNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBdXRvY29tcGxldGVNb2R1bGVcbiAgICB9O1xuICB9XG59XG5cbiJdLCJuYW1lcyI6WyJFdmVudEVtaXR0ZXIiLCJDb21wb25lbnQiLCJFbGVtZW50UmVmIiwiSW5wdXQiLCJPdXRwdXQiLCJEaXJlY3RpdmUiLCJDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIiLCJWaWV3Q29udGFpbmVyUmVmIiwiSG9zdExpc3RlbmVyIiwiTmdNb2R1bGUiLCJDb21tb25Nb2R1bGUiLCJGb3Jtc01vZHVsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUdBO1FBNEZFLCtCQUFZLFVBQXNCOzZCQWhCdEIsY0FBYzsrQkFHaUIsSUFBSUEsaUJBQVksRUFBTztxQ0FDakIsSUFBSUEsaUJBQVksRUFBTzs0QkFRN0QsQ0FBQztZQUtWLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztZQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1lBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ2pCOzs7O1FBRUQsd0NBQVE7OztZQUFSO2dCQUNFLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtvQkFDcEMsSUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7aUJBQzNDO2dCQUNELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7b0JBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7aUJBQ2pD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

2

bundles/ng2-input-autocomplete.umd.min.js

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common"),require("@angular/forms")):"function"==typeof define&&define.amd?define("ng2-input-autocomplete",["exports","@angular/core","@angular/common","@angular/forms"],t):t(e["ng2-input-autocomplete"]={},e.ng.core,e.ng.common,e.ng.forms)}(this,function(e,i,t,n){"use strict";var o=function(){function e(e){this.classList="autocomplete",this.selectEvent=new i.EventEmitter,this.inputChangedEvent=new i.EventEmitter,this.maxLimit=0,this.thisElement=e.nativeElement,this.selectedIndex=0,this.showAutoComplete=!1,this.value=""}return e.prototype.ngOnInit=function(){this.config&&this.config["class"]&&(this.classList+=" "+this.config["class"]),this.config&&0<this.config.max&&(this.maxLimit=this.config.max),this.placeholder="autocomplete",this.inputElement=this.thisElement.querySelector("input"),this.isNull(this.config)||(this.isNull(this.config.placeholder)||(this.placeholder=this.config.placeholder),this.isNull(this.config.sourceField)||(this.sourceField=this.config.sourceField)),this.filterItems(this.value),this.inputElement.focus()},e.prototype.ngOnChanges=function(){this.filterItems(this.value)},e.prototype.enterText=function(e){var t=this.candidates.length;switch(e.keyCode){case 27:this.showAutoComplete=!1;break;case 38:this.selectedIndex=(t+this.selectedIndex-1)%t;break;case 40:this.selectedIndex=(t+this.selectedIndex+1)%t;break;case 13:0<this.candidates.length&&this.onSelect(this.selectedIndex),e.preventDefault();break;default:this.value=e.target.value,this.inputChangedEvent.emit(this.value)}},e.prototype.onSelect=function(e){this.showAutoComplete=!1,this.value=this.candidatesLabels[e],this.selectEvent.emit(this.candidates[e])},e.prototype.onKeyUpEvent=function(e,t){13===e.keyCode&&this.onSelect(t)},e.prototype.filterItems=function(t){var n=this.sourceField,i=this.filterItem;this.items&&(this.candidates=this.items.filter(function(e){return i(e,n,t)}),0<this.maxLimit&&(this.candidates=this.candidates.slice(0,this.maxLimit)),this.buildLabels())},e.prototype.getFieldValue=function(e,t){if("string"==typeof e)return e;if(t instanceof Array){var n=e;return t.forEach(function(e){n=null!==n&&n!==undefined&&null!==n[e]&&n[e]!==undefined?n[e]:""}),n}return e[t]||""},e.prototype.isNull=function(e){return null===e||e===undefined},e.prototype.buildLabels=function(){var t=this.sourceField,n=this.getFieldValue;this.candidatesLabels=this.candidates.map(function(e){return n(e,t)})},e.prototype.filterItem=function(e,t,n){return null===n||n===undefined||0===n.length||("string"==typeof e?i=e:t instanceof Array?(i=e,t.forEach(function(e){i=null!==i&&i!==undefined&&null!==i[e]&&i[e]!==undefined?i[e]:""})):i=e[t]||"",0<=i.toLowerCase().indexOf(n.toLowerCase()));var i},e.decorators=[{type:i.Component,args:[{selector:"ng2-input-autocomplete",template:'\n <div [ngClass]="classList">\n <input type="text"\n placeholder="{{placeholder}}"\n (blur)="showAutoComplete = false;"\n (focus)="showAutoComplete = true;"\n [value]="value"\n (keyup)="enterText($event)">\n <ul *ngIf="showAutoComplete && candidates && candidates.length > 0">\n <li *ngFor="let candidate of candidates; let idx = index"\n [ngClass]="{ active: (idx === selectedIndex) }"\n (keyup)="onKeyUpEvent($event, idx)"\n (mouseover)="selectedIndex = idx;"\n (mousedown)="onSelect(idx)">\n {{candidatesLabels[idx]}}\n </li>\n </ul>\n </div>',styles:[".autocomplete ul {\n position: absolute;\n left: 0;\n width: 100%;\n border-left: 1px solid #888;\n border-right: 1px solid #888;\n border-bottom: 1px solid #888;\n list-style: none;\n padding-left: 0px;\n margin-top: 2px;\n background-color: #fff;\n z-index: 100;\n }\n .autocomplete li {\n text-align: left;\n list-style: none;\n width: 100%;\n padding: 0.4em 0 0.4em 0;\n }\n .autocomplete li.active {\n width: 100%;\n background-color: #4bf;\n }\n\n .autocomplete .highlight {\n background-color: #e2e2e2;\n }\n .autocomplete li.active .highlight {\n background: #666;\n color: #fff;\n }"]}]}],e.ctorParameters=function(){return[{type:i.ElementRef}]},e.propDecorators={items:[{type:i.Input}],config:[{type:i.Input}],selectEvent:[{type:i.Output}],inputChangedEvent:[{type:i.Output}]},e}(),s=function(){function e(e,t){var n=this;this.resolver=e,this.viewContainerRef=t,this.ngModelChange=new i.EventEmitter,this.inputChangedEvent=new i.EventEmitter,this.selectEvent=new i.EventEmitter,this.reset=!1,this.hideAutocomplete=function(e){n.componentRef&&(e&&e.target&&n.thisElement&&e.target===n.thisElement.parentElement||((!e||e.target!==n.thisElement&&"click"===e.type)&&(n.componentRef.destroy(),n.componentRef=undefined),n.inputElement.tabIndex<0&&(n.inputElement.tabIndex=n.tabIndex)))},this.onInputChanged=function(e){(n.inputElement.value=e)!==n.ngModel&&(n.ngModel=e,n.ngModelChange.emit(e)),n.componentRef.instance.filterItems(e),n.inputChangedEvent.emit(e)},this.onSelect=function(e){var t=n.componentRef.instance.value;t!==n.ngModel&&(n.ngModel=t,n.ngModelChange.emit(t)),n.selectEvent.emit(e),n.inputElement&&(n.inputElement.value=""+t),n.hideAutocomplete()},this.thisElement=this.viewContainerRef.element.nativeElement}return e.prototype.ngOnInit=function(){"form"!==this.thisElement.tagName.toLowerCase()&&this.createDiv()},e.prototype.ngOnDestroy=function(){this.componentRef&&(this.componentRef.instance.selectEvent.unsubscribe(),this.componentRef.instance.inputChangedEvent.unsubscribe()),document.removeEventListener("click",this.hideAutocomplete)},e.prototype.ngOnChanges=function(e){if(e.items&&this.componentRef){var t=this.componentRef.instance;t.items=e.items.currentValue,t.filterItems(t.value)}},e.prototype.ngAfterViewInit=function(){var e=this,t=this.getInputElement();t.form&&t.form.addEventListener("reset",function(){e.reset=!0})},e.prototype.showAutocomplete=function(e){this.hideAutocomplete(),e===this.thisElement&&this.createAutocomplete()},e.prototype.getInputElement=function(){var e=this.thisElement;return"INPUT"!==this.thisElement.tagName&&this.autocompleteElement&&(e=this.thisElement.querySelector("input")),e},e.prototype.createDiv=function(){var e=document.createElement("div");e.style.display="inline-block",e.style.position="relative",this.thisElement.parentElement.insertBefore(e,this.thisElement.nextSibling),e.appendChild(this.thisElement),document.addEventListener("click",this.hideAutocomplete)},e.prototype.createAutocomplete=function(){var e=this.resolver.resolveComponentFactory(o);this.componentRef=this.viewContainerRef.createComponent(e);var t=this.componentRef.instance;if(t.config=this.config,t.items=this.items,t.selectEvent.subscribe(this.onSelect),t.inputChangedEvent.subscribe(this.onInputChanged),this.autocompleteElement=this.componentRef.location.nativeElement,this.autocompleteElement.style.display="none",this.inputElement=this.getInputElement(),"INPUT"!==this.thisElement.tagName&&this.autocompleteElement&&this.inputElement.parentElement.insertBefore(this.autocompleteElement,this.inputElement.nextSibling),this.reset&&(this.ngModel="",this.reset=!1),this.inputElement.value=this.ngModel?this.ngModel:"",t.value=this.inputElement.value,this.tabIndex=this.inputElement.tabIndex,this.inputElement.tabIndex=-100,this.componentRef){var n=this.thisElement.getBoundingClientRect(),i=this.autocompleteElement.style;i.width=n.width+"px",i.position="absolute",i.zIndex="1",i.top="0",i.left="0",i.display="inline-block"}},e.decorators=[{type:i.Directive,args:[{selector:"[input-autocomplete]"}]}],e.ctorParameters=function(){return[{type:i.ComponentFactoryResolver},{type:i.ViewContainerRef}]},e.propDecorators={config:[{type:i.Input}],items:[{type:i.Input}],ngModel:[{type:i.Input}],ngModelChange:[{type:i.Output}],inputChangedEvent:[{type:i.Output}],selectEvent:[{type:i.Output}],showAutocomplete:[{type:i.HostListener,args:["click",["$event.target"]]},{type:i.HostListener,args:["focus",["$event.target"]]}]},e}(),l=function(){function e(){}return e.forRoot=function(){return{ngModule:e}},e.decorators=[{type:i.NgModule,args:[{imports:[t.CommonModule,n.FormsModule],declarations:[o,s],exports:[o,s],entryComponents:[o]}]}],e}();e.AutocompleteComponent=o,e.AutocompleteDirective=s,e.AutocompleteModule=l,Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common"),require("@angular/forms")):"function"==typeof define&&define.amd?define("ng2-input-autocomplete",["exports","@angular/core","@angular/common","@angular/forms"],t):t(e["ng2-input-autocomplete"]={},e.ng.core,e.ng.common,e.ng.forms)}(this,function(e,i,t,n){"use strict";var o=function(){function e(e){this.classList="autocomplete",this.selectEvent=new i.EventEmitter,this.inputChangedEvent=new i.EventEmitter,this.maxLimit=0,this.thisElement=e.nativeElement,this.selectedIndex=0,this.showAutoComplete=!1,this.value=""}return e.prototype.ngOnInit=function(){this.config&&this.config["class"]&&(this.classList+=" "+this.config["class"]),this.config&&0<this.config.max&&(this.maxLimit=this.config.max),this.placeholder="autocomplete",this.inputElement=this.thisElement.querySelector("input"),this.isNull(this.config)||(this.isNull(this.config.placeholder)||(this.placeholder=this.config.placeholder),this.isNull(this.config.sourceField)||(this.sourceField=this.config.sourceField)),this.filterItems(this.value),this.inputElement.focus()},e.prototype.ngOnChanges=function(){this.filterItems(this.value)},e.prototype.enterText=function(e){var t=this.candidates.length;switch(e.keyCode){case 27:this.showAutoComplete=!1;break;case 38:this.selectedIndex=(t+this.selectedIndex-1)%t;break;case 40:this.selectedIndex=(t+this.selectedIndex+1)%t;break;case 13:0<this.candidates.length&&this.onSelect(this.selectedIndex),e.preventDefault();break;default:this.value=e.target.value,this.inputChangedEvent.emit(this.value)}},e.prototype.onSelect=function(e){this.showAutoComplete=!1,this.value=this.candidatesLabels[e],this.selectEvent.emit(this.candidates[e])},e.prototype.onKeyUpEvent=function(e,t){13===e.keyCode&&this.onSelect(t)},e.prototype.filterItems=function(t){var n=this.sourceField,i=this.filterItem;this.items&&(this.candidates=this.items.filter(function(e){return i(e,n,t)}),0<this.maxLimit&&(this.candidates=this.candidates.slice(0,this.maxLimit)),this.buildLabels())},e.prototype.getFieldValue=function(e,t){if("string"==typeof e)return e;if(t instanceof Array){var n=e;return t.forEach(function(e){n=null!==n&&n!==undefined&&null!==n[e]&&n[e]!==undefined?n[e]:""}),n}return e[t]||""},e.prototype.isNull=function(e){return null===e||e===undefined},e.prototype.buildLabels=function(){var t=this.sourceField,n=this.getFieldValue;this.candidatesLabels=this.candidates.map(function(e){return n(e,t)})},e.prototype.filterItem=function(e,t,n){return null===n||n===undefined||0===n.length||("string"==typeof e?i=e:t instanceof Array?(i=e,t.forEach(function(e){i=null!==i&&i!==undefined&&null!==i[e]&&i[e]!==undefined?i[e]:""})):i=e[t]||"",0<=i.toLowerCase().indexOf(n.toLowerCase()));var i},e.decorators=[{type:i.Component,args:[{selector:"ng2-input-autocomplete",template:'\n <div [ngClass]="classList">\n <input type="text"\n placeholder="{{placeholder}}"\n (blur)="showAutoComplete = false;"\n (focus)="showAutoComplete = true;"\n [value]="value"\n (keyup)="enterText($event)">\n <ul *ngIf="showAutoComplete && candidates && candidates.length > 0">\n <li *ngFor="let candidate of candidates; let idx = index"\n [ngClass]="{ active: (idx === selectedIndex) }"\n (keyup)="onKeyUpEvent($event, idx)"\n (mouseover)="selectedIndex = idx;"\n (mousedown)="onSelect(idx)">\n {{candidatesLabels[idx]}}\n </li>\n </ul>\n </div>',styles:[".autocomplete ul {\n position: absolute;\n left: 0;\n width: 100%;\n border-left: 1px solid #888;\n border-right: 1px solid #888;\n border-bottom: 1px solid #888;\n list-style: none;\n padding-left: 0px;\n margin-top: 2px;\n background-color: #fff;\n z-index: 100;\n }\n .autocomplete li {\n text-align: left;\n list-style: none;\n width: 100%;\n padding: 0.4em 0 0.4em 0;\n }\n .autocomplete li.active {\n width: 100%;\n background-color: #4bf;\n }\n\n .autocomplete .highlight {\n background-color: #e2e2e2;\n }\n .autocomplete li.active .highlight {\n background: #666;\n color: #fff;\n }"]}]}],e.ctorParameters=function(){return[{type:i.ElementRef}]},e.propDecorators={items:[{type:i.Input}],config:[{type:i.Input}],selectEvent:[{type:i.Output}],inputChangedEvent:[{type:i.Output}]},e}(),s=function(){function e(e,t){var n=this;this.resolver=e,this.viewContainerRef=t,this.ngModelChange=new i.EventEmitter,this.inputChangedEvent=new i.EventEmitter,this.selectEvent=new i.EventEmitter,this.reset=!1,this.hideAutocomplete=function(e){n.componentRef&&(e&&e.target&&n.thisElement&&e.target===n.thisElement.parentElement||((!e||e.target!==n.thisElement&&"click"===e.type)&&(n.componentRef.destroy(),n.componentRef=undefined),n.inputElement.tabIndex<0&&(n.inputElement.tabIndex=n.tabIndex)))},this.onInputChanged=function(e){(n.inputElement.value=e)!==n.ngModel&&(n.ngModel=e,n.ngModelChange.emit(e)),n.componentRef.instance.filterItems(e),n.inputChangedEvent.emit(e)},this.onSelect=function(e){var t=n.componentRef.instance.value;t!==n.ngModel&&(n.ngModel=t,n.ngModelChange.emit(t)),n.selectEvent.emit(e),n.inputElement&&(n.inputElement.value=""+t),n.hideAutocomplete()},this.thisElement=this.viewContainerRef.element.nativeElement}return e.prototype.ngOnInit=function(){"form"!==this.thisElement.tagName.toLowerCase()&&this.createDiv()},e.prototype.ngOnDestroy=function(){this.componentRef&&(this.componentRef.instance.selectEvent.unsubscribe(),this.componentRef.instance.inputChangedEvent.unsubscribe()),document.removeEventListener("click",this.hideAutocomplete)},e.prototype.ngOnChanges=function(e){if(e.items&&this.componentRef){var t=this.componentRef.instance;t.items=e.items.currentValue,t.filterItems(t.value)}},e.prototype.ngAfterViewInit=function(){var e=this,t=this.getInputElement();this.control&&this.control.valueChanges.subscribe(function(){e.reset=!0}),t.form&&t.form.addEventListener("reset",function(){e.reset=!0})},e.prototype.showAutocomplete=function(e){this.hideAutocomplete(),e===this.thisElement&&this.createAutocomplete()},e.prototype.getInputElement=function(){var e=this.thisElement;return"INPUT"!==this.thisElement.tagName&&this.autocompleteElement&&(e=this.thisElement.querySelector("input")),e},e.prototype.createDiv=function(){var e=document.createElement("div");e.style.display="inline-block",e.style.position="relative",this.thisElement.parentElement.insertBefore(e,this.thisElement.nextSibling),e.appendChild(this.thisElement),document.addEventListener("click",this.hideAutocomplete)},e.prototype.createAutocomplete=function(){var e=this.resolver.resolveComponentFactory(o);this.componentRef=this.viewContainerRef.createComponent(e);var t=this.componentRef.instance;if(t.config=this.config,t.items=this.items,t.selectEvent.subscribe(this.onSelect),t.inputChangedEvent.subscribe(this.onInputChanged),this.autocompleteElement=this.componentRef.location.nativeElement,this.autocompleteElement.style.display="none",this.inputElement=this.getInputElement(),"INPUT"!==this.thisElement.tagName&&this.autocompleteElement&&this.inputElement.parentElement.insertBefore(this.autocompleteElement,this.inputElement.nextSibling),this.reset&&(this.ngModel="",this.reset=!1),this.inputElement.value=this.ngModel?this.ngModel:"",t.value=this.inputElement.value,this.tabIndex=this.inputElement.tabIndex,this.inputElement.tabIndex=-100,this.componentRef){var n=this.thisElement.getBoundingClientRect(),i=this.autocompleteElement.style;i.width=n.width+"px",i.position="absolute",i.zIndex="1",i.top="0",i.left="0",i.display="inline-block"}},e.decorators=[{type:i.Directive,args:[{selector:"[input-autocomplete]"}]}],e.ctorParameters=function(){return[{type:i.ComponentFactoryResolver},{type:i.ViewContainerRef}]},e.propDecorators={config:[{type:i.Input}],items:[{type:i.Input}],ngModel:[{type:i.Input}],control:[{type:i.Input}],ngModelChange:[{type:i.Output}],inputChangedEvent:[{type:i.Output}],selectEvent:[{type:i.Output}],showAutocomplete:[{type:i.HostListener,args:["click",["$event.target"]]},{type:i.HostListener,args:["focus",["$event.target"]]}]},e}(),l=function(){function e(){}return e.forRoot=function(){return{ngModule:e}},e.decorators=[{type:i.NgModule,args:[{imports:[t.CommonModule,n.FormsModule],declarations:[o,s],exports:[o,s],entryComponents:[o]}]}],e}();e.AutocompleteComponent=o,e.AutocompleteDirective=s,e.AutocompleteModule=l,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=ng2-input-autocomplete.umd.min.js.map

@@ -6,2 +6,3 @@ /**

import { Component, ComponentFactoryResolver, Directive, ElementRef, EventEmitter, HostListener, Input, Output, ViewContainerRef } from '@angular/core';
import { FormControl } from '@angular/forms';
export class AutocompleteComponent {

@@ -388,2 +389,7 @@ /**

const input = this.getInputElement();
if (this.control) {
this.control.valueChanges.subscribe(() => {
this.reset = true;
});
}
if (input.form) {

@@ -484,2 +490,3 @@ input.form.addEventListener('reset', () => {

ngModel: [{ type: Input }],
control: [{ type: Input }],
ngModelChange: [{ type: Output }],

@@ -498,2 +505,4 @@ inputChangedEvent: [{ type: Output }],

/** @type {?} */
AutocompleteDirective.prototype.control;
/** @type {?} */
AutocompleteDirective.prototype.ngModelChange;

@@ -528,2 +537,2 @@ /** @type {?} */

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi1pbnB1dC1hdXRvY29tcGxldGUvIiwic291cmNlcyI6WyJsaWIvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBR0EsT0FBTyxFQUNMLFNBQVMsRUFDVCx3QkFBd0IsRUFFeEIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFLTCxNQUFNLEVBRU4sZ0JBQWdCLEVBRWpCLE1BQU0sZUFBZSxDQUFDO0FBeUR2QixNQUFNOzs7O0lBaUJKLFlBQVksVUFBc0I7eUJBaEJ0QixjQUFjOzJCQUdpQixJQUFJLFlBQVksRUFBTztpQ0FDakIsSUFBSSxZQUFZLEVBQU87d0JBUTdELENBQUM7UUFLVixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztLQUNqQjs7OztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDM0M7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDakM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQztRQUNsQyxJQUFJLENBQUMsWUFBWSxxQkFBRyxJQUFJLENBQUMs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QUcsQ0FBQyxHQUFHLENBQUM7UUFDckMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFOztZQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUM7O1lBQ3RELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7WUFDN0MsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNoQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztZQUM1QixLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztZQUNuQixLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztZQUNoQixLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUNqQixLQUFLLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQztTQUNoQzs7OztZQTdLSixTQUFTLFNBQUM7O2dCQUVULFFBQVEsRUFBRSxzQkFBc0I7YUFDakM7Ozs7WUFsUEMsd0JBQXdCO1lBYXhCLGdCQUFnQjs7O3FCQXVPZixLQUFLO29CQUNMLEtBQUs7c0JBQ0wsS0FBSzs0QkFDTCxNQUFNO2dDQUNOLE1BQU07MEJBQ04sTUFBTTsrQkFnRE4sWUFBWSxTQUFDLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQyxjQUN2QyxZQUFZLFNBQUMsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgTUlUIExJQ0VOU0UgQGxpdXk5N1xuKi9cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZSxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgSG9zdEJpbmRpbmdcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgc2VsZWN0b3I6ICduZzItaW5wdXQtYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGU6IGBcbiAgPGRpdiBbbmdDbGFzc109XCJjbGFzc0xpc3RcIj5cbiAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7e3BsYWNlaG9sZGVyfX1cIlxuICAgICAgKGJsdXIpPVwic2hvd0F1dG9Db21wbGV0ZSA9IGZhbHNlO1wiXG4gICAgICAoZm9jdXMpPVwic2hvd0F1dG9Db21wbGV0ZSA9IHRydWU7XCJcbiAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAoa2V5dXApPVwiZW50ZXJUZXh0KCRldmVudClcIj5cbiAgICA8dWwgKm5nSWY9XCJzaG93QXV0b0NvbXBsZXRlICYmIGNhbmRpZGF0ZXMgJiYgY2FuZGlkYXRlcy5sZW5ndGggPiAwXCI+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzOyBsZXQgaWR4ID0gaW5kZXhcIlxuICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogKGlkeCA9PT0gc2VsZWN0ZWRJbmRleCkgfVwiXG4gICAgICAgIChrZXl1cCk9XCJvbktleVVwRXZlbnQoJGV2ZW50LCBpZHgpXCJcbiAgICAgICAgKG1vdXNlb3Zlcik9XCJzZWxlY3RlZEluZGV4ID0gaWR4O1wiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25TZWxlY3QoaWR4KVwiPlxuICAgICAgICB7e2NhbmRpZGF0ZXNMYWJlbHNbaWR4XX19XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PmAsXG4gIHN0eWxlczogW1xuICAgIGAuYXV0b2NvbXBsZXRlIHVsIHtcbiAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgbGVmdDogMDtcbiAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICM4ODg7XG4gICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzg4ODtcbiAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzg4ODtcbiAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgIHBhZGRpbmctbGVmdDogMHB4O1xuICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgIHotaW5kZXg6IDEwMDtcbiAgICAgfVxuICAgICAuYXV0b2NvbXBsZXRlIGxpIHtcbiAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgcGFkZGluZzogMC40ZW0gMCAwLjRlbSAwO1xuICAgICB9XG4gICAgIC5hdXRvY29tcGxldGUgbGkuYWN0aXZlIHtcbiAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGJmO1xuICAgICB9XG5cbiAgICAgLmF1dG9jb21wbGV0ZSAuaGlnaGxpZ2h0IHtcbiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTJlMmUyO1xuICAgICB9XG4gICAgIC5hdXRvY29tcGxldGUgbGkuYWN0aXZlIC5oaWdobGlnaHQge1xuICAgICAgIGJhY2tncm91bmQ6ICM2NjY7XG4gICAgICAgY29sb3I6ICNmZmY7XG4gICAgIH1gXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBjbGFzc0xpc3QgPSAnYXV0b2NvbXBsZXRlJztcbiAgQElucHV0KCkgaXRlbXM6IGFueVtdO1xuICBASW5wdXQoKSBjb25maWc6IGFueTtcbiAgQE91dHB1dCgpIHNlbGVjdEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2VkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudDtcbiAgdmFsdWU6IHN0cmluZztcbiAgY2FuZGlkYXRlczogYW55W107XG4gIGNhbmRpZGF0ZXNMYWJlbHM6IGFueVtdO1xuICBzZWxlY3RlZEluZGV4OiBudW1iZXI7XG4gIHNob3dBdXRvQ29tcGxldGU6IGJvb2xlYW47XG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIG1heExpbWl0ID0gMDtcbiAgcHJpdmF0ZSBzb3VyY2VGaWVsZDogYW55O1xuICBwcml2YXRlIHRoaXNFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy50aGlzRWxlbWVudCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xuICAgIHRoaXMuc2hvd0F1dG9Db21wbGV0ZSA9IGZhbHNlO1xuICAgIHRoaXMudmFsdWUgPSAnJztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5jbGFzcykge1xuICAgICAgdGhpcy5jbGFzc0xpc3QgKz0gJyAnICsgdGhpcy5jb25maWcuY2xhc3M7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5tYXggPiAwKSB7XG4gICAgICB0aGlzLm1heExpbWl0ID0gdGhpcy5jb25maWcubWF4O1xuICAgIH1cbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQgPSB0aGlzLnRoaXNFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnaW5wdXQnXG4gICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgaWYgKCF0aGlzLmlzTnVsbCh0aGlzLmNvbmZpZykpIHtcbiAgICAgIGlmICghdGhpcy5pc051bGwodGhpcy5jb25maWcucGxhY2Vob2xkZXIpKSB7XG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLmNvbmZpZy5wbGFjZWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5pc051bGwodGhpcy5jb25maWcuc291cmNlRmllbGQpKSB7XG4gICAgICAgIHRoaXMuc291cmNlRmllbGQgPSB0aGlzLmNvbmZpZy5zb3VyY2VGaWVsZDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5maWx0ZXJJdGVtcyh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLmlucHV0RWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5maWx0ZXJJdGVtcyh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGVudGVyVGV4dChldmVudDogYW55KSB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLmNhbmRpZGF0ZXMubGVuZ3RoO1xuICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgY2FzZSAyNzpcbiAgICAgICAgdGhpcy5zaG93QXV0b0NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzODpcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gKHRvdGFsICsgdGhpcy5zZWxlY3RlZEluZGV4IC0gMSkgJSB0b3RhbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQwOlxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAodG90YWwgKyB0aGlzLnNlbGVjdGVkSW5kZXggKyAxKSAlIHRvdGFsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTM6XG4gICAgICAgIGlmICh0aGlzLmNhbmRpZGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMub25TZWxlY3QodGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMudmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2VkRXZlbnQuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb25TZWxlY3QoaWR4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNob3dBdXRvQ29tcGxldGUgPSBmYWxzZTtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5jYW5kaWRhdGVzTGFiZWxzW2lkeF07XG4gICAgdGhpcy5zZWxlY3RFdmVudC5lbWl0KHRoaXMuY2FuZGlkYXRlc1tpZHhdKTtcbiAgfVxuXG4gIG9uS2V5VXBFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCwgaWR4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgIHRoaXMub25TZWxlY3QoaWR4KTtcbiAgICB9XG4gfVxuXG4gIGZpbHRlckl0ZW1zKHNlYXJjaDogc3RyaW5nKSB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLnNvdXJjZUZpZWxkO1xuICAgIGNvbnN0IGZpbHRlckl0ZW0gPSB0aGlzLmZpbHRlckl0ZW07XG4gICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgIHRoaXMuY2FuZGlkYXRlcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4gZmlsdGVySXRlbShpdGVtLCBmaWVsZCwgc2VhcmNoKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMubWF4TGltaXQgPiAwKSB7XG4gICAgICAgIHRoaXMuY2FuZGlkYXRlcyA9IHRoaXMuY2FuZGlkYXRlcy5zbGljZSgwLCB0aGlzLm1heExpbWl0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnVpbGRMYWJlbHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEZpZWxkVmFsdWUob2JqZWN0OiBhbnksIHBhdGg6IGFueSkge1xuICAgIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG4gICAgaWYgKHBhdGggaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgbGV0IHJlc3VsdDogYW55ID0gb2JqZWN0O1xuICAgICAgcGF0aC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlc3VsdCAhPT0gbnVsbCAmJlxuICAgICAgICAgIHJlc3VsdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgcmVzdWx0W2VsZW1lbnRdICE9PSBudWxsICYmXG4gICAgICAgICAgcmVzdWx0W2VsZW1lbnRdICE9PSB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0W2VsZW1lbnRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9ICcnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvYmplY3RbcGF0aF0gfHwgJyc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc051bGwob2JqZWN0OiBhbnkpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09PSBudWxsIHx8IG9iamVjdCA9PT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZExhYmVscygpIHtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuc291cmNlRmllbGQ7XG4gICAgY29uc3QgZ2V0RmllbGRWYWx1ZSA9IHRoaXMuZ2V0RmllbGRWYWx1ZTtcbiAgICB0aGlzLmNhbmRpZGF0ZXNMYWJlbHMgPSB0aGlzLmNhbmRpZGF0ZXMubWFwKChlOiBhbnkpID0+XG4gICAgICBnZXRGaWVsZFZhbHVlKGUsIGZpZWxkKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckl0ZW0oaXRlbTogYW55LCBwYXRoOiBhbnksIHNlYXJjaDogc3RyaW5nKSB7XG4gICAgaWYgKHNlYXJjaCA9PT0gbnVsbCB8fCBzZWFyY2ggPT09IHVuZGVmaW5lZCB8fCBzZWFyY2gubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdDogYW55O1xuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdCA9IGl0ZW07XG4gICAgfSBlbHNlIGlmIChwYXRoIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHJlc3VsdCA9IGl0ZW07XG4gICAgICBwYXRoLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVzdWx0ICE9PSBudWxsICYmXG4gICAgICAgICAgcmVzdWx0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICByZXN1bHRbZWxlbWVudF0gIT09IG51bGwgJiZcbiAgICAgICAgICByZXN1bHRbZWxlbWVudF0gIT09IHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHRbZWxlbWVudF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBpdGVtW3BhdGhdIHx8ICcnO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2gudG9Mb3dlckNhc2UoKSkgPj0gMDtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIHNlbGVjdG9yOiAnW2lucHV0LWF1dG9jb21wbGV0ZV0nXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBjb25maWc6IGFueTtcbiAgQElucHV0KCkgaXRlbXM6IGFueTtcbiAgQElucHV0KCkgbmdNb2RlbDogc3RyaW5nO1xuICBAT3V0cHV0KCkgbmdNb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2VsZWN0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxBdXRvY29tcGxldGVDb21wb25lbnQ+O1xuICBwcml2YXRlIHRoaXNFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBhdXRvY29tcGxldGVFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gIHByaXZhdGUgdGFiSW5kZXg6IG51bWJlcjtcbiAgcHJpdmF0ZSByZXNldDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICApIHtcbiAgICB0aGlzLnRoaXNFbGVtZW50ID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnRoaXNFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2Zvcm0nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3JlYXRlRGl2KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbnB1dENoYW5nZWRFdmVudC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGlkZUF1dG9jb21wbGV0ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7IFtwcm9wS2V5OiBzdHJpbmddOiBTaW1wbGVDaGFuZ2UgfSkge1xuICAgIGlmIChjaGFuZ2VzWydpdGVtcyddICYmIHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICAgIGNvbXBvbmVudC5pdGVtcyA9IGNoYW5nZXNbJ2l0ZW1zJ10uY3VycmVudFZhbHVlO1xuICAgICAgY29tcG9uZW50LmZpbHRlckl0ZW1zKGNvbXBvbmVudC52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dEVsZW1lbnQoKTtcbiAgICBpZiAoaW5wdXQuZm9ybSkge1xuICAgICAgaW5wdXQuZm9ybS5hZGRFdmVudExpc3RlbmVyKCdyZXNldCcsICgpID0+IHtcbiAgICAgICAgdGhpcy5yZXNldCA9IHRydWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBASG9zdExpc3RlbmVyKCdmb2N1cycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBzaG93QXV0b2NvbXBsZXRlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmhpZGVBdXRvY29tcGxldGUoKTtcbiAgICBpZiAoZXZlbnQgPT09IHRoaXMudGhpc0VsZW1lbnQpIHtcbiAgICAgIHRoaXMuY3JlYXRlQXV0b2NvbXBsZXRlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SW5wdXRFbGVtZW50KCkge1xuICAgIGxldCBpbnB1dCA9IHRoaXMudGhpc0VsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgIGlmICh0aGlzLnRoaXNFbGVtZW50LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50KSB7XG4gICAgICBpbnB1dCA9IHRoaXMudGhpc0VsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJ2lucHV0J1xuICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuXG4gIGhpZGVBdXRvY29tcGxldGUgPSAoZXZlbnQ/OiBhbnkpOiB2b2lkID0+IHtcbiAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldmVudCAmJiBldmVudC50YXJnZXQgJiYgdGhpcy50aGlzRWxlbWVudCAmJiBldmVudC50YXJnZXQgPT09IHRoaXMudGhpc0VsZW1lbnQucGFyZW50RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhZXZlbnQgfHxcbiAgICAgIChldmVudC50YXJnZXQgIT09IHRoaXMudGhpc0VsZW1lbnQgJiYgZXZlbnQudHlwZSA9PT0gJ2NsaWNrJylcbiAgICApIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnRbJ3RhYkluZGV4J10gPCAwKSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudFsndGFiSW5kZXgnXSA9IHRoaXMudGFiSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgb25JbnB1dENoYW5nZWQgPSAodmFsOiBzdHJpbmcpID0+IHtcbiAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9IHZhbDtcbiAgICBpZiAodmFsICE9PSB0aGlzLm5nTW9kZWwpIHtcbiAgICAgIHRoaXMubmdNb2RlbCA9IHZhbDtcbiAgICAgIHRoaXMubmdNb2RlbENoYW5nZS5lbWl0KHZhbCk7XG4gICAgfVxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIGNvbXBvbmVudC5maWx0ZXJJdGVtcyh2YWwpO1xuICAgIHRoaXMuaW5wdXRDaGFuZ2VkRXZlbnQuZW1pdCh2YWwpO1xuICB9XG5cbiAgb25TZWxlY3QgPSAoaXRlbTogYW55KSA9PiB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgY29uc3QgdmFsID0gY29tcG9uZW50LnZhbHVlO1xuICAgIGlmICh2YWwgIT09IHRoaXMubmdNb2RlbCkge1xuICAgICAgdGhpcy5uZ01vZGVsID0gdmFsO1xuICAgICAgdGhpcy5uZ01vZGVsQ2hhbmdlLmVtaXQodmFsKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RFdmVudC5lbWl0KGl0ZW0pO1xuICAgIGlmICh0aGlzLmlucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgPSAnJyArIHZhbDtcbiAgICB9XG4gICAgdGhpcy5oaWRlQXV0b2NvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURpdigpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgdGhpcy50aGlzRWxlbWVudC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShcbiAgICAgIGVsZW1lbnQsXG4gICAgICB0aGlzLnRoaXNFbGVtZW50Lm5leHRTaWJsaW5nXG4gICAgKTtcbiAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudGhpc0VsZW1lbnQpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oaWRlQXV0b2NvbXBsZXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQXV0b2NvbXBsZXRlKCkge1xuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLnJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFxuICAgICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSk7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgY29tcG9uZW50LmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgIGNvbXBvbmVudC5pdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgY29tcG9uZW50LnNlbGVjdEV2ZW50LnN1YnNjcmliZSh0aGlzLm9uU2VsZWN0KTtcbiAgICBjb21wb25lbnQuaW5wdXRDaGFuZ2VkRXZlbnQuc3Vic2NyaWJlKHRoaXMub25JbnB1dENoYW5nZWQpO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlRWxlbWVudCA9IHRoaXMuY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQgPSB0aGlzLmdldElucHV0RWxlbWVudCgpO1xuICAgIGlmICh0aGlzLnRoaXNFbGVtZW50LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50KSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50LFxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uZXh0U2libGluZ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNldCkge1xuICAgICAgdGhpcy5uZ01vZGVsID0gJyc7XG4gICAgICB0aGlzLnJlc2V0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgPSB0aGlzLm5nTW9kZWwgPyB0aGlzLm5nTW9kZWwgOiAnJztcbiAgICBjb21wb25lbnQudmFsdWUgPSB0aGlzLmlucHV0RWxlbWVudC52YWx1ZTtcbiAgICB0aGlzLnRhYkluZGV4ID0gdGhpcy5pbnB1dEVsZW1lbnRbJ3RhYkluZGV4J107XG4gICAgdGhpcy5pbnB1dEVsZW1lbnRbJ3RhYkluZGV4J10gPSAtMTAwO1xuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgY29uc3QgcmVjdCA9IHRoaXMudGhpc0VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBzdHlsZSA9IHRoaXMuYXV0b2NvbXBsZXRlRWxlbWVudC5zdHlsZTtcbiAgICAgIHN0eWxlLndpZHRoID0gcmVjdC53aWR0aCArICdweCc7XG4gICAgICBzdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICBzdHlsZS56SW5kZXggPSAnMSc7XG4gICAgICBzdHlsZS50b3AgPSAnMCc7XG4gICAgICBzdHlsZS5sZWZ0ID0gJzAnO1xuICAgICAgc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snO1xuICAgIH1cbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi1pbnB1dC1hdXRvY29tcGxldGUvIiwic291cmNlcyI6WyJsaWIvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBR0EsT0FBTyxFQUNMLFNBQVMsRUFDVCx3QkFBd0IsRUFFeEIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFLTCxNQUFNLEVBRU4sZ0JBQWdCLEVBRWpCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQXlEM0MsTUFBTTs7OztJQWlCSixZQUFZLFVBQXNCO3lCQWhCdEIsY0FBYzsyQkFHaUIsSUFBSSxZQUFZLEVBQU87aUNBQ2pCLElBQUksWUFBWSxFQUFPO3dCQVE3RCxDQUFDO1FBS1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7S0FDakI7Ozs7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxTQUFTLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTtZQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxjQUFj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b25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2UsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIEhvc3RCaW5kaW5nXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIHNlbGVjdG9yOiAnbmcyLWlucHV0LWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlOiBgXG4gIDxkaXYgW25nQ2xhc3NdPVwiY2xhc3NMaXN0XCI+XG4gICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgIHBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCJcbiAgICAgIChibHVyKT1cInNob3dBdXRvQ29tcGxldGUgPSBmYWxzZTtcIlxuICAgICAgKGZvY3VzKT1cInNob3dBdXRvQ29tcGxldGUgPSB0cnVlO1wiXG4gICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgKGtleXVwKT1cImVudGVyVGV4dCgkZXZlbnQpXCI+XG4gICAgPHVsICpuZ0lmPVwic2hvd0F1dG9Db21wbGV0ZSAmJiBjYW5kaWRhdGVzICYmIGNhbmRpZGF0ZXMubGVuZ3RoID4gMFwiPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlczsgbGV0IGlkeCA9IGluZGV4XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IChpZHggPT09IHNlbGVjdGVkSW5kZXgpIH1cIlxuICAgICAgICAoa2V5dXApPVwib25LZXlVcEV2ZW50KCRldmVudCwgaWR4KVwiXG4gICAgICAgIChtb3VzZW92ZXIpPVwic2VsZWN0ZWRJbmRleCA9IGlkeDtcIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uU2VsZWN0KGlkeClcIj5cbiAgICAgICAge3tjYW5kaWRhdGVzTGFiZWxzW2lkeF19fVxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5gLFxuICBzdHlsZXM6IFtcbiAgICBgLmF1dG9jb21wbGV0ZSB1bCB7XG4gICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgIGxlZnQ6IDA7XG4gICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjODg4O1xuICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICM4ODg7XG4gICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM4ODg7XG4gICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICBwYWRkaW5nLWxlZnQ6IDBweDtcbiAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICAgICB6LWluZGV4OiAxMDA7XG4gICAgIH1cbiAgICAgLmF1dG9jb21wbGV0ZSBsaSB7XG4gICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgIHBhZGRpbmc6IDAuNGVtIDAgMC40ZW0gMDtcbiAgICAgfVxuICAgICAuYXV0b2NvbXBsZXRlIGxpLmFjdGl2ZSB7XG4gICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzRiZjtcbiAgICAgfVxuXG4gICAgIC5hdXRvY29tcGxldGUgLmhpZ2hsaWdodCB7XG4gICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTJlMjtcbiAgICAgfVxuICAgICAuYXV0b2NvbXBsZXRlIGxpLmFjdGl2ZSAuaGlnaGxpZ2h0IHtcbiAgICAgICBiYWNrZ3JvdW5kOiAjNjY2O1xuICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICB9YFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgY2xhc3NMaXN0ID0gJ2F1dG9jb21wbGV0ZSc7XG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXTtcbiAgQElucHV0KCkgY29uZmlnOiBhbnk7XG4gIEBPdXRwdXQoKSBzZWxlY3RFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGNhbmRpZGF0ZXM6IGFueVtdO1xuICBjYW5kaWRhdGVzTGFiZWxzOiBhbnlbXTtcbiAgc2VsZWN0ZWRJbmRleDogbnVtYmVyO1xuICBzaG93QXV0b0NvbXBsZXRlOiBib29sZWFuO1xuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBtYXhMaW1pdCA9IDA7XG4gIHByaXZhdGUgc291cmNlRmllbGQ6IGFueTtcbiAgcHJpdmF0ZSB0aGlzRWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHRoaXMudGhpc0VsZW1lbnQgPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcbiAgICB0aGlzLnNob3dBdXRvQ29tcGxldGUgPSBmYWxzZTtcbiAgICB0aGlzLnZhbHVlID0gJyc7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuY2xhc3MpIHtcbiAgICAgIHRoaXMuY2xhc3NMaXN0ICs9ICcgJyArIHRoaXMuY29uZmlnLmNsYXNzO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcubWF4ID4gMCkge1xuICAgICAgdGhpcy5tYXhMaW1pdCA9IHRoaXMuY29uZmlnLm1heDtcbiAgICB9XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9ICdhdXRvY29tcGxldGUnO1xuICAgIHRoaXMuaW5wdXRFbGVtZW50ID0gdGhpcy50aGlzRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ2lucHV0J1xuICAgICkgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgIGlmICghdGhpcy5pc051bGwodGhpcy5jb25maWcpKSB7XG4gICAgICBpZiAoIXRoaXMuaXNOdWxsKHRoaXMuY29uZmlnLnBsYWNlaG9sZGVyKSkge1xuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5jb25maWcucGxhY2Vob2xkZXI7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuaXNOdWxsKHRoaXMuY29uZmlnLnNvdXJjZUZpZWxkKSkge1xuICAgICAgICB0aGlzLnNvdXJjZUZpZWxkID0gdGhpcy5jb25maWcuc291cmNlRmllbGQ7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZmlsdGVySXRlbXModGhpcy52YWx1ZSk7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMuZmlsdGVySXRlbXModGhpcy52YWx1ZSk7XG4gIH1cblxuICBlbnRlclRleHQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5jYW5kaWRhdGVzLmxlbmd0aDtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgIGNhc2UgMjc6XG4gICAgICAgIHRoaXMuc2hvd0F1dG9Db21wbGV0ZSA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzg6XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9ICh0b3RhbCArIHRoaXMuc2VsZWN0ZWRJbmRleCAtIDEpICUgdG90YWw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA0MDpcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gKHRvdGFsICsgdGhpcy5zZWxlY3RlZEluZGV4ICsgMSkgJSB0b3RhbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEzOlxuICAgICAgICBpZiAodGhpcy5jYW5kaWRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLm9uU2VsZWN0KHRoaXMuc2VsZWN0ZWRJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICB0aGlzLmlucHV0Q2hhbmdlZEV2ZW50LmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VsZWN0KGlkeDogbnVtYmVyKSB7XG4gICAgdGhpcy5zaG93QXV0b0NvbXBsZXRlID0gZmFsc2U7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuY2FuZGlkYXRlc0xhYmVsc1tpZHhdO1xuICAgIHRoaXMuc2VsZWN0RXZlbnQuZW1pdCh0aGlzLmNhbmRpZGF0ZXNbaWR4XSk7XG4gIH1cblxuICBvbktleVVwRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGlkeDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDEzKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0KGlkeCk7XG4gICAgfVxuIH1cblxuICBmaWx0ZXJJdGVtcyhzZWFyY2g6IHN0cmluZykge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5zb3VyY2VGaWVsZDtcbiAgICBjb25zdCBmaWx0ZXJJdGVtID0gdGhpcy5maWx0ZXJJdGVtO1xuICAgIGlmICh0aGlzLml0ZW1zKSB7XG4gICAgICB0aGlzLmNhbmRpZGF0ZXMgPSB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIGZpbHRlckl0ZW0oaXRlbSwgZmllbGQsIHNlYXJjaCk7XG4gICAgICB9KTtcbiAgICAgIGlmICh0aGlzLm1heExpbWl0ID4gMCkge1xuICAgICAgICB0aGlzLmNhbmRpZGF0ZXMgPSB0aGlzLmNhbmRpZGF0ZXMuc2xpY2UoMCwgdGhpcy5tYXhMaW1pdCk7XG4gICAgICB9XG4gICAgICB0aGlzLmJ1aWxkTGFiZWxzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWVsZFZhbHVlKG9iamVjdDogYW55LCBwYXRoOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuICAgIGlmIChwYXRoIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGxldCByZXN1bHQ6IGFueSA9IG9iamVjdDtcbiAgICAgIHBhdGguZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXN1bHQgIT09IG51bGwgJiZcbiAgICAgICAgICByZXN1bHQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHJlc3VsdFtlbGVtZW50XSAhPT0gbnVsbCAmJlxuICAgICAgICAgIHJlc3VsdFtlbGVtZW50XSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFtlbGVtZW50XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSAnJztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2JqZWN0W3BhdGhdIHx8ICcnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNOdWxsKG9iamVjdDogYW55KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PT0gbnVsbCB8fCBvYmplY3QgPT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRMYWJlbHMoKSB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLnNvdXJjZUZpZWxkO1xuICAgIGNvbnN0IGdldEZpZWxkVmFsdWUgPSB0aGlzLmdldEZpZWxkVmFsdWU7XG4gICAgdGhpcy5jYW5kaWRhdGVzTGFiZWxzID0gdGhpcy5jYW5kaWRhdGVzLm1hcCgoZTogYW55KSA9PlxuICAgICAgZ2V0RmllbGRWYWx1ZShlLCBmaWVsZClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJJdGVtKGl0ZW06IGFueSwgcGF0aDogYW55LCBzZWFyY2g6IHN0cmluZykge1xuICAgIGlmIChzZWFyY2ggPT09IG51bGwgfHwgc2VhcmNoID09PSB1bmRlZmluZWQgfHwgc2VhcmNoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGxldCByZXN1bHQ6IGFueTtcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXN1bHQgPSBpdGVtO1xuICAgIH0gZWxzZSBpZiAocGF0aCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICByZXN1bHQgPSBpdGVtO1xuICAgICAgcGF0aC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlc3VsdCAhPT0gbnVsbCAmJlxuICAgICAgICAgIHJlc3VsdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgcmVzdWx0W2VsZW1lbnRdICE9PSBudWxsICYmXG4gICAgICAgICAgcmVzdWx0W2VsZW1lbnRdICE9PSB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0W2VsZW1lbnRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9ICcnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gaXRlbVtwYXRoXSB8fCAnJztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdC50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoLnRvTG93ZXJDYXNlKCkpID49IDA7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICBzZWxlY3RvcjogJ1tpbnB1dC1hdXRvY29tcGxldGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgY29uZmlnOiBhbnk7XG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnk7XG4gIEBJbnB1dCgpIG5nTW9kZWw6IHN0cmluZztcbiAgQElucHV0KCkgY29udHJvbDogRm9ybUNvbnRyb2w7XG4gIEBPdXRwdXQoKSBuZ01vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2VkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEF1dG9jb21wbGV0ZUNvbXBvbmVudD47XG4gIHByaXZhdGUgdGhpc0VsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGF1dG9jb21wbGV0ZUVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudDtcbiAgcHJpdmF0ZSB0YWJJbmRleDogbnVtYmVyO1xuICBwcml2YXRlIHJlc2V0ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHB1YmxpYyB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge1xuICAgIHRoaXMudGhpc0VsZW1lbnQgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMudGhpc0VsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnZm9ybScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVEaXYoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VsZWN0RXZlbnQudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmlucHV0Q2hhbmdlZEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oaWRlQXV0b2NvbXBsZXRlKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsgW3Byb3BLZXk6IHN0cmluZ106IFNpbXBsZUNoYW5nZSB9KSB7XG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10gJiYgdGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgICAgY29tcG9uZW50Lml0ZW1zID0gY2hhbmdlc1snaXRlbXMnXS5jdXJyZW50VmFsdWU7XG4gICAgICBjb21wb25lbnQuZmlsdGVySXRlbXMoY29tcG9uZW50LnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmdldElucHV0RWxlbWVudCgpO1xuICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5yZXNldCA9IHRydWU7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGlucHV0LmZvcm0pIHtcbiAgICAgIGlucHV0LmZvcm0uYWRkRXZlbnRMaXN0ZW5lcigncmVzZXQnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzZXQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudC50YXJnZXQnXSlcbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnLCBbJyRldmVudC50YXJnZXQnXSlcbiAgc2hvd0F1dG9jb21wbGV0ZShldmVudDogYW55KSB7XG4gICAgdGhpcy5oaWRlQXV0b2NvbXBsZXRlKCk7XG4gICAgaWYgKGV2ZW50ID09PSB0aGlzLnRoaXNFbGVtZW50KSB7XG4gICAgICB0aGlzLmNyZWF0ZUF1dG9jb21wbGV0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldElucHV0RWxlbWVudCgpIHtcbiAgICBsZXQgaW5wdXQgPSB0aGlzLnRoaXNFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICBpZiAodGhpcy50aGlzRWxlbWVudC50YWdOYW1lICE9PSAnSU5QVVQnICYmIHRoaXMuYXV0b2NvbXBsZXRlRWxlbWVudCkge1xuICAgICAgaW5wdXQgPSB0aGlzLnRoaXNFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICdpbnB1dCdcbiAgICAgICkgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5wdXQ7XG4gIH1cblxuICBoaWRlQXV0b2NvbXBsZXRlID0gKGV2ZW50PzogYW55KTogdm9pZCA9PiB7XG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0ICYmIHRoaXMudGhpc0VsZW1lbnQgJiYgZXZlbnQudGFyZ2V0ID09PSB0aGlzLnRoaXNFbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIWV2ZW50IHx8XG4gICAgICAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLnRoaXNFbGVtZW50ICYmIGV2ZW50LnR5cGUgPT09ICdjbGljaycpXG4gICAgKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50Wyd0YWJJbmRleCddIDwgMCkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnRbJ3RhYkluZGV4J10gPSB0aGlzLnRhYkluZGV4O1xuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXRDaGFuZ2VkID0gKHZhbDogc3RyaW5nKSA9PiB7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgPSB2YWw7XG4gICAgaWYgKHZhbCAhPT0gdGhpcy5uZ01vZGVsKSB7XG4gICAgICB0aGlzLm5nTW9kZWwgPSB2YWw7XG4gICAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdCh2YWwpO1xuICAgIH1cbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICBjb21wb25lbnQuZmlsdGVySXRlbXModmFsKTtcbiAgICB0aGlzLmlucHV0Q2hhbmdlZEV2ZW50LmVtaXQodmFsKTtcbiAgfVxuXG4gIG9uU2VsZWN0ID0gKGl0ZW06IGFueSkgPT4ge1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIGNvbnN0IHZhbCA9IGNvbXBvbmVudC52YWx1ZTtcbiAgICBpZiAodmFsICE9PSB0aGlzLm5nTW9kZWwpIHtcbiAgICAgIHRoaXMubmdNb2RlbCA9IHZhbDtcbiAgICAgIHRoaXMubmdNb2RlbENoYW5nZS5lbWl0KHZhbCk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0RXZlbnQuZW1pdChpdGVtKTtcbiAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlID0gJycgKyB2YWw7XG4gICAgfVxuICAgIHRoaXMuaGlkZUF1dG9jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEaXYoKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snO1xuICAgIGVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgIHRoaXMudGhpc0VsZW1lbnQucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUoXG4gICAgICBlbGVtZW50LFxuICAgICAgdGhpcy50aGlzRWxlbWVudC5uZXh0U2libGluZ1xuICAgICk7XG4gICAgZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnRoaXNFbGVtZW50KTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGlkZUF1dG9jb21wbGV0ZSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUF1dG9jb21wbGV0ZSgpIHtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShcbiAgICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgICk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIGNvbXBvbmVudC5jb25maWcgPSB0aGlzLmNvbmZpZztcbiAgICBjb21wb25lbnQuaXRlbXMgPSB0aGlzLml0ZW1zO1xuICAgIGNvbXBvbmVudC5zZWxlY3RFdmVudC5zdWJzY3JpYmUodGhpcy5vblNlbGVjdCk7XG4gICAgY29tcG9uZW50LmlucHV0Q2hhbmdlZEV2ZW50LnN1YnNjcmliZSh0aGlzLm9uSW5wdXRDaGFuZ2VkKTtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIHRoaXMuaW5wdXRFbGVtZW50ID0gdGhpcy5nZXRJbnB1dEVsZW1lbnQoKTtcbiAgICBpZiAodGhpcy50aGlzRWxlbWVudC50YWdOYW1lICE9PSAnSU5QVVQnICYmIHRoaXMuYXV0b2NvbXBsZXRlRWxlbWVudCkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRWxlbWVudCxcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmV4dFNpYmxpbmdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzZXQpIHtcbiAgICAgIHRoaXMubmdNb2RlbCA9ICcnO1xuICAgICAgdGhpcy5yZXNldCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlID0gdGhpcy5uZ01vZGVsID8gdGhpcy5uZ01vZGVsIDogJyc7XG4gICAgY29tcG9uZW50LnZhbHVlID0gdGhpcy5pbnB1dEVsZW1lbnQudmFsdWU7XG4gICAgdGhpcy50YWJJbmRleCA9IHRoaXMuaW5wdXRFbGVtZW50Wyd0YWJJbmRleCddO1xuICAgIHRoaXMuaW5wdXRFbGVtZW50Wyd0YWJJbmRleCddID0gLTEwMDtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLnRoaXNFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3Qgc3R5bGUgPSB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQuc3R5bGU7XG4gICAgICBzdHlsZS53aWR0aCA9IHJlY3Qud2lkdGggKyAncHgnO1xuICAgICAgc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgc3R5bGUuekluZGV4ID0gJzEnO1xuICAgICAgc3R5bGUudG9wID0gJzAnO1xuICAgICAgc3R5bGUubGVmdCA9ICcwJztcbiAgICAgIHN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcbiAgICB9XG4gIH1cbn1cbiJdfQ==

@@ -6,2 +6,3 @@ /**

import { Component, ComponentFactoryResolver, Directive, ElementRef, EventEmitter, HostListener, Input, Output, ViewContainerRef } from '@angular/core';
import { FormControl } from '@angular/forms';
var AutocompleteComponent = /** @class */ (function () {

@@ -394,2 +395,7 @@ function AutocompleteComponent(elementRef) {

var input = this.getInputElement();
if (this.control) {
this.control.valueChanges.subscribe(function () {
_this.reset = true;
});
}
if (input.form) {

@@ -502,2 +508,3 @@ input.form.addEventListener('reset', function () {

ngModel: [{ type: Input }],
control: [{ type: Input }],
ngModelChange: [{ type: Output }],

@@ -519,2 +526,4 @@ inputChangedEvent: [{ type: Output }],

/** @type {?} */
AutocompleteDirective.prototype.control;
/** @type {?} */
AutocompleteDirective.prototype.ngModelChange;

@@ -549,2 +558,2 @@ /** @type {?} */

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi1pbnB1dC1hdXRvY29tcGxldGUvIiwic291cmNlcyI6WyJsaWIvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBR0EsT0FBTyxFQUNMLFNBQVMsRUFDVCx3QkFBd0IsRUFFeEIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFLTCxNQUFNLEVBRU4sZ0JBQWdCLEVBRWpCLE1BQU0sZUFBZSxDQUFDOztJQTBFckIsK0JBQVksVUFBc0I7eUJBaEJ0QixjQUFjOzJCQUdpQixJQUFJLFlBQVksRUFBTztpQ0FDakIsSUFBSSxZQUFZLEVBQU87d0JBUTdELENBQUM7UUFLVixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztLQUNqQjs7OztJQUVELHdDQUFROzs7SUFBUjtRQUNFLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNwQyxJQUFJLENBQUMsU0FBUyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMzQztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztTQUNqQztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLHFCQUFHLElBQUksQ0FBQyxXQUFX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VUFBVSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztRQUNyQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7O1lBQ3JCLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FBQzs7WUFDdEQsSUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQztZQUM3QyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1lBQzVCLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1lBQ25CLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ2hCLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1lBQ2pCLEtBQUssQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDO1NBQ2hDOzs7Z0JBN0tKLFNBQVMsU0FBQzs7b0JBRVQsUUFBUSxFQUFFLHNCQUFzQjtpQkFDakM7Ozs7Z0JBbFBDLHdCQUF3QjtnQkFheEIsZ0JBQWdCOzs7eUJBdU9mLEtBQUs7d0JBQ0wsS0FBSzswQkFDTCxLQUFLO2dDQUNMLE1BQU07b0NBQ04sTUFBTTs4QkFDTixNQUFNO21DQWdETixZQUFZLFNBQUMsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDLGNBQ3ZDLFlBQVksU0FBQyxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7O2dDQS9TMUM7O1NBd1BhLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gIE1JVCBMSUNFTlNFIEBsaXV5OTdcbiovXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2UsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIEhvc3RCaW5kaW5nXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIHNlbGVjdG9yOiAnbmcyLWlucHV0LWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlOiBgXG4gIDxkaXYgW25nQ2xhc3NdPVwiY2xhc3NMaXN0XCI+XG4gICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgIHBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCJcbiAgICAgIChibHVyKT1cInNob3dBdXRvQ29tcGxldGUgPSBmYWxzZTtcIlxuICAgICAgKGZvY3VzKT1cInNob3dBdXRvQ29tcGxldGUgPSB0cnVlO1wiXG4gICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgKGtleXVwKT1cImVudGVyVGV4dCgkZXZlbnQpXCI+XG4gICAgPHVsICpuZ0lmPVwic2hvd0F1dG9Db21wbGV0ZSAmJiBjYW5kaWRhdGVzICYmIGNhbmRpZGF0ZXMubGVuZ3RoID4gMFwiPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlczsgbGV0IGlkeCA9IGluZGV4XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IChpZHggPT09IHNlbGVjdGVkSW5kZXgpIH1cIlxuICAgICAgICAoa2V5dXApPVwib25LZXlVcEV2ZW50KCRldmVudCwgaWR4KVwiXG4gICAgICAgIChtb3VzZW92ZXIpPVwic2VsZWN0ZWRJbmRleCA9IGlkeDtcIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uU2VsZWN0KGlkeClcIj5cbiAgICAgICAge3tjYW5kaWRhdGVzTGFiZWxzW2lkeF19fVxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5gLFxuICBzdHlsZXM6IFtcbiAgICBgLmF1dG9jb21wbGV0ZSB1bCB7XG4gICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgIGxlZnQ6IDA7XG4gICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjODg4O1xuICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICM4ODg7XG4gICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM4ODg7XG4gICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICBwYWRkaW5nLWxlZnQ6IDBweDtcbiAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICAgICB6LWluZGV4OiAxMDA7XG4gICAgIH1cbiAgICAgLmF1dG9jb21wbGV0ZSBsaSB7XG4gICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgIHBhZGRpbmc6IDAuNGVtIDAgMC40ZW0gMDtcbiAgICAgfVxuICAgICAuYXV0b2NvbXBsZXRlIGxpLmFjdGl2ZSB7XG4gICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzRiZjtcbiAgICAgfVxuXG4gICAgIC5hdXRvY29tcGxldGUgLmhpZ2hsaWdodCB7XG4gICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTJlMjtcbiAgICAgfVxuICAgICAuYXV0b2NvbXBsZXRlIGxpLmFjdGl2ZSAuaGlnaGxpZ2h0IHtcbiAgICAgICBiYWNrZ3JvdW5kOiAjNjY2O1xuICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICB9YFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgY2xhc3NMaXN0ID0gJ2F1dG9jb21wbGV0ZSc7XG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXTtcbiAgQElucHV0KCkgY29uZmlnOiBhbnk7XG4gIEBPdXRwdXQoKSBzZWxlY3RFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGNhbmRpZGF0ZXM6IGFueVtdO1xuICBjYW5kaWRhdGVzTGFiZWxzOiBhbnlbXTtcbiAgc2VsZWN0ZWRJbmRleDogbnVtYmVyO1xuICBzaG93QXV0b0NvbXBsZXRlOiBib29sZWFuO1xuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBtYXhMaW1pdCA9IDA7XG4gIHByaXZhdGUgc291cmNlRmllbGQ6IGFueTtcbiAgcHJpdmF0ZSB0aGlzRWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHRoaXMudGhpc0VsZW1lbnQgPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcbiAgICB0aGlzLnNob3dBdXRvQ29tcGxldGUgPSBmYWxzZTtcbiAgICB0aGlzLnZhbHVlID0gJyc7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuY2xhc3MpIHtcbiAgICAgIHRoaXMuY2xhc3NMaXN0ICs9ICcgJyArIHRoaXMuY29uZmlnLmNsYXNzO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcubWF4ID4gMCkge1xuICAgICAgdGhpcy5tYXhMaW1pdCA9IHRoaXMuY29uZmlnLm1heDtcbiAgICB9XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9ICdhdXRvY29tcGxldGUnO1xuICAgIHRoaXMuaW5wdXRFbGVtZW50ID0gdGhpcy50aGlzRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ2lucHV0J1xuICAgICkgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgIGlmICghdGhpcy5pc051bGwodGhpcy5jb25maWcpKSB7XG4gICAgICBpZiAoIXRoaXMuaXNOdWxsKHRoaXMuY29uZmlnLnBsYWNlaG9sZGVyKSkge1xuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5jb25maWcucGxhY2Vob2xkZXI7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuaXNOdWxsKHRoaXMuY29uZmlnLnNvdXJjZUZpZWxkKSkge1xuICAgICAgICB0aGlzLnNvdXJjZUZpZWxkID0gdGhpcy5jb25maWcuc291cmNlRmllbGQ7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZmlsdGVySXRlbXModGhpcy52YWx1ZSk7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMuZmlsdGVySXRlbXModGhpcy52YWx1ZSk7XG4gIH1cblxuICBlbnRlclRleHQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5jYW5kaWRhdGVzLmxlbmd0aDtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgIGNhc2UgMjc6XG4gICAgICAgIHRoaXMuc2hvd0F1dG9Db21wbGV0ZSA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzg6XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9ICh0b3RhbCArIHRoaXMuc2VsZWN0ZWRJbmRleCAtIDEpICUgdG90YWw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA0MDpcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gKHRvdGFsICsgdGhpcy5zZWxlY3RlZEluZGV4ICsgMSkgJSB0b3RhbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEzOlxuICAgICAgICBpZiAodGhpcy5jYW5kaWRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLm9uU2VsZWN0KHRoaXMuc2VsZWN0ZWRJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICB0aGlzLmlucHV0Q2hhbmdlZEV2ZW50LmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VsZWN0KGlkeDogbnVtYmVyKSB7XG4gICAgdGhpcy5zaG93QXV0b0NvbXBsZXRlID0gZmFsc2U7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuY2FuZGlkYXRlc0xhYmVsc1tpZHhdO1xuICAgIHRoaXMuc2VsZWN0RXZlbnQuZW1pdCh0aGlzLmNhbmRpZGF0ZXNbaWR4XSk7XG4gIH1cblxuICBvbktleVVwRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGlkeDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDEzKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0KGlkeCk7XG4gICAgfVxuIH1cblxuICBmaWx0ZXJJdGVtcyhzZWFyY2g6IHN0cmluZykge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5zb3VyY2VGaWVsZDtcbiAgICBjb25zdCBmaWx0ZXJJdGVtID0gdGhpcy5maWx0ZXJJdGVtO1xuICAgIGlmICh0aGlzLml0ZW1zKSB7XG4gICAgICB0aGlzLmNhbmRpZGF0ZXMgPSB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIGZpbHRlckl0ZW0oaXRlbSwgZmllbGQsIHNlYXJjaCk7XG4gICAgICB9KTtcbiAgICAgIGlmICh0aGlzLm1heExpbWl0ID4gMCkge1xuICAgICAgICB0aGlzLmNhbmRpZGF0ZXMgPSB0aGlzLmNhbmRpZGF0ZXMuc2xpY2UoMCwgdGhpcy5tYXhMaW1pdCk7XG4gICAgICB9XG4gICAgICB0aGlzLmJ1aWxkTGFiZWxzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWVsZFZhbHVlKG9iamVjdDogYW55LCBwYXRoOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuICAgIGlmIChwYXRoIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGxldCByZXN1bHQ6IGFueSA9IG9iamVjdDtcbiAgICAgIHBhdGguZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXN1bHQgIT09IG51bGwgJiZcbiAgICAgICAgICByZXN1bHQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHJlc3VsdFtlbGVtZW50XSAhPT0gbnVsbCAmJlxuICAgICAgICAgIHJlc3VsdFtlbGVtZW50XSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFtlbGVtZW50XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSAnJztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2JqZWN0W3BhdGhdIHx8ICcnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNOdWxsKG9iamVjdDogYW55KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PT0gbnVsbCB8fCBvYmplY3QgPT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRMYWJlbHMoKSB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLnNvdXJjZUZpZWxkO1xuICAgIGNvbnN0IGdldEZpZWxkVmFsdWUgPSB0aGlzLmdldEZpZWxkVmFsdWU7XG4gICAgdGhpcy5jYW5kaWRhdGVzTGFiZWxzID0gdGhpcy5jYW5kaWRhdGVzLm1hcCgoZTogYW55KSA9PlxuICAgICAgZ2V0RmllbGRWYWx1ZShlLCBmaWVsZClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJJdGVtKGl0ZW06IGFueSwgcGF0aDogYW55LCBzZWFyY2g6IHN0cmluZykge1xuICAgIGlmIChzZWFyY2ggPT09IG51bGwgfHwgc2VhcmNoID09PSB1bmRlZmluZWQgfHwgc2VhcmNoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGxldCByZXN1bHQ6IGFueTtcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXN1bHQgPSBpdGVtO1xuICAgIH0gZWxzZSBpZiAocGF0aCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICByZXN1bHQgPSBpdGVtO1xuICAgICAgcGF0aC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlc3VsdCAhPT0gbnVsbCAmJlxuICAgICAgICAgIHJlc3VsdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgcmVzdWx0W2VsZW1lbnRdICE9PSBudWxsICYmXG4gICAgICAgICAgcmVzdWx0W2VsZW1lbnRdICE9PSB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0W2VsZW1lbnRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9ICcnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gaXRlbVtwYXRoXSB8fCAnJztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdC50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoLnRvTG93ZXJDYXNlKCkpID49IDA7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICBzZWxlY3RvcjogJ1tpbnB1dC1hdXRvY29tcGxldGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgY29uZmlnOiBhbnk7XG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnk7XG4gIEBJbnB1dCgpIG5nTW9kZWw6IHN0cmluZztcbiAgQE91dHB1dCgpIG5nTW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZWRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNlbGVjdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8QXV0b2NvbXBsZXRlQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSB0aGlzRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgYXV0b2NvbXBsZXRlRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xuICBwcml2YXRlIHRhYkluZGV4OiBudW1iZXI7XG4gIHByaXZhdGUgcmVzZXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgKSB7XG4gICAgdGhpcy50aGlzRWxlbWVudCA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy50aGlzRWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdmb3JtJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZURpdigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWxlY3RFdmVudC51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuaW5wdXRDaGFuZ2VkRXZlbnQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhpZGVBdXRvY29tcGxldGUpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogeyBbcHJvcEtleTogc3RyaW5nXTogU2ltcGxlQ2hhbmdlIH0pIHtcbiAgICBpZiAoY2hhbmdlc1snaXRlbXMnXSAmJiB0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgICBjb21wb25lbnQuaXRlbXMgPSBjaGFuZ2VzWydpdGVtcyddLmN1cnJlbnRWYWx1ZTtcbiAgICAgIGNvbXBvbmVudC5maWx0ZXJJdGVtcyhjb21wb25lbnQudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuZ2V0SW5wdXRFbGVtZW50KCk7XG4gICAgaWYgKGlucHV0LmZvcm0pIHtcbiAgICAgIGlucHV0LmZvcm0uYWRkRXZlbnRMaXN0ZW5lcigncmVzZXQnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzZXQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudC50YXJnZXQnXSlcbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnLCBbJyRldmVudC50YXJnZXQnXSlcbiAgc2hvd0F1dG9jb21wbGV0ZShldmVudDogYW55KSB7XG4gICAgdGhpcy5oaWRlQXV0b2NvbXBsZXRlKCk7XG4gICAgaWYgKGV2ZW50ID09PSB0aGlzLnRoaXNFbGVtZW50KSB7XG4gICAgICB0aGlzLmNyZWF0ZUF1dG9jb21wbGV0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldElucHV0RWxlbWVudCgpIHtcbiAgICBsZXQgaW5wdXQgPSB0aGlzLnRoaXNFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICBpZiAodGhpcy50aGlzRWxlbWVudC50YWdOYW1lICE9PSAnSU5QVVQnICYmIHRoaXMuYXV0b2NvbXBsZXRlRWxlbWVudCkge1xuICAgICAgaW5wdXQgPSB0aGlzLnRoaXNFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICdpbnB1dCdcbiAgICAgICkgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5wdXQ7XG4gIH1cblxuICBoaWRlQXV0b2NvbXBsZXRlID0gKGV2ZW50PzogYW55KTogdm9pZCA9PiB7XG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0ICYmIHRoaXMudGhpc0VsZW1lbnQgJiYgZXZlbnQudGFyZ2V0ID09PSB0aGlzLnRoaXNFbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIWV2ZW50IHx8XG4gICAgICAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLnRoaXNFbGVtZW50ICYmIGV2ZW50LnR5cGUgPT09ICdjbGljaycpXG4gICAgKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50Wyd0YWJJbmRleCddIDwgMCkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnRbJ3RhYkluZGV4J10gPSB0aGlzLnRhYkluZGV4O1xuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXRDaGFuZ2VkID0gKHZhbDogc3RyaW5nKSA9PiB7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgPSB2YWw7XG4gICAgaWYgKHZhbCAhPT0gdGhpcy5uZ01vZGVsKSB7XG4gICAgICB0aGlzLm5nTW9kZWwgPSB2YWw7XG4gICAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdCh2YWwpO1xuICAgIH1cbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICBjb21wb25lbnQuZmlsdGVySXRlbXModmFsKTtcbiAgICB0aGlzLmlucHV0Q2hhbmdlZEV2ZW50LmVtaXQodmFsKTtcbiAgfVxuXG4gIG9uU2VsZWN0ID0gKGl0ZW06IGFueSkgPT4ge1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIGNvbnN0IHZhbCA9IGNvbXBvbmVudC52YWx1ZTtcbiAgICBpZiAodmFsICE9PSB0aGlzLm5nTW9kZWwpIHtcbiAgICAgIHRoaXMubmdNb2RlbCA9IHZhbDtcbiAgICAgIHRoaXMubmdNb2RlbENoYW5nZS5lbWl0KHZhbCk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0RXZlbnQuZW1pdChpdGVtKTtcbiAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlID0gJycgKyB2YWw7XG4gICAgfVxuICAgIHRoaXMuaGlkZUF1dG9jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEaXYoKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snO1xuICAgIGVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgIHRoaXMudGhpc0VsZW1lbnQucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUoXG4gICAgICBlbGVtZW50LFxuICAgICAgdGhpcy50aGlzRWxlbWVudC5uZXh0U2libGluZ1xuICAgICk7XG4gICAgZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnRoaXNFbGVtZW50KTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGlkZUF1dG9jb21wbGV0ZSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUF1dG9jb21wbGV0ZSgpIHtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShcbiAgICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgICk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIGNvbXBvbmVudC5jb25maWcgPSB0aGlzLmNvbmZpZztcbiAgICBjb21wb25lbnQuaXRlbXMgPSB0aGlzLml0ZW1zO1xuICAgIGNvbXBvbmVudC5zZWxlY3RFdmVudC5zdWJzY3JpYmUodGhpcy5vblNlbGVjdCk7XG4gICAgY29tcG9uZW50LmlucHV0Q2hhbmdlZEV2ZW50LnN1YnNjcmliZSh0aGlzLm9uSW5wdXRDaGFuZ2VkKTtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIHRoaXMuaW5wdXRFbGVtZW50ID0gdGhpcy5nZXRJbnB1dEVsZW1lbnQoKTtcbiAgICBpZiAodGhpcy50aGlzRWxlbWVudC50YWdOYW1lICE9PSAnSU5QVVQnICYmIHRoaXMuYXV0b2NvbXBsZXRlRWxlbWVudCkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRWxlbWVudCxcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmV4dFNpYmxpbmdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzZXQpIHtcbiAgICAgIHRoaXMubmdNb2RlbCA9ICcnO1xuICAgICAgdGhpcy5yZXNldCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlID0gdGhpcy5uZ01vZGVsID8gdGhpcy5uZ01vZGVsIDogJyc7XG4gICAgY29tcG9uZW50LnZhbHVlID0gdGhpcy5pbnB1dEVsZW1lbnQudmFsdWU7XG4gICAgdGhpcy50YWJJbmRleCA9IHRoaXMuaW5wdXRFbGVtZW50Wyd0YWJJbmRleCddO1xuICAgIHRoaXMuaW5wdXRFbGVtZW50Wyd0YWJJbmRleCddID0gLTEwMDtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLnRoaXNFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3Qgc3R5bGUgPSB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQuc3R5bGU7XG4gICAgICBzdHlsZS53aWR0aCA9IHJlY3Qud2lkdGggKyAncHgnO1xuICAgICAgc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgc3R5bGUuekluZGV4ID0gJzEnO1xuICAgICAgc3R5bGUudG9wID0gJzAnO1xuICAgICAgc3R5bGUubGVmdCA9ICcwJztcbiAgICAgIHN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi1pbnB1dC1hdXRvY29tcGxldGUvIiwic291cmNlcyI6WyJsaWIvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBR0EsT0FBTyxFQUNMLFNBQVMsRUFDVCx3QkFBd0IsRUFFeEIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFLTCxNQUFNLEVBRU4sZ0JBQWdCLEVBRWpCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7SUEwRXpDLCtCQUFZLFVBQXNCO3lCQWhCdEIsY0FBYzsyQkFHaUIsSUFBSSxZQUFZLEVBQU87aUNBQ2pCLElBQUksWUFBWSxFQUFPO3dCQVE3RCxDQUFDO1FBS1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7S0FDakI7Ozs7SUFFRCx3Q0FBUTs7O0lBQVI7UUFDRSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDM0M7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDakM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FB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Iiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgTUlUIExJQ0VOU0UgQGxpdXk5N1xuKi9cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZSxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgSG9zdEJpbmRpbmdcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgc2VsZWN0b3I6ICduZzItaW5wdXQtYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGU6IGBcbiAgPGRpdiBbbmdDbGFzc109XCJjbGFzc0xpc3RcIj5cbiAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7e3BsYWNlaG9sZGVyfX1cIlxuICAgICAgKGJsdXIpPVwic2hvd0F1dG9Db21wbGV0ZSA9IGZhbHNlO1wiXG4gICAgICAoZm9jdXMpPVwic2hvd0F1dG9Db21wbGV0ZSA9IHRydWU7XCJcbiAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAoa2V5dXApPVwiZW50ZXJUZXh0KCRldmVudClcIj5cbiAgICA8dWwgKm5nSWY9XCJzaG93QXV0b0NvbXBsZXRlICYmIGNhbmRpZGF0ZXMgJiYgY2FuZGlkYXRlcy5sZW5ndGggPiAwXCI+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzOyBsZXQgaWR4ID0gaW5kZXhcIlxuICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogKGlkeCA9PT0gc2VsZWN0ZWRJbmRleCkgfVwiXG4gICAgICAgIChrZXl1cCk9XCJvbktleVVwRXZlbnQoJGV2ZW50LCBpZHgpXCJcbiAgICAgICAgKG1vdXNlb3Zlcik9XCJzZWxlY3RlZEluZGV4ID0gaWR4O1wiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25TZWxlY3QoaWR4KVwiPlxuICAgICAgICB7e2NhbmRpZGF0ZXNMYWJlbHNbaWR4XX19XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PmAsXG4gIHN0eWxlczogW1xuICAgIGAuYXV0b2NvbXBsZXRlIHVsIHtcbiAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgbGVmdDogMDtcbiAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICM4ODg7XG4gICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzg4ODtcbiAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzg4ODtcbiAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgIHBhZGRpbmctbGVmdDogMHB4O1xuICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgIHotaW5kZXg6IDEwMDtcbiAgICAgfVxuICAgICAuYXV0b2NvbXBsZXRlIGxpIHtcbiAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgcGFkZGluZzogMC40ZW0gMCAwLjRlbSAwO1xuICAgICB9XG4gICAgIC5hdXRvY29tcGxldGUgbGkuYWN0aXZlIHtcbiAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGJmO1xuICAgICB9XG5cbiAgICAgLmF1dG9jb21wbGV0ZSAuaGlnaGxpZ2h0IHtcbiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTJlMmUyO1xuICAgICB9XG4gICAgIC5hdXRvY29tcGxldGUgbGkuYWN0aXZlIC5oaWdobGlnaHQge1xuICAgICAgIGJhY2tncm91bmQ6ICM2NjY7XG4gICAgICAgY29sb3I6ICNmZmY7XG4gICAgIH1gXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBjbGFzc0xpc3QgPSAnYXV0b2NvbXBsZXRlJztcbiAgQElucHV0KCkgaXRlbXM6IGFueVtdO1xuICBASW5wdXQoKSBjb25maWc6IGFueTtcbiAgQE91dHB1dCgpIHNlbGVjdEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2VkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudDtcbiAgdmFsdWU6IHN0cmluZztcbiAgY2FuZGlkYXRlczogYW55W107XG4gIGNhbmRpZGF0ZXNMYWJlbHM6IGFueVtdO1xuICBzZWxlY3RlZEluZGV4OiBudW1iZXI7XG4gIHNob3dBdXRvQ29tcGxldGU6IGJvb2xlYW47XG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIG1heExpbWl0ID0gMDtcbiAgcHJpdmF0ZSBzb3VyY2VGaWVsZDogYW55O1xuICBwcml2YXRlIHRoaXNFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy50aGlzRWxlbWVudCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xuICAgIHRoaXMuc2hvd0F1dG9Db21wbGV0ZSA9IGZhbHNlO1xuICAgIHRoaXMudmFsdWUgPSAnJztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5jbGFzcykge1xuICAgICAgdGhpcy5jbGFzc0xpc3QgKz0gJyAnICsgdGhpcy5jb25maWcuY2xhc3M7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5tYXggPiAwKSB7XG4gICAgICB0aGlzLm1heExpbWl0ID0gdGhpcy5jb25maWcubWF4O1xuICAgIH1cbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQgPSB0aGlzLnRoaXNFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnaW5wdXQnXG4gICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgaWYgKCF0aGlzLmlzTnVsbCh0aGlzLmNvbmZpZykpIHtcbiAgICAgIGlmICghdGhpcy5pc051bGwodGhpcy5jb25maWcucGxhY2Vob2xkZXIpKSB7XG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLmNvbmZpZy5wbGFjZWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5pc051bGwodGhpcy5jb25maWcuc291cmNlRmllbGQpKSB7XG4gICAgICAgIHRoaXMuc291cmNlRmllbGQgPSB0aGlzLmNvbmZpZy5zb3VyY2VGaWVsZDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5maWx0ZXJJdGVtcyh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLmlucHV0RWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5maWx0ZXJJdGVtcyh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGVudGVyVGV4dChldmVudDogYW55KSB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLmNhbmRpZGF0ZXMubGVuZ3RoO1xuICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgY2FzZSAyNzpcbiAgICAgICAgdGhpcy5zaG93QXV0b0NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzODpcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gKHRvdGFsICsgdGhpcy5zZWxlY3RlZEluZGV4IC0gMSkgJSB0b3RhbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQwOlxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAodG90YWwgKyB0aGlzLnNlbGVjdGVkSW5kZXggKyAxKSAlIHRvdGFsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTM6XG4gICAgICAgIGlmICh0aGlzLmNhbmRpZGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMub25TZWxlY3QodGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMudmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2VkRXZlbnQuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb25TZWxlY3QoaWR4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNob3dBdXRvQ29tcGxldGUgPSBmYWxzZTtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5jYW5kaWRhdGVzTGFiZWxzW2lkeF07XG4gICAgdGhpcy5zZWxlY3RFdmVudC5lbWl0KHRoaXMuY2FuZGlkYXRlc1tpZHhdKTtcbiAgfVxuXG4gIG9uS2V5VXBFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCwgaWR4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgIHRoaXMub25TZWxlY3QoaWR4KTtcbiAgICB9XG4gfVxuXG4gIGZpbHRlckl0ZW1zKHNlYXJjaDogc3RyaW5nKSB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLnNvdXJjZUZpZWxkO1xuICAgIGNvbnN0IGZpbHRlckl0ZW0gPSB0aGlzLmZpbHRlckl0ZW07XG4gICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgIHRoaXMuY2FuZGlkYXRlcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4gZmlsdGVySXRlbShpdGVtLCBmaWVsZCwgc2VhcmNoKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMubWF4TGltaXQgPiAwKSB7XG4gICAgICAgIHRoaXMuY2FuZGlkYXRlcyA9IHRoaXMuY2FuZGlkYXRlcy5zbGljZSgwLCB0aGlzLm1heExpbWl0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnVpbGRMYWJlbHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEZpZWxkVmFsdWUob2JqZWN0OiBhbnksIHBhdGg6IGFueSkge1xuICAgIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG4gICAgaWYgKHBhdGggaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgbGV0IHJlc3VsdDogYW55ID0gb2JqZWN0O1xuICAgICAgcGF0aC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlc3VsdCAhPT0gbnVsbCAmJlxuICAgICAgICAgIHJlc3VsdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgcmVzdWx0W2VsZW1lbnRdICE9PSBudWxsICYmXG4gICAgICAgICAgcmVzdWx0W2VsZW1lbnRdICE9PSB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0W2VsZW1lbnRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9ICcnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvYmplY3RbcGF0aF0gfHwgJyc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc051bGwob2JqZWN0OiBhbnkpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09PSBudWxsIHx8IG9iamVjdCA9PT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZExhYmVscygpIHtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuc291cmNlRmllbGQ7XG4gICAgY29uc3QgZ2V0RmllbGRWYWx1ZSA9IHRoaXMuZ2V0RmllbGRWYWx1ZTtcbiAgICB0aGlzLmNhbmRpZGF0ZXNMYWJlbHMgPSB0aGlzLmNhbmRpZGF0ZXMubWFwKChlOiBhbnkpID0+XG4gICAgICBnZXRGaWVsZFZhbHVlKGUsIGZpZWxkKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckl0ZW0oaXRlbTogYW55LCBwYXRoOiBhbnksIHNlYXJjaDogc3RyaW5nKSB7XG4gICAgaWYgKHNlYXJjaCA9PT0gbnVsbCB8fCBzZWFyY2ggPT09IHVuZGVmaW5lZCB8fCBzZWFyY2gubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdDogYW55O1xuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdCA9IGl0ZW07XG4gICAgfSBlbHNlIGlmIChwYXRoIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHJlc3VsdCA9IGl0ZW07XG4gICAgICBwYXRoLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVzdWx0ICE9PSBudWxsICYmXG4gICAgICAgICAgcmVzdWx0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICByZXN1bHRbZWxlbWVudF0gIT09IG51bGwgJiZcbiAgICAgICAgICByZXN1bHRbZWxlbWVudF0gIT09IHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHRbZWxlbWVudF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBpdGVtW3BhdGhdIHx8ICcnO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2gudG9Mb3dlckNhc2UoKSkgPj0gMDtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIHNlbGVjdG9yOiAnW2lucHV0LWF1dG9jb21wbGV0ZV0nXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBjb25maWc6IGFueTtcbiAgQElucHV0KCkgaXRlbXM6IGFueTtcbiAgQElucHV0KCkgbmdNb2RlbDogc3RyaW5nO1xuICBASW5wdXQoKSBjb250cm9sOiBGb3JtQ29udHJvbDtcbiAgQE91dHB1dCgpIG5nTW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZWRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNlbGVjdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8QXV0b2NvbXBsZXRlQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSB0aGlzRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgYXV0b2NvbXBsZXRlRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xuICBwcml2YXRlIHRhYkluZGV4OiBudW1iZXI7XG4gIHByaXZhdGUgcmVzZXQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgKSB7XG4gICAgdGhpcy50aGlzRWxlbWVudCA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy50aGlzRWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdmb3JtJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZURpdigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWxlY3RFdmVudC51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuaW5wdXRDaGFuZ2VkRXZlbnQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhpZGVBdXRvY29tcGxldGUpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogeyBbcHJvcEtleTogc3RyaW5nXTogU2ltcGxlQ2hhbmdlIH0pIHtcbiAgICBpZiAoY2hhbmdlc1snaXRlbXMnXSAmJiB0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgICBjb21wb25lbnQuaXRlbXMgPSBjaGFuZ2VzWydpdGVtcyddLmN1cnJlbnRWYWx1ZTtcbiAgICAgIGNvbXBvbmVudC5maWx0ZXJJdGVtcyhjb21wb25lbnQudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuZ2V0SW5wdXRFbGVtZW50KCk7XG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0ID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoaW5wdXQuZm9ybSkge1xuICAgICAgaW5wdXQuZm9ybS5hZGRFdmVudExpc3RlbmVyKCdyZXNldCcsICgpID0+IHtcbiAgICAgICAgdGhpcy5yZXNldCA9IHRydWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBASG9zdExpc3RlbmVyKCdmb2N1cycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBzaG93QXV0b2NvbXBsZXRlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmhpZGVBdXRvY29tcGxldGUoKTtcbiAgICBpZiAoZXZlbnQgPT09IHRoaXMudGhpc0VsZW1lbnQpIHtcbiAgICAgIHRoaXMuY3JlYXRlQXV0b2NvbXBsZXRlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SW5wdXRFbGVtZW50KCkge1xuICAgIGxldCBpbnB1dCA9IHRoaXMudGhpc0VsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgIGlmICh0aGlzLnRoaXNFbGVtZW50LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50KSB7XG4gICAgICBpbnB1dCA9IHRoaXMudGhpc0VsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJ2lucHV0J1xuICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuXG4gIGhpZGVBdXRvY29tcGxldGUgPSAoZXZlbnQ/OiBhbnkpOiB2b2lkID0+IHtcbiAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldmVudCAmJiBldmVudC50YXJnZXQgJiYgdGhpcy50aGlzRWxlbWVudCAmJiBldmVudC50YXJnZXQgPT09IHRoaXMudGhpc0VsZW1lbnQucGFyZW50RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhZXZlbnQgfHxcbiAgICAgIChldmVudC50YXJnZXQgIT09IHRoaXMudGhpc0VsZW1lbnQgJiYgZXZlbnQudHlwZSA9PT0gJ2NsaWNrJylcbiAgICApIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnRbJ3RhYkluZGV4J10gPCAwKSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudFsndGFiSW5kZXgnXSA9IHRoaXMudGFiSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgb25JbnB1dENoYW5nZWQgPSAodmFsOiBzdHJpbmcpID0+IHtcbiAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9IHZhbDtcbiAgICBpZiAodmFsICE9PSB0aGlzLm5nTW9kZWwpIHtcbiAgICAgIHRoaXMubmdNb2RlbCA9IHZhbDtcbiAgICAgIHRoaXMubmdNb2RlbENoYW5nZS5lbWl0KHZhbCk7XG4gICAgfVxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIGNvbXBvbmVudC5maWx0ZXJJdGVtcyh2YWwpO1xuICAgIHRoaXMuaW5wdXRDaGFuZ2VkRXZlbnQuZW1pdCh2YWwpO1xuICB9XG5cbiAgb25TZWxlY3QgPSAoaXRlbTogYW55KSA9PiB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgY29uc3QgdmFsID0gY29tcG9uZW50LnZhbHVlO1xuICAgIGlmICh2YWwgIT09IHRoaXMubmdNb2RlbCkge1xuICAgICAgdGhpcy5uZ01vZGVsID0gdmFsO1xuICAgICAgdGhpcy5uZ01vZGVsQ2hhbmdlLmVtaXQodmFsKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RFdmVudC5lbWl0KGl0ZW0pO1xuICAgIGlmICh0aGlzLmlucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgPSAnJyArIHZhbDtcbiAgICB9XG4gICAgdGhpcy5oaWRlQXV0b2NvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURpdigpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgdGhpcy50aGlzRWxlbWVudC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShcbiAgICAgIGVsZW1lbnQsXG4gICAgICB0aGlzLnRoaXNFbGVtZW50Lm5leHRTaWJsaW5nXG4gICAgKTtcbiAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudGhpc0VsZW1lbnQpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oaWRlQXV0b2NvbXBsZXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQXV0b2NvbXBsZXRlKCkge1xuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLnJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFxuICAgICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSk7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgY29tcG9uZW50LmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgIGNvbXBvbmVudC5pdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgY29tcG9uZW50LnNlbGVjdEV2ZW50LnN1YnNjcmliZSh0aGlzLm9uU2VsZWN0KTtcbiAgICBjb21wb25lbnQuaW5wdXRDaGFuZ2VkRXZlbnQuc3Vic2NyaWJlKHRoaXMub25JbnB1dENoYW5nZWQpO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlRWxlbWVudCA9IHRoaXMuY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQgPSB0aGlzLmdldElucHV0RWxlbWVudCgpO1xuICAgIGlmICh0aGlzLnRoaXNFbGVtZW50LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50KSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50LFxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uZXh0U2libGluZ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNldCkge1xuICAgICAgdGhpcy5uZ01vZGVsID0gJyc7XG4gICAgICB0aGlzLnJlc2V0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgPSB0aGlzLm5nTW9kZWwgPyB0aGlzLm5nTW9kZWwgOiAnJztcbiAgICBjb21wb25lbnQudmFsdWUgPSB0aGlzLmlucHV0RWxlbWVudC52YWx1ZTtcbiAgICB0aGlzLnRhYkluZGV4ID0gdGhpcy5pbnB1dEVsZW1lbnRbJ3RhYkluZGV4J107XG4gICAgdGhpcy5pbnB1dEVsZW1lbnRbJ3RhYkluZGV4J10gPSAtMTAwO1xuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgY29uc3QgcmVjdCA9IHRoaXMudGhpc0VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBzdHlsZSA9IHRoaXMuYXV0b2NvbXBsZXRlRWxlbWVudC5zdHlsZTtcbiAgICAgIHN0eWxlLndpZHRoID0gcmVjdC53aWR0aCArICdweCc7XG4gICAgICBzdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICBzdHlsZS56SW5kZXggPSAnMSc7XG4gICAgICBzdHlsZS50b3AgPSAnMCc7XG4gICAgICBzdHlsZS5sZWZ0ID0gJzAnO1xuICAgICAgc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snO1xuICAgIH1cbiAgfVxufVxuIl19
import { Component, ComponentFactoryResolver, Directive, ElementRef, EventEmitter, HostListener, Input, Output, ViewContainerRef, NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';

@@ -358,2 +358,7 @@ /**

const input = this.getInputElement();
if (this.control) {
this.control.valueChanges.subscribe(() => {
this.reset = true;
});
}
if (input.form) {

@@ -454,2 +459,3 @@ input.form.addEventListener('reset', () => {

ngModel: [{ type: Input }],
control: [{ type: Input }],
ngModelChange: [{ type: Output }],

@@ -496,2 +502,2 @@ inputChangedEvent: [{ type: Output }],

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLWlucHV0LWF1dG9jb21wbGV0ZS5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vbmcyLWlucHV0LWF1dG9jb21wbGV0ZS9saWIvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIm5nOi8vbmcyLWlucHV0LWF1dG9jb21wbGV0ZS9saWIvYXV0b2NvbXBsZXRlLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICBNSVQgTElDRU5TRSBAbGl1eTk3XG4qL1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBIb3N0QmluZGluZ1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICBzZWxlY3RvcjogJ25nMi1pbnB1dC1hdXRvY29tcGxldGUnLFxuICB0ZW1wbGF0ZTogYFxuICA8ZGl2IFtuZ0NsYXNzXT1cImNsYXNzTGlzdFwiPlxuICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7cGxhY2Vob2xkZXJ9fVwiXG4gICAgICAoYmx1cik9XCJzaG93QXV0b0NvbXBsZXRlID0gZmFsc2U7XCJcbiAgICAgIChmb2N1cyk9XCJzaG93QXV0b0NvbXBsZXRlID0gdHJ1ZTtcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIChrZXl1cCk9XCJlbnRlclRleHQoJGV2ZW50KVwiPlxuICAgIDx1bCAqbmdJZj1cInNob3dBdXRvQ29tcGxldGUgJiYgY2FuZGlkYXRlcyAmJiBjYW5kaWRhdGVzLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXM7IGxldCBpZHggPSBpbmRleFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiAoaWR4ID09PSBzZWxlY3RlZEluZGV4KSB9XCJcbiAgICAgICAgKGtleXVwKT1cIm9uS2V5VXBFdmVudCgkZXZlbnQsIGlkeClcIlxuICAgICAgICAobW91c2VvdmVyKT1cInNlbGVjdGVkSW5kZXggPSBpZHg7XCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvblNlbGVjdChpZHgpXCI+XG4gICAgICAgIHt7Y2FuZGlkYXRlc0xhYmVsc1tpZHhdfX1cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+YCxcbiAgc3R5bGVzOiBbXG4gICAgYC5hdXRvY29tcGxldGUgdWwge1xuICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICBsZWZ0OiAwO1xuICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzg4ODtcbiAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjODg4O1xuICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjODg4O1xuICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgcGFkZGluZy1sZWZ0OiAwcHg7XG4gICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgei1pbmRleDogMTAwO1xuICAgICB9XG4gICAgIC5hdXRvY29tcGxldGUgbGkge1xuICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICBwYWRkaW5nOiAwLjRlbSAwIDAuNGVtIDA7XG4gICAgIH1cbiAgICAgLmF1dG9jb21wbGV0ZSBsaS5hY3RpdmUge1xuICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0YmY7XG4gICAgIH1cblxuICAgICAuYXV0b2NvbXBsZXRlIC5oaWdobGlnaHQge1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMmUyZTI7XG4gICAgIH1cbiAgICAgLmF1dG9jb21wbGV0ZSBsaS5hY3RpdmUgLmhpZ2hsaWdodCB7XG4gICAgICAgYmFja2dyb3VuZDogIzY2NjtcbiAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgfWBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIGNsYXNzTGlzdCA9ICdhdXRvY29tcGxldGUnO1xuICBASW5wdXQoKSBpdGVtczogYW55W107XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55O1xuICBAT3V0cHV0KCkgc2VsZWN0RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xuICB2YWx1ZTogc3RyaW5nO1xuICBjYW5kaWRhdGVzOiBhbnlbXTtcbiAgY2FuZGlkYXRlc0xhYmVsczogYW55W107XG4gIHNlbGVjdGVkSW5kZXg6IG51bWJlcjtcbiAgc2hvd0F1dG9Db21wbGV0ZTogYm9vbGVhbjtcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgbWF4TGltaXQgPSAwO1xuICBwcml2YXRlIHNvdXJjZUZpZWxkOiBhbnk7XG4gIHByaXZhdGUgdGhpc0VsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLnRoaXNFbGVtZW50ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7XG4gICAgdGhpcy5zaG93QXV0b0NvbXBsZXRlID0gZmFsc2U7XG4gICAgdGhpcy52YWx1ZSA9ICcnO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmNsYXNzKSB7XG4gICAgICB0aGlzLmNsYXNzTGlzdCArPSAnICcgKyB0aGlzLmNvbmZpZy5jbGFzcztcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLm1heCA+IDApIHtcbiAgICAgIHRoaXMubWF4TGltaXQgPSB0aGlzLmNvbmZpZy5tYXg7XG4gICAgfVxuICAgIHRoaXMucGxhY2Vob2xkZXIgPSAnYXV0b2NvbXBsZXRlJztcbiAgICB0aGlzLmlucHV0RWxlbWVudCA9IHRoaXMudGhpc0VsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdpbnB1dCdcbiAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICBpZiAoIXRoaXMuaXNOdWxsKHRoaXMuY29uZmlnKSkge1xuICAgICAgaWYgKCF0aGlzLmlzTnVsbCh0aGlzLmNvbmZpZy5wbGFjZWhvbGRlcikpIHtcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuY29uZmlnLnBsYWNlaG9sZGVyO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmlzTnVsbCh0aGlzLmNvbmZpZy5zb3VyY2VGaWVsZCkpIHtcbiAgICAgICAgdGhpcy5zb3VyY2VGaWVsZCA9IHRoaXMuY29uZmlnLnNvdXJjZUZpZWxkO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmZpbHRlckl0ZW1zKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuaW5wdXRFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLmZpbHRlckl0ZW1zKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgZW50ZXJUZXh0KGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMuY2FuZGlkYXRlcy5sZW5ndGg7XG4gICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICBjYXNlIDI3OlxuICAgICAgICB0aGlzLnNob3dBdXRvQ29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM4OlxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAodG90YWwgKyB0aGlzLnNlbGVjdGVkSW5kZXggLSAxKSAlIHRvdGFsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDA6XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9ICh0b3RhbCArIHRoaXMuc2VsZWN0ZWRJbmRleCArIDEpICUgdG90YWw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMzpcbiAgICAgICAgaWYgKHRoaXMuY2FuZGlkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5vblNlbGVjdCh0aGlzLnNlbGVjdGVkSW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy52YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZWRFdmVudC5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBvblNlbGVjdChpZHg6IG51bWJlcikge1xuICAgIHRoaXMuc2hvd0F1dG9Db21wbGV0ZSA9IGZhbHNlO1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLmNhbmRpZGF0ZXNMYWJlbHNbaWR4XTtcbiAgICB0aGlzLnNlbGVjdEV2ZW50LmVtaXQodGhpcy5jYW5kaWRhdGVzW2lkeF0pO1xuICB9XG5cbiAgb25LZXlVcEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpZHg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXlDb2RlID09PSAxMykge1xuICAgICAgdGhpcy5vblNlbGVjdChpZHgpO1xuICAgIH1cbiB9XG5cbiAgZmlsdGVySXRlbXMoc2VhcmNoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuc291cmNlRmllbGQ7XG4gICAgY29uc3QgZmlsdGVySXRlbSA9IHRoaXMuZmlsdGVySXRlbTtcbiAgICBpZiAodGhpcy5pdGVtcykge1xuICAgICAgdGhpcy5jYW5kaWRhdGVzID0gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiBmaWx0ZXJJdGVtKGl0ZW0sIGZpZWxkLCBzZWFyY2gpO1xuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy5tYXhMaW1pdCA+IDApIHtcbiAgICAgICAgdGhpcy5jYW5kaWRhdGVzID0gdGhpcy5jYW5kaWRhdGVzLnNsaWNlKDAsIHRoaXMubWF4TGltaXQpO1xuICAgICAgfVxuICAgICAgdGhpcy5idWlsZExhYmVscygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmllbGRWYWx1ZShvYmplY3Q6IGFueSwgcGF0aDogYW55KSB7XG4gICAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cbiAgICBpZiAocGF0aCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBsZXQgcmVzdWx0OiBhbnkgPSBvYmplY3Q7XG4gICAgICBwYXRoLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVzdWx0ICE9PSBudWxsICYmXG4gICAgICAgICAgcmVzdWx0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICByZXN1bHRbZWxlbWVudF0gIT09IG51bGwgJiZcbiAgICAgICAgICByZXN1bHRbZWxlbWVudF0gIT09IHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHRbZWxlbWVudF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9iamVjdFtwYXRoXSB8fCAnJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzTnVsbChvYmplY3Q6IGFueSkge1xuICAgIHJldHVybiBvYmplY3QgPT09IG51bGwgfHwgb2JqZWN0ID09PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTGFiZWxzKCkge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5zb3VyY2VGaWVsZDtcbiAgICBjb25zdCBnZXRGaWVsZFZhbHVlID0gdGhpcy5nZXRGaWVsZFZhbHVlO1xuICAgIHRoaXMuY2FuZGlkYXRlc0xhYmVscyA9IHRoaXMuY2FuZGlkYXRlcy5tYXAoKGU6IGFueSkgPT5cbiAgICAgIGdldEZpZWxkVmFsdWUoZSwgZmllbGQpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVySXRlbShpdGVtOiBhbnksIHBhdGg6IGFueSwgc2VhcmNoOiBzdHJpbmcpIHtcbiAgICBpZiAoc2VhcmNoID09PSBudWxsIHx8IHNlYXJjaCA9PT0gdW5kZWZpbmVkIHx8IHNlYXJjaC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBsZXQgcmVzdWx0OiBhbnk7XG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xuICAgICAgcmVzdWx0ID0gaXRlbTtcbiAgICB9IGVsc2UgaWYgKHBhdGggaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgcmVzdWx0ID0gaXRlbTtcbiAgICAgIHBhdGguZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXN1bHQgIT09IG51bGwgJiZcbiAgICAgICAgICByZXN1bHQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHJlc3VsdFtlbGVtZW50XSAhPT0gbnVsbCAmJlxuICAgICAgICAgIHJlc3VsdFtlbGVtZW50XSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFtlbGVtZW50XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSAnJztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGl0ZW1bcGF0aF0gfHwgJyc7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSA+PSAwO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgc2VsZWN0b3I6ICdbaW5wdXQtYXV0b2NvbXBsZXRlXSdcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55O1xuICBASW5wdXQoKSBpdGVtczogYW55O1xuICBASW5wdXQoKSBuZ01vZGVsOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBuZ01vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2VkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEF1dG9jb21wbGV0ZUNvbXBvbmVudD47XG4gIHByaXZhdGUgdGhpc0VsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGF1dG9jb21wbGV0ZUVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudDtcbiAgcHJpdmF0ZSB0YWJJbmRleDogbnVtYmVyO1xuICBwcml2YXRlIHJlc2V0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHB1YmxpYyB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge1xuICAgIHRoaXMudGhpc0VsZW1lbnQgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMudGhpc0VsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnZm9ybScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVEaXYoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VsZWN0RXZlbnQudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmlucHV0Q2hhbmdlZEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oaWRlQXV0b2NvbXBsZXRlKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsgW3Byb3BLZXk6IHN0cmluZ106IFNpbXBsZUNoYW5nZSB9KSB7XG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10gJiYgdGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgICAgY29tcG9uZW50Lml0ZW1zID0gY2hhbmdlc1snaXRlbXMnXS5jdXJyZW50VmFsdWU7XG4gICAgICBjb21wb25lbnQuZmlsdGVySXRlbXMoY29tcG9uZW50LnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmdldElucHV0RWxlbWVudCgpO1xuICAgIGlmIChpbnB1dC5mb3JtKSB7XG4gICAgICBpbnB1dC5mb3JtLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2V0JywgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0ID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIHNob3dBdXRvY29tcGxldGUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuaGlkZUF1dG9jb21wbGV0ZSgpO1xuICAgIGlmIChldmVudCA9PT0gdGhpcy50aGlzRWxlbWVudCkge1xuICAgICAgdGhpcy5jcmVhdGVBdXRvY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBnZXRJbnB1dEVsZW1lbnQoKSB7XG4gICAgbGV0IGlucHV0ID0gdGhpcy50aGlzRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgaWYgKHRoaXMudGhpc0VsZW1lbnQudGFnTmFtZSAhPT0gJ0lOUFVUJyAmJiB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQpIHtcbiAgICAgIGlucHV0ID0gdGhpcy50aGlzRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnaW5wdXQnXG4gICAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlucHV0O1xuICB9XG5cbiAgaGlkZUF1dG9jb21wbGV0ZSA9IChldmVudD86IGFueSk6IHZvaWQgPT4ge1xuICAgIGlmICghdGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldCAmJiB0aGlzLnRoaXNFbGVtZW50ICYmIGV2ZW50LnRhcmdldCA9PT0gdGhpcy50aGlzRWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChcbiAgICAgICFldmVudCB8fFxuICAgICAgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy50aGlzRWxlbWVudCAmJiBldmVudC50eXBlID09PSAnY2xpY2snKVxuICAgICkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmlucHV0RWxlbWVudFsndGFiSW5kZXgnXSA8IDApIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Wyd0YWJJbmRleCddID0gdGhpcy50YWJJbmRleDtcbiAgICB9XG4gIH1cblxuICBvbklucHV0Q2hhbmdlZCA9ICh2YWw6IHN0cmluZykgPT4ge1xuICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlID0gdmFsO1xuICAgIGlmICh2YWwgIT09IHRoaXMubmdNb2RlbCkge1xuICAgICAgdGhpcy5uZ01vZGVsID0gdmFsO1xuICAgICAgdGhpcy5uZ01vZGVsQ2hhbmdlLmVtaXQodmFsKTtcbiAgICB9XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgY29tcG9uZW50LmZpbHRlckl0ZW1zKHZhbCk7XG4gICAgdGhpcy5pbnB1dENoYW5nZWRFdmVudC5lbWl0KHZhbCk7XG4gIH1cblxuICBvblNlbGVjdCA9IChpdGVtOiBhbnkpID0+IHtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICBjb25zdCB2YWwgPSBjb21wb25lbnQudmFsdWU7XG4gICAgaWYgKHZhbCAhPT0gdGhpcy5uZ01vZGVsKSB7XG4gICAgICB0aGlzLm5nTW9kZWwgPSB2YWw7XG4gICAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdCh2YWwpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdEV2ZW50LmVtaXQoaXRlbSk7XG4gICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9ICcnICsgdmFsO1xuICAgIH1cbiAgICB0aGlzLmhpZGVBdXRvY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGl2KCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcbiAgICBlbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICB0aGlzLnRoaXNFbGVtZW50LnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgZWxlbWVudCxcbiAgICAgIHRoaXMudGhpc0VsZW1lbnQubmV4dFNpYmxpbmdcbiAgICApO1xuICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy50aGlzRWxlbWVudCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhpZGVBdXRvY29tcGxldGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBdXRvY29tcGxldGUoKSB7XG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoXG4gICAgICBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICApO1xuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICBjb21wb25lbnQuY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgY29tcG9uZW50Lml0ZW1zID0gdGhpcy5pdGVtcztcbiAgICBjb21wb25lbnQuc2VsZWN0RXZlbnQuc3Vic2NyaWJlKHRoaXMub25TZWxlY3QpO1xuICAgIGNvbXBvbmVudC5pbnB1dENoYW5nZWRFdmVudC5zdWJzY3JpYmUodGhpcy5vbklucHV0Q2hhbmdlZCk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50ID0gdGhpcy5jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB0aGlzLmlucHV0RWxlbWVudCA9IHRoaXMuZ2V0SW5wdXRFbGVtZW50KCk7XG4gICAgaWYgKHRoaXMudGhpc0VsZW1lbnQudGFnTmFtZSAhPT0gJ0lOUFVUJyAmJiB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQsXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5leHRTaWJsaW5nXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc2V0KSB7XG4gICAgICB0aGlzLm5nTW9kZWwgPSAnJztcbiAgICAgIHRoaXMucmVzZXQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9IHRoaXMubmdNb2RlbCA/IHRoaXMubmdNb2RlbCA6ICcnO1xuICAgIGNvbXBvbmVudC52YWx1ZSA9IHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlO1xuICAgIHRoaXMudGFiSW5kZXggPSB0aGlzLmlucHV0RWxlbWVudFsndGFiSW5kZXgnXTtcbiAgICB0aGlzLmlucHV0RWxlbWVudFsndGFiSW5kZXgnXSA9IC0xMDA7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICBjb25zdCByZWN0ID0gdGhpcy50aGlzRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHN0eWxlID0gdGhpcy5hdXRvY29tcGxldGVFbGVtZW50LnN0eWxlO1xuICAgICAgc3R5bGUud2lkdGggPSByZWN0LndpZHRoICsgJ3B4JztcbiAgICAgIHN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIHN0eWxlLnpJbmRleCA9ICcxJztcbiAgICAgIHN0eWxlLnRvcCA9ICcwJztcbiAgICAgIHN0eWxlLmxlZnQgPSAnMCc7XG4gICAgICBzdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50LCBBdXRvY29tcGxldGVEaXJlY3RpdmUgfSBmcm9tICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW0F1dG9jb21wbGV0ZUNvbXBvbmVudCwgQXV0b2NvbXBsZXRlRGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW0F1dG9jb21wbGV0ZUNvbXBvbmVudCwgQXV0b2NvbXBsZXRlRGlyZWN0aXZlXSxcbiAgZW50cnlDb21wb25lbnRzOiBbQXV0b2NvbXBsZXRlQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEF1dG9jb21wbGV0ZU1vZHVsZVxuICAgIH07XG4gIH1cbn1cblxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBR0E7Ozs7SUEyRkUs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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLWlucHV0LWF1dG9jb21wbGV0ZS5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vbmcyLWlucHV0LWF1dG9jb21wbGV0ZS9saWIvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIm5nOi8vbmcyLWlucHV0LWF1dG9jb21wbGV0ZS9saWIvYXV0b2NvbXBsZXRlLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICBNSVQgTElDRU5TRSBAbGl1eTk3XG4qL1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBIb3N0QmluZGluZ1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICBzZWxlY3RvcjogJ25nMi1pbnB1dC1hdXRvY29tcGxldGUnLFxuICB0ZW1wbGF0ZTogYFxuICA8ZGl2IFtuZ0NsYXNzXT1cImNsYXNzTGlzdFwiPlxuICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7cGxhY2Vob2xkZXJ9fVwiXG4gICAgICAoYmx1cik9XCJzaG93QXV0b0NvbXBsZXRlID0gZmFsc2U7XCJcbiAgICAgIChmb2N1cyk9XCJzaG93QXV0b0NvbXBsZXRlID0gdHJ1ZTtcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIChrZXl1cCk9XCJlbnRlclRleHQoJGV2ZW50KVwiPlxuICAgIDx1bCAqbmdJZj1cInNob3dBdXRvQ29tcGxldGUgJiYgY2FuZGlkYXRlcyAmJiBjYW5kaWRhdGVzLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXM7IGxldCBpZHggPSBpbmRleFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiAoaWR4ID09PSBzZWxlY3RlZEluZGV4KSB9XCJcbiAgICAgICAgKGtleXVwKT1cIm9uS2V5VXBFdmVudCgkZXZlbnQsIGlkeClcIlxuICAgICAgICAobW91c2VvdmVyKT1cInNlbGVjdGVkSW5kZXggPSBpZHg7XCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvblNlbGVjdChpZHgpXCI+XG4gICAgICAgIHt7Y2FuZGlkYXRlc0xhYmVsc1tpZHhdfX1cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+YCxcbiAgc3R5bGVzOiBbXG4gICAgYC5hdXRvY29tcGxldGUgdWwge1xuICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICBsZWZ0OiAwO1xuICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzg4ODtcbiAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjODg4O1xuICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjODg4O1xuICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgcGFkZGluZy1sZWZ0OiAwcHg7XG4gICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgei1pbmRleDogMTAwO1xuICAgICB9XG4gICAgIC5hdXRvY29tcGxldGUgbGkge1xuICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICBwYWRkaW5nOiAwLjRlbSAwIDAuNGVtIDA7XG4gICAgIH1cbiAgICAgLmF1dG9jb21wbGV0ZSBsaS5hY3RpdmUge1xuICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0YmY7XG4gICAgIH1cblxuICAgICAuYXV0b2NvbXBsZXRlIC5oaWdobGlnaHQge1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMmUyZTI7XG4gICAgIH1cbiAgICAgLmF1dG9jb21wbGV0ZSBsaS5hY3RpdmUgLmhpZ2hsaWdodCB7XG4gICAgICAgYmFja2dyb3VuZDogIzY2NjtcbiAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgfWBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIGNsYXNzTGlzdCA9ICdhdXRvY29tcGxldGUnO1xuICBASW5wdXQoKSBpdGVtczogYW55W107XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55O1xuICBAT3V0cHV0KCkgc2VsZWN0RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xuICB2YWx1ZTogc3RyaW5nO1xuICBjYW5kaWRhdGVzOiBhbnlbXTtcbiAgY2FuZGlkYXRlc0xhYmVsczogYW55W107XG4gIHNlbGVjdGVkSW5kZXg6IG51bWJlcjtcbiAgc2hvd0F1dG9Db21wbGV0ZTogYm9vbGVhbjtcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgbWF4TGltaXQgPSAwO1xuICBwcml2YXRlIHNvdXJjZUZpZWxkOiBhbnk7XG4gIHByaXZhdGUgdGhpc0VsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLnRoaXNFbGVtZW50ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7XG4gICAgdGhpcy5zaG93QXV0b0NvbXBsZXRlID0gZmFsc2U7XG4gICAgdGhpcy52YWx1ZSA9ICcnO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmNsYXNzKSB7XG4gICAgICB0aGlzLmNsYXNzTGlzdCArPSAnICcgKyB0aGlzLmNvbmZpZy5jbGFzcztcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLm1heCA+IDApIHtcbiAgICAgIHRoaXMubWF4TGltaXQgPSB0aGlzLmNvbmZpZy5tYXg7XG4gICAgfVxuICAgIHRoaXMucGxhY2Vob2xkZXIgPSAnYXV0b2NvbXBsZXRlJztcbiAgICB0aGlzLmlucHV0RWxlbWVudCA9IHRoaXMudGhpc0VsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdpbnB1dCdcbiAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICBpZiAoIXRoaXMuaXNOdWxsKHRoaXMuY29uZmlnKSkge1xuICAgICAgaWYgKCF0aGlzLmlzTnVsbCh0aGlzLmNvbmZpZy5wbGFjZWhvbGRlcikpIHtcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuY29uZmlnLnBsYWNlaG9sZGVyO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmlzTnVsbCh0aGlzLmNvbmZpZy5zb3VyY2VGaWVsZCkpIHtcbiAgICAgICAgdGhpcy5zb3VyY2VGaWVsZCA9IHRoaXMuY29uZmlnLnNvdXJjZUZpZWxkO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmZpbHRlckl0ZW1zKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuaW5wdXRFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLmZpbHRlckl0ZW1zKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgZW50ZXJUZXh0KGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMuY2FuZGlkYXRlcy5sZW5ndGg7XG4gICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICBjYXNlIDI3OlxuICAgICAgICB0aGlzLnNob3dBdXRvQ29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM4OlxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAodG90YWwgKyB0aGlzLnNlbGVjdGVkSW5kZXggLSAxKSAlIHRvdGFsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDA6XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9ICh0b3RhbCArIHRoaXMuc2VsZWN0ZWRJbmRleCArIDEpICUgdG90YWw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMzpcbiAgICAgICAgaWYgKHRoaXMuY2FuZGlkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5vblNlbGVjdCh0aGlzLnNlbGVjdGVkSW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy52YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZWRFdmVudC5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBvblNlbGVjdChpZHg6IG51bWJlcikge1xuICAgIHRoaXMuc2hvd0F1dG9Db21wbGV0ZSA9IGZhbHNlO1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLmNhbmRpZGF0ZXNMYWJlbHNbaWR4XTtcbiAgICB0aGlzLnNlbGVjdEV2ZW50LmVtaXQodGhpcy5jYW5kaWRhdGVzW2lkeF0pO1xuICB9XG5cbiAgb25LZXlVcEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpZHg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXlDb2RlID09PSAxMykge1xuICAgICAgdGhpcy5vblNlbGVjdChpZHgpO1xuICAgIH1cbiB9XG5cbiAgZmlsdGVySXRlbXMoc2VhcmNoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuc291cmNlRmllbGQ7XG4gICAgY29uc3QgZmlsdGVySXRlbSA9IHRoaXMuZmlsdGVySXRlbTtcbiAgICBpZiAodGhpcy5pdGVtcykge1xuICAgICAgdGhpcy5jYW5kaWRhdGVzID0gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiBmaWx0ZXJJdGVtKGl0ZW0sIGZpZWxkLCBzZWFyY2gpO1xuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy5tYXhMaW1pdCA+IDApIHtcbiAgICAgICAgdGhpcy5jYW5kaWRhdGVzID0gdGhpcy5jYW5kaWRhdGVzLnNsaWNlKDAsIHRoaXMubWF4TGltaXQpO1xuICAgICAgfVxuICAgICAgdGhpcy5idWlsZExhYmVscygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmllbGRWYWx1ZShvYmplY3Q6IGFueSwgcGF0aDogYW55KSB7XG4gICAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cbiAgICBpZiAocGF0aCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBsZXQgcmVzdWx0OiBhbnkgPSBvYmplY3Q7XG4gICAgICBwYXRoLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVzdWx0ICE9PSBudWxsICYmXG4gICAgICAgICAgcmVzdWx0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICByZXN1bHRbZWxlbWVudF0gIT09IG51bGwgJiZcbiAgICAgICAgICByZXN1bHRbZWxlbWVudF0gIT09IHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHRbZWxlbWVudF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9iamVjdFtwYXRoXSB8fCAnJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzTnVsbChvYmplY3Q6IGFueSkge1xuICAgIHJldHVybiBvYmplY3QgPT09IG51bGwgfHwgb2JqZWN0ID09PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTGFiZWxzKCkge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5zb3VyY2VGaWVsZDtcbiAgICBjb25zdCBnZXRGaWVsZFZhbHVlID0gdGhpcy5nZXRGaWVsZFZhbHVlO1xuICAgIHRoaXMuY2FuZGlkYXRlc0xhYmVscyA9IHRoaXMuY2FuZGlkYXRlcy5tYXAoKGU6IGFueSkgPT5cbiAgICAgIGdldEZpZWxkVmFsdWUoZSwgZmllbGQpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVySXRlbShpdGVtOiBhbnksIHBhdGg6IGFueSwgc2VhcmNoOiBzdHJpbmcpIHtcbiAgICBpZiAoc2VhcmNoID09PSBudWxsIHx8IHNlYXJjaCA9PT0gdW5kZWZpbmVkIHx8IHNlYXJjaC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBsZXQgcmVzdWx0OiBhbnk7XG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xuICAgICAgcmVzdWx0ID0gaXRlbTtcbiAgICB9IGVsc2UgaWYgKHBhdGggaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgcmVzdWx0ID0gaXRlbTtcbiAgICAgIHBhdGguZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXN1bHQgIT09IG51bGwgJiZcbiAgICAgICAgICByZXN1bHQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHJlc3VsdFtlbGVtZW50XSAhPT0gbnVsbCAmJlxuICAgICAgICAgIHJlc3VsdFtlbGVtZW50XSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFtlbGVtZW50XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSAnJztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGl0ZW1bcGF0aF0gfHwgJyc7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSA+PSAwO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgc2VsZWN0b3I6ICdbaW5wdXQtYXV0b2NvbXBsZXRlXSdcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55O1xuICBASW5wdXQoKSBpdGVtczogYW55O1xuICBASW5wdXQoKSBuZ01vZGVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBAT3V0cHV0KCkgbmdNb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2VsZWN0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxBdXRvY29tcGxldGVDb21wb25lbnQ+O1xuICBwcml2YXRlIHRoaXNFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBhdXRvY29tcGxldGVFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gIHByaXZhdGUgdGFiSW5kZXg6IG51bWJlcjtcbiAgcHJpdmF0ZSByZXNldCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICApIHtcbiAgICB0aGlzLnRoaXNFbGVtZW50ID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnRoaXNFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2Zvcm0nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3JlYXRlRGl2KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbnB1dENoYW5nZWRFdmVudC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGlkZUF1dG9jb21wbGV0ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7IFtwcm9wS2V5OiBzdHJpbmddOiBTaW1wbGVDaGFuZ2UgfSkge1xuICAgIGlmIChjaGFuZ2VzWydpdGVtcyddICYmIHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICAgIGNvbXBvbmVudC5pdGVtcyA9IGNoYW5nZXNbJ2l0ZW1zJ10uY3VycmVudFZhbHVlO1xuICAgICAgY29tcG9uZW50LmZpbHRlckl0ZW1zKGNvbXBvbmVudC52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dEVsZW1lbnQoKTtcbiAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzZXQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChpbnB1dC5mb3JtKSB7XG4gICAgICBpbnB1dC5mb3JtLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2V0JywgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0ID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIHNob3dBdXRvY29tcGxldGUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuaGlkZUF1dG9jb21wbGV0ZSgpO1xuICAgIGlmIChldmVudCA9PT0gdGhpcy50aGlzRWxlbWVudCkge1xuICAgICAgdGhpcy5jcmVhdGVBdXRvY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBnZXRJbnB1dEVsZW1lbnQoKSB7XG4gICAgbGV0IGlucHV0ID0gdGhpcy50aGlzRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgaWYgKHRoaXMudGhpc0VsZW1lbnQudGFnTmFtZSAhPT0gJ0lOUFVUJyAmJiB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQpIHtcbiAgICAgIGlucHV0ID0gdGhpcy50aGlzRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnaW5wdXQnXG4gICAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlucHV0O1xuICB9XG5cbiAgaGlkZUF1dG9jb21wbGV0ZSA9IChldmVudD86IGFueSk6IHZvaWQgPT4ge1xuICAgIGlmICghdGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldCAmJiB0aGlzLnRoaXNFbGVtZW50ICYmIGV2ZW50LnRhcmdldCA9PT0gdGhpcy50aGlzRWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChcbiAgICAgICFldmVudCB8fFxuICAgICAgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy50aGlzRWxlbWVudCAmJiBldmVudC50eXBlID09PSAnY2xpY2snKVxuICAgICkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmlucHV0RWxlbWVudFsndGFiSW5kZXgnXSA8IDApIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Wyd0YWJJbmRleCddID0gdGhpcy50YWJJbmRleDtcbiAgICB9XG4gIH1cblxuICBvbklucHV0Q2hhbmdlZCA9ICh2YWw6IHN0cmluZykgPT4ge1xuICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlID0gdmFsO1xuICAgIGlmICh2YWwgIT09IHRoaXMubmdNb2RlbCkge1xuICAgICAgdGhpcy5uZ01vZGVsID0gdmFsO1xuICAgICAgdGhpcy5uZ01vZGVsQ2hhbmdlLmVtaXQodmFsKTtcbiAgICB9XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgY29tcG9uZW50LmZpbHRlckl0ZW1zKHZhbCk7XG4gICAgdGhpcy5pbnB1dENoYW5nZWRFdmVudC5lbWl0KHZhbCk7XG4gIH1cblxuICBvblNlbGVjdCA9IChpdGVtOiBhbnkpID0+IHtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICBjb25zdCB2YWwgPSBjb21wb25lbnQudmFsdWU7XG4gICAgaWYgKHZhbCAhPT0gdGhpcy5uZ01vZGVsKSB7XG4gICAgICB0aGlzLm5nTW9kZWwgPSB2YWw7XG4gICAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdCh2YWwpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdEV2ZW50LmVtaXQoaXRlbSk7XG4gICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9ICcnICsgdmFsO1xuICAgIH1cbiAgICB0aGlzLmhpZGVBdXRvY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGl2KCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcbiAgICBlbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICB0aGlzLnRoaXNFbGVtZW50LnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgZWxlbWVudCxcbiAgICAgIHRoaXMudGhpc0VsZW1lbnQubmV4dFNpYmxpbmdcbiAgICApO1xuICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy50aGlzRWxlbWVudCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhpZGVBdXRvY29tcGxldGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBdXRvY29tcGxldGUoKSB7XG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoXG4gICAgICBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICApO1xuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICBjb21wb25lbnQuY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgY29tcG9uZW50Lml0ZW1zID0gdGhpcy5pdGVtcztcbiAgICBjb21wb25lbnQuc2VsZWN0RXZlbnQuc3Vic2NyaWJlKHRoaXMub25TZWxlY3QpO1xuICAgIGNvbXBvbmVudC5pbnB1dENoYW5nZWRFdmVudC5zdWJzY3JpYmUodGhpcy5vbklucHV0Q2hhbmdlZCk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50ID0gdGhpcy5jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB0aGlzLmlucHV0RWxlbWVudCA9IHRoaXMuZ2V0SW5wdXRFbGVtZW50KCk7XG4gICAgaWYgKHRoaXMudGhpc0VsZW1lbnQudGFnTmFtZSAhPT0gJ0lOUFVUJyAmJiB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQsXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5leHRTaWJsaW5nXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc2V0KSB7XG4gICAgICB0aGlzLm5nTW9kZWwgPSAnJztcbiAgICAgIHRoaXMucmVzZXQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9IHRoaXMubmdNb2RlbCA/IHRoaXMubmdNb2RlbCA6ICcnO1xuICAgIGNvbXBvbmVudC52YWx1ZSA9IHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlO1xuICAgIHRoaXMudGFiSW5kZXggPSB0aGlzLmlucHV0RWxlbWVudFsndGFiSW5kZXgnXTtcbiAgICB0aGlzLmlucHV0RWxlbWVudFsndGFiSW5kZXgnXSA9IC0xMDA7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICBjb25zdCByZWN0ID0gdGhpcy50aGlzRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHN0eWxlID0gdGhpcy5hdXRvY29tcGxldGVFbGVtZW50LnN0eWxlO1xuICAgICAgc3R5bGUud2lkdGggPSByZWN0LndpZHRoICsgJ3B4JztcbiAgICAgIHN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIHN0eWxlLnpJbmRleCA9ICcxJztcbiAgICAgIHN0eWxlLnRvcCA9ICcwJztcbiAgICAgIHN0eWxlLmxlZnQgPSAnMCc7XG4gICAgICBzdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50LCBBdXRvY29tcGxldGVEaXJlY3RpdmUgfSBmcm9tICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW0F1dG9jb21wbGV0ZUNvbXBvbmVudCwgQXV0b2NvbXBsZXRlRGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW0F1dG9jb21wbGV0ZUNvbXBvbmVudCwgQXV0b2NvbXBsZXRlRGlyZWN0aXZlXSxcbiAgZW50cnlDb21wb25lbnRzOiBbQXV0b2NvbXBsZXRlQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEF1dG9jb21wbGV0ZU1vZHVsZVxuICAgIH07XG4gIH1cbn1cblxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBR0E7Ozs7SUE0RkUsWUFBWSxVQUFzQjt5QkFoQnRCLGNBQWM7MkJBR2lCLElBQUksWUFBWSxFQUFPO2lDQUNqQixJQUFJLFlBQVksRUFBTzt3QkFRN0QsQ0FBQztRQUtWLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0tBQ2pCOzs7O0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNwQyxJQUFJLENBQUMsU0FBUyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMzQztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztTQUNqQztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLHFCQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUNoRCxPQUFPLENBQ1ksQ0FBQSxDQUFDO1FBRXRCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM3QixJQUFJLENBQUMs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
import { Component, ComponentFactoryResolver, Directive, ElementRef, EventEmitter, HostListener, Input, Output, ViewContainerRef, NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';

@@ -363,2 +363,7 @@ /**

var input = this.getInputElement();
if (this.control) {
this.control.valueChanges.subscribe(function () {
_this.reset = true;
});
}
if (input.form) {

@@ -471,2 +476,3 @@ input.form.addEventListener('reset', function () {

ngModel: [{ type: Input }],
control: [{ type: Input }],
ngModelChange: [{ type: Output }],

@@ -521,2 +527,2 @@ inputChangedEvent: [{ type: Output }],

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLWlucHV0LWF1dG9jb21wbGV0ZS5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vbmcyLWlucHV0LWF1dG9jb21wbGV0ZS9saWIvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIm5nOi8vbmcyLWlucHV0LWF1dG9jb21wbGV0ZS9saWIvYXV0b2NvbXBsZXRlLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICBNSVQgTElDRU5TRSBAbGl1eTk3XG4qL1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBIb3N0QmluZGluZ1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICBzZWxlY3RvcjogJ25nMi1pbnB1dC1hdXRvY29tcGxldGUnLFxuICB0ZW1wbGF0ZTogYFxuICA8ZGl2IFtuZ0NsYXNzXT1cImNsYXNzTGlzdFwiPlxuICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7cGxhY2Vob2xkZXJ9fVwiXG4gICAgICAoYmx1cik9XCJzaG93QXV0b0NvbXBsZXRlID0gZmFsc2U7XCJcbiAgICAgIChmb2N1cyk9XCJzaG93QXV0b0NvbXBsZXRlID0gdHJ1ZTtcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIChrZXl1cCk9XCJlbnRlclRleHQoJGV2ZW50KVwiPlxuICAgIDx1bCAqbmdJZj1cInNob3dBdXRvQ29tcGxldGUgJiYgY2FuZGlkYXRlcyAmJiBjYW5kaWRhdGVzLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXM7IGxldCBpZHggPSBpbmRleFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiAoaWR4ID09PSBzZWxlY3RlZEluZGV4KSB9XCJcbiAgICAgICAgKGtleXVwKT1cIm9uS2V5VXBFdmVudCgkZXZlbnQsIGlkeClcIlxuICAgICAgICAobW91c2VvdmVyKT1cInNlbGVjdGVkSW5kZXggPSBpZHg7XCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvblNlbGVjdChpZHgpXCI+XG4gICAgICAgIHt7Y2FuZGlkYXRlc0xhYmVsc1tpZHhdfX1cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+YCxcbiAgc3R5bGVzOiBbXG4gICAgYC5hdXRvY29tcGxldGUgdWwge1xuICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICBsZWZ0OiAwO1xuICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzg4ODtcbiAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjODg4O1xuICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjODg4O1xuICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgcGFkZGluZy1sZWZ0OiAwcHg7XG4gICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgei1pbmRleDogMTAwO1xuICAgICB9XG4gICAgIC5hdXRvY29tcGxldGUgbGkge1xuICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICBwYWRkaW5nOiAwLjRlbSAwIDAuNGVtIDA7XG4gICAgIH1cbiAgICAgLmF1dG9jb21wbGV0ZSBsaS5hY3RpdmUge1xuICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0YmY7XG4gICAgIH1cblxuICAgICAuYXV0b2NvbXBsZXRlIC5oaWdobGlnaHQge1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMmUyZTI7XG4gICAgIH1cbiAgICAgLmF1dG9jb21wbGV0ZSBsaS5hY3RpdmUgLmhpZ2hsaWdodCB7XG4gICAgICAgYmFja2dyb3VuZDogIzY2NjtcbiAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgfWBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIGNsYXNzTGlzdCA9ICdhdXRvY29tcGxldGUnO1xuICBASW5wdXQoKSBpdGVtczogYW55W107XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55O1xuICBAT3V0cHV0KCkgc2VsZWN0RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xuICB2YWx1ZTogc3RyaW5nO1xuICBjYW5kaWRhdGVzOiBhbnlbXTtcbiAgY2FuZGlkYXRlc0xhYmVsczogYW55W107XG4gIHNlbGVjdGVkSW5kZXg6IG51bWJlcjtcbiAgc2hvd0F1dG9Db21wbGV0ZTogYm9vbGVhbjtcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgbWF4TGltaXQgPSAwO1xuICBwcml2YXRlIHNvdXJjZUZpZWxkOiBhbnk7XG4gIHByaXZhdGUgdGhpc0VsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLnRoaXNFbGVtZW50ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7XG4gICAgdGhpcy5zaG93QXV0b0NvbXBsZXRlID0gZmFsc2U7XG4gICAgdGhpcy52YWx1ZSA9ICcnO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmNsYXNzKSB7XG4gICAgICB0aGlzLmNsYXNzTGlzdCArPSAnICcgKyB0aGlzLmNvbmZpZy5jbGFzcztcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLm1heCA+IDApIHtcbiAgICAgIHRoaXMubWF4TGltaXQgPSB0aGlzLmNvbmZpZy5tYXg7XG4gICAgfVxuICAgIHRoaXMucGxhY2Vob2xkZXIgPSAnYXV0b2NvbXBsZXRlJztcbiAgICB0aGlzLmlucHV0RWxlbWVudCA9IHRoaXMudGhpc0VsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdpbnB1dCdcbiAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICBpZiAoIXRoaXMuaXNOdWxsKHRoaXMuY29uZmlnKSkge1xuICAgICAgaWYgKCF0aGlzLmlzTnVsbCh0aGlzLmNvbmZpZy5wbGFjZWhvbGRlcikpIHtcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuY29uZmlnLnBsYWNlaG9sZGVyO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmlzTnVsbCh0aGlzLmNvbmZpZy5zb3VyY2VGaWVsZCkpIHtcbiAgICAgICAgdGhpcy5zb3VyY2VGaWVsZCA9IHRoaXMuY29uZmlnLnNvdXJjZUZpZWxkO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmZpbHRlckl0ZW1zKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuaW5wdXRFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLmZpbHRlckl0ZW1zKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgZW50ZXJUZXh0KGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMuY2FuZGlkYXRlcy5sZW5ndGg7XG4gICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICBjYXNlIDI3OlxuICAgICAgICB0aGlzLnNob3dBdXRvQ29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM4OlxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAodG90YWwgKyB0aGlzLnNlbGVjdGVkSW5kZXggLSAxKSAlIHRvdGFsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDA6XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9ICh0b3RhbCArIHRoaXMuc2VsZWN0ZWRJbmRleCArIDEpICUgdG90YWw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMzpcbiAgICAgICAgaWYgKHRoaXMuY2FuZGlkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5vblNlbGVjdCh0aGlzLnNlbGVjdGVkSW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy52YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZWRFdmVudC5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBvblNlbGVjdChpZHg6IG51bWJlcikge1xuICAgIHRoaXMuc2hvd0F1dG9Db21wbGV0ZSA9IGZhbHNlO1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLmNhbmRpZGF0ZXNMYWJlbHNbaWR4XTtcbiAgICB0aGlzLnNlbGVjdEV2ZW50LmVtaXQodGhpcy5jYW5kaWRhdGVzW2lkeF0pO1xuICB9XG5cbiAgb25LZXlVcEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpZHg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXlDb2RlID09PSAxMykge1xuICAgICAgdGhpcy5vblNlbGVjdChpZHgpO1xuICAgIH1cbiB9XG5cbiAgZmlsdGVySXRlbXMoc2VhcmNoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuc291cmNlRmllbGQ7XG4gICAgY29uc3QgZmlsdGVySXRlbSA9IHRoaXMuZmlsdGVySXRlbTtcbiAgICBpZiAodGhpcy5pdGVtcykge1xuICAgICAgdGhpcy5jYW5kaWRhdGVzID0gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiBmaWx0ZXJJdGVtKGl0ZW0sIGZpZWxkLCBzZWFyY2gpO1xuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy5tYXhMaW1pdCA+IDApIHtcbiAgICAgICAgdGhpcy5jYW5kaWRhdGVzID0gdGhpcy5jYW5kaWRhdGVzLnNsaWNlKDAsIHRoaXMubWF4TGltaXQpO1xuICAgICAgfVxuICAgICAgdGhpcy5idWlsZExhYmVscygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmllbGRWYWx1ZShvYmplY3Q6IGFueSwgcGF0aDogYW55KSB7XG4gICAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cbiAgICBpZiAocGF0aCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBsZXQgcmVzdWx0OiBhbnkgPSBvYmplY3Q7XG4gICAgICBwYXRoLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVzdWx0ICE9PSBudWxsICYmXG4gICAgICAgICAgcmVzdWx0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICByZXN1bHRbZWxlbWVudF0gIT09IG51bGwgJiZcbiAgICAgICAgICByZXN1bHRbZWxlbWVudF0gIT09IHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHRbZWxlbWVudF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9iamVjdFtwYXRoXSB8fCAnJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzTnVsbChvYmplY3Q6IGFueSkge1xuICAgIHJldHVybiBvYmplY3QgPT09IG51bGwgfHwgb2JqZWN0ID09PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTGFiZWxzKCkge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5zb3VyY2VGaWVsZDtcbiAgICBjb25zdCBnZXRGaWVsZFZhbHVlID0gdGhpcy5nZXRGaWVsZFZhbHVlO1xuICAgIHRoaXMuY2FuZGlkYXRlc0xhYmVscyA9IHRoaXMuY2FuZGlkYXRlcy5tYXAoKGU6IGFueSkgPT5cbiAgICAgIGdldEZpZWxkVmFsdWUoZSwgZmllbGQpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVySXRlbShpdGVtOiBhbnksIHBhdGg6IGFueSwgc2VhcmNoOiBzdHJpbmcpIHtcbiAgICBpZiAoc2VhcmNoID09PSBudWxsIHx8IHNlYXJjaCA9PT0gdW5kZWZpbmVkIHx8IHNlYXJjaC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBsZXQgcmVzdWx0OiBhbnk7XG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xuICAgICAgcmVzdWx0ID0gaXRlbTtcbiAgICB9IGVsc2UgaWYgKHBhdGggaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgcmVzdWx0ID0gaXRlbTtcbiAgICAgIHBhdGguZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXN1bHQgIT09IG51bGwgJiZcbiAgICAgICAgICByZXN1bHQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHJlc3VsdFtlbGVtZW50XSAhPT0gbnVsbCAmJlxuICAgICAgICAgIHJlc3VsdFtlbGVtZW50XSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFtlbGVtZW50XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSAnJztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGl0ZW1bcGF0aF0gfHwgJyc7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSA+PSAwO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgc2VsZWN0b3I6ICdbaW5wdXQtYXV0b2NvbXBsZXRlXSdcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55O1xuICBASW5wdXQoKSBpdGVtczogYW55O1xuICBASW5wdXQoKSBuZ01vZGVsOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBuZ01vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2VkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEF1dG9jb21wbGV0ZUNvbXBvbmVudD47XG4gIHByaXZhdGUgdGhpc0VsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGF1dG9jb21wbGV0ZUVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudDtcbiAgcHJpdmF0ZSB0YWJJbmRleDogbnVtYmVyO1xuICBwcml2YXRlIHJlc2V0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHB1YmxpYyB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge1xuICAgIHRoaXMudGhpc0VsZW1lbnQgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMudGhpc0VsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnZm9ybScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVEaXYoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VsZWN0RXZlbnQudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmlucHV0Q2hhbmdlZEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oaWRlQXV0b2NvbXBsZXRlKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsgW3Byb3BLZXk6IHN0cmluZ106IFNpbXBsZUNoYW5nZSB9KSB7XG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10gJiYgdGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgICAgY29tcG9uZW50Lml0ZW1zID0gY2hhbmdlc1snaXRlbXMnXS5jdXJyZW50VmFsdWU7XG4gICAgICBjb21wb25lbnQuZmlsdGVySXRlbXMoY29tcG9uZW50LnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmdldElucHV0RWxlbWVudCgpO1xuICAgIGlmIChpbnB1dC5mb3JtKSB7XG4gICAgICBpbnB1dC5mb3JtLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2V0JywgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0ID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIHNob3dBdXRvY29tcGxldGUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuaGlkZUF1dG9jb21wbGV0ZSgpO1xuICAgIGlmIChldmVudCA9PT0gdGhpcy50aGlzRWxlbWVudCkge1xuICAgICAgdGhpcy5jcmVhdGVBdXRvY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBnZXRJbnB1dEVsZW1lbnQoKSB7XG4gICAgbGV0IGlucHV0ID0gdGhpcy50aGlzRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgaWYgKHRoaXMudGhpc0VsZW1lbnQudGFnTmFtZSAhPT0gJ0lOUFVUJyAmJiB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQpIHtcbiAgICAgIGlucHV0ID0gdGhpcy50aGlzRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnaW5wdXQnXG4gICAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlucHV0O1xuICB9XG5cbiAgaGlkZUF1dG9jb21wbGV0ZSA9IChldmVudD86IGFueSk6IHZvaWQgPT4ge1xuICAgIGlmICghdGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldCAmJiB0aGlzLnRoaXNFbGVtZW50ICYmIGV2ZW50LnRhcmdldCA9PT0gdGhpcy50aGlzRWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChcbiAgICAgICFldmVudCB8fFxuICAgICAgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy50aGlzRWxlbWVudCAmJiBldmVudC50eXBlID09PSAnY2xpY2snKVxuICAgICkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmlucHV0RWxlbWVudFsndGFiSW5kZXgnXSA8IDApIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Wyd0YWJJbmRleCddID0gdGhpcy50YWJJbmRleDtcbiAgICB9XG4gIH1cblxuICBvbklucHV0Q2hhbmdlZCA9ICh2YWw6IHN0cmluZykgPT4ge1xuICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlID0gdmFsO1xuICAgIGlmICh2YWwgIT09IHRoaXMubmdNb2RlbCkge1xuICAgICAgdGhpcy5uZ01vZGVsID0gdmFsO1xuICAgICAgdGhpcy5uZ01vZGVsQ2hhbmdlLmVtaXQodmFsKTtcbiAgICB9XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgY29tcG9uZW50LmZpbHRlckl0ZW1zKHZhbCk7XG4gICAgdGhpcy5pbnB1dENoYW5nZWRFdmVudC5lbWl0KHZhbCk7XG4gIH1cblxuICBvblNlbGVjdCA9IChpdGVtOiBhbnkpID0+IHtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICBjb25zdCB2YWwgPSBjb21wb25lbnQudmFsdWU7XG4gICAgaWYgKHZhbCAhPT0gdGhpcy5uZ01vZGVsKSB7XG4gICAgICB0aGlzLm5nTW9kZWwgPSB2YWw7XG4gICAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdCh2YWwpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdEV2ZW50LmVtaXQoaXRlbSk7XG4gICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9ICcnICsgdmFsO1xuICAgIH1cbiAgICB0aGlzLmhpZGVBdXRvY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGl2KCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcbiAgICBlbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICB0aGlzLnRoaXNFbGVtZW50LnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgZWxlbWVudCxcbiAgICAgIHRoaXMudGhpc0VsZW1lbnQubmV4dFNpYmxpbmdcbiAgICApO1xuICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy50aGlzRWxlbWVudCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhpZGVBdXRvY29tcGxldGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBdXRvY29tcGxldGUoKSB7XG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoXG4gICAgICBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICApO1xuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICBjb21wb25lbnQuY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgY29tcG9uZW50Lml0ZW1zID0gdGhpcy5pdGVtcztcbiAgICBjb21wb25lbnQuc2VsZWN0RXZlbnQuc3Vic2NyaWJlKHRoaXMub25TZWxlY3QpO1xuICAgIGNvbXBvbmVudC5pbnB1dENoYW5nZWRFdmVudC5zdWJzY3JpYmUodGhpcy5vbklucHV0Q2hhbmdlZCk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50ID0gdGhpcy5jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB0aGlzLmlucHV0RWxlbWVudCA9IHRoaXMuZ2V0SW5wdXRFbGVtZW50KCk7XG4gICAgaWYgKHRoaXMudGhpc0VsZW1lbnQudGFnTmFtZSAhPT0gJ0lOUFVUJyAmJiB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQsXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5leHRTaWJsaW5nXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc2V0KSB7XG4gICAgICB0aGlzLm5nTW9kZWwgPSAnJztcbiAgICAgIHRoaXMucmVzZXQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9IHRoaXMubmdNb2RlbCA/IHRoaXMubmdNb2RlbCA6ICcnO1xuICAgIGNvbXBvbmVudC52YWx1ZSA9IHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlO1xuICAgIHRoaXMudGFiSW5kZXggPSB0aGlzLmlucHV0RWxlbWVudFsndGFiSW5kZXgnXTtcbiAgICB0aGlzLmlucHV0RWxlbWVudFsndGFiSW5kZXgnXSA9IC0xMDA7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICBjb25zdCByZWN0ID0gdGhpcy50aGlzRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHN0eWxlID0gdGhpcy5hdXRvY29tcGxldGVFbGVtZW50LnN0eWxlO1xuICAgICAgc3R5bGUud2lkdGggPSByZWN0LndpZHRoICsgJ3B4JztcbiAgICAgIHN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIHN0eWxlLnpJbmRleCA9ICcxJztcbiAgICAgIHN0eWxlLnRvcCA9ICcwJztcbiAgICAgIHN0eWxlLmxlZnQgPSAnMCc7XG4gICAgICBzdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50LCBBdXRvY29tcGxldGVEaXJlY3RpdmUgfSBmcm9tICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW0F1dG9jb21wbGV0ZUNvbXBvbmVudCwgQXV0b2NvbXBsZXRlRGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW0F1dG9jb21wbGV0ZUNvbXBvbmVudCwgQXV0b2NvbXBsZXRlRGlyZWN0aXZlXSxcbiAgZW50cnlDb21wb25lbnRzOiBbQXV0b2NvbXBsZXRlQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEF1dG9jb21wbGV0ZU1vZHVsZVxuICAgIH07XG4gIH1cbn1cblxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBR0E7SUEyRkUsK0JB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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLWlucHV0LWF1dG9jb21wbGV0ZS5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vbmcyLWlucHV0LWF1dG9jb21wbGV0ZS9saWIvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIm5nOi8vbmcyLWlucHV0LWF1dG9jb21wbGV0ZS9saWIvYXV0b2NvbXBsZXRlLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICBNSVQgTElDRU5TRSBAbGl1eTk3XG4qL1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBIb3N0QmluZGluZ1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICBzZWxlY3RvcjogJ25nMi1pbnB1dC1hdXRvY29tcGxldGUnLFxuICB0ZW1wbGF0ZTogYFxuICA8ZGl2IFtuZ0NsYXNzXT1cImNsYXNzTGlzdFwiPlxuICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7cGxhY2Vob2xkZXJ9fVwiXG4gICAgICAoYmx1cik9XCJzaG93QXV0b0NvbXBsZXRlID0gZmFsc2U7XCJcbiAgICAgIChmb2N1cyk9XCJzaG93QXV0b0NvbXBsZXRlID0gdHJ1ZTtcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIChrZXl1cCk9XCJlbnRlclRleHQoJGV2ZW50KVwiPlxuICAgIDx1bCAqbmdJZj1cInNob3dBdXRvQ29tcGxldGUgJiYgY2FuZGlkYXRlcyAmJiBjYW5kaWRhdGVzLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXM7IGxldCBpZHggPSBpbmRleFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiAoaWR4ID09PSBzZWxlY3RlZEluZGV4KSB9XCJcbiAgICAgICAgKGtleXVwKT1cIm9uS2V5VXBFdmVudCgkZXZlbnQsIGlkeClcIlxuICAgICAgICAobW91c2VvdmVyKT1cInNlbGVjdGVkSW5kZXggPSBpZHg7XCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvblNlbGVjdChpZHgpXCI+XG4gICAgICAgIHt7Y2FuZGlkYXRlc0xhYmVsc1tpZHhdfX1cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+YCxcbiAgc3R5bGVzOiBbXG4gICAgYC5hdXRvY29tcGxldGUgdWwge1xuICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICBsZWZ0OiAwO1xuICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzg4ODtcbiAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjODg4O1xuICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjODg4O1xuICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgcGFkZGluZy1sZWZ0OiAwcHg7XG4gICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgei1pbmRleDogMTAwO1xuICAgICB9XG4gICAgIC5hdXRvY29tcGxldGUgbGkge1xuICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICBwYWRkaW5nOiAwLjRlbSAwIDAuNGVtIDA7XG4gICAgIH1cbiAgICAgLmF1dG9jb21wbGV0ZSBsaS5hY3RpdmUge1xuICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0YmY7XG4gICAgIH1cblxuICAgICAuYXV0b2NvbXBsZXRlIC5oaWdobGlnaHQge1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMmUyZTI7XG4gICAgIH1cbiAgICAgLmF1dG9jb21wbGV0ZSBsaS5hY3RpdmUgLmhpZ2hsaWdodCB7XG4gICAgICAgYmFja2dyb3VuZDogIzY2NjtcbiAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgfWBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIGNsYXNzTGlzdCA9ICdhdXRvY29tcGxldGUnO1xuICBASW5wdXQoKSBpdGVtczogYW55W107XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55O1xuICBAT3V0cHV0KCkgc2VsZWN0RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xuICB2YWx1ZTogc3RyaW5nO1xuICBjYW5kaWRhdGVzOiBhbnlbXTtcbiAgY2FuZGlkYXRlc0xhYmVsczogYW55W107XG4gIHNlbGVjdGVkSW5kZXg6IG51bWJlcjtcbiAgc2hvd0F1dG9Db21wbGV0ZTogYm9vbGVhbjtcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgbWF4TGltaXQgPSAwO1xuICBwcml2YXRlIHNvdXJjZUZpZWxkOiBhbnk7XG4gIHByaXZhdGUgdGhpc0VsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLnRoaXNFbGVtZW50ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7XG4gICAgdGhpcy5zaG93QXV0b0NvbXBsZXRlID0gZmFsc2U7XG4gICAgdGhpcy52YWx1ZSA9ICcnO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmNsYXNzKSB7XG4gICAgICB0aGlzLmNsYXNzTGlzdCArPSAnICcgKyB0aGlzLmNvbmZpZy5jbGFzcztcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLm1heCA+IDApIHtcbiAgICAgIHRoaXMubWF4TGltaXQgPSB0aGlzLmNvbmZpZy5tYXg7XG4gICAgfVxuICAgIHRoaXMucGxhY2Vob2xkZXIgPSAnYXV0b2NvbXBsZXRlJztcbiAgICB0aGlzLmlucHV0RWxlbWVudCA9IHRoaXMudGhpc0VsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdpbnB1dCdcbiAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICBpZiAoIXRoaXMuaXNOdWxsKHRoaXMuY29uZmlnKSkge1xuICAgICAgaWYgKCF0aGlzLmlzTnVsbCh0aGlzLmNvbmZpZy5wbGFjZWhvbGRlcikpIHtcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuY29uZmlnLnBsYWNlaG9sZGVyO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmlzTnVsbCh0aGlzLmNvbmZpZy5zb3VyY2VGaWVsZCkpIHtcbiAgICAgICAgdGhpcy5zb3VyY2VGaWVsZCA9IHRoaXMuY29uZmlnLnNvdXJjZUZpZWxkO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmZpbHRlckl0ZW1zKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuaW5wdXRFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLmZpbHRlckl0ZW1zKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgZW50ZXJUZXh0KGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMuY2FuZGlkYXRlcy5sZW5ndGg7XG4gICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICBjYXNlIDI3OlxuICAgICAgICB0aGlzLnNob3dBdXRvQ29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM4OlxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAodG90YWwgKyB0aGlzLnNlbGVjdGVkSW5kZXggLSAxKSAlIHRvdGFsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDA6XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9ICh0b3RhbCArIHRoaXMuc2VsZWN0ZWRJbmRleCArIDEpICUgdG90YWw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMzpcbiAgICAgICAgaWYgKHRoaXMuY2FuZGlkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5vblNlbGVjdCh0aGlzLnNlbGVjdGVkSW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy52YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZWRFdmVudC5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBvblNlbGVjdChpZHg6IG51bWJlcikge1xuICAgIHRoaXMuc2hvd0F1dG9Db21wbGV0ZSA9IGZhbHNlO1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLmNhbmRpZGF0ZXNMYWJlbHNbaWR4XTtcbiAgICB0aGlzLnNlbGVjdEV2ZW50LmVtaXQodGhpcy5jYW5kaWRhdGVzW2lkeF0pO1xuICB9XG5cbiAgb25LZXlVcEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpZHg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXlDb2RlID09PSAxMykge1xuICAgICAgdGhpcy5vblNlbGVjdChpZHgpO1xuICAgIH1cbiB9XG5cbiAgZmlsdGVySXRlbXMoc2VhcmNoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuc291cmNlRmllbGQ7XG4gICAgY29uc3QgZmlsdGVySXRlbSA9IHRoaXMuZmlsdGVySXRlbTtcbiAgICBpZiAodGhpcy5pdGVtcykge1xuICAgICAgdGhpcy5jYW5kaWRhdGVzID0gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiBmaWx0ZXJJdGVtKGl0ZW0sIGZpZWxkLCBzZWFyY2gpO1xuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy5tYXhMaW1pdCA+IDApIHtcbiAgICAgICAgdGhpcy5jYW5kaWRhdGVzID0gdGhpcy5jYW5kaWRhdGVzLnNsaWNlKDAsIHRoaXMubWF4TGltaXQpO1xuICAgICAgfVxuICAgICAgdGhpcy5idWlsZExhYmVscygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmllbGRWYWx1ZShvYmplY3Q6IGFueSwgcGF0aDogYW55KSB7XG4gICAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cbiAgICBpZiAocGF0aCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBsZXQgcmVzdWx0OiBhbnkgPSBvYmplY3Q7XG4gICAgICBwYXRoLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVzdWx0ICE9PSBudWxsICYmXG4gICAgICAgICAgcmVzdWx0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICByZXN1bHRbZWxlbWVudF0gIT09IG51bGwgJiZcbiAgICAgICAgICByZXN1bHRbZWxlbWVudF0gIT09IHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHRbZWxlbWVudF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9iamVjdFtwYXRoXSB8fCAnJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzTnVsbChvYmplY3Q6IGFueSkge1xuICAgIHJldHVybiBvYmplY3QgPT09IG51bGwgfHwgb2JqZWN0ID09PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTGFiZWxzKCkge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5zb3VyY2VGaWVsZDtcbiAgICBjb25zdCBnZXRGaWVsZFZhbHVlID0gdGhpcy5nZXRGaWVsZFZhbHVlO1xuICAgIHRoaXMuY2FuZGlkYXRlc0xhYmVscyA9IHRoaXMuY2FuZGlkYXRlcy5tYXAoKGU6IGFueSkgPT5cbiAgICAgIGdldEZpZWxkVmFsdWUoZSwgZmllbGQpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVySXRlbShpdGVtOiBhbnksIHBhdGg6IGFueSwgc2VhcmNoOiBzdHJpbmcpIHtcbiAgICBpZiAoc2VhcmNoID09PSBudWxsIHx8IHNlYXJjaCA9PT0gdW5kZWZpbmVkIHx8IHNlYXJjaC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBsZXQgcmVzdWx0OiBhbnk7XG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xuICAgICAgcmVzdWx0ID0gaXRlbTtcbiAgICB9IGVsc2UgaWYgKHBhdGggaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgcmVzdWx0ID0gaXRlbTtcbiAgICAgIHBhdGguZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXN1bHQgIT09IG51bGwgJiZcbiAgICAgICAgICByZXN1bHQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHJlc3VsdFtlbGVtZW50XSAhPT0gbnVsbCAmJlxuICAgICAgICAgIHJlc3VsdFtlbGVtZW50XSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFtlbGVtZW50XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSAnJztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGl0ZW1bcGF0aF0gfHwgJyc7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSA+PSAwO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgc2VsZWN0b3I6ICdbaW5wdXQtYXV0b2NvbXBsZXRlXSdcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55O1xuICBASW5wdXQoKSBpdGVtczogYW55O1xuICBASW5wdXQoKSBuZ01vZGVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBAT3V0cHV0KCkgbmdNb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2VsZWN0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxBdXRvY29tcGxldGVDb21wb25lbnQ+O1xuICBwcml2YXRlIHRoaXNFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBhdXRvY29tcGxldGVFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gIHByaXZhdGUgdGFiSW5kZXg6IG51bWJlcjtcbiAgcHJpdmF0ZSByZXNldCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICApIHtcbiAgICB0aGlzLnRoaXNFbGVtZW50ID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnRoaXNFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2Zvcm0nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3JlYXRlRGl2KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbnB1dENoYW5nZWRFdmVudC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGlkZUF1dG9jb21wbGV0ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7IFtwcm9wS2V5OiBzdHJpbmddOiBTaW1wbGVDaGFuZ2UgfSkge1xuICAgIGlmIChjaGFuZ2VzWydpdGVtcyddICYmIHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICAgIGNvbXBvbmVudC5pdGVtcyA9IGNoYW5nZXNbJ2l0ZW1zJ10uY3VycmVudFZhbHVlO1xuICAgICAgY29tcG9uZW50LmZpbHRlckl0ZW1zKGNvbXBvbmVudC52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dEVsZW1lbnQoKTtcbiAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzZXQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChpbnB1dC5mb3JtKSB7XG4gICAgICBpbnB1dC5mb3JtLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2V0JywgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0ID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIHNob3dBdXRvY29tcGxldGUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuaGlkZUF1dG9jb21wbGV0ZSgpO1xuICAgIGlmIChldmVudCA9PT0gdGhpcy50aGlzRWxlbWVudCkge1xuICAgICAgdGhpcy5jcmVhdGVBdXRvY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBnZXRJbnB1dEVsZW1lbnQoKSB7XG4gICAgbGV0IGlucHV0ID0gdGhpcy50aGlzRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgaWYgKHRoaXMudGhpc0VsZW1lbnQudGFnTmFtZSAhPT0gJ0lOUFVUJyAmJiB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQpIHtcbiAgICAgIGlucHV0ID0gdGhpcy50aGlzRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnaW5wdXQnXG4gICAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlucHV0O1xuICB9XG5cbiAgaGlkZUF1dG9jb21wbGV0ZSA9IChldmVudD86IGFueSk6IHZvaWQgPT4ge1xuICAgIGlmICghdGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldCAmJiB0aGlzLnRoaXNFbGVtZW50ICYmIGV2ZW50LnRhcmdldCA9PT0gdGhpcy50aGlzRWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChcbiAgICAgICFldmVudCB8fFxuICAgICAgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy50aGlzRWxlbWVudCAmJiBldmVudC50eXBlID09PSAnY2xpY2snKVxuICAgICkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmlucHV0RWxlbWVudFsndGFiSW5kZXgnXSA8IDApIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Wyd0YWJJbmRleCddID0gdGhpcy50YWJJbmRleDtcbiAgICB9XG4gIH1cblxuICBvbklucHV0Q2hhbmdlZCA9ICh2YWw6IHN0cmluZykgPT4ge1xuICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlID0gdmFsO1xuICAgIGlmICh2YWwgIT09IHRoaXMubmdNb2RlbCkge1xuICAgICAgdGhpcy5uZ01vZGVsID0gdmFsO1xuICAgICAgdGhpcy5uZ01vZGVsQ2hhbmdlLmVtaXQodmFsKTtcbiAgICB9XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgY29tcG9uZW50LmZpbHRlckl0ZW1zKHZhbCk7XG4gICAgdGhpcy5pbnB1dENoYW5nZWRFdmVudC5lbWl0KHZhbCk7XG4gIH1cblxuICBvblNlbGVjdCA9IChpdGVtOiBhbnkpID0+IHtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICBjb25zdCB2YWwgPSBjb21wb25lbnQudmFsdWU7XG4gICAgaWYgKHZhbCAhPT0gdGhpcy5uZ01vZGVsKSB7XG4gICAgICB0aGlzLm5nTW9kZWwgPSB2YWw7XG4gICAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdCh2YWwpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdEV2ZW50LmVtaXQoaXRlbSk7XG4gICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9ICcnICsgdmFsO1xuICAgIH1cbiAgICB0aGlzLmhpZGVBdXRvY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGl2KCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcbiAgICBlbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICB0aGlzLnRoaXNFbGVtZW50LnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgZWxlbWVudCxcbiAgICAgIHRoaXMudGhpc0VsZW1lbnQubmV4dFNpYmxpbmdcbiAgICApO1xuICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy50aGlzRWxlbWVudCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhpZGVBdXRvY29tcGxldGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBdXRvY29tcGxldGUoKSB7XG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoXG4gICAgICBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICApO1xuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICBjb21wb25lbnQuY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgY29tcG9uZW50Lml0ZW1zID0gdGhpcy5pdGVtcztcbiAgICBjb21wb25lbnQuc2VsZWN0RXZlbnQuc3Vic2NyaWJlKHRoaXMub25TZWxlY3QpO1xuICAgIGNvbXBvbmVudC5pbnB1dENoYW5nZWRFdmVudC5zdWJzY3JpYmUodGhpcy5vbklucHV0Q2hhbmdlZCk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVFbGVtZW50ID0gdGhpcy5jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB0aGlzLmlucHV0RWxlbWVudCA9IHRoaXMuZ2V0SW5wdXRFbGVtZW50KCk7XG4gICAgaWYgKHRoaXMudGhpc0VsZW1lbnQudGFnTmFtZSAhPT0gJ0lOUFVUJyAmJiB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUVsZW1lbnQsXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5leHRTaWJsaW5nXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc2V0KSB7XG4gICAgICB0aGlzLm5nTW9kZWwgPSAnJztcbiAgICAgIHRoaXMucmVzZXQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9IHRoaXMubmdNb2RlbCA/IHRoaXMubmdNb2RlbCA6ICcnO1xuICAgIGNvbXBvbmVudC52YWx1ZSA9IHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlO1xuICAgIHRoaXMudGFiSW5kZXggPSB0aGlzLmlucHV0RWxlbWVudFsndGFiSW5kZXgnXTtcbiAgICB0aGlzLmlucHV0RWxlbWVudFsndGFiSW5kZXgnXSA9IC0xMDA7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICBjb25zdCByZWN0ID0gdGhpcy50aGlzRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHN0eWxlID0gdGhpcy5hdXRvY29tcGxldGVFbGVtZW50LnN0eWxlO1xuICAgICAgc3R5bGUud2lkdGggPSByZWN0LndpZHRoICsgJ3B4JztcbiAgICAgIHN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIHN0eWxlLnpJbmRleCA9ICcxJztcbiAgICAgIHN0eWxlLnRvcCA9ICcwJztcbiAgICAgIHN0eWxlLmxlZnQgPSAnMCc7XG4gICAgICBzdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50LCBBdXRvY29tcGxldGVEaXJlY3RpdmUgfSBmcm9tICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW0F1dG9jb21wbGV0ZUNvbXBvbmVudCwgQXV0b2NvbXBsZXRlRGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW0F1dG9jb21wbGV0ZUNvbXBvbmVudCwgQXV0b2NvbXBsZXRlRGlyZWN0aXZlXSxcbiAgZW50cnlDb21wb25lbnRzOiBbQXV0b2NvbXBsZXRlQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEF1dG9jb21wbGV0ZU1vZHVsZVxuICAgIH07XG4gIH1cbn1cblxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBR0E7SUE0RkUsK0JBQVksVUFBc0I7eUJBaEJ0QixjQUFjOzJCQUdpQixJQUFJLFlBQVksRUFBTztpQ0FDakIsSUFBSSxZQUFZLEVBQU87d0JBUTdELENBQUM7UUFLVixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztLQUNqQjs7OztJQUVELHdDQUFROzs7SUFBUjtRQUNFLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNwQyxJQUFJLENBQUMsU0FBUyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMzQztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztTQUNqQztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLHFCQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUNoRCxPQUFPLENBQ1ksQ0FBQSxDQUFDO1FBRXRCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM3QixJQUFJ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
import { ComponentFactoryResolver, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, AfterViewInit, SimpleChange, ViewContainerRef } from '@angular/core';
import { FormControl } from '@angular/forms';
export declare class AutocompleteComponent implements OnInit, OnChanges {

@@ -36,2 +37,3 @@ classList: string;

ngModel: string;
control: FormControl;
ngModelChange: EventEmitter<{}>;

@@ -38,0 +40,0 @@ inputChangedEvent: EventEmitter<{}>;

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"AutocompleteComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":22,"character":1},"arguments":[{"selector":"ng2-input-autocomplete","template":"\n <div [ngClass]=\"classList\">\n <input type=\"text\"\n placeholder=\"{{placeholder}}\"\n (blur)=\"showAutoComplete = false;\"\n (focus)=\"showAutoComplete = true;\"\n [value]=\"value\"\n (keyup)=\"enterText($event)\">\n <ul *ngIf=\"showAutoComplete && candidates && candidates.length > 0\">\n <li *ngFor=\"let candidate of candidates; let idx = index\"\n [ngClass]=\"{ active: (idx === selectedIndex) }\"\n (keyup)=\"onKeyUpEvent($event, idx)\"\n (mouseover)=\"selectedIndex = idx;\"\n (mousedown)=\"onSelect(idx)\">\n {{candidatesLabels[idx]}}\n </li>\n </ul>\n </div>","styles":[".autocomplete ul {\n position: absolute;\n left: 0;\n width: 100%;\n border-left: 1px solid #888;\n border-right: 1px solid #888;\n border-bottom: 1px solid #888;\n list-style: none;\n padding-left: 0px;\n margin-top: 2px;\n background-color: #fff;\n z-index: 100;\n }\n .autocomplete li {\n text-align: left;\n list-style: none;\n width: 100%;\n padding: 0.4em 0 0.4em 0;\n }\n .autocomplete li.active {\n width: 100%;\n background-color: #4bf;\n }\n\n .autocomplete .highlight {\n background-color: #e2e2e2;\n }\n .autocomplete li.active .highlight {\n background: #666;\n color: #fff;\n }"]}]}],"members":{"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":79,"character":3}}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3}}]}],"selectEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":81,"character":3}}]}],"inputChangedEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":82,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":94,"character":26}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"enterText":[{"__symbolic":"method"}],"onSelect":[{"__symbolic":"method"}],"onKeyUpEvent":[{"__symbolic":"method"}],"filterItems":[{"__symbolic":"method"}],"getFieldValue":[{"__symbolic":"method"}],"isNull":[{"__symbolic":"method"}],"buildLabels":[{"__symbolic":"method"}],"filterItem":[{"__symbolic":"method"}]}},"AutocompleteDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":244,"character":1},"arguments":[{"selector":"[input-autocomplete]"}]}],"members":{"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":249,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":250,"character":3}}]}],"ngModel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":251,"character":3}}]}],"ngModelChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":252,"character":3}}]}],"inputChangedEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":253,"character":3}}]}],"selectEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":254,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":264,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":265,"character":29}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"showAutocomplete":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":302,"character":3},"arguments":["click",["$event.target"]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":303,"character":3},"arguments":["focus",["$event.target"]]}]}],"getInputElement":[{"__symbolic":"method"}],"createDiv":[{"__symbolic":"method"}],"createAutocomplete":[{"__symbolic":"method"}]}},"AutocompleteModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":6,"character":12},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":6,"character":26}],"declarations":[{"__symbolic":"reference","name":"AutocompleteComponent"},{"__symbolic":"reference","name":"AutocompleteDirective"}],"exports":[{"__symbolic":"reference","name":"AutocompleteComponent"},{"__symbolic":"reference","name":"AutocompleteDirective"}],"entryComponents":[{"__symbolic":"reference","name":"AutocompleteComponent"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"AutocompleteModule"}}}}}},"origins":{"AutocompleteComponent":"./lib/autocomplete.component","AutocompleteDirective":"./lib/autocomplete.component","AutocompleteModule":"./lib/autocomplete.module"},"importAs":"ng2-input-autocomplete"}
{"__symbolic":"module","version":4,"metadata":{"AutocompleteComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":23,"character":1},"arguments":[{"selector":"ng2-input-autocomplete","template":"\n <div [ngClass]=\"classList\">\n <input type=\"text\"\n placeholder=\"{{placeholder}}\"\n (blur)=\"showAutoComplete = false;\"\n (focus)=\"showAutoComplete = true;\"\n [value]=\"value\"\n (keyup)=\"enterText($event)\">\n <ul *ngIf=\"showAutoComplete && candidates && candidates.length > 0\">\n <li *ngFor=\"let candidate of candidates; let idx = index\"\n [ngClass]=\"{ active: (idx === selectedIndex) }\"\n (keyup)=\"onKeyUpEvent($event, idx)\"\n (mouseover)=\"selectedIndex = idx;\"\n (mousedown)=\"onSelect(idx)\">\n {{candidatesLabels[idx]}}\n </li>\n </ul>\n </div>","styles":[".autocomplete ul {\n position: absolute;\n left: 0;\n width: 100%;\n border-left: 1px solid #888;\n border-right: 1px solid #888;\n border-bottom: 1px solid #888;\n list-style: none;\n padding-left: 0px;\n margin-top: 2px;\n background-color: #fff;\n z-index: 100;\n }\n .autocomplete li {\n text-align: left;\n list-style: none;\n width: 100%;\n padding: 0.4em 0 0.4em 0;\n }\n .autocomplete li.active {\n width: 100%;\n background-color: #4bf;\n }\n\n .autocomplete .highlight {\n background-color: #e2e2e2;\n }\n .autocomplete li.active .highlight {\n background: #666;\n color: #fff;\n }"]}]}],"members":{"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3}}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":81,"character":3}}]}],"selectEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":82,"character":3}}]}],"inputChangedEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":83,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":95,"character":26}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"enterText":[{"__symbolic":"method"}],"onSelect":[{"__symbolic":"method"}],"onKeyUpEvent":[{"__symbolic":"method"}],"filterItems":[{"__symbolic":"method"}],"getFieldValue":[{"__symbolic":"method"}],"isNull":[{"__symbolic":"method"}],"buildLabels":[{"__symbolic":"method"}],"filterItem":[{"__symbolic":"method"}]}},"AutocompleteDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":245,"character":1},"arguments":[{"selector":"[input-autocomplete]"}]}],"members":{"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":250,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":251,"character":3}}]}],"ngModel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":252,"character":3}}]}],"control":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":253,"character":3}}]}],"ngModelChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":254,"character":3}}]}],"inputChangedEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":255,"character":3}}]}],"selectEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":256,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":266,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":267,"character":29}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"showAutocomplete":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":309,"character":3},"arguments":["click",["$event.target"]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":310,"character":3},"arguments":["focus",["$event.target"]]}]}],"getInputElement":[{"__symbolic":"method"}],"createDiv":[{"__symbolic":"method"}],"createAutocomplete":[{"__symbolic":"method"}]}},"AutocompleteModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":6,"character":12},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":6,"character":26}],"declarations":[{"__symbolic":"reference","name":"AutocompleteComponent"},{"__symbolic":"reference","name":"AutocompleteDirective"}],"exports":[{"__symbolic":"reference","name":"AutocompleteComponent"},{"__symbolic":"reference","name":"AutocompleteDirective"}],"entryComponents":[{"__symbolic":"reference","name":"AutocompleteComponent"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"AutocompleteModule"}}}}}},"origins":{"AutocompleteComponent":"./lib/autocomplete.component","AutocompleteDirective":"./lib/autocomplete.component","AutocompleteModule":"./lib/autocomplete.module"},"importAs":"ng2-input-autocomplete"}
{
"name": "ng2-input-autocomplete",
"version": "1.1.1",
"version": "1.1.2",
"description": "Angular input auto complete",

@@ -5,0 +5,0 @@ "repository": {

@@ -123,2 +123,4 @@ # ng2-input-autocomplete

**Note:** If you're using reactive forms, pass the `FormControl` into the input as a prop like `<input input-autocomplete [control]="formControl">` for methods such as `setValue` or `reset` to work.
## Development

@@ -125,0 +127,0 @@

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