@ardium-ui/ui 3.5.4-alpha.1 → 3.5.5

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.
@@ -55,7 +55,7 @@ export class ArdiumDigitInputComponent extends _FormFieldComponentBase {
55
55
  this.emittableValue = computed(() => {
56
56
  if (this.outputAsString())
57
57
  return this.model.stringValue();
58
- return this.model.value();
58
+ return this.model.valueWithStatics();
59
59
  });
60
60
  //! event emitters
61
61
  this.finishedValue = output();
@@ -107,17 +107,13 @@ export class ArdiumDigitInputComponent extends _FormFieldComponentBase {
107
107
  return !this.model.isDefinedAtIndex(index);
108
108
  }
109
109
  writeValue(v) {
110
- console.log('writeValue', v, this._wasViewInit);
111
110
  if (!this._wasViewInit) {
112
111
  this._valueBeforeViewInit = v;
113
- console.log('returning from writeValue');
114
112
  return;
115
113
  }
116
- console.log('calling _writeValue with value', v);
117
114
  this._writeValue(v);
118
115
  }
119
116
  _writeValue(v) {
120
- console.log('_writeValue', v);
121
117
  return this.model.writeValue(v);
122
118
  }
123
119
  ngAfterViewInit() {
@@ -265,4 +261,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
265
261
  }] }], propDecorators: { value: [{
266
262
  type: Input
267
263
  }] } });
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULE1BQU0sRUFDTixLQUFLLEVBR0wsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTFELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBeUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQXNCdEQsTUFBTSxPQUFPLHlCQUNYLFNBQVEsdUJBQXVCO0lBSS9CLFlBQThDLFFBQStCO1FBQzNFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUdELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUU1RCxjQUFjO1FBQ0wsV0FBTSxHQUFHLFlBQVksQ0FBK0IsT0FBTyxDQUFDLENBQUM7UUFFN0QsZUFBVSxHQUFHLEtB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QUFDO2dCQUN4RCxLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLHVCQUF1QjtnQkFDaEMsV0FBVyxFQUFFLHlCQUF5QjthQUN2QztTQUNGLHFKQzlDSCwrNUNBOENBOzs0RkRFYSx5QkFBeUI7a0JBbEJyQyxTQUFTOytCQUNFLGlCQUFpQixpQkFHWixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsdUJBQXVCOzRCQUNoQyxXQUFXLDJCQUEyQjt5QkFDdkM7cUJBQ0Y7OzBCQU9ZLE1BQU07MkJBQUMsd0JBQXdCO3lDQTRJeEMsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0b2ZpbGxNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RleHQtZmllbGQnO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgY29tcHV0ZWQsXHJcbiAgZWZmZWN0LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIG91dHB1dCxcclxuICBzaWduYWwsXHJcbiAgdmlld0NoaWxkcmVuLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vX2ludGVybmFsL2Zvcm0tZmllbGQtY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUVsZW1lbnRBcHBlYXJhbmNlLCBGb3JtRWxlbWVudFZhcmlhbnQgfSBmcm9tICcuLi8uLi90eXBlcy90aGVtaW5nLnR5cGVzJztcclxuaW1wb3J0IHsgQVJEX0RJR0lUX0lOUFVUX0RFRkFVTFRTLCBBcmREaWdpdElucHV0RGVmYXVsdHMgfSBmcm9tICcuL2RpZ2l0LWlucHV0LmRlZmF1bHRzJztcclxuaW1wb3J0IHsgRGlnaXRJbnB1dE1vZGVsIH0gZnJvbSAnLi9kaWdpdC1pbnB1dC5tb2RlbCc7XHJcbmltcG9ydCB7IERpZ2l0SW5wdXRBdXRvRmlsbFBhcnNlRm4sIERpZ2l0SW5wdXRDb25maWcsIERpZ2l0SW5wdXRTaGFwZSwgRGlnaXRJbnB1dFRyYW5zZm9ybSB9IGZyb20gJy4vZGlnaXQtaW5wdXQudHlwZXMnO1xyXG5pbXBvcnQgeyBEaWdpdElucHV0TW9kZWxIb3N0IH0gZnJvbSAnLi9kaWdpdC1pbnB1dC51dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FyZC1kaWdpdC1pbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RpZ2l0LWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kaWdpdC1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IEFyZGl1bURpZ2l0SW5wdXRDb21wb25lbnQsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50XHJcbiAgZXh0ZW5kcyBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZVxyXG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIERpZ2l0SW5wdXRNb2RlbEhvc3QsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XHJcbntcclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX0RFRkFVTFRTITogQXJkRGlnaXRJbnB1dERlZmF1bHRzO1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQVJEX0RJR0lUX0lOUFVUX0RFRkFVTFRTKSBkZWZhdWx0czogQXJkRGlnaXRJbnB1dERlZmF1bHRzKSB7XHJcbiAgICBzdXBlcihkZWZhdWx0cyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9hdXRvRmlsbE1vbml0b3IgPSBpbmplY3QoQXV0b2ZpbGxNb25pdG9yKTtcclxuXHJcbiAgLy8hIGlucHV0cyByZWZcclxuICByZWFkb25seSBpbnB1dHMgPSB2aWV3Q2hpbGRyZW48RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ2lucHV0Jyk7XHJcblxyXG4gIHJlYWRvbmx5IGlucHV0QXR0cnMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih0aGlzLl9ERUZBVUxUUy5pbnB1dEF0dHJzKTtcclxuXHJcbiAgcHJpdmF0ZSBfc2V0SW5wdXRBdHRyaWJ1dGVzKCkge1xyXG4gICAgY29uc3QgaW5wdXRzID0gdGhpcy5pbnB1dHMoKTtcclxuICAgIGZvciAoY29uc3QgaW5wdXQgb2YgaW5wdXRzKSB7XHJcbiAgICAgIGNvbnN0IGlucHV0RWwgPSBpbnB1dC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBjb25zdCBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgICAgIGF1dG9jb3JyZWN0OiAnb2ZmJyxcclxuICAgICAgICBhdXRvY2FwaXRhbGl6ZTogJ29mZicsXHJcbiAgICAgICAgYXV0b2NvbXBsZXRlOiAnb2ZmJyxcclxuICAgICAgICAuLi50aGlzLmlucHV0QXR0cnMoKSxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpKSB7XHJcbiAgICAgICAgaW5wdXRFbC5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyEgYXV0by1maWxsXHJcbiAgcmVhZG9ubHkgYXV0b0ZpbGxQYXJzZUZuID0gaW5wdXQ8RGlnaXRJbnB1dEF1dG9GaWxsUGFyc2VGbj4odGhpcy5fREVGQVVMVFMuYXV0b0ZpbGxQYXJzZUZuKTtcclxuXHJcbiAgcmVhZG9ubHkgaXNBdXRvZmlsbGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF93YXNBdXRvZmlsbFZhbHVlUmVhZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHByaXZhdGUgX2F1dG9GaWxsU3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIF9zdWJzY3JpYmVUb0F1dG9GaWxsT25JbnB1dHMoKSB7XHJcbiAgICBjb25zdCBpbnB1dHMgPSB0aGlzLmlucHV0cygpO1xyXG4gICAgZm9yIChjb25zdCBpbnB1dCBvZiBpbnB1dHMpIHtcclxuICAgICAgY29uc3Qgc3ViID0gdGhpcy5fYXV0b0ZpbGxNb25pdG9yLm1vbml0b3IoaW5wdXQpLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0F1dG9maWxsZWQuc2V0KGV2ZW50LmlzQXV0b2ZpbGxlZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLl9hdXRvRmlsbFN1YnMucHVzaChzdWIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVGcm9tQXV0b0ZpbGwoKSB7XHJcbiAgICBjb25zdCBpbnB1dHMgPSB0aGlzLmlucHV0cygpO1xyXG4gICAgZm9yIChjb25zdCBpbnB1dCBvZiBpbnB1dHMpIHtcclxuICAgICAgdGhpcy5fYXV0b0ZpbGxNb25pdG9yLnN0b3BNb25pdG9yaW5nKGlucHV0KTtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qgc3ViIG9mIHRoaXMuX2F1dG9GaWxsU3Vicykge1xyXG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgIHRoaXMuX3Vuc3Vic2NyaWJlRnJvbUF1dG9GaWxsKCk7XHJcbiAgfVxyXG5cclxuICAvLyEgZGF0YSBtb2RlbFxyXG4gIHByaXZhdGUgcmVhZG9ubHkgbW9kZWwgPSBuZXcgRGlnaXRJbnB1dE1vZGVsKHRoaXMpO1xyXG5cclxuICAvLyEgYXBwZWFyYW5jZVxyXG4gIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSBpbnB1dDxGb3JtRWxlbWVudEFwcGVhcmFuY2U+KHRoaXMuX0RFRkFVTFRTLmFwcGVhcmFuY2UpO1xyXG4gIHJlYWRvbmx5IHZhcmlhbnQgPSBpbnB1dDxGb3JtRWxlbWVudFZhcmlhbnQ+KHRoaXMuX0RFRkFVTFRTLnZhcmlhbnQpO1xyXG4gIHJlYWRvbmx5IHNoYXBlID0gaW5wdXQ8RGlnaXRJbnB1dFNoYXBlPih0aGlzLl9ERUZBVUxUUy5zaGFwZSk7XHJcblxyXG4gIHJlYWRvbmx5IGNvbXBhY3QgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLmNvbXBhY3QsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgcmVhZG9ubHkgbmdDbGFzc2VzID0gY29tcHV0ZWQoKCk6IHN0cmluZyA9PlxyXG4gICAgW1xyXG4gICAgICBgYXJkLWFwcGVhcmFuY2UtJHt0aGlzLmFwcGVhcmFuY2UoKX1gLFxyXG4gICAgICBgYXJkLXZhcmlhbnQtJHt0aGlzLnZhcmlhbnQoKX1gLFxyXG4gICAgICBgYXJkLXNoYXBlLSR7dGhpcy5zaGFwZSgpfWAsXHJcbiAgICAgIHRoaXMuY29tcGFjdCgpID8gJ2FyZC1jb21wYWN0JyA6ICcnLFxyXG4gICAgICB0aGlzLmlzQXV0b2ZpbGxlZCgpID8gJ2FyZC1hdXRvZmlsbGVkJyA6ICcnLFxyXG4gICAgXS5qb2luKCcgJylcclxuICApO1xyXG5cclxuICAvLyEgbW9kZWwgYWNjZXNzIHBvaW50c1xyXG4gIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPHZvaWQsIERpZ2l0SW5wdXRDb25maWc+KHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiB0aGlzLm1vZGVsLnNldENvbmZpZyh2KSxcclxuICB9KTtcclxuICByZWFkb25seSBjb25maWdBcnJheURhdGEgPSB0aGlzLm1vZGVsLmNvbmZpZ0FycmF5RGF0YTtcclxuXHJcbiAgcmVhZG9ubHkgdHJhbnNmb3JtID0gaW5wdXQ8RGlnaXRJbnB1dFRyYW5zZm9ybT4odGhpcy5fREVGQVVMVFMudHJhbnNmb3JtKTtcclxuXHJcbiAgcHJpdmF0ZSBfb2xkQ29uZmlnQXJyYXlEYXRhTGVuZ3RoID0gLTE7XHJcbiAgcmVhZG9ubHkgY29uZmlnQXJyYXlEYXRhRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ0FycmF5RGF0YSgpLmxlbmd0aCA9PT0gdGhpcy5fb2xkQ29uZmlnQXJyYXlEYXRhTGVuZ3RoKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fb2xkQ29uZmlnQXJyYXlEYXRhTGVuZ3RoID0gdGhpcy5jb25maWdBcnJheURhdGEoKS5sZW5ndGg7XHJcbiAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XHJcbiAgfSk7XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIHRoaXMuX29sZENvbmZpZ0FycmF5RGF0YUxlbmd0aCA9IHRoaXMuY29uZmlnQXJyYXlEYXRhKCkubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgaXNJbnB1dEVtcHR5KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5tb2RlbC5pc0RlZmluZWRBdEluZGV4KGluZGV4KTtcclxuICB9XHJcblxyXG4gIC8vISBjb250cm9sIHZhbHVlIGFjY2Vzc29yJ3Mgd3JpdGUgdmFsdWUgaW1wbGVtZW50YXRpb25cclxuICBwcml2YXRlIF92YWx1ZUJlZm9yZVZpZXdJbml0PzogYW55O1xyXG4gIHdyaXRlVmFsdWUodjogYW55KTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnd3JpdGVWYWx1ZScsIHYsIHRoaXMuX3dhc1ZpZXdJbml0KTtcclxuICAgIGlmICghdGhpcy5fd2FzVmlld0luaXQpIHtcclxuICAgICAgdGhpcy5fdmFsdWVCZWZvcmVWaWV3SW5pdCA9IHY7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdyZXR1cm5pbmcgZnJvbSB3cml0ZVZhbHVlJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCdjYWxsaW5nIF93cml0ZVZhbHVlIHdpdGggdmFsdWUnLCB2KTtcclxuICAgIHRoaXMuX3dyaXRlVmFsdWUodik7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3dyaXRlVmFsdWUodjogYW55KTogYm9vbGVhbiB7XHJcbiAgICBjb25zb2xlLmxvZygnX3dyaXRlVmFsdWUnLCB2KTtcclxuICAgIHJldHVybiB0aGlzLm1vZGVsLndyaXRlVmFsdWUodik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF93YXNWaWV3SW5pdCA9IGZhbHNlO1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3dhc1ZpZXdJbml0ID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5fdmFsdWVCZWZvcmVWaWV3SW5pdCkge1xyXG4gICAgICB0aGlzLl93cml0ZVZhbHVlKHRoaXMuX3ZhbHVlQmVmb3JlVmlld0luaXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3NldElucHV0QXR0cmlidXRlcygpO1xyXG4gICAgdGhpcy5fc3Vic2NyaWJlVG9BdXRvRmlsbE9uSW5wdXRzKCk7XHJcbiAgfVxyXG5cclxuICAvLyEgdmFsdWUgdHdvLXdheSBiaW5kaW5nXHJcbiAgcmVhZG9ubHkgb3V0cHV0QXNTdHJpbmcgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLm91dHB1dEFzU3RyaW5nLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIHJlYWRvbmx5IG91dHB1dENvbnRyb2xWYWx1ZUFjY2Vzc29yT25GaW5pc2ggPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZhbHVlKHY6IHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbCkge1xyXG4gICAgdGhpcy53cml0ZVZhbHVlKHYpO1xyXG4gIH1cclxuICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG91dHB1dDxzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGw+KCk7XHJcblxyXG4gIHJlYWRvbmx5IHN0cmluZ1ZhbHVlID0gdGhpcy5tb2RlbC5zdHJpbmdWYWx1ZTtcclxuXHJcbiAgcmVhZG9ubHkgZW1pdHRhYmxlVmFsdWUgPSBjb21wdXRlZCgoKTogc3RyaW5nIHwgKHN0cmluZyB8IG51bGwpW10gfCBudWxsID0+IHtcclxuICAgIGlmICh0aGlzLm91dHB1dEFzU3RyaW5nKCkpIHJldHVybiB0aGlzLm1vZGVsLnN0cmluZ1ZhbHVlKCk7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlbC52YWx1ZSgpO1xyXG4gIH0pO1xyXG5cclxuICAvLyEgZXZlbnQgZW1pdHRlcnNcclxuICByZWFkb25seSBmaW5pc2hlZFZhbHVlID0gb3V0cHV0PHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbD4oKTtcclxuXHJcbiAgcmVhZG9ubHkgZm9jdXNJbmRleEV2ZW50ID0gb3V0cHV0PG51bWJlcj4oeyBhbGlhczogJ2ZvY3VzSW5kZXgnIH0pO1xyXG4gIHJlYWRvbmx5IGJsdXJJbmRleEV2ZW50ID0gb3V0cHV0PG51bWJlcj4oeyBhbGlhczogJ2JsdXJJbmRleCcgfSk7XHJcblxyXG4gIC8vISBldmVudCBoYW5kbGVyc1xyXG4gIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQnKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGlmICghdmFsdWUpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9oYW5kbGVNdWx0aURpZ2l0Q2hhbmdlKHZhbHVlLCBpbmRleCk7XHJcbiAgfVxyXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICBpZiAodGhpcy5pc0F1dG9maWxsZWQoKSkge1xyXG4gICAgICBpZiAoIXRoaXMuX3dhc0F1dG9maWxsVmFsdWVSZWFkKCkpIHtcclxuICAgICAgICB0aGlzLl93YXNBdXRvZmlsbFZhbHVlUmVhZC5zZXQodHJ1ZSk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl93YXNBdXRvZmlsbFZhbHVlUmVhZC5zZXQoZmFsc2UpO1xyXG5cclxuICAgICAgICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gdGhpcy5hdXRvRmlsbFBhcnNlRm4oKSh2YWx1ZSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5faGFuZGxlTXVsdGlEaWdpdENoYW5nZShwYXJzZWRWYWx1ZSwgMCk7XHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgd2FzVmFsaWRDaGFyYWN0ZXIgPSB0aGlzLl91cGRhdGVTaW5nbGVJbnB1dFZhbHVlKHZhbHVlLCBpbmRleCk7XHJcbiAgICBpZiAoIXdhc1ZhbGlkQ2hhcmFjdGVyKSByZXR1cm47XHJcbiAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCArIDEpO1xyXG4gIH1cclxuICBwcml2YXRlIF9oYW5kbGVNdWx0aURpZ2l0Q2hhbmdlKHZhbHVlOiBzdHJpbmcsIHN0YXJ0SW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgbWF4TGVuZ3RoID0gdGhpcy5pbnB1dHMoKS5sZW5ndGggLSBzdGFydEluZGV4O1xyXG4gICAgdmFsdWVcclxuICAgICAgLnNsaWNlKDAsIG1heExlbmd0aClcclxuICAgICAgLnNwbGl0KCcnKVxyXG4gICAgICAuZm9yRWFjaCgoY2hhciwgaSkgPT4ge1xyXG4gICAgICAgIHRoaXMubW9kZWwucmVzZXRJbnB1dFZhbHVlKHN0YXJ0SW5kZXggKyBpKTtcclxuICAgICAgICB0aGlzLm1vZGVsLnZhbGlkYXRlSW5wdXRBbmRTZXRWYWx1ZShjaGFyLCBzdGFydEluZGV4ICsgaSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZm9jdXNCeUluZGV4KHN0YXJ0SW5kZXggLSAxICsgTWF0aC5taW4odmFsdWUubGVuZ3RoLCBtYXhMZW5ndGgpKTtcclxuXHJcbiAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3VwZGF0ZVNpbmdsZUlucHV0VmFsdWUodmFsdWU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgY2hhbmdlUmVzdWx0ID0gdGhpcy5tb2RlbC52YWxpZGF0ZUlucHV0QW5kU2V0VmFsdWUodmFsdWUsIGluZGV4KTtcclxuXHJcbiAgICBpZiAoY2hhbmdlUmVzdWx0Py53YXNDaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY2hhbmdlUmVzdWx0Py53YXNWYWxpZENoYXIgPz8gZmFsc2U7XHJcbiAgfVxyXG4gIGZvY3VzQnlJbmRleChpbmRleDogbnVtYmVyKTogYm9vbGVhbjtcclxuICBmb2N1c0J5SW5kZXgoaW5kZXg6IG51bWJlciwgdHJ5Rm9jdXNpbmdOZXh0OiBib29sZWFuLCBkaXJlY3Rpb246IDEgfCAtMSk6IGJvb2xlYW47XHJcbiAgZm9jdXNCeUluZGV4KGluZGV4OiBudW1iZXIsIHRyeUZvY3VzaW5nTmV4dD86IGJvb2xlYW4sIGRpcmVjdGlvbj86IDEgfCAtMSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLmlucHV0cygpLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgbmV4dEVsID0gdGhpcy5pbnB1dHMoKVtpbmRleF0/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoIW5leHRFbCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChuZXh0RWwuZ2V0QXR0cmlidXRlKCdkYXRhLWFyZC1zdGF0aWMnKSAhPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyAoZGlyZWN0aW9uID8/IDEpKTtcclxuICAgIH1cclxuICAgIG5leHRFbC5mb2N1cygpO1xyXG4gICAgaWYgKHRyeUZvY3VzaW5nTmV4dCAmJiBkaXJlY3Rpb24gJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gbmV4dEVsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZvY3VzQnlJbmRleChpbmRleCArIGRpcmVjdGlvbik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gbmV4dEVsO1xyXG4gIH1cclxuICAvL2ZvY3VzLCBibHVyLCBjaGFuZ2VcclxuICBvbkZvY3VzTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvY3VzSW5kZXhFdmVudC5lbWl0KGluZGV4KTtcclxuICAgIChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMSk7XHJcblxyXG4gICAgdGhpcy5vbkZvY3VzKGV2ZW50KTtcclxuICB9XHJcbiAgb25CbHVyTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmJsdXJJbmRleEV2ZW50LmVtaXQoaW5kZXgpO1xyXG4gICAgdGhpcy5vbkJsdXIoZXZlbnQpO1xyXG4gIH1cclxuICBwcm90ZWN0ZWQgX2VtaXRDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCB2ID0gdGhpcy5lbWl0dGFibGVWYWx1ZSgpO1xyXG4gICAgaWYgKCF0aGlzLm91dHB1dENvbnRyb2xWYWx1ZUFjY2Vzc29yT25GaW5pc2goKSB8fCB0aGlzLm1vZGVsLmlzVmFsdWVGdWxsKCkpIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHYpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHYpO1xyXG4gICAgaWYgKHRoaXMubW9kZWwuaXNWYWx1ZUZ1bGwoKSkge1xyXG4gICAgICB0aGlzLmZpbmlzaGVkVmFsdWUuZW1pdCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xyXG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxyXG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KGluZGV4IC0gMSwgdHJ1ZSwgLTEpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XHJcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyAxLCB0cnVlLCArMSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBjYXNlICdIb21lJzpcclxuICAgICAgICB0aGlzLmZvY3VzQnlJbmRleCgwLCB0cnVlLCAxKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIGNhc2UgJ0VuZCc6XHJcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgodGhpcy5pbnB1dHMubGVuZ3RoIC0gMSwgdHJ1ZSwgLTEpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgY2FzZSAnQmFja3NwYWNlJzpcclxuICAgICAgY2FzZSAnRGVsZXRlJzpcclxuICAgICAgICB0aGlzLl91cGRhdGVTaW5nbGVJbnB1dFZhbHVlKCcnLCBpbmRleCk7XHJcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggLSAxLCB0cnVlLCAtMSk7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cImFyZC1kaWdpdC1pbnB1dFwiXHJcbiAgW25nQ2xhc3NdPVwibmdDbGFzc2VzKClcIlxyXG4gIFtjbGFzcy5hcmQtaGFzLWVycm9yXT1cImhhc0Vycm9yKClcIlxyXG4gIFtjbGFzcy5hcmQtaXMtc3VjY2Vzc109XCJpc1N1Y2Nlc3MoKVwiXHJcbj5cclxuICBAZm9yIChkYXRhIG9mIGNvbmZpZ0FycmF5RGF0YSgpOyB0cmFjayAkaW5kZXgpIHtcclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImFyZC1kaWdpdC1pbnB1dF9faXRlbVwiXHJcbiAgICBbY2xhc3MuYXJkLWRpZ2l0LWlucHV0X19pdGVtLXdpdGgtaW5wdXRdPVwiZGF0YS50eXBlID09PSAnaW5wdXQnXCJcclxuICA+XHJcbiAgICBAaWYgKGRhdGEudHlwZSA9PT0gJ2lucHV0Jykge1xyXG4gICAgPGlucHV0XHJcbiAgICAgICNpbnB1dFxyXG4gICAgICAjZm9jdXNhYmxlRWxlbWVudFxyXG4gICAgICBjbGFzcz1cImFyZC1kaWdpdC1pbnB1dF9faW5wdXRcIlxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIFtyZWFkb25seV09XCJkYXRhLnJlYWRvbmx5XCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cImRhdGEucGxhY2Vob2xkZXJcIlxyXG4gICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcclxuICAgICAgW2NsYXNzLmFyZC1kaWdpdC1pbnB1dF9faW5wdXQtcmVhZG9ubHldPVwiZGF0YS5yZWFkb25seVwiXHJcbiAgICAgIFtjbGFzcy5hcmQtZGlnaXQtaW5wdXRfX2lucHV0LWVtcHR5XT1cImlzSW5wdXRFbXB0eShkYXRhLmluZGV4ISlcIlxyXG4gICAgICAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQsIGRhdGEuaW5kZXghKVwiXHJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudCwgZGF0YS5pbmRleCEpXCJcclxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXNNYXN0ZXIoJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxyXG4gICAgICAoYmx1cik9XCJvbkJsdXJNYXN0ZXIoJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxyXG4gICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxyXG4gICAgLz5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgPGRpdiBjbGFzcz1cImFyZC1kaWdpdC1pbnB1dF9fc3RhdGljXCI+XHJcbiAgICAgIHt7IGRhdGEuY2hhciB9fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8aW5wdXRcclxuICAgICAgI2lucHV0XHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX3N0YXRpYy1pbnB1dFwiXHJcbiAgICAgIGRhdGEtYXJkLXN0YXRpY1xyXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICB0YWJpbmRleD1cIi0xXCJcclxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgW3ZhbHVlXT1cImRhdGEuY2hhclwiXHJcbiAgICAvPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULE1BQU0sRUFDTixLQUFLLEVBR0wsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTFELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBeUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQXNCdEQsTUFBTSxPQUFPLHlCQUNYLFNBQVEsdUJBQXVCO0lBSS9CLFlBQThDLFFBQStCO1FBQzNFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUdELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUU1RCxjQUFjO1FBQ0wsV0FBTSxHQUFHLFlBQVksQ0FBK0IsT0FBTyxDQUFDLENBQUM7UUFFN0QsZUFBVSxHQUFHLEtB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QU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsdUJBQXVCOzRCQUNoQyxXQUFXLDJCQUEyQjt5QkFDdkM7cUJBQ0Y7OzBCQU9ZLE1BQU07MkJBQUMsd0JBQXdCO3lDQXdJeEMsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0b2ZpbGxNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RleHQtZmllbGQnO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgY29tcHV0ZWQsXHJcbiAgZWZmZWN0LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIG91dHB1dCxcclxuICBzaWduYWwsXHJcbiAgdmlld0NoaWxkcmVuLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vX2ludGVybmFsL2Zvcm0tZmllbGQtY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUVsZW1lbnRBcHBlYXJhbmNlLCBGb3JtRWxlbWVudFZhcmlhbnQgfSBmcm9tICcuLi8uLi90eXBlcy90aGVtaW5nLnR5cGVzJztcclxuaW1wb3J0IHsgQVJEX0RJR0lUX0lOUFVUX0RFRkFVTFRTLCBBcmREaWdpdElucHV0RGVmYXVsdHMgfSBmcm9tICcuL2RpZ2l0LWlucHV0LmRlZmF1bHRzJztcclxuaW1wb3J0IHsgRGlnaXRJbnB1dE1vZGVsIH0gZnJvbSAnLi9kaWdpdC1pbnB1dC5tb2RlbCc7XHJcbmltcG9ydCB7IERpZ2l0SW5wdXRBdXRvRmlsbFBhcnNlRm4sIERpZ2l0SW5wdXRDb25maWcsIERpZ2l0SW5wdXRTaGFwZSwgRGlnaXRJbnB1dFRyYW5zZm9ybSB9IGZyb20gJy4vZGlnaXQtaW5wdXQudHlwZXMnO1xyXG5pbXBvcnQgeyBEaWdpdElucHV0TW9kZWxIb3N0IH0gZnJvbSAnLi9kaWdpdC1pbnB1dC51dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FyZC1kaWdpdC1pbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RpZ2l0LWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kaWdpdC1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IEFyZGl1bURpZ2l0SW5wdXRDb21wb25lbnQsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50XHJcbiAgZXh0ZW5kcyBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZVxyXG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIERpZ2l0SW5wdXRNb2RlbEhvc3QsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XHJcbntcclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX0RFRkFVTFRTITogQXJkRGlnaXRJbnB1dERlZmF1bHRzO1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQVJEX0RJR0lUX0lOUFVUX0RFRkFVTFRTKSBkZWZhdWx0czogQXJkRGlnaXRJbnB1dERlZmF1bHRzKSB7XHJcbiAgICBzdXBlcihkZWZhdWx0cyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9hdXRvRmlsbE1vbml0b3IgPSBpbmplY3QoQXV0b2ZpbGxNb25pdG9yKTtcclxuXHJcbiAgLy8hIGlucHV0cyByZWZcclxuICByZWFkb25seSBpbnB1dHMgPSB2aWV3Q2hpbGRyZW48RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ2lucHV0Jyk7XHJcblxyXG4gIHJlYWRvbmx5IGlucHV0QXR0cnMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih0aGlzLl9ERUZBVUxUUy5pbnB1dEF0dHJzKTtcclxuXHJcbiAgcHJpdmF0ZSBfc2V0SW5wdXRBdHRyaWJ1dGVzKCkge1xyXG4gICAgY29uc3QgaW5wdXRzID0gdGhpcy5pbnB1dHMoKTtcclxuICAgIGZvciAoY29uc3QgaW5wdXQgb2YgaW5wdXRzKSB7XHJcbiAgICAgIGNvbnN0IGlucHV0RWwgPSBpbnB1dC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBjb25zdCBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgICAgIGF1dG9jb3JyZWN0OiAnb2ZmJyxcclxuICAgICAgICBhdXRvY2FwaXRhbGl6ZTogJ29mZicsXHJcbiAgICAgICAgYXV0b2NvbXBsZXRlOiAnb2ZmJyxcclxuICAgICAgICAuLi50aGlzLmlucHV0QXR0cnMoKSxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpKSB7XHJcbiAgICAgICAgaW5wdXRFbC5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyEgYXV0by1maWxsXHJcbiAgcmVhZG9ubHkgYXV0b0ZpbGxQYXJzZUZuID0gaW5wdXQ8RGlnaXRJbnB1dEF1dG9GaWxsUGFyc2VGbj4odGhpcy5fREVGQVVMVFMuYXV0b0ZpbGxQYXJzZUZuKTtcclxuXHJcbiAgcmVhZG9ubHkgaXNBdXRvZmlsbGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF93YXNBdXRvZmlsbFZhbHVlUmVhZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHByaXZhdGUgX2F1dG9GaWxsU3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIF9zdWJzY3JpYmVUb0F1dG9GaWxsT25JbnB1dHMoKSB7XHJcbiAgICBjb25zdCBpbnB1dHMgPSB0aGlzLmlucHV0cygpO1xyXG4gICAgZm9yIChjb25zdCBpbnB1dCBvZiBpbnB1dHMpIHtcclxuICAgICAgY29uc3Qgc3ViID0gdGhpcy5fYXV0b0ZpbGxNb25pdG9yLm1vbml0b3IoaW5wdXQpLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0F1dG9maWxsZWQuc2V0KGV2ZW50LmlzQXV0b2ZpbGxlZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLl9hdXRvRmlsbFN1YnMucHVzaChzdWIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVGcm9tQXV0b0ZpbGwoKSB7XHJcbiAgICBjb25zdCBpbnB1dHMgPSB0aGlzLmlucHV0cygpO1xyXG4gICAgZm9yIChjb25zdCBpbnB1dCBvZiBpbnB1dHMpIHtcclxuICAgICAgdGhpcy5fYXV0b0ZpbGxNb25pdG9yLnN0b3BNb25pdG9yaW5nKGlucHV0KTtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qgc3ViIG9mIHRoaXMuX2F1dG9GaWxsU3Vicykge1xyXG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgIHRoaXMuX3Vuc3Vic2NyaWJlRnJvbUF1dG9GaWxsKCk7XHJcbiAgfVxyXG5cclxuICAvLyEgZGF0YSBtb2RlbFxyXG4gIHByaXZhdGUgcmVhZG9ubHkgbW9kZWwgPSBuZXcgRGlnaXRJbnB1dE1vZGVsKHRoaXMpO1xyXG5cclxuICAvLyEgYXBwZWFyYW5jZVxyXG4gIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSBpbnB1dDxGb3JtRWxlbWVudEFwcGVhcmFuY2U+KHRoaXMuX0RFRkFVTFRTLmFwcGVhcmFuY2UpO1xyXG4gIHJlYWRvbmx5IHZhcmlhbnQgPSBpbnB1dDxGb3JtRWxlbWVudFZhcmlhbnQ+KHRoaXMuX0RFRkFVTFRTLnZhcmlhbnQpO1xyXG4gIHJlYWRvbmx5IHNoYXBlID0gaW5wdXQ8RGlnaXRJbnB1dFNoYXBlPih0aGlzLl9ERUZBVUxUUy5zaGFwZSk7XHJcblxyXG4gIHJlYWRvbmx5IGNvbXBhY3QgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLmNvbXBhY3QsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgcmVhZG9ubHkgbmdDbGFzc2VzID0gY29tcHV0ZWQoKCk6IHN0cmluZyA9PlxyXG4gICAgW1xyXG4gICAgICBgYXJkLWFwcGVhcmFuY2UtJHt0aGlzLmFwcGVhcmFuY2UoKX1gLFxyXG4gICAgICBgYXJkLXZhcmlhbnQtJHt0aGlzLnZhcmlhbnQoKX1gLFxyXG4gICAgICBgYXJkLXNoYXBlLSR7dGhpcy5zaGFwZSgpfWAsXHJcbiAgICAgIHRoaXMuY29tcGFjdCgpID8gJ2FyZC1jb21wYWN0JyA6ICcnLFxyXG4gICAgICB0aGlzLmlzQXV0b2ZpbGxlZCgpID8gJ2FyZC1hdXRvZmlsbGVkJyA6ICcnLFxyXG4gICAgXS5qb2luKCcgJylcclxuICApO1xyXG5cclxuICAvLyEgbW9kZWwgYWNjZXNzIHBvaW50c1xyXG4gIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPHZvaWQsIERpZ2l0SW5wdXRDb25maWc+KHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiB0aGlzLm1vZGVsLnNldENvbmZpZyh2KSxcclxuICB9KTtcclxuICByZWFkb25seSBjb25maWdBcnJheURhdGEgPSB0aGlzLm1vZGVsLmNvbmZpZ0FycmF5RGF0YTtcclxuXHJcbiAgcmVhZG9ubHkgdHJhbnNmb3JtID0gaW5wdXQ8RGlnaXRJbnB1dFRyYW5zZm9ybT4odGhpcy5fREVGQVVMVFMudHJhbnNmb3JtKTtcclxuXHJcbiAgcHJpdmF0ZSBfb2xkQ29uZmlnQXJyYXlEYXRhTGVuZ3RoID0gLTE7XHJcbiAgcmVhZG9ubHkgY29uZmlnQXJyYXlEYXRhRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ0FycmF5RGF0YSgpLmxlbmd0aCA9PT0gdGhpcy5fb2xkQ29uZmlnQXJyYXlEYXRhTGVuZ3RoKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fb2xkQ29uZmlnQXJyYXlEYXRhTGVuZ3RoID0gdGhpcy5jb25maWdBcnJheURhdGEoKS5sZW5ndGg7XHJcbiAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XHJcbiAgfSk7XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIHRoaXMuX29sZENvbmZpZ0FycmF5RGF0YUxlbmd0aCA9IHRoaXMuY29uZmlnQXJyYXlEYXRhKCkubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgaXNJbnB1dEVtcHR5KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5tb2RlbC5pc0RlZmluZWRBdEluZGV4KGluZGV4KTtcclxuICB9XHJcblxyXG4gIC8vISBjb250cm9sIHZhbHVlIGFjY2Vzc29yJ3Mgd3JpdGUgdmFsdWUgaW1wbGVtZW50YXRpb25cclxuICBwcml2YXRlIF92YWx1ZUJlZm9yZVZpZXdJbml0PzogYW55O1xyXG4gIHdyaXRlVmFsdWUodjogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX3dhc1ZpZXdJbml0KSB7XHJcbiAgICAgIHRoaXMuX3ZhbHVlQmVmb3JlVmlld0luaXQgPSB2O1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl93cml0ZVZhbHVlKHYpO1xyXG4gIH1cclxuICBwcml2YXRlIF93cml0ZVZhbHVlKHY6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZWwud3JpdGVWYWx1ZSh2KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3dhc1ZpZXdJbml0ID0gZmFsc2U7XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fd2FzVmlld0luaXQgPSB0cnVlO1xyXG5cclxuICAgIGlmICh0aGlzLl92YWx1ZUJlZm9yZVZpZXdJbml0KSB7XHJcbiAgICAgIHRoaXMuX3dyaXRlVmFsdWUodGhpcy5fdmFsdWVCZWZvcmVWaWV3SW5pdCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fc2V0SW5wdXRBdHRyaWJ1dGVzKCk7XHJcbiAgICB0aGlzLl9zdWJzY3JpYmVUb0F1dG9GaWxsT25JbnB1dHMoKTtcclxuICB9XHJcblxyXG4gIC8vISB2YWx1ZSB0d28td2F5IGJpbmRpbmdcclxuICByZWFkb25seSBvdXRwdXRBc1N0cmluZyA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMub3V0cHV0QXNTdHJpbmcsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgcmVhZG9ubHkgb3V0cHV0Q29udHJvbFZhbHVlQWNjZXNzb3JPbkZpbmlzaCA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWUodjogc3RyaW5nIHwgKHN0cmluZyB8IG51bGwpW10gfCBudWxsKSB7XHJcbiAgICB0aGlzLndyaXRlVmFsdWUodik7XHJcbiAgfVxyXG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gb3V0cHV0PHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbD4oKTtcclxuXHJcbiAgcmVhZG9ubHkgc3RyaW5nVmFsdWUgPSB0aGlzLm1vZGVsLnN0cmluZ1ZhbHVlO1xyXG5cclxuICByZWFkb25seSBlbWl0dGFibGVWYWx1ZSA9IGNvbXB1dGVkKCgpOiBzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGwgPT4ge1xyXG4gICAgaWYgKHRoaXMub3V0cHV0QXNTdHJpbmcoKSkgcmV0dXJuIHRoaXMubW9kZWwuc3RyaW5nVmFsdWUoKTtcclxuICAgIHJldHVybiB0aGlzLm1vZGVsLnZhbHVlV2l0aFN0YXRpY3MoKTtcclxuICB9KTtcclxuXHJcbiAgLy8hIGV2ZW50IGVtaXR0ZXJzXHJcbiAgcmVhZG9ubHkgZmluaXNoZWRWYWx1ZSA9IG91dHB1dDxzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGw+KCk7XHJcblxyXG4gIHJlYWRvbmx5IGZvY3VzSW5kZXhFdmVudCA9IG91dHB1dDxudW1iZXI+KHsgYWxpYXM6ICdmb2N1c0luZGV4JyB9KTtcclxuICByZWFkb25seSBibHVySW5kZXhFdmVudCA9IG91dHB1dDxudW1iZXI+KHsgYWxpYXM6ICdibHVySW5kZXgnIH0pO1xyXG5cclxuICAvLyEgZXZlbnQgaGFuZGxlcnNcclxuICBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWUgPSBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0Jyk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5faGFuZGxlTXVsdGlEaWdpdENoYW5nZSh2YWx1ZSwgaW5kZXgpO1xyXG4gIH1cclxuICBvbklucHV0KGV2ZW50OiBFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgaWYgKHRoaXMuaXNBdXRvZmlsbGVkKCkpIHtcclxuICAgICAgaWYgKCF0aGlzLl93YXNBdXRvZmlsbFZhbHVlUmVhZCgpKSB7XHJcbiAgICAgICAgdGhpcy5fd2FzQXV0b2ZpbGxWYWx1ZVJlYWQuc2V0KHRydWUpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fd2FzQXV0b2ZpbGxWYWx1ZVJlYWQuc2V0KGZhbHNlKTtcclxuXHJcbiAgICAgICAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IHRoaXMuYXV0b0ZpbGxQYXJzZUZuKCkodmFsdWUpO1xyXG5cclxuICAgICAgICAgIHRoaXMuX2hhbmRsZU11bHRpRGlnaXRDaGFuZ2UocGFyc2VkVmFsdWUsIDApO1xyXG4gICAgICAgIH0sIDApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHdhc1ZhbGlkQ2hhcmFjdGVyID0gdGhpcy5fdXBkYXRlU2luZ2xlSW5wdXRWYWx1ZSh2YWx1ZSwgaW5kZXgpO1xyXG4gICAgaWYgKCF3YXNWYWxpZENoYXJhY3RlcikgcmV0dXJuO1xyXG4gICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyAxKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaGFuZGxlTXVsdGlEaWdpdENoYW5nZSh2YWx1ZTogc3RyaW5nLCBzdGFydEluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IG1heExlbmd0aCA9IHRoaXMuaW5wdXRzKCkubGVuZ3RoIC0gc3RhcnRJbmRleDtcclxuICAgIHZhbHVlXHJcbiAgICAgIC5zbGljZSgwLCBtYXhMZW5ndGgpXHJcbiAgICAgIC5zcGxpdCgnJylcclxuICAgICAgLmZvckVhY2goKGNoYXIsIGkpID0+IHtcclxuICAgICAgICB0aGlzLm1vZGVsLnJlc2V0SW5wdXRWYWx1ZShzdGFydEluZGV4ICsgaSk7XHJcbiAgICAgICAgdGhpcy5tb2RlbC52YWxpZGF0ZUlucHV0QW5kU2V0VmFsdWUoY2hhciwgc3RhcnRJbmRleCArIGkpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZvY3VzQnlJbmRleChzdGFydEluZGV4IC0gMSArIE1hdGgubWluKHZhbHVlLmxlbmd0aCwgbWF4TGVuZ3RoKSk7XHJcblxyXG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gIH1cclxuICBwcml2YXRlIF91cGRhdGVTaW5nbGVJbnB1dFZhbHVlKHZhbHVlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGNoYW5nZVJlc3VsdCA9IHRoaXMubW9kZWwudmFsaWRhdGVJbnB1dEFuZFNldFZhbHVlKHZhbHVlLCBpbmRleCk7XHJcblxyXG4gICAgaWYgKGNoYW5nZVJlc3VsdD8ud2FzQ2hhbmdlZCkge1xyXG4gICAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNoYW5nZVJlc3VsdD8ud2FzVmFsaWRDaGFyID8/IGZhbHNlO1xyXG4gIH1cclxuICBmb2N1c0J5SW5kZXgoaW5kZXg6IG51bWJlcik6IGJvb2xlYW47XHJcbiAgZm9jdXNCeUluZGV4KGluZGV4OiBudW1iZXIsIHRyeUZvY3VzaW5nTmV4dDogYm9vbGVhbiwgZGlyZWN0aW9uOiAxIHwgLTEpOiBib29sZWFuO1xyXG4gIGZvY3VzQnlJbmRleChpbmRleDogbnVtYmVyLCB0cnlGb2N1c2luZ05leHQ/OiBib29sZWFuLCBkaXJlY3Rpb24/OiAxIHwgLTEpOiBib29sZWFuIHtcclxuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5pbnB1dHMoKS5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuICAgIGNvbnN0IG5leHRFbCA9IHRoaXMuaW5wdXRzKClbaW5kZXhdPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKCFuZXh0RWwpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAobmV4dEVsLmdldEF0dHJpYnV0ZSgnZGF0YS1hcmQtc3RhdGljJykgIT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZm9jdXNCeUluZGV4KGluZGV4ICsgKGRpcmVjdGlvbiA/PyAxKSk7XHJcbiAgICB9XHJcbiAgICBuZXh0RWwuZm9jdXMoKTtcclxuICAgIGlmICh0cnlGb2N1c2luZ05leHQgJiYgZGlyZWN0aW9uICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IG5leHRFbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyBkaXJlY3Rpb24pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IG5leHRFbDtcclxuICB9XHJcbiAgLy9mb2N1cywgYmx1ciwgY2hhbmdlXHJcbiAgb25Gb2N1c01hc3RlcihldmVudDogRm9jdXNFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5mb2N1c0luZGV4RXZlbnQuZW1pdChpbmRleCk7XHJcbiAgICAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnNldFNlbGVjdGlvblJhbmdlKDAsIDEpO1xyXG5cclxuICAgIHRoaXMub25Gb2N1cyhldmVudCk7XHJcbiAgfVxyXG4gIG9uQmx1ck1hc3RlcihldmVudDogRm9jdXNFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5ibHVySW5kZXhFdmVudC5lbWl0KGluZGV4KTtcclxuICAgIHRoaXMub25CbHVyKGV2ZW50KTtcclxuICB9XHJcbiAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdiA9IHRoaXMuZW1pdHRhYmxlVmFsdWUoKTtcclxuICAgIGlmICghdGhpcy5vdXRwdXRDb250cm9sVmFsdWVBY2Nlc3Nvck9uRmluaXNoKCkgfHwgdGhpcy5tb2RlbC5pc1ZhbHVlRnVsbCgpKSB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih2KTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2KTtcclxuICAgIGlmICh0aGlzLm1vZGVsLmlzVmFsdWVGdWxsKCkpIHtcclxuICAgICAgdGhpcy5maW5pc2hlZFZhbHVlLmVtaXQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcclxuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcclxuICAgICAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCAtIDEsIHRydWUsIC0xKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxyXG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KGluZGV4ICsgMSwgdHJ1ZSwgKzEpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgY2FzZSAnSG9tZSc6XHJcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoMCwgdHJ1ZSwgMSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBjYXNlICdFbmQnOlxyXG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KHRoaXMuaW5wdXRzLmxlbmd0aCAtIDEsIHRydWUsIC0xKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XHJcbiAgICAgIGNhc2UgJ0RlbGV0ZSc6XHJcbiAgICAgICAgdGhpcy5fdXBkYXRlU2luZ2xlSW5wdXRWYWx1ZSgnJywgaW5kZXgpO1xyXG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KGluZGV4IC0gMSwgdHJ1ZSwgLTEpO1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRcIlxyXG4gIFtuZ0NsYXNzXT1cIm5nQ2xhc3NlcygpXCJcclxuICBbY2xhc3MuYXJkLWhhcy1lcnJvcl09XCJoYXNFcnJvcigpXCJcclxuICBbY2xhc3MuYXJkLWlzLXN1Y2Nlc3NdPVwiaXNTdWNjZXNzKClcIlxyXG4+XHJcbiAgQGZvciAoZGF0YSBvZiBjb25maWdBcnJheURhdGEoKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX2l0ZW1cIlxyXG4gICAgW2NsYXNzLmFyZC1kaWdpdC1pbnB1dF9faXRlbS13aXRoLWlucHV0XT1cImRhdGEudHlwZSA9PT0gJ2lucHV0J1wiXHJcbiAgPlxyXG4gICAgQGlmIChkYXRhLnR5cGUgPT09ICdpbnB1dCcpIHtcclxuICAgIDxpbnB1dFxyXG4gICAgICAjaW5wdXRcclxuICAgICAgI2ZvY3VzYWJsZUVsZW1lbnRcclxuICAgICAgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX2lucHV0XCJcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBbcmVhZG9ubHldPVwiZGF0YS5yZWFkb25seVwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRhLnBsYWNlaG9sZGVyXCJcclxuICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXgoKVwiXHJcbiAgICAgIFtjbGFzcy5hcmQtZGlnaXQtaW5wdXRfX2lucHV0LXJlYWRvbmx5XT1cImRhdGEucmVhZG9ubHlcIlxyXG4gICAgICBbY2xhc3MuYXJkLWRpZ2l0LWlucHV0X19pbnB1dC1lbXB0eV09XCJpc0lucHV0RW1wdHkoZGF0YS5pbmRleCEpXCJcclxuICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxyXG4gICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQsIGRhdGEuaW5kZXghKVwiXHJcbiAgICAgIChmb2N1cyk9XCJvbkZvY3VzTWFzdGVyKCRldmVudCwgZGF0YS5pbmRleCEpXCJcclxuICAgICAgKGJsdXIpPVwib25CbHVyTWFzdGVyKCRldmVudCwgZGF0YS5pbmRleCEpXCJcclxuICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudCwgZGF0YS5pbmRleCEpXCJcclxuICAgIC8+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgIDxkaXYgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX3N0YXRpY1wiPlxyXG4gICAgICB7eyBkYXRhLmNoYXIgfX1cclxuICAgIDwvZGl2PlxyXG4gICAgPGlucHV0XHJcbiAgICAgICNpbnB1dFxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIGNsYXNzPVwiYXJkLWRpZ2l0LWlucHV0X19zdGF0aWMtaW5wdXRcIlxyXG4gICAgICBkYXRhLWFyZC1zdGF0aWNcclxuICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgdGFiaW5kZXg9XCItMVwiXHJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgIFt2YWx1ZV09XCJkYXRhLmNoYXJcIlxyXG4gICAgLz5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
@@ -25,22 +25,32 @@ export class DigitInputModel {
25
25
  });
26
26
  this.isConfigDefined = computed(() => this._configArray().length > 0);
27
27
  this.value = signal(null);
28
- this.stringValue = computed(() => this.value()
28
+ this.valueWithStatics = computed(() => {
29
+ const configArr = this.configArrayData();
30
+ const arr = this.value() ?? [];
31
+ const newArr = [];
32
+ for (let i = 0; i < configArr.length; i++) {
33
+ const curr = arr[i];
34
+ const config = configArr[i];
35
+ newArr.push(config.type === DigitInputConfigDataType.Static ? config.char : curr ?? null);
36
+ }
37
+ return newArr;
38
+ });
39
+ this.stringValue = computed(() => this.valueWithStatics()
29
40
  ?.map(v => v ?? ' ')
30
41
  .join('') ?? '');
31
42
  this.isValueFull = computed(() => this.value()?.filter(v => v).length === this._configArray().length);
32
43
  //set the value array to be the same length
33
44
  effect(() => {
34
45
  const configArr = this.configArrayData();
35
- const length = configArr.length;
36
46
  this.value.update(arr => {
37
47
  if (!arr)
38
48
  arr = [];
39
49
  const newArr = [];
40
- for (let i = 0; i < length; i++) {
50
+ for (let i = 0; i < configArr.length; i++) {
41
51
  const curr = arr[i];
42
52
  const config = configArr[i];
43
- newArr.push(config.type === DigitInputConfigDataType.Static ? config.char : curr ?? null);
53
+ newArr.push(config.type === DigitInputConfigDataType.Static ? null : curr ?? null);
44
54
  }
45
55
  return newArr;
46
56
  });
@@ -50,13 +60,11 @@ export class DigitInputModel {
50
60
  return !!this.value()?.[index];
51
61
  }
52
62
  writeValue(v) {
53
- console.log('executing model writeValue', v, this._ardHost.outputAsString());
54
63
  if (this._ardHost.outputAsString()) {
55
64
  if (!isAnyString(v) && !isNull(v)) {
56
65
  throw new Error(`ARD-FT0040b: Trying to set <ard-digit-input>'s value to "${v}" (of type ${typeof v}), but the input uses [outputAsString]="true", and thus expects string or null.`);
57
66
  }
58
67
  const vArray = v?.split('') ?? [];
59
- console.log('executing model writeValue - vArray', vArray, this._configArray());
60
68
  if (vArray.length > this._configArray().length) {
61
69
  console.warn(`ARD-WA0041: Value provided to <ard-digit-input> is too long. Got ${vArray.length} characters, but expected a maximum of ${this._configArray().length} characters.`);
62
70
  }
@@ -77,7 +85,6 @@ export class DigitInputModel {
77
85
  }
78
86
  _writeValue(v) {
79
87
  const isOldValueTheSame = this.value()?.length ? this.value().every((ch, i) => ch === v?.[i]) : !v?.length;
80
- console.log('executing model _writeValue', v, 'current value', this.value(), isOldValueTheSame);
81
88
  if (isOldValueTheSame)
82
89
  return false;
83
90
  this.value.set(v && v.map(el => el || null));
@@ -257,4 +264,4 @@ export class DigitInputModel {
257
264
  return char;
258
265
  }
259
266
  }
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNGLE9BQU8sRUFJTCx5QkFBeUIsRUFDekIsYUFBYSxHQUNkLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUF3Qix3QkFBd0IsRUFBdUIscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqSSxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixRQUE2QjtRQUE3QixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQXNCaEMsaUJBQVksR0FBRyxNQUFNLENBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBRXRELG9CQUFlLEdBQUcsUUFBUSxDQUF5QixHQUFHLEVBQUU7WUFDL0QsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDbEIsT0FBTzt3QkFDTCxJQUFJLEVBQUUsd0JBQXdCLENBQUMsTUFBTTt3QkFDckMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNO3FCQUNnQixDQUFDO2dCQUNuQyxDQUFDO2dCQUNELE9BQU87b0JBQ0wsSUFBSSxFQUFFLHdCQUF3QixDQUFDLEtBQUs7b0JBQ3BDLEtBQUssRUFBRSxDQUFDO29CQUNSLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtvQkFDcEIsV0FBVyxFQUFFLENBQUMsQ0FBQyxXQUFXLElBQUksRUFBRTtpQkFDRixDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFTSxvQkFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTFFLFVBQUssR0FBRyxNQUFNLENBQTJCLElBQUksQ0FBQyxDQUFDO1FBRS9DLGdCQUFXLEdBQUcsUUFBUSxDQUM3QixHQUFXLEVBQUUsQ0FDWCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDO2FBQ25CLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQ3BCLENBQUM7UUFFTyxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQW5EakgsMkNBQTJDO1FBQzNDLE1BQU0sQ0FDSixHQUFHLEVBQUU7WUFDSCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekMsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUVoQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLEdBQUc7b0JBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxNQUFNLEdBQXNCLEVBQUUsQ0FBQztnQkFDckMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUNoQyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO2dCQUM3RixDQUFDO2dCQUNELE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzVCLENBQUM7SUFDSixDQUFDO0lBa0NELGdCQUFnQixDQUFDLEtBQWE7UUFDNUIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFVBQVUsQ0FBQyxDQUFNO1FBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxJQUFJLEtBQUssQ0FDYiw0REFBNEQsQ0FBQyxjQUFjLE9BQU8sQ0FBQyxpRkFBaUYsQ0FDckssQ0FBQztZQUNKLENBQUM7WUFDRCxNQUFNLE1BQU0sR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUVoRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMvQyxPQUFPLENBQUMsSUFBSSxDQUNWLG9FQUNFLE1BQU0sQ0FBQyxNQUNULDBDQUEwQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxjQUFjLENBQ25GLENBQUM7WUFDSixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakQsTUFBTSxJQUFJLEtBQUssQ0FDYiwyREFBMkQsQ0FBQyxjQUFjLE9BQU8sQ0FBQyw0Q0FBNEMsQ0FDL0gsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQ1Ysb0VBQ0UsTUFBTSxDQUFDLE1BQ1QsMENBQTBDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLGNBQWMsQ0FDbkYsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRSxJQUFJLFlBQVksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQ2IsOEdBQThHLE1BQU0sQ0FBQyxZQUFZLENBQUMsY0FBYyxZQUFZLHFDQUFxQyxDQUNsTSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ08sV0FBVyxDQUFDLENBQWtCO1FBQ3BDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDNUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hHLElBQUksaUJBQWlCO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUM3QyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pDLENBQUMsRUFBRSxDQUFDO1FBQ04sQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsU0FBUyxDQUFDLE1BQXdCO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUNPLFVBQVUsQ0FBQyxNQUF3QjtRQUN6QywrQkFBK0I7UUFDL0IsSUFBSSxjQUFjLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNqRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUNqRCxjQUFjLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWUsQ0FBQztZQUM3RCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdEcsT0FBTztRQUNULENBQUM7UUFDRCwwQkFBMEI7UUFDMUIsSUFBSSxTQUFnRSxDQUFDO1FBQ3JFLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDeEIsU0FBUyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLENBQUM7YUFBTSxDQUFDO1lBQ04sU0FBUyxHQUFHLE1BQU0sQ0FBQztRQUNyQixDQUFDO1FBQ0QsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQixTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUMzQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2xHLENBQUMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQyxDQUFDO2dCQUNELE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztZQUVELFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ1YsS0FBSyx5QkFBeUIsQ0FBQyxNQUFNO29CQUNuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxLQUFLLHlCQUF5QixDQUFDLE1BQU07b0JBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELEtBQUsseUJBQXlCLENBQUMsWUFBWTtvQkFDekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEQsS0FBSyx5QkFBeUIsQ0FBQyxPQUFPO29CQUNwQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBRTVEO29CQUNFLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxzRkFBc0YsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDOUcsQ0FBQztvQkFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLDRDQUE0QyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVHLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFhO1FBQzNCLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRTVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQXFCLENBQUM7UUFDOUQsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksUUFBUSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzNCLENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksS0FBSyxDQUNiLDhOQUE4TixDQUMvTixDQUFDO1FBQ0osQ0FBQztRQUNELDBDQUEwQztRQUMxQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFFdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNuQixNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDeEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsSUFBSSxJQUFJLENBQUM7WUFDakMsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsK0JBQStCO0lBQy9CLHdCQUF3QixDQUN0QixLQUFhLEVBQ2IsS0FBYTtRQUViLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQztRQUVqRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1AsMEVBQTBFO1FBQzFFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFaEQsaURBQWlEO1FBQ2pELElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN0RCxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELHFEQUFxRDtRQUNyRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRCxLQUFLLEdBQUcsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFcEQsc0NBQXNDO1FBQ3RDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQTJCLENBQUMsQ0FBQztRQUVoSCwwQ0FBMEM7UUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksS0FBSyxDQUNiLDhOQUE4TixDQUMvTixDQUFDO1FBQ0osQ0FBQztRQUNELDBDQUEwQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxTQUFTLElBQUksTUFBTSxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFFM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNuQixNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDeEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUM7WUFDL0IsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFDSCwyQ0FBMkM7UUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEtBQUssTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDcEcsQ0FBQztJQUNELHNCQUFzQjtRQUNwQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBRWYsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sUUFBUSxHQUFzQixFQUFFLENBQUM7UUFDdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN4RSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEIsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUM7WUFFdEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNWLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLFNBQVM7WUFDWCxDQUFDO1lBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBMkIsQ0FBQyxDQUFDO1lBQ3pHLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFDTyxtQkFBbUIsQ0FBQyxJQUFtQixFQUFFLE1BQWMsRUFBRSxNQUF3QjtRQUN2Rix1Q0FBdUM7UUFDdkMsSUFBSSxRQUFRLElBQUksTUFBTTtZQUFFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM3QywrREFBK0Q7UUFDL0QsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FDYiw2S0FBNkssQ0FDOUssQ0FBQztRQUNKLENBQUM7UUFDRCw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMvQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakgsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFdkIsbUNBQW1DO1FBQ25DLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFNUIsc0JBQXNCO1FBQ3RCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoRSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsSUFBSSxTQUFTLEtBQUssYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUMxQyxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QixDQUFDO1lBQ0QsSUFBSSxTQUFTLEtBQUssYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUMxQyxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QixDQUFDO1lBQ0QsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUNWLHVNQUF1TSxDQUN4TSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGVmZmVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvZXJjZUFycmF5UHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XHJcbmltcG9ydCB7IGlzQW55U3RyaW5nLCBpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc051bGwsIGlzTnVtYmVyLCBpc1JlZ0V4cCB9IGZyb20gJ3NpbXBsZS1ib29sJztcclxuaW1wb3J0IHtcclxuICBEaWdpdElucHV0QWNjZXB0T2JqZWN0LFxyXG4gIERpZ2l0SW5wdXRDb25maWcsXHJcbiAgRGlnaXRJbnB1dE9wdGlvbixcclxuICBEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uLFxyXG4gIFRyYW5zZm9ybVR5cGUsXHJcbn0gZnJvbSAnLi9kaWdpdC1pbnB1dC50eXBlcyc7XHJcbmltcG9ydCB7IERpZ2l0SW5wdXRDb25maWdEYXRhLCBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGUsIERpZ2l0SW5wdXRNb2RlbEhvc3QsIF9zYW5pdGl6ZVJlZ0V4cFN0cmluZyB9IGZyb20gJy4vZGlnaXQtaW5wdXQudXRpbHMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIERpZ2l0SW5wdXRNb2RlbCB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXJkSG9zdDogRGlnaXRJbnB1dE1vZGVsSG9zdCkge1xyXG4gICAgLy9zZXQgdGhlIHZhbHVlIGFycmF5IHRvIGJlIHRoZSBzYW1lIGxlbmd0aFxyXG4gICAgZWZmZWN0KFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29uZmlnQXJyID0gdGhpcy5jb25maWdBcnJheURhdGEoKTtcclxuICAgICAgICBjb25zdCBsZW5ndGggPSBjb25maWdBcnIubGVuZ3RoO1xyXG5cclxuICAgICAgICB0aGlzLnZhbHVlLnVwZGF0ZShhcnIgPT4ge1xyXG4gICAgICAgICAgaWYgKCFhcnIpIGFyciA9IFtdO1xyXG4gICAgICAgICAgY29uc3QgbmV3QXJyOiAoc3RyaW5nIHwgbnVsbClbXSA9IFtdO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyID0gYXJyW2ldO1xyXG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSBjb25maWdBcnJbaV07XHJcbiAgICAgICAgICAgIG5ld0Fyci5wdXNoKGNvbmZpZy50eXBlID09PSBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGUuU3RhdGljID8gY29uZmlnLmNoYXIhIDogY3VyciA/PyBudWxsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBuZXdBcnI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZ0FycmF5ID0gc2lnbmFsPERpZ2l0SW5wdXRPcHRpb25bXT4oW10pO1xyXG5cclxuICByZWFkb25seSBjb25maWdBcnJheURhdGEgPSBjb21wdXRlZDxEaWdpdElucHV0Q29uZmlnRGF0YVtdPigoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnQXJyYXkoKS5tYXAoKHYsIGkpID0+IHtcclxuICAgICAgaWYgKCdzdGF0aWMnIGluIHYpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgdHlwZTogRGlnaXRJbnB1dENvbmZpZ0RhdGFUeXBlLlN0YXRpYyxcclxuICAgICAgICAgIGNoYXI6IHYuc3RhdGljLFxyXG4gICAgICAgIH0gc2F0aXNmaWVzIERpZ2l0SW5wdXRDb25maWdEYXRhO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogRGlnaXRJbnB1dENvbmZpZ0RhdGFUeXBlLklucHV0LFxyXG4gICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgIHJlYWRvbmx5OiB2LnJlYWRvbmx5LFxyXG4gICAgICAgIHBsYWNlaG9sZGVyOiB2LnBsYWNlaG9sZGVyID8/ICcnLFxyXG4gICAgICB9IHNhdGlzZmllcyBEaWdpdElucHV0Q29uZmlnRGF0YTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBpc0NvbmZpZ0RlZmluZWQgPSBjb21wdXRlZCgoKTogYm9vbGVhbiA9PiB0aGlzLl9jb25maWdBcnJheSgpLmxlbmd0aCA+IDApO1xyXG5cclxuICByZWFkb25seSB2YWx1ZSA9IHNpZ25hbDwoc3RyaW5nIHwgbnVsbClbXSB8IG51bGw+KG51bGwpO1xyXG5cclxuICByZWFkb25seSBzdHJpbmdWYWx1ZSA9IGNvbXB1dGVkKFxyXG4gICAgKCk6IHN0cmluZyA9PlxyXG4gICAgICB0aGlzLnZhbHVlKClcclxuICAgICAgICA/Lm1hcCh2ID0+IHYgPz8gJyAnKVxyXG4gICAgICAgIC5qb2luKCcnKSA/PyAnJ1xyXG4gICk7XHJcblxyXG4gIHJlYWRvbmx5IGlzVmFsdWVGdWxsID0gY29tcHV0ZWQoKCk6IGJvb2xlYW4gPT4gdGhpcy52YWx1ZSgpPy5maWx0ZXIodiA9PiB2KS5sZW5ndGggPT09IHRoaXMuX2NvbmZpZ0FycmF5KCkubGVuZ3RoKTtcclxuXHJcbiAgaXNEZWZpbmVkQXRJbmRleChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLnZhbHVlKCk/LltpbmRleF07XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHY6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc29sZS5sb2coJ2V4ZWN1dGluZyBtb2RlbCB3cml0ZVZhbHVlJywgdiwgdGhpcy5fYXJkSG9zdC5vdXRwdXRBc1N0cmluZygpKTtcclxuICAgIGlmICh0aGlzLl9hcmRIb3N0Lm91dHB1dEFzU3RyaW5nKCkpIHtcclxuICAgICAgaWYgKCFpc0FueVN0cmluZyh2KSAmJiAhaXNOdWxsKHYpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgYEFSRC1GVDAwNDBiOiBUcnlpbmcgdG8gc2V0IDxhcmQtZGlnaXQtaW5wdXQ+J3MgdmFsdWUgdG8gXCIke3Z9XCIgKG9mIHR5cGUgJHt0eXBlb2Ygdn0pLCBidXQgdGhlIGlucHV0IHVzZXMgW291dHB1dEFzU3RyaW5nXT1cInRydWVcIiwgYW5kIHRodXMgZXhwZWN0cyBzdHJpbmcgb3IgbnVsbC5gXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2QXJyYXkgPSB2Py5zcGxpdCgnJykgPz8gW107XHJcbiAgICAgIGNvbnNvbGUubG9nKCdleGVjdXRpbmcgbW9kZWwgd3JpdGVWYWx1ZSAtIHZBcnJheScsIHZBcnJheSwgdGhpcy5fY29uZmlnQXJyYXkoKSk7XHJcblxyXG4gICAgICBpZiAodkFycmF5Lmxlbmd0aCA+IHRoaXMuX2NvbmZpZ0FycmF5KCkubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgYEFSRC1XQTAwNDE6IFZhbHVlIHByb3ZpZGVkIHRvIDxhcmQtZGlnaXQtaW5wdXQ+IGlzIHRvbyBsb25nLiBHb3QgJHtcclxuICAgICAgICAgICAgdkFycmF5Lmxlbmd0aFxyXG4gICAgICAgICAgfSBjaGFyYWN0ZXJzLCBidXQgZXhwZWN0ZWQgYSBtYXhpbXVtIG9mICR7dGhpcy5fY29uZmlnQXJyYXkoKS5sZW5ndGh9IGNoYXJhY3RlcnMuYFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuX3dyaXRlVmFsdWUodkFycmF5KTtcclxuICAgIH1cclxuICAgIGlmICghaXNBbnlTdHJpbmcodikgJiYgIWlzTnVsbCh2KSAmJiAhaXNBcnJheSh2KSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgYEFSRC1GVDAwNDE6IFRyeWluZyB0byBzZXQgPGFyZC1kaWdpdC1pbnB1dD4ncyB2YWx1ZSB0byBcIiR7dn1cIiAob2YgdHlwZSAke3R5cGVvZiB2fSksIGV4cGVjdGVkIHN0cmluZyBvciBhcnJheSBvZiBjaGFyYWN0ZXJzLmBcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHZBcnJheSA9IGNvZXJjZUFycmF5UHJvcGVydHkodik7XHJcblxyXG4gICAgaWYgKHZBcnJheS5sZW5ndGggPiB0aGlzLl9jb25maWdBcnJheSgpLmxlbmd0aCkge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgYEFSRC1XQTAwNDE6IFZhbHVlIHByb3ZpZGVkIHRvIDxhcmQtZGlnaXQtaW5wdXQ+IGlzIHRvbyBsb25nLiBHb3QgJHtcclxuICAgICAgICAgIHZBcnJheS5sZW5ndGhcclxuICAgICAgICB9IGNoYXJhY3RlcnMsIGJ1dCBleHBlY3RlZCBhIG1heGltdW0gb2YgJHt0aGlzLl9jb25maWdBcnJheSgpLmxlbmd0aH0gY2hhcmFjdGVycy5gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwcm9ibGVtSW5kZXggPSB2QXJyYXkuZmluZEluZGV4KGVsID0+ICFpc0FueVN0cmluZyhlbCkgfHwgZWwubGVuZ3RoID4gMSk7XHJcbiAgICBpZiAocHJvYmxlbUluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgYEFSRC1GVDAwNDI6IEFycmF5IHBhc3NlZCB0byA8YXJkLWRpZ2l0LWlucHV0PidzIHZhbHVlIG11c3Qgb25seSBjb250YWluIHN0cmluZ3Mgb2YgbGVuZ3RoIDEgb3IgMC4gRWxlbWVudCBcIiR7dkFycmF5W3Byb2JsZW1JbmRleF19XCIgYXQgaW5kZXggJHtwcm9ibGVtSW5kZXh9IGRvZXMgbm90IG1hdGNoIHRob3NlIHJlcXVpcmVtZW50cy5gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fd3JpdGVWYWx1ZSh2QXJyYXkpO1xyXG4gIH1cclxuICBwcml2YXRlIF93cml0ZVZhbHVlKHY6IHN0cmluZ1tdIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaXNPbGRWYWx1ZVRoZVNhbWUgPSB0aGlzLnZhbHVlKCk/Lmxlbmd0aCA/IHRoaXMudmFsdWUoKSEuZXZlcnkoKGNoLCBpKSA9PiBjaCA9PT0gdj8uW2ldKSA6ICF2Py5sZW5ndGg7XHJcbiAgICBjb25zb2xlLmxvZygnZXhlY3V0aW5nIG1vZGVsIF93cml0ZVZhbHVlJywgdiwgJ2N1cnJlbnQgdmFsdWUnLCB0aGlzLnZhbHVlKCksIGlzT2xkVmFsdWVUaGVTYW1lKTtcclxuICAgIGlmIChpc09sZFZhbHVlVGhlU2FtZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgdGhpcy52YWx1ZS5zZXQodiAmJiB2Lm1hcChlbCA9PiBlbCB8fCBudWxsKSk7XHJcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWVBbmRVcGRhdGUoKTtcclxuICAgIHRoaXMuX3VwZGF0ZUlucHV0RWxlbWVudHMoKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlSW5wdXRFbGVtZW50cygpIHtcclxuICAgIGNvbnN0IHYgPSB0aGlzLnZhbHVlKCkgPz8gW107XHJcbiAgICBsZXQgaSA9IDA7XHJcbiAgICBmb3IgKGNvbnN0IGlucHV0RWwgb2YgdGhpcy5fYXJkSG9zdC5pbnB1dHMoKSkge1xyXG4gICAgICBpbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2W2ldID8/ICcnO1xyXG4gICAgICBpKys7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyEgc2V0dGluZyBjb25maWdcclxuICBzZXRDb25maWcoY29uZmlnOiBEaWdpdElucHV0Q29uZmlnKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZXRDb25maWcoY29uZmlnKTtcclxuICAgIHRoaXMudmFsaWRhdGVWYWx1ZUFuZFVwZGF0ZSgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9zZXRDb25maWcoY29uZmlnOiBEaWdpdElucHV0Q29uZmlnKTogdm9pZCB7XHJcbiAgICAvL21hcCBhIG51bWJlciB0byByZWFkeSBvYmplY3RzXHJcbiAgICBsZXQgY29uZmlnQXNOdW1iZXIgPSBpc0FueVN0cmluZyhjb25maWcpID8gTnVtYmVyKGNvbmZpZykgOiBudWxsO1xyXG4gICAgaWYgKGlzTnVtYmVyKGNvbmZpZykgfHwgaXNOdW1iZXIoY29uZmlnQXNOdW1iZXIpKSB7XHJcbiAgICAgIGNvbmZpZ0FzTnVtYmVyID0gaXNOdW1iZXIoY29uZmlnKSA/IGNvbmZpZyA6IGNvbmZpZ0FzTnVtYmVyITtcclxuICAgICAgdGhpcy5fY29uZmlnQXJyYXkuc2V0KG5ldyBBcnJheShjb25maWdBc051bWJlcikuZmlsbCh7IGFjY2VwdDogKHN0cjogc3RyaW5nKSA9PiAvWzAtOV0vLnRlc3Qoc3RyKSB9KSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vbWFwIGEgc3RyaW5nIHRvIGFuIGFycmF5XHJcbiAgICBsZXQgY29uZmlnQXJyOiBzdHJpbmdbXSB8IEV4Y2x1ZGU8RGlnaXRJbnB1dENvbmZpZywgbnVtYmVyIHwgc3RyaW5nPjtcclxuICAgIGlmIChpc0FueVN0cmluZyhjb25maWcpKSB7XHJcbiAgICAgIGNvbmZpZ0FyciA9IGNvZXJjZUFycmF5UHJvcGVydHkoY29uZmlnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbmZpZ0FyciA9IGNvbmZpZztcclxuICAgIH1cclxuICAgIC8vbWFwIGFycmF5IHRvIHJlYWR5IG9iamVjdHNcclxuICAgIHRoaXMuX2NvbmZpZ0FycmF5LnNldChcclxuICAgICAgY29uZmlnQXJyLm1hcCgodiwgaSkgPT4ge1xyXG4gICAgICAgIGlmICghaXNBbnlTdHJpbmcodikpIHtcclxuICAgICAgICAgIGlmICgnYWNjZXB0JyBpbiB2ICYmICFpc0Z1bmN0aW9uKHYuYWNjZXB0KSkge1xyXG4gICAgICAgICAgICBjb25zdCByZWdFeHAgPSBpc1JlZ0V4cCh2LmFjY2VwdCkgPyB2LmFjY2VwdCA6IG5ldyBSZWdFeHAoYFske19zYW5pdGl6ZVJlZ0V4cFN0cmluZyh2LmFjY2VwdCl9XWApO1xyXG4gICAgICAgICAgICB2LmFjY2VwdCA9IHN0ciA9PiByZWdFeHAudGVzdChzdHIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHY7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzd2l0Y2ggKHYpIHtcclxuICAgICAgICAgIGNhc2UgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbi5OdW1iZXI6XHJcbiAgICAgICAgICAgIHJldHVybiB7IGFjY2VwdDogc3RyID0+IC9bMC05XS8udGVzdChzdHIpIH07XHJcbiAgICAgICAgICBjYXNlIERpZ2l0SW5wdXRQcmltaXRpdmVPcHRpb24uTGV0dGVyOlxyXG4gICAgICAgICAgICByZXR1cm4geyBhY2NlcHQ6IHN0ciA9PiAvW2EtekEtWl0vLnRlc3Qoc3RyKSB9O1xyXG4gICAgICAgICAgY2FzZSBEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uLkFscGhhbnVtZXJpYzpcclxuICAgICAgICAgICAgcmV0dXJuIHsgYWNjZXB0OiBzdHIgPT4gL1swLTlhLXpBLVpdLy50ZXN0KHN0cikgfTtcclxuICAgICAgICAgIGNhc2UgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbi5TcGVjaWFsOlxyXG4gICAgICAgICAgICByZXR1cm4geyBhY2NlcHQ6IHN0ciA9PiAvWyFAIyQlXiYqLV89Ky9cXFxcLixdLy50ZXN0KHN0cikgfTtcclxuXHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBpZiAoY29uZmlnQXJyLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQVJELU5GMDA0M1M6IDxhcmQtZGlnaXQtaW5wdXQ+J3MgY29uZmlnIGlzIGludmFsaWQuIEV4cGVjdGVkIG51bWJlciBvciBhcnJheSwgZ290IFwiJHt2fVwiYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBUkQtTkYwMDQzQjogRm91bmQgaW52YWxpZCBzdHJpbmcgXCIke3Z9XCIgaW4gPGFyZC1kaWdpdC1pbnB1dD4ncyBjb25maWcgYXQgaW5kZXggJHtpfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZXNldElucHV0VmFsdWUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IHRoaXMuX2NvbmZpZ0FycmF5KCkubGVuZ3RoKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5fY29uZmlnQXJyYXkoKVtpbmRleF0gYXMgRGlnaXRJbnB1dE9wdGlvbjtcclxuICAgIGxldCBuZXdWYWx1ZSA9ICcnO1xyXG4gICAgaWYgKCdzdGF0aWMnIGluIGNvbmZpZykge1xyXG4gICAgICBuZXdWYWx1ZSA9IGNvbmZpZy5zdGF0aWM7XHJcbiAgICB9XHJcblxyXG4gICAgLy9nZXQgdGhlIGNvcnJlc3BvbmRpbmcgSFRNTCBpbnB1dCBlbGVtZW50XHJcbiAgICBjb25zdCBpbnB1dEVsID0gdGhpcy5fYXJkSG9zdC5pbnB1dHMoKVtpbmRleF07XHJcbiAgICBpZiAoIWlucHV0RWwpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgIFwiQVJELUlTMDA0ODogPGFyZC1kaWdpdC1pbnB1dD4ncyB2YWx1ZSBjaGFuZ2VkLCBidXQgaXRzIGNvcnJlc3BvbmRpbmcgaW5wdXQgZWxlbWVudCBjb3VsZCBub3QgYmUgZm91bmQuIElmIHlvdSBhcmUgcmVhZGluZyB0aGlzLCB5b3UgcHJvYmFibHkgZXhwZXJpZW5jZWQgYSBwcm9ibGVtIHdpdGggQXJkaXVtIFVJLiBQbGVhc2UgcmVwb3J0IHRoaXMgaXNzdWUgdG8gdGhlIGNyZWF0b3JzLlwiXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICAvL3VwZGF0ZSB0aGUgaW5wdXQgZWxlbWVudCBhbmQgdmFsdWUgYXJyYXlcclxuICAgIGlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IG5ld1ZhbHVlO1xyXG5cclxuICAgIHRoaXMudmFsdWUudXBkYXRlKGFyciA9PiB7XHJcbiAgICAgIGlmICghYXJyKSBhcnIgPSBbXTtcclxuICAgICAgY29uc3QgbmV3QXJyID0gWy4uLmFycl07XHJcbiAgICAgIG5ld0FycltpbmRleF0gPSBuZXdWYWx1ZSB8fCBudWxsO1xyXG4gICAgICByZXR1cm4gbmV3QXJyO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyEgdmFsaWRhdGUgYWdhaW5zdCB0aGUgY29uZmlnXHJcbiAgdmFsaWRhdGVJbnB1dEFuZFNldFZhbHVlKFxyXG4gICAgaW5wdXQ6IHN0cmluZyxcclxuICAgIGluZGV4OiBudW1iZXJcclxuICApOiBudWxsIHwgeyB3YXNDaGFuZ2VkOiBib29sZWFuOyB3YXNWYWxpZENoYXI6IGJvb2xlYW47IHJlc3VsdENoYXI6IHN0cmluZyB8IG51bGwgfSB7XHJcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gdGhpcy5fY29uZmlnQXJyYXkoKS5sZW5ndGgpIHJldHVybiBudWxsO1xyXG5cclxuICAgIGxldCB2ID0gdGhpcy52YWx1ZSgpO1xyXG4gICAgLy9wcmVwYXJlIHRoZSB2YWx1ZSBhcnJheSBpZiBkb2VzIG5vdCBleGlzdFxyXG4gICAgaWYgKCF2KSB7XHJcbiAgICAgIHRoaXMudmFsdWUuc2V0KFtdKTtcclxuICAgIH1cclxuICAgIHYgPSBbXTtcclxuICAgIC8vcHJlcGFyZSB0aGUgY2hhcmFjdGVycyBiZWZvcmUgdGhlIGN1cnJlbnQgb25lICh0byBiZSB1c2VkIGluIHZhbGlkYXRpb24pXHJcbiAgICBjb25zdCBiZWZvcmUgPSB0aGlzLnN0cmluZ1ZhbHVlKCkuY2hhckF0KGluZGV4KTtcclxuXHJcbiAgICAvL3JlbW92ZSB0aGUgb2xkIGNoYXJhY3RlciBmcm9tIHRoZSBpbnB1dCBlbGVtZW50XHJcbiAgICBpZiAoYmVmb3JlICYmIGlucHV0Lmxlbmd0aCA+IDEgJiYgaW5wdXQubWF0Y2goYmVmb3JlKSkge1xyXG4gICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoYmVmb3JlLCAnJyk7XHJcbiAgICB9XHJcbiAgICAvL3VzZSBvbmx5IHRoZSBmaXJzdCBvciBsYXN0IGNoYXJhY3RlciAoZXJyb3Igc2FmZXR5KVxyXG4gICAgY29uc3QgZmlyc3RDaGFyID0gaW5wdXQuY2hhckF0KDApO1xyXG4gICAgY29uc3QgbGFzdENoYXIgPSBpbnB1dC5jaGFyQXQoaW5wdXQubGVuZ3RoIC0gMSk7XHJcbiAgICBpbnB1dCA9IGZpcnN0Q2hhciA9PT0gYmVmb3JlID8gbGFzdENoYXIgOiBmaXJzdENoYXI7XHJcblxyXG4gICAgLy92YWxpZGF0ZSBhbmQgdHJhbnNmb3JtLCBpZiBuZWNlc3NhcnlcclxuICAgIGNvbnN0IGlucHV0Q2hhciA9IHRoaXMuX3ZhbGlkYXRlU2luZ2xlQ2hhcihpbnB1dCwgYmVmb3JlLCB0aGlzLl9jb25maWdBcnJheSgpW2luZGV4XSBhcyBEaWdpdElucHV0QWNjZXB0T2JqZWN0KTtcclxuXHJcbiAgICAvL2dldCB0aGUgY29ycmVzcG9uZGluZyBIVE1MIGlucHV0IGVsZW1lbnRcclxuICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLl9hcmRIb3N0LmlucHV0cygpW2luZGV4XTtcclxuICAgIGlmICghaW5wdXRFbCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgXCJBUkQtSVMwMDQ4OiA8YXJkLWRpZ2l0LWlucHV0PidzIHZhbHVlIGNoYW5nZWQsIGJ1dCBpdHMgY29ycmVzcG9uZGluZyBpbnB1dCBlbGVtZW50IGNvdWxkIG5vdCBiZSBmb3VuZC4gSWYgeW91IGFyZSByZWFkaW5nIHRoaXMsIHlvdSBwcm9iYWJseSBleHBlcmllbmNlZCBhIHByb2JsZW0gd2l0aCBBcmRpdW0gVUkuIFBsZWFzZSByZXBvcnQgdGhpcyBpc3N1ZSB0byB0aGUgY3JlYXRvcnMuXCJcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIC8vdXBkYXRlIHRoZSBpbnB1dCBlbGVtZW50IGFuZCB2YWx1ZSBhcnJheVxyXG4gICAgY29uc3QgbmV3VmFsID0gaW5wdXRDaGFyID8/IGJlZm9yZTtcclxuICAgIGlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IG5ld1ZhbCA/PyAnJztcclxuXHJcbiAgICB0aGlzLnZhbHVlLnVwZGF0ZShhcnIgPT4ge1xyXG4gICAgICBpZiAoIWFycikgYXJyID0gW107XHJcbiAgICAgIGNvbnN0IG5ld0FyciA9IFsuLi5hcnJdO1xyXG4gICAgICBuZXdBcnJbaW5kZXhdID0gbmV3VmFsIHx8IG51bGw7XHJcbiAgICAgIHJldHVybiBuZXdBcnI7XHJcbiAgICB9KTtcclxuICAgIC8vcmV0dXJuIGNoYW5nZXMgbWFya2VyIGFuZCB2YWxpZGF0ZWQgdmFsdWVcclxuICAgIHJldHVybiB7IHdhc0NoYW5nZWQ6IG5ld1ZhbCAhPT0gYmVmb3JlLCB3YXNWYWxpZENoYXI6ICFpc051bGwoaW5wdXRDaGFyKSwgcmVzdWx0Q2hhcjogaW5wdXRDaGFyIH07XHJcbiAgfVxyXG4gIHZhbGlkYXRlVmFsdWVBbmRVcGRhdGUoKTogdm9pZCB7XHJcbiAgICBjb25zdCB2ID0gdGhpcy52YWx1ZSgpO1xyXG4gICAgaWYgKCF2KSByZXR1cm47XHJcblxyXG4gICAgbGV0IGJlZm9yZSA9ICcnO1xyXG4gICAgY29uc3QgbmV3VmFsdWU6IChzdHJpbmcgfCBudWxsKVtdID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWluKHRoaXMuX2NvbmZpZ0FycmF5KCkubGVuZ3RoLCB2Lmxlbmd0aCk7IGkrKykge1xyXG4gICAgICBjb25zdCBjaGFyID0gdltpXTtcclxuICAgICAgYmVmb3JlICs9IGNoYXIgPz8gJyAnO1xyXG5cclxuICAgICAgaWYgKCFjaGFyKSB7XHJcbiAgICAgICAgbmV3VmFsdWUucHVzaChjaGFyKTtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBuZXdDaGFyID0gdGhpcy5fdmFsaWRhdGVTaW5nbGVDaGFyKGNoYXIsIGJlZm9yZSwgdGhpcy5fY29uZmlnQXJyYXkoKVtpXSBhcyBEaWdpdElucHV0QWNjZXB0T2JqZWN0KTtcclxuICAgICAgbmV3VmFsdWUucHVzaChuZXdDaGFyKTtcclxuICAgIH1cclxuICAgIHRoaXMudmFsdWUuc2V0KG5ld1ZhbHVlKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdmFsaWRhdGVTaW5nbGVDaGFyKGNoYXI6IHN0cmluZyB8IG51bGwsIGJlZm9yZTogc3RyaW5nLCBjb25maWc6IERpZ2l0SW5wdXRPcHRpb24pOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIC8vIHJldHVybiB0aGUgY2hhcmFjdGVyIGlmIGl0IGlzIHN0YXRpY1xyXG4gICAgaWYgKCdzdGF0aWMnIGluIGNvbmZpZykgcmV0dXJuIGNvbmZpZy5zdGF0aWM7XHJcbiAgICAvLyBmb3IgcGVhY2Ugb2YgbWluZCBwcm90ZWN0IGFnYWluc3QgbW9kaWZ5aW5nIHJlYWQtb25seSBmaWVsZHNcclxuICAgIGlmIChjb25maWcucmVhZG9ubHkpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgIGBBUkQtSVMwMDQ5UjogdHJ5aW5nIHRvIHNldCB2YWx1ZSBvZiBhIDxhcmQtZGlnaXQtaW5wdXQ+J3MgcmVhZG9ubHkgZmllbGQuIFRoaXMgaXMgZXJyb3IgaXMgZmF0YWwgdG8gdGhlIGZ1bmN0aW9uaW5nIG9mIEFyZGl1bSBVSS4gUGxlYXNlIHJlcG9ydCB0aGlzIGlzc3VlIHRvIHRoZSBjcmVhdG9ycy5gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICAvLyBwcm9jZXNzIHJlZ2V4IG9yIGNvbnZlcnQgc3RyaW5nIGludG8gcmVnZXhcclxuICAgIGlmICghaXNGdW5jdGlvbihjb25maWcuYWNjZXB0KSkge1xyXG4gICAgICBjb25zdCByZWdFeHAgPSBpc1JlZ0V4cChjb25maWcuYWNjZXB0KSA/IGNvbmZpZy5hY2NlcHQgOiBuZXcgUmVnRXhwKGBbJHtfc2FuaXRpemVSZWdFeHBTdHJpbmcoY29uZmlnLmFjY2VwdCl9XWApO1xyXG4gICAgICBjb25maWcuYWNjZXB0ID0gc3RyID0+IHJlZ0V4cC50ZXN0KHN0cik7XHJcbiAgICB9XHJcbiAgICBpZiAoIWNoYXIpIHJldHVybiBjaGFyO1xyXG5cclxuICAgIC8vIGNoZWNrIGlmIGlucHV0IGZpdHMgdGhlIGNyaXRlcmlhXHJcbiAgICBjb25zdCBjYW5BY2NlcHQgPSBjb25maWcuYWNjZXB0KGNoYXIsIGJlZm9yZSk7XHJcbiAgICBpZiAoIWNhbkFjY2VwdCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgLy8gdHJhbnNmb3JtIGlmIG5lZWRlZFxyXG4gICAgY29uc3QgdHJhbnNmb3JtID0gY29uZmlnLnRyYW5zZm9ybSA/PyB0aGlzLl9hcmRIb3N0LnRyYW5zZm9ybSgpO1xyXG4gICAgaWYgKHRyYW5zZm9ybSkge1xyXG4gICAgICBpZiAodHJhbnNmb3JtID09PSBUcmFuc2Zvcm1UeXBlLkxvd2VyY2FzZSkge1xyXG4gICAgICAgIHJldHVybiBjaGFyLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRyYW5zZm9ybSA9PT0gVHJhbnNmb3JtVHlwZS5VcHBlcmNhc2UpIHtcclxuICAgICAgICByZXR1cm4gY2hhci50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpc0Z1bmN0aW9uKHRyYW5zZm9ybSkpIHtcclxuICAgICAgICByZXR1cm4gdHJhbnNmb3JtKGNoYXIpLmNoYXJBdCgwKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgYEFSRC1JUzAwNDlUOiA8YXJkLWRpZ2l0LWlucHV0PidzIHZhbHVlIHZhbGlkYXRvciBlbmNvdW50ZXJlZCBhbiB1bmV4cGVjdGVkIHZhbHVlIG9mIHRoZSBjb25maWcncyBcInRyYW5zZm9ybVwiIHByb3BlcnR5LiBBcmRpdW0gVUkgd2FzIGFibGUgdG8gaGFuZGxlIHRoaXMgaXNzdWUsIGJ1dCBwbGVhc2UgcmVwb3J0IGl0IHRvIHRoZSBjcmVhdG9ycy5gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2hhcjtcclxuICB9XHJcbn1cclxuIl19
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNGLE9BQU8sRUFJTCx5QkFBeUIsRUFDekIsYUFBYSxHQUNkLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUF3Qix3QkFBd0IsRUFBdUIscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqSSxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixRQUE2QjtRQUE3QixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQXFCaEMsaUJBQVksR0FBRyxNQUFNLENBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBRXRELG9CQUFlLEdBQUcsUUFBUSxDQUF5QixHQUFHLEVBQUU7WUFDL0QsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDbEIsT0FBTzt3QkFDTCxJQUFJLEVBQUUsd0JBQXdCLENBQUMsTUFBTTt3QkFDckMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNO3FCQUNnQixDQUFDO2dCQUNuQyxDQUFDO2dCQUNELE9BQU87b0JBQ0wsSUFBSSxFQUFFLHdCQUF3QixDQUFDLEtBQUs7b0JBQ3BDLEtB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QUFDO1lBQ0QsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUNWLHVNQUF1TSxDQUN4TSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGVmZmVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvZXJjZUFycmF5UHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XHJcbmltcG9ydCB7IGlzQW55U3RyaW5nLCBpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc051bGwsIGlzTnVtYmVyLCBpc1JlZ0V4cCB9IGZyb20gJ3NpbXBsZS1ib29sJztcclxuaW1wb3J0IHtcclxuICBEaWdpdElucHV0QWNjZXB0T2JqZWN0LFxyXG4gIERpZ2l0SW5wdXRDb25maWcsXHJcbiAgRGlnaXRJbnB1dE9wdGlvbixcclxuICBEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uLFxyXG4gIFRyYW5zZm9ybVR5cGUsXHJcbn0gZnJvbSAnLi9kaWdpdC1pbnB1dC50eXBlcyc7XHJcbmltcG9ydCB7IERpZ2l0SW5wdXRDb25maWdEYXRhLCBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGUsIERpZ2l0SW5wdXRNb2RlbEhvc3QsIF9zYW5pdGl6ZVJlZ0V4cFN0cmluZyB9IGZyb20gJy4vZGlnaXQtaW5wdXQudXRpbHMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIERpZ2l0SW5wdXRNb2RlbCB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXJkSG9zdDogRGlnaXRJbnB1dE1vZGVsSG9zdCkge1xyXG4gICAgLy9zZXQgdGhlIHZhbHVlIGFycmF5IHRvIGJlIHRoZSBzYW1lIGxlbmd0aFxyXG4gICAgZWZmZWN0KFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29uZmlnQXJyID0gdGhpcy5jb25maWdBcnJheURhdGEoKTtcclxuXHJcbiAgICAgICAgdGhpcy52YWx1ZS51cGRhdGUoYXJyID0+IHtcclxuICAgICAgICAgIGlmICghYXJyKSBhcnIgPSBbXTtcclxuICAgICAgICAgIGNvbnN0IG5ld0FycjogKHN0cmluZyB8IG51bGwpW10gPSBbXTtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnIgPSBhcnJbaV07XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IGNvbmZpZ0FycltpXTtcclxuICAgICAgICAgICAgbmV3QXJyLnB1c2goY29uZmlnLnR5cGUgPT09IERpZ2l0SW5wdXRDb25maWdEYXRhVHlwZS5TdGF0aWMgPyBudWxsIDogY3VyciA/PyBudWxsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBuZXdBcnI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZ0FycmF5ID0gc2lnbmFsPERpZ2l0SW5wdXRPcHRpb25bXT4oW10pO1xyXG5cclxuICByZWFkb25seSBjb25maWdBcnJheURhdGEgPSBjb21wdXRlZDxEaWdpdElucHV0Q29uZmlnRGF0YVtdPigoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnQXJyYXkoKS5tYXAoKHYsIGkpID0+IHtcclxuICAgICAgaWYgKCdzdGF0aWMnIGluIHYpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgdHlwZTogRGlnaXRJbnB1dENvbmZpZ0RhdGFUeXBlLlN0YXRpYyxcclxuICAgICAgICAgIGNoYXI6IHYuc3RhdGljLFxyXG4gICAgICAgIH0gc2F0aXNmaWVzIERpZ2l0SW5wdXRDb25maWdEYXRhO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogRGlnaXRJbnB1dENvbmZpZ0RhdGFUeXBlLklucHV0LFxyXG4gICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgIHJlYWRvbmx5OiB2LnJlYWRvbmx5LFxyXG4gICAgICAgIHBsYWNlaG9sZGVyOiB2LnBsYWNlaG9sZGVyID8/ICcnLFxyXG4gICAgICB9IHNhdGlzZmllcyBEaWdpdElucHV0Q29uZmlnRGF0YTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBpc0NvbmZpZ0RlZmluZWQgPSBjb21wdXRlZCgoKTogYm9vbGVhbiA9PiB0aGlzLl9jb25maWdBcnJheSgpLmxlbmd0aCA+IDApO1xyXG5cclxuICByZWFkb25seSB2YWx1ZSA9IHNpZ25hbDwoc3RyaW5nIHwgbnVsbClbXSB8IG51bGw+KG51bGwpO1xyXG5cclxuICByZWFkb25seSB2YWx1ZVdpdGhTdGF0aWNzID0gY29tcHV0ZWQ8KHN0cmluZyB8IG51bGwpW10+KCgpID0+IHtcclxuICAgIGNvbnN0IGNvbmZpZ0FyciA9IHRoaXMuY29uZmlnQXJyYXlEYXRhKCk7XHJcbiAgICBjb25zdCBhcnIgPSB0aGlzLnZhbHVlKCkgPz8gW107XHJcblxyXG4gICAgY29uc3QgbmV3QXJyOiAoc3RyaW5nIHwgbnVsbClbXSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgY3VyciA9IGFycltpXTtcclxuICAgICAgY29uc3QgY29uZmlnID0gY29uZmlnQXJyW2ldO1xyXG4gICAgICBuZXdBcnIucHVzaChjb25maWcudHlwZSA9PT0gRGlnaXRJbnB1dENvbmZpZ0RhdGFUeXBlLlN0YXRpYyA/IGNvbmZpZy5jaGFyISA6IGN1cnIgPz8gbnVsbCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3QXJyO1xyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBzdHJpbmdWYWx1ZSA9IGNvbXB1dGVkKFxyXG4gICAgKCk6IHN0cmluZyA9PlxyXG4gICAgICB0aGlzLnZhbHVlV2l0aFN0YXRpY3MoKVxyXG4gICAgICAgID8ubWFwKHYgPT4gdiA/PyAnICcpXHJcbiAgICAgICAgLmpvaW4oJycpID8/ICcnXHJcbiAgKTtcclxuXHJcbiAgcmVhZG9ubHkgaXNWYWx1ZUZ1bGwgPSBjb21wdXRlZCgoKTogYm9vbGVhbiA9PiB0aGlzLnZhbHVlKCk/LmZpbHRlcih2ID0+IHYpLmxlbmd0aCA9PT0gdGhpcy5fY29uZmlnQXJyYXkoKS5sZW5ndGgpO1xyXG5cclxuICBpc0RlZmluZWRBdEluZGV4KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMudmFsdWUoKT8uW2luZGV4XTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodjogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5fYXJkSG9zdC5vdXRwdXRBc1N0cmluZygpKSB7XHJcbiAgICAgIGlmICghaXNBbnlTdHJpbmcodikgJiYgIWlzTnVsbCh2KSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBBUkQtRlQwMDQwYjogVHJ5aW5nIHRvIHNldCA8YXJkLWRpZ2l0LWlucHV0PidzIHZhbHVlIHRvIFwiJHt2fVwiIChvZiB0eXBlICR7dHlwZW9mIHZ9KSwgYnV0IHRoZSBpbnB1dCB1c2VzIFtvdXRwdXRBc1N0cmluZ109XCJ0cnVlXCIsIGFuZCB0aHVzIGV4cGVjdHMgc3RyaW5nIG9yIG51bGwuYFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdkFycmF5ID0gdj8uc3BsaXQoJycpID8/IFtdO1xyXG5cclxuICAgICAgaWYgKHZBcnJheS5sZW5ndGggPiB0aGlzLl9jb25maWdBcnJheSgpLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIGBBUkQtV0EwMDQxOiBWYWx1ZSBwcm92aWRlZCB0byA8YXJkLWRpZ2l0LWlucHV0PiBpcyB0b28gbG9uZy4gR290ICR7XHJcbiAgICAgICAgICAgIHZBcnJheS5sZW5ndGhcclxuICAgICAgICAgIH0gY2hhcmFjdGVycywgYnV0IGV4cGVjdGVkIGEgbWF4aW11bSBvZiAke3RoaXMuX2NvbmZpZ0FycmF5KCkubGVuZ3RofSBjaGFyYWN0ZXJzLmBcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLl93cml0ZVZhbHVlKHZBcnJheSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzQW55U3RyaW5nKHYpICYmICFpc051bGwodikgJiYgIWlzQXJyYXkodikpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgIGBBUkQtRlQwMDQxOiBUcnlpbmcgdG8gc2V0IDxhcmQtZGlnaXQtaW5wdXQ+J3MgdmFsdWUgdG8gXCIke3Z9XCIgKG9mIHR5cGUgJHt0eXBlb2Ygdn0pLCBleHBlY3RlZCBzdHJpbmcgb3IgYXJyYXkgb2YgY2hhcmFjdGVycy5gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB2QXJyYXkgPSBjb2VyY2VBcnJheVByb3BlcnR5KHYpO1xyXG5cclxuICAgIGlmICh2QXJyYXkubGVuZ3RoID4gdGhpcy5fY29uZmlnQXJyYXkoKS5sZW5ndGgpIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgIGBBUkQtV0EwMDQxOiBWYWx1ZSBwcm92aWRlZCB0byA8YXJkLWRpZ2l0LWlucHV0PiBpcyB0b28gbG9uZy4gR290ICR7XHJcbiAgICAgICAgICB2QXJyYXkubGVuZ3RoXHJcbiAgICAgICAgfSBjaGFyYWN0ZXJzLCBidXQgZXhwZWN0ZWQgYSBtYXhpbXVtIG9mICR7dGhpcy5fY29uZmlnQXJyYXkoKS5sZW5ndGh9IGNoYXJhY3RlcnMuYFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcHJvYmxlbUluZGV4ID0gdkFycmF5LmZpbmRJbmRleChlbCA9PiAhaXNBbnlTdHJpbmcoZWwpIHx8IGVsLmxlbmd0aCA+IDEpO1xyXG4gICAgaWYgKHByb2JsZW1JbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgIGBBUkQtRlQwMDQyOiBBcnJheSBwYXNzZWQgdG8gPGFyZC1kaWdpdC1pbnB1dD4ncyB2YWx1ZSBtdXN0IG9ubHkgY29udGFpbiBzdHJpbmdzIG9mIGxlbmd0aCAxIG9yIDAuIEVsZW1lbnQgXCIke3ZBcnJheVtwcm9ibGVtSW5kZXhdfVwiIGF0IGluZGV4ICR7cHJvYmxlbUluZGV4fSBkb2VzIG5vdCBtYXRjaCB0aG9zZSByZXF1aXJlbWVudHMuYFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX3dyaXRlVmFsdWUodkFycmF5KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfd3JpdGVWYWx1ZSh2OiBzdHJpbmdbXSB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGlzT2xkVmFsdWVUaGVTYW1lID0gdGhpcy52YWx1ZSgpPy5sZW5ndGggPyB0aGlzLnZhbHVlKCkhLmV2ZXJ5KChjaCwgaSkgPT4gY2ggPT09IHY/LltpXSkgOiAhdj8ubGVuZ3RoO1xyXG4gICAgaWYgKGlzT2xkVmFsdWVUaGVTYW1lKSByZXR1cm4gZmFsc2U7XHJcbiAgICB0aGlzLnZhbHVlLnNldCh2ICYmIHYubWFwKGVsID0+IGVsIHx8IG51bGwpKTtcclxuICAgIHRoaXMudmFsaWRhdGVWYWx1ZUFuZFVwZGF0ZSgpO1xyXG4gICAgdGhpcy5fdXBkYXRlSW5wdXRFbGVtZW50cygpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVJbnB1dEVsZW1lbnRzKCkge1xyXG4gICAgY29uc3QgdiA9IHRoaXMudmFsdWUoKSA/PyBbXTtcclxuICAgIGxldCBpID0gMDtcclxuICAgIGZvciAoY29uc3QgaW5wdXRFbCBvZiB0aGlzLl9hcmRIb3N0LmlucHV0cygpKSB7XHJcbiAgICAgIGlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZbaV0gPz8gJyc7XHJcbiAgICAgIGkrKztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vISBzZXR0aW5nIGNvbmZpZ1xyXG4gIHNldENvbmZpZyhjb25maWc6IERpZ2l0SW5wdXRDb25maWcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NldENvbmZpZyhjb25maWcpO1xyXG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlQW5kVXBkYXRlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NldENvbmZpZyhjb25maWc6IERpZ2l0SW5wdXRDb25maWcpOiB2b2lkIHtcclxuICAgIC8vbWFwIGEgbnVtYmVyIHRvIHJlYWR5IG9iamVjdHNcclxuICAgIGxldCBjb25maWdBc051bWJlciA9IGlzQW55U3RyaW5nKGNvbmZpZykgPyBOdW1iZXIoY29uZmlnKSA6IG51bGw7XHJcbiAgICBpZiAoaXNOdW1iZXIoY29uZmlnKSB8fCBpc051bWJlcihjb25maWdBc051bWJlcikpIHtcclxuICAgICAgY29uZmlnQXNOdW1iZXIgPSBpc051bWJlcihjb25maWcpID8gY29uZmlnIDogY29uZmlnQXNOdW1iZXIhO1xyXG4gICAgICB0aGlzLl9jb25maWdBcnJheS5zZXQobmV3IEFycmF5KGNvbmZpZ0FzTnVtYmVyKS5maWxsKHsgYWNjZXB0OiAoc3RyOiBzdHJpbmcpID0+IC9bMC05XS8udGVzdChzdHIpIH0pKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy9tYXAgYSBzdHJpbmcgdG8gYW4gYXJyYXlcclxuICAgIGxldCBjb25maWdBcnI6IHN0cmluZ1tdIHwgRXhjbHVkZTxEaWdpdElucHV0Q29uZmlnLCBudW1iZXIgfCBzdHJpbmc+O1xyXG4gICAgaWYgKGlzQW55U3RyaW5nKGNvbmZpZykpIHtcclxuICAgICAgY29uZmlnQXJyID0gY29lcmNlQXJyYXlQcm9wZXJ0eShjb25maWcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uZmlnQXJyID0gY29uZmlnO1xyXG4gICAgfVxyXG4gICAgLy9tYXAgYXJyYXkgdG8gcmVhZHkgb2JqZWN0c1xyXG4gICAgdGhpcy5fY29uZmlnQXJyYXkuc2V0KFxyXG4gICAgICBjb25maWdBcnIubWFwKCh2LCBpKSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0FueVN0cmluZyh2KSkge1xyXG4gICAgICAgICAgaWYgKCdhY2NlcHQnIGluIHYgJiYgIWlzRnVuY3Rpb24odi5hY2NlcHQpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlZ0V4cCA9IGlzUmVnRXhwKHYuYWNjZXB0KSA/IHYuYWNjZXB0IDogbmV3IFJlZ0V4cChgWyR7X3Nhbml0aXplUmVnRXhwU3RyaW5nKHYuYWNjZXB0KX1dYCk7XHJcbiAgICAgICAgICAgIHYuYWNjZXB0ID0gc3RyID0+IHJlZ0V4cC50ZXN0KHN0cik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gdjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN3aXRjaCAodikge1xyXG4gICAgICAgICAgY2FzZSBEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uLk51bWJlcjpcclxuICAgICAgICAgICAgcmV0dXJuIHsgYWNjZXB0OiBzdHIgPT4gL1swLTldLy50ZXN0KHN0cikgfTtcclxuICAgICAgICAgIGNhc2UgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbi5MZXR0ZXI6XHJcbiAgICAgICAgICAgIHJldHVybiB7IGFjY2VwdDogc3RyID0+IC9bYS16QS1aXS8udGVzdChzdHIpIH07XHJcbiAgICAgICAgICBjYXNlIERpZ2l0SW5wdXRQcmltaXRpdmVPcHRpb24uQWxwaGFudW1lcmljOlxyXG4gICAgICAgICAgICByZXR1cm4geyBhY2NlcHQ6IHN0ciA9PiAvWzAtOWEtekEtWl0vLnRlc3Qoc3RyKSB9O1xyXG4gICAgICAgICAgY2FzZSBEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uLlNwZWNpYWw6XHJcbiAgICAgICAgICAgIHJldHVybiB7IGFjY2VwdDogc3RyID0+IC9bIUAjJCVeJiotXz0rL1xcXFwuLF0vLnRlc3Qoc3RyKSB9O1xyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmIChjb25maWdBcnIubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBUkQtTkYwMDQzUzogPGFyZC1kaWdpdC1pbnB1dD4ncyBjb25maWcgaXMgaW52YWxpZC4gRXhwZWN0ZWQgbnVtYmVyIG9yIGFycmF5LCBnb3QgXCIke3Z9XCJgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFSRC1ORjAwNDNCOiBGb3VuZCBpbnZhbGlkIHN0cmluZyBcIiR7dn1cIiBpbiA8YXJkLWRpZ2l0LWlucHV0PidzIGNvbmZpZyBhdCBpbmRleCAke2l9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJlc2V0SW5wdXRWYWx1ZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gdGhpcy5fY29uZmlnQXJyYXkoKS5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLl9jb25maWdBcnJheSgpW2luZGV4XSBhcyBEaWdpdElucHV0T3B0aW9uO1xyXG4gICAgbGV0IG5ld1ZhbHVlID0gJyc7XHJcbiAgICBpZiAoJ3N0YXRpYycgaW4gY29uZmlnKSB7XHJcbiAgICAgIG5ld1ZhbHVlID0gY29uZmlnLnN0YXRpYztcclxuICAgIH1cclxuXHJcbiAgICAvL2dldCB0aGUgY29ycmVzcG9uZGluZyBIVE1MIGlucHV0IGVsZW1lbnRcclxuICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLl9hcmRIb3N0LmlucHV0cygpW2luZGV4XTtcclxuICAgIGlmICghaW5wdXRFbCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgXCJBUkQtSVMwMDQ4OiA8YXJkLWRpZ2l0LWlucHV0PidzIHZhbHVlIGNoYW5nZWQsIGJ1dCBpdHMgY29ycmVzcG9uZGluZyBpbnB1dCBlbGVtZW50IGNvdWxkIG5vdCBiZSBmb3VuZC4gSWYgeW91IGFyZSByZWFkaW5nIHRoaXMsIHlvdSBwcm9iYWJseSBleHBlcmllbmNlZCBhIHByb2JsZW0gd2l0aCBBcmRpdW0gVUkuIFBsZWFzZSByZXBvcnQgdGhpcyBpc3N1ZSB0byB0aGUgY3JlYXRvcnMuXCJcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIC8vdXBkYXRlIHRoZSBpbnB1dCBlbGVtZW50IGFuZCB2YWx1ZSBhcnJheVxyXG4gICAgaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbmV3VmFsdWU7XHJcblxyXG4gICAgdGhpcy52YWx1ZS51cGRhdGUoYXJyID0+IHtcclxuICAgICAgaWYgKCFhcnIpIGFyciA9IFtdO1xyXG4gICAgICBjb25zdCBuZXdBcnIgPSBbLi4uYXJyXTtcclxuICAgICAgbmV3QXJyW2luZGV4XSA9IG5ld1ZhbHVlIHx8IG51bGw7XHJcbiAgICAgIHJldHVybiBuZXdBcnI7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vISB2YWxpZGF0ZSBhZ2FpbnN0IHRoZSBjb25maWdcclxuICB2YWxpZGF0ZUlucHV0QW5kU2V0VmFsdWUoXHJcbiAgICBpbnB1dDogc3RyaW5nLFxyXG4gICAgaW5kZXg6IG51bWJlclxyXG4gICk6IG51bGwgfCB7IHdhc0NoYW5nZWQ6IGJvb2xlYW47IHdhc1ZhbGlkQ2hhcjogYm9vbGVhbjsgcmVzdWx0Q2hhcjogc3RyaW5nIHwgbnVsbCB9IHtcclxuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPiB0aGlzLl9jb25maWdBcnJheSgpLmxlbmd0aCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgbGV0IHYgPSB0aGlzLnZhbHVlKCk7XHJcbiAgICAvL3ByZXBhcmUgdGhlIHZhbHVlIGFycmF5IGlmIGRvZXMgbm90IGV4aXN0XHJcbiAgICBpZiAoIXYpIHtcclxuICAgICAgdGhpcy52YWx1ZS5zZXQoW10pO1xyXG4gICAgfVxyXG4gICAgdiA9IFtdO1xyXG4gICAgLy9wcmVwYXJlIHRoZSBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgY3VycmVudCBvbmUgKHRvIGJlIHVzZWQgaW4gdmFsaWRhdGlvbilcclxuICAgIGNvbnN0IGJlZm9yZSA9IHRoaXMuc3RyaW5nVmFsdWUoKS5jaGFyQXQoaW5kZXgpO1xyXG5cclxuICAgIC8vcmVtb3ZlIHRoZSBvbGQgY2hhcmFjdGVyIGZyb20gdGhlIGlucHV0IGVsZW1lbnRcclxuICAgIGlmIChiZWZvcmUgJiYgaW5wdXQubGVuZ3RoID4gMSAmJiBpbnB1dC5tYXRjaChiZWZvcmUpKSB7XHJcbiAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShiZWZvcmUsICcnKTtcclxuICAgIH1cclxuICAgIC8vdXNlIG9ubHkgdGhlIGZpcnN0IG9yIGxhc3QgY2hhcmFjdGVyIChlcnJvciBzYWZldHkpXHJcbiAgICBjb25zdCBmaXJzdENoYXIgPSBpbnB1dC5jaGFyQXQoMCk7XHJcbiAgICBjb25zdCBsYXN0Q2hhciA9IGlucHV0LmNoYXJBdChpbnB1dC5sZW5ndGggLSAxKTtcclxuICAgIGlucHV0ID0gZmlyc3RDaGFyID09PSBiZWZvcmUgPyBsYXN0Q2hhciA6IGZpcnN0Q2hhcjtcclxuXHJcbiAgICAvL3ZhbGlkYXRlIGFuZCB0cmFuc2Zvcm0sIGlmIG5lY2Vzc2FyeVxyXG4gICAgY29uc3QgaW5wdXRDaGFyID0gdGhpcy5fdmFsaWRhdGVTaW5nbGVDaGFyKGlucHV0LCBiZWZvcmUsIHRoaXMuX2NvbmZpZ0FycmF5KClbaW5kZXhdIGFzIERpZ2l0SW5wdXRBY2NlcHRPYmplY3QpO1xyXG5cclxuICAgIC8vZ2V0IHRoZSBjb3JyZXNwb25kaW5nIEhUTUwgaW5wdXQgZWxlbWVudFxyXG4gICAgY29uc3QgaW5wdXRFbCA9IHRoaXMuX2FyZEhvc3QuaW5wdXRzKClbaW5kZXhdO1xyXG4gICAgaWYgKCFpbnB1dEVsKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICBcIkFSRC1JUzAwNDg6IDxhcmQtZGlnaXQtaW5wdXQ+J3MgdmFsdWUgY2hhbmdlZCwgYnV0IGl0cyBjb3JyZXNwb25kaW5nIGlucHV0IGVsZW1lbnQgY291bGQgbm90IGJlIGZvdW5kLiBJZiB5b3UgYXJlIHJlYWRpbmcgdGhpcywgeW91IHByb2JhYmx5IGV4cGVyaWVuY2VkIGEgcHJvYmxlbSB3aXRoIEFyZGl1bSBVSS4gUGxlYXNlIHJlcG9ydCB0aGlzIGlzc3VlIHRvIHRoZSBjcmVhdG9ycy5cIlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgLy91cGRhdGUgdGhlIGlucHV0IGVsZW1lbnQgYW5kIHZhbHVlIGFycmF5XHJcbiAgICBjb25zdCBuZXdWYWwgPSBpbnB1dENoYXIgPz8gYmVmb3JlO1xyXG4gICAgaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbmV3VmFsID8/ICcnO1xyXG5cclxuICAgIHRoaXMudmFsdWUudXBkYXRlKGFyciA9PiB7XHJcbiAgICAgIGlmICghYXJyKSBhcnIgPSBbXTtcclxuICAgICAgY29uc3QgbmV3QXJyID0gWy4uLmFycl07XHJcbiAgICAgIG5ld0FycltpbmRleF0gPSBuZXdWYWwgfHwgbnVsbDtcclxuICAgICAgcmV0dXJuIG5ld0FycjtcclxuICAgIH0pO1xyXG4gICAgLy9yZXR1cm4gY2hhbmdlcyBtYXJrZXIgYW5kIHZhbGlkYXRlZCB2YWx1ZVxyXG4gICAgcmV0dXJuIHsgd2FzQ2hhbmdlZDogbmV3VmFsICE9PSBiZWZvcmUsIHdhc1ZhbGlkQ2hhcjogIWlzTnVsbChpbnB1dENoYXIpLCByZXN1bHRDaGFyOiBpbnB1dENoYXIgfTtcclxuICB9XHJcbiAgdmFsaWRhdGVWYWx1ZUFuZFVwZGF0ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHYgPSB0aGlzLnZhbHVlKCk7XHJcbiAgICBpZiAoIXYpIHJldHVybjtcclxuXHJcbiAgICBsZXQgYmVmb3JlID0gJyc7XHJcbiAgICBjb25zdCBuZXdWYWx1ZTogKHN0cmluZyB8IG51bGwpW10gPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5taW4odGhpcy5fY29uZmlnQXJyYXkoKS5sZW5ndGgsIHYubGVuZ3RoKTsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGNoYXIgPSB2W2ldO1xyXG4gICAgICBiZWZvcmUgKz0gY2hhciA/PyAnICc7XHJcblxyXG4gICAgICBpZiAoIWNoYXIpIHtcclxuICAgICAgICBuZXdWYWx1ZS5wdXNoKGNoYXIpO1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IG5ld0NoYXIgPSB0aGlzLl92YWxpZGF0ZVNpbmdsZUNoYXIoY2hhciwgYmVmb3JlLCB0aGlzLl9jb25maWdBcnJheSgpW2ldIGFzIERpZ2l0SW5wdXRBY2NlcHRPYmplY3QpO1xyXG4gICAgICBuZXdWYWx1ZS5wdXNoKG5ld0NoYXIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy52YWx1ZS5zZXQobmV3VmFsdWUpO1xyXG4gIH1cclxuICBwcml2YXRlIF92YWxpZGF0ZVNpbmdsZUNoYXIoY2hhcjogc3RyaW5nIHwgbnVsbCwgYmVmb3JlOiBzdHJpbmcsIGNvbmZpZzogRGlnaXRJbnB1dE9wdGlvbik6IHN0cmluZyB8IG51bGwge1xyXG4gICAgLy8gcmV0dXJuIHRoZSBjaGFyYWN0ZXIgaWYgaXQgaXMgc3RhdGljXHJcbiAgICBpZiAoJ3N0YXRpYycgaW4gY29uZmlnKSByZXR1cm4gY29uZmlnLnN0YXRpYztcclxuICAgIC8vIGZvciBwZWFjZSBvZiBtaW5kIHByb3RlY3QgYWdhaW5zdCBtb2RpZnlpbmcgcmVhZC1vbmx5IGZpZWxkc1xyXG4gICAgaWYgKGNvbmZpZy5yZWFkb25seSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgYEFSRC1JUzAwNDlSOiB0cnlpbmcgdG8gc2V0IHZhbHVlIG9mIGEgPGFyZC1kaWdpdC1pbnB1dD4ncyByZWFkb25seSBmaWVsZC4gVGhpcyBpcyBlcnJvciBpcyBmYXRhbCB0byB0aGUgZnVuY3Rpb25pbmcgb2YgQXJkaXVtIFVJLiBQbGVhc2UgcmVwb3J0IHRoaXMgaXNzdWUgdG8gdGhlIGNyZWF0b3JzLmBcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIC8vIHByb2Nlc3MgcmVnZXggb3IgY29udmVydCBzdHJpbmcgaW50byByZWdleFxyXG4gICAgaWYgKCFpc0Z1bmN0aW9uKGNvbmZpZy5hY2NlcHQpKSB7XHJcbiAgICAgIGNvbnN0IHJlZ0V4cCA9IGlzUmVnRXhwKGNvbmZpZy5hY2NlcHQpID8gY29uZmlnLmFjY2VwdCA6IG5ldyBSZWdFeHAoYFske19zYW5pdGl6ZVJlZ0V4cFN0cmluZyhjb25maWcuYWNjZXB0KX1dYCk7XHJcbiAgICAgIGNvbmZpZy5hY2NlcHQgPSBzdHIgPT4gcmVnRXhwLnRlc3Qoc3RyKTtcclxuICAgIH1cclxuICAgIGlmICghY2hhcikgcmV0dXJuIGNoYXI7XHJcblxyXG4gICAgLy8gY2hlY2sgaWYgaW5wdXQgZml0cyB0aGUgY3JpdGVyaWFcclxuICAgIGNvbnN0IGNhbkFjY2VwdCA9IGNvbmZpZy5hY2NlcHQoY2hhciwgYmVmb3JlKTtcclxuICAgIGlmICghY2FuQWNjZXB0KSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAvLyB0cmFuc2Zvcm0gaWYgbmVlZGVkXHJcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBjb25maWcudHJhbnNmb3JtID8/IHRoaXMuX2FyZEhvc3QudHJhbnNmb3JtKCk7XHJcbiAgICBpZiAodHJhbnNmb3JtKSB7XHJcbiAgICAgIGlmICh0cmFuc2Zvcm0gPT09IFRyYW5zZm9ybVR5cGUuTG93ZXJjYXNlKSB7XHJcbiAgICAgICAgcmV0dXJuIGNoYXIudG9Mb3dlckNhc2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodHJhbnNmb3JtID09PSBUcmFuc2Zvcm1UeXBlLlVwcGVyY2FzZSkge1xyXG4gICAgICAgIHJldHVybiBjaGFyLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlzRnVuY3Rpb24odHJhbnNmb3JtKSkge1xyXG4gICAgICAgIHJldHVybiB0cmFuc2Zvcm0oY2hhcikuY2hhckF0KDApO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICBgQVJELUlTMDA0OVQ6IDxhcmQtZGlnaXQtaW5wdXQ+J3MgdmFsdWUgdmFsaWRhdG9yIGVuY291bnRlcmVkIGFuIHVuZXhwZWN0ZWQgdmFsdWUgb2YgdGhlIGNvbmZpZydzIFwidHJhbnNmb3JtXCIgcHJvcGVydHkuIEFyZGl1bSBVSSB3YXMgYWJsZSB0byBoYW5kbGUgdGhpcyBpc3N1ZSwgYnV0IHBsZWFzZSByZXBvcnQgaXQgdG8gdGhlIGNyZWF0b3JzLmBcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjaGFyO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -382,22 +382,32 @@ class DigitInputModel {
382
382
  });
383
383
  this.isConfigDefined = computed(() => this._configArray().length > 0);
384
384
  this.value = signal(null);
385
- this.stringValue = computed(() => this.value()
385
+ this.valueWithStatics = computed(() => {
386
+ const configArr = this.configArrayData();
387
+ const arr = this.value() ?? [];
388
+ const newArr = [];
389
+ for (let i = 0; i < configArr.length; i++) {
390
+ const curr = arr[i];
391
+ const config = configArr[i];
392
+ newArr.push(config.type === DigitInputConfigDataType.Static ? config.char : curr ?? null);
393
+ }
394
+ return newArr;
395
+ });
396
+ this.stringValue = computed(() => this.valueWithStatics()
386
397
  ?.map(v => v ?? ' ')
387
398
  .join('') ?? '');
388
399
  this.isValueFull = computed(() => this.value()?.filter(v => v).length === this._configArray().length);
389
400
  //set the value array to be the same length
390
401
  effect(() => {
391
402
  const configArr = this.configArrayData();
392
- const length = configArr.length;
393
403
  this.value.update(arr => {
394
404
  if (!arr)
395
405
  arr = [];
396
406
  const newArr = [];
397
- for (let i = 0; i < length; i++) {
407
+ for (let i = 0; i < configArr.length; i++) {
398
408
  const curr = arr[i];
399
409
  const config = configArr[i];
400
- newArr.push(config.type === DigitInputConfigDataType.Static ? config.char : curr ?? null);
410
+ newArr.push(config.type === DigitInputConfigDataType.Static ? null : curr ?? null);
401
411
  }
402
412
  return newArr;
403
413
  });
@@ -407,13 +417,11 @@ class DigitInputModel {
407
417
  return !!this.value()?.[index];
408
418
  }
409
419
  writeValue(v) {
410
- console.log('executing model writeValue', v, this._ardHost.outputAsString());
411
420
  if (this._ardHost.outputAsString()) {
412
421
  if (!isAnyString(v) && !isNull(v)) {
413
422
  throw new Error(`ARD-FT0040b: Trying to set <ard-digit-input>'s value to "${v}" (of type ${typeof v}), but the input uses [outputAsString]="true", and thus expects string or null.`);
414
423
  }
415
424
  const vArray = v?.split('') ?? [];
416
- console.log('executing model writeValue - vArray', vArray, this._configArray());
417
425
  if (vArray.length > this._configArray().length) {
418
426
  console.warn(`ARD-WA0041: Value provided to <ard-digit-input> is too long. Got ${vArray.length} characters, but expected a maximum of ${this._configArray().length} characters.`);
419
427
  }
@@ -434,7 +442,6 @@ class DigitInputModel {
434
442
  }
435
443
  _writeValue(v) {
436
444
  const isOldValueTheSame = this.value()?.length ? this.value().every((ch, i) => ch === v?.[i]) : !v?.length;
437
- console.log('executing model _writeValue', v, 'current value', this.value(), isOldValueTheSame);
438
445
  if (isOldValueTheSame)
439
446
  return false;
440
447
  this.value.set(v && v.map(el => el || null));
@@ -663,7 +670,7 @@ class ArdiumDigitInputComponent extends _FormFieldComponentBase {
663
670
  this.emittableValue = computed(() => {
664
671
  if (this.outputAsString())
665
672
  return this.model.stringValue();
666
- return this.model.value();
673
+ return this.model.valueWithStatics();
667
674
  });
668
675
  //! event emitters
669
676
  this.finishedValue = output();
@@ -715,17 +722,13 @@ class ArdiumDigitInputComponent extends _FormFieldComponentBase {
715
722
  return !this.model.isDefinedAtIndex(index);
716
723
  }
717
724
  writeValue(v) {
718
- console.log('writeValue', v, this._wasViewInit);
719
725
  if (!this._wasViewInit) {
720
726
  this._valueBeforeViewInit = v;
721
- console.log('returning from writeValue');
722
727
  return;
723
728
  }
724
- console.log('calling _writeValue with value', v);
725
729
  this._writeValue(v);
726
730
  }
727
731
  _writeValue(v) {
728
- console.log('_writeValue', v);
729
732
  return this.model.writeValue(v);
730
733
  }
731
734
  ngAfterViewInit() {