ps-toolkit-ui 1.6.14 → 1.6.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -111,7 +111,7 @@ export class FormClass {
111
111
  return;
112
112
  }
113
113
  const br = new InputClass(this.environment, this.l, null, null, InputType.Label, (this.onTop ? 'space' : 'underline') + (onSubmit === null ? '' : ' m-v-5'));
114
- const save = new InputClass(this.environment, this.l, name, 'fa-duotone fa-check', InputType.Submit, 'save-form-btn ' + cls + (onSubmit === null ? ' h-30' : ' h-25'));
114
+ const save = new InputClass(this.environment, this.l, name, 'fa-duotone fa-check', InputType.Submit, 'save-form-btn h-30' + cls);
115
115
  save.onClick = () => {
116
116
  this.submit(onSubmit);
117
117
  };
@@ -449,4 +449,4 @@ export class AccordionRowClass {
449
449
  }, 100);
450
450
  }
451
451
  }
452
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJEOi9Qcm9qZWN0cy9Qc1Rvb2xraXQvVUkvcHJvamVjdHMvcHMtdG9vbGtpdC11aS9zcmMvIiwic291cmNlcyI6WyJsaWIvY2xhc3Nlcy9mb3JtLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE1BQU0sT0FBTyxRQUFRO0lBQ25CLFlBQVksSUFBWTtRQUt4QixZQUFPLEdBQUcsR0FBRyxDQUFDO1FBRWQsVUFBSyxHQUFlLElBQUksQ0FBQztRQUN6QixZQUFPLEdBQWUsSUFBSSxDQUFDO1FBQzNCLFdBQU0sR0FBbUMsSUFBSSxDQUFDO1FBQzlDLFVBQUssR0FBRyxHQUFHLEVBQUU7WUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7WUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFDO2dCQUNmLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNoQjtZQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFFLEdBQUcsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDbkQsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBQztvQkFDeEIsYUFBYSxDQUFDLElBQUksQ0FB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QUFLLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsQ0FBQyxFQUFDO1lBQ0wsT0FBTztTQUNSO1FBQ0QsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBQ0QsVUFBVSxDQUFDLElBQUksR0FBRyxNQUFNLEVBQUUsR0FBRyxHQUFHLE9BQU8sRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLFFBQVEsR0FBRyxJQUFJO1FBQ3BFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ2xFLE9BQU87U0FDUjtRQUNELE1BQU0sRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQzdFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM5RSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFF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QUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VudW1VdGlscywgSW5wdXRFcnJvciwgSW5wdXRUeXBlLCBNZXRob2R9IGZyb20gJy4vZW51bS5jbGFzcyc7XHJcbmltcG9ydCB7SGVscGVyQ2xhc3N9IGZyb20gJy4vaGVscGVyLmNsYXNzJztcclxuaW1wb3J0IHtSZXF1ZXN0Q2xhc3N9IGZyb20gJy4vcmVxdWVzdC5jbGFzcyc7XHJcbmltcG9ydCB7VGFibGVDbGFzc30gZnJvbSAnLi90YWJsZS5jbGFzcyc7XHJcbmltcG9ydCAqIGFzICQgZnJvbSAnanF1ZXJ5JztcclxuaW1wb3J0IHtNb2RhbENsYXNzfSBmcm9tICcuL21vZGFsLmNsYXNzJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFByb2dyZXNzIHtcclxuICBjb25zdHJ1Y3RvcihzZWNzOiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2VjcyA9IHRoaXMucmVtYWluU2VjcyA9IHNlY3M7XHJcbiAgfVxyXG4gIHNlY3M6IG51bWJlcjtcclxuICByZW1haW5TZWNzOiBudW1iZXI7XHJcbiAgcGVyY2VudCA9IDEwMDtcclxuICBpbnRlclZhbDtcclxuICBvbkVuZDogKCkgPT4gdm9pZCA9IG51bGw7XHJcbiAgb25TdGFydDogKCkgPT4gdm9pZCA9IG51bGw7XHJcbiAgb25UaWNrOiAobTogbnVtYmVyLCBzOiBudW1iZXIpID0+IHZvaWQgPSBudWxsO1xyXG4gIHN0YXJ0ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5yZW1haW5TZWNzID0gdGhpcy5zZWNzO1xyXG4gICAgdGhpcy5wZXJjZW50ID0gMTAwO1xyXG4gICAgaWYgKHRoaXMub25TdGFydCl7XHJcbiAgICAgIHRoaXMub25TdGFydCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbnRlclZhbCA9IHNldEludGVydmFsKCAoKSA9PiB7XHJcbiAgICAgIHRoaXMucGVyY2VudCA9ICh0aGlzLnJlbWFpblNlY3MgLyB0aGlzLnNlY3MpICogMTAwO1xyXG4gICAgICBpZiAodGhpcy5yZW1haW5TZWNzID09PSAwKXtcclxuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJWYWwpO1xyXG4gICAgICAgIGlmICh0aGlzLm9uRW5kKXtcclxuICAgICAgICAgIHRoaXMub25FbmQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKHRoaXMucmVtYWluU2Vjcykpe1xyXG4gICAgICAgIGNvbnN0IG0gPSBNYXRoLmZsb29yKHRoaXMucmVtYWluU2VjcyAvIDYwKTtcclxuICAgICAgICBjb25zdCBzID0gdGhpcy5yZW1haW5TZWNzICUgNjA7XHJcbiAgICAgICAgdGhpcy5vblRpY2sobSwgcyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZW1haW5TZWNzIC09IDAuNTtcclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBjbGFzcyBGb3JtQ2xhc3Mge1xyXG4gIGNvbnN0cnVjdG9yKGVudmlyb25tZW50OiBhbnksIGw6IChrLCB2PykgPT4gc3RyaW5nLCBuYW1lOiBzdHJpbmcgPSBudWxsLCBwZXJtaXNzaW9uOiBib29sZWFuID0gdHJ1ZSxcclxuICAgICAgICAgICAgICB1cmw6IHN0cmluZyA9IG51bGwsIGNsczogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xyXG4gICAgdGhpcy5sID0gbDtcclxuICAgIHRoaXMudXJsID0gdXJsO1xyXG4gICAgdGhpcy5iYXNlVXJsID0gdXJsO1xyXG4gICAgdGhpcy5jbGFzcyA9IGNscztcclxuICAgIHRoaXMucGVybWlzc2lvbiA9IHBlcm1pc3Npb247XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5pZCA9IHRoaXMubmFtZTtcclxuICB9XHJcbiAgbDogKGssIHY/KSA9PiBzdHJpbmc7XHJcbiAgcGVybWlzc2lvbjogYm9vbGVhbjtcclxuICBlbnZpcm9ubWVudDogYW55ID0gbnVsbDtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgaXNFZGl0ID0gZmFsc2U7XHJcbiAgc3ViTmFtZTogc3RyaW5nID0gbnVsbDtcclxuICBpZDogc3RyaW5nO1xyXG4gIGNsYXNzOiBzdHJpbmc7XHJcbiAgYmFzZVVybDogc3RyaW5nO1xyXG4gIHVybDogc3RyaW5nO1xyXG4gIG1ldGhvZDogTWV0aG9kID0gTWV0aG9kLlBvc3Q7XHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG4gIHN0eWxlOiB7fTtcclxuICBvblRvcCA9IGZhbHNlO1xyXG4gIGRpc3BsYXlMYWJlbCA9IHRydWU7XHJcbiAgaW5wdXRzOiBJbnB1dENsYXNzW10gPSBbXTtcclxuICBvblN1Y2Nlc3NCYXNlOiAocmVzdWx0KSA9PiB2b2lkID0gbnVsbDtcclxuICBvblN1Y2Nlc3M6IChyZXN1bHQpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uRmFpbGVkOiAocmVzdWx0KSA9PiB2b2lkID0gbnVsbDtcclxuICBvbkxvYWQ6IChyZXN1bHQpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uQmVmb3JlU3VibWl0OiAoKSA9PiBib29sZWFuID0gbnVsbDtcclxuICBvbkhpZGVNb2RhbDogKCkgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIGxvYWREYXRhKHVybCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIG5ldyBSZXF1ZXN0Q2xhc3ModGhpcy5lbnZpcm9ubWVudCwgdGhpcy5sKS5zZW5kKHVybCwgTWV0aG9kLlBvc3QsIG51bGwsIG51bGwsIChyZXN1bHQpID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhKHJlc3VsdCk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMub25Mb2FkKXtcclxuICAgICAgICAgIHRoaXMub25Mb2FkKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCA1MDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHN1Ym1pdChvblN1Ym1pdCA9IG51bGwpOiB2b2lkIHtcclxuICAgIG5ldyBSZXF1ZXN0Q2xhc3ModGhpcy5lbnZpcm9ubWVudCwgdGhpcy5sKS5wb3N0Rm9ybSh0aGlzLCBvblN1Ym1pdCk7XHJcbiAgfVxyXG4gIGNoZWNrKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHZhbGlkID0gdHJ1ZTtcclxuICAgIHRoaXMuaW5wdXRzLmZvckVhY2goaW5wID0+IHtcclxuICAgICAgaWYgKCFpbnAuaXNWYWxpZCgpKSB7XHJcbiAgICAgICAgaWYgKHZhbGlkKXtcclxuICAgICAgICAgIGlucC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YWxpZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB2YWxpZDtcclxuICB9XHJcbiAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1ldGhvZCA9IE1ldGhvZC5Qb3N0O1xyXG4gICAgdGhpcy51cmwgPSB0aGlzLmJhc2VVcmw7XHJcbiAgICB0aGlzLnNldEJ1dHRvbnModGhpcy5vblRvcCwgZmFsc2UpO1xyXG4gICAgdGhpcy5jbGVhcklucHV0cygpO1xyXG4gIH1cclxuICBjbGVhcklucHV0cygpOiB2b2lke1xyXG4gICAgdGhpcy5pbnB1dHMuZmlsdGVyKHggPT4geC50eXBlICE9PSBJbnB1dFR5cGUuQ29uc3RhbnQpLmZvckVhY2goaW5wID0+IHtcclxuICAgICAgaW5wLmNsZWFyKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2V0QnV0dG9ucyhmb3JtT25Ub3AsIGVkaXQ6IGJvb2xlYW4sIGlkID0gbnVsbCk6IHZvaWQge1xyXG4gICAgY29uc3QgcyA9IHRoaXMuaW5wdXRzLmZpbmQoeCA9PiB4LnR5cGUgPT09IElucHV0VHlwZS5TdWJtaXQpO1xyXG4gICAgaWYgKCFzKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcy5uYW1lID0gZWRpdCA/ICdBY2NlcHQnIDogJ1NhdmUnO1xyXG4gICAgcy5jbGFzcyA9IGVkaXQgPyBzLmNsYXNzLnJlcGxhY2UoJ2dyZWVuJywgJ2JsdWUnKSA6IHMuY2xhc3MucmVwbGFjZSgnYmx1ZScsICdncmVlbicpO1xyXG4gIH1cclxuICBhZGRCdXR0b25zKG5hbWUgPSAnU2F2ZScsIGNscyA9ICdncmVlbicsIGNsZWFyID0gdHJ1ZSwgb25TdWJtaXQgPSBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbnB1dHMuZmlsdGVyKHggPT4geC50eXBlID09PSBJbnB1dFR5cGUuU3VibWl0KS5sZW5ndGggPiAwKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYnIgPSBuZXcgSW5wdXRDbGFzcyh0aGlzLmVudmlyb25tZW50LCB0aGlzLmwsIG51bGwsIG51bGwsIElucHV0VHlwZS5MYWJlbCxcclxuICAgICAgKHRoaXMub25Ub3AgPyAnc3BhY2UnIDogJ3VuZGVybGluZScpICsgKG9uU3VibWl0ID09PSBudWxsID8gJycgOiAnIG0tdi01JykpO1xyXG4gICAgY29uc3Qgc2F2ZSA9IG5ldyBJbnB1dENsYXNzKHRoaXMuZW52aXJvbm1lbnQsIHRoaXMubCwgbmFtZSwgJ2ZhLWR1b3RvbmUgZmEtY2hlY2snLCBJbnB1dFR5cGUuU3VibWl0LFxyXG4gICAgICAnc2F2ZS1mb3JtLWJ0biAnICsgY2xzICsgKG9uU3VibWl0ID09PSBudWxsID8gJyBoLTMwJyA6ICcgaC0yNScpKTtcclxuICAgIHNhdmUub25DbGljayA9ICgpID0+IHtcclxuICAgICAgdGhpcy5zdWJtaXQob25TdWJtaXQpO1xyXG4gICAgfTtcclxuICAgIHRoaXMuaW5wdXRzLnB1c2goYnIpO1xyXG4gICAgdGhpcy5pbnB1dHMucHVzaChzYXZlKTtcclxuICAgIGlmIChjbGVhcil7XHJcbiAgICAgIGNvbnN0IGVyYXNlID0gbmV3IElucHV0Q2xhc3ModGhpcy5lbnZpcm9ubWVudCwgdGhpcy5sLCBudWxsLCAnZmEtZHVvdG9uZSBmYS1lcmFzZXInLCBJbnB1dFR5cGUuQnV0dG9uLFxyXG4gICAgICAgICdmLWwgdy11IGdyZXkgZXJhc2UtZm9ybS1idG4nICsgKG9uU3VibWl0ID09PSBudWxsID8gJyBoLTMwJyA6ICcgaC0yNScpKTtcclxuICAgICAgZXJhc2Uub25DbGljayA9ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5vblRvcCl7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmNsZWFySW5wdXRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmlucHV0cy5wdXNoKGVyYXNlKTtcclxuICAgIH1cclxuICB9XHJcbiAgZGF0YShkID0gbnVsbCk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dHMuZmluZEluZGV4KHggPT4geC50eXBlID09PSBJbnB1dFR5cGUuRmlsZSkgPT09IC0xKXtcclxuICAgICAgaWYgKGQgPT0gbnVsbCl7XHJcbiAgICAgICAgZCA9IHt9O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaW5wdXRzLmZvckVhY2goaW5wID0+IHtcclxuICAgICAgICBjb25zdCB2bCA9IGlucC5kYXRhKCk7XHJcbiAgICAgICAgaWYgKHZsICE9PSBudWxsKXtcclxuICAgICAgICAgIGlmIChkW2lucC5uYW1lXSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIF8uc2V0KGQsIGlucC5uYW1lLCB2bCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZFtpbnAubmFtZV0gaW5zdGFuY2VvZiBBcnJheSl7XHJcbiAgICAgICAgICAgICAgZFtpbnAubmFtZV0ucHVzaCh2bCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZFtpbnAubmFtZV0gPSBbZFtpbnAubmFtZV0sIHZsXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgaWYgKGQgPT0gbnVsbCl7XHJcbiAgICAgICAgZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaW5wdXRzLmZvckVhY2goaW5wID0+IHtcclxuICAgICAgICBjb25zdCB2bCA9IGlucC5kYXRhKCk7XHJcbiAgICAgICAgaWYgKHZsICE9PSBudWxsKXtcclxuICAgICAgICAgIGlmICh2bCBpbnN0YW5jZW9mIEFycmF5KXtcclxuICAgICAgICAgICAgZm9yIChjb25zdCB2IG9mIHZsKXtcclxuICAgICAgICAgICAgICBkLmFwcGVuZChpbnAubmFtZSwgdik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBkLmFwcGVuZChpbnAubmFtZSwgdmwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZDtcclxuICB9XHJcbiAganNvbihkID0gbnVsbCk6IHt9IHtcclxuICAgIGlmIChkID09IG51bGwpe1xyXG4gICAgICBkID0ge307XHJcbiAgICB9XHJcbiAgICB0aGlzLmlucHV0cy5mb3JFYWNoKGlucCA9PiB7XHJcbiAgICAgIGNvbnN0IHZsID0gaW5wLmRhdGEoKTtcclxuICAgICAgaWYgKHZsICE9PSBudWxsICYmIHZsICE9PSAnJyl7XHJcbiAgICAgICAgaWYgKHZsIGluc3RhbmNlb2YgQXJyYXkpe1xyXG4gICAgICAgICAgZm9yIChjb25zdCB2IG9mIHZsKXtcclxuICAgICAgICAgICAgZFtpbnAubmFtZV0gPSB2O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgZFtpbnAubmFtZV0gPSB2bDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGQ7XHJcbiAgfVxyXG4gIHNldERhdGEoZCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbnB1dHMuZm9yRWFjaChpbnAgPT4ge1xyXG4gICAgICBjb25zdCBpdiA9IF8uZ2V0KGQsIGlucC5uYW1lKTtcclxuICAgICAgaWYgKGlucC50eXBlID09PSBJbnB1dFR5cGUuQ2FyU2VhcmNoKXtcclxuICAgICAgICBjb25zdCBpdnMgPSBfLmdldChkLCBpbnAubmFtZS5yZXBsYWNlKCdJZCcsICcnKSk7XHJcbiAgICAgICAgaW5wLnNldFZhbHVlKHtTZWFyY2g6IGl2cywgVmFsdWU6IGl2fSwgdHJ1ZSk7XHJcbiAgICAgIH1lbHNlIGlmIChpbnAudHlwZSAhPT0gSW5wdXRUeXBlLkxhYmVsIHx8IGl2ICE9IG51bGwpe1xyXG4gICAgICAgIGlucC5zZXRWYWx1ZShpdiwgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlucC50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlUGxhcXVlIHx8IGlucC50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlKXtcclxuICAgICAgICBjb25zdCBpdnMgPSBfLmdldChkLCBpbnAubmFtZS5yZXBsYWNlKCdJZCcsICcnKSk7XHJcbiAgICAgICAgaW5wLnNldFNlYXJjaChpdnMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBJbnB1dENsYXNzIHtcclxuICBjb25zdHJ1Y3RvcihlbnZpcm9ubWVudDogYW55LCBsOiAoaywgdj8pID0+IHN0cmluZywgbmFtZTogc3RyaW5nLCBpY29uOiBzdHJpbmcgPSBudWxsLFxyXG4gICAgICAgICAgICAgIHR5cGU6IElucHV0VHlwZSA9IElucHV0VHlwZS5UZXh0LCBjbHM6IHN0cmluZyA9ICcnLCB2YWx1ZSA9IG51bGwsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IGJvb2xlYW4gPSB0cnVlLCBtaW5MZW5ndGggPSAtMSwgbWF4TGVuZ3RoID0gLTEpIHtcclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcclxuICAgIHRoaXMubCA9IGw7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5sb2FkaW5nTmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gbmFtZTtcclxuICAgIHRoaXMuaWNvbiA9IGljb247XHJcbiAgICB0aGlzLmNsYXNzID0gY2xzICsgKFtJbnB1dFR5cGUuTW9iaWxlLCBJbnB1dFR5cGUuUGhvbmUsIElucHV0VHlwZS5QYXNzd29yZCwgSW5wdXRUeXBlLkVtYWlsLCBJbnB1dFR5cGUuTnVtYmVyLCBJbnB1dFR5cGUuUHJpY2UsXHJcbiAgICAgIElucHV0VHlwZS5OYXRpb25hbENvZGUsIElucHV0VHlwZS5TaGViYSwgSW5wdXRUeXBlLlBvc3RhbENvZGUsIElucHV0VHlwZS5EYXRlLCBJbnB1dFR5cGUuVGltZSwgSW5wdXRUeXBlLkJpbGxOdW1iZXJdLmluY2x1ZGVzKHR5cGUpID8gJyBsdHInIDogJycpO1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuZGVmYXVsdCA9IHZhbHVlID09IG51bGwgPyBudWxsIDogKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyBfLmNsb25lRGVlcCh2YWx1ZSkgOiBIZWxwZXJDbGFzcy5jbG9uZSh2YWx1ZSkpO1xyXG4gICAgdGhpcy5iYXNlUmVxdWlyZWQgPSByZXF1aXJlZDtcclxuICAgIHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZDtcclxuICAgIHRoaXMuaW5FZGl0UmVxdWlyZWQgPSByZXF1aXJlZDtcclxuICAgIHRoaXMubWluTGVuZ3RoID0gdHlwZSA9PT0gSW5wdXRUeXBlLk1vYmlsZSB8fCB0eXBlID09PSBJbnB1dFR5cGUuUGhvbmUgPyAxMSA6XHJcbiAgICAgIHR5cGUgPT09IElucHV0VHlwZS5OYXRpb25hbENvZGUgfHwgdHlwZSA9PT0gSW5wdXRUeXBlLlBvc3RhbENvZGUgPyAxMCA6XHJcbiAgICAgIHR5cGUgPT09IElucHV0VHlwZS5TaGViYSA/IDI0IDogbWluTGVuZ3RoO1xyXG4gICAgdGhpcy5tYXhMZW5ndGggPSB0eXBlID09PSBJbnB1dFR5cGUuTW9iaWxlIHx8IHR5cGUgPT09IElucHV0VHlwZS5QaG9uZSA/IDExIDpcclxuICAgICAgdHlwZSA9PT0gSW5wdXRUeXBlLk5hdGlvbmFsQ29kZSB8fCB0eXBlID09PSBJbnB1dFR5cGUuUG9zdGFsQ29kZSA/IDEwIDpcclxuICAgICAgdHlwZSA9PT0gSW5wdXRUeXBlLlNoZWJhID8gMjQgOiBtYXhMZW5ndGg7XHJcbiAgfVxyXG4gIGVudmlyb25tZW50OiBhbnkgPSBudWxsO1xyXG4gIGw6IChrLCB2PykgPT4gc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB1cmwgPSBudWxsO1xyXG4gIHF1ZXJ5UGFyYW1zID0gbnVsbDtcclxuICB1cmxOZXdUYWIgPSBmYWxzZTtcclxuICBsb2FkaW5nTmFtZTogc3RyaW5nO1xyXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBudWxsO1xyXG4gIHRvb2x0aXA6IHN0cmluZztcclxuICBpZDogc3RyaW5nO1xyXG4gIGljb246IHN0cmluZztcclxuICBhZGROZXcgPSBmYWxzZTtcclxuICBjbGFzczogc3RyaW5nO1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSBudWxsO1xyXG4gIHR5cGU6IElucHV0VHlwZTtcclxuICB2YWx1ZTtcclxuICBzZWFyY2g7XHJcbiAgZGVmYXVsdCA9IG51bGw7XHJcbiAgYmFzZVJlcXVpcmVkOiBib29sZWFuO1xyXG4gIHJlcXVpcmVkOiBib29sZWFuO1xyXG4gIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgaW5FZGl0RGlzYWJsZWQgPSBmYWxzZTtcclxuICBpbkVkaXRWaXNpYmxlID0gdHJ1ZTtcclxuICBpbkVkaXRSZXF1aXJlZCA9IHRydWU7XHJcbiAgZGlzcGxheUxhYmVsID0gdHJ1ZTtcclxuICBsYWJlbDogc3RyaW5nID0gbnVsbDtcclxuICB3aXRoQ2xlYXIgPSBmYWxzZTtcclxuICBtaW5MZW5ndGggPSAtMTtcclxuICBtYXhMZW5ndGggPSAtMTtcclxuICBlcnJvcjogSW5wdXRFcnJvciA9IG51bGw7XHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG4gIGJ1dHRvbiA9IG51bGw7XHJcbiAgb25DbGlja0J1dHRvbjogKCkgPT4gdm9pZCA9IG51bGw7XHJcbiAgcHJvZ3Jlc3M6IFByb2dyZXNzID0gbnVsbDtcclxuICBvbkNsaWNrOiAoYnRuKSA9PiB2b2lkID0gbnVsbDtcclxuICBvbktleVVwOiAoaW5wKSA9PiB2b2lkID0gbnVsbDtcclxuICBvbktleURvd246IChlKSA9PiB2b2lkID0gbnVsbDtcclxuICBvcHRpb25zOiBPcHRpb25DbGFzc1tdID0gW107XHJcbiAgbWF0Y2g6IElucHV0Q2xhc3MgPSBudWxsO1xyXG4gIHJlbDogSW5wdXRDbGFzcyA9IG51bGw7XHJcbiAgcmVsVXJsOiBzdHJpbmcgPSBudWxsO1xyXG4gIHRhYmxlOiBUYWJsZUNsYXNzO1xyXG4gIHN0eWxlID0ge307XHJcbiAgcG9zaXRpb24gPSAnYm90dG9tJztcclxuICBvbkNoYW5nZTogKHYsIGU/KSA9PiB2b2lkID0gbnVsbDtcclxuICBob3ZlciA9IC0xO1xyXG4gIHZpc2libGUgPSB0cnVlO1xyXG4gIGV4cG9ydFBkZiA9IGZhbHNlO1xyXG4gIG9wZW4gPSBmYWxzZTtcclxuICBtdWx0aXBsZSA9IGZhbHNlO1xyXG4gIG9ubHlDaGlsZCA9IHRydWU7XHJcbiAgYWxsb3dlZCA9IG51bGw7XHJcbiAgcm93ID0gbnVsbDtcclxuICByb3dzID0gW107XHJcbiAgaW5kZXggPSAwO1xyXG4gIGxldmVsID0gbnVsbDtcclxuICBtb2RhbDogTW9kYWxDbGFzcyA9IG51bGw7XHJcbiAgbmFtZUZ1bjogKHIpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uRm9jdXNPdXQ6IChlKSA9PiB2b2lkID0gKCkgPT4ge307XHJcbiAgZm9jdXMoY2hhbmdlSW5kZXg6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge31cclxuICBjaGFuZ2VUeXBlOiAodDogSW5wdXRUeXBlKSA9PiB2b2lkID0gKCkgPT4ge307XHJcbiAgc2V0VmFsdWU6ICh2LCBpc0VkaXQpID0+IHZvaWQgPSAodiwgaXNFZGl0KSA9PiB7IHRoaXMudmFsdWUgPSB2OyB9O1xyXG4gIHNldFNlYXJjaDogKHYpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICBjbGVhcjogKCkgPT4gdm9pZCA9ICgpID0+IHsgdGhpcy52YWx1ZSA9IG51bGw7IH07XHJcbiAgZm9jdXNPdXQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICBkYXRhOiAoKSA9PiBhbnkgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy52YWx1ZTtcclxuICB9XHJcbiAgaXNWYWxpZDogKCkgPT4gYm9vbGVhbiA9ICgpID0+IHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuICBsb2FkKHUgPSBudWxsLCBkb25lOiAoKSA9PiB2b2lkID0gbnVsbCk6IHZvaWR7XHJcbiAgICB1ID0gdSA/IHUgOiB0aGlzLnVybDtcclxuICAgIGlmICh1KXtcclxuICAgICAgdGhpcy5vcHRpb25zID0gW107XHJcbiAgICAgIHRoaXMuaG92ZXIgPSAtMTtcclxuICAgICAgdGhpcy5pbmRleCA9IDA7XHJcbiAgICAgIHRoaXMucm93cyA9IFtdO1xyXG4gICAgICBpZiAodHlwZW9mIHUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKCF1LmluY2x1ZGVzKCd7fScpKXtcclxuICAgICAgICAgIG5ldyBSZXF1ZXN0Q2xhc3ModGhpcy5lbnZpcm9ubWVudCwgdGhpcy5sKS5zZW5kKHUgPyB1IDogdGhpcy51cmwsIE1ldGhvZC5Qb3N0LCBudWxsLCB0aGlzLCAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3RTZWFyY2ggfHwgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0IHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZSB8fFxyXG4gICAgICAgICAgICAgIHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZSB8fCB0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3RBdXRvQ29tcGxldGVQbGFxdWVNIHx8XHJcbiAgICAgICAgICAgICAgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlUGxhcXVlRiB8fCB0aGlzLnR5cGUgPT09IElucHV0VHlwZS5SYWRpbykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmdldE9wdGlvbnMocmVzdWx0LCBudWxsKTtcclxuICAgICAgICAgICAgICBjb25zdCBzID0gcmVzdWx0LmZpbmQoeCA9PiB4LlNlbGVjdGVkKTtcclxuICAgICAgICAgICAgICBpZiAocykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHMuSWQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRPcHRpb25zKHIpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlRyZWUgfHwgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuVHJlZVJhZGlvKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3dzID0gdGhpcy5nZXRSb3dzKHJlc3VsdCwgbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRvbmUpIHtcclxuICAgICAgICAgICAgICBkb25lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XHJcbiAgICAgICAgRW51bVV0aWxzLmdldEtleXNBbmRWYWx1ZXModSkuZm9yRWFjaCgoaykgPT4ge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goe05hbWU6IHRoaXMubChrLmtleSksIElkOiBrLnZhbHVlLnRvU3RyaW5nKCl9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCByID0gdGhpcy5nZXRPcHRpb25zKHJlc3VsdCwgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5zZXRPcHRpb25zKHIpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucyBpbnN0YW5jZW9mIEFycmF5KXtcclxuICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2goeCA9PiB4LmluZGV4ID0gdGhpcy5pbmRleCsrKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0T3B0aW9ucyhyKTogdm9pZHtcclxuICAgIHRoaXMub3B0aW9ucyA9IHI7XHJcbiAgICBpZiAodGhpcy52YWx1ZSAhPSBudWxsKXtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLnZhbHVlLCB0cnVlKTtcclxuICAgICAgfSwgNTAwKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0T3B0aW9ucyhyLCBwLCB0cmVlID0gdHJ1ZSk6IE9wdGlvbkNsYXNzW117XHJcbiAgICByZXR1cm4gci5maWx0ZXIoeCA9PiAocCA9PSBudWxsICYmICF4LlBhcmVudElkKSB8fCB4LlBhcmVudElkID09PSBwIHx8ICF0cmVlKVxyXG4gICAgICAubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbyA9IG5ldyBPcHRpb25DbGFzcyh4Lk5hbWUsIHguSWQudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZSB8fCB0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3RBdXRvQ29tcGxldGVQbGFxdWVNIHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZUYgfHwgdGhpcy5uYW1lID09PSAnQ2FySWQnKXtcclxuICAgICAgICAgIGNvbnN0IHRuID0gby5uYW1lLnNwbGl0KCdfJyk7XHJcbiAgICAgICAgICBpZiAodG4ubGVuZ3RoID09PSA0KXtcclxuICAgICAgICAgICAgdG5bMV0gKz0gJyZscm07JztcclxuICAgICAgICAgICAgdG5bMl0gKz0gJyB8JztcclxuICAgICAgICAgICAgby5uYW1lID0gdG4uam9pbignICcpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0bi5sZW5ndGggPT09IDIpe1xyXG4gICAgICAgICAgICBvLm5hbWUgPSB0bi5qb2luKCcgJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG8uc2VhcmNoID0geC5TZWFyY2g7XHJcbiAgICAgICAgby5vcHRpb24gPSB4O1xyXG4gICAgICAgIG8uaW5kZXggPSB0aGlzLmluZGV4Kys7XHJcbiAgICAgICAgby5vcHRpb25zID0gdHJlZSA/IHRoaXMuZ2V0T3B0aW9ucyhyLCB4LklkKSA6IFtdO1xyXG4gICAgICAgIHJldHVybiBvO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZ2V0Um93cyhyLCBwKTogVHJlZVJvd0NsYXNzW117XHJcbiAgICBjb25zdCBsID0gW107XHJcbiAgICByLmZpbHRlcih4ID0+IChwID09IG51bGwgJiYgIXguUGFyZW50SWQpIHx8IHguUGFyZW50SWQgPT09IHApLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgbGV0IGMgPSB0aGlzLmdldFJvd3MociwgeC5JZCk7XHJcbiAgICAgIGMgPSBjLmxlbmd0aCA+IDAgPyBjIDogeC5DaGlsZHJlbiA/IHguQ2hpbGRyZW4ubWFwKGEgPT4gbmV3IFRyZWVSb3dDbGFzcyhhLk5hbWUsIGEuSWQsIGEuU2VsZWN0ZWQpKSA6IFtdO1xyXG4gICAgICBsZXQgcyA9IHguU2VsZWN0ZWQgPT09IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLm9ubHlDaGlsZCl7XHJcbiAgICAgICAgcyA9IGMubGVuZ3RoID09PSAwID8geC5TZWxlY3RlZCA6IChjLmZpbmQoeSA9PiB5LnNlbGVjdGVkID09PSBmYWxzZSB8fCB5LnNlbGVjdGVkID09PSBudWxsKSA9PSBudWxsID8gdHJ1ZSA6XHJcbiAgICAgICAgICAoYy5maW5kKHkgPT4geS5zZWxlY3RlZCA9PT0gdHJ1ZSB8fCB5LnNlbGVjdGVkID09PSBudWxsKSAhPSBudWxsID8gbnVsbCA6IGZhbHNlKSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbiA9IHRoaXMubmFtZUZ1biA/IHRoaXMubmFtZUZ1bih4KSA6IHguTmFtZTtcclxuICAgICAgbC5wdXNoKG5ldyBUcmVlUm93Q2xhc3MobiwgeC5JZCwgcywgYykpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbDtcclxuICB9XHJcbiAgZ2V0TGFiZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBIZWxwZXJDbGFzcy5nZXRMYWJlbCh0aGlzKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBPcHRpb25DbGFzcyB7XHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBvcHRpb25zOiBPcHRpb25DbGFzc1tdID0gW10sIGNsczogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICB0aGlzLmNsYXNzID0gY2xzO1xyXG4gIH1cclxuICBvcHRpb247XHJcbiAgc2VhcmNoOiBzdHJpbmc7XHJcbiAgY2xhc3M6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZztcclxuICBpbmRleDogbnVtYmVyO1xyXG4gIHNob3cgPSB0cnVlO1xyXG4gIHNlbGVjdGVkID0gZmFsc2U7XHJcbiAgcGFyZW50OiBPcHRpb25DbGFzcyA9IG51bGw7XHJcbiAgb3B0aW9uczogT3B0aW9uQ2xhc3NbXTtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbn1cclxuZXhwb3J0IGNsYXNzIERheUNsYXNzIHtcclxuICBjb25zdHJ1Y3RvcihkYXk6IG51bWJlciwgdG9kYXk6IGJvb2xlYW4sIHNlbGVjdGVkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmRheSA9IGRheTtcclxuICAgIHRoaXMudG9kYXkgPSB0b2RheTtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcclxuICB9XHJcbiAgZGF5OiBudW1iZXI7XHJcbiAgdG9kYXk6IGJvb2xlYW47XHJcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGNsYXNzIFRyZWVSb3dDbGFzcyB7XHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBzZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlLCBjaGlsZHJlbjogVHJlZVJvd0NsYXNzW10gPSBbXSkge1xyXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcclxuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICB9XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHZhbHVlOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgcGFyZW50OiBUcmVlUm93Q2xhc3M7XHJcbiAgY2hpbGRyZW46IFRyZWVSb3dDbGFzc1tdO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQWNjb3JkaW9uQ2xhc3Mge1xyXG4gIGNvbnN0cnVjdG9yKGw6IChrLCB2PykgPT4gc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGNsczogc3RyaW5nID0gJycsIHJvd3M6IEFjY29yZGlvblJvd0NsYXNzW10pIHtcclxuICAgIHRoaXMubCA9IGw7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5jbGFzcyA9IGNscztcclxuICAgIHRoaXMucm93cyA9IHJvd3M7XHJcbiAgfVxyXG4gIGw6IChrLCB2PykgPT4gc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBjbGFzczogc3RyaW5nO1xyXG4gIHJvd3M6IEFjY29yZGlvblJvd0NsYXNzW107XHJcbiAgaGFzRGVsZXRlID0gZmFsc2U7XHJcbiAgZGlzcGxheUxhYmVsID0gZmFsc2U7XHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG4gIG9uRGVsZXRlOiAocm93KSA9PiB2b2lkID0gbnVsbDtcclxuICBjaGVjaygpOiBib29sZWFue1xyXG4gICAgZm9yIChjb25zdCByb3cgb2YgdGhpcy5yb3dzKXtcclxuICAgICAgaWYgKCFyb3cuZm9ybS5jaGVjaygpKXtcclxuICAgICAgICByb3cub3BlbigpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQWNjb3JkaW9uUm93Q2xhc3Mge1xyXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgZm9ybTogRm9ybUNsYXNzID0gbnVsbCwgdGFibGU6IFRhYmxlQ2xhc3MgPSBudWxsKSB7XHJcbiAgICB0aGlzLmlkID0gaWQ7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5mb3JtID0gZm9ybTtcclxuICAgIHRoaXMudGFibGUgPSB0YWJsZTtcclxuICB9XHJcbiAgaWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgc2hvdyA9IHRydWU7XHJcbiAgZm9ybTogRm9ybUNsYXNzO1xyXG4gIHRhYmxlOiBUYWJsZUNsYXNzO1xyXG4gIHRvZ2dsZSgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAkKCcjQWNjb3JkaW9uUm93JyArIHRoaXMuaWQgKyAnID4gLmhlYWRlcicpLmNsaWNrKCk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuICBvcGVuKCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghJCgnI0FjY29yZGlvblJvdycgKyB0aGlzLmlkICsgJyA+IC5jb250ZW50JykuaGFzQ2xhc3MoJ29wZW4nKSl7XHJcbiAgICAgICAgJCgnI0FjY29yZGlvblJvdycgKyB0aGlzLmlkICsgJyA+IC5oZWFkZXInKS5jbGljaygpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxufVxyXG4iXX0=
452
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJEOi9Qcm9qZWN0cy9Qc1Rvb2xraXQvVUkvcHJvamVjdHMvcHMtdG9vbGtpdC11aS9zcmMvIiwic291cmNlcyI6WyJsaWIvY2xhc3Nlcy9mb3JtLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE1BQU0sT0FBTyxRQUFRO0lBQ25CLFlBQVksSUFBWTtRQUt4QixZQUFPLEdBQUcsR0FBRyxDQUFDO1FBRWQsVUFBSyxHQUFlLElBQUksQ0FBQztRQUN6QixZQUFPLEdBQWUsSUFBSSxDQUFDO1FBQzNCLFdBQU0sR0FBbUMsSUFBSSxDQUFDO1FBQzlDLFVBQUssR0FBRyxHQUFHLEVBQUU7WUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7WUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFDO2dCQUNmLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNoQjtZQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFFLEdBQUcsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDbkQsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBQztvQkFDeEIsYUFBYSxDQUFDLElBQUksQ0FB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QUFLLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsQ0FBQyxFQUFDO1lBQ0wsT0FBTztTQUNSO1FBQ0QsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBQ0QsVUFBVSxDQUFDLElBQUksR0FBRyxNQUFNLEVBQUUsR0FBRyxHQUFHLE9BQU8sRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLFFBQVEsR0FBRyxJQUFJO1FBQ3BFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ2xFLE9BQU87U0FDUjtRQUNELE1BQU0sRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQzdFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM5RSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFF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QyxNQUFNLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsS0FBSztZQUM1SCxTQUFTLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNySixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNsSCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxTQUFTLENBQUMsTUFBTSxJQUFJLElBQUksS0FBSyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzRSxJQUFJLEtBQUssU0FBUyxDQUFDLFlBQVksSUFBSSxJQUFJLEtBQUssU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZFLElB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IE1ldGhvZH0gZnJvbSAnLi9lbnVtLmNsYXNzJztcclxuaW1wb3J0IHtIZWxwZXJDbGFzc30gZnJvbSAnLi9oZWxwZXIuY2xhc3MnO1xyXG5pbXBvcnQge1JlcXVlc3RDbGFzc30gZnJvbSAnLi9yZXF1ZXN0LmNsYXNzJztcclxuaW1wb3J0IHtUYWJsZUNsYXNzfSBmcm9tICcuL3RhYmxlLmNsYXNzJztcclxuaW1wb3J0ICogYXMgJCBmcm9tICdqcXVlcnknO1xyXG5pbXBvcnQge01vZGFsQ2xhc3N9IGZyb20gJy4vbW9kYWwuY2xhc3MnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcblxyXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3Mge1xyXG4gIGNvbnN0cnVjdG9yKHNlY3M6IG51bWJlcikge1xyXG4gICAgdGhpcy5zZWNzID0gdGhpcy5yZW1haW5TZWNzID0gc2VjcztcclxuICB9XHJcbiAgc2VjczogbnVtYmVyO1xyXG4gIHJlbWFpblNlY3M6IG51bWJlcjtcclxuICBwZXJjZW50ID0gMTAwO1xyXG4gIGludGVyVmFsO1xyXG4gIG9uRW5kOiAoKSA9PiB2b2lkID0gbnVsbDtcclxuICBvblN0YXJ0OiAoKSA9PiB2b2lkID0gbnVsbDtcclxuICBvblRpY2s6IChtOiBudW1iZXIsIHM6IG51bWJlcikgPT4gdm9pZCA9IG51bGw7XHJcbiAgc3RhcnQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnJlbWFpblNlY3MgPSB0aGlzLnNlY3M7XHJcbiAgICB0aGlzLnBlcmNlbnQgPSAxMDA7XHJcbiAgICBpZiAodGhpcy5vblN0YXJ0KXtcclxuICAgICAgdGhpcy5vblN0YXJ0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmludGVyVmFsID0gc2V0SW50ZXJ2YWwoICgpID0+IHtcclxuICAgICAgdGhpcy5wZXJjZW50ID0gKHRoaXMucmVtYWluU2VjcyAvIHRoaXMuc2VjcykgKiAxMDA7XHJcbiAgICAgIGlmICh0aGlzLnJlbWFpblNlY3MgPT09IDApe1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlclZhbCk7XHJcbiAgICAgICAgaWYgKHRoaXMub25FbmQpe1xyXG4gICAgICAgICAgdGhpcy5vbkVuZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIodGhpcy5yZW1haW5TZWNzKSl7XHJcbiAgICAgICAgY29uc3QgbSA9IE1hdGguZmxvb3IodGhpcy5yZW1haW5TZWNzIC8gNjApO1xyXG4gICAgICAgIGNvbnN0IHMgPSB0aGlzLnJlbWFpblNlY3MgJSA2MDtcclxuICAgICAgICB0aGlzLm9uVGljayhtLCBzKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbWFpblNlY3MgLT0gMC41O1xyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGNsYXNzIEZvcm1DbGFzcyB7XHJcbiAgY29uc3RydWN0b3IoZW52aXJvbm1lbnQ6IGFueSwgbDogKGssIHY/KSA9PiBzdHJpbmcsIG5hbWU6IHN0cmluZyA9IG51bGwsIHBlcm1pc3Npb246IGJvb2xlYW4gPSB0cnVlLFxyXG4gICAgICAgICAgICAgIHVybDogc3RyaW5nID0gbnVsbCwgY2xzOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XHJcbiAgICB0aGlzLmwgPSBsO1xyXG4gICAgdGhpcy51cmwgPSB1cmw7XHJcbiAgICB0aGlzLmJhc2VVcmwgPSB1cmw7XHJcbiAgICB0aGlzLmNsYXNzID0gY2xzO1xyXG4gICAgdGhpcy5wZXJtaXNzaW9uID0gcGVybWlzc2lvbjtcclxuICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLmlkID0gdGhpcy5uYW1lO1xyXG4gIH1cclxuICBsOiAoaywgdj8pID0+IHN0cmluZztcclxuICBwZXJtaXNzaW9uOiBib29sZWFuO1xyXG4gIGVudmlyb25tZW50OiBhbnkgPSBudWxsO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBpc0VkaXQgPSBmYWxzZTtcclxuICBzdWJOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgY2xhc3M6IHN0cmluZztcclxuICBiYXNlVXJsOiBzdHJpbmc7XHJcbiAgdXJsOiBzdHJpbmc7XHJcbiAgbWV0aG9kOiBNZXRob2QgPSBNZXRob2QuUG9zdDtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgc3R5bGU6IHt9O1xyXG4gIG9uVG9wID0gZmFsc2U7XHJcbiAgZGlzcGxheUxhYmVsID0gdHJ1ZTtcclxuICBpbnB1dHM6IElucHV0Q2xhc3NbXSA9IFtdO1xyXG4gIG9uU3VjY2Vzc0Jhc2U6IChyZXN1bHQpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uU3VjY2VzczogKHJlc3VsdCkgPT4gdm9pZCA9IG51bGw7XHJcbiAgb25GYWlsZWQ6IChyZXN1bHQpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uTG9hZDogKHJlc3VsdCkgPT4gdm9pZCA9IG51bGw7XHJcbiAgb25CZWZvcmVTdWJtaXQ6ICgpID0+IGJvb2xlYW4gPSBudWxsO1xyXG4gIG9uSGlkZU1vZGFsOiAoKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgbG9hZERhdGEodXJsKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgbmV3IFJlcXVlc3RDbGFzcyh0aGlzLmVudmlyb25tZW50LCB0aGlzLmwpLnNlbmQodXJsLCBNZXRob2QuUG9zdCwgbnVsbCwgbnVsbCwgKHJlc3VsdCkgPT4ge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldERhdGEocmVzdWx0KTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5vbkxvYWQpe1xyXG4gICAgICAgICAgdGhpcy5vbkxvYWQocmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDUwMCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgc3VibWl0KG9uU3VibWl0ID0gbnVsbCk6IHZvaWQge1xyXG4gICAgbmV3IFJlcXVlc3RDbGFzcyh0aGlzLmVudmlyb25tZW50LCB0aGlzLmwpLnBvc3RGb3JtKHRoaXMsIG9uU3VibWl0KTtcclxuICB9XHJcbiAgY2hlY2soKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgdmFsaWQgPSB0cnVlO1xyXG4gICAgdGhpcy5pbnB1dHMuZm9yRWFjaChpbnAgPT4ge1xyXG4gICAgICBpZiAoIWlucC5pc1ZhbGlkKCkpIHtcclxuICAgICAgICBpZiAodmFsaWQpe1xyXG4gICAgICAgICAgaW5wLmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhbGlkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHZhbGlkO1xyXG4gIH1cclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMubWV0aG9kID0gTWV0aG9kLlBvc3Q7XHJcbiAgICB0aGlzLnVybCA9IHRoaXMuYmFzZVVybDtcclxuICAgIHRoaXMuc2V0QnV0dG9ucyh0aGlzLm9uVG9wLCBmYWxzZSk7XHJcbiAgICB0aGlzLmNsZWFySW5wdXRzKCk7XHJcbiAgfVxyXG4gIGNsZWFySW5wdXRzKCk6IHZvaWR7XHJcbiAgICB0aGlzLmlucHV0cy5maWx0ZXIoeCA9PiB4LnR5cGUgIT09IElucHV0VHlwZS5Db25zdGFudCkuZm9yRWFjaChpbnAgPT4ge1xyXG4gICAgICBpbnAuY2xlYXIoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZXRCdXR0b25zKGZvcm1PblRvcCwgZWRpdDogYm9vbGVhbiwgaWQgPSBudWxsKTogdm9pZCB7XHJcbiAgICBjb25zdCBzID0gdGhpcy5pbnB1dHMuZmluZCh4ID0+IHgudHlwZSA9PT0gSW5wdXRUeXBlLlN1Ym1pdCk7XHJcbiAgICBpZiAoIXMpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBzLm5hbWUgPSBlZGl0ID8gJ0FjY2VwdCcgOiAnU2F2ZSc7XHJcbiAgICBzLmNsYXNzID0gZWRpdCA/IHMuY2xhc3MucmVwbGFjZSgnZ3JlZW4nLCAnYmx1ZScpIDogcy5jbGFzcy5yZXBsYWNlKCdibHVlJywgJ2dyZWVuJyk7XHJcbiAgfVxyXG4gIGFkZEJ1dHRvbnMobmFtZSA9ICdTYXZlJywgY2xzID0gJ2dyZWVuJywgY2xlYXIgPSB0cnVlLCBvblN1Ym1pdCA9IG51bGwpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlucHV0cy5maWx0ZXIoeCA9PiB4LnR5cGUgPT09IElucHV0VHlwZS5TdWJtaXQpLmxlbmd0aCA+IDApe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBiciA9IG5ldyBJbnB1dENsYXNzKHRoaXMuZW52aXJvbm1lbnQsIHRoaXMubCwgbnVsbCwgbnVsbCwgSW5wdXRUeXBlLkxhYmVsLFxyXG4gICAgICAodGhpcy5vblRvcCA/ICdzcGFjZScgOiAndW5kZXJsaW5lJykgKyAob25TdWJtaXQgPT09IG51bGwgPyAnJyA6ICcgbS12LTUnKSk7XHJcbiAgICBjb25zdCBzYXZlID0gbmV3IElucHV0Q2xhc3ModGhpcy5lbnZpcm9ubWVudCwgdGhpcy5sLCBuYW1lLCAnZmEtZHVvdG9uZSBmYS1jaGVjaycsIElucHV0VHlwZS5TdWJtaXQsXHJcbiAgICAgICdzYXZlLWZvcm0tYnRuIGgtMzAnICsgY2xzKTtcclxuICAgIHNhdmUub25DbGljayA9ICgpID0+IHtcclxuICAgICAgdGhpcy5zdWJtaXQob25TdWJtaXQpO1xyXG4gICAgfTtcclxuICAgIHRoaXMuaW5wdXRzLnB1c2goYnIpO1xyXG4gICAgdGhpcy5pbnB1dHMucHVzaChzYXZlKTtcclxuICAgIGlmIChjbGVhcil7XHJcbiAgICAgIGNvbnN0IGVyYXNlID0gbmV3IElucHV0Q2xhc3ModGhpcy5lbnZpcm9ubWVudCwgdGhpcy5sLCBudWxsLCAnZmEtZHVvdG9uZSBmYS1lcmFzZXInLCBJbnB1dFR5cGUuQnV0dG9uLFxyXG4gICAgICAgICdmLWwgdy11IGdyZXkgZXJhc2UtZm9ybS1idG4nICsgKG9uU3VibWl0ID09PSBudWxsID8gJyBoLTMwJyA6ICcgaC0yNScpKTtcclxuICAgICAgZXJhc2Uub25DbGljayA9ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5vblRvcCl7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmNsZWFySW5wdXRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmlucHV0cy5wdXNoKGVyYXNlKTtcclxuICAgIH1cclxuICB9XHJcbiAgZGF0YShkID0gbnVsbCk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dHMuZmluZEluZGV4KHggPT4geC50eXBlID09PSBJbnB1dFR5cGUuRmlsZSkgPT09IC0xKXtcclxuICAgICAgaWYgKGQgPT0gbnVsbCl7XHJcbiAgICAgICAgZCA9IHt9O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaW5wdXRzLmZvckVhY2goaW5wID0+IHtcclxuICAgICAgICBjb25zdCB2bCA9IGlucC5kYXRhKCk7XHJcbiAgICAgICAgaWYgKHZsICE9PSBudWxsKXtcclxuICAgICAgICAgIGlmIChkW2lucC5uYW1lXSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIF8uc2V0KGQsIGlucC5uYW1lLCB2bCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZFtpbnAubmFtZV0gaW5zdGFuY2VvZiBBcnJheSl7XHJcbiAgICAgICAgICAgICAgZFtpbnAubmFtZV0ucHVzaCh2bCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZFtpbnAubmFtZV0gPSBbZFtpbnAubmFtZV0sIHZsXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgaWYgKGQgPT0gbnVsbCl7XHJcbiAgICAgICAgZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaW5wdXRzLmZvckVhY2goaW5wID0+IHtcclxuICAgICAgICBjb25zdCB2bCA9IGlucC5kYXRhKCk7XHJcbiAgICAgICAgaWYgKHZsICE9PSBudWxsKXtcclxuICAgICAgICAgIGlmICh2bCBpbnN0YW5jZW9mIEFycmF5KXtcclxuICAgICAgICAgICAgZm9yIChjb25zdCB2IG9mIHZsKXtcclxuICAgICAgICAgICAgICBkLmFwcGVuZChpbnAubmFtZSwgdik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBkLmFwcGVuZChpbnAubmFtZSwgdmwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZDtcclxuICB9XHJcbiAganNvbihkID0gbnVsbCk6IHt9IHtcclxuICAgIGlmIChkID09IG51bGwpe1xyXG4gICAgICBkID0ge307XHJcbiAgICB9XHJcbiAgICB0aGlzLmlucHV0cy5mb3JFYWNoKGlucCA9PiB7XHJcbiAgICAgIGNvbnN0IHZsID0gaW5wLmRhdGEoKTtcclxuICAgICAgaWYgKHZsICE9PSBudWxsICYmIHZsICE9PSAnJyl7XHJcbiAgICAgICAgaWYgKHZsIGluc3RhbmNlb2YgQXJyYXkpe1xyXG4gICAgICAgICAgZm9yIChjb25zdCB2IG9mIHZsKXtcclxuICAgICAgICAgICAgZFtpbnAubmFtZV0gPSB2O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgZFtpbnAubmFtZV0gPSB2bDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGQ7XHJcbiAgfVxyXG4gIHNldERhdGEoZCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbnB1dHMuZm9yRWFjaChpbnAgPT4ge1xyXG4gICAgICBjb25zdCBpdiA9IF8uZ2V0KGQsIGlucC5uYW1lKTtcclxuICAgICAgaWYgKGlucC50eXBlID09PSBJbnB1dFR5cGUuQ2FyU2VhcmNoKXtcclxuICAgICAgICBjb25zdCBpdnMgPSBfLmdldChkLCBpbnAubmFtZS5yZXBsYWNlKCdJZCcsICcnKSk7XHJcbiAgICAgICAgaW5wLnNldFZhbHVlKHtTZWFyY2g6IGl2cywgVmFsdWU6IGl2fSwgdHJ1ZSk7XHJcbiAgICAgIH1lbHNlIGlmIChpbnAudHlwZSAhPT0gSW5wdXRUeXBlLkxhYmVsIHx8IGl2ICE9IG51bGwpe1xyXG4gICAgICAgIGlucC5zZXRWYWx1ZShpdiwgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlucC50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlUGxhcXVlIHx8IGlucC50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlKXtcclxuICAgICAgICBjb25zdCBpdnMgPSBfLmdldChkLCBpbnAubmFtZS5yZXBsYWNlKCdJZCcsICcnKSk7XHJcbiAgICAgICAgaW5wLnNldFNlYXJjaChpdnMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBJbnB1dENsYXNzIHtcclxuICBjb25zdHJ1Y3RvcihlbnZpcm9ubWVudDogYW55LCBsOiAoaywgdj8pID0+IHN0cmluZywgbmFtZTogc3RyaW5nLCBpY29uOiBzdHJpbmcgPSBudWxsLFxyXG4gICAgICAgICAgICAgIHR5cGU6IElucHV0VHlwZSA9IElucHV0VHlwZS5UZXh0LCBjbHM6IHN0cmluZyA9ICcnLCB2YWx1ZSA9IG51bGwsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IGJvb2xlYW4gPSB0cnVlLCBtaW5MZW5ndGggPSAtMSwgbWF4TGVuZ3RoID0gLTEpIHtcclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcclxuICAgIHRoaXMubCA9IGw7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5sb2FkaW5nTmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gbmFtZTtcclxuICAgIHRoaXMuaWNvbiA9IGljb247XHJcbiAgICB0aGlzLmNsYXNzID0gY2xzICsgKFtJbnB1dFR5cGUuTW9iaWxlLCBJbnB1dFR5cGUuUGhvbmUsIElucHV0VHlwZS5QYXNzd29yZCwgSW5wdXRUeXBlLkVtYWlsLCBJbnB1dFR5cGUuTnVtYmVyLCBJbnB1dFR5cGUuUHJpY2UsXHJcbiAgICAgIElucHV0VHlwZS5OYXRpb25hbENvZGUsIElucHV0VHlwZS5TaGViYSwgSW5wdXRUeXBlLlBvc3RhbENvZGUsIElucHV0VHlwZS5EYXRlLCBJbnB1dFR5cGUuVGltZSwgSW5wdXRUeXBlLkJpbGxOdW1iZXJdLmluY2x1ZGVzKHR5cGUpID8gJyBsdHInIDogJycpO1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuZGVmYXVsdCA9IHZhbHVlID09IG51bGwgPyBudWxsIDogKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyBfLmNsb25lRGVlcCh2YWx1ZSkgOiBIZWxwZXJDbGFzcy5jbG9uZSh2YWx1ZSkpO1xyXG4gICAgdGhpcy5iYXNlUmVxdWlyZWQgPSByZXF1aXJlZDtcclxuICAgIHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZDtcclxuICAgIHRoaXMuaW5FZGl0UmVxdWlyZWQgPSByZXF1aXJlZDtcclxuICAgIHRoaXMubWluTGVuZ3RoID0gdHlwZSA9PT0gSW5wdXRUeXBlLk1vYmlsZSB8fCB0eXBlID09PSBJbnB1dFR5cGUuUGhvbmUgPyAxMSA6XHJcbiAgICAgIHR5cGUgPT09IElucHV0VHlwZS5OYXRpb25hbENvZGUgfHwgdHlwZSA9PT0gSW5wdXRUeXBlLlBvc3RhbENvZGUgPyAxMCA6XHJcbiAgICAgIHR5cGUgPT09IElucHV0VHlwZS5TaGViYSA/IDI0IDogbWluTGVuZ3RoO1xyXG4gICAgdGhpcy5tYXhMZW5ndGggPSB0eXBlID09PSBJbnB1dFR5cGUuTW9iaWxlIHx8IHR5cGUgPT09IElucHV0VHlwZS5QaG9uZSA/IDExIDpcclxuICAgICAgdHlwZSA9PT0gSW5wdXRUeXBlLk5hdGlvbmFsQ29kZSB8fCB0eXBlID09PSBJbnB1dFR5cGUuUG9zdGFsQ29kZSA/IDEwIDpcclxuICAgICAgdHlwZSA9PT0gSW5wdXRUeXBlLlNoZWJhID8gMjQgOiBtYXhMZW5ndGg7XHJcbiAgfVxyXG4gIGVudmlyb25tZW50OiBhbnkgPSBudWxsO1xyXG4gIGw6IChrLCB2PykgPT4gc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB1cmwgPSBudWxsO1xyXG4gIHF1ZXJ5UGFyYW1zID0gbnVsbDtcclxuICB1cmxOZXdUYWIgPSBmYWxzZTtcclxuICBsb2FkaW5nTmFtZTogc3RyaW5nO1xyXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBudWxsO1xyXG4gIHRvb2x0aXA6IHN0cmluZztcclxuICBpZDogc3RyaW5nO1xyXG4gIGljb246IHN0cmluZztcclxuICBhZGROZXcgPSBmYWxzZTtcclxuICBjbGFzczogc3RyaW5nO1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSBudWxsO1xyXG4gIHR5cGU6IElucHV0VHlwZTtcclxuICB2YWx1ZTtcclxuICBzZWFyY2g7XHJcbiAgZGVmYXVsdCA9IG51bGw7XHJcbiAgYmFzZVJlcXVpcmVkOiBib29sZWFuO1xyXG4gIHJlcXVpcmVkOiBib29sZWFuO1xyXG4gIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgaW5FZGl0RGlzYWJsZWQgPSBmYWxzZTtcclxuICBpbkVkaXRWaXNpYmxlID0gdHJ1ZTtcclxuICBpbkVkaXRSZXF1aXJlZCA9IHRydWU7XHJcbiAgZGlzcGxheUxhYmVsID0gdHJ1ZTtcclxuICBsYWJlbDogc3RyaW5nID0gbnVsbDtcclxuICB3aXRoQ2xlYXIgPSBmYWxzZTtcclxuICBtaW5MZW5ndGggPSAtMTtcclxuICBtYXhMZW5ndGggPSAtMTtcclxuICBlcnJvcjogSW5wdXRFcnJvciA9IG51bGw7XHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG4gIGJ1dHRvbiA9IG51bGw7XHJcbiAgb25DbGlja0J1dHRvbjogKCkgPT4gdm9pZCA9IG51bGw7XHJcbiAgcHJvZ3Jlc3M6IFByb2dyZXNzID0gbnVsbDtcclxuICBvbkNsaWNrOiAoYnRuKSA9PiB2b2lkID0gbnVsbDtcclxuICBvbktleVVwOiAoaW5wKSA9PiB2b2lkID0gbnVsbDtcclxuICBvbktleURvd246IChlKSA9PiB2b2lkID0gbnVsbDtcclxuICBvcHRpb25zOiBPcHRpb25DbGFzc1tdID0gW107XHJcbiAgbWF0Y2g6IElucHV0Q2xhc3MgPSBudWxsO1xyXG4gIHJlbDogSW5wdXRDbGFzcyA9IG51bGw7XHJcbiAgcmVsVXJsOiBzdHJpbmcgPSBudWxsO1xyXG4gIHRhYmxlOiBUYWJsZUNsYXNzO1xyXG4gIHN0eWxlID0ge307XHJcbiAgcG9zaXRpb24gPSAnYm90dG9tJztcclxuICBvbkNoYW5nZTogKHYsIGU/KSA9PiB2b2lkID0gbnVsbDtcclxuICBob3ZlciA9IC0xO1xyXG4gIHZpc2libGUgPSB0cnVlO1xyXG4gIGV4cG9ydFBkZiA9IGZhbHNlO1xyXG4gIG9wZW4gPSBmYWxzZTtcclxuICBtdWx0aXBsZSA9IGZhbHNlO1xyXG4gIG9ubHlDaGlsZCA9IHRydWU7XHJcbiAgYWxsb3dlZCA9IG51bGw7XHJcbiAgcm93ID0gbnVsbDtcclxuICByb3dzID0gW107XHJcbiAgaW5kZXggPSAwO1xyXG4gIGxldmVsID0gbnVsbDtcclxuICBtb2RhbDogTW9kYWxDbGFzcyA9IG51bGw7XHJcbiAgbmFtZUZ1bjogKHIpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uRm9jdXNPdXQ6IChlKSA9PiB2b2lkID0gKCkgPT4ge307XHJcbiAgZm9jdXMoY2hhbmdlSW5kZXg6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge31cclxuICBjaGFuZ2VUeXBlOiAodDogSW5wdXRUeXBlKSA9PiB2b2lkID0gKCkgPT4ge307XHJcbiAgc2V0VmFsdWU6ICh2LCBpc0VkaXQpID0+IHZvaWQgPSAodiwgaXNFZGl0KSA9PiB7IHRoaXMudmFsdWUgPSB2OyB9O1xyXG4gIHNldFNlYXJjaDogKHYpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICBjbGVhcjogKCkgPT4gdm9pZCA9ICgpID0+IHsgdGhpcy52YWx1ZSA9IG51bGw7IH07XHJcbiAgZm9jdXNPdXQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICBkYXRhOiAoKSA9PiBhbnkgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy52YWx1ZTtcclxuICB9XHJcbiAgaXNWYWxpZDogKCkgPT4gYm9vbGVhbiA9ICgpID0+IHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuICBsb2FkKHUgPSBudWxsLCBkb25lOiAoKSA9PiB2b2lkID0gbnVsbCk6IHZvaWR7XHJcbiAgICB1ID0gdSA/IHUgOiB0aGlzLnVybDtcclxuICAgIGlmICh1KXtcclxuICAgICAgdGhpcy5vcHRpb25zID0gW107XHJcbiAgICAgIHRoaXMuaG92ZXIgPSAtMTtcclxuICAgICAgdGhpcy5pbmRleCA9IDA7XHJcbiAgICAgIHRoaXMucm93cyA9IFtdO1xyXG4gICAgICBpZiAodHlwZW9mIHUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKCF1LmluY2x1ZGVzKCd7fScpKXtcclxuICAgICAgICAgIG5ldyBSZXF1ZXN0Q2xhc3ModGhpcy5lbnZpcm9ubWVudCwgdGhpcy5sKS5zZW5kKHUgPyB1IDogdGhpcy51cmwsIE1ldGhvZC5Qb3N0LCBudWxsLCB0aGlzLCAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3RTZWFyY2ggfHwgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0IHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZSB8fFxyXG4gICAgICAgICAgICAgIHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZSB8fCB0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3RBdXRvQ29tcGxldGVQbGFxdWVNIHx8XHJcbiAgICAgICAgICAgICAgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlUGxhcXVlRiB8fCB0aGlzLnR5cGUgPT09IElucHV0VHlwZS5SYWRpbykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmdldE9wdGlvbnMocmVzdWx0LCBudWxsKTtcclxuICAgICAgICAgICAgICBjb25zdCBzID0gcmVzdWx0LmZpbmQoeCA9PiB4LlNlbGVjdGVkKTtcclxuICAgICAgICAgICAgICBpZiAocykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHMuSWQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRPcHRpb25zKHIpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlRyZWUgfHwgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuVHJlZVJhZGlvKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3dzID0gdGhpcy5nZXRSb3dzKHJlc3VsdCwgbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRvbmUpIHtcclxuICAgICAgICAgICAgICBkb25lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XHJcbiAgICAgICAgRW51bVV0aWxzLmdldEtleXNBbmRWYWx1ZXModSkuZm9yRWFjaCgoaykgPT4ge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goe05hbWU6IHRoaXMubChrLmtleSksIElkOiBrLnZhbHVlLnRvU3RyaW5nKCl9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCByID0gdGhpcy5nZXRPcHRpb25zKHJlc3VsdCwgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5zZXRPcHRpb25zKHIpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucyBpbnN0YW5jZW9mIEFycmF5KXtcclxuICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2goeCA9PiB4LmluZGV4ID0gdGhpcy5pbmRleCsrKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0T3B0aW9ucyhyKTogdm9pZHtcclxuICAgIHRoaXMub3B0aW9ucyA9IHI7XHJcbiAgICBpZiAodGhpcy52YWx1ZSAhPSBudWxsKXtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLnZhbHVlLCB0cnVlKTtcclxuICAgICAgfSwgNTAwKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0T3B0aW9ucyhyLCBwLCB0cmVlID0gdHJ1ZSk6IE9wdGlvbkNsYXNzW117XHJcbiAgICByZXR1cm4gci5maWx0ZXIoeCA9PiAocCA9PSBudWxsICYmICF4LlBhcmVudElkKSB8fCB4LlBhcmVudElkID09PSBwIHx8ICF0cmVlKVxyXG4gICAgICAubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbyA9IG5ldyBPcHRpb25DbGFzcyh4Lk5hbWUsIHguSWQudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZSB8fCB0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3RBdXRvQ29tcGxldGVQbGFxdWVNIHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZUYgfHwgdGhpcy5uYW1lID09PSAnQ2FySWQnKXtcclxuICAgICAgICAgIGNvbnN0IHRuID0gby5uYW1lLnNwbGl0KCdfJyk7XHJcbiAgICAgICAgICBpZiAodG4ubGVuZ3RoID09PSA0KXtcclxuICAgICAgICAgICAgdG5bMV0gKz0gJyZscm07JztcclxuICAgICAgICAgICAgdG5bMl0gKz0gJyB8JztcclxuICAgICAgICAgICAgby5uYW1lID0gdG4uam9pbignICcpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0bi5sZW5ndGggPT09IDIpe1xyXG4gICAgICAgICAgICBvLm5hbWUgPSB0bi5qb2luKCcgJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG8uc2VhcmNoID0geC5TZWFyY2g7XHJcbiAgICAgICAgby5vcHRpb24gPSB4O1xyXG4gICAgICAgIG8uaW5kZXggPSB0aGlzLmluZGV4Kys7XHJcbiAgICAgICAgby5vcHRpb25zID0gdHJlZSA/IHRoaXMuZ2V0T3B0aW9ucyhyLCB4LklkKSA6IFtdO1xyXG4gICAgICAgIHJldHVybiBvO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZ2V0Um93cyhyLCBwKTogVHJlZVJvd0NsYXNzW117XHJcbiAgICBjb25zdCBsID0gW107XHJcbiAgICByLmZpbHRlcih4ID0+IChwID09IG51bGwgJiYgIXguUGFyZW50SWQpIHx8IHguUGFyZW50SWQgPT09IHApLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgbGV0IGMgPSB0aGlzLmdldFJvd3MociwgeC5JZCk7XHJcbiAgICAgIGMgPSBjLmxlbmd0aCA+IDAgPyBjIDogeC5DaGlsZHJlbiA/IHguQ2hpbGRyZW4ubWFwKGEgPT4gbmV3IFRyZWVSb3dDbGFzcyhhLk5hbWUsIGEuSWQsIGEuU2VsZWN0ZWQpKSA6IFtdO1xyXG4gICAgICBsZXQgcyA9IHguU2VsZWN0ZWQgPT09IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLm9ubHlDaGlsZCl7XHJcbiAgICAgICAgcyA9IGMubGVuZ3RoID09PSAwID8geC5TZWxlY3RlZCA6IChjLmZpbmQoeSA9PiB5LnNlbGVjdGVkID09PSBmYWxzZSB8fCB5LnNlbGVjdGVkID09PSBudWxsKSA9PSBudWxsID8gdHJ1ZSA6XHJcbiAgICAgICAgICAoYy5maW5kKHkgPT4geS5zZWxlY3RlZCA9PT0gdHJ1ZSB8fCB5LnNlbGVjdGVkID09PSBudWxsKSAhPSBudWxsID8gbnVsbCA6IGZhbHNlKSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbiA9IHRoaXMubmFtZUZ1biA/IHRoaXMubmFtZUZ1bih4KSA6IHguTmFtZTtcclxuICAgICAgbC5wdXNoKG5ldyBUcmVlUm93Q2xhc3MobiwgeC5JZCwgcywgYykpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbDtcclxuICB9XHJcbiAgZ2V0TGFiZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBIZWxwZXJDbGFzcy5nZXRMYWJlbCh0aGlzKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBPcHRpb25DbGFzcyB7XHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBvcHRpb25zOiBPcHRpb25DbGFzc1tdID0gW10sIGNsczogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICB0aGlzLmNsYXNzID0gY2xzO1xyXG4gIH1cclxuICBvcHRpb247XHJcbiAgc2VhcmNoOiBzdHJpbmc7XHJcbiAgY2xhc3M6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZztcclxuICBpbmRleDogbnVtYmVyO1xyXG4gIHNob3cgPSB0cnVlO1xyXG4gIHNlbGVjdGVkID0gZmFsc2U7XHJcbiAgcGFyZW50OiBPcHRpb25DbGFzcyA9IG51bGw7XHJcbiAgb3B0aW9uczogT3B0aW9uQ2xhc3NbXTtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbn1cclxuZXhwb3J0IGNsYXNzIERheUNsYXNzIHtcclxuICBjb25zdHJ1Y3RvcihkYXk6IG51bWJlciwgdG9kYXk6IGJvb2xlYW4sIHNlbGVjdGVkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmRheSA9IGRheTtcclxuICAgIHRoaXMudG9kYXkgPSB0b2RheTtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcclxuICB9XHJcbiAgZGF5OiBudW1iZXI7XHJcbiAgdG9kYXk6IGJvb2xlYW47XHJcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGNsYXNzIFRyZWVSb3dDbGFzcyB7XHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBzZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlLCBjaGlsZHJlbjogVHJlZVJvd0NsYXNzW10gPSBbXSkge1xyXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcclxuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICB9XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHZhbHVlOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgcGFyZW50OiBUcmVlUm93Q2xhc3M7XHJcbiAgY2hpbGRyZW46IFRyZWVSb3dDbGFzc1tdO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQWNjb3JkaW9uQ2xhc3Mge1xyXG4gIGNvbnN0cnVjdG9yKGw6IChrLCB2PykgPT4gc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGNsczogc3RyaW5nID0gJycsIHJvd3M6IEFjY29yZGlvblJvd0NsYXNzW10pIHtcclxuICAgIHRoaXMubCA9IGw7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5jbGFzcyA9IGNscztcclxuICAgIHRoaXMucm93cyA9IHJvd3M7XHJcbiAgfVxyXG4gIGw6IChrLCB2PykgPT4gc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBjbGFzczogc3RyaW5nO1xyXG4gIHJvd3M6IEFjY29yZGlvblJvd0NsYXNzW107XHJcbiAgaGFzRGVsZXRlID0gZmFsc2U7XHJcbiAgZGlzcGxheUxhYmVsID0gZmFsc2U7XHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG4gIG9uRGVsZXRlOiAocm93KSA9PiB2b2lkID0gbnVsbDtcclxuICBjaGVjaygpOiBib29sZWFue1xyXG4gICAgZm9yIChjb25zdCByb3cgb2YgdGhpcy5yb3dzKXtcclxuICAgICAgaWYgKCFyb3cuZm9ybS5jaGVjaygpKXtcclxuICAgICAgICByb3cub3BlbigpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQWNjb3JkaW9uUm93Q2xhc3Mge1xyXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgZm9ybTogRm9ybUNsYXNzID0gbnVsbCwgdGFibGU6IFRhYmxlQ2xhc3MgPSBudWxsKSB7XHJcbiAgICB0aGlzLmlkID0gaWQ7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5mb3JtID0gZm9ybTtcclxuICAgIHRoaXMudGFibGUgPSB0YWJsZTtcclxuICB9XHJcbiAgaWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgc2hvdyA9IHRydWU7XHJcbiAgZm9ybTogRm9ybUNsYXNzO1xyXG4gIHRhYmxlOiBUYWJsZUNsYXNzO1xyXG4gIHRvZ2dsZSgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAkKCcjQWNjb3JkaW9uUm93JyArIHRoaXMuaWQgKyAnID4gLmhlYWRlcicpLmNsaWNrKCk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuICBvcGVuKCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghJCgnI0FjY29yZGlvblJvdycgKyB0aGlzLmlkICsgJyA+IC5jb250ZW50JykuaGFzQ2xhc3MoJ29wZW4nKSl7XHJcbiAgICAgICAgJCgnI0FjY29yZGlvblJvdycgKyB0aGlzLmlkICsgJyA+IC5oZWFkZXInKS5jbGljaygpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -55,7 +55,7 @@ FormButtonComponent.decorators = [
55
55
  { type: Component, args: [{
56
56
  selector: 'lib-form-button',
57
57
  template: "<div #inputDiv [id]=\"inp.name + 'Input'\" [className]=\"'form-input-con button w-100' + (inp.name == null ? ' only-icon' : (inp.icon == null ? ' without-icon' : '')) + (inp.disabled || inp.loading ? ' disabled' : '') + ' ' + inp.class\" [style]=\"inp.style\">\r\n <div *ngIf=\"inp.url == null || inp.disabled\" class=\"form-input\" (click)=\"!inp.disabled && onClick($event)\">\r\n <input #inputBase type=\"button\" [disabled]=\"inp.disabled || inp.loading\" class=\"input-base\" (keydown)=\"onKeyDown($event)\" (focusin)=\"onFocusIn()\">\r\n <div class=\"control\">\r\n <div *ngIf=\"inp.name != null\" class=\"text\" [innerHTML]=\"inp.loading ? (inp.loadingName ? inp.l('Loading', inp.loadingName) : inp.l('LoadingEmpty')) : inp.l(inp.name)\"></div>\r\n <i *ngIf=\"inp.icon != null\" #inputIcon [className]=\"(inp.loading ? 'fa-duotone fa-spin fa-spinner' : inp.icon) + ' icon'\"></i>\r\n </div>\r\n </div>\r\n <a *ngIf=\"inp.url != null && !inp.disabled\" [target]=\"inp.urlNewTab ? '_blank' : ''\" [routerLink]=\"inp.url\" [queryParams]=\"inp.queryParams != null ? inp.queryParams : null\" class=\"form-input\" (click)=\"onClick($event)\">\r\n <input #inputBase type=\"button\" class=\"input-base\" (keydown)=\"onKeyDown($event)\" (focusin)=\"onFocusIn()\">\r\n <div class=\"control\">\r\n <div *ngIf=\"inp.name != null\" class=\"text\" [innerHTML]=\"inp.loading ? (inp.loadingName ? inp.l('Loading', inp.loadingName) : inp.l('LoadingEmpty')) : inp.l(inp.name)\"></div>\r\n <i *ngIf=\"inp.icon != null\" #inputIcon [className]=\"(inp.loading ? 'fa-duotone fa-spin fa-spinner' : inp.icon) + ' icon'\"></i>\r\n </div>\r\n </a>\r\n</div>\r\n",
58
- styles: [".form-input-con.button{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;padding:0 15px;position:relative}.form-input-con.button .form-input{cursor:pointer;float:right;position:relative;width:100%}.form-input-con.button .form-input .input-base{cursor:pointer;height:0;opacity:0;position:absolute;right:50%;top:50%;width:0;z-index:1}.form-input-con.button .form-input .control{background-color:var(--base);background-image:none;border:none;border-radius:var(--border-radius-base);color:#fff;display:block;float:left;font-weight:300;height:35px;line-height:35px;overflow:hidden;padding:0 35px 0 20px;position:relative;text-align:center;white-space:nowrap;width:100%;z-index:2}.form-input-con.button.disabled .form-input{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;box-shadow:unset;cursor:default;filter:blur(.5px);opacity:.7}.form-input-con.button .form-input i.icon{color:#fff;cursor:pointer;float:right;font-size:12px;height:35px;line-height:35px;position:absolute;right:0;text-align:center;top:0;width:30px}.form-input-con.button:not(.disabled) .form-input .control:hover,.form-input-con.button:not(.disabled) .form-input .input-base:focus+.control{background-color:var(--base-dark)}.form-input-con.button.red .form-input .control{background-color:var(--red)}.form-input-con.button.red:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.red:not(.disabled) .form-input:hover .control{background-color:var(--red-dark)}.form-input-con.button.grey .form-input .control{background-color:var(--black-44);color:var(--black)}.form-input-con.button.grey .form-input i.icon{color:var(--black)}.form-input-con.button.grey:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.grey:not(.disabled) .form-input:hover .control{background-color:var(--black-light);color:var(--white)}.form-input-con.button.grey .form-input:hover i.icon{color:var(--white)}.form-input-con.button.blue .form-input .control{background-color:var(--blue)}.form-input-con.button.blue:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.blue:not(.disabled) .form-input:hover .control{background-color:var(--blue-dark)}.form-input-con.button.green .form-input .control{background-color:var(--green)}.form-input-con.button.green:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.green:not(.disabled) .form-input:hover .control{background-color:var(--green-dark)}.form-input-con.button.primary .form-input .control{background-color:var(--primary)}.form-input-con.button.primary:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.primary:not(.disabled) .form-input:hover .control{background-color:var(--primary-dark)}.form-input-con.button.yellow .form-input .control{background-color:var(--yellow)}.form-input-con.button.yellow:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.yellow:not(.disabled) .form-input:hover .control{background-color:var(--yellow-dark)}.form-input-con.button.white .form-input .control{background-color:var(--white);border:var(--border-input);color:var(--black)}.form-input-con.button.white:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.white:not(.disabled) .form-input:hover .control{background-color:var(--white)}.form-input-con.button.white .form-input i.icon{color:var(--black)}.form-input-con.button.transparent .form-input .control{background-color:unset;border:1px solid var(--base);color:var(--base);line-height:33px}.form-input-con.button.transparent .form-input i.icon{color:var(--base);line-height:33px}.form-input-con.button.transparent:not(.disabled) .form-input .control:hover,.form-input-con.button.transparent:not(.disabled) .form-input .input-base:focus+.control{background-color:unset}.form-input-con.button.transparent.white .form-input .control{background-color:unset;border:1px solid var(--white);color:var(--white)}.form-input-con.button.transparent .form-input i.icon{color:var(--white)}.form-input-con.button.left-icon .form-input .control{float:right;padding:0 20px 0 35px}.form-input-con.button.left-icon .form-input i.icon{left:0;right:unset}.form-input-con.button.only-icon .form-input .control{min-width:35px;padding:0}.form-input-con.button.only-icon .form-input i.icon{width:100%}.form-input-con.button.only-icon .form-input .text{display:none}.form-input-con.button.h-45{font-size:13px;height:45px}.form-input-con.button.h-45 .form-input .control,.form-input-con.button.h-45 .form-input i.icon{height:45px;line-height:45px}.form-input-con.button.h-45 .form-input i.icon{font-size:17px;width:35px}.form-input-con.button.h-30{font-size:12px;height:30px}.form-input-con.button.h-30 .form-input .control,.form-input-con.button.h-30 .form-input i.icon{height:30px;line-height:30px}.form-input-con.button.h-30 .form-input i.icon{max-width:30px}.form-input-con.button.h-30.only-icon .form-input .control{min-width:30px;padding:0}.form-input-con.button.h-25{font-size:12px;height:25px}.form-input-con.button.h-25 .form-input .control,.form-input-con.button.h-25 .form-input i.icon{height:25px;line-height:25px}.form-input-con.button.white.h-25 .form-input .control,.form-input-con.button.white.h-25 .form-input i.icon{line-height:23px}.form-input-con.button.h-25 .form-input i.icon{width:25px}.form-input-con.button.h-25.only-icon .form-input .control{min-width:25px;padding:0}.form-input-con.button.h-20{font-size:11px;height:20px}.form-input-con.button.h-20 .form-input .control,.form-input-con.button.h-20 .form-input i.icon{height:20px;line-height:20px}.form-input-con.button.h-20 .form-input i.icon{width:20px}.form-input-con.button.without-icon .form-input .control{min-width:25px;padding:0 8px;width:100%}::ng-deep .form-input-con.button.h-25 .form-input .dot-spinner>div{height:3px;margin-right:2px;width:3px}.save-form-btn{float:left;width:40%}@media (max-width:499.98px){.save-form-btn{width:60%}}@media (min-width:500px) and (max-width:599.98px){.save-form-btn{width:50%}}::ng-deep .modal .sm .save-form-btn{width:70%}"]
58
+ styles: [".form-input-con.button{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;padding:0 15px;position:relative}.form-input-con.button .form-input{cursor:pointer;float:right;position:relative;width:100%}.form-input-con.button .form-input .input-base{cursor:pointer;height:0;opacity:0;position:absolute;right:50%;top:50%;width:0;z-index:1}.form-input-con.button .form-input .control{background-color:var(--base);background-image:none;border:none;border-radius:var(--border-radius-base);color:#fff;display:block;float:left;font-weight:300;height:35px;line-height:35px;overflow:hidden;padding:0 35px 0 20px;position:relative;text-align:center;white-space:nowrap;width:100%;z-index:2}.form-input-con.button.disabled .form-input{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;box-shadow:unset;cursor:default;filter:blur(.5px);opacity:.7}.form-input-con.button .form-input i.icon{color:#fff;cursor:pointer;float:right;font-size:12px;height:35px;line-height:35px;position:absolute;right:0;text-align:center;top:0;width:30px}.form-input-con.button:not(.disabled) .form-input .control:hover,.form-input-con.button:not(.disabled) .form-input .input-base:focus+.control{background-color:var(--base-dark)}.form-input-con.button.red .form-input .control{background-color:var(--red)}.form-input-con.button.red:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.red:not(.disabled) .form-input:hover .control{background-color:var(--red-dark)}.form-input-con.button.grey .form-input .control{background-color:var(--black-44);color:var(--black)}.form-input-con.button.grey .form-input i.icon{color:var(--black)}.form-input-con.button.grey:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.grey:not(.disabled) .form-input:hover .control{background-color:var(--black-light);color:var(--white)}.form-input-con.button.grey .form-input:hover i.icon{color:var(--white)}.form-input-con.button.blue .form-input .control{background-color:var(--blue)}.form-input-con.button.blue:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.blue:not(.disabled) .form-input:hover .control{background-color:var(--blue-dark)}.form-input-con.button.green .form-input .control{background-color:var(--green)}.form-input-con.button.green:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.green:not(.disabled) .form-input:hover .control{background-color:var(--green-dark)}.form-input-con.button.primary .form-input .control{background-color:var(--primary)}.form-input-con.button.primary:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.primary:not(.disabled) .form-input:hover .control{background-color:var(--primary-dark)}.form-input-con.button.yellow .form-input .control{background-color:var(--yellow)}.form-input-con.button.yellow:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.yellow:not(.disabled) .form-input:hover .control{background-color:var(--yellow-dark)}.form-input-con.button.white .form-input .control{background-color:var(--white);border:var(--border-input);color:var(--black)}.form-input-con.button.white:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.white:not(.disabled) .form-input:hover .control{background-color:var(--white)}.form-input-con.button.white .form-input i.icon{color:var(--black)}.form-input-con.button.transparent .form-input .control{background-color:unset;border:1px solid var(--base);color:var(--base);line-height:33px}.form-input-con.button.transparent .form-input i.icon{color:var(--base);line-height:33px}.form-input-con.button.transparent:not(.disabled) .form-input .control:hover,.form-input-con.button.transparent:not(.disabled) .form-input .input-base:focus+.control{background-color:unset}.form-input-con.button.transparent.white .form-input .control{background-color:unset;border:1px solid var(--white);color:var(--white)}.form-input-con.button.transparent .form-input i.icon{color:var(--white)}.form-input-con.button.left-icon .form-input .control{float:right;padding:0 20px 0 35px}.form-input-con.button.left-icon .form-input i.icon{left:0;right:unset}.form-input-con.button.only-icon .form-input .control{min-width:35px;padding:0}.form-input-con.button.only-icon .form-input i.icon{width:100%}.form-input-con.button.only-icon .form-input .text{display:none}.form-input-con.button.h-45{font-size:13px;height:45px}.form-input-con.button.h-45 .form-input .control,.form-input-con.button.h-45 .form-input i.icon{height:45px;line-height:45px}.form-input-con.button.h-45 .form-input i.icon{font-size:17px;width:35px}.form-input-con.button.h-30{font-size:12px;height:30px}.form-input-con.button.h-30 .form-input .control,.form-input-con.button.h-30 .form-input i.icon{height:30px;line-height:30px}.form-input-con.button.h-30 .form-input i.icon{max-width:30px}.form-input-con.button.h-30.only-icon .form-input .control{min-width:30px;padding:0}.form-input-con.button.h-25{font-size:12px;height:25px}.form-input-con.button.h-25 .form-input .control,.form-input-con.button.h-25 .form-input i.icon{height:25px;line-height:25px}.form-input-con.button.white.h-25 .form-input .control,.form-input-con.button.white.h-25 .form-input i.icon{line-height:23px}.form-input-con.button.h-25 .form-input i.icon{width:25px}.form-input-con.button.h-25.only-icon .form-input .control{min-width:25px;padding:0}.form-input-con.button.h-20{font-size:11px;height:20px}.form-input-con.button.h-20 .form-input .control,.form-input-con.button.h-20 .form-input i.icon{height:20px;line-height:20px}.form-input-con.button.h-20 .form-input i.icon{width:20px}.form-input-con.button.without-icon .form-input .control{min-width:25px;padding:0 8px;width:100%}::ng-deep .form-input-con.button.h-25 .form-input .dot-spinner>div{height:3px;margin-right:2px;width:3px}.save-form-btn{float:left!important;width:40%!important}@media (max-width:499.98px){.save-form-btn{width:60%!important}}@media (min-width:500px) and (max-width:599.98px){.save-form-btn{width:50%!important}}::ng-deep .modal .sm .save-form-btn{width:70%!important}"]
59
59
  },] }
60
60
  ];
