myrta-ui 13.0.12 → 13.0.14

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.
@@ -216,9 +216,7 @@ export class InputFileComponent {
216
216
  file: file
217
217
  };
218
218
  if (!this._checkForUpload(data)) {
219
- if (!this.autoUpload) {
220
- this.filesChanged.emit(this.files);
221
- }
219
+ this.filesChanged.emit(this.files);
222
220
  return;
223
221
  }
224
222
  const formData = this._createFormData();
@@ -254,9 +252,9 @@ export class InputFileComponent {
254
252
  if (data.execution) {
255
253
  data.execution.unsubscribe();
256
254
  }
255
+ // ВАЖНО: эмитим ВСЕ файлы, включая файлы с ошибками
257
256
  if (this.files.every(s => !s.uploading)) {
258
- const completedFiles = this.files.filter(s => !s.error);
259
- this.filesChanged.emit(completedFiles);
257
+ this.filesChanged.emit(this.files);
260
258
  }
261
259
  }
262
260
  }
@@ -291,7 +289,9 @@ export class InputFileComponent {
291
289
  data.uploading = false;
292
290
  return false;
293
291
  }
294
- if (this.allowedExtensions.length > 0 && !this.allowedExtensions.some(s => data.file && data.file.name.toLowerCase().endsWith(s.toLowerCase()))) {
292
+ if (this.allowedExtensions.length > 0 &&
293
+ data.file &&
294
+ !this.allowedExtensions.some(s => data.file.name.toLowerCase().endsWith(s.toLowerCase()))) {
295
295
  data.error = this.messageInvalidFileFormat;
296
296
  data.uploading = false;
297
297
  return false;
@@ -381,4 +381,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
381
381
  }], checkDroppedFile: [{
382
382
  type: Output
383
383
  }] } });
