@sumaris-net/ngx-components 1.12.13 → 1.13.2

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.
package/doc/changelog.md CHANGED
@@ -225,5 +225,12 @@
225
225
 
226
226
  [fix] AppTable: Avoid deleting a row twice, when deleting an invalid row BUT not editing
227
227
 
228
- # 1.12.8
229
- [enh] Add pipe formGet:path to get a form control, using pipe, instead of .get() function
228
+ # 1.12.13
229
+ [enh] Add pipes formGet, formGetControl and formGetArray, to get a form controls
230
+ [enh] Add pipe strIncludes
231
+
232
+ # 1.13.0
233
+ [enh] Add utility class SharedAsyncValidators
234
+ [enh] Add SharedAsyncValidators.registerAsyncValidator() to add long during validation job
235
+ [fix] BaseEntityService: listenChanges() now return an empty observable, when not implemented, instead of error
236
+ [fix] InstallUpgradeCard: do not show install link, on Windows touch screen
@@ -28,7 +28,7 @@ export class AuthForm extends AppForm {
28
28
  this.showPwd = false;
29
29
  this.onCancel = new EventEmitter();
30
30
  this.onSubmit = new EventEmitter();
31
- this.mobile = platform.mobile;
31
+ this.mobile = settings.mobile;
32
32
  this.canWorkOffline = this.settings.hasOfflineFeature();
33
33
  this._enable = true;
34
34
  }
@@ -123,4 +123,4 @@ AuthForm.propDecorators = {
123
123
  onCancel: [{ type: Output }],
124
124
  onSubmit: [{ type: Output }]
125
125
  };
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2F1dGgvZm9ybS9mb3JtLWF1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSixPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFcEUsT0FBTyxFQUFpQixjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBVTlELE1BQU0sT0FBTyxRQUFTLFNBQVEsT0FBaUI7SUFnQjdDLFlBQ0UsUUFBa0IsRUFDbEIsUUFBeUIsRUFDekIsV0FBd0IsRUFDeEIsUUFBOEIsRUFDdEIsYUFBNEIsRUFDNUIsU0FBMEIsRUFDM0IsT0FBdUIsRUFDdEIsRUFBcUIsRUFDYyxXQUFXO1FBRXRELEtBQUssQ0FBQyxRQUFRLEVBQ1osV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNsQixRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNyQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNyQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1NBQzNCLENBQUMsQ0FBQyxDQUFDO1FBWEksa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdEIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDYyxnQkFBVyxHQUFYLFdBQVcsQ0FBQTtRQXRCeEQsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUlOLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ25DLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO1FBeUJoRCxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFFdEIsQ0FBQztJQTNCRCxPQUFPLENBQUMsSUFBa0Q7UUFDeEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLDhDQUE4QztJQUN0RSxDQUFDO0lBMEJELFFBQVE7UUFDTixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakIscURBQXFEO1FBQ3JELElBQUksQ0FBQyxvQkFBb0IsQ0FDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzNDLHVEQUF1RDtZQUN2RCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBa0IsQ0FBQztZQUMzRixJQUFJLFNBQVMsS0FBSyxPQUFPLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxZQUFZLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3RHO2lCQUNJO2dCQUNILElBQUksQ0FBQyxtQkFBbUIsR0FBRyxlQUFlLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUQ7WUFFRCxtQ0FBbUM7WUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUV4RixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLGVBQWU7UUFDZixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUU7WUFDbkcscUNBQXFDO1lBQ3JDLHFDQUFxQztZQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFlO1FBQ3RCLElBQUksS0FBSyxFQUFFO1lBQ1QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN6QjtRQUVELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRTlDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLGdCQUFnQjtRQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLGNBQWM7UUFFakMsSUFBSSxDQUFDLG9CQUFvQixDQUN2QixJQUFJLENBQUMsUUFBUTthQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDdkIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU1QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbEMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsVUFBVSxDQUFDLEdBQVMsRUFBRTtZQUNwQixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUN4QyxTQUFTLEVBQUUsYUFBYTtnQkFDeEIsZUFBZSxFQUFFLEtBQUs7YUFDdkIsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFBLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsK0JBQStCO0lBRXJCLFlBQVk7UUFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7WUEzSEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6Qixpd0dBQTZCO2dCQUU3QixVQUFVLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDbEMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUF0QnFGLFFBQVE7WUFRckYsZUFBZTtZQVBmLFdBQVc7WUFLWCxvQkFBb0I7WUFPcEIsYUFBYTtZQVhiLGVBQWU7WUFHQSxjQUFjO1lBTEosaUJBQWlCOzRDQWdEOUMsUUFBUSxZQUFJLE1BQU0sU0FBQyxXQUFXOzs7dUJBakJoQyxNQUFNO3VCQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIEluamVjdG9yLCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgUmVnaXN0ZXJNb2RhbCB9IGZyb20gJy4uLy4uL3JlZ2lzdGVyL21vZGFsL21vZGFsLXJlZ2lzdGVyJztcbmltcG9ydCB7IEF1dGhEYXRhIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhUb2tlblR5cGUsIE5ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbmV0d29yay5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBzbGlkZVVwRG93bkFuaW1hdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9tYXRlcmlhbC9tYXRlcmlhbC5hbmltYXRpb25zJztcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BsYXRmb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwRm9ybSB9IGZyb20gJy4uLy4uL2Zvcm0vZm9ybS5jbGFzcyc7XG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBDT1JFX0NPTkZJR19PUFRJT05TIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlnL2NvcmUuY29uZmlnJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZvcm0tYXV0aCcsXG4gIHRlbXBsYXRlVXJsOiAnZm9ybS1hdXRoLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWF1dGguc2NzcyddLFxuICBhbmltYXRpb25zOiBbc2xpZGVVcERvd25BbmltYXRpb25dLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoRm9ybSBleHRlbmRzIEFwcEZvcm08QXV0aERhdGE+IGltcGxlbWVudHMgT25Jbml0IHtcblxuICByZWFkb25seSBtb2JpbGU6IGJvb2xlYW47XG4gIGNhbldvcmtPZmZsaW5lID0gZmFsc2U7XG4gIHNob3dQd2QgPSBmYWxzZTtcbiAgY2FuUmVnaXN0ZXI6IGJvb2xlYW47XG4gIHVzZXJuYW1lUGxhY2Vob2xkZXI6IHN0cmluZztcblxuICBAT3V0cHV0KCkgb25DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRoRGF0YT4oKTtcblxuICBkaXNhYmxlKG9wdHM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgc3VwZXIuZGlzYWJsZShvcHRzKTtcbiAgICB0aGlzLnNob3dQd2QgPSBmYWxzZTsgLy8gSGlkZSBwd2Qgd2hlbiBkaXNhYmxlIChlLmcuIHdoZW4gc3VibWl0dGVkKVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHBsYXRmb3JtOiBQbGF0Zm9ybVNlcnZpY2UsXG4gICAgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHNldHRpbmdzOiBMb2NhbFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcixcbiAgICBwdWJsaWMgbmV0d29yazogTmV0d29ya1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50XG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yLFxuICAgICAgZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgdXNlcm5hbWU6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHBhc3N3b3JkOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBvZmZsaW5lOiBbbmV0d29yay5vZmZsaW5lXVxuICAgIH0pKTtcblxuICAgIHRoaXMubW9iaWxlID0gcGxhdGZvcm0ubW9iaWxlO1xuICAgIHRoaXMuY2FuV29ya09mZmxpbmUgPSB0aGlzLnNldHRpbmdzLmhhc09mZmxpbmVGZWF0dXJlKCk7XG4gICAgdGhpcy5fZW5hYmxlID0gdHJ1ZTtcblxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIExvYWQgY29uZmlnLCB0byBzZXQgdXNlcm5hbWUncyBsYWJlbCBhbmQgdmFsaWRhdG9yXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuc3Vic2NyaWJlKGNvbmZpZyA9PiB7XG4gICAgICAgIC8vIFNldCB0aGUgdXNlcm5hbWUgcGxhY2Vob2xkZXIsIHdpdGggZW1haWwgb3IgdXNlcm5hbWVcbiAgICAgICAgY29uc3QgdG9rZW5UeXBlID0gY29uZmlnLmdldFByb3BlcnR5KENPUkVfQ09ORklHX09QVElPTlMuQVVUSF9UT0tFTl9UWVBFKSBhcyBBdXRoVG9rZW5UeXBlO1xuICAgICAgICBpZiAodG9rZW5UeXBlID09PSAndG9rZW4nKSB7XG4gICAgICAgICAgdGhpcy51c2VybmFtZVBsYWNlaG9sZGVyID0gJ1VTRVIuRU1BSUwnO1xuICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3VzZXJuYW1lJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdGhpcy51c2VybmFtZVBsYWNlaG9sZGVyID0gJ1VTRVIuVVNFUk5BTUUnO1xuICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3VzZXJuYW1lJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEVuYWJsZS9kaXNhYmxlIHJlZ2lzdHJhdGlvbiBsaW5rXG4gICAgICAgIHRoaXMuY2FuUmVnaXN0ZXIgPSBjb25maWcuZ2V0UHJvcGVydHlBc0Jvb2xlYW4oQ09SRV9DT05GSUdfT1BUSU9OUy5SRUdJU1RSQVRJT05fRU5BQkxFKTtcblxuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gRm9yIERFViBvbmx5XG4gICAgaWYgKHRoaXMuZW52aXJvbm1lbnQgJiYgdGhpcy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uID09PSBmYWxzZSAmJiB0aGlzLmVudmlyb25tZW50LmRlZmF1bHRBdXRoVmFsdWVzKSB7XG4gICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgdXNlciwgZm9yIHRlc3RpbmcuXG4gICAgICAvLyBPdmVycmlkZSB1c2luZyBlbnZpcm9ubWVudCwgaWYgYW55XG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLmVudmlyb25tZW50LmRlZmF1bHRBdXRoVmFsdWVzKTtcbiAgICB9XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICBkb1N1Ym1pdChldmVudD86IFVJRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQgfHwgdGhpcy5sb2FkaW5nKSByZXR1cm47XG5cbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5mb3JtLnZhbHVlO1xuICAgIHRoaXMuc2hvd1B3ZCA9IGZhbHNlOyAvLyBIaWRlIHBhc3N3b3JkXG4gICAgdGhpcy5lcnJvciA9IG51bGw7IC8vIFJlc2V0IGVycm9yXG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5vblN1Ym1pdFxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNTAwKSlcbiAgICAgICAgLnN1YnNjcmliZShyZXMgPT4gdGhpcy5tYXJrQXNMb2FkZWQoKSkpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm9uU3VibWl0LmVtaXQoe1xuICAgICAgdXNlcm5hbWU6IGRhdGEudXNlcm5hbWUsXG4gICAgICBwYXNzd29yZDogZGF0YS5wYXNzd29yZCxcbiAgICAgIG9mZmxpbmU6IGRhdGEub2ZmbGluZVxuICAgIH0pKTtcbiAgfVxuXG4gIHJlZ2lzdGVyKCkge1xuICAgIHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbW9kYWwgPSBhd2FpdCB0aGlzLm1vZGFsQ3RybC5jcmVhdGUoe1xuICAgICAgICBjb21wb25lbnQ6IFJlZ2lzdGVyTW9kYWwsXG4gICAgICAgIGJhY2tkcm9wRGlzbWlzczogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG1vZGFsLnByZXNlbnQoKTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIGZ1bmN0aW9ucyAtLSAqL1xuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIl19
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2F1dGgvZm9ybS9mb3JtLWF1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSixPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFcEUsT0FBTyxFQUFpQixjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBVTlELE1BQU0sT0FBTyxRQUFTLFNBQVEsT0FBaUI7SUFnQjdDLFlBQ0UsUUFBa0IsRUFDbEIsUUFBeUIsRUFDekIsV0FBd0IsRUFDeEIsUUFBOEIsRUFDdEIsYUFBNEIsRUFDNUIsU0FB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QUFFLENBQUM7UUFDekIsQ0FBQyxDQUFBLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsK0JBQStCO0lBRXJCLFlBQVk7UUFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7WUEzSEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6Qixpd0dBQTZCO2dCQUU3QixVQUFVLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDbEMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUF0QnFGLFFBQVE7WUFRckYsZUFBZTtZQVBmLFdBQVc7WUFLWCxvQkFBb0I7WUFPcEIsYUFBYTtZQVhiLGVBQWU7WUFHQSxjQUFjO1lBTEosaUJBQWlCOzRDQWdEOUMsUUFBUSxZQUFJLE1BQU0sU0FBQyxXQUFXOzs7dUJBakJoQyxNQUFNO3VCQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIEluamVjdG9yLCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgUmVnaXN0ZXJNb2RhbCB9IGZyb20gJy4uLy4uL3JlZ2lzdGVyL21vZGFsL21vZGFsLXJlZ2lzdGVyJztcbmltcG9ydCB7IEF1dGhEYXRhIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhUb2tlblR5cGUsIE5ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbmV0d29yay5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBzbGlkZVVwRG93bkFuaW1hdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9tYXRlcmlhbC9tYXRlcmlhbC5hbmltYXRpb25zJztcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BsYXRmb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwRm9ybSB9IGZyb20gJy4uLy4uL2Zvcm0vZm9ybS5jbGFzcyc7XG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBDT1JFX0NPTkZJR19PUFRJT05TIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlnL2NvcmUuY29uZmlnJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZvcm0tYXV0aCcsXG4gIHRlbXBsYXRlVXJsOiAnZm9ybS1hdXRoLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWF1dGguc2NzcyddLFxuICBhbmltYXRpb25zOiBbc2xpZGVVcERvd25BbmltYXRpb25dLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoRm9ybSBleHRlbmRzIEFwcEZvcm08QXV0aERhdGE+IGltcGxlbWVudHMgT25Jbml0IHtcblxuICByZWFkb25seSBtb2JpbGU6IGJvb2xlYW47XG4gIGNhbldvcmtPZmZsaW5lID0gZmFsc2U7XG4gIHNob3dQd2QgPSBmYWxzZTtcbiAgY2FuUmVnaXN0ZXI6IGJvb2xlYW47XG4gIHVzZXJuYW1lUGxhY2Vob2xkZXI6IHN0cmluZztcblxuICBAT3V0cHV0KCkgb25DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRoRGF0YT4oKTtcblxuICBkaXNhYmxlKG9wdHM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgc3VwZXIuZGlzYWJsZShvcHRzKTtcbiAgICB0aGlzLnNob3dQd2QgPSBmYWxzZTsgLy8gSGlkZSBwd2Qgd2hlbiBkaXNhYmxlIChlLmcuIHdoZW4gc3VibWl0dGVkKVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHBsYXRmb3JtOiBQbGF0Zm9ybVNlcnZpY2UsXG4gICAgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHNldHRpbmdzOiBMb2NhbFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcixcbiAgICBwdWJsaWMgbmV0d29yazogTmV0d29ya1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50XG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yLFxuICAgICAgZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgdXNlcm5hbWU6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHBhc3N3b3JkOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBvZmZsaW5lOiBbbmV0d29yay5vZmZsaW5lXVxuICAgIH0pKTtcblxuICAgIHRoaXMubW9iaWxlID0gc2V0dGluZ3MubW9iaWxlO1xuICAgIHRoaXMuY2FuV29ya09mZmxpbmUgPSB0aGlzLnNldHRpbmdzLmhhc09mZmxpbmVGZWF0dXJlKCk7XG4gICAgdGhpcy5fZW5hYmxlID0gdHJ1ZTtcblxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIExvYWQgY29uZmlnLCB0byBzZXQgdXNlcm5hbWUncyBsYWJlbCBhbmQgdmFsaWRhdG9yXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuc3Vic2NyaWJlKGNvbmZpZyA9PiB7XG4gICAgICAgIC8vIFNldCB0aGUgdXNlcm5hbWUgcGxhY2Vob2xkZXIsIHdpdGggZW1haWwgb3IgdXNlcm5hbWVcbiAgICAgICAgY29uc3QgdG9rZW5UeXBlID0gY29uZmlnLmdldFByb3BlcnR5KENPUkVfQ09ORklHX09QVElPTlMuQVVUSF9UT0tFTl9UWVBFKSBhcyBBdXRoVG9rZW5UeXBlO1xuICAgICAgICBpZiAodG9rZW5UeXBlID09PSAndG9rZW4nKSB7XG4gICAgICAgICAgdGhpcy51c2VybmFtZVBsYWNlaG9sZGVyID0gJ1VTRVIuRU1BSUwnO1xuICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3VzZXJuYW1lJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdGhpcy51c2VybmFtZVBsYWNlaG9sZGVyID0gJ1VTRVIuVVNFUk5BTUUnO1xuICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3VzZXJuYW1lJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEVuYWJsZS9kaXNhYmxlIHJlZ2lzdHJhdGlvbiBsaW5rXG4gICAgICAgIHRoaXMuY2FuUmVnaXN0ZXIgPSBjb25maWcuZ2V0UHJvcGVydHlBc0Jvb2xlYW4oQ09SRV9DT05GSUdfT1BUSU9OUy5SRUdJU1RSQVRJT05fRU5BQkxFKTtcblxuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gRm9yIERFViBvbmx5XG4gICAgaWYgKHRoaXMuZW52aXJvbm1lbnQgJiYgdGhpcy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uID09PSBmYWxzZSAmJiB0aGlzLmVudmlyb25tZW50LmRlZmF1bHRBdXRoVmFsdWVzKSB7XG4gICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgdXNlciwgZm9yIHRlc3RpbmcuXG4gICAgICAvLyBPdmVycmlkZSB1c2luZyBlbnZpcm9ubWVudCwgaWYgYW55XG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLmVudmlyb25tZW50LmRlZmF1bHRBdXRoVmFsdWVzKTtcbiAgICB9XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICBkb1N1Ym1pdChldmVudD86IFVJRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQgfHwgdGhpcy5sb2FkaW5nKSByZXR1cm47XG5cbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5mb3JtLnZhbHVlO1xuICAgIHRoaXMuc2hvd1B3ZCA9IGZhbHNlOyAvLyBIaWRlIHBhc3N3b3JkXG4gICAgdGhpcy5lcnJvciA9IG51bGw7IC8vIFJlc2V0IGVycm9yXG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5vblN1Ym1pdFxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNTAwKSlcbiAgICAgICAgLnN1YnNjcmliZShyZXMgPT4gdGhpcy5tYXJrQXNMb2FkZWQoKSkpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm9uU3VibWl0LmVtaXQoe1xuICAgICAgdXNlcm5hbWU6IGRhdGEudXNlcm5hbWUsXG4gICAgICBwYXNzd29yZDogZGF0YS5wYXNzd29yZCxcbiAgICAgIG9mZmxpbmU6IGRhdGEub2ZmbGluZVxuICAgIH0pKTtcbiAgfVxuXG4gIHJlZ2lzdGVyKCkge1xuICAgIHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbW9kYWwgPSBhd2FpdCB0aGlzLm1vZGFsQ3RybC5jcmVhdGUoe1xuICAgICAgICBjb21wb25lbnQ6IFJlZ2lzdGVyTW9kYWwsXG4gICAgICAgIGJhY2tkcm9wRGlzbWlzczogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG1vZGFsLnByZXNlbnQoKTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIGZ1bmN0aW9ucyAtLSAqL1xuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIl19
@@ -175,10 +175,10 @@ export class AppInstallUpgradeCard {
175
175
  }
176
176
  getCompatibleInstallLinks(installLinks) {
177
177
  // Cordova already running: not need to install
178
- if (this.platform.is('cordova'))
178
+ if (this.platform.isCordova())
179
179
  return undefined;
180
180
  // If mobile web: return all
181
- if (this.platform.is('mobileweb')) {
181
+ if (this.platform.isMobileWeb()) {
182
182
  return installLinks;
183
183
  }
184
184
  return undefined;
@@ -385,4 +385,4 @@ AppInstallUpgradeCard.propDecorators = {
385
385
  showUpdateOfflineFeature: [{ type: Input }],
386
386
  onUpdateOfflineModeClick: [{ type: Output }]
387
387
  };
388
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbC11cGdyYWRlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2luc3RhbGwvaW5zdGFsbC11cGdyYWRlLWNhcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakYsT0FBTyxFQUFDLElBQUksRUFBYyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZHLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUNwRSxPQUFPLEVBQW1CLE1BQU0sRUFB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LE1BQU0sS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdCLENBQUM7S0FBQTtJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTyxDQUFDLG9CQUFvQjtRQUNyRCxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFYSxTQUFTLENBQUMsSUFBc0I7O1lBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtnQkFBRSxPQUFPLENBQUMsdUNBQXVDO1lBQ3hFLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEUsQ0FBQztLQUFBOzs7WUFsWkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwwQkFBMEI7Z0JBQ3BDLG8wTUFBa0Q7Z0JBRWxELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxVQUFVLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQzs7YUFDbkM7OztZQXhDd0IsZUFBZTtZQUdoQyxhQUFhO1lBSHFCLGVBQWU7WUFBakQsZUFBZTtZQWFmLGdCQUFnQjtZQWRTLGlCQUFpQjtZQUsxQyxlQUFlO1lBRWYsY0FBYzs0Q0E0RWpCLE1BQU0sU0FBQyxXQUFXOzs7c0JBM0JwQixLQUFLO2lDQUNMLEtBQUs7aUNBQ0wsS0FBSztnQ0FDTCxLQUFLO3VDQUVMLEtBQUs7dUNBV0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FsZXJ0Q29udHJvbGxlciwgTW9kYWxDb250cm9sbGVyLCBUb2FzdENvbnRyb2xsZXJ9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7ZnJvbSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvY29uZmlnLm1vZGVsJztcbmltcG9ydCB7Q29uZmlnU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHtQbGF0Zm9ybVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL3BsYXRmb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge05ldHdvcmtTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHtDT1JFX0NPTkZJR19PUFRJT05TfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcvY29yZS5jb25maWcnO1xuaW1wb3J0IHtWZXJzaW9uVXRpbHN9IGZyb20gJy4uLy4uL3NoYXJlZC92ZXJzaW9uL3ZlcnNpb25zJztcbmltcG9ydCB7c2xpZGVVcERvd25BbmltYXRpb259IGZyb20gJy4uLy4uL3NoYXJlZC9tYXRlcmlhbC9tYXRlcmlhbC5hbmltYXRpb25zJztcbmltcG9ydCB7aXNOaWxPckJsYW5rLCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsLCBpc05vdE5pbE9yQmxhbmssIHNsZWVwfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7RU5WSVJPTk1FTlR9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQge1Nob3dUb2FzdE9wdGlvbnMsIFRvYXN0c30gZnJvbSAnLi4vLi4vc2hhcmVkL3RvYXN0L3RvYXN0cyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtQZWVyfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9wZWVyLm1vZGVsJztcblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW5zdGFsbEFwcExpbmsge1xuICBuYW1lOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBwbGF0Zm9ybT86ICdhbmRyb2lkJyB8ICdpb3MnO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBmaWxlbmFtZT86IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBtaW1lVHlwZT86IHN0cmluZztcbiAgZG93bmxvYWRpbmc/OiBib29sZWFuO1xuICBsb2NhdGlvbj86IHN0cmluZztcbn1cblxuY29uc3QgTWltZVR5cGVzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIEFORFJPSURfQVBLOiAnYXBwbGljYXRpb24vdm5kLmFuZHJvaWQucGFja2FnZS1hcmNoaXZlJ1xufSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1pbnN0YWxsLXVwZ3JhZGUtY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnaW5zdGFsbC11cGdyYWRlLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbnN0YWxsLXVwZ3JhZGUtY2FyZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW3NsaWRlVXBEb3duQW5pbWF0aW9uXVxufSlcbmV4cG9ydCBjbGFzcyBBcHBJbnN0YWxsVXBncmFkZUNhcmQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIF9zaG93VXBkYXRlT2ZmbGluZUZlYXR1cmUgPSBmYWxzZTtcblxuICBsb2FkaW5nID0gdHJ1ZTtcbiAgaGFzRG93bmxvYWRlciA9IGZhbHNlO1xuICBkb3dubG9hZGluZyA9IGZhbHNlO1xuICB3YWl0aW5nTmV0d29yayA9IGZhbHNlO1xuICBpbnN0YWxsTGlua3M6IEluc3RhbGxBcHBMaW5rW107XG4gIHVwZ3JhZGVMaW5rczogSW5zdGFsbEFwcExpbmtbXTtcbiAgb2ZmbGluZTogYm9vbGVhbjtcbiAgdXBncmFkZVZlcnNpb246IHN0cmluZztcblxuICBASW5wdXQoKSBpc0xvZ2luOiBib29sZWFuO1xuICBASW5wdXQoKSBzaG93VXBncmFkZVdhcm5pbmcgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93T2ZmbGluZVdhcm5pbmcgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93SW5zdGFsbEJ1dHRvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBzaG93VXBkYXRlT2ZmbGluZUZlYXR1cmUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMuX3Nob3dVcGRhdGVPZmZsaW5lRmVhdHVyZSkgcmV0dXJuOyAvLyBTa2lwXG4gICAgdGhpcy5fc2hvd1VwZGF0ZU9mZmxpbmVGZWF0dXJlID0gdmFsdWU7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldCBzaG93VXBkYXRlT2ZmbGluZUZlYXR1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dVcGRhdGVPZmZsaW5lRmVhdHVyZTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBvblVwZGF0ZU9mZmxpbmVNb2RlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFVJRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcixcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdENvbnRyb2xsZXI6IFRvYXN0Q29udHJvbGxlcixcbiAgICBwcml2YXRlIGFsZXJ0Q29udHJvbGxlcjogQWxlcnRDb250cm9sbGVyLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBwbGF0Zm9ybTogUGxhdGZvcm1TZXJ2aWNlLFxuICAgIHB1YmxpYyBuZXR3b3JrOiBOZXR3b3JrU2VydmljZSxcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnRcbiAgKSB7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgdGhpcy5vZmZsaW5lID0gdGhpcy5uZXR3b3JrLm9mZmxpbmU7XG5cbiAgICAvLyBMaXN0ZW4gcG9kIGNvbmZpZ1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICBmcm9tKHRoaXMubmV0d29yay5yZWFkeSgpKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoMTAwMCksXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY29uZmlnU2VydmljZS5jb25maWcpLFxuICAgICAgICAgIGZpbHRlcihpc05vdE5pbClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKGNvbmZpZyA9PiB0aGlzLmNoZWNrTmVlZEluc3RhbGxPclVwZGF0ZShjb25maWcpKSk7XG5cbiAgICAvLyBMaXN0ZW4gbmV0d29yayBjaGFuZ2VzXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMubmV0d29yay5vbk5ldHdvcmtTdGF0dXNDaGFuZ2VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIC8vZGVib3VuY2VUaW1lKDQ1MCksXG4gICAgICAgICAgLy90YXAoKCkgPT4gdGhpcy53YWl0aW5nTmV0d29yayA9IGZhbHNlKSxcbiAgICAgICAgICBtYXAoY29ubmVjdGlvblR5cGUgPT4gY29ubmVjdGlvblR5cGUgPT09ICdub25lJyksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUob2ZmbGluZSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMub2ZmbGluZSAhPT0gb2ZmbGluZSkge1xuICAgICAgICAgICAgdGhpcy5vZmZsaW5lID0gb2ZmbGluZTtcbiAgICAgICAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIHRoaXMub25VcGRhdGVPZmZsaW5lTW9kZUNsaWNrLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5pbnN0YWxsTGlua3MgPSBudWxsO1xuICAgIHRoaXMudXBncmFkZUxpbmtzID0gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGRvd25sb2FkKGV2ZW50OiBVSUV2ZW50LCBsaW5rOiBJbnN0YWxsQXBwTGluaykge1xuICAgIGlmICghbGluayB8fCAhbGluay51cmwpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tpbnN0YWxsLXVwZ3JhZGUtY2FyZF0gTWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCBcXCdsaW5rLnVybFxcJycpO1xuICAgICAgcmV0dXJuOyAvLyBTa2lwXG4gICAgfVxuXG4gICAgLy8gTWFyayBsaW5rIGFzIGRvd25sb2FkaW5nXG4gICAgbGluay5kb3dubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMubGlzdGVuRG93bmxvYWRKb2IobGluay51cmwsIHRoaXMucGxhdGZvcm0uZG93bmxvYWQoe1xuICAgICAgdXJpOiBsaW5rLnVybCxcbiAgICAgIHRpdGxlOiBsaW5rLnRpdGxlLFxuICAgICAgZmlsZW5hbWU6IGxpbmsuZmlsZW5hbWUsXG4gICAgICBtaW1lVHlwZTogbGluay5taW1lVHlwZVxuICAgIH0pKVxuICAgICAgLnRoZW4oKGxvY2F0aW9uKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnBsYXRmb3JtLmNhbk9wZW5GaWxlKSBsaW5rLmxvY2F0aW9uID0gbG9jYXRpb247XG4gICAgICAgIGxpbmsuZG93bmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4gbGluay5kb3dubG9hZGluZyA9IGZhbHNlKVxuICAgICAgLnRoZW4oKCkgPT4gdGhpcy5tYXJrRm9yQ2hlY2soKSk7XG4gIH1cblxuICBhc3luYyBvcGVuRmlsZShldmVudDogVUlFdmVudCwgbGluazogSW5zdGFsbEFwcExpbmspIHtcbiAgICBpZiAoIWxpbmsgfHwgIWxpbmsubG9jYXRpb24gfHwgIWxpbmsubWltZVR5cGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tpbnN0YWxsLXVwZ3JhZGUtY2FyZF0gTWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCBcXCdsaW5rLmxvY2F0aW9uXFwnIG9yIFxcJ2xpbmsubWltZVR5cGVcXCcnKTtcbiAgICAgIHJldHVybjsgLy8gU2tpcFxuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5wbGF0Zm9ybS5vcGVuRmlsZShsaW5rLmxvY2F0aW9uLCBsaW5rLm1pbWVUeXBlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignW2luc3RhbGwtdXBncmFkZS1jYXJkXSBDYW5ub3Qgb3BlbiBmaWxlOiAnICsgKGVyciAmJiBlcnIubWVzc2FnZSAgfHwgZXJyKSwgZXJyKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB0cnlPbmxpbmUoKSB7XG4gICAgdGhpcy53YWl0aW5nTmV0d29yayA9IHRydWU7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm5ldHdvcmsudHJ5T25saW5lKHtcbiAgICAgICAgc2hvd0xvYWRpbmdUb2FzdDogZmFsc2UsXG4gICAgICAgIHNob3dPbmxpbmVUb2FzdDogdHJ1ZSxcbiAgICAgICAgc2hvd09mZmxpbmVUb2FzdDogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMud2FpdGluZ05ldHdvcmsgPSBmYWxzZTtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UGxhdGZvcm1OYW1lKHBsYXRmb3JtOiAnYW5kcm9pZCd8J2lvcycpIHtcbiAgICBzd2l0Y2ggKHBsYXRmb3JtKSB7XG4gICAgICBjYXNlICdhbmRyb2lkJzpcbiAgICAgICAgcmV0dXJuICdBbmRyb2lkJztcbiAgICAgIGNhc2UgJ2lvcyc6XG4gICAgICAgIHJldHVybiAnaU9TJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBhc0xpbmsodmFsdWU6IGFueSk6IEluc3RhbGxBcHBMaW5rIHtcbiAgICByZXR1cm4gdmFsdWUgYXMgSW5zdGFsbEFwcExpbms7XG4gIH1cblxuICAvKiAtLSBwcml2YXRlIG1ldGhvZCAgLS0gKi9cblxuICBwcml2YXRlIGFzeW5jIGNoZWNrTmVlZEluc3RhbGxPclVwZGF0ZShjb25maWc6IENvbmZpZ3VyYXRpb24pIHtcbiAgICBpZiAoIWNvbmZpZykgcmV0dXJuOyAvLyBTa2lwXG5cbiAgICBjb25zb2xlLmluZm8oJ1tpbnN0YWxsLXVwZ3JhZGUtY2FyZF0gQ2hlY2sgaWYgbmVlZCB0byBpbnN0YWxsIG9yIHVwZ3JhZGUuLi4nKTtcblxuICAgIHRoaXMuaGFzRG93bmxvYWRlciA9IHRoaXMucGxhdGZvcm0uY2FuRG93bmxvYWQ7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbGlua3MgPSB0aGlzLmdldExpbmtzKGNvbmZpZyk7XG5cbiAgICAgIC8vIENoZWNrIGZvciB1cGdyYWRlXG4gICAgICB0aGlzLnVwZ3JhZGVMaW5rcyA9IHRoaXMuZ2V0Q29tcGF0aWJsZVVwZ3JhZGVMaW5rcyhsaW5rcywgY29uZmlnKTtcblxuICAgICAgaWYgKGlzTm90RW1wdHlBcnJheSh0aGlzLnVwZ3JhZGVMaW5rcykpIHtcbiAgICAgICAgY29uc29sZS5pbmZvKGBbaW5zdGFsbC11cGdyYWRlLWNhcmRdIEZpbmQgdXBncmFkZSBsaW5rczogJHt0aGlzLnVwZ3JhZGVMaW5rcy5tYXAobCA9PiBsLnVybCkuam9pbignLCcpfWApO1xuICAgICAgICB0aGlzLmluc3RhbGxMaW5rcyA9IG51bGw7XG4gICAgICAgIHRoaXMubGlzdGVuRG93bmxvYWRKb2JzKCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gQ2hlY2sgZm9yIGluc3RhbGwgbGlua3NcbiAgICAgICAgdGhpcy5pbnN0YWxsTGlua3MgPSB0aGlzLmdldENvbXBhdGlibGVJbnN0YWxsTGlua3MobGlua3MpO1xuICAgICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHRoaXMuaW5zdGFsbExpbmtzKSkge1xuICAgICAgICAgIGNvbnNvbGUuaW5mbyhgW2luc3RhbGwtdXBncmFkZS1jYXJkXSBGaW5kIGluc3RhbGwgbGlua3MgJHt0aGlzLmluc3RhbGxMaW5rcy5tYXAobCA9PiBsLnVybCkuam9pbignLCcpfWApO1xuICAgICAgICAgIGF3YWl0IHNsZWVwKDEwMDApOyAvLyBBZGQgYSBkZWxheSwgZm9yIGFuaW1hdGlvblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tcGF0aWJsZUluc3RhbGxMaW5rcyhpbnN0YWxsTGlua3M6IEluc3RhbGxBcHBMaW5rW10pOiBJbnN0YWxsQXBwTGlua1tdIHtcblxuICAgIC8vIENvcmRvdmEgYWxyZWFkeSBydW5uaW5nOiBub3QgbmVlZCB0byBpbnN0YWxsXG4gICAgaWYgKHRoaXMucGxhdGZvcm0uaXMoJ2NvcmRvdmEnKSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIC8vIElmIG1vYmlsZSB3ZWI6IHJldHVybiBhbGxcbiAgICBpZiAodGhpcy5wbGF0Zm9ybS5pcygnbW9iaWxld2ViJykpIHtcbiAgICAgIHJldHVybiBpbnN0YWxsTGlua3M7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tcGF0aWJsZVVwZ3JhZGVMaW5rcyhpbnN0YWxsTGlua3M6IEluc3RhbGxBcHBMaW5rW10sIGNvbmZpZzogQ29uZmlndXJhdGlvbik6IEluc3RhbGxBcHBMaW5rW10ge1xuICAgIGNvbnN0IGFwcFZlcnNpb24gPSB0aGlzLmVudmlyb25tZW50LnZlcnNpb247XG4gICAgY29uc3QgYXBwTWluVmVyc2lvbkZyb21Qb2QgPSBjb25maWcuZ2V0UHJvcGVydHkoQ09SRV9DT05GSUdfT1BUSU9OUy5BUFBfTUlOX1ZFUlNJT04pO1xuXG4gICAgaWYgKCFhcHBWZXJzaW9uKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdNaXNzaW5nIHZhbHVlIGZvciBcXCdlbnZpcm9ubWVudC52ZXJzaW9uXFwnOiBjYW5ub3QgY2hlY2sgYXBwIGNvbXBhdGliaWxpdHkhJyk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IG5lZWRVcGdyYWRlID0gYXBwTWluVmVyc2lvbkZyb21Qb2QgJiYgIVZlcnNpb25VdGlscy5pc0NvbXBhdGlibGUoYXBwTWluVmVyc2lvbkZyb21Qb2QsIGFwcFZlcnNpb24pO1xuICAgIGlmICghbmVlZFVwZ3JhZGUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCB1cGdyYWRlTGlua3MgPSBpbnN0YWxsTGlua3NcbiAgICAgIC5maWx0ZXIobGluayA9PiB0aGlzLnBsYXRmb3JtLmlzKCdtb2JpbGV3ZWInKSB8fCAobGluay5wbGF0Zm9ybSAmJiB0aGlzLnBsYXRmb3JtLmlzKGxpbmsucGxhdGZvcm0pKSk7XG5cbiAgICAvLyBVc2UgbWluIHZlcnNpb24gYXMgZGVmYXVsdCB2ZXJzaW9uXG4gICAgdXBncmFkZUxpbmtzLmZvckVhY2gobGluayA9PiB7XG4gICAgICBsaW5rLnZlcnNpb24gPSBsaW5rLnZlcnNpb24gfHwgYXBwTWluVmVyc2lvbkZyb21Qb2Q7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXNOb3RFbXB0eUFycmF5KHVwZ3JhZGVMaW5rcykgPyB1cGdyYWRlTGlua3MgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldExpbmtzKGNvbmZpZzogQ29uZmlndXJhdGlvbik6IEluc3RhbGxBcHBMaW5rW10ge1xuICAgIGNvbnN0IHJlc3VsdDogSW5zdGFsbEFwcExpbmtbXSA9IFtdO1xuXG4gICAgLy8gQW5kcm9pZFxuICAgIHtcbiAgICAgIC8vIEdldCBVUkwgKGZyb20gY29uZmlnLCBvciBlbnZpcm9ubWVudClcbiAgICAgIGxldCB1cmwgPSBjb25maWcuZ2V0UHJvcGVydHkoQ09SRV9DT05GSUdfT1BUSU9OUy5BTkRST0lEX0lOU1RBTExfVVJMKTtcbiAgICAgIGlmIChpc05pbE9yQmxhbmsodXJsKSkgdXJsID0gdGhpcy5lbnZpcm9ubWVudC5kZWZhdWx0QW5kcm9pZEluc3RhbGxVcmwgfHwgbnVsbDtcblxuICAgICAgLy8gUmVzb2x2ZSByZWxhdGl2ZSBVUkxcbiAgICAgIGNvbnN0IHBlZXIgPSB0aGlzLm5ldHdvcmsucGVlcjtcbiAgICAgIGlmIChwZWVyICYmICh1cmwuc3RhcnRzV2l0aCgnLi8nKSB8fCB1cmwuc3RhcnRzV2l0aCgnLycpKSkge1xuICAgICAgICB1cmwgPSBQZWVyLnBhdGgocGVlciwgdXJsKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWluVmVyc2lvbiA9IGNvbmZpZy5nZXRQcm9wZXJ0eShDT1JFX0NPTkZJR19PUFRJT05TLkFQUF9NSU5fVkVSU0lPTik7XG5cbiAgICAgIC8vIENvbXB1dGUgQXBwIG5hbWVcbiAgICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IGlzTm90TmlsT3JCbGFuayh1cmwpICYmIGNvbmZpZy5sYWJlbCB8fCB0aGlzLmVudmlyb25tZW50LmRlZmF1bHRBcHBOYW1lIHx8ICdTVU1BUmlTJztcblxuICAgICAgaWYgKHVybCkge1xuICAgICAgICBsZXQgdGl0bGU6IHN0cmluZztcbiAgICAgICAgbGV0IG1pbWVUeXBlOiBzdHJpbmc7XG5cbiAgICAgICAgLy8gR2V0IGZpbGUgbmFtZVxuICAgICAgICBsZXQgZmlsZW5hbWUgPSB0aGlzLmdldEZpbGVuYW1lKHVybCk7XG4gICAgICAgIGxldCB2ZXJzaW9uID0gbWluVmVyc2lvbiB8fCAnbGF0ZXN0JztcblxuICAgICAgICAvLyBPSywgdGhpcyBpcyBhIGRvd25sb2FkYWJsZSBBUEsgZmlsZSAoZS5nLiBOT1QgYSBsaW5rIHRvIGEgcGxheXN0b3JlKVxuICAgICAgICBpZiAoZmlsZW5hbWU/LmVuZHNXaXRoKCcuYXBrJykpIHtcbiAgICAgICAgICAvLyBEZWZpbmUgbWltZSB0eXBlXG4gICAgICAgICAgbWltZVR5cGUgPSBNaW1lVHlwZXMuQU5EUk9JRF9BUEs7XG5cbiAgICAgICAgICAvLyBHZXQgdGhlIGZpbGUgdmVyc2lvbiAoaWYgYW55KVxuICAgICAgICAgIGNvbnN0IHZlcnNpb25NYXRjaGVzID0gLy12KFsxLTldWzAtOV0qXFwuWzAtOV0rXFwuKDo/KDo/YWxwaGF8YmV0YXxyYyk/WzAtOV0qKSkvaS5leGVjKGZpbGVuYW1lKTtcbiAgICAgICAgICB2ZXJzaW9uID0gdmVyc2lvbk1hdGNoZXMgJiYgdmVyc2lvbk1hdGNoZXNbMV0gfHwgdmVyc2lvbjtcblxuICAgICAgICAgIC8vIENvbXB1dGUgYSBuZXcgZmlsZSBuYW1lLCB3aXRoIHRoZSB2ZXJzaW9uXG4gICAgICAgICAgaWYgKGlzTm90TmlsT3JCbGFuayhuYW1lKSAmJiB2ZXJzaW9uICE9PSAnbGF0ZXN0Jykge1xuICAgICAgICAgICAgZmlsZW5hbWUgPSBgJHtuYW1lfS12JHt2ZXJzaW9ufS5hcGtgLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB0aXRsZSA9IGAke25hbWV9IHYke3ZlcnNpb259YDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlbHNlIHtcblxuICAgICAgICAgICAgLy8gUmVwbGFjZSAnbGF0ZXN0JyB3aXRoIHRoZSBhcHAgdmVyc2lvbiwgaWYgcHJlc2VudFxuICAgICAgICAgICAgaWYgKGZpbGVuYW1lLmluZGV4T2YoJ2xhdGVzdCcpKSB7XG4gICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZSgnbGF0ZXN0JywgdmVyc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0LnB1c2goeyBuYW1lLCB1cmwsIHBsYXRmb3JtOiAnYW5kcm9pZCcsIHZlcnNpb24sIGZpbGVuYW1lLCB0aXRsZSwgbWltZVR5cGUgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaU9TIC0gVE9ET1xuICAgIC8ve1xuICAgIC8vICAoLi4uKVxuICAgIC8vfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZW5hbWUodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdXJsKSByZXR1cm47XG4gICAgLy8gR2V0IGxhc3QgcGFydCAob3IgYWxsIHN0cmluZywgaWYgbm8gJy8nKVxuICAgIGxldCBmaWxlbmFtZSA9IHVybC5zdWJzdHJpbmcodXJsLmxhc3RJbmRleE9mKCcvJykrMSk7XG5cbiAgICBjb25zdCBxdWVyeVBhcmFtSW5kZXggPSBmaWxlbmFtZS5pbmRleE9mKCc/Jyk7XG4gICAgaWYgKHF1ZXJ5UGFyYW1JbmRleCAhPT0gLTEpIHtcbiAgICAgIC8vIFJlbW92ZSBxdWVyeSBwYXJhbXNcbiAgICAgIHJldHVybiBmaWxlbmFtZS5zdWJzdHJpbmcoMCwgcXVlcnlQYXJhbUluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlsZW5hbWU7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkRvd25sb2FkSm9icygpIHtcbiAgICAvLyBMaXN0ZW5pbmcgZG93bmxvYWRpbmcgcHJvbWlzZSwgaWYgZXhpc3RzXG4gICAgKHRoaXMudXBncmFkZUxpbmtzIHx8IFtdKS5mb3JFYWNoKGxpbmsgPT4ge1xuICAgICAgY29uc3Qgam9iID0gdGhpcy5wbGF0Zm9ybS5nZXREb3dubG9hZGluZ0pvYihsaW5rLnVybCk7XG4gICAgICBpZiAoam9iKSB7XG4gICAgICAgIGxpbmsuZG93bmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmxpc3RlbkRvd25sb2FkSm9iKGxpbmsudXJsLCBqb2IpXG4gICAgICAgICAgLnRoZW4oKGxvY2F0aW9uKSA9PiB7XG4gICAgICAgICAgICBsaW5rLmxvY2F0aW9uID0gbG9jYXRpb247XG4gICAgICAgICAgICBsaW5rLmRvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKCkgPT4gbGluay5kb3dubG9hZGluZyA9IGZhbHNlKVxuICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMubWFya0ZvckNoZWNrKCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsaXN0ZW5Eb3dubG9hZEpvYih1cmw6IHN0cmluZywgam9iOiBPYnNlcnZhYmxlPHN0cmluZz4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghdXJsIHx8ICFqb2IpIHJldHVybjsgLy8gU2tpcFxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIE1hcmsgYXMgZG93bmxvYWRpbmdcbiAgICAgIGlmICghdGhpcy5kb3dubG9hZGluZykge1xuICAgICAgICBjb25zb2xlLmluZm8oYFtpbnN0YWxsLXVwZ3JhZGUtY2FyZF0gQXNraW5nIHBsYXRmb3JtIHRvIGRvd25sb2FkICcke3VybH0nLi4uYCk7XG4gICAgICAgIHRoaXMuZG93bmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhgW2luc3RhbGwtdXBncmFkZS1jYXJkXSBQbGF0Zm9ybSBpcyBhbHJlYWR5IGRvd25sb2FkaW5nIWApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsb2NhdGlvbiA9IGF3YWl0IGpvYi50b1Byb21pc2UoKTtcbiAgICAgIGlmIChsb2NhdGlvbikge1xuICAgICAgICBjb25zb2xlLmluZm8oJ1tpbnN0YWxsLXVwZ3JhZGUtY2FyZF0gRmlsZSBkb3dubG9hZGVkIGF0OiAnICsgbG9jYXRpb24pO1xuICAgICAgICB0aGlzLnNob3dEb3dubG9hZENvbXBsZXRlRGlhbG9nKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbG9jYXRpb247XG4gICAgfVxuICAgIC8vIEZhaWxlZDogZGlzcGxheSBhIHRvYXN0XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignW2luc3RhbGwtdXBncmFkZS1jYXJkXSBEb3dubG9hZCBmYWlsZWQ6ICcgKyAoZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycikpO1xuICAgICAgdGhpcy5zaG93RG93bmxvYWRGYWlsZWRUb2FzdChlcnIpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMuZG93bmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93RG93bmxvYWRGYWlsZWRUb2FzdChlcnIpIHtcbiAgICByZXR1cm4gdGhpcy5zaG93VG9hc3Qoe1xuICAgICAgbWVzc2FnZTogJ0VSUk9SLkRPV05MT0FEX0ZBSUxFRCcsXG4gICAgICBtZXNzYWdlUGFyYW1zOiB7ZXJyb3I6IGVycn0sXG4gICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNob3dEb3dubG9hZENvbXBsZXRlRGlhbG9nKCkge1xuICAgIGlmICghdGhpcy5fc3Vic2NyaXB0aW9uKSByZXR1cm47IC8vIFNraXAgaWYgY29tcG9uZW50IGhhcyBiZWVuIGRlc3Ryb3llZFxuXG4gICAgY29uc3QgdHJhbnNsYXRpb25zID0gYXdhaXQgdGhpcy50cmFuc2xhdGUuZ2V0KFtcbiAgICAgICdJTkZPLkFMRVJUX0hFQURFUicsXG4gICAgICAnSU5GTy5VUERBVEVfQVBQX0RPV05MT0FERUQnLFxuICAgICAgJ0NPTU1PTi5CVE5fQ0xPU0UnXG4gICAgXSkudG9Qcm9taXNlKCk7XG4gICAgY29uc3QgYWxlcnQgPSBhd2FpdCB0aGlzLmFsZXJ0Q29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgaGVhZGVyOiB0cmFuc2xhdGlvbnNbJ0lORk8uQUxFUlRfSEVBREVSJ10sXG4gICAgICBtZXNzYWdlOiB0cmFuc2xhdGlvbnNbJ0lORk8uVVBEQVRFX0FQUF9ET1dOTE9BREVEJ10sXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fQ0xPU0UnXSxcbiAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcbiAgICAgICAgICBjc3NDbGFzczogJ3NlY29uZGFyeSdcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgYXdhaXQgYWxlcnQucHJlc2VudCgpO1xuICAgIGF3YWl0IGFsZXJ0Lm9uRGlkRGlzbWlzcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrRm9yQ2hlY2soKSB7XG4gICAgaWYgKCF0aGlzLl9zdWJzY3JpcHRpb24pIHJldHVybjsgLy8gU2tpcCBpZiBkZXN0cm95ZWRcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzaG93VG9hc3Qob3B0czogU2hvd1RvYXN0T3B0aW9ucykge1xuICAgIGlmICghdGhpcy5fc3Vic2NyaXB0aW9uKSByZXR1cm47IC8vIFNraXAgaWYgY29tcG9uZW50IGhhcyBiZWVuIGRlc3Ryb3llZFxuICAgIGF3YWl0IFRvYXN0cy5zaG93KHRoaXMudG9hc3RDb250cm9sbGVyLCB0aGlzLnRyYW5zbGF0ZSwgb3B0cyk7XG4gIH1cbn1cbiJdfQ==
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbC11cGdyYWRlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2luc3RhbGwvaW5zdGFsbC11cGdyYWRlLWNhcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakYsT0FBTyxFQUFDLElBQUksRUFBYyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZHLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUNwRSxPQUFPLEVBQW1CLE1BQU0sRUFB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LEVBQUUsQ0FBQztRQUM3QixDQUFDO0tBQUE7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU8sQ0FBQyxvQkFBb0I7UUFDckQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRWEsU0FBUyxDQUFDLElBQXNCOztZQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7Z0JBQUUsT0FBTyxDQUFDLHVDQUF1QztZQUN4RSxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hFLENBQUM7S0FBQTs7O1lBbFpGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsMEJBQTBCO2dCQUNwQyxvME1BQWtEO2dCQUVsRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsVUFBVSxFQUFFLENBQUMsb0JBQW9CLENBQUM7O2FBQ25DOzs7WUF4Q3dCLGVBQWU7WUFHaEMsYUFBYTtZQUhxQixlQUFlO1lBQWpELGVBQWU7WUFhZixnQkFBZ0I7WUFkUyxpQkFBaUI7WUFLMUMsZUFBZTtZQUVmLGNBQWM7NENBNEVqQixNQUFNLFNBQUMsV0FBVzs7O3NCQTNCcEIsS0FBSztpQ0FDTCxLQUFLO2lDQUNMLEtBQUs7Z0NBQ0wsS0FBSzt1Q0FFTCxLQUFLO3VDQVdMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBbGVydENvbnRyb2xsZXIsIE1vZGFsQ29udHJvbGxlciwgVG9hc3RDb250cm9sbGVyfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge2Zyb20sIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2NvbmZpZy5tb2RlbCc7XG5pbXBvcnQge0NvbmZpZ1NlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7UGxhdGZvcm1TZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9wbGF0Zm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtOZXR3b3JrU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvbmV0d29yay5zZXJ2aWNlJztcbmltcG9ydCB7Q09SRV9DT05GSUdfT1BUSU9OU30gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnL2NvcmUuY29uZmlnJztcbmltcG9ydCB7VmVyc2lvblV0aWxzfSBmcm9tICcuLi8uLi9zaGFyZWQvdmVyc2lvbi92ZXJzaW9ucyc7XG5pbXBvcnQge3NsaWRlVXBEb3duQW5pbWF0aW9ufSBmcm9tICcuLi8uLi9zaGFyZWQvbWF0ZXJpYWwvbWF0ZXJpYWwuYW5pbWF0aW9ucyc7XG5pbXBvcnQge2lzTmlsT3JCbGFuaywgaXNOb3RFbXB0eUFycmF5LCBpc05vdE5pbCwgaXNOb3ROaWxPckJsYW5rLCBzbGVlcH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQge0VOVklST05NRU5UfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHtTaG93VG9hc3RPcHRpb25zLCBUb2FzdHN9IGZyb20gJy4uLy4uL3NoYXJlZC90b2FzdC90b2FzdHMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7UGVlcn0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvcGVlci5tb2RlbCc7XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEluc3RhbGxBcHBMaW5rIHtcbiAgbmFtZTogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgcGxhdGZvcm0/OiAnYW5kcm9pZCcgfCAnaW9zJztcbiAgdmVyc2lvbj86IHN0cmluZztcbiAgZmlsZW5hbWU/OiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgbWltZVR5cGU/OiBzdHJpbmc7XG4gIGRvd25sb2FkaW5nPzogYm9vbGVhbjtcbiAgbG9jYXRpb24/OiBzdHJpbmc7XG59XG5cbmNvbnN0IE1pbWVUeXBlcyA9IE9iamVjdC5mcmVlemUoe1xuICBBTkRST0lEX0FQSzogJ2FwcGxpY2F0aW9uL3ZuZC5hbmRyb2lkLnBhY2thZ2UtYXJjaGl2ZSdcbn0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaW5zdGFsbC11cGdyYWRlLWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJ2luc3RhbGwtdXBncmFkZS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5zdGFsbC11cGdyYWRlLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtzbGlkZVVwRG93bkFuaW1hdGlvbl1cbn0pXG5leHBvcnQgY2xhc3MgQXBwSW5zdGFsbFVwZ3JhZGVDYXJkIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBfc2hvd1VwZGF0ZU9mZmxpbmVGZWF0dXJlID0gZmFsc2U7XG5cbiAgbG9hZGluZyA9IHRydWU7XG4gIGhhc0Rvd25sb2FkZXIgPSBmYWxzZTtcbiAgZG93bmxvYWRpbmcgPSBmYWxzZTtcbiAgd2FpdGluZ05ldHdvcmsgPSBmYWxzZTtcbiAgaW5zdGFsbExpbmtzOiBJbnN0YWxsQXBwTGlua1tdO1xuICB1cGdyYWRlTGlua3M6IEluc3RhbGxBcHBMaW5rW107XG4gIG9mZmxpbmU6IGJvb2xlYW47XG4gIHVwZ3JhZGVWZXJzaW9uOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgaXNMb2dpbjogYm9vbGVhbjtcbiAgQElucHV0KCkgc2hvd1VwZ3JhZGVXYXJuaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd09mZmxpbmVXYXJuaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0luc3RhbGxCdXR0b24gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzZXQgc2hvd1VwZGF0ZU9mZmxpbmVGZWF0dXJlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlID09PSB0aGlzLl9zaG93VXBkYXRlT2ZmbGluZUZlYXR1cmUpIHJldHVybjsgLy8gU2tpcFxuICAgIHRoaXMuX3Nob3dVcGRhdGVPZmZsaW5lRmVhdHVyZSA9IHZhbHVlO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXQgc2hvd1VwZGF0ZU9mZmxpbmVGZWF0dXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zaG93VXBkYXRlT2ZmbGluZUZlYXR1cmU7XG4gIH1cblxuICBAT3V0cHV0KCkgb25VcGRhdGVPZmZsaW5lTW9kZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxVSUV2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RDb250cm9sbGVyOiBUb2FzdENvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBhbGVydENvbnRyb2xsZXI6IEFsZXJ0Q29udHJvbGxlcixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgcGxhdGZvcm06IFBsYXRmb3JtU2VydmljZSxcbiAgICBwdWJsaWMgbmV0d29yazogTmV0d29ya1NlcnZpY2UsXG4gICAgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50XG4gICkge1xuXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcblxuICAgIHRoaXMub2ZmbGluZSA9IHRoaXMubmV0d29yay5vZmZsaW5lO1xuXG4gICAgLy8gTGlzdGVuIHBvZCBjb25maWdcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgZnJvbSh0aGlzLm5ldHdvcmsucmVhZHkoKSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnKSxcbiAgICAgICAgICBmaWx0ZXIoaXNOb3ROaWwpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZShjb25maWcgPT4gdGhpcy5jaGVja05lZWRJbnN0YWxsT3JVcGRhdGUoY29uZmlnKSkpO1xuXG4gICAgLy8gTGlzdGVuIG5ldHdvcmsgY2hhbmdlc1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLm5ldHdvcmsub25OZXR3b3JrU3RhdHVzQ2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICAvL2RlYm91bmNlVGltZSg0NTApLFxuICAgICAgICAgIC8vdGFwKCgpID0+IHRoaXMud2FpdGluZ05ldHdvcmsgPSBmYWxzZSksXG4gICAgICAgICAgbWFwKGNvbm5lY3Rpb25UeXBlID0+IGNvbm5lY3Rpb25UeXBlID09PSAnbm9uZScpLFxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKG9mZmxpbmUgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLm9mZmxpbmUgIT09IG9mZmxpbmUpIHtcbiAgICAgICAgICAgIHRoaXMub2ZmbGluZSA9IG9mZmxpbmU7XG4gICAgICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICB0aGlzLm9uVXBkYXRlT2ZmbGluZU1vZGVDbGljay5jb21wbGV0ZSgpO1xuICAgIHRoaXMuaW5zdGFsbExpbmtzID0gbnVsbDtcbiAgICB0aGlzLnVwZ3JhZGVMaW5rcyA9IG51bGw7XG4gIH1cblxuICBhc3luYyBkb3dubG9hZChldmVudDogVUlFdmVudCwgbGluazogSW5zdGFsbEFwcExpbmspIHtcbiAgICBpZiAoIWxpbmsgfHwgIWxpbmsudXJsKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbaW5zdGFsbC11cGdyYWRlLWNhcmRdIE1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQgXFwnbGluay51cmxcXCcnKTtcbiAgICAgIHJldHVybjsgLy8gU2tpcFxuICAgIH1cblxuICAgIC8vIE1hcmsgbGluayBhcyBkb3dubG9hZGluZ1xuICAgIGxpbmsuZG93bmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG5cbiAgICB0aGlzLmxpc3RlbkRvd25sb2FkSm9iKGxpbmsudXJsLCB0aGlzLnBsYXRmb3JtLmRvd25sb2FkKHtcbiAgICAgIHVyaTogbGluay51cmwsXG4gICAgICB0aXRsZTogbGluay50aXRsZSxcbiAgICAgIGZpbGVuYW1lOiBsaW5rLmZpbGVuYW1lLFxuICAgICAgbWltZVR5cGU6IGxpbmsubWltZVR5cGVcbiAgICB9KSlcbiAgICAgIC50aGVuKChsb2NhdGlvbikgPT4ge1xuICAgICAgICBpZiAodGhpcy5wbGF0Zm9ybS5jYW5PcGVuRmlsZSkgbGluay5sb2NhdGlvbiA9IGxvY2F0aW9uO1xuICAgICAgICBsaW5rLmRvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IGxpbmsuZG93bmxvYWRpbmcgPSBmYWxzZSlcbiAgICAgIC50aGVuKCgpID0+IHRoaXMubWFya0ZvckNoZWNrKCkpO1xuICB9XG5cbiAgYXN5bmMgb3BlbkZpbGUoZXZlbnQ6IFVJRXZlbnQsIGxpbms6IEluc3RhbGxBcHBMaW5rKSB7XG4gICAgaWYgKCFsaW5rIHx8ICFsaW5rLmxvY2F0aW9uIHx8ICFsaW5rLm1pbWVUeXBlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbaW5zdGFsbC11cGdyYWRlLWNhcmRdIE1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQgXFwnbGluay5sb2NhdGlvblxcJyBvciBcXCdsaW5rLm1pbWVUeXBlXFwnJyk7XG4gICAgICByZXR1cm47IC8vIFNraXBcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMucGxhdGZvcm0ub3BlbkZpbGUobGluay5sb2NhdGlvbiwgbGluay5taW1lVHlwZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tpbnN0YWxsLXVwZ3JhZGUtY2FyZF0gQ2Fubm90IG9wZW4gZmlsZTogJyArIChlcnIgJiYgZXJyLm1lc3NhZ2UgIHx8IGVyciksIGVycik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdHJ5T25saW5lKCkge1xuICAgIHRoaXMud2FpdGluZ05ldHdvcmsgPSB0cnVlO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5uZXR3b3JrLnRyeU9ubGluZSh7XG4gICAgICAgIHNob3dMb2FkaW5nVG9hc3Q6IGZhbHNlLFxuICAgICAgICBzaG93T25saW5lVG9hc3Q6IHRydWUsXG4gICAgICAgIHNob3dPZmZsaW5lVG9hc3Q6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICB0aGlzLndhaXRpbmdOZXR3b3JrID0gZmFsc2U7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIGdldFBsYXRmb3JtTmFtZShwbGF0Zm9ybTogJ2FuZHJvaWQnfCdpb3MnKSB7XG4gICAgc3dpdGNoIChwbGF0Zm9ybSkge1xuICAgICAgY2FzZSAnYW5kcm9pZCc6XG4gICAgICAgIHJldHVybiAnQW5kcm9pZCc7XG4gICAgICBjYXNlICdpb3MnOlxuICAgICAgICByZXR1cm4gJ2lPUyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgYXNMaW5rKHZhbHVlOiBhbnkpOiBJbnN0YWxsQXBwTGluayB7XG4gICAgcmV0dXJuIHZhbHVlIGFzIEluc3RhbGxBcHBMaW5rO1xuICB9XG5cbiAgLyogLS0gcHJpdmF0ZSBtZXRob2QgIC0tICovXG5cbiAgcHJpdmF0ZSBhc3luYyBjaGVja05lZWRJbnN0YWxsT3JVcGRhdGUoY29uZmlnOiBDb25maWd1cmF0aW9uKSB7XG4gICAgaWYgKCFjb25maWcpIHJldHVybjsgLy8gU2tpcFxuXG4gICAgY29uc29sZS5pbmZvKCdbaW5zdGFsbC11cGdyYWRlLWNhcmRdIENoZWNrIGlmIG5lZWQgdG8gaW5zdGFsbCBvciB1cGdyYWRlLi4uJyk7XG5cbiAgICB0aGlzLmhhc0Rvd25sb2FkZXIgPSB0aGlzLnBsYXRmb3JtLmNhbkRvd25sb2FkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGxpbmtzID0gdGhpcy5nZXRMaW5rcyhjb25maWcpO1xuXG4gICAgICAvLyBDaGVjayBmb3IgdXBncmFkZVxuICAgICAgdGhpcy51cGdyYWRlTGlua3MgPSB0aGlzLmdldENvbXBhdGlibGVVcGdyYWRlTGlua3MobGlua3MsIGNvbmZpZyk7XG5cbiAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkodGhpcy51cGdyYWRlTGlua3MpKSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhgW2luc3RhbGwtdXBncmFkZS1jYXJkXSBGaW5kIHVwZ3JhZGUgbGlua3M6ICR7dGhpcy51cGdyYWRlTGlua3MubWFwKGwgPT4gbC51cmwpLmpvaW4oJywnKX1gKTtcbiAgICAgICAgdGhpcy5pbnN0YWxsTGlua3MgPSBudWxsO1xuICAgICAgICB0aGlzLmxpc3RlbkRvd25sb2FkSm9icygpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIENoZWNrIGZvciBpbnN0YWxsIGxpbmtzXG4gICAgICAgIHRoaXMuaW5zdGFsbExpbmtzID0gdGhpcy5nZXRDb21wYXRpYmxlSW5zdGFsbExpbmtzKGxpbmtzKTtcbiAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheSh0aGlzLmluc3RhbGxMaW5rcykpIHtcbiAgICAgICAgICBjb25zb2xlLmluZm8oYFtpbnN0YWxsLXVwZ3JhZGUtY2FyZF0gRmluZCBpbnN0YWxsIGxpbmtzICR7dGhpcy5pbnN0YWxsTGlua3MubWFwKGwgPT4gbC51cmwpLmpvaW4oJywnKX1gKTtcbiAgICAgICAgICBhd2FpdCBzbGVlcCgxMDAwKTsgLy8gQWRkIGEgZGVsYXksIGZvciBhbmltYXRpb25cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldENvbXBhdGlibGVJbnN0YWxsTGlua3MoaW5zdGFsbExpbmtzOiBJbnN0YWxsQXBwTGlua1tdKTogSW5zdGFsbEFwcExpbmtbXSB7XG5cbiAgICAvLyBDb3Jkb3ZhIGFscmVhZHkgcnVubmluZzogbm90IG5lZWQgdG8gaW5zdGFsbFxuICAgIGlmICh0aGlzLnBsYXRmb3JtLmlzQ29yZG92YSgpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgLy8gSWYgbW9iaWxlIHdlYjogcmV0dXJuIGFsbFxuICAgIGlmICh0aGlzLnBsYXRmb3JtLmlzTW9iaWxlV2ViKCkpIHtcbiAgICAgIHJldHVybiBpbnN0YWxsTGlua3M7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tcGF0aWJsZVVwZ3JhZGVMaW5rcyhpbnN0YWxsTGlua3M6IEluc3RhbGxBcHBMaW5rW10sIGNvbmZpZzogQ29uZmlndXJhdGlvbik6IEluc3RhbGxBcHBMaW5rW10ge1xuICAgIGNvbnN0IGFwcFZlcnNpb24gPSB0aGlzLmVudmlyb25tZW50LnZlcnNpb247XG4gICAgY29uc3QgYXBwTWluVmVyc2lvbkZyb21Qb2QgPSBjb25maWcuZ2V0UHJvcGVydHkoQ09SRV9DT05GSUdfT1BUSU9OUy5BUFBfTUlOX1ZFUlNJT04pO1xuXG4gICAgaWYgKCFhcHBWZXJzaW9uKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdNaXNzaW5nIHZhbHVlIGZvciBcXCdlbnZpcm9ubWVudC52ZXJzaW9uXFwnOiBjYW5ub3QgY2hlY2sgYXBwIGNvbXBhdGliaWxpdHkhJyk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IG5lZWRVcGdyYWRlID0gYXBwTWluVmVyc2lvbkZyb21Qb2QgJiYgIVZlcnNpb25VdGlscy5pc0NvbXBhdGlibGUoYXBwTWluVmVyc2lvbkZyb21Qb2QsIGFwcFZlcnNpb24pO1xuICAgIGlmICghbmVlZFVwZ3JhZGUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCB1cGdyYWRlTGlua3MgPSBpbnN0YWxsTGlua3NcbiAgICAgIC5maWx0ZXIobGluayA9PiB0aGlzLnBsYXRmb3JtLmlzKCdtb2JpbGV3ZWInKSB8fCAobGluay5wbGF0Zm9ybSAmJiB0aGlzLnBsYXRmb3JtLmlzKGxpbmsucGxhdGZvcm0pKSk7XG5cbiAgICAvLyBVc2UgbWluIHZlcnNpb24gYXMgZGVmYXVsdCB2ZXJzaW9uXG4gICAgdXBncmFkZUxpbmtzLmZvckVhY2gobGluayA9PiB7XG4gICAgICBsaW5rLnZlcnNpb24gPSBsaW5rLnZlcnNpb24gfHwgYXBwTWluVmVyc2lvbkZyb21Qb2Q7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXNOb3RFbXB0eUFycmF5KHVwZ3JhZGVMaW5rcykgPyB1cGdyYWRlTGlua3MgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldExpbmtzKGNvbmZpZzogQ29uZmlndXJhdGlvbik6IEluc3RhbGxBcHBMaW5rW10ge1xuICAgIGNvbnN0IHJlc3VsdDogSW5zdGFsbEFwcExpbmtbXSA9IFtdO1xuXG4gICAgLy8gQW5kcm9pZFxuICAgIHtcbiAgICAgIC8vIEdldCBVUkwgKGZyb20gY29uZmlnLCBvciBlbnZpcm9ubWVudClcbiAgICAgIGxldCB1cmwgPSBjb25maWcuZ2V0UHJvcGVydHkoQ09SRV9DT05GSUdfT1BUSU9OUy5BTkRST0lEX0lOU1RBTExfVVJMKTtcbiAgICAgIGlmIChpc05pbE9yQmxhbmsodXJsKSkgdXJsID0gdGhpcy5lbnZpcm9ubWVudC5kZWZhdWx0QW5kcm9pZEluc3RhbGxVcmwgfHwgbnVsbDtcblxuICAgICAgLy8gUmVzb2x2ZSByZWxhdGl2ZSBVUkxcbiAgICAgIGNvbnN0IHBlZXIgPSB0aGlzLm5ldHdvcmsucGVlcjtcbiAgICAgIGlmIChwZWVyICYmICh1cmwuc3RhcnRzV2l0aCgnLi8nKSB8fCB1cmwuc3RhcnRzV2l0aCgnLycpKSkge1xuICAgICAgICB1cmwgPSBQZWVyLnBhdGgocGVlciwgdXJsKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWluVmVyc2lvbiA9IGNvbmZpZy5nZXRQcm9wZXJ0eShDT1JFX0NPTkZJR19PUFRJT05TLkFQUF9NSU5fVkVSU0lPTik7XG5cbiAgICAgIC8vIENvbXB1dGUgQXBwIG5hbWVcbiAgICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IGlzTm90TmlsT3JCbGFuayh1cmwpICYmIGNvbmZpZy5sYWJlbCB8fCB0aGlzLmVudmlyb25tZW50LmRlZmF1bHRBcHBOYW1lIHx8ICdTVU1BUmlTJztcblxuICAgICAgaWYgKHVybCkge1xuICAgICAgICBsZXQgdGl0bGU6IHN0cmluZztcbiAgICAgICAgbGV0IG1pbWVUeXBlOiBzdHJpbmc7XG5cbiAgICAgICAgLy8gR2V0IGZpbGUgbmFtZVxuICAgICAgICBsZXQgZmlsZW5hbWUgPSB0aGlzLmdldEZpbGVuYW1lKHVybCk7XG4gICAgICAgIGxldCB2ZXJzaW9uID0gbWluVmVyc2lvbiB8fCAnbGF0ZXN0JztcblxuICAgICAgICAvLyBPSywgdGhpcyBpcyBhIGRvd25sb2FkYWJsZSBBUEsgZmlsZSAoZS5nLiBOT1QgYSBsaW5rIHRvIGEgcGxheXN0b3JlKVxuICAgICAgICBpZiAoZmlsZW5hbWU/LmVuZHNXaXRoKCcuYXBrJykpIHtcbiAgICAgICAgICAvLyBEZWZpbmUgbWltZSB0eXBlXG4gICAgICAgICAgbWltZVR5cGUgPSBNaW1lVHlwZXMuQU5EUk9JRF9BUEs7XG5cbiAgICAgICAgICAvLyBHZXQgdGhlIGZpbGUgdmVyc2lvbiAoaWYgYW55KVxuICAgICAgICAgIGNvbnN0IHZlcnNpb25NYXRjaGVzID0gLy12KFsxLTldWzAtOV0qXFwuWzAtOV0rXFwuKDo/KDo/YWxwaGF8YmV0YXxyYyk/WzAtOV0qKSkvaS5leGVjKGZpbGVuYW1lKTtcbiAgICAgICAgICB2ZXJzaW9uID0gdmVyc2lvbk1hdGNoZXMgJiYgdmVyc2lvbk1hdGNoZXNbMV0gfHwgdmVyc2lvbjtcblxuICAgICAgICAgIC8vIENvbXB1dGUgYSBuZXcgZmlsZSBuYW1lLCB3aXRoIHRoZSB2ZXJzaW9uXG4gICAgICAgICAgaWYgKGlzTm90TmlsT3JCbGFuayhuYW1lKSAmJiB2ZXJzaW9uICE9PSAnbGF0ZXN0Jykge1xuICAgICAgICAgICAgZmlsZW5hbWUgPSBgJHtuYW1lfS12JHt2ZXJzaW9ufS5hcGtgLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB0aXRsZSA9IGAke25hbWV9IHYke3ZlcnNpb259YDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlbHNlIHtcblxuICAgICAgICAgICAgLy8gUmVwbGFjZSAnbGF0ZXN0JyB3aXRoIHRoZSBhcHAgdmVyc2lvbiwgaWYgcHJlc2VudFxuICAgICAgICAgICAgaWYgKGZpbGVuYW1lLmluZGV4T2YoJ2xhdGVzdCcpKSB7XG4gICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZSgnbGF0ZXN0JywgdmVyc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0LnB1c2goeyBuYW1lLCB1cmwsIHBsYXRmb3JtOiAnYW5kcm9pZCcsIHZlcnNpb24sIGZpbGVuYW1lLCB0aXRsZSwgbWltZVR5cGUgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaU9TIC0gVE9ET1xuICAgIC8ve1xuICAgIC8vICAoLi4uKVxuICAgIC8vfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZW5hbWUodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdXJsKSByZXR1cm47XG4gICAgLy8gR2V0IGxhc3QgcGFydCAob3IgYWxsIHN0cmluZywgaWYgbm8gJy8nKVxuICAgIGxldCBmaWxlbmFtZSA9IHVybC5zdWJzdHJpbmcodXJsLmxhc3RJbmRleE9mKCcvJykrMSk7XG5cbiAgICBjb25zdCBxdWVyeVBhcmFtSW5kZXggPSBmaWxlbmFtZS5pbmRleE9mKCc/Jyk7XG4gICAgaWYgKHF1ZXJ5UGFyYW1JbmRleCAhPT0gLTEpIHtcbiAgICAgIC8vIFJlbW92ZSBxdWVyeSBwYXJhbXNcbiAgICAgIHJldHVybiBmaWxlbmFtZS5zdWJzdHJpbmcoMCwgcXVlcnlQYXJhbUluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlsZW5hbWU7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkRvd25sb2FkSm9icygpIHtcbiAgICAvLyBMaXN0ZW5pbmcgZG93bmxvYWRpbmcgcHJvbWlzZSwgaWYgZXhpc3RzXG4gICAgKHRoaXMudXBncmFkZUxpbmtzIHx8IFtdKS5mb3JFYWNoKGxpbmsgPT4ge1xuICAgICAgY29uc3Qgam9iID0gdGhpcy5wbGF0Zm9ybS5nZXREb3dubG9hZGluZ0pvYihsaW5rLnVybCk7XG4gICAgICBpZiAoam9iKSB7XG4gICAgICAgIGxpbmsuZG93bmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmxpc3RlbkRvd25sb2FkSm9iKGxpbmsudXJsLCBqb2IpXG4gICAgICAgICAgLnRoZW4oKGxvY2F0aW9uKSA9PiB7XG4gICAgICAgICAgICBsaW5rLmxvY2F0aW9uID0gbG9jYXRpb247XG4gICAgICAgICAgICBsaW5rLmRvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKCkgPT4gbGluay5kb3dubG9hZGluZyA9IGZhbHNlKVxuICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMubWFya0ZvckNoZWNrKCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsaXN0ZW5Eb3dubG9hZEpvYih1cmw6IHN0cmluZywgam9iOiBPYnNlcnZhYmxlPHN0cmluZz4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghdXJsIHx8ICFqb2IpIHJldHVybjsgLy8gU2tpcFxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIE1hcmsgYXMgZG93bmxvYWRpbmdcbiAgICAgIGlmICghdGhpcy5kb3dubG9hZGluZykge1xuICAgICAgICBjb25zb2xlLmluZm8oYFtpbnN0YWxsLXVwZ3JhZGUtY2FyZF0gQXNraW5nIHBsYXRmb3JtIHRvIGRvd25sb2FkICcke3VybH0nLi4uYCk7XG4gICAgICAgIHRoaXMuZG93bmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhgW2luc3RhbGwtdXBncmFkZS1jYXJkXSBQbGF0Zm9ybSBpcyBhbHJlYWR5IGRvd25sb2FkaW5nIWApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsb2NhdGlvbiA9IGF3YWl0IGpvYi50b1Byb21pc2UoKTtcbiAgICAgIGlmIChsb2NhdGlvbikge1xuICAgICAgICBjb25zb2xlLmluZm8oJ1tpbnN0YWxsLXVwZ3JhZGUtY2FyZF0gRmlsZSBkb3dubG9hZGVkIGF0OiAnICsgbG9jYXRpb24pO1xuICAgICAgICB0aGlzLnNob3dEb3dubG9hZENvbXBsZXRlRGlhbG9nKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbG9jYXRpb247XG4gICAgfVxuICAgIC8vIEZhaWxlZDogZGlzcGxheSBhIHRvYXN0XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignW2luc3RhbGwtdXBncmFkZS1jYXJkXSBEb3dubG9hZCBmYWlsZWQ6ICcgKyAoZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycikpO1xuICAgICAgdGhpcy5zaG93RG93bmxvYWRGYWlsZWRUb2FzdChlcnIpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMuZG93bmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93RG93bmxvYWRGYWlsZWRUb2FzdChlcnIpIHtcbiAgICByZXR1cm4gdGhpcy5zaG93VG9hc3Qoe1xuICAgICAgbWVzc2FnZTogJ0VSUk9SLkRPV05MT0FEX0ZBSUxFRCcsXG4gICAgICBtZXNzYWdlUGFyYW1zOiB7ZXJyb3I6IGVycn0sXG4gICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNob3dEb3dubG9hZENvbXBsZXRlRGlhbG9nKCkge1xuICAgIGlmICghdGhpcy5fc3Vic2NyaXB0aW9uKSByZXR1cm47IC8vIFNraXAgaWYgY29tcG9uZW50IGhhcyBiZWVuIGRlc3Ryb3llZFxuXG4gICAgY29uc3QgdHJhbnNsYXRpb25zID0gYXdhaXQgdGhpcy50cmFuc2xhdGUuZ2V0KFtcbiAgICAgICdJTkZPLkFMRVJUX0hFQURFUicsXG4gICAgICAnSU5GTy5VUERBVEVfQVBQX0RPV05MT0FERUQnLFxuICAgICAgJ0NPTU1PTi5CVE5fQ0xPU0UnXG4gICAgXSkudG9Qcm9taXNlKCk7XG4gICAgY29uc3QgYWxlcnQgPSBhd2FpdCB0aGlzLmFsZXJ0Q29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgaGVhZGVyOiB0cmFuc2xhdGlvbnNbJ0lORk8uQUxFUlRfSEVBREVSJ10sXG4gICAgICBtZXNzYWdlOiB0cmFuc2xhdGlvbnNbJ0lORk8uVVBEQVRFX0FQUF9ET1dOTE9BREVEJ10sXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fQ0xPU0UnXSxcbiAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcbiAgICAgICAgICBjc3NDbGFzczogJ3NlY29uZGFyeSdcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgYXdhaXQgYWxlcnQucHJlc2VudCgpO1xuICAgIGF3YWl0IGFsZXJ0Lm9uRGlkRGlzbWlzcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrRm9yQ2hlY2soKSB7XG4gICAgaWYgKCF0aGlzLl9zdWJzY3JpcHRpb24pIHJldHVybjsgLy8gU2tpcCBpZiBkZXN0cm95ZWRcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzaG93VG9hc3Qob3B0czogU2hvd1RvYXN0T3B0aW9ucykge1xuICAgIGlmICghdGhpcy5fc3Vic2NyaXB0aW9uKSByZXR1cm47IC8vIFNraXAgaWYgY29tcG9uZW50IGhhcyBiZWVuIGRlc3Ryb3llZFxuICAgIGF3YWl0IFRvYXN0cy5zaG93KHRoaXMudG9hc3RDb250cm9sbGVyLCB0aGlzLnRyYW5zbGF0ZSwgb3B0cyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  import { __awaiter } from "tslib";
2
+ import { of } from 'rxjs';
2
3
  import { map } from 'rxjs/operators';
3
4
  import { ErrorCodes } from './errors';
4
5
  import { BaseGraphqlService } from './base-graphql-service.class';
@@ -364,8 +365,10 @@ export class BaseEntityService extends BaseGraphqlService {
364
365
  listenChanges(id, opts) {
365
366
  if (isNil(id))
366
367
  throw Error('Missing argument \'id\' ');
367
- if (!this.subscriptions.listenChanges)
368
- throw Error('Not implemented!');
368
+ if (!this.subscriptions.listenChanges) {
369
+ console.warn(`${this.constructor.name}.listenChanges() not implemented yet. Will empty observable`);
370
+ return of();
371
+ }
369
372
  const variables = opts && opts.variables || {
370
373
  id,
371
374
  interval: toNumber(opts && opts.interval, 0) // no timer by default
@@ -448,4 +451,4 @@ BaseEntityService.ctorParameters = () => [
448
451
  { type: Function },
449
452
  { type: undefined }
450
453
  ];
451
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1lbnRpdHktc2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9iYXNlLWVudGl0eS1zZXJ2aWNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUt0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQWlDLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFhLFFBQVEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFnQixpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBNEN2RSxXQUFXO0FBRVgsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBZ0IsaUJBU3BCLFNBQVEsa0JBQTRCO0lBa0JwQyxZQUNZLE9BQXVCLEVBQ3ZCLFFBQXlCLEVBQ3pCLFFBQW9CLEVBQ3BCLFVBQXNCLEVBQ2hDLE9BQWlEO1FBRWpELEtBQUssQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFObEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsYUFBUSxHQUFSLFFB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O1FBQzdELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBRTVELGlEQUFpRDtRQUNqRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsS0FBSyxpQkFBaUI7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUUxRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQUUsT0FBTyxTQUFTLENBQUMsQ0FBQyxnQkFBZ0I7UUFFdkQsc0NBQXNDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRVMsY0FBYztRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRixDQUFDOzs7WUF2Z0JGLFNBQVM7OztZQXJERCxjQUFjO1lBQ2QsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVycm9yQ29kZXMgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmltcG9ydCB7IEZldGNoUG9saWN5LCBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSwgTXV0YXRpb25VcGRhdGVyRm4gfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcblxuaW1wb3J0IHsgQmFzZUdyYXBocWxTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLWdyYXBocWwtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMsIEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucywgSUVudGl0aWVzU2VydmljZSwgSUVudGl0eVNlcnZpY2UsIExvYWRSZXN1bHQgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgR3JhcGhxbFNlcnZpY2UgfSBmcm9tICcuLi9ncmFwaHFsL2dyYXBocWwuc2VydmljZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2UgfSBmcm9tICcuL3BsYXRmb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlBc09iamVjdE9wdGlvbnMsIEVudGl0eVV0aWxzIH0gZnJvbSAnLi9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgY2hhaW5Qcm9taXNlcyB9IGZyb20gJy4uLy4uL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge2lzRW1wdHlBcnJheSwgaXNOaWwsIGlzTm90TmlsLCByZW1vdmVFbmQsIHRvQm9vbGVhbiwgdG9OdW1iZXJ9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGZXRjaFJlc3VsdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2xpbmsvY29yZSc7XG5pbXBvcnQgeyBFbnRpdHlGaWx0ZXIsIEVudGl0eUZpbHRlclV0aWxzIH0gZnJvbSAnLi9tb2RlbC9maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHsgRG9jdW1lbnROb2RlIH0gZnJvbSAnZ3JhcGhxbCc7XG5cbmV4cG9ydCB0eXBlIE11dGFibGVXYXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPSAndXBkYXRlLWNhY2hlJyB8ICdyZWZldGNoLXF1ZXJpZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VFbnRpdHlHcmFwaHFsUXVlcmllcyB7XG4gIGxvYWQ/OiBhbnk7XG4gIGxvYWRBbGw6IGFueTtcbiAgbG9hZEFsbFdpdGhUb3RhbD86IGFueTtcbiAgY291bnRBbGw/OiBhbnk7XG59XG5leHBvcnQgaW50ZXJmYWNlIEJhc2VFbnRpdHlHcmFwaHFsTXV0YXRpb25zIHtcbiAgc2F2ZT86IGFueTtcbiAgZGVsZXRlPzogYW55O1xuICBzYXZlQWxsPzogYW55O1xuICBkZWxldGVBbGw/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUVudGl0eUdyYXBocWxTdWJzY3JpcHRpb25zIHtcbiAgbGlzdGVuQ2hhbmdlcz86IGFueTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUVudGl0eVNlcnZpY2VPcHRpb25zPFxuICBUIGV4dGVuZHMgRW50aXR5PGFueSwgSUQ+LFxuICBJRCA9IG51bWJlcixcbiAgUSBleHRlbmRzIEJhc2VFbnRpdHlHcmFwaHFsUXVlcmllcyA9IEJhc2VFbnRpdHlHcmFwaHFsUXVlcmllcyxcbiAgTSBleHRlbmRzIEJhc2VFbnRpdHlHcmFwaHFsTXV0YXRpb25zID0gQmFzZUVudGl0eUdyYXBocWxNdXRhdGlvbnMsXG4gIFMgZXh0ZW5kcyBCYXNlRW50aXR5R3JhcGhxbFN1YnNjcmlwdGlvbnMgPSBCYXNlRW50aXR5R3JhcGhxbFN1YnNjcmlwdGlvbnM+IHtcbiAgcXVlcmllczogUTtcbiAgbXV0YXRpb25zPzogUGFydGlhbDxNPjtcbiAgc3Vic2NyaXB0aW9ucz86IFBhcnRpYWw8Uz47XG4gIGVxdWFsc0ZuPzogKGUxOiBULCBlMjogVCkgPT4gYm9vbGVhbjtcbiAgaXNOZXdGbj86IChlOiBUKSA9PiBib29sZWFuO1xuICBkZWZhdWx0U29ydEJ5Pzoga2V5b2YgVDtcbiAgZGVmYXVsdFNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uO1xuICB3YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3k/OiBNdXRhYmxlV2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eVNhdmVPcHRpb25zIHtcbiAgcmVmZXRjaFF1ZXJpZXM/OiAoKHJlc3VsdDogRmV0Y2hSZXN1bHQ8e2RhdGE6IGFueX0+KSA9PiBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSkgfCBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZTtcbiAgYXdhaXRSZWZldGNoUXVlcmllcz86IGJvb2xlYW47XG4gIHVwZGF0ZT86IE11dGF0aW9uVXBkYXRlckZuPHsgZGF0YTogYW55OyB9Pjtcbn1cblxuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRW50aXR5U2VydmljZTxcbiAgVCBleHRlbmRzIEVudGl0eTxULCBJRD4sXG4gIEYgZXh0ZW5kcyBFbnRpdHlGaWx0ZXI8RiwgVCwgSUQ+LFxuICBJRCA9IG51bWJlcixcbiAgV08gZXh0ZW5kcyBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMgPSBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMsXG4gIExPIGV4dGVuZHMgRW50aXR5U2VydmljZUxvYWRPcHRpb25zID0gRW50aXR5U2VydmljZUxvYWRPcHRpb25zLFxuICBRIGV4dGVuZHMgQmFzZUVudGl0eUdyYXBocWxRdWVyaWVzID0gQmFzZUVudGl0eUdyYXBocWxRdWVyaWVzLFxuICBNIGV4dGVuZHMgQmFzZUVudGl0eUdyYXBocWxNdXRhdGlvbnMgPSBCYXNlRW50aXR5R3JhcGhxbE11dGF0aW9ucyxcbiAgUyBleHRlbmRzIEJhc2VFbnRpdHlHcmFwaHFsU3Vic2NyaXB0aW9ucyA9IEJhc2VFbnRpdHlHcmFwaHFsU3Vic2NyaXB0aW9ucz5cbiAgZXh0ZW5kcyBCYXNlR3JhcGhxbFNlcnZpY2U8VCwgRiwgSUQ+XG4gIGltcGxlbWVudHNcbiAgICBJRW50aXRpZXNTZXJ2aWNlPFQsIEYsIFdPPixcbiAgICBJRW50aXR5U2VydmljZTxULCBJRCwgTE8+IHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3R5cGVuYW1lOiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZWFkb25seSBfbG9nVHlwZU5hbWU6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcXVlcmllczogUTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG11dGF0aW9uczogUGFydGlhbDxNPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1YnNjcmlwdGlvbnM6IFBhcnRpYWw8Uz47XG4gIHByb3RlY3RlZCByZWFkb25seSBlcXVhbHNGbjogKGUxOiBULCBlMjogVCkgPT4gYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTmV3Rm46IChlOiBUKSA9PiBib29sZWFuO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkZWZhdWx0U29ydEJ5OiBrZXlvZiBUO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG4gIHByb3RlY3RlZCByZWFkb25seSB3YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3k6IE11dGFibGVXYXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3k7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBncmFwaHFsOiBHcmFwaHFsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZGF0YVR5cGU6IG5ldygpID0+IFQsXG4gICAgcHJvdGVjdGVkIGZpbHRlclR5cGU6IG5ldygpID0+IEYsXG4gICAgb3B0aW9uczogQmFzZUVudGl0eVNlcnZpY2VPcHRpb25zPFQsIElELCBRLCBNLCBTPlxuICApIHtcbiAgICBzdXBlcihncmFwaHFsLCBlbnZpcm9ubWVudCk7XG4gICAgdGhpcy5xdWVyaWVzID0gb3B0aW9ucy5xdWVyaWVzO1xuICAgIHRoaXMubXV0YXRpb25zID0gb3B0aW9ucy5tdXRhdGlvbnMgfHwgPFBhcnRpYWw8TT4+e307XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gb3B0aW9ucy5zdWJzY3JpcHRpb25zIHx8IDxQYXJ0aWFsPFM+Pnt9O1xuICAgIHRoaXMuZXF1YWxzRm4gPSBvcHRpb25zLmVxdWFsc0ZuIHx8ICgoZTEsIGUyKSA9PiBFbnRpdHlVdGlscy5lcXVhbHMoZTEsIGUyLCAnaWQnKSk7XG4gICAgdGhpcy5pc05ld0ZuID0gb3B0aW9ucy5pc05ld0ZuIHx8ICgoZSkgPT4gRW50aXR5VXRpbHMuaXNOb3RFbXB0eShlLCAnaWQnKSk7XG4gICAgdGhpcy5kZWZhdWx0U29ydEJ5ID0gb3B0aW9ucy5kZWZhdWx0U29ydEJ5IHx8ICdpZCc7XG4gICAgdGhpcy5kZWZhdWx0U29ydERpcmVjdGlvbiA9IG9wdGlvbnMuZGVmYXVsdFNvcnREaXJlY3Rpb24gfHwgJ2FzYyc7XG4gICAgdGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPSBvcHRpb25zLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSB8fCAndXBkYXRlLWNhY2hlJztcblxuICAgIGNvbnN0IG9iaiA9IG5ldyBkYXRhVHlwZSgpO1xuICAgIHRoaXMuX3R5cGVuYW1lID0gb2JqLl9fdHlwZW5hbWUgfHwgJ1Vua25vd25WTyc7XG4gICAgdGhpcy5fbG9nVHlwZU5hbWUgPSByZW1vdmVFbmQodGhpcy5fdHlwZW5hbWUsICdWTycpO1xuXG4gICAgLy8gRm9yIERFViBvbmx5XG4gICAgdGhpcy5fZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIHdhdGNoKGlkOiBudW1iZXIsIG9wdHM/OiBXTyAmIHsgcXVlcnk/OiBhbnkgfSk6IE9ic2VydmFibGU8VD4ge1xuXG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGBXYXRjaGluZyAke3RoaXMuX2xvZ1R5cGVOYW1lfSB7JHtpZH19Li4uYCk7XG5cbiAgICBjb25zdCBxdWVyeSA9IG9wdHMgJiYgb3B0cy5xdWVyeSB8fCB0aGlzLnF1ZXJpZXMubG9hZDtcbiAgICByZXR1cm4gdGhpcy5ncmFwaHFsLndhdGNoUXVlcnk8e2RhdGE6IGFueX0+KHtcbiAgICAgIHF1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7IGlkIH0sXG4gICAgICBmZXRjaFBvbGljeTogb3B0cyAmJiAob3B0cy5mZXRjaFBvbGljeSBhcyBGZXRjaFBvbGljeSkgfHwgdW5kZWZpbmVkLFxuICAgICAgZXJyb3I6IHtjb2RlOiBFcnJvckNvZGVzLkxPQURfREFUQV9FUlJPUiwgbWVzc2FnZTogJ1JFRkVSRU5USUFMLkVSUk9SLkxPQURfREFUQV9FUlJPUid9XG4gICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHtkYXRhfSkgPT4gKCFvcHRzIHx8IG9wdHMudG9FbnRpdHkgIT09IGZhbHNlKVxuICAgICAgICAgICAgPyAoZGF0YSAmJiB0aGlzLmZyb21PYmplY3QoZGF0YSkpXG4gICAgICAgICAgICA6IChkYXRhIGFzIFQpKVxuICAgICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoaWQ6IElELCBvcHRzPzogTE8gJiB7IHF1ZXJ5PzogYW55IH0pOiBQcm9taXNlPFQ+IHtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgTG9hZGluZyAke3RoaXMuX2xvZ1R5cGVOYW1lfSB7JHtpZH19Li4uYCk7XG4gICAgY29uc3QgcXVlcnkgPSBvcHRzICYmIG9wdHMucXVlcnkgfHwgdGhpcy5xdWVyaWVzLmxvYWQ7XG5cbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7ZGF0YTogYW55fT4oe1xuICAgICAgcXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHsgaWQgfSxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRzICYmIChvcHRzLmZldGNoUG9saWN5IGFzIEZldGNoUG9saWN5KSB8fCB1bmRlZmluZWQsXG4gICAgICBlcnJvcjoge2NvZGU6IEVycm9yQ29kZXMuTE9BRF9EQVRBX0VSUk9SLCBtZXNzYWdlOiAnUkVGRVJFTlRJQUwuRVJST1IuTE9BRF9EQVRBX0VSUk9SJ31cbiAgICB9KTtcblxuICAgIC8vIENvbnZlcnQgdG8gZW50aXR5XG4gICAgcmV0dXJuICghb3B0cyB8fCBvcHRzLnRvRW50aXR5ICE9PSBmYWxzZSlcbiAgICAgID8gKGRhdGEgJiYgdGhpcy5mcm9tT2JqZWN0KGRhdGEpKVxuICAgICAgOiAoZGF0YSBhcyBUKTtcbiAgfVxuXG4gIHdhdGNoQWxsKG9mZnNldDogbnVtYmVyLFxuICAgICAgICAgICBzaXplOiBudW1iZXIsXG4gICAgICAgICAgIHNvcnRCeT86IHN0cmluZyxcbiAgICAgICAgICAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgIGZpbHRlcj86IEYsXG4gICAgICAgICAgIG9wdHM/OiBXTyAmIHsgcXVlcnk/OiBhbnkgfVxuICApOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8VD4+IHtcblxuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlczogYW55ID0ge1xuICAgICAgb2Zmc2V0OiBvZmZzZXQgfHwgMCxcbiAgICAgIHNpemU6IHNpemUgfHwgMTAwLFxuICAgICAgc29ydEJ5OiBzb3J0QnkgfHwgdGhpcy5kZWZhdWx0U29ydEJ5LFxuICAgICAgc29ydERpcmVjdGlvbjogc29ydERpcmVjdGlvbiB8fCB0aGlzLmRlZmF1bHRTb3J0RGlyZWN0aW9uLFxuICAgICAgZmlsdGVyOiBmaWx0ZXIgJiYgZmlsdGVyLmFzUG9kT2JqZWN0KClcbiAgICB9O1xuXG4gICAgbGV0IG5vdyA9IHRoaXMuX2RlYnVnICYmIERhdGUubm93KCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGBXYXRjaGluZyAke3RoaXMuX2xvZ1R5cGVOYW1lfS4uLmAsIHZhcmlhYmxlcyk7XG5cbiAgICBjb25zdCB3aXRoVG90YWwgPSAoIW9wdHMgfHwgb3B0cy53aXRoVG90YWwgIT09IGZhbHNlKSAmJiB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhUb3RhbCAmJiB0cnVlO1xuICAgIGNvbnN0IHF1ZXJ5ID0gKG9wdHMgJiYgb3B0cy5xdWVyeSkgLy8gdXNlIGdpdmVuIHF1ZXJ5XG4gICAgICAvLyBPciBnZXQgbG9hZEFsbCBvciBsb2FkQWxsV2l0aFRvdGFsIHF1ZXJ5XG4gICAgICB8fCAod2l0aFRvdGFsID8gdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoVG90YWwgIDogdGhpcy5xdWVyaWVzLmxvYWRBbGwpO1xuICAgIHJldHVybiB0aGlzLm11dGFibGVXYXRjaFF1ZXJ5PExvYWRSZXN1bHQ8YW55Pj4oe1xuICAgICAgcXVlcnlOYW1lOiB3aXRoVG90YWwgPyAnTG9hZEFsbFdpdGhUb3RhbCcgOiAnTG9hZEFsbCcsXG4gICAgICBxdWVyeSxcbiAgICAgIGFycmF5RmllbGROYW1lOiAnZGF0YScsXG4gICAgICB0b3RhbEZpZWxkTmFtZTogd2l0aFRvdGFsID8gJ3RvdGFsJyA6IHVuZGVmaW5lZCxcbiAgICAgIGluc2VydEZpbHRlckZuOiBmaWx0ZXIgJiYgZmlsdGVyLmFzRmlsdGVyRm4oKSxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICAgIGVycm9yOiB7Y29kZTogRXJyb3JDb2Rlcy5MT0FEX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdSRUZFUkVOVElBTC5FUlJPUi5MT0FEX0RBVEFfRVJST1InfSxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRzICYmIG9wdHMuZmV0Y2hQb2xpY3kgfHwgdW5kZWZpbmVkXG4gICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHtkYXRhLCB0b3RhbH0pID0+IHtcbiAgICAgICAgICAvLyBDb252ZXJ0IHRvIGVudGl0eSAoaWYgbmVlZClcbiAgICAgICAgICBjb25zdCBlbnRpdGllcyA9ICghb3B0cyB8fCBvcHRzLnRvRW50aXR5ICE9PSBmYWxzZSlcbiAgICAgICAgICAgID8gKGRhdGEgfHwgW10pLm1hcChqc29uID0+IHRoaXMuZnJvbU9iamVjdChqc29uKSlcbiAgICAgICAgICAgIDogKGRhdGEgfHwgW10pIGFzIFRbXTtcblxuICAgICAgICAgIGlmIChub3cpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYCR7dGhpcy5fbG9nVHlwZU5hbWV9IGxvYWRlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgLCBlbnRpdGllcyk7XG4gICAgICAgICAgICBub3cgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ge2RhdGE6IGVudGl0aWVzLCB0b3RhbH07XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgYXN5bmMgbG9hZEFsbChvZmZzZXQ6IG51bWJlcixcbiAgICAgICAgICAgICAgICBzaXplOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgc29ydEJ5Pzogc3RyaW5nLFxuICAgICAgICAgICAgICAgIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uLFxuICAgICAgICAgICAgICAgIGZpbHRlcj86IFBhcnRpYWw8Rj4sXG4gICAgICAgICAgICAgICAgb3B0cz86IExPICYge1xuICAgICAgICAgICAgICAgICAgcXVlcnk/OiBhbnk7XG4gICAgICAgICAgICAgICAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICB3aXRoVG90YWw/OiBib29sZWFuO1xuICAgICAgICAgICAgICAgIH1cbiAgKTogUHJvbWlzZTxMb2FkUmVzdWx0PFQ+PiB7XG5cbiAgICBjb25zdCBkZWJ1ZyA9IHRoaXMuX2RlYnVnICYmICghb3B0cyB8fCBvcHRzLmRlYnVnICE9PSBmYWxzZSk7XG5cbiAgICBmaWx0ZXIgPSB0aGlzLmFzRmlsdGVyKGZpbHRlcik7XG5cbiAgICBjb25zdCB2YXJpYWJsZXM6IGFueSA9IHtcbiAgICAgIG9mZnNldDogb2Zmc2V0IHx8IDAsXG4gICAgICBzaXplOiBzaXplIHx8IDEwMCxcbiAgICAgIHNvcnRCeTogc29ydEJ5IHx8ICdpZCcsXG4gICAgICBzb3J0RGlyZWN0aW9uOiBzb3J0RGlyZWN0aW9uIHx8ICdhc2MnLFxuICAgICAgZmlsdGVyOiBmaWx0ZXIgJiYgZmlsdGVyLmFzUG9kT2JqZWN0KClcbiAgICB9O1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAoZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYExvYWRpbmcgJHt0aGlzLl9sb2dUeXBlTmFtZX0uLi5gLCB2YXJpYWJsZXMpO1xuXG4gICAgY29uc3Qgd2l0aFRvdGFsID0gKCFvcHRzIHx8IG9wdHMud2l0aFRvdGFsICE9PSBmYWxzZSkgJiYgdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoVG90YWwgJiYgdHJ1ZTtcbiAgICBjb25zdCBxdWVyeSA9IChvcHRzICYmIG9wdHMucXVlcnkpIC8vIHVzZSBnaXZlbiBxdWVyeVxuICAgICAgLy8gT3IgZ2V0IGxvYWRBbGwgb3IgbG9hZEFsbFdpdGhUb3RhbCBxdWVyeVxuICAgICAgfHwgKHdpdGhUb3RhbCA/IHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aFRvdGFsICA6IHRoaXMucXVlcmllcy5sb2FkQWxsKTtcbiAgICBjb25zdCB7ZGF0YSwgdG90YWx9ID0gYXdhaXQgdGhpcy5ncmFwaHFsLnF1ZXJ5PExvYWRSZXN1bHQ8YW55Pj4oe1xuICAgICAgcXVlcnksXG4gICAgICB2YXJpYWJsZXMsXG4gICAgICBlcnJvcjoge2NvZGU6IEVycm9yQ29kZXMuTE9BRF9EQVRBX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuTE9BRF9EQVRBX0VSUk9SJ30sXG4gICAgICBmZXRjaFBvbGljeTogb3B0cyAmJiBvcHRzLmZldGNoUG9saWN5IHx8ICduZXR3b3JrLW9ubHknXG4gICAgfSk7XG4gICAgY29uc3QgZW50aXRpZXMgPSAoIW9wdHMgfHwgb3B0cy50b0VudGl0eSAhPT0gZmFsc2UpID9cbiAgICAgIChkYXRhIHx8IFtdKS5tYXAoanNvbiA9PiB0aGlzLmZyb21PYmplY3QoanNvbikpIDpcbiAgICAgIChkYXRhIHx8IFtdKSBhcyBUW107XG4gICAgaWYgKGRlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGAke3RoaXMuX2xvZ1R5cGVOYW1lfSBpdGVtcyBsb2FkZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG5cbiAgICBjb25zdCByZXM6IExvYWRSZXN1bHQ8VD4gPSB7XG4gICAgICBkYXRhOiBlbnRpdGllcyxcbiAgICAgIHRvdGFsXG4gICAgfTtcblxuICAgIC8vIEFkZCBmZXRjaCBtb3JlIGNhcGFiaWxpdHksIGlmIHRvdGFsIHdhcyBmZXRjaGVkXG4gICAgaWYgKHdpdGhUb3RhbCkge1xuICAgICAgY29uc3QgbmV4dE9mZnNldCA9IChvZmZzZXQgfHwgMCkgKyBlbnRpdGllcy5sZW5ndGg7XG4gICAgICBpZiAobmV4dE9mZnNldCA8IHJlcy50b3RhbCkge1xuICAgICAgICByZXMuZmV0Y2hNb3JlID0gKCkgPT4gdGhpcy5sb2FkQWxsKG5leHRPZmZzZXQsIHNpemUsIHNvcnRCeSwgc29ydERpcmVjdGlvbiwgZmlsdGVyLCBvcHRzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgYXN5bmMgY291bnRBbGwoZmlsdGVyPzogUGFydGlhbDxGPiwgb3B0cz86IExPKSB7XG4gICAgLy8gSWYgbm8gY291bnRBbGwgcXVlcnlcbiAgICBpZiAoIXRoaXMucXVlcmllcy5jb3VudEFsbCkge1xuICAgICAgLy8gRmFpbCBpZiBubyBsb2FkQWxsIChjYW5ub3QgY291bnQpXG4gICAgICBpZiAoIXRoaXMucXVlcmllcy5sb2FkQWxsV2l0aFRvdGFsKSB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuXG4gICAgICAvLyBVc2UgbG9hZEFsbCBxdWVyeSwgd2l0aCBzaXplID0gMDtcbiAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5sb2FkQWxsKDAsIDEsIG51bGwsIG51bGwsIGZpbHRlcixcbiAgICAgICAgPExPICYgeyB3aXRoVG90YWw6IGJvb2xlYW47IH0+e3dpdGhUb3RhbDogdHJ1ZX0pKT8udG90YWwgfHwgMDtcbiAgICB9XG5cbiAgICBmaWx0ZXIgPSB0aGlzLmFzRmlsdGVyKGZpbHRlcik7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdyYXBocWwucXVlcnk8eyB0b3RhbDogbnVtYmVyO30+KHtcbiAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXMuY291bnRBbGwsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgZmlsdGVyOiBmaWx0ZXIgJiYgZmlsdGVyLmFzUG9kT2JqZWN0KClcbiAgICAgIH0sXG4gICAgICBlcnJvcjoge2NvZGU6IEVycm9yQ29kZXMuTE9BRF9EQVRBX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuQ09VTlRfREFUQV9FUlJPUid9LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdHMgJiYgb3B0cy5mZXRjaFBvbGljeSB8fCAnbmV0d29yay1vbmx5J1xuICAgIH0pO1xuICAgIHJldHVybiByZXMudG90YWw7XG4gIH1cblxuICBjYW5Vc2VyV3JpdGUoZGF0YTogVCwgb3B0cz86IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWRhdGE7XG4gIH1cblxuICBhc3luYyBzYXZlQWxsKGVudGl0aWVzOiBUW10sIG9wdHM/OiBFbnRpdHlTYXZlT3B0aW9ucyk6IFByb21pc2U8VFtdPiB7XG4gICAgaWYgKGlzRW1wdHlBcnJheShlbnRpdGllcykpIHJldHVybiBlbnRpdGllczsgLy8gTm90aGluZyB0byBzYXZlOiBza2lwXG5cbiAgICBpZiAoIXRoaXMubXV0YXRpb25zLnNhdmVBbGwpIHtcbiAgICAgIGlmICghdGhpcy5tdXRhdGlvbnMuc2F2ZSkgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICAgIC8vIFNhdmUgb25lIGJ5IG9uZVxuICAgICAgcmV0dXJuIGNoYWluUHJvbWlzZXMoKGVudGl0aWVzIHx8IFtdKVxuICAgICAgICAubWFwKGVudGl0eSA9PiAoKCkgPT4gdGhpcy5zYXZlKGVudGl0eSwgb3B0cykpKSk7XG4gICAgfVxuXG4gICAgbGV0IGhhc05ld0VudGl0aWVzID0gZmFsc2U7XG4gICAgY29uc3QganNvbiA9IGVudGl0aWVzLm1hcChlbnRpdHkgPT4ge1xuICAgICAgaGFzTmV3RW50aXRpZXMgPSBoYXNOZXdFbnRpdGllcyB8fCB0aGlzLmlzTmV3Rm4oZW50aXR5KTtcbiAgICAgIHRoaXMuZmlsbERlZmF1bHRQcm9wZXJ0aWVzKGVudGl0eSk7XG4gICAgICByZXR1cm4gdGhpcy5hc09iamVjdChlbnRpdHkpO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYFNhdmluZyBhbGwgJHt0aGlzLl9sb2dUeXBlTmFtZX0uLi5gLCBqc29uKTtcblxuICAgIGF3YWl0IHRoaXMuZ3JhcGhxbC5tdXRhdGU8TG9hZFJlc3VsdDxhbnk+Pih7XG4gICAgICBtdXRhdGlvbjogdGhpcy5tdXRhdGlvbnMuc2F2ZUFsbCxcbiAgICAgIHJlZmV0Y2hRdWVyaWVzOiB0aGlzLmdldFJlZmV0Y2hRdWVyaWVzRm9yTXV0YXRpb24ob3B0cyksXG4gICAgICBhd2FpdFJlZmV0Y2hRdWVyaWVzOiBvcHRzICYmIG9wdHMuYXdhaXRSZWZldGNoUXVlcmllcyxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBkYXRhOiBqc29uXG4gICAgICB9LFxuICAgICAgZXJyb3I6IHtjb2RlOiBFcnJvckNvZGVzLlNBVkVfREFUQV9FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLlNBVkVfREFUQV9FUlJPUid9LFxuICAgICAgdXBkYXRlOiAocHJveHksIHtkYXRhfSkgPT4ge1xuICAgICAgICBjb25zdCBzYXZlZEVudGl0aWVzID0gZGF0YSAmJiBkYXRhLmRhdGE7XG4gICAgICAgIGlmIChzYXZlZEVudGl0aWVzKSB7XG4gICAgICAgICAgLy8gVXBkYXRlIGVudGl0aWVzIChpZCBhbmQgdXBkYXRlIGRhdGUpXG4gICAgICAgICAgZW50aXRpZXMuZm9yRWFjaChlbnRpdHkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2F2ZWRFbnRpdHkgPSBzYXZlZEVudGl0aWVzLmZpbmQoZSA9PiB0aGlzLmVxdWFsc0ZuKGUsIGVudGl0eSkpO1xuICAgICAgICAgICAgdGhpcy5jb3B5SWRBbmRVcGRhdGVEYXRlKHNhdmVkRW50aXR5LCBlbnRpdHkpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKGhhc05ld0VudGl0aWVzICYmIHRoaXMud2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5ID09PSAndXBkYXRlLWNhY2hlJykge1xuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBjYWNoZVxuICAgICAgICAgICAgdGhpcy5pbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJpZXMocHJveHksIHtcbiAgICAgICAgICAgICAgcXVlcmllczogdGhpcy5nZXRMb2FkUXVlcmllcygpLFxuICAgICAgICAgICAgICBkYXRhOiBzYXZlZEVudGl0aWVzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0cyAmJiBvcHRzLnVwZGF0ZSkge1xuICAgICAgICAgIG9wdHMudXBkYXRlKHByb3h5LCB7ZGF0YX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1R5cGVOYW1lfSBzYXZlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgLCBlbnRpdGllcyk7XG5cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlbnRpdGllcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGEgcmVmZXJlbnRpYWwgZW50aXR5XG4gICAqXG4gICAqIEBwYXJhbSBlbnRpdHlcbiAgICogQHBhcmFtIG9wdHNcbiAgICovXG4gIGFzeW5jIHNhdmUoZW50aXR5OiBULCBvcHRzPzogRW50aXR5U2F2ZU9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAoIXRoaXMubXV0YXRpb25zLnNhdmUpIHtcbiAgICAgIGlmICghdGhpcy5tdXRhdGlvbnMuc2F2ZUFsbCkgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnNhdmVBbGwoW2VudGl0eV0sIG9wdHMpO1xuICAgICAgcmV0dXJuIGRhdGEgJiYgZGF0YVswXTtcbiAgICB9XG5cbiAgICAvLyBGaWxsIGRlZmF1bHQgcHJvcGVydGllc1xuICAgIHRoaXMuZmlsbERlZmF1bHRQcm9wZXJ0aWVzKGVudGl0eSk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gaW50byBqc29uXG4gICAgY29uc3QganNvbiA9IHRoaXMuYXNPYmplY3QoZW50aXR5KTtcblxuICAgIGNvbnN0IGlzTmV3ID0gdGhpcy5pc05ld0ZuKGpzb24pO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYFNhdmluZyAke3RoaXMuX2xvZ1R5cGVOYW1lfS4uLmAsIGpzb24pO1xuXG4gICAgYXdhaXQgdGhpcy5ncmFwaHFsLm11dGF0ZTx7ZGF0YTogYW55fT4oe1xuICAgICAgbXV0YXRpb246IHRoaXMubXV0YXRpb25zLnNhdmUsXG4gICAgICByZWZldGNoUXVlcmllczogdGhpcy5nZXRSZWZldGNoUXVlcmllc0Zvck11dGF0aW9uKG9wdHMpLFxuICAgICAgYXdhaXRSZWZldGNoUXVlcmllczogb3B0cyAmJiBvcHRzLmF3YWl0UmVmZXRjaFF1ZXJpZXMsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgZGF0YToganNvblxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7Y29kZTogRXJyb3JDb2Rlcy5TQVZFX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5TQVZFX0RBVEFfRVJST1InfSxcbiAgICAgIHVwZGF0ZTogKGNhY2hlLCB7ZGF0YX0pID0+IHtcbiAgICAgICAgLy8gVXBkYXRlIGVudGl0eVxuICAgICAgICBjb25zdCBzYXZlZEVudGl0eSA9IGRhdGEgJiYgZGF0YS5kYXRhO1xuICAgICAgICB0aGlzLmNvcHlJZEFuZFVwZGF0ZURhdGUoc2F2ZWRFbnRpdHksIGVudGl0eSk7XG5cbiAgICAgICAgLy8gSW5zZXJ0IGludG8gdGhlIGNhY2hlXG4gICAgICAgIGlmIChpc05ldyAmJiB0aGlzLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSA9PT0gJ3VwZGF0ZS1jYWNoZScpIHtcbiAgICAgICAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhjYWNoZSwge1xuICAgICAgICAgICAgcXVlcmllczogdGhpcy5nZXRMb2FkUXVlcmllcygpLFxuICAgICAgICAgICAgZGF0YTogc2F2ZWRFbnRpdHlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRzICYmIG9wdHMudXBkYXRlKSB7XG4gICAgICAgICAgb3B0cy51cGRhdGUoY2FjaGUsIHtkYXRhfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYCR7ZW50aXR5Ll9fdHlwZW5hbWV9IHNhdmVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2AsIGVudGl0eSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSByZWZlcmVudGlhbCBlbnRpdGllc1xuICAgKi9cbiAgYXN5bmMgZGVsZXRlQWxsKGVudGl0aWVzOiBUW10sIG9wdHM/OiBQYXJ0aWFsPHtcbiAgICB1cGRhdGU6IE11dGF0aW9uVXBkYXRlckZuPGFueT47XG4gIH0+IHwgYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMubXV0YXRpb25zLmRlbGV0ZUFsbCkge1xuICAgICAgaWYgKCF0aGlzLm11dGF0aW9ucy5kZWxldGUpIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgICAvLyBEZWxldGUgb25lIGJ5IG9uZVxuICAgICAgcmV0dXJuIGNoYWluUHJvbWlzZXMoKGVudGl0aWVzIHx8IFtdKVxuICAgICAgICAubWFwKGVudGl0eSA9PiAoKCkgPT4gdGhpcy5kZWxldGUoZW50aXR5LCBvcHRzKSkpKTtcbiAgICB9XG5cbiAgICAvLyBGaWx0ZXIgc2F2ZWQgZW50aXRpZXNcbiAgICBlbnRpdGllcyA9IGVudGl0aWVzICYmIGVudGl0aWVzLmZpbHRlcihlID0+IGlzTm90TmlsKGUuaWQpKTtcblxuICAgIC8vIE5vdGhpbmcgdG8gc2F2ZTogc2tpcFxuICAgIGlmIChpc0VtcHR5QXJyYXkoZW50aXRpZXMpKSByZXR1cm47XG5cbiAgICBjb25zdCBpZHMgPSBlbnRpdGllcy5tYXAodCA9PiB0LmlkKTtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgRGVsZXRpbmcgJHt0aGlzLl9sb2dUeXBlTmFtZX0uLi5gLCBpZHMpO1xuXG4gICAgYXdhaXQgdGhpcy5ncmFwaHFsLm11dGF0ZTxhbnk+KHtcbiAgICAgIG11dGF0aW9uOiB0aGlzLm11dGF0aW9ucy5kZWxldGVBbGwsXG4gICAgICByZWZldGNoUXVlcmllczogdGhpcy5nZXRSZWZldGNoUXVlcmllc0Zvck11dGF0aW9uKG9wdHMpLFxuICAgICAgYXdhaXRSZWZldGNoUXVlcmllczogb3B0cyAmJiBvcHRzLmF3YWl0UmVmZXRjaFF1ZXJpZXMsXG4gICAgICB2YXJpYWJsZXM6IHsgaWRzIH0sXG4gICAgICBlcnJvcjoge2NvZGU6IEVycm9yQ29kZXMuREVMRVRFX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5ERUxFVEVfREFUQV9FUlJPUid9LFxuICAgICAgdXBkYXRlOiAoY2FjaGUsIHJlcykgPT4ge1xuXG4gICAgICAgIC8vIFJlbW92ZSBmcm9tIGNhY2hlXG4gICAgICAgIGlmICh0aGlzLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSA9PT0gJ3VwZGF0ZS1jYWNoZScpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUZyb21NdXRhYmxlQ2FjaGVkUXVlcmllc0J5SWRzKGNhY2hlLCB7XG4gICAgICAgICAgICBxdWVyaWVzOiB0aGlzLmdldExvYWRRdWVyaWVzKCksXG4gICAgICAgICAgICBpZHNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRzICYmIG9wdHMudXBkYXRlKSB7XG4gICAgICAgICAgb3B0cy51cGRhdGUoY2FjaGUsIHJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYCR7dGhpcy5fbG9nVHlwZU5hbWV9IGRlbGV0ZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGEgcmVmZXJlbnRpYWwgZW50aXR5XG4gICAqL1xuICBhc3luYyBkZWxldGUoZW50aXR5OiBULCBvcHRzPzogRW50aXR5U2F2ZU9wdGlvbnMgfCBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGlmICghdGhpcy5tdXRhdGlvbnMuZGVsZXRlKSB7XG4gICAgICBpZiAoIXRoaXMubXV0YXRpb25zLmRlbGV0ZUFsbCkgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmRlbGV0ZUFsbChbZW50aXR5XSwgb3B0cyk7XG4gICAgICByZXR1cm4gZGF0YSAmJiBkYXRhWzBdO1xuICAgIH1cblxuICAgIC8vIE5vdGhpbmcgdG8gc2F2ZTogc2tpcFxuICAgIGlmICghZW50aXR5IHx8IGlzTmlsKGVudGl0eS5pZCkpIHJldHVybjtcblxuICAgIGNvbnN0IGlkID0gZW50aXR5LmlkO1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGBEZWxldGluZyAke3RoaXMuX2xvZ1R5cGVOYW1lfSB7JHtpZH19Li4uYCk7XG5cbiAgICBhd2FpdCB0aGlzLmdyYXBocWwubXV0YXRlPGFueT4oe1xuICAgICAgbXV0YXRpb246IHRoaXMubXV0YXRpb25zLmRlbGV0ZSxcbiAgICAgIHJlZmV0Y2hRdWVyaWVzOiB0aGlzLmdldFJlZmV0Y2hRdWVyaWVzRm9yTXV0YXRpb24ob3B0cyksXG4gICAgICBhd2FpdFJlZmV0Y2hRdWVyaWVzOiBvcHRzICYmIG9wdHMuYXdhaXRSZWZldGNoUXVlcmllcyxcbiAgICAgIHZhcmlhYmxlczogeyBpZCB9LFxuICAgICAgZXJyb3I6IHtjb2RlOiBFcnJvckNvZGVzLkRFTEVURV9EQVRBX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuREVMRVRFX0RBVEFfRVJST1InfSxcbiAgICAgIHVwZGF0ZTogKHByb3h5LCByZXMpID0+IHtcblxuICAgICAgICAvLyBSZW1vdmUgZnJvbSBjYWNoZVxuICAgICAgICBpZiAodGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPT09ICd1cGRhdGUtY2FjaGUnKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVGcm9tTXV0YWJsZUNhY2hlZFF1ZXJpZXNCeUlkcyhwcm94eSwge1xuICAgICAgICAgICAgcXVlcmllczogdGhpcy5nZXRMb2FkUXVlcmllcygpLFxuICAgICAgICAgICAgaWRzOiBbaWRdXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0cyAmJiBvcHRzLnVwZGF0ZSkge1xuICAgICAgICAgIG9wdHMudXBkYXRlKHByb3h5LCByZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGAke3RoaXMuX2xvZ1R5cGVOYW1lfSBkZWxldGVkIGluICR7bmV3IERhdGUoKS5nZXRUaW1lKCkgLSBub3cuZ2V0VGltZSgpfW1zYCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBsaXN0ZW5DaGFuZ2VzKGlkOiBJRCwgb3B0cz86IHtcbiAgICBxdWVyeT86IGFueTtcbiAgICB2YXJpYWJsZXM/OiBhbnk7XG4gICAgaW50ZXJ2YWw/OiBudW1iZXI7XG4gICAgdG9FbnRpdHk/OiBib29sZWFuO1xuICB9KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgaWYgKGlzTmlsKGlkKSkgdGhyb3cgRXJyb3IoJ01pc3NpbmcgYXJndW1lbnQgXFwnaWRcXCcgJyk7XG4gICAgaWYgKCF0aGlzLnN1YnNjcmlwdGlvbnMubGlzdGVuQ2hhbmdlcykgdGhyb3cgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCEnKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlcyA9IG9wdHMgJiYgb3B0cy52YXJpYWJsZXMgfHwge1xuICAgICAgaWQsXG4gICAgICBpbnRlcnZhbDogdG9OdW1iZXIob3B0cyAmJiBvcHRzLmludGVydmFsLCAwKSAvLyBubyB0aW1lciBieSBkZWZhdWx0XG4gICAgfTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYFtXU10gTGlzdGVuaW5nIGZvciBjaGFuZ2VzIG9uICR7dGhpcy5fbG9nVHlwZU5hbWV9IHske2lkfX0uLi5gKTtcblxuICAgIHJldHVybiB0aGlzLmdyYXBocWwuc3Vic2NyaWJlPHtkYXRhOiBhbnl9Pih7XG4gICAgICBxdWVyeTogb3B0cyAmJiBvcHRzLnF1ZXJ5IHx8IHRoaXMuc3Vic2NyaXB0aW9ucy5saXN0ZW5DaGFuZ2VzLFxuICAgICAgdmFyaWFibGVzLFxuICAgICAgZXJyb3I6IHtcbiAgICAgICAgY29kZTogRXJyb3JDb2Rlcy5TVUJTQ1JJQkVfREFUQV9FUlJPUixcbiAgICAgICAgbWVzc2FnZTogJ0VSUk9SLlNVQlNDUklCRV9EQVRBX0VSUk9SJ1xuICAgICAgfVxuICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh7ZGF0YX0pID0+IHtcbiAgICAgICAgICBjb25zdCBlbnRpdHkgPSAoIW9wdHMgfHwgb3B0cy50b0VudGl0eSAhPT0gZmFsc2UpID8gZGF0YSAmJiB0aGlzLmZyb21PYmplY3QoZGF0YSkgOiBkYXRhO1xuICAgICAgICAgIGlmIChlbnRpdHkgJiYgdGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYFtXU10gUmVjZWl2ZWQgY2hhbmdlcyBvbiAke3RoaXMuX2xvZ1R5cGVOYW1lfSB7JHtpZH19YCwgZW50aXR5KTtcblxuICAgICAgICAgIC8vIFRPRE86IG1pc3NpbmcgPSBkZWxldGVkID9cbiAgICAgICAgICBpZiAoIWVudGl0eSkgY29uc29sZS53YXJuKHRoaXMuX2xvZ1ByZWZpeCArIGBbV1NdIFJlY2VpdmVkIGRlbGV0aW9uIG9uICR7dGhpcy5fbG9nVHlwZU5hbWV9IHske2lkfX0gLSBUT0RPIGNoZWNrIGltcGxlbWVudGF0aW9uYCk7XG5cbiAgICAgICAgICByZXR1cm4gZW50aXR5O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGNvcHlJZEFuZFVwZGF0ZURhdGUoc291cmNlOiBULCB0YXJnZXQ6IFQpIHtcbiAgICBpZiAoIXNvdXJjZSkgcmV0dXJuO1xuXG4gICAgLy8gVXBkYXRlIChpZCBhbmQgdXBkYXRlRGF0ZSlcbiAgICBFbnRpdHlVdGlscy5jb3B5SWRBbmRVcGRhdGVEYXRlKHNvdXJjZSwgdGFyZ2V0KTtcbiAgfVxuXG5cbiAgZnJvbU9iamVjdChzb3VyY2U6IGFueSk6IFQge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gc291cmNlO1xuICAgIGNvbnN0IHRhcmdldCA9IG5ldyB0aGlzLmRhdGFUeXBlKCk7XG4gICAgdGFyZ2V0LmZyb21PYmplY3Qoc291cmNlKTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgYXNGaWx0ZXIoc291cmNlOiBhbnkpOiBGIHtcbiAgICByZXR1cm4gRW50aXR5RmlsdGVyVXRpbHMuZnJvbU9iamVjdChzb3VyY2UsIHRoaXMuZmlsdGVyVHlwZSk7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgZnVuY3Rpb25zIC0tICovXG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nT25TdGFydCgpIHtcbiAgICAvLyBObyBsaW1pdCBmb3IgdXBkYXRhYmxlIHdhdGNoIHF1ZXJpZXMsIGlmIGRlc2t0b3BcbiAgICBpZiAoIXRoaXMucGxhdGZvcm0ubW9iaWxlKSB7XG4gICAgICB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnQgPSAtMTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZmlsbERlZmF1bHRQcm9wZXJ0aWVzKHNvdXJjZTogVCkge1xuICAgIC8vIENhbiBiZSBvdmVycmlkZSBieSBzdWJjbGFzc2VzXG4gIH1cblxuICBwcm90ZWN0ZWQgYXNPYmplY3QoZW50aXR5OiBULCBvcHRzPzogRW50aXR5QXNPYmplY3RPcHRpb25zKTogYW55IHtcbiAgICAvLyBDYW4gYmUgb3ZlcnJpZGUgYnkgc3ViY2xhc3Nlc1xuICAgIHJldHVybiBlbnRpdHkuYXNPYmplY3Qob3B0cyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UmVmZXRjaFF1ZXJpZXNGb3JNdXRhdGlvbihvcHRzPzogRW50aXR5U2F2ZU9wdGlvbnMpOiAoKHJlc3VsdDogRmV0Y2hSZXN1bHQ8e2RhdGE6IGFueX0+KSA9PiBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSkgfCBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSB7XG4gICAgaWYgKG9wdHMgJiYgb3B0cy5yZWZldGNoUXVlcmllcykgcmV0dXJuIG9wdHMucmVmZXRjaFF1ZXJpZXM7XG5cbiAgICAvLyBTa2lwIGlmIHVwZGF0ZSBwb2xpY3kgbm90IHVzZWQgcmVmZWN0aCBxdWVyaWVzXG4gICAgaWYgKHRoaXMud2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5ICE9PSAncmVmZXRjaC1xdWVyaWVzJykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHF1ZXJpZXMgPSB0aGlzLmdldExvYWRRdWVyaWVzKCk7XG4gICAgaWYgKCFxdWVyaWVzLmxlbmd0aCkgcmV0dXJuIHVuZGVmaW5lZDsgLy8gU2tpcCBpZiBlbXB0eVxuXG4gICAgLy8gRmluZCB0aGUgcmVmZXRjaCBxdWVyaWVzIGRlZmluaXRpb25cbiAgICByZXR1cm4gdGhpcy5maW5kUmVmZXRjaFF1ZXJpZXMoe3F1ZXJpZXN9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRMb2FkUXVlcmllcygpOiBEb2N1bWVudE5vZGVbXSB7XG4gICAgcmV0dXJuIFt0aGlzLnF1ZXJpZXMubG9hZEFsbCwgdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoVG90YWxdLmZpbHRlcihpc05vdE5pbCk7XG4gIH1cblxufVxuIl19
454
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1lbnRpdHktc2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9iYXNlLWVudGl0eS1zZXJ2aWNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBS3RDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2hFLE9BQU8sRUFBaUMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQWEsUUFBUSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQWdCLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUE0Q3ZFLFdBQVc7QUFFWCxrRUFBa0U7QUFDbEUsTUFBTSxPQUFnQixpQkFTcEIsU0FBUSxrQkFBNEI7SUFrQnBDLFlBQ1ksT0FBdUIsRUFDdkIsUUFBeUIsRUFDekIsUUFBb0IsRUFDcEIsVUFBc0IsRUFDaEMsT0FBaUQ7UUFFakQsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQU5s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QUFDLE1BQVMsRUFBRSxJQUE0QjtRQUN4RCxnQ0FBZ0M7UUFDaEMsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFUyw0QkFBNEIsQ0FBQyxJQUF3QjtRQUM3RCxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUU1RCxpREFBaUQ7UUFDakQsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssaUJBQWlCO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFMUUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtZQUFFLE9BQU8sU0FBUyxDQUFDLENBQUMsZ0JBQWdCO1FBRXZELHNDQUFzQztRQUN0QyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVTLGNBQWM7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEYsQ0FBQzs7O1lBMWdCRixTQUFTOzs7WUFyREQsY0FBYztZQUNkLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVycm9yQ29kZXMgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmltcG9ydCB7IEZldGNoUG9saWN5LCBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSwgTXV0YXRpb25VcGRhdGVyRm4gfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcblxuaW1wb3J0IHsgQmFzZUdyYXBocWxTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLWdyYXBocWwtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMsIEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucywgSUVudGl0aWVzU2VydmljZSwgSUVudGl0eVNlcnZpY2UsIExvYWRSZXN1bHQgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgR3JhcGhxbFNlcnZpY2UgfSBmcm9tICcuLi9ncmFwaHFsL2dyYXBocWwuc2VydmljZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2UgfSBmcm9tICcuL3BsYXRmb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlBc09iamVjdE9wdGlvbnMsIEVudGl0eVV0aWxzIH0gZnJvbSAnLi9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgY2hhaW5Qcm9taXNlcyB9IGZyb20gJy4uLy4uL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge2lzRW1wdHlBcnJheSwgaXNOaWwsIGlzTm90TmlsLCByZW1vdmVFbmQsIHRvQm9vbGVhbiwgdG9OdW1iZXJ9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGZXRjaFJlc3VsdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2xpbmsvY29yZSc7XG5pbXBvcnQgeyBFbnRpdHlGaWx0ZXIsIEVudGl0eUZpbHRlclV0aWxzIH0gZnJvbSAnLi9tb2RlbC9maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHsgRG9jdW1lbnROb2RlIH0gZnJvbSAnZ3JhcGhxbCc7XG5cbmV4cG9ydCB0eXBlIE11dGFibGVXYXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPSAndXBkYXRlLWNhY2hlJyB8ICdyZWZldGNoLXF1ZXJpZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VFbnRpdHlHcmFwaHFsUXVlcmllcyB7XG4gIGxvYWQ/OiBhbnk7XG4gIGxvYWRBbGw6IGFueTtcbiAgbG9hZEFsbFdpdGhUb3RhbD86IGFueTtcbiAgY291bnRBbGw/OiBhbnk7XG59XG5leHBvcnQgaW50ZXJmYWNlIEJhc2VFbnRpdHlHcmFwaHFsTXV0YXRpb25zIHtcbiAgc2F2ZT86IGFueTtcbiAgZGVsZXRlPzogYW55O1xuICBzYXZlQWxsPzogYW55O1xuICBkZWxldGVBbGw/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUVudGl0eUdyYXBocWxTdWJzY3JpcHRpb25zIHtcbiAgbGlzdGVuQ2hhbmdlcz86IGFueTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUVudGl0eVNlcnZpY2VPcHRpb25zPFxuICBUIGV4dGVuZHMgRW50aXR5PGFueSwgSUQ+LFxuICBJRCA9IG51bWJlcixcbiAgUSBleHRlbmRzIEJhc2VFbnRpdHlHcmFwaHFsUXVlcmllcyA9IEJhc2VFbnRpdHlHcmFwaHFsUXVlcmllcyxcbiAgTSBleHRlbmRzIEJhc2VFbnRpdHlHcmFwaHFsTXV0YXRpb25zID0gQmFzZUVudGl0eUdyYXBocWxNdXRhdGlvbnMsXG4gIFMgZXh0ZW5kcyBCYXNlRW50aXR5R3JhcGhxbFN1YnNjcmlwdGlvbnMgPSBCYXNlRW50aXR5R3JhcGhxbFN1YnNjcmlwdGlvbnM+IHtcbiAgcXVlcmllczogUTtcbiAgbXV0YXRpb25zPzogUGFydGlhbDxNPjtcbiAgc3Vic2NyaXB0aW9ucz86IFBhcnRpYWw8Uz47XG4gIGVxdWFsc0ZuPzogKGUxOiBULCBlMjogVCkgPT4gYm9vbGVhbjtcbiAgaXNOZXdGbj86IChlOiBUKSA9PiBib29sZWFuO1xuICBkZWZhdWx0U29ydEJ5Pzoga2V5b2YgVDtcbiAgZGVmYXVsdFNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uO1xuICB3YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3k/OiBNdXRhYmxlV2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eVNhdmVPcHRpb25zIHtcbiAgcmVmZXRjaFF1ZXJpZXM/OiAoKHJlc3VsdDogRmV0Y2hSZXN1bHQ8e2RhdGE6IGFueX0+KSA9PiBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSkgfCBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZTtcbiAgYXdhaXRSZWZldGNoUXVlcmllcz86IGJvb2xlYW47XG4gIHVwZGF0ZT86IE11dGF0aW9uVXBkYXRlckZuPHsgZGF0YTogYW55OyB9Pjtcbn1cblxuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRW50aXR5U2VydmljZTxcbiAgVCBleHRlbmRzIEVudGl0eTxULCBJRD4sXG4gIEYgZXh0ZW5kcyBFbnRpdHlGaWx0ZXI8RiwgVCwgSUQ+LFxuICBJRCA9IG51bWJlcixcbiAgV08gZXh0ZW5kcyBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMgPSBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMsXG4gIExPIGV4dGVuZHMgRW50aXR5U2VydmljZUxvYWRPcHRpb25zID0gRW50aXR5U2VydmljZUxvYWRPcHRpb25zLFxuICBRIGV4dGVuZHMgQmFzZUVudGl0eUdyYXBocWxRdWVyaWVzID0gQmFzZUVudGl0eUdyYXBocWxRdWVyaWVzLFxuICBNIGV4dGVuZHMgQmFzZUVudGl0eUdyYXBocWxNdXRhdGlvbnMgPSBCYXNlRW50aXR5R3JhcGhxbE11dGF0aW9ucyxcbiAgUyBleHRlbmRzIEJhc2VFbnRpdHlHcmFwaHFsU3Vic2NyaXB0aW9ucyA9IEJhc2VFbnRpdHlHcmFwaHFsU3Vic2NyaXB0aW9ucz5cbiAgZXh0ZW5kcyBCYXNlR3JhcGhxbFNlcnZpY2U8VCwgRiwgSUQ+XG4gIGltcGxlbWVudHNcbiAgICBJRW50aXRpZXNTZXJ2aWNlPFQsIEYsIFdPPixcbiAgICBJRW50aXR5U2VydmljZTxULCBJRCwgTE8+IHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3R5cGVuYW1lOiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZWFkb25seSBfbG9nVHlwZU5hbWU6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcXVlcmllczogUTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG11dGF0aW9uczogUGFydGlhbDxNPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1YnNjcmlwdGlvbnM6IFBhcnRpYWw8Uz47XG4gIHByb3RlY3RlZCByZWFkb25seSBlcXVhbHNGbjogKGUxOiBULCBlMjogVCkgPT4gYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTmV3Rm46IChlOiBUKSA9PiBib29sZWFuO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkZWZhdWx0U29ydEJ5OiBrZXlvZiBUO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG4gIHByb3RlY3RlZCByZWFkb25seSB3YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3k6IE11dGFibGVXYXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3k7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBncmFwaHFsOiBHcmFwaHFsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZGF0YVR5cGU6IG5ldygpID0+IFQsXG4gICAgcHJvdGVjdGVkIGZpbHRlclR5cGU6IG5ldygpID0+IEYsXG4gICAgb3B0aW9uczogQmFzZUVudGl0eVNlcnZpY2VPcHRpb25zPFQsIElELCBRLCBNLCBTPlxuICApIHtcbiAgICBzdXBlcihncmFwaHFsLCBlbnZpcm9ubWVudCk7XG4gICAgdGhpcy5xdWVyaWVzID0gb3B0aW9ucy5xdWVyaWVzO1xuICAgIHRoaXMubXV0YXRpb25zID0gb3B0aW9ucy5tdXRhdGlvbnMgfHwgPFBhcnRpYWw8TT4+e307XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gb3B0aW9ucy5zdWJzY3JpcHRpb25zIHx8IDxQYXJ0aWFsPFM+Pnt9O1xuICAgIHRoaXMuZXF1YWxzRm4gPSBvcHRpb25zLmVxdWFsc0ZuIHx8ICgoZTEsIGUyKSA9PiBFbnRpdHlVdGlscy5lcXVhbHMoZTEsIGUyLCAnaWQnKSk7XG4gICAgdGhpcy5pc05ld0ZuID0gb3B0aW9ucy5pc05ld0ZuIHx8ICgoZSkgPT4gRW50aXR5VXRpbHMuaXNOb3RFbXB0eShlLCAnaWQnKSk7XG4gICAgdGhpcy5kZWZhdWx0U29ydEJ5ID0gb3B0aW9ucy5kZWZhdWx0U29ydEJ5IHx8ICdpZCc7XG4gICAgdGhpcy5kZWZhdWx0U29ydERpcmVjdGlvbiA9IG9wdGlvbnMuZGVmYXVsdFNvcnREaXJlY3Rpb24gfHwgJ2FzYyc7XG4gICAgdGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPSBvcHRpb25zLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSB8fCAndXBkYXRlLWNhY2hlJztcblxuICAgIGNvbnN0IG9iaiA9IG5ldyBkYXRhVHlwZSgpO1xuICAgIHRoaXMuX3R5cGVuYW1lID0gb2JqLl9fdHlwZW5hbWUgfHwgJ1Vua25vd25WTyc7XG4gICAgdGhpcy5fbG9nVHlwZU5hbWUgPSByZW1vdmVFbmQodGhpcy5fdHlwZW5hbWUsICdWTycpO1xuXG4gICAgLy8gRm9yIERFViBvbmx5XG4gICAgdGhpcy5fZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIHdhdGNoKGlkOiBudW1iZXIsIG9wdHM/OiBXTyAmIHsgcXVlcnk/OiBhbnkgfSk6IE9ic2VydmFibGU8VD4ge1xuXG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGBXYXRjaGluZyAke3RoaXMuX2xvZ1R5cGVOYW1lfSB7JHtpZH19Li4uYCk7XG5cbiAgICBjb25zdCBxdWVyeSA9IG9wdHMgJiYgb3B0cy5xdWVyeSB8fCB0aGlzLnF1ZXJpZXMubG9hZDtcbiAgICByZXR1cm4gdGhpcy5ncmFwaHFsLndhdGNoUXVlcnk8e2RhdGE6IGFueX0+KHtcbiAgICAgIHF1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7IGlkIH0sXG4gICAgICBmZXRjaFBvbGljeTogb3B0cyAmJiAob3B0cy5mZXRjaFBvbGljeSBhcyBGZXRjaFBvbGljeSkgfHwgdW5kZWZpbmVkLFxuICAgICAgZXJyb3I6IHtjb2RlOiBFcnJvckNvZGVzLkxPQURfREFUQV9FUlJPUiwgbWVzc2FnZTogJ1JFRkVSRU5USUFMLkVSUk9SLkxPQURfREFUQV9FUlJPUid9XG4gICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHtkYXRhfSkgPT4gKCFvcHRzIHx8IG9wdHMudG9FbnRpdHkgIT09IGZhbHNlKVxuICAgICAgICAgICAgPyAoZGF0YSAmJiB0aGlzLmZyb21PYmplY3QoZGF0YSkpXG4gICAgICAgICAgICA6IChkYXRhIGFzIFQpKVxuICAgICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoaWQ6IElELCBvcHRzPzogTE8gJiB7IHF1ZXJ5PzogYW55IH0pOiBQcm9taXNlPFQ+IHtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgTG9hZGluZyAke3RoaXMuX2xvZ1R5cGVOYW1lfSB7JHtpZH19Li4uYCk7XG4gICAgY29uc3QgcXVlcnkgPSBvcHRzICYmIG9wdHMucXVlcnkgfHwgdGhpcy5xdWVyaWVzLmxvYWQ7XG5cbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7ZGF0YTogYW55fT4oe1xuICAgICAgcXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHsgaWQgfSxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRzICYmIChvcHRzLmZldGNoUG9saWN5IGFzIEZldGNoUG9saWN5KSB8fCB1bmRlZmluZWQsXG4gICAgICBlcnJvcjoge2NvZGU6IEVycm9yQ29kZXMuTE9BRF9EQVRBX0VSUk9SLCBtZXNzYWdlOiAnUkVGRVJFTlRJQUwuRVJST1IuTE9BRF9EQVRBX0VSUk9SJ31cbiAgICB9KTtcblxuICAgIC8vIENvbnZlcnQgdG8gZW50aXR5XG4gICAgcmV0dXJuICghb3B0cyB8fCBvcHRzLnRvRW50aXR5ICE9PSBmYWxzZSlcbiAgICAgID8gKGRhdGEgJiYgdGhpcy5mcm9tT2JqZWN0KGRhdGEpKVxuICAgICAgOiAoZGF0YSBhcyBUKTtcbiAgfVxuXG4gIHdhdGNoQWxsKG9mZnNldDogbnVtYmVyLFxuICAgICAgICAgICBzaXplOiBudW1iZXIsXG4gICAgICAgICAgIHNvcnRCeT86IHN0cmluZyxcbiAgICAgICAgICAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgIGZpbHRlcj86IEYsXG4gICAgICAgICAgIG9wdHM/OiBXTyAmIHsgcXVlcnk/OiBhbnkgfVxuICApOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8VD4+IHtcblxuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlczogYW55ID0ge1xuICAgICAgb2Zmc2V0OiBvZmZzZXQgfHwgMCxcbiAgICAgIHNpemU6IHNpemUgfHwgMTAwLFxuICAgICAgc29ydEJ5OiBzb3J0QnkgfHwgdGhpcy5kZWZhdWx0U29ydEJ5LFxuICAgICAgc29ydERpcmVjdGlvbjogc29ydERpcmVjdGlvbiB8fCB0aGlzLmRlZmF1bHRTb3J0RGlyZWN0aW9uLFxuICAgICAgZmlsdGVyOiBmaWx0ZXIgJiYgZmlsdGVyLmFzUG9kT2JqZWN0KClcbiAgICB9O1xuXG4gICAgbGV0IG5vdyA9IHRoaXMuX2RlYnVnICYmIERhdGUubm93KCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGBXYXRjaGluZyAke3RoaXMuX2xvZ1R5cGVOYW1lfS4uLmAsIHZhcmlhYmxlcyk7XG5cbiAgICBjb25zdCB3aXRoVG90YWwgPSAoIW9wdHMgfHwgb3B0cy53aXRoVG90YWwgIT09IGZhbHNlKSAmJiB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhUb3RhbCAmJiB0cnVlO1xuICAgIGNvbnN0IHF1ZXJ5ID0gKG9wdHMgJiYgb3B0cy5xdWVyeSkgLy8gdXNlIGdpdmVuIHF1ZXJ5XG4gICAgICAvLyBPciBnZXQgbG9hZEFsbCBvciBsb2FkQWxsV2l0aFRvdGFsIHF1ZXJ5XG4gICAgICB8fCAod2l0aFRvdGFsID8gdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoVG90YWwgIDogdGhpcy5xdWVyaWVzLmxvYWRBbGwpO1xuICAgIHJldHVybiB0aGlzLm11dGFibGVXYXRjaFF1ZXJ5PExvYWRSZXN1bHQ8YW55Pj4oe1xuICAgICAgcXVlcnlOYW1lOiB3aXRoVG90YWwgPyAnTG9hZEFsbFdpdGhUb3RhbCcgOiAnTG9hZEFsbCcsXG4gICAgICBxdWVyeSxcbiAgICAgIGFycmF5RmllbGROYW1lOiAnZGF0YScsXG4gICAgICB0b3RhbEZpZWxkTmFtZTogd2l0aFRvdGFsID8gJ3RvdGFsJyA6IHVuZGVmaW5lZCxcbiAgICAgIGluc2VydEZpbHRlckZuOiBmaWx0ZXIgJiYgZmlsdGVyLmFzRmlsdGVyRm4oKSxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICAgIGVycm9yOiB7Y29kZTogRXJyb3JDb2Rlcy5MT0FEX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdSRUZFUkVOVElBTC5FUlJPUi5MT0FEX0RBVEFfRVJST1InfSxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRzICYmIG9wdHMuZmV0Y2hQb2xpY3kgfHwgdW5kZWZpbmVkXG4gICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHtkYXRhLCB0b3RhbH0pID0+IHtcbiAgICAgICAgICAvLyBDb252ZXJ0IHRvIGVudGl0eSAoaWYgbmVlZClcbiAgICAgICAgICBjb25zdCBlbnRpdGllcyA9ICghb3B0cyB8fCBvcHRzLnRvRW50aXR5ICE9PSBmYWxzZSlcbiAgICAgICAgICAgID8gKGRhdGEgfHwgW10pLm1hcChqc29uID0+IHRoaXMuZnJvbU9iamVjdChqc29uKSlcbiAgICAgICAgICAgIDogKGRhdGEgfHwgW10pIGFzIFRbXTtcblxuICAgICAgICAgIGlmIChub3cpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYCR7dGhpcy5fbG9nVHlwZU5hbWV9IGxvYWRlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgLCBlbnRpdGllcyk7XG4gICAgICAgICAgICBub3cgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ge2RhdGE6IGVudGl0aWVzLCB0b3RhbH07XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgYXN5bmMgbG9hZEFsbChvZmZzZXQ6IG51bWJlcixcbiAgICAgICAgICAgICAgICBzaXplOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgc29ydEJ5Pzogc3RyaW5nLFxuICAgICAgICAgICAgICAgIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uLFxuICAgICAgICAgICAgICAgIGZpbHRlcj86IFBhcnRpYWw8Rj4sXG4gICAgICAgICAgICAgICAgb3B0cz86IExPICYge1xuICAgICAgICAgICAgICAgICAgcXVlcnk/OiBhbnk7XG4gICAgICAgICAgICAgICAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICB3aXRoVG90YWw/OiBib29sZWFuO1xuICAgICAgICAgICAgICAgIH1cbiAgKTogUHJvbWlzZTxMb2FkUmVzdWx0PFQ+PiB7XG5cbiAgICBjb25zdCBkZWJ1ZyA9IHRoaXMuX2RlYnVnICYmICghb3B0cyB8fCBvcHRzLmRlYnVnICE9PSBmYWxzZSk7XG5cbiAgICBmaWx0ZXIgPSB0aGlzLmFzRmlsdGVyKGZpbHRlcik7XG5cbiAgICBjb25zdCB2YXJpYWJsZXM6IGFueSA9IHtcbiAgICAgIG9mZnNldDogb2Zmc2V0IHx8IDAsXG4gICAgICBzaXplOiBzaXplIHx8IDEwMCxcbiAgICAgIHNvcnRCeTogc29ydEJ5IHx8ICdpZCcsXG4gICAgICBzb3J0RGlyZWN0aW9uOiBzb3J0RGlyZWN0aW9uIHx8ICdhc2MnLFxuICAgICAgZmlsdGVyOiBmaWx0ZXIgJiYgZmlsdGVyLmFzUG9kT2JqZWN0KClcbiAgICB9O1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAoZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYExvYWRpbmcgJHt0aGlzLl9sb2dUeXBlTmFtZX0uLi5gLCB2YXJpYWJsZXMpO1xuXG4gICAgY29uc3Qgd2l0aFRvdGFsID0gKCFvcHRzIHx8IG9wdHMud2l0aFRvdGFsICE9PSBmYWxzZSkgJiYgdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoVG90YWwgJiYgdHJ1ZTtcbiAgICBjb25zdCBxdWVyeSA9IChvcHRzICYmIG9wdHMucXVlcnkpIC8vIHVzZSBnaXZlbiBxdWVyeVxuICAgICAgLy8gT3IgZ2V0IGxvYWRBbGwgb3IgbG9hZEFsbFdpdGhUb3RhbCBxdWVyeVxuICAgICAgfHwgKHdpdGhUb3RhbCA/IHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aFRvdGFsICA6IHRoaXMucXVlcmllcy5sb2FkQWxsKTtcbiAgICBjb25zdCB7ZGF0YSwgdG90YWx9ID0gYXdhaXQgdGhpcy5ncmFwaHFsLnF1ZXJ5PExvYWRSZXN1bHQ8YW55Pj4oe1xuICAgICAgcXVlcnksXG4gICAgICB2YXJpYWJsZXMsXG4gICAgICBlcnJvcjoge2NvZGU6IEVycm9yQ29kZXMuTE9BRF9EQVRBX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuTE9BRF9EQVRBX0VSUk9SJ30sXG4gICAgICBmZXRjaFBvbGljeTogb3B0cyAmJiBvcHRzLmZldGNoUG9saWN5IHx8ICduZXR3b3JrLW9ubHknXG4gICAgfSk7XG4gICAgY29uc3QgZW50aXRpZXMgPSAoIW9wdHMgfHwgb3B0cy50b0VudGl0eSAhPT0gZmFsc2UpID9cbiAgICAgIChkYXRhIHx8IFtdKS5tYXAoanNvbiA9PiB0aGlzLmZyb21PYmplY3QoanNvbikpIDpcbiAgICAgIChkYXRhIHx8IFtdKSBhcyBUW107XG4gICAgaWYgKGRlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGAke3RoaXMuX2xvZ1R5cGVOYW1lfSBpdGVtcyBsb2FkZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG5cbiAgICBjb25zdCByZXM6IExvYWRSZXN1bHQ8VD4gPSB7XG4gICAgICBkYXRhOiBlbnRpdGllcyxcbiAgICAgIHRvdGFsXG4gICAgfTtcblxuICAgIC8vIEFkZCBmZXRjaCBtb3JlIGNhcGFiaWxpdHksIGlmIHRvdGFsIHdhcyBmZXRjaGVkXG4gICAgaWYgKHdpdGhUb3RhbCkge1xuICAgICAgY29uc3QgbmV4dE9mZnNldCA9IChvZmZzZXQgfHwgMCkgKyBlbnRpdGllcy5sZW5ndGg7XG4gICAgICBpZiAobmV4dE9mZnNldCA8IHJlcy50b3RhbCkge1xuICAgICAgICByZXMuZmV0Y2hNb3JlID0gKCkgPT4gdGhpcy5sb2FkQWxsKG5leHRPZmZzZXQsIHNpemUsIHNvcnRCeSwgc29ydERpcmVjdGlvbiwgZmlsdGVyLCBvcHRzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgYXN5bmMgY291bnRBbGwoZmlsdGVyPzogUGFydGlhbDxGPiwgb3B0cz86IExPKSB7XG4gICAgLy8gSWYgbm8gY291bnRBbGwgcXVlcnlcbiAgICBpZiAoIXRoaXMucXVlcmllcy5jb3VudEFsbCkge1xuICAgICAgLy8gRmFpbCBpZiBubyBsb2FkQWxsIChjYW5ub3QgY291bnQpXG4gICAgICBpZiAoIXRoaXMucXVlcmllcy5sb2FkQWxsV2l0aFRvdGFsKSB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuXG4gICAgICAvLyBVc2UgbG9hZEFsbCBxdWVyeSwgd2l0aCBzaXplID0gMDtcbiAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5sb2FkQWxsKDAsIDEsIG51bGwsIG51bGwsIGZpbHRlcixcbiAgICAgICAgPExPICYgeyB3aXRoVG90YWw6IGJvb2xlYW47IH0+e3dpdGhUb3RhbDogdHJ1ZX0pKT8udG90YWwgfHwgMDtcbiAgICB9XG5cbiAgICBmaWx0ZXIgPSB0aGlzLmFzRmlsdGVyKGZpbHRlcik7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdyYXBocWwucXVlcnk8eyB0b3RhbDogbnVtYmVyO30+KHtcbiAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXMuY291bnRBbGwsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgZmlsdGVyOiBmaWx0ZXIgJiYgZmlsdGVyLmFzUG9kT2JqZWN0KClcbiAgICAgIH0sXG4gICAgICBlcnJvcjoge2NvZGU6IEVycm9yQ29kZXMuTE9BRF9EQVRBX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuQ09VTlRfREFUQV9FUlJPUid9LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdHMgJiYgb3B0cy5mZXRjaFBvbGljeSB8fCAnbmV0d29yay1vbmx5J1xuICAgIH0pO1xuICAgIHJldHVybiByZXMudG90YWw7XG4gIH1cblxuICBjYW5Vc2VyV3JpdGUoZGF0YTogVCwgb3B0cz86IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWRhdGE7XG4gIH1cblxuICBhc3luYyBzYXZlQWxsKGVudGl0aWVzOiBUW10sIG9wdHM/OiBFbnRpdHlTYXZlT3B0aW9ucyk6IFByb21pc2U8VFtdPiB7XG4gICAgaWYgKGlzRW1wdHlBcnJheShlbnRpdGllcykpIHJldHVybiBlbnRpdGllczsgLy8gTm90aGluZyB0byBzYXZlOiBza2lwXG5cbiAgICBpZiAoIXRoaXMubXV0YXRpb25zLnNhdmVBbGwpIHtcbiAgICAgIGlmICghdGhpcy5tdXRhdGlvbnMuc2F2ZSkgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICAgIC8vIFNhdmUgb25lIGJ5IG9uZVxuICAgICAgcmV0dXJuIGNoYWluUHJvbWlzZXMoKGVudGl0aWVzIHx8IFtdKVxuICAgICAgICAubWFwKGVudGl0eSA9PiAoKCkgPT4gdGhpcy5zYXZlKGVudGl0eSwgb3B0cykpKSk7XG4gICAgfVxuXG4gICAgbGV0IGhhc05ld0VudGl0aWVzID0gZmFsc2U7XG4gICAgY29uc3QganNvbiA9IGVudGl0aWVzLm1hcChlbnRpdHkgPT4ge1xuICAgICAgaGFzTmV3RW50aXRpZXMgPSBoYXNOZXdFbnRpdGllcyB8fCB0aGlzLmlzTmV3Rm4oZW50aXR5KTtcbiAgICAgIHRoaXMuZmlsbERlZmF1bHRQcm9wZXJ0aWVzKGVudGl0eSk7XG4gICAgICByZXR1cm4gdGhpcy5hc09iamVjdChlbnRpdHkpO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYFNhdmluZyBhbGwgJHt0aGlzLl9sb2dUeXBlTmFtZX0uLi5gLCBqc29uKTtcblxuICAgIGF3YWl0IHRoaXMuZ3JhcGhxbC5tdXRhdGU8TG9hZFJlc3VsdDxhbnk+Pih7XG4gICAgICBtdXRhdGlvbjogdGhpcy5tdXRhdGlvbnMuc2F2ZUFsbCxcbiAgICAgIHJlZmV0Y2hRdWVyaWVzOiB0aGlzLmdldFJlZmV0Y2hRdWVyaWVzRm9yTXV0YXRpb24ob3B0cyksXG4gICAgICBhd2FpdFJlZmV0Y2hRdWVyaWVzOiBvcHRzICYmIG9wdHMuYXdhaXRSZWZldGNoUXVlcmllcyxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBkYXRhOiBqc29uXG4gICAgICB9LFxuICAgICAgZXJyb3I6IHtjb2RlOiBFcnJvckNvZGVzLlNBVkVfREFUQV9FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLlNBVkVfREFUQV9FUlJPUid9LFxuICAgICAgdXBkYXRlOiAocHJveHksIHtkYXRhfSkgPT4ge1xuICAgICAgICBjb25zdCBzYXZlZEVudGl0aWVzID0gZGF0YSAmJiBkYXRhLmRhdGE7XG4gICAgICAgIGlmIChzYXZlZEVudGl0aWVzKSB7XG4gICAgICAgICAgLy8gVXBkYXRlIGVudGl0aWVzIChpZCBhbmQgdXBkYXRlIGRhdGUpXG4gICAgICAgICAgZW50aXRpZXMuZm9yRWFjaChlbnRpdHkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2F2ZWRFbnRpdHkgPSBzYXZlZEVudGl0aWVzLmZpbmQoZSA9PiB0aGlzLmVxdWFsc0ZuKGUsIGVudGl0eSkpO1xuICAgICAgICAgICAgdGhpcy5jb3B5SWRBbmRVcGRhdGVEYXRlKHNhdmVkRW50aXR5LCBlbnRpdHkpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKGhhc05ld0VudGl0aWVzICYmIHRoaXMud2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5ID09PSAndXBkYXRlLWNhY2hlJykge1xuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBjYWNoZVxuICAgICAgICAgICAgdGhpcy5pbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJpZXMocHJveHksIHtcbiAgICAgICAgICAgICAgcXVlcmllczogdGhpcy5nZXRMb2FkUXVlcmllcygpLFxuICAgICAgICAgICAgICBkYXRhOiBzYXZlZEVudGl0aWVzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0cyAmJiBvcHRzLnVwZGF0ZSkge1xuICAgICAgICAgIG9wdHMudXBkYXRlKHByb3h5LCB7ZGF0YX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1R5cGVOYW1lfSBzYXZlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgLCBlbnRpdGllcyk7XG5cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlbnRpdGllcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGEgcmVmZXJlbnRpYWwgZW50aXR5XG4gICAqXG4gICAqIEBwYXJhbSBlbnRpdHlcbiAgICogQHBhcmFtIG9wdHNcbiAgICovXG4gIGFzeW5jIHNhdmUoZW50aXR5OiBULCBvcHRzPzogRW50aXR5U2F2ZU9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAoIXRoaXMubXV0YXRpb25zLnNhdmUpIHtcbiAgICAgIGlmICghdGhpcy5tdXRhdGlvbnMuc2F2ZUFsbCkgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnNhdmVBbGwoW2VudGl0eV0sIG9wdHMpO1xuICAgICAgcmV0dXJuIGRhdGEgJiYgZGF0YVswXTtcbiAgICB9XG5cbiAgICAvLyBGaWxsIGRlZmF1bHQgcHJvcGVydGllc1xuICAgIHRoaXMuZmlsbERlZmF1bHRQcm9wZXJ0aWVzKGVudGl0eSk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gaW50byBqc29uXG4gICAgY29uc3QganNvbiA9IHRoaXMuYXNPYmplY3QoZW50aXR5KTtcblxuICAgIGNvbnN0IGlzTmV3ID0gdGhpcy5pc05ld0ZuKGpzb24pO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYFNhdmluZyAke3RoaXMuX2xvZ1R5cGVOYW1lfS4uLmAsIGpzb24pO1xuXG4gICAgYXdhaXQgdGhpcy5ncmFwaHFsLm11dGF0ZTx7ZGF0YTogYW55fT4oe1xuICAgICAgbXV0YXRpb246IHRoaXMubXV0YXRpb25zLnNhdmUsXG4gICAgICByZWZldGNoUXVlcmllczogdGhpcy5nZXRSZWZldGNoUXVlcmllc0Zvck11dGF0aW9uKG9wdHMpLFxuICAgICAgYXdhaXRSZWZldGNoUXVlcmllczogb3B0cyAmJiBvcHRzLmF3YWl0UmVmZXRjaFF1ZXJpZXMsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgZGF0YToganNvblxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7Y29kZTogRXJyb3JDb2Rlcy5TQVZFX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5TQVZFX0RBVEFfRVJST1InfSxcbiAgICAgIHVwZGF0ZTogKGNhY2hlLCB7ZGF0YX0pID0+IHtcbiAgICAgICAgLy8gVXBkYXRlIGVudGl0eVxuICAgICAgICBjb25zdCBzYXZlZEVudGl0eSA9IGRhdGEgJiYgZGF0YS5kYXRhO1xuICAgICAgICB0aGlzLmNvcHlJZEFuZFVwZGF0ZURhdGUoc2F2ZWRFbnRpdHksIGVudGl0eSk7XG5cbiAgICAgICAgLy8gSW5zZXJ0IGludG8gdGhlIGNhY2hlXG4gICAgICAgIGlmIChpc05ldyAmJiB0aGlzLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSA9PT0gJ3VwZGF0ZS1jYWNoZScpIHtcbiAgICAgICAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhjYWNoZSwge1xuICAgICAgICAgICAgcXVlcmllczogdGhpcy5nZXRMb2FkUXVlcmllcygpLFxuICAgICAgICAgICAgZGF0YTogc2F2ZWRFbnRpdHlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRzICYmIG9wdHMudXBkYXRlKSB7XG4gICAgICAgICAgb3B0cy51cGRhdGUoY2FjaGUsIHtkYXRhfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYCR7ZW50aXR5Ll9fdHlwZW5hbWV9IHNhdmVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2AsIGVudGl0eSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSByZWZlcmVudGlhbCBlbnRpdGllc1xuICAgKi9cbiAgYXN5bmMgZGVsZXRlQWxsKGVudGl0aWVzOiBUW10sIG9wdHM/OiBQYXJ0aWFsPHtcbiAgICB1cGRhdGU6IE11dGF0aW9uVXBkYXRlckZuPGFueT47XG4gIH0+IHwgYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMubXV0YXRpb25zLmRlbGV0ZUFsbCkge1xuICAgICAgaWYgKCF0aGlzLm11dGF0aW9ucy5kZWxldGUpIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgICAvLyBEZWxldGUgb25lIGJ5IG9uZVxuICAgICAgcmV0dXJuIGNoYWluUHJvbWlzZXMoKGVudGl0aWVzIHx8IFtdKVxuICAgICAgICAubWFwKGVudGl0eSA9PiAoKCkgPT4gdGhpcy5kZWxldGUoZW50aXR5LCBvcHRzKSkpKTtcbiAgICB9XG5cbiAgICAvLyBGaWx0ZXIgc2F2ZWQgZW50aXRpZXNcbiAgICBlbnRpdGllcyA9IGVudGl0aWVzICYmIGVudGl0aWVzLmZpbHRlcihlID0+IGlzTm90TmlsKGUuaWQpKTtcblxuICAgIC8vIE5vdGhpbmcgdG8gc2F2ZTogc2tpcFxuICAgIGlmIChpc0VtcHR5QXJyYXkoZW50aXRpZXMpKSByZXR1cm47XG5cbiAgICBjb25zdCBpZHMgPSBlbnRpdGllcy5tYXAodCA9PiB0LmlkKTtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgRGVsZXRpbmcgJHt0aGlzLl9sb2dUeXBlTmFtZX0uLi5gLCBpZHMpO1xuXG4gICAgYXdhaXQgdGhpcy5ncmFwaHFsLm11dGF0ZTxhbnk+KHtcbiAgICAgIG11dGF0aW9uOiB0aGlzLm11dGF0aW9ucy5kZWxldGVBbGwsXG4gICAgICByZWZldGNoUXVlcmllczogdGhpcy5nZXRSZWZldGNoUXVlcmllc0Zvck11dGF0aW9uKG9wdHMpLFxuICAgICAgYXdhaXRSZWZldGNoUXVlcmllczogb3B0cyAmJiBvcHRzLmF3YWl0UmVmZXRjaFF1ZXJpZXMsXG4gICAgICB2YXJpYWJsZXM6IHsgaWRzIH0sXG4gICAgICBlcnJvcjoge2NvZGU6IEVycm9yQ29kZXMuREVMRVRFX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5ERUxFVEVfREFUQV9FUlJPUid9LFxuICAgICAgdXBkYXRlOiAoY2FjaGUsIHJlcykgPT4ge1xuXG4gICAgICAgIC8vIFJlbW92ZSBmcm9tIGNhY2hlXG4gICAgICAgIGlmICh0aGlzLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSA9PT0gJ3VwZGF0ZS1jYWNoZScpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUZyb21NdXRhYmxlQ2FjaGVkUXVlcmllc0J5SWRzKGNhY2hlLCB7XG4gICAgICAgICAgICBxdWVyaWVzOiB0aGlzLmdldExvYWRRdWVyaWVzKCksXG4gICAgICAgICAgICBpZHNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRzICYmIG9wdHMudXBkYXRlKSB7XG4gICAgICAgICAgb3B0cy51cGRhdGUoY2FjaGUsIHJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYCR7dGhpcy5fbG9nVHlwZU5hbWV9IGRlbGV0ZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGEgcmVmZXJlbnRpYWwgZW50aXR5XG4gICAqL1xuICBhc3luYyBkZWxldGUoZW50aXR5OiBULCBvcHRzPzogRW50aXR5U2F2ZU9wdGlvbnMgfCBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGlmICghdGhpcy5tdXRhdGlvbnMuZGVsZXRlKSB7XG4gICAgICBpZiAoIXRoaXMubXV0YXRpb25zLmRlbGV0ZUFsbCkgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmRlbGV0ZUFsbChbZW50aXR5XSwgb3B0cyk7XG4gICAgICByZXR1cm4gZGF0YSAmJiBkYXRhWzBdO1xuICAgIH1cblxuICAgIC8vIE5vdGhpbmcgdG8gc2F2ZTogc2tpcFxuICAgIGlmICghZW50aXR5IHx8IGlzTmlsKGVudGl0eS5pZCkpIHJldHVybjtcblxuICAgIGNvbnN0IGlkID0gZW50aXR5LmlkO1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGBEZWxldGluZyAke3RoaXMuX2xvZ1R5cGVOYW1lfSB7JHtpZH19Li4uYCk7XG5cbiAgICBhd2FpdCB0aGlzLmdyYXBocWwubXV0YXRlPGFueT4oe1xuICAgICAgbXV0YXRpb246IHRoaXMubXV0YXRpb25zLmRlbGV0ZSxcbiAgICAgIHJlZmV0Y2hRdWVyaWVzOiB0aGlzLmdldFJlZmV0Y2hRdWVyaWVzRm9yTXV0YXRpb24ob3B0cyksXG4gICAgICBhd2FpdFJlZmV0Y2hRdWVyaWVzOiBvcHRzICYmIG9wdHMuYXdhaXRSZWZldGNoUXVlcmllcyxcbiAgICAgIHZhcmlhYmxlczogeyBpZCB9LFxuICAgICAgZXJyb3I6IHtjb2RlOiBFcnJvckNvZGVzLkRFTEVURV9EQVRBX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuREVMRVRFX0RBVEFfRVJST1InfSxcbiAgICAgIHVwZGF0ZTogKHByb3h5LCByZXMpID0+IHtcblxuICAgICAgICAvLyBSZW1vdmUgZnJvbSBjYWNoZVxuICAgICAgICBpZiAodGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPT09ICd1cGRhdGUtY2FjaGUnKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVGcm9tTXV0YWJsZUNhY2hlZFF1ZXJpZXNCeUlkcyhwcm94eSwge1xuICAgICAgICAgICAgcXVlcmllczogdGhpcy5nZXRMb2FkUXVlcmllcygpLFxuICAgICAgICAgICAgaWRzOiBbaWRdXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0cyAmJiBvcHRzLnVwZGF0ZSkge1xuICAgICAgICAgIG9wdHMudXBkYXRlKHByb3h5LCByZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGAke3RoaXMuX2xvZ1R5cGVOYW1lfSBkZWxldGVkIGluICR7bmV3IERhdGUoKS5nZXRUaW1lKCkgLSBub3cuZ2V0VGltZSgpfW1zYCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBsaXN0ZW5DaGFuZ2VzKGlkOiBJRCwgb3B0cz86IHtcbiAgICBxdWVyeT86IGFueTtcbiAgICB2YXJpYWJsZXM/OiBhbnk7XG4gICAgaW50ZXJ2YWw/OiBudW1iZXI7XG4gICAgdG9FbnRpdHk/OiBib29sZWFuO1xuICB9KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgaWYgKGlzTmlsKGlkKSkgdGhyb3cgRXJyb3IoJ01pc3NpbmcgYXJndW1lbnQgXFwnaWRcXCcgJyk7XG4gICAgaWYgKCF0aGlzLnN1YnNjcmlwdGlvbnMubGlzdGVuQ2hhbmdlcykge1xuICAgICAgY29uc29sZS53YXJuKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0ubGlzdGVuQ2hhbmdlcygpIG5vdCBpbXBsZW1lbnRlZCB5ZXQuIFdpbGwgZW1wdHkgb2JzZXJ2YWJsZWApO1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFyaWFibGVzID0gb3B0cyAmJiBvcHRzLnZhcmlhYmxlcyB8fCB7XG4gICAgICBpZCxcbiAgICAgIGludGVydmFsOiB0b051bWJlcihvcHRzICYmIG9wdHMuaW50ZXJ2YWwsIDApIC8vIG5vIHRpbWVyIGJ5IGRlZmF1bHRcbiAgICB9O1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgW1dTXSBMaXN0ZW5pbmcgZm9yIGNoYW5nZXMgb24gJHt0aGlzLl9sb2dUeXBlTmFtZX0geyR7aWR9fS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC5zdWJzY3JpYmU8e2RhdGE6IGFueX0+KHtcbiAgICAgIHF1ZXJ5OiBvcHRzICYmIG9wdHMucXVlcnkgfHwgdGhpcy5zdWJzY3JpcHRpb25zLmxpc3RlbkNoYW5nZXMsXG4gICAgICB2YXJpYWJsZXMsXG4gICAgICBlcnJvcjoge1xuICAgICAgICBjb2RlOiBFcnJvckNvZGVzLlNVQlNDUklCRV9EQVRBX0VSUk9SLFxuICAgICAgICBtZXNzYWdlOiAnRVJST1IuU1VCU0NSSUJFX0RBVEFfRVJST1InXG4gICAgICB9XG4gICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHtkYXRhfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVudGl0eSA9ICghb3B0cyB8fCBvcHRzLnRvRW50aXR5ICE9PSBmYWxzZSkgPyBkYXRhICYmIHRoaXMuZnJvbU9iamVjdChkYXRhKSA6IGRhdGE7XG4gICAgICAgICAgaWYgKGVudGl0eSAmJiB0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgW1dTXSBSZWNlaXZlZCBjaGFuZ2VzIG9uICR7dGhpcy5fbG9nVHlwZU5hbWV9IHske2lkfX1gLCBlbnRpdHkpO1xuXG4gICAgICAgICAgLy8gVE9ETzogbWlzc2luZyA9IGRlbGV0ZWQgP1xuICAgICAgICAgIGlmICghZW50aXR5KSBjb25zb2xlLndhcm4odGhpcy5fbG9nUHJlZml4ICsgYFtXU10gUmVjZWl2ZWQgZGVsZXRpb24gb24gJHt0aGlzLl9sb2dUeXBlTmFtZX0geyR7aWR9fSAtIFRPRE8gY2hlY2sgaW1wbGVtZW50YXRpb25gKTtcblxuICAgICAgICAgIHJldHVybiBlbnRpdHk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgY29weUlkQW5kVXBkYXRlRGF0ZShzb3VyY2U6IFQsIHRhcmdldDogVCkge1xuICAgIGlmICghc291cmNlKSByZXR1cm47XG5cbiAgICAvLyBVcGRhdGUgKGlkIGFuZCB1cGRhdGVEYXRlKVxuICAgIEVudGl0eVV0aWxzLmNvcHlJZEFuZFVwZGF0ZURhdGUoc291cmNlLCB0YXJnZXQpO1xuICB9XG5cblxuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55KTogVCB7XG4gICAgaWYgKCFzb3VyY2UpIHJldHVybiBzb3VyY2U7XG4gICAgY29uc3QgdGFyZ2V0ID0gbmV3IHRoaXMuZGF0YVR5cGUoKTtcbiAgICB0YXJnZXQuZnJvbU9iamVjdChzb3VyY2UpO1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBhc0ZpbHRlcihzb3VyY2U6IGFueSk6IEYge1xuICAgIHJldHVybiBFbnRpdHlGaWx0ZXJVdGlscy5mcm9tT2JqZWN0KHNvdXJjZSwgdGhpcy5maWx0ZXJUeXBlKTtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBmdW5jdGlvbnMgLS0gKi9cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdPblN0YXJ0KCkge1xuICAgIC8vIE5vIGxpbWl0IGZvciB1cGRhdGFibGUgd2F0Y2ggcXVlcmllcywgaWYgZGVza3RvcFxuICAgIGlmICghdGhpcy5wbGF0Zm9ybS5tb2JpbGUpIHtcbiAgICAgIHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXNNYXhDb3VudCA9IC0xO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBmaWxsRGVmYXVsdFByb3BlcnRpZXMoc291cmNlOiBUKSB7XG4gICAgLy8gQ2FuIGJlIG92ZXJyaWRlIGJ5IHN1YmNsYXNzZXNcbiAgfVxuXG4gIHByb3RlY3RlZCBhc09iamVjdChlbnRpdHk6IFQsIG9wdHM/OiBFbnRpdHlBc09iamVjdE9wdGlvbnMpOiBhbnkge1xuICAgIC8vIENhbiBiZSBvdmVycmlkZSBieSBzdWJjbGFzc2VzXG4gICAgcmV0dXJuIGVudGl0eS5hc09iamVjdChvcHRzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRSZWZldGNoUXVlcmllc0Zvck11dGF0aW9uKG9wdHM/OiBFbnRpdHlTYXZlT3B0aW9ucyk6ICgocmVzdWx0OiBGZXRjaFJlc3VsdDx7ZGF0YTogYW55fT4pID0+IEludGVybmFsUmVmZXRjaFF1ZXJpZXNJbmNsdWRlKSB8IEludGVybmFsUmVmZXRjaFF1ZXJpZXNJbmNsdWRlIHtcbiAgICBpZiAob3B0cyAmJiBvcHRzLnJlZmV0Y2hRdWVyaWVzKSByZXR1cm4gb3B0cy5yZWZldGNoUXVlcmllcztcblxuICAgIC8vIFNraXAgaWYgdXBkYXRlIHBvbGljeSBub3QgdXNlZCByZWZlY3RoIHF1ZXJpZXNcbiAgICBpZiAodGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgIT09ICdyZWZldGNoLXF1ZXJpZXMnKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcXVlcmllcyA9IHRoaXMuZ2V0TG9hZFF1ZXJpZXMoKTtcbiAgICBpZiAoIXF1ZXJpZXMubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkOyAvLyBTa2lwIGlmIGVtcHR5XG5cbiAgICAvLyBGaW5kIHRoZSByZWZldGNoIHF1ZXJpZXMgZGVmaW5pdGlvblxuICAgIHJldHVybiB0aGlzLmZpbmRSZWZldGNoUXVlcmllcyh7cXVlcmllc30pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldExvYWRRdWVyaWVzKCk6IERvY3VtZW50Tm9kZVtdIHtcbiAgICByZXR1cm4gW3RoaXMucXVlcmllcy5sb2FkQWxsLCB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhUb3RhbF0uZmlsdGVyKGlzTm90TmlsKTtcbiAgfVxuXG59XG4iXX0=