61
61
  FormButtonComponent.ctorParameters = () => [];
@@ -1228,7 +1228,7 @@ class FormClass {
1228
1228
  return;
1229
1229
  }
1230
1230
  const br = new InputClass(this.environment, this.l, null, null, InputType.Label, (this.onTop ? 'space' : 'underline') + (onSubmit === null ? '' : ' m-v-5'));
1231
- const save = new InputClass(this.environment, this.l, name, 'fa-duotone fa-check', InputType.Submit, 'save-form-btn ' + cls + (onSubmit === null ? ' h-30' : ' h-25'));
1231
+ const save = new InputClass(this.environment, this.l, name, 'fa-duotone fa-check', InputType.Submit, 'save-form-btn h-30' + cls);
1232
1232
  save.onClick = () => {
1233
1233
  this.submit(onSubmit);
1234
1234
  };
@@ -2879,7 +2879,7 @@ FormButtonComponent.decorators = [
2879
2879
  { type: Component, args: [{
2880
2880
  selector: 'lib-form-button',
2881
2881
  template: "<div #inputDiv [id]=\"inp.name + 'Input'\" [className]=\"'form-input-con button w-100' + (inp.name == null ? ' only-icon' : (inp.icon == null ? ' without-icon' : '')) + (inp.disabled || inp.loading ? ' disabled' : '') + ' ' + inp.class\" [style]=\"inp.style\">\r\n <div *ngIf=\"inp.url == null || inp.disabled\" class=\"form-input\" (click)=\"!inp.disabled && onClick($event)\">\r\n <input #inputBase type=\"button\" [disabled]=\"inp.disabled || inp.loading\" class=\"input-base\" (keydown)=\"onKeyDown($event)\" (focusin)=\"onFocusIn()\">\r\n <div class=\"control\">\r\n <div *ngIf=\"inp.name != null\" class=\"text\" [innerHTML]=\"inp.loading ? (inp.loadingName ? inp.l('Loading', inp.loadingName) : inp.l('LoadingEmpty')) : inp.l(inp.name)\"></div>\r\n <i *ngIf=\"inp.icon != null\" #inputIcon [className]=\"(inp.loading ? 'fa-duotone fa-spin fa-spinner' : inp.icon) + ' icon'\"></i>\r\n </div>\r\n </div>\r\n <a *ngIf=\"inp.url != null && !inp.disabled\" [target]=\"inp.urlNewTab ? '_blank' : ''\" [routerLink]=\"inp.url\" [queryParams]=\"inp.queryParams != null ? inp.queryParams : null\" class=\"form-input\" (click)=\"onClick($event)\">\r\n <input #inputBase type=\"button\" class=\"input-base\" (keydown)=\"onKeyDown($event)\" (focusin)=\"onFocusIn()\">\r\n <div class=\"control\">\r\n <div *ngIf=\"inp.name != null\" class=\"text\" [innerHTML]=\"inp.loading ? (inp.loadingName ? inp.l('Loading', inp.loadingName) : inp.l('LoadingEmpty')) : inp.l(inp.name)\"></div>\r\n <i *ngIf=\"inp.icon != null\" #inputIcon [className]=\"(inp.loading ? 'fa-duotone fa-spin fa-spinner' : inp.icon) + ' icon'\"></i>\r\n </div>\r\n </a>\r\n</div>\r\n",
2882
- styles: [".form-input-con.button{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;padding:0 15px;position:relative}.form-input-con.button .form-input{cursor:pointer;float:right;position:relative;width:100%}.form-input-con.button .form-input .input-base{cursor:pointer;height:0;opacity:0;position:absolute;right:50%;top:50%;width:0;z-index:1}.form-input-con.button .form-input .control{background-color:var(--base);background-image:none;border:none;border-radius:var(--border-radius-base);color:#fff;display:block;float:left;font-weight:300;height:35px;line-height:35px;overflow:hidden;padding:0 35px 0 20px;position:relative;text-align:center;white-space:nowrap;width:100%;z-index:2}.form-input-con.button.disabled .form-input{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;box-shadow:unset;cursor:default;filter:blur(.5px);opacity:.7}.form-input-con.button .form-input i.icon{color:#fff;cursor:pointer;float:right;font-size:12px;height:35px;line-height:35px;position:absolute;right:0;text-align:center;top:0;width:30px}.form-input-con.button:not(.disabled) .form-input .control:hover,.form-input-con.button:not(.disabled) .form-input .input-base:focus+.control{background-color:var(--base-dark)}.form-input-con.button.red .form-input .control{background-color:var(--red)}.form-input-con.button.red:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.red:not(.disabled) .form-input:hover .control{background-color:var(--red-dark)}.form-input-con.button.grey .form-input .control{background-color:var(--black-44);color:var(--black)}.form-input-con.button.grey .form-input i.icon{color:var(--black)}.form-input-con.button.grey:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.grey:not(.disabled) .form-input:hover .control{background-color:var(--black-light);color:var(--white)}.form-input-con.button.grey .form-input:hover i.icon{color:var(--white)}.form-input-con.button.blue .form-input .control{background-color:var(--blue)}.form-input-con.button.blue:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.blue:not(.disabled) .form-input:hover .control{background-color:var(--blue-dark)}.form-input-con.button.green .form-input .control{background-color:var(--green)}.form-input-con.button.green:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.green:not(.disabled) .form-input:hover .control{background-color:var(--green-dark)}.form-input-con.button.primary .form-input .control{background-color:var(--primary)}.form-input-con.button.primary:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.primary:not(.disabled) .form-input:hover .control{background-color:var(--primary-dark)}.form-input-con.button.yellow .form-input .control{background-color:var(--yellow)}.form-input-con.button.yellow:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.yellow:not(.disabled) .form-input:hover .control{background-color:var(--yellow-dark)}.form-input-con.button.white .form-input .control{background-color:var(--white);border:var(--border-input);color:var(--black)}.form-input-con.button.white:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.white:not(.disabled) .form-input:hover .control{background-color:var(--white)}.form-input-con.button.white .form-input i.icon{color:var(--black)}.form-input-con.button.transparent .form-input .control{background-color:unset;border:1px solid var(--base);color:var(--base);line-height:33px}.form-input-con.button.transparent .form-input i.icon{color:var(--base);line-height:33px}.form-input-con.button.transparent:not(.disabled) .form-input .control:hover,.form-input-con.button.transparent:not(.disabled) .form-input .input-base:focus+.control{background-color:unset}.form-input-con.button.transparent.white .form-input .control{background-color:unset;border:1px solid var(--white);color:var(--white)}.form-input-con.button.transparent .form-input i.icon{color:var(--white)}.form-input-con.button.left-icon .form-input .control{float:right;padding:0 20px 0 35px}.form-input-con.button.left-icon .form-input i.icon{left:0;right:unset}.form-input-con.button.only-icon .form-input .control{min-width:35px;padding:0}.form-input-con.button.only-icon .form-input i.icon{width:100%}.form-input-con.button.only-icon .form-input .text{display:none}.form-input-con.button.h-45{font-size:13px;height:45px}.form-input-con.button.h-45 .form-input .control,.form-input-con.button.h-45 .form-input i.icon{height:45px;line-height:45px}.form-input-con.button.h-45 .form-input i.icon{font-size:17px;width:35px}.form-input-con.button.h-30{font-size:12px;height:30px}.form-input-con.button.h-30 .form-input .control,.form-input-con.button.h-30 .form-input i.icon{height:30px;line-height:30px}.form-input-con.button.h-30 .form-input i.icon{max-width:30px}.form-input-con.button.h-30.only-icon .form-input .control{min-width:30px;padding:0}.form-input-con.button.h-25{font-size:12px;height:25px}.form-input-con.button.h-25 .form-input .control,.form-input-con.button.h-25 .form-input i.icon{height:25px;line-height:25px}.form-input-con.button.white.h-25 .form-input .control,.form-input-con.button.white.h-25 .form-input i.icon{line-height:23px}.form-input-con.button.h-25 .form-input i.icon{width:25px}.form-input-con.button.h-25.only-icon .form-input .control{min-width:25px;padding:0}.form-input-con.button.h-20{font-size:11px;height:20px}.form-input-con.button.h-20 .form-input .control,.form-input-con.button.h-20 .form-input i.icon{height:20px;line-height:20px}.form-input-con.button.h-20 .form-input i.icon{width:20px}.form-input-con.button.without-icon .form-input .control{min-width:25px;padding:0 8px;width:100%}::ng-deep .form-input-con.button.h-25 .form-input .dot-spinner>div{height:3px;margin-right:2px;width:3px}.save-form-btn{float:left;width:40%}@media (max-width:499.98px){.save-form-btn{width:60%}}@media (min-width:500px) and (max-width:599.98px){.save-form-btn{width:50%}}::ng-deep .modal .sm .save-form-btn{width:70%}"]
2882
+ styles: [".form-input-con.button{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;padding:0 15px;position:relative}.form-input-con.button .form-input{cursor:pointer;float:right;position:relative;width:100%}.form-input-con.button .form-input .input-base{cursor:pointer;height:0;opacity:0;position:absolute;right:50%;top:50%;width:0;z-index:1}.form-input-con.button .form-input .control{background-color:var(--base);background-image:none;border:none;border-radius:var(--border-radius-base);color:#fff;display:block;float:left;font-weight:300;height:35px;line-height:35px;overflow:hidden;padding:0 35px 0 20px;position:relative;text-align:center;white-space:nowrap;width:100%;z-index:2}.form-input-con.button.disabled .form-input{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;box-shadow:unset;cursor:default;filter:blur(.5px);opacity:.7}.form-input-con.button .form-input i.icon{color:#fff;cursor:pointer;float:right;font-size:12px;height:35px;line-height:35px;position:absolute;right:0;text-align:center;top:0;width:30px}.form-input-con.button:not(.disabled) .form-input .control:hover,.form-input-con.button:not(.disabled) .form-input .input-base:focus+.control{background-color:var(--base-dark)}.form-input-con.button.red .form-input .control{background-color:var(--red)}.form-input-con.button.red:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.red:not(.disabled) .form-input:hover .control{background-color:var(--red-dark)}.form-input-con.button.grey .form-input .control{background-color:var(--black-44);color:var(--black)}.form-input-con.button.grey .form-input i.icon{color:var(--black)}.form-input-con.button.grey:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.grey:not(.disabled) .form-input:hover .control{background-color:var(--black-light);color:var(--white)}.form-input-con.button.grey .form-input:hover i.icon{color:var(--white)}.form-input-con.button.blue .form-input .control{background-color:var(--blue)}.form-input-con.button.blue:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.blue:not(.disabled) .form-input:hover .control{background-color:var(--blue-dark)}.form-input-con.button.green .form-input .control{background-color:var(--green)}.form-input-con.button.green:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.green:not(.disabled) .form-input:hover .control{background-color:var(--green-dark)}.form-input-con.button.primary .form-input .control{background-color:var(--primary)}.form-input-con.button.primary:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.primary:not(.disabled) .form-input:hover .control{background-color:var(--primary-dark)}.form-input-con.button.yellow .form-input .control{background-color:var(--yellow)}.form-input-con.button.yellow:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.yellow:not(.disabled) .form-input:hover .control{background-color:var(--yellow-dark)}.form-input-con.button.white .form-input .control{background-color:var(--white);border:var(--border-input);color:var(--black)}.form-input-con.button.white:not(.disabled) .form-input .input-base:focus+.control,.form-input-con.button.white:not(.disabled) .form-input:hover .control{background-color:var(--white)}.form-input-con.button.white .form-input i.icon{color:var(--black)}.form-input-con.button.transparent .form-input .control{background-color:unset;border:1px solid var(--base);color:var(--base);line-height:33px}.form-input-con.button.transparent .form-input i.icon{color:var(--base);line-height:33px}.form-input-con.button.transparent:not(.disabled) .form-input .control:hover,.form-input-con.button.transparent:not(.disabled) .form-input .input-base:focus+.control{background-color:unset}.form-input-con.button.transparent.white .form-input .control{background-color:unset;border:1px solid var(--white);color:var(--white)}.form-input-con.button.transparent .form-input i.icon{color:var(--white)}.form-input-con.button.left-icon .form-input .control{float:right;padding:0 20px 0 35px}.form-input-con.button.left-icon .form-input i.icon{left:0;right:unset}.form-input-con.button.only-icon .form-input .control{min-width:35px;padding:0}.form-input-con.button.only-icon .form-input i.icon{width:100%}.form-input-con.button.only-icon .form-input .text{display:none}.form-input-con.button.h-45{font-size:13px;height:45px}.form-input-con.button.h-45 .form-input .control,.form-input-con.button.h-45 .form-input i.icon{height:45px;line-height:45px}.form-input-con.button.h-45 .form-input i.icon{font-size:17px;width:35px}.form-input-con.button.h-30{font-size:12px;height:30px}.form-input-con.button.h-30 .form-input .control,.form-input-con.button.h-30 .form-input i.icon{height:30px;line-height:30px}.form-input-con.button.h-30 .form-input i.icon{max-width:30px}.form-input-con.button.h-30.only-icon .form-input .control{min-width:30px;padding:0}.form-input-con.button.h-25{font-size:12px;height:25px}.form-input-con.button.h-25 .form-input .control,.form-input-con.button.h-25 .form-input i.icon{height:25px;line-height:25px}.form-input-con.button.white.h-25 .form-input .control,.form-input-con.button.white.h-25 .form-input i.icon{line-height:23px}.form-input-con.button.h-25 .form-input i.icon{width:25px}.form-input-con.button.h-25.only-icon .form-input .control{min-width:25px;padding:0}.form-input-con.button.h-20{font-size:11px;height:20px}.form-input-con.button.h-20 .form-input .control,.form-input-con.button.h-20 .form-input i.icon{height:20px;line-height:20px}.form-input-con.button.h-20 .form-input i.icon{width:20px}.form-input-con.button.without-icon .form-input .control{min-width:25px;padding:0 8px;width:100%}::ng-deep .form-input-con.button.h-25 .form-input .dot-spinner>div{height:3px;margin-right:2px;width:3px}.save-form-btn{float:left!important;width:40%!important}@media (max-width:499.98px){.save-form-btn{width:60%!important}}@media (min-width:500px) and (max-width:599.98px){.save-form-btn{width:50%!important}}::ng-deep .modal .sm .save-form-btn{width:70%!important}"]
2883
2883
  },] }
2884
2884
  ];
2885
2885
  FormButtonComponent.ctorParameters = () => [];