@trudb/tru-common-lib 0.0.885 → 0.0.886

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.
@@ -6,18 +6,21 @@ import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/common/http";
7
7
  import * as i2 from "./tru-app-environment";
8
8
  import * as i3 from "./tru-ui-notification";
9
+ import * as i4 from "./tru-user";
9
10
  export class TruEntityAccessor {
10
11
  http;
11
12
  appEnvironment;
12
13
  uiNotification;
14
+ user;
13
15
  _breezeContext;
14
16
  _entityManager;
15
17
  _maxRecordCount = 0;
16
18
  _baseUrl;
17
- constructor(http, appEnvironment, uiNotification) {
19
+ constructor(http, appEnvironment, uiNotification, user) {
18
20
  this.http = http;
19
21
  this.appEnvironment = appEnvironment;
20
22
  this.uiNotification = uiNotification;
23
+ this.user = user;
21
24
  this._maxRecordCount = this.appEnvironment.maxRecordCount;
22
25
  this._baseUrl = this.appEnvironment.appUri;
23
26
  }
@@ -248,6 +251,7 @@ export class TruEntityAccessor {
248
251
  xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
249
252
  xhr.responseType = 'arraybuffer';
250
253
  xhr.send(JSON.stringify({
254
+ userRef: this.user.activeUserRef,
251
255
  runAsync: args.runAsync,
252
256
  useNames: args.useNames,
253
257
  useEmptyTags: args.useEmptyTags,
@@ -303,10 +307,10 @@ export class TruEntityAccessor {
303
307
  filename = filename.replace(/"/g, '');
304
308
  return filename;
305
309
  };
306
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruEntityAccessor, deps: [{ token: i1.HttpClient }, { token: i2.TruAppEnvironment }, { token: i3.TruUiNotification }], target: i0.ɵɵFactoryTarget.Injectable });
310
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruEntityAccessor, deps: [{ token: i1.HttpClient }, { token: i2.TruAppEnvironment }, { token: i3.TruUiNotification }, { token: i4.TruUser }], target: i0.ɵɵFactoryTarget.Injectable });
307
311
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruEntityAccessor });
308
312
  }
309
313
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruEntityAccessor, decorators: [{
310
314
  type: Injectable
311
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.TruAppEnvironment }, { type: i3.TruUiNotification }] });
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWVudGl0eS1hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LWVudGl0eS1hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBc0MsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS2xGLE9BQU8sS0FBSyxDQUFDLE1BQU0sWUFBWSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFNbkQsTUFBTSxPQUFPLGlCQUFpQjtJQU9sQjtJQUNBO0lBQ0E7SUFSRixjQUFjLENBQW9CO0lBQ2xDLGNBQWMsQ0FBaUI7SUFDL0IsZUFBZSxHQUFXLENBQUMsQ0FBQztJQUM1QixRQUFRLENBQVM7SUFFekIsWUFDVSxJQUFnQixFQUNoQixjQUFpQyxFQUNqQyxjQUFpQztRQUZqQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQztRQUMxRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxXQUEyQjtRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQ2xELENBQUM7SUFFTyxtQkFBbUIsR0FBRyxDQUFDLE1BQTRCLEVBQUUsRUFBRTtRQUM3RCxPQUFPLE9B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QUU7UUFDL0QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxNQUFNLEdBQUcsV0FBVyxDQUFDO1FBQ3pCLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLE1BQU0sQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pHLElBQUksQ0FBQyxZQUFZO1lBQ2YsT0FBTyxNQUFNLENBQUM7UUFDaEIsSUFBSSxRQUFRLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUMsQ0FBQTt1R0E1WFUsaUJBQWlCOzJHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlNYW5hZ2VyLCBFbnRpdHlRdWVyeSwgRmV0Y2hTdHJhdGVneSB9IGZyb20gXCJicmVlemUtY2xpZW50XCI7XHJcbmltcG9ydCB7IFRydUVudGl0eUJhc2UgfSBmcm9tICcuLi9iYXNlLWNsYXNzZXMvdHJ1LWVudGl0eS1iYXNlJ1xyXG5pbXBvcnQgeyBUcnVVaU5vdGlmaWNhdGlvbiB9IGZyb20gXCIuL3RydS11aS1ub3RpZmljYXRpb25cIjtcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tIFwiLi90cnUtZGF0YS1jb250ZXh0XCI7XHJcbmltcG9ydCB7IFRydUJyZWV6ZUNvbnRleHQgfSBmcm9tIFwiLi90cnUtYnJlZXplLWNvbnRleHQtZmFjdG9yeVwiO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gXCJ1bmRlcnNjb3JlXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgZGVmZXIsIGZyb20sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSBcIi4vdHJ1LWFwcC1lbnZpcm9ubWVudFwiO1xyXG5pbXBvcnQgeyBUcnVDaG9pY2UgfSBmcm9tIFwiLi4vY2xhc3Nlcy90cnUtY2hvaWNlXCI7XHJcbmltcG9ydCB7IFRydU5hbWVWYWx1ZSB9IGZyb20gXCIuLi9jbGFzc2VzL3RydS1uYW1lLXZhbHVlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBUcnVFbnRpdHlBY2Nlc3NvciB7XHJcbiAgcHJpdmF0ZSBfYnJlZXplQ29udGV4dCE6IFRydUJyZWV6ZUNvbnRleHQ7XHJcbiAgcHJpdmF0ZSBfZW50aXR5TWFuYWdlciE6IEVudGl0eU1hbmFnZXI7XHJcbiAgcHJpdmF0ZSBfbWF4UmVjb3JkQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfYmFzZVVybDogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50LFxyXG4gICAgcHJpdmF0ZSB1aU5vdGlmaWNhdGlvbjogVHJ1VWlOb3RpZmljYXRpb24pIHtcclxuICAgIHRoaXMuX21heFJlY29yZENvdW50ID0gdGhpcy5hcHBFbnZpcm9ubWVudC5tYXhSZWNvcmRDb3VudDtcclxuICAgIHRoaXMuX2Jhc2VVcmwgPSB0aGlzLmFwcEVudmlyb25tZW50LmFwcFVyaTtcclxuICB9XHJcblxyXG4gIHNldCBjb250ZXh0KGRhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dCkge1xyXG4gICAgdGhpcy5fYnJlZXplQ29udGV4dCA9IGRhdGFDb250ZXh0LmJyZWV6ZUNvbnRleHQ7XHJcbiAgICB0aGlzLl9lbnRpdHlNYW5hZ2VyID0gZGF0YUNvbnRleHQuZW50aXR5TWFuYWdlcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UXVlcnlTZXJ2aWNlTmFtZSA9IChlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlKSA9PiB7XHJcbiAgICByZXR1cm4gJ1F1ZXJ5JyArIGVudGl0eS5uYW1lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB3YXJuSWZNYXhSZWNvcmRzID0gKGVudGl0aWVzOiBhbnlbXSwgZW50aXR5TmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICBpZiAoZW50aXRpZXMubGVuZ3RoID49IHRoaXMuX21heFJlY29yZENvdW50KVxyXG4gICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLndhcm5pbmcoJ1snICsgZW50aXR5TmFtZSArICddIGhhcyBtb3JlIHJlY29yZHMgYXZhaWxhYmxlIHRoYW4gc3VwcG9ydGVkJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdFF1ZXJ5Q2hvaWNlcyA9IChxdWVyeTogRW50aXR5UXVlcnksIGVudGl0aWVzOiBBcnJheTxFbnRpdHk+LCBwS2V5TmFtZTogc3RyaW5nLCBoaWQ6IHN0cmluZyB8IG51bGwgPSBudWxsKTogQXJyYXk8VHJ1Q2hvaWNlPiA9PiB7XHJcbiAgICBpZiAocXVlcnkgJiYgcXVlcnkub3JkZXJCeUNsYXVzZSlcclxuICAgICAgcmV0dXJuIF8ubWFwKGVudGl0aWVzLCAoZW50aXR5OiBhbnkpID0+IHsgcmV0dXJuIHsgdmFsdWU6IHsgJDogZW50aXR5W3BLZXlOYW1lXSB9LCBsYWJlbDogaGlkICE9PSBudWxsID8gaGlkIDogZW50aXR5LkhJRCB9OyB9KTtcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIF8ubWFwKGVudGl0aWVzLCAoZW50aXR5OiBhbnkpID0+IHsgcmV0dXJuIHsgdmFsdWU6IHsgJDogZW50aXR5W3BLZXlOYW1lXSB9LCBsYWJlbDogaGlkICE9PSBudWxsID8gaGlkIDogZW50aXR5LkhJRCB9OyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0TmFtZVZhbHVlcyA9IChxdWVyeTogRW50aXR5UXVlcnksIGVudGl0aWVzOiBBcnJheTxFbnRpdHk+LCBwS2V5TmFtZTogc3RyaW5nKTogQXJyYXk8VHJ1TmFtZVZhbHVlPiA9PiB7XHJcbiAgICAgIGlmIChxdWVyeSAmJiBxdWVyeS5vcmRlckJ5Q2xhdXNlKVxyXG4gICAgICAgIHJldHVybiBfLm1hcChlbnRpdGllcywgKGVudGl0eTogYW55KSA9PiB7IHJldHVybiB7IG5hbWU6IGVudGl0eS5OYW1lLCB2YWx1ZTogeyAkOiBlbnRpdHkuVmFsdWUgfSwgZW50aXR5OiBlbnRpdHkgfTsgfSk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gXy5tYXAoZW50aXRpZXMsIChlbnRpdHk6IGFueSkgPT4geyByZXR1cm4geyBuYW1lOiBlbnRpdHkuTmFtZSwgdmFsdWU6IHsgJDogZW50aXR5LlZhbHVlIH0sIGVudGl0eTogZW50aXR5IH07IH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkID0gKGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsIGNvbnRleHRGaWx0ZXJzOiBhbnkgPSBudWxsKSA9PiB7XHJcbiAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5fZW50aXR5TWFuYWdlci5jcmVhdGVFbnRpdHkoZW50aXR5LnByb3RvdHlwZS5lbnRpdHlUeXBlKTtcclxuICAgIHJldHVybiBuZXdFbnRpdHk7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoID0gKGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICBzZXR1cFF1ZXJ5OiBhbnkgfCBudWxsID0gbnVsbCxcclxuICAgIGV4cGFuZHM6IFtdIHwgbnVsbCxcclxuICAgIGdsb2JhbDogYm9vbGVhbik6IE9ic2VydmFibGU8RW50aXR5W10+ID0+IHtcclxuXHJcbiAgICB2YXIgcXVlcnk6IGFueTtcclxuICAgIGlmIChleHBhbmRzICYmIGV4cGFuZHMubGVuZ3RoKSB7XHJcbiAgICAgIGlmIChnbG9iYWwpXHJcbiAgICAgICAgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKS5leHBhbmQoZXhwYW5kcy5qb2luKCcsICcpKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSkuZXhwYW5kKGV4cGFuZHMuam9pbignLCAnKSkudG9wKHRoaXMuX21heFJlY29yZENvdW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChnbG9iYWwpXHJcbiAgICAgICAgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSkudG9wKHRoaXMuX21heFJlY29yZENvdW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2V0dXBRdWVyeSAhPSBudWxsKVxyXG4gICAgICBxdWVyeSA9IHNldHVwUXVlcnkocXVlcnkpO1xyXG5cclxuICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KS50aGVuKChxdWVyeURhdGE6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIWdsb2JhbClcclxuICAgICAgICB0aGlzLndhcm5JZk1heFJlY29yZHMocXVlcnlEYXRhLnJlc3VsdHMsIGVudGl0eS5uYW1lKTtcclxuICAgICAgcmV0dXJuIHF1ZXJ5RGF0YS5yZXN1bHRzO1xyXG4gICAgfSkpKTtcclxuICB9O1xyXG5cclxuICBzZWFyY2hDYWNoZU9ubHkgPSAoXHJcbiAgICBlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLFxyXG4gICAgc2V0dXBRdWVyeTogYW55IHwgbnVsbCA9IG51bGwsXHJcbiAgICBleHBhbmRzOiBbXSB8IG51bGwgPSBudWxsKTogT2JzZXJ2YWJsZTxFbnRpdHlbXT4gPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSk7XHJcbiAgICBpZiAoc2V0dXBRdWVyeSlcclxuICAgICAgcXVlcnkgPSBzZXR1cFF1ZXJ5KHF1ZXJ5KTtcclxuICAgIHJldHVybiBvZih0aGlzLl9lbnRpdHlNYW5hZ2VyLmV4ZWN1dGVRdWVyeUxvY2FsbHkocXVlcnkpKTtcclxuICB9O1xyXG5cclxuICBzZWFyY2hDYWNoZU9ubHlTeW5jaHJvbm91c2x5ID0gKFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHNldHVwUXVlcnk6IGFueSB8IG51bGwgPSBudWxsLFxyXG4gICAgZXhwYW5kczogW10gfCBudWxsID0gbnVsbCk6IEFycmF5PGFueT4gPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSk7XHJcbiAgICBpZiAoc2V0dXBRdWVyeSlcclxuICAgICAgcXVlcnkgPSBzZXR1cFF1ZXJ5KHF1ZXJ5KTtcclxuICAgIHJldHVybiB0aGlzLl9lbnRpdHlNYW5hZ2VyLmV4ZWN1dGVRdWVyeUxvY2FsbHkocXVlcnkpO1xyXG4gIH07XHJcblxyXG4gIHNlYXJjaFF1ZXJ5Q2hvaWNlcyA9IChcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICBzZXR1cFF1ZXJ5OiBhbnkgfCBudWxsID0gbnVsbCxcclxuICAgIGhpZDogc3RyaW5nIHwgbnVsbCA9IG51bGwsXHJcbiAgICBnb1RvU2VydmVyOiBib29sZWFuID0gZmFsc2UsXHJcbiAgICByZWY6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpOiBPYnNlcnZhYmxlPFRydUNob2ljZVtdPiA9PiB7XHJcbiAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICBjb25zdCBwa2V5TmFtZSA9IGVudGl0eS5uYW1lICsgJ1JlZicgYXMgT2JqZWN0S2V5O1xyXG4gICAgbGV0IHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSk7XHJcbiAgICBpZiAoc2V0dXBRdWVyeSlcclxuICAgICAgcXVlcnkgPSBzZXR1cFF1ZXJ5KHF1ZXJ5KSA/PyBxdWVyeTtcclxuICAgIGlmIChyZWYpXHJcbiAgICAgIHF1ZXJ5ID0gcXVlcnkud2hlcmUoZW50aXR5Lm5hbWUgKyAnUmVmJywgJz09JywgcmVmKTtcclxuICAgIGlmIChnb1RvU2VydmVyKSB7XHJcbiAgICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KS50aGVuKChxdWVyeURhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFF1ZXJ5Q2hvaWNlcyhxdWVyeSwgcXVlcnlEYXRhLnJlc3VsdHMsIHBrZXlOYW1lLCBudWxsKTtcclxuICAgICAgfSkpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBvZih0aGlzLmZvcm1hdFF1ZXJ5Q2hvaWNlcyhxdWVyeSwgdGhpcy5fZW50aXR5TWFuYWdlci5leGVjdXRlUXVlcnlMb2NhbGx5KHF1ZXJ5KSwgcGtleU5hbWUsIG51bGwpKTtcclxuICB9O1xyXG5cclxuICBzZWFyY2hOYW1lVmFsdWVzQ2FjaGVPbmx5ID0gKFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHNldHVwUXVlcnk6IGFueSB8IG51bGwgPSBudWxsLFxyXG4gICAgcmVmOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxUcnVOYW1lVmFsdWVbXT4gPT4ge1xyXG4gICAgdHlwZSBPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgZW50aXR5O1xyXG4gICAgY29uc3QgcGtleU5hbWUgPSBlbnRpdHkubmFtZSArICdSZWYnIGFzIE9iamVjdEtleTtcclxuICAgIGxldCBxdWVyeSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUXVlcnkodGhpcy5nZXRRdWVyeVNlcnZpY2VOYW1lKGVudGl0eSkpO1xyXG4gICAgaWYgKHNldHVwUXVlcnkpXHJcbiAgICAgICAgcXVlcnkgPSBzZXR1cFF1ZXJ5KHF1ZXJ5KSA/PyBxdWVyeTtcclxuICAgIGlmIChyZWYpXHJcbiAgICAgICAgcXVlcnkgPSBxdWVyeS53aGVyZShlbnRpdHkubmFtZSArICdSZWYnLCAnPT0nLCByZWYpO1xyXG4gICAgcmV0dXJuIG9mKHRoaXMuZm9ybWF0TmFtZVZhbHVlcyhxdWVyeSwgdGhpcy5fZW50aXR5TWFuYWdlci5leGVjdXRlUXVlcnlMb2NhbGx5KHF1ZXJ5KSwgcGtleU5hbWUpKTtcclxuICB9O1xyXG5cclxuICBzZWFyY2hCeVJlZiA9IChcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICByZWY6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpID0+IHtcclxuICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IHBrZXlOYW1lID0gZW50aXR5Lm5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXk7XHJcbiAgICB2YXIgcXVlcnlPcHRpb25zID0gdGhpcy5fZW50aXR5TWFuYWdlci5xdWVyeU9wdGlvbnMudXNpbmcoe1xyXG4gICAgICBmZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5LkZyb21TZXJ2ZXJcclxuICAgIH0pO1xyXG4gICAgdmFyIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSkud2hlcmUoZW50aXR5Lm5hbWUgKyAnUmVmJywgJz09JywgcmVmKS51c2luZyhxdWVyeU9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IGZyb20odGhpcy5fZW50aXR5TWFuYWdlci5leGVjdXRlUXVlcnkocXVlcnkpLnRoZW4oKHF1ZXJ5RGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdFF1ZXJ5Q2hvaWNlcyhxdWVyeSwgcXVlcnlEYXRhLnJlc3VsdHMsIHBrZXlOYW1lLCBudWxsKTtcclxuICAgIH0pKSk7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoQnlSZWZQcmVmZXJlZENhY2hlID0gKFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHJlZjogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xyXG4gICAgbGV0IGNhY2hlZEVudGl0eSA9IHRoaXMuc2VhcmNoQnlSZWZDYWNoZU9ubHkoZW50aXR5LCByZWYpO1xyXG4gICAgaWYgKGNhY2hlZEVudGl0eSkge1xyXG4gICAgICB2YXIgcXVlcnlPcHRpb25zID0gdGhpcy5fZW50aXR5TWFuYWdlci5xdWVyeU9wdGlvbnMudXNpbmcoe1xyXG4gICAgICAgIGZldGNoU3RyYXRlZ3k6IEZldGNoU3RyYXRlZ3kuRnJvbUxvY2FsQ2FjaGVcclxuICAgICAgfSk7XHJcbiAgICAgIHZhciBxdWVyeSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUXVlcnkodGhpcy5nZXRRdWVyeVNlcnZpY2VOYW1lKGVudGl0eSkpLndoZXJlKGVudGl0eS5uYW1lICsgJ1JlZicsICc9PScsIHJlZikudXNpbmcocXVlcnlPcHRpb25zKTtcclxuICAgICAgcmV0dXJuIGRlZmVyKCgpID0+IGZyb20odGhpcy5fZW50aXR5TWFuYWdlci5leGVjdXRlUXVlcnkocXVlcnkpLnRoZW4oKHF1ZXJ5RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHF1ZXJ5RGF0YS5yZXN1bHRzWzBdO1xyXG4gICAgICB9KSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHZhciBxdWVyeU9wdGlvbnMgPSB0aGlzLl9lbnRpdHlNYW5hZ2VyLnF1ZXJ5T3B0aW9ucy51c2luZyh7XHJcbiAgICAgICAgZmV0Y2hTdHJhdGVneTogRmV0Y2hTdHJhdGVneS5Gcm9tU2VydmVyXHJcbiAgICAgIH0pO1xyXG4gICAgICB2YXIgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKS53aGVyZShlbnRpdHkubmFtZSArICdSZWYnLCAnPT0nLCByZWYpLnVzaW5nKHF1ZXJ5T3B0aW9ucyk7XHJcbiAgICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KS50aGVuKChxdWVyeURhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBxdWVyeURhdGEucmVzdWx0c1swXTtcclxuICAgICAgfSkpKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBzZWFyY2hCeVJlZkNhY2hlT25seSA9IChcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICByZWY6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsXHJcbiAgICBpbmNsdWRlRGVsZXRlZDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XHJcblxyXG4gICAgaWYgKCFpbmNsdWRlRGVsZXRlZClcclxuICAgICAgaW5jbHVkZURlbGV0ZWQgPSBmYWxzZTtcclxuICAgIHZhciBxdWVyeU9wdGlvbnMgPSB0aGlzLl9lbnRpdHlNYW5hZ2VyLnF1ZXJ5T3B0aW9ucy51c2luZyh7XHJcbiAgICAgIGluY2x1ZGVEZWxldGVkOiBpbmNsdWRlRGVsZXRlZCxcclxuICAgICAgZmV0Y2hTdHJhdGVneTogRmV0Y2hTdHJhdGVneS5Gcm9tTG9jYWxDYWNoZVxyXG4gICAgfSk7XHJcbiAgICB2YXIgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKS53aGVyZShlbnRpdHkubmFtZSArICdSZWYnLCAnPT0nLCByZWYpLnVzaW5nKHF1ZXJ5T3B0aW9ucyk7XHJcbiAgICB2YXIgcmVzdWx0ID0gdGhpcy5fZW50aXR5TWFuYWdlci5leGVjdXRlUXVlcnlMb2NhbGx5KHF1ZXJ5KVswXTtcclxuICAgIGlmIChyZXN1bHQpXHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9O1xyXG5cclxuICBzZWFyY2hCeVJlZkFycmF5Q2FjaGVPbmx5ID0gKFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHNldHVwUXVlcnk6IGFueSB8IG51bGwgPSBudWxsLFxyXG4gICAgcmVmczogQXJyYXk8bnVtYmVyPixcclxuICAgIGluY2x1ZGVEZWxldGVkOiBib29sZWFuID0gZmFsc2UpID0+IHtcclxuICBcclxuICAgIGlmICghaW5jbHVkZURlbGV0ZWQpXHJcbiAgICAgIGluY2x1ZGVEZWxldGVkID0gZmFsc2U7XHJcbiAgICB2YXIgcXVlcnlPcHRpb25zID0gdGhpcy5fZW50aXR5TWFuYWdlci5xdWVyeU9wdGlvbnMudXNpbmcoe1xyXG4gICAgICBpbmNsdWRlRGVsZXRlZDogaW5jbHVkZURlbGV0ZWQsXHJcbiAgICAgIGZldGNoU3RyYXRlZ3k6IEZldGNoU3RyYXRlZ3kuRnJvbUxvY2FsQ2FjaGVcclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBxdWVyeSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUXVlcnkodGhpcy5nZXRRdWVyeVNlcnZpY2VOYW1lKGVudGl0eSkpLnVzaW5nKHF1ZXJ5T3B0aW9ucyk7XHJcblxyXG4gICAgaWYgKHNldHVwUXVlcnkpXHJcbiAgICAgIHF1ZXJ5ID0gc2V0dXBRdWVyeShxdWVyeSk7XHJcbiAgICBpZiAocXVlcnkgPT09IG51bGwpLy9zZXR1cFF1ZXJ5KCkgcmV0dXJuZWQgbnVsbCB0byBzZWxlY3Qgbm8gcm93c1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICBpZiAocmVmcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgICAgY29uc3QgcGtleU5hbWUgPSBlbnRpdHkubmFtZSArICdSZWYnIGFzIE9iamVjdEtleTtcclxuICAgICAgdmFyIHByZWRpY2F0ZSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUHJlZGljYXRlKHBrZXlOYW1lLCAnPT0nLCByZWZzWzBdKTtcclxuICAgICAgXy5yZXN0KHJlZnMsIDEpLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xyXG4gICAgICAgIHByZWRpY2F0ZSA9IHByZWRpY2F0ZS5vcihwa2V5TmFtZSwgJz09JywgcmVmKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHF1ZXJ5ID0gcXVlcnkud2hlcmUocHJlZGljYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgcmVzdWx0cyA9IHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSk7XHJcbiAgICBpZiAocmVzdWx0cyAmJiByZXN1bHRzLmxlbmd0aClcclxuICAgICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHNlYXJjaEJ5UmVmV2l0aFF1ZXJ5ID0gKFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHNldHVwUXVlcnk6IGFueSxcclxuICAgIHJlZjogbnVtYmVyKTogT2JzZXJ2YWJsZTxFbnRpdHlbXT4gPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSk7XHJcbiAgICBxdWVyeSA9IHNldHVwUXVlcnkocXVlcnkpO1xyXG5cclxuICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IHBrZXlOYW1lID0gZW50aXR5Lm5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXk7XHJcbiAgICB2YXIgcHJlZGljYXRlID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVQcmVkaWNhdGUocGtleU5hbWUsICc9PScsIHJlZik7XHJcbiAgICBxdWVyeSA9IHF1ZXJ5LndoZXJlKHByZWRpY2F0ZSk7XHJcblxyXG4gICAgdmFyIGxvY2FsUmVzdWx0cyA9IHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSk7XHJcblxyXG4gICAgaWYgKGxvY2FsUmVzdWx0cy5sZW5ndGgpXHJcbiAgICAgIHJldHVybiBvZihsb2NhbFJlc3VsdHMpO1xyXG5cclxuICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KS50aGVuKChxdWVyeURhdGEpID0+IHtcclxuICAgICAgcmV0dXJuIHF1ZXJ5RGF0YS5yZXN1bHRzO1xyXG4gICAgfSkpKTtcclxuICB9O1xyXG5cclxuICBzZWFyY2hVc2VyQnlSZWZDYWNoZU9ubHkgPSAoXHJcbiAgICByZWY6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsXHJcbiAgICBpbmNsdWRlRGVsZXRlZDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XHJcblxyXG4gICAgaWYgKCFpbmNsdWRlRGVsZXRlZClcclxuICAgICAgaW5jbHVkZURlbGV0ZWQgPSBmYWxzZTtcclxuICAgIHZhciBxdWVyeU9wdGlvbnMgPSB0aGlzLl9lbnRpdHlNYW5hZ2VyLnF1ZXJ5T3B0aW9ucy51c2luZyh7XHJcbiAgICAgIGluY2x1ZGVEZWxldGVkOiBpbmNsdWRlRGVsZXRlZCxcclxuICAgICAgZmV0Y2hTdHJhdGVneTogRmV0Y2hTdHJhdGVneS5Gcm9tTG9jYWxDYWNoZVxyXG4gICAgfSk7XHJcbiAgICB2YXIgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KCdRdWVyeVRydURiVXNlcicpLndoZXJlKCdUcnVEYlVzZXJSZWYnLCAnPT0nLCByZWYpLnVzaW5nKHF1ZXJ5T3B0aW9ucyk7XHJcbiAgICB2YXIgcmVzdWx0ID0gdGhpcy5fZW50aXR5TWFuYWdlci5leGVjdXRlUXVlcnlMb2NhbGx5KHF1ZXJ5KVswXTtcclxuICAgIGlmIChyZXN1bHQpXHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9O1xyXG5cclxuICBleHBvcnQgPSAoXHJcbiAgICBlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLFxyXG4gICAgZ3JpZFNwZWM6IHN0cmluZyxcclxuICAgIHNldHVwUXVlcnk6IGFueSB8IG51bGwsXHJcbiAgICBlbnRpdHlSZWZzOiBzdHJpbmcgfCBudWxsLFxyXG4gICAgb3B0aW9uczogYW55KSA9PiB7XHJcblxyXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcbiAgICB2YXIgYXJncyA9IHtcclxuICAgICAgcnVuQXN5bmM6IGZhbHNlLFxyXG4gICAgICB1c2VOYW1lczogZmFsc2UsXHJcbiAgICAgIHVzZUVtcHR5VGFnczogZmFsc2UsXHJcbiAgICAgIGVudGl0eVJlZnM6IG51bGwgYXMgc3RyaW5nIHwgbnVsbCxcclxuICAgICAgZW50aXR5VHlwZU5hbWU6IGVudGl0eS5uYW1lLFxyXG4gICAgICBncmlkU3BlYzogZ3JpZFNwZWNcclxuICAgIH07XHJcbiAgICBpZiAob3B0aW9ucy5hc3luYylcclxuICAgICAgYXJncy5ydW5Bc3luYyA9IHRydWU7XHJcbiAgICBpZiAob3B0aW9ucy51c2VOYW1lcylcclxuICAgICAgYXJncy51c2VOYW1lcyA9IHRydWU7XHJcbiAgICBpZiAob3B0aW9ucy51c2VFbXB0eVRhZ3MpXHJcbiAgICAgIGFyZ3MudXNlRW1wdHlUYWdzID0gdHJ1ZTtcclxuICAgIHZhciBxdWVyeVRleHQ7XHJcbiAgICBpZiAob3B0aW9ucy51c2VHcmlkKSB7XHJcbiAgICAgIGFyZ3MuZW50aXR5UmVmcyA9IGVudGl0eVJlZnM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KCdub25hbWUnKTtcclxuICAgICAgaWYgKHNldHVwUXVlcnkpXHJcbiAgICAgICAgcXVlcnkgPSBzZXR1cFF1ZXJ5KHF1ZXJ5KTtcclxuICAgICAgaWYgKHF1ZXJ5ID09PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi53YXJuaW5nKCdObyByZWNvcmRzIHNlbGVjdGVkIGJ5IHF1ZXJ5Jyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHF1ZXJ5VGV4dCA9IHF1ZXJ5Ll90b1VyaSh0aGlzLl9lbnRpdHlNYW5hZ2VyKTtcclxuICAgICAgICBxdWVyeVRleHQgPSBxdWVyeVRleHQuc3BsaXQoJz8nKVsxXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudWlOb3RpZmljYXRpb24uaW5mbyhhcmdzLnJ1bkFzeW5jID8gJ1F1ZXVpbmcgZXhwb3J0Li4uJyA6ICdFeHBvcnRpbmcuLi4nKTtcclxuXHJcbiAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XHJcbiAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gKCkgPT4ge1xyXG4gICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSkge1xyXG4gICAgICAgIGlmICh4aHIuc3RhdHVzID09IDIwMCkge1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh4aHIucmVzcG9uc2VUeXBlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB4aHIub3BlbignUE9TVCcsIHRoaXMuX2Jhc2VVcmwgKyAnL2FwaS9leHBvcnQvZXhlY3V0ZScpO1xyXG4gICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PVVURi04Jyk7XHJcbiAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2FycmF5YnVmZmVyJztcclxuICAgIHhoci5zZW5kKEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgcnVuQXN5bmM6IGFyZ3MucnVuQXN5bmMsXHJcbiAgICAgIHVzZU5hbWVzOiBhcmdzLnVzZU5hbWVzLFxyXG4gICAgICB1c2VFbXB0eVRhZ3M6IGFyZ3MudXNlRW1wdHlUYWdzLFxyXG4gICAgICBlbnRpdHlSZWZzOiBhcmdzLmVudGl0eVJlZnMsXHJcbiAgICAgIGVudGl0eVR5cGVOYW1lOiBhcmdzLmVudGl0eVR5cGVOYW1lLFxyXG4gICAgICBncmlkU3BlYzogYXJncy5ncmlkU3BlYyxcclxuICAgICAgcXVlcnk6ICdRdWVyeScgKyBlbnRpdHkubmFtZSArICc/JyArIHF1ZXJ5VGV4dFxyXG4gICAgfSkpXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRBc1VybFBhcmFtZXRlcnMgPSAoZGF0YTogYW55KSA9PiB7XHJcbiAgICB2YXIgYnVmZmVyID0gW107XHJcbiAgICBmb3IgKHZhciBuYW1lIGluIGRhdGEpIHtcclxuICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KG5hbWUpKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgdmFyIHZhbHVlID0gZGF0YVtuYW1lXTtcclxuICAgICAgYnVmZmVyLnB1c2goXHJcbiAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpICtcclxuICAgICAgICAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWUpKTtcclxuICAgIH1cclxuICAgIHZhciBzb3VyY2UgPSBidWZmZXIuam9pbignJicpXHJcbiAgICAgIC5yZXBsYWNlKC8lMjAvZywgJysnKTtcclxuICAgIHJldHVybiAoc291cmNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZG93bmxvYWRGcm9tVXJsID0gKHVybDogc3RyaW5nLCBkYXRhOiBhbnkpID0+IHtcclxuICAgIGlmIChkYXRhKVxyXG4gICAgICBkYXRhID0gdGhpcy5mb3JtYXRBc1VybFBhcmFtZXRlcnMoZGF0YSk7XHJcbiAgICBjb25zdCBib2R5ID0geyB0aXRsZTogJ2Rvd25sb2FkIHJlcXVlc3QnIH07XHJcbiAgICBjb25zdCBoZWFkZXJzID0geyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCcgfTtcclxuXHJcbiAgICB0aGlzLmh0dHAucG9zdChcclxuICAgICAgdGhpcy5fYmFzZVVybCArIHVybCxcclxuICAgICAgYm9keSxcclxuICAgICAgeyBoZWFkZXJzIH1cclxuICAgICkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc2F2ZURvd25sb2FkZWRGaWxlKHJlc3BvbnNlKTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgc2F2ZURvd25sb2FkZWRGaWxlID0gKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgIHZhciBoZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVycztcclxuICAgIHZhciBjb250ZW50RGlzcG9zaXRpb24gPSBoZWFkZXJzKCdjb250ZW50LWRpc3Bvc2l0aW9uJyk7XHJcbiAgICBpZiAoIWNvbnRlbnREaXNwb3NpdGlvbilcclxuICAgICAgcmV0dXJuOyAvLyBOT1RFOiBjYW5ub3Qgc2F2ZSB3aXRob3V0IGhlYWRlciBpbmZvXHJcbiAgICB2YXIgZmlsZW5hbWUgPSB0aGlzLmV4dHJhY3RGaWxlbmFtZUZyb21Db250ZW50RGlzcG9zaXRpb24oY29udGVudERpc3Bvc2l0aW9uKTtcclxuICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlLmRhdGFdLCB7IHR5cGU6IGhlYWRlcnMoJ2NvbnRlbnQtdHlwZScpIH0pO1xyXG4gICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICBsaW5rLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgZmlsZW5hbWUpO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgbGluay5yZW1vdmUoKTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGV4dHJhY3RGaWxlbmFtZUZyb21Db250ZW50RGlzcG9zaXRpb24gPSAodGV4dDogc3RyaW5nKSA9PiB7XHJcbiAgICB2YXIgcGFydHMgPSBfLm1hcCh0ZXh0LnNwbGl0KCc7JyksIGZ1bmN0aW9uIChwYXJ0KSB7IHJldHVybiBwYXJ0LnRyaW0oKTsgfSk7XHJcbiAgICB2YXIgcHJlZml4ID0gJ2ZpbGVuYW1lPSc7XHJcbiAgICB2YXIgZmlsZW5hbWVQYXJ0ID0gXy5maW5kKHBhcnRzLCBmdW5jdGlvbiAocGFydCkgeyByZXR1cm4gcGFydC5zdWJzdHJpbmcoMCwgcHJlZml4Lmxlbmd0aCkgPT09IHByZWZpeCB9KTtcclxuICAgIGlmICghZmlsZW5hbWVQYXJ0KVxyXG4gICAgICByZXR1cm4gJ2ZpbGUnO1xyXG4gICAgdmFyIGZpbGVuYW1lID0gZmlsZW5hbWVQYXJ0LnN1YnN0cmluZyhwcmVmaXgubGVuZ3RoKTtcclxuICAgIGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZSgvXCIvZywgJycpO1xyXG4gICAgcmV0dXJuIGZpbGVuYW1lO1xyXG4gIH1cclxufVxyXG4iXX0=
315
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.TruAppEnvironment }, { type: i3.TruUiNotification }, { type: i4.TruUser }] });
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWVudGl0eS1hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LWVudGl0eS1hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBc0MsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS2xGLE9BQU8sS0FBSyxDQUFDLE1BQU0sWUFBWSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBT25ELE1BQU0sT0FBTyxpQkFBaUI7SUFPbEI7SUFDQTtJQUNBO0lBQ0E7SUFURixjQUFjLENBQW9CO0lBQ2xDLGNBQWMsQ0FBaUI7SUFDL0IsZUFBZSxHQUFXLENBQUMsQ0FBQztJQUM1QixRQUFRLENBQVM7SUFFekIsWUFDVSxJQUFnQixFQUNoQixjQUFpQyxFQUNqQyxjQUFpQyxFQUNqQyxJQUFhO1FBSGIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLFNBQUksR0FBSixJQUFJLENBQVM7UUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQztRQUMxRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxXQUEyQjtRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQ2xELENBQUM7SUFFTyxtQkFB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QUM7UUFDYixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQyxDQUFBO0lBR08scUNBQXFDLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtRQUMvRCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RSxJQUFJLE1BQU0sR0FBRyxXQUFXLENBQUM7UUFDekIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekcsSUFBSSxDQUFDLFlBQVk7WUFDZixPQUFPLE1BQU0sQ0FBQztRQUNoQixJQUFJLFFBQVEsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEMsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQyxDQUFBO3VHQTlYVSxpQkFBaUI7MkdBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBFbnRpdHksIEVudGl0eU1hbmFnZXIsIEVudGl0eVF1ZXJ5LCBGZXRjaFN0cmF0ZWd5IH0gZnJvbSBcImJyZWV6ZS1jbGllbnRcIjtcclxuaW1wb3J0IHsgVHJ1RW50aXR5QmFzZSB9IGZyb20gJy4uL2Jhc2UtY2xhc3Nlcy90cnUtZW50aXR5LWJhc2UnXHJcbmltcG9ydCB7IFRydVVpTm90aWZpY2F0aW9uIH0gZnJvbSBcIi4vdHJ1LXVpLW5vdGlmaWNhdGlvblwiO1xyXG5pbXBvcnQgeyBUcnVEYXRhQ29udGV4dCB9IGZyb20gXCIuL3RydS1kYXRhLWNvbnRleHRcIjtcclxuaW1wb3J0IHsgVHJ1QnJlZXplQ29udGV4dCB9IGZyb20gXCIuL3RydS1icmVlemUtY29udGV4dC1mYWN0b3J5XCI7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSBcInVuZGVyc2NvcmVcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBkZWZlciwgZnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJ1QXBwRW52aXJvbm1lbnQgfSBmcm9tIFwiLi90cnUtYXBwLWVudmlyb25tZW50XCI7XHJcbmltcG9ydCB7IFRydUNob2ljZSB9IGZyb20gXCIuLi9jbGFzc2VzL3RydS1jaG9pY2VcIjtcclxuaW1wb3J0IHsgVHJ1TmFtZVZhbHVlIH0gZnJvbSBcIi4uL2NsYXNzZXMvdHJ1LW5hbWUtdmFsdWVcIjtcclxuaW1wb3J0IHsgVHJ1VXNlciB9IGZyb20gXCIuL3RydS11c2VyXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBUcnVFbnRpdHlBY2Nlc3NvciB7XHJcbiAgcHJpdmF0ZSBfYnJlZXplQ29udGV4dCE6IFRydUJyZWV6ZUNvbnRleHQ7XHJcbiAgcHJpdmF0ZSBfZW50aXR5TWFuYWdlciE6IEVudGl0eU1hbmFnZXI7XHJcbiAgcHJpdmF0ZSBfbWF4UmVjb3JkQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfYmFzZVVybDogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50LFxyXG4gICAgcHJpdmF0ZSB1aU5vdGlmaWNhdGlvbjogVHJ1VWlOb3RpZmljYXRpb24sXHJcbiAgICBwcml2YXRlIHVzZXI6IFRydVVzZXIpIHtcclxuICAgIHRoaXMuX21heFJlY29yZENvdW50ID0gdGhpcy5hcHBFbnZpcm9ubWVudC5tYXhSZWNvcmRDb3VudDtcclxuICAgIHRoaXMuX2Jhc2VVcmwgPSB0aGlzLmFwcEVudmlyb25tZW50LmFwcFVyaTtcclxuICB9XHJcblxyXG4gIHNldCBjb250ZXh0KGRhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dCkge1xyXG4gICAgdGhpcy5fYnJlZXplQ29udGV4dCA9IGRhdGFDb250ZXh0LmJyZWV6ZUNvbnRleHQ7XHJcbiAgICB0aGlzLl9lbnRpdHlNYW5hZ2VyID0gZGF0YUNvbnRleHQuZW50aXR5TWFuYWdlcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UXVlcnlTZXJ2aWNlTmFtZSA9IChlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlKSA9PiB7XHJcbiAgICByZXR1cm4gJ1F1ZXJ5JyArIGVudGl0eS5uYW1lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB3YXJuSWZNYXhSZWNvcmRzID0gKGVudGl0aWVzOiBhbnlbXSwgZW50aXR5TmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICBpZiAoZW50aXRpZXMubGVuZ3RoID49IHRoaXMuX21heFJlY29yZENvdW50KVxyXG4gICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLndhcm5pbmcoJ1snICsgZW50aXR5TmFtZSArICddIGhhcyBtb3JlIHJlY29yZHMgYXZhaWxhYmxlIHRoYW4gc3VwcG9ydGVkJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdFF1ZXJ5Q2hvaWNlcyA9IChxdWVyeTogRW50aXR5UXVlcnksIGVudGl0aWVzOiBBcnJheTxFbnRpdHk+LCBwS2V5TmFtZTogc3RyaW5nLCBoaWQ6IHN0cmluZyB8IG51bGwgPSBudWxsKTogQXJyYXk8VHJ1Q2hvaWNlPiA9PiB7XHJcbiAgICBpZiAocXVlcnkgJiYgcXVlcnkub3JkZXJCeUNsYXVzZSlcclxuICAgICAgcmV0dXJuIF8ubWFwKGVudGl0aWVzLCAoZW50aXR5OiBhbnkpID0+IHsgcmV0dXJuIHsgdmFsdWU6IHsgJDogZW50aXR5W3BLZXlOYW1lXSB9LCBsYWJlbDogaGlkICE9PSBudWxsID8gaGlkIDogZW50aXR5LkhJRCB9OyB9KTtcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIF8ubWFwKGVudGl0aWVzLCAoZW50aXR5OiBhbnkpID0+IHsgcmV0dXJuIHsgdmFsdWU6IHsgJDogZW50aXR5W3BLZXlOYW1lXSB9LCBsYWJlbDogaGlkICE9PSBudWxsID8gaGlkIDogZW50aXR5LkhJRCB9OyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0TmFtZVZhbHVlcyA9IChxdWVyeTogRW50aXR5UXVlcnksIGVudGl0aWVzOiBBcnJheTxFbnRpdHk+LCBwS2V5TmFtZTogc3RyaW5nKTogQXJyYXk8VHJ1TmFtZVZhbHVlPiA9PiB7XHJcbiAgICAgIGlmIChxdWVyeSAmJiBxdWVyeS5vcmRlckJ5Q2xhdXNlKVxyXG4gICAgICAgIHJldHVybiBfLm1hcChlbnRpdGllcywgKGVudGl0eTogYW55KSA9PiB7IHJldHVybiB7IG5hbWU6IGVudGl0eS5OYW1lLCB2YWx1ZTogeyAkOiBlbnRpdHkuVmFsdWUgfSwgZW50aXR5OiBlbnRpdHkgfTsgfSk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gXy5tYXAoZW50aXRpZXMsIChlbnRpdHk6IGFueSkgPT4geyByZXR1cm4geyBuYW1lOiBlbnRpdHkuTmFtZSwgdmFsdWU6IHsgJDogZW50aXR5LlZhbHVlIH0sIGVudGl0eTogZW50aXR5IH07IH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkID0gKGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsIGNvbnRleHRGaWx0ZXJzOiBhbnkgPSBudWxsKSA9PiB7XHJcbiAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5fZW50aXR5TWFuYWdlci5jcmVhdGVFbnRpdHkoZW50aXR5LnByb3RvdHlwZS5lbnRpdHlUeXBlKTtcclxuICAgIHJldHVybiBuZXdFbnRpdHk7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoID0gKGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICBzZXR1cFF1ZXJ5OiBhbnkgfCBudWxsID0gbnVsbCxcclxuICAgIGV4cGFuZHM6IFtdIHwgbnVsbCxcclxuICAgIGdsb2JhbDogYm9vbGVhbik6IE9ic2VydmFibGU8RW50aXR5W10+ID0+IHtcclxuXHJcbiAgICB2YXIgcXVlcnk6IGFueTtcclxuICAgIGlmIChleHBhbmRzICYmIGV4cGFuZHMubGVuZ3RoKSB7XHJcbiAgICAgIGlmIChnbG9iYWwpXHJcbiAgICAgICAgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKS5leHBhbmQoZXhwYW5kcy5qb2luKCcsICcpKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSkuZXhwYW5kKGV4cGFuZHMuam9pbignLCAnKSkudG9wKHRoaXMuX21heFJlY29yZENvdW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChnbG9iYWwpXHJcbiAgICAgICAgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSkudG9wKHRoaXMuX21heFJlY29yZENvdW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2V0dXBRdWVyeSAhPSBudWxsKVxyXG4gICAgICBxdWVyeSA9IHNldHVwUXVlcnkocXVlcnkpO1xyXG5cclxuICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KS50aGVuKChxdWVyeURhdGE6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIWdsb2JhbClcclxuICAgICAgICB0aGlzLndhcm5JZk1heFJlY29yZHMocXVlcnlEYXRhLnJlc3VsdHMsIGVudGl0eS5uYW1lKTtcclxuICAgICAgcmV0dXJuIHF1ZXJ5RGF0YS5yZXN1bHRzO1xyXG4gICAgfSkpKTtcclxuICB9O1xyXG5cclxuICBzZWFyY2hDYWNoZU9ubHkgPSAoXHJcbiAgICBlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLFxyXG4gICAgc2V0dXBRdWVyeTogYW55IHwgbnVsbCA9IG51bGwsXHJcbiAgICBleHBhbmRzOiBbXSB8IG51bGwgPSBudWxsKTogT2JzZXJ2YWJsZTxFbnRpdHlbXT4gPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSk7XHJcbiAgICBpZiAoc2V0dXBRdWVyeSlcclxuICAgICAgcXVlcnkgPSBzZXR1cFF1ZXJ5KHF1ZXJ5KTtcclxuICAgIHJldHVybiBvZih0aGlzLl9lbnRpdHlNYW5hZ2VyLmV4ZWN1dGVRdWVyeUxvY2FsbHkocXVlcnkpKTtcclxuICB9O1xyXG5cclxuICBzZWFyY2hDYWNoZU9ubHlTeW5jaHJvbm91c2x5ID0gKFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHNldHVwUXVlcnk6IGFueSB8IG51bGwgPSBudWxsLFxyXG4gICAgZXhwYW5kczogW10gfCBudWxsID0gbnVsbCk6IEFycmF5PGFueT4gPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSk7XHJcbiAgICBpZiAoc2V0dXBRdWVyeSlcclxuICAgICAgcXVlcnkgPSBzZXR1cFF1ZXJ5KHF1ZXJ5KTtcclxuICAgIHJldHVybiB0aGlzLl9lbnRpdHlNYW5hZ2VyLmV4ZWN1dGVRdWVyeUxvY2FsbHkocXVlcnkpO1xyXG4gIH07XHJcblxyXG4gIHNlYXJjaFF1ZXJ5Q2hvaWNlcyA9IChcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICBzZXR1cFF1ZXJ5OiBhbnkgfCBudWxsID0gbnVsbCxcclxuICAgIGhpZDogc3RyaW5nIHwgbnVsbCA9IG51bGwsXHJcbiAgICBnb1RvU2VydmVyOiBib29sZWFuID0gZmFsc2UsXHJcbiAgICByZWY6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpOiBPYnNlcnZhYmxlPFRydUNob2ljZVtdPiA9PiB7XHJcbiAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICBjb25zdCBwa2V5TmFtZSA9IGVudGl0eS5uYW1lICsgJ1JlZicgYXMgT2JqZWN0S2V5O1xyXG4gICAgbGV0IHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSk7XHJcbiAgICBpZiAoc2V0dXBRdWVyeSlcclxuICAgICAgcXVlcnkgPSBzZXR1cFF1ZXJ5KHF1ZXJ5KSA/PyBxdWVyeTtcclxuICAgIGlmIChyZWYpXHJcbiAgICAgIHF1ZXJ5ID0gcXVlcnkud2hlcmUoZW50aXR5Lm5hbWUgKyAnUmVmJywgJz09JywgcmVmKTtcclxuICAgIGlmIChnb1RvU2VydmVyKSB7XHJcbiAgICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KS50aGVuKChxdWVyeURhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFF1ZXJ5Q2hvaWNlcyhxdWVyeSwgcXVlcnlEYXRhLnJlc3VsdHMsIHBrZXlOYW1lLCBudWxsKTtcclxuICAgICAgfSkpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBvZih0aGlzLmZvcm1hdFF1ZXJ5Q2hvaWNlcyhxdWVyeSwgdGhpcy5fZW50aXR5TWFuYWdlci5leGVjdXRlUXVlcnlMb2NhbGx5KHF1ZXJ5KSwgcGtleU5hbWUsIG51bGwpKTtcclxuICB9O1xyXG5cclxuICBzZWFyY2hOYW1lVmFsdWVzQ2FjaGVPbmx5ID0gKFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHNldHVwUXVlcnk6IGFueSB8IG51bGwgPSBudWxsLFxyXG4gICAgcmVmOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxUcnVOYW1lVmFsdWVbXT4gPT4ge1xyXG4gICAgdHlwZSBPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgZW50aXR5O1xyXG4gICAgY29uc3QgcGtleU5hbWUgPSBlbnRpdHkubmFtZSArICdSZWYnIGFzIE9iamVjdEtleTtcclxuICAgIGxldCBxdWVyeSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUXVlcnkodGhpcy5nZXRRdWVyeVNlcnZpY2VOYW1lKGVudGl0eSkpO1xyXG4gICAgaWYgKHNldHVwUXVlcnkpXHJcbiAgICAgICAgcXVlcnkgPSBzZXR1cFF1ZXJ5KHF1ZXJ5KSA/PyBxdWVyeTtcclxuICAgIGlmIChyZWYpXHJcbiAgICAgICAgcXVlcnkgPSBxdWVyeS53aGVyZShlbnRpdHkubmFtZSArICdSZWYnLCAnPT0nLCByZWYpO1xyXG4gICAgcmV0dXJuIG9mKHRoaXMuZm9ybWF0TmFtZVZhbHVlcyhxdWVyeSwgdGhpcy5fZW50aXR5TWFuYWdlci5leGVjdXRlUXVlcnlMb2NhbGx5KHF1ZXJ5KSwgcGtleU5hbWUpKTtcclxuICB9O1xyXG5cclxuICBzZWFyY2hCeVJlZiA9IChcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICByZWY6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpID0+IHtcclxuICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IHBrZXlOYW1lID0gZW50aXR5Lm5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXk7XHJcbiAgICB2YXIgcXVlcnlPcHRpb25zID0gdGhpcy5fZW50aXR5TWFuYWdlci5xdWVyeU9wdGlvbnMudXNpbmcoe1xyXG4gICAgICBmZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5LkZyb21TZXJ2ZXJcclxuICAgIH0pO1xyXG4gICAgdmFyIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSkud2hlcmUoZW50aXR5Lm5hbWUgKyAnUmVmJywgJz09JywgcmVmKS51c2luZyhxdWVyeU9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IGZyb20odGhpcy5fZW50aXR5TWFuYWdlci5leGVjdXRlUXVlcnkocXVlcnkpLnRoZW4oKHF1ZXJ5RGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdFF1ZXJ5Q2hvaWNlcyhxdWVyeSwgcXVlcnlEYXRhLnJlc3VsdHMsIHBrZXlOYW1lLCBudWxsKTtcclxuICAgIH0pKSk7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoQnlSZWZQcmVmZXJlZENhY2hlID0gKFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHJlZjogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xyXG4gICAgbGV0IGNhY2hlZEVudGl0eSA9IHRoaXMuc2VhcmNoQnlSZWZDYWNoZU9ubHkoZW50aXR5LCByZWYpO1xyXG4gICAgaWYgKGNhY2hlZEVudGl0eSkge1xyXG4gICAgICB2YXIgcXVlcnlPcHRpb25zID0gdGhpcy5fZW50aXR5TWFuYWdlci5xdWVyeU9wdGlvbnMudXNpbmcoe1xyXG4gICAgICAgIGZldGNoU3RyYXRlZ3k6IEZldGNoU3RyYXRlZ3kuRnJvbUxvY2FsQ2FjaGVcclxuICAgICAgfSk7XHJcbiAgICAgIHZhciBxdWVyeSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUXVlcnkodGhpcy5nZXRRdWVyeVNlcnZpY2VOYW1lKGVudGl0eSkpLndoZXJlKGVudGl0eS5uYW1lICsgJ1JlZicsICc9PScsIHJlZikudXNpbmcocXVlcnlPcHRpb25zKTtcclxuICAgICAgcmV0dXJuIGRlZmVyKCgpID0+IGZyb20odGhpcy5fZW50aXR5TWFuYWdlci5leGVjdXRlUXVlcnkocXVlcnkpLnRoZW4oKHF1ZXJ5RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHF1ZXJ5RGF0YS5yZXN1bHRzWzBdO1xyXG4gICAgICB9KSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHZhciBxdWVyeU9wdGlvbnMgPSB0aGlzLl9lbnRpdHlNYW5hZ2VyLnF1ZXJ5T3B0aW9ucy51c2luZyh7XHJcbiAgICAgICAgZmV0Y2hTdHJhdGVneTogRmV0Y2hTdHJhdGVneS5Gcm9tU2VydmVyXHJcbiAgICAgIH0pO1xyXG4gICAgICB2YXIgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKS53aGVyZShlbnRpdHkubmFtZSArICdSZWYnLCAnPT0nLCByZWYpLnVzaW5nKHF1ZXJ5T3B0aW9ucyk7XHJcbiAgICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KS50aGVuKChxdWVyeURhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBxdWVyeURhdGEucmVzdWx0c1swXTtcclxuICAgICAgfSkpKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBzZWFyY2hCeVJlZkNhY2hlT25seSA9IChcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICByZWY6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsXHJcbiAgICBpbmNsdWRlRGVsZXRlZDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XHJcblxyXG4gICAgaWYgKCFpbmNsdWRlRGVsZXRlZClcclxuICAgICAgaW5jbHVkZURlbGV0ZWQgPSBmYWxzZTtcclxuICAgIHZhciBxdWVyeU9wdGlvbnMgPSB0aGlzLl9lbnRpdHlNYW5hZ2VyLnF1ZXJ5T3B0aW9ucy51c2luZyh7XHJcbiAgICAgIGluY2x1ZGVEZWxldGVkOiBpbmNsdWRlRGVsZXRlZCxcclxuICAgICAgZmV0Y2hTdHJhdGVneTogRmV0Y2hTdHJhdGVneS5Gcm9tTG9jYWxDYWNoZVxyXG4gICAgfSk7XHJcbiAgICB2YXIgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKS53aGVyZShlbnRpdHkubmFtZSArICdSZWYnLCAnPT0nLCByZWYpLnVzaW5nKHF1ZXJ5T3B0aW9ucyk7XHJcbiAgICB2YXIgcmVzdWx0ID0gdGhpcy5fZW50aXR5TWFuYWdlci5leGVjdXRlUXVlcnlMb2NhbGx5KHF1ZXJ5KVswXTtcclxuICAgIGlmIChyZXN1bHQpXHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9O1xyXG5cclxuICBzZWFyY2hCeVJlZkFycmF5Q2FjaGVPbmx5ID0gKFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHNldHVwUXVlcnk6IGFueSB8IG51bGwgPSBudWxsLFxyXG4gICAgcmVmczogQXJyYXk8bnVtYmVyPixcclxuICAgIGluY2x1ZGVEZWxldGVkOiBib29sZWFuID0gZmFsc2UpID0+IHtcclxuICBcclxuICAgIGlmICghaW5jbHVkZURlbGV0ZWQpXHJcbiAgICAgIGluY2x1ZGVEZWxldGVkID0gZmFsc2U7XHJcbiAgICB2YXIgcXVlcnlPcHRpb25zID0gdGhpcy5fZW50aXR5TWFuYWdlci5xdWVyeU9wdGlvbnMudXNpbmcoe1xyXG4gICAgICBpbmNsdWRlRGVsZXRlZDogaW5jbHVkZURlbGV0ZWQsXHJcbiAgICAgIGZldGNoU3RyYXRlZ3k6IEZldGNoU3RyYXRlZ3kuRnJvbUxvY2FsQ2FjaGVcclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBxdWVyeSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUXVlcnkodGhpcy5nZXRRdWVyeVNlcnZpY2VOYW1lKGVudGl0eSkpLnVzaW5nKHF1ZXJ5T3B0aW9ucyk7XHJcblxyXG4gICAgaWYgKHNldHVwUXVlcnkpXHJcbiAgICAgIHF1ZXJ5ID0gc2V0dXBRdWVyeShxdWVyeSk7XHJcbiAgICBpZiAocXVlcnkgPT09IG51bGwpLy9zZXR1cFF1ZXJ5KCkgcmV0dXJuZWQgbnVsbCB0byBzZWxlY3Qgbm8gcm93c1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICBpZiAocmVmcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgICAgY29uc3QgcGtleU5hbWUgPSBlbnRpdHkubmFtZSArICdSZWYnIGFzIE9iamVjdEtleTtcclxuICAgICAgdmFyIHByZWRpY2F0ZSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUHJlZGljYXRlKHBrZXlOYW1lLCAnPT0nLCByZWZzWzBdKTtcclxuICAgICAgXy5yZXN0KHJlZnMsIDEpLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xyXG4gICAgICAgIHByZWRpY2F0ZSA9IHByZWRpY2F0ZS5vcihwa2V5TmFtZSwgJz09JywgcmVmKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHF1ZXJ5ID0gcXVlcnkud2hlcmUocHJlZGljYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgcmVzdWx0cyA9IHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSk7XHJcbiAgICBpZiAocmVzdWx0cyAmJiByZXN1bHRzLmxlbmd0aClcclxuICAgICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHNlYXJjaEJ5UmVmV2l0aFF1ZXJ5ID0gKFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHNldHVwUXVlcnk6IGFueSxcclxuICAgIHJlZjogbnVtYmVyKTogT2JzZXJ2YWJsZTxFbnRpdHlbXT4gPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSk7XHJcbiAgICBxdWVyeSA9IHNldHVwUXVlcnkocXVlcnkpO1xyXG5cclxuICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IHBrZXlOYW1lID0gZW50aXR5Lm5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXk7XHJcbiAgICB2YXIgcHJlZGljYXRlID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVQcmVkaWNhdGUocGtleU5hbWUsICc9PScsIHJlZik7XHJcbiAgICBxdWVyeSA9IHF1ZXJ5LndoZXJlKHByZWRpY2F0ZSk7XHJcblxyXG4gICAgdmFyIGxvY2FsUmVzdWx0cyA9IHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSk7XHJcblxyXG4gICAgaWYgKGxvY2FsUmVzdWx0cy5sZW5ndGgpXHJcbiAgICAgIHJldHVybiBvZihsb2NhbFJlc3VsdHMpO1xyXG5cclxuICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KS50aGVuKChxdWVyeURhdGEpID0+IHtcclxuICAgICAgcmV0dXJuIHF1ZXJ5RGF0YS5yZXN1bHRzO1xyXG4gICAgfSkpKTtcclxuICB9O1xyXG5cclxuICBzZWFyY2hVc2VyQnlSZWZDYWNoZU9ubHkgPSAoXHJcbiAgICByZWY6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsXHJcbiAgICBpbmNsdWRlRGVsZXRlZDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XHJcblxyXG4gICAgaWYgKCFpbmNsdWRlRGVsZXRlZClcclxuICAgICAgaW5jbHVkZURlbGV0ZWQgPSBmYWxzZTtcclxuICAgIHZhciBxdWVyeU9wdGlvbnMgPSB0aGlzLl9lbnRpdHlNYW5hZ2VyLnF1ZXJ5T3B0aW9ucy51c2luZyh7XHJcbiAgICAgIGluY2x1ZGVEZWxldGVkOiBpbmNsdWRlRGVsZXRlZCxcclxuICAgICAgZmV0Y2hTdHJhdGVneTogRmV0Y2hTdHJhdGVneS5Gcm9tTG9jYWxDYWNoZVxyXG4gICAgfSk7XHJcbiAgICB2YXIgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KCdRdWVyeVRydURiVXNlcicpLndoZXJlKCdUcnVEYlVzZXJSZWYnLCAnPT0nLCByZWYpLnVzaW5nKHF1ZXJ5T3B0aW9ucyk7XHJcbiAgICB2YXIgcmVzdWx0ID0gdGhpcy5fZW50aXR5TWFuYWdlci5leGVjdXRlUXVlcnlMb2NhbGx5KHF1ZXJ5KVswXTtcclxuICAgIGlmIChyZXN1bHQpXHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9O1xyXG5cclxuICBleHBvcnQgPSAoXHJcbiAgICBlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLFxyXG4gICAgZ3JpZFNwZWM6IHN0cmluZyxcclxuICAgIHNldHVwUXVlcnk6IGFueSB8IG51bGwsXHJcbiAgICBlbnRpdHlSZWZzOiBzdHJpbmcgfCBudWxsLFxyXG4gICAgb3B0aW9uczogYW55KSA9PiB7XHJcblxyXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcbiAgICB2YXIgYXJncyA9IHtcclxuICAgICAgcnVuQXN5bmM6IGZhbHNlLFxyXG4gICAgICB1c2VOYW1lczogZmFsc2UsXHJcbiAgICAgIHVzZUVtcHR5VGFnczogZmFsc2UsXHJcbiAgICAgIGVudGl0eVJlZnM6IG51bGwgYXMgc3RyaW5nIHwgbnVsbCxcclxuICAgICAgZW50aXR5VHlwZU5hbWU6IGVudGl0eS5uYW1lLFxyXG4gICAgICBncmlkU3BlYzogZ3JpZFNwZWNcclxuICAgIH07XHJcbiAgICBpZiAob3B0aW9ucy5hc3luYylcclxuICAgICAgYXJncy5ydW5Bc3luYyA9IHRydWU7XHJcbiAgICBpZiAob3B0aW9ucy51c2VOYW1lcylcclxuICAgICAgYXJncy51c2VOYW1lcyA9IHRydWU7XHJcbiAgICBpZiAob3B0aW9ucy51c2VFbXB0eVRhZ3MpXHJcbiAgICAgIGFyZ3MudXNlRW1wdHlUYWdzID0gdHJ1ZTtcclxuICAgIHZhciBxdWVyeVRleHQ7XHJcbiAgICBpZiAob3B0aW9ucy51c2VHcmlkKSB7XHJcbiAgICAgIGFyZ3MuZW50aXR5UmVmcyA9IGVudGl0eVJlZnM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KCdub25hbWUnKTtcclxuICAgICAgaWYgKHNldHVwUXVlcnkpXHJcbiAgICAgICAgcXVlcnkgPSBzZXR1cFF1ZXJ5KHF1ZXJ5KTtcclxuICAgICAgaWYgKHF1ZXJ5ID09PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi53YXJuaW5nKCdObyByZWNvcmRzIHNlbGVjdGVkIGJ5IHF1ZXJ5Jyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHF1ZXJ5VGV4dCA9IHF1ZXJ5Ll90b1VyaSh0aGlzLl9lbnRpdHlNYW5hZ2VyKTtcclxuICAgICAgICBxdWVyeVRleHQgPSBxdWVyeVRleHQuc3BsaXQoJz8nKVsxXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudWlOb3RpZmljYXRpb24uaW5mbyhhcmdzLnJ1bkFzeW5jID8gJ1F1ZXVpbmcgZXhwb3J0Li4uJyA6ICdFeHBvcnRpbmcuLi4nKTtcclxuXHJcbiAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XHJcbiAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gKCkgPT4ge1xyXG4gICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSkge1xyXG4gICAgICAgIGlmICh4aHIuc3RhdHVzID09IDIwMCkge1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh4aHIucmVzcG9uc2VUeXBlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB4aHIub3BlbignUE9TVCcsIHRoaXMuX2Jhc2VVcmwgKyAnL2FwaS9leHBvcnQvZXhlY3V0ZScpO1xyXG4gICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PVVURi04Jyk7XHJcbiAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2FycmF5YnVmZmVyJztcclxuICAgIHhoci5zZW5kKEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgdXNlclJlZjogdGhpcy51c2VyLmFjdGl2ZVVzZXJSZWYsXHJcbiAgICAgIHJ1bkFzeW5jOiBhcmdzLnJ1bkFzeW5jLFxyXG4gICAgICB1c2VOYW1lczogYXJncy51c2VOYW1lcyxcclxuICAgICAgdXNlRW1wdHlUYWdzOiBhcmdzLnVzZUVtcHR5VGFncyxcclxuICAgICAgZW50aXR5UmVmczogYXJncy5lbnRpdHlSZWZzLFxyXG4gICAgICBlbnRpdHlUeXBlTmFtZTogYXJncy5lbnRpdHlUeXBlTmFtZSxcclxuICAgICAgZ3JpZFNwZWM6IGFyZ3MuZ3JpZFNwZWMsXHJcbiAgICAgIHF1ZXJ5OiAnUXVlcnknICsgZW50aXR5Lm5hbWUgKyAnPycgKyBxdWVyeVRleHRcclxuICAgIH0pKVxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0QXNVcmxQYXJhbWV0ZXJzID0gKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgdmFyIGJ1ZmZlciA9IFtdO1xyXG4gICAgZm9yICh2YXIgbmFtZSBpbiBkYXRhKSB7XHJcbiAgICAgIGlmICghZGF0YS5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciB2YWx1ZSA9IGRhdGFbbmFtZV07XHJcbiAgICAgIGJ1ZmZlci5wdXNoKFxyXG4gICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChuYW1lKSArXHJcbiAgICAgICAgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlKSk7XHJcbiAgICB9XHJcbiAgICB2YXIgc291cmNlID0gYnVmZmVyLmpvaW4oJyYnKVxyXG4gICAgICAucmVwbGFjZSgvJTIwL2csICcrJyk7XHJcbiAgICByZXR1cm4gKHNvdXJjZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRvd25sb2FkRnJvbVVybCA9ICh1cmw6IHN0cmluZywgZGF0YTogYW55KSA9PiB7XHJcbiAgICBpZiAoZGF0YSlcclxuICAgICAgZGF0YSA9IHRoaXMuZm9ybWF0QXNVcmxQYXJhbWV0ZXJzKGRhdGEpO1xyXG4gICAgY29uc3QgYm9keSA9IHsgdGl0bGU6ICdkb3dubG9hZCByZXF1ZXN0JyB9O1xyXG4gICAgY29uc3QgaGVhZGVycyA9IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgnIH07XHJcblxyXG4gICAgdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIHRoaXMuX2Jhc2VVcmwgKyB1cmwsXHJcbiAgICAgIGJvZHksXHJcbiAgICAgIHsgaGVhZGVycyB9XHJcbiAgICApLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNhdmVEb3dubG9hZGVkRmlsZShyZXNwb25zZSk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIHNhdmVEb3dubG9hZGVkRmlsZSA9IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICB2YXIgaGVhZGVycyA9IHJlc3BvbnNlLmhlYWRlcnM7XHJcbiAgICB2YXIgY29udGVudERpc3Bvc2l0aW9uID0gaGVhZGVycygnY29udGVudC1kaXNwb3NpdGlvbicpO1xyXG4gICAgaWYgKCFjb250ZW50RGlzcG9zaXRpb24pXHJcbiAgICAgIHJldHVybjsgLy8gTk9URTogY2Fubm90IHNhdmUgd2l0aG91dCBoZWFkZXIgaW5mb1xyXG4gICAgdmFyIGZpbGVuYW1lID0gdGhpcy5leHRyYWN0RmlsZW5hbWVGcm9tQ29udGVudERpc3Bvc2l0aW9uKGNvbnRlbnREaXNwb3NpdGlvbik7XHJcbiAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZS5kYXRhXSwgeyB0eXBlOiBoZWFkZXJzKCdjb250ZW50LXR5cGUnKSB9KTtcclxuICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgbGluay5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGZpbGVuYW1lKTtcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIGxpbmsucmVtb3ZlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBleHRyYWN0RmlsZW5hbWVGcm9tQ29udGVudERpc3Bvc2l0aW9uID0gKHRleHQ6IHN0cmluZykgPT4ge1xyXG4gICAgdmFyIHBhcnRzID0gXy5tYXAodGV4dC5zcGxpdCgnOycpLCBmdW5jdGlvbiAocGFydCkgeyByZXR1cm4gcGFydC50cmltKCk7IH0pO1xyXG4gICAgdmFyIHByZWZpeCA9ICdmaWxlbmFtZT0nO1xyXG4gICAgdmFyIGZpbGVuYW1lUGFydCA9IF8uZmluZChwYXJ0cywgZnVuY3Rpb24gKHBhcnQpIHsgcmV0dXJuIHBhcnQuc3Vic3RyaW5nKDAsIHByZWZpeC5sZW5ndGgpID09PSBwcmVmaXggfSk7XHJcbiAgICBpZiAoIWZpbGVuYW1lUGFydClcclxuICAgICAgcmV0dXJuICdmaWxlJztcclxuICAgIHZhciBmaWxlbmFtZSA9IGZpbGVuYW1lUGFydC5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7XHJcbiAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnJlcGxhY2UoL1wiL2csICcnKTtcclxuICAgIHJldHVybiBmaWxlbmFtZTtcclxuICB9XHJcbn1cclxuIl19
@@ -846,14 +846,16 @@ class TruEntityAccessor {
846
846
  http;
847
847
  appEnvironment;
848
848
  uiNotification;
849
+ user;
849
850
  _breezeContext;
850
851
  _entityManager;
851
852
  _maxRecordCount = 0;
852
853
  _baseUrl;
853
- constructor(http, appEnvironment, uiNotification) {
854
+ constructor(http, appEnvironment, uiNotification, user) {
854
855
  this.http = http;
855
856
  this.appEnvironment = appEnvironment;
856
857
  this.uiNotification = uiNotification;
858
+ this.user = user;
857
859
  this._maxRecordCount = this.appEnvironment.maxRecordCount;
858
860
  this._baseUrl = this.appEnvironment.appUri;
859
861
  }
@@ -1084,6 +1086,7 @@ class TruEntityAccessor {
1084
1086
  xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
1085
1087
  xhr.responseType = 'arraybuffer';
1086
1088
  xhr.send(JSON.stringify({
1089
+ userRef: this.user.activeUserRef,
1087
1090
  runAsync: args.runAsync,
1088
1091
  useNames: args.useNames,
1089
1092
  useEmptyTags: args.useEmptyTags,
@@ -1139,12 +1142,12 @@ class TruEntityAccessor {
1139
1142
  filename = filename.replace(/"/g, '');
1140
1143
  return filename;
1141
1144
  };
1142
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruEntityAccessor, deps: [{ token: i2.HttpClient }, { token: TruAppEnvironment }, { token: TruUiNotification }], target: i0.ɵɵFactoryTarget.Injectable });
1145
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruEntityAccessor, deps: [{ token: i2.HttpClient }, { token: TruAppEnvironment }, { token: TruUiNotification }, { token: TruUser }], target: i0.ɵɵFactoryTarget.Injectable });
1143
1146
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruEntityAccessor });
1144
1147
  }
1145
1148
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruEntityAccessor, decorators: [{
1146
1149
  type: Injectable
1147
- }], ctorParameters: () => [{ type: i2.HttpClient }, { type: TruAppEnvironment }, { type: TruUiNotification }] });
1150
+ }], ctorParameters: () => [{ type: i2.HttpClient }, { type: TruAppEnvironment }, { type: TruUiNotification }, { type: TruUser }] });
1148
1151
 
1149
1152
  class TruDataContext {
1150
1153
  breezeContextFactory;