384
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1maWxlL2lucHV0LWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtZmlsZS9pbnB1dC1maWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMkIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRTdHLE9BQU8sRUFBYSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFFOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUF3Qix3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7O0FBT25GLE1BQU0sT0FBTyxrQkFBa0I7SUEyRTdCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBMUV4RCxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUUxQixzQkFBaUIsR0FBYSxFQUFFLENBQUM7UUFDakMsVUFBSyxHQUFxQixFQUFFLENBQUM7UUFFYixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFD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Z0JBR0YsU0FBUztzQkFEWixLQUFLO3VCQUFDLE9BQU87Z0JBY0gscUJBQXFCO3NCQUQvQixLQUFLO3VCQUFDLG1CQUFtQjtnQkFXVCxZQUFZO3NCQUE1QixNQUFNO2dCQUNVLGdCQUFnQjtzQkFBaEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmd4RmlsZURyb3BFbnRyeSB9IGZyb20gJ25neC1maWxlLWRyb3AnO1xyXG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBFdmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEVNUFRZIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBJbnB1dEZpbGVNb2RlbCwgVXBsb2FkZWRGaWxlTW9kZWwsIFVwbG9hZGVkUmVzdWx0TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvaW5wdXQtZmlsZS9pbnB1dC1maWxlLm1vZGVsJztcclxuaW1wb3J0IHsgZm9ybWF0Qnl0ZXMgfSBmcm9tICcuLi8uLi8uLi9oZWxwZXJzL2V4dGVuc2lvbi9pbnB1dC1maWxlLmV4dGVuc2lvbic7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuc2VydmljZSc7XHJcbmltcG9ydCB7IEVycm9yTWVzc2FnZXNFbnVtIH0gZnJvbSAnLi9lbnVtcy9lcnJvci1tZXNzYWdlcy5lbnVtJztcclxuaW1wb3J0IHsgSW5wdXRGaWxlVGFyZ2V0VHlwZXMsIElucHV0RmlsZVRhcmdldFR5cGVzRW51bSB9IGZyb20gJy4vaW5wdXQtZmlsZS5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWlucHV0LWZpbGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1maWxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1maWxlLmNvbXBvbmVudC5sZXNzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dEZpbGVDb21wb25lbnQge1xyXG4gIGZvcm1hdEJ5dGVzID0gZm9ybWF0Qnl0ZXM7XHJcbiAgZXh0ZW5zaW9ucz86IHN0cmluZztcclxuICBhbGxvd2VkRXh0ZW5zaW9uczogc3RyaW5nW10gPSBbXTtcclxuICBmaWxlczogSW5wdXRGaWxlTW9kZWxbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgYXV0b1VwbG9hZCA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIHJlcXVpcmVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHZpZXdPbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGJvdHRvbUZpbGVzID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIG1heFNpemUgPSAzMTQ1NzI4MDtcclxuICBASW5wdXQoKSBwdWJsaWMgbWF4RmlsZXMgPSA1O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5GaWxlcyA9IDA7XHJcbiAgQElucHV0KCkgcHVibGljIGZvcm1EYXRhOiBhbnkgPSB7fTsgLy8g0J/QsNGA0LDQvNC10YLRgNGLLCDQutC+0YLQvtGA0YvQtSDQsdGD0LTRg9GCINC/0LXRgNC10LTQsNCy0LDRgtGM0YHRjyDQsiDRhNC+0YDQvNC1XHJcbiAgQElucHV0KCkgcHVibGljIHVwbG9hZEVuZFBvaW50ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkZWxldGVFbmRQb2ludD86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgZG93bmxvYWRFbmRQb2ludD86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgZmlsZU5hbWVQbGFjZWhvbGRlcj86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgc2hvd0lucHV0V2l0aEVycm9yID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgc2hvd0RlbGV0ZUJ1dHRvbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIGlzVG9vbHRpcFZhbHVlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGlzRG93bmxvYWRpbmdGaWxlID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaXNIaWRlTGlzdEZpbGVzID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHRhcmdldDogSW5wdXRGaWxlVGFyZ2V0VHlwZXMgPSAnX3NlbGYnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkZWxldGVDb25maXJtPzogKGZpbGU6IFVwbG9hZGVkRmlsZU1vZGVsLCByZXN1bHQ6IChvazogYm9vbGVhbikgPT4gdm9pZCkgPT4gdm9pZDtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGlubmVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgdXBsb2FkQWRkaXRpb25hbERhdGE6IGFueSA9IHt9O1xyXG5cclxuICAvLyBFUlJPUlxyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWRNZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjaGVja0ludmFsaWQ6IHRydWUgfCBmYWxzZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyBFUlJPUiBNRVNTQUdFU1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtZXNzYWdlVG9vTWFueUZpbGVzOiBzdHJpbmcgPSBFcnJvck1lc3NhZ2VzRW51bS5Ub29NYW55RmlsZXM7XHJcbiAgQElucHV0KCkgcHVibGljIG1lc3NhZ2VGaWxlVG9vQmlnOiBzdHJpbmcgPSBFcnJvck1lc3NhZ2VzRW51bS5GaWxlVG9vQmlnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtZXNzYWdlRW1wdHlGaWxlOiBzdHJpbmcgPSBFcnJvck1lc3NhZ2VzRW51bS5FbXB0eUZpbGU7XHJcbiAgQElucHV0KCkgcHVibGljIG1lc3NhZ2VJbnZhbGlkRmlsZUZvcm1hdDogc3RyaW5nID0gRXJyb3JNZXNzYWdlc0VudW0uSW52YWxpZEZpbGVGb3JtYXQ7XHJcblxyXG4gIC8vIFBMQUNFSE9MREVSU1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlciA9ICfQn9C10YDQtdC90LXRgdC40YLQtSDRhNCw0LnQuyDRgSDRg9GB0YLRgNC+0LnRgdGC0LLQsCDQuNC70Lgg0L3QsNC20LzQuNGC0LUg0L3QsCDQtNCw0L3QvdC+0LUg0L/QvtC70LUg0LTQu9GPINC00L7QsdCw0LLQu9C10L3QuNGPINGE0LDQudC70LAnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlckZpbGVNYXhTaXplID0gJ9Cg0LDQt9C80LXRgCDRhNCw0LnQu9CwOiDQvdC1INCx0L7Qu9GM0YjQtSc7XHJcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyRmlsZUZvcm1hdCA9ICfQpNC+0YDQvNCw0YIg0YTQsNC50LvQsDonO1xyXG5cclxuICBASW5wdXQoJ2ZpbGVzJylcclxuICBzZXQgaW5pdEZpbGVzKGRhdGE6IFVwbG9hZGVkRmlsZU1vZGVsW10gfCBVcGxvYWRlZEZpbGVNb2RlbCkge1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICB0aGlzLmZpbGVzID0gZGF0YS5tYXAocyA9PiAoey4uLnN9KSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5maWxlcyA9IFt7Li4uZGF0YX1dO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbGVzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ2FsbG93ZWRFeHRlbnNpb25zJylcclxuICBwdWJsaWMgc2V0IGluaXRBbGxvd2VkRXh0ZW5zaW9ucyh2YWw6IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuYWxsb3dlZEV4dGVuc2lvbnMgPSB2YWw7XHJcbiAgICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHZhbC5qb2luKCcsICcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hbGxvd2VkRXh0ZW5zaW9ucyA9IFtdO1xyXG4gICAgICB0aGlzLmV4dGVuc2lvbnMgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGZpbGVzQ2hhbmdlZDogRXZlbnRFbWl0dGVyPElucHV0RmlsZU1vZGVsW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hlY2tEcm9wcGVkRmlsZTogRXZlbnRFbWl0dGVyPElucHV0RmlsZU1vZGVsPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmaWxlVXBsb2FkU2VydmljZTogRmlsZVVwbG9hZFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGdldCBjYW5BZGQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5zaG93SW5wdXRXaXRoRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubWF4RmlsZXMgPiB0aGlzLmZpbGVzLmZpbHRlcihzID0+ICFzLmVycm9yKS5sZW5ndGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5tYXhGaWxlcyA+IHRoaXMuZmlsZXMubGVuZ3RoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRUYXJnZXQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBJbnB1dEZpbGVUYXJnZXRUeXBlc0VudW1bdGhpcy50YXJnZXRdXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzSW52YWxpZE1lc3NhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmludmFsaWRNZXNzYWdlIHx8ICEhdGhpcy5pbnZhbGlkTWVzc2FnZS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrVmFsaWRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0ludmFsaWQgPT09IGZhbHNlID9cclxuICAgICAgJ21yeC1pbnB1dC1jaGVja2VkLXN1Y2Nlc3MnIDpcclxuICAgICAgdGhpcy5jaGVja0ludmFsaWQgPT09IHRydWUgPyAnbXJ4LWlucHV0LWNoZWNrZWQtZXJyb3InIDogJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmNoZWNrVmFsaWRDbGFzc2VzfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYXNlVmFsaWRhdGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUb29sdGlwVmFsdWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1Rvb2x0aXBWYWx1ZSAmJiB2YWx1ZSA/IHZhbHVlIDogJydcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBiYXNlVmFsaWRhdGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogSW5wdXRGaWxlTW9kZWwpIHtcclxuICAgIHJldHVybiBCb29sZWFuKGl0ZW0udXVpZCkgPyBpdGVtLnV1aWQgOiBpdGVtLnRlbXBVdWlkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZShmaWxlOiBVcGxvYWRlZEZpbGVNb2RlbCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGVsZXRlQ29uZmlybSkge1xyXG4gICAgICB0aGlzLmRlbGV0ZUNvbmZpcm0oZmlsZSwgKG9rKSA9PiB7XHJcbiAgICAgICAgaWYgKG9rKSB7XHJcbiAgICAgICAgICBjb25zdCBmaW5kRmlsZSA9IHRoaXMuZmlsZXMuZmluZChzID0+IHMudXVpZCA9PT0gZmlsZS51dWlkKTtcclxuICAgICAgICAgIGlmIChmaW5kRmlsZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kZWxldGVFbmRQb2ludCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy5fY3JlYXRlRm9ybURhdGEoKTtcclxuICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ1FxdXVpZCcsIGZpbGUudXVpZCk7XHJcbiAgICAgICAgICAgICAgZmluZEZpbGUuZGVsZXRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvVXBsb2FkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLmRlbGV0ZSh0aGlzLmRlbGV0ZUVuZFBvaW50LCBmb3JtRGF0YSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihmaW5kRmlsZSksIDEpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLl92YWxpZGF0ZVVwbG9hZGVkQWxsRmlsZXMoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdCh0aGlzLmZpbGVzKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKGZpbGUpO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWxlcy5zcGxpY2UodGhpcy5maWxlcy5pbmRleE9mKGZpbmRGaWxlKSwgMSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5fdmFsaWRhdGVVcGxvYWRlZEFsbEZpbGVzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdCh0aGlzLmZpbGVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuQ2FuY2VsVXBsb2FkaW5nKGZpbGU6IElucHV0RmlsZU1vZGVsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISFmaWxlLnVwbG9hZGluZyAmJiBmaWxlLnBlcmNlbnRhZ2UgPyBmaWxlLnBlcmNlbnRhZ2UgPCA5MCA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyKGZpbGU6IElucHV0RmlsZU1vZGVsKTogdm9pZCB7XHJcbiAgICBpZiAoZmlsZS51cGxvYWRpbmcpIHtcclxuICAgICAgaWYgKGZpbGUuZXhlY3V0aW9uKSB7XHJcbiAgICAgICAgZmlsZS5leGVjdXRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbmRGaWxlSWR4ID0gdGhpcy5maWxlcy5pbmRleE9mKGZpbGUpO1xyXG4gICAgaWYgKGZpbmRGaWxlSWR4ID49IDApIHtcclxuICAgICAgdGhpcy5maWxlcy5zcGxpY2UoZmluZEZpbGVJZHgsIDEpO1xyXG4gICAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KHRoaXMuZmlsZXMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdmFsaWRhdGVVcGxvYWRlZEFsbEZpbGVzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG93bmxvYWRVcmwoZmlsZTogVXBsb2FkZWRGaWxlTW9kZWwpOiBzdHJpbmcge1xyXG4gICAgaWYgKGZpbGUudXJsICYmICFmaWxlLnNpemUpIHtcclxuICAgICAgcmV0dXJuIGZpbGUudXJsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZG93bmxvYWRFbmRQb2ludCkge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmRvd25sb2FkRW5kUG9pbnR9P3V1aWQ9JHtmaWxlLnV1aWR9YDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gJyMnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRyb3BwZWQoZmlsZXM6IE5neEZpbGVEcm9wRW50cnlbXSkge1xyXG4gICAgZm9yIChjb25zdCBkcm9wcGVkRmlsZSBvZiBmaWxlcykge1xyXG4gICAgICBpZiAoZHJvcHBlZEZpbGUuZmlsZUVudHJ5LmlzRmlsZSkge1xyXG4gICAgICAgIGNvbnN0IGZpbGVFbnRyeSA9IGRyb3BwZWRGaWxlLmZpbGVFbnRyeSBhcyBGaWxlU3lzdGVtRmlsZUVudHJ5O1xyXG4gICAgICAgIGZpbGVFbnRyeS5maWxlKChmaWxlOiBGaWxlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl91cGxvYWRGaWxlKGZpbGUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIEl0IHdhcyBhIGRpcmVjdG9yeSAoZW1wdHkgZGlyZWN0b3JpZXMgYXJlIGFkZGVkLCBvdGhlcndpc2Ugb25seSBmaWxlcylcclxuICAgICAgICBjb25zdCBmaWxlRW50cnkgPSBkcm9wcGVkRmlsZS5maWxlRW50cnkgYXMgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF92YWxpZGF0ZVVwbG9hZGVkQWxsRmlsZXMoKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZmlsZXNbaV07XHJcbiAgICAgIGRhdGEuZXJyb3IgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuX2NoZWNrRm9yVXBsb2FkKGRhdGEsIHRydWUpO1xyXG4gICAgICBpZiAodGhpcy5tYXhGaWxlcyA8PSBpKSB7XHJcbiAgICAgICAgZGF0YS5lcnJvciA9IHRoaXMubWVzc2FnZVRvb01hbnlGaWxlcztcclxuICAgICAgfSBlbHNlIGlmICghZGF0YS5lcnJvcikge1xyXG4gICAgICAgIGRhdGEudXVpZCA9IGRhdGEudXVpZCB8fCBkYXRhLnRlbXBVdWlkIHx8ICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mb3JtRGF0YUtleXMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZm9ybURhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlRm9ybURhdGEoKTogRm9ybURhdGEge1xyXG4gICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgaWYgKHRoaXMubWF4RmlsZXMpIHtcclxuICAgICAgZm9ybS5hcHBlbmQoJ01heEZpbGVzJywgdGhpcy5tYXhGaWxlcy50b1N0cmluZygxMCkpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qga2V5cyA9IHRoaXMuX2Zvcm1EYXRhS2V5cygpO1xyXG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiBmb3JtLmFwcGVuZChrZXksIHRoaXMuZm9ybURhdGFba2V5XSkpO1xyXG4gICAgcmV0dXJuIGZvcm07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGxvYWRGaWxlKGZpbGU6IEZpbGUpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIHV1aWQ6ICcnLFxyXG4gICAgICB0ZW1wVXVpZDogdXVpZHY0KCksXHJcbiAgICAgIG5hbWU6IGZpbGUubmFtZSxcclxuICAgICAgc2l6ZTogZmlsZS5zaXplLFxyXG4gICAgICB1cGxvYWRpbmc6IHRydWUsXHJcbiAgICAgIHBlcmNlbnRhZ2U6IDAsXHJcbiAgICAgIGZpbGU6IGZpbGVcclxuICAgIH0gYXMgSW5wdXRGaWxlTW9kZWw7XHJcblxyXG4gICAgaWYgKCF0aGlzLl9jaGVja0ZvclVwbG9hZChkYXRhKSkge1xyXG4gICAgICBpZiAoIXRoaXMuYXV0b1VwbG9hZCkge1xyXG4gICAgICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmVtaXQodGhpcy5maWxlcyk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy5fY3JlYXRlRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnRmlsZScsIGZpbGUpO1xyXG5cclxuICAgIGlmICh0aGlzLnVwbG9hZEFkZGl0aW9uYWxEYXRhICYmIE9iamVjdC5rZXlzKHRoaXMudXBsb2FkQWRkaXRpb25hbERhdGEpLmxlbmd0aCkge1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLnVwbG9hZEFkZGl0aW9uYWxEYXRhKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSwgdGhpcy51cGxvYWRBZGRpdGlvbmFsRGF0YVtrZXldKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hdXRvVXBsb2FkKSB7XHJcbiAgICAgIGRhdGEuZXhlY3V0aW9uID0gdGhpcy5maWxlVXBsb2FkU2VydmljZS51cGxvYWQodGhpcy51cGxvYWRFbmRQb2ludCwgZm9ybURhdGEpLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKChldmVudDogSHR0cEV2ZW50PFVwbG9hZGVkUmVzdWx0TW9kZWw+KSA9PiB7XHJcbiAgICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlNlbnQ6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZUhlYWRlcjpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzOlxyXG4gICAgICAgICAgICAgIGlmIChldmVudC50b3RhbCkge1xyXG4gICAgICAgICAgICAgICAgZGF0YS5wZXJjZW50YWdlID0gTWF0aC5yb3VuZChldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCAqIDEwMCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2U6XHJcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LmJvZHkpIHtcclxuICAgICAgICAgICAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBkYXRhLnBlcmNlbnRhZ2UgPSAwO1xyXG4gICAgICAgICAgICAgICAgZGF0YS51dWlkID0gZXZlbnQuYm9keS51dWlkO1xyXG4gICAgICAgICAgICAgICAgZGF0YS5maWxlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgZGF0YS5lcnJvciA9IGV2ZW50LmJvZHkubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmV4ZWN1dGlvbikge1xyXG4gICAgICAgICAgICAgICAgICBkYXRhLmV4ZWN1dGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbGVzLmV2ZXJ5KHMgPT4gIXMudXBsb2FkaW5nKSkge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV0ZWRGaWxlcyA9IHRoaXMuZmlsZXMuZmlsdGVyKHMgPT4gIXMuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KGNvbXBsZXRlZEZpbGVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBkYXRhLnV1aWQgPSBkYXRhLnRlbXBVdWlkIHx8ICcnO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZmlsZXMuZXZlcnkocyA9PiAhcy51cGxvYWRpbmcpKSB7XHJcbiAgICAgICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdCh0aGlzLmZpbGVzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2hlY2tGb3JVcGxvYWQoZGF0YTogSW5wdXRGaWxlTW9kZWwsIGV4aXN0aW5nPzogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy5jaGVja0Ryb3BwZWRGaWxlLmVtaXQoZGF0YSlcclxuXHJcbiAgICBpZiAoIXRoaXMuY2FuQWRkICYmICFleGlzdGluZykge1xyXG4gICAgICBkYXRhLmVycm9yID0gdGhpcy5tZXNzYWdlVG9vTWFueUZpbGVzO1xyXG4gICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZpbGVzLnB1c2goZGF0YSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWV4aXN0aW5nKSB7XHJcbiAgICAgIHRoaXMuZmlsZXMucHVzaChkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGF0YS5maWxlICYmIGRhdGEuZmlsZS5zaXplID4gdGhpcy5tYXhTaXplKSB7XHJcbiAgICAgIGRhdGEuZXJyb3IgPSB0aGlzLm1lc3NhZ2VGaWxlVG9vQmlnO1xyXG4gICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRhdGEuZmlsZSAmJiBkYXRhLmZpbGUuc2l6ZSA9PSAwKSB7XHJcbiAgICAgIGRhdGEuZXJyb3IgPSB0aGlzLm1lc3NhZ2VFbXB0eUZpbGU7XHJcbiAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hbGxvd2VkRXh0ZW5zaW9ucy5sZW5ndGggPiAwICYmICF0aGlzLmFsbG93ZWRFeHRlbnNpb25zLnNvbWUoXHJcbiAgICAgIHMgPT4gZGF0YS5maWxlICYmIGRhdGEuZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgocy50b0xvd2VyQ2FzZSgpKSkpIHtcclxuXHJcbiAgICAgIGRhdGEuZXJyb3IgPSB0aGlzLm1lc3NhZ2VJbnZhbGlkRmlsZUZvcm1hdDtcclxuICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJuZy1mb3JtLWZpbGUtaW5wdXRcIlxyXG4gIFtjbGFzc109XCJnZXRDbGFzc2VzXCJcclxuICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImludmFsaWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIiAqbmdJZj1cInJlYWRvbmx5OyBlbHNlIG5vdFJlYWRvbmx5XCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWZpbGVzIHx8IGZpbGVzLmxlbmd0aCA9PSAwXCJcclxuICAgICAgICAgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTZcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBjb2xvci10ZXJ0aWFyeVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaWNvbiBpY29uLWZpbGUgaWNvbi1mb250LTI0IG1yLTJcIj48L2Rpdj5cclxuICAgICAgICA8c3Bhbj7QlNC+0LrRg9C80LXQvdGC0L7QsiDQvdC10YI8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICA8dWwgY2xhc3M9XCJuZXctY3VzdG9tLWZpbGUtaW5wdXRcIiAqbmdJZj1cImZpbGVzLmxlbmd0aFwiPlxyXG4gICAgICAgIDxsaVxyXG4gICAgICAgICAgY2xhc3M9XCJuZXctY3VzdG9tLWZpbGUtaW5wdXRfX2l0ZW1cIlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInFxLWZpbGUtaW5mb1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1maWxlIGljb24tZm9udC0yNCBtci0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInFxLXVwbG9hZC1maWxlLXNlbGVjdG9yIHFxLXVwbG9hZC1maWxlXCJcclxuICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiZ2V0VGFyZ2V0XCJcclxuICAgICAgICAgICAgICAgIFtocmVmXT1cImRvd25sb2FkVXJsKGZpbGUpXCJcclxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJmaWxlTmFtZVBsYWNlaG9sZGVyID8gZmlsZU5hbWVQbGFjZWhvbGRlciA6IGZpbGUubmFtZVwiXHJcbiAgICAgICAgICAgICAgPnt7ZmlsZU5hbWVQbGFjZWhvbGRlciA/IGZpbGVOYW1lUGxhY2Vob2xkZXIgOiBmaWxlLm5hbWV9fTwvYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxcS11cGxvYWQtc2l6ZS1zZWxlY3RvciBxcS11cGxvYWQtc2l6ZVwiICpuZ0lmPVwiIWZpbGUuZXJyb3JcIj57e2Zvcm1hdEJ5dGVzKGZpbGUuc2l6ZSl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5uZXJUZW1wbGF0ZTsgY29udGV4dDp7fVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctdGVtcGxhdGUgI25vdFJlYWRvbmx5PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFib3R0b21GaWxlcyAmJiAhaXNIaWRlTGlzdEZpbGVzXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWxlTGlzdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbm5lclRlbXBsYXRlOyBjb250ZXh0Ont9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmd4LWZpbGUtZHJvcFxyXG4gICAgICAqbmdJZj1cImNhbkFkZFwiXHJcbiAgICAgIFtjbGFzc05hbWVdPVwiJ25nLWN1c3RvbS1maWxlLWlucHV0J1wiXHJcbiAgICAgIFthY2NlcHRdPVwiZXh0ZW5zaW9ucyB8fCAnJ1wiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsnbmctY3VzdG9tLWZpbGUtaW5wdXQtLWRpc2FibGVkJzogZGlzYWJsZWR9XCJcclxuICAgICAgKG9uRmlsZURyb3ApPVwiZHJvcHBlZCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5neC1maWxlLWRyb3AtY29udGVudC10bXAgbGV0LW9wZW5GaWxlU2VsZWN0b3I9XCJvcGVuRmlsZVNlbGVjdG9yXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJuZy1jdXN0b20tZmlsZS1pbnB1dC1jb250ZW50XCJcclxuICAgICAgICAgIChjbGljayk9XCIhZGlzYWJsZWQgPyBvcGVuRmlsZVNlbGVjdG9yKCkgOiB1bmRlZmluZWRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctY3VzdG9tLWZpbGUtaW5wdXQtY29udGVudC0tcGxhY2Vob2xkZXIgbWItMlwiPlxyXG4gICAgICAgICAgICAgIHt7cGxhY2Vob2xkZXJ9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5nLWN1c3RvbS1maWxlLWlucHV0LWNvbnRlbnQtLXNpemUgbWItMVwiPlxyXG4gICAgICAgICAgICAgIHt7cGxhY2Vob2xkZXJGaWxlTWF4U2l6ZX19IHt7Zm9ybWF0Qnl0ZXMobWF4U2l6ZSl9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5nLWN1c3RvbS1maWxlLWlucHV0LWNvbnRlbnQtLWV4dGVuc2lvbnNcIiAqbmdJZj1cImV4dGVuc2lvbnNcIj5cclxuICAgICAgICAgICAgICB7e3BsYWNlaG9sZGVyRmlsZUZvcm1hdH19IHt7ZXh0ZW5zaW9uc319XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25neC1maWxlLWRyb3A+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJvdHRvbUZpbGVzICYmICFpc0hpZGVMaXN0RmlsZXNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVMaXN0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubmVyVGVtcGxhdGU7IGNvbnRleHQ6e31cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG5cclxuPG1yeC1lcnJvci1tZXNzYWdlXHJcbiAgKm5nSWY9XCIoIWlzVmFsaWQgfHwgaW52YWxpZCkgJiYgaXNJbnZhbGlkTWVzc2FnZVwiXHJcbiAgW2ludmFsaWRNZXNzYWdlXT1cImludmFsaWRNZXNzYWdlXCJcclxuPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcblxyXG48bmctdGVtcGxhdGUgI2ZpbGVMaXN0VGVtcGxhdGU+XHJcbiAgPHVsIGNsYXNzPVwibmV3LWN1c3RvbS1maWxlLWlucHV0XCIgKm5nSWY9XCJmaWxlcy5sZW5ndGhcIj5cclxuICAgIDxsaVxyXG4gICAgICBjbGFzcz1cIm5ldy1jdXN0b20tZmlsZS1pbnB1dF9faXRlbVwiXHJcbiAgICAgICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICBbbmdDbGFzc109XCJ7J2ZpbGUtZXJyb3InOiBmaWxlLmVycm9yfVwiXHJcbiAgICAgIFttcnhDZGtUb29sdGlwXT1cImdldFRvb2x0aXBWYWx1ZShmaWxlTmFtZVBsYWNlaG9sZGVyID8gZmlsZU5hbWVQbGFjZWhvbGRlciA6IGZpbGUubmFtZSB8fCAnJylcIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIid0b3Atc3RhcnQnXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF1dG9VcGxvYWRcIj5cclxuICAgICAgICA8YSBjbGFzcz1cInFxLWRvd25sb2FkLWxpbmtcIiBbdGFyZ2V0XT1cImdldFRhcmdldFwiIFtocmVmXT1cImRvd25sb2FkVXJsKGZpbGUpXCIgKm5nSWY9XCJmaWxlLnV1aWQgJiYgaXNEb3dubG9hZGluZ0ZpbGVcIj48L2E+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicXEtZmlsZS1pbmZvXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1maWxlIGljb24tZm9udC0yNCBtci0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJxcS11cGxvYWQtZmlsZS1zZWxlY3RvciBxcS11cGxvYWQtZmlsZVwiXHJcbiAgICAgICAgICAgIFt0aXRsZV09XCJmaWxlTmFtZVBsYWNlaG9sZGVyID8gZmlsZU5hbWVQbGFjZWhvbGRlciA6IGZpbGUubmFtZVwiXHJcbiAgICAgICAgICA+e3tmaWxlTmFtZVBsYWNlaG9sZGVyID8gZmlsZU5hbWVQbGFjZWhvbGRlciA6IGZpbGUubmFtZX19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctY3VzdG9tLWZpbGUtaW5wdXRfcHJvZ3Jlc3NcIiAqbmdJZj1cImZpbGUudXBsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInt3aWR0aDogZmlsZS5wZXJjZW50YWdlICsgJyUnfVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXEtdXBsb2FkLXNpemUtc2VsZWN0b3IgcXEtdXBsb2FkLXNpemVcIiAqbmdJZj1cIiFmaWxlLmVycm9yXCI+e3tmb3JtYXRCeXRlcyhmaWxlLnNpemUpfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAqbmdJZj1cIiFyZWFkb25seSAmJiBmaWxlLnV1aWQgJiYgc2hvd0RlbGV0ZUJ1dHRvbiAmJiAhdmlld09ubHlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlKGZpbGUpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJtcngtaWNvbiBpY29uLWRlbGV0ZSBpY29uLWZvbnQtMjQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwi0KPQtNCw0LvQuNGC0YxcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctY3VzdG9tLWZpbGUtaW5wdXQtZXJyb3JcIiAqbmdJZj1cImZpbGUuZXJyb3JcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWF0dGVudGlvbiBpY29uLWNvbG9yLXJlZCBpY29uLWZvbnQtMTYgbXItMVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2xvci1uZWdhdGl2ZVwiPnt7ZmlsZS5lcnJvcn19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1yeC1pY29uIGljb24tY2xvc2UgaWNvbi1mb250LTI0IGN1cnNvci1wb2ludGVyIG1sLTJcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIihmaWxlLmVycm9yICYmICFmaWxlLnV1aWQpIHx8IGNhbkNhbmNlbFVwbG9hZGluZyhmaWxlKSAmJiAhdmlld09ubHlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXIoZmlsZSlcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbGk+XHJcbiAgPC91bD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1maWxlL2lucHV0LWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtZmlsZS9pbnB1dC1maWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMkIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRTdHLE9BQU8sRUFBYSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFFOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUF3Qix3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7O0FBT25GLE1BQU0sT0FBTyxrQkFBa0I7SUEyRTdCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBMUV4RCxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUUxQixzQkFBaUIsR0FBYSxFQUFFLENBQUM7UUFDakMsVUFBSyxHQUFxQixFQUFFLENBQUM7UUFFYixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFD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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5neEZpbGVEcm9wRW50cnkgfSBmcm9tICduZ3gtZmlsZS1kcm9wJztcclxuaW1wb3J0IHsgSHR0cEV2ZW50LCBIdHRwRXZlbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFTVBUWSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgSW5wdXRGaWxlTW9kZWwsIFVwbG9hZGVkRmlsZU1vZGVsLCBVcGxvYWRlZFJlc3VsdE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IGZvcm1hdEJ5dGVzIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9leHRlbnNpb24vaW5wdXQtZmlsZS5leHRlbnNpb24nO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFcnJvck1lc3NhZ2VzRW51bSB9IGZyb20gJy4vZW51bXMvZXJyb3ItbWVzc2FnZXMuZW51bSc7XHJcbmltcG9ydCB7IElucHV0RmlsZVRhcmdldFR5cGVzLCBJbnB1dEZpbGVUYXJnZXRUeXBlc0VudW0gfSBmcm9tICcuL2lucHV0LWZpbGUuZW51bSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1pbnB1dC1maWxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtZmlsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtZmlsZS5jb21wb25lbnQubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRGaWxlQ29tcG9uZW50IHtcclxuICBmb3JtYXRCeXRlcyA9IGZvcm1hdEJ5dGVzO1xyXG4gIGV4dGVuc2lvbnM/OiBzdHJpbmc7XHJcbiAgYWxsb3dlZEV4dGVuc2lvbnM6IHN0cmluZ1tdID0gW107XHJcbiAgZmlsZXM6IElucHV0RmlsZU1vZGVsW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGF1dG9VcGxvYWQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByZXF1aXJlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByZWFkb25seSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB2aWV3T25seSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBib3R0b21GaWxlcyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtYXhTaXplID0gMzE0NTcyODA7XHJcbiAgQElucHV0KCkgcHVibGljIG1heEZpbGVzID0gNTtcclxuICBASW5wdXQoKSBwdWJsaWMgbWluRmlsZXMgPSAwO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtRGF0YTogYW55ID0ge307IC8vINCf0LDRgNCw0LzQtdGC0YDRiywg0LrQvtGC0L7RgNGL0LUg0LHRg9C00YPRgiDQv9C10YDQtdC00LDQstCw0YLRjNGB0Y8g0LIg0YTQvtGA0LzQtVxyXG4gIEBJbnB1dCgpIHB1YmxpYyB1cGxvYWRFbmRQb2ludCE6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgZGVsZXRlRW5kUG9pbnQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGRvd25sb2FkRW5kUG9pbnQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGZpbGVOYW1lUGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIHNob3dJbnB1dFdpdGhFcnJvciA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIHNob3dEZWxldGVCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc1Rvb2x0aXBWYWx1ZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc0Rvd25sb2FkaW5nRmlsZSA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIGlzSGlkZUxpc3RGaWxlcyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0YXJnZXQ6IElucHV0RmlsZVRhcmdldFR5cGVzID0gJ19zZWxmJztcclxuICBASW5wdXQoKSBwdWJsaWMgZGVsZXRlQ29uZmlybT86IChmaWxlOiBVcGxvYWRlZEZpbGVNb2RlbCwgcmVzdWx0OiAob2s6IGJvb2xlYW4pID0+IHZvaWQpID0+IHZvaWQ7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbm5lclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHVwbG9hZEFkZGl0aW9uYWxEYXRhOiBhbnkgPSB7fTtcclxuXHJcbiAgLy8gRVJST1JcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLy8gRVJST1IgTUVTU0FHRVNcclxuICBASW5wdXQoKSBwdWJsaWMgbWVzc2FnZVRvb01hbnlGaWxlczogc3RyaW5nID0gRXJyb3JNZXNzYWdlc0VudW0uVG9vTWFueUZpbGVzO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtZXNzYWdlRmlsZVRvb0JpZzogc3RyaW5nID0gRXJyb3JNZXNzYWdlc0VudW0uRmlsZVRvb0JpZztcclxuICBASW5wdXQoKSBwdWJsaWMgbWVzc2FnZUVtcHR5RmlsZTogc3RyaW5nID0gRXJyb3JNZXNzYWdlc0VudW0uRW1wdHlGaWxlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtZXNzYWdlSW52YWxpZEZpbGVGb3JtYXQ6IHN0cmluZyA9IEVycm9yTWVzc2FnZXNFbnVtLkludmFsaWRGaWxlRm9ybWF0O1xyXG5cclxuICAvLyBQTEFDRUhPTERFUlNcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAn0J/QtdGA0LXQvdC10YHQuNGC0LUg0YTQsNC50Lsg0YEg0YPRgdGC0YDQvtC50YHRgtCy0LAg0LjQu9C4INC90LDQttC80LjRgtC1INC90LAg0LTQsNC90L3QvtC1INC/0L7Qu9C1INC00LvRjyDQtNC+0LHQsNCy0LvQtdC90LjRjyDRhNCw0LnQu9CwJztcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXJGaWxlTWF4U2l6ZSA9ICfQoNCw0LfQvNC10YAg0YTQsNC50LvQsDog0L3QtSDQsdC+0LvRjNGI0LUnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlckZpbGVGb3JtYXQgPSAn0KTQvtGA0LzQsNGCINGE0LDQudC70LA6JztcclxuXHJcbiAgQElucHV0KCdmaWxlcycpXHJcbiAgc2V0IGluaXRGaWxlcyhkYXRhOiBVcGxvYWRlZEZpbGVNb2RlbFtdIHwgVXBsb2FkZWRGaWxlTW9kZWwpIHtcclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgICAgdGhpcy5maWxlcyA9IGRhdGEubWFwKHMgPT4gKHsuLi5zfSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZmlsZXMgPSBbey4uLmRhdGF9XTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWxlcyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCdhbGxvd2VkRXh0ZW5zaW9ucycpXHJcbiAgcHVibGljIHNldCBpbml0QWxsb3dlZEV4dGVuc2lvbnModmFsOiBzdHJpbmdbXSkge1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICB0aGlzLmFsbG93ZWRFeHRlbnNpb25zID0gdmFsO1xyXG4gICAgICB0aGlzLmV4dGVuc2lvbnMgPSB2YWwuam9pbignLCAnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWxsb3dlZEV4dGVuc2lvbnMgPSBbXTtcclxuICAgICAgdGhpcy5leHRlbnNpb25zID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBmaWxlc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxJbnB1dEZpbGVNb2RlbFtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcHVibGljIGNoZWNrRHJvcHBlZEZpbGU6IEV2ZW50RW1pdHRlcjxJbnB1dEZpbGVNb2RlbD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmlsZVVwbG9hZFNlcnZpY2U6IEZpbGVVcGxvYWRTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FuQWRkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuc2hvd0lucHV0V2l0aEVycm9yKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm1heEZpbGVzID4gdGhpcy5maWxlcy5maWx0ZXIocyA9PiAhcy5lcnJvcikubGVuZ3RoO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMubWF4RmlsZXMgPiB0aGlzLmZpbGVzLmxlbmd0aDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0VGFyZ2V0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gSW5wdXRGaWxlVGFyZ2V0VHlwZXNFbnVtW3RoaXMudGFyZ2V0XVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc0ludmFsaWRNZXNzYWdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5pbnZhbGlkTWVzc2FnZSB8fCAhIXRoaXMuaW52YWxpZE1lc3NhZ2UubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjaGVja1ZhbGlkQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tJbnZhbGlkID09PSBmYWxzZSA/XHJcbiAgICAgICdtcngtaW5wdXQtY2hlY2tlZC1zdWNjZXNzJyA6XHJcbiAgICAgIHRoaXMuY2hlY2tJbnZhbGlkID09PSB0cnVlID8gJ21yeC1pbnB1dC1jaGVja2VkLWVycm9yJyA6ICcnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5jaGVja1ZhbGlkQ2xhc3Nlc31gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFzZVZhbGlkYXRlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VG9vbHRpcFZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNUb29sdGlwVmFsdWUgJiYgdmFsdWUgPyB2YWx1ZSA6ICcnXHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYmFzZVZhbGlkYXRlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGl0ZW06IElucHV0RmlsZU1vZGVsKSB7XHJcbiAgICByZXR1cm4gQm9vbGVhbihpdGVtLnV1aWQpID8gaXRlbS51dWlkIDogaXRlbS50ZW1wVXVpZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGUoZmlsZTogVXBsb2FkZWRGaWxlTW9kZWwpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRlbGV0ZUNvbmZpcm0pIHtcclxuICAgICAgdGhpcy5kZWxldGVDb25maXJtKGZpbGUsIChvaykgPT4ge1xyXG4gICAgICAgIGlmIChvaykge1xyXG4gICAgICAgICAgY29uc3QgZmluZEZpbGUgPSB0aGlzLmZpbGVzLmZpbmQocyA9PiBzLnV1aWQgPT09IGZpbGUudXVpZCk7XHJcbiAgICAgICAgICBpZiAoZmluZEZpbGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGVsZXRlRW5kUG9pbnQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMuX2NyZWF0ZUZvcm1EYXRhKCk7XHJcbiAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdRcXV1aWQnLCBmaWxlLnV1aWQpO1xyXG4gICAgICAgICAgICAgIGZpbmRGaWxlLmRlbGV0aW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b1VwbG9hZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkU2VydmljZS5kZWxldGUodGhpcy5kZWxldGVFbmRQb2ludCwgZm9ybURhdGEpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzLnNwbGljZSh0aGlzLmZpbGVzLmluZGV4T2YoZmluZEZpbGUpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsaWRhdGVVcGxvYWRlZEFsbEZpbGVzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmVtaXQodGhpcy5maWxlcyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhcihmaWxlKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihmaW5kRmlsZSksIDEpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX3ZhbGlkYXRlVXBsb2FkZWRBbGxGaWxlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmVtaXQodGhpcy5maWxlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbkNhbmNlbFVwbG9hZGluZyhmaWxlOiBJbnB1dEZpbGVNb2RlbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhZmlsZS51cGxvYWRpbmcgJiYgZmlsZS5wZXJjZW50YWdlID8gZmlsZS5wZXJjZW50YWdlIDwgOTAgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhcihmaWxlOiBJbnB1dEZpbGVNb2RlbCk6IHZvaWQge1xyXG4gICAgaWYgKGZpbGUudXBsb2FkaW5nKSB7XHJcbiAgICAgIGlmIChmaWxlLmV4ZWN1dGlvbikge1xyXG4gICAgICAgIGZpbGUuZXhlY3V0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaW5kRmlsZUlkeCA9IHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKTtcclxuICAgIGlmIChmaW5kRmlsZUlkeCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKGZpbmRGaWxlSWR4LCAxKTtcclxuICAgICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdCh0aGlzLmZpbGVzKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3ZhbGlkYXRlVXBsb2FkZWRBbGxGaWxlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRvd25sb2FkVXJsKGZpbGU6IFVwbG9hZGVkRmlsZU1vZGVsKTogc3RyaW5nIHtcclxuICAgIGlmIChmaWxlLnVybCAmJiAhZmlsZS5zaXplKSB7XHJcbiAgICAgIHJldHVybiBmaWxlLnVybDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmRvd25sb2FkRW5kUG9pbnQpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5kb3dubG9hZEVuZFBvaW50fT91dWlkPSR7ZmlsZS51dWlkfWA7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuICcjJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkcm9wcGVkKGZpbGVzOiBOZ3hGaWxlRHJvcEVudHJ5W10pIHtcclxuICAgIGZvciAoY29uc3QgZHJvcHBlZEZpbGUgb2YgZmlsZXMpIHtcclxuICAgICAgaWYgKGRyb3BwZWRGaWxlLmZpbGVFbnRyeS5pc0ZpbGUpIHtcclxuICAgICAgICBjb25zdCBmaWxlRW50cnkgPSBkcm9wcGVkRmlsZS5maWxlRW50cnkgYXMgRmlsZVN5c3RlbUZpbGVFbnRyeTtcclxuICAgICAgICBmaWxlRW50cnkuZmlsZSgoZmlsZTogRmlsZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fdXBsb2FkRmlsZShmaWxlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBJdCB3YXMgYSBkaXJlY3RvcnkgKGVtcHR5IGRpcmVjdG9yaWVzIGFyZSBhZGRlZCwgb3RoZXJ3aXNlIG9ubHkgZmlsZXMpXHJcbiAgICAgICAgY29uc3QgZmlsZUVudHJ5ID0gZHJvcHBlZEZpbGUuZmlsZUVudHJ5IGFzIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdmFsaWRhdGVVcGxvYWRlZEFsbEZpbGVzKCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZpbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmZpbGVzW2ldO1xyXG4gICAgICBkYXRhLmVycm9yID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLl9jaGVja0ZvclVwbG9hZChkYXRhLCB0cnVlKTtcclxuICAgICAgaWYgKHRoaXMubWF4RmlsZXMgPD0gaSkge1xyXG4gICAgICAgIGRhdGEuZXJyb3IgPSB0aGlzLm1lc3NhZ2VUb29NYW55RmlsZXM7XHJcbiAgICAgIH0gZWxzZSBpZiAoIWRhdGEuZXJyb3IpIHtcclxuICAgICAgICBkYXRhLnV1aWQgPSBkYXRhLnV1aWQgfHwgZGF0YS50ZW1wVXVpZCB8fCAnJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZm9ybURhdGFLZXlzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmZvcm1EYXRhKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZUZvcm1EYXRhKCk6IEZvcm1EYXRhIHtcclxuICAgIGNvbnN0IGZvcm0gPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGlmICh0aGlzLm1heEZpbGVzKSB7XHJcbiAgICAgIGZvcm0uYXBwZW5kKCdNYXhGaWxlcycsIHRoaXMubWF4RmlsZXMudG9TdHJpbmcoMTApKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGtleXMgPSB0aGlzLl9mb3JtRGF0YUtleXMoKTtcclxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4gZm9ybS5hcHBlbmQoa2V5LCB0aGlzLmZvcm1EYXRhW2tleV0pKTtcclxuICAgIHJldHVybiBmb3JtO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBsb2FkRmlsZShmaWxlOiBGaWxlKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICB1dWlkOiAnJyxcclxuICAgICAgdGVtcFV1aWQ6IHV1aWR2NCgpLFxyXG4gICAgICBuYW1lOiBmaWxlLm5hbWUsXHJcbiAgICAgIHNpemU6IGZpbGUuc2l6ZSxcclxuICAgICAgdXBsb2FkaW5nOiB0cnVlLFxyXG4gICAgICBwZXJjZW50YWdlOiAwLFxyXG4gICAgICBmaWxlOiBmaWxlXHJcbiAgICB9IGFzIElucHV0RmlsZU1vZGVsO1xyXG5cclxuICAgIGlmICghdGhpcy5fY2hlY2tGb3JVcGxvYWQoZGF0YSkpIHtcclxuICAgICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdCh0aGlzLmZpbGVzKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy5fY3JlYXRlRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnRmlsZScsIGZpbGUpO1xyXG5cclxuICAgIGlmICh0aGlzLnVwbG9hZEFkZGl0aW9uYWxEYXRhICYmIE9iamVjdC5rZXlzKHRoaXMudXBsb2FkQWRkaXRpb25hbERhdGEpLmxlbmd0aCkge1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLnVwbG9hZEFkZGl0aW9uYWxEYXRhKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSwgdGhpcy51cGxvYWRBZGRpdGlvbmFsRGF0YVtrZXldKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hdXRvVXBsb2FkKSB7XHJcbiAgICAgIGRhdGEuZXhlY3V0aW9uID0gdGhpcy5maWxlVXBsb2FkU2VydmljZS51cGxvYWQodGhpcy51cGxvYWRFbmRQb2ludCwgZm9ybURhdGEpLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKChldmVudDogSHR0cEV2ZW50PFVwbG9hZGVkUmVzdWx0TW9kZWw+KSA9PiB7XHJcbiAgICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlNlbnQ6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZUhlYWRlcjpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzOlxyXG4gICAgICAgICAgICAgIGlmIChldmVudC50b3RhbCkge1xyXG4gICAgICAgICAgICAgICAgZGF0YS5wZXJjZW50YWdlID0gTWF0aC5yb3VuZChldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCAqIDEwMCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2U6XHJcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LmJvZHkpIHtcclxuICAgICAgICAgICAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBkYXRhLnBlcmNlbnRhZ2UgPSAwO1xyXG4gICAgICAgICAgICAgICAgZGF0YS51dWlkID0gZXZlbnQuYm9keS51dWlkO1xyXG4gICAgICAgICAgICAgICAgZGF0YS5maWxlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgZGF0YS5lcnJvciA9IGV2ZW50LmJvZHkubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmV4ZWN1dGlvbikge1xyXG4gICAgICAgICAgICAgICAgICBkYXRhLmV4ZWN1dGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vINCS0JDQltCd0J46INGN0LzQuNGC0LjQvCDQktCh0JUg0YTQsNC50LvRiywg0LLQutC70Y7Rh9Cw0Y8g0YTQsNC50LvRiyDRgSDQvtGI0LjQsdC60LDQvNC4XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWxlcy5ldmVyeShzID0+ICFzLnVwbG9hZGluZykpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdCh0aGlzLmZpbGVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBkYXRhLnV1aWQgPSBkYXRhLnRlbXBVdWlkIHx8ICcnO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZmlsZXMuZXZlcnkocyA9PiAhcy51cGxvYWRpbmcpKSB7XHJcbiAgICAgICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdCh0aGlzLmZpbGVzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2hlY2tGb3JVcGxvYWQoZGF0YTogSW5wdXRGaWxlTW9kZWwsIGV4aXN0aW5nPzogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy5jaGVja0Ryb3BwZWRGaWxlLmVtaXQoZGF0YSlcclxuXHJcbiAgICBpZiAoIXRoaXMuY2FuQWRkICYmICFleGlzdGluZykge1xyXG4gICAgICBkYXRhLmVycm9yID0gdGhpcy5tZXNzYWdlVG9vTWFueUZpbGVzO1xyXG4gICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZpbGVzLnB1c2goZGF0YSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWV4aXN0aW5nKSB7XHJcbiAgICAgIHRoaXMuZmlsZXMucHVzaChkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGF0YS5maWxlICYmIGRhdGEuZmlsZS5zaXplID4gdGhpcy5tYXhTaXplKSB7XHJcbiAgICAgIGRhdGEuZXJyb3IgPSB0aGlzLm1lc3NhZ2VGaWxlVG9vQmlnO1xyXG4gICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRhdGEuZmlsZSAmJiBkYXRhLmZpbGUuc2l6ZSA9PSAwKSB7XHJcbiAgICAgIGRhdGEuZXJyb3IgPSB0aGlzLm1lc3NhZ2VFbXB0eUZpbGU7XHJcbiAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuYWxsb3dlZEV4dGVuc2lvbnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICBkYXRhLmZpbGUgJiZcclxuICAgICAgIXRoaXMuYWxsb3dlZEV4dGVuc2lvbnMuc29tZShzID0+XHJcbiAgICAgICAgZGF0YS5maWxlIS5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgocy50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICApXHJcbiAgICApIHtcclxuXHJcbiAgICAgIGRhdGEuZXJyb3IgPSB0aGlzLm1lc3NhZ2VJbnZhbGlkRmlsZUZvcm1hdDtcclxuICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJuZy1mb3JtLWZpbGUtaW5wdXRcIlxyXG4gIFtjbGFzc109XCJnZXRDbGFzc2VzXCJcclxuICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImludmFsaWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIiAqbmdJZj1cInJlYWRvbmx5OyBlbHNlIG5vdFJlYWRvbmx5XCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWZpbGVzIHx8IGZpbGVzLmxlbmd0aCA9PSAwXCJcclxuICAgICAgICAgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTZcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBjb2xvci10ZXJ0aWFyeVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaWNvbiBpY29uLWZpbGUgaWNvbi1mb250LTI0IG1yLTJcIj48L2Rpdj5cclxuICAgICAgICA8c3Bhbj7QlNC+0LrRg9C80LXQvdGC0L7QsiDQvdC10YI8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICA8dWwgY2xhc3M9XCJuZXctY3VzdG9tLWZpbGUtaW5wdXRcIiAqbmdJZj1cImZpbGVzLmxlbmd0aFwiPlxyXG4gICAgICAgIDxsaVxyXG4gICAgICAgICAgY2xhc3M9XCJuZXctY3VzdG9tLWZpbGUtaW5wdXRfX2l0ZW1cIlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInFxLWZpbGUtaW5mb1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1maWxlIGljb24tZm9udC0yNCBtci0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInFxLXVwbG9hZC1maWxlLXNlbGVjdG9yIHFxLXVwbG9hZC1maWxlXCJcclxuICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiZ2V0VGFyZ2V0XCJcclxuICAgICAgICAgICAgICAgIFtocmVmXT1cImRvd25sb2FkVXJsKGZpbGUpXCJcclxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJmaWxlTmFtZVBsYWNlaG9sZGVyID8gZmlsZU5hbWVQbGFjZWhvbGRlciA6IGZpbGUubmFtZVwiXHJcbiAgICAgICAgICAgICAgPnt7ZmlsZU5hbWVQbGFjZWhvbGRlciA/IGZpbGVOYW1lUGxhY2Vob2xkZXIgOiBmaWxlLm5hbWV9fTwvYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxcS11cGxvYWQtc2l6ZS1zZWxlY3RvciBxcS11cGxvYWQtc2l6ZVwiICpuZ0lmPVwiIWZpbGUuZXJyb3JcIj57e2Zvcm1hdEJ5dGVzKGZpbGUuc2l6ZSl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5uZXJUZW1wbGF0ZTsgY29udGV4dDp7fVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctdGVtcGxhdGUgI25vdFJlYWRvbmx5PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFib3R0b21GaWxlcyAmJiAhaXNIaWRlTGlzdEZpbGVzXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWxlTGlzdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbm5lclRlbXBsYXRlOyBjb250ZXh0Ont9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmd4LWZpbGUtZHJvcFxyXG4gICAgICAqbmdJZj1cImNhbkFkZFwiXHJcbiAgICAgIFtjbGFzc05hbWVdPVwiJ25nLWN1c3RvbS1maWxlLWlucHV0J1wiXHJcbiAgICAgIFthY2NlcHRdPVwiZXh0ZW5zaW9ucyB8fCAnJ1wiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsnbmctY3VzdG9tLWZpbGUtaW5wdXQtLWRpc2FibGVkJzogZGlzYWJsZWR9XCJcclxuICAgICAgKG9uRmlsZURyb3ApPVwiZHJvcHBlZCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5neC1maWxlLWRyb3AtY29udGVudC10bXAgbGV0LW9wZW5GaWxlU2VsZWN0b3I9XCJvcGVuRmlsZVNlbGVjdG9yXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJuZy1jdXN0b20tZmlsZS1pbnB1dC1jb250ZW50XCJcclxuICAgICAgICAgIChjbGljayk9XCIhZGlzYWJsZWQgPyBvcGVuRmlsZVNlbGVjdG9yKCkgOiB1bmRlZmluZWRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctY3VzdG9tLWZpbGUtaW5wdXQtY29udGVudC0tcGxhY2Vob2xkZXIgbWItMlwiPlxyXG4gICAgICAgICAgICAgIHt7cGxhY2Vob2xkZXJ9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5nLWN1c3RvbS1maWxlLWlucHV0LWNvbnRlbnQtLXNpemUgbWItMVwiPlxyXG4gICAgICAgICAgICAgIHt7cGxhY2Vob2xkZXJGaWxlTWF4U2l6ZX19IHt7Zm9ybWF0Qnl0ZXMobWF4U2l6ZSl9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5nLWN1c3RvbS1maWxlLWlucHV0LWNvbnRlbnQtLWV4dGVuc2lvbnNcIiAqbmdJZj1cImV4dGVuc2lvbnNcIj5cclxuICAgICAgICAgICAgICB7e3BsYWNlaG9sZGVyRmlsZUZvcm1hdH19IHt7ZXh0ZW5zaW9uc319XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25neC1maWxlLWRyb3A+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJvdHRvbUZpbGVzICYmICFpc0hpZGVMaXN0RmlsZXNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVMaXN0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubmVyVGVtcGxhdGU7IGNvbnRleHQ6e31cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG5cclxuPG1yeC1lcnJvci1tZXNzYWdlXHJcbiAgKm5nSWY9XCIoIWlzVmFsaWQgfHwgaW52YWxpZCkgJiYgaXNJbnZhbGlkTWVzc2FnZVwiXHJcbiAgW2ludmFsaWRNZXNzYWdlXT1cImludmFsaWRNZXNzYWdlXCJcclxuPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcblxyXG48bmctdGVtcGxhdGUgI2ZpbGVMaXN0VGVtcGxhdGU+XHJcbiAgPHVsIGNsYXNzPVwibmV3LWN1c3RvbS1maWxlLWlucHV0XCIgKm5nSWY9XCJmaWxlcy5sZW5ndGhcIj5cclxuICAgIDxsaVxyXG4gICAgICBjbGFzcz1cIm5ldy1jdXN0b20tZmlsZS1pbnB1dF9faXRlbVwiXHJcbiAgICAgICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICBbbmdDbGFzc109XCJ7J2ZpbGUtZXJyb3InOiBmaWxlLmVycm9yfVwiXHJcbiAgICAgIFttcnhDZGtUb29sdGlwXT1cImdldFRvb2x0aXBWYWx1ZShmaWxlTmFtZVBsYWNlaG9sZGVyID8gZmlsZU5hbWVQbGFjZWhvbGRlciA6IGZpbGUubmFtZSB8fCAnJylcIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIid0b3Atc3RhcnQnXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF1dG9VcGxvYWRcIj5cclxuICAgICAgICA8YSBjbGFzcz1cInFxLWRvd25sb2FkLWxpbmtcIiBbdGFyZ2V0XT1cImdldFRhcmdldFwiIFtocmVmXT1cImRvd25sb2FkVXJsKGZpbGUpXCIgKm5nSWY9XCJmaWxlLnV1aWQgJiYgaXNEb3dubG9hZGluZ0ZpbGVcIj48L2E+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicXEtZmlsZS1pbmZvXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1maWxlIGljb24tZm9udC0yNCBtci0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJxcS11cGxvYWQtZmlsZS1zZWxlY3RvciBxcS11cGxvYWQtZmlsZVwiXHJcbiAgICAgICAgICAgIFt0aXRsZV09XCJmaWxlTmFtZVBsYWNlaG9sZGVyID8gZmlsZU5hbWVQbGFjZWhvbGRlciA6IGZpbGUubmFtZVwiXHJcbiAgICAgICAgICA+e3tmaWxlTmFtZVBsYWNlaG9sZGVyID8gZmlsZU5hbWVQbGFjZWhvbGRlciA6IGZpbGUubmFtZX19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctY3VzdG9tLWZpbGUtaW5wdXRfcHJvZ3Jlc3NcIiAqbmdJZj1cImZpbGUudXBsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInt3aWR0aDogZmlsZS5wZXJjZW50YWdlICsgJyUnfVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXEtdXBsb2FkLXNpemUtc2VsZWN0b3IgcXEtdXBsb2FkLXNpemVcIiAqbmdJZj1cIiFmaWxlLmVycm9yXCI+e3tmb3JtYXRCeXRlcyhmaWxlLnNpemUpfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAqbmdJZj1cIiFyZWFkb25seSAmJiBmaWxlLnV1aWQgJiYgc2hvd0RlbGV0ZUJ1dHRvbiAmJiAhdmlld09ubHlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlKGZpbGUpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJtcngtaWNvbiBpY29uLWRlbGV0ZSBpY29uLWZvbnQtMjQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwi0KPQtNCw0LvQuNGC0YxcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctY3VzdG9tLWZpbGUtaW5wdXQtZXJyb3JcIiAqbmdJZj1cImZpbGUuZXJyb3JcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWF0dGVudGlvbiBpY29uLWNvbG9yLXJlZCBpY29uLWZvbnQtMTYgbXItMVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2xvci1uZWdhdGl2ZVwiPnt7ZmlsZS5lcnJvcn19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1yeC1pY29uIGljb24tY2xvc2UgaWNvbi1mb250LTI0IGN1cnNvci1wb2ludGVyIG1sLTJcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIihmaWxlLmVycm9yICYmICFmaWxlLnV1aWQpIHx8IGNhbkNhbmNlbFVwbG9hZGluZyhmaWxlKSAmJiAhdmlld09ubHlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXIoZmlsZSlcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbGk+XHJcbiAgPC91bD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -13402,9 +13402,7 @@ class InputFileComponent {
13402
13402
  file: file
13403
13403
  };
13404
13404
  if (!this._checkForUpload(data)) {
13405
- if (!this.autoUpload) {
13406
- this.filesChanged.emit(this.files);
13407
- }
13405
+ this.filesChanged.emit(this.files);
13408
13406
  return;
13409
13407
  }
13410
13408
  const formData = this._createFormData();
@@ -13440,9 +13438,9 @@ class InputFileComponent {
13440
13438
  if (data.execution) {
13441
13439
  data.execution.unsubscribe();
13442
13440
  }
13441
+ // ВАЖНО: эмитим ВСЕ файлы, включая файлы с ошибками
13443
13442
  if (this.files.every(s => !s.uploading)) {
13444
- const completedFiles = this.files.filter(s => !s.error);
13445
- this.filesChanged.emit(completedFiles);
13443
+ this.filesChanged.emit(this.files);
13446
13444
  }
13447
13445
  }
13448
13446
  }
@@ -13477,7 +13475,9 @@ class InputFileComponent {
13477
13475
  data.uploading = false;
13478
13476
  return false;
13479
13477
  }
13480
- if (this.allowedExtensions.length > 0 && !this.allowedExtensions.some(s => data.file && data.file.name.toLowerCase().endsWith(s.toLowerCase()))) {
13478
+ if (this.allowedExtensions.length > 0 &&
13479
+ data.file &&
13480
+ !this.allowedExtensions.some(s => data.file.name.toLowerCase().endsWith(s.toLowerCase()))) {
13481
13481
  data.error = this.messageInvalidFileFormat;
13482
13482
  data.uploading = false;
13483
13483
  return